{"schema":1,"platform":"c64","game":"alter-ego","title":"Alter Ego","build":"Male edition, freshly booted first name prompt","symbols_sha256":"fb6ec20c795b84110e5c241f5f1a5722973d445d735176c4e2e29a0bc9fed89f","index":[{"a":2048,"n":"AlterEgo_SID_sid_driver_state","k":"table","len":16,"c":true},{"a":2064,"n":"sid_pending_command_state","k":"table","len":5,"c":false},{"a":2069,"n":"sid_sequence_a_counter","k":"variable","len":1,"c":false},{"a":2070,"n":"sid_sequence_b_counter","k":"variable","len":1,"c":false},{"a":2071,"n":"sid_sequence_a_period","k":"variable","len":1,"c":false},{"a":2072,"n":"sid_sequence_b_period","k":"variable","len":1,"c":false},{"a":2073,"n":"sid_dispatch_offset_scratch","k":"variable","len":1,"c":false},{"a":2074,"n":"sid_counter_0815_tick","k":"routine","len":20,"c":true},{"a":2093,"n":"LAB_082d","k":"branch","len":1,"c":false},{"a":2094,"n":"sid_voice2_set_frequency","k":"routine","len":54,"c":true},{"a":2097,"n":"LAB_0831","k":"branch","len":1,"c":false},{"a":2148,"n":"sid_voice3_set_frequency","k":"routine","len":33,"c":true},{"a":2151,"n":"LAB_0867","k":"branch","len":1,"c":false},{"a":2160,"n":"LAB_0870","k":"branch","len":1,"c":false},{"a":2181,"n":"sid_voice1_set_frequency","k":"routine","len":31,"c":true},{"a":2184,"n":"LAB_0888","k":"branch","len":1,"c":false},{"a":2212,"n":"sid_counter_0816_tick","k":"routine","len":20,"c":true},{"a":2231,"n":"LAB_08b7","k":"branch","len":1,"c":false},{"a":2232,"n":"AlterEgo_SID_sid_frequency_words_00_57","k":"table","len":176,"c":true},{"a":2408,"n":"AlterEgo_SID_byte_after_sid_frequency_table","k":"variable","len":1,"c":true},{"a":2409,"n":"install_retained_sid_irq_vector","k":"routine","len":11,"c":true},{"a":2420,"n":"AlterEgo_SID_retained_prior_phase_sid_setup_bytes","k":"variable","len":2,"c":true},{"a":2422,"n":"retained_set_irq_vector_high_from_a","k":"routine","len":4,"c":true},{"a":2426,"n":"retained_prior_phase_sid_irq_entry","k":"table","len":40,"c":true},{"a":2466,"n":"retained_prior_phase_negative_sid_command_dispatch","k":"routine","len":15,"c":true},{"a":2481,"n":"a_09B1","k":"branch","len":1,"c":false},{"a":2482,"n":"retained_prior_phase_sid_command_noop","k":"routine","len":1,"c":true},{"a":2483,"n":"sid_command_grid_noop_padding","k":"variable","len":2,"c":true},{"a":2485,"n":"sid_start_sequence_a","k":"routine","len":3,"c":true},{"a":2488,"n":"sid_start_sequence_b","k":"routine","len":3,"c":true},{"a":2491,"n":"sid_reset_all_voices","k":"routine","len":55,"c":true},{"a":2545,"n":"LAB_09f1","k":"branch","len":1,"c":false},{"a":2546,"n":"sid_voice1_gate_pulse","k":"routine","len":17,"c":true},{"a":2563,"n":"sid_voice2_select_frequency","k":"routine","len":28,"c":true},{"a":2578,"n":"LAB_0a12","k":"branch","len":1,"c":false},{"a":2591,"n":"sid_initialize_filter","k":"routine","len":16,"c":true},{"a":2607,"n":"sid_add_effect_offset","k":"routine","len":15,"c":true},{"a":2616,"n":"LAB_0a38","k":"branch","len":1,"c":false},{"a":2622,"n":"sid_gate_voices2_3_and_advance_pulse","k":"routine","len":20,"c":true},{"a":2642,"n":"sid_update_voice3_control","k":"routine","len":17,"c":true},{"a":2659,"n":"sid_sequence_a_tick","k":"routine","len":100,"c":true},{"a":2758,"n":"LAB_0ac6","k":"branch","len":1,"c":false},{"a":2759,"n":"AlterEgo_SID_sid_sequence_a_tables","k":"table","len":257,"c":true},{"a":3016,"n":"sid_sequence_a_eight_phase_notes","k":"table","len":8,"c":true},{"a":3024,"n":"sid_sequence_a_group_parameters","k":"table","len":32,"c":true},{"a":3056,"n":"sid_sequence_a_quarter_rate_notes","k":"table","len":64,"c":true},{"a":3120,"n":"sid_sequence_b_tick","k":"routine","len":86,"c":true},{"a":3205,"n":"LAB_0c85","k":"branch","len":1,"c":false},{"a":3206,"n":"AlterEgo_SID_sid_sequence_b_tables","k":"table","len":192,"c":true},{"a":3398,"n":"sid_sequence_b_eight_phase_notes","k":"table","len":8,"c":true},{"a":3406,"n":"sid_sequence_b_group_parameters","k":"table","len":25,"c":true},{"a":3431,"n":"sid_runtime_state","k":"variable","len":2,"c":true},{"a":3433,"n":"sid_voice2_frequency_low_cache","k":"variable","len":1,"c":true},{"a":3434,"n":"sid_voice2_frequency_high_cache","k":"variable","len":1,"c":true},{"a":3435,"n":"sid_voice2_alternate_frequency_low","k":"variable","len":1,"c":true},{"a":3436,"n":"sid_voice2_alternate_frequency_high","k":"variable","len":1,"c":true},{"a":3437,"n":"sid_voice2_frequency_selection_mask","k":"variable","len":1,"c":true},{"a":3438,"n":"sid_modulation_phase","k":"variable","len":1,"c":true},{"a":3439,"n":"sid_frequency_effect_offset","k":"variable","len":1,"c":true},{"a":3440,"n":"sid_filter_state","k":"table","len":5,"c":false},{"a":3445,"n":"sid_pending_command","k":"table","len":6,"c":true},{"a":3451,"n":"sid_aux_state_0","k":"variable","len":1,"c":false},{"a":3452,"n":"sid_aux_state_1","k":"table","len":20,"c":false},{"a":3472,"n":"retained_sid_irq_color_cycle_bytes","k":"table","len":21,"c":true},{"a":3493,"n":"AlterEgo_SID_stored_sid_data_and_state_copy","k":"table","len":240,"c":true},{"a":3733,"n":"retained_prior_phase_kernal_irq_chain","k":"routine","len":3,"c":true},{"a":3736,"n":"retained_prior_phase_enter_game_bootstrap","k":"routine","len":41,"c":true},{"a":3777,"n":"AlterEgo_Bootstrap_retained_bootstrap_padding","k":"table","len":63,"c":true},{"a":3840,"n":"AlterEgo_Bootstrap_stored_bootstrap_copy","k":"table","len":41,"c":true},{"a":3881,"n":"AlterEgo_Bootstrap_retained_bootstrap_zero_fill","k":"table","len":215,"c":true},{"a":4096,"n":"retained_high_ram_initialization_image","k":"table","len":1024,"c":true},{"a":5120,"n":"high_ram_initialization_source_1400","k":"table","len":1024,"c":true},{"a":6144,"n":"high_ram_initialization_source_1800","k":"table","len":1024,"c":true},{"a":7168,"n":"high_ram_initialization_source_1c00","k":"table","len":899,"c":true},{"a":8067,"n":"retained_vm_frame_seed_tail","k":"table","len":125,"c":true},{"a":16192,"n":"AlterEgo_Display_bitmap_page_tail","k":"table","len":192,"c":true},{"a":16384,"n":"alter_ego_entry","k":"routine","len":3,"c":true},{"a":16387,"n":"initialize_alter_ego_runtime","k":"routine","len":3,"c":true},{"a":16390,"n":"vm_frame_adjust_4003","k":"variable","len":2,"c":true},{"a":16392,"n":"vm_bytecode_4003","k":"table","len":217,"c":true},{"a":16609,"n":"startup_load_error_text_pool","k":"table","len":40,"c":true},{"a":16649,"n":"install_under_rom_hardware_vectors","k":"routine","len":31,"c":true},{"a":16680,"n":"nmi_dispatch_bridge","k":"routine","len":23,"c":true},{"a":16703,"n":"annotation_413f","k":"routine","len":3,"c":true},{"a":16706,"n":"nmi_restore_and_rti","k":"routine","len":8,"c":true},{"a":16714,"n":"irq_dispatch_bridge","k":"routine","len":31,"c":true},{"a":16745,"n":"annotation_4169","k":"routine","len":3,"c":true},{"a":16748,"n":"irq_restore_and_rti","k":"routine","len":8,"c":true},{"a":16756,"n":"return_to_basic_warm_start","k":"routine","len":9,"c":true},{"a":16765,"n":"saved_nmi_accumulator","k":"variable","len":1,"c":true},{"a":16766,"n":"saved_irq_accumulator","k":"variable","len":1,"c":true},{"a":16767,"n":"saved_nmi_cpu_port","k":"variable","len":1,"c":true},{"a":16768,"n":"saved_irq_cpu_port","k":"variable","len":1,"c":true},{"a":16769,"n":"transition_origin_column","k":"variable","len":1,"c":true},{"a":16770,"n":"transition_origin_row","k":"variable","len":1,"c":true},{"a":16771,"n":"transition_fill_width","k":"variable","len":1,"c":true},{"a":16772,"n":"transition_row_count","k":"variable","len":1,"c":true},{"a":16773,"n":"transition_fill_byte","k":"variable","len":1,"c":true},{"a":16774,"n":"transition_scratch_unused_4186","k":"variable","len":1,"c":false},{"a":16775,"n":"transition_scratch_unused_4187","k":"variable","len":1,"c":false},{"a":16776,"n":"transition_rows_remaining","k":"variable","len":1,"c":true},{"a":16777,"n":"transition_frame_delay","k":"variable","len":1,"c":true},{"a":16778,"n":"transition_raster_trigger","k":"variable","len":1,"c":true},{"a":16779,"n":"transition_frame_countdown","k":"variable","len":1,"c":true},{"a":16780,"n":"transition_scratch_unused_418c","k":"variable","len":1,"c":false},{"a":16781,"n":"transition_scratch_unused_418d","k":"variable","len":1,"c":false},{"a":16782,"n":"sprite0_current_x_lo","k":"variable","len":1,"c":true},{"a":16783,"n":"sprite0_current_x_msb","k":"variable","len":1,"c":true},{"a":16784,"n":"sprite0_target_x_lo","k":"variable","len":1,"c":true},{"a":16785,"n":"sprite0_target_x_msb","k":"variable","len":1,"c":true},{"a":16786,"n":"sprite0_current_y","k":"variable","len":1,"c":true},{"a":16787,"n":"sprite0_target_y","k":"variable","len":1,"c":true},{"a":16788,"n":"saved_kernal_irq_vector_low","k":"variable","len":1,"c":true},{"a":16789,"n":"saved_kernal_irq_vector_high","k":"variable","len":1,"c":true},{"a":16790,"n":"return_highbit_text_span_table_bias","k":"routine","len":9,"c":true},{"a":16799,"n":"highbit_text_span_table_bias","k":"variable","len":1,"c":true},{"a":16800,"n":"sprite0_has_reached_target","k":"routine","len":35,"c":true},{"a":16834,"n":"LAB_41c2","k":"branch","len":1,"c":false},{"a":16835,"n":"sprite0_show_at_position","k":"routine","len":81,"c":true},{"a":16899,"n":"LAB_4203","k":"branch","len":1,"c":false},{"a":16907,"n":"LAB_420b","k":"branch","len":1,"c":false},{"a":16916,"n":"sprite0_set_target","k":"routine","len":21,"c":true},{"a":16937,"n":"sprite0_motion_irq_hook","k":"routine","len":170,"c":true},{"a":16966,"n":"LAB_4246","k":"branch","len":1,"c":false},{"a":16986,"n":"LAB_425a","k":"branch","len":1,"c":false},{"a":17003,"n":"LAB_426b","k":"branch","len":1,"c":false},{"a":17018,"n":"LAB_427a","k":"branch","len":1,"c":false},{"a":17030,"n":"LAB_4286","k":"branch","len":1,"c":false},{"a":17039,"n":"LAB_428f","k":"branch","len":1,"c":false},{"a":17048,"n":"LAB_4298","k":"branch","len":1,"c":false},{"a":17088,"n":"LAB_42c0","k":"branch","len":1,"c":false},{"a":17096,"n":"LAB_42c8","k":"branch","len":1,"c":false},{"a":17107,"n":"format_word_as_three_decimal_digits","k":"routine","len":130,"c":true},{"a":17150,"n":"LAB_42fe","k":"branch","len":1,"c":false},{"a":17160,"n":"LAB_4308","k":"branch","len":1,"c":false},{"a":17168,"n":"LAB_4310","k":"branch","len":1,"c":false},{"a":17176,"n":"LAB_4318","k":"branch","len":1,"c":false},{"a":17184,"n":"LAB_4320","k":"branch","len":1,"c":false},{"a":17192,"n":"LAB_4328","k":"branch","len":1,"c":false},{"a":17200,"n":"LAB_4330","k":"branch","len":1,"c":false},{"a":17228,"n":"LAB_434c","k":"branch","len":1,"c":false},{"a":17237,"n":"copy_screen_blocks_backward","k":"routine","len":35,"c":true},{"a":17239,"n":"LAB_4357","k":"branch","len":1,"c":false},{"a":17261,"n":"LAB_436d","k":"branch","len":1,"c":false},{"a":17272,"n":"copy_screen_blocks_forward","k":"routine","len":37,"c":true},{"a":17274,"n":"LAB_437a","k":"branch","len":1,"c":false},{"a":17296,"n":"LAB_4390","k":"branch","len":1,"c":false},{"a":17309,"n":"return_argument_byte_1","k":"routine","len":11,"c":true},{"a":17320,"n":"return_argument_byte_0","k":"routine","len":11,"c":true},{"a":17331,"n":"initialize_display_and_sprite_irq","k":"routine","len":263,"c":true},{"a":17410,"n":"LAB_4402","k":"branch","len":1,"c":false},{"a":17455,"n":"LAB_442f","k":"branch","len":1,"c":false},{"a":17594,"n":"copy_64_bytes","k":"routine","len":11,"c":true},{"a":17596,"n":"LAB_44bc","k":"branch","len":1,"c":false},{"a":17605,"n":"animate_screen_region_transition","k":"routine","len":466,"c":true},{"a":17654,"n":"LAB_44f6","k":"branch","len":1,"c":false},{"a":17738,"n":"LAB_454a","k":"branch","len":1,"c":false},{"a":17775,"n":"LAB_456f","k":"branch","len":1,"c":false},{"a":17779,"n":"LAB_4573","k":"branch","len":1,"c":false},{"a":17827,"n":"LAB_45a3","k":"branch","len":1,"c":false},{"a":17877,"n":"LAB_45d5","k":"branch","len":1,"c":false},{"a":17914,"n":"LAB_45fa","k":"branch","len":1,"c":false},{"a":17938,"n":"LAB_4612","k":"branch","len":1,"c":false},{"a":17946,"n":"LAB_461a","k":"branch","len":1,"c":false},{"a":17952,"n":"LAB_4620","k":"branch","len":1,"c":false},{"a":18011,"n":"LAB_465b","k":"branch","len":1,"c":false},{"a":18043,"n":"LAB_467b","k":"branch","len":1,"c":false},{"a":18062,"n":"LAB_468e","k":"branch","len":1,"c":false},{"a":18071,"n":"read_sid_voice3_noise","k":"routine","len":10,"c":true},{"a":18081,"n":"copy_rom_glyph_to_buffer","k":"routine","len":110,"c":true},{"a":18169,"n":"LAB_46f9","k":"branch","len":1,"c":false},{"a":18191,"n":"copy_custom_glyph_to_buffer","k":"routine","len":78,"c":true},{"a":18261,"n":"LAB_4755","k":"branch","len":1,"c":false},{"a":18269,"n":"copy_rom_glyph_to_screen_charset","k":"routine","len":91,"c":true},{"a":18338,"n":"LAB_47a2","k":"branch","len":1,"c":false},{"a":18360,"n":"copy_custom_glyph_to_screen_charset","k":"routine","len":59,"c":true},{"a":18411,"n":"LAB_47eb","k":"branch","len":1,"c":false},{"a":18419,"n":"screen_transfer_block_ptrs","k":"variable","len":1,"c":true},{"a":18420,"n":"screen_transfer_pointer_low_entry1_alias","k":"table","len":24,"c":true},{"a":18444,"n":"screen_transfer_pointer_high_bytes","k":"variable","len":1,"c":true},{"a":18445,"n":"screen_transfer_high_entry1_alias","k":"table","len":24,"c":true},{"a":18469,"n":"character_rom_glyph_ptrs_ascii_20_7a","k":"variable","len":1,"c":true},{"a":18470,"n":"character_rom_pointer_high_alias","k":"table","len":181,"c":true},{"a":18651,"n":"resident_custom_glyph_ptrs","k":"table","len":16,"c":true},{"a":18667,"n":"custom_glyph_pointer_high_bytes","k":"table","len":16,"c":true},{"a":18683,"n":"resident_custom_glyph_48fb","k":"table","len":8,"c":true},{"a":18691,"n":"border_glyph_4903","k":"table","len":8,"c":true},{"a":18699,"n":"border_glyph_490b","k":"table","len":8,"c":true},{"a":18707,"n":"border_glyph_4913","k":"table","len":8,"c":true},{"a":18715,"n":"border_glyph_491b","k":"table","len":4,"c":true},{"a":18719,"n":"border_glyph_491f","k":"table","len":4,"c":true},{"a":18723,"n":"border_glyph_4923","k":"table","len":8,"c":true},{"a":18731,"n":"border_glyph_492b","k":"table","len":8,"c":true},{"a":18739,"n":"border_glyph_4933","k":"table","len":8,"c":true},{"a":18747,"n":"border_glyph_493b","k":"table","len":8,"c":true},{"a":18755,"n":"border_glyph_4943","k":"table","len":8,"c":true},{"a":18763,"n":"border_glyph_494b","k":"table","len":8,"c":true},{"a":18771,"n":"border_glyph_4953","k":"table","len":4,"c":true},{"a":18775,"n":"border_glyph_4957","k":"table","len":4,"c":true},{"a":18779,"n":"border_glyph_495b","k":"table","len":8,"c":true},{"a":18787,"n":"sprite_transition_mask_a","k":"table","len":64,"c":true},{"a":18851,"n":"sprite_transition_alignment_gap","k":"table","len":8,"c":true},{"a":18859,"n":"sprite_transition_mask_b_prefix","k":"table","len":62,"c":true},{"a":18921,"n":"transition_sprite_last_visible_byte","k":"variable","len":1,"c":true},{"a":18922,"n":"eight_byte_column_offsets","k":"table","len":40,"c":true},{"a":18962,"n":"bitmap_column_offset_high","k":"table","len":40,"c":true},{"a":19002,"n":"thirty_one_byte_column_offsets","k":"table","len":40,"c":true},{"a":19042,"n":"packed_panel_column_offset_high","k":"table","len":40,"c":true},{"a":19082,"n":"screen_row_base_ptrs","k":"table","len":25,"c":true},{"a":19107,"n":"screen_row_address_high","k":"table","len":25,"c":true},{"a":19132,"n":"bitmap_character_row_base_ptrs","k":"table","len":25,"c":true},{"a":19157,"n":"bitmap_row_address_high","k":"table","len":25,"c":true},{"a":19182,"n":"read_length_prefixed_stream_object","k":"routine","len":3,"c":true},{"a":19185,"n":"vm_frame_adjust_4aee","k":"variable","len":2,"c":true},{"a":19187,"n":"vm_bytecode_4aee","k":"table","len":92,"c":true},{"a":19279,"n":"call_vm_function_pointer","k":"routine","len":3,"c":true},{"a":19282,"n":"vm_frame_adjust_4b4f","k":"variable","len":2,"c":true},{"a":19284,"n":"vm_bytecode_4b4f","k":"table","len":3,"c":true},{"a":19287,"n":"run_modal_selection_dialog","k":"routine","len":3,"c":true},{"a":19290,"n":"vm_frame_adjust_4b57","k":"variable","len":2,"c":true},{"a":19292,"n":"vm_bytecode_4b57","k":"table","len":166,"c":true},{"a":19458,"n":"continue_menu_text_with_prefix_state","k":"table","len":16,"c":true},{"a":19474,"n":"format_and_show_error_message","k":"routine","len":3,"c":true},{"a":19477,"n":"vm_frame_adjust_4c12","k":"variable","len":2,"c":true},{"a":19479,"n":"vm_bytecode_4c12","k":"table","len":138,"c":true},{"a":19617,"n":"report_packed_runtime_error","k":"routine","len":3,"c":true},{"a":19620,"n":"vm_frame_adjust_4ca1","k":"variable","len":2,"c":true},{"a":19622,"n":"vm_bytecode_4ca1","k":"table","len":29,"c":true},{"a":19651,"n":"errno_low_error_text","k":"table","len":9,"c":true},{"a":19660,"n":"clear_hires_bitmap","k":"routine","len":3,"c":true},{"a":19663,"n":"vm_frame_adjust_4ccc","k":"variable","len":2,"c":true},{"a":19665,"n":"vm_bytecode_4ccc","k":"table","len":13,"c":true},{"a":19678,"n":"install_dialog_glyph_range","k":"routine","len":3,"c":true},{"a":19681,"n":"vm_frame_adjust_4cde","k":"variable","len":2,"c":true},{"a":19683,"n":"vm_bytecode_4cde","k":"table","len":34,"c":true},{"a":19717,"n":"read_save_directory_aesd","k":"routine","len":3,"c":true},{"a":19720,"n":"vm_frame_adjust_4d05","k":"variable","len":2,"c":true},{"a":19722,"n":"vm_bytecode_4d05","k":"table","len":57,"c":true},{"a":19779,"n":"save_directory_filename_aesd_1","k":"table","len":5,"c":true},{"a":19784,"n":"write_save_directory_aesd","k":"routine","len":3,"c":true},{"a":19787,"n":"vm_frame_adjust_4d48","k":"variable","len":2,"c":true},{"a":19789,"n":"vm_bytecode_4d48","k":"table","len":52,"c":true},{"a":19841,"n":"save_directory_filename_aesd_2","k":"table","len":5,"c":true},{"a":19846,"n":"format_save_directory_entry","k":"routine","len":3,"c":true},{"a":19849,"n":"vm_frame_adjust_4d86","k":"variable","len":2,"c":true},{"a":19851,"n":"vm_bytecode_4d86","k":"table","len":90,"c":true},{"a":19941,"n":"saved_identity_age_text_fragments","k":"table","len":12,"c":true},{"a":19953,"n":"read_save_slot_state","k":"routine","len":3,"c":true},{"a":19956,"n":"vm_frame_adjust_4df1","k":"variable","len":2,"c":true},{"a":19958,"n":"vm_bytecode_4df1","k":"table","len":10,"c":true},{"a":19968,"n":"write_save_slot_state","k":"routine","len":3,"c":true},{"a":19971,"n":"vm_frame_adjust_4e00","k":"variable","len":2,"c":true},{"a":19973,"n":"vm_bytecode_4e00","k":"table","len":10,"c":true},{"a":19983,"n":"transfer_save_slot_state","k":"routine","len":3,"c":true},{"a":19986,"n":"vm_frame_adjust_4e0f","k":"variable","len":2,"c":true},{"a":19988,"n":"vm_bytecode_4e0f","k":"table","len":208,"c":true},{"a":20196,"n":"save_file_aes0_cancel_text","k":"table","len":16,"c":true},{"a":20212,"n":"resume_saved_game_menu","k":"routine","len":3,"c":true},{"a":20215,"n":"vm_frame_adjust_4ef4","k":"variable","len":2,"c":true},{"a":20217,"n":"vm_bytecode_4ef4","k":"table","len":55,"c":true},{"a":20272,"n":"resume_game_menu_text_pool","k":"table","len":53,"c":true},{"a":20325,"n":"save_current_game_menu","k":"routine","len":3,"c":true},{"a":20328,"n":"vm_frame_adjust_4f65","k":"variable","len":2,"c":true},{"a":20330,"n":"vm_bytecode_4f65","k":"table","len":99,"c":true},{"a":20429,"n":"choose_save_file_text_pool","k":"table","len":64,"c":true},{"a":20493,"n":"build_save_directory_menu","k":"routine","len":3,"c":true},{"a":20496,"n":"vm_frame_adjust_500d","k":"variable","len":2,"c":true},{"a":20498,"n":"vm_bytecode_500d","k":"table","len":128,"c":true},{"a":20626,"n":"save_directory_menu_text_pool","k":"table","len":85,"c":true},{"a":20711,"n":"query_drive_status_line","k":"routine","len":3,"c":true},{"a":20714,"n":"vm_frame_adjust_50e7","k":"variable","len":2,"c":true},{"a":20716,"n":"vm_bytecode_50e7","k":"table","len":42,"c":true},{"a":20758,"n":"drive_command_u_semicolon_and_reset","k":"table","len":6,"c":true},{"a":20764,"n":"EditMenuTextOrSelectEntry","k":"routine","len":3,"c":true},{"a":20767,"n":"vm_frame_adjust_511c","k":"variable","len":2,"c":true},{"a":20769,"n":"vm_bytecode_511c","k":"table","len":67,"c":true},{"a":20836,"n":"unreachable_compiler_vm_fragment_5164","k":"table","len":184,"c":true},{"a":21020,"n":"unreachable_compiler_vm_fragment_521c","k":"table","len":4,"c":true},{"a":21024,"n":"scroll_life_map_backward_and_render_exposed_rows","k":"routine","len":3,"c":true},{"a":21027,"n":"vm_frame_adjust_5220","k":"variable","len":2,"c":true},{"a":21029,"n":"vm_bytecode_5220","k":"table","len":89,"c":true},{"a":21118,"n":"scroll_life_map_forward_and_render_exposed_rows","k":"routine","len":3,"c":true},{"a":21121,"n":"vm_frame_adjust_527e","k":"variable","len":2,"c":true},{"a":21123,"n":"vm_bytecode_527e","k":"table","len":86,"c":true},{"a":21209,"n":"clear_and_frame_text_region","k":"routine","len":3,"c":true},{"a":21212,"n":"vm_frame_adjust_52d9","k":"variable","len":2,"c":true},{"a":21214,"n":"vm_bytecode_52d9","k":"table","len":140,"c":true},{"a":21354,"n":"render_text_into_region","k":"routine","len":3,"c":true},{"a":21357,"n":"vm_frame_adjust_536a","k":"variable","len":2,"c":true},{"a":21359,"n":"vm_bytecode_536a","k":"table","len":236,"c":true},{"a":21595,"n":"delay_scaled_iterations","k":"routine","len":3,"c":true},{"a":21598,"n":"vm_frame_adjust_545b","k":"variable","len":2,"c":true},{"a":21600,"n":"vm_bytecode_545b","k":"table","len":25,"c":true},{"a":21625,"n":"show_sprite0_at_grid_position","k":"routine","len":3,"c":true},{"a":21628,"n":"vm_frame_adjust_5479","k":"variable","len":2,"c":true},{"a":21630,"n":"vm_bytecode_5479","k":"table","len":30,"c":true},{"a":21660,"n":"set_sprite0_target_from_grid_position","k":"routine","len":3,"c":true},{"a":21663,"n":"vm_frame_adjust_549c","k":"variable","len":2,"c":true},{"a":21665,"n":"vm_bytecode_549c","k":"table","len":30,"c":true},{"a":21695,"n":"read_pointer_device_position","k":"routine","len":3,"c":true},{"a":21698,"n":"vm_frame_adjust_54bf","k":"variable","len":2,"c":true},{"a":21700,"n":"vm_bytecode_54bf","k":"table","len":72,"c":true},{"a":21772,"n":"disable_sprite0","k":"routine","len":3,"c":true},{"a":21775,"n":"vm_frame_adjust_550c","k":"variable","len":2,"c":true},{"a":21777,"n":"vm_bytecode_550c","k":"table","len":11,"c":true},{"a":21788,"n":"enable_sprite0","k":"routine","len":3,"c":true},{"a":21791,"n":"vm_frame_adjust_551c","k":"variable","len":2,"c":true},{"a":21793,"n":"vm_bytecode_551c","k":"table","len":12,"c":true},{"a":21805,"n":"poll_input_high_nibble","k":"routine","len":3,"c":true},{"a":21808,"n":"vm_frame_adjust_552d","k":"variable","len":2,"c":true},{"a":21810,"n":"vm_bytecode_552d","k":"table","len":16,"c":true},{"a":21826,"n":"poll_input_low_nibble","k":"routine","len":3,"c":true},{"a":21829,"n":"vm_frame_adjust_5542","k":"variable","len":2,"c":true},{"a":21831,"n":"vm_bytecode_5542","k":"table","len":6,"c":true},{"a":21837,"n":"hit_test_selection_rectangle","k":"routine","len":3,"c":true},{"a":21840,"n":"vm_frame_adjust_554d","k":"variable","len":2,"c":true},{"a":21842,"n":"vm_bytecode_554d","k":"table","len":68,"c":true},{"a":21910,"n":"render_life_map_window_or_strip","k":"routine","len":3,"c":true},{"a":21913,"n":"vm_frame_adjust_5596","k":"variable","len":2,"c":true},{"a":21915,"n":"vm_bytecode_5596","k":"table","len":104,"c":true},{"a":22019,"n":"render_initial_life_map_window","k":"routine","len":3,"c":true},{"a":22022,"n":"vm_frame_adjust_5603","k":"variable","len":2,"c":true},{"a":22024,"n":"vm_bytecode_5603","k":"table","len":98,"c":true},{"a":22122,"n":"continue_menu_text","k":"table","len":13,"c":true},{"a":22135,"n":"prompt_retry_after_disk_error","k":"routine","len":3,"c":true},{"a":22138,"n":"vm_frame_adjust_5677","k":"variable","len":2,"c":true},{"a":22140,"n":"vm_bytecode_5677","k":"table","len":86,"c":true},{"a":22226,"n":"disk_swap_prompt_text_pool","k":"table","len":45,"c":true},{"a":22271,"n":"read_normalized_input","k":"routine","len":3,"c":true},{"a":22274,"n":"vm_frame_adjust_56ff","k":"variable","len":2,"c":true},{"a":22276,"n":"vm_bytecode_56ff","k":"table","len":10,"c":true},{"a":22286,"n":"get_debounced_key","k":"routine","len":3,"c":true},{"a":22289,"n":"vm_frame_adjust_570e","k":"variable","len":2,"c":true},{"a":22291,"n":"vm_bytecode_570e","k":"table","len":22,"c":true},{"a":22313,"n":"normalize_key_or_joystick_code","k":"routine","len":3,"c":true},{"a":22316,"n":"vm_frame_adjust_5729","k":"variable","len":2,"c":true},{"a":22318,"n":"vm_bytecode_5729","k":"table","len":140,"c":true},{"a":22458,"n":"render_life_map_cell_or_connector","k":"routine","len":3,"c":true},{"a":22461,"n":"vm_frame_adjust_57ba","k":"variable","len":2,"c":true},{"a":22463,"n":"vm_bytecode_57ba","k":"table","len":425,"c":true},{"a":22888,"n":"clip_and_draw_life_map_connector_segment","k":"routine","len":3,"c":true},{"a":22891,"n":"vm_frame_adjust_5968","k":"variable","len":2,"c":true},{"a":22893,"n":"vm_bytecode_5968","k":"table","len":239,"c":true},{"a":23132,"n":"layout_wrapped_text_lines","k":"routine","len":3,"c":true},{"a":23135,"n":"vm_frame_adjust_5a5c","k":"variable","len":2,"c":true},{"a":23137,"n":"vm_bytecode_5a5c","k":"table","len":267,"c":true},{"a":23404,"n":"enter_inline_native_5b72_adjust_0","k":"routine","len":3,"c":true},{"a":23407,"n":"AlterEgo_Runtime_runtime_descriptor_5b6c_saved_zp","k":"variable","len":1,"c":true},{"a":23408,"n":"native_frame_adjust_5b6c","k":"variable","len":2,"c":true},{"a":23410,"n":"prepare_map_record_stream","k":"routine","len":47,"c":true},{"a":23457,"n":"inline_call_5b9e_target_ptr","k":"variable","len":2,"c":true},{"a":23459,"n":"native_resume_5ba3","k":"routine","len":3,"c":true},{"a":23462,"n":"inline_call_5b9e_arg_bytes","k":"variable","len":1,"c":true},{"a":23463,"n":"native_resume_5ba7","k":"routine","len":7,"c":true},{"a":23470,"n":"inline_call_5bab_target_ptr","k":"variable","len":2,"c":true},{"a":23472,"n":"native_resume_5bb0","k":"routine","len":3,"c":true},{"a":23475,"n":"inline_call_5bab_arg_bytes","k":"variable","len":1,"c":true},{"a":23476,"n":"native_resume_5bb4","k":"routine","len":67,"c":true},{"a":23497,"n":"LAB_5bc9","k":"branch","len":1,"c":false},{"a":23509,"n":"LAB_5bd5","k":"branch","len":1,"c":false},{"a":23514,"n":"LAB_5bda","k":"branch","len":1,"c":false},{"a":23521,"n":"LAB_5be1","k":"branch","len":1,"c":false},{"a":23543,"n":"inline_call_5bf4_target_ptr","k":"variable","len":2,"c":true},{"a":23545,"n":"native_resume_5bf9","k":"routine","len":3,"c":true},{"a":23548,"n":"inline_call_5bf4_arg_bytes","k":"variable","len":1,"c":true},{"a":23549,"n":"native_resume_5bfd","k":"routine","len":49,"c":true},{"a":23575,"n":"LAB_5c17","k":"branch","len":1,"c":false},{"a":23580,"n":"LAB_5c1c","k":"branch","len":1,"c":false},{"a":23593,"n":"LAB_5c29","k":"branch","len":1,"c":false},{"a":23598,"n":"drive_initialize_and_execute_command_bytes","k":"table","len":9,"c":true},{"a":23607,"n":"enter_inline_native_5c3d_adjust_minus4","k":"routine","len":3,"c":true},{"a":23610,"n":"AlterEgo_Runtime_runtime_descriptor_5c37_saved_zp","k":"variable","len":1,"c":true},{"a":23611,"n":"native_frame_adjust_5c37","k":"variable","len":2,"c":true},{"a":23613,"n":"seek_map_payload_offset","k":"routine","len":163,"c":true},{"a":23776,"n":"enter_inline_native_5ce6_save4_adjust_minus2","k":"routine","len":3,"c":true},{"a":23779,"n":"AlterEgo_Runtime_runtime_descriptor_5ce0_saved_zp","k":"variable","len":1,"c":true},{"a":23780,"n":"native_frame_adjust_5ce0","k":"variable","len":2,"c":true},{"a":23782,"n":"read_map_payload_bytes","k":"routine","len":195,"c":true},{"a":23814,"n":"LAB_5d06","k":"branch","len":1,"c":false},{"a":23826,"n":"LAB_5d12","k":"branch","len":1,"c":false},{"a":23836,"n":"LAB_5d1c","k":"branch","len":1,"c":false},{"a":23902,"n":"LAB_5d5e","k":"branch","len":1,"c":false},{"a":23910,"n":"LAB_5d66","k":"branch","len":1,"c":false},{"a":23925,"n":"LAB_5d75","k":"branch","len":1,"c":false},{"a":23930,"n":"LAB_5d7a","k":"branch","len":1,"c":false},{"a":23957,"n":"LAB_5d95","k":"branch","len":1,"c":false},{"a":23965,"n":"LAB_5d9d","k":"branch","len":1,"c":false},{"a":23977,"n":"enter_inline_native_5daf_adjust_minus3","k":"routine","len":3,"c":true},{"a":23980,"n":"runtime_descriptor_5da9_saved_zp","k":"variable","len":1,"c":true},{"a":23981,"n":"native_frame_adjust_5da9","k":"variable","len":2,"c":true},{"a":23983,"n":"receive_map_record_fast_serial","k":"routine","len":57,"c":true},{"a":24015,"n":"LAB_5dcf","k":"branch","len":1,"c":false},{"a":24040,"n":"inline_call_5de5_target_ptr","k":"variable","len":2,"c":true},{"a":24042,"n":"native_resume_5dea","k":"routine","len":3,"c":true},{"a":24045,"n":"inline_call_5de5_arg_bytes","k":"variable","len":1,"c":true},{"a":24046,"n":"native_resume_5dee","k":"routine","len":185,"c":true},{"a":24051,"n":"LAB_5df3","k":"branch","len":1,"c":false},{"a":24061,"n":"LAB_5dfd","k":"branch","len":1,"c":false},{"a":24066,"n":"LAB_5e02","k":"branch","len":1,"c":false},{"a":24068,"n":"LAB_5e04","k":"branch","len":1,"c":false},{"a":24142,"n":"LAB_5e4e","k":"branch","len":1,"c":false},{"a":24155,"n":"LAB_5e5b","k":"branch","len":1,"c":false},{"a":24160,"n":"LAB_5e60","k":"branch","len":1,"c":false},{"a":24170,"n":"LAB_5e6a","k":"branch","len":1,"c":false},{"a":24180,"n":"LAB_5e74","k":"branch","len":1,"c":false},{"a":24209,"n":"LAB_5e91","k":"branch","len":1,"c":false},{"a":24226,"n":"LAB_5ea2","k":"branch","len":1,"c":false},{"a":24231,"n":"enter_inline_native_5ead_adjust_0","k":"routine","len":3,"c":true},{"a":24234,"n":"AlterEgo_Runtime_runtime_descriptor_5ea7_saved_zp","k":"variable","len":1,"c":true},{"a":24235,"n":"native_frame_adjust_5ea7","k":"variable","len":2,"c":true},{"a":24237,"n":"tell_map_payload_offset","k":"routine","len":116,"c":true},{"a":24264,"n":"LAB_5ec8","k":"branch","len":1,"c":false},{"a":24353,"n":"enter_inline_native_5f27_adjust_0","k":"routine","len":3,"c":true},{"a":24356,"n":"runtime_descriptor_5f21_saved_zp","k":"variable","len":1,"c":true},{"a":24357,"n":"native_frame_adjust_5f21","k":"variable","len":2,"c":true},{"a":24359,"n":"invalidate_expected_map_record_id","k":"routine","len":9,"c":true},{"a":24368,"n":"enter_inline_native_5f36_adjust_0","k":"routine","len":3,"c":true},{"a":24371,"n":"AlterEgo_Runtime_runtime_descriptor_5f30_saved_zp","k":"variable","len":1,"c":true},{"a":24372,"n":"native_frame_adjust_5f30","k":"variable","len":2,"c":true},{"a":24374,"n":"wait_for_raster_zero_and_disable_sprite0","k":"routine","len":14,"c":true},{"a":24388,"n":"load_entire_named_file","k":"routine","len":3,"c":true},{"a":24391,"n":"vm_frame_adjust_5f44","k":"variable","len":2,"c":true},{"a":24393,"n":"vm_bytecode_5f44","k":"table","len":156,"c":true},{"a":24549,"n":"overlay_filename_suffix","k":"table","len":5,"c":true},{"a":24554,"n":"open_replacement_file_for_write","k":"routine","len":3,"c":true},{"a":24557,"n":"vm_frame_adjust_5fea","k":"variable","len":2,"c":true},{"a":24559,"n":"vm_bytecode_5fea","k":"table","len":32,"c":true},{"a":24591,"n":"scratch_existing_disk_file","k":"routine","len":3,"c":true},{"a":24594,"n":"vm_frame_adjust_600f","k":"variable","len":2,"c":true},{"a":24596,"n":"vm_bytecode_600f","k":"table","len":104,"c":true},{"a":24700,"n":"read_exact_file_bytes","k":"routine","len":3,"c":true},{"a":24703,"n":"vm_frame_adjust_607c","k":"variable","len":2,"c":true},{"a":24705,"n":"vm_bytecode_607c","k":"table","len":392,"c":true},{"a":25097,"n":"write_exact_file_bytes","k":"routine","len":3,"c":true},{"a":25100,"n":"vm_frame_adjust_6209","k":"variable","len":2,"c":true},{"a":25102,"n":"vm_bytecode_6209","k":"table","len":635,"c":true},{"a":25737,"n":"send_file_control_record","k":"routine","len":3,"c":true},{"a":25740,"n":"vm_frame_adjust_6489","k":"variable","len":2,"c":true},{"a":25742,"n":"vm_bytecode_6489","k":"table","len":91,"c":true},{"a":25833,"n":"serial_send_buffer_with_cr","k":"routine","len":56,"c":true},{"a":25870,"n":"LAB_650e","k":"branch","len":1,"c":false},{"a":25889,"n":"fill_memory_range","k":"routine","len":54,"c":true},{"a":25922,"n":"LAB_6542","k":"branch","len":1,"c":false},{"a":25932,"n":"LAB_654c","k":"branch","len":1,"c":false},{"a":25943,"n":"native_startup_enter_vm","k":"routine","len":36,"c":true},{"a":25979,"n":"find_byte_in_zero_terminated_buffer","k":"routine","len":44,"c":true},{"a":25981,"n":"LAB_657d","k":"branch","len":1,"c":false},{"a":25990,"n":"LAB_6586","k":"branch","len":1,"c":false},{"a":26005,"n":"LAB_6595","k":"branch","len":1,"c":false},{"a":26012,"n":"LAB_659c","k":"branch","len":1,"c":false},{"a":26022,"n":"LAB_65a6","k":"branch","len":1,"c":false},{"a":26023,"n":"vm_proc_65a7","k":"routine","len":3,"c":true},{"a":26026,"n":"vm_frame_adjust_65a7","k":"variable","len":2,"c":true},{"a":26028,"n":"vm_bytecode_65a7","k":"table","len":77,"c":true},{"a":26105,"n":"keyboard_field_prefix_copies","k":"table","len":12,"c":true},{"a":26117,"n":"close_all_open_file_slots","k":"routine","len":3,"c":true},{"a":26120,"n":"vm_frame_adjust_6605","k":"variable","len":2,"c":true},{"a":26122,"n":"vm_bytecode_6605","k":"table","len":38,"c":true},{"a":26160,"n":"memmove_bytes","k":"routine","len":97,"c":true},{"a":26162,"n":"LAB_6632","k":"branch","len":1,"c":false},{"a":26209,"n":"LAB_6661","k":"branch","len":1,"c":false},{"a":26216,"n":"LAB_6668","k":"branch","len":1,"c":false},{"a":26223,"n":"LAB_666f","k":"branch","len":1,"c":false},{"a":26232,"n":"LAB_6678","k":"branch","len":1,"c":false},{"a":26233,"n":"LAB_6679","k":"branch","len":1,"c":false},{"a":26235,"n":"LAB_667b","k":"branch","len":1,"c":false},{"a":26242,"n":"LAB_6682","k":"branch","len":1,"c":false},{"a":26253,"n":"LAB_668d","k":"branch","len":1,"c":false},{"a":26257,"n":"close_file_slot","k":"routine","len":3,"c":true},{"a":26260,"n":"vm_frame_adjust_6691","k":"variable","len":2,"c":true},{"a":26262,"n":"vm_bytecode_6691","k":"table","len":69,"c":true},{"a":26331,"n":"open_file_slot","k":"routine","len":3,"c":true},{"a":26334,"n":"vm_frame_adjust_66db","k":"variable","len":2,"c":true},{"a":26336,"n":"vm_bytecode_66db","k":"table","len":255,"c":true},{"a":26591,"n":"iec_write_filename_suffix","k":"table","len":3,"c":true},{"a":26594,"n":"enter_inline_native_67e8_adjust_minus2","k":"routine","len":3,"c":true},{"a":26597,"n":"AlterEgo_Runtime_runtime_descriptor_67e2_saved_zp","k":"variable","len":1,"c":true},{"a":26598,"n":"native_frame_adjust_67e2","k":"variable","len":2,"c":true},{"a":26600,"n":"read_status_and_restart_drive_fastloader","k":"routine","len":12,"c":true},{"a":26612,"n":"inline_call_67f1_target_ptr","k":"variable","len":2,"c":true},{"a":26614,"n":"native_resume_67f6","k":"routine","len":3,"c":true},{"a":26617,"n":"inline_call_67f1_arg_bytes","k":"variable","len":1,"c":true},{"a":26618,"n":"native_resume_67fa","k":"routine","len":46,"c":true},{"a":26641,"n":"LAB_6811","k":"branch","len":1,"c":false},{"a":26664,"n":"inline_call_6825_target_ptr","k":"variable","len":2,"c":true},{"a":26666,"n":"native_resume_682a","k":"routine","len":3,"c":true},{"a":26669,"n":"inline_call_6825_arg_bytes","k":"variable","len":1,"c":true},{"a":26670,"n":"LAB_682e","k":"routine","len":12,"c":true},{"a":26682,"n":"iec_drive_memory_execute_e6bf_command","k":"table","len":6,"c":true},{"a":26688,"n":"read_iec_drive_status_code","k":"routine","len":61,"c":true},{"a":26701,"n":"LAB_684d","k":"branch","len":1,"c":false},{"a":26737,"n":"LAB_6871","k":"branch","len":1,"c":false},{"a":26742,"n":"LAB_6876","k":"branch","len":1,"c":false},{"a":26749,"n":"dispatch_record_callback","k":"routine","len":120,"c":true},{"a":26792,"n":"LAB_68a8","k":"branch","len":1,"c":false},{"a":26809,"n":"LAB_68b9","k":"branch","len":1,"c":false},{"a":26813,"n":"LAB_68bd","k":"branch","len":1,"c":false},{"a":26845,"n":"LAB_68dd","k":"branch","len":1,"c":false},{"a":26859,"n":"LAB_68eb","k":"branch","len":1,"c":false},{"a":26862,"n":"LAB_68ee","k":"branch","len":1,"c":false},{"a":26864,"n":"LAB_68f0","k":"branch","len":1,"c":false},{"a":26868,"n":"LAB_68f4","k":"branch","len":1,"c":false},{"a":26869,"n":"jump_record_callback","k":"routine","len":3,"c":true},{"a":26872,"n":"append_zero_terminated_string","k":"routine","len":31,"c":true},{"a":26903,"n":"append_bounded_zero_terminated_string","k":"routine","len":31,"c":true},{"a":26934,"n":"copy_zero_terminated_string","k":"routine","len":27,"c":true},{"a":26936,"n":"LAB_6938","k":"branch","len":1,"c":false},{"a":26945,"n":"LAB_6941","k":"branch","len":1,"c":false},{"a":26960,"n":"LAB_6950","k":"branch","len":1,"c":false},{"a":26961,"n":"copy_bounded_zero_terminated_string","k":"routine","len":38,"c":true},{"a":26963,"n":"LAB_6953","k":"branch","len":1,"c":false},{"a":26977,"n":"LAB_6961","k":"branch","len":1,"c":false},{"a":26984,"n":"LAB_6968","k":"branch","len":1,"c":false},{"a":26992,"n":"LAB_6970","k":"branch","len":1,"c":false},{"a":26998,"n":"LAB_6976","k":"branch","len":1,"c":false},{"a":26999,"n":"parse_file_spec_and_allocate_slot","k":"routine","len":3,"c":true},{"a":27002,"n":"vm_frame_adjust_6977","k":"variable","len":2,"c":true},{"a":27004,"n":"vm_bytecode_6977","k":"table","len":164,"c":true},{"a":27168,"n":"parse_cbm_file_spec","k":"routine","len":3,"c":true},{"a":27171,"n":"vm_frame_adjust_6a20","k":"variable","len":2,"c":true},{"a":27173,"n":"vm_bytecode_6a20","k":"table","len":298,"c":true},{"a":27471,"n":"find_keyboard_binding_record","k":"routine","len":3,"c":true},{"a":27474,"n":"vm_frame_adjust_6b4f","k":"variable","len":2,"c":true},{"a":27476,"n":"vm_bytecode_6b4f","k":"table","len":33,"c":true},{"a":27509,"n":"keyboard_binding_record_prefix","k":"table","len":8,"c":true},{"a":27517,"n":"keyboard_binding_record_handler_ptrs","k":"table","len":4,"c":true},{"a":27521,"n":"keyboard_binding_record_tail_and_sentinel","k":"table","len":5,"c":true},{"a":27526,"n":"compare_zero_terminated_strings","k":"routine","len":53,"c":true},{"a":27528,"n":"LAB_6b88","k":"branch","len":1,"c":false},{"a":27539,"n":"LAB_6b93","k":"branch","len":1,"c":false},{"a":27546,"n":"LAB_6b9a","k":"branch","len":1,"c":false},{"a":27554,"n":"LAB_6ba2","k":"branch","len":1,"c":false},{"a":27556,"n":"LAB_6ba4","k":"branch","len":1,"c":false},{"a":27561,"n":"LAB_6ba9","k":"branch","len":1,"c":false},{"a":27575,"n":"LAB_6bb7","k":"branch","len":1,"c":false},{"a":27579,"n":"measure_zero_terminated_string","k":"routine","len":30,"c":true},{"a":27593,"n":"LAB_6bc9","k":"branch","len":1,"c":false},{"a":27606,"n":"LAB_6bd6","k":"branch","len":1,"c":false},{"a":27609,"n":"ascii_to_upper","k":"routine","len":3,"c":true},{"a":27612,"n":"vm_frame_adjust_6bd9","k":"variable","len":2,"c":true},{"a":27614,"n":"vm_bytecode_6bd9","k":"table","len":20,"c":true},{"a":27634,"n":"ascii_to_lower","k":"routine","len":3,"c":true},{"a":27637,"n":"vm_frame_adjust_6bf2","k":"variable","len":2,"c":true},{"a":27639,"n":"vm_bytecode_6bf2","k":"table","len":20,"c":true},{"a":27659,"n":"keyboard_binding_handler_6c0b","k":"routine","len":3,"c":true},{"a":27662,"n":"vm_frame_adjust_6c0b","k":"variable","len":2,"c":true},{"a":27664,"n":"vm_bytecode_6c0b","k":"table","len":224,"c":true},{"a":27888,"n":"keyboard_binding_handler_6cf0","k":"routine","len":3,"c":true},{"a":27891,"n":"vm_frame_adjust_6cf0","k":"variable","len":2,"c":true},{"a":27893,"n":"vm_bytecode_6cf0","k":"table","len":100,"c":true},{"a":27993,"n":"initialize_sid_feedback_tone","k":"routine","len":3,"c":true},{"a":27996,"n":"vm_frame_adjust_6d59","k":"variable","len":2,"c":true},{"a":27998,"n":"vm_bytecode_6d59","k":"table","len":60,"c":true},{"a":28058,"n":"kernal_untlk_tail_wrapper","k":"routine","len":3,"c":true},{"a":28061,"n":"kernal_talk_tail_wrapper","k":"routine","len":3,"c":true},{"a":28064,"n":"kernal_tksa_tail_wrapper","k":"routine","len":3,"c":true},{"a":28067,"n":"kernal_acptr_tail_wrapper","k":"routine","len":3,"c":true},{"a":28070,"n":"kernal_unlsn_tail_wrapper","k":"routine","len":3,"c":true},{"a":28073,"n":"kernal_second_tail_wrapper","k":"routine","len":3,"c":true},{"a":28076,"n":"kernal_listen_tail_wrapper","k":"routine","len":3,"c":true},{"a":28079,"n":"kernal_ciout_tail_wrapper","k":"routine","len":3,"c":true},{"a":28082,"n":"kernal_setlfs_wrapper","k":"routine","len":21,"c":true},{"a":28103,"n":"kernal_setnam_wrapper","k":"routine","len":25,"c":true},{"a":28115,"n":"LAB_6dd3","k":"branch","len":1,"c":false},{"a":28122,"n":"LAB_6dda","k":"branch","len":1,"c":false},{"a":28128,"n":"kernal_open_wrapper","k":"routine","len":6,"c":true},{"a":28134,"n":"kernal_clrchn_wrapper","k":"routine","len":3,"c":true},{"a":28137,"n":"kernal_chkin_wrapper","k":"routine","len":11,"c":true},{"a":28148,"n":"kernal_chrin_wrapper","k":"routine","len":6,"c":true},{"a":28154,"n":"kernal_getin_wrapper","k":"routine","len":6,"c":true},{"a":28160,"n":"kernal_chkout_wrapper","k":"routine","len":11,"c":true},{"a":28171,"n":"kernal_chrout_wrapper","k":"routine","len":10,"c":true},{"a":28181,"n":"kernal_clall_wrapper","k":"routine","len":3,"c":true},{"a":28184,"n":"kernal_close_wrapper","k":"routine","len":10,"c":true},{"a":28194,"n":"kernal_status_to_vm_primary","k":"routine","len":4,"c":true},{"a":28198,"n":"kernal_result_zero_and_capture_status","k":"routine","len":13,"c":true},{"a":28211,"n":"terminate_to_basic_with_status","k":"routine","len":3,"c":true},{"a":28214,"n":"vm_frame_adjust_6e33","k":"variable","len":2,"c":true},{"a":28216,"n":"vm_bytecode_6e33","k":"table","len":11,"c":true},{"a":28227,"n":"enter_basic_warm_start","k":"routine","len":22,"c":true},{"a":28249,"n":"ascii_is_digit","k":"routine","len":3,"c":true},{"a":28252,"n":"vm_frame_adjust_6e59","k":"variable","len":2,"c":true},{"a":28254,"n":"vm_bytecode_6e59","k":"table","len":18,"c":true},{"a":28272,"n":"AllocateVmHeapBlock","k":"routine","len":3,"c":true},{"a":28275,"n":"vm_frame_adjust_6e70","k":"variable","len":2,"c":true},{"a":28277,"n":"vm_bytecode_6e70","k":"table","len":33,"c":true},{"a":28310,"n":"vm_body_6e70_6e96","k":"variable","len":1,"c":true},{"a":28311,"n":"math_operand_x_byte0","k":"variable","len":1,"c":true},{"a":28312,"n":"arithmetic_operand_upper_bytes_6e97","k":"variable","len":1,"c":true},{"a":28313,"n":"math_operand_x_byte2","k":"variable","len":1,"c":false},{"a":28314,"n":"math_operand_x_byte3_sign","k":"variable","len":1,"c":false},{"a":28315,"n":"math_operand_y_result_byte0","k":"variable","len":1,"c":true},{"a":28316,"n":"arithmetic_operand_upper_bytes_6e9b","k":"variable","len":1,"c":true},{"a":28317,"n":"math_operand_y_result_byte2","k":"variable","len":1,"c":false},{"a":28318,"n":"math_operand_y_result_byte3_sign","k":"variable","len":1,"c":false},{"a":28319,"n":"multiply_i32_low32","k":"routine","len":79,"c":true},{"a":28333,"n":"LAB_6ead","k":"branch","len":1,"c":false},{"a":28346,"n":"LAB_6eba","k":"branch","len":1,"c":false},{"a":28358,"n":"LAB_6ec6","k":"branch","len":1,"c":false},{"a":28385,"n":"LAB_6ee1","k":"branch","len":1,"c":false},{"a":28398,"n":"divide_i32_quotient_nonzero_contract","k":"routine","len":47,"c":true},{"a":28413,"n":"LAB_6efd","k":"branch","len":1,"c":false},{"a":28428,"n":"LAB_6f0c","k":"branch","len":1,"c":false},{"a":28439,"n":"LAB_6f17","k":"branch","len":1,"c":false},{"a":28445,"n":"divide_i32_remainder_nonzero_contract","k":"routine","len":47,"c":true},{"a":28460,"n":"LAB_6f2c","k":"branch","len":1,"c":false},{"a":28475,"n":"LAB_6f3b","k":"branch","len":1,"c":false},{"a":28486,"n":"LAB_6f46","k":"branch","len":1,"c":false},{"a":28492,"n":"divide_i32_unsigned_magnitude_core","k":"routine","len":137,"c":true},{"a":28525,"n":"LAB_6f6d","k":"branch","len":1,"c":false},{"a":28537,"n":"LAB_6f79","k":"branch","len":1,"c":false},{"a":28547,"n":"LAB_6f83","k":"branch","len":1,"c":false},{"a":28559,"n":"LAB_6f8f","k":"branch","len":1,"c":false},{"a":28561,"n":"LAB_6f91","k":"branch","len":1,"c":false},{"a":28624,"n":"LAB_6fd0","k":"branch","len":1,"c":false},{"a":28629,"n":"load_i32_operands_to_math_work","k":"routine","len":31,"c":true},{"a":28633,"n":"LAB_6fd9","k":"branch","len":1,"c":false},{"a":28647,"n":"LAB_6fe7","k":"branch","len":1,"c":false},{"a":28660,"n":"inline_native_call_gateway","k":"routine","len":63,"c":true},{"a":28679,"n":"LAB_7007","k":"branch","len":1,"c":false},{"a":28684,"n":"LAB_700c","k":"branch","len":1,"c":false},{"a":28723,"n":"inline_native_call_cleanup","k":"routine","len":38,"c":true},{"a":28742,"n":"LAB_7046","k":"branch","len":1,"c":false},{"a":28753,"n":"LAB_7051","k":"branch","len":1,"c":false},{"a":28761,"n":"runtime_descriptor_call_gateway","k":"routine","len":120,"c":true},{"a":28793,"n":"LAB_7079","k":"branch","len":1,"c":false},{"a":28830,"n":"LAB_709e","k":"branch","len":1,"c":false},{"a":28838,"n":"LAB_70a6","k":"branch","len":1,"c":false},{"a":28867,"n":"LAB_70c3","k":"branch","len":1,"c":false},{"a":28881,"n":"inline_native_return_epilogue","k":"routine","len":39,"c":true},{"a":28891,"n":"LAB_70db","k":"branch","len":1,"c":false},{"a":28899,"n":"LAB_70e3","k":"branch","len":1,"c":false},{"a":28909,"n":"LAB_70ed","k":"branch","len":1,"c":false},{"a":28920,"n":"vm_procedure_call_gateway","k":"routine","len":68,"c":true},{"a":28947,"n":"LAB_7113","k":"branch","len":1,"c":false},{"a":28988,"n":"vm_fetch_decode_dispatch","k":"routine","len":24,"c":true},{"a":28998,"n":"LAB_7146","k":"branch","len":1,"c":false},{"a":29012,"n":"AlterEgo_VM_vm_opcode_handler_7154","k":"routine","len":4,"c":true},{"a":29016,"n":"AlterEgo_VM_vm_opcode_handler_7158","k":"routine","len":4,"c":true},{"a":29020,"n":"AlterEgo_VM_vm_opcode_handler_715c","k":"routine","len":4,"c":true},{"a":29024,"n":"AlterEgo_VM_vm_opcode_handler_7160","k":"routine","len":4,"c":true},{"a":29028,"n":"AlterEgo_VM_vm_opcode_handler_7164","k":"routine","len":4,"c":true},{"a":29032,"n":"AlterEgo_VM_vm_opcode_handler_7168","k":"routine","len":4,"c":true},{"a":29036,"n":"AlterEgo_VM_vm_opcode_handler_716c","k":"routine","len":4,"c":true},{"a":29040,"n":"AlterEgo_VM_vm_opcode_handler_7170","k":"routine","len":4,"c":true},{"a":29044,"n":"AlterEgo_VM_vm_opcode_handler_7174","k":"routine","len":4,"c":true},{"a":29048,"n":"AlterEgo_VM_vm_opcode_handler_7178","k":"routine","len":4,"c":true},{"a":29052,"n":"AlterEgo_VM_vm_opcode_handler_717c","k":"routine","len":4,"c":true},{"a":29056,"n":"AlterEgo_VM_vm_opcode_handler_7180","k":"routine","len":2,"c":true},{"a":29058,"n":"vm_load_primary_local_negative_tail","k":"routine","len":23,"c":true},{"a":29081,"n":"AlterEgo_VM_vm_opcode_handler_7199","k":"routine","len":4,"c":true},{"a":29085,"n":"AlterEgo_VM_vm_opcode_handler_719d","k":"routine","len":4,"c":true},{"a":29089,"n":"AlterEgo_VM_vm_opcode_handler_71a1","k":"routine","len":4,"c":true},{"a":29093,"n":"AlterEgo_VM_vm_opcode_handler_71a5","k":"routine","len":2,"c":true},{"a":29095,"n":"vm_load_primary_local_positive_tail","k":"routine","len":12,"c":true},{"a":29107,"n":"AlterEgo_VM_vm_opcode_handler_71b3","k":"routine","len":4,"c":true},{"a":29111,"n":"AlterEgo_VM_vm_opcode_handler_71b7","k":"routine","len":4,"c":true},{"a":29115,"n":"AlterEgo_VM_vm_opcode_handler_71bb","k":"routine","len":4,"c":true},{"a":29119,"n":"AlterEgo_VM_vm_opcode_handler_71bf","k":"routine","len":4,"c":true},{"a":29123,"n":"AlterEgo_VM_vm_opcode_handler_71c3","k":"routine","len":4,"c":true},{"a":29127,"n":"AlterEgo_VM_vm_opcode_handler_71c7","k":"routine","len":4,"c":true},{"a":29131,"n":"AlterEgo_VM_vm_opcode_handler_71cb","k":"routine","len":4,"c":true},{"a":29135,"n":"AlterEgo_VM_vm_opcode_handler_71cf","k":"routine","len":4,"c":true},{"a":29139,"n":"AlterEgo_VM_vm_opcode_handler_71d3","k":"routine","len":4,"c":true},{"a":29143,"n":"AlterEgo_VM_vm_opcode_handler_71d7","k":"routine","len":4,"c":true},{"a":29147,"n":"AlterEgo_VM_vm_opcode_handler_71db","k":"routine","len":4,"c":true},{"a":29151,"n":"AlterEgo_VM_vm_opcode_handler_71df","k":"routine","len":2,"c":true},{"a":29153,"n":"vm_load_secondary_local_negative_tail","k":"routine","len":23,"c":true},{"a":29176,"n":"AlterEgo_VM_vm_opcode_handler_71f8","k":"routine","len":4,"c":true},{"a":29180,"n":"AlterEgo_VM_vm_opcode_handler_71fc","k":"routine","len":4,"c":true},{"a":29184,"n":"AlterEgo_VM_vm_opcode_handler_7200","k":"routine","len":4,"c":true},{"a":29188,"n":"AlterEgo_VM_vm_opcode_handler_7204","k":"routine","len":2,"c":true},{"a":29190,"n":"vm_load_secondary_local_positive_tail","k":"routine","len":12,"c":true},{"a":29202,"n":"AlterEgo_VM_vm_opcode_handler_7212","k":"routine","len":4,"c":true},{"a":29206,"n":"AlterEgo_VM_vm_opcode_handler_7216","k":"routine","len":4,"c":true},{"a":29210,"n":"AlterEgo_VM_vm_opcode_handler_721a","k":"routine","len":4,"c":true},{"a":29214,"n":"AlterEgo_VM_vm_opcode_handler_721e","k":"routine","len":4,"c":true},{"a":29218,"n":"AlterEgo_VM_vm_opcode_handler_7222","k":"routine","len":4,"c":true},{"a":29222,"n":"AlterEgo_VM_vm_opcode_handler_7226","k":"routine","len":4,"c":true},{"a":29226,"n":"AlterEgo_VM_vm_opcode_handler_722a","k":"routine","len":4,"c":true},{"a":29230,"n":"AlterEgo_VM_vm_opcode_handler_722e","k":"routine","len":4,"c":true},{"a":29234,"n":"AlterEgo_VM_vm_opcode_handler_7232","k":"routine","len":4,"c":true},{"a":29238,"n":"AlterEgo_VM_vm_opcode_handler_7236","k":"routine","len":4,"c":true},{"a":29242,"n":"AlterEgo_VM_vm_opcode_handler_723a","k":"routine","len":4,"c":true},{"a":29246,"n":"AlterEgo_VM_vm_opcode_handler_723e","k":"routine","len":2,"c":true},{"a":29248,"n":"vm_store_primary_local_negative_tail","k":"routine","len":23,"c":true},{"a":29271,"n":"AlterEgo_VM_vm_opcode_handler_7257","k":"routine","len":4,"c":true},{"a":29275,"n":"AlterEgo_VM_vm_opcode_handler_725b","k":"routine","len":4,"c":true},{"a":29279,"n":"AlterEgo_VM_vm_opcode_handler_725f","k":"routine","len":4,"c":true},{"a":29283,"n":"AlterEgo_VM_vm_opcode_handler_7263","k":"routine","len":2,"c":true},{"a":29285,"n":"vm_store_primary_local_positive_tail","k":"routine","len":12,"c":true},{"a":29297,"n":"AlterEgo_VM_vm_opcode_handler_7271","k":"routine","len":4,"c":true},{"a":29301,"n":"AlterEgo_VM_vm_opcode_handler_7275","k":"routine","len":4,"c":true},{"a":29305,"n":"AlterEgo_VM_vm_opcode_handler_7279","k":"routine","len":4,"c":true},{"a":29309,"n":"AlterEgo_VM_vm_opcode_handler_727d","k":"routine","len":4,"c":true},{"a":29313,"n":"AlterEgo_VM_vm_opcode_handler_7281","k":"routine","len":4,"c":true},{"a":29317,"n":"AlterEgo_VM_vm_opcode_handler_7285","k":"routine","len":4,"c":true},{"a":29321,"n":"AlterEgo_VM_vm_opcode_handler_7289","k":"routine","len":4,"c":true},{"a":29325,"n":"AlterEgo_VM_vm_opcode_handler_728d","k":"routine","len":4,"c":true},{"a":29329,"n":"AlterEgo_VM_vm_opcode_handler_7291","k":"routine","len":4,"c":true},{"a":29333,"n":"AlterEgo_VM_vm_opcode_handler_7295","k":"routine","len":4,"c":true},{"a":29337,"n":"AlterEgo_VM_vm_opcode_handler_7299","k":"routine","len":4,"c":true},{"a":29341,"n":"AlterEgo_VM_vm_opcode_handler_729d","k":"routine","len":2,"c":true},{"a":29343,"n":"vm_push_local_negative_tail","k":"routine","len":21,"c":true},{"a":29364,"n":"AlterEgo_VM_vm_opcode_handler_72b4","k":"routine","len":4,"c":true},{"a":29368,"n":"AlterEgo_VM_vm_opcode_handler_72b8","k":"routine","len":4,"c":true},{"a":29372,"n":"AlterEgo_VM_vm_opcode_handler_72bc","k":"routine","len":4,"c":true},{"a":29376,"n":"AlterEgo_VM_vm_opcode_handler_72c0","k":"routine","len":2,"c":true},{"a":29378,"n":"vm_push_local_positive_tail","k":"routine","len":9,"c":true},{"a":29387,"n":"AlterEgo_VM_vm_opcode_handler_72cb","k":"routine","len":4,"c":true},{"a":29391,"n":"AlterEgo_VM_vm_opcode_handler_72cf","k":"routine","len":4,"c":true},{"a":29395,"n":"AlterEgo_VM_vm_opcode_handler_72d3","k":"routine","len":4,"c":true},{"a":29399,"n":"AlterEgo_VM_vm_opcode_handler_72d7","k":"routine","len":4,"c":true},{"a":29403,"n":"AlterEgo_VM_vm_opcode_handler_72db","k":"routine","len":4,"c":true},{"a":29407,"n":"AlterEgo_VM_vm_opcode_handler_72df","k":"routine","len":4,"c":true},{"a":29411,"n":"AlterEgo_VM_vm_opcode_handler_72e3","k":"routine","len":4,"c":true},{"a":29415,"n":"AlterEgo_VM_vm_opcode_handler_72e7","k":"routine","len":4,"c":true},{"a":29419,"n":"AlterEgo_VM_vm_opcode_handler_72eb","k":"routine","len":4,"c":true},{"a":29423,"n":"AlterEgo_VM_vm_opcode_handler_72ef","k":"routine","len":4,"c":true},{"a":29427,"n":"AlterEgo_VM_vm_opcode_handler_72f3","k":"routine","len":4,"c":true},{"a":29431,"n":"AlterEgo_VM_vm_opcode_handler_72f7","k":"routine","len":4,"c":true},{"a":29435,"n":"AlterEgo_VM_vm_opcode_handler_72fb","k":"routine","len":4,"c":true},{"a":29439,"n":"AlterEgo_VM_vm_opcode_handler_72ff","k":"routine","len":4,"c":true},{"a":29443,"n":"AlterEgo_VM_vm_opcode_handler_7303","k":"routine","len":4,"c":true},{"a":29447,"n":"AlterEgo_VM_vm_opcode_handler_7307","k":"routine","len":1,"c":true},{"a":29448,"n":"vm_load_primary_const_tail","k":"routine","len":7,"c":true},{"a":29455,"n":"AlterEgo_VM_vm_opcode_handler_730f","k":"routine","len":4,"c":true},{"a":29459,"n":"AlterEgo_VM_vm_opcode_handler_7313","k":"routine","len":4,"c":true},{"a":29463,"n":"AlterEgo_VM_vm_opcode_handler_7317","k":"routine","len":4,"c":true},{"a":29467,"n":"AlterEgo_VM_vm_opcode_handler_731b","k":"routine","len":4,"c":true},{"a":29471,"n":"AlterEgo_VM_vm_opcode_handler_731f","k":"routine","len":4,"c":true},{"a":29475,"n":"AlterEgo_VM_vm_opcode_handler_7323","k":"routine","len":4,"c":true},{"a":29479,"n":"AlterEgo_VM_vm_opcode_handler_7327","k":"routine","len":4,"c":true},{"a":29483,"n":"AlterEgo_VM_vm_opcode_handler_732b","k":"routine","len":4,"c":true},{"a":29487,"n":"AlterEgo_VM_vm_opcode_handler_732f","k":"routine","len":4,"c":true},{"a":29491,"n":"AlterEgo_VM_vm_opcode_handler_7333","k":"routine","len":4,"c":true},{"a":29495,"n":"AlterEgo_VM_vm_opcode_handler_7337","k":"routine","len":4,"c":true},{"a":29499,"n":"AlterEgo_VM_vm_opcode_handler_733b","k":"routine","len":4,"c":true},{"a":29503,"n":"AlterEgo_VM_vm_opcode_handler_733f","k":"routine","len":4,"c":true},{"a":29507,"n":"AlterEgo_VM_vm_opcode_handler_7343","k":"routine","len":4,"c":true},{"a":29511,"n":"AlterEgo_VM_vm_opcode_handler_7347","k":"routine","len":4,"c":true},{"a":29515,"n":"AlterEgo_VM_vm_opcode_handler_734b","k":"routine","len":1,"c":true},{"a":29516,"n":"vm_load_secondary_const_tail","k":"routine","len":7,"c":true},{"a":29523,"n":"AlterEgo_VM_vm_opcode_handler_7353","k":"routine","len":4,"c":true},{"a":29527,"n":"AlterEgo_VM_vm_opcode_handler_7357","k":"routine","len":4,"c":true},{"a":29531,"n":"AlterEgo_VM_vm_opcode_handler_735b","k":"routine","len":4,"c":true},{"a":29535,"n":"AlterEgo_VM_vm_opcode_handler_735f","k":"routine","len":4,"c":true},{"a":29539,"n":"AlterEgo_VM_vm_opcode_handler_7363","k":"routine","len":4,"c":true},{"a":29543,"n":"AlterEgo_VM_vm_opcode_handler_7367","k":"routine","len":4,"c":true},{"a":29547,"n":"AlterEgo_VM_vm_opcode_handler_736b","k":"routine","len":4,"c":true},{"a":29551,"n":"AlterEgo_VM_vm_opcode_handler_736f","k":"routine","len":4,"c":true},{"a":29555,"n":"AlterEgo_VM_vm_opcode_handler_7373","k":"routine","len":4,"c":true},{"a":29559,"n":"AlterEgo_VM_vm_opcode_handler_7377","k":"routine","len":4,"c":true},{"a":29563,"n":"AlterEgo_VM_vm_opcode_handler_737b","k":"routine","len":4,"c":true},{"a":29567,"n":"AlterEgo_VM_vm_opcode_handler_737f","k":"routine","len":4,"c":true},{"a":29571,"n":"AlterEgo_VM_vm_opcode_handler_7383","k":"routine","len":4,"c":true},{"a":29575,"n":"AlterEgo_VM_vm_opcode_handler_7387","k":"routine","len":4,"c":true},{"a":29579,"n":"AlterEgo_VM_vm_opcode_handler_738b","k":"routine","len":4,"c":true},{"a":29583,"n":"AlterEgo_VM_vm_opcode_handler_738f","k":"routine","len":1,"c":true},{"a":29584,"n":"vm_push_const_tail","k":"routine","len":5,"c":true},{"a":29589,"n":"AlterEgo_VM_vm_opcode_handler_7395","k":"routine","len":4,"c":true},{"a":29593,"n":"AlterEgo_VM_vm_opcode_handler_7399","k":"routine","len":4,"c":true},{"a":29597,"n":"AlterEgo_VM_vm_opcode_handler_739d","k":"routine","len":4,"c":true},{"a":29601,"n":"AlterEgo_VM_vm_opcode_handler_73a1","k":"routine","len":4,"c":true},{"a":29605,"n":"AlterEgo_VM_vm_opcode_handler_73a5","k":"routine","len":4,"c":true},{"a":29609,"n":"AlterEgo_VM_vm_opcode_handler_73a9","k":"routine","len":4,"c":true},{"a":29613,"n":"AlterEgo_VM_vm_opcode_handler_73ad","k":"routine","len":4,"c":true},{"a":29617,"n":"AlterEgo_VM_vm_opcode_handler_73b1","k":"routine","len":4,"c":true},{"a":29621,"n":"AlterEgo_VM_vm_opcode_handler_73b5","k":"routine","len":4,"c":true},{"a":29625,"n":"AlterEgo_VM_vm_opcode_handler_73b9","k":"routine","len":4,"c":true},{"a":29629,"n":"AlterEgo_VM_vm_opcode_handler_73bd","k":"routine","len":4,"c":true},{"a":29633,"n":"AlterEgo_VM_vm_opcode_handler_73c1","k":"routine","len":4,"c":true},{"a":29637,"n":"AlterEgo_VM_vm_opcode_handler_73c5","k":"routine","len":4,"c":true},{"a":29641,"n":"AlterEgo_VM_vm_opcode_handler_73c9","k":"routine","len":4,"c":true},{"a":29645,"n":"AlterEgo_VM_vm_opcode_handler_73cd","k":"routine","len":2,"c":true},{"a":29647,"n":"vm_add_primary_const_tail","k":"routine","len":9,"c":true},{"a":29656,"n":"AlterEgo_VM_vm_opcode_handler_73d8","k":"routine","len":3,"c":true},{"a":29659,"n":"AlterEgo_VM_vm_opcode_handler_73db","k":"routine","len":5,"c":true},{"a":29664,"n":"AlterEgo_VM_vm_opcode_handler_73e0","k":"routine","len":3,"c":true},{"a":29667,"n":"vm_load_primary_word_through_scratch_tail","k":"routine","len":12,"c":true},{"a":29679,"n":"AlterEgo_VM_vm_opcode_handler_73ef","k":"routine","len":5,"c":true},{"a":29684,"n":"AlterEgo_VM_vm_opcode_handler_73f4","k":"routine","len":3,"c":true},{"a":29687,"n":"vm_load_secondary_word_through_scratch_tail","k":"routine","len":12,"c":true},{"a":29699,"n":"AlterEgo_VM_vm_opcode_handler_7403","k":"routine","len":5,"c":true},{"a":29704,"n":"AlterEgo_VM_vm_opcode_handler_7408","k":"routine","len":5,"c":true},{"a":29709,"n":"AlterEgo_VM_vm_opcode_handler_740d","k":"routine","len":3,"c":true},{"a":29712,"n":"vm_store_primary_word_through_scratch_tail","k":"routine","len":12,"c":true},{"a":29724,"n":"AlterEgo_VM_vm_opcode_handler_741c","k":"routine","len":5,"c":true},{"a":29729,"n":"AlterEgo_VM_vm_opcode_handler_7421","k":"routine","len":5,"c":true},{"a":29734,"n":"AlterEgo_VM_vm_opcode_handler_7426","k":"routine","len":3,"c":true},{"a":29737,"n":"vm_push_word_through_scratch_tail","k":"routine","len":10,"c":true},{"a":29747,"n":"AlterEgo_VM_vm_opcode_handler_7433","k":"routine","len":5,"c":true},{"a":29752,"n":"AlterEgo_VM_vm_opcode_handler_7438","k":"routine","len":5,"c":true},{"a":29757,"n":"AlterEgo_VM_vm_opcode_handler_743d","k":"routine","len":15,"c":true},{"a":29772,"n":"AlterEgo_VM_vm_opcode_handler_744c","k":"routine","len":15,"c":true},{"a":29787,"n":"AlterEgo_VM_vm_opcode_handler_745b","k":"routine","len":3,"c":true},{"a":29790,"n":"vm_store_primary_from_ax_tail","k":"routine","len":7,"c":true},{"a":29797,"n":"AlterEgo_VM_vm_opcode_handler_7465","k":"routine","len":5,"c":true},{"a":29802,"n":"AlterEgo_VM_vm_opcode_handler_746a","k":"routine","len":3,"c":true},{"a":29805,"n":"vm_store_secondary_from_ax_tail","k":"routine","len":7,"c":true},{"a":29812,"n":"AlterEgo_VM_vm_opcode_handler_7474","k":"routine","len":5,"c":true},{"a":29817,"n":"AlterEgo_VM_vm_opcode_handler_7479","k":"routine","len":6,"c":true},{"a":29823,"n":"AlterEgo_VM_vm_opcode_handler_747f","k":"routine","len":6,"c":true},{"a":29829,"n":"AlterEgo_VM_vm_opcode_handler_7485","k":"routine","len":3,"c":true},{"a":29832,"n":"vm_add_ax_to_primary_tail","k":"routine","len":12,"c":true},{"a":29844,"n":"AlterEgo_VM_vm_opcode_handler_7494","k":"routine","len":5,"c":true},{"a":29849,"n":"AlterEgo_VM_vm_opcode_handler_7499","k":"routine","len":3,"c":true},{"a":29852,"n":"vm_load_primary_byte_through_scratch_tail","k":"routine","len":9,"c":true},{"a":29861,"n":"AlterEgo_VM_vm_opcode_handler_74a5","k":"routine","len":5,"c":true},{"a":29866,"n":"AlterEgo_VM_vm_opcode_handler_74aa","k":"routine","len":3,"c":true},{"a":29869,"n":"vm_load_secondary_byte_through_scratch_tail","k":"routine","len":9,"c":true},{"a":29878,"n":"AlterEgo_VM_vm_opcode_handler_74b6","k":"routine","len":5,"c":true},{"a":29883,"n":"AlterEgo_VM_vm_opcode_handler_74bb","k":"routine","len":3,"c":true},{"a":29886,"n":"vm_store_primary_byte_through_scratch_tail","k":"routine","len":7,"c":true},{"a":29893,"n":"AlterEgo_VM_vm_opcode_handler_74c5","k":"routine","len":5,"c":true},{"a":29898,"n":"AlterEgo_VM_vm_opcode_handler_74ca","k":"routine","len":3,"c":true},{"a":29901,"n":"vm_push_byte_through_scratch_tail","k":"routine","len":7,"c":true},{"a":29908,"n":"AlterEgo_VM_vm_opcode_handler_74d4","k":"routine","len":5,"c":true},{"a":29913,"n":"AlterEgo_VM_vm_opcode_handler_74d9","k":"routine","len":9,"c":true},{"a":29922,"n":"vm_native_indirect_trampoline","k":"routine","len":3,"c":true},{"a":29925,"n":"AlterEgo_VM_vm_opcode_handler_74e5","k":"routine","len":6,"c":true},{"a":29931,"n":"vm_call_primary_indirect","k":"routine","len":3,"c":true},{"a":29934,"n":"AlterEgo_VM_vm_opcode_handler_74ee","k":"routine","len":33,"c":true},{"a":29944,"n":"LAB_74f8","k":"branch","len":1,"c":false},{"a":29951,"n":"LAB_74ff","k":"branch","len":1,"c":false},{"a":29962,"n":"LAB_750a","k":"branch","len":1,"c":false},{"a":29967,"n":"AlterEgo_VM_vm_opcode_handler_750f","k":"routine","len":14,"c":true},{"a":29978,"n":"LAB_751a","k":"branch","len":1,"c":false},{"a":29981,"n":"AlterEgo_VM_vm_opcode_handler_751d","k":"routine","len":15,"c":true},{"a":29996,"n":"AlterEgo_VM_vm_opcode_handler_752c","k":"routine","len":10,"c":true},{"a":30006,"n":"AlterEgo_VM_vm_opcode_handler_7536","k":"routine","len":6,"c":true},{"a":30012,"n":"vm_branch_not_taken_skip_word_operand_tail","k":"routine","len":6,"c":true},{"a":30018,"n":"AlterEgo_VM_vm_opcode_handler_7542","k":"routine","len":8,"c":true},{"a":30026,"n":"AlterEgo_VM_vm_opcode_handler_754a","k":"routine","len":72,"c":true},{"a":30045,"n":"LAB_755d","k":"branch","len":1,"c":false},{"a":30057,"n":"LAB_7569","k":"branch","len":1,"c":false},{"a":30071,"n":"LAB_7577","k":"branch","len":1,"c":false},{"a":30084,"n":"LAB_7584","k":"branch","len":1,"c":false},{"a":30098,"n":"AlterEgo_VM_vm_opcode_handler_7592","k":"routine","len":57,"c":true},{"a":30142,"n":"LAB_75be","k":"branch","len":1,"c":false},{"a":30155,"n":"AlterEgo_VM_vm_opcode_handler_75cb","k":"routine","len":13,"c":true},{"a":30168,"n":"AlterEgo_VM_vm_opcode_handler_75d8","k":"routine","len":9,"c":true},{"a":30177,"n":"AlterEgo_VM_vm_opcode_handler_75e1","k":"routine","len":12,"c":true},{"a":30189,"n":"AlterEgo_VM_vm_opcode_handler_75ed","k":"routine","len":7,"c":true},{"a":30196,"n":"AlterEgo_VM_vm_opcode_handler_75f4","k":"routine","len":7,"c":true},{"a":30203,"n":"AlterEgo_VM_vm_opcode_handler_75fb","k":"routine","len":23,"c":true},{"a":30223,"n":"LAB_760f","k":"branch","len":1,"c":false},{"a":30226,"n":"AlterEgo_VM_vm_opcode_handler_7612","k":"routine","len":40,"c":true},{"a":30234,"n":"LAB_761a","k":"branch","len":1,"c":false},{"a":30252,"n":"LAB_762c","k":"branch","len":1,"c":false},{"a":30266,"n":"AlterEgo_VM_vm_opcode_handler_763a","k":"routine","len":6,"c":true},{"a":30272,"n":"AlterEgo_VM_vm_opcode_handler_7640","k":"routine","len":16,"c":true},{"a":30285,"n":"LAB_764d","k":"branch","len":1,"c":false},{"a":30288,"n":"divide_u16_vm_restoring_core","k":"routine","len":38,"c":true},{"a":30296,"n":"LAB_7658","k":"branch","len":1,"c":false},{"a":30322,"n":"LAB_7672","k":"branch","len":1,"c":false},{"a":30326,"n":"AlterEgo_VM_vm_opcode_handler_7676","k":"routine","len":24,"c":true},{"a":30347,"n":"LAB_768b","k":"branch","len":1,"c":false},{"a":30350,"n":"AlterEgo_VM_vm_opcode_handler_768e","k":"routine","len":14,"c":true},{"a":30364,"n":"vm_prepare_signed_division","k":"routine","len":39,"c":true},{"a":30387,"n":"LAB_76b3","k":"branch","len":1,"c":false},{"a":30402,"n":"LAB_76c2","k":"branch","len":1,"c":false},{"a":30403,"n":"AlterEgo_VM_vm_opcode_handler_76c3","k":"routine","len":16,"c":true},{"a":30419,"n":"AlterEgo_VM_vm_opcode_handler_76d3","k":"routine","len":16,"c":true},{"a":30435,"n":"AlterEgo_VM_vm_opcode_handler_76e3","k":"routine","len":20,"c":true},{"a":30439,"n":"LAB_76e7","k":"branch","len":1,"c":false},{"a":30446,"n":"LAB_76ee","k":"branch","len":1,"c":false},{"a":30455,"n":"AlterEgo_VM_vm_opcode_handler_76f7","k":"routine","len":25,"c":true},{"a":30463,"n":"LAB_76ff","k":"branch","len":1,"c":false},{"a":30470,"n":"LAB_7706","k":"branch","len":1,"c":false},{"a":30480,"n":"AlterEgo_VM_vm_opcode_handler_7710","k":"routine","len":20,"c":true},{"a":30484,"n":"LAB_7714","k":"branch","len":1,"c":false},{"a":30491,"n":"LAB_771b","k":"branch","len":1,"c":false},{"a":30500,"n":"AlterEgo_VM_vm_opcode_handler_7724","k":"routine","len":15,"c":true},{"a":30515,"n":"AlterEgo_VM_vm_opcode_handler_7733","k":"routine","len":15,"c":true},{"a":30530,"n":"AlterEgo_VM_vm_opcode_handler_7742","k":"routine","len":15,"c":true},{"a":30545,"n":"AlterEgo_VM_vm_opcode_handler_7751","k":"routine","len":20,"c":true},{"a":30560,"n":"LAB_7760","k":"branch","len":1,"c":false},{"a":30565,"n":"AlterEgo_VM_vm_opcode_handler_7765","k":"routine","len":20,"c":true},{"a":30579,"n":"LAB_7773","k":"branch","len":1,"c":false},{"a":30580,"n":"LAB_7774","k":"branch","len":1,"c":false},{"a":30585,"n":"AlterEgo_VM_vm_opcode_handler_7779","k":"routine","len":23,"c":true},{"a":30598,"n":"LAB_7786","k":"branch","len":1,"c":false},{"a":30603,"n":"LAB_778b","k":"branch","len":1,"c":false},{"a":30608,"n":"AlterEgo_VM_vm_opcode_handler_7790","k":"routine","len":23,"c":true},{"a":30621,"n":"LAB_779d","k":"branch","len":1,"c":false},{"a":30626,"n":"LAB_77a2","k":"branch","len":1,"c":false},{"a":30631,"n":"AlterEgo_VM_vm_opcode_handler_77a7","k":"routine","len":23,"c":true},{"a":30644,"n":"LAB_77b4","k":"branch","len":1,"c":false},{"a":30649,"n":"LAB_77b9","k":"branch","len":1,"c":false},{"a":30654,"n":"AlterEgo_VM_vm_opcode_handler_77be","k":"routine","len":23,"c":true},{"a":30667,"n":"LAB_77cb","k":"branch","len":1,"c":false},{"a":30672,"n":"LAB_77d0","k":"branch","len":1,"c":false},{"a":30677,"n":"AlterEgo_VM_vm_opcode_handler_77d5","k":"routine","len":18,"c":true},{"a":30690,"n":"LAB_77e2","k":"branch","len":1,"c":false},{"a":30695,"n":"AlterEgo_VM_vm_opcode_handler_77e7","k":"routine","len":18,"c":true},{"a":30708,"n":"LAB_77f4","k":"branch","len":1,"c":false},{"a":30713,"n":"AlterEgo_VM_vm_opcode_handler_77f9","k":"routine","len":18,"c":true},{"a":30726,"n":"LAB_7806","k":"branch","len":1,"c":false},{"a":30731,"n":"AlterEgo_VM_vm_opcode_handler_780b","k":"routine","len":18,"c":true},{"a":30744,"n":"LAB_7818","k":"branch","len":1,"c":false},{"a":30749,"n":"AlterEgo_VM_vm_opcode_handler_781d","k":"routine","len":14,"c":true},{"a":30758,"n":"LAB_7826","k":"branch","len":1,"c":false},{"a":30763,"n":"AlterEgo_VM_vm_opcode_handler_782b","k":"routine","len":14,"c":true},{"a":30777,"n":"AlterEgo_VM_vm_opcode_handler_7839","k":"routine","len":15,"c":true},{"a":30792,"n":"AlterEgo_VM_vm_opcode_handler_7848","k":"routine","len":19,"c":true},{"a":30811,"n":"AlterEgo_VM_vm_opcode_handler_785b","k":"routine","len":9,"c":true},{"a":30817,"n":"LAB_7861","k":"branch","len":1,"c":false},{"a":30820,"n":"AlterEgo_VM_vm_opcode_handler_7864","k":"routine","len":11,"c":true},{"a":30826,"n":"LAB_786a","k":"branch","len":1,"c":false},{"a":30831,"n":"AlterEgo_VM_vm_opcode_handler_786f","k":"routine","len":7,"c":true},{"a":30838,"n":"AlterEgo_VM_vm_opcode_handler_7876","k":"routine","len":29,"c":true},{"a":30848,"n":"LAB_7880","k":"branch","len":1,"c":false},{"a":30864,"n":"LAB_7890","k":"branch","len":1,"c":false},{"a":30867,"n":"AlterEgo_VM_vm_opcode_handler_7893","k":"routine","len":1,"c":true},{"a":30868,"n":"AlterEgo_VM_vm_opcode_handler_7894","k":"routine","len":1,"c":true},{"a":30869,"n":"unreachable_vm_dispatch_tail_residue","k":"table","len":3,"c":true},{"a":30872,"n":"vm_fetch_signed_byte","k":"routine","len":15,"c":true},{"a":30879,"n":"LAB_789f","k":"branch","len":1,"c":false},{"a":30885,"n":"LAB_78a5","k":"branch","len":1,"c":false},{"a":30887,"n":"vm_fetch_signed_branch_target","k":"routine","len":25,"c":true},{"a":30895,"n":"LAB_78af","k":"branch","len":1,"c":false},{"a":30910,"n":"LAB_78be","k":"branch","len":1,"c":false},{"a":30912,"n":"vm_fetch_word_split_ax","k":"routine","len":22,"c":true},{"a":30932,"n":"LAB_78d4","k":"branch","len":1,"c":false},{"a":30934,"n":"vm_fetch_word_to_scratch","k":"routine","len":23,"c":true},{"a":30956,"n":"LAB_78ec","k":"branch","len":1,"c":false},{"a":30957,"n":"vm_fetch_frame_relative_address","k":"routine","len":28,"c":true},{"a":30984,"n":"LAB_7908","k":"branch","len":1,"c":false},{"a":30985,"n":"vm_push_ax","k":"routine","len":24,"c":true},{"a":30997,"n":"LAB_7915","k":"branch","len":1,"c":false},{"a":31009,"n":"AlterEgo_VM_vm_opcode_handler_7921","k":"routine","len":6,"c":true},{"a":31015,"n":"AlterEgo_VM_vm_opcode_handler_table","k":"table","len":256,"c":true},{"a":31271,"n":"vm_opcode_handler_high_bytes","k":"table","len":256,"c":true},{"a":31527,"n":"AlterEgo_VM_vm_opcode_handler_7b27","k":"routine","len":27,"c":true},{"a":31535,"n":"LAB_7b2f","k":"branch","len":1,"c":false},{"a":31554,"n":"primitive_zero_and_indirect_jump_operand","k":"routine","len":1,"c":true},{"a":31555,"n":"primitive_zero_target_high_operand_alias","k":"routine","len":1,"c":true},{"a":31556,"n":"native_primitive_targets_1_to_39","k":"table","len":78,"c":true},{"a":31634,"n":"AlterEgo_VM_native_primitive_7b92","k":"routine","len":47,"c":true},{"a":31644,"n":"LAB_7b9c","k":"branch","len":1,"c":false},{"a":31652,"n":"LAB_7ba4","k":"branch","len":1,"c":false},{"a":31661,"n":"LAB_7bad","k":"branch","len":1,"c":false},{"a":31681,"n":"AlterEgo_VM_native_primitive_7bc1","k":"routine","len":11,"c":true},{"a":31691,"n":"LAB_7bcb","k":"branch","len":1,"c":false},{"a":31692,"n":"divide_32bit_core","k":"routine","len":98,"c":true},{"a":31715,"n":"LAB_7be3","k":"branch","len":1,"c":false},{"a":31721,"n":"LAB_7be9","k":"branch","len":1,"c":false},{"a":31730,"n":"LAB_7bf2","k":"branch","len":1,"c":false},{"a":31732,"n":"LAB_7bf4","k":"branch","len":1,"c":false},{"a":31786,"n":"LAB_7c2a","k":"branch","len":1,"c":false},{"a":31790,"n":"AlterEgo_VM_native_primitive_7c2e","k":"routine","len":20,"c":true},{"a":31795,"n":"LAB_7c33","k":"branch","len":1,"c":false},{"a":31807,"n":"LAB_7c3f","k":"branch","len":1,"c":false},{"a":31810,"n":"AlterEgo_VM_native_primitive_7c42","k":"routine","len":13,"c":true},{"a":31813,"n":"LAB_7c45","k":"branch","len":1,"c":false},{"a":31823,"n":"AlterEgo_VM_native_primitive_7c4f","k":"routine","len":13,"c":true},{"a":31826,"n":"LAB_7c52","k":"branch","len":1,"c":false},{"a":31836,"n":"AlterEgo_VM_native_primitive_7c5c","k":"routine","len":28,"c":true},{"a":31841,"n":"LAB_7c61","k":"branch","len":1,"c":false},{"a":31853,"n":"LAB_7c6d","k":"branch","len":1,"c":false},{"a":31864,"n":"AlterEgo_VM_native_primitive_7c78","k":"routine","len":38,"c":true},{"a":31870,"n":"LAB_7c7e","k":"branch","len":1,"c":false},{"a":31871,"n":"LAB_7c7f","k":"branch","len":1,"c":false},{"a":31876,"n":"LAB_7c84","k":"branch","len":1,"c":false},{"a":31889,"n":"LAB_7c91","k":"branch","len":1,"c":false},{"a":31902,"n":"AlterEgo_VM_native_primitive_7c9e","k":"routine","len":12,"c":true},{"a":31904,"n":"LAB_7ca0","k":"branch","len":1,"c":false},{"a":31914,"n":"AlterEgo_VM_native_primitive_7caa","k":"routine","len":12,"c":true},{"a":31916,"n":"LAB_7cac","k":"branch","len":1,"c":false},{"a":31926,"n":"AlterEgo_VM_native_primitive_7cb6","k":"routine","len":12,"c":true},{"a":31928,"n":"LAB_7cb8","k":"branch","len":1,"c":false},{"a":31938,"n":"AlterEgo_VM_native_primitive_7cc2","k":"routine","len":12,"c":true},{"a":31940,"n":"LAB_7cc4","k":"branch","len":1,"c":false},{"a":31950,"n":"AlterEgo_VM_native_primitive_7cce","k":"routine","len":12,"c":true},{"a":31953,"n":"LAB_7cd1","k":"branch","len":1,"c":false},{"a":31962,"n":"AlterEgo_VM_native_primitive_7cda","k":"routine","len":11,"c":true},{"a":31964,"n":"LAB_7cdc","k":"branch","len":1,"c":false},{"a":31973,"n":"AlterEgo_VM_native_primitive_7ce5","k":"routine","len":11,"c":true},{"a":31975,"n":"LAB_7ce7","k":"branch","len":1,"c":false},{"a":31984,"n":"vm_primitive_set_primary_true_tail","k":"routine","len":6,"c":true},{"a":31990,"n":"AlterEgo_VM_native_primitive_7cf6","k":"routine","len":11,"c":true},{"a":31992,"n":"LAB_7cf8","k":"branch","len":1,"c":false},{"a":32001,"n":"vm_primitive_set_primary_false_tail","k":"routine","len":5,"c":true},{"a":32006,"n":"AlterEgo_VM_native_primitive_7d06","k":"routine","len":16,"c":true},{"a":32014,"n":"LAB_7d0e","k":"branch","len":1,"c":false},{"a":32019,"n":"LAB_7d13","k":"branch","len":1,"c":false},{"a":32022,"n":"AlterEgo_VM_native_primitive_7d16","k":"routine","len":14,"c":true},{"a":32028,"n":"LAB_7d1c","k":"branch","len":1,"c":false},{"a":32033,"n":"LAB_7d21","k":"branch","len":1,"c":false},{"a":32036,"n":"AlterEgo_VM_native_primitive_7d24","k":"routine","len":14,"c":true},{"a":32042,"n":"LAB_7d2a","k":"branch","len":1,"c":false},{"a":32047,"n":"LAB_7d2f","k":"branch","len":1,"c":false},{"a":32050,"n":"AlterEgo_VM_native_primitive_7d32","k":"routine","len":14,"c":true},{"a":32056,"n":"LAB_7d38","k":"branch","len":1,"c":false},{"a":32061,"n":"LAB_7d3d","k":"branch","len":1,"c":false},{"a":32064,"n":"compare_primary_minus_secondary_32bit","k":"routine","len":19,"c":true},{"a":32083,"n":"compare_secondary_minus_primary_32bit","k":"routine","len":19,"c":true},{"a":32102,"n":"AlterEgo_VM_native_primitive_7d66","k":"routine","len":6,"c":true},{"a":32108,"n":"AlterEgo_VM_native_primitive_7d6c","k":"routine","len":4,"c":true},{"a":32112,"n":"AlterEgo_VM_native_primitive_7d70","k":"routine","len":1,"c":true},{"a":32113,"n":"AlterEgo_VM_native_primitive_7d71","k":"routine","len":12,"c":true},{"a":32125,"n":"AlterEgo_VM_native_primitive_7d7d","k":"routine","len":10,"c":true},{"a":32135,"n":"vm_advance_script_ip_past_32bit_immediate_tail","k":"routine","len":11,"c":true},{"a":32145,"n":"LAB_7d91","k":"branch","len":1,"c":false},{"a":32146,"n":"AlterEgo_VM_native_primitive_7d92","k":"routine","len":5,"c":true},{"a":32151,"n":"AlterEgo_VM_native_primitive_7d97","k":"routine","len":2,"c":true},{"a":32153,"n":"add_signed_byte_to_primary_32bit_tail","k":"routine","len":21,"c":true},{"a":32161,"n":"LAB_7da1","k":"branch","len":1,"c":false},{"a":32174,"n":"AlterEgo_VM_native_primitive_7dae","k":"routine","len":11,"c":true},{"a":32176,"n":"LAB_7db0","k":"branch","len":1,"c":false},{"a":32185,"n":"AlterEgo_VM_native_primitive_7db9","k":"routine","len":14,"c":true},{"a":32187,"n":"LAB_7dbb","k":"branch","len":1,"c":false},{"a":32199,"n":"AlterEgo_VM_native_primitive_7dc7","k":"routine","len":3,"c":true},{"a":32202,"n":"load_primary_32bit_through_scratch_tail","k":"routine","len":11,"c":true},{"a":32204,"n":"LAB_7dcc","k":"branch","len":1,"c":false},{"a":32213,"n":"AlterEgo_VM_native_primitive_7dd5","k":"routine","len":3,"c":true},{"a":32216,"n":"load_secondary_32bit_through_scratch_tail","k":"routine","len":11,"c":true},{"a":32218,"n":"LAB_7dda","k":"branch","len":1,"c":false},{"a":32227,"n":"AlterEgo_VM_native_primitive_7de3","k":"routine","len":3,"c":true},{"a":32230,"n":"store_primary_32bit_through_scratch_tail","k":"routine","len":11,"c":true},{"a":32232,"n":"LAB_7de8","k":"branch","len":1,"c":false},{"a":32241,"n":"AlterEgo_VM_native_primitive_7df1","k":"routine","len":5,"c":true},{"a":32246,"n":"AlterEgo_VM_native_primitive_7df6","k":"routine","len":5,"c":true},{"a":32251,"n":"AlterEgo_VM_native_primitive_7dfb","k":"routine","len":5,"c":true},{"a":32256,"n":"AlterEgo_VM_native_primitive_7e00","k":"routine","len":5,"c":true},{"a":32261,"n":"AlterEgo_VM_native_primitive_7e05","k":"routine","len":3,"c":true},{"a":32264,"n":"push_32bit_through_scratch_tail","k":"routine","len":21,"c":true},{"a":32275,"n":"LAB_7e13","k":"branch","len":1,"c":false},{"a":32277,"n":"LAB_7e15","k":"branch","len":1,"c":false},{"a":32285,"n":"AlterEgo_VM_native_primitive_7e1d","k":"routine","len":9,"c":true},{"a":32294,"n":"AlterEgo_VM_native_primitive_7e26","k":"routine","len":22,"c":true},{"a":32296,"n":"LAB_7e28","k":"branch","len":1,"c":false},{"a":32315,"n":"LAB_7e3b","k":"branch","len":1,"c":false},{"a":32316,"n":"AlterEgo_VM_native_primitive_7e3c","k":"routine","len":11,"c":true},{"a":32327,"n":"resident_runtime_state_and_tables","k":"table","len":74,"c":true},{"a":32401,"n":"map_stream_channel_handle","k":"variable","len":1,"c":true},{"a":32402,"n":"a_7E92","k":"variable","len":1,"c":false},{"a":32403,"n":"expected_map_record_identifier","k":"variable","len":1,"c":true},{"a":32404,"n":"a_7E94","k":"variable","len":1,"c":false},{"a":32405,"n":"map_record_index","k":"variable","len":1,"c":true},{"a":32406,"n":"a_7E96","k":"variable","len":1,"c":false},{"a":32407,"n":"map_record_buffer_cursor","k":"variable","len":1,"c":true},{"a":32408,"n":"drive_record_request_command","k":"table","len":3,"c":true},{"a":32411,"n":"drive_record_execute_address","k":"variable","len":2,"c":true},{"a":32413,"n":"drive_requested_record_index","k":"variable","len":1,"c":true},{"a":32414,"n":"a_7E9E","k":"variable","len":1,"c":false},{"a":32576,"n":"persistent_state_words_64","k":"table","len":18,"c":true},{"a":32594,"n":"persistent_state_09_word","k":"variable","len":2,"c":true},{"a":32600,"n":"persistent_state_12_word","k":"variable","len":2,"c":true},{"a":32628,"n":"player_age_years","k":"variable","len":2,"c":true},{"a":32630,"n":"persistent_state_27_word","k":"variable","len":2,"c":true},{"a":32632,"n":"state_28_cash_high_base1000","k":"variable","len":2,"c":false},{"a":32642,"n":"persistent_state_33_word","k":"variable","len":2,"c":true},{"a":32644,"n":"state_34_debt_high_base1000","k":"variable","len":2,"c":false},{"a":32648,"n":"persistent_state_36_word","k":"variable","len":2,"c":true},{"a":32650,"n":"annual_salary_thousands_dollars_lo","k":"variable","len":1,"c":true},{"a":32651,"n":"persistent_state_37_high","k":"variable","len":1,"c":true},{"a":32652,"n":"state_38_child_age_years","k":"variable","len":2,"c":false},{"a":32664,"n":"edition_specific_state_word_44_lo","k":"variable","len":1,"c":true},{"a":32665,"n":"persistent_state_44_high","k":"table","len":9,"c":true},{"a":32674,"n":"questionnaire_strict_parenting_flag","k":"table","len":12,"c":true},{"a":32686,"n":"school_status_code_lo","k":"variable","len":1,"c":true},{"a":32687,"n":"persistent_state_55_high","k":"table","len":17,"c":true},{"a":32704,"n":"used_family_episode_mask","k":"table","len":4,"c":true},{"a":32708,"n":"fractional_year_remainder","k":"variable","len":2,"c":true},{"a":32715,"n":"vm_heap_next_free_pointer","k":"variable","len":1,"c":true},{"a":32716,"n":"vm_heap_next_free_high","k":"variable","len":1,"c":true},{"a":32717,"n":"startup_cleared_7fcd_open","k":"variable","len":1,"c":false},{"a":32718,"n":"a_7FCE","k":"variable","len":1,"c":false},{"a":32719,"n":"termination_cleanup_callback","k":"variable","len":2,"c":true},{"a":32721,"n":"file_spec_parse_number","k":"variable","len":2,"c":true},{"a":32723,"n":"file_slot_binding_records","k":"table","len":45,"c":true},{"a":32793,"n":"kernal_readst_last_status","k":"table","len":34,"c":false},{"a":32827,"n":"current_stage_age_low","k":"variable","len":2,"c":true},{"a":32829,"n":"current_stage_age_high","k":"variable","len":2,"c":true},{"a":32831,"n":"age_advance_scale_q10","k":"variable","len":2,"c":true},{"a":32833,"n":"reverse_stage_index","k":"variable","len":2,"c":true},{"a":32835,"n":"runtime_file_status_flags","k":"variable","len":1,"c":true},{"a":32836,"n":"a_8044","k":"variable","len":1,"c":false},{"a":32837,"n":"map_record_status_byte","k":"variable","len":1,"c":true},{"a":32838,"n":"map_record_identifier","k":"variable","len":1,"c":true},{"a":32839,"n":"map_record_leading_marker","k":"table","len":189,"c":true},{"a":33028,"n":"vm_resume_callback_ptr","k":"variable","len":2,"c":true},{"a":33030,"n":"resident_menu_and_personality_tables","k":"table","len":62,"c":true},{"a":33092,"n":"map_record_trailing_marker","k":"table","len":129,"c":true},{"a":33221,"n":"persisted_stage_life_choice_config","k":"table","len":16,"c":true},{"a":33237,"n":"remaining_episode_masks_8x_u32le","k":"table","len":34,"c":true},{"a":33271,"n":"life_map_grid_30x3_words","k":"table","len":180,"c":true},{"a":33451,"n":"acquisitions_bitmask","k":"variable","len":2,"c":true},{"a":33453,"n":"life_map_boundary_zero_and_columns","k":"table","len":14,"c":true},{"a":33467,"n":"current_stage_route_word_count","k":"variable","len":2,"c":true},{"a":33469,"n":"current_life_stage","k":"table","len":14,"c":true},{"a":33483,"n":"player_name_sixteen_bytes","k":"table","len":16,"c":true},{"a":33499,"n":"initial_cursor_cell_index","k":"table","len":26,"c":true},{"a":33525,"n":"current_stage_terminal_scene_id","k":"variable","len":2,"c":true},{"a":33527,"n":"stage_block_span_table_payload_offset","k":"table","len":367,"c":true},{"a":33894,"n":"callback_8466","k":"routine","len":3,"c":true},{"a":33897,"n":"personality_text_line_8469","k":"table","len":30,"c":true},{"a":33927,"n":"personality_text_line_8487","k":"table","len":26,"c":true},{"a":33953,"n":"personality_text_line_84a1","k":"variable","len":1,"c":false},{"a":33954,"n":"personality_text_line_84a2","k":"table","len":30,"c":true},{"a":33984,"n":"personality_text_line_84c0","k":"table","len":15,"c":true},{"a":33999,"n":"personality_text_line_84cf","k":"variable","len":1,"c":false},{"a":34000,"n":"personality_text_line_84d0","k":"table","len":31,"c":true},{"a":34012,"n":"j_84DC","k":"variable","len":1,"c":false},{"a":34031,"n":"personality_text_line_84ef","k":"table","len":29,"c":true},{"a":34060,"n":"personality_text_line_850c","k":"variable","len":1,"c":false},{"a":34061,"n":"personality_text_line_850d","k":"table","len":18,"c":true},{"a":34079,"n":"personality_text_line_851f","k":"variable","len":1,"c":false},{"a":34080,"n":"personality_text_line_8520","k":"variable","len":1,"c":false},{"a":34081,"n":"personality_text_line_8521","k":"table","len":26,"c":true},{"a":34107,"n":"personality_text_line_853b","k":"table","len":23,"c":true},{"a":34130,"n":"personality_text_line_8552","k":"variable","len":1,"c":false},{"a":34131,"n":"personality_text_line_8553","k":"table","len":31,"c":true},{"a":34162,"n":"personality_text_line_8572","k":"table","len":27,"c":true},{"a":34189,"n":"personality_text_line_858d","k":"variable","len":1,"c":false},{"a":34190,"n":"personality_text_line_858e","k":"table","len":33,"c":true},{"a":34223,"n":"personality_text_line_85af","k":"table","len":27,"c":true},{"a":34250,"n":"personality_text_line_85ca","k":"variable","len":1,"c":false},{"a":34251,"n":"personality_text_line_85cb","k":"table","len":29,"c":true},{"a":34280,"n":"personality_text_line_85e8","k":"table","len":21,"c":true},{"a":34301,"n":"personality_text_line_85fd","k":"variable","len":1,"c":false},{"a":34302,"n":"personality_text_line_85fe","k":"table","len":28,"c":true},{"a":34330,"n":"personality_text_line_861a","k":"table","len":11,"c":true},{"a":34341,"n":"personality_text_line_8625","k":"variable","len":1,"c":false},{"a":34342,"n":"personality_text_line_8626","k":"table","len":34,"c":true},{"a":34376,"n":"personality_text_line_8648","k":"table","len":33,"c":true},{"a":34409,"n":"personality_text_line_8669","k":"table","len":27,"c":true},{"a":34436,"n":"personality_text_line_8684","k":"table","len":26,"c":true},{"a":34462,"n":"personality_text_line_869e","k":"table","len":23,"c":true},{"a":34485,"n":"personality_text_line_86b5","k":"variable","len":1,"c":false},{"a":34486,"n":"personality_text_line_86b6","k":"table","len":31,"c":true},{"a":34517,"n":"personality_text_line_86d5","k":"table","len":31,"c":true},{"a":34548,"n":"personality_text_line_86f4","k":"table","len":24,"c":true},{"a":34572,"n":"personality_text_line_870c","k":"table","len":31,"c":true},{"a":34603,"n":"personality_text_line_872b","k":"table","len":29,"c":true},{"a":34632,"n":"personality_text_line_8748","k":"variable","len":1,"c":false},{"a":34633,"n":"personality_text_line_8749","k":"table","len":32,"c":true},{"a":34665,"n":"personality_text_line_8769","k":"table","len":32,"c":true},{"a":34697,"n":"personality_text_line_8789","k":"table","len":25,"c":true},{"a":34722,"n":"personality_text_line_87a2","k":"table","len":33,"c":true},{"a":34755,"n":"personality_text_line_87c3","k":"table","len":25,"c":true},{"a":34780,"n":"personality_text_line_87dc","k":"table","len":16,"c":true},{"a":34796,"n":"personality_text_line_87ec","k":"table","len":33,"c":true},{"a":34829,"n":"personality_text_line_880d","k":"table","len":20,"c":true},{"a":34849,"n":"personality_text_line_8821","k":"variable","len":1,"c":false},{"a":34850,"n":"personality_text_line_8822","k":"table","len":31,"c":true},{"a":34881,"n":"personality_text_line_8841","k":"table","len":29,"c":true},{"a":34910,"n":"personality_text_line_885e","k":"table","len":21,"c":true},{"a":34931,"n":"personality_text_line_8873","k":"table","len":32,"c":true},{"a":34963,"n":"personality_text_line_8893","k":"table","len":30,"c":true},{"a":34993,"n":"personality_text_line_88b1","k":"table","len":8,"c":true},{"a":35001,"n":"personality_text_line_88b9","k":"table","len":25,"c":true},{"a":35026,"n":"personality_text_line_88d2","k":"variable","len":1,"c":false},{"a":35027,"n":"personality_text_line_88d3","k":"variable","len":1,"c":false},{"a":35028,"n":"personality_text_line_88d4","k":"table","len":28,"c":true},{"a":35056,"n":"personality_text_line_88f0","k":"table","len":11,"c":true},{"a":35067,"n":"personality_text_line_88fb","k":"variable","len":1,"c":false},{"a":35068,"n":"personality_text_line_88fc","k":"table","len":33,"c":true},{"a":35101,"n":"personality_text_line_891d","k":"table","len":33,"c":true},{"a":35134,"n":"personality_text_line_893e","k":"table","len":15,"c":true},{"a":35149,"n":"personality_text_line_894d","k":"table","len":33,"c":true},{"a":35182,"n":"personality_text_line_896e","k":"table","len":17,"c":true},{"a":35199,"n":"personality_text_line_897f","k":"variable","len":1,"c":false},{"a":35200,"n":"personality_text_line_8980","k":"table","len":31,"c":true},{"a":35231,"n":"personality_text_line_899f","k":"table","len":22,"c":true},{"a":35253,"n":"personality_text_line_89b5","k":"variable","len":1,"c":false},{"a":35254,"n":"personality_text_line_89b6","k":"table","len":35,"c":true},{"a":35289,"n":"personality_text_line_89d9","k":"table","len":36,"c":true},{"a":35325,"n":"personality_text_line_89fd","k":"table","len":35,"c":true},{"a":35360,"n":"personality_text_line_8a20","k":"table","len":830,"c":true},{"a":36190,"n":"run_new_or_resume_personality_setup","k":"routine","len":3,"c":true},{"a":36193,"n":"vm_frame_adjust_8d5e","k":"variable","len":2,"c":true},{"a":36195,"n":"vm_bytecode_8d5e","k":"table","len":174,"c":true},{"a":36369,"n":"player_name_prompt_text","k":"table","len":24,"c":true},{"a":36393,"n":"ScorePersonalityQuestionnaire","k":"routine","len":3,"c":true},{"a":36396,"n":"vm_frame_adjust_8e29","k":"variable","len":2,"c":true},{"a":36398,"n":"vm_bytecode_8e29","k":"table","len":397,"c":true},{"a":36795,"n":"run_personality_questionnaire_pages","k":"routine","len":3,"c":true},{"a":36798,"n":"vm_frame_adjust_8fbb","k":"variable","len":2,"c":true},{"a":36800,"n":"vm_bytecode_8fbb","k":"table","len":184,"c":true},{"a":36984,"n":"present_and_edit_questionnaire_page","k":"routine","len":3,"c":true},{"a":36987,"n":"vm_frame_adjust_9078","k":"variable","len":2,"c":true},{"a":36989,"n":"vm_bytecode_9078","k":"table","len":629,"c":true},{"a":37618,"n":"questionnaire_review_begin_text_pool","k":"table","len":49,"c":true},{"a":37667,"n":"randomize_questionnaire_answers","k":"routine","len":3,"c":true},{"a":37670,"n":"vm_frame_adjust_9323","k":"variable","len":2,"c":true},{"a":37672,"n":"vm_bytecode_9323","k":"table","len":32,"c":true},{"a":37704,"n":"restore_native_frame_and_enter_vm_impl","k":"routine","len":35,"c":true},{"a":37722,"n":"LAB_935a","k":"branch","len":1,"c":false},{"a":37739,"n":"restore_saved_native_frame_and_return_vm_value","k":"routine","len":44,"c":true},{"a":37764,"n":"LAB_9384","k":"branch","len":1,"c":false},{"a":37778,"n":"LAB_9392","k":"branch","len":1,"c":false},{"a":37783,"n":"question_line_pointer_alignment_padding","k":"variable","len":1,"c":true},{"a":37784,"n":"personality_question_line_ptrs_25x3","k":"table","len":146,"c":true},{"a":37934,"n":"phase_of_life_menu_descriptor","k":"table","len":40,"c":true},{"a":37974,"n":"title_new_or_resume_menu_descriptor","k":"table","len":60,"c":true},{"a":38034,"n":"personality_mode_menu_descriptor","k":"table","len":28,"c":true},{"a":38062,"n":"questionnaire_true_score_records","k":"table","len":625,"c":true},{"a":38687,"n":"questionnaire_false_score_records","k":"table","len":625,"c":true},{"a":39312,"n":"saved_vm_frame_ptr","k":"variable","len":1,"c":true},{"a":39313,"n":"saved_vm_frame_pointer_high","k":"variable","len":1,"c":true},{"a":39314,"n":"retained_prior_phase_disk_error_vm_fragment","k":"table","len":42,"c":true},{"a":39356,"n":"fatal_disk_error_text_pool","k":"table","len":88,"c":true},{"a":39444,"n":"load_local_map_chunk","k":"routine","len":3,"c":true},{"a":39447,"n":"vm_frame_adjust_9a14","k":"variable","len":2,"c":true},{"a":39449,"n":"vm_bytecode_9a14","k":"table","len":203,"c":true},{"a":39652,"n":"chunk_loader_error_text_pool","k":"table","len":52,"c":true},{"a":39704,"n":"execute_scene_chunk_chain","k":"routine","len":3,"c":true},{"a":39707,"n":"vm_frame_adjust_9b18","k":"variable","len":2,"c":true},{"a":39709,"n":"vm_bytecode_9b18","k":"table","len":120,"c":true},{"a":39829,"n":"unreachable_vm_return_padding_9b95","k":"variable","len":1,"c":true},{"a":39830,"n":"evaluate_scene_conditions","k":"routine","len":3,"c":true},{"a":39833,"n":"vm_frame_adjust_9b96","k":"variable","len":2,"c":true},{"a":39835,"n":"vm_bytecode_9b96","k":"table","len":94,"c":true},{"a":39929,"n":"interpret_interaction_descriptor","k":"routine","len":3,"c":true},{"a":39932,"n":"vm_frame_adjust_9bf9","k":"variable","len":2,"c":true},{"a":39934,"n":"vm_bytecode_9bf9","k":"table","len":1024,"c":true},{"a":40958,"n":"vm_body_9bf9_9ffe","k":"variable","len":2,"c":true},{"a":40962,"n":"descriptor_interpreter_choice_cursor_continuation","k":"table","len":86,"c":true},{"a":41048,"n":"range_error_text_pool","k":"table","len":21,"c":true},{"a":41069,"n":"collect_scene_choice","k":"routine","len":3,"c":true},{"a":41072,"n":"vm_frame_adjust_a06d","k":"variable","len":2,"c":true},{"a":41074,"n":"vm_bytecode_a06d","k":"table","len":450,"c":true},{"a":41524,"n":"unreachable_vm_return_padding_a234","k":"variable","len":1,"c":true},{"a":41525,"n":"begin_scene_text_output","k":"routine","len":3,"c":true},{"a":41528,"n":"vm_frame_adjust_a235","k":"variable","len":2,"c":true},{"a":41530,"n":"vm_bytecode_a235","k":"table","len":41,"c":true},{"a":41571,"n":"continue_review_menu_text","k":"table","len":22,"c":true},{"a":41593,"n":"render_scene_text_with_substitutions","k":"routine","len":3,"c":true},{"a":41596,"n":"vm_frame_adjust_a279","k":"variable","len":2,"c":true},{"a":41598,"n":"vm_bytecode_a279","k":"table","len":321,"c":true},{"a":41919,"n":"overwritten_prior_phase_bootstrap_target_bytes","k":"table","len":17,"c":true},{"a":41936,"n":"execute_invalid_choice_descriptor","k":"routine","len":3,"c":true},{"a":41939,"n":"vm_frame_adjust_a3d0","k":"variable","len":2,"c":true},{"a":41941,"n":"vm_bytecode_a3d0","k":"table","len":10,"c":true},{"a":41951,"n":"invalid_choice_response_descriptor","k":"table","len":28,"c":true},{"a":41979,"n":"invalid_choice_response_text_pool","k":"table","len":92,"c":true},{"a":42071,"n":"enter_inline_native_a45d_save2","k":"routine","len":3,"c":true},{"a":42074,"n":"runtime_descriptor_a457_saved_zp","k":"variable","len":1,"c":true},{"a":42075,"n":"native_frame_adjust_a457","k":"variable","len":2,"c":true},{"a":42077,"n":"initialize_grouped_lzw_decoder","k":"routine","len":40,"c":true},{"a":42117,"n":"inline_call_a482_target_ptr","k":"variable","len":2,"c":true},{"a":42119,"n":"native_resume_a487","k":"routine","len":3,"c":true},{"a":42122,"n":"inline_call_a482_arg_bytes","k":"variable","len":1,"c":true},{"a":42123,"n":"native_resume_a48b","k":"routine","len":16,"c":true},{"a":42139,"n":"inline_call_a498_target_ptr","k":"variable","len":2,"c":true},{"a":42141,"n":"native_resume_a49d","k":"routine","len":3,"c":true},{"a":42144,"n":"inline_call_a498_arg_bytes","k":"variable","len":1,"c":true},{"a":42145,"n":"native_resume_a4a1","k":"routine","len":58,"c":true},{"a":42154,"n":"LAB_a4aa","k":"branch","len":1,"c":false},{"a":42162,"n":"LAB_a4b2","k":"branch","len":1,"c":false},{"a":42179,"n":"LAB_a4c3","k":"branch","len":1,"c":false},{"a":42202,"n":"LAB_a4da","k":"branch","len":1,"c":false},{"a":42203,"n":"enter_inline_native_a4e1_adjust_0","k":"routine","len":3,"c":true},{"a":42206,"n":"runtime_descriptor_a4db_saved_zp","k":"variable","len":1,"c":true},{"a":42207,"n":"native_frame_adjust_a4db","k":"variable","len":2,"c":true},{"a":42209,"n":"reset_grouped_lzw_block_cursor","k":"routine","len":16,"c":true},{"a":42225,"n":"enter_inline_native_a4f7_adjust_0","k":"routine","len":3,"c":true},{"a":42228,"n":"runtime_descriptor_a4f1_saved_zp","k":"variable","len":1,"c":true},{"a":42229,"n":"native_frame_adjust_a4f1","k":"variable","len":2,"c":true},{"a":42231,"n":"decompress_grouped_lzw_slice","k":"routine","len":64,"c":true},{"a":42243,"n":"LAB_a503","k":"branch","len":1,"c":false},{"a":42254,"n":"LAB_a50e","k":"branch","len":1,"c":false},{"a":42259,"n":"LAB_a513","k":"branch","len":1,"c":false},{"a":42267,"n":"LAB_a51b","k":"branch","len":1,"c":false},{"a":42270,"n":"LAB_a51e","k":"branch","len":1,"c":false},{"a":42295,"n":"inline_call_a534_target_ptr","k":"variable","len":2,"c":true},{"a":42297,"n":"native_resume_a539","k":"routine","len":3,"c":true},{"a":42300,"n":"inline_call_a534_arg_bytes","k":"variable","len":1,"c":true},{"a":42301,"n":"native_resume_a53d","k":"routine","len":158,"c":true},{"a":42333,"n":"LAB_a55d","k":"branch","len":1,"c":false},{"a":42338,"n":"LAB_a562","k":"branch","len":1,"c":false},{"a":42359,"n":"LAB_a577","k":"branch","len":1,"c":false},{"a":42374,"n":"LAB_a586","k":"branch","len":1,"c":false},{"a":42392,"n":"LAB_a598","k":"branch","len":1,"c":false},{"a":42407,"n":"LAB_a5a7","k":"branch","len":1,"c":false},{"a":42447,"n":"LAB_a5cf","k":"branch","len":1,"c":false},{"a":42459,"n":"inline_call_a5d8_target_ptr","k":"variable","len":2,"c":true},{"a":42461,"n":"native_resume_a5dd","k":"routine","len":3,"c":true},{"a":42464,"n":"inline_call_a5d8_arg_bytes","k":"variable","len":1,"c":true},{"a":42465,"n":"native_resume_a5e1","k":"routine","len":617,"c":true},{"a":42485,"n":"LAB_a5f5","k":"branch","len":1,"c":false},{"a":42490,"n":"LAB_a5fa","k":"branch","len":1,"c":false},{"a":42511,"n":"LAB_a60f","k":"branch","len":1,"c":false},{"a":42541,"n":"LAB_a62d","k":"branch","len":1,"c":false},{"a":42543,"n":"LAB_a62f","k":"branch","len":1,"c":false},{"a":42546,"n":"LAB_a632","k":"branch","len":1,"c":false},{"a":42595,"n":"LAB_a663","k":"branch","len":1,"c":false},{"a":42605,"n":"LAB_a66d","k":"branch","len":1,"c":false},{"a":42699,"n":"LAB_a6cb","k":"branch","len":1,"c":false},{"a":42760,"n":"LAB_a708","k":"branch","len":1,"c":false},{"a":42775,"n":"LAB_a717","k":"branch","len":1,"c":false},{"a":42792,"n":"LAB_a728","k":"branch","len":1,"c":false},{"a":42815,"n":"LAB_a73f","k":"branch","len":1,"c":false},{"a":42818,"n":"LAB_a742","k":"branch","len":1,"c":false},{"a":42833,"n":"LAB_a751","k":"branch","len":1,"c":false},{"a":42850,"n":"LAB_a762","k":"branch","len":1,"c":false},{"a":42927,"n":"LAB_a7af","k":"branch","len":1,"c":false},{"a":42956,"n":"LAB_a7cc","k":"branch","len":1,"c":false},{"a":42961,"n":"LAB_a7d1","k":"branch","len":1,"c":false},{"a":42990,"n":"LAB_a7ee","k":"branch","len":1,"c":false},{"a":43067,"n":"LAB_a83b","k":"branch","len":1,"c":false},{"a":43082,"n":"enter_inline_native_a850_save2","k":"routine","len":3,"c":true},{"a":43085,"n":"runtime_descriptor_a84a_saved_zp","k":"variable","len":1,"c":true},{"a":43086,"n":"native_frame_adjust_a84a","k":"variable","len":2,"c":true},{"a":43088,"n":"FetchGroupedLzwCodeBody","k":"routine","len":155,"c":true},{"a":43106,"n":"LAB_a862","k":"branch","len":1,"c":false},{"a":43108,"n":"LAB_a864","k":"branch","len":1,"c":false},{"a":43111,"n":"LAB_a867","k":"branch","len":1,"c":false},{"a":43129,"n":"LAB_a879","k":"branch","len":1,"c":false},{"a":43131,"n":"LAB_a87b","k":"branch","len":1,"c":false},{"a":43134,"n":"LAB_a87e","k":"branch","len":1,"c":false},{"a":43152,"n":"LAB_a890","k":"branch","len":1,"c":false},{"a":43154,"n":"LAB_a892","k":"branch","len":1,"c":false},{"a":43157,"n":"LAB_a895","k":"branch","len":1,"c":false},{"a":43165,"n":"LAB_a89d","k":"branch","len":1,"c":false},{"a":43177,"n":"LAB_a8a9","k":"branch","len":1,"c":false},{"a":43182,"n":"LAB_a8ae","k":"branch","len":1,"c":false},{"a":43193,"n":"LAB_a8b9","k":"branch","len":1,"c":false},{"a":43226,"n":"LAB_a8da","k":"branch","len":1,"c":false},{"a":43243,"n":"inline_call_a8e8_target_ptr","k":"variable","len":2,"c":true},{"a":43245,"n":"native_resume_a8ed","k":"routine","len":3,"c":true},{"a":43248,"n":"inline_call_a8e8_arg_bytes","k":"variable","len":1,"c":true},{"a":43249,"n":"native_resume_a8f1","k":"routine","len":125,"c":true},{"a":43270,"n":"LAB_a906","k":"branch","len":1,"c":false},{"a":43273,"n":"LAB_a909","k":"branch","len":1,"c":false},{"a":43280,"n":"LAB_a910","k":"branch","len":1,"c":false},{"a":43333,"n":"LAB_a945","k":"branch","len":1,"c":false},{"a":43374,"n":"enter_inline_native_a974_save10","k":"routine","len":3,"c":true},{"a":43377,"n":"runtime_descriptor_a96e_saved_zp","k":"variable","len":1,"c":true},{"a":43378,"n":"native_frame_adjust_a96e","k":"variable","len":2,"c":true},{"a":43380,"n":"ReadGroupedLzwCodeBody","k":"routine","len":284,"c":true},{"a":43452,"n":"LAB_a9bc","k":"branch","len":1,"c":false},{"a":43477,"n":"LAB_a9d5","k":"branch","len":1,"c":false},{"a":43539,"n":"LAB_aa13","k":"branch","len":1,"c":false},{"a":43612,"n":"LAB_aa5c","k":"branch","len":1,"c":false},{"a":43615,"n":"LAB_aa5f","k":"branch","len":1,"c":false},{"a":43664,"n":"show_lifetime_status_screen","k":"routine","len":3,"c":true},{"a":43667,"n":"vm_frame_adjust_aa90","k":"variable","len":2,"c":true},{"a":43669,"n":"vm_bytecode_aa90","k":"table","len":233,"c":true},{"a":43902,"n":"life_time_status_text_pool","k":"table","len":43,"c":true},{"a":43945,"n":"show_profile_and_acquisitions_menu","k":"routine","len":3,"c":true},{"a":43948,"n":"vm_frame_adjust_aba9","k":"variable","len":2,"c":true},{"a":43950,"n":"vm_bytecode_aba9","k":"table","len":134,"c":true},{"a":44084,"n":"profile_traits_and_acquisitions_text_pool","k":"table","len":376,"c":true},{"a":44460,"n":"render_complete_life_status","k":"routine","len":3,"c":true},{"a":44463,"n":"vm_frame_adjust_adac","k":"variable","len":2,"c":true},{"a":44465,"n":"vm_bytecode_adac","k":"table","len":747,"c":true},{"a":45212,"n":"status_episode_selector_native_target","k":"variable","len":2,"c":true},{"a":45214,"n":"vm_body_adac_b09e","k":"table","len":10,"c":true},{"a":45224,"n":"status_age_advance_native_target","k":"variable","len":2,"c":true},{"a":45226,"n":"vm_body_adac_b0aa","k":"table","len":52,"c":true},{"a":45278,"n":"life_sphere_status_text_pool","k":"table","len":269,"c":true},{"a":45547,"n":"draw_trait_score_bar","k":"routine","len":3,"c":true},{"a":45550,"n":"vm_frame_adjust_b1eb","k":"variable","len":2,"c":true},{"a":45552,"n":"vm_bytecode_b1eb","k":"table","len":39,"c":true},{"a":45591,"n":"prompt_status_screen_action","k":"routine","len":3,"c":true},{"a":45594,"n":"vm_frame_adjust_b217","k":"variable","len":2,"c":true},{"a":45596,"n":"vm_bytecode_b217","k":"table","len":122,"c":true},{"a":45718,"n":"append_unsigned_decimal_0_999","k":"routine","len":3,"c":true},{"a":45721,"n":"vm_frame_adjust_b296","k":"variable","len":2,"c":true},{"a":45723,"n":"vm_bytecode_b296","k":"table","len":70,"c":true},{"a":45793,"n":"render_status_numeric_field","k":"routine","len":3,"c":true},{"a":45796,"n":"vm_frame_adjust_b2e1","k":"variable","len":2,"c":true},{"a":45798,"n":"vm_bytecode_b2e1","k":"table","len":172,"c":true},{"a":45970,"n":"gameplay_object_entry_setjmp","k":"routine","len":35,"c":true},{"a":45988,"n":"LAB_b3a4","k":"branch","len":1,"c":false},{"a":46005,"n":"gameplay_object_longjmp_exit","k":"routine","len":44,"c":true},{"a":46030,"n":"LAB_b3ce","k":"branch","len":1,"c":false},{"a":46044,"n":"LAB_b3dc","k":"branch","len":1,"c":false},{"a":46049,"n":"retained_unreferenced_compiler_arithmetic_library","k":"table","len":39,"c":true},{"a":46088,"n":"arithmetic_shift_i32_buffer_right_by_count_buffer","k":"routine","len":50,"c":true},{"a":46099,"n":"LAB_b413","k":"branch","len":1,"c":false},{"a":46100,"n":"LAB_b414","k":"branch","len":1,"c":false},{"a":46105,"n":"LAB_b419","k":"branch","len":1,"c":false},{"a":46123,"n":"LAB_b42b","k":"branch","len":1,"c":false},{"a":46138,"n":"multiply_u16_buffer_by_ax_in_place","k":"routine","len":49,"c":true},{"a":46152,"n":"LAB_b448","k":"branch","len":1,"c":false},{"a":46170,"n":"LAB_b45a","k":"branch","len":1,"c":false},{"a":46187,"n":"DivideSigned16InPlace","k":"routine","len":22,"c":true},{"a":46205,"n":"b_B47D","k":"branch","len":1,"c":false},{"a":46209,"n":"DivideUnsigned16InPlace","k":"routine","len":7,"c":true},{"a":46216,"n":"RemainderSigned16InPlace","k":"routine","len":22,"c":true},{"a":46238,"n":"RemainderUnsigned16InPlace","k":"routine","len":15,"c":true},{"a":46241,"n":"b_B4A1","k":"branch","len":1,"c":false},{"a":46253,"n":"DivideUnsigned16Setup","k":"routine","len":8,"c":true},{"a":46261,"n":"DivideUnsigned16Rounds","k":"routine","len":38,"c":true},{"a":46267,"n":"b_B4BB","k":"branch","len":1,"c":false},{"a":46295,"n":"b_B4D7","k":"branch","len":1,"c":false},{"a":46299,"n":"DivideSigned16MagnitudeSetup","k":"routine","len":49,"c":true},{"a":46330,"n":"b_B4FA","k":"branch","len":1,"c":false},{"a":46345,"n":"b_B509","k":"branch","len":1,"c":false},{"a":46348,"n":"shift_u16_buffer_left_by_ax","k":"routine","len":29,"c":true},{"a":46358,"n":"LAB_b516","k":"branch","len":1,"c":false},{"a":46368,"n":"LAB_b520","k":"branch","len":1,"c":false},{"a":46377,"n":"shift_i16_buffer_right_by_ax","k":"routine","len":34,"c":true},{"a":46391,"n":"LAB_b537","k":"branch","len":1,"c":false},{"a":46401,"n":"LAB_b541","k":"branch","len":1,"c":false},{"a":46411,"n":"shift_u16_buffer_right_by_ax","k":"routine","len":6,"c":true},{"a":46417,"n":"shift_u16_buffer_right_loop_entry","k":"routine","len":23,"c":true},{"a":46421,"n":"LAB_b555","k":"branch","len":1,"c":false},{"a":46431,"n":"LAB_b55f","k":"branch","len":1,"c":false},{"a":46440,"n":"packed_text_runtime_work","k":"variable","len":1,"c":true},{"a":46441,"n":"lzw_group_code_width","k":"variable","len":1,"c":true},{"a":46442,"n":"lzw_code_width_high","k":"variable","len":1,"c":true},{"a":46443,"n":"lzw_group_growth_threshold","k":"variable","len":1,"c":true},{"a":46444,"n":"lzw_growth_threshold_high","k":"variable","len":1,"c":true},{"a":46445,"n":"lzw_packed_group_buffer","k":"table","len":10,"c":true},{"a":46455,"n":"lzw_group_bit_position","k":"variable","len":1,"c":true},{"a":46456,"n":"lzw_bit_position_high","k":"variable","len":1,"c":true},{"a":46457,"n":"lzw_group_bit_limit","k":"variable","len":1,"c":true},{"a":46458,"n":"lzw_bit_limit_high","k":"variable","len":1,"c":true},{"a":46459,"n":"lzw_dictionary_literal_prefixes","k":"table","len":512,"c":true},{"a":46971,"n":"lzw_dictionary_compound_prefixes","k":"table","len":1024,"c":true},{"a":47995,"n":"lzw_dictionary_prefixes_codes_768_1023","k":"table","len":512,"c":true},{"a":48507,"n":"lzw_dictionary_literal_suffixes","k":"table","len":256,"c":true},{"a":48763,"n":"lzw_dictionary_compound_suffixes_part1","k":"table","len":389,"c":true},{"a":49152,"n":"lzw_dictionary_compound_suffixes_part2","k":"table","len":378,"c":true},{"a":49530,"n":"lzw_dictionary_last_suffix","k":"variable","len":1,"c":true},{"a":49531,"n":"lzw_phrase_output_stack","k":"table","len":200,"c":true},{"a":49731,"n":"lzw_next_dictionary_code","k":"variable","len":1,"c":true},{"a":49732,"n":"lzw_next_dictionary_index_high","k":"variable","len":1,"c":true},{"a":49733,"n":"lzw_phrase_resume_flag","k":"variable","len":1,"c":true},{"a":49734,"n":"lzw_phrase_stack_index","k":"variable","len":1,"c":true},{"a":49735,"n":"lzw_phrase_stack_index_high","k":"variable","len":1,"c":true},{"a":49736,"n":"lzw_prefix_walk_code","k":"variable","len":1,"c":true},{"a":49737,"n":"lzw_prefix_walk_code_high","k":"variable","len":1,"c":true},{"a":49738,"n":"lzw_previous_phrase_code","k":"variable","len":1,"c":true},{"a":49739,"n":"lzw_previous_phrase_code_high","k":"variable","len":1,"c":true},{"a":49740,"n":"lzw_current_phrase_code","k":"variable","len":1,"c":true},{"a":49741,"n":"lzw_current_phrase_code_high","k":"variable","len":1,"c":true},{"a":49742,"n":"lzw_phrase_first_byte_word","k":"variable","len":1,"c":true},{"a":49743,"n":"lzw_phrase_first_byte_word_high","k":"variable","len":1,"c":true},{"a":49744,"n":"lzw_low_bit_masks","k":"table","len":26,"c":true},{"a":49770,"n":"life_status_label_pointer_directory","k":"table","len":48,"c":true},{"a":49818,"n":"gameplay_object_recovery_frame_ptr","k":"variable","len":1,"c":true},{"a":49819,"n":"a_C29B","k":"variable","len":1,"c":false},{"a":49826,"n":"resident_scene26_descriptor31","k":"table","len":14,"c":true},{"a":49840,"n":"resident_descriptor_text_boundary_count","k":"variable","len":2,"c":true},{"a":49842,"n":"resident_descriptor_text_boundaries","k":"table","len":4,"c":true},{"a":49846,"n":"resident_descriptor_narrative_text","k":"table","len":373,"c":true},{"a":50219,"n":"resident_descriptor_zero_trailer","k":"variable","len":1,"c":true},{"a":50220,"n":"post_descriptor_retained_bytes_open","k":"table","len":1024,"c":false},{"a":51883,"n":"cached_scene_packed_payload_offset","k":"table","len":4,"c":true},{"a":51887,"n":"cached_descriptor_first_index","k":"variable","len":2,"c":true},{"a":51889,"n":"between_scene_cursor_fields_open","k":"table","len":32,"c":false},{"a":51921,"n":"cached_descriptor_end_index","k":"variable","len":2,"c":true},{"a":51923,"n":"scene_selection_scratch_open","k":"table","len":8,"c":false},{"a":51931,"n":"active_map_stream_id","k":"variable","len":2,"c":true},{"a":51933,"n":"current_scene_descriptor_pointer","k":"variable","len":2,"c":true},{"a":51935,"n":"scene_uncompressed_length","k":"variable","len":2,"c":true},{"a":51937,"n":"scene_compressed_length","k":"variable","len":2,"c":true},{"a":51939,"n":"current_scene_boundary_count","k":"variable","len":2,"c":true},{"a":51941,"n":"current_scene_descriptor_boundaries","k":"table","len":80,"c":true},{"a":52021,"n":"retained_scene_boundary_tail_open","k":"table","len":304,"c":false},{"a":52325,"n":"map_scene_span_cursor","k":"table","len":4,"c":true},{"a":52329,"n":"high_ram_after_span_cursor_open","k":"table","len":794,"c":false},{"a":53123,"n":"live_vm_stack_mutation_boundary","k":"table","len":82,"c":true},{"a":53205,"n":"saved_frame_cfd5","k":"table","len":8,"c":true},{"a":53213,"n":"ancestor_vm_frame_chain_tail","k":"table","len":35,"c":true},{"a":53248,"n":"under_io_graphics_first_half","k":"table","len":1024,"c":true},{"a":54272,"n":"under_io_graphics_second_half","k":"table","len":1024,"c":true},{"a":55296,"n":"stored_vm_copy_abeb_b3ea","k":"table","len":449,"c":true},{"a":55745,"n":"stored_vm_copy_adac_first","k":"table","len":1024,"c":true},{"a":56769,"n":"stored_vm_copy_adac_tail","k":"table","len":575,"c":true},{"a":57344,"n":"resident_text_resident_text_category_directory","k":"table","len":28,"c":true},{"a":57372,"n":"resident_text_career_options","k":"table","len":42,"c":true},{"a":57414,"n":"resident_text_career_options_terminator","k":"variable","len":2,"c":true},{"a":57416,"n":"resident_text_female_name_list_a","k":"table","len":64,"c":true},{"a":57480,"n":"resident_text_female_name_list_a_terminator","k":"variable","len":2,"c":true},{"a":57482,"n":"resident_text_female_name_list_b","k":"table","len":64,"c":true},{"a":57546,"n":"resident_text_female_name_list_b_terminator","k":"variable","len":2,"c":true},{"a":57548,"n":"resident_text_mixed_name_list","k":"table","len":42,"c":true},{"a":57590,"n":"resident_text_mixed_name_list_terminator","k":"variable","len":2,"c":true},{"a":57592,"n":"resident_text_meeting_locations","k":"table","len":18,"c":true},{"a":57610,"n":"resident_text_meeting_locations_terminator","k":"variable","len":2,"c":true},{"a":57612,"n":"resident_text_paternal_guardian_names","k":"table","len":4,"c":true},{"a":57616,"n":"resident_text_paternal_guardian_names_terminator","k":"variable","len":2,"c":true},{"a":57618,"n":"resident_text_maternal_guardian_names","k":"table","len":4,"c":true},{"a":57622,"n":"resident_text_maternal_guardian_names_terminator","k":"variable","len":2,"c":true},{"a":57624,"n":"resident_text_guardian_terms","k":"table","len":4,"c":true},{"a":57628,"n":"resident_text_guardian_terms_terminator","k":"variable","len":2,"c":true},{"a":57630,"n":"resident_text_intensity_scale_0","k":"table","len":6,"c":true},{"a":57636,"n":"resident_text_intensity_scale_0_terminator","k":"variable","len":2,"c":true},{"a":57638,"n":"resident_text_intensity_scale_1","k":"table","len":6,"c":true},{"a":57644,"n":"resident_text_intensity_scale_1_terminator","k":"variable","len":2,"c":true},{"a":57646,"n":"resident_text_intensity_scale_2","k":"table","len":6,"c":true},{"a":57652,"n":"resident_text_intensity_scale_2_terminator","k":"variable","len":2,"c":true},{"a":57654,"n":"resident_text_intensity_scale_3","k":"table","len":6,"c":true},{"a":57660,"n":"resident_text_intensity_scale_3_terminator","k":"variable","len":2,"c":true},{"a":57662,"n":"resident_text_intensity_scale_4","k":"table","len":6,"c":true},{"a":57668,"n":"resident_text_intensity_scale_4_terminator","k":"variable","len":2,"c":true},{"a":57670,"n":"resident_text_intensity_scale_5","k":"table","len":6,"c":true},{"a":57676,"n":"resident_text_intensity_scale_5_terminator","k":"variable","len":2,"c":true},{"a":57678,"n":"text_career_00_none","k":"table","len":5,"c":true},{"a":57683,"n":"text_career_01_cook","k":"table","len":5,"c":true},{"a":57688,"n":"text_career_02_clerk","k":"table","len":6,"c":true},{"a":57694,"n":"text_career_03_ticket_taker","k":"table","len":13,"c":true},{"a":57707,"n":"text_career_04_trucker_s_helper","k":"table","len":17,"c":true},{"a":57724,"n":"text_career_05_law_assistant","k":"table","len":14,"c":true},{"a":57738,"n":"text_career_06_businessman","k":"table","len":12,"c":true},{"a":57750,"n":"text_career_07_salesman","k":"table","len":9,"c":true},{"a":57759,"n":"text_career_08_creative_arts","k":"table","len":14,"c":true},{"a":57773,"n":"text_career_09_health_services_i","k":"table","len":18,"c":true},{"a":57791,"n":"text_career_10_health_services_ii","k":"table","len":19,"c":true},{"a":57810,"n":"text_career_11_entrepreneur","k":"table","len":13,"c":true},{"a":57823,"n":"text_career_12_teacher","k":"table","len":8,"c":true},{"a":57831,"n":"text_career_13_researcher","k":"table","len":11,"c":true},{"a":57842,"n":"text_career_14_lawyer","k":"table","len":7,"c":true},{"a":57849,"n":"text_career_15_technical","k":"table","len":10,"c":true},{"a":57859,"n":"text_career_16_labor_i","k":"table","len":8,"c":true},{"a":57867,"n":"text_career_17_labor_ii","k":"table","len":9,"c":true},{"a":57876,"n":"text_career_18_delivery","k":"table","len":9,"c":true},{"a":57885,"n":"text_career_19_laborer","k":"table","len":8,"c":true},{"a":57893,"n":"text_career_20_apprentice","k":"table","len":11,"c":true},{"a":57904,"n":"text_female_name_a_00_none","k":"table","len":5,"c":true},{"a":57909,"n":"text_female_name_a_01_louise","k":"table","len":7,"c":true},{"a":57916,"n":"text_female_name_a_02_marion","k":"table","len":7,"c":true},{"a":57923,"n":"text_female_name_a_03_ruth","k":"table","len":5,"c":true},{"a":57928,"n":"text_female_name_a_04_betsy","k":"table","len":6,"c":true},{"a":57934,"n":"text_female_name_a_05_anne","k":"table","len":5,"c":true},{"a":57939,"n":"text_female_name_a_06_marsha","k":"table","len":7,"c":true},{"a":57946,"n":"text_female_name_a_07_henrietta","k":"table","len":10,"c":true},{"a":57956,"n":"text_female_name_a_08_cathy","k":"table","len":6,"c":true},{"a":57962,"n":"text_female_name_a_09_bridgette","k":"table","len":10,"c":true},{"a":57972,"n":"text_female_name_a_10_carol","k":"table","len":6,"c":true},{"a":57978,"n":"text_female_name_a_11_gigi","k":"table","len":5,"c":true},{"a":57983,"n":"text_female_name_a_12_antoinette","k":"table","len":11,"c":true},{"a":57994,"n":"text_female_name_a_13_gayle","k":"table","len":6,"c":true},{"a":58000,"n":"text_female_name_a_14_kimberly","k":"table","len":9,"c":true},{"a":58009,"n":"text_female_name_a_15_toni","k":"table","len":5,"c":true},{"a":58014,"n":"text_female_name_a_16_martina","k":"table","len":8,"c":true},{"a":58022,"n":"text_female_name_a_17_judy","k":"table","len":5,"c":true},{"a":58027,"n":"text_female_name_a_18_helen","k":"table","len":6,"c":true},{"a":58033,"n":"text_female_name_a_19_brenda","k":"table","len":7,"c":true},{"a":58040,"n":"text_female_name_a_20_suzette","k":"table","len":8,"c":true},{"a":58048,"n":"text_female_name_a_21_roxanne","k":"table","len":8,"c":true},{"a":58056,"n":"text_female_name_a_22_joan","k":"table","len":5,"c":true},{"a":58061,"n":"text_female_name_a_23_marion","k":"table","len":7,"c":true},{"a":58068,"n":"text_female_name_a_24_linda","k":"table","len":6,"c":true},{"a":58074,"n":"text_female_name_a_25_harriet","k":"table","len":8,"c":true},{"a":58082,"n":"text_female_name_a_26_hillary","k":"table","len":8,"c":true},{"a":58090,"n":"text_female_name_a_27_francis","k":"table","len":8,"c":true},{"a":58098,"n":"text_female_name_a_28_georgia","k":"table","len":8,"c":true},{"a":58106,"n":"text_female_name_a_29_bonnie","k":"table","len":7,"c":true},{"a":58113,"n":"text_female_name_a_30_allison","k":"table","len":8,"c":true},{"a":58121,"n":"text_female_name_a_31_cindy","k":"table","len":6,"c":true},{"a":58127,"n":"text_female_name_b_00_none","k":"table","len":5,"c":true},{"a":58132,"n":"text_female_name_b_01_louise","k":"table","len":7,"c":true},{"a":58139,"n":"text_female_name_b_02_marion","k":"table","len":7,"c":true},{"a":58146,"n":"text_female_name_b_03_ruth","k":"table","len":5,"c":true},{"a":58151,"n":"text_female_name_b_04_betsy","k":"table","len":6,"c":true},{"a":58157,"n":"text_female_name_b_05_anne","k":"table","len":5,"c":true},{"a":58162,"n":"text_female_name_b_06_marsha","k":"table","len":7,"c":true},{"a":58169,"n":"text_female_name_b_07_henrietta","k":"table","len":10,"c":true},{"a":58179,"n":"text_female_name_b_08_cathy","k":"table","len":6,"c":true},{"a":58185,"n":"text_female_name_b_09_bridgette","k":"table","len":10,"c":true},{"a":58195,"n":"text_female_name_b_10_carol","k":"table","len":6,"c":true},{"a":58201,"n":"text_female_name_b_11_gigi","k":"table","len":5,"c":true},{"a":58206,"n":"text_female_name_b_12_antoinette","k":"table","len":11,"c":true},{"a":58217,"n":"text_female_name_b_13_gayle","k":"table","len":6,"c":true},{"a":58223,"n":"text_female_name_b_14_kimberly","k":"table","len":9,"c":true},{"a":58232,"n":"text_female_name_b_15_toni","k":"table","len":5,"c":true},{"a":58237,"n":"text_female_name_b_16_martina","k":"table","len":8,"c":true},{"a":58245,"n":"text_female_name_b_17_judy","k":"table","len":5,"c":true},{"a":58250,"n":"text_female_name_b_18_helen","k":"table","len":6,"c":true},{"a":58256,"n":"text_female_name_b_19_brenda","k":"table","len":7,"c":true},{"a":58263,"n":"text_female_name_b_20_suzette","k":"table","len":8,"c":true},{"a":58271,"n":"text_female_name_b_21_roxanne","k":"table","len":8,"c":true},{"a":58279,"n":"text_female_name_b_22_joan","k":"table","len":5,"c":true},{"a":58284,"n":"text_female_name_b_23_marion","k":"table","len":7,"c":true},{"a":58291,"n":"text_female_name_b_24_linda","k":"table","len":6,"c":true},{"a":58297,"n":"text_female_name_b_25_harriet","k":"table","len":8,"c":true},{"a":58305,"n":"text_female_name_b_26_hillary","k":"table","len":8,"c":true},{"a":58313,"n":"text_female_name_b_27_francis","k":"table","len":8,"c":true},{"a":58321,"n":"text_female_name_b_28_georgia","k":"table","len":8,"c":true},{"a":58329,"n":"text_female_name_b_29_bonnie","k":"table","len":7,"c":true},{"a":58336,"n":"text_female_name_b_30_allison","k":"table","len":8,"c":true},{"a":58344,"n":"text_female_name_b_31_cindy","k":"table","len":6,"c":true},{"a":58350,"n":"text_personal_name_00_none","k":"table","len":5,"c":true},{"a":58355,"n":"text_personal_name_01_lori","k":"table","len":5,"c":true},{"a":58360,"n":"text_personal_name_02_courtney","k":"table","len":9,"c":true},{"a":58369,"n":"text_personal_name_03_allison","k":"table","len":8,"c":true},{"a":58377,"n":"text_personal_name_04_kathy","k":"table","len":6,"c":true},{"a":58383,"n":"text_personal_name_05_theresa","k":"table","len":8,"c":true},{"a":58391,"n":"text_personal_name_06_linda","k":"table","len":6,"c":true},{"a":58397,"n":"text_personal_name_07_mary","k":"table","len":5,"c":true},{"a":58402,"n":"text_personal_name_08_marcia","k":"table","len":7,"c":true},{"a":58409,"n":"text_personal_name_09_anne","k":"table","len":5,"c":true},{"a":58414,"n":"text_personal_name_10_jennifer","k":"table","len":9,"c":true},{"a":58423,"n":"text_personal_name_11_peter","k":"table","len":6,"c":true},{"a":58429,"n":"text_personal_name_12_jim","k":"table","len":4,"c":true},{"a":58433,"n":"text_personal_name_13_ned","k":"table","len":4,"c":true},{"a":58437,"n":"text_personal_name_14_kerry","k":"table","len":6,"c":true},{"a":58443,"n":"text_personal_name_15_bill","k":"table","len":5,"c":true},{"a":58448,"n":"text_personal_name_16_dick","k":"table","len":5,"c":true},{"a":58453,"n":"text_personal_name_17_vincent","k":"table","len":8,"c":true},{"a":58461,"n":"text_personal_name_18_michael","k":"table","len":8,"c":true},{"a":58469,"n":"text_personal_name_19_robert","k":"table","len":7,"c":true},{"a":58476,"n":"text_personal_name_20_john","k":"table","len":5,"c":true},{"a":58481,"n":"text_meeting_location_00_in_the_cafeteria","k":"table","len":18,"c":true},{"a":58499,"n":"text_meeting_location_01_during_study_hall","k":"table","len":19,"c":true},{"a":58518,"n":"text_meeting_location_02_in_biology_class","k":"table","len":18,"c":true},{"a":58536,"n":"text_meeting_location_03_down_the_block","k":"table","len":16,"c":true},{"a":58552,"n":"text_meeting_location_04_one_town_over_from_you","k":"table","len":24,"c":true},{"a":58576,"n":"text_meeting_location_05_in_a_local_shopping_mall","k":"table","len":26,"c":true},{"a":58602,"n":"text_meeting_location_06_while_visiting_relatives","k":"table","len":26,"c":true},{"a":58628,"n":"text_meeting_location_07_while_away_for_the_summer","k":"table","len":27,"c":true},{"a":58655,"n":"text_meeting_location_08_while_away_on_vacation","k":"table","len":24,"c":true},{"a":58679,"n":"text_paternal_guardian_00_dad","k":"table","len":4,"c":true},{"a":58683,"n":"text_paternal_guardian_01_uncle_jim","k":"table","len":10,"c":true},{"a":58693,"n":"text_maternal_guardian_00_mom","k":"table","len":4,"c":true},{"a":58697,"n":"text_maternal_guardian_01_aunt_lori","k":"table","len":10,"c":true},{"a":58707,"n":"text_guardian_term_00_parents","k":"table","len":8,"c":true},{"a":58715,"n":"text_guardian_term_01_guardians","k":"table","len":10,"c":true},{"a":58725,"n":"text_intensity_0_00_not_very","k":"table","len":9,"c":true},{"a":58734,"n":"text_intensity_0_01_moderately","k":"table","len":11,"c":true},{"a":58745,"n":"text_intensity_0_02_very","k":"table","len":5,"c":true},{"a":58750,"n":"text_intensity_1_00_not_very","k":"table","len":9,"c":true},{"a":58759,"n":"text_intensity_1_01_moderately","k":"table","len":11,"c":true},{"a":58770,"n":"text_intensity_1_02_very","k":"table","len":5,"c":true},{"a":58775,"n":"text_intensity_2_00_not_very","k":"table","len":9,"c":true},{"a":58784,"n":"text_intensity_2_01_moderately","k":"table","len":11,"c":true},{"a":58795,"n":"text_intensity_2_02_very","k":"table","len":5,"c":true},{"a":58800,"n":"text_intensity_3_00_not_very","k":"table","len":9,"c":true},{"a":58809,"n":"text_intensity_3_01_moderately","k":"table","len":11,"c":true},{"a":58820,"n":"text_intensity_3_02_very","k":"table","len":5,"c":true},{"a":58825,"n":"text_intensity_4_00_not_very","k":"table","len":9,"c":true},{"a":58834,"n":"text_intensity_4_01_moderately","k":"table","len":11,"c":true},{"a":58845,"n":"text_intensity_4_02_very","k":"table","len":5,"c":true},{"a":58850,"n":"text_intensity_5_00_not_very","k":"table","len":9,"c":true},{"a":58859,"n":"text_intensity_5_01_moderately","k":"table","len":11,"c":true},{"a":58870,"n":"text_intensity_5_02_very","k":"table","len":6,"c":true},{"a":58876,"n":"hidden_kernal_ram_scene_token_copy_tail","k":"table","len":516,"c":true},{"a":59392,"n":"hidden_kernal_ram_graphics_resources","k":"table","len":1024,"c":true},{"a":59953,"n":"j_EA31","k":"variable","len":1,"c":false},{"a":63952,"n":"retained_high_ram_initialization_twin","k":"table","len":212,"c":true},{"a":64164,"n":"retained_initialization_twin_nonzero_tail","k":"table","len":368,"c":true},{"a":64532,"n":"retained_bootstrap_fragment_open","k":"table","len":716,"c":false},{"a":65091,"n":"KERNAL_NMI_VECTOR","k":"variable","len":1,"c":false},{"a":65248,"n":"prior_phase_cracktro_bootstrap_bytes","k":"table","len":95,"c":true},{"a":65343,"n":"hidden_kernal_ram_residue_before_vectors","k":"table","len":187,"c":true},{"a":65352,"n":"KERNAL_IRQ_BRK_VECTOR","k":"variable","len":1,"c":false},{"a":65427,"n":"KERNAL_SECOND","k":"variable","len":1,"c":false},{"a":65430,"n":"KERNAL_TKSA","k":"variable","len":1,"c":false},{"a":65445,"n":"KERNAL_ACPTR","k":"variable","len":1,"c":false},{"a":65448,"n":"KERNAL_CIOUT","k":"variable","len":1,"c":false},{"a":65451,"n":"KERNAL_UNTLK","k":"variable","len":1,"c":false},{"a":65454,"n":"KERNAL_UNLSN","k":"variable","len":1,"c":false},{"a":65457,"n":"KERNAL_LISTEN","k":"variable","len":1,"c":false},{"a":65460,"n":"KERNAL_TALK","k":"variable","len":1,"c":false},{"a":65463,"n":"KERNAL_READST","k":"variable","len":1,"c":false},{"a":65466,"n":"KERNAL_SETLFS","k":"variable","len":1,"c":false},{"a":65469,"n":"KERNAL_SETNAM","k":"variable","len":1,"c":false},{"a":65472,"n":"KERNAL_OPEN","k":"variable","len":1,"c":false},{"a":65475,"n":"KERNAL_CLOSE","k":"variable","len":1,"c":false},{"a":65478,"n":"KERNAL_CHKIN","k":"variable","len":1,"c":false},{"a":65481,"n":"KERNAL_CHKOUT","k":"variable","len":1,"c":false},{"a":65484,"n":"KERNAL_CLRCHN","k":"variable","len":1,"c":false},{"a":65487,"n":"KERNAL_CHRIN","k":"variable","len":1,"c":false},{"a":65490,"n":"KERNAL_CHROUT","k":"variable","len":1,"c":false},{"a":65508,"n":"KERNAL_GETIN","k":"variable","len":1,"c":false},{"a":65511,"n":"KERNAL_CLALL","k":"variable","len":1,"c":false},{"a":65530,"n":"C64_KERNAL_NMI_VECTOR","k":"variable","len":2,"c":true},{"a":65532,"n":"ram_reset_vector","k":"variable","len":2,"c":true},{"a":65534,"n":"ram_irq_brk_vector","k":"variable","len":2,"c":true}],"records":[{"a":0,"t":"gap","n":2048,"x":[28408,28418,28431,28465,28478,28513,46107,46109,46133,46152,46176,46196,46198,46227,46243,46267,46293,46336,46338,46368,46404,46433]},{"a":0,"t":"note","l":"C64_CPU_cpu_port_ddr_underlying_ram","c":"6510 zero page captured at the male first-interaction boundary. The import is physical RAM, so the two bytes at $0000/$0001 are the RAM hidden underneath the 6510 on-chip data-direction register and CPU port, not the registers themselves: they read $51 and $00 here, while the live registers read $2F and $36. A reader of the listing alone must not conclude $01 = $00, which would mean all-RAM with I/O switched off, the opposite of the documented running state. The game VM owns $02-$15; native display, arithmetic and KERNAL wrappers reuse further scratch locations. Named fields below document every confirmed role; unlabelled bytes are captured runtime/KERNAL workspace, not executable code.","note":"outside the tracked image","x":[28408,28418,28431,28465,28478,28513,46107,46109,46133,46152,46176,46196,46198,46227,46243,46267,46293,46336,46338,46368,46404,46433]},{"a":1,"t":"note","l":"C64_CPU_cpu_port_underlying_ram","note":"outside the tracked image","x":[16684,16691,16710,16733,16740,16752,16756,16760,18163,18167,18176,18180,18332,18336,18345,18349,25944,25948,28240,28244,28455,28508,46131,46174,46201,46203,46232,46247,46269,46307,46330,46341,46343,46370,46383,46402,46431]},{"a":2,"t":"note","l":"shared_scratch_02_lo","c":"Shared zero-page word. The VM fetch loop writes the selected opcode handler here and jumps indirectly through it; 32-bit division also reuses the low word as subtraction scratch. Captured value $CF98 is transient, not a stable code target.","note":"outside the tracked image","x":[25918,25922,28342,28354,28406,28422,28435,28451,28469,28587,28617,28661,28671,28679,28693,28698,28703,28724,28734,28743,28747,28758,28771,28793,28911,28917,28927,28947,29002,29009,29061,29069,29074,29156,29164,29169,29251,29261,29266,29346,29355,29359,29667,29672,29687,29692,29714,29719,29738,29742,29852,29869,29888,29901,29922,29939,29944,30228,30240,30244,30254,30290,30300,30305,30316,30332,30353,30850,30856,30864,30897,30936,30962,31540,31553,31753,31776,32204,32218,32235,32277,32287,32318,37724,37733,37766,37772,37780,45990,45999,46032,46038,46046,46088,46125,46129,46146,46158,46162,46172,46225,46241,46261,46271,46275,46287,46291,46348,46358,46379,46391,46411,46421]},{"a":3,"t":"note","l":"shared_scratch_02_hi","note":"outside the tracked image","x":[28388,28594,28613,28633,28647,28664,28708,28727,28751,28776,28930,29007,29067,29162,29257,29352,30230,30246,30250,30252,30292,30302,30310,30318,30336,30357,30860,30902,30941,30969,31545,31759,31780,32289,32322,37730,37776,45996,46042,46090,46093,46103,46127,46148,46164,46168,46170,46230,46245,46263,46273,46279,46285,46350,46354,46377,46387,46413,46417]},{"a":4,"t":"note","l":"vm_expression_stack_ptr_lo","c":"Little-endian pointer to the descending VM expression stack. VM push operations pre-decrement it; native wrappers read arguments indirectly through ($04),Y.","note":"outside the tracked image","x":[16837,16846,16856,16918,16924,16931,17109,17114,17119,17124,17311,17322,17398,17607,17614,17621,17628,17633,17639,17646,17962,17969,17976,17983,17990,18083,18102,18119,18142,18149,18193,18208,18225,18248,18255,18271,18290,18305,18362,18377,18392,25838,25854,25859,25864,25891,25896,25902,25909,25916,25952,25981,26162,26690,26706,26751,26771,26779,26794,26815,26835,26839,26849,26853,26878,26883,26886,26891,26909,26914,26917,26922,26936,26963,27528,27583,27588,28084,28090,28095,28105,28110,28139,28162,28173,28186,28229,28235,28669,28673,28685,28732,28736,28781,28845,28935,28964,29970,29972,29984,29986,30203,30208,30213,30217,30987,30991,31000,31004,32265,32269,32279,32296,32305,32309,37743,37748,46009,46014]},{"a":5,"t":"note","l":"vm_expression_stack_ptr_hi","note":"outside the tracked image","x":[25956,26843,26857,28677,28740,28787,28852,28941,28973,29976,29989,29991,30221,30995,32273,32313]},{"a":6,"t":"note","l":"vm_frame_ptr_lo","c":"Little-endian VM frame pointer. Each native-to-VM gateway builds an eight-byte saved-frame header and local-variable addressing is relative to this pointer.","note":"outside the tracked image","x":[23412,23418,23424,23430,23615,23620,23784,23789,23794,23799,24239,24244,26602,26606,26633,26637,26654,26658,28806,28824,28885,28899,28960,29059,29095,29100,29154,29190,29195,29249,29287,29292,29344,29378,29382,29760,29775,30840,30895,30960,37706,42233,42236,42244,42247,42285,42289,42341,42345,42350,42354,42362,42365,42376,42380,42383,42387,42395,42398,42409,42413,42416,42420,42425,42431,42434,42440,42449,42453,42493,42497,42502,42506,42763,42766,42794,42798,42801,42805,42821,42824,42853,42859,42862,42868,42911,42915,42918,42922,42930,42934,42939,42943,45972]},{"a":7,"t":"note","l":"vm_frame_ptr_hi","note":"outside the tracked image","x":[28814,28903,28969,29065,29160,29255,29350,29765,29780,30844,30900,30967,37713,45979]},{"a":8,"t":"note","l":"vm_instruction_ptr_lo","c":"Little-endian VM bytecode instruction pointer. The dispatcher fetches through ($08),Y and increments this word before entering the selected handler.","note":"outside the tracked image","x":[23628,23636,23644,23652,23656,23661,23666,23671,23724,23729,23734,23739,23807,23812,23967,23972,24002,24006,24013,24129,24183,24187,24192,24196,26622,26627,26672,26677,28810,28833,28841,28891,28980,28990,28992,29999,30026,30030,30035,30039,30058,30065,30072,30076,30085,30089,30093,30099,30106,30115,30120,30130,30132,30142,30146,30150,30874,30879,30890,30904,30913,30917,30921,30925,30934,30939,30945,30949,30958,30965,30973,30977,31527,31529,32113,32125,32135,32139]},{"a":9,"t":"note","l":"vm_instruction_ptr_hi","note":"outside the tracked image","x":[28818,28848,28854,28881,28986,28996,30001,30043,30080,30091,30136,30138,30148,30883,30908,30929,30953,30981,31533,32143]},{"a":10,"t":"note","l":"vm_primary_value_b0","c":"Four-byte little-endian VM primary value. Arithmetic, comparisons and native wrappers return results here.","note":"outside the tracked image","x":[16792,16802,16832,17121,17225,17231,17313,17324,18078,23476,23516,23565,23588,23593,23915,23952,23969,24221,24226,24348,25866,25876,25893,25904,25924,25926,25932,25983,25990,26007,26014,26016,26164,26171,26182,26186,26226,26244,26618,26674,26696,26725,26732,26742,26864,26881,26900,26912,26931,26938,26947,26965,26994,27530,27546,27556,27572,27606,28198,28695,28720,28762,28808,28820,28843,28850,28857,28861,28878,28921,28962,28971,28976,29071,29097,29259,29285,29448,29648,29650,29669,29712,29762,29790,29832,29834,29854,29886,29931,29951,30006,30018,30060,30101,30103,30113,30125,30155,30159,30161,30168,30170,30177,30189,30196,30234,30258,30296,30320,30334,30355,30378,30380,30404,30408,30420,30424,30446,30473,30493,30500,30504,30515,30519,30530,30534,30553,30560,30573,30580,30585,30603,30610,30626,30633,30649,30654,30672,30677,30690,30697,30708,30715,30726,30731,30744,30753,30758,30765,30767,30777,30781,30792,30796,30811,30820,30826,30831,31644,31675,31732,31784,31797,31853,31897,31904,31908,31916,31920,31928,31932,31940,31944,31964,31975,31987,31992,32003,32019,32033,32047,32061,32064,32085,32115,32156,32158,32163,32165,32176,32187,32193,32206,32232,32316,37745,42254,42301,42311,42347,42465,42475,42499,42956,43249,43275,43338,43367,43657,46011]},{"a":11,"t":"note","l":"vm_primary_value_b1","note":"outside the tracked image","x":[16796,16804,17126,17317,17328,18073,23481,23518,23571,23590,23595,23921,23954,23974,24223,24228,24350,25898,25911,25930,25936,26001,26009,26020,26175,26188,26192,26219,26249,26624,26679,26698,26744,26866,26889,26897,26920,26928,26954,26971,26988,27542,27558,27569,27581,27602,28202,28700,28765,28865,28924,28982,29076,29102,29264,29290,29450,29654,29674,29717,29767,29792,29837,29839,29856,29958,30008,30020,30067,30108,30110,30118,30128,30134,30163,30172,30182,30198,30256,30298,30338,30359,30364,30372,30383,30385,30410,30414,30426,30430,30448,30455,30471,30491,30506,30510,30521,30525,30536,30540,30545,30549,30565,30569,30589,30593,30614,30616,30637,30639,30658,30662,30681,30685,30701,30703,30719,30721,30735,30739,30749,30751,30770,30772,30783,30787,30800,30804,30815,30824,30833,31673,31734,31855,31895,31984,32001,32068,32072,32089,32091,32102,32320,37750,42256,42306,42316,42356,42470,42481,42508,42958,43254,43277,43342,43371,43661,46016]},{"a":12,"t":"note","l":"vm_primary_value_b2","note":"outside the tracked image","x":[25994,26173,26195,26199,26224,26242,26945,26992,27550,27561,30278,30370,31671,31736,31857,31893,32074,32095,32108]},{"a":13,"t":"note","l":"vm_primary_value_b3","note":"outside the tracked image","x":[26177,26201,26205,26221,26251,26956,26973,26990,27544,30340,30366,31669,31700,31708,31738,31859,31865,31891,32078,32099,32110]},{"a":14,"t":"note","l":"vm_secondary_value_b0","c":"Four-byte little-endian VM secondary value. Binary arithmetic combines this operand with the primary value at $0A-$0D.","note":"outside the tracked image","x":[17111,17137,17148,17152,17561,17582,17598,18108,18117,18121,18129,18144,18171,18214,18223,18227,18235,18250,18263,18296,18311,18313,18340,18383,18398,18400,18413,24301,24322,25856,25870,25906,25934,26184,26197,26207,26233,26762,26785,26788,26802,26805,26821,26826,26830,26975,27585,27593,28086,28098,28785,28796,28804,28901,28909,28939,28950,28958,29166,29192,29516,29689,29777,29805,29871,29953,30032,30050,30179,30184,30191,30205,30242,30307,30393,30395,30406,30422,30435,30459,30480,30502,30517,30532,30555,30575,30587,30608,30631,30656,30679,30695,30713,30733,30794,30798,30842,30848,31751,31813,31817,31826,31830,31918,31930,31942,31954,31956,31977,31994,32066,32083,32127,32179,32189,32191,32220,32298,37711,37722,37755,37764,45977,45988,46021,46030]},{"a":15,"t":"note","l":"vm_secondary_value_b1","note":"outside the tracked image","x":[17116,17142,17565,17586,18113,18123,18127,18132,18135,18138,18146,18151,18219,18229,18233,18238,18241,18244,18252,18257,18301,18318,18320,18388,18405,18407,24307,24328,25861,25913,25938,26190,26203,26212,26238,26767,26980,27590,27600,28791,28812,28905,28945,28967,29171,29197,29518,29694,29782,29807,29873,29960,30210,30248,30312,30368,30387,30398,30400,30412,30428,30439,30463,30484,30508,30523,30538,30547,30567,30591,30612,30635,30660,30683,30699,30717,30737,30802,30806,30846,31757,32070,32087,37718,37760,45984,46026]},{"a":16,"t":"note","l":"vm_secondary_value_b2","note":"outside the tracked image","x":[24313,24334,26823,26869,31763,32076,32093]},{"a":17,"t":"note","l":"vm_secondary_value_b3","note":"outside the tracked image","x":[24319,24341,26832,31704,31715,31768,32009,32080,32097]},{"a":18,"t":"note","l":"native_math_scratch_b0","c":"Four-byte native scratch/result field. The 32-bit multiply/divide primitives use it as product/remainder workspace; decimal formatting and graphics routines reuse the low bytes.","note":"outside the tracked image","x":[17134,17150,17160,17168,17207,17212,17228,17404,17410,17449,17455,17553,17574,17596,17699,17710,17738,17862,17866,17877,18030,18047,18051,18062,18093,18169,18199,18261,18281,18338,18368,18411,23874,23882,24270,24288,24299,31634,31654,31667,31692,31723,31725,31740,31749,31778,31795,31815,31828,31842,31844,31877,31879,42896,42904,43582,43599]},{"a":19,"t":"note","l":"native_math_scratch_b1","note":"outside the tracked image","x":[17132,17176,17184,17192,17200,17214,17219,17406,17415,17451,17460,17557,17578,17706,17868,17872,18037,18053,18057,18098,18204,18286,18373,23880,24272,24290,24305,31636,31665,31694,31742,31755,31782,42902,43585,43605]},{"a":20,"t":"note","l":"native_math_scratch_b2","note":"outside the tracked image","x":[17130,17205,24274,24292,24311,31638,31663,31696,31744,31761,31772]},{"a":21,"t":"note","l":"native_math_scratch_b3","note":"outside the tracked image","x":[24276,24294,24317,31640,31661,31698,31746,31766,31774]},{"a":22,"t":"note","l":"transition_source_ptr_lo","c":"Little-endian source pointer used by animate_screen_region_transition while exchanging image bytes.","note":"outside the tracked image","x":[17630,17782,17787,17901,17903,17926,17930,23677,23697,23717,23745,23857,23870,24251,24297,31652,31656,42643,42652,42678,42686,42691,42737,42746,42874,42892,43012,43023,43028,43309,43321,43499,43507,43561,43580,43635,43645,43651]},{"a":23,"t":"note","l":"transition_source_ptr_hi","note":"outside the tracked image","x":[17635,17905,17909,17932,17936,23679,23703,23747,23865,23876,24256,24303,42650,42684,42744,42884,42898,43018,43316,43328,43505,43567,43641]},{"a":24,"t":"note","l":"screen_copy_source_ptr_lo","c":"Little-endian source pointer used by the block screen-copy helpers. It is rebuilt from tables for each $B1-byte block.","note":"outside the tracked image","x":[17242,17261,17277,17296,23681,23709,23749,24264,24309]},{"a":25,"t":"note","l":"screen_copy_source_ptr_hi","note":"outside the tracked image","x":[17247,17282,23683,23715,23751,24266,24315]},{"a":26,"t":"note","l":"transition_destination_ptr_lo","c":"Little-endian destination pointer used by animate_screen_region_transition.","note":"outside the tracked image","x":[17756,17779,17784,17882,17886,17914,17918,23617,23624,23632,23640,23648,23658,23693,23726,23760,23839,23884,24189,24200,24241,24326,24332,24339,24346,42185,42197,42427,42445,42569,42581,42628,42654,42659,42674,42722,42758,42855,42906,42936,42947,42993,43008,43036,43048,43195,43212,43289,43319,43402,43415,43480,43495,43509,43526,43542,43557,43573,43590,43617,43631]},{"a":27,"t":"note","l":"transition_destination_ptr_hi","note":"outside the tracked image","x":[17764,17888,17892,17920,17924,23622,23663,23699,23731,23765,23847,24198,24202,24246,42192,42436,42576,42635,42664,42680,42729,42864,42945,42949,42998,43014,43043,43197,43219,43294,43326,43406,43419,43488,43501,43512,43532,43550,43563,43578,43587,43621,43637]},{"a":28,"t":"note","l":"screen_copy_destination_ptr_lo","c":"Little-endian destination pointer used by the block screen-copy helpers.","note":"outside the tracked image","x":[17252,17263,17287,17298,23668,23705,23736]},{"a":29,"t":"note","l":"screen_copy_destination_ptr_hi","note":"outside the tracked image","x":[17257,17292,23673,23711,23741]},{"a":36,"t":"note","l":"shared_pointer_or_math_sign_lo","c":"Shared native scratch word. KERNAL SETNAM uses it as a zero-terminated filename pointer; signed division reuses its two bytes to retain quotient/remainder sign state.","note":"outside the tracked image","x":[28112,28115,28323,28346,28351,28364,28462,28475,28496,28573,28582,28619,31684,31706,46138,46160,46253,46277,46289,46299,46321,46323]},{"a":37,"t":"note","l":"shared_pointer_or_math_sign_hi","note":"outside the tracked image","x":[28107,28123,28325,28362,28498,28575,28589,28615,31702,31802,46140,46166,46255,46281,46301,46311,46315,46326,46328]},{"a":38,"t":"note","l":"AlterEgo_Runtime_division_remainder_b2","note":"outside the tracked image","x":[28327,28360,28500,28577,28596,28611,46190,46313]},{"a":39,"t":"note","l":"AlterEgo_Runtime_division_remainder_b3","note":"outside the tracked image","x":[28329,28358,28502,28579,28602,28609,46219,46309]},{"a":48,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_30","c":"Compiler zero-page workspace beginning at $30. Inline-native gateway $7059 saves and restores the first N bytes selected by each three-byte entry header; physical inline native bodies reuse these bytes as transient pointers, counters, and arithmetic state, so no single value is stable across calls.","note":"outside the tracked image","x":[23786,23837,23843,28830,28893,43340,43365,43383,43400,43423,43427,43438]},{"a":49,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_31","note":"outside the tracked image","x":[23791,23845,23851,43344,43369,43388,43404,43429,43433,43444]},{"a":50,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_32","note":"outside the tracked image","x":[23796,23803,23815,23887,23891,43393,43436,43615]},{"a":51,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_33","note":"outside the tracked image","x":[23801,23809,23817,23893,23897,43398,43442,43619]},{"a":52,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_34","note":"outside the tracked image","x":[43440,43453,43457,43466,43517,43571]},{"a":53,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_35","note":"outside the tracked image","x":[43446,43459,43463,43468,43514,43576]},{"a":54,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_36","note":"outside the tracked image","x":[43417,43478,43484,43540,43546]},{"a":55,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_37","note":"outside the tracked image","x":[43421,43486,43492,43548,43554]},{"a":56,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_38","note":"outside the tracked image","x":[43448,43524,43528,43597,43601,43643,43647,43655]},{"a":57,"t":"note","l":"AlterEgo_Runtime_compiler_workspace_39","note":"outside the tracked image","x":[43450,43530,43534,43603,43607,43649,43653,43659]},{"a":88,"t":"note","l":"retained_bootstrap_copy_parameters","c":"PRIOR-PHASE DATA \u2014 relocation/decompression parameters captured after use: destination upper bound $CFFF, source upper bound $1FFF, and source lower bound $1000. The prior callee at $A3BF was overwritten before this snapshot. The resident result is already present; the excluded loader's private contract is not gameplay backlog.","note":"outside the tracked image","x":[3765]},{"a":89,"t":"note","l":"retained_bootstrap_destination_end_hi","note":"outside the tracked image","x":[3769]},{"a":90,"t":"note","l":"retained_bootstrap_source_end_lo","note":"outside the tracked image","x":[3757]},{"a":91,"t":"note","l":"retained_bootstrap_source_end_hi","note":"outside the tracked image","x":[3761]},{"a":95,"t":"note","l":"retained_bootstrap_source_start_lo","note":"outside the tracked image","x":[3749]},{"a":96,"t":"note","l":"retained_bootstrap_source_start_hi","note":"outside the tracked image","x":[3753]},{"a":144,"t":"note","l":"C64_WORKSPACE_IO_STATUS","note":"outside the tracked image"},{"a":145,"t":"note","l":"C64_WORKSPACE_STOP_KEY_FLAG","note":"outside the tracked image"},{"a":153,"t":"note","l":"C64_WORKSPACE_DEFAULT_INPUT_DEVICE","note":"outside the tracked image"},{"a":154,"t":"note","l":"C64_WORKSPACE_DEFAULT_OUTPUT_DEVICE","note":"outside the tracked image"},{"a":185,"t":"note","l":"kernal_current_secondary_address","c":"KERNAL serial-bus workspace. The game writes secondary address $6F here before calling TKSA $FF93.","note":"outside the tracked image","x":[25847,26715]},{"a":186,"t":"note","l":"kernal_current_device_number","c":"KERNAL serial-bus workspace. The game writes the caller-supplied device number here before calling LISTEN $FFB1.","note":"outside the tracked image","x":[25840,26708]},{"a":198,"t":"note","l":"C64_WORKSPACE_KEYBOARD_BUFFER_LENGTH","note":"outside the tracked image"},{"a":211,"t":"note","l":"C64_WORKSPACE_CURSOR_COLUMN","note":"outside the tracked image"},{"a":214,"t":"note","l":"C64_WORKSPACE_CURSOR_ROW","note":"outside the tracked image"},{"a":256,"t":"note","l":"runtime_hardware_stack_page","c":"6510 hardware stack page at the capture boundary. SP=$01; the bytes are transient call/interrupt state and are classified as runtime data, not program instructions.","note":"outside the tracked image"},{"a":512,"t":"note","l":"runtime_kernal_editor_and_trampoline_workspace","c":"KERNAL/editor workspace and input-buffer page. $02A7-$02A8 is a dormant reserved external-phase compatibility hook: the slot is $0000 in the first-interaction phase, and none of the 82 decoded resident VM procedures emits opcode $B2. Its external-phase ABI is outside the active-game scope.","note":"outside the tracked image"},{"a":646,"t":"note","l":"C64_WORKSPACE_TEXT_COLOR","note":"outside the tracked image","x":[3744]},{"a":648,"t":"note","l":"C64_WORKSPACE_SCREEN_MEMORY_PAGE","note":"outside the tracked image"},{"a":679,"t":"note","l":"reserved_external_call_trampoline_slot","c":"Dormant two-byte external-call trampoline slot reserved for compatibility with other load phases. It contains $0000 at first interaction, and none of the 82 decoded resident VM procedures emits opcode $B2, so no active-game path executes JSR $0000. Its external-phase ABI is outside the captured resident phase.","note":"outside the tracked image","x":[31009]},{"a":682,"t":"note","l":"basic_warm_start_argument_lo","c":"Two-byte argument written immediately before enter_basic_warm_start maps BASIC ROM and jumps through BASIC warm-start vector ($A002). Exact BASIC-side interpretation is not resident in this capture.","note":"outside the tracked image","x":[28231]},{"a":683,"t":"note","l":"basic_warm_start_argument_hi","note":"outside the tracked image","x":[28237]},{"a":768,"t":"note","l":"runtime_kernal_vector_and_workspace_page","c":"KERNAL vector/workspace page. In this capture CINV $0314/$0315 points to the active game IRQ handler $4229; CBINV and NMINV retain KERNAL vectors. Remaining bytes are captured operating-system state.","note":"outside the tracked image"},{"a":788,"t":"note","l":"C64_WORKSPACE_IRQ_RAM_VECTOR","c":"KERNAL CINV IRQ vector, stored low byte then high byte. It currently contains $4229, the active game IRQ entry; earlier retained SID code temporarily installed other values during bootstrap phases.","note":"outside the tracked image","x":[2411,17332,17346]},{"a":789,"t":"note","l":"irq_ram_vector_high","note":"outside the tracked image","x":[2416,2422,17338,17351]},{"a":790,"t":"note","l":"C64_WORKSPACE_BRK_RAM_VECTOR","note":"outside the tracked image"},{"a":792,"t":"note","l":"C64_WORKSPACE_NMI_RAM_VECTOR","note":"outside the tracked image"},{"a":1024,"t":"note","l":"AlterEgo_Display_first_interaction_hires_screen_colors","c":"Active 40x25 hires-bitmap colour matrix for the first-name prompt. CIA 2 port A $DD00 selects VIC bank 0, VIC $D018=$19 selects screen matrix $0400 and bitmap $2000, and $D011 bit 5 enables bitmap mode. Every cell contains $16: set bitmap bits draw white (colour 1) and clear bits draw blue (colour 6). Together with $2000-$3F3F this renders the verified first-interaction frame.","note":"outside the tracked image"},{"a":1064,"t":"note","l":"screen_row_0428","note":"outside the tracked image"},{"a":1104,"t":"note","l":"screen_row_0450","note":"outside the tracked image"},{"a":1144,"t":"note","l":"screen_row_0478","note":"outside the tracked image"},{"a":1184,"t":"note","l":"screen_row_04a0","note":"outside the tracked image"},{"a":1224,"t":"note","l":"screen_row_04c8","note":"outside the tracked image"},{"a":1264,"t":"note","l":"screen_row_04f0","note":"outside the tracked image"},{"a":1304,"t":"note","l":"screen_row_0518","note":"outside the tracked image"},{"a":1344,"t":"note","l":"screen_row_0540","note":"outside the tracked image"},{"a":1384,"t":"note","l":"screen_row_0568","note":"outside the tracked image"},{"a":1424,"t":"note","l":"screen_row_0590","note":"outside the tracked image"},{"a":1464,"t":"note","l":"screen_row_05b8","note":"outside the tracked image"},{"a":1504,"t":"note","l":"screen_row_05e0","note":"outside the tracked image"},{"a":1544,"t":"note","l":"screen_row_0608","note":"outside the tracked image"},{"a":1584,"t":"note","l":"screen_row_0630","note":"outside the tracked image"},{"a":1624,"t":"note","l":"screen_row_0658","note":"outside the tracked image"},{"a":1664,"t":"note","l":"screen_row_0680","note":"outside the tracked image"},{"a":1704,"t":"note","l":"screen_row_06a8","note":"outside the tracked image"},{"a":1744,"t":"note","l":"screen_row_06d0","note":"outside the tracked image"},{"a":1784,"t":"note","l":"screen_row_06f8","note":"outside the tracked image"},{"a":1824,"t":"note","l":"screen_row_0720","note":"outside the tracked image"},{"a":1864,"t":"note","l":"screen_row_0748","note":"outside the tracked image"},{"a":1904,"t":"note","l":"screen_row_0770","note":"outside the tracked image"},{"a":1944,"t":"note","l":"screen_row_0798","note":"outside the tracked image"},{"a":1984,"t":"note","l":"screen_row_07c0","note":"outside the tracked image"},{"a":2024,"t":"note","l":"AlterEgo_Display_screen_page_tail","c":"Unused tail of the 1 KiB VIC screen page after the 1000 visible 40x25 colour bytes. It is outside the displayed matrix.","note":"outside the tracked image"},{"a":2040,"t":"note","l":"AlterEgo_Display_vic_sprite0_data_pointer","c":"VIC-II sprite data pointer table at the final eight bytes of the active 1 KiB screen page ($0400-$07FF). Each byte selects one 64-byte sprite image within the current VIC bank. The captured first-interaction frame uses pointer $0D for sprite 0 and $0E for sprites 1-7; the display setup writes these entries before enabling sprites.","note":"outside the tracked image","x":[17525]},{"a":2041,"t":"note","l":"AlterEgo_Display_vic_sprite1_data_pointer","note":"outside the tracked image","x":[17530]},{"a":2042,"t":"note","l":"AlterEgo_Display_vic_sprite2_data_pointer","note":"outside the tracked image","x":[17533]},{"a":2043,"t":"note","l":"AlterEgo_Display_vic_sprite3_data_pointer","note":"outside the tracked image","x":[17536]},{"a":2044,"t":"note","l":"AlterEgo_Display_vic_sprite4_data_pointer","note":"outside the tracked image","x":[17539]},{"a":2045,"t":"note","l":"AlterEgo_Display_vic_sprite5_data_pointer","note":"outside the tracked image","x":[17542]},{"a":2046,"t":"note","l":"AlterEgo_Display_vic_sprite6_data_pointer","note":"outside the tracked image","x":[17545]},{"a":2047,"t":"note","l":"AlterEgo_Display_vic_sprite7_data_pointer","note":"outside the tracked image","x":[17548]},{"a":2048,"l":"AlterEgo_SID_sid_driver_state","c":"Resident SID driver state and retained initialization bytes. Active fields include the pending command/status at $0810, two period counters at $0815/$0816 with reload values at $0817/$0818, and computed-dispatch scratch at $0819.","t":"byte","b":[0,11,8,193,7,158,50,48]},{"a":2056,"t":"byte","b":[54,54,0,0,0,5,6,7]},{"a":2064,"l":"sid_pending_command_state","t":"byte","b":[128,0,76,128,9],"x":[2529]},{"a":2069,"l":"sid_sequence_a_counter","t":"byte","b":[3],"x":[2077,2080,2090,2568]},{"a":2070,"l":"sid_sequence_b_counter","t":"byte","b":[182],"x":[2215,2218,2228,2686,2700,2706,2726,3140,3154,3160]},{"a":2071,"l":"sid_sequence_a_period","t":"byte","b":[6],"x":[2074,2083]},{"a":2072,"l":"sid_sequence_b_period","t":"byte","b":[0],"x":[2212,2221]},{"a":2073,"l":"sid_dispatch_offset_scratch","t":"byte","b":[1],"x":[2468,2473]},{"a":2074,"l":"sid_counter_0815_tick","c":"Advance SID sequencer counter $0815 modulo the period supplied in A. Inputs: A=period. Outputs: A=current counter and Z reflects wrap to zero; $0815 is incremented or cleared. Assumptions: A must hold the sequence-A period, which the routine stores into the period byte before comparing, so a period of 0 or 1 makes the counter reset on every call. Only the resident RAM counter/period pair below $0D80 need be valid; no pointer, index or banking setup is required. Clobbers: A and flags. Hardware: none directly; callers use the result to pace SID voice updates.","t":"code","b":[141,23,8],"m":"sta","oa":2071,"x":[2681,3135],"o":"sid_sequence_a_period"},{"a":2077,"t":"code","b":[238,21,8],"m":"inc","oa":2069,"o":"sid_sequence_a_counter"},{"a":2080,"t":"code","b":[173,21,8],"m":"lda","oa":2069,"o":"sid_sequence_a_counter"},{"a":2083,"t":"code","b":[205,23,8],"m":"cmp","oa":2071,"o":"sid_sequence_a_period"},{"a":2086,"t":"code","b":[208,5],"m":"bne","oa":2093,"o":"LAB_082d"},{"a":2088,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2090,"t":"code","b":[141,21,8],"m":"sta","oa":2069,"o":"sid_sequence_a_counter"},{"a":2093,"l":"LAB_082d","t":"code","b":[96],"m":"rts","x":[2086]},{"a":2094,"l":"sid_voice2_set_frequency","c":"Load SID voice 2 frequency from the word table at $08B8 and retrigger its gate. Inputs: A=nonzero table index; zero returns without change. Outputs: none. Assumptions: A must be a non-zero index into the word table at $08B8 such that 2*A+$19 is still inside that table, because the routine also reads index+$18 for the alternate frequency pair. I/O must be banked in ($01 bit 2 CHAREN set) so $D400-$D41C is the SID and not RAM. Clobbers: A,X and flags. Hardware: writes voice-2 frequency $D407/$D408 and toggles control $D40B from $20 to $21.","t":"code","b":[208,1],"m":"bne","oa":2097,"x":[2723,3177],"o":"LAB_0831"},{"a":2096,"t":"code","b":[96],"m":"rts"},{"a":2097,"l":"LAB_0831","t":"code","b":[10],"m":"asl","x":[2094],"o":"a"},{"a":2098,"t":"code","b":[170],"m":"tax"},{"a":2099,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2102,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":2105,"t":"code","b":[141,105,13],"m":"sta","oa":3433,"o":"sid_voice2_frequency_low_cache"},{"a":2108,"t":"code","b":[232],"m":"inx"},{"a":2109,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2112,"t":"code","b":[141,106,13],"m":"sta","oa":3434,"o":"sid_voice2_frequency_high_cache"},{"a":2115,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":2118,"t":"code","b":[202],"m":"dex"},{"a":2119,"t":"code","b":[138],"m":"txa"},{"a":2120,"t":"code","b":[24],"m":"clc"},{"a":2121,"t":"code","b":[105,24],"m":"adc","o":"#$18"},{"a":2123,"t":"code","b":[170],"m":"tax"},{"a":2124,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2127,"t":"code","b":[141,107,13],"m":"sta","oa":3435,"o":"sid_voice2_alternate_frequency_low"},{"a":2130,"t":"code","b":[232],"m":"inx"},{"a":2131,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2134,"t":"code","b":[141,108,13],"m":"sta","oa":3436,"o":"sid_voice2_alternate_frequency_high"},{"a":2137,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":2139,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":2142,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":2144,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":2147,"t":"code","b":[96],"m":"rts"},{"a":2148,"l":"sid_voice3_set_frequency","c":"Load SID voice 3 frequency from the word table at $08B8 and retrigger its gate. Inputs: A=nonzero table index; zero returns without change. Outputs: none. Assumptions: A must be a non-zero index whose doubled value stays inside the $08B8 word table, and I/O must be banked in so the SID is visible at $D400. The low frequency byte is EORed with $08 whenever it is non-zero, so the caller must accept the deliberately offset voice-3 pitch rather than the raw table value. Clobbers: A,X and flags. Hardware: writes $D40E/$D40F and toggles control $D412 from $20 to $21.","t":"code","b":[208,1],"m":"bne","oa":2151,"x":[2697,3151],"o":"LAB_0867"},{"a":2150,"t":"code","b":[96],"m":"rts"},{"a":2151,"l":"LAB_0867","t":"code","b":[10],"m":"asl","x":[2148],"o":"a"},{"a":2152,"t":"code","b":[170],"m":"tax"},{"a":2153,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2156,"t":"code","b":[240,2],"m":"beq","oa":2160,"o":"LAB_0870"},{"a":2158,"t":"code","b":[73,8],"m":"eor","o":"#$08"},{"a":2160,"l":"LAB_0870","t":"code","b":[141,14,212],"m":"sta","x":[2156],"o":"sid_v3_freq_lo"},{"a":2163,"t":"code","b":[232],"m":"inx"},{"a":2164,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2167,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":2170,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":2172,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":2175,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":2177,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":2180,"t":"code","b":[96],"m":"rts"},{"a":2181,"l":"sid_voice1_set_frequency","c":"Load SID voice 1 frequency from the word table at $08B8 and retrigger its gate. Inputs: A=nonzero table index; zero returns without change. Outputs: none. Assumptions: A must be a non-zero index into the $08B8 word table (entries 2*A and 2*A+1 are read) and I/O must be banked in for the $D400/$D401/$D404 writes. The EOR #$00 at $088D is an operand slot in the captured image, so callers must not rely on the low byte reaching the SID unmodified. Clobbers: A,X and flags. Hardware: writes $D400/$D401 and toggles control $D404 from $20 to $21.","t":"code","b":[208,1],"m":"bne","oa":2184,"x":[2740],"o":"LAB_0888"},{"a":2183,"t":"code","b":[96],"m":"rts"},{"a":2184,"l":"LAB_0888","t":"code","b":[10],"m":"asl","x":[2181],"o":"a"},{"a":2185,"t":"code","b":[170],"m":"tax"},{"a":2186,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2189,"t":"code","b":[73,0],"m":"eor","o":"#$00"},{"a":2191,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":2194,"t":"code","b":[232],"m":"inx"},{"a":2195,"t":"code","b":[189,184,8],"m":"lda","oa":2232,"o":"AlterEgo_SID_sid_frequency_words_00_57,x"},{"a":2198,"t":"code","b":[141,1,212],"m":"sta","o":"sid_v1_freq_hi"},{"a":2201,"t":"code","b":[169,32],"m":"lda","o":"#$20"},{"a":2203,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":2206,"t":"code","b":[169,33],"m":"lda","o":"#$21"},{"a":2208,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":2211,"t":"code","b":[96],"m":"rts"},{"a":2212,"l":"sid_counter_0816_tick","c":"Advance SID sequencer counter $0816 modulo the period supplied in A. Inputs: A=period. Outputs: A=current counter and Z reflects wrap to zero; $0816 is incremented or cleared. Assumptions: A must hold the sequence-B period; it is stored into the period byte before the compare, so a period of 0 or 1 resets the counter on every call. No pointers, table indices or banking state are required. Clobbers: A and flags. Hardware: Touches no hardware register at all: it reads and writes only the RAM counter $0816 and its period byte, and it calls nothing. The SID writes are done by the sequence-tick routines that consume its Z flag.","t":"code","b":[141,24,8],"m":"sta","oa":2072,"x":[2748,3195],"o":"sid_sequence_b_period"},{"a":2215,"t":"code","b":[238,22,8],"m":"inc","oa":2070,"o":"sid_sequence_b_counter"},{"a":2218,"t":"code","b":[173,22,8],"m":"lda","oa":2070,"o":"sid_sequence_b_counter"},{"a":2221,"t":"code","b":[205,24,8],"m":"cmp","oa":2072,"o":"sid_sequence_b_period"},{"a":2224,"t":"code","b":[208,5],"m":"bne","oa":2231,"o":"LAB_08b7"},{"a":2226,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2228,"t":"code","b":[141,22,8],"m":"sta","oa":2070,"o":"sid_sequence_b_counter"},{"a":2231,"l":"LAB_08b7","t":"code","b":[96],"m":"rts","x":[2224]},{"a":2232,"l":"AlterEgo_SID_sid_frequency_words_00_57","c":"Eighty-eight complete little-endian SID frequency words indexed $00-$57. Exhaustive resident sequencer analysis proves a maximum index of $44 (sequence A maxima $38/$33/$3D; sequence B maxima $44/$33). Bytes $45-$57 are retained table capacity but are not selected by the resident sequencers.","t":"word","b":[0,0,12,1,28,1,45,1],"d":[0,268,284,301],"x":[2099,2109,2124,2131,2153,2164,2186,2195]},{"a":2240,"t":"word","b":[62,1,81,1,102,1,123,1],"d":[318,337,358,379]},{"a":2248,"t":"word","b":[145,1,169,1,195,1,191,1],"d":[401,425,451,447]},{"a":2256,"t":"word","b":[250,1,24,2,56,2,90,2],"d":[506,536,568,602]},{"a":2264,"t":"word","b":[125,2,163,2,204,2,246,2],"d":[637,675,716,758]},{"a":2272,"t":"word","b":[35,3,83,3,134,3,187,3],"d":[803,851,902,955]},{"a":2280,"t":"word","b":[244,3,48,4,112,4,180,4],"d":[1012,1072,1136,1204]},{"a":2288,"t":"word","b":[251,4,71,5,152,5,237,5],"d":[1275,1351,1432,1517]},{"a":2296,"t":"word","b":[71,6,167,6,12,7,119,7],"d":[1607,1703,1804,1911]},{"a":2304,"t":"word","b":[233,7,97,8,225,8,104,9],"d":[2025,2145,2273,2408]},{"a":2312,"t":"word","b":[247,9,143,10,48,11,218,11],"d":[2551,2703,2864,3034]},{"a":2320,"t":"word","b":[143,12,78,13,24,14,239,14],"d":[3215,3406,3608,3823]},{"a":2328,"t":"word","b":[210,15,195,16,195,17,209,18],"d":[4050,4291,4547,4817]},{"a":2336,"t":"word","b":[239,19,31,21,96,22,181,23],"d":[5103,5407,5728,6069]},{"a":2344,"t":"word","b":[30,25,156,26,49,28,223,29],"d":[6430,6812,7217,7647]},{"a":2352,"t":"word","b":[165,31,135,33,134,35,162,37],"d":[8101,8583,9094,9634]},{"a":2360,"t":"word","b":[223,39,62,42,193,44,107,47],"d":[10207,10814,11457,12139]},{"a":2368,"t":"word","b":[60,50,57,53,99,56,190,59],"d":[12860,13625,14435,15294]},{"a":2376,"t":"word","b":[75,63,15,67,12,71,69,75],"d":[16203,17167,18188,19269]},{"a":2384,"t":"word","b":[191,79,125,84,131,89,214,94],"d":[20415,21629,22915,24278]},{"a":2392,"t":"word","b":[121,100,115,106,199,112,124,119],"d":[25721,27251,28871,30588]},{"a":2400,"t":"word","b":[151,126,30,134,24,142,139,150],"d":[32407,34334,36376,38539]},{"a":2408,"l":"AlterEgo_SID_byte_after_sid_frequency_table","c":"First byte after the 88 complete SID frequency words. Combining it with opcode $A9 at $0969 would form conceptual index $58, but every resident sequencer is statically bounded at or below $44; it is not a reachable frequency-table entry.","t":"byte","b":[120]},{"a":2409,"l":"install_retained_sid_irq_vector","c":"Install the retained SID IRQ entry $097A in the KERNAL RAM IRQ vector $0314/$0315. Inputs: none. Outputs: vector=$097A. Assumptions: Valid only in the earlier SID-driven load phase, where the KERNAL RAM IRQ vector is still the live dispatch path and $097A holds the retained handler. Interrupts must be masked across the two stores, since an IRQ taken between the low and high byte would dispatch through a half-updated vector. Clobbers: A and flags. The first-interaction snapshot instead contains $4229 in the live vector, so this installer belongs to an earlier load phase. Byte $A9 at entry is also the high byte of conceptual final SID frequency word $A978. Hardware: Writes the KERNAL RAM IRQ vector CINV at $0314/$0315 with $097A (low byte then high). It touches no VIC, SID or CIA register itself, but the vector it installs routes the CIA 1 timer IRQ into the retained SID service path.","t":"code","b":[169,122],"m":"lda","o":"#$7A"},{"a":2411,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"C64_WORKSPACE_IRQ_RAM_VECTOR"},{"a":2414,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":2416,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_ram_vector_high"},{"a":2419,"t":"code","b":[96],"m":"rts"},{"a":2420,"l":"AlterEgo_SID_retained_prior_phase_sid_setup_bytes","c":"PRIOR-PHASE DATA \u2014 two setup bytes between complete retained SID routines. No active first-interaction reference uses them. Their original setup relationship is outside gameplay scope.","t":"byte","b":[143,225]},{"a":2422,"l":"retained_set_irq_vector_high_from_a","c":"PRIOR-PHASE HELPER \u2014 write A to the high byte of the KERNAL RAM IRQ vector at $0315 and return. Inputs: A is the new high byte. Outputs: $0315 changed. Assumptions: Prior-phase helper: A must already hold the intended high byte and $0314 must already hold the matching low byte, so the caller is mid-way through a two-byte vector update and must have interrupts masked. It is inert at the captured boundary, where CINV points to $4229. Clobbers: flags. The active first-interaction IRQ vector instead points to $4229, so this retained helper is excluded from gameplay behavior. Hardware: Writes only the high byte of the KERNAL RAM IRQ vector CINV at $0315. No VIC, SID, CIA or CPU-port register is touched and it calls nothing.","t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_ram_vector_high"},{"a":2425,"t":"code","b":[96],"m":"rts"},{"a":2426,"l":"retained_prior_phase_sid_irq_entry","c":"PRIOR-PHASE SID IRQ path. $097A calls service routine $0980 and then chains to the retained IRQ continuation at $0D90. $0980 updates the two resident sound sequences; the branch at $0990 enters $09A2 when command byte $0D75 is negative, otherwise it rearms state and returns. The captured gameplay IRQ vector is $4229, so these coherent bytes are inactive and excluded from current-phase logic.","t":"byte","b":[32,128,9,76,144,13,173,16]},{"a":2434,"t":"byte","b":[8,48,11,141,117,13,32,187]},{"a":2442,"t":"byte","b":[9,169,128,141,16,8,173,117]},{"a":2450,"t":"byte","b":[13,48,13,162,0,142,21,8]},{"a":2458,"t":"byte","b":[142,22,8,9,128,141,117,13]},{"a":2466,"l":"retained_prior_phase_negative_sid_command_dispatch","c":"PRIOR-PHASE SID command dispatcher reached from $0990 when $0D75 is negative. Input: A contains that command byte. It clears bit 7, computes 3*command, patches the BCC displacement at $09B1 and enters the three-byte grid at $09B2+3*n. RTS returns through $097A, which chains to $0D90. The first-interaction IRQ vector is $4229, so the dispatcher is not active gameplay code at this boundary. Assumptions: A must be a command byte with bit 7 set whose low seven bits n satisfy 3*n <= 127, because 3*n is written as the signed BCC displacement at $09B1 and a larger value branches outside the three-byte grid at $09B2. The routine self-modifies its own branch operand, so it is not re-entrant and is reachable only from the retained $0990 IRQ path. Hardware: Touches no hardware itself: it patches RAM at $09B1 and falls into the command grid. The SID $D400-$D41C writes happen in the grid entries it dispatches to, such as $09B5/$09B8 which reach the sequence-tick routines. Outputs: writes sid_dispatch_offset_scratch; it also patches instruction operands in place (self-modifying code) at LAB_09b0. Clobbers: A and the processor flags; writes the locations named under Outputs.","t":"code","b":[41,127],"m":"and","o":"#$7F"},{"a":2468,"t":"code","b":[141,25,8],"m":"sta","oa":2073,"o":"sid_dispatch_offset_scratch"},{"a":2471,"t":"code","b":[10],"m":"asl","o":"a"},{"a":2472,"t":"code","b":[24],"m":"clc"},{"a":2473,"t":"code","b":[109,25,8],"m":"adc","oa":2073,"o":"sid_dispatch_offset_scratch"},{"a":2476,"t":"code","b":[141,177,9],"m":"sta","oa":2481,"o":"a_09B1"},{"a":2479,"t":"code","b":[24],"m":"clc"},{"a":2480,"t":"code","b":[144,3],"m":"bcc","oa":2485,"o":"sid_start_sequence_a"},{"a":2482,"l":"retained_prior_phase_sid_command_noop","c":"PRIOR-PHASE command-grid entry zero. RTS returns to the retained $097A IRQ path; the following two NOP-valued bytes pad this entry to the dispatcher's three-byte stride. Inactive in the captured phase. Assumptions: Assumes entry through the computed BCC at $09B1 with the retained $097A IRQ return address still on the stack. The two following $EA-valued bytes are stride padding for the dispatcher's three-byte grid and must never be executed as a continuation. Hardware: Executes a single RTS and touches no hardware at all; it calls nothing. Inputs: none; the body writes every location it uses before reading it. Outputs: none in memory or registers; the body only transfers control. Clobbers: the processor flags only.","t":"code","b":[96],"m":"rts"},{"a":2483,"l":"sid_command_grid_noop_padding","c":"Two NOP-valued padding bytes after the one-byte RTS command at $09B2. Together they keep every computed SID command entry on the dispatcher's three-byte grid; execution of command index 0 returns before these bytes.","t":"byte","b":[234,234]},{"a":2485,"l":"sid_start_sequence_a","c":"Computed SID command entry that tail-jumps to sequence-A update at $0A63. Inputs: sequencer state at $0815/$0816 and tables below $0D80. Outputs/state: SID voice registers and sequencer counters. Does not return here. Assumptions: Reached only as a command-grid entry through the self-modified BCC at $09B1, so the retained IRQ return address must already be on the stack: this is a tail call and $0A63 returns straight past it. Sequencer counters $0815/$0816 and the pitch/effect tables below $0D80 must already have been initialised. Hardware: Contains only a JMP and touches no register itself. All hardware effect (SID $D400-$D414 envelope, frequency, control and pulse-width writes) is performed by sid_sequence_a_tick at $0A63. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,99,10],"m":"jmp","oa":2659,"x":[2480],"o":"sid_sequence_a_tick"},{"a":2488,"l":"sid_start_sequence_b","c":"Computed SID command entry that tail-jumps to sequence-B update at $0C30. Inputs: sequencer state at $0815/$0816 and resident pitch tables. Outputs/state: SID voice registers and sequencer counters. Does not return here. Assumptions: Reached only as a command-grid entry through the self-modified BCC at $09B1, so the retained IRQ return address must already be on the stack; the JMP is a tail call. Sequencer counters $0815/$0816 and the resident pitch tables must already be initialised. Hardware: Contains only a JMP and touches no register itself. All SID register traffic is performed by sid_sequence_b_tick at $0C30. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,48,12],"m":"jmp","oa":3120,"o":"sid_sequence_b_tick"},{"a":2491,"l":"sid_reset_all_voices","c":"Initialize SID effect state: set volume to 4, disable filter routing, clear saved frequencies and all three SID frequency registers, and conditionally clear additional state when $0810 is not $10. Inputs: none. Outputs: none. Assumptions: I/O must be banked in ($01 bit 2 CHAREN set) so $D400-$D418 addresses the SID rather than RAM. The tail is conditional on $0810: only when it does not hold $10 are the three extra state bytes cleared, so a caller wanting a full reset must set $0810 first. Clobbers: A,X and flags. Hardware: writes $D400/$D401, $D407/$D408, $D40E/$D40F, $D417/$D418.","t":"code","b":[32,31,10],"m":"jsr","oa":2591,"o":"sid_initialize_filter"},{"a":2494,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2496,"t":"code","b":[141,107,13],"m":"sta","oa":3435,"o":"sid_voice2_alternate_frequency_low"},{"a":2499,"t":"code","b":[141,108,13],"m":"sta","oa":3436,"o":"sid_voice2_alternate_frequency_high"},{"a":2502,"t":"code","b":[141,105,13],"m":"sta","oa":3433,"o":"sid_voice2_frequency_low_cache"},{"a":2505,"t":"code","b":[141,106,13],"m":"sta","oa":3434,"o":"sid_voice2_frequency_high_cache"},{"a":2508,"t":"code","b":[141,109,13],"m":"sta","oa":3437,"o":"sid_voice2_frequency_selection_mask"},{"a":2511,"t":"code","b":[141,0,212],"m":"sta","o":"sid_v1_freq_lo"},{"a":2514,"t":"code","b":[141,1,212],"m":"sta","o":"sid_v1_freq_hi"},{"a":2517,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":2520,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":2523,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":2526,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":2529,"t":"code","b":[174,16,8],"m":"ldx","oa":2064,"o":"sid_pending_command_state"},{"a":2532,"t":"code","b":[224,16],"m":"cpx","o":"#$10"},{"a":2534,"t":"code","b":[240,9],"m":"beq","oa":2545,"o":"LAB_09f1"},{"a":2536,"t":"code","b":[141,103,13],"m":"sta","oa":3431,"o":"sid_runtime_state"},{"a":2539,"t":"code","b":[141,123,13],"m":"sta","oa":3451,"o":"sid_aux_state_0"},{"a":2542,"t":"code","b":[141,124,13],"m":"sta","oa":3452,"o":"sid_aux_state_1"},{"a":2545,"l":"LAB_09f1","t":"code","b":[96],"m":"rts","x":[2534]},{"a":2546,"l":"sid_voice1_gate_pulse","c":"Configure and pulse SID voice 1. Inputs: A supplies attack/decay for $D405. Outputs: none. Assumptions: A must already hold the attack/decay nibble pair intended for $D405, and I/O must be banked in. The routine forces frequency high byte $D401=$0B, so any pitch previously programmed for voice 1 is destroyed. Clobbers: A and flags. Hardware: sets frequency high byte $D401=$0B and toggles $D404 from $80 to $81.","t":"code","b":[141,5,212],"m":"sta","o":"sid_v1_attack_decay"},{"a":2549,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":2551,"t":"code","b":[141,1,212],"m":"sta","o":"sid_v1_freq_hi"},{"a":2554,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":2556,"t":"code","b":[141,4,212],"m":"sta","o":"sid_v1_control"},{"a":2559,"t":"code","b":[238,4,212],"m":"inc","o":"sid_v1_control"},{"a":2562,"t":"code","b":[96],"m":"rts"},{"a":2563,"l":"sid_voice2_select_frequency","c":"Select one of two saved frequency words for SID voice 2. Inputs: A=bit mask tested against sequencer $0815. Outputs: none. Assumptions: A must be the bit mask to test against sequence counter $0815, and both saved frequency word pairs at $0D69/$0D6A and $0D6B/$0D6C must already be loaded. I/O must be banked in for the $D407/$D408 writes. Clobbers: A,X and flags. Hardware: copies either $0D69/$0D6A or $0D6B/$0D6C to $D407/$D408.","t":"code","b":[141,109,13],"m":"sta","oa":3437,"x":[2676,3130],"o":"sid_voice2_frequency_selection_mask"},{"a":2566,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":2568,"t":"code","b":[173,21,8],"m":"lda","oa":2069,"o":"sid_sequence_a_counter"},{"a":2571,"t":"code","b":[45,109,13],"m":"and","oa":3437,"o":"sid_voice2_frequency_selection_mask"},{"a":2574,"t":"code","b":[208,2],"m":"bne","oa":2578,"o":"LAB_0a12"},{"a":2576,"t":"code","b":[162,2],"m":"ldx","o":"#$02"},{"a":2578,"l":"LAB_0a12","t":"code","b":[189,105,13],"m":"lda","oa":3433,"x":[2574],"o":"sid_voice2_frequency_low_cache,x"},{"a":2581,"t":"code","b":[141,7,212],"m":"sta","o":"sid_v2_freq_lo"},{"a":2584,"t":"code","b":[189,106,13],"m":"lda","oa":3434,"o":"sid_voice2_frequency_high_cache,x"},{"a":2587,"t":"code","b":[141,8,212],"m":"sta","o":"sid_v2_freq_hi"},{"a":2590,"t":"code","b":[96],"m":"rts"},{"a":2591,"l":"sid_initialize_filter","c":"Initialize shared SID filter/volume state. Inputs: none. Outputs: none. Assumptions: Requires I/O visible at $D400-$D41C. It unconditionally overwrites master volume/filter mode $D418 with $04 and filter routing $D417 with $00, so any caller-chosen volume or filter configuration is lost, and it also resets internal state byte $0D70 to $FF. Clobbers: A and flags. Hardware: writes volume/mode $D418=$04 and filter routing $D417=$00; initializes internal envelope state $0D70=$FF.","t":"code","b":[169,4],"m":"lda","x":[2491],"o":"#$04"},{"a":2593,"t":"code","b":[141,24,212],"m":"sta","o":"sid_filter_mode_volume"},{"a":2596,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":2598,"t":"code","b":[141,112,13],"m":"sta","oa":3440,"o":"sid_filter_state"},{"a":2601,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2603,"t":"code","b":[141,23,212],"m":"sta","o":"sid_filter_resonance"},{"a":2606,"t":"code","b":[96],"m":"rts"},{"a":2607,"l":"sid_add_effect_offset","c":"Conditionally add an effect-table offset. Inputs: A=offset and X=base. Outputs: A=0 when the offset was zero, otherwise A=X+offset. Assumptions: A must hold the effect offset and X the table base index; the caller must treat a zero offset as the 'no effect' case, because the routine then returns A=0 rather than the base in X. X is preserved, so the caller may reuse it for the following table read. Clobbers: A and flags; X preserved. Hardware: Touches no hardware: it reads and writes only the RAM scratch byte holding the effect offset and returns a value in A. It calls nothing; the SID register writes are made by the voice-setter routines that consume its result.","t":"code","b":[141,111,13],"m":"sta","oa":3439,"x":[2694,2720,2737,3148,3174],"o":"sid_frequency_effect_offset"},{"a":2610,"t":"code","b":[173,111,13],"m":"lda","oa":3439,"o":"sid_frequency_effect_offset"},{"a":2613,"t":"code","b":[208,1],"m":"bne","oa":2616,"o":"LAB_0a38"},{"a":2615,"t":"code","b":[96],"m":"rts"},{"a":2616,"l":"LAB_0a38","t":"code","b":[138],"m":"txa","x":[2613]},{"a":2617,"t":"code","b":[24],"m":"clc"},{"a":2618,"t":"code","b":[109,111,13],"m":"adc","oa":3439,"o":"sid_frequency_effect_offset"},{"a":2621,"t":"code","b":[96],"m":"rts"},{"a":2622,"l":"sid_gate_voices2_3_and_advance_pulse","c":"Computed SID command-grid entry at $09B2+3*$2F. It gates voice 2 with control value $41, increments the shared pulse-width phase at $0D6E, ORs bit 3 into that phase, and writes the result to both voice-2 and voice-3 pulse-width high registers $D40A/$D411. Inputs: none. Outputs: SID voice state advanced. Assumptions: Entered as command-grid entry $2F through the self-modified BCC at $09B1, so the retained IRQ return address must be on the stack. I/O must be banked in, and the shared pulse phase byte $0D6E must be the intended source because both voices are forced to the same width. Clobbers: A and flags. Returns to the descriptor gateway. Hardware: Writes SID voice-2 control $D40B=$41 (gate plus sawtooth) and both pulse-width high registers $D40A and $D411 with the incremented $0D6E ORed with $08, so pulse-width bit 3 is always set. No VIC or CIA register is touched.","t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":2624,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":2627,"t":"code","b":[238,110,13],"m":"inc","oa":3438,"o":"sid_modulation_phase"},{"a":2630,"t":"code","b":[173,110,13],"m":"lda","oa":3438,"o":"sid_modulation_phase"},{"a":2633,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":2635,"t":"code","b":[141,10,212],"m":"sta","o":"sid_v2_pulse_hi"},{"a":2638,"t":"code","b":[141,17,212],"m":"sta","o":"sid_v3_pulse_hi"},{"a":2641,"t":"code","b":[96],"m":"rts"},{"a":2642,"l":"sid_update_voice3_control","c":"Advance voice-3 pulse-width state and assert its gate/waveform. Inputs: none. Outputs: none. Assumptions: I/O must be banked in, and the shared modulation phase $0D6E must be the caller's intended pulse source since the routine increments it as a side effect. The fixed $41 written to $D412 replaces any voice-3 waveform previously selected. Clobbers: A and flags. Hardware: writes control $D412=$41 and the evolving high pulse-width byte to $D411.","t":"code","b":[169,65],"m":"lda","x":[2743,3120,3180],"o":"#$41"},{"a":2644,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":2647,"t":"code","b":[238,110,13],"m":"inc","oa":3438,"o":"sid_modulation_phase"},{"a":2650,"t":"code","b":[173,110,13],"m":"lda","oa":3438,"o":"sid_modulation_phase"},{"a":2653,"t":"code","b":[9,8],"m":"ora","o":"#$08"},{"a":2655,"t":"code","b":[141,17,212],"m":"sta","o":"sid_v3_pulse_hi"},{"a":2658,"t":"code","b":[96],"m":"rts"},{"a":2659,"l":"sid_sequence_a_tick","c":"Run one tick of resident SID sequence A. It programs envelopes, advances $0815/$0816, indexes pitch/effect tables, updates voices 1-3, and sets completion flag $0D75=2. Inputs: persistent SID state and lookup tables. Outputs: none. Assumptions: Must run from the retained SID IRQ path with I/O banked in. Counters $0815/$0816 and the tables at $0AC7, $0BC8, $0BD0 and $0BF0 must already be initialised, and the counters must stay inside those table lengths: only the $0BC8 index is masked (AND #$07), the others are used raw or shifted. Clobbers: A,X,Y and flags; updates SID registers $D400-$D414. Hardware: Writes SID attack/decay for all three voices directly ($D405=$08, $D40C=$08, $D413=$6A) and, through its callees, the three frequency pairs $D400/$D401, $D407/$D408 and $D40E/$D40F, the control registers $D404/$D40B/$D412 and pulse-width $D411. No VIC or CIA register is touched.","t":"code","b":[169,8],"m":"lda","x":[2485],"o":"#$08"},{"a":2661,"t":"code","b":[141,5,212],"m":"sta","o":"sid_v1_attack_decay"},{"a":2664,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":2666,"t":"code","b":[141,12,212],"m":"sta","o":"sid_v2_attack_decay"},{"a":2669,"t":"code","b":[169,106],"m":"lda","o":"#$6A"},{"a":2671,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":2674,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":2676,"t":"code","b":[32,3,10],"m":"jsr","oa":2563,"o":"sid_voice2_select_frequency"},{"a":2679,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":2681,"t":"code","b":[32,26,8],"m":"jsr","oa":2074,"o":"sid_counter_0815_tick"},{"a":2684,"t":"code","b":[208,72],"m":"bne","oa":2758,"o":"LAB_0ac6"},{"a":2686,"t":"code","b":[172,22,8],"m":"ldy","oa":2070,"o":"sid_sequence_b_counter"},{"a":2689,"t":"code","b":[185,199,10],"m":"lda","oa":2759,"o":"AlterEgo_SID_sid_sequence_a_tables,y"},{"a":2692,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":2694,"t":"code","b":[32,47,10],"m":"jsr","oa":2607,"o":"sid_add_effect_offset"},{"a":2697,"t":"code","b":[32,100,8],"m":"jsr","oa":2148,"o":"sid_voice3_set_frequency"},{"a":2700,"t":"code","b":[173,22,8],"m":"lda","oa":2070,"o":"sid_sequence_b_counter"},{"a":2703,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":2705,"t":"code","b":[168],"m":"tay"},{"a":2706,"t":"code","b":[173,22,8],"m":"lda","oa":2070,"o":"sid_sequence_b_counter"},{"a":2709,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2710,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2711,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2712,"t":"code","b":[170],"m":"tax"},{"a":2713,"t":"code","b":[189,208,11],"m":"lda","oa":3024,"o":"sid_sequence_a_group_parameters,x"},{"a":2716,"t":"code","b":[170],"m":"tax"},{"a":2717,"t":"code","b":[185,200,11],"m":"lda","oa":3016,"o":"sid_sequence_a_eight_phase_notes,y"},{"a":2720,"t":"code","b":[32,47,10],"m":"jsr","oa":2607,"o":"sid_add_effect_offset"},{"a":2723,"t":"code","b":[32,46,8],"m":"jsr","oa":2094,"o":"sid_voice2_set_frequency"},{"a":2726,"t":"code","b":[173,22,8],"m":"lda","oa":2070,"o":"sid_sequence_b_counter"},{"a":2729,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2730,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":2731,"t":"code","b":[168],"m":"tay"},{"a":2732,"t":"code","b":[185,240,11],"m":"lda","oa":3056,"o":"sid_sequence_a_quarter_rate_notes,y"},{"a":2735,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":2737,"t":"code","b":[32,47,10],"m":"jsr","oa":2607,"o":"sid_add_effect_offset"},{"a":2740,"t":"code","b":[32,133,8],"m":"jsr","oa":2181,"o":"sid_voice1_set_frequency"},{"a":2743,"t":"code","b":[32,82,10],"m":"jsr","oa":2642,"o":"sid_update_voice3_control"},{"a":2746,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":2748,"t":"code","b":[32,164,8],"m":"jsr","oa":2212,"o":"sid_counter_0816_tick"},{"a":2751,"t":"code","b":[208,5],"m":"bne","oa":2758,"o":"LAB_0ac6"},{"a":2753,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":2755,"t":"code","b":[141,117,13],"m":"sta","oa":3445,"o":"sid_pending_command"},{"a":2758,"l":"LAB_0ac6","t":"code","b":[96],"m":"rts","x":[2684,2751]},{"a":2759,"l":"AlterEgo_SID_sid_sequence_a_tables","c":"Indexed note, transposition, and modulation tables consumed by sid_sequence_a_tick. Operand encodings reference bases $0AC7, $0BC8, $0BD0, and $0BF0. The zero-padded and repeated patterns are music/effect data, not 6510 instructions.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[2689]},{"a":2767,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2775,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2783,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2791,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2799,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2807,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2815,"t":"byte","b":[0,0,0,0,8,13,20,15]},{"a":2823,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2831,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2839,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2847,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2855,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2863,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2871,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2879,"t":"byte","b":[0,0,0,0,8,13,20,15]},{"a":2887,"t":"byte","b":[0,0,32,0,27,0,20,0]},{"a":2895,"t":"byte","b":[25,0,20,25,0,20,25,27]},{"a":2903,"t":"byte","b":[20,0,32,0,27,0,20,0]},{"a":2911,"t":"byte","b":[25,0,20,25,0,20,25,27]},{"a":2919,"t":"byte","b":[20,0,0,0,0,0,0,0]},{"a":2927,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2935,"t":"byte","b":[0,0,20,25,27,32,27,25]},{"a":2943,"t":"byte","b":[20,25,27,32,27,25,20,25]},{"a":2951,"t":"byte","b":[0,0,32,0,27,0,20,0]},{"a":2959,"t":"byte","b":[25,0,20,25,0,20,25,27]},{"a":2967,"t":"byte","b":[20,0,32,0,27,0,20,0]},{"a":2975,"t":"byte","b":[25,0,20,25,0,20,25,27]},{"a":2983,"t":"byte","b":[20,0,0,0,0,0,0,0]},{"a":2991,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":2999,"t":"byte","b":[0,0,20,25,27,32,27,25]},{"a":3007,"t":"byte","b":[20,25,27,32,27,25,20,25]},{"a":3015,"t":"byte","b":[0]},{"a":3016,"l":"sid_sequence_a_eight_phase_notes","c":"Eight note values selected by sequence counter $0816 AND 7 at $0A8F-$0AA0; companion group-dependent parameter comes from $0BD0. These belong to the retained SID player; the declared prompt IRQ uses $4229, so this source phase is not evidence that these sequences are sounding.","t":"byte","b":[8,0,20,0,8,0,20,0],"x":[2717]},{"a":3024,"l":"sid_sequence_a_group_parameters","c":"32 parameter values selected by sequence counter shifted right three at $0A92-$0A99. The result becomes X when the eight-phase note is passed to $0A2F. These belong to the retained SID player; the declared prompt IRQ uses $4229, so this source phase is not evidence that these sequences are sounding.","t":"byte","b":[24,24,24,24,22,27,26,31],"x":[2713]},{"a":3032,"t":"byte","b":[24,24,24,24,22,27,26,31]},{"a":3040,"t":"byte","b":[24,24,24,24,22,27,26,31]},{"a":3048,"t":"byte","b":[24,24,24,24,22,27,26,31]},{"a":3056,"l":"sid_sequence_a_quarter_rate_notes","c":"64 note values selected by sequence counter shifted right two at $0AA6-$0AAC, passed to $0A2F with X=$18. Values are note/control data, not arbitrary opcodes. These belong to the retained SID player; the declared prompt IRQ uses $4229, so this source phase is not evidence that these sequences are sounding.","t":"byte","b":[35,36,27,32,36,37,36,32],"x":[2732]},{"a":3064,"t":"byte","b":[34,30,25,25,0,0,0,0]},{"a":3072,"t":"byte","b":[35,36,27,32,36,37,36,32]},{"a":3080,"t":"byte","b":[34,30,25,25,0,0,0,0]},{"a":3088,"t":"byte","b":[36,32,27,32,36,37,36,32]},{"a":3096,"t":"byte","b":[34,30,25,25,0,0,0,0]},{"a":3104,"t":"byte","b":[36,32,27,32,36,37,36,32]},{"a":3112,"t":"byte","b":[34,30,25,25,0,0,0,0]},{"a":3120,"l":"sid_sequence_b_tick","c":"Run one tick of resident SID sequence B. It updates voice 3, selects table-driven frequencies for voices 2 and 3, pulses voice 2, advances the shared counters, and sets completion flag $0D75=1. Inputs: persistent SID state/tables. Outputs: none. Assumptions: Must run from the retained SID IRQ path with I/O banked in, with counters $0815/$0816 and the tables at $0C86, $0D46 and $0D4E already initialised. Only the $0D46 index is masked to three bits, so the counter must stay inside the other two tables. Clobbers: A,X,Y and flags; updates SID registers. Hardware: Writes voice-3 attack/decay $D413=$0B, voice-2 control $D40B=$41 and voice-2 pulse-width high $D40A=$08 directly; through its callees it also writes $D400/$D401, $D407/$D408, $D40E/$D40F, $D404/$D412 and $D411. No VIC or CIA register is touched.","t":"code","b":[32,82,10],"m":"jsr","oa":2642,"x":[2488],"o":"sid_update_voice3_control"},{"a":3123,"t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":3125,"t":"code","b":[141,19,212],"m":"sta","o":"sid_v3_attack_decay"},{"a":3128,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":3130,"t":"code","b":[32,3,10],"m":"jsr","oa":2563,"o":"sid_voice2_select_frequency"},{"a":3133,"t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":3135,"t":"code","b":[32,26,8],"m":"jsr","oa":2074,"o":"sid_counter_0815_tick"},{"a":3138,"t":"code","b":[208,65],"m":"bne","oa":3205,"o":"LAB_0c85"},{"a":3140,"t":"code","b":[172,22,8],"m":"ldy","oa":2070,"o":"sid_sequence_b_counter"},{"a":3143,"t":"code","b":[185,134,12],"m":"lda","oa":3206,"o":"AlterEgo_SID_sid_sequence_b_tables,y"},{"a":3146,"t":"code","b":[162,24],"m":"ldx","o":"#$18"},{"a":3148,"t":"code","b":[32,47,10],"m":"jsr","oa":2607,"o":"sid_add_effect_offset"},{"a":3151,"t":"code","b":[32,100,8],"m":"jsr","oa":2148,"o":"sid_voice3_set_frequency"},{"a":3154,"t":"code","b":[173,22,8],"m":"lda","oa":2070,"o":"sid_sequence_b_counter"},{"a":3157,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":3159,"t":"code","b":[168],"m":"tay"},{"a":3160,"t":"code","b":[173,22,8],"m":"lda","oa":2070,"o":"sid_sequence_b_counter"},{"a":3163,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":3164,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":3165,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":3166,"t":"code","b":[170],"m":"tax"},{"a":3167,"t":"code","b":[189,78,13],"m":"lda","oa":3406,"o":"sid_sequence_b_group_parameters,x"},{"a":3170,"t":"code","b":[170],"m":"tax"},{"a":3171,"t":"code","b":[185,70,13],"m":"lda","oa":3398,"o":"sid_sequence_b_eight_phase_notes,y"},{"a":3174,"t":"code","b":[32,47,10],"m":"jsr","oa":2607,"o":"sid_add_effect_offset"},{"a":3177,"t":"code","b":[32,46,8],"m":"jsr","oa":2094,"o":"sid_voice2_set_frequency"},{"a":3180,"t":"code","b":[32,82,10],"m":"jsr","oa":2642,"o":"sid_update_voice3_control"},{"a":3183,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":3185,"t":"code","b":[141,11,212],"m":"sta","o":"sid_v2_control"},{"a":3188,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":3190,"t":"code","b":[141,10,212],"m":"sta","o":"sid_v2_pulse_hi"},{"a":3193,"t":"code","b":[169,196],"m":"lda","o":"#$C4"},{"a":3195,"t":"code","b":[32,164,8],"m":"jsr","oa":2212,"o":"sid_counter_0816_tick"},{"a":3198,"t":"code","b":[208,5],"m":"bne","oa":3205,"o":"LAB_0c85"},{"a":3200,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":3202,"t":"code","b":[141,117,13],"m":"sta","oa":3445,"o":"sid_pending_command"},{"a":3205,"l":"LAB_0c85","t":"code","b":[96],"m":"rts","x":[3138,3198]},{"a":3206,"l":"AlterEgo_SID_sid_sequence_b_tables","c":"Indexed note and modulation tables consumed by sid_sequence_b_tick. Operand encodings reference bases $0C86, $0D46, and $0D4E. The alternating note bytes and zero padding are SID sequence data, not code.","t":"byte","b":[27,0,39,0,35,0,30,0],"x":[3143]},{"a":3214,"t":"byte","b":[40,0,0,0,42,0,0,0]},{"a":3222,"t":"byte","b":[40,0,0,0,39,0,37,0]},{"a":3230,"t":"byte","b":[0,0,30,0,35,0,37,0]},{"a":3238,"t":"byte","b":[39,0,0,0,0,0,0,0]},{"a":3246,"t":"byte","b":[0,0,0,0,0,0,39,0]},{"a":3254,"t":"byte","b":[38,0,0,0,38,0,0,0]},{"a":3262,"t":"byte","b":[39,0,0,0,41,0,0,0]},{"a":3270,"t":"byte","b":[42,0,41,0,39,0,0,0]},{"a":3278,"t":"byte","b":[0,0,0,0,0,0,39,0]},{"a":3286,"t":"byte","b":[39,0,0,0,39,0,0,0]},{"a":3294,"t":"byte","b":[42,0,0,0,44,0,0,0]},{"a":3302,"t":"byte","b":[42,0,41,0,39,0,0,0]},{"a":3310,"t":"byte","b":[0,0,0,0,0,0,39,0]},{"a":3318,"t":"byte","b":[38,0,0,0,38,0,0,0]},{"a":3326,"t":"byte","b":[39,0,0,0,41,0,0,0]},{"a":3334,"t":"byte","b":[42,0,41,0,39,0,0,0]},{"a":3342,"t":"byte","b":[0,0,0,0,0,0,39,0]},{"a":3350,"t":"byte","b":[39,0,0,0,39,0,0,0]},{"a":3358,"t":"byte","b":[42,0,0,0,44,0,0,0]},{"a":3366,"t":"byte","b":[42,0,41,0,39,0,0,0]},{"a":3374,"t":"byte","b":[0,0,0,0,0,0,39,0]},{"a":3382,"t":"byte","b":[38,0,0,0,38,0,0,0]},{"a":3390,"t":"byte","b":[39,0,0,0,41,0,0,0]},{"a":3398,"l":"sid_sequence_b_eight_phase_notes","c":"Eight note values selected by sequence counter AND 7 at $0C52-$0C66. Separate 25-byte group-parameter table starts at $0D4E. These belong to the retained SID player; the declared prompt IRQ uses $4229, so this source phase is not evidence that these sequences are sounding.","t":"byte","b":[8,13,20,15,8,15,20,18],"x":[3171]},{"a":3406,"l":"sid_sequence_b_group_parameters","c":"25 group parameters through $0D66, selected by sequence counter shifted right three at $0C58-$0C5F. They accompany the eight-phase note table $0D46; valid counter extent is determined by sequence completion, not a power-of-two allocation. These belong to the retained SID player; the declared prompt IRQ uses $4229, so this source phase is not evidence that these sequences are sounding.","t":"byte","b":[27,27,27,27,26,26,26,26],"x":[3167]},{"a":3414,"t":"byte","b":[31,31,29,29,27,27,26,26]},{"a":3422,"t":"byte","b":[31,31,29,29,27,27,26,26]},{"a":3430,"t":"byte","b":[24]},{"a":3431,"l":"sid_runtime_state","c":"Mutable SID-driver state: cached voice frequencies, selection mask, modulation/effect offsets, command state, and saved control bytes. These fields are updated by the resident voice setters, sequence ticks, reset path, and retained IRQ service.","t":"byte","b":[0,0],"x":[2536]},{"a":3433,"l":"sid_voice2_frequency_low_cache","c":"Voice-2 low-frequency byte also written to SID $D407 at $0836/$0839. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[12],"x":[2105,2502,2578]},{"a":3434,"l":"sid_voice2_frequency_high_cache","c":"Voice-2 high-frequency byte also written to SID $D408 at $0840/$0843. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[7],"x":[2112,2505,2584]},{"a":3435,"l":"sid_voice2_alternate_frequency_low","c":"Alternate low-frequency byte selected 12 note words above the original by $0849-$084F. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[24],"x":[2127,2496]},{"a":3436,"l":"sid_voice2_alternate_frequency_high","c":"High byte paired with alternate frequency $0D6B, loaded at $0853-$0856. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[14],"x":[2134,2499]},{"a":3437,"l":"sid_voice2_frequency_selection_mask","c":"Frequency-selection mask used by the retained modulation/voice service. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[5],"x":[2508,2563,2571]},{"a":3438,"l":"sid_modulation_phase","c":"Modulation-phase byte advanced by the retained voice service. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[222],"x":[2627,2630,2647,2650]},{"a":3439,"l":"sid_frequency_effect_offset","c":"Frequency-effect offset used by the retained voice update. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[0],"x":[2607,2610,2618]},{"a":3440,"l":"sid_filter_state","t":"byte","b":[255,0,1,0,0],"x":[2598]},{"a":3445,"l":"sid_pending_command","c":"Command byte: dispatcher $0990 tests its sign; $09A2 clears bit 7 and selects the command grid. Sequence completion writes low command values. Runtime state of the retained SID player; the prompt IRQ at $4229 is a separate current-phase occupant.","t":"byte","b":[129,7,15,10,0,0],"x":[2755,3202]},{"a":3451,"l":"sid_aux_state_0","t":"byte","b":[0],"x":[2539]},{"a":3452,"l":"sid_aux_state_1","t":"byte","b":[0,208,224,232,200,255,144,132],"x":[2542]},{"a":3460,"t":"byte","b":[201,157,188,159,204,188,167,204]},{"a":3468,"t":"byte","b":[207,175,234,234]},{"a":3472,"l":"retained_sid_irq_color_cycle_bytes","c":"PROVENANCE ONLY \u2014 exact retained earlier-phase SID IRQ colour-cycle tail at $0D90-$0DA4. Its instruction stream increments VIC-II colour registers $D027-$D029 and then chains toward the KERNAL IRQ path, but the first-interaction IRQ vector no longer selects it. Bytes $0DA0-$0DA1 are the operand of INC $D029, not an inline-native entry. Classified as data rather than reversing past logic.","t":"byte","b":[238,39,208,238,40,208,238,41]},{"a":3480,"t":"byte","b":[208,238,39,208,238,40,208,238]},{"a":3488,"t":"byte","b":[41,208,76,49,234]},{"a":3493,"l":"AlterEgo_SID_stored_sid_data_and_state_copy","c":"Stored 240-byte copy corresponding to RAM $0CB2-$0DA1 at delta +$00F3. It is byte-identical except for six mutable state bytes: $0D69-$0D6C,$0D6E,$0D6F versus $0E5C-$0E5F,$0E61,$0E62. This preserves the SID tables and initial state while the live copy changes.","t":"byte","b":[0,0,39,0,38,0,0,0]},{"a":3501,"t":"byte","b":[38,0,0,0,39,0,0,0]},{"a":3509,"t":"byte","b":[41,0,0,0,42,0,41,0]},{"a":3517,"t":"byte","b":[39,0,0,0,0,0,0,0]},{"a":3525,"t":"byte","b":[0,0,39,0,39,0,0,0]},{"a":3533,"t":"byte","b":[39,0,0,0,42,0,0,0]},{"a":3541,"t":"byte","b":[44,0,0,0,42,0,41,0]},{"a":3549,"t":"byte","b":[39,0,0,0,0,0,0,0]},{"a":3557,"t":"byte","b":[0,0,39,0,38,0,0,0]},{"a":3565,"t":"byte","b":[38,0,0,0,39,0,0,0]},{"a":3573,"t":"byte","b":[41,0,0,0,42,0,41,0]},{"a":3581,"t":"byte","b":[39,0,0,0,0,0,0,0]},{"a":3589,"t":"byte","b":[0,0,39,0,39,0,0,0]},{"a":3597,"t":"byte","b":[39,0,0,0,42,0,0,0]},{"a":3605,"t":"byte","b":[44,0,0,0,42,0,41,0]},{"a":3613,"t":"byte","b":[39,0,0,0,0,0,0,0]},{"a":3621,"t":"byte","b":[0,0,39,0,38,0,0,0]},{"a":3629,"t":"byte","b":[38,0,0,0,39,0,0,0]},{"a":3637,"t":"byte","b":[41,0,0,0,8,13,20,15]},{"a":3645,"t":"byte","b":[8,15,20,18,27,27,27,27]},{"a":3653,"t":"byte","b":[26,26,26,26,31,31,29,29]},{"a":3661,"t":"byte","b":[27,27,26,26,31,31,29,29]},{"a":3669,"t":"byte","b":[27,27,26,26,24,0,0,104]},{"a":3677,"t":"byte","b":[9,209,18,5,40,15,255,0]},{"a":3685,"t":"byte","b":[1,0,0,129,7,15,10,0]},{"a":3693,"t":"byte","b":[0,0,0,208,224,232,200,255]},{"a":3701,"t":"byte","b":[144,132,201,157,188,159,204,188]},{"a":3709,"t":"byte","b":[167,204,207,175,234,234,238,39]},{"a":3717,"t":"byte","b":[208,238,40,208,238,41,208,238]},{"a":3725,"t":"byte","b":[39,208,238,40,208,238,41,208]},{"a":3733,"l":"retained_prior_phase_kernal_irq_chain","c":"PRIOR-PHASE IRQ tail that jumps to KERNAL normal IRQ handler $EA31, which services CIA timing/keyboard and restores registers before RTI. No current-phase edge reaches it; the active IRQ vector is $4229. Retained as transition provenance, not gameplay logic. Assumptions: Only valid with KERNAL ROM banked in (HIRAM set in $01), otherwise $EA31 is the hidden game data underneath rather than ROM, and only when entered from the retained $097A IRQ path with the interrupt stack frame intact, because $EA31 pulls Y, X and A and then RTIs. Hardware: A single JMP to KERNAL $EA31. It touches no register itself, but $EA31 acknowledges CIA 1 timer A by reading $DC0D, runs SCNKEY over the CIA 1 keyboard matrix, updates the jiffy clock and restores registers before RTI. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to KERNAL kernal_normal_irq_handler, whose inputs apply unchanged. Outputs: no memory write of its own; the effect is the transfer of control to KERNAL kernal_normal_irq_handler with the register state established above. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,49,234],"m":"jmp","oa":59953,"o":"j_EA31"},{"a":3736,"l":"retained_prior_phase_enter_game_bootstrap","c":"PRIOR-PHASE bootstrap. It set border/background and KERNAL text color to black, prepared source bounds $1000-$1FFF and destination bound $CFFF, called the then-current occupant at $A3BF, then transferred through $4000 into resident startup. At the captured boundary $A3BF has been overwritten by active VM data; the transition result, not the excluded copier internals, is relevant to gameplay. Assumptions: Prior-phase only: it assumes the copier at $A3BF is still resident (at the captured boundary those bytes are active VM data), that I/O is banked in for the $D020/$D021 writes, and that the staged source bounds $1000-$1FFF and destination end $CFFF describe the packed image. It ends in a JMP, so no return is expected. Hardware: Writes VIC-II border colour $D020 and background colour 0 $D021 with $00 and the KERNAL text-colour workspace at $0286; every other store is a plain RAM parameter byte. It then calls the overwritten copier and transfers to $4000. Inputs: none; the body writes every location it uses before reading it. Outputs: writes BORDER_COLOR, BACKGROUND_COLOR_0, TEXT_COLOR, retained_bootstrap_source_start_lo, retained_bootstrap_source_start_hi, retained_bootstrap_source_end_lo, retained_bootstrap_source_end_hi, retained_bootstrap_copy_parameters, retained_bootstrap_destination_end_hi; control then leaves through alter_ego_entry. Clobbers: A and the processor flags; writes the locations named under Outputs.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":3738,"t":"code","b":[141,32,208],"m":"sta","o":"vic_border"},{"a":3741,"t":"code","b":[141,33,208],"m":"sta","o":"vic_background0"},{"a":3744,"t":"code","b":[141,134,2],"m":"sta","oa":646,"o":"C64_WORKSPACE_TEXT_COLOR"},{"a":3747,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":3749,"t":"code","b":[133,95],"m":"sta","oa":95,"o":"retained_bootstrap_source_start_lo"},{"a":3751,"t":"code","b":[169,16],"m":"lda","o":"#$10"},{"a":3753,"t":"code","b":[133,96],"m":"sta","oa":96,"o":"retained_bootstrap_source_start_hi"},{"a":3755,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":3757,"t":"code","b":[133,90],"m":"sta","oa":90,"o":"retained_bootstrap_source_end_lo"},{"a":3759,"t":"code","b":[169,31],"m":"lda","o":"#$1F"},{"a":3761,"t":"code","b":[133,91],"m":"sta","oa":91,"o":"retained_bootstrap_source_end_hi"},{"a":3763,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":3765,"t":"code","b":[133,88],"m":"sta","oa":88,"o":"retained_bootstrap_copy_parameters"},{"a":3767,"t":"code","b":[169,207],"m":"lda","o":"#$CF"},{"a":3769,"t":"code","b":[133,89],"m":"sta","oa":89,"o":"retained_bootstrap_destination_end_hi"},{"a":3771,"t":"code","b":[32,191,163],"m":"jsr","oa":41919,"o":"overwritten_prior_phase_bootstrap_target_bytes"},{"a":3774,"t":"code","b":[76,0,64],"m":"jmp","oa":16384,"o":"alter_ego_entry"},{"a":3777,"l":"AlterEgo_Bootstrap_retained_bootstrap_padding","c":"Zero-filled gap between the retained earlier-phase bootstrap and its duplicate copy. These bytes are inactive padding in the first-interaction snapshot.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3785,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3793,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3801,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3809,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3817,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3825,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3833,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":3840,"l":"AlterEgo_Bootstrap_stored_bootstrap_copy","c":"Stored 41-byte copy exactly matching RAM $0E98-$0EC0. It is retained data in this snapshot, not a second independently executed routine. The copied earlier-phase bootstrap clears display colors, establishes copy bounds, calls the now-overwritten $A3BF phase occupant, and jumps to $4000.","t":"byte","b":[169,0,141,32,208,141,33,208]},{"a":3848,"t":"byte","b":[141,134,2,169,0,133,95,169]},{"a":3856,"t":"byte","b":[16,133,96,169,255,133,90,169]},{"a":3864,"t":"byte","b":[31,133,91,169,255,133,88,169]},{"a":3872,"t":"byte","b":[207,133,89,32,191,163,76,0]},{"a":3880,"t":"byte","b":[64]},{"a":3881,"l":"AlterEgo_Bootstrap_retained_bootstrap_zero_fill","c":"Zero-filled tail following the stored bootstrap copy. Classified as inactive retained-loader storage in the first-interaction snapshot.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3889,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3897,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3905,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3913,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3921,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3929,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3937,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3945,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3953,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3961,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3969,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3977,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3985,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":3993,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4001,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4009,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4017,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4025,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4033,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4041,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4049,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4057,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4065,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4073,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4081,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4089,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":4096,"l":"retained_high_ram_initialization_image","c":"4096-byte prior-phase source image $1000-$1FFF selected by the retained bootstrap $0E98: source start $1000, end $1FFF, destination end $CFFF. At actual hand-over $4000, 4095 bytes agree with physical $C000-$CFFF; only $CFFF differs. At the name prompt 52 bytes differ, all in the live VM frame/stack tail. The image includes dictionary suffixes, scene/state buffers and saved frame records, not merely blank stack storage. Copier internals at $A3BF have been overwritten in the declared Source phase.","t":"byte","b":[104,111,108,32,101,112,108,97]},{"a":4104,"t":"byte","b":[115,105,99,32,117,32,104,103]},{"a":4112,"t":"byte","b":[32,118,101,32,117,10,101,100]},{"a":4120,"t":"byte","b":[73,116,105,32,102,117,108,108]},{"a":4128,"t":"byte","b":[32,102,109,108,46,10,111,116]},{"a":4136,"t":"byte","b":[104,114,32,97,121,115,32,34]},{"a":4144,"t":"byte","b":[80,117,32,32,103,100,111,110]},{"a":4152,"t":"byte","b":[111,32,116,97,98,101,98,102]},{"a":4160,"t":"byte","b":[111,114,121,117,10,112,105,108]},{"a":4168,"t":"byte","b":[105,46,34,0,32,34,79,46]},{"a":4176,"t":"byte","b":[75,46,32,78,68,32,85,84]},{"a":4184,"t":"byte","b":[32,79,87,78,32,32,77,85]},{"a":4192,"t":"byte","b":[71,0,34,78,79,33,34,2]},{"a":4200,"t":"byte","b":[8,0,2,12,1,3,2,2]},{"a":4208,"t":"byte","b":[1,5,0,16,0,17,0,55]},{"a":4216,"t":"byte","b":[0,72,0,77,109,32,117,110]},{"a":4224,"t":"byte","b":[32,119,97,46,0,83,65,82]},{"a":4232,"t":"byte","b":[84,80,65,89,73,71,32,87]},{"a":4240,"t":"byte","b":[73,84,72,32,67,80,10,32]},{"a":4248,"t":"byte","b":[65,71,65,78,32,68,73,75]},{"a":4256,"t":"byte","b":[84,69,77,73,76,75,0,4]},{"a":4264,"t":"byte","b":[5,1,10,5,20,1,6,1]},{"a":4272,"t":"byte","b":[4,2,5,0,84,0,83,117]},{"a":4280,"t":"byte","b":[101,100,99,97,119,121,33,32]},{"a":4288,"t":"byte","b":[117,122,111,109,10,83,112,100]},{"a":4296,"t":"byte","b":[107,32,101,121,114,104,97,44]},{"a":4304,"t":"byte","b":[115,104,119,101,105,116,101,107]},{"a":4312,"t":"byte","b":[105,99,101,32,105,10,108,0]},{"a":4320,"t":"byte","b":[254,0,4,0,5,0,192,0]},{"a":4328,"t":"byte","b":[111,109,100,101,115,110,39,116]},{"a":4336,"t":"byte","b":[110,111,105,101,116,32,101,115]},{"a":4344,"t":"byte","b":[10,110,116,108,115,101,115,108]},{"a":4352,"t":"byte","b":[105,112,115,111,105,32,100,108]},{"a":4360,"t":"byte","b":[110,115,114,103,116,111,116,102]},{"a":4368,"t":"byte","b":[108,111,46,70,111,116,117,97]},{"a":4376,"t":"byte","b":[101,108,121,44,115,32,100,115]},{"a":4384,"t":"byte","b":[39,32,101,116,10,117,116,46]},{"a":4392,"t":"byte","b":[66,117,115,121,101,108,115,108]},{"a":4400,"t":"byte","b":[117,100,121,46,73,32,117,115]},{"a":4408,"t":"byte","b":[121,32,114,32,32,10,101,103]},{"a":4416,"t":"byte","b":[105,116,32,121,32,32,101,32]},{"a":4424,"t":"byte","b":[97,46,1,254,1,5,0,4]},{"a":4432,"t":"byte","b":[1,5,0,210,0,89,32,116]},{"a":4440,"t":"byte","b":[99,97,117,104,46,78,111,32]},{"a":4448,"t":"byte","b":[118,110,10,117,114,117,107,119]},{"a":4456,"t":"byte","b":[108,32,101,112,32,32,117,10]},{"a":4464,"t":"byte","b":[111,116,105,109,115,115,89,103]},{"a":4472,"t":"byte","b":[101,32,101,0,0,0,0,0]},{"a":4480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":4664,"t":"byte","b":[0,0,0,0,0,32,121,32]},{"a":4672,"t":"byte","b":[0,0,2,0,4,1,199,0]},{"a":4680,"t":"byte","b":[0,0,66,2,32,2,0,0]},{"a":4688,"t":"byte","b":[0,0,1,0,3,0,7,0]},{"a":4696,"t":"byte","b":[15,0,31,0,63,0,127,0]},{"a":4704,"t":"byte","b":[255,0,255,1,255,3,255,7]},{"a":4712,"t":"byte","b":[255,15,61,172,75,172,91,172]},{"a":4720,"t":"byte","b":[111,172,125,172,141,172,156,172]},{"a":4728,"t":"byte","b":[174,172,188,172,200,172,220,172]},{"a":4736,"t":"byte","b":[241,172,1,173,11,173,20,173]},{"a":4744,"t":"byte","b":[40,173,59,173,78,173,90,173]},{"a":4752,"t":"byte","b":[110,173,122,173,136,173,156,173]},{"a":4760,"t":"byte","b":[164,173,213,207,0,0,0,1]},{"a":4768,"t":"byte","b":[0,0,1,254,0,1,9,5]},{"a":4776,"t":"byte","b":[0,30,0,4,0,1,0,5]},{"a":4784,"t":"byte","b":[2,0,0,0,117,1,68,97]},{"a":4792,"t":"byte","b":[114,101,100,101,118,105,108,32]},{"a":4800,"t":"byte","b":[97,99,116,115,32,108,105,107]},{"a":4808,"t":"byte","b":[101,32,116,104,105,115,32,119]},{"a":4816,"t":"byte","b":[105,108,108,10,112,114,111,98]},{"a":4824,"t":"byte","b":[97,98,108,121,32,110,111,116]},{"a":4832,"t":"byte","b":[32,98,101,32,118,101,114,121]},{"a":4840,"t":"byte","b":[32,117,110,99,111,109,109,111]},{"a":4848,"t":"byte","b":[110,10,105,110,32,121,111,117]},{"a":4856,"t":"byte","b":[114,32,108,105,102,101,46,32]},{"a":4864,"t":"byte","b":[80,108,101,97,115,101,32,116]},{"a":4872,"t":"byte","b":[114,121,32,116,111,10,97,112]},{"a":4880,"t":"byte","b":[112,114,111,97,99,104,32,116]},{"a":4888,"t":"byte","b":[104,101,109,32,119,105,116,104]},{"a":4896,"t":"byte","b":[32,97,116,32,108,101,97,115]},{"a":4904,"t":"byte","b":[116,32,97,10,99,111,110,99]},{"a":4912,"t":"byte","b":[101,114,110,32,102,111,114,32]},{"a":4920,"t":"byte","b":[121,111,117,114,32,111,119,110]},{"a":4928,"t":"byte","b":[10,119,101,108,108,45,98,101]},{"a":4936,"t":"byte","b":[105,110,103,44,32,105,102,32]},{"a":4944,"t":"byte","b":[110,111,116,32,102,111,114,32]},{"a":4952,"t":"byte","b":[116,104,101,10,119,101,108,108]},{"a":4960,"t":"byte","b":[45,98,101,105,110,103,32,111]},{"a":4968,"t":"byte","b":[102,32,111,116,104,101,114,115]},{"a":4976,"t":"byte","b":[46,32,65,102,116,101,114,10]},{"a":4984,"t":"byte","b":[116,104,114,101,101,32,99,108]},{"a":4992,"t":"byte","b":[111,115,101,32,99,97,108,108]},{"a":5000,"t":"byte","b":[115,32,116,104,101,32,115,112]},{"a":5008,"t":"byte","b":[111,111,110,10,97,110,100,32]},{"a":5016,"t":"byte","b":[99,117,112,32,115,112,105,108]},{"a":5024,"t":"byte","b":[108,32,97,108,108,32,111,118]},{"a":5032,"t":"byte","b":[101,114,32,121,111,117,46,10]},{"a":5040,"t":"byte","b":[89,111,117,32,115,117,102,102]},{"a":5048,"t":"byte","b":[101,114,32,116,101,109,112,111]},{"a":5056,"t":"byte","b":[114,97,114,121,32,112,104,121]},{"a":5064,"t":"byte","b":[115,105,99,97,108,10,100,105]},{"a":5072,"t":"byte","b":[115,116,114,101,115,115,32,40]},{"a":5080,"t":"byte","b":[109,105,108,100,41,32,98,101]},{"a":5088,"t":"byte","b":[99,97,117,115,101,32,121,111]},{"a":5096,"t":"byte","b":[117,10,104,97,118,101,32,116]},{"a":5104,"t":"byte","b":[111,32,98,101,32,99,108,101]},{"a":5112,"t":"byte","b":[97,110,101,100,32,97,110,100]},{"a":5120,"l":"high_ram_initialization_source_1400","c":"Continuation of the 4096-byte bootstrap source image: $1400-$17FF pairs with high RAM beginning $C400. Includes the last 44 bytes of the seeded current scene descriptor before retained high-RAM configuration/workspace. Actual hand-over matches every paired byte in this segment. The bootstrap sets the complete $1000-$1FFF source bounds; these subdivision labels describe stored source bytes, not independently executable code.","t":"byte","b":[10,99,104,97,110,103,101,100]},{"a":5128,"t":"byte","b":[46,32,89,111,117,32,109,97]},{"a":5136,"t":"byte","b":[107,101,32,121,111,117,114,32]},{"a":5144,"t":"byte","b":[109,111,116,104,101,114,10,97]},{"a":5152,"t":"byte","b":[103,103,114,97,118,97,116,101]},{"a":5160,"t":"byte","b":[100,46,0,0,105,108,32,71]},{"a":5168,"t":"byte","b":[114,97,110,100,109,97,10,105]},{"a":5176,"t":"byte","b":[110,116,101,114,118,101,110,101]},{"a":5184,"t":"byte","b":[115,46,32,87,104,101,110,32]},{"a":5192,"t":"byte","b":[71,114,97,110,100,109,97,10]},{"a":5200,"t":"byte","b":[116,114,105,101,115,32,116,111]},{"a":5208,"t":"byte","b":[32,104,101,108,112,32,121,111]},{"a":5216,"t":"byte","b":[117,58,0,0,32,32,76,65]},{"a":5224,"t":"byte","b":[85,71,72,32,69,86,69,78]},{"a":5232,"t":"byte","b":[32,72,65,82,68,69,82,0]},{"a":5240,"t":"byte","b":[32,32,71,69,84,32,73,78]},{"a":5248,"t":"byte","b":[84,79,32,89,79,85,82,32]},{"a":5256,"t":"byte","b":[83,85,73,84,0,0,0,0]},{"a":5264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5408,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5816,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5824,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5832,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5840,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5872,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5880,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5888,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5936,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5944,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5952,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":5992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6144,"l":"high_ram_initialization_source_1800","c":"Continuation of the 4096-byte bootstrap source image: $1800-$1BFF pairs with high RAM beginning $C800. Includes the seeded scene-stream metadata and forty boundary offsets at source $1AE5, paired with $CAE5. Actual hand-over matches every paired byte in this segment. The bootstrap sets the complete $1000-$1FFF source bounds; these subdivision labels describe stored source bytes, not independently executable code.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6152,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6168,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6216,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6224,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6408,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6528,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6536,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6544,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6552,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6560,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6568,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6576,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6592,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6600,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6608,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":6816,"t":"byte","b":[0,0,0,0,2,8,7,5]},{"a":6824,"t":"byte","b":[14,4,12,10,92,1,0,31]},{"a":6832,"t":"byte","b":[0,4,0,5,0,105,132,1]},{"a":6840,"t":"byte","b":[0,125,132,4,0,139,132,6]},{"a":6848,"t":"byte","b":[0,154,132,8,0,171,132,10]},{"a":6856,"t":"byte","b":[0,181,132,12,0,0,0,0]},{"a":6864,"t":"byte","b":[0,32,0,17,0,19,0,24]},{"a":6872,"t":"byte","b":[0,8,0,1,0,162,194,192]},{"a":6880,"t":"byte","b":[30,49,20,40,0,0,0,98]},{"a":6888,"t":"byte","b":[1,166,2,14,3,122,3,74]},{"a":6896,"t":"byte","b":[4,48,5,232,5,150,6,148]},{"a":6904,"t":"byte","b":[7,12,8,188,8,40,9,252]},{"a":6912,"t":"byte","b":[9,192,10,46,11,142,11,246]},{"a":6920,"t":"byte","b":[11,176,12,236,12,232,13,114]},{"a":6928,"t":"byte","b":[14,22,15,10,16,232,16,254]},{"a":6936,"t":"byte","b":[17,26,19,162,19,4,20,18]},{"a":6944,"t":"byte","b":[21,124,22,144,23,26,25,140]},{"a":6952,"t":"byte","b":[25,0,26,78,27,186,27,192]},{"a":6960,"t":"byte","b":[28,200,29,192,30,106,24,190]},{"a":6968,"t":"byte","b":[24,78,25,168,25,36,26,144]},{"a":6976,"t":"byte","b":[26,22,27,132,27,0,28,84]},{"a":6984,"t":"byte","b":[28,0,0,0,0,0,0,0]},{"a":6992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7144,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7152,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7160,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7168,"l":"high_ram_initialization_source_1c00","c":"Continuation of the 4096-byte bootstrap source image: $1C00-$1F82 pairs with high RAM beginning $CC00. Includes the seeded MAP span cursor at source $1C65 and unused/saved VM frame backing above it. Actual hand-over matches every paired byte in this segment. The bootstrap sets the complete $1000-$1FFF source bounds; these subdivision labels describe stored source bytes, not independently executable code.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7176,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7184,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7192,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7216,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7224,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7264,"t":"byte","b":[0,0,0,0,0,180,91,1]},{"a":7272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7384,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7392,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7400,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7408,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7424,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7432,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7440,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7448,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7456,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7472,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7480,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7488,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7496,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7512,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7528,"t":"byte","b":[0,8,0,152,126,7,0,0]},{"a":7536,"t":"byte","b":[5,0,221,92,123,205,127,205]},{"a":7544,"t":"byte","b":[127,204,0,16,117,0,0,223]},{"a":7552,"t":"byte","b":[116,136,205,175,205,145,136,0]},{"a":7560,"t":"byte","b":[140,205,1,0,16,117,0,0]},{"a":7568,"t":"byte","b":[0,0,0,0,8,0,152,126]},{"a":7576,"t":"byte","b":[7,0,0,5,0,105,93,166]},{"a":7584,"t":"byte","b":[205,172,205,168,70,0,3,4]},{"a":7592,"t":"byte","b":[3,0,223,116,179,205,223,116]},{"a":7600,"t":"byte","b":[183,205,187,207,193,137,0,247]},{"a":7608,"t":"byte","b":[130,0,0,0,0,0,0,0]},{"a":7616,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7624,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7632,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7640,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7664,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7680,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7688,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7704,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7728,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7744,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7760,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7768,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7776,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7792,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7800,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7808,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7816,"t":"byte","b":[0,0,0,0,0,0,0,48]},{"a":7824,"t":"byte","b":[0,9,0,5,0,0,8,0]},{"a":7832,"t":"byte","b":[11,0,21,0,0,8,0,0]},{"a":7840,"t":"byte","b":[46,0,11,0,15,0,0,8]},{"a":7848,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7856,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7864,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7872,"t":"byte","b":[0,0,0,41,0,9,0,8]},{"a":7880,"t":"byte","b":[0,0,8,211,206,0,224,78]},{"a":7888,"t":"byte","b":[111,110,101,0,0,0,0,0]},{"a":7896,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7904,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7912,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7920,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7928,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":7936,"t":"byte","b":[0,0,0,248,29,48,0,0]},{"a":7944,"t":"byte","b":[0,222,116,17,207,27,207,27]},{"a":7952,"t":"byte","b":[90,33,128,248,29,0,0,48]},{"a":7960,"t":"byte","b":[0,64,0,222,116,35,207,49]},{"a":7968,"t":"byte","b":[207,101,89,33,128,248,29,0]},{"a":7976,"t":"byte","b":[0,48,0,3,0,24,1,3]},{"a":7984,"t":"byte","b":[0,222,116,57,207,79,207,239]},{"a":7992,"t":"byte","b":[85,80,29,197,129,93,130,4]},{"a":8000,"t":"byte","b":[0,32,0,31,0,17,0,11]},{"a":8008,"t":"byte","b":[1,0,0,5,0,0,0,222]},{"a":8016,"t":"byte","b":[116,87,207,169,207,4,0,1]},{"a":8024,"t":"byte","b":[0,23,0,0,8,22,0,8]},{"a":8032,"t":"byte","b":[0,48,32,49,0,32,32,32]},{"a":8040,"t":"byte","b":[21,0,0,0,168,171,128,207]},{"a":8048,"t":"byte","b":[0,0,33,222,116,123,207,125]},{"a":8056,"t":"byte","b":[207,11,87,16,0,222,116,133]},{"a":8064,"t":"byte","b":[207,4,0]},{"a":8067,"l":"retained_vm_frame_seed_tail","c":"125 bytes $1F83-$1FFF at the end of the retained high-RAM initialization source. Its paired destination is $CF83-$CFFF, where startup changes live VM frames and expression stack. At hand-over all but the final paired byte match; at the name prompt this region contains all 52 source/destination differences. It is a seed image of frame state, not current execution bytes.","t":"byte","b":[1,21,208,21,208,222,116,144]},{"a":8075,"t":"byte","b":[207,222,116,148,207,150,207,11]},{"a":8083,"t":"byte","b":[87,0,0,222,116,158,207,168]},{"a":8091,"t":"byte","b":[207,157,75,0,0,0,0,0]},{"a":8099,"t":"byte","b":[0,2,0,17,0,222,116,176]},{"a":8107,"t":"byte","b":[207,213,207,106,141,142,148,0]},{"a":8115,"t":"byte","b":[0,0,105,93,190,207,196,207]},{"a":8123,"t":"byte","b":[192,206,0,44,21,8,3,8]},{"a":8131,"t":"byte","b":[0,223,116,205,207,215,207,68]},{"a":8139,"t":"byte","b":[75,4,102,132,44,21,101,196]},{"a":8147,"t":"byte","b":[44,21,222,116,221,207,233,207]},{"a":8155,"t":"byte","b":[150,64,102,132,0,0,102,132]},{"a":8163,"t":"byte","b":[8,45,0,0,64,0,222,116]},{"a":8171,"t":"byte","b":[241,207,247,207,240,101,0,0]},{"a":8179,"t":"byte","b":[0,0,10,0,0,10,255,207]},{"a":8187,"t":"byte","b":[179,34,34,0,0]},{"a":8192,"t":"gap","n":8000},{"a":8192,"t":"note","l":"AlterEgo_Display_first_interaction_hires_bitmap","c":"Active 320x200 one-bit bitmap for the first-name prompt. VIC $D011 bit 5 enables bitmap mode; $DD00 and $D018 select bitmap base $2000 and colour matrix $0400. Rendering these exact 8000 bytes shows the prompt text and underline cursor.","note":"outside the tracked image"},{"a":8263,"t":"note","l":"screen_transfer_block_2047","note":"outside the tracked image"},{"a":8512,"t":"note","l":"bitmap_character_row_2140","note":"outside the tracked image"},{"a":8583,"t":"note","l":"screen_transfer_block_2187","note":"outside the tracked image"},{"a":8832,"t":"note","l":"bitmap_character_row_2280","note":"outside the tracked image"},{"a":8903,"t":"note","l":"screen_transfer_block_22c7","note":"outside the tracked image"},{"a":9152,"t":"note","l":"bitmap_character_row_23c0","note":"outside the tracked image"},{"a":9223,"t":"note","l":"screen_transfer_block_2407","note":"outside the tracked image"},{"a":9472,"t":"note","l":"bitmap_character_row_2500","note":"outside the tracked image"},{"a":9543,"t":"note","l":"screen_transfer_block_2547","note":"outside the tracked image"},{"a":9792,"t":"note","l":"bitmap_character_row_2640","note":"outside the tracked image"},{"a":9863,"t":"note","l":"screen_transfer_block_2687","note":"outside the tracked image"},{"a":10112,"t":"note","l":"bitmap_character_row_2780","note":"outside the tracked image"},{"a":10183,"t":"note","l":"screen_transfer_block_27c7","note":"outside the tracked image"},{"a":10432,"t":"note","l":"bitmap_character_row_28c0","note":"outside the tracked image"},{"a":10503,"t":"note","l":"screen_transfer_block_2907","note":"outside the tracked image"},{"a":10752,"t":"note","l":"bitmap_character_row_2a00","note":"outside the tracked image"},{"a":10823,"t":"note","l":"screen_transfer_block_2a47","note":"outside the tracked image"},{"a":11072,"t":"note","l":"bitmap_character_row_2b40","note":"outside the tracked image"},{"a":11143,"t":"note","l":"screen_transfer_block_2b87","note":"outside the tracked image"},{"a":11392,"t":"note","l":"bitmap_character_row_2c80","note":"outside the tracked image"},{"a":11463,"t":"note","l":"screen_transfer_block_2cc7","note":"outside the tracked image"},{"a":11712,"t":"note","l":"bitmap_character_row_2dc0","note":"outside the tracked image"},{"a":11783,"t":"note","l":"screen_transfer_block_2e07","note":"outside the tracked image"},{"a":12032,"t":"note","l":"bitmap_character_row_2f00","note":"outside the tracked image"},{"a":12103,"t":"note","l":"screen_transfer_block_2f47","note":"outside the tracked image"},{"a":12352,"t":"note","l":"bitmap_character_row_3040","note":"outside the tracked image"},{"a":12423,"t":"note","l":"screen_transfer_block_3087","note":"outside the tracked image"},{"a":12672,"t":"note","l":"bitmap_character_row_3180","note":"outside the tracked image"},{"a":12743,"t":"note","l":"screen_transfer_block_31c7","note":"outside the tracked image"},{"a":12992,"t":"note","l":"bitmap_character_row_32c0","note":"outside the tracked image"},{"a":13063,"t":"note","l":"screen_transfer_block_3307","note":"outside the tracked image"},{"a":13312,"t":"note","l":"bitmap_character_row_3400","note":"outside the tracked image"},{"a":13383,"t":"note","l":"screen_transfer_block_3447","note":"outside the tracked image"},{"a":13632,"t":"note","l":"bitmap_character_row_3540","note":"outside the tracked image"},{"a":13703,"t":"note","l":"screen_transfer_block_3587","note":"outside the tracked image"},{"a":13952,"t":"note","l":"bitmap_character_row_3680","note":"outside the tracked image"},{"a":14023,"t":"note","l":"screen_transfer_block_36c7","note":"outside the tracked image"},{"a":14272,"t":"note","l":"bitmap_character_row_37c0","note":"outside the tracked image"},{"a":14343,"t":"note","l":"screen_transfer_block_3807","note":"outside the tracked image"},{"a":14592,"t":"note","l":"bitmap_character_row_3900","note":"outside the tracked image"},{"a":14663,"t":"note","l":"screen_transfer_block_3947","note":"outside the tracked image"},{"a":14912,"t":"note","l":"bitmap_character_row_3a40","note":"outside the tracked image"},{"a":14983,"t":"note","l":"screen_transfer_block_3a87","note":"outside the tracked image"},{"a":15232,"t":"note","l":"bitmap_character_row_3b80","note":"outside the tracked image"},{"a":15303,"t":"note","l":"screen_transfer_block_3bc7","note":"outside the tracked image"},{"a":15552,"t":"note","l":"bitmap_character_row_3cc0","note":"outside the tracked image"},{"a":15623,"t":"note","l":"screen_transfer_block_3d07","note":"outside the tracked image"},{"a":15872,"t":"note","l":"bitmap_character_row_3e00","note":"outside the tracked image"},{"a":15943,"t":"note","l":"screen_transfer_block_3e47","note":"outside the tracked image"},{"a":16192,"l":"AlterEgo_Display_bitmap_page_tail","c":"Unused 192-byte tail after the 8000-byte hires bitmap inside the $2000-$3FFF VIC allocation. It is not fetched for the visible 40x25 bitmap.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16200,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16208,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16216,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16224,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16232,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16240,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16248,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16256,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16264,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16272,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16304,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16312,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16320,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16328,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16336,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16352,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16368,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16376,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":16384,"l":"alter_ego_entry","c":"Resident Alter Ego entry point reached after unpacking. It immediately jumps to native startup $6557, which banks BASIC ROM out, initializes the VM expression stack near $CFFF, and transfers to top-level VM procedure $65A7. Assumptions: Reached exactly once, by JMP from the prior-phase bootstrap at $0EBE, after the resident image has been depacked into $4000-$CFFF. It is a JMP, so no return address is expected, and the banking change is made by the callee rather than here. Hardware: Touches no hardware: a single JMP to native_startup_enter_vm at $6557, which is where LORAM in the 6510 port $01 is cleared. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to native_startup_enter_vm, whose inputs apply unchanged. Outputs: no memory write of its own; the effect is the transfer of control to native_startup_enter_vm with the register state established above. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,87,101],"m":"jmp","oa":25943,"x":[3774],"o":"native_startup_enter_vm"},{"a":16387,"l":"initialize_alter_ego_runtime","c":"Initialize the resident runtime and enter the game's main phase dispatch.\nInputs: none.\nOutputs: returns only when the selected game path returns.\nAssumptions: the resident image, VM startup frame and MAP stream bootstrap are present.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; clears the 64-word state vector; initializes vectors, display, IRQ, MAP I/O, heap and phase globals at $7FC8/$81F5/$8463.\nHardware: installs under-ROM vectors, configures VIC-II display/sprite state and uses IEC.\nEntry protocol: JSR $70F8; signed frame adjustment -8; bytecode $4008-$40E0 (110 decoded operations); native calls $4109, $43B3, $4AEE, $4B4F, $4CA1, $5677, $5B6C, $5C37, $5CE0, $5EA7, $6E70. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":16390,"l":"vm_frame_adjust_4003","c":"Signed frame adjustment -8 for initialize_alter_ego_runtime at $4003, consumed by the $70F8 VM gateway before bytecode begins at $4008. Initialize the resident runtime and enter the game's main phase dispatch.","t":"word","b":[248,255],"d":[65528]},{"a":16392,"l":"vm_bytecode_4003","c":"Compiled bytecode belonging to initialize_alter_ego_runtime ($4003). Initialize the resident runtime and enter the game's main phase dispatch. This position is the opcode of push_immediate_word at $4008. The procedure decodes to 110 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include install_under_rom_hardware_vectors, initialize_display_and_sprite_irq, read_length_prefixed_stream_object, call_vm_function_pointer, report_packed_runtime_error, prompt_retry_after_disk_error.","t":"byte","b":[142,0,64,172,112,110,174,2]},{"a":16400,"t":"byte","b":[172,9,65,141,22,172,179,67]},{"a":16408,"t":"byte","b":[174,2,64,169,39,208,64,43]},{"a":16416,"t":"byte","b":[214,39,64,11,208,43,209,11]},{"a":16424,"t":"byte","b":[139,64,194,216,59,64,11,210]},{"a":16432,"t":"byte","b":[140,64,127,187,179,64,180,177]},{"a":16440,"t":"byte","b":[214,35,64,97,104,172,108,91]},{"a":16448,"t":"byte","b":[174,4,80,194,216,80,64,97]},{"a":16456,"t":"byte","b":[172,119,86,174,2,214,59,64]},{"a":16464,"t":"byte","b":[100,222,250,255,179,172,224,92]},{"a":16472,"t":"byte","b":[174,4,96,172,238,74,174,2]},{"a":16480,"t":"byte","b":[168,245,129,216,124,64,96,172]},{"a":16488,"t":"byte","b":[238,74,174,2,168,99,132,216]},{"a":16496,"t":"byte","b":[124,64,97,172,238,74,174,2]},{"a":16504,"t":"byte","b":[40,215,136,64,142,225,64,172]},{"a":16512,"t":"byte","b":[161,76,174,2,164,200,127,221]},{"a":16520,"t":"byte","b":[222,250,255,179,172,167,94,174]},{"a":16528,"t":"byte","b":[2,96,56,172,79,75,174,4]},{"a":16536,"t":"byte","b":[43,97,104,172,108,91,174,4]},{"a":16544,"t":"byte","b":[80,194,216,174,64,97,172,119]},{"a":16552,"t":"byte","b":[86,174,2,214,153,64,222,250]},{"a":16560,"t":"byte","b":[255,179,172,55,92,174,2,97]},{"a":16568,"t":"byte","b":[172,238,74,174,2,40,215,205]},{"a":16576,"t":"byte","b":[64,142,244,64,172,161,76,174]},{"a":16584,"t":"byte","b":[2,164,200,127,221,59,56,172]},{"a":16592,"t":"byte","b":[79,75,174,4,82,192,216,220]},{"a":16600,"t":"byte","b":[64,214,30,64,164,200,127,221]},{"a":16608,"t":"byte","b":[207]},{"a":16609,"l":"startup_load_error_text_pool","c":"Zero-terminated startup errors: Can't load strings; Can't load main game. These belong to the active game's load transition, not the prior cracktro/bootstrap implementation.","t":"byte","b":[67,97,110,39,116,32,108,111]},{"a":16617,"t":"byte","b":[97,100,32,115,116,114,105,110]},{"a":16625,"t":"byte","b":[103,115,0,67,97,110,39,116]},{"a":16633,"t":"byte","b":[32,108,111,97,100,32,109,97]},{"a":16641,"t":"byte","b":[105,110,32,103,97,109,101,0]},{"a":16649,"l":"install_under_rom_hardware_vectors","c":"Install custom hardware vectors in RAM under KERNAL ROM: NMI=$4128, reset=$4174, IRQ/BRK=$414A at $FFFA-$FFFF. Inputs: none. Outputs: none. Assumptions: The six target bytes are RAM under KERNAL ROM; on the 6510 stores always reach that RAM, so no banking change is needed, but the vectors only take effect once HIRAM in $01 is cleared. Interrupts must be masked across the stores, since an NMI or IRQ taken between a low and high byte would dispatch through a mixed vector. Clobbers: A and flags. C64 semantics: CPU writes reach underlying RAM even while KERNAL ROM is readable; these vectors take effect when HIRAM is cleared and KERNAL is banked out. Hardware: Writes the underlying hardware vectors in RAM: NMI $FFFA/$FFFB=$4128, RESET $FFFC/$FFFD=$4174 and IRQ/BRK $FFFE/$FFFF=$414A. It does not touch VIC, SID, CIA or the 6510 port $01 itself.","t":"code","b":[169,40],"m":"lda","o":"#$28"},{"a":16651,"t":"code","b":[141,250,255],"m":"sta","oa":65530,"o":"C64_KERNAL_NMI_VECTOR"},{"a":16654,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":16656,"t":"code","b":[141,251,255],"m":"sta","oa":65531,"o":"$FFFB"},{"a":16659,"t":"code","b":[169,116],"m":"lda","o":"#$74"},{"a":16661,"t":"code","b":[141,252,255],"m":"sta","oa":65532,"o":"ram_reset_vector"},{"a":16664,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":16666,"t":"code","b":[141,253,255],"m":"sta","oa":65533,"o":"$FFFD"},{"a":16669,"t":"code","b":[169,74],"m":"lda","o":"#$4A"},{"a":16671,"t":"code","b":[141,254,255],"m":"sta","oa":65534,"o":"ram_irq_brk_vector"},{"a":16674,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":16676,"t":"code","b":[141,255,255],"m":"sta","oa":65535,"o":"$FFFF"},{"a":16679,"t":"code","b":[96],"m":"rts"},{"a":16680,"l":"nmi_dispatch_bridge","c":"NMI bridge used by the under-ROM hardware vector. It saves the interrupted register state in the runtime save area and dispatches through the program NMI pointer before returning via $4142. Inputs: hardware NMI stack frame. Outputs: none. Assumptions: Entered only through the hardware NMI vector with KERNAL ROM banked out, and it assumes $417D/$417F are free save slots. It hand-builds a $4142 return frame on the stack, so the handler it dispatches to must finish by RTS-ing into that address rather than executing its own RTI. Clobbers: transient CPU registers; preserves interrupted state by contract. Banking: intended for execution with KERNAL ROM hidden. Hardware: Reads the 6510 processor port $01, saves it, then ORs bits 0-1 (LORAM|HIRAM) to map BASIC and KERNAL ROM back in for the handler; SEI masks further interrupts. No VIC, SID or CIA register is touched and nothing is acknowledged here.","t":"code","b":[120],"m":"sei"},{"a":16681,"t":"code","b":[141,125,65],"m":"sta","oa":16765,"o":"saved_nmi_accumulator"},{"a":16684,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16686,"t":"code","b":[141,127,65],"m":"sta","oa":16767,"o":"saved_nmi_cpu_port"},{"a":16689,"t":"code","b":[9,3],"m":"ora","o":"#$03"},{"a":16691,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16693,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":16695,"t":"code","b":[72],"m":"pha"},{"a":16696,"t":"code","b":[169,66],"m":"lda","o":"#$42"},{"a":16698,"t":"code","b":[72],"m":"pha"},{"a":16699,"t":"code","b":[8],"m":"php"},{"a":16700,"t":"code","b":[173,125,65],"m":"lda","oa":16765,"o":"saved_nmi_accumulator"},{"a":16703,"l":"annotation_413f","c":"With LORAM/HIRAM set in $01, this jump enters the standard KERNAL NMI handler in the KERNAL_ROM overlay at $FE43. The physical RAM bytes at $FE43 are hidden game data and are not executable on this path. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to KERNAL kernal_nmi_entry, whose inputs apply unchanged. Outputs: no memory write of its own; the effect is the transfer of control to KERNAL kernal_nmi_entry with the register state established above. Assumptions: reached only by falling out of the custom NMI bridge above it, with LORAM and HIRAM already set in $01 so that the KERNAL_ROM overlay -- not the game data physically stored at $FE43 in this RAM image -- is what executes. The hardware NMI frame must still be on the stack, because $FE43 ends in RTI. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. Hardware: touches the KERNAL ROM, which must therefore be banked in ($01 bits 0-1 set), through KERNAL kernal_nmi_entry.","t":"code","b":[76,67,254],"m":"jmp","oa":65091,"o":"KERNAL_NMI_VECTOR"},{"a":16706,"l":"nmi_restore_and_rti","c":"Restore registers saved by the custom NMI bridge and execute RTI. Inputs: saved NMI register state. Outputs: restores A,X,Y,P and interrupted PC from the hardware stack. Leaves memory banking unchanged. Assumptions: Assumes entry through the synthetic return address pushed by nmi_dispatch_bridge, with the hardware NMI frame still on the stack beneath it and $417F holding the pre-interrupt 6510 port value. A must hold whatever the handler wants restored; it is pushed and pulled around the port write. Hardware: Restores the 6510 processor port $01 from the saved copy, undoing the LORAM/HIRAM change the bridge made, then RTI. No VIC, SID or CIA register is read, written or acknowledged. Clobbers: A and the processor flags; writes cpu_port_underlying_ram; uses the 6502 stack (1 push, 1 pull in this body).","t":"code","b":[72],"m":"pha"},{"a":16707,"t":"code","b":[173,127,65],"m":"lda","oa":16767,"o":"saved_nmi_cpu_port"},{"a":16710,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16712,"t":"code","b":[104],"m":"pla"},{"a":16713,"t":"code","b":[64],"m":"rti"},{"a":16714,"l":"irq_dispatch_bridge","c":"IRQ/BRK bridge used by the under-ROM hardware vector. It distinguishes or forwards the interrupt through program-maintained dispatch state, preserving registers for the return stub at $416C. Inputs: hardware IRQ/BRK frame. Outputs: none directly. Banking: intended for execution with KERNAL ROM hidden. Assumptions: Entered only through the hardware IRQ/BRK vector with KERNAL ROM banked out. It pulls and re-pushes the status byte to inspect it and then pushes a synthetic $416C return, so the stack must hold an unmodified interrupt frame and the dispatched handler must return by RTS to that address, not RTI. Hardware: Reads and writes the 6510 processor port $01, ORing bits 0-1 to map BASIC and KERNAL ROM in for the handler, and masks interrupts with SEI. It acknowledges nothing: clearing VIC $D019 or reading CIA 1 $DC0D is left to the dispatched handler. Clobbers: A and the processor flags; writes saved_irq_accumulator, saved_irq_cpu_port, cpu_port_underlying_ram; uses the 6502 stack (4 push, 1 pull in this body).","t":"code","b":[120],"m":"sei"},{"a":16715,"t":"code","b":[141,126,65],"m":"sta","oa":16766,"o":"saved_irq_accumulator"},{"a":16718,"t":"code","b":[104],"m":"pla"},{"a":16719,"t":"code","b":[72],"m":"pha"},{"a":16720,"t":"code","b":[141,128,65],"m":"sta","oa":16768,"o":"saved_irq_cpu_port"},{"a":16723,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":16725,"t":"code","b":[72],"m":"pha"},{"a":16726,"t":"code","b":[169,108],"m":"lda","o":"#$6C"},{"a":16728,"t":"code","b":[72],"m":"pha"},{"a":16729,"t":"code","b":[173,128,65],"m":"lda","oa":16768,"o":"saved_irq_cpu_port"},{"a":16732,"t":"code","b":[72],"m":"pha"},{"a":16733,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16735,"t":"code","b":[141,128,65],"m":"sta","oa":16768,"o":"saved_irq_cpu_port"},{"a":16738,"t":"code","b":[9,3],"m":"ora","o":"#$03"},{"a":16740,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16742,"t":"code","b":[173,126,65],"m":"lda","oa":16766,"o":"saved_irq_accumulator"},{"a":16745,"l":"annotation_4169","c":"With LORAM/HIRAM set in $01, this jump enters the standard KERNAL IRQ handler in the KERNAL_ROM overlay at $FF48. The physical RAM bytes at $FF48 are hidden game data and are not executable on this path. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to KERNAL kernal_irq_entry, whose inputs apply unchanged. Outputs: no memory write of its own; the effect is the transfer of control to KERNAL kernal_irq_entry with the register state established above. Assumptions: reached only by falling out of the custom IRQ/BRK bridge above it, with LORAM and HIRAM already set in $01 so that the KERNAL_ROM overlay is mapped over the game data physically present at $FF48 in this RAM image. The unmodified IRQ frame must still be on the stack, since the KERNAL handler saves A/X/Y on top of it and returns with RTI. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. Hardware: touches the KERNAL ROM, which must therefore be banked in ($01 bits 0-1 set), through KERNAL kernal_irq_entry.","t":"code","b":[76,72,255],"m":"jmp","oa":65352,"o":"KERNAL_IRQ_BRK_VECTOR"},{"a":16748,"l":"irq_restore_and_rti","c":"Restore registers saved by the custom IRQ bridge and execute RTI. Inputs: saved IRQ register state. Outputs: restores the interrupted CPU context. Leaves VIC/CIA acknowledgement and banking to the dispatched handler. Assumptions: Assumes entry through the synthetic $416C return pushed by irq_dispatch_bridge, with the original IRQ frame still beneath it and $4152 holding the saved 6510 port value. The dispatched handler must already have acknowledged its interrupt source, because nothing is acknowledged here. Hardware: Restores the 6510 processor port $01 from the saved byte, reversing the bridge's ROM mapping, then RTI. No VIC, SID or CIA register is read or written. Clobbers: A and the processor flags; writes cpu_port_underlying_ram; uses the 6502 stack (1 push, 1 pull in this body).","t":"code","b":[72],"m":"pha"},{"a":16749,"t":"code","b":[173,128,65],"m":"lda","oa":16768,"o":"saved_irq_cpu_port"},{"a":16752,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16754,"t":"code","b":[104],"m":"pla"},{"a":16755,"t":"code","b":[64],"m":"rti"},{"a":16756,"l":"return_to_basic_warm_start","c":"Return to the BASIC environment through its warm-start vector. The routine sets LORAM and HIRAM in the 6510 CPU port at $01, mapping BASIC and KERNAL ROM back in while leaving the CHAREN bit unchanged, then jumps indirectly through BASIC ROM vector $A002/$A003. Inputs: current CPU-port mapping. Outputs: no return; BASIC regains control. Assumptions: Assumes a usable BASIC environment still exists: BASIC ROM must be intact under $A000-$BFFF and the BASIC/KERNAL zero page and stack must not have been repurposed by the game, since control never returns. The CHAREN bit is left as found, so the I/O block stays mapped. Clobbers: A and flags. This is an application exit path, not a hardware-reset vector. Hardware: Reads the 6510 processor port $01 and ORs bits 0 and 1 (LORAM and HIRAM) to map BASIC and KERNAL ROM back in, then JMP ($A002) through the BASIC warm-start vector in BASIC ROM.","t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16758,"t":"code","b":[9,3],"m":"ora","o":"#$03"},{"a":16760,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":16762,"t":"code","b":[108,2,160],"m":"jmp","oa":40962,"o":"(descriptor_interpreter_choice_cursor_continuation)"},{"a":16765,"l":"saved_nmi_accumulator","c":"Resident interrupt, transition-animation and sprite-motion state. $417D-$4180 preserve A and CPU-port banking across the under-ROM NMI/IRQ bridges; $4181-$418D are geometry, fill, raster and pacing scratch for screen transitions; $418E-$4193 hold sprite 0 current/target X and Y; $4194/$4195 preserve the chained KERNAL CINV vector.","t":"byte","b":[0],"x":[16681,16700]},{"a":16766,"l":"saved_irq_accumulator","c":"One-byte accumulator save for the IRQ bank-switch bridge. Adjacent $417F/$4180 preserve NMI/IRQ CPU-port values; transition geometry and sprite-motion state begin at $4181. This byte is mutable interrupt state, not a lookup table.","t":"byte","b":[11],"x":[16715,16742]},{"a":16767,"l":"saved_nmi_cpu_port","c":"Saved CPU-port value restored after the resident NMI bridge changes banking. Separate from the IRQ bank save at $4180.","t":"byte","b":[0],"x":[16686,16707]},{"a":16768,"l":"saved_irq_cpu_port","c":"Saved CPU-port value restored by the resident IRQ bank bridge. The following $4181-$418D are screen-transition work fields.","t":"byte","b":[52],"x":[16720,16729,16735,16749]},{"a":16769,"l":"transition_origin_column","c":"One-byte resident display-transition workspace: starting bitmap column. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[4],"x":[17609,17696,17746,17964,18027]},{"a":16770,"l":"transition_origin_row","c":"One-byte resident display-transition workspace: starting character row. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[1],"x":[17616,17659,17689,17743,17971,17996,18017]},{"a":16771,"l":"transition_fill_width","c":"One-byte resident display-transition workspace: fill width. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[17978,18043]},{"a":16772,"l":"transition_row_count","c":"One-byte resident display-transition workspace: row count. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[23],"x":[17623,17766,17985,17999,18020,18040]},{"a":16773,"l":"transition_fill_byte","c":"One-byte resident display-transition workspace: fill byte. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[22],"x":[17641,17735,17874,17992,18059]},{"a":16774,"l":"transition_scratch_unused_4186","t":"byte","b":[0]},{"a":16775,"l":"transition_scratch_unused_4187","t":"byte","b":[0]},{"a":16776,"l":"transition_rows_remaining","c":"One-byte resident display-transition workspace: remaining rows. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[17772,17795,17853]},{"a":16777,"l":"transition_frame_delay","c":"One-byte resident display-transition workspace: frame-delay reload. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[8],"x":[17648,17946]},{"a":16778,"l":"transition_raster_trigger","c":"One-byte resident display-transition workspace: raster comparison target. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[18008]},{"a":16779,"l":"transition_frame_countdown","c":"One-byte resident display-transition workspace: frame-delay countdown. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[1],"x":[17651,17938,17949]},{"a":16780,"l":"transition_scratch_unused_418c","t":"byte","b":[0]},{"a":16781,"l":"transition_scratch_unused_418d","t":"byte","b":[0]},{"a":16782,"l":"sprite0_current_x_lo","c":"One-byte resident display-transition workspace: sprite 0 current X low. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[16814,16839,16878,16951,16967,16972,16987,16992,17067,17362]},{"a":16783,"l":"sprite0_current_x_msb","c":"One-byte resident display-transition workspace: sprite 0 current X high-bit flag. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[16806,16848,16884,16941,16975,16980,16995,17000,17073,17365]},{"a":16784,"l":"sprite0_target_x_lo","c":"One-byte resident display-transition workspace: sprite 0 target X low. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[16817,16842,16920,16954,17368]},{"a":16785,"l":"sprite0_target_x_msb","c":"One-byte resident display-transition workspace: sprite 0 target X high-bit flag. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[16809,16851,16926,16944,17371]},{"a":16786,"l":"sprite0_current_y","c":"One-byte resident display-transition workspace: sprite 0 current Y. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[16822,16858,16872,17003,17018,17021,17024,17030,17033,17036,17061,17356]},{"a":16787,"l":"sprite0_target_y","c":"One-byte resident display-transition workspace: sprite 0 target Y. The transition routines update this field while filling screen rows and moving their mask sprite; it is not authored graphics.","t":"byte","b":[0],"x":[16825,16861,16933,17006,17359]},{"a":16788,"l":"saved_kernal_irq_vector_low","c":"Low byte of the chained KERNAL CINV vector; high byte at $4195. Resident interrupt installation preserves this pair so its bridge can invoke the preceding handler.","t":"byte","b":[49],"x":[17045,17104,17335]},{"a":16789,"l":"saved_kernal_irq_vector_high","c":"High byte of the saved CINV vector at $4194. Part of the same runtime pointer, not a separate table.","t":"byte","b":[234],"x":[17341]},{"a":16790,"l":"return_highbit_text_span_table_bias","c":"Return pointer $419F, the bias used by the high-bit text-token span lookup in $536A. Inputs: none. Outputs: VM primary value points to $419F. Assumptions: Assumes the caller is the high-bit text-token span lookup at $536A, which adds a token-derived offset to the returned $419F base. The bytes that form the apparent table overlap native instruction bytes, so nothing may relocate or reassemble $419F-$41A4. Clobbers: A and VM primary bytes. Hardware: none. For token $81`, overlapping little-endian words at $41A1/$41A3 delimit ASCII $8500-$8509 ('test sound'); the apparent table intentionally overlaps native instruction bytes.","t":"code","b":[169,159],"m":"lda","o":"#$9F"},{"a":16792,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":16794,"t":"code","b":[169,65],"m":"lda","o":"#$41"},{"a":16796,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":16798,"t":"code","b":[96],"m":"rts"},{"a":16799,"l":"highbit_text_span_table_bias","c":"Bias byte/pointer origin for the renderer's overlapping high-bit text-token span table. It is not sprite-motion status. Token index (byte-$80)*2 selects adjacent little-endian start/end words from the following native bytes.","t":"byte","b":[0]},{"a":16800,"l":"sprite0_has_reached_target","c":"Test whether sprite 0 current X/MSB/Y state ($418E/$418F/$4192) equals its target ($4190/$4191/$4193). Inputs: motion globals. Outputs: VM primary low $0A=$FF when equal, otherwise $00; $0B=0. Assumptions: The six sprite-0 motion globals $418E/$418F/$4192 (current) and $4190/$4191/$4193 (target) must already have been initialised by sprite0_show_at_position or sprite0_set_target. The comparison is exact, so a target the four-pixel X / three-pixel Y step cannot land on will never report equality. Clobbers: A and flags. Hardware: Touches no hardware register: it compares only RAM motion globals and writes VM primary $0A/$0B. The VIC-II sprite registers are written by sprite0_show_at_position and the IRQ hook at $4229.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":16802,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":16804,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":16806,"t":"code","b":[173,143,65],"m":"lda","oa":16783,"o":"sprite0_current_x_msb"},{"a":16809,"t":"code","b":[205,145,65],"m":"cmp","oa":16785,"o":"sprite0_target_x_msb"},{"a":16812,"t":"code","b":[208,20],"m":"bne","oa":16834,"o":"LAB_41c2"},{"a":16814,"t":"code","b":[173,142,65],"m":"lda","oa":16782,"o":"sprite0_current_x_lo"},{"a":16817,"t":"code","b":[205,144,65],"m":"cmp","oa":16784,"o":"sprite0_target_x_lo"},{"a":16820,"t":"code","b":[208,12],"m":"bne","oa":16834,"o":"LAB_41c2"},{"a":16822,"t":"code","b":[173,146,65],"m":"lda","oa":16786,"o":"sprite0_current_y"},{"a":16825,"t":"code","b":[205,147,65],"m":"cmp","oa":16787,"o":"sprite0_target_y"},{"a":16828,"t":"code","b":[208,4],"m":"bne","oa":16834,"o":"LAB_41c2"},{"a":16830,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":16832,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":16834,"l":"LAB_41c2","t":"code","b":[96],"m":"rts","x":[16812,16820,16828]},{"a":16835,"l":"sprite0_show_at_position","c":"Initialize sprite 0 current and target coordinates from a three-byte argument record, write the position to VIC-II, set/clear the X-MSB bit, and enable sprite 0. Inputs: ($04/$05) -> X low, X high/boolean, Y. Outputs: motion globals and VIC $D000/$D001/$D010/$D015. Assumptions: $04/$05 must already point at a three-byte argument record (X low, X-MSB flag, Y) prepared by the VM call gateway, and I/O must be banked in so $D000-$D015 is the VIC-II. Y is loaded internally, so no entry value is required, and the second record byte is treated as a boolean rather than a true X bit 8. Clobbers: A,Y and flags. Hardware: Writes VIC-II sprite 0 X $D000 and Y $D001, sets or clears bit 0 of the sprite X-MSB register $D010, and clears then re-sets bit 0 of sprite-enable $D015 so the sprite is hidden while its coordinates change.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":16837,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":16839,"t":"code","b":[141,142,65],"m":"sta","oa":16782,"o":"sprite0_current_x_lo"},{"a":16842,"t":"code","b":[141,144,65],"m":"sta","oa":16784,"o":"sprite0_target_x_lo"},{"a":16845,"t":"code","b":[200],"m":"iny"},{"a":16846,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":16848,"t":"code","b":[141,143,65],"m":"sta","oa":16783,"o":"sprite0_current_x_msb"},{"a":16851,"t":"code","b":[141,145,65],"m":"sta","oa":16785,"o":"sprite0_target_x_msb"},{"a":16854,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":16856,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":16858,"t":"code","b":[141,146,65],"m":"sta","oa":16786,"o":"sprite0_current_y"},{"a":16861,"t":"code","b":[141,147,65],"m":"sta","oa":16787,"o":"sprite0_target_y"},{"a":16864,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":16867,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":16869,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":16872,"t":"code","b":[173,146,65],"m":"lda","oa":16786,"o":"sprite0_current_y"},{"a":16875,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":16878,"t":"code","b":[173,142,65],"m":"lda","oa":16782,"o":"sprite0_current_x_lo"},{"a":16881,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":16884,"t":"code","b":[173,143,65],"m":"lda","oa":16783,"o":"sprite0_current_x_msb"},{"a":16887,"t":"code","b":[240,10],"m":"beq","oa":16899,"o":"LAB_4203"},{"a":16889,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":16892,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":16894,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":16897,"t":"code","b":[208,8],"m":"bne","oa":16907,"o":"LAB_420b"},{"a":16899,"l":"LAB_4203","t":"code","b":[173,16,208],"m":"lda","x":[16887],"o":"vic_sprite_x_msb"},{"a":16902,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":16904,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":16907,"l":"LAB_420b","t":"code","b":[173,21,208],"m":"lda","x":[16897],"o":"vic_sprite_enable"},{"a":16910,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":16912,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":16915,"t":"code","b":[96],"m":"rts"},{"a":16916,"l":"sprite0_set_target","c":"Set sprite 0 target coordinates without moving the current VIC position. Inputs: ($04/$05) -> target X low, X high/boolean, Y. Outputs: $4190/$4191/$4193. Assumptions: $04/$05 must point at the same three-byte record layout used by sprite0_show_at_position, and the IRQ hook at $4229 must already be installed, because this routine only stores the target and relies on that hook to move the sprite. Y is loaded internally. Clobbers: A,Y and flags. Hardware: Touches no hardware: it writes only the RAM target globals $4190/$4191/$4193. The VIC-II registers $D000/$D001/$D010/$D015 are written later by sprite0_motion_irq_hook.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":16918,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":16920,"t":"code","b":[141,144,65],"m":"sta","oa":16784,"o":"sprite0_target_x_lo"},{"a":16923,"t":"code","b":[200],"m":"iny"},{"a":16924,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":16926,"t":"code","b":[141,145,65],"m":"sta","oa":16785,"o":"sprite0_target_x_msb"},{"a":16929,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":16931,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":16933,"t":"code","b":[141,147,65],"m":"sta","oa":16787,"o":"sprite0_target_y"},{"a":16936,"t":"code","b":[96],"m":"rts"},{"a":16937,"l":"sprite0_motion_irq_hook","c":"KERNAL CINV sprite-motion hook. It moves sprite 0 toward its target by four X pixels and three Y pixels per call, waits for raster line 0 before committing VIC position registers, and chains through saved IRQ vector $4194/$4195 (normally $EA31). Inputs: IRQ context and motion globals. Outputs: VIC $D000/$D001/$D010/$D015 plus current coordinates. Assumptions: Installed as KERNAL CINV and entered only from an IRQ, so the KERNAL prologue must already have saved A/X/Y and $4194/$4195 must hold the previous CINV (normally $EA31) to chain to. I/O must be banked in, and the busy-wait assumes the handler is entered early enough in the frame for $D012 to reach zero, since it spins with interrupts still masked. Clobbers: A,X,Y; final register restoration is supplied by the chained KERNAL IRQ path. Hardware: Polls VIC-II raster $D012 until it reads $00, then clears bit 0 of sprite-enable $D015, writes sprite 0 Y $D001 and X $D000, updates bit 0 of the X-MSB register $D010 and re-enables the sprite in $D015, before chaining through the saved CINV. It acknowledges nothing itself; $EA31 handles the CIA 1 acknowledgement.","t":"code","b":[162,255],"m":"ldx","o":"#$FF"},{"a":16939,"t":"code","b":[160,255],"m":"ldy","o":"#$FF"},{"a":16941,"t":"code","b":[173,143,65],"m":"lda","oa":16783,"o":"sprite0_current_x_msb"},{"a":16944,"t":"code","b":[205,145,65],"m":"cmp","oa":16785,"o":"sprite0_target_x_msb"},{"a":16947,"t":"code","b":[144,37],"m":"bcc","oa":16986,"o":"LAB_425a"},{"a":16949,"t":"code","b":[208,15],"m":"bne","oa":16966,"o":"LAB_4246"},{"a":16951,"t":"code","b":[173,142,65],"m":"lda","oa":16782,"o":"sprite0_current_x_lo"},{"a":16954,"t":"code","b":[205,144,65],"m":"cmp","oa":16784,"o":"sprite0_target_x_lo"},{"a":16957,"t":"code","b":[144,27],"m":"bcc","oa":16986,"o":"LAB_425a"},{"a":16959,"t":"code","b":[208,5],"m":"bne","oa":16966,"o":"LAB_4246"},{"a":16961,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":16963,"t":"code","b":[76,107,66],"m":"jmp","oa":17003,"o":"LAB_426b"},{"a":16966,"l":"LAB_4246","t":"code","b":[56],"m":"sec","x":[16949,16959]},{"a":16967,"t":"code","b":[173,142,65],"m":"lda","oa":16782,"o":"sprite0_current_x_lo"},{"a":16970,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":16972,"t":"code","b":[141,142,65],"m":"sta","oa":16782,"o":"sprite0_current_x_lo"},{"a":16975,"t":"code","b":[173,143,65],"m":"lda","oa":16783,"o":"sprite0_current_x_msb"},{"a":16978,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":16980,"t":"code","b":[141,143,65],"m":"sta","oa":16783,"o":"sprite0_current_x_msb"},{"a":16983,"t":"code","b":[76,107,66],"m":"jmp","oa":17003,"o":"LAB_426b"},{"a":16986,"l":"LAB_425a","t":"code","b":[24],"m":"clc","x":[16947,16957]},{"a":16987,"t":"code","b":[173,142,65],"m":"lda","oa":16782,"o":"sprite0_current_x_lo"},{"a":16990,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":16992,"t":"code","b":[141,142,65],"m":"sta","oa":16782,"o":"sprite0_current_x_lo"},{"a":16995,"t":"code","b":[173,143,65],"m":"lda","oa":16783,"o":"sprite0_current_x_msb"},{"a":16998,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17000,"t":"code","b":[141,143,65],"m":"sta","oa":16783,"o":"sprite0_current_x_msb"},{"a":17003,"l":"LAB_426b","t":"code","b":[173,146,65],"m":"lda","oa":16786,"x":[16963,16983],"o":"sprite0_current_y"},{"a":17006,"t":"code","b":[205,147,65],"m":"cmp","oa":16787,"o":"sprite0_target_y"},{"a":17009,"t":"code","b":[144,19],"m":"bcc","oa":17030,"o":"LAB_4286"},{"a":17011,"t":"code","b":[208,5],"m":"bne","oa":17018,"o":"LAB_427a"},{"a":17013,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17015,"t":"code","b":[76,143,66],"m":"jmp","oa":17039,"o":"LAB_428f"},{"a":17018,"l":"LAB_427a","t":"code","b":[206,146,65],"m":"dec","oa":16786,"x":[17011],"o":"sprite0_current_y"},{"a":17021,"t":"code","b":[206,146,65],"m":"dec","oa":16786,"o":"sprite0_current_y"},{"a":17024,"t":"code","b":[206,146,65],"m":"dec","oa":16786,"o":"sprite0_current_y"},{"a":17027,"t":"code","b":[76,143,66],"m":"jmp","oa":17039,"o":"LAB_428f"},{"a":17030,"l":"LAB_4286","t":"code","b":[238,146,65],"m":"inc","oa":16786,"x":[17009],"o":"sprite0_current_y"},{"a":17033,"t":"code","b":[238,146,65],"m":"inc","oa":16786,"o":"sprite0_current_y"},{"a":17036,"t":"code","b":[238,146,65],"m":"inc","oa":16786,"o":"sprite0_current_y"},{"a":17039,"l":"LAB_428f","t":"code","b":[138],"m":"txa","x":[17015,17027]},{"a":17040,"t":"code","b":[208,6],"m":"bne","oa":17048,"o":"LAB_4298"},{"a":17042,"t":"code","b":[152],"m":"tya"},{"a":17043,"t":"code","b":[208,3],"m":"bne","oa":17048,"o":"LAB_4298"},{"a":17045,"t":"code","b":[108,148,65],"m":"jmp","oa":16788,"o":"(saved_kernal_irq_vector_low)"},{"a":17048,"l":"LAB_4298","t":"code","b":[173,18,208],"m":"lda","x":[17040,17043,17051],"o":"vic_raster"},{"a":17051,"t":"code","b":[208,251],"m":"bne","oa":17048,"o":"LAB_4298"},{"a":17053,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":17056,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":17058,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":17061,"t":"code","b":[173,146,65],"m":"lda","oa":16786,"o":"sprite0_current_y"},{"a":17064,"t":"code","b":[141,1,208],"m":"sta","o":"vic_sprite0_y"},{"a":17067,"t":"code","b":[173,142,65],"m":"lda","oa":16782,"o":"sprite0_current_x_lo"},{"a":17070,"t":"code","b":[141,0,208],"m":"sta","o":"vic_sprite0_x"},{"a":17073,"t":"code","b":[173,143,65],"m":"lda","oa":16783,"o":"sprite0_current_x_msb"},{"a":17076,"t":"code","b":[240,10],"m":"beq","oa":17088,"o":"LAB_42c0"},{"a":17078,"t":"code","b":[173,16,208],"m":"lda","o":"vic_sprite_x_msb"},{"a":17081,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":17083,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":17086,"t":"code","b":[208,8],"m":"bne","oa":17096,"o":"LAB_42c8"},{"a":17088,"l":"LAB_42c0","t":"code","b":[173,16,208],"m":"lda","x":[17076],"o":"vic_sprite_x_msb"},{"a":17091,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":17093,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":17096,"l":"LAB_42c8","t":"code","b":[173,21,208],"m":"lda","x":[17086],"o":"vic_sprite_enable"},{"a":17099,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":17101,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":17104,"t":"code","b":[108,148,65],"m":"jmp","oa":16788,"o":"(saved_kernal_irq_vector_low)"},{"a":17107,"l":"format_word_as_three_decimal_digits","c":"Format a 16-bit unsigned value as exactly three ASCII decimal digits plus NUL. Inputs: ($04/$05)+0=value word and +2=destination pointer. Outputs: destination[0..2] are hundreds/tens/ones and destination[3]=0. Assumptions: $04/$05 must point at a four-byte argument record whose first word is the value and whose second word is a writable four-byte destination; that destination pointer is copied into $0A/$0B, so zero page $0A-$14 must be free. The digit chain subtracts $0190 once and then $C8/$64/$50/$28/$14/$0A, so only values below 1000 yield a correct three-digit result. Clobbers: A,X,Y and zero-page $0A-$14. Values above 999 are reduced by the routine digit-extraction sequence rather than producing a longer string. Hardware: Touches no hardware: it works entirely in zero page and the caller's RAM buffer, and it calls nothing.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17109,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17111,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":17113,"t":"code","b":[200],"m":"iny"},{"a":17114,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17116,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":17118,"t":"code","b":[200],"m":"iny"},{"a":17119,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17121,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":17123,"t":"code","b":[200],"m":"iny"},{"a":17124,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17126,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":17128,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17130,"t":"code","b":[133,20],"m":"sta","oa":20,"o":"native_math_scratch_b2"},{"a":17132,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":17134,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":17136,"t":"code","b":[56],"m":"sec"},{"a":17137,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":17139,"t":"code","b":[233,144],"m":"sbc","o":"#$90"},{"a":17141,"t":"code","b":[170],"m":"tax"},{"a":17142,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":17144,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":17146,"t":"code","b":[144,2],"m":"bcc","oa":17150,"o":"LAB_42fe"},{"a":17148,"t":"code","b":[134,14],"m":"stx","oa":14,"o":"vm_secondary_value_b0"},{"a":17150,"l":"LAB_42fe","t":"code","b":[38,18],"m":"rol","oa":18,"x":[17146],"o":"native_math_scratch_b0"},{"a":17152,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":17154,"t":"code","b":[201,200],"m":"cmp","o":"#$C8"},{"a":17156,"t":"code","b":[144,2],"m":"bcc","oa":17160,"o":"LAB_4308"},{"a":17158,"t":"code","b":[233,200],"m":"sbc","o":"#$C8"},{"a":17160,"l":"LAB_4308","t":"code","b":[38,18],"m":"rol","oa":18,"x":[17156],"o":"native_math_scratch_b0"},{"a":17162,"t":"code","b":[201,100],"m":"cmp","o":"#$64"},{"a":17164,"t":"code","b":[144,2],"m":"bcc","oa":17168,"o":"LAB_4310"},{"a":17166,"t":"code","b":[233,100],"m":"sbc","o":"#$64"},{"a":17168,"l":"LAB_4310","t":"code","b":[38,18],"m":"rol","oa":18,"x":[17164],"o":"native_math_scratch_b0"},{"a":17170,"t":"code","b":[201,80],"m":"cmp","o":"#$50"},{"a":17172,"t":"code","b":[144,2],"m":"bcc","oa":17176,"o":"LAB_4318"},{"a":17174,"t":"code","b":[233,80],"m":"sbc","o":"#$50"},{"a":17176,"l":"LAB_4318","t":"code","b":[38,19],"m":"rol","oa":19,"x":[17172],"o":"native_math_scratch_b1"},{"a":17178,"t":"code","b":[201,40],"m":"cmp","o":"#$28"},{"a":17180,"t":"code","b":[144,2],"m":"bcc","oa":17184,"o":"LAB_4320"},{"a":17182,"t":"code","b":[233,40],"m":"sbc","o":"#$28"},{"a":17184,"l":"LAB_4320","t":"code","b":[38,19],"m":"rol","oa":19,"x":[17180],"o":"native_math_scratch_b1"},{"a":17186,"t":"code","b":[201,20],"m":"cmp","o":"#$14"},{"a":17188,"t":"code","b":[144,2],"m":"bcc","oa":17192,"o":"LAB_4328"},{"a":17190,"t":"code","b":[233,20],"m":"sbc","o":"#$14"},{"a":17192,"l":"LAB_4328","t":"code","b":[38,19],"m":"rol","oa":19,"x":[17188],"o":"native_math_scratch_b1"},{"a":17194,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":17196,"t":"code","b":[144,2],"m":"bcc","oa":17200,"o":"LAB_4330"},{"a":17198,"t":"code","b":[233,10],"m":"sbc","o":"#$0A"},{"a":17200,"l":"LAB_4330","t":"code","b":[38,19],"m":"rol","oa":19,"x":[17196],"o":"native_math_scratch_b1"},{"a":17202,"t":"code","b":[24],"m":"clc"},{"a":17203,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":17205,"t":"code","b":[133,20],"m":"sta","oa":20,"o":"native_math_scratch_b2"},{"a":17207,"t":"code","b":[165,18],"m":"lda","oa":18,"o":"native_math_scratch_b0"},{"a":17209,"t":"code","b":[24],"m":"clc"},{"a":17210,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":17212,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":17214,"t":"code","b":[165,19],"m":"lda","oa":19,"o":"native_math_scratch_b1"},{"a":17216,"t":"code","b":[24],"m":"clc"},{"a":17217,"t":"code","b":[105,48],"m":"adc","o":"#$30"},{"a":17219,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":17221,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":17223,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17225,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":17227,"t":"code","b":[136],"m":"dey"},{"a":17228,"l":"LAB_434c","t":"code","b":[185,18,0],"m":"lda","oa":18,"x":[17234],"o":"native_math_scratch_b0,y"},{"a":17231,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":17233,"t":"code","b":[136],"m":"dey"},{"a":17234,"t":"code","b":[16,248],"m":"bpl","oa":17228,"o":"LAB_434c"},{"a":17236,"t":"code","b":[96],"m":"rts"},{"a":17237,"l":"copy_screen_blocks_backward","c":"Copy 24 fixed $B0-byte screen/display blocks in descending table order. Inputs: paired source/destination pointer tables at $47F3/$480C. Outputs: destination blocks overwritten. Assumptions: The 25-entry split pointer tables at $47F3/$480C must already hold current block addresses, with entry N+1 the destination for entry N. Each block copies Y=$B0 down to 1, so byte offset 0 of every block is never copied, and the descending table order is only correct when the destination lies above the source. Clobbers: A,X,Y and $18/$19/$1C/$1D. Reverse order preserves data when the mapped regions overlap. Hardware: Touches no hardware register: it copies RAM through zero-page pointers $18/$19 and $1C/$1D. Whether the copied bytes are visible depends on the VIC bank in $DD00 and $D018 configured elsewhere.","t":"code","b":[162,23],"m":"ldx","o":"#$17"},{"a":17239,"l":"LAB_4357","t":"code","b":[189,243,71],"m":"lda","oa":18419,"x":[17269],"o":"screen_transfer_block_ptrs,x"},{"a":17242,"t":"code","b":[133,24],"m":"sta","oa":24,"o":"screen_copy_source_ptr_lo"},{"a":17244,"t":"code","b":[189,12,72],"m":"lda","oa":18444,"o":"screen_transfer_pointer_high_bytes,x"},{"a":17247,"t":"code","b":[133,25],"m":"sta","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":17249,"t":"code","b":[189,244,71],"m":"lda","oa":18420,"o":"screen_transfer_pointer_low_entry1_alias,x"},{"a":17252,"t":"code","b":[133,28],"m":"sta","oa":28,"o":"screen_copy_destination_ptr_lo"},{"a":17254,"t":"code","b":[189,13,72],"m":"lda","oa":18445,"o":"screen_transfer_high_entry1_alias,x"},{"a":17257,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"screen_copy_destination_ptr_hi"},{"a":17259,"t":"code","b":[160,176],"m":"ldy","o":"#$B0"},{"a":17261,"l":"LAB_436d","t":"code","b":[177,24],"m":"lda","oa":24,"x":[17266],"o":"(screen_copy_source_ptr_lo),y"},{"a":17263,"t":"code","b":[145,28],"m":"sta","oa":28,"o":"(screen_copy_destination_ptr_lo),y"},{"a":17265,"t":"code","b":[136],"m":"dey"},{"a":17266,"t":"code","b":[208,249],"m":"bne","oa":17261,"o":"LAB_436d"},{"a":17268,"t":"code","b":[202],"m":"dex"},{"a":17269,"t":"code","b":[16,224],"m":"bpl","oa":17239,"o":"LAB_4357"},{"a":17271,"t":"code","b":[96],"m":"rts"},{"a":17272,"l":"copy_screen_blocks_forward","c":"Copy 24 fixed $B0-byte screen/display blocks in ascending table order. Inputs: paired pointer tables at $47F3/$480C. Outputs: destination blocks overwritten. Assumptions: The same $47F3/$480C tables must be valid, used in the opposite direction: entry N+1 is the source and entry N the destination. Offset 0 of each $B0-byte block is again skipped, and ascending order is only safe when the destination lies below the source. Clobbers: A,X,Y and $18/$19/$1C/$1D. Forward order is the opposite overlap-safe direction from $4355. Hardware: Touches no hardware register: it copies RAM through zero-page pointers $18/$19 and $1C/$1D; visibility of the result depends on the VIC bank and $D018 configured elsewhere.","t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":17274,"l":"LAB_437a","t":"code","b":[189,244,71],"m":"lda","oa":18420,"x":[17306],"o":"screen_transfer_pointer_low_entry1_alias,x"},{"a":17277,"t":"code","b":[133,24],"m":"sta","oa":24,"o":"screen_copy_source_ptr_lo"},{"a":17279,"t":"code","b":[189,13,72],"m":"lda","oa":18445,"o":"screen_transfer_high_entry1_alias,x"},{"a":17282,"t":"code","b":[133,25],"m":"sta","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":17284,"t":"code","b":[189,243,71],"m":"lda","oa":18419,"o":"screen_transfer_block_ptrs,x"},{"a":17287,"t":"code","b":[133,28],"m":"sta","oa":28,"o":"screen_copy_destination_ptr_lo"},{"a":17289,"t":"code","b":[189,12,72],"m":"lda","oa":18444,"o":"screen_transfer_pointer_high_bytes,x"},{"a":17292,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"screen_copy_destination_ptr_hi"},{"a":17294,"t":"code","b":[160,176],"m":"ldy","o":"#$B0"},{"a":17296,"l":"LAB_4390","t":"code","b":[177,24],"m":"lda","oa":24,"x":[17301],"o":"(screen_copy_source_ptr_lo),y"},{"a":17298,"t":"code","b":[145,28],"m":"sta","oa":28,"o":"(screen_copy_destination_ptr_lo),y"},{"a":17300,"t":"code","b":[136],"m":"dey"},{"a":17301,"t":"code","b":[208,249],"m":"bne","oa":17296,"o":"LAB_4390"},{"a":17303,"t":"code","b":[232],"m":"inx"},{"a":17304,"t":"code","b":[224,24],"m":"cpx","o":"#$18"},{"a":17306,"t":"code","b":[208,222],"m":"bne","oa":17274,"o":"LAB_437a"},{"a":17308,"t":"code","b":[96],"m":"rts"},{"a":17309,"l":"return_argument_byte_1","c":"Return argument byte at offset 1 as an unsigned VM word. Inputs: ($04/$05)+1. Outputs: $0A=byte, $0B=0. Assumptions: $04/$05 must point at an argument record of at least two bytes, prepared by the VM native-call gateway. Y is loaded with 1 internally so no entry value is required, and the caller must expect zero-extension rather than sign-extension of the byte. Clobbers: A,Y and flags. Hardware: Touches no hardware: it reads the caller's argument record through zero page and writes only VM primary $0A/$0B.","t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":17311,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17313,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":17315,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17317,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":17319,"t":"code","b":[96],"m":"rts"},{"a":17320,"l":"return_argument_byte_0","c":"Return argument byte at offset 0 as an unsigned VM word. Inputs: ($04/$05)+0. Outputs: $0A=byte, $0B=0. Assumptions: $04/$05 must point at an argument record of at least one byte, prepared by the VM native-call gateway. Y is loaded internally, and the byte is zero-extended rather than sign-extended. Clobbers: A,Y and flags. Hardware: Touches no hardware: it reads the caller's argument record through zero page and writes only VM primary $0A/$0B.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17322,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17324,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":17326,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17328,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":17330,"t":"code","b":[96],"m":"rts"},{"a":17331,"l":"initialize_display_and_sprite_irq","c":"Initialize bitmap display and sprite transition hardware. It saves and replaces KERNAL CINV $0314/$0315 with $4229, clears sprite motion state, initializes SID voice 3 noise, fills screen RAM $0400-$07FF from the argument byte, clears bitmap RAM $2000-$3FFF, selects bitmap screen/bitmap pointers through VIC $D011/$D018, and configures eight expanded sprites. Inputs: first argument byte is the screen fill/color value. Outputs: VIC, SID, screen, bitmap, sprite pointers and IRQ hook state. Assumptions: $04/$05 must point at an argument record whose first byte is the screen fill/colour value, and I/O must be banked in. SEI covers only the CINV swap before CLI, so callers must not assume interrupts stay masked; the routine also assumes VIC bank 0 is selected in $DD00 so that the screen it clears at $0400-$07FF and the bitmap at $2000-$3FFF are the ones the VIC sees, and both ranges are overwritten unconditionally. Clobbers: A,X,Y and scratch $0E-$13. Hardware: Replaces KERNAL CINV $0314/$0315 with $4229 after saving the old vector; writes SID voice 3 $D413/$D414=$00, $D412=$80 and $D40E/$D40F=$80; and programs VIC-II control 1 $D011=$3B (bitmap mode, 25 rows, display enabled), memory pointers $D018=$18 (screen $0400, bitmap $2000), sprite enable $D015, X-expand $D01D=$FE, priority $D01B=$FE, X-MSB $D010=$C0, the sprite 1-7 X registers $D002-$D00E and colours $D028-$D02E, plus the sprite data pointers at $07F8-$07FF.","t":"code","b":[120],"m":"sei"},{"a":17332,"t":"code","b":[173,20,3],"m":"lda","oa":788,"o":"C64_WORKSPACE_IRQ_RAM_VECTOR"},{"a":17335,"t":"code","b":[141,148,65],"m":"sta","oa":16788,"o":"saved_kernal_irq_vector_low"},{"a":17338,"t":"code","b":[173,21,3],"m":"lda","oa":789,"o":"irq_ram_vector_high"},{"a":17341,"t":"code","b":[141,149,65],"m":"sta","oa":16789,"o":"saved_kernal_irq_vector_high"},{"a":17344,"t":"code","b":[169,41],"m":"lda","o":"#$29"},{"a":17346,"t":"code","b":[141,20,3],"m":"sta","oa":788,"o":"C64_WORKSPACE_IRQ_RAM_VECTOR"},{"a":17349,"t":"code","b":[169,66],"m":"lda","o":"#$42"},{"a":17351,"t":"code","b":[141,21,3],"m":"sta","oa":789,"o":"irq_ram_vector_high"},{"a":17354,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17356,"t":"code","b":[140,146,65],"m":"sty","oa":16786,"o":"sprite0_current_y"},{"a":17359,"t":"code","b":[140,147,65],"m":"sty","oa":16787,"o":"sprite0_target_y"},{"a":17362,"t":"code","b":[140,142,65],"m":"sty","oa":16782,"o":"sprite0_current_x_lo"},{"a":17365,"t":"code","b":[140,143,65],"m":"sty","oa":16783,"o":"sprite0_current_x_msb"},{"a":17368,"t":"code","b":[140,144,65],"m":"sty","oa":16784,"o":"sprite0_target_x_lo"},{"a":17371,"t":"code","b":[140,145,65],"m":"sty","oa":16785,"o":"sprite0_target_x_msb"},{"a":17374,"t":"code","b":[88],"m":"cli"},{"a":17375,"t":"code","b":[140,19,212],"m":"sty","o":"sid_v3_attack_decay"},{"a":17378,"t":"code","b":[140,20,212],"m":"sty","o":"sid_v3_sustain_release"},{"a":17381,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":17383,"t":"code","b":[141,18,212],"m":"sta","o":"sid_v3_control"},{"a":17386,"t":"code","b":[141,14,212],"m":"sta","o":"sid_v3_freq_lo"},{"a":17389,"t":"code","b":[141,15,212],"m":"sta","o":"sid_v3_freq_hi"},{"a":17392,"t":"code","b":[140,17,208],"m":"sty","o":"vic_control1"},{"a":17395,"t":"code","b":[140,21,208],"m":"sty","o":"vic_sprite_enable"},{"a":17398,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17400,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17402,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":17404,"t":"code","b":[132,18],"m":"sty","oa":18,"o":"native_math_scratch_b0"},{"a":17406,"t":"code","b":[134,19],"m":"stx","oa":19,"o":"native_math_scratch_b1"},{"a":17408,"t":"code","b":[162,4],"m":"ldx","o":"#$04"},{"a":17410,"l":"LAB_4402","t":"code","b":[145,18],"m":"sta","oa":18,"x":[17413,17418],"o":"(native_math_scratch_b0),y"},{"a":17412,"t":"code","b":[200],"m":"iny"},{"a":17413,"t":"code","b":[208,251],"m":"bne","oa":17410,"o":"LAB_4402"},{"a":17415,"t":"code","b":[230,19],"m":"inc","oa":19,"o":"native_math_scratch_b1"},{"a":17417,"t":"code","b":[202],"m":"dex"},{"a":17418,"t":"code","b":[208,246],"m":"bne","oa":17410,"o":"LAB_4402"},{"a":17420,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":17422,"t":"code","b":[141,40,208],"m":"sta","o":"vic_sprite1_colour"},{"a":17425,"t":"code","b":[141,41,208],"m":"sta","o":"vic_sprite2_colour"},{"a":17428,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":17431,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":17434,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":17437,"t":"code","b":[141,45,208],"m":"sta","o":"vic_sprite6_colour"},{"a":17440,"t":"code","b":[141,46,208],"m":"sta","o":"vic_sprite7_colour"},{"a":17443,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17445,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17447,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":17449,"t":"code","b":[132,18],"m":"sty","oa":18,"o":"native_math_scratch_b0"},{"a":17451,"t":"code","b":[134,19],"m":"stx","oa":19,"o":"native_math_scratch_b1"},{"a":17453,"t":"code","b":[162,32],"m":"ldx","o":"#$20"},{"a":17455,"l":"LAB_442f","t":"code","b":[145,18],"m":"sta","oa":18,"x":[17458,17463],"o":"(native_math_scratch_b0),y"},{"a":17457,"t":"code","b":[200],"m":"iny"},{"a":17458,"t":"code","b":[208,251],"m":"bne","oa":17455,"o":"LAB_442f"},{"a":17460,"t":"code","b":[230,19],"m":"inc","oa":19,"o":"native_math_scratch_b1"},{"a":17462,"t":"code","b":[202],"m":"dex"},{"a":17463,"t":"code","b":[208,246],"m":"bne","oa":17455,"o":"LAB_442f"},{"a":17465,"t":"code","b":[160,59],"m":"ldy","o":"#$3B"},{"a":17467,"t":"code","b":[140,17,208],"m":"sty","o":"vic_control1"},{"a":17470,"t":"code","b":[160,24],"m":"ldy","o":"#$18"},{"a":17472,"t":"code","b":[140,24,208],"m":"sty","o":"vic_memory"},{"a":17475,"t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":17477,"t":"code","b":[141,29,208],"m":"sta","o":"vic_sprite_expand_x"},{"a":17480,"t":"code","b":[141,27,208],"m":"sta","o":"vic_sprite_priority"},{"a":17483,"t":"code","b":[169,192],"m":"lda","o":"#$C0"},{"a":17485,"t":"code","b":[141,16,208],"m":"sta","o":"vic_sprite_x_msb"},{"a":17488,"t":"code","b":[169,24],"m":"lda","o":"#$18"},{"a":17490,"t":"code","b":[141,2,208],"m":"sta","o":"vic_sprite1_x"},{"a":17493,"t":"code","b":[169,72],"m":"lda","o":"#$48"},{"a":17495,"t":"code","b":[141,4,208],"m":"sta","o":"vic_sprite2_x"},{"a":17498,"t":"code","b":[169,120],"m":"lda","o":"#$78"},{"a":17500,"t":"code","b":[141,6,208],"m":"sta","o":"vic_sprite3_x"},{"a":17503,"t":"code","b":[169,168],"m":"lda","o":"#$A8"},{"a":17505,"t":"code","b":[141,8,208],"m":"sta","o":"vic_sprite4_x"},{"a":17508,"t":"code","b":[169,216],"m":"lda","o":"#$D8"},{"a":17510,"t":"code","b":[141,10,208],"m":"sta","o":"vic_sprite5_x"},{"a":17513,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":17515,"t":"code","b":[141,12,208],"m":"sta","o":"vic_sprite6_x"},{"a":17518,"t":"code","b":[169,56],"m":"lda","o":"#$38"},{"a":17520,"t":"code","b":[141,14,208],"m":"sta","o":"vic_sprite7_x"},{"a":17523,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":17525,"t":"code","b":[141,248,7],"m":"sta","oa":2040,"o":"AlterEgo_Display_vic_sprite0_data_pointer"},{"a":17528,"t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":17530,"t":"code","b":[141,249,7],"m":"sta","oa":2041,"o":"AlterEgo_Display_vic_sprite1_data_pointer"},{"a":17533,"t":"code","b":[141,250,7],"m":"sta","oa":2042,"o":"AlterEgo_Display_vic_sprite2_data_pointer"},{"a":17536,"t":"code","b":[141,251,7],"m":"sta","oa":2043,"o":"AlterEgo_Display_vic_sprite3_data_pointer"},{"a":17539,"t":"code","b":[141,252,7],"m":"sta","oa":2044,"o":"AlterEgo_Display_vic_sprite4_data_pointer"},{"a":17542,"t":"code","b":[141,253,7],"m":"sta","oa":2045,"o":"AlterEgo_Display_vic_sprite5_data_pointer"},{"a":17545,"t":"code","b":[141,254,7],"m":"sta","oa":2046,"o":"AlterEgo_Display_vic_sprite6_data_pointer"},{"a":17548,"t":"code","b":[141,255,7],"m":"sta","oa":2047,"o":"AlterEgo_Display_vic_sprite7_data_pointer"},{"a":17551,"t":"code","b":[169,99],"m":"lda","o":"#$63"},{"a":17553,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":17555,"t":"code","b":[169,73],"m":"lda","o":"#$49"},{"a":17557,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":17559,"t":"code","b":[169,64],"m":"lda","o":"#$40"},{"a":17561,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":17563,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":17565,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":17567,"t":"code","b":[162,64],"m":"ldx","o":"#$40"},{"a":17569,"t":"code","b":[32,186,68],"m":"jsr","oa":17594,"o":"copy_64_bytes"},{"a":17572,"t":"code","b":[169,171],"m":"lda","o":"#$AB"},{"a":17574,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":17576,"t":"code","b":[169,73],"m":"lda","o":"#$49"},{"a":17578,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":17580,"t":"code","b":[169,128],"m":"lda","o":"#$80"},{"a":17582,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":17584,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":17586,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":17588,"t":"code","b":[162,64],"m":"ldx","o":"#$40"},{"a":17590,"t":"code","b":[32,186,68],"m":"jsr","oa":17594,"o":"copy_64_bytes"},{"a":17593,"t":"code","b":[96],"m":"rts"},{"a":17594,"l":"copy_64_bytes","c":"Copy X bytes from ($12/$13) to ($0E/$0F) using Y=0..X-1. Inputs: source/destination pointers and X=count (callers use $40). Outputs: destination bytes. Assumptions: $12/$13 must point at the source and $0E/$0F at the destination, and X must hold a non-zero count (callers pass $40) because X=0 would copy 256 bytes. The copy is strictly ascending with a single Y index, so the two blocks must not overlap in the forward direction. Clobbers: A,Y,X and flags; pointers are preserved. Hardware: Touches no hardware: a plain zero-page-indirect RAM copy that calls nothing.","t":"code","b":[160,0],"m":"ldy","x":[17569,17590],"o":"#$00"},{"a":17596,"l":"LAB_44bc","t":"code","b":[177,18],"m":"lda","oa":18,"x":[17602],"o":"(native_math_scratch_b0),y"},{"a":17598,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":17600,"t":"code","b":[200],"m":"iny"},{"a":17601,"t":"code","b":[202],"m":"dex"},{"a":17602,"t":"code","b":[208,248],"m":"bne","oa":17596,"o":"LAB_44bc"},{"a":17604,"t":"code","b":[96],"m":"rts"},{"a":17605,"l":"animate_screen_region_transition","c":"Perform a raster-synchronized animated screen-region transition using sprites 1-7 as a moving mask. Inputs: argument record supplies source/destination geometry, buffer pointer, fill byte and pacing count. Outputs: swaps bitmap/screen payload bytes, updates sprite positions/colors, temporarily disables sprites at a band boundary. Assumptions: $04/$05 must point at an eleven-byte argument record (origin column, origin row, row count, source pointer, fill byte, pacing count) whose row and column values are valid indices into the $49EA, $4A8A/$4AA3 and $4ABC/$4AD5 offset tables; I/O must be banked in and sprites 1-7 must be free for use as the moving mask. It busy-waits on raster 0 with interrupts left enabled, so any IRQ handler that also writes sprite registers will corrupt the effect. Clobbers: A,X,Y and scratch $12-$1B plus transition globals $4181-$418B. Hardware: waits on VIC raster $D012 and writes sprite/VIC registers $D003-$D02E.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17607,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17609,"t":"code","b":[141,129,65],"m":"sta","oa":16769,"o":"transition_origin_column"},{"a":17612,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":17614,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17616,"t":"code","b":[141,130,65],"m":"sta","oa":16770,"o":"transition_origin_row"},{"a":17619,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":17621,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17623,"t":"code","b":[141,132,65],"m":"sta","oa":16772,"o":"transition_row_count"},{"a":17626,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":17628,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17630,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":17632,"t":"code","b":[200],"m":"iny"},{"a":17633,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17635,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":17637,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":17639,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17641,"t":"code","b":[141,133,65],"m":"sta","oa":16773,"o":"transition_fill_byte"},{"a":17644,"t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":17646,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17648,"t":"code","b":[141,137,65],"m":"sta","oa":16777,"o":"transition_frame_delay"},{"a":17651,"t":"code","b":[141,139,65],"m":"sta","oa":16779,"o":"transition_frame_countdown"},{"a":17654,"l":"LAB_44f6","t":"code","b":[173,18,208],"m":"lda","x":[17657],"o":"vic_raster"},{"a":17657,"t":"code","b":[208,251],"m":"bne","oa":17654,"o":"LAB_44f6"},{"a":17659,"t":"code","b":[172,130,65],"m":"ldy","oa":16770,"o":"transition_origin_row"},{"a":17662,"t":"code","b":[24],"m":"clc"},{"a":17663,"t":"code","b":[185,234,73],"m":"lda","oa":18922,"o":"eight_byte_column_offsets,y"},{"a":17666,"t":"code","b":[105,51],"m":"adc","o":"#$33"},{"a":17668,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":17671,"t":"code","b":[141,5,208],"m":"sta","o":"vic_sprite2_y"},{"a":17674,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":17677,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":17680,"t":"code","b":[141,11,208],"m":"sta","o":"vic_sprite5_y"},{"a":17683,"t":"code","b":[141,13,208],"m":"sta","o":"vic_sprite6_y"},{"a":17686,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":17689,"t":"code","b":[172,130,65],"m":"ldy","oa":16770,"o":"transition_origin_row"},{"a":17692,"t":"code","b":[24],"m":"clc"},{"a":17693,"t":"code","b":[185,138,74],"m":"lda","oa":19082,"o":"screen_row_base_ptrs,y"},{"a":17696,"t":"code","b":[109,129,65],"m":"adc","oa":16769,"o":"transition_origin_column"},{"a":17699,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":17701,"t":"code","b":[185,163,74],"m":"lda","oa":19107,"o":"screen_row_address_high,y"},{"a":17704,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17706,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":17708,"t":"code","b":[160,30],"m":"ldy","o":"#$1E"},{"a":17710,"t":"code","b":[177,18],"m":"lda","oa":18,"o":"(native_math_scratch_b0),y"},{"a":17712,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":17714,"t":"code","b":[141,40,208],"m":"sta","o":"vic_sprite1_colour"},{"a":17717,"t":"code","b":[141,41,208],"m":"sta","o":"vic_sprite2_colour"},{"a":17720,"t":"code","b":[141,42,208],"m":"sta","o":"vic_sprite3_colour"},{"a":17723,"t":"code","b":[141,43,208],"m":"sta","o":"vic_sprite4_colour"},{"a":17726,"t":"code","b":[141,44,208],"m":"sta","o":"vic_sprite5_colour"},{"a":17729,"t":"code","b":[141,45,208],"m":"sta","o":"vic_sprite6_colour"},{"a":17732,"t":"code","b":[141,46,208],"m":"sta","o":"vic_sprite7_colour"},{"a":17735,"t":"code","b":[173,133,65],"m":"lda","oa":16773,"o":"transition_fill_byte"},{"a":17738,"l":"LAB_454a","t":"code","b":[145,18],"m":"sta","oa":18,"x":[17741],"o":"(native_math_scratch_b0),y"},{"a":17740,"t":"code","b":[136],"m":"dey"},{"a":17741,"t":"code","b":[16,251],"m":"bpl","oa":17738,"o":"LAB_454a"},{"a":17743,"t":"code","b":[172,130,65],"m":"ldy","oa":16770,"o":"transition_origin_row"},{"a":17746,"t":"code","b":[174,129,65],"m":"ldx","oa":16769,"o":"transition_origin_column"},{"a":17749,"t":"code","b":[24],"m":"clc"},{"a":17750,"t":"code","b":[185,188,74],"m":"lda","oa":19132,"o":"bitmap_character_row_base_ptrs,y"},{"a":17753,"t":"code","b":[125,234,73],"m":"adc","oa":18922,"o":"eight_byte_column_offsets,x"},{"a":17756,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":17758,"t":"code","b":[185,213,74],"m":"lda","oa":19157,"o":"bitmap_row_address_high,y"},{"a":17761,"t":"code","b":[125,18,74],"m":"adc","oa":18962,"o":"bitmap_column_offset_high,x"},{"a":17764,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":17766,"t":"code","b":[172,132,65],"m":"ldy","oa":16772,"o":"transition_row_count"},{"a":17769,"t":"code","b":[185,234,73],"m":"lda","oa":18922,"o":"eight_byte_column_offsets,y"},{"a":17772,"t":"code","b":[141,136,65],"m":"sta","oa":16776,"o":"transition_rows_remaining"},{"a":17775,"l":"LAB_456f","t":"code","b":[160,0],"m":"ldy","x":[17943,17957],"o":"#$00"},{"a":17777,"t":"code","b":[162,31],"m":"ldx","o":"#$1F"},{"a":17779,"l":"LAB_4573","t":"code","b":[177,26],"m":"lda","oa":26,"x":[17793],"o":"(transition_destination_ptr_lo),y"},{"a":17781,"t":"code","b":[72],"m":"pha"},{"a":17782,"t":"code","b":[177,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo),y"},{"a":17784,"t":"code","b":[145,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":17786,"t":"code","b":[104],"m":"pla"},{"a":17787,"t":"code","b":[145,22],"m":"sta","oa":22,"o":"(transition_source_ptr_lo),y"},{"a":17789,"t":"code","b":[188,233,73],"m":"ldy","oa":18921,"o":"transition_sprite_last_visible_byte,x"},{"a":17792,"t":"code","b":[202],"m":"dex"},{"a":17793,"t":"code","b":[208,240],"m":"bne","oa":17779,"o":"LAB_4573"},{"a":17795,"t":"code","b":[206,136,65],"m":"dec","oa":16776,"o":"transition_rows_remaining"},{"a":17798,"t":"code","b":[208,27],"m":"bne","oa":17827,"o":"LAB_45a3"},{"a":17800,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":17802,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":17805,"t":"code","b":[141,3,208],"m":"sta","o":"vic_sprite1_y"},{"a":17808,"t":"code","b":[141,5,208],"m":"sta","o":"vic_sprite2_y"},{"a":17811,"t":"code","b":[141,7,208],"m":"sta","o":"vic_sprite3_y"},{"a":17814,"t":"code","b":[141,9,208],"m":"sta","o":"vic_sprite4_y"},{"a":17817,"t":"code","b":[141,11,208],"m":"sta","o":"vic_sprite5_y"},{"a":17820,"t":"code","b":[141,13,208],"m":"sta","o":"vic_sprite6_y"},{"a":17823,"t":"code","b":[141,15,208],"m":"sta","o":"vic_sprite7_y"},{"a":17826,"t":"code","b":[96],"m":"rts"},{"a":17827,"l":"LAB_45a3","t":"code","b":[174,3,208],"m":"ldx","x":[17798],"o":"vic_sprite1_y"},{"a":17830,"t":"code","b":[232],"m":"inx"},{"a":17831,"t":"code","b":[142,3,208],"m":"stx","o":"vic_sprite1_y"},{"a":17834,"t":"code","b":[142,5,208],"m":"stx","o":"vic_sprite2_y"},{"a":17837,"t":"code","b":[142,7,208],"m":"stx","o":"vic_sprite3_y"},{"a":17840,"t":"code","b":[142,9,208],"m":"stx","o":"vic_sprite4_y"},{"a":17843,"t":"code","b":[142,11,208],"m":"stx","o":"vic_sprite5_y"},{"a":17846,"t":"code","b":[142,13,208],"m":"stx","o":"vic_sprite6_y"},{"a":17849,"t":"code","b":[142,15,208],"m":"stx","o":"vic_sprite7_y"},{"a":17852,"t":"code","b":[24],"m":"clc"},{"a":17853,"t":"code","b":[173,136,65],"m":"lda","oa":16776,"o":"transition_rows_remaining"},{"a":17856,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":17858,"t":"code","b":[208,54],"m":"bne","oa":17914,"o":"LAB_45fa"},{"a":17860,"t":"code","b":[160,30],"m":"ldy","o":"#$1E"},{"a":17862,"t":"code","b":[165,18],"m":"lda","oa":18,"o":"native_math_scratch_b0"},{"a":17864,"t":"code","b":[105,40],"m":"adc","o":"#$28"},{"a":17866,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":17868,"t":"code","b":[165,19],"m":"lda","oa":19,"o":"native_math_scratch_b1"},{"a":17870,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17872,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":17874,"t":"code","b":[173,133,65],"m":"lda","oa":16773,"o":"transition_fill_byte"},{"a":17877,"l":"LAB_45d5","t":"code","b":[145,18],"m":"sta","oa":18,"x":[17880],"o":"(native_math_scratch_b0),y"},{"a":17879,"t":"code","b":[136],"m":"dey"},{"a":17880,"t":"code","b":[16,251],"m":"bpl","oa":17877,"o":"LAB_45d5"},{"a":17882,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":17884,"t":"code","b":[105,57],"m":"adc","o":"#$39"},{"a":17886,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":17888,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":17890,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":17892,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":17894,"t":"code","b":[160,31],"m":"ldy","o":"#$1F"},{"a":17896,"t":"code","b":[185,233,73],"m":"lda","oa":18921,"o":"transition_sprite_last_visible_byte,y"},{"a":17899,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":17901,"t":"code","b":[101,22],"m":"adc","oa":22,"o":"transition_source_ptr_lo"},{"a":17903,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":17905,"t":"code","b":[165,23],"m":"lda","oa":23,"o":"transition_source_ptr_hi"},{"a":17907,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17909,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":17911,"t":"code","b":[76,18,70],"m":"jmp","oa":17938,"o":"LAB_4612"},{"a":17914,"l":"LAB_45fa","t":"code","b":[165,26],"m":"lda","oa":26,"x":[17858],"o":"transition_destination_ptr_lo"},{"a":17916,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":17918,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":17920,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":17922,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17924,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":17926,"t":"code","b":[165,22],"m":"lda","oa":22,"o":"transition_source_ptr_lo"},{"a":17928,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":17930,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":17932,"t":"code","b":[165,23],"m":"lda","oa":23,"o":"transition_source_ptr_hi"},{"a":17934,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":17936,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":17938,"l":"LAB_4612","t":"code","b":[206,139,65],"m":"dec","oa":16779,"x":[17911],"o":"transition_frame_countdown"},{"a":17941,"t":"code","b":[240,3],"m":"beq","oa":17946,"o":"LAB_461a"},{"a":17943,"t":"code","b":[76,111,69],"m":"jmp","oa":17775,"o":"LAB_456f"},{"a":17946,"l":"LAB_461a","t":"code","b":[173,137,65],"m":"lda","oa":16777,"x":[17941],"o":"transition_frame_delay"},{"a":17949,"t":"code","b":[141,139,65],"m":"sta","oa":16779,"o":"transition_frame_countdown"},{"a":17952,"l":"LAB_4620","t":"code","b":[173,18,208],"m":"lda","x":[17955],"o":"vic_raster"},{"a":17955,"t":"code","b":[208,251],"m":"bne","oa":17952,"o":"LAB_4620"},{"a":17957,"t":"code","b":[76,111,69],"m":"jmp","oa":17775,"o":"LAB_456f"},{"a":17960,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":17962,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17964,"t":"code","b":[141,129,65],"m":"sta","oa":16769,"o":"transition_origin_column"},{"a":17967,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":17969,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17971,"t":"code","b":[141,130,65],"m":"sta","oa":16770,"o":"transition_origin_row"},{"a":17974,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":17976,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17978,"t":"code","b":[141,131,65],"m":"sta","oa":16771,"o":"transition_fill_width"},{"a":17981,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":17983,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17985,"t":"code","b":[141,132,65],"m":"sta","oa":16772,"o":"transition_row_count"},{"a":17988,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":17990,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":17992,"t":"code","b":[141,133,65],"m":"sta","oa":16773,"o":"transition_fill_byte"},{"a":17995,"t":"code","b":[24],"m":"clc"},{"a":17996,"t":"code","b":[173,130,65],"m":"lda","oa":16770,"o":"transition_origin_row"},{"a":17999,"t":"code","b":[109,132,65],"m":"adc","oa":16772,"o":"transition_row_count"},{"a":18002,"t":"code","b":[168],"m":"tay"},{"a":18003,"t":"code","b":[185,234,73],"m":"lda","oa":18922,"o":"eight_byte_column_offsets,y"},{"a":18006,"t":"code","b":[105,50],"m":"adc","o":"#$32"},{"a":18008,"t":"code","b":[141,138,65],"m":"sta","oa":16778,"o":"transition_raster_trigger"},{"a":18011,"l":"LAB_465b","t":"code","b":[205,18,208],"m":"cmp","x":[18014],"o":"vic_raster"},{"a":18014,"t":"code","b":[208,251],"m":"bne","oa":18011,"o":"LAB_465b"},{"a":18016,"t":"code","b":[24],"m":"clc"},{"a":18017,"t":"code","b":[173,130,65],"m":"lda","oa":16770,"o":"transition_origin_row"},{"a":18020,"t":"code","b":[109,132,65],"m":"adc","oa":16772,"o":"transition_row_count"},{"a":18023,"t":"code","b":[168],"m":"tay"},{"a":18024,"t":"code","b":[185,138,74],"m":"lda","oa":19082,"o":"screen_row_base_ptrs,y"},{"a":18027,"t":"code","b":[109,129,65],"m":"adc","oa":16769,"o":"transition_origin_column"},{"a":18030,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":18032,"t":"code","b":[185,163,74],"m":"lda","oa":19107,"o":"screen_row_address_high,y"},{"a":18035,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":18037,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":18039,"t":"code","b":[56],"m":"sec"},{"a":18040,"t":"code","b":[174,132,65],"m":"ldx","oa":16772,"o":"transition_row_count"},{"a":18043,"l":"LAB_467b","t":"code","b":[172,131,65],"m":"ldy","oa":16771,"x":[18068],"o":"transition_fill_width"},{"a":18046,"t":"code","b":[136],"m":"dey"},{"a":18047,"t":"code","b":[165,18],"m":"lda","oa":18,"o":"native_math_scratch_b0"},{"a":18049,"t":"code","b":[233,40],"m":"sbc","o":"#$28"},{"a":18051,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":18053,"t":"code","b":[165,19],"m":"lda","oa":19,"o":"native_math_scratch_b1"},{"a":18055,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":18057,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":18059,"t":"code","b":[173,133,65],"m":"lda","oa":16773,"o":"transition_fill_byte"},{"a":18062,"l":"LAB_468e","t":"code","b":[145,18],"m":"sta","oa":18,"x":[18065],"o":"(native_math_scratch_b0),y"},{"a":18064,"t":"code","b":[136],"m":"dey"},{"a":18065,"t":"code","b":[16,251],"m":"bpl","oa":18062,"o":"LAB_468e"},{"a":18067,"t":"code","b":[202],"m":"dex"},{"a":18068,"t":"code","b":[208,229],"m":"bne","oa":18043,"o":"LAB_467b"},{"a":18070,"t":"code","b":[96],"m":"rts"},{"a":18071,"l":"read_sid_voice3_noise","c":"Return SID voice-3 oscillator output as an unsigned random byte. Inputs: voice 3 must already be configured as a noise source. Outputs: $0A=$D41B, $0B=0. Assumptions: Voice 3 must already be running as a noise oscillator, with $D412 holding the noise waveform and a non-zero frequency as set by initialize_display_and_sprite_irq; otherwise $D41B returns a constant. I/O must be banked in for $D41B to read the SID rather than RAM. Clobbers: A and flags. C64 semantics: $D41B exposes the live oscillator waveform and is commonly used as a pseudo-random source. Hardware: Reads SID oscillator-3 output register $D41B, the standard C64 pseudo-random source, and stores it in VM primary $0A with $0B cleared. Nothing else is touched.","t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":18073,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":18075,"t":"code","b":[173,27,212],"m":"lda","o":"sid_v3_oscillator"},{"a":18078,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":18080,"t":"code","b":[96],"m":"rts"},{"a":18081,"l":"copy_rom_glyph_to_buffer","c":"Copy one eight-byte character-ROM glyph to an arbitrary destination derived from the argument record. It stops CIA1 timer A, clears CHAREN in CPU port $01 to expose character ROM at $D000-$DFFF, copies the glyph, restores I/O visibility, and restarts the timer. Inputs: character code, row/index fields and destination base in the VM argument record. Outputs: eight destination bytes. Assumptions: $04/$05 must point at an eight-byte argument record (character code, row offset, column index, destination base), and the character code must be $20 or greater because $20 is subtracted before indexing $4825. While CHAREN is cleared no interrupt handler that reads I/O may run: the routine stops CIA 1 timer A instead of using SEI, so any other enabled interrupt source must already be masked. Clobbers: A,X,Y and $0E/$0F/$12/$13; restores $01 bit 2 and CIA timer start state. Hardware: Clears bit 0 of CIA 1 control register A $DC0E to stop timer A, then clears bit 2 (CHAREN) of the 6510 port $01 so character ROM appears at $D000-$DFFF in place of the I/O block; after the eight-byte copy it re-sets $01 bit 2 and restarts the timer by setting $DC0E bit 0.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":18083,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18085,"t":"code","b":[56],"m":"sec"},{"a":18086,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":18088,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18089,"t":"code","b":[170],"m":"tax"},{"a":18090,"t":"code","b":[189,37,72],"m":"lda","oa":18469,"o":"character_rom_glyph_ptrs_ascii_20_7a,x"},{"a":18093,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":18095,"t":"code","b":[189,38,72],"m":"lda","oa":18470,"o":"character_rom_pointer_high_alias,x"},{"a":18098,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":18100,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":18102,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18104,"t":"code","b":[170],"m":"tax"},{"a":18105,"t":"code","b":[189,58,74],"m":"lda","oa":19002,"o":"thirty_one_byte_column_offsets,x"},{"a":18108,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18110,"t":"code","b":[189,98,74],"m":"lda","oa":19042,"o":"packed_panel_column_offset_high,x"},{"a":18113,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18115,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":18117,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":18119,"t":"code","b":[113,4],"m":"adc","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18121,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18123,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":18125,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":18127,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18129,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":18131,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18132,"t":"code","b":[38,15],"m":"rol","oa":15,"o":"vm_secondary_value_b1"},{"a":18134,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18135,"t":"code","b":[38,15],"m":"rol","oa":15,"o":"vm_secondary_value_b1"},{"a":18137,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18138,"t":"code","b":[38,15],"m":"rol","oa":15,"o":"vm_secondary_value_b1"},{"a":18140,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":18142,"t":"code","b":[113,4],"m":"adc","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18144,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18146,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":18148,"t":"code","b":[200],"m":"iny"},{"a":18149,"t":"code","b":[113,4],"m":"adc","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18151,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18153,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":18155,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":18158,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":18160,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":18163,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18165,"t":"code","b":[41,251],"m":"and","o":"#$FB"},{"a":18167,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18169,"l":"LAB_46f9","t":"code","b":[177,18],"m":"lda","oa":18,"x":[18174],"o":"(native_math_scratch_b0),y"},{"a":18171,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":18173,"t":"code","b":[136],"m":"dey"},{"a":18174,"t":"code","b":[16,249],"m":"bpl","oa":18169,"o":"LAB_46f9"},{"a":18176,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18178,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":18180,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18182,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":18185,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":18187,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":18190,"t":"code","b":[96],"m":"rts"},{"a":18191,"l":"copy_custom_glyph_to_buffer","c":"Copy one eight-byte glyph from the resident custom-glyph pointer table to an arbitrary destination. Inputs: glyph index and destination geometry in the VM argument record. Outputs: eight destination bytes. Assumptions: $04/$05 must point at the same eight-byte record shape, with the first byte a glyph index inside the 16-entry split pointer table at $48DB/$48EB; unlike the ROM variant nothing is subtracted, so index 0 is legal. No banking change is made, so the resolved source pointer must address currently visible RAM. Clobbers: A,X,Y and $0E/$0F/$12/$13. I/O banking is unchanged because the source is RAM, not character ROM. Hardware: Touches no hardware: source and destination are both RAM reached through zero-page pointers $12/$13 and $0E/$0F, and neither the 6510 port $01 nor CIA 1 is disturbed.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":18193,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18195,"t":"code","b":[170],"m":"tax"},{"a":18196,"t":"code","b":[189,219,72],"m":"lda","oa":18651,"o":"resident_custom_glyph_ptrs,x"},{"a":18199,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":18201,"t":"code","b":[189,235,72],"m":"lda","oa":18667,"o":"custom_glyph_pointer_high_bytes,x"},{"a":18204,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":18206,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":18208,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18210,"t":"code","b":[170],"m":"tax"},{"a":18211,"t":"code","b":[189,58,74],"m":"lda","oa":19002,"o":"thirty_one_byte_column_offsets,x"},{"a":18214,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18216,"t":"code","b":[189,98,74],"m":"lda","oa":19042,"o":"packed_panel_column_offset_high,x"},{"a":18219,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18221,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":18223,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":18225,"t":"code","b":[113,4],"m":"adc","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18227,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18229,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":18231,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":18233,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18235,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":18237,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18238,"t":"code","b":[38,15],"m":"rol","oa":15,"o":"vm_secondary_value_b1"},{"a":18240,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18241,"t":"code","b":[38,15],"m":"rol","oa":15,"o":"vm_secondary_value_b1"},{"a":18243,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18244,"t":"code","b":[38,15],"m":"rol","oa":15,"o":"vm_secondary_value_b1"},{"a":18246,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":18248,"t":"code","b":[113,4],"m":"adc","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18250,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18252,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":18254,"t":"code","b":[200],"m":"iny"},{"a":18255,"t":"code","b":[113,4],"m":"adc","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18257,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18259,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":18261,"l":"LAB_4755","t":"code","b":[177,18],"m":"lda","oa":18,"x":[18266],"o":"(native_math_scratch_b0),y"},{"a":18263,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":18265,"t":"code","b":[136],"m":"dey"},{"a":18266,"t":"code","b":[16,249],"m":"bpl","oa":18261,"o":"LAB_4755"},{"a":18268,"t":"code","b":[96],"m":"rts"},{"a":18269,"l":"copy_rom_glyph_to_screen_charset","c":"Copy one eight-byte character-ROM glyph into the active screen charset destination computed from character and screen coordinates. It temporarily stops CIA1 timer A and clears CHAREN in $01 while reading character ROM, then restores I/O and the timer. Inputs: character code and destination coordinates. Outputs: eight charset bytes. Assumptions: $04/$05 must point at a record whose first byte is a character code of $20 or more, plus row and column indices valid for the $4ABC/$4AD5 and $49EA/$4A12 tables. As in $46A1 the character ROM is exposed by clearing CHAREN, so no I/O-touching interrupt may fire during the eight-byte copy. Clobbers: A,X,Y and scratch pointers. Hardware: Stops CIA 1 timer A by clearing bit 0 of $DC0E, clears bit 2 (CHAREN) of the 6510 port $01 to map character ROM over $D000-$DFFF, copies eight bytes, then restores $01 bit 2 and restarts timer A.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":18271,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18273,"t":"code","b":[56],"m":"sec"},{"a":18274,"t":"code","b":[233,32],"m":"sbc","o":"#$20"},{"a":18276,"t":"code","b":[10],"m":"asl","o":"a"},{"a":18277,"t":"code","b":[170],"m":"tax"},{"a":18278,"t":"code","b":[189,37,72],"m":"lda","oa":18469,"o":"character_rom_glyph_ptrs_ascii_20_7a,x"},{"a":18281,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":18283,"t":"code","b":[189,38,72],"m":"lda","oa":18470,"o":"character_rom_pointer_high_alias,x"},{"a":18286,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":18288,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":18290,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18292,"t":"code","b":[170],"m":"tax"},{"a":18293,"t":"code","b":[189,188,74],"m":"lda","oa":19132,"o":"bitmap_character_row_base_ptrs,x"},{"a":18296,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18298,"t":"code","b":[189,213,74],"m":"lda","oa":19157,"o":"bitmap_row_address_high,x"},{"a":18301,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18303,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":18305,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18307,"t":"code","b":[170],"m":"tax"},{"a":18308,"t":"code","b":[189,234,73],"m":"lda","oa":18922,"o":"eight_byte_column_offsets,x"},{"a":18311,"t":"code","b":[101,14],"m":"adc","oa":14,"o":"vm_secondary_value_b0"},{"a":18313,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18315,"t":"code","b":[189,18,74],"m":"lda","oa":18962,"o":"bitmap_column_offset_high,x"},{"a":18318,"t":"code","b":[101,15],"m":"adc","oa":15,"o":"vm_secondary_value_b1"},{"a":18320,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18322,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":18324,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":18327,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":18329,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":18332,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18334,"t":"code","b":[41,251],"m":"and","o":"#$FB"},{"a":18336,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18338,"l":"LAB_47a2","t":"code","b":[177,18],"m":"lda","oa":18,"x":[18343],"o":"(native_math_scratch_b0),y"},{"a":18340,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":18342,"t":"code","b":[136],"m":"dey"},{"a":18343,"t":"code","b":[16,249],"m":"bpl","oa":18338,"o":"LAB_47a2"},{"a":18345,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18347,"t":"code","b":[9,4],"m":"ora","o":"#$04"},{"a":18349,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":18351,"t":"code","b":[173,14,220],"m":"lda","o":"cia1_control_a"},{"a":18354,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":18356,"t":"code","b":[141,14,220],"m":"sta","o":"cia1_control_a"},{"a":18359,"t":"code","b":[96],"m":"rts"},{"a":18360,"l":"copy_custom_glyph_to_screen_charset","c":"Copy one eight-byte resident custom glyph into the active screen charset destination computed from the argument record. Inputs: glyph index and coordinates. Outputs: eight charset bytes. Assumptions: $04/$05 must point at the glyph-index/row/column record, with the index inside the 16-entry $48DB/$48EB pointer table and the coordinates inside the $4ABC/$4AD5 and $49EA/$4A12 tables. Nothing is banked, so the computed destination must be RAM that is currently visible. Clobbers: A,X,Y and scratch pointers; leaves CPU-port banking unchanged. Hardware: Touches no hardware: it copies eight bytes between RAM through zero-page pointers $12/$13 and $0E/$0F, leaving the 6510 port $01 and CIA 1 untouched.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":18362,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18364,"t":"code","b":[170],"m":"tax"},{"a":18365,"t":"code","b":[189,219,72],"m":"lda","oa":18651,"o":"resident_custom_glyph_ptrs,x"},{"a":18368,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":18370,"t":"code","b":[189,235,72],"m":"lda","oa":18667,"o":"custom_glyph_pointer_high_bytes,x"},{"a":18373,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":18375,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":18377,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18379,"t":"code","b":[170],"m":"tax"},{"a":18380,"t":"code","b":[189,188,74],"m":"lda","oa":19132,"o":"bitmap_character_row_base_ptrs,x"},{"a":18383,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18385,"t":"code","b":[189,213,74],"m":"lda","oa":19157,"o":"bitmap_row_address_high,x"},{"a":18388,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18390,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":18392,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":18394,"t":"code","b":[170],"m":"tax"},{"a":18395,"t":"code","b":[189,234,73],"m":"lda","oa":18922,"o":"eight_byte_column_offsets,x"},{"a":18398,"t":"code","b":[101,14],"m":"adc","oa":14,"o":"vm_secondary_value_b0"},{"a":18400,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":18402,"t":"code","b":[189,18,74],"m":"lda","oa":18962,"o":"bitmap_column_offset_high,x"},{"a":18405,"t":"code","b":[101,15],"m":"adc","oa":15,"o":"vm_secondary_value_b1"},{"a":18407,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":18409,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":18411,"l":"LAB_47eb","t":"code","b":[177,18],"m":"lda","oa":18,"x":[18416],"o":"(native_math_scratch_b0),y"},{"a":18413,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":18415,"t":"code","b":[136],"m":"dey"},{"a":18416,"t":"code","b":[16,249],"m":"bpl","oa":18411,"o":"LAB_47eb"},{"a":18418,"t":"code","b":[96],"m":"rts"},{"a":18419,"l":"screen_transfer_block_ptrs","c":"Twenty-five split little-endian pointers used in adjacent pairs by the forward/backward display transfer routines. Entry N combines low byte $47F3+N with high byte $480C+N; each neighboring pair defines the endpoints of a $B0-byte bitmap/display block copy. The routines choose ascending or descending traversal to remain overlap-safe.","t":"byte","b":[71],"x":[17239,17284]},{"a":18420,"l":"screen_transfer_pointer_low_entry1_alias","c":"Entry 1 low byte within the 25-entry split pointer table at $47F3/$480C. The screen-transfer routine uses adjacent table indices to form source/destination block starts; this label is an indexed-base alias, not a separate 49-byte payload.","t":"byte","b":[135,199,7,71,135,199,7,71],"x":[17249,17274]},{"a":18428,"t":"byte","b":[135,199,7,71,135,199,7,71]},{"a":18436,"t":"byte","b":[135,199,7,71,135,199,7,71]},{"a":18444,"l":"screen_transfer_pointer_high_bytes","c":"Twenty-five high bytes paired with lows $47F3-$480B, ending $4824. They identify successive $B0-byte transfer blocks in the display buffer. Character-ROM pointer words start separately at $4825.","t":"byte","b":[32],"x":[17244,17289]},{"a":18445,"l":"screen_transfer_high_entry1_alias","c":"High byte for split display-transfer pointer entry 1. It continues the 25-byte high half $480C-$4824, paired with lows $47F3-$480B; this label does not begin a second table.","t":"byte","b":[33,34,36,37,38,39,41,42],"x":[17254,17279]},{"a":18453,"t":"byte","b":[43,44,46,47,48,49,51,52]},{"a":18461,"t":"byte","b":[53,54,56,57,58,59,61,62]},{"a":18469,"l":"character_rom_glyph_ptrs_ascii_20_7a","c":"Ninety-one little-endian character-ROM glyph pointers for byte values $20-$7A. Each address is eight-byte aligned. The copy routines clear CHAREN in CPU port $01 before dereferencing these targets, exposing the character generator ROM at $D000-$DFFF instead of I/O or underlying RAM.","t":"word","b":[0,209,8,209,16,209,24,209],"d":[53504,53512,53520,53528],"x":[18090,18278]},{"a":18470,"t":"note","l":"character_rom_pointer_high_alias","c":"High-byte indexed base of the 91 interleaved glyph words beginning $4825. The ASCII-minus-$20 index is doubled at $475D; this base does not define a separate high-byte allocation. All entries are aligned ROM addresses and native copy tests exercise the complete supported character range.","note":"inside the item at $4825","x":[18095,18283]},{"a":18477,"t":"word","b":[32,209,40,209,48,209,56,209],"d":[53536,53544,53552,53560]},{"a":18485,"t":"word","b":[64,209,72,209,80,209,88,209],"d":[53568,53576,53584,53592]},{"a":18493,"t":"word","b":[96,209,104,209,112,209,120,209],"d":[53600,53608,53616,53624]},{"a":18501,"t":"word","b":[128,209,136,209,144,209,152,209],"d":[53632,53640,53648,53656]},{"a":18509,"t":"word","b":[160,209,168,209,176,209,184,209],"d":[53664,53672,53680,53688]},{"a":18517,"t":"word","b":[192,209,200,209,208,209,216,209],"d":[53696,53704,53712,53720]},{"a":18525,"t":"word","b":[224,209,232,209,240,209,248,209],"d":[53728,53736,53744,53752]},{"a":18533,"t":"word","b":[0,208,8,208,16,208,24,208],"d":[53248,53256,53264,53272]},{"a":18541,"t":"word","b":[32,208,40,208,48,208,56,208],"d":[53280,53288,53296,53304]},{"a":18549,"t":"word","b":[64,208,72,208,80,208,88,208],"d":[53312,53320,53328,53336]},{"a":18557,"t":"word","b":[96,208,104,208,112,208,120,208],"d":[53344,53352,53360,53368]},{"a":18565,"t":"word","b":[128,208,136,208,144,208,152,208],"d":[53376,53384,53392,53400]},{"a":18573,"t":"word","b":[160,208,168,208,176,208,184,208],"d":[53408,53416,53424,53432]},{"a":18581,"t":"word","b":[192,208,200,208,208,208,216,208],"d":[53440,53448,53456,53464]},{"a":18589,"t":"word","b":[224,208,232,208,240,208,248,208],"d":[53472,53480,53488,53496]},{"a":18597,"t":"word","b":[0,209,8,216,16,216,24,216],"d":[53504,55304,55312,55320]},{"a":18605,"t":"word","b":[32,216,40,216,48,216,56,216],"d":[55328,55336,55344,55352]},{"a":18613,"t":"word","b":[64,216,72,216,80,216,88,216],"d":[55360,55368,55376,55384]},{"a":18621,"t":"word","b":[96,216,104,216,112,216,120,216],"d":[55392,55400,55408,55416]},{"a":18629,"t":"word","b":[128,216,136,216,144,216,152,216],"d":[55424,55432,55440,55448]},{"a":18637,"t":"word","b":[160,216,168,216,176,216,184,216],"d":[55456,55464,55472,55480]},{"a":18645,"t":"word","b":[192,216,200,216,208,216],"d":[55488,55496,55504]},{"a":18651,"l":"resident_custom_glyph_ptrs","c":"Sixteen split little-endian pointers into the resident eight-byte custom-glyph pool at $48FB-$4962. Several entries deliberately reuse or begin inside an earlier glyph to form related line/box fragments without duplicating bytes.","t":"byte","b":[251,3,11,19,27,35,43,51],"x":[18196,18365]},{"a":18659,"t":"byte","b":[59,67,75,83,31,87,91,31]},{"a":18667,"l":"custom_glyph_pointer_high_bytes","c":"Sixteen high bytes paired with lows $48DB-$48EA. Targets are the checked eight-byte border/fill glyphs $48FB-$4962, including repeated $491F and overlapping $4957/$495B entries. Native $47B8 copies all sixteen target patterns exactly to the selected bitmap cell.","t":"byte","b":[72,73,73,73,73,73,73,73],"x":[18201,18370]},{"a":18675,"t":"byte","b":[73,73,73,73,73,73,73,73]},{"a":18683,"l":"resident_custom_glyph_48fb","c":"Resident eight-byte glyph and reusable glyph-fragment bytes selected through the split pointer table at $48DB/$48EB. The copy helpers transfer a selected eight-byte pattern either to a caller buffer or into the active screen charset.","t":"byte","b":[0,0,63,48,48,48,48,48]},{"a":18691,"l":"border_glyph_4903","c":"Eight-byte hires glyph: upper-right border corner. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[0,0,252,12,12,12,12,12]},{"a":18699,"l":"border_glyph_490b","c":"Eight-byte hires glyph: lower-left border corner. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[48,48,48,48,48,63,0,0]},{"a":18707,"l":"border_glyph_4913","c":"Eight-byte hires glyph: lower-right border corner. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[12,12,12,12,12,252,0,0]},{"a":18715,"l":"border_glyph_491b","c":"Eight-byte hires glyph: horizontal line on the fourth pixel row. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[0,0,255,0]},{"a":18719,"l":"border_glyph_491f","c":"Eight-byte hires glyph: blank glyph selected twice by the pointer directory; it overlaps the tails of neighboring line patterns. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[0,0,0,0]},{"a":18723,"l":"border_glyph_4923","c":"Eight-byte hires glyph: horizontal line on the eighth pixel row. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[0,0,0,0,0,255,0,0]},{"a":18731,"l":"border_glyph_492b","c":"Eight-byte hires glyph: vertical line on the first pixel column. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[48,48,48,48,48,48,48,48]},{"a":18739,"l":"border_glyph_4933","c":"Eight-byte hires glyph: vertical line on the eighth pixel column. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[12,12,12,12,12,12,12,12]},{"a":18747,"l":"border_glyph_493b","c":"Eight-byte hires glyph: horizontal line on the first pixel row. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[255,0,0,0,0,0,0,0]},{"a":18755,"l":"border_glyph_4943","c":"Eight-byte hires glyph: left vertical continuation. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":18763,"l":"border_glyph_494b","c":"Eight-byte hires glyph: upper-left corner with its top line shifted down one row. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[255,192,192,192,192,192,192,192]},{"a":18771,"l":"border_glyph_4953","c":"Eight-byte hires glyph: two set pixels on the first row. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[192,0,0,0]},{"a":18775,"l":"border_glyph_4957","c":"Eight-byte hires glyph: solid lower rectangle covering the bottom four rows; overlaps the following filled glyph. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[0,0,0,0]},{"a":18779,"l":"border_glyph_495b","c":"Eight-byte hires glyph: fully set 8-by-8 fill. Pointer directory $48DB/$48EB selects this exact starting address, so overlapping starts must be preserved. Rendering reads most significant bit as the left pixel. Native $47B8 copied all selected glyphs byte-for-byte using checked bitmap-row and column offsets.","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18787,"l":"sprite_transition_mask_a","c":"First 64-byte sprite image copied to $0340 by display initialization and selected through VIC sprite pointer $0D. It supplies one of the moving masks used by the raster-synchronized screen transition.","t":"byte","b":[0,255,255,0,127,254,0,63]},{"a":18795,"t":"byte","b":[252,0,31,248,0,15,240,0]},{"a":18803,"t":"byte","b":[31,224,0,127,192,1,239,128]},{"a":18811,"t":"byte","b":[7,143,0,30,14,0,24,12]},{"a":18819,"t":"byte","b":[0,0,8,0,0,0,0,0]},{"a":18827,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18835,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18843,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18851,"l":"sprite_transition_alignment_gap","c":"Eight zero bytes between the two resident 64-byte transition-sprite source images. They provide alignment/separation and have no independent executable interpretation.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18859,"l":"sprite_transition_mask_b_prefix","c":"First 63 bytes of the second sprite image copied to $0380 by display initialization and selected through VIC sprite pointer $0E. Its final byte is shared with the first element at $49EA of the screen-offset table that follows.","t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18867,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18875,"t":"byte","b":[255,255,255,255,255,255,255,255]},{"a":18883,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18891,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18899,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18907,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18915,"t":"byte","b":[0,0,0,0,0,0]},{"a":18921,"l":"transition_sprite_last_visible_byte","c":"Byte 62 of the second transition-sprite source beginning $49AB. Native initialization copies 64 bytes, so its following byte at $49EA is both alignment byte 63 and first low-column-offset entry. The physical overlap must be preserved.","t":"byte","b":[0],"x":[17789,17896]},{"a":18922,"l":"eight_byte_column_offsets","c":"Forty split 16-bit numeric offsets equal to 8*column for columns 0-39. The low half begins with $49EA, whose first byte is also the final byte of the 64-byte sprite source copied from $49AB. These values are arithmetic offsets, not standalone pointers.","t":"byte","b":[0,8,16,24,32,40,48,56],"x":[17663,17753,17769,18003,18308,18395]},{"a":18930,"t":"byte","b":[64,72,80,88,96,104,112,120]},{"a":18938,"t":"byte","b":[128,136,144,152,160,168,176,184]},{"a":18946,"t":"byte","b":[192,200,208,216,224,232,240,248]},{"a":18954,"t":"byte","b":[0,8,16,24,32,40,48,56]},{"a":18962,"l":"bitmap_column_offset_high","c":"40 high bytes paired with lows at $49EA. Reconstructed entry i equals $0000+8*i for every captured entry. This is the high half of one split lookup, not an independent allocation; consumers add the selected row/column offset to form display addresses.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[17761,18315,18402]},{"a":18970,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18978,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18986,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":18994,"t":"byte","b":[1,1,1,1,1,1,1,1]},{"a":19002,"l":"thirty_one_byte_column_offsets","c":"Forty split 16-bit numeric offsets equal to 31*column. Glyph-copy helpers combine one selected offset with a row value, multiply by eight, and add the caller's destination base to address a 31-byte-wide custom character grid.","t":"byte","b":[0,31,62,93,124,155,186,217],"x":[18105,18211]},{"a":19010,"t":"byte","b":[248,23,54,85,116,147,178,209]},{"a":19018,"t":"byte","b":[240,15,46,77,108,139,170,201]},{"a":19026,"t":"byte","b":[232,7,38,69,100,131,162,193]},{"a":19034,"t":"byte","b":[224,255,30,61,92,123,154,185]},{"a":19042,"l":"packed_panel_column_offset_high","c":"40 high bytes paired with lows at $4A3A. Reconstructed entry i equals $0000+31*i for every captured entry. This is the high half of one split lookup, not an independent allocation; consumers add the selected row/column offset to form display addresses.","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[18110,18216]},{"a":19050,"t":"byte","b":[0,1,1,1,1,1,1,1]},{"a":19058,"t":"byte","b":[1,2,2,2,2,2,2,2]},{"a":19066,"t":"byte","b":[2,3,3,3,3,3,3,3]},{"a":19074,"t":"byte","b":[3,3,4,4,4,4,4,4]},{"a":19082,"l":"screen_row_base_ptrs","c":"Twenty-five split screen-row pointers: $0400 + 40*row. UI transition routines index these tables by row before reading or filling the corresponding 40-byte screen-code/color row.","t":"byte","b":[0,40,80,120,160,200,240,24],"x":[17693,18024]},{"a":19090,"t":"byte","b":[64,104,144,184,224,8,48,88]},{"a":19098,"t":"byte","b":[128,168,208,248,32,72,112,152]},{"a":19106,"t":"byte","b":[192]},{"a":19107,"l":"screen_row_address_high","c":"25 high bytes paired with lows at $4A8A. Reconstructed entry i equals $0400+40*i for every captured entry. This is the high half of one split lookup, not an independent allocation; consumers add the selected row/column offset to form display addresses.","t":"byte","b":[4,4,4,4,4,4,4,5],"x":[17701,18032]},{"a":19115,"t":"byte","b":[5,5,5,5,5,6,6,6]},{"a":19123,"t":"byte","b":[6,6,6,6,7,7,7,7]},{"a":19131,"t":"byte","b":[7]},{"a":19132,"l":"bitmap_character_row_base_ptrs","c":"Twenty-five split bitmap character-row pointers: $2000 + 320*row. Each points to the first bitmap byte for one 40-character display row; transition and glyph routines add an eight-byte column offset to reach a character cell.","t":"byte","b":[0,64,128,192,0,64,128,192],"x":[17750,18293,18380]},{"a":19140,"t":"byte","b":[0,64,128,192,0,64,128,192]},{"a":19148,"t":"byte","b":[0,64,128,192,0,64,128,192]},{"a":19156,"t":"byte","b":[0]},{"a":19157,"l":"bitmap_row_address_high","c":"25 high bytes paired with lows at $4ABC. Reconstructed entry i equals $2000+320*i for every captured entry. This is the high half of one split lookup, not an independent allocation; consumers add the selected row/column offset to form display addresses.","t":"byte","b":[32,33,34,35,37,38,39,40],"x":[17758,18298,18385]},{"a":19165,"t":"byte","b":[42,43,44,45,47,48,49,50]},{"a":19173,"t":"byte","b":[52,53,54,55,57,58,59,60]},{"a":19181,"t":"byte","b":[62]},{"a":19182,"l":"read_length_prefixed_stream_object","c":"Read a two-word length header, allocate the object and read or skip its payload.\nInputs: +8 is a boolean controlling allocation/read versus forward skip.\nOutputs: allocated pointer, or zero with packed runtime error $8043=-6.\nAssumptions: an active seekable MAP stream and a valid two-word header.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; advances the MAP stream and VM heap.\nHardware: IEC through $5CE0.\nEntry protocol: JSR $70F8; signed frame adjustment -6; bytecode $4AF3-$4B4E (58 decoded operations); native calls $5CE0, $6E70. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19185,"l":"vm_frame_adjust_4aee","c":"Signed frame adjustment -6 for read_length_prefixed_stream_object at $4AEE, consumed by the $70F8 VM gateway before bytecode begins at $4AF3. Read a two-word length header, allocate the object and read or skip its payload.","t":"word","b":[250,255],"d":[65530]},{"a":19187,"l":"vm_bytecode_4aee","c":"Compiled bytecode belonging to read_length_prefixed_stream_object ($4AEE). Read a two-word length header, allocate the object and read or skip its payload. This position is the opcode of push_const_2 at $4AF3. The procedure decodes to 58 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include enter_inline_native_5ce6_save4_adjust_minus2, vm_heap_allocate.","t":"byte","b":[98,222,254,255,179,172,224,92]},{"a":19195,"t":"byte","b":[174,4,80,195,216,4,75,64]},{"a":19203,"t":"byte","b":[207,98,222,252,255,179,172,224]},{"a":19211,"t":"byte","b":[92,174,4,80,195,216,21,75]},{"a":19219,"t":"byte","b":[64,207,12,216,63,75,96,172]},{"a":19227,"t":"byte","b":[112,110,174,2,41,11,26,187]},{"a":19235,"t":"byte","b":[179,9,180,198,216,63,75,11]},{"a":19243,"t":"byte","b":[26,187,25,188,179,172,112,110]},{"a":19251,"t":"byte","b":[174,2,215,63,75,137,250,168]},{"a":19259,"t":"byte","b":[67,128,64,207,58,59,172,224]},{"a":19267,"t":"byte","b":[92,174,4,26,194,216,77,75]},{"a":19275,"t":"byte","b":[64,207,11,207]},{"a":19279,"l":"call_vm_function_pointer","c":"Tail-call the callable address supplied by the caller.\nInputs: +8 is a VM/native callable address.\nOutputs: callee-defined result.\nAssumptions: the pointer obeys the resident callable ABI.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; callee-defined.\nHardware: callee-defined.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $4B54-$4B56 (3 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19282,"l":"vm_frame_adjust_4b4f","c":"Signed frame adjustment 0 for call_vm_function_pointer at $4B4F, consumed by the $70F8 VM gateway before bytecode begins at $4B54. Tail-call the callable address supplied by the caller.","t":"word","b":[0,0],"d":[0]},{"a":19284,"l":"vm_bytecode_4b4f","c":"Compiled bytecode belonging to call_vm_function_pointer ($4B4F). Tail-call the callable address supplied by the caller. This position is the opcode of load_primary_local_+8 at $4B54. The procedure decodes to 3 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[12,221,207]},{"a":19287,"l":"run_modal_selection_dialog","c":"Render and operate a descriptor-driven modal selection dialog.\nInputs: +8/+10 point to menu text/descriptor state; later arguments control selection geometry.\nOutputs: selected row/control code.\nAssumptions: the menu descriptor and display/input tables are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; screen, active charset, sprite/input and transition state.\nHardware: VIC-II and CIA 1 through display/input helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -10; bytecode $4B5C-$4C01 (108 decoded operations); native calls $4CCC, $4CDE, $545B, $54BF, $554D, $56FF, $5F30. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19290,"l":"vm_frame_adjust_4b57","c":"Signed frame adjustment -10 for run_modal_selection_dialog at $4B57, consumed by the $70F8 VM gateway before bytecode begins at $4B5C. Render and operate a descriptor-driven modal selection dialog.","t":"word","b":[246,255],"d":[65526]},{"a":19292,"l":"vm_bytecode_4b57","c":"Compiled bytecode belonging to run_modal_selection_dialog ($4B57). Render and operate a descriptor-driven modal selection dialog. This position is the opcode of load_primary_local_+8 at $4B5C. The procedure decodes to 108 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include clear_hires_bitmap, install_dialog_glyph_range, delay_scaled_iterations, read_pointer_device_position, hit_test_selection_rectangle, read_normalized_input.","t":"byte","b":[12,176,43,12,114,176,42,12]},{"a":19300,"t":"byte","b":[116,44,143,252,172,204,76,12]},{"a":19308,"t":"byte","b":[176,216,133,75,12,114,176,179]},{"a":19316,"t":"byte","b":[96,12,176,179,172,222,76,174]},{"a":19324,"t":"byte","b":[6,12,116,44,143,252,214,107]},{"a":19332,"t":"byte","b":[75,59,13,116,179,172,191,84]},{"a":19340,"t":"byte","b":[174,4,142,136,19,172,91,84]},{"a":19348,"t":"byte","b":[174,2,64,41,64,39,172,255]},{"a":19356,"t":"byte","b":[86,40,8,139,16,218,215,230]},{"a":19364,"t":"byte","b":[75,8,81,218,216,181,75,9]},{"a":19372,"t":"byte","b":[80,196,216,181,75,9,209,41]},{"a":19380,"t":"byte","b":[208,8,82,218,216,198,75,9]},{"a":19388,"t":"byte","b":[208,26,194,216,198,75,9,208]},{"a":19396,"t":"byte","b":[41,209,7,25,193,216,227,75]},{"a":19404,"t":"byte","b":[9,39,9,210,27,187,179,13]},{"a":19412,"t":"byte","b":[116,179,172,191,84,174,4,142]},{"a":19420,"t":"byte","b":[136,19,172,91,84,174,2,214]},{"a":19428,"t":"byte","b":[154,75,97,111,141,39,111,141]},{"a":19436,"t":"byte","b":[32,142,0,4,172,77,85,174]},{"a":19444,"t":"byte","b":[12,172,48,95,142,136,19,172]},{"a":19452,"t":"byte","b":[91,84,174,2,9,207]},{"a":19458,"l":"continue_menu_text_with_prefix_state","c":"Three leading zero state/padding bytes followed by the zero-terminated menu label '    continue'. The enclosing VM procedure addresses this resident UI data directly.","t":"byte","b":[0,0,0,32,32,32,32,99]},{"a":19466,"t":"byte","b":[111,110,116,105,110,117,101,0]},{"a":19474,"l":"format_and_show_error_message","c":"Build a bounded diagnostic containing a signed error value and show it modally.\nInputs: +8 message pointer; +10 signed error value.\nOutputs: display side effect; dialog result is not semantically used.\nAssumptions: the message is NUL-terminated.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; 40-byte work strings at $82E1/$82E5/$82E9.\nHardware: display/input through $4B57.\nEntry protocol: JSR $70F8; signed frame adjustment -104; bytecode $4C17-$4CA0 (68 decoded operations); native calls $42D3, $4B57, $6951, $6BBB. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19477,"l":"vm_frame_adjust_4c12","c":"Signed frame adjustment -104 for format_and_show_error_message at $4C12, consumed by the $70F8 VM gateway before bytecode begins at $4C17. Build a bounded diagnostic containing a signed error value and show it modally.","t":"word","b":[152,255],"d":[65432]},{"a":19479,"l":"vm_bytecode_4c12","c":"Compiled bytecode belonging to format_and_show_error_message ($4C12). Build a bounded diagnostic containing a signed error value and show it modally. This position is the opcode of push_local_+8 at $4C17. The procedure decodes to 68 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_word_as_three_decimal_digits, run_modal_selection_dialog, copy_bounded_zero_terminated_string, measure_zero_terminated_string.","t":"byte","b":[60,172,187,107,174,2,133,152]},{"a":19487,"t":"byte","b":[141,40,60,222,154,255,179,172]},{"a":19495,"t":"byte","b":[81,105,174,6,64,162,194,255]},{"a":19503,"t":"byte","b":[222,154,255,168,225,130,129,152]},{"a":19511,"t":"byte","b":[139,40,196,216,83,76,141,40]},{"a":19519,"t":"byte","b":[12,143,40,179,222,195,255,179]},{"a":19527,"t":"byte","b":[172,81,105,174,6,64,162,235]},{"a":19535,"t":"byte","b":[255,214,87,76,64,162,195,255]},{"a":19543,"t":"byte","b":[222,195,255,168,229,130,13,80]},{"a":19551,"t":"byte","b":[194,216,110,76,137,45,162,236]},{"a":19559,"t":"byte","b":[255,13,203,45,214,115,76,137]},{"a":19567,"t":"byte","b":[32,162,236,255,222,237,255,179]},{"a":19575,"t":"byte","b":[13,140,232,3,182,179,172,211]},{"a":19583,"t":"byte","b":[66,174,4,222,240,255,179,13]},{"a":19591,"t":"byte","b":[140,232,3,185,179,172,211,66]},{"a":19599,"t":"byte","b":[174,4,222,236,255,168,233,130]},{"a":19607,"t":"byte","b":[96,142,221,130,172,87,75,174]},{"a":19615,"t":"byte","b":[4,207]},{"a":19617,"l":"report_packed_runtime_error","c":"Show the high and low components of packed runtime status $8043.\nInputs: +8 context string.\nOutputs: two diagnostic dialogs.\nAssumptions: $8043 contains the current packed status.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; temporary error-format buffers.\nHardware: display/input through $4C12.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $4CA6-$4CC2 (15 decoded operations); native calls $4C12. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19620,"l":"vm_frame_adjust_4ca1","c":"Signed frame adjustment 0 for report_packed_runtime_error at $4CA1, consumed by the $70F8 VM gateway before bytecode begins at $4CA6. Show the high and low components of packed runtime status $8043.","t":"word","b":[0,0],"d":[0]},{"a":19622,"l":"vm_bytecode_4ca1","c":"Compiled bytecode belonging to report_packed_runtime_error ($4CA1). Show the high and low components of packed runtime status $8043. This position is the opcode of load_primary_absolute_word_alias at $4CA6. The procedure decodes to 15 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_and_show_error_message.","t":"byte","b":[164,67,128,88,191,179,60,172]},{"a":19630,"t":"byte","b":[18,76,174,4,164,67,128,140]},{"a":19638,"t":"byte","b":[255,0,218,179,142,195,76,172]},{"a":19646,"t":"byte","b":[18,76,174,4,207]},{"a":19651,"l":"errno_low_error_text","c":"Zero-terminated active runtime diagnostic text: 'errno lo'.","t":"byte","b":[101,114,114,110,111,32,108,111]},{"a":19659,"t":"byte","b":[0]},{"a":19660,"l":"clear_hires_bitmap","c":"Clear the 8,000-byte hires bitmap at $2000.\nInputs: none.\nOutputs: $2000-$3F3F become zero.\nAssumptions: bitmap RAM is writable.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $2000-$3F3F.\nHardware: no direct VIC-II register write.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $4CD1-$4CDD (6 decoded operations); native calls $6521. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19663,"l":"vm_frame_adjust_4ccc","c":"Signed frame adjustment 0 for clear_hires_bitmap at $4CCC, consumed by the $70F8 VM gateway before bytecode begins at $4CD1. Clear the 8,000-byte hires bitmap at $2000.","t":"word","b":[0,0],"d":[0]},{"a":19665,"l":"vm_bytecode_4ccc","c":"Compiled bytecode belonging to clear_hires_bitmap ($4CCC). Clear the 8,000-byte hires bitmap at $2000. This position is the opcode of push_const_0 at $4CD1. The procedure decodes to 6 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include fill_memory_range.","t":"byte","b":[96,142,64,31,142,0,32,172]},{"a":19673,"t":"byte","b":[33,101,174,6,207]},{"a":19678,"l":"install_dialog_glyph_range","c":"Copy a caller-selected sequence of character-ROM glyphs into the active screen charset.\nInputs: +8/+10/+12 describe glyph range and destination geometry.\nOutputs: requested charset glyphs installed.\nAssumptions: character ROM is available through banking and the range is valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; active charset RAM.\nHardware: temporarily changes CPU port $01; uses CIA timing through $475D.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $4CE3-$4D04 (27 decoded operations); native calls $475D. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19681,"l":"vm_frame_adjust_4cde","c":"Signed frame adjustment -4 for install_dialog_glyph_range at $4CDE, consumed by the $70F8 VM gateway before bytecode begins at $4CE3. Copy a caller-selected sequence of character-ROM glyphs into the active screen charset.","t":"word","b":[252,255],"d":[65532]},{"a":19683,"l":"vm_bytecode_4cde","c":"Compiled bytecode belonging to install_dialog_glyph_range ($4CDE). Copy a caller-selected sequence of character-ROM glyphs into the active screen charset. This position is the opcode of load_primary_const_0 at $4CE3. The procedure decodes to 27 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_rom_glyph_to_screen_charset.","t":"byte","b":[64,43,13,42,12,27,187,211]},{"a":19691,"t":"byte","b":[216,4,77,62,10,208,42,209]},{"a":19699,"t":"byte","b":[179,11,208,43,209,28,187,211]},{"a":19707,"t":"byte","b":[179,172,93,71,174,6,214,231]},{"a":19715,"t":"byte","b":[76,207]},{"a":19717,"l":"read_save_directory_aesd","c":"Read the 160-byte AESD save-directory file into the caller buffer. It repeatedly attempts to open AESD, prompting through $5677 after open failure; on success it calls the resident exact-length read helper $607C for $00A0 bytes and closes the channel through $6691. Inputs: caller frame word +8 points to the 160-byte destination. Output: VM primary=0 only when exactly 160 bytes were read, otherwise $FFFF. Assumptions: Entered as a VM procedure through JSR $70F8, so the frame-adjustment word $FFFC must immediately follow the JSR and the caller's frame word +8 must point at a writable 160-byte buffer. KERNAL ROM must be banked in for the file wrappers it reaches, and AESD must exist on the currently selected device -- an open failure loops through the $5677 prompt rather than returning. Clobbers VM locals and IEC/KERNAL file state through the called helpers. Hardware: No hardware access of its own: a JSR into the VM gateway followed by bytecode. The bytecode reaches the KERNAL wrappers at $6DB2-$6E22 (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKIN $FFC6, CHRIN $FFCF, CLOSE $FFC3), so the IEC bus and CIA 2 port A $DD00 are driven indirectly by KERNAL. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19720,"l":"vm_frame_adjust_4d05","c":"Signed frame adjustment -4 for read_save_directory_aesd at $4D05, consumed by the $70F8 VM gateway before bytecode begins at $4D0A. Read the 160-byte AESD save-directory file into the caller buffer. It repeatedly attempts to open AESD, prompting through $5677 after open failure; on success it calls the resident exact-length read helper $607C for $00A0 bytes and closes the channel through $6691. Inputs: caller frame word +8 points to the 160-byte destination. Output: VM primary=0 only when exactly 160 bytes were read, otherwise $FFFF. Assumptions: Entered as a VM procedure through JSR $70F8, so the frame-adjustment word $FFFC must immediately follow the JSR and the caller's frame word +8 must point at a writable 160-byte buffer. KERNAL ROM must be banked in for the file wrappers it reaches, and AESD must exist on the currently selected device -- an open failure loops through the $5677 prompt rather than returning. Clobbers VM locals and IEC/KERNAL file state through the called helpers. Hardware: No hardware access of its own: a JSR into the VM gateway followed by bytecode. The bytecode reaches the KERNAL wrappers at $6DB2-$6E22 (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKIN $FFC6, CHRIN $FFCF, CLOSE $FFC3), so the IEC bus and CIA 2 port A $DD00 are driven indirectly by KERNAL. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[252,255],"d":[65532]},{"a":19722,"l":"vm_bytecode_4d05","c":"Compiled bytecode belonging to read_save_directory_aesd ($4D05). Read the 160-byte AESD save-directory file into the caller buffer. It repeatedly attempts to open AESD, prompting through $5677 after open failure; on success it calls the resident exact-length read helper $607C for $00A0 bytes and closes the channel through $6691. Inputs: caller frame word +8 points to the 160-byte destination. Output: VM primary=0 only when exactly 160 bytes were read, otherwise $FFFF. Assumptions: Entered as a VM procedure through JSR $70F8, so the frame-adjustment word $FFFC must immediately follow the JSR and the caller's frame word +8 must point at a writable 160-byte buffer. KERNAL ROM must be banked in for the file wrappers it reaches, and AESD must exist on the currently selected device -- an open failure loops through the $5677 prompt rather than returning. Clobbers VM locals and IEC/KERNAL file state through the called helpers. Hardware: No hardware access of its own: a JSR into the VM gateway followed by bytecode. The bytecode reaches the KERNAL wrappers at $6DB2-$6E22 (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKIN $FFC6, CHRIN $FFCF, CLOSE $FFC3), so the IEC bus and CIA 2 port A $DD00 are driven indirectly by KERNAL. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of push_const_0 at $4D0A. The procedure decodes to 29 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include prompt_retry_after_disk_error, read_exact_file_bytes, close_file_slot, open_file_slot.","t":"byte","b":[96,142,67,77,172,219,102,174]},{"a":19730,"t":"byte","b":[4,43,139,255,192,216,35,77]},{"a":19738,"t":"byte","b":[96,172,119,86,174,2,214,10]},{"a":19746,"t":"byte","b":[77,142,160,0,60,59,172,124]},{"a":19754,"t":"byte","b":[96,174,6,42,59,172,145,102]},{"a":19762,"t":"byte","b":[174,2,10,140,160,0,192,216]},{"a":19770,"t":"byte","b":[64,77,64,214,66,77,137,255]},{"a":19778,"t":"byte","b":[207]},{"a":19779,"l":"save_directory_filename_aesd_1","c":"Zero-terminated disk filename 'AESD' used by the surrounding save/directory VM procedure.","t":"byte","b":[65,69,83,68,0]},{"a":19784,"l":"write_save_directory_aesd","c":"Write the caller's 160-byte save-directory buffer to AESD. It opens/replaces AESD through $5FEA, calls exact-length writer $6209 for $00A0 bytes, then closes through $6691. Inputs: caller frame word +8 points to the source. Output: VM primary=0 only when exactly 160 bytes were written, otherwise $FFFF; an open failure also returns $FFFF. Assumptions: Entered through JSR $70F8 with frame adjustment $FFFC; the caller's frame word +8 must point at a readable 160-byte source buffer. KERNAL ROM must be banked in and the disk must be write-enabled, since a failed open returns $FFFF rather than retrying. Clobbers VM locals and IEC/KERNAL file state. Hardware: No hardware access of its own; the bytecode reaches the KERNAL wrappers at $6DB2-$6E22 (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKOUT $FFC9, CHROUT $FFD2, CLOSE $FFC3), which drive the IEC bus through CIA 2 port A $DD00. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19787,"l":"vm_frame_adjust_4d48","c":"Signed frame adjustment -4 for write_save_directory_aesd at $4D48, consumed by the $70F8 VM gateway before bytecode begins at $4D4D. Write the caller's 160-byte save-directory buffer to AESD. It opens/replaces AESD through $5FEA, calls exact-length writer $6209 for $00A0 bytes, then closes through $6691. Inputs: caller frame word +8 points to the source. Output: VM primary=0 only when exactly 160 bytes were written, otherwise $FFFF; an open failure also returns $FFFF. Assumptions: Entered through JSR $70F8 with frame adjustment $FFFC; the caller's frame word +8 must point at a readable 160-byte source buffer. KERNAL ROM must be banked in and the disk must be write-enabled, since a failed open returns $FFFF rather than retrying. Clobbers VM locals and IEC/KERNAL file state. Hardware: No hardware access of its own; the bytecode reaches the KERNAL wrappers at $6DB2-$6E22 (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKOUT $FFC9, CHROUT $FFD2, CLOSE $FFC3), which drive the IEC bus through CIA 2 port A $DD00. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[252,255],"d":[65532]},{"a":19789,"l":"vm_bytecode_4d48","c":"Compiled bytecode belonging to write_save_directory_aesd ($4D48). Write the caller's 160-byte save-directory buffer to AESD. It opens/replaces AESD through $5FEA, calls exact-length writer $6209 for $00A0 bytes, then closes through $6691. Inputs: caller frame word +8 points to the source. Output: VM primary=0 only when exactly 160 bytes were written, otherwise $FFFF; an open failure also returns $FFFF. Assumptions: Entered through JSR $70F8 with frame adjustment $FFFC; the caller's frame word +8 must point at a readable 160-byte source buffer. KERNAL ROM must be banked in and the disk must be write-enabled, since a failed open returns $FFFF rather than retrying. Clobbers VM locals and IEC/KERNAL file state. Hardware: No hardware access of its own; the bytecode reaches the KERNAL wrappers at $6DB2-$6E22 (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKOUT $FFC9, CHROUT $FFD2, CLOSE $FFC3), which drive the IEC bus through CIA 2 port A $DD00. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of push_const_0 at $4D4D. The procedure decodes to 28 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include open_replacement_file_for_write, write_exact_file_bytes, close_file_slot.","t":"byte","b":[96,142,129,77,172,234,95,174]},{"a":19797,"t":"byte","b":[4,43,11,139,255,192,216,97]},{"a":19805,"t":"byte","b":[77,137,255,207,142,160,0,60]},{"a":19813,"t":"byte","b":[59,172,9,98,174,6,42,59]},{"a":19821,"t":"byte","b":[172,145,102,174,2,10,140,160]},{"a":19829,"t":"byte","b":[0,192,216,126,77,64,214,128]},{"a":19837,"t":"byte","b":[77,137,255,207]},{"a":19841,"l":"save_directory_filename_aesd_2","c":"Second zero-terminated copy of disk filename 'AESD', local to the following save/directory VM procedure.","t":"byte","b":[65,69,83,68,0]},{"a":19846,"l":"format_save_directory_entry","c":"Format one 32-byte AESD menu entry as four leading spaces, the 16-byte saved-name field, ', Age ', and a two-column decimal age, then NUL-terminate. Inputs: caller frame word +8 points to the 32-byte output. It copies 16 bytes from player_name_16 at $82CB and reads player_age_years at $7F74; ages below 10 receive a leading space. Output: NUL-terminated display text occupying at most 32 bytes. Assumptions: Entered through JSR $70F8 with frame adjustment $FFFE; the caller's frame word +8 must point at a writable 32-byte buffer. It reads the live 16-byte player name at $82CB and the age byte at $7F74, so those state ranges must be current, and an age of 100 or more overflows the two-column field. Clobbers VM locals and string-helper state. Hardware: Touches no hardware: it is VM bytecode operating on RAM buffers through the string helpers at $6936/$68F8 and the decimal formatter, none of which write VIC, SID, CIA or the 6510 port. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19849,"l":"vm_frame_adjust_4d86","c":"Signed frame adjustment -2 for format_save_directory_entry at $4D86, consumed by the $70F8 VM gateway before bytecode begins at $4D8B. Format one 32-byte AESD menu entry as four leading spaces, the 16-byte saved-name field, ', Age ', and a two-column decimal age, then NUL-terminate. Inputs: caller frame word +8 points to the 32-byte output. It copies 16 bytes from player_name_16 at $82CB and reads player_age_years at $7F74; ages below 10 receive a leading space. Output: NUL-terminated display text occupying at most 32 bytes. Assumptions: Entered through JSR $70F8 with frame adjustment $FFFE; the caller's frame word +8 must point at a writable 32-byte buffer. It reads the live 16-byte player name at $82CB and the age byte at $7F74, so those state ranges must be current, and an age of 100 or more overflows the two-column field. Clobbers VM locals and string-helper state. Hardware: Touches no hardware: it is VM bytecode operating on RAM buffers through the string helpers at $6936/$68F8 and the decimal formatter, none of which write VIC, SID, CIA or the 6510 port. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[254,255],"d":[65534]},{"a":19851,"l":"vm_bytecode_4d86","c":"Compiled bytecode belonging to format_save_directory_entry ($4D86). Format one 32-byte AESD menu entry as four leading spaces, the 16-byte saved-name field, ', Age ', and a two-column decimal age, then NUL-terminate. Inputs: caller frame word +8 points to the 32-byte output. It copies 16 bytes from player_name_16 at $82CB and reads player_age_years at $7F74; ages below 10 receive a leading space. Output: NUL-terminated display text occupying at most 32 bytes. Assumptions: Entered through JSR $70F8 with frame adjustment $FFFE; the caller's frame word +8 must point at a writable 32-byte buffer. It reads the live 16-byte player name at $82CB and the age byte at $7F74, so those state ranges must be current, and an age of 100 or more overflows the two-column field. Clobbers VM locals and string-helper state. Hardware: Touches no hardware: it is VM bytecode operating on RAM buffers through the string helpers at $6936/$68F8 and the decimal formatter, none of which write VIC, SID, CIA or the 6510 port. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of push_immediate_word at $4D8B. The procedure decodes to 60 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include append_zero_terminated_string, append_bounded_zero_terminated_string, copy_zero_terminated_string.","t":"byte","b":[142,229,77,60,172,54,105,174]},{"a":19859,"t":"byte","b":[4,141,16,142,203,130,60,172]},{"a":19867,"t":"byte","b":[23,105,174,6,12,143,20,179]},{"a":19875,"t":"byte","b":[64,180,212,142,234,77,60,172]},{"a":19883,"t":"byte","b":[248,104,174,4,12,208,44,211]},{"a":19891,"t":"byte","b":[216,185,77,214,175,77,164,116]},{"a":19899,"t":"byte","b":[127,43,12,208,44,209,179,11]},{"a":19907,"t":"byte","b":[89,196,216,208,77,11,90,182]},{"a":19915,"t":"byte","b":[143,48,214,210,77,137,32,180]},{"a":19923,"t":"byte","b":[212,12,208,44,209,179,11,90]},{"a":19931,"t":"byte","b":[185,143,48,180,212,60,64,180]},{"a":19939,"t":"byte","b":[212,207]},{"a":19941,"l":"saved_identity_age_text_fragments","c":"Two zero-terminated formatting fragments used by the saved-game identity display: four spaces, then ', Age '.","t":"byte","b":[32,32,32,32,0,44,32,65]},{"a":19949,"t":"byte","b":[103,101,32,0]},{"a":19953,"l":"read_save_slot_state","c":"Read one 380-byte AES0-AES4 save slot into the live game-state ranges by calling transfer_save_slot_state with exact-length reader $607C. Input: caller frame word +8 is the zero-based slot number; the generic transfer constructs filename AES0 and replaces its final digit. Output: zero on a complete read, $FFFF on failure. Assumptions: VM procedure with a zero frame adjustment; the caller's frame word +8 must be a slot number 0-4, because that value is added to the final digit of the filename AES0. KERNAL ROM must be banked in and the save disk present, and because a successful call overwrites all seven live state ranges in place the caller must be at a point where the current game may be discarded. Clobbers IEC/KERNAL file state and all seven persisted state ranges. Hardware: No direct hardware access: it hands transfer_save_slot_state the reader $607C, and the bus traffic is KERNAL IEC (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKIN $FFC6, CHRIN $FFCF, CLOSE $FFC3) through the wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19956,"l":"vm_frame_adjust_4df1","c":"Signed frame adjustment 0 for read_save_slot_state at $4DF1, consumed by the $70F8 VM gateway before bytecode begins at $4DF6. Read one 380-byte AES0-AES4 save slot into the live game-state ranges by calling transfer_save_slot_state with exact-length reader $607C. Input: caller frame word +8 is the zero-based slot number; the generic transfer constructs filename AES0 and replaces its final digit. Output: zero on a complete read, $FFFF on failure. Assumptions: VM procedure with a zero frame adjustment; the caller's frame word +8 must be a slot number 0-4, because that value is added to the final digit of the filename AES0. KERNAL ROM must be banked in and the save disk present, and because a successful call overwrites all seven live state ranges in place the caller must be at a point where the current game may be discarded. Clobbers IEC/KERNAL file state and all seven persisted state ranges. Hardware: No direct hardware access: it hands transfer_save_slot_state the reader $607C, and the bus traffic is KERNAL IEC (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKIN $FFC6, CHRIN $FFCF, CLOSE $FFC3) through the wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[0,0],"d":[0]},{"a":19958,"l":"vm_bytecode_4df1","c":"Compiled bytecode belonging to read_save_slot_state ($4DF1). Read one 380-byte AES0-AES4 save slot into the live game-state ranges by calling transfer_save_slot_state with exact-length reader $607C. Input: caller frame word +8 is the zero-based slot number; the generic transfer constructs filename AES0 and replaces its final digit. Output: zero on a complete read, $FFFF on failure. Assumptions: VM procedure with a zero frame adjustment; the caller's frame word +8 must be a slot number 0-4, because that value is added to the final digit of the filename AES0. KERNAL ROM must be banked in and the save disk present, and because a successful call overwrites all seven live state ranges in place the caller must be at a point where the current game may be discarded. Clobbers IEC/KERNAL file state and all seven persisted state ranges. Hardware: No direct hardware access: it hands transfer_save_slot_state the reader $607C, and the bus traffic is KERNAL IEC (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKIN $FFC6, CHRIN $FFCF, CLOSE $FFC3) through the wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of push_immediate_word at $4DF6. The procedure decodes to 5 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include transfer_save_slot_state.","t":"byte","b":[142,124,96,60,172,15,78,174]},{"a":19966,"t":"byte","b":[4,207]},{"a":19968,"l":"write_save_slot_state","c":"Write the seven live game-state ranges as one 380-byte AES0-AES4 save slot by calling transfer_save_slot_state with exact-length writer $6209. Input: caller frame word +8 is the zero-based slot number. Output: zero on a complete write, $FFFF on failure. Assumptions: Zero frame adjustment; frame word +8 must be a slot number 0-4 selecting the final digit of AES0-AES4, and the seven live state ranges must already hold the values to persist. KERNAL ROM must be banked in and the disk write-enabled, or the helper returns $FFFF. Clobbers IEC/KERNAL file state. Hardware: No direct hardware access: the writer $6209 it passes down drives KERNAL IEC (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKOUT $FFC9, CHROUT $FFD2, CLOSE $FFC3) through the wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19971,"l":"vm_frame_adjust_4e00","c":"Signed frame adjustment 0 for write_save_slot_state at $4E00, consumed by the $70F8 VM gateway before bytecode begins at $4E05. Write the seven live game-state ranges as one 380-byte AES0-AES4 save slot by calling transfer_save_slot_state with exact-length writer $6209. Input: caller frame word +8 is the zero-based slot number. Output: zero on a complete write, $FFFF on failure. Assumptions: Zero frame adjustment; frame word +8 must be a slot number 0-4 selecting the final digit of AES0-AES4, and the seven live state ranges must already hold the values to persist. KERNAL ROM must be banked in and the disk write-enabled, or the helper returns $FFFF. Clobbers IEC/KERNAL file state. Hardware: No direct hardware access: the writer $6209 it passes down drives KERNAL IEC (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKOUT $FFC9, CHROUT $FFD2, CLOSE $FFC3) through the wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[0,0],"d":[0]},{"a":19973,"l":"vm_bytecode_4e00","c":"Compiled bytecode belonging to write_save_slot_state ($4E00). Write the seven live game-state ranges as one 380-byte AES0-AES4 save slot by calling transfer_save_slot_state with exact-length writer $6209. Input: caller frame word +8 is the zero-based slot number. Output: zero on a complete write, $FFFF on failure. Assumptions: Zero frame adjustment; frame word +8 must be a slot number 0-4 selecting the final digit of AES0-AES4, and the seven live state ranges must already hold the values to persist. KERNAL ROM must be banked in and the disk write-enabled, or the helper returns $FFFF. Clobbers IEC/KERNAL file state. Hardware: No direct hardware access: the writer $6209 it passes down drives KERNAL IEC (SETLFS $FFBA, SETNAM $FFBD, OPEN $FFC0, CHKOUT $FFC9, CHROUT $FFD2, CLOSE $FFC3) through the wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of push_immediate_word at $4E05. The procedure decodes to 5 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include transfer_save_slot_state.","t":"byte","b":[142,9,98,60,172,15,78,174]},{"a":19981,"t":"byte","b":[4,207]},{"a":19983,"l":"transfer_save_slot_state","c":"Transfer the complete 380-byte save-slot state through a supplied exact-length I/O helper. The filename starts as AES0 and its last digit is adjusted by the zero-based slot number. In file order the routine transfers $7F40-$7FBF (128 bytes, offsets $0000-$007F), $81C5-$81F4 (48, $0080-$00AF), $81F7-$82AA (180, $00B0-$0163), $82CB-$82DA (16-byte player name, $0164-$0173), $82BD-$82BE (2, $0174-$0175), $82AB-$82AC (2, $0176-$0177), and $7FC0-$7FC3 (4, $0178-$017B). Inputs: caller frame +8=slot number; +10=helper address ($607C read or $6209 write). Output: 0 only if all requested byte counts completed, otherwise $FFFF. Assumptions: Entered with frame adjustment $FFDC; frame +8 must be a slot number 0-4 and frame +10 must be the address of an exact-length helper with the $607C/$6209 signature. The seven ranges it walks ($7F40, $81C5, $81F7, $82CB, $82BD, $82AB, $7FC0) must match the live state layout, since the byte counts are hard-coded and any layout change silently mis-transfers. Clobbers VM locals and IEC/KERNAL file state. Hardware: No direct hardware access of its own; all bus activity happens inside the supplied $607C/$6209 helper, which uses the KERNAL IEC wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":19986,"l":"vm_frame_adjust_4e0f","c":"Signed frame adjustment -36 for transfer_save_slot_state at $4E0F, consumed by the $70F8 VM gateway before bytecode begins at $4E14. Transfer the complete 380-byte save-slot state through a supplied exact-length I/O helper. The filename starts as AES0 and its last digit is adjusted by the zero-based slot number. In file order the routine transfers $7F40-$7FBF (128 bytes, offsets $0000-$007F), $81C5-$81F4 (48, $0080-$00AF), $81F7-$82AA (180, $00B0-$0163), $82CB-$82DA (16-byte player name, $0164-$0173), $82BD-$82BE (2, $0174-$0175), $82AB-$82AC (2, $0176-$0177), and $7FC0-$7FC3 (4, $0178-$017B). Inputs: caller frame +8=slot number; +10=helper address ($607C read or $6209 write). Output: 0 only if all requested byte counts completed, otherwise $FFFF. Assumptions: Entered with frame adjustment $FFDC; frame +8 must be a slot number 0-4 and frame +10 must be the address of an exact-length helper with the $607C/$6209 signature. The seven ranges it walks ($7F40, $81C5, $81F7, $82CB, $82BD, $82AB, $7FC0) must match the live state layout, since the byte counts are hard-coded and any layout change silently mis-transfers. Clobbers VM locals and IEC/KERNAL file state. Hardware: No direct hardware access of its own; all bus activity happens inside the supplied $607C/$6209 helper, which uses the KERNAL IEC wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[220,255],"d":[65500]},{"a":19988,"l":"vm_bytecode_4e0f","c":"Compiled bytecode belonging to transfer_save_slot_state ($4E0F). Transfer the complete 380-byte save-slot state through a supplied exact-length I/O helper. The filename starts as AES0 and its last digit is adjusted by the zero-based slot number. In file order the routine transfers $7F40-$7FBF (128 bytes, offsets $0000-$007F), $81C5-$81F4 (48, $0080-$00AF), $81F7-$82AA (180, $00B0-$0163), $82CB-$82DA (16-byte player name, $0164-$0173), $82BD-$82BE (2, $0174-$0175), $82AB-$82AC (2, $0176-$0177), and $7FC0-$7FC3 (4, $0178-$017B). Inputs: caller frame +8=slot number; +10=helper address ($607C read or $6209 write). Output: 0 only if all requested byte counts completed, otherwise $FFFF. Assumptions: Entered with frame adjustment $FFDC; frame +8 must be a slot number 0-4 and frame +10 must be the address of an exact-length helper with the $607C/$6209 signature. The seven ranges it walks ($7F40, $81C5, $81F7, $82CB, $82BD, $82AB, $7FC0) must match the live state layout, since the byte counts are hard-coded and any layout change silently mis-transfers. Clobbers VM locals and IEC/KERNAL file state. Hardware: No direct hardware access of its own; all bus activity happens inside the supplied $607C/$6209 helper, which uses the KERNAL IEC wrappers at $6DB2-$6E22. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of push_immediate_word at $4E14. The procedure decodes to 136 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include open_replacement_file_for_write, close_file_slot, open_file_slot, copy_zero_terminated_string.","t":"byte","b":[142,228,78,222,220,255,179,172]},{"a":19996,"t":"byte","b":[54,105,174,4,12,205,160,223]},{"a":20004,"t":"byte","b":[255,187,162,223,255,13,140,124]},{"a":20012,"t":"byte","b":[96,192,216,62,78,96,222,220]},{"a":20020,"t":"byte","b":[255,179,172,219,102,174,4,214]},{"a":20028,"t":"byte","b":[72,78,96,222,220,255,179,172]},{"a":20036,"t":"byte","b":[234,95,174,4,43,11,139,255]},{"a":20044,"t":"byte","b":[192,216,83,78,137,255,207,142]},{"a":20052,"t":"byte","b":[128,0,142,64,127,59,13,221]},{"a":20060,"t":"byte","b":[174,6,179,138,128,0,180,188]},{"a":20068,"t":"byte","b":[42,141,48,142,197,129,59,13]},{"a":20076,"t":"byte","b":[221,174,6,179,137,48,180,188]},{"a":20084,"t":"byte","b":[205,10,187,42,142,180,0,142]},{"a":20092,"t":"byte","b":[247,129,59,13,221,174,6,179]},{"a":20100,"t":"byte","b":[138,180,0,180,188,205,10,187]},{"a":20108,"t":"byte","b":[42,141,16,142,203,130,59,13]},{"a":20116,"t":"byte","b":[221,174,6,179,137,16,180,188]},{"a":20124,"t":"byte","b":[205,10,187,42,98,142,189,130]},{"a":20132,"t":"byte","b":[59,13,221,174,6,179,66,180]},{"a":20140,"t":"byte","b":[188,205,10,187,42,98,142,171]},{"a":20148,"t":"byte","b":[130,59,13,221,174,6,179,66]},{"a":20156,"t":"byte","b":[180,188,205,10,187,42,100,142]},{"a":20164,"t":"byte","b":[192,127,59,13,221,174,6,179]},{"a":20172,"t":"byte","b":[68,180,188,205,10,187,42,59]},{"a":20180,"t":"byte","b":[172,145,102,174,2,10,216,226]},{"a":20188,"t":"byte","b":[78,137,255,214,227,78,64,207]},{"a":20196,"l":"save_file_aes0_cancel_text","c":"Zero-terminated save filename 'AES0' and menu label '    Cancel'.","t":"byte","b":[65,69,83,48,0,32,32,32]},{"a":20204,"t":"byte","b":[32,67,97,110,99,101,108,0]},{"a":20212,"l":"resume_saved_game_menu","c":"Present the saved-game resume menu, load the selected AES slot, and report failure through the resident UI. It builds the five-entry menu from AESD, converts the one-based selection to slot 0-4, then calls read_save_slot_state. Output: 1 on a successfully loaded selection, 0 on cancellation or an unavailable menu, $FFFF after displaying 'can't load saved game'. State: a successful call replaces all seven persisted game-state ranges. Assumptions: Frame adjustment $FF5E reserves the 162-byte menu buffer, so the VM expression stack must have that much headroom below $04/$05. AESD must be readable on the current device and the resident menu pointer table $7E48-$7E4C must be free; on success all seven live state ranges are replaced, so it may only be called where the current game may be discarded. Hardware: No direct hardware access: the menu is drawn through the resident UI helpers and all file work is KERNAL IEC through the wrappers at $6DB2-$6E22, with keyboard input arriving via GETIN $FFE4. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_procedure_call_gateway, whose inputs apply unchanged. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":20215,"l":"vm_frame_adjust_4ef4","c":"Signed frame adjustment -162 for resume_saved_game_menu at $4EF4, consumed by the $70F8 VM gateway before bytecode begins at $4EF9. Present the saved-game resume menu, load the selected AES slot, and report failure through the resident UI. It builds the five-entry menu from AESD, converts the one-based selection to slot 0-4, then calls read_save_slot_state. Output: 1 on a successfully loaded selection, 0 on cancellation or an unavailable menu, $FFFF after displaying 'can't load saved game'. State: a successful call replaces all seven persisted game-state ranges. Assumptions: Frame adjustment $FF5E reserves the 162-byte menu buffer, so the VM expression stack must have that much headroom below $04/$05. AESD must be readable on the current device and the resident menu pointer table $7E48-$7E4C must be free; on success all seven live state ranges are replaced, so it may only be called where the current game may be discarded. Hardware: No direct hardware access: the menu is drawn through the resident UI helpers and all file work is KERNAL IEC through the wrappers at $6DB2-$6E22, with keyboard input arriving via GETIN $FFE4. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_procedure_call_gateway, whose inputs apply unchanged. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[94,255],"d":[65374]},{"a":20217,"l":"vm_bytecode_4ef4","c":"Compiled bytecode belonging to resume_saved_game_menu ($4EF4). Present the saved-game resume menu, load the selected AES slot, and report failure through the resident UI. It builds the five-entry menu from AESD, converts the one-based selection to slot 0-4, then calls read_save_slot_state. Output: 1 on a successfully loaded selection, 0 on cancellation or an unavailable menu, $FFFF after displaying 'can't load saved game'. State: a successful call replaces all seven persisted game-state ranges. Assumptions: Frame adjustment $FF5E reserves the 162-byte menu buffer, so the VM expression stack must have that much headroom below $04/$05. AESD must be readable on the current device and the resident menu pointer table $7E48-$7E4C must be free; on success all seven live state ranges are replaced, so it may only be called where the current game may be discarded. Hardware: No direct hardware access: the menu is drawn through the resident UI helpers and all file work is KERNAL IEC through the wrappers at $6DB2-$6E22, with keyboard input arriving via GETIN $FFE4. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_procedure_call_gateway, whose inputs apply unchanged. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of load_primary_immediate_word at $4EF9. The procedure decodes to 27 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include report_packed_runtime_error, read_save_slot_state, build_save_directory_menu.","t":"byte","b":[138,48,79,168,76,126,97,222]},{"a":20225,"t":"byte","b":[96,255,179,172,13,80,174,4]},{"a":20233,"t":"byte","b":[134,94,255,130,94,255,80,195]},{"a":20241,"t":"byte","b":[216,22,79,64,207,130,94,255]},{"a":20249,"t":"byte","b":[209,179,172,241,77,174,2,216]},{"a":20257,"t":"byte","b":[46,79,142,79,79,172,161,76]},{"a":20265,"t":"byte","b":[174,2,137,255,207,65,207]},{"a":20272,"l":"resume_game_menu_text_pool","c":"Zero-terminated resume UI text: '            RESUME WHICH GAME:' and 'can't load saved game'.","t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":20280,"t":"byte","b":[32,32,32,32,82,69,83,85]},{"a":20288,"t":"byte","b":[77,69,32,87,72,73,67,72]},{"a":20296,"t":"byte","b":[32,71,65,77,69,58,0,99]},{"a":20304,"t":"byte","b":[97,110,39,116,32,108,111,97]},{"a":20312,"t":"byte","b":[100,32,115,97,118,101,100,32]},{"a":20320,"t":"byte","b":[103,97,109,101,0]},{"a":20325,"l":"save_current_game_menu","c":"Present the save-current-game menu, format and persist the chosen directory entry, and write the selected AES slot. It builds the five-entry menu from AESD, converts the one-based selection to slot 0-4, formats the 32-byte AESD entry, rewrites AESD, then writes the 380-byte state. On media/write error it configures the write-protection message UI and repeats. Output: 0 when the save flow exits. Assumptions: Frame adjustment $FF5E reserves the 162-byte menu frame. AESD must be present and the disk write-enabled, otherwise the routine loops on its write-protection message rather than returning an error. The live name at $82CB and age at $7F74 must be current, because the directory entry is formatted from them before the 380-byte slot is written. Clobbers the temporary 162-byte menu frame and IEC/KERNAL file state. Hardware: No direct hardware access: display goes through the resident UI routines and all disk traffic is KERNAL IEC through the wrappers at $6DB2-$6E22. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_procedure_call_gateway, whose inputs apply unchanged. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":20328,"l":"vm_frame_adjust_4f65","c":"Signed frame adjustment -162 for save_current_game_menu at $4F65, consumed by the $70F8 VM gateway before bytecode begins at $4F6A. Present the save-current-game menu, format and persist the chosen directory entry, and write the selected AES slot. It builds the five-entry menu from AESD, converts the one-based selection to slot 0-4, formats the 32-byte AESD entry, rewrites AESD, then writes the 380-byte state. On media/write error it configures the write-protection message UI and repeats. Output: 0 when the save flow exits. Assumptions: Frame adjustment $FF5E reserves the 162-byte menu frame. AESD must be present and the disk write-enabled, otherwise the routine loops on its write-protection message rather than returning an error. The live name at $82CB and age at $7F74 must be current, because the directory entry is formatted from them before the 380-byte slot is written. Clobbers the temporary 162-byte menu frame and IEC/KERNAL file state. Hardware: No direct hardware access: display goes through the resident UI routines and all disk traffic is KERNAL IEC through the wrappers at $6DB2-$6E22. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_procedure_call_gateway, whose inputs apply unchanged. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[94,255],"d":[65374]},{"a":20330,"l":"vm_bytecode_4f65","c":"Compiled bytecode belonging to save_current_game_menu ($4F65). Present the save-current-game menu, format and persist the chosen directory entry, and write the selected AES slot. It builds the five-entry menu from AESD, converts the one-based selection to slot 0-4, formats the 32-byte AESD entry, rewrites AESD, then writes the 380-byte state. On media/write error it configures the write-protection message UI and repeats. Output: 0 when the save flow exits. Assumptions: Frame adjustment $FF5E reserves the 162-byte menu frame. AESD must be present and the disk write-enabled, otherwise the routine loops on its write-protection message rather than returning an error. The live name at $82CB and age at $7F74 must be current, because the directory entry is formatted from them before the 380-byte slot is written. Clobbers the temporary 162-byte menu frame and IEC/KERNAL file state. Hardware: No direct hardware access: display goes through the resident UI routines and all disk traffic is KERNAL IEC through the wrappers at $6DB2-$6E22. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_procedure_call_gateway, whose inputs apply unchanged. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of load_primary_immediate_word at $4F6A. The procedure decodes to 46 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include run_modal_selection_dialog, write_save_directory_aesd, format_save_directory_entry, write_save_slot_state, build_save_directory_menu.","t":"byte","b":[138,205,79,168,76,126,96,222]},{"a":20338,"t":"byte","b":[96,255,179,172,13,80,174,4]},{"a":20346,"t":"byte","b":[134,94,255,130,94,255,80,195]},{"a":20354,"t":"byte","b":[216,135,79,64,207,130,94,255]},{"a":20362,"t":"byte","b":[209,85,189,223,96,255,187,179]},{"a":20370,"t":"byte","b":[172,134,77,174,2,222,96,255]},{"a":20378,"t":"byte","b":[179,172,72,77,174,2,215,176]},{"a":20386,"t":"byte","b":[79,130,94,255,209,179,172,0]},{"a":20394,"t":"byte","b":[78,174,2,216,203,79,138,235]},{"a":20402,"t":"byte","b":[79,168,229,130,138,12,80,168]},{"a":20410,"t":"byte","b":[233,130,168,225,130,96,142,221]},{"a":20418,"t":"byte","b":[130,172,87,75,174,4,214,106]},{"a":20426,"t":"byte","b":[79,64,207]},{"a":20429,"l":"choose_save_file_text_pool","c":"Zero-terminated save UI text: '            CHOOSE SAVE FILE:' and '    This disk is write-protected', followed by one extra NUL separator.","t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":20437,"t":"byte","b":[32,32,32,32,67,72,79,79]},{"a":20445,"t":"byte","b":[83,69,32,83,65,86,69,32]},{"a":20453,"t":"byte","b":[70,73,76,69,58,0,32,32]},{"a":20461,"t":"byte","b":[32,32,84,104,105,115,32,100]},{"a":20469,"t":"byte","b":[105,115,107,32,105,115,32,119]},{"a":20477,"t":"byte","b":[114,105,116,101,45,112,114,111]},{"a":20485,"t":"byte","b":[116,101,99,116,101,100,0,0]},{"a":20493,"l":"build_save_directory_menu","c":"Read AESD and build the five-choice save/resume menu in a 162-byte caller buffer. It first refreshes input/device state, reads the exact 160-byte directory, then stores pointers to five consecutive 32-byte entries in the resident menu pointer table; empty entries are either replaced with '<Save current game>' in save mode or cause the no-saves message in resume mode. Inputs: caller frame +8 points to the 160-byte entry buffer; +10 selects save versus resume behavior. Output: menu-selection result from $4B57, or $FFFF after an AESD read error. Assumptions: Frame +8 must point at a 160-byte entry buffer and frame +10 must be the save/resume mode flag. The five pointers written to $7E48-$7E4C assume the buffer is five consecutive 32-byte entries, and an AESD read error short-circuits to $FFFF instead of showing a menu. Clobbers menu globals $7E48-$7E4C and VM local -2. Hardware: No direct hardware access; it calls the AESD reader and the modal selection dialog at $4B57, whose key input arrives through the KERNAL GETIN wrapper ($FFE4). Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":20496,"l":"vm_frame_adjust_500d","c":"Signed frame adjustment -2 for build_save_directory_menu at $500D, consumed by the $70F8 VM gateway before bytecode begins at $5012. Read AESD and build the five-choice save/resume menu in a 162-byte caller buffer. It first refreshes input/device state, reads the exact 160-byte directory, then stores pointers to five consecutive 32-byte entries in the resident menu pointer table; empty entries are either replaced with '<Save current game>' in save mode or cause the no-saves message in resume mode. Inputs: caller frame +8 points to the 160-byte entry buffer; +10 selects save versus resume behavior. Output: menu-selection result from $4B57, or $FFFF after an AESD read error. Assumptions: Frame +8 must point at a 160-byte entry buffer and frame +10 must be the save/resume mode flag. The five pointers written to $7E48-$7E4C assume the buffer is five consecutive 32-byte entries, and an AESD read error short-circuits to $FFFF instead of showing a menu. Clobbers menu globals $7E48-$7E4C and VM local -2. Hardware: No direct hardware access; it calls the AESD reader and the modal selection dialog at $4B57, whose key input arrives through the KERNAL GETIN wrapper ($FFE4). Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"word","b":[254,255],"d":[65534]},{"a":20498,"l":"vm_bytecode_500d","c":"Compiled bytecode belonging to build_save_directory_menu ($500D). Read AESD and build the five-choice save/resume menu in a 162-byte caller buffer. It first refreshes input/device state, reads the exact 160-byte directory, then stores pointers to five consecutive 32-byte entries in the resident menu pointer table; empty entries are either replaced with '<Save current game>' in save mode or cause the no-saves message in resume mode. Inputs: caller frame +8 points to the 160-byte entry buffer; +10 selects save versus resume behavior. Output: menu-selection result from $4B57, or $FFFF after an AESD read error. Assumptions: Frame +8 must point at a 160-byte entry buffer and frame +10 must be the save/resume mode flag. The five pointers written to $7E48-$7E4C assume the buffer is five consecutive 32-byte entries, and an AESD read error short-circuits to $FFFF instead of showing a menu. Clobbers menu globals $7E48-$7E4C and VM local -2. Hardware: No direct hardware access; it calls the AESD reader and the modal selection dialog at $4B57, whose key input arrives through the KERNAL GETIN wrapper ($FFE4). Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. This position is the opcode of call_native at $5012. The procedure decodes to 78 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include run_modal_selection_dialog, report_packed_runtime_error, read_save_directory_aesd, query_drive_status_line, edit_or_select_menu_entry.","t":"byte","b":[172,231,80,60,172,5,77,174]},{"a":20506,"t":"byte","b":[2,216,41,80,142,146,80,172]},{"a":20514,"t":"byte","b":[161,76,174,2,137,255,207,13]},{"a":20522,"t":"byte","b":[216,65,80,12,211,215,65,80]},{"a":20530,"t":"byte","b":[96,222,254,255,179,142,172,80]},{"a":20538,"t":"byte","b":[172,28,81,174,6,64,207,64]},{"a":20546,"t":"byte","b":[43,214,74,80,11,208,43,209]},{"a":20554,"t":"byte","b":[11,85,194,216,131,80,12,211]},{"a":20562,"t":"byte","b":[215,110,80,13,215,107,80,11]},{"a":20570,"t":"byte","b":[115,210,210,140,72,126,187,179]},{"a":20578,"t":"byte","b":[138,207,80,180,177,11,208,43]},{"a":20586,"t":"byte","b":[209,214,131,80,11,115,210,210]},{"a":20594,"t":"byte","b":[140,72,126,187,179,12,180,177]},{"a":20602,"t":"byte","b":[137,32,205,12,187,44,214,70]},{"a":20610,"t":"byte","b":[80,11,208,168,74,126,96,142]},{"a":20618,"t":"byte","b":[72,126,172,87,75,174,4,207]},{"a":20626,"l":"save_directory_menu_text_pool","c":"Zero-terminated save/directory UI strings: 'can't read save directory', 'There are no saved files available', and '    <Save current game>'.","t":"byte","b":[99,97,110,39,116,32,114,101]},{"a":20634,"t":"byte","b":[97,100,32,115,97,118,101,32]},{"a":20642,"t":"byte","b":[100,105,114,101,99,116,111,114]},{"a":20650,"t":"byte","b":[121,0,84,104,101,114,101,32]},{"a":20658,"t":"byte","b":[97,114,101,32,110,111,32,115]},{"a":20666,"t":"byte","b":[97,118,101,100,32,102,105,108]},{"a":20674,"t":"byte","b":[101,115,32,97,118,97,105,108]},{"a":20682,"t":"byte","b":[97,98,108,101,0,32,32,32]},{"a":20690,"t":"byte","b":[32,60,83,97,118,101,32,99]},{"a":20698,"t":"byte","b":[117,114,114,101,110,116,32,103]},{"a":20706,"t":"byte","b":[97,109,101,62,0]},{"a":20711,"l":"query_drive_status_line","c":"Send the drive-status request and receive its response.\nInputs: none.\nOutputs: zero on accepted status, failure value otherwise.\nAssumptions: the serial command channel is initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; serial receive buffers and packed status.\nHardware: IEC/KERNAL channel state.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $50EC-$5115 (22 decoded operations); native calls $64E9, $67E2. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":20714,"l":"vm_frame_adjust_50e7","c":"Signed frame adjustment 0 for query_drive_status_line at $50E7, consumed by the $70F8 VM gateway before bytecode begins at $50EC. Send the drive-status request and receive its response.","t":"word","b":[0,0],"d":[0]},{"a":20716,"l":"vm_bytecode_50e7","c":"Compiled bytecode belonging to query_drive_status_line ($50E7). Send the drive-status request and receive its response. This position is the opcode of push_const_2 at $50EC. The procedure decodes to 22 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include serial_send_buffer_with_cr, enter_inline_native_67e8_adjust_minus2.","t":"byte","b":[98,142,22,81,104,172,233,100]},{"a":20724,"t":"byte","b":[174,6,104,172,226,103,174,2]},{"a":20732,"t":"byte","b":[139,73,193,216,19,81,98,142]},{"a":20740,"t":"byte","b":[25,81,104,172,233,100,174,6]},{"a":20748,"t":"byte","b":[104,172,226,103,174,2,207,137]},{"a":20756,"t":"byte","b":[73,207]},{"a":20758,"l":"drive_command_u_semicolon_and_reset","c":"Two zero-terminated Commodore drive command strings: 'U;' and 'UJ'. The VM procedure at $50E7 sends 'U;' to device 8, reads the drive status, returns $0049 immediately when that status is 73, and otherwise sends the standard 'UJ' drive-reset command and returns the second status. The meaning of 'U;' is supplied by the installed drive-side code; its host-side protocol behavior is exact.","t":"byte","b":[85,59,0,85,74,0]},{"a":20764,"l":"EditMenuTextOrSelectEntry","c":"Compiled keyboard/joystick menu editor; frame arguments specify prompt, destination and size. Name caller $8D85 supplies size 16 and destination $82CB. Ordinary matrix input stores lowercase letters, DEL removes the last byte, and input stops when all sixteen bytes are filled; further letters leave it unchanged. Return accepts the field and proceeds through display transition. Native helper calls draw ROM/custom glyphs and poll normalized input. A full-size name has no NUL inside its sixteen-byte allocation.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":20767,"l":"vm_frame_adjust_511c","c":"Signed frame adjustment -4 for edit_or_select_menu_entry at $511C, consumed by the $70F8 VM gateway before bytecode begins at $5121. Edit or select one entry in a keyboard/joystick-driven menu.","t":"word","b":[252,255],"d":[65532]},{"a":20769,"l":"vm_bytecode_511c","c":"Compiled bytecode belonging to edit_or_select_menu_entry ($511C). Edit or select one entry in a keyboard/joystick-driven menu. This position is the opcode of push_const_0 at $5121. The procedure decodes to 146 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_rom_glyph_to_screen_charset, copy_custom_glyph_to_screen_charset, install_dialog_glyph_range, get_debounced_key, normalize_key_or_joystick_code, fill_memory_range.","t":"byte","b":[96,142,64,31,142,0,32,172]},{"a":20777,"t":"byte","b":[33,101,174,6,96,62,61,172]},{"a":20785,"t":"byte","b":[33,101,174,6,99,99,60,172]},{"a":20793,"t":"byte","b":[222,76,174,6,172,14,87,216]},{"a":20801,"t":"byte","b":[70,81,214,61,81,64,43,214]},{"a":20809,"t":"byte","b":[79,81,11,208,43,209,11,30]},{"a":20817,"t":"byte","b":[194,216,98,81,101,11,116,179]},{"a":20825,"t":"byte","b":[110,172,184,71,174,6,214,75]},{"a":20833,"t":"byte","b":[81,64,43]},{"a":20836,"l":"unreachable_compiler_vm_fragment_5164","c":"Verified unreachable compiler residue in the captured phase. No resident procedure, branch target, pointer or overlapping decode selects these branch/return-shaped bytes; they are retained as data.","t":"byte","b":[172,14,87,42,215,124,81,165]},{"a":20844,"t":"byte","b":[0,220,204,139,31,218,42,216]},{"a":20852,"t":"byte","b":[121,81,214,220,81,214,100,81]},{"a":20860,"t":"byte","b":[137,65,26,195,216,147,81,10]},{"a":20868,"t":"byte","b":[139,90,195,216,147,81,137,32]},{"a":20876,"t":"byte","b":[205,10,187,42,214,170,81,138]},{"a":20884,"t":"byte","b":[192,0,26,195,216,170,81,10]},{"a":20892,"t":"byte","b":[140,223,0,195,216,170,81,138]},{"a":20900,"t":"byte","b":[128,0,205,10,188,42,137,32]},{"a":20908,"t":"byte","b":[26,195,216,213,81,10,139,122]},{"a":20916,"t":"byte","b":[195,216,213,81,11,30,194,216]},{"a":20924,"t":"byte","b":[210,81,101,11,116,179,58,172]},{"a":20932,"t":"byte","b":[93,71,174,6,11,208,43,209]},{"a":20940,"t":"byte","b":[29,187,179,10,180,212,214,100]},{"a":20948,"t":"byte","b":[81,58,172,41,87,174,2,42]},{"a":20956,"t":"byte","b":[10,214,15,82,11,80,196,215]},{"a":20964,"t":"byte","b":[236,81,14,80,195,216,237,81]},{"a":20972,"t":"byte","b":[207,214,100,81,11,80,195,215]},{"a":20980,"t":"byte","b":[100,81,11,209,43,29,187,179]},{"a":20988,"t":"byte","b":[64,180,212,101,11,116,179,110]},{"a":20996,"t":"byte","b":[172,184,71,174,6,214,100,81]},{"a":21004,"t":"byte","b":[214,100,81,217,2,0,16,0]},{"a":21012,"t":"byte","b":[224,81,4,0,240,81,12,82]},{"a":21020,"l":"unreachable_compiler_vm_fragment_521c","c":"Verified unreachable compiler residue. These four bytes decode in isolation as a branch to $5164 followed by return, but the procedure at $511C has no edge into them and no resident procedure, pointer or overlapping decode selects them. Retained as data.","t":"byte","b":[214,100,81,207]},{"a":21024,"l":"scroll_life_map_backward_and_render_exposed_rows","c":"Scroll the visible life map toward earlier rows and render the newly exposed cells. Inputs: frame +8 is the row/window index and +10 is the render context. It selects grid data at $81F7 + 6*(index-3)`, invokes the backward VIC screen-block copy at $4355, and passes exposed cells to $57BA. Output: updated map window; VM primary carries the renderer result. Assumptions: the 30x3 grid and boundary table are initialized. Clobbers: VM primary/secondary, expression stack, frame locals and screen/layout workspace. Hardware: writes VIC-visible screen memory through callees.\nEntry protocol: JSR $70F8; frame adjustment -8; bytecode $5225-$527D; native calls $4355 and $57BA. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21027,"l":"vm_frame_adjust_5220","c":"Signed frame adjustment -8 for scroll_life_map_backward_and_render_exposed_rows at $5220, consumed by the $70F8 VM gateway before bytecode begins at $5225. Scroll the visible life map toward earlier rows and render the newly exposed cells. Inputs: frame +8 is the row/window index and +10 is the render context. It selects grid data at $81F7 + 6*(index-3)`, invokes the backward VIC screen-block copy at $4355, and passes exposed cells to $57BA. Output: updated map window; VM primary carries the renderer result. Assumptions: the 30x3 grid and boundary table are initialized. Clobbers: VM primary/secondary, expression stack, frame locals and screen/layout workspace. Hardware: writes VIC-visible screen memory through callees.","t":"word","b":[248,255],"d":[65528]},{"a":21029,"l":"vm_bytecode_5220","c":"Compiled bytecode belonging to scroll_life_map_backward_and_render_exposed_rows ($5220). Scroll the visible life map toward earlier rows and render the newly exposed cells. Inputs: frame +8 is the row/window index and +10 is the render context. It selects grid data at $81F7 + 6*(index-3)`, invokes the backward VIC screen-block copy at $4355, and passes exposed cells to $57BA. Output: updated map window; VM primary carries the renderer result. Assumptions: the 30x3 grid and boundary table are initialized. Clobbers: VM primary/secondary, expression stack, frame locals and screen/layout workspace. Hardware: writes VIC-visible screen memory through callees. This position is the opcode of load_primary_absolute_word_alias at $5225. The procedure decodes to 56 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_screen_blocks_backward, render_life_map_cell_or_connector.","t":"byte","b":[164,177,130,144,0,32,43,64]},{"a":21037,"t":"byte","b":[42,214,53,82,10,208,42,209]},{"a":21045,"t":"byte","b":[10,28,194,216,124,82,13,209]},{"a":21053,"t":"byte","b":[45,208,68,41,214,72,82,9]},{"a":21061,"t":"byte","b":[209,41,208,9,139,255,197,216]},{"a":21069,"t":"byte","b":[121,82,172,85,67,164,183,130]},{"a":21077,"t":"byte","b":[166,177,130,188,83,191,179,164]},{"a":21085,"t":"byte","b":[177,130,83,191,179,57,13,143]},{"a":21093,"t":"byte","b":[253,86,181,140,247,129,187,179]},{"a":21101,"t":"byte","b":[142,203,129,59,172,186,87,174]},{"a":21109,"t":"byte","b":[12,214,68,82,214,49,82,13]},{"a":21117,"t":"byte","b":[207]},{"a":21118,"l":"scroll_life_map_forward_and_render_exposed_rows","c":"Scroll the visible life map toward later rows and render the newly exposed cells. Inputs: frame +8 is the row/window index and +10 is the render context. It selects grid data at $81F7 + 6*index, invokes the forward VIC screen-block copy at $4378, and passes exposed cells to $57BA. Output: updated map window; VM primary carries the renderer result. Assumptions: grid/bounds initialized. Clobbers: VM values, stack/frame locals and screen/layout workspace. Hardware: VIC-visible screen memory through callees.\nEntry protocol: JSR $70F8; frame adjustment -6; bytecode $5283-$52D8; native calls $4378 and $57BA. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21121,"l":"vm_frame_adjust_527e","c":"Signed frame adjustment -6 for scroll_life_map_forward_and_render_exposed_rows at $527E, consumed by the $70F8 VM gateway before bytecode begins at $5283. Scroll the visible life map toward later rows and render the newly exposed cells. Inputs: frame +8 is the row/window index and +10 is the render context. It selects grid data at $81F7 + 6*index, invokes the forward VIC screen-block copy at $4378, and passes exposed cells to $57BA. Output: updated map window; VM primary carries the renderer result. Assumptions: grid/bounds initialized. Clobbers: VM values, stack/frame locals and screen/layout workspace. Hardware: VIC-visible screen memory through callees.","t":"word","b":[250,255],"d":[65530]},{"a":21123,"l":"vm_bytecode_527e","c":"Compiled bytecode belonging to scroll_life_map_forward_and_render_exposed_rows ($527E). Scroll the visible life map toward later rows and render the newly exposed cells. Inputs: frame +8 is the row/window index and +10 is the render context. It selects grid data at $81F7 + 6*index, invokes the forward VIC screen-block copy at $4378, and passes exposed cells to $57BA. Output: updated map window; VM primary carries the renderer result. Assumptions: grid/bounds initialized. Clobbers: VM values, stack/frame locals and screen/layout workspace. Hardware: VIC-visible screen memory through callees. This position is the opcode of load_primary_absolute_word_alias at $5283. The procedure decodes to 55 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_screen_blocks_forward, render_life_map_cell_or_connector.","t":"byte","b":[164,177,130,144,0,62,41,64]},{"a":21131,"t":"byte","b":[43,214,147,82,11,208,43,209]},{"a":21139,"t":"byte","b":[11,28,194,216,215,82,13,208]},{"a":21147,"t":"byte","b":[45,209,64,42,214,166,82,10]},{"a":21155,"t":"byte","b":[208,42,209,10,85,195,216,212]},{"a":21163,"t":"byte","b":[82,172,120,67,164,183,130,166]},{"a":21171,"t":"byte","b":[177,130,188,83,191,179,164,177]},{"a":21179,"t":"byte","b":[130,83,191,179,58,13,86,181]},{"a":21187,"t":"byte","b":[140,247,129,187,179,142,197,129]},{"a":21195,"t":"byte","b":[57,172,186,87,174,12,214,162]},{"a":21203,"t":"byte","b":[82,214,143,82,13,207]},{"a":21209,"l":"clear_and_frame_text_region","c":"Clear and frame a text region using resident custom glyphs.\nInputs: +8/+10 provide geometry/options.\nOutputs: region initialized.\nAssumptions: geometry is within the active screen.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; screen buffer and custom glyph cells.\nHardware: VIC-visible screen/charset memory.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $52DE-$5369 (91 decoded operations); native calls $470F, $6521. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21212,"l":"vm_frame_adjust_52d9","c":"Signed frame adjustment -4 for clear_and_frame_text_region at $52D9, consumed by the $70F8 VM gateway before bytecode begins at $52DE. Clear and frame a text region using resident custom glyphs.","t":"word","b":[252,255],"d":[65532]},{"a":21214,"l":"vm_bytecode_52d9","c":"Compiled bytecode belonging to clear_and_frame_text_region ($52D9). Clear and frame a text region using resident custom glyphs. This position is the opcode of load_primary_local_+10 at $52DE. The procedure decodes to 91 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_custom_glyph_to_buffer, fill_memory_range.","t":"byte","b":[13,144,0,1,42,12,209,44]},{"a":21222,"t":"byte","b":[43,11,209,43,80,196,216,3]},{"a":21230,"t":"byte","b":[83,96,142,232,0,58,172,33]},{"a":21238,"t":"byte","b":[101,174,6,138,248,0,205,10]},{"a":21246,"t":"byte","b":[187,42,214,231,82,137,30,43]},{"a":21254,"t":"byte","b":[11,209,43,80,196,216,35,83]},{"a":21262,"t":"byte","b":[61,96,59,100,172,15,71,174]},{"a":21270,"t":"byte","b":[8,61,60,59,101,172,15,71]},{"a":21278,"t":"byte","b":[174,8,214,6,83,12,43,11]},{"a":21286,"t":"byte","b":[209,43,80,196,216,67,83,61]},{"a":21294,"t":"byte","b":[59,96,102,172,15,71,174,8]},{"a":21302,"t":"byte","b":[61,59,141,30,103,172,15,71]},{"a":21310,"t":"byte","b":[174,8,214,37,83,61,96,96]},{"a":21318,"t":"byte","b":[96,172,15,71,174,8,61,96]},{"a":21326,"t":"byte","b":[141,30,97,172,15,71,174,8]},{"a":21334,"t":"byte","b":[61,60,96,98,172,15,71,174]},{"a":21342,"t":"byte","b":[8,61,60,141,30,99,172,15]},{"a":21350,"t":"byte","b":[71,174,8,207]},{"a":21354,"l":"render_text_into_region","c":"Render a bounded NUL/control text stream into a configured region.\nInputs: +8/+10/+12/+14 supply text, position, style and length controls.\nOutputs: glyphs rendered; return reflects clipping/control completion.\nAssumptions: source text and display bounds are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; screen/charset buffers and renderer workspace.\nHardware: temporarily banks character ROM through callees.\nEntry protocol: JSR $70F8; signed frame adjustment -13; bytecode $536F-$545A (129 decoded operations); native calls $4196, $46A1, $470F. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21357,"l":"vm_frame_adjust_536a","c":"Signed frame adjustment -13 for render_text_into_region at $536A, consumed by the $70F8 VM gateway before bytecode begins at $536F. Render a bounded NUL/control text stream into a configured region.","t":"word","b":[243,255],"d":[65523]},{"a":21359,"l":"vm_bytecode_536a","c":"Compiled bytecode belonging to render_text_into_region ($536A). Render a bounded NUL/control text stream into a configured region. This position is the opcode of call_native at $536F. The procedure decodes to 129 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include return_highbit_text_span_table_bias, copy_rom_glyph_to_buffer, copy_custom_glyph_to_buffer.","t":"byte","b":[172,150,65,133,251,64,133,245]},{"a":21367,"t":"byte","b":[12,133,253,214,131,83,129,253]},{"a":21375,"t":"byte","b":[208,133,253,209,12,30,187,179]},{"a":21383,"t":"byte","b":[129,253,180,198,216,88,84,129]},{"a":21391,"t":"byte","b":[253,211,162,255,255,160,255,255]},{"a":21399,"t":"byte","b":[140,255,0,192,216,164,83,65]},{"a":21407,"t":"byte","b":[133,245,214,85,84,160,255,255]},{"a":21415,"t":"byte","b":[140,254,0,192,216,180,83,64]},{"a":21423,"t":"byte","b":[133,245,214,85,84,129,245,215]},{"a":21431,"t":"byte","b":[62,84,160,255,255,139,127,196]},{"a":21439,"t":"byte","b":[216,6,84,160,255,255,143,128]},{"a":21447,"t":"byte","b":[133,243,129,243,210,131,251,187]},{"a":21455,"t":"byte","b":[176,133,249,129,243,210,131,251]},{"a":21463,"t":"byte","b":[187,114,176,133,247,129,249,131]},{"a":21471,"t":"byte","b":[247,198,216,3,84,129,249,211]},{"a":21479,"t":"byte","b":[162,255,255,61,135,16,63,163]},{"a":21487,"t":"byte","b":[255,255,172,161,70,174,8,129]},{"a":21495,"t":"byte","b":[249,208,133,249,209,15,208,47]},{"a":21503,"t":"byte","b":[209,214,220,83,214,59,84,160]},{"a":21511,"t":"byte","b":[255,255,139,31,196,216,34,84]},{"a":21519,"t":"byte","b":[61,135,16,63,163,255,255,172]},{"a":21527,"t":"byte","b":[161,70,174,8,15,208,47,209]},{"a":21535,"t":"byte","b":[214,59,84,160,255,255,80,196]},{"a":21543,"t":"byte","b":[216,51,84,160,255,255,31,187]},{"a":21551,"t":"byte","b":[47,214,59,84,65,47,129,16]},{"a":21559,"t":"byte","b":[208,133,16,209,214,85,84,129]},{"a":21567,"t":"byte","b":[245,81,192,216,85,84,61,135]},{"a":21575,"t":"byte","b":[16,63,163,255,255,172,15,71]},{"a":21583,"t":"byte","b":[174,8,15,208,47,209,214,125]},{"a":21591,"t":"byte","b":[83,129,16,207]},{"a":21595,"l":"delay_scaled_iterations","c":"Delay for a VM-speed-scaled counted loop after dividing the argument by 16.\nInputs: +8 intended nonnegative count.\nOutputs: none.\nAssumptions: a nonnegative delay count.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; loop counter only.\nHardware: no hardware timer or raster polling.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $5460-$5478 (18 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21598,"l":"vm_frame_adjust_545b","c":"Signed frame adjustment -2 for delay_scaled_iterations at $545B, consumed by the $70F8 VM gateway before bytecode begins at $5460. Delay for a VM-speed-scaled counted loop after dividing the argument by 16.","t":"word","b":[254,255],"d":[65534]},{"a":21600,"l":"vm_bytecode_545b","c":"Compiled bytecode belonging to delay_scaled_iterations ($545B). Delay for a VM-speed-scaled counted loop after dividing the argument by 16. This position is the opcode of load_primary_immediate_signed_byte at $5460. The procedure decodes to 18 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[137,16,205,12,182,44,64,43]},{"a":21608,"t":"byte","b":[214,111,84,11,208,43,209,11]},{"a":21616,"t":"byte","b":[28,194,216,120,84,214,107,84]},{"a":21624,"t":"byte","b":[207]},{"a":21625,"l":"show_sprite0_at_grid_position","c":"Resolve a grid position and show sprite 0 immediately at it.\nInputs: +8 table index; +10/+12 coordinate terms.\nOutputs: sprite 0 current position updated.\nAssumptions: the grid/pointer table is valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; sprite 0 position globals.\nHardware: VIC-II sprite position/enable through $41C3.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $547E-$549B (22 decoded operations); native calls $41C3. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21628,"l":"vm_frame_adjust_5479","c":"Signed frame adjustment 0 for show_sprite0_at_grid_position at $5479, consumed by the $70F8 VM gateway before bytecode begins at $547E. Resolve a grid position and show sprite 0 immediately at it.","t":"word","b":[0,0],"d":[0]},{"a":21630,"l":"vm_bytecode_5479","c":"Compiled bytecode belonging to show_sprite0_at_grid_position ($5479). Resolve a grid position and show sprite 0 immediately at it. This position is the opcode of load_primary_local_+12 at $547E. The procedure decodes to 22 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include sprite0_show_at_position.","t":"byte","b":[14,29,188,179,68,180,188,210]},{"a":21638,"t":"byte","b":[140,191,130,187,176,143,53,179]},{"a":21646,"t":"byte","b":[12,210,140,54,127,187,176,179]},{"a":21654,"t":"byte","b":[172,195,65,174,4,207]},{"a":21660,"l":"set_sprite0_target_from_grid_position","c":"Resolve a grid position and set sprite 0's motion target.\nInputs: +8 table index; +10/+12 coordinate terms.\nOutputs: sprite 0 target updated.\nAssumptions: the grid/pointer table is valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; sprite 0 target-motion globals.\nHardware: no immediate VIC-II write.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $54A1-$54BE (22 decoded operations); native calls $4214. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21663,"l":"vm_frame_adjust_549c","c":"Signed frame adjustment 0 for set_sprite0_target_from_grid_position at $549C, consumed by the $70F8 VM gateway before bytecode begins at $54A1. Resolve a grid position and set sprite 0's motion target.","t":"word","b":[0,0],"d":[0]},{"a":21665,"l":"vm_bytecode_549c","c":"Compiled bytecode belonging to set_sprite0_target_from_grid_position ($549C). Resolve a grid position and set sprite 0's motion target. This position is the opcode of load_primary_local_+12 at $54A1. The procedure decodes to 22 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include sprite0_set_target.","t":"byte","b":[14,29,188,179,68,180,188,210]},{"a":21673,"t":"byte","b":[140,191,130,187,176,143,53,179]},{"a":21681,"t":"byte","b":[12,210,140,54,127,187,176,179]},{"a":21689,"t":"byte","b":[172,20,66,174,4,207]},{"a":21695,"l":"read_pointer_device_position","c":"Read and normalize the current pointer/selection-device position.\nInputs: +8/+10 carry output/coordinate controls.\nOutputs: processed position and status.\nAssumptions: input and sprite helpers are initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; sprite enable and transition pacing state.\nHardware: CIA/display through callees.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $54C4-$550B (49 decoded operations); native calls $439D, $43A8, $551C, $5F30. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21698,"l":"vm_frame_adjust_54bf","c":"Signed frame adjustment -2 for read_pointer_device_position at $54BF, consumed by the $70F8 VM gateway before bytecode begins at $54C4. Read and normalize the current pointer/selection-device position.","t":"word","b":[254,255],"d":[65534]},{"a":21700,"l":"vm_bytecode_54bf","c":"Compiled bytecode belonging to read_pointer_device_position ($54BF). Read and normalize the current pointer/selection-device position. This position is the opcode of load_primary_immediate_word at $54C4. The procedure decodes to 49 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include return_argument_byte_1, return_argument_byte_0, enable_sprite0, enter_inline_native_5f36_adjust_0.","t":"byte","b":[138,0,208,43,172,48,95,11]},{"a":21708,"t":"byte","b":[208,179,13,83,189,143,53,180]},{"a":21716,"t":"byte","b":[212,12,83,189,44,59,60,172]},{"a":21724,"t":"byte","b":[168,67,174,2,180,212,60,172]},{"a":21732,"t":"byte","b":[157,67,174,2,216,250,84,11]},{"a":21740,"t":"byte","b":[143,16,179,11,143,16,211,81]},{"a":21748,"t":"byte","b":[219,180,212,214,8,85,11,143]},{"a":21756,"t":"byte","b":[16,179,11,143,16,211,140,254]},{"a":21764,"t":"byte","b":[0,218,180,212,172,28,85,207]},{"a":21772,"l":"disable_sprite0","c":"Disable sprite 0 while preserving the other sprite-enable bits.\nInputs: none.\nOutputs: VIC $D015 bit 0 cleared.\nAssumptions: VIC-II I/O is visible.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; VIC sprite-enable register.\nHardware: writes $D015.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $5511-$551B (7 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21775,"l":"vm_frame_adjust_550c","c":"Signed frame adjustment -2 for disable_sprite0 at $550C, consumed by the $70F8 VM gateway before bytecode begins at $5511. Disable sprite 0 while preserving the other sprite-enable bits.","t":"word","b":[254,255],"d":[65534]},{"a":21777,"l":"vm_bytecode_550c","c":"Compiled bytecode belonging to disable_sprite0 ($550C). Disable sprite 0 while preserving the other sprite-enable bits. This position is the opcode of load_primary_immediate_word at $5511. The procedure decodes to 7 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[138,21,208,43,59,138,254,0]},{"a":21785,"t":"byte","b":[180,212,207]},{"a":21788,"l":"enable_sprite0","c":"Enable sprite 0 while preserving the other sprite-enable bits.\nInputs: none.\nOutputs: VIC $D015 bit 0 set.\nAssumptions: VIC-II I/O is visible.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; VIC sprite-enable register.\nHardware: writes $D015.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $5521-$552C (10 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21791,"l":"vm_frame_adjust_551c","c":"Signed frame adjustment -2 for enable_sprite0 at $551C, consumed by the $70F8 VM gateway before bytecode begins at $5521. Enable sprite 0 while preserving the other sprite-enable bits.","t":"word","b":[254,255],"d":[65534]},{"a":21793,"l":"vm_bytecode_551c","c":"Compiled bytecode belonging to enable_sprite0 ($551C). Enable sprite 0 while preserving the other sprite-enable bits. This position is the opcode of load_primary_immediate_word at $5521. The procedure decodes to 10 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[138,21,208,43,59,11,211,81]},{"a":21801,"t":"byte","b":[219,180,212,207]},{"a":21805,"l":"poll_input_high_nibble","c":"Return the normalized input code masked to bit $10.\nInputs: none.\nOutputs: zero or $10.\nAssumptions: input subsystem initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; input debounce state through callee.\nHardware: CIA/KERNAL through $56FF.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $5532-$5541 (8 decoded operations); native calls $56FF. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21808,"l":"vm_frame_adjust_552d","c":"Signed frame adjustment 0 for poll_input_high_nibble at $552D, consumed by the $70F8 VM gateway before bytecode begins at $5532. Return the normalized input code masked to bit $10.","t":"word","b":[0,0],"d":[0]},{"a":21810,"l":"vm_bytecode_552d","c":"Compiled bytecode belonging to poll_input_high_nibble ($552D). Return the normalized input code masked to bit $10. This position is the opcode of call_native at $5532. The procedure decodes to 8 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include read_normalized_input.","t":"byte","b":[172,255,86,139,16,218,216,63]},{"a":21818,"t":"byte","b":[85,64,214,65,85,137,16,207]},{"a":21826,"l":"poll_input_low_nibble","c":"Return the normalized input code masked to its low nybble.\nInputs: none.\nOutputs: value $00-$0F.\nAssumptions: input subsystem initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; input debounce state through callee.\nHardware: CIA/KERNAL through $56FF.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $5547-$554C (4 decoded operations); native calls $56FF. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21829,"l":"vm_frame_adjust_5542","c":"Signed frame adjustment 0 for poll_input_low_nibble at $5542, consumed by the $70F8 VM gateway before bytecode begins at $5547. Return the normalized input code masked to its low nybble.","t":"word","b":[0,0],"d":[0]},{"a":21831,"l":"vm_bytecode_5542","c":"Compiled bytecode belonging to poll_input_low_nibble ($5542). Return the normalized input code masked to its low nybble. This position is the opcode of call_native at $5547. The procedure decodes to 4 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include read_normalized_input.","t":"byte","b":[172,255,86,95,218,207]},{"a":21837,"l":"hit_test_selection_rectangle","c":"Test a selection point against a caller-supplied rectangle.\nInputs: +8/+10/+12/+14 are point/rectangle fields.\nOutputs: boolean or matching-selection result.\nAssumptions: coordinates are in the same caller-defined units.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; no persistent state.\nHardware: none directly.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $5552-$5595 (54 decoded operations); native calls $439D, $43A8. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21840,"l":"vm_frame_adjust_554d","c":"Signed frame adjustment -4 for hit_test_selection_rectangle at $554D, consumed by the $70F8 VM gateway before bytecode begins at $5552. Test a selection point against a caller-supplied rectangle.","t":"word","b":[252,255],"d":[65532]},{"a":21842,"l":"vm_bytecode_554d","c":"Compiled bytecode belonging to hit_test_selection_rectangle ($554D). Test a selection point against a caller-supplied rectangle. This position is the opcode of load_primary_local_indirect_short at $5552. The procedure decodes to 54 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include return_argument_byte_1, return_argument_byte_0.","t":"byte","b":[129,18,87,181,144,0,212,43]},{"a":21850,"t":"byte","b":[138,24,212,42,59,60,172,168]},{"a":21858,"t":"byte","b":[67,174,2,180,212,11,208,179]},{"a":21866,"t":"byte","b":[60,172,157,67,174,2,180,212]},{"a":21874,"t":"byte","b":[11,117,179,14,180,212,11,118]},{"a":21882,"t":"byte","b":[179,15,180,212,58,129,16,180]},{"a":21890,"t":"byte","b":[212,11,116,179,13,81,219,180]},{"a":21898,"t":"byte","b":[212,11,116,179,13,140,254,0]},{"a":21906,"t":"byte","b":[218,180,212,207]},{"a":21910,"l":"render_life_map_window_or_strip","c":"Render a caller-selected life-map window/strip. Inputs: frame +8/+10/+12/+14 supply row, column, extent and display context. It computes cells from the 30x3 grid at $81F7 with a six-byte row stride and selector records in $81C5-$81D4, then calls $57BA for each cell. Output: rendered window and final traversal position. Assumptions: stage grid/configuration are loaded. Clobbers: VM values, expression stack, frame locals and map-render workspace. Hardware: VIC-visible screen memory through $57BA.\nEntry protocol: JSR $70F8; frame adjustment -10; bytecode $559B-$5602; native call $57BA. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":21913,"l":"vm_frame_adjust_5596","c":"Signed frame adjustment -10 for render_life_map_window_or_strip at $5596, consumed by the $70F8 VM gateway before bytecode begins at $559B. Render a caller-selected life-map window/strip. Inputs: frame +8/+10/+12/+14 supply row, column, extent and display context. It computes cells from the 30x3 grid at $81F7 with a six-byte row stride and selector records in $81C5-$81D4, then calls $57BA for each cell. Output: rendered window and final traversal position. Assumptions: stage grid/configuration are loaded. Clobbers: VM values, expression stack, frame locals and map-render workspace. Hardware: VIC-visible screen memory through $57BA.","t":"word","b":[246,255],"d":[65526]},{"a":21915,"l":"vm_bytecode_5596","c":"Compiled bytecode belonging to render_life_map_window_or_strip ($5596). Render a caller-selected life-map window/strip. Inputs: frame +8/+10/+12/+14 supply row, column, extent and display context. It computes cells from the 30x3 grid at $81F7 with a six-byte row stride and selector records in $81C5-$81D4, then calls $57BA for each cell. Output: rendered window and final traversal position. Assumptions: stage grid/configuration are loaded. Clobbers: VM values, expression stack, frame locals and map-render workspace. Hardware: VIC-visible screen memory through $57BA. This position is the opcode of load_primary_local_+10 at $559B. The procedure decodes to 72 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include render_life_map_cell_or_connector.","t":"byte","b":[13,86,182,31,187,143,253,39]},{"a":21923,"t":"byte","b":[13,86,185,209,42,214,175,85]},{"a":21931,"t":"byte","b":[7,208,39,209,7,31,195,216]},{"a":21939,"t":"byte","b":[2,86,214,188,85,10,208,42]},{"a":21947,"t":"byte","b":[209,10,86,194,216,253,85,14]},{"a":21955,"t":"byte","b":[209,46,80,194,216,203,85,207]},{"a":21963,"t":"byte","b":[141,31,60,58,7,80,197,216]},{"a":21971,"t":"byte","b":[223,85,7,86,181,140,247,129]},{"a":21979,"t":"byte","b":[187,214,224,85,64,179,15,23]},{"a":21987,"t":"byte","b":[188,210,140,197,129,187,179,135]},{"a":21995,"t":"byte","b":[16,172,186,87,174,12,138,248]},{"a":22003,"t":"byte","b":[0,205,129,16,187,133,16,214]},{"a":22011,"t":"byte","b":[184,85,64,42,214,171,85,207]},{"a":22019,"l":"render_initial_life_map_window","c":"Render the initial group of life-map rows around the selected stage position. Inputs: frame +8/+10 supply the row/window context. It begins at grid row index-3 (`$81F7 + 6*(index-3)`), walks one six-byte row per iteration, and consumes selector words backward from $81CB for the first four category slots. Output: initialized visible map. Assumptions: stage configuration and 30x3 grid are loaded. Clobbers: VM values, stack/frame locals and renderer workspace. Hardware: VIC-visible screen memory through $57BA.\nEntry protocol: JSR $70F8; frame adjustment -10; bytecode $5608-$5669; native call $57BA. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22022,"l":"vm_frame_adjust_5603","c":"Signed frame adjustment -10 for render_initial_life_map_window at $5603, consumed by the $70F8 VM gateway before bytecode begins at $5608. Render the initial group of life-map rows around the selected stage position. Inputs: frame +8/+10 supply the row/window context. It begins at grid row index-3 (`$81F7 + 6*(index-3)`), walks one six-byte row per iteration, and consumes selector words backward from $81CB for the first four category slots. Output: initialized visible map. Assumptions: stage configuration and 30x3 grid are loaded. Clobbers: VM values, stack/frame locals and renderer workspace. Hardware: VIC-visible screen memory through $57BA.","t":"word","b":[246,255],"d":[65526]},{"a":22024,"l":"vm_bytecode_5603","c":"Compiled bytecode belonging to render_initial_life_map_window ($5603). Render the initial group of life-map rows around the selected stage position. Inputs: frame +8/+10 supply the row/window context. It begins at grid row index-3 (`$81F7 + 6*(index-3)`), walks one six-byte row per iteration, and consumes selector words backward from $81CB for the first four category slots. Output: initialized visible map. Assumptions: stage configuration and 30x3 grid are loaded. Clobbers: VM values, stack/frame locals and renderer workspace. Hardware: VIC-visible screen memory through $57BA. This position is the opcode of load_primary_immediate_word at $5608. The procedure decodes to 67 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include render_life_map_cell_or_connector.","t":"byte","b":[138,203,129,40,12,143,253,86]},{"a":22032,"t":"byte","b":[181,140,247,129,187,41,138,0]},{"a":22040,"t":"byte","b":[32,39,137,255,42,67,43,214]},{"a":22048,"t":"byte","b":[38,86,11,209,43,208,11,80]},{"a":22056,"t":"byte","b":[197,216,105,86,214,51,86,10]},{"a":22064,"t":"byte","b":[208,42,209,10,86,194,216,90]},{"a":22072,"t":"byte","b":[86,141,40,96,58,12,27,197]},{"a":22080,"t":"byte","b":[216,71,86,9,214,72,86,64]},{"a":22088,"t":"byte","b":[179,56,55,172,186,87,174,12]},{"a":22096,"t":"byte","b":[138,64,1,205,7,187,39,214]},{"a":22104,"t":"byte","b":[47,86,8,143,254,40,114,70]},{"a":22112,"t":"byte","b":[205,9,187,41,64,42,214,34]},{"a":22120,"t":"byte","b":[86,207]},{"a":22122,"l":"continue_menu_text","c":"Zero-terminated menu label '    Continue'.","t":"byte","b":[32,32,32,32,67,111,110,116]},{"a":22130,"t":"byte","b":[105,110,117,101,0]},{"a":22135,"l":"prompt_retry_after_disk_error","c":"Construct a disk diagnostic and prompt the player to retry or cancel.\nInputs: none.\nOutputs: retry/cancel control.\nAssumptions: $7E81 and current disk status are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; diagnostic text buffers and modal dialog state.\nHardware: IEC status plus display/input through callees.\nEntry protocol: JSR $70F8; signed frame adjustment -40; bytecode $567C-$56D1 (42 decoded operations); native calls $4B57, $657B, $68F8, $6936. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22138,"l":"vm_frame_adjust_5677","c":"Signed frame adjustment -40 for prompt_retry_after_disk_error at $5677, consumed by the $70F8 VM gateway before bytecode begins at $567C. Construct a disk diagnostic and prompt the player to retry or cancel.","t":"word","b":[216,255],"d":[65496]},{"a":22140,"l":"vm_bytecode_5677","c":"Compiled bytecode belonging to prompt_retry_after_disk_error ($5677). Construct a disk diagnostic and prompt the player to retry or cancel. This position is the opcode of push_immediate_word at $567C. The procedure decodes to 42 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include run_modal_selection_dialog, find_byte_in_zero_terminated_buffer, append_zero_terminated_string, copy_zero_terminated_string.","t":"byte","b":[142,210,86,222,216,255,179,172]},{"a":22148,"t":"byte","b":[54,105,174,4,141,88,222,216]},{"a":22156,"t":"byte","b":[255,179,172,123,101,174,4,179]},{"a":22164,"t":"byte","b":[160,8,0,210,140,108,126,187]},{"a":22172,"t":"byte","b":[211,180,212,160,8,0,210,208]},{"a":22180,"t":"byte","b":[140,108,126,187,211,139,85,192]},{"a":22188,"t":"byte","b":[216,181,86,138,245,86,214,184]},{"a":22196,"t":"byte","b":[86,138,249,86,179,222,216,255]},{"a":22204,"t":"byte","b":[179,172,248,104,174,4,222,216]},{"a":22212,"t":"byte","b":[255,168,129,126,96,142,125,126]},{"a":22220,"t":"byte","b":[172,87,75,174,4,207]},{"a":22226,"l":"disk_swap_prompt_text_pool","c":"Zero-terminated multi-load prompt and direction labels: ' Please insert disk X, label side ', 'UP.', and 'DOWN.'. The X and side selection are supplied dynamically by the surrounding VM logic.","t":"byte","b":[32,80,108,101,97,115,101,32]},{"a":22234,"t":"byte","b":[105,110,115,101,114,116,32,100]},{"a":22242,"t":"byte","b":[105,115,107,32,88,44,32,108]},{"a":22250,"t":"byte","b":[97,98,101,108,32,115,105,100]},{"a":22258,"t":"byte","b":[101,32,0,85,80,46,0,68]},{"a":22266,"t":"byte","b":[79,87,78,46,0]},{"a":22271,"l":"read_normalized_input","c":"Combine debounced keyboard input with joystick normalization.\nInputs: none.\nOutputs: canonical direction/action code.\nAssumptions: KERNAL and CIA input are available.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; debounce state through callees.\nHardware: KERNAL GETIN and CIA 1.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $5704-$570D (5 decoded operations); native calls $570E, $5729. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22274,"l":"vm_frame_adjust_56ff","c":"Signed frame adjustment 0 for read_normalized_input at $56FF, consumed by the $70F8 VM gateway before bytecode begins at $5704. Combine debounced keyboard input with joystick normalization.","t":"word","b":[0,0],"d":[0]},{"a":22276,"l":"vm_bytecode_56ff","c":"Compiled bytecode belonging to read_normalized_input ($56FF). Combine debounced keyboard input with joystick normalization. This position is the opcode of call_native at $5704. The procedure decodes to 5 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include get_debounced_key, normalize_key_or_joystick_code.","t":"byte","b":[172,14,87,179,172,41,87,174]},{"a":22284,"t":"byte","b":[2,207]},{"a":22286,"l":"get_debounced_key","c":"Wait for a key press and its subsequent release.\nInputs: none.\nOutputs: first nonzero KERNAL GETIN byte.\nAssumptions: KERNAL is visible.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; KERNAL channel/input state.\nHardware: calls CLRCHN and GETIN.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $5713-$5728 (10 decoded operations); native calls $6DE6, $6DFA. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22289,"l":"vm_frame_adjust_570e","c":"Signed frame adjustment -2 for get_debounced_key at $570E, consumed by the $70F8 VM gateway before bytecode begins at $5713. Wait for a key press and its subsequent release.","t":"word","b":[254,255],"d":[65534]},{"a":22291,"l":"vm_bytecode_570e","c":"Compiled bytecode belonging to get_debounced_key ($570E). Wait for a key press and its subsequent release. This position is the opcode of call_native at $5713. The procedure decodes to 10 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include kernal_clrchn_wrapper, kernal_getin_wrapper.","t":"byte","b":[172,230,109,172,250,109,43,11]},{"a":22299,"t":"byte","b":[216,39,87,172,250,109,216,39]},{"a":22307,"t":"byte","b":[87,214,30,87,11,207]},{"a":22313,"l":"normalize_key_or_joystick_code","c":"Map a raw key or joystick state to the resident canonical input code.\nInputs: +8 raw key code.\nOutputs: canonical direction/action code.\nAssumptions: joystick is read on CIA 1 port A.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; no persistent state.\nHardware: reads complemented $DC00 & $1F.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $572E-$57B9 (42 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22316,"l":"vm_frame_adjust_5729","c":"Signed frame adjustment 0 for normalize_key_or_joystick_code at $5729, consumed by the $70F8 VM gateway before bytecode begins at $572E. Map a raw key or joystick state to the resident canonical input code.","t":"word","b":[0,0],"d":[0]},{"a":22318,"l":"vm_bytecode_5729","c":"Compiled bytecode belonging to normalize_key_or_joystick_code ($5729). Map a raw key or joystick state to the resident canonical input code. This position is the opcode of load_primary_local_+8 at $572E. The procedure decodes to 42 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[12,214,115,87,137,16,44,214]},{"a":22326,"t":"byte","b":[184,87,66,44,214,184,87,72]},{"a":22334,"t":"byte","b":[44,214,184,87,65,44,214,184]},{"a":22342,"t":"byte","b":[87,68,44,214,184,87,138,168]},{"a":22350,"t":"byte","b":[0,28,188,44,214,184,87,138]},{"a":22358,"t":"byte","b":[176,0,28,188,44,214,184,87]},{"a":22366,"t":"byte","b":[67,44,214,184,87,165,0,220]},{"a":22374,"t":"byte","b":[204,139,31,218,44,214,184,87]},{"a":22382,"t":"byte","b":[64,44,214,184,87,217,16,0]},{"a":22390,"t":"byte","b":[0,0,99,87,3,0,94,87]},{"a":22398,"t":"byte","b":[13,0,50,87,17,0,56,87]},{"a":22406,"t":"byte","b":[20,0,71,87,29,0,61,87]},{"a":22414,"t":"byte","b":[133,0,76,87,134,0,76,87]},{"a":22422,"t":"byte","b":[135,0,76,87,136,0,76,87]},{"a":22430,"t":"byte","b":[137,0,85,87,138,0,85,87]},{"a":22438,"t":"byte","b":[139,0,85,87,140,0,85,87]},{"a":22446,"t":"byte","b":[145,0,66,87,157,0,71,87]},{"a":22454,"t":"byte","b":[110,87,12,207]},{"a":22458,"l":"render_life_map_cell_or_connector","c":"Render one life-map cell. Inputs: frame +8/+10/+12/+14 supply the grid word, screen destination, clipping geometry and mode. The word low byte is the global scene ID; high-byte low nybble selects one of the 240-byte experience icons, while a zero selector dispatches to connector rendering at $5968. Coordinate boundaries come from $82AF. Output: cell/icon/path drawn and a completion/clipping result. Assumptions: grid word and VIC layout are valid. Clobbers: VM values, frame locals, $7E8D/$7E8F/$81F5 and screen workspace. Hardware: writes VIC-visible screen memory.\nEntry protocol: JSR $70F8; frame adjustment -4; bytecode $57BF-$5967; native calls $5968 and $6521. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22461,"l":"vm_frame_adjust_57ba","c":"Signed frame adjustment -4 for render_life_map_cell_or_connector at $57BA, consumed by the $70F8 VM gateway before bytecode begins at $57BF. Render one life-map cell. Inputs: frame +8/+10/+12/+14 supply the grid word, screen destination, clipping geometry and mode. The word low byte is the global scene ID; high-byte low nybble selects one of the 240-byte experience icons, while a zero selector dispatches to connector rendering at $5968. Coordinate boundaries come from $82AF. Output: cell/icon/path drawn and a completion/clipping result. Assumptions: grid word and VIC layout are valid. Clobbers: VM values, frame locals, $7E8D/$7E8F/$81F5 and screen workspace. Hardware: writes VIC-visible screen memory.","t":"word","b":[252,255],"d":[65532]},{"a":22463,"l":"vm_bytecode_57ba","c":"Compiled bytecode belonging to render_life_map_cell_or_connector ($57BA). Render one life-map cell. Inputs: frame +8/+10/+12/+14 supply the grid word, screen destination, clipping geometry and mode. The word low byte is the global scene ID; high-byte low nybble selects one of the 240-byte experience icons, while a zero selector dispatches to connector rendering at $5968. Coordinate boundaries come from $82AF. Output: cell/icon/path drawn and a completion/clipping result. Assumptions: grid word and VIC layout are valid. Clobbers: VM values, frame locals, $7E8D/$7E8F/$81F5 and screen workspace. Hardware: writes VIC-visible screen memory. This position is the opcode of load_primary_local_+14 at $57BF. The procedure decodes to 273 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include clip_and_draw_life_map_connector_segment, fill_memory_range.","t":"byte","b":[15,139,255,192,216,72,88,67]},{"a":22471,"t":"byte","b":[205,129,16,189,133,16,67,205]},{"a":22479,"t":"byte","b":[129,18,189,133,18,96,135,18]},{"a":22487,"t":"byte","b":[60,172,33,101,174,6,14,215]},{"a":22495,"t":"byte","b":[226,87,207,129,16,205,129,18]},{"a":22503,"t":"byte","b":[187,133,18,64,43,214,243,87]},{"a":22511,"t":"byte","b":[11,208,43,209,11,83,194,216]},{"a":22519,"t":"byte","b":[71,88,11,210,30,187,176,140]},{"a":22527,"t":"byte","b":[0,16,218,216,68,88,11,208]},{"a":22535,"t":"byte","b":[210,140,175,130,187,176,143,24]},{"a":22543,"t":"byte","b":[179,129,16,180,195,216,68,88]},{"a":22551,"t":"byte","b":[11,208,210,140,175,130,187,176]},{"a":22559,"t":"byte","b":[143,24,179,129,18,180,196,216]},{"a":22567,"t":"byte","b":[68,88,142,192,0,104,11,208]},{"a":22575,"t":"byte","b":[210,140,175,130,187,176,179,12]},{"a":22583,"t":"byte","b":[131,16,188,180,187,143,24,179]},{"a":22591,"t":"byte","b":[172,33,101,174,6,214,239,87]},{"a":22599,"t":"byte","b":[207,15,85,197,216,208,88,67]},{"a":22607,"t":"byte","b":[205,129,16,189,133,16,67,205]},{"a":22615,"t":"byte","b":[129,18,189,133,18,96,135,18]},{"a":22623,"t":"byte","b":[60,172,33,101,174,6,14,215]},{"a":22631,"t":"byte","b":[106,88,207,129,16,205,129,18]},{"a":22639,"t":"byte","b":[187,133,18,64,43,214,123,88]},{"a":22647,"t":"byte","b":[11,208,43,209,11,83,194,216]},{"a":22655,"t":"byte","b":[207,88,11,210,30,187,176,140]},{"a":22663,"t":"byte","b":[0,32,218,216,204,88,11,208]},{"a":22671,"t":"byte","b":[210,140,175,130,187,176,143,24]},{"a":22679,"t":"byte","b":[179,129,16,180,195,216,204,88]},{"a":22687,"t":"byte","b":[11,208,210,140,175,130,187,176]},{"a":22695,"t":"byte","b":[143,24,179,129,18,180,196,216]},{"a":22703,"t":"byte","b":[204,88,142,192,0,104,11,208]},{"a":22711,"t":"byte","b":[210,140,175,130,187,176,179,12]},{"a":22719,"t":"byte","b":[131,16,188,180,187,143,24,179]},{"a":22727,"t":"byte","b":[172,33,101,174,6,214,119,88]},{"a":22735,"t":"byte","b":[207,15,168,141,126,67,205,129]},{"a":22743,"t":"byte","b":[16,189,133,16,129,18,83,189]},{"a":22751,"t":"byte","b":[131,16,187,42,164,141,126,139]},{"a":22759,"t":"byte","b":[48,181,166,245,129,187,168,143]},{"a":22767,"t":"byte","b":[126,96,58,135,16,60,13,216]},{"a":22775,"t":"byte","b":[254,88,13,176,214,255,88,64]},{"a":22783,"t":"byte","b":[179,172,104,89,174,10,100,58]},{"a":22791,"t":"byte","b":[135,16,60,13,216,20,89,13]},{"a":22799,"t":"byte","b":[120,176,214,21,89,64,179,172]},{"a":22807,"t":"byte","b":[104,89,174,10,138,80,10,205]},{"a":22815,"t":"byte","b":[164,143,126,187,168,143,126,97]},{"a":22823,"t":"byte","b":[58,135,16,60,14,216,52,89]},{"a":22831,"t":"byte","b":[14,176,214,53,89,64,179,172]},{"a":22839,"t":"byte","b":[104,89,174,10,98,58,135,16]},{"a":22847,"t":"byte","b":[60,14,216,74,89,14,114,176]},{"a":22855,"t":"byte","b":[214,75,89,64,179,172,104,89]},{"a":22863,"t":"byte","b":[174,10,99,58,135,16,60,14]},{"a":22871,"t":"byte","b":[216,96,89,14,116,176,214,97]},{"a":22879,"t":"byte","b":[89,64,179,172,104,89,174,10]},{"a":22887,"t":"byte","b":[207]},{"a":22888,"l":"clip_and_draw_life_map_connector_segment","c":"Clip and draw the connector arms encoded in one life-map word. Inputs: frame +8/+10/+12/+14 supply the connector word, screen destination and clip rectangle. It tests masks $1000, $2000, $4000 and $8000 and draws the corresponding four directional path arms; a missing arm leaves that segment clear. Output: advanced render position/result. Assumptions: coordinate boundaries and screen layout are initialized. Clobbers: VM values, frame locals, $7E8D/$7E8F and screen workspace. Hardware: temporarily changes CPU port $01 through character-data helpers and writes VIC-visible screen RAM.\nEntry protocol: JSR $70F8; frame adjustment -2; bytecode $596D-$5A5B; native calls $439D, $5A5C, $6521 and $6630. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":22891,"l":"vm_frame_adjust_5968","c":"Signed frame adjustment -2 for clip_and_draw_life_map_connector_segment at $5968, consumed by the $70F8 VM gateway before bytecode begins at $596D. Clip and draw the connector arms encoded in one life-map word. Inputs: frame +8/+10/+12/+14 supply the connector word, screen destination and clip rectangle. It tests masks $1000, $2000, $4000 and $8000 and draws the corresponding four directional path arms; a missing arm leaves that segment clear. Output: advanced render position/result. Assumptions: coordinate boundaries and screen layout are initialized. Clobbers: VM values, frame locals, $7E8D/$7E8F and screen workspace. Hardware: temporarily changes CPU port $01 through character-data helpers and writes VIC-visible screen RAM.","t":"word","b":[254,255],"d":[65534]},{"a":22893,"l":"vm_bytecode_5968","c":"Compiled bytecode belonging to clip_and_draw_life_map_connector_segment ($5968). Clip and draw the connector arms encoded in one life-map word. Inputs: frame +8/+10/+12/+14 supply the connector word, screen destination and clip rectangle. It tests masks $1000, $2000, $4000 and $8000 and draws the corresponding four directional path arms; a missing arm leaves that segment clear. Output: advanced render position/result. Assumptions: coordinate boundaries and screen layout are initialized. Clobbers: VM values, frame locals, $7E8D/$7E8F and screen workspace. Hardware: temporarily changes CPU port $01 through character-data helpers and writes VIC-visible screen RAM. This position is the opcode of load_primary_local_indirect_short at $596D. The procedure decodes to 166 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include return_argument_byte_1, layout_wrapped_text_lines, fill_memory_range, memmove_bytes.","t":"byte","b":[129,16,208,210,140,175,130,187]},{"a":22901,"t":"byte","b":[176,179,14,180,197,216,126,89]},{"a":22909,"t":"byte","b":[207,129,16,210,140,175,130,187]},{"a":22917,"t":"byte","b":[176,205,14,188,46,129,16,210]},{"a":22925,"t":"byte","b":[140,175,130,187,176,205,15,188]},{"a":22933,"t":"byte","b":[47,15,80,195,216,157,89,207]},{"a":22941,"t":"byte","b":[14,205,13,188,45,14,80,194]},{"a":22949,"t":"byte","b":[216,170,89,64,46,129,16,210]},{"a":22957,"t":"byte","b":[140,175,130,187,176,179,129,16]},{"a":22965,"t":"byte","b":[208,210,140,175,130,187,176,180]},{"a":22973,"t":"byte","b":[188,43,179,15,180,196,216,200]},{"a":22981,"t":"byte","b":[89,11,47,15,139,48,196,216]},{"a":22989,"t":"byte","b":[2,90,15,30,196,216,2,90]},{"a":22997,"t":"byte","b":[72,205,15,188,47,96,104,13]},{"a":23005,"t":"byte","b":[31,187,179,172,33,101,174,6]},{"a":23013,"t":"byte","b":[164,141,126,82,192,216,255,89]},{"a":23021,"t":"byte","b":[12,140,0,64,218,216,255,89]},{"a":23029,"t":"byte","b":[13,31,187,115,179,138,255,0]},{"a":23037,"t":"byte","b":[180,212,214,200,89,15,30,195]},{"a":23045,"t":"byte","b":[216,9,90,207,60,172,157,67]},{"a":23053,"t":"byte","b":[174,2,95,218,215,30,90,63]},{"a":23061,"t":"byte","b":[62,61,60,172,92,90,174,8]},{"a":23069,"t":"byte","b":[207,60,172,157,67,174,2,95]},{"a":23077,"t":"byte","b":[218,209,140,240,0,181,166,143]},{"a":23085,"t":"byte","b":[126,187,43,14,205,13,187,45]},{"a":23093,"t":"byte","b":[14,205,11,187,43,14,205,15]},{"a":23101,"t":"byte","b":[188,47,138,253,0,205,165,1]},{"a":23109,"t":"byte","b":[0,218,169,1,0,63,59,61]},{"a":23117,"t":"byte","b":[172,48,102,174,6,66,205,165]},{"a":23125,"t":"byte","b":[1,0,219,169,1,0,207]},{"a":23132,"l":"layout_wrapped_text_lines","c":"Lay out wrapped lines into the caller's bounded text buffer.\nInputs: +8/+10/+12/+14 supply text and layout bounds.\nOutputs: filled layout buffer and line metrics.\nAssumptions: source is terminated and output capacity is valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $7E8D and destination buffer.\nHardware: none directly.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $5A61-$5B6B (160 decoded operations); native calls $6521. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":23135,"l":"vm_frame_adjust_5a5c","c":"Signed frame adjustment 0 for layout_wrapped_text_lines at $5A5C, consumed by the $70F8 VM gateway before bytecode begins at $5A61. Lay out wrapped lines into the caller's bounded text buffer.","t":"word","b":[0,0],"d":[0]},{"a":23137,"l":"vm_bytecode_5a5c","c":"Compiled bytecode belonging to layout_wrapped_text_lines ($5A5C). Lay out wrapped lines into the caller's bounded text buffer. This position is the opcode of push_const_0 at $5A61. The procedure decodes to 160 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include fill_memory_range.","t":"byte","b":[96,15,30,188,179,13,30,187]},{"a":23145,"t":"byte","b":[179,172,33,101,174,6,164,141]},{"a":23153,"t":"byte","b":[126,82,194,216,155,90,12,140]},{"a":23161,"t":"byte","b":[0,16,218,216,154,90,14,139]},{"a":23169,"t":"byte","b":[24,195,216,154,90,15,139,24]},{"a":23177,"t":"byte","b":[196,216,154,90,142,192,0,104]},{"a":23185,"t":"byte","b":[13,143,24,179,172,33,101,174]},{"a":23193,"t":"byte","b":[6,207,164,141,126,82,196,216]},{"a":23201,"t":"byte","b":[199,90,12,140,0,32,218,216]},{"a":23209,"t":"byte","b":[198,90,14,139,24,195,216,198]},{"a":23217,"t":"byte","b":[90,15,139,24,196,216,198,90]},{"a":23225,"t":"byte","b":[142,192,0,104,13,143,24,179]},{"a":23233,"t":"byte","b":[172,33,101,174,6,207,14,139]},{"a":23241,"t":"byte","b":[24,195,216,33,91,15,139,24]},{"a":23249,"t":"byte","b":[196,216,33,91,12,140,0,16]},{"a":23257,"t":"byte","b":[218,216,234,90,142,192,0,100]},{"a":23265,"t":"byte","b":[13,143,24,179,172,33,101,174]},{"a":23273,"t":"byte","b":[6,12,140,0,32,218,216,255]},{"a":23281,"t":"byte","b":[90,142,192,0,101,13,143,27]},{"a":23289,"t":"byte","b":[179,172,33,101,174,6,12,140]},{"a":23297,"t":"byte","b":[0,128,218,216,16,91,13,143]},{"a":23305,"t":"byte","b":[27,179,138,192,0,180,212,12]},{"a":23313,"t":"byte","b":[140,0,64,218,216,33,91,13]},{"a":23321,"t":"byte","b":[143,27,179,138,255,0,180,212]},{"a":23329,"t":"byte","b":[12,140,0,128,218,216,66,91]},{"a":23337,"t":"byte","b":[14,139,24,194,216,66,91,13]},{"a":23345,"t":"byte","b":[30,187,115,179,138,255,0,180]},{"a":23353,"t":"byte","b":[212,72,205,14,187,46,214,41]},{"a":23361,"t":"byte","b":[91,12,140,0,64,218,216,107]},{"a":23369,"t":"byte","b":[91,72,205,15,188,47,214,87]},{"a":23377,"t":"byte","b":[91,72,205,15,188,47,15,139]},{"a":23385,"t":"byte","b":[24,196,216,107,91,13,31,187]},{"a":23393,"t":"byte","b":[115,179,138,255,0,180,212,214]},{"a":23401,"t":"byte","b":[82,91,207]},{"a":23404,"l":"enter_inline_native_5b72_adjust_0","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5B6F preserves 0 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $5B72; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5B6F must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5B72, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":23407,"l":"AlterEgo_Runtime_runtime_descriptor_5b6c_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment +0. Body starts immediately afterward at $5B72; there is no target-pointer field.","t":"byte","b":[0]},{"a":23408,"l":"native_frame_adjust_5b6c","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $5B6C. Header byte $5B6F requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $5B72. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":23410,"l":"prepare_map_record_stream","c":"Prepare the IEC-backed MAP record stream. Inputs: frame +9..+12 are copied to serial-channel state $7E91-$7E94. It sends two bytes 'I0' to initialize the drive, accepts status zero or 73, then sends the five-byte 'M-E'+$07AF command that starts the resident drive-side fastloader. It initializes record/cursor state and requests the first record. Output: VM primary $0000 on success or $FFFF on setup/read failure. Assumptions: Entered only through the $5B6C shim, so the $7059 frame must be live with $06/$07 addressing it and A=0, X=0, Y=1 on entry. Frame bytes +9..+12 must hold the device and channel parameters copied to $7E91-$7E94, KERNAL ROM must be banked in for the IEC wrappers, and the device must be a 1541-compatible drive whose RAM will accept the 'M-E' $07AF start command. Clobbers: A,X,Y, VM primary/scratch, $7E91-$7E97 and $8043/$8044. Hardware: IEC serial bus and CIA 2 through the called transfer helpers.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5B72-$5C2D.","t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":23412,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23414,"t":"code","b":[141,145,126],"m":"sta","oa":32401,"o":"map_stream_channel_handle"},{"a":23417,"t":"code","b":[200],"m":"iny"},{"a":23418,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23420,"t":"code","b":[141,146,126],"m":"sta","oa":32402,"o":"a_7E92"},{"a":23423,"t":"code","b":[200],"m":"iny"},{"a":23424,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23426,"t":"code","b":[141,147,126],"m":"sta","oa":32403,"o":"expected_map_record_identifier"},{"a":23429,"t":"code","b":[200],"m":"iny"},{"a":23430,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23432,"t":"code","b":[141,148,126],"m":"sta","oa":32404,"o":"a_7E94"},{"a":23435,"t":"code","b":[138],"m":"txa"},{"a":23436,"t":"code","b":[72],"m":"pha"},{"a":23437,"t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":23439,"t":"code","b":[72],"m":"pha"},{"a":23440,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":23442,"t":"code","b":[72],"m":"pha"},{"a":23443,"t":"code","b":[169,46],"m":"lda","o":"#$2E"},{"a":23445,"t":"code","b":[72],"m":"pha"},{"a":23446,"t":"code","b":[173,146,126],"m":"lda","oa":32402,"o":"a_7E92"},{"a":23449,"t":"code","b":[72],"m":"pha"},{"a":23450,"t":"code","b":[173,145,126],"m":"lda","oa":32401,"o":"map_stream_channel_handle"},{"a":23453,"t":"code","b":[72],"m":"pha"},{"a":23454,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":23457,"l":"inline_call_5b9e_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $5B9E. The authoritative bytes encode target $64E9; execution resumes through cleanup JSR $5BA3.","t":"byte","b":[233,100]},{"a":23459,"l":"native_resume_5ba3","c":"Continuation of prepare_map_record_stream after inline parameters or a typed-block boundary. Prepare the IEC-backed MAP record stream. The complete native body spans $5B72-$5C2D; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $5BA3; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":23462,"l":"inline_call_5b9e_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $5B9E. The stored value is $06, releasing 6 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[6]},{"a":23463,"l":"native_resume_5ba7","c":"Continuation of prepare_map_record_stream after inline parameters or a typed-block boundary. Prepare the IEC-backed MAP record stream. The complete native body spans $5B72-$5C2D; execution resumes here within that body. This segment follows the $6FF4 call at $5B9E to serial_send_buffer_with_cr, then cleanup of 6 argument bytes by $7033.","t":"code","b":[72],"m":"pha"},{"a":23464,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":23466,"t":"code","b":[72],"m":"pha"},{"a":23467,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":23470,"l":"inline_call_5bab_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $5BAB. The authoritative bytes encode target $67E2; execution resumes through cleanup JSR $5BB0.","t":"byte","b":[226,103]},{"a":23472,"l":"native_resume_5bb0","c":"Continuation of prepare_map_record_stream after inline parameters or a typed-block boundary. Prepare the IEC-backed MAP record stream. The complete native body spans $5B72-$5C2D; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $5BB0; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":23475,"l":"inline_call_5bab_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $5BAB. The stored value is $02, releasing 2 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[2]},{"a":23476,"l":"native_resume_5bb4","c":"Continuation of prepare_map_record_stream after inline parameters or a typed-block boundary. Prepare the IEC-backed MAP record stream. The complete native body spans $5B72-$5C2D; execution resumes here within that body. This segment follows the $6FF4 call at $5BAB to enter_inline_native_67e8_adjust_minus2, then cleanup of 2 argument bytes by $7033.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":23478,"t":"code","b":[141,67,128],"m":"sta","oa":32835,"o":"runtime_file_status_flags"},{"a":23481,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":23483,"t":"code","b":[141,68,128],"m":"sta","oa":32836,"o":"a_8044"},{"a":23486,"t":"code","b":[173,67,128],"m":"lda","oa":32835,"o":"runtime_file_status_flags"},{"a":23489,"t":"code","b":[13,68,128],"m":"ora","oa":32836,"o":"a_8044"},{"a":23492,"t":"code","b":[208,3],"m":"bne","oa":23497,"o":"LAB_5bc9"},{"a":23494,"t":"code","b":[76,225,91],"m":"jmp","oa":23521,"o":"LAB_5be1"},{"a":23497,"l":"LAB_5bc9","t":"code","b":[173,67,128],"m":"lda","oa":32835,"x":[23492],"o":"runtime_file_status_flags"},{"a":23500,"t":"code","b":[201,73],"m":"cmp","o":"#$49"},{"a":23502,"t":"code","b":[208,5],"m":"bne","oa":23509,"o":"LAB_5bd5"},{"a":23504,"t":"code","b":[173,68,128],"m":"lda","oa":32836,"o":"a_8044"},{"a":23507,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":23509,"l":"LAB_5bd5","t":"code","b":[208,3],"m":"bne","oa":23514,"x":[23502],"o":"LAB_5bda"},{"a":23511,"t":"code","b":[76,225,91],"m":"jmp","oa":23521,"o":"LAB_5be1"},{"a":23514,"l":"LAB_5bda","t":"code","b":[169,255],"m":"lda","x":[23509],"o":"#$FF"},{"a":23516,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":23518,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":23520,"t":"code","b":[96],"m":"rts"},{"a":23521,"l":"LAB_5be1","t":"code","b":[138],"m":"txa","x":[23494,23511]},{"a":23522,"t":"code","b":[72],"m":"pha"},{"a":23523,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":23525,"t":"code","b":[72],"m":"pha"},{"a":23526,"t":"code","b":[169,92],"m":"lda","o":"#$5C"},{"a":23528,"t":"code","b":[72],"m":"pha"},{"a":23529,"t":"code","b":[169,49],"m":"lda","o":"#$31"},{"a":23531,"t":"code","b":[72],"m":"pha"},{"a":23532,"t":"code","b":[173,146,126],"m":"lda","oa":32402,"o":"a_7E92"},{"a":23535,"t":"code","b":[72],"m":"pha"},{"a":23536,"t":"code","b":[173,145,126],"m":"lda","oa":32401,"o":"map_stream_channel_handle"},{"a":23539,"t":"code","b":[72],"m":"pha"},{"a":23540,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":23543,"l":"inline_call_5bf4_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $5BF4. The authoritative bytes encode target $64E9; execution resumes through cleanup JSR $5BF9.","t":"byte","b":[233,100]},{"a":23545,"l":"native_resume_5bf9","c":"Continuation of prepare_map_record_stream after inline parameters or a typed-block boundary. Prepare the IEC-backed MAP record stream. The complete native body spans $5B72-$5C2D; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $5BF9; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":23548,"l":"inline_call_5bf4_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $5BF4. The stored value is $06, releasing 6 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[6]},{"a":23549,"l":"native_resume_5bfd","c":"Continuation of prepare_map_record_stream after inline parameters or a typed-block boundary. Prepare the IEC-backed MAP record stream. The complete native body spans $5B72-$5C2D; execution resumes here within that body. This segment follows the $6FF4 call at $5BF4 to serial_send_buffer_with_cr, then cleanup of 6 argument bytes by $7033.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":23551,"t":"code","b":[141,151,126],"m":"sta","oa":32407,"o":"map_record_buffer_cursor"},{"a":23554,"t":"code","b":[142,149,126],"m":"stx","oa":32405,"o":"map_record_index"},{"a":23557,"t":"code","b":[142,150,126],"m":"stx","oa":32406,"o":"a_7E96"},{"a":23560,"t":"code","b":[32,169,93],"m":"jsr","oa":23977,"o":"enter_inline_native_5daf_adjust_minus3"},{"a":23563,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":23565,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":23567,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":23569,"t":"code","b":[208,4],"m":"bne","oa":23575,"o":"LAB_5c17"},{"a":23571,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":23573,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":23575,"l":"LAB_5c17","t":"code","b":[240,3],"m":"beq","oa":23580,"x":[23569],"o":"LAB_5c1c"},{"a":23577,"t":"code","b":[76,41,92],"m":"jmp","oa":23593,"o":"LAB_5c29"},{"a":23580,"l":"LAB_5c1c","t":"code","b":[169,255],"m":"lda","x":[23575],"o":"#$FF"},{"a":23582,"t":"code","b":[141,147,126],"m":"sta","oa":32403,"o":"expected_map_record_identifier"},{"a":23585,"t":"code","b":[141,148,126],"m":"sta","oa":32404,"o":"a_7E94"},{"a":23588,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":23590,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":23592,"t":"code","b":[96],"m":"rts"},{"a":23593,"l":"LAB_5c29","t":"code","b":[134,10],"m":"stx","oa":10,"x":[23577],"o":"vm_primary_value_b0"},{"a":23595,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":23597,"t":"code","b":[96],"m":"rts"},{"a":23598,"l":"drive_initialize_and_execute_command_bytes","c":"Two command packets consumed by $5B72: ASCII 'I0', NUL, followed by ASCII 'M-E', little-endian drive address $07AF, NUL. $5B72 sends length two from $5C2E to initialize the drive, then length five from $5C31 to execute the previously installed drive-side fastloader at $07AF. These bytes are command data, never 6510 fall-through.","t":"byte","b":[73,48,0,77,45,69,175,7]},{"a":23606,"t":"byte","b":[0]},{"a":23607,"l":"enter_inline_native_5c3d_adjust_minus4","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5C3A preserves 0 workspace bytes and adjusts the VM expression stack by -4. Execution begins at physical RAM $5C3D; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5C3A must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5C3D, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":23610,"l":"AlterEgo_Runtime_runtime_descriptor_5c37_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment -4. Body starts immediately afterward at $5C3D; there is no target-pointer field.","t":"byte","b":[0]},{"a":23611,"l":"native_frame_adjust_5c37","c":"Signed native-procedure frame adjustment -4 after $7059 gateway at $5C37. Header byte $5C3A requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $5C3D. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[252,255],"d":[65532]},{"a":23613,"l":"seek_map_payload_offset","c":"Seek to a logical map-payload byte offset. Divide the 32-bit offset by 252: quotient becomes record index $7E95/$7E96; remainder+3 becomes buffer cursor $7E97; then load that record through $5DA9. The +3 skips status, record id, and leading $3A.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5C3D-$5CDF. Assumptions: Entered through the $5C3D shim with the $7059 frame live ($06/$07 valid, A=0, X=0, Y=1). Frame +9/+10 must point at a four-byte little-endian logical offset and the stream must already have been prepared by $5B72. The divisor is the constant 252: the signed division helpers at $6EEE/$6F1D contain no zero check and are only contract-safe for that value. Zero page $12-$1D is used as scratch and must be free. Hardware: No direct register access here; the record it requests is fetched by $5DA9, which drives the 1541 fast-serial transfer by sampling CIA 2 port A $DD00 and temporarily clearing VIC-II sprite-enable $D015. Inputs: entry register X; memory it reads before writing: $06,Y, $1A,X, $1A,Y. Outputs: writes transition_destination_ptr_lo, transition_destination_ptr_hi, $08,Y, screen_copy_destination_ptr_lo, screen_copy_destination_ptr_hi, transition_source_ptr_lo, transition_source_ptr_hi, screen_copy_source_ptr_lo, screen_copy_source_ptr_hi, map_record_buffer_cursor and 1 more. Clobbers: A, X, Y and the processor flags; writes the locations named under Outputs.","t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":23615,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23617,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":23619,"t":"code","b":[200],"m":"iny"},{"a":23620,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23622,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":23624,"t":"code","b":[161,26],"m":"lda","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":23626,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":23628,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23630,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":23632,"t":"code","b":[177,26],"m":"lda","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":23634,"t":"code","b":[160,253],"m":"ldy","o":"#$FD"},{"a":23636,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23638,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":23640,"t":"code","b":[177,26],"m":"lda","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":23642,"t":"code","b":[160,254],"m":"ldy","o":"#$FE"},{"a":23644,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23646,"t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":23648,"t":"code","b":[177,26],"m":"lda","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":23650,"t":"code","b":[160,255],"m":"ldy","o":"#$FF"},{"a":23652,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23654,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":23656,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23658,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":23660,"t":"code","b":[200],"m":"iny"},{"a":23661,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23663,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":23665,"t":"code","b":[200],"m":"iny"},{"a":23666,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23668,"t":"code","b":[133,28],"m":"sta","oa":28,"o":"screen_copy_destination_ptr_lo"},{"a":23670,"t":"code","b":[200],"m":"iny"},{"a":23671,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23673,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"screen_copy_destination_ptr_hi"},{"a":23675,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":23677,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":23679,"t":"code","b":[134,23],"m":"stx","oa":23,"o":"transition_source_ptr_hi"},{"a":23681,"t":"code","b":[134,24],"m":"stx","oa":24,"o":"screen_copy_source_ptr_lo"},{"a":23683,"t":"code","b":[134,25],"m":"stx","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":23685,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":23687,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":23689,"t":"code","b":[32,29,111],"m":"jsr","oa":28445,"o":"divide_i32_remainder_nonzero_contract"},{"a":23692,"t":"code","b":[24],"m":"clc"},{"a":23693,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":23695,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":23697,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":23699,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":23701,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":23703,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":23705,"t":"code","b":[165,28],"m":"lda","oa":28,"o":"screen_copy_destination_ptr_lo"},{"a":23707,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":23709,"t":"code","b":[133,24],"m":"sta","oa":24,"o":"screen_copy_source_ptr_lo"},{"a":23711,"t":"code","b":[165,29],"m":"lda","oa":29,"o":"screen_copy_destination_ptr_hi"},{"a":23713,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":23715,"t":"code","b":[133,25],"m":"sta","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":23717,"t":"code","b":[165,22],"m":"lda","oa":22,"o":"transition_source_ptr_lo"},{"a":23719,"t":"code","b":[141,151,126],"m":"sta","oa":32407,"o":"map_record_buffer_cursor"},{"a":23722,"t":"code","b":[160,252],"m":"ldy","o":"#$FC"},{"a":23724,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23726,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":23728,"t":"code","b":[200],"m":"iny"},{"a":23729,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23731,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":23733,"t":"code","b":[200],"m":"iny"},{"a":23734,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23736,"t":"code","b":[133,28],"m":"sta","oa":28,"o":"screen_copy_destination_ptr_lo"},{"a":23738,"t":"code","b":[200],"m":"iny"},{"a":23739,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23741,"t":"code","b":[133,29],"m":"sta","oa":29,"o":"screen_copy_destination_ptr_hi"},{"a":23743,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":23745,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":23747,"t":"code","b":[134,23],"m":"stx","oa":23,"o":"transition_source_ptr_hi"},{"a":23749,"t":"code","b":[134,24],"m":"stx","oa":24,"o":"screen_copy_source_ptr_lo"},{"a":23751,"t":"code","b":[134,25],"m":"stx","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":23753,"t":"code","b":[162,22],"m":"ldx","o":"#$16"},{"a":23755,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":23757,"t":"code","b":[32,238,110],"m":"jsr","oa":28398,"o":"divide_i32_quotient_nonzero_contract"},{"a":23760,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":23762,"t":"code","b":[141,149,126],"m":"sta","oa":32405,"o":"map_record_index"},{"a":23765,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":23767,"t":"code","b":[141,150,126],"m":"sta","oa":32406,"o":"a_7E96"},{"a":23770,"t":"code","b":[32,169,93],"m":"jsr","oa":23977,"o":"enter_inline_native_5daf_adjust_minus3"},{"a":23773,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":23775,"t":"code","b":[96],"m":"rts"},{"a":23776,"l":"enter_inline_native_5ce6_save4_adjust_minus2","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5CE3 preserves 4 workspace bytes and adjusts the VM expression stack by -2. Execution begins at physical RAM $5CE6; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5CE3 must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5CE6, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":23779,"l":"AlterEgo_Runtime_runtime_descriptor_5ce0_saved_zp","c":"Three-byte $7059 header: saved-workspace count 4, signed stack adjustment -2. Body starts immediately afterward at $5CE6; there is no target-pointer field.","t":"byte","b":[4]},{"a":23780,"l":"native_frame_adjust_5ce0","c":"Signed native-procedure frame adjustment -2 after $7059 gateway at $5CE0. Header byte $5CE3 requests preservation of 4 bytes from zero-page workspace $30 onward; body starts $5CE6. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[254,255],"d":[65534]},{"a":23782,"l":"read_map_payload_bytes","c":"Copy bytes from the framed record stream to a caller buffer. Valid payload indices are 3..254 (252 bytes). At cursor 255, advance the record index, load the next record through $5DA9, and resume at index 3, exposing neither $3A marker. Returns $FFFF on record-load failure.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5CE6-$5DA8. Assumptions: Entered through the $5CE6 shim, which preserves four workspace bytes, so the $7059 frame must be live and $30-$33 must be the reserved workspace. The buffer pointer in frame +9/+10 must have room for the requested count, cursor $7E97 must be inside the valid 3..255 window, and $8045-$8144 must hold the current record; at cursor 255 the routine advances the record index and calls $5DA9, so the drive-side stream must still be running. Hardware: No direct hardware access in this body; record refills go through $5DA9, which samples CIA 2 port A $DD00 and blanks sprites via VIC-II $D015. Inputs: entry register X; memory it reads before writing: $06,Y, map_record_buffer_cursor, $12,X, map_record_index, vm_primary_value_b0, vm_primary_value_b1. Outputs: writes compiler_workspace_30, compiler_workspace_31, compiler_workspace_32, compiler_workspace_33, $08,Y, transition_destination_ptr_lo, transition_destination_ptr_hi, transition_source_ptr_lo, map_record_buffer_cursor, transition_source_ptr_hi and 6 more; control then leaves through LAB_5d06, LAB_5d5e, LAB_5d95 and 1 more. Clobbers: A, X, Y and the processor flags; writes the locations named under Outputs.","t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":23784,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23786,"t":"code","b":[133,48],"m":"sta","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":23788,"t":"code","b":[200],"m":"iny"},{"a":23789,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23791,"t":"code","b":[133,49],"m":"sta","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":23793,"t":"code","b":[200],"m":"iny"},{"a":23794,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23796,"t":"code","b":[133,50],"m":"sta","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":23798,"t":"code","b":[200],"m":"iny"},{"a":23799,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":23801,"t":"code","b":[133,51],"m":"sta","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":23803,"t":"code","b":[165,50],"m":"lda","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":23805,"t":"code","b":[160,254],"m":"ldy","o":"#$FE"},{"a":23807,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23809,"t":"code","b":[165,51],"m":"lda","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":23811,"t":"code","b":[200],"m":"iny"},{"a":23812,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23814,"l":"LAB_5d06","t":"code","b":[138],"m":"txa","x":[23899,23962]},{"a":23815,"t":"code","b":[197,50],"m":"cmp","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":23817,"t":"code","b":[229,51],"m":"sbc","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":23819,"t":"code","b":[112,5],"m":"bvs","oa":23826,"o":"LAB_5d12"},{"a":23821,"t":"code","b":[48,3],"m":"bmi","oa":23826,"o":"LAB_5d12"},{"a":23823,"t":"code","b":[76,157,93],"m":"jmp","oa":23965,"o":"LAB_5d9d"},{"a":23826,"l":"LAB_5d12","t":"code","b":[173,151,126],"m":"lda","oa":32407,"x":[23819,23821],"o":"map_record_buffer_cursor"},{"a":23829,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":23831,"t":"code","b":[144,3],"m":"bcc","oa":23836,"o":"LAB_5d1c"},{"a":23833,"t":"code","b":[76,94,93],"m":"jmp","oa":23902,"o":"LAB_5d5e"},{"a":23836,"l":"LAB_5d1c","t":"code","b":[24],"m":"clc","x":[23831]},{"a":23837,"t":"code","b":[165,48],"m":"lda","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":23839,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":23841,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":23843,"t":"code","b":[133,48],"m":"sta","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":23845,"t":"code","b":[165,49],"m":"lda","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":23847,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":23849,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":23851,"t":"code","b":[133,49],"m":"sta","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":23853,"t":"code","b":[24],"m":"clc"},{"a":23854,"t":"code","b":[173,151,126],"m":"lda","oa":32407,"o":"map_record_buffer_cursor"},{"a":23857,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":23859,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":23861,"t":"code","b":[141,151,126],"m":"sta","oa":32407,"o":"map_record_buffer_cursor"},{"a":23864,"t":"code","b":[138],"m":"txa"},{"a":23865,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":23867,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":23869,"t":"code","b":[24],"m":"clc"},{"a":23870,"t":"code","b":[165,22],"m":"lda","oa":22,"o":"transition_source_ptr_lo"},{"a":23872,"t":"code","b":[105,69],"m":"adc","o":"#$45"},{"a":23874,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":23876,"t":"code","b":[165,23],"m":"lda","oa":23,"o":"transition_source_ptr_hi"},{"a":23878,"t":"code","b":[105,128],"m":"adc","o":"#$80"},{"a":23880,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":23882,"t":"code","b":[161,18],"m":"lda","oa":18,"o":"(native_math_scratch_b0,x)"},{"a":23884,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":23886,"t":"code","b":[24],"m":"clc"},{"a":23887,"t":"code","b":[165,50],"m":"lda","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":23889,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":23891,"t":"code","b":[133,50],"m":"sta","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":23893,"t":"code","b":[165,51],"m":"lda","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":23895,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":23897,"t":"code","b":[133,51],"m":"sta","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":23899,"t":"code","b":[76,6,93],"m":"jmp","oa":23814,"o":"LAB_5d06"},{"a":23902,"l":"LAB_5d5e","t":"code","b":[238,149,126],"m":"inc","oa":32405,"x":[23833],"o":"map_record_index"},{"a":23905,"t":"code","b":[208,3],"m":"bne","oa":23910,"o":"LAB_5d66"},{"a":23907,"t":"code","b":[238,150,126],"m":"inc","oa":32406,"o":"a_7E96"},{"a":23910,"l":"LAB_5d66","t":"code","b":[32,169,93],"m":"jsr","oa":23977,"x":[23905],"o":"enter_inline_native_5daf_adjust_minus3"},{"a":23913,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":23915,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":23917,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":23919,"t":"code","b":[208,4],"m":"bne","oa":23925,"o":"LAB_5d75"},{"a":23921,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":23923,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":23925,"l":"LAB_5d75","t":"code","b":[240,3],"m":"beq","oa":23930,"x":[23919],"o":"LAB_5d7a"},{"a":23927,"t":"code","b":[76,149,93],"m":"jmp","oa":23957,"o":"LAB_5d95"},{"a":23930,"l":"LAB_5d7a","t":"code","b":[24],"m":"clc","x":[23925]},{"a":23931,"t":"code","b":[173,149,126],"m":"lda","oa":32405,"o":"map_record_index"},{"a":23934,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":23936,"t":"code","b":[141,149,126],"m":"sta","oa":32405,"o":"map_record_index"},{"a":23939,"t":"code","b":[173,150,126],"m":"lda","oa":32406,"o":"a_7E96"},{"a":23942,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":23944,"t":"code","b":[141,150,126],"m":"sta","oa":32406,"o":"a_7E96"},{"a":23947,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":23949,"t":"code","b":[141,151,126],"m":"sta","oa":32407,"o":"map_record_buffer_cursor"},{"a":23952,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":23954,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":23956,"t":"code","b":[96],"m":"rts"},{"a":23957,"l":"LAB_5d95","t":"code","b":[169,3],"m":"lda","x":[23927],"o":"#$03"},{"a":23959,"t":"code","b":[141,151,126],"m":"sta","oa":32407,"o":"map_record_buffer_cursor"},{"a":23962,"t":"code","b":[76,6,93],"m":"jmp","oa":23814,"o":"LAB_5d06"},{"a":23965,"l":"LAB_5d9d","t":"code","b":[160,254],"m":"ldy","x":[23823],"o":"#$FE"},{"a":23967,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23969,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":23971,"t":"code","b":[200],"m":"iny"},{"a":23972,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":23974,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":23976,"t":"code","b":[96],"m":"rts"},{"a":23977,"l":"enter_inline_native_5daf_adjust_minus3","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5DAC preserves 0 workspace bytes and adjusts the VM expression stack by -3. Execution begins at physical RAM $5DAF; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5DAC must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5DAF, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"x":[23560,23770,23910],"o":"runtime_descriptor_call_gateway"},{"a":23980,"l":"runtime_descriptor_5da9_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment -3. Body starts immediately afterward at $5DAF; there is no target-pointer field.","t":"byte","b":[0]},{"a":23981,"l":"native_frame_adjust_5da9","c":"Signed native-procedure frame adjustment -3 after $7059 gateway at $5DA9. Header byte $5DAC requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $5DAF. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[253,255],"d":[65533]},{"a":23983,"l":"receive_map_record_fast_serial","c":"Receive and validate a 256-byte 1541 fast-serial transfer into $8045-$8144. During raster-timed CIA2 $DD00 sampling, sprites are disabled, each byte is reconstructed from three line samples, and EOR #$06 corrects line coding. Layout: status $8045, id $8046, leading $3A $8047, 252 payload bytes $8048-$8143, trailing $3A $8144. Retry on status/id/framing failure. No content decryption occurs here.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5DAF-$5EA6. Assumptions: Entered through the $5DAF shim with the $7059 frame live and X=0 on entry, since X is stored as the state byte and reused as the sprite-blank value. It assumes the drive-side fastloader started by $5B72 is running and about to send a 256-byte record, that $8045-$8144 is free, and that the transfer is raster-critical: sprites are disabled and no interrupt may steal cycles during the three-sample-per-byte loop. Hardware: Saves and clears VIC-II sprite-enable $D015 so sprite DMA cannot steal cycles, then reads the serial CLK/DATA lines through CIA 2 port A $DD00 in the timed sampling loop, EORing each assembled byte with $06 to undo the line coding; $D015 is restored from the saved copy afterwards. Inputs: entry register X; memory it reads before writing: map_record_index, SPRITE_ENABLE, map_stream_channel_handle. Outputs: writes drive_execute_address_lo, requested_map_record_index, $08,Y, SPRITE_ENABLE. Clobbers: A, Y and the processor flags; writes the locations named under Outputs; uses the 6502 stack (6 push, 0 pull in this body).","t":"code","b":[142,155,126],"m":"stx","oa":32411,"o":"drive_record_execute_address"},{"a":23986,"t":"code","b":[173,149,126],"m":"lda","oa":32405,"o":"map_record_index"},{"a":23989,"t":"code","b":[141,157,126],"m":"sta","oa":32413,"o":"drive_requested_record_index"},{"a":23992,"t":"code","b":[173,150,126],"m":"lda","oa":32406,"o":"a_7E96"},{"a":23995,"t":"code","b":[141,158,126],"m":"sta","oa":32414,"o":"a_7E9E"},{"a":23998,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":24000,"t":"code","b":[160,254],"m":"ldy","o":"#$FE"},{"a":24002,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24004,"t":"code","b":[138],"m":"txa"},{"a":24005,"t":"code","b":[200],"m":"iny"},{"a":24006,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24008,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":24011,"t":"code","b":[160,253],"m":"ldy","o":"#$FD"},{"a":24013,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24015,"l":"LAB_5dcf","t":"code","b":[142,21,208],"m":"stx","x":[24206],"o":"vic_sprite_enable"},{"a":24018,"t":"code","b":[138],"m":"txa"},{"a":24019,"t":"code","b":[72],"m":"pha"},{"a":24020,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":24022,"t":"code","b":[72],"m":"pha"},{"a":24023,"t":"code","b":[169,126],"m":"lda","o":"#$7E"},{"a":24025,"t":"code","b":[72],"m":"pha"},{"a":24026,"t":"code","b":[169,152],"m":"lda","o":"#$98"},{"a":24028,"t":"code","b":[72],"m":"pha"},{"a":24029,"t":"code","b":[173,146,126],"m":"lda","oa":32402,"o":"a_7E92"},{"a":24032,"t":"code","b":[72],"m":"pha"},{"a":24033,"t":"code","b":[173,145,126],"m":"lda","oa":32401,"o":"map_stream_channel_handle"},{"a":24036,"t":"code","b":[72],"m":"pha"},{"a":24037,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":24040,"l":"inline_call_5de5_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $5DE5. The authoritative bytes encode target $64E9; execution resumes through cleanup JSR $5DEA.","t":"byte","b":[233,100]},{"a":24042,"l":"native_resume_5dea","c":"Continuation of receive_map_record_fast_serial after inline parameters or a typed-block boundary. Receive and validate a 256-byte 1541 fast-serial transfer into $8045-$8144. During raster-timed CIA2 $DD00 sampling, sprites are disabled, each byte is reconstructed from three line samples, and EOR #$06 corrects line coding. Layout: status $8045, id $8046, leading $3A $8047, 252 payload bytes $8048-$8143, trailing $3A $8144. Retry on status/id/framing failure. No content decryption occurs here. The complete native body spans $5DAF-$5EA6; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $5DEA; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":24045,"l":"inline_call_5de5_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $5DE5. The stored value is $06, releasing 6 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[6]},{"a":24046,"l":"native_resume_5dee","c":"Continuation of receive_map_record_fast_serial after inline parameters or a typed-block boundary. Receive and validate a 256-byte 1541 fast-serial transfer into $8045-$8144. During raster-timed CIA2 $DD00 sampling, sprites are disabled, each byte is reconstructed from three line samples, and EOR #$06 corrects line coding. Layout: status $8045, id $8046, leading $3A $8047, 252 payload bytes $8048-$8143, trailing $3A $8144. Retry on status/id/framing failure. No content decryption occurs here. The complete native body spans $5DAF-$5EA6; execution resumes here within that body. This segment follows the $6FF4 call at $5DE5 to serial_send_buffer_with_cr, then cleanup of 6 argument bytes by $7033.","t":"code","b":[120],"m":"sei"},{"a":24047,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":24049,"t":"code","b":[162,23],"m":"ldx","o":"#$17"},{"a":24051,"l":"LAB_5df3","t":"code","b":[44,0,221],"m":"bit","x":[24054],"o":"cia2_port_a"},{"a":24054,"t":"code","b":[48,251],"m":"bmi","oa":24051,"o":"LAB_5df3"},{"a":24056,"t":"code","b":[142,0,221],"m":"stx","o":"cia2_port_a"},{"a":24059,"t":"code","b":[169,51],"m":"lda","o":"#$33"},{"a":24061,"l":"LAB_5dfd","t":"code","b":[205,18,208],"m":"cmp","x":[24064],"o":"vic_raster"},{"a":24064,"t":"code","b":[208,251],"m":"bne","oa":24061,"o":"LAB_5dfd"},{"a":24066,"l":"LAB_5e02","t":"code","b":[169,6],"m":"lda","x":[24117],"o":"#$06"},{"a":24068,"l":"LAB_5e04","t":"code","b":[44,18,208],"m":"bit","x":[24071],"o":"vic_raster"},{"a":24071,"t":"code","b":[240,251],"m":"beq","oa":24068,"o":"LAB_5e04"},{"a":24073,"t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":24075,"t":"code","b":[141,0,221],"m":"sta","o":"cia2_port_a"},{"a":24078,"t":"code","b":[72],"m":"pha"},{"a":24079,"t":"code","b":[104],"m":"pla"},{"a":24080,"t":"code","b":[72],"m":"pha"},{"a":24081,"t":"code","b":[104],"m":"pla"},{"a":24082,"t":"code","b":[234],"m":"nop"},{"a":24083,"t":"code","b":[173,0,221],"m":"lda","o":"cia2_port_a"},{"a":24086,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":24087,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":24088,"t":"code","b":[234],"m":"nop"},{"a":24089,"t":"code","b":[77,0,221],"m":"eor","o":"cia2_port_a"},{"a":24092,"t":"code","b":[41,240],"m":"and","o":"#$F0"},{"a":24094,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":24095,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":24096,"t":"code","b":[77,0,221],"m":"eor","o":"cia2_port_a"},{"a":24099,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":24100,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":24101,"t":"code","b":[234],"m":"nop"},{"a":24102,"t":"code","b":[77,0,221],"m":"eor","o":"cia2_port_a"},{"a":24105,"t":"code","b":[142,0,221],"m":"stx","o":"cia2_port_a"},{"a":24108,"t":"code","b":[73,6],"m":"eor","o":"#$06"},{"a":24110,"t":"code","b":[153,69,128],"m":"sta","oa":32837,"o":"map_record_status_byte,y"},{"a":24113,"t":"code","b":[234],"m":"nop"},{"a":24114,"t":"code","b":[234],"m":"nop"},{"a":24115,"t":"code","b":[234],"m":"nop"},{"a":24116,"t":"code","b":[200],"m":"iny"},{"a":24117,"t":"code","b":[208,203],"m":"bne","oa":24066,"o":"LAB_5e02"},{"a":24119,"t":"code","b":[169,199],"m":"lda","o":"#$C7"},{"a":24121,"t":"code","b":[141,0,221],"m":"sta","o":"cia2_port_a"},{"a":24124,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":24126,"t":"code","b":[88],"m":"cli"},{"a":24127,"t":"code","b":[160,253],"m":"ldy","o":"#$FD"},{"a":24129,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24131,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":24134,"t":"code","b":[173,69,128],"m":"lda","oa":32837,"o":"map_record_status_byte"},{"a":24137,"t":"code","b":[240,3],"m":"beq","oa":24142,"o":"LAB_5e4e"},{"a":24139,"t":"code","b":[76,116,94],"m":"jmp","oa":24180,"o":"LAB_5e74"},{"a":24142,"l":"LAB_5e4e","t":"code","b":[173,147,126],"m":"lda","oa":32403,"x":[24137],"o":"expected_map_record_identifier"},{"a":24145,"t":"code","b":[205,70,128],"m":"cmp","oa":32838,"o":"map_record_identifier"},{"a":24148,"t":"code","b":[208,5],"m":"bne","oa":24155,"o":"LAB_5e5b"},{"a":24150,"t":"code","b":[173,148,126],"m":"lda","oa":32404,"o":"a_7E94"},{"a":24153,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":24155,"l":"LAB_5e5b","t":"code","b":[240,3],"m":"beq","oa":24160,"x":[24148],"o":"LAB_5e60"},{"a":24157,"t":"code","b":[76,116,94],"m":"jmp","oa":24180,"o":"LAB_5e74"},{"a":24160,"l":"LAB_5e60","t":"code","b":[173,71,128],"m":"lda","oa":32839,"x":[24155],"o":"map_record_leading_marker"},{"a":24163,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":24165,"t":"code","b":[240,3],"m":"beq","oa":24170,"o":"LAB_5e6a"},{"a":24167,"t":"code","b":[76,116,94],"m":"jmp","oa":24180,"o":"LAB_5e74"},{"a":24170,"l":"LAB_5e6a","t":"code","b":[173,68,129],"m":"lda","oa":33092,"x":[24165],"o":"map_record_trailing_marker"},{"a":24173,"t":"code","b":[201,58],"m":"cmp","o":"#$3A"},{"a":24175,"t":"code","b":[208,3],"m":"bne","oa":24180,"o":"LAB_5e74"},{"a":24177,"t":"code","b":[76,162,94],"m":"jmp","oa":24226,"o":"LAB_5ea2"},{"a":24180,"l":"LAB_5e74","t":"code","b":[24],"m":"clc","x":[24139,24157,24167,24175]},{"a":24181,"t":"code","b":[160,254],"m":"ldy","o":"#$FE"},{"a":24183,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24185,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":24187,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24189,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":24191,"t":"code","b":[200],"m":"iny"},{"a":24192,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24194,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":24196,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":24198,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":24200,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":24202,"t":"code","b":[5,27],"m":"ora","oa":27,"o":"transition_destination_ptr_hi"},{"a":24204,"t":"code","b":[240,3],"m":"beq","oa":24209,"o":"LAB_5e91"},{"a":24206,"t":"code","b":[76,207,93],"m":"jmp","oa":24015,"o":"LAB_5dcf"},{"a":24209,"l":"LAB_5e91","t":"code","b":[173,69,128],"m":"lda","oa":32837,"x":[24204],"o":"map_record_status_byte"},{"a":24212,"t":"code","b":[141,67,128],"m":"sta","oa":32835,"o":"runtime_file_status_flags"},{"a":24215,"t":"code","b":[173,70,128],"m":"lda","oa":32838,"o":"map_record_identifier"},{"a":24218,"t":"code","b":[141,68,128],"m":"sta","oa":32836,"o":"a_8044"},{"a":24221,"t":"code","b":[132,10],"m":"sty","oa":10,"o":"vm_primary_value_b0"},{"a":24223,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":24225,"t":"code","b":[96],"m":"rts"},{"a":24226,"l":"LAB_5ea2","t":"code","b":[134,10],"m":"stx","oa":10,"x":[24177],"o":"vm_primary_value_b0"},{"a":24228,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":24230,"t":"code","b":[96],"m":"rts"},{"a":24231,"l":"enter_inline_native_5ead_adjust_0","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5EAA preserves 0 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $5EAD; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5EAA must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5EAD, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":24234,"l":"AlterEgo_Runtime_runtime_descriptor_5ea7_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment +0. Body starts immediately afterward at $5EAD; there is no target-pointer field.","t":"byte","b":[0]},{"a":24235,"l":"native_frame_adjust_5ea7","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $5EA7. Header byte $5EAA requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $5EAD. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":24237,"l":"tell_map_payload_offset","c":"Convert the current cursor back to a logical payload offset: sign-extend record index $7E95/$7E96, multiply by 252, add $7E97-3, and write the 32-bit result through the caller pointer. This is the inverse of $5C3D. Returns primary zero.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5EAD-$5F20. Assumptions: Entered through the $5EA7 shim with the $7059 frame live and X=0 on entry, because X supplies the zero high bytes of the 252 multiplier. Frame +9/+10 must point at a writable four-byte destination, and $7E95/$7E96/$7E97 must describe a position previously established by $5B72 or $5C3D; the record index is sign-extended, so indices above $7FFF are treated as negative. Hardware: Touches no hardware: 32-bit arithmetic on RAM state through multiply_i32_low32 followed by a store through the caller's pointer. Inputs: entry register X; memory it reads before writing: $06,Y, map_record_index, map_record_buffer_cursor. Outputs: writes transition_destination_ptr_lo, transition_destination_ptr_hi, transition_source_ptr_lo, transition_source_ptr_hi, screen_copy_source_ptr_lo, screen_copy_source_ptr_hi, native_math_scratch_b0, native_math_scratch_b1, native_math_scratch_b2, native_math_scratch_b3 and 8 more. Clobbers: A, X, Y and the processor flags; writes the locations named under Outputs.","t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":24239,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":24241,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":24243,"t":"code","b":[200],"m":"iny"},{"a":24244,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":24246,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":24248,"t":"code","b":[173,149,126],"m":"lda","oa":32405,"o":"map_record_index"},{"a":24251,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":24253,"t":"code","b":[173,150,126],"m":"lda","oa":32406,"o":"a_7E96"},{"a":24256,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":24258,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":24260,"t":"code","b":[10],"m":"asl","o":"a"},{"a":24261,"t":"code","b":[144,1],"m":"bcc","oa":24264,"o":"LAB_5ec8"},{"a":24263,"t":"code","b":[136],"m":"dey"},{"a":24264,"l":"LAB_5ec8","t":"code","b":[132,24],"m":"sty","oa":24,"x":[24261],"o":"screen_copy_source_ptr_lo"},{"a":24266,"t":"code","b":[132,25],"m":"sty","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":24268,"t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":24270,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":24272,"t":"code","b":[134,19],"m":"stx","oa":19,"o":"native_math_scratch_b1"},{"a":24274,"t":"code","b":[134,20],"m":"stx","oa":20,"o":"native_math_scratch_b2"},{"a":24276,"t":"code","b":[134,21],"m":"stx","oa":21,"o":"native_math_scratch_b3"},{"a":24278,"t":"code","b":[162,18],"m":"ldx","o":"#$12"},{"a":24280,"t":"code","b":[160,22],"m":"ldy","o":"#$16"},{"a":24282,"t":"code","b":[32,159,110],"m":"jsr","oa":28319,"o":"multiply_i32_low32"},{"a":24285,"t":"code","b":[173,151,126],"m":"lda","oa":32407,"o":"map_record_buffer_cursor"},{"a":24288,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":24290,"t":"code","b":[134,19],"m":"stx","oa":19,"o":"native_math_scratch_b1"},{"a":24292,"t":"code","b":[134,20],"m":"stx","oa":20,"o":"native_math_scratch_b2"},{"a":24294,"t":"code","b":[134,21],"m":"stx","oa":21,"o":"native_math_scratch_b3"},{"a":24296,"t":"code","b":[24],"m":"clc"},{"a":24297,"t":"code","b":[165,22],"m":"lda","oa":22,"o":"transition_source_ptr_lo"},{"a":24299,"t":"code","b":[101,18],"m":"adc","oa":18,"o":"native_math_scratch_b0"},{"a":24301,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":24303,"t":"code","b":[165,23],"m":"lda","oa":23,"o":"transition_source_ptr_hi"},{"a":24305,"t":"code","b":[101,19],"m":"adc","oa":19,"o":"native_math_scratch_b1"},{"a":24307,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":24309,"t":"code","b":[165,24],"m":"lda","oa":24,"o":"screen_copy_source_ptr_lo"},{"a":24311,"t":"code","b":[101,20],"m":"adc","oa":20,"o":"native_math_scratch_b2"},{"a":24313,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"vm_secondary_value_b2"},{"a":24315,"t":"code","b":[165,25],"m":"lda","oa":25,"o":"screen_copy_source_ptr_hi"},{"a":24317,"t":"code","b":[101,21],"m":"adc","oa":21,"o":"native_math_scratch_b3"},{"a":24319,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"vm_secondary_value_b3"},{"a":24321,"t":"code","b":[24],"m":"clc"},{"a":24322,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":24324,"t":"code","b":[105,253],"m":"adc","o":"#$FD"},{"a":24326,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":24328,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":24330,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":24332,"t":"code","b":[145,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":24334,"t":"code","b":[165,16],"m":"lda","oa":16,"o":"vm_secondary_value_b2"},{"a":24336,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":24338,"t":"code","b":[200],"m":"iny"},{"a":24339,"t":"code","b":[145,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":24341,"t":"code","b":[165,17],"m":"lda","oa":17,"o":"vm_secondary_value_b3"},{"a":24343,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":24345,"t":"code","b":[200],"m":"iny"},{"a":24346,"t":"code","b":[145,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo),y"},{"a":24348,"t":"code","b":[134,10],"m":"stx","oa":10,"o":"vm_primary_value_b0"},{"a":24350,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":24352,"t":"code","b":[96],"m":"rts"},{"a":24353,"l":"enter_inline_native_5f27_adjust_0","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5F24 preserves 0 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $5F27; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5F24 must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5F27, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":24356,"l":"runtime_descriptor_5f21_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment +0. Body starts immediately afterward at $5F27; there is no target-pointer field.","t":"byte","b":[0]},{"a":24357,"l":"native_frame_adjust_5f21","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $5F21. Header byte $5F24 requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $5F27. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":24359,"l":"invalidate_expected_map_record_id","c":"Set expected record id $7E93/$7E94 to $FFFF and return. Inputs: none. Outputs: expected id invalid. Assumptions: Entered through the $5F27 shim with the $7059 frame live. It assumes $7E93/$7E94 is the expected-record-id word and that the caller wants the next $5DAF transfer to accept any id, so it must be called between records rather than during one. Clobbers A and flags.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5F27-$5F2F. Hardware: Touches no hardware at all: two stores to RAM at $7E93/$7E94 and an RTS. Clobbers: A and the processor flags; writes expected_map_record_id.","t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":24361,"t":"code","b":[141,147,126],"m":"sta","oa":32403,"o":"expected_map_record_identifier"},{"a":24364,"t":"code","b":[141,148,126],"m":"sta","oa":32404,"o":"a_7E94"},{"a":24367,"t":"code","b":[96],"m":"rts"},{"a":24368,"l":"enter_inline_native_5f36_adjust_0","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $5F33 preserves 0 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $5F36; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $5F33 must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $5F36, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":24371,"l":"AlterEgo_Runtime_runtime_descriptor_5f30_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment +0. Body starts immediately afterward at $5F36; there is no target-pointer field.","t":"byte","b":[0]},{"a":24372,"l":"native_frame_adjust_5f30","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $5F30. Header byte $5F33 requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $5F36. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":24374,"l":"wait_for_raster_zero_and_disable_sprite0","c":"Wait until VIC-II raster register $D012 reads zero, then clear sprite-enable bit 0 in $D015 while preserving sprites 1-7. Inputs: I/O visible. Assumptions: Entered through the $5F30 shim with the $7059 frame live. I/O must be banked in ($01 bit 2 set) or $D012 reads RAM and the loop never exits. The spin also assumes no other code re-enables sprite 0 before the caller's critical section, and it blocks for up to a full frame. Clobbers A and flags.\nEntry: $7059 frame active, A=0, X=0, Y=1. Return: RTS to $70D1. Physical extent $5F36-$5F43. Hardware: Polls VIC-II raster register $D012 until it reads zero, then reads sprite-enable $D015, clears bit 0 and writes it back, leaving sprites 1-7 untouched. Outputs: writes SPRITE_ENABLE. Clobbers: A and the processor flags; writes the locations named under Outputs.","t":"code","b":[173,18,208],"m":"lda","x":[24377],"o":"vic_raster"},{"a":24377,"t":"code","b":[208,251],"m":"bne","oa":24374,"o":"wait_for_raster_zero_and_disable_sprite0"},{"a":24379,"t":"code","b":[173,21,208],"m":"lda","o":"vic_sprite_enable"},{"a":24382,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":24384,"t":"code","b":[141,21,208],"m":"sta","o":"vic_sprite_enable"},{"a":24387,"t":"code","b":[96],"m":"rts"},{"a":24388,"l":"load_entire_named_file","c":"Open, size, allocate, read and close an entire named file.\nInputs: +8 filename/spec pointer.\nOutputs: allocated buffer pointer or failure.\nAssumptions: IEC/file services and heap are initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $8043, file-slot table, heap and destination buffer.\nHardware: KERNAL/IEC through file helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -40; bytecode $5F49-$5FE4 (88 decoded operations); native calls $607C, $6691, $66DB, $68F8, $6936, $6E70. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":24391,"l":"vm_frame_adjust_5f44","c":"Signed frame adjustment -40 for load_entire_named_file at $5F44, consumed by the $70F8 VM gateway before bytecode begins at $5F49. Open, size, allocate, read and close an entire named file.","t":"word","b":[216,255],"d":[65496]},{"a":24393,"l":"vm_bytecode_5f44","c":"Compiled bytecode belonging to load_entire_named_file ($5F44). Open, size, allocate, read and close an entire named file. This position is the opcode of push_local_+8 at $5F49. The procedure decodes to 88 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include read_exact_file_bytes, close_file_slot, open_file_slot, append_zero_terminated_string, copy_zero_terminated_string, vm_heap_allocate.","t":"byte","b":[60,222,216,255,179,172,54,105]},{"a":24401,"t":"byte","b":[174,4,142,229,95,222,216,255]},{"a":24409,"t":"byte","b":[179,172,248,104,174,4,96,222]},{"a":24417,"t":"byte","b":[216,255,179,172,219,102,174,4]},{"a":24425,"t":"byte","b":[43,80,194,216,114,95,137,255]},{"a":24433,"t":"byte","b":[207,98,222,250,255,179,59,172]},{"a":24441,"t":"byte","b":[124,96,174,6,80,195,215,209]},{"a":24449,"t":"byte","b":[95,98,222,248,255,179,59,172]},{"a":24457,"t":"byte","b":[124,96,174,6,80,195,215,209]},{"a":24465,"t":"byte","b":[95,96,172,112,110,174,2,42]},{"a":24473,"t":"byte","b":[9,24,187,179,10,180,198,216]},{"a":24481,"t":"byte","b":[185,95,9,24,187,26,188,179]},{"a":24489,"t":"byte","b":[172,112,110,174,2,215,185,95]},{"a":24497,"t":"byte","b":[137,250,168,67,128,214,209,95]},{"a":24505,"t":"byte","b":[56,57,59,172,124,96,174,6]},{"a":24513,"t":"byte","b":[24,198,216,218,95,164,67,128]},{"a":24521,"t":"byte","b":[215,209,95,137,251,168,67,128]},{"a":24529,"t":"byte","b":[59,172,145,102,174,2,137,255]},{"a":24537,"t":"byte","b":[207,59,172,145,102,174,2,9]},{"a":24545,"t":"byte","b":[39,7,221,207]},{"a":24549,"l":"overlay_filename_suffix","c":"Zero-terminated disk filename suffix '.ovr' used by the active overlay-loading VM logic. This is active-game data; it does not make the overwritten cracktro or loader occupants part of disassembly scope.","t":"byte","b":[46,111,118,114,0]},{"a":24554,"l":"open_replacement_file_for_write","c":"Scratch an existing file when appropriate, then open its replacement for writing.\nInputs: +8 filename.\nOutputs: file-slot index or -1.\nAssumptions: writable Commodore DOS device.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $8043 and file-slot table.\nHardware: KERNAL/IEC through helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $5FEF-$600E (17 decoded operations); native calls $600F, $66DB. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":24557,"l":"vm_frame_adjust_5fea","c":"Signed frame adjustment -2 for open_replacement_file_for_write at $5FEA, consumed by the $70F8 VM gateway before bytecode begins at $5FEF. Scratch an existing file when appropriate, then open its replacement for writing.","t":"word","b":[254,255],"d":[65534]},{"a":24559,"l":"vm_bytecode_5fea","c":"Compiled bytecode belonging to open_replacement_file_for_write ($5FEA). Scratch an existing file when appropriate, then open its replacement for writing. This position is the opcode of push_local_+8 at $5FEF. The procedure decodes to 17 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include scratch_existing_disk_file, open_file_slot.","t":"byte","b":[60,172,15,96,174,2,80,194]},{"a":24567,"t":"byte","b":[216,7,96,164,67,128,140,74]},{"a":24575,"t":"byte","b":[3,193,216,7,96,137,255,207]},{"a":24583,"t":"byte","b":[97,60,172,219,102,174,4,207]},{"a":24591,"l":"scratch_existing_disk_file","c":"Issue Commodore DOS S:<name> and accept success or file-not-found status.\nInputs: +8 filename.\nOutputs: zero on accepted result, -1 on failure.\nAssumptions: writable DOS command channel.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; command buffer and packed status $8043.\nHardware: IEC/KERNAL channel state.\nEntry protocol: JSR $70F8; signed frame adjustment -47; bytecode $6014-$607B (50 decoded operations); native calls $64E9, $67E2, $6936, $6977, $6BBB. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":24594,"l":"vm_frame_adjust_600f","c":"Signed frame adjustment -47 for scratch_existing_disk_file at $600F, consumed by the $70F8 VM gateway before bytecode begins at $6014. Issue Commodore DOS S:<name> and accept success or file-not-found status.","t":"word","b":[209,255],"d":[65489]},{"a":24596,"l":"vm_bytecode_600f","c":"Compiled bytecode belonging to scratch_existing_disk_file ($600F). Issue Commodore DOS S:<name> and accept success or file-not-found status. This position is the opcode of load_primary_const_0 at $6014. The procedure decodes to 50 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include serial_send_buffer_with_cr, enter_inline_native_67e8_adjust_minus2, copy_zero_terminated_string, parse_file_spec_and_allocate_slot, measure_zero_terminated_string.","t":"byte","b":[64,168,67,128,222,209,255,179]},{"a":24604,"t":"byte","b":[60,172,119,105,174,4,80,194]},{"a":24612,"t":"byte","b":[216,42,96,137,255,207,160,212]},{"a":24620,"t":"byte","b":[255,215,50,96,64,207,137,83]},{"a":24628,"t":"byte","b":[162,216,255,142,26,128,222,217]},{"a":24636,"t":"byte","b":[255,179,172,54,105,174,4,222]},{"a":24644,"t":"byte","b":[216,255,179,172,187,107,174,2]},{"a":24652,"t":"byte","b":[179,222,216,255,179,163,211,255]},{"a":24660,"t":"byte","b":[172,233,100,174,6,163,211,255]},{"a":24668,"t":"byte","b":[172,226,103,174,2,168,67,128]},{"a":24676,"t":"byte","b":[164,67,128,81,193,216,122,96]},{"a":24684,"t":"byte","b":[138,0,3,205,164,67,128,219]},{"a":24692,"t":"byte","b":[168,67,128,137,255,207,64,207]},{"a":24700,"l":"read_exact_file_bytes","c":"Read an exact byte count from an open file slot.\nInputs: +8 destination; +10 requested count; +12 slot index.\nOutputs: actual count/success or failure.\nAssumptions: slot is open for reading.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $8019/$8043, callback/file buffers and destination.\nHardware: KERNAL CHKIN/GETIN/CLRCHN or registered callback.\nEntry protocol: JSR $70F8; signed frame adjustment -5; bytecode $6081-$6208 (232 decoded operations); native calls $6489, $67E2, $687D, $6DE6, $6DE9, $6DFA. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":24703,"l":"vm_frame_adjust_607c","c":"Signed frame adjustment -5 for read_exact_file_bytes at $607C, consumed by the $70F8 VM gateway before bytecode begins at $6081. Read an exact byte count from an open file slot.","t":"word","b":[251,255],"d":[65531]},{"a":24705,"l":"vm_bytecode_607c","c":"Compiled bytecode belonging to read_exact_file_bytes ($607C). Read an exact byte count from an open file slot. This position is the opcode of load_primary_const_0 at $6081. The procedure decodes to 232 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include send_file_control_record, enter_inline_native_67e8_adjust_minus2, dispatch_record_callback, kernal_clrchn_wrapper, kernal_chkin_wrapper, kernal_getin_wrapper.","t":"byte","b":[64,162,251,255,64,168,67,128]},{"a":24713,"t":"byte","b":[12,87,181,140,211,127,187,42]},{"a":24721,"t":"byte","b":[12,80,194,215,166,96,12,90]},{"a":24729,"t":"byte","b":[196,215,166,96,10,211,140,255]},{"a":24737,"t":"byte","b":[0,192,216,173,96,77,168,67]},{"a":24745,"t":"byte","b":[128,137,255,207,10,211,81,192]},{"a":24753,"t":"byte","b":[216,187,96,78,168,67,128,137]},{"a":24761,"t":"byte","b":[255,207,10,115,211,215,206,96]},{"a":24769,"t":"byte","b":[62,61,98,10,114,211,179,172]},{"a":24777,"t":"byte","b":[125,104,174,8,207,172,230,109]},{"a":24785,"t":"byte","b":[12,208,179,172,233,109,174,2]},{"a":24793,"t":"byte","b":[168,67,128,216,237,96,138,0]},{"a":24801,"t":"byte","b":[1,205,164,67,128,219,168,67]},{"a":24809,"t":"byte","b":[128,137,255,207,165,25,128,168]},{"a":24817,"t":"byte","b":[67,128,216,4,97,138,0,2]},{"a":24825,"t":"byte","b":[205,164,67,128,219,168,67,128]},{"a":24833,"t":"byte","b":[137,255,207,10,115,211,139,76]},{"a":24841,"t":"byte","b":[192,216,17,97,65,162,251,255]},{"a":24849,"t":"byte","b":[14,43,11,209,43,208,216,234]},{"a":24857,"t":"byte","b":[97,160,251,255,216,104,97,58]},{"a":24865,"t":"byte","b":[172,137,100,174,2,80,194,216]},{"a":24873,"t":"byte","b":[69,97,10,118,211,82,192,216]},{"a":24881,"t":"byte","b":[66,97,164,67,128,140,50,3]},{"a":24889,"t":"byte","b":[192,216,66,97,14,27,188,209]},{"a":24897,"t":"byte","b":[207,137,255,207,172,230,109,12]},{"a":24905,"t":"byte","b":[208,179,172,233,109,174,2,168]},{"a":24913,"t":"byte","b":[67,128,216,100,97,138,0,1]},{"a":24921,"t":"byte","b":[205,164,67,128,219,168,67,128]},{"a":24929,"t":"byte","b":[137,255,207,64,162,251,255,13]},{"a":24937,"t":"byte","b":[208,45,209,179,172,250,109,180]},{"a":24945,"t":"byte","b":[212,10,115,211,139,76,192,216]},{"a":24953,"t":"byte","b":[184,97,10,118,179,211,208,180]},{"a":24961,"t":"byte","b":[212,140,253,0,196,216,184,97]},{"a":24969,"t":"byte","b":[10,118,179,66,180,212,10,116]},{"a":24977,"t":"byte","b":[179,211,208,180,212,10,116,211]},{"a":24985,"t":"byte","b":[215,163,97,10,117,179,211,208]},{"a":24993,"t":"byte","b":[180,212,165,25,128,139,64,218]},{"a":25001,"t":"byte","b":[216,176,97,64,169,25,128,160]},{"a":25009,"t":"byte","b":[251,255,208,162,251,255,209,165]},{"a":25017,"t":"byte","b":[25,128,139,64,192,216,197,97]},{"a":25025,"t":"byte","b":[14,27,188,207,165,25,128,139]},{"a":25033,"t":"byte","b":[64,218,216,208,97,64,207,165]},{"a":25041,"t":"byte","b":[25,128,168,67,128,216,231,97]},{"a":25049,"t":"byte","b":[138,0,2,205,164,67,128,219]},{"a":25057,"t":"byte","b":[168,67,128,137,255,207,214,19]},{"a":25065,"t":"byte","b":[97,10,114,211,179,172,226,103]},{"a":25073,"t":"byte","b":[174,2,168,67,128,216,7,98]},{"a":25081,"t":"byte","b":[138,0,3,205,164,67,128,219]},{"a":25089,"t":"byte","b":[168,67,128,137,255,207,14,207]},{"a":25097,"l":"write_exact_file_bytes","c":"Write an exact byte count through an open file slot.\nInputs: +8 source; +10 requested count; +12 slot index.\nOutputs: actual count/success or failure.\nAssumptions: slot is open for writing.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $8019/$8043 and callback/file buffers.\nHardware: KERNAL CHKOUT/CHROUT/CHKIN/GETIN/CLRCHN or callback.\nEntry protocol: JSR $70F8; signed frame adjustment -265; bytecode $620E-$6488 (380 decoded operations); native calls $6489, $67E2, $687D, $6DE6, $6DE9, $6DFA, $6E00, $6E0B. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":25100,"l":"vm_frame_adjust_6209","c":"Signed frame adjustment -265 for write_exact_file_bytes at $6209, consumed by the $70F8 VM gateway before bytecode begins at $620E. Write an exact byte count through an open file slot.","t":"word","b":[247,254],"d":[65271]},{"a":25102,"l":"vm_bytecode_6209","c":"Compiled bytecode belonging to write_exact_file_bytes ($6209). Write an exact byte count through an open file slot. This position is the opcode of load_primary_const_0 at $620E. The procedure decodes to 380 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include send_file_control_record, enter_inline_native_67e8_adjust_minus2, dispatch_record_callback, kernal_clrchn_wrapper, kernal_chkin_wrapper, kernal_getin_wrapper.","t":"byte","b":[64,41,64,162,249,255,12,87]},{"a":25110,"t":"byte","b":[181,140,211,127,187,133,245,12]},{"a":25118,"t":"byte","b":[80,194,215,51,98,12,90,197]},{"a":25126,"t":"byte","b":[215,51,98,129,245,211,140,255]},{"a":25134,"t":"byte","b":[0,192,216,58,98,77,168,67]},{"a":25142,"t":"byte","b":[128,137,255,207,129,245,211,215]},{"a":25150,"t":"byte","b":[71,98,78,168,67,128,137,255]},{"a":25158,"t":"byte","b":[207,14,215,77,98,64,207,129]},{"a":25166,"t":"byte","b":[245,115,211,215,98,98,62,61]},{"a":25174,"t":"byte","b":[97,129,245,114,211,179,172,125]},{"a":25182,"t":"byte","b":[104,174,8,207,172,230,109,12]},{"a":25190,"t":"byte","b":[208,179,172,0,110,174,2,168]},{"a":25198,"t":"byte","b":[67,128,215,62,100,165,25,128]},{"a":25206,"t":"byte","b":[168,67,128,215,85,100,14,43]},{"a":25214,"t":"byte","b":[129,245,115,211,139,76,192,216]},{"a":25222,"t":"byte","b":[38,100,11,216,35,100,129,245]},{"a":25230,"t":"byte","b":[118,211,82,192,216,30,99,11]},{"a":25238,"t":"byte","b":[140,252,0,197,216,30,99,129]},{"a":25246,"t":"byte","b":[245,118,179,65,180,212,135,245]},{"a":25254,"t":"byte","b":[172,137,100,174,2,172,230,109]},{"a":25262,"t":"byte","b":[12,208,179,172,0,110,174,2]},{"a":25270,"t":"byte","b":[168,67,128,215,62,100,141,58]},{"a":25278,"t":"byte","b":[172,11,110,174,2,168,67,128]},{"a":25286,"t":"byte","b":[215,62,100,129,245,118,179,211]},{"a":25294,"t":"byte","b":[208,180,212,140,253,0,195,216]},{"a":25302,"t":"byte","b":[240,98,13,208,45,209,211,179]},{"a":25310,"t":"byte","b":[172,11,110,174,2,168,67,128]},{"a":25318,"t":"byte","b":[215,62,100,11,209,43,208,214]},{"a":25326,"t":"byte","b":[201,98,141,58,172,11,110,174]},{"a":25334,"t":"byte","b":[2,168,67,128,215,62,100,129]},{"a":25342,"t":"byte","b":[245,116,179,211,208,180,212,129]},{"a":25350,"t":"byte","b":[245,116,211,215,20,99,129,245]},{"a":25358,"t":"byte","b":[117,179,211,208,180,212,129,245]},{"a":25366,"t":"byte","b":[118,179,66,180,212,214,32,100]},{"a":25374,"t":"byte","b":[129,245,118,211,42,129,245,118]},{"a":25382,"t":"byte","b":[179,66,180,212,135,245,172,137]},{"a":25390,"t":"byte","b":[100,174,2,172,230,109,12,208]},{"a":25398,"t":"byte","b":[179,172,233,109,174,2,222,247]},{"a":25406,"t":"byte","b":[254,133,247,129,247,208,133,247]},{"a":25414,"t":"byte","b":[209,179,137,58,180,212,129,247]},{"a":25422,"t":"byte","b":[223,244,255,198,216,100,99,129]},{"a":25430,"t":"byte","b":[247,208,133,247,209,179,172,250]},{"a":25438,"t":"byte","b":[109,180,212,214,76,99,135,247]},{"a":25446,"t":"byte","b":[137,58,180,212,129,245,118,179]},{"a":25454,"t":"byte","b":[10,180,212,129,245,118,211,223]},{"a":25462,"t":"byte","b":[246,254,187,133,247,129,247,223]},{"a":25470,"t":"byte","b":[244,255,198,216,164,99,11,209]},{"a":25478,"t":"byte","b":[43,208,216,164,99,129,247,208]},{"a":25486,"t":"byte","b":[133,247,209,179,13,208,45,209]},{"a":25494,"t":"byte","b":[211,180,212,129,245,118,179,211]},{"a":25502,"t":"byte","b":[208,180,212,214,123,99,11,80]},{"a":25510,"t":"byte","b":[194,216,174,99,11,208,43,209]},{"a":25518,"t":"byte","b":[129,245,118,211,42,129,245,118]},{"a":25526,"t":"byte","b":[179,65,180,212,135,245,172,137]},{"a":25534,"t":"byte","b":[100,174,2,172,230,109,12,208]},{"a":25542,"t":"byte","b":[179,172,0,110,174,2,222,247]},{"a":25550,"t":"byte","b":[254,133,247,129,247,223,245,255]},{"a":25558,"t":"byte","b":[198,216,240,99,129,247,208,133]},{"a":25566,"t":"byte","b":[247,209,211,179,172,11,110,174]},{"a":25574,"t":"byte","b":[2,168,67,128,215,62,100,214]},{"a":25582,"t":"byte","b":[209,99,129,245,118,179,10,180]},{"a":25590,"t":"byte","b":[212,129,245,118,211,140,253,0]},{"a":25598,"t":"byte","b":[196,216,32,100,129,245,116,179]},{"a":25606,"t":"byte","b":[211,208,180,212,129,245,116,211]},{"a":25614,"t":"byte","b":[215,25,100,129,245,117,179,211]},{"a":25622,"t":"byte","b":[208,180,212,129,245,118,179,66]},{"a":25630,"t":"byte","b":[180,212,214,136,98,214,102,100]},{"a":25638,"t":"byte","b":[11,209,43,208,216,102,100,13]},{"a":25646,"t":"byte","b":[208,45,209,211,179,172,11,110]},{"a":25654,"t":"byte","b":[174,2,168,67,128,216,76,100]},{"a":25662,"t":"byte","b":[138,0,1,205,164,67,128,219]},{"a":25670,"t":"byte","b":[168,67,128,137,255,207,165,25]},{"a":25678,"t":"byte","b":[128,168,67,128,216,99,100,138]},{"a":25686,"t":"byte","b":[0,2,205,164,67,128,219,168]},{"a":25694,"t":"byte","b":[67,128,137,255,207,214,38,100]},{"a":25702,"t":"byte","b":[172,230,109,129,245,114,211,179]},{"a":25710,"t":"byte","b":[172,226,103,174,2,168,67,128]},{"a":25718,"t":"byte","b":[216,135,100,138,0,3,205,164]},{"a":25726,"t":"byte","b":[67,128,219,168,67,128,137,255]},{"a":25734,"t":"byte","b":[207,14,207]},{"a":25737,"l":"send_file_control_record","c":"Send the five-byte control command derived from a seven-byte open-file record.\nInputs: +8 pointer to open-file record.\nOutputs: zero or -1 with packed status.\nAssumptions: record fields +1,+2,+4..+6 are initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $8043 and serial command buffer.\nHardware: IEC/KERNAL channel state.\nEntry protocol: JSR $70F8; signed frame adjustment -5; bytecode $648E-$64E8 (54 decoded operations); native calls $64E9, $67E2, $6DE6. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":25740,"l":"vm_frame_adjust_6489","c":"Signed frame adjustment -5 for send_file_control_record at $6489, consumed by the $70F8 VM gateway before bytecode begins at $648E. Send the five-byte control command derived from a seven-byte open-file record.","t":"word","b":[251,255],"d":[65531]},{"a":25742,"l":"vm_bytecode_6489","c":"Compiled bytecode belonging to send_file_control_record ($6489). Send the five-byte control command derived from a seven-byte open-file record. This position is the opcode of load_primary_immediate_signed_byte at $648E. The procedure decodes to 54 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include serial_send_buffer_with_cr, enter_inline_native_67e8_adjust_minus2, kernal_clrchn_wrapper.","t":"byte","b":[137,80,162,251,255,12,208,211]},{"a":25750,"t":"byte","b":[162,252,255,12,116,211,162,253]},{"a":25758,"t":"byte","b":[255,12,117,211,162,254,255,12]},{"a":25766,"t":"byte","b":[118,211,162,255,255,101,222,251]},{"a":25774,"t":"byte","b":[255,179,12,114,211,179,172,233]},{"a":25782,"t":"byte","b":[100,174,6,101,222,251,255,179]},{"a":25790,"t":"byte","b":[12,114,211,179,172,233,100,174]},{"a":25798,"t":"byte","b":[6,12,114,211,179,172,226,103]},{"a":25806,"t":"byte","b":[174,2,168,67,128,216,228,100]},{"a":25814,"t":"byte","b":[138,0,3,205,164,67,128,219]},{"a":25822,"t":"byte","b":[168,67,128,137,255,207,172,230]},{"a":25830,"t":"byte","b":[109,64,207]},{"a":25833,"l":"serial_send_buffer_with_cr","c":"Send a counted buffer and trailing carriage return over the KERNAL serial bus. Inputs: argument byte 0=device number, bytes 2-3=buffer pointer, byte 4=count. Outputs: serial device receives count bytes plus $0D. Assumptions: $04/$05 must point at a five-byte argument record (device, buffer pointer, count) prepared by the VM gateway, and KERNAL ROM must be banked in for the four IEC calls. The count must be non-zero, because the DEC/BNE loop would otherwise send 256 bytes. The device and secondary address are written straight into KERNAL workspace $BA/$B9, so no SETLFS is needed but any channel already selected is displaced. Clobbers: A,Y and zero-page $0A/$0E/$0F plus KERNAL serial workspace. KERNAL calls: UNLSN $FFAE, LISTEN $FFB1, SECOND $FF93, CIOUT $FFA8. Hardware: Calls KERNAL UNLSN $FFAE, LISTEN $FFB1, SECOND $FF93 and CIOUT $FFA8, writing KERNAL IEC workspace $BA (device) and $B9 (secondary address $6F, the command channel). All CIA 2 $DD00 serial-line work happens inside those KERNAL routines.","t":"code","b":[32,174,255],"m":"jsr","oa":65454,"o":"KERNAL_UNLSN"},{"a":25836,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":25838,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25840,"t":"code","b":[133,186],"m":"sta","oa":186,"o":"kernal_current_device_number"},{"a":25842,"t":"code","b":[32,177,255],"m":"jsr","oa":65457,"o":"KERNAL_LISTEN"},{"a":25845,"t":"code","b":[169,111],"m":"lda","o":"#$6F"},{"a":25847,"t":"code","b":[133,185],"m":"sta","oa":185,"o":"kernal_current_secondary_address"},{"a":25849,"t":"code","b":[32,147,255],"m":"jsr","oa":65427,"o":"KERNAL_SECOND"},{"a":25852,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":25854,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25856,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":25858,"t":"code","b":[200],"m":"iny"},{"a":25859,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25861,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":25863,"t":"code","b":[200],"m":"iny"},{"a":25864,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25866,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":25868,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":25870,"l":"LAB_650e","t":"code","b":[177,14],"m":"lda","oa":14,"x":[25878],"o":"(vm_secondary_value_b0),y"},{"a":25872,"t":"code","b":[32,168,255],"m":"jsr","oa":65448,"o":"KERNAL_CIOUT"},{"a":25875,"t":"code","b":[200],"m":"iny"},{"a":25876,"t":"code","b":[198,10],"m":"dec","oa":10,"o":"vm_primary_value_b0"},{"a":25878,"t":"code","b":[208,246],"m":"bne","oa":25870,"o":"LAB_650e"},{"a":25880,"t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":25882,"t":"code","b":[32,168,255],"m":"jsr","oa":65448,"o":"KERNAL_CIOUT"},{"a":25885,"t":"code","b":[32,174,255],"m":"jsr","oa":65454,"o":"KERNAL_UNLSN"},{"a":25888,"t":"code","b":[96],"m":"rts"},{"a":25889,"l":"fill_memory_range","c":"Fill a half-open memory interval with one byte. Inputs: argument bytes 0-1=start pointer, 2-3=length, 4=fill value. Outputs: [start,start+length) overwritten. Assumptions: $04/$05 must point at a five-byte record (start pointer, 16-bit length, fill byte); the start pointer is copied to $0A/$0B and used as the write cursor, so $02, $0A/$0B and $0E/$0F must be free. The bound test happens after the first store, so a length of zero still writes one byte at the start address. Clobbers: A,Y and $02/$0A/$0B/$0E/$0F. A zero length performs no writes after the computed bound comparison. Hardware: Touches no hardware itself: it writes RAM through zero-page pointer $0A/$0B. If a caller aims it into $D000-$DFFF the writes land wherever the current $01 mapping points, but the routine makes no banking change.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":25891,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25893,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":25895,"t":"code","b":[200],"m":"iny"},{"a":25896,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25898,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":25900,"t":"code","b":[200],"m":"iny"},{"a":25901,"t":"code","b":[24],"m":"clc"},{"a":25902,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25904,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":25906,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":25908,"t":"code","b":[200],"m":"iny"},{"a":25909,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25911,"t":"code","b":[101,11],"m":"adc","oa":11,"o":"vm_primary_value_b1"},{"a":25913,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":25915,"t":"code","b":[200],"m":"iny"},{"a":25916,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":25918,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":25920,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":25922,"l":"LAB_6542","t":"code","b":[165,2],"m":"lda","oa":2,"x":[25940],"o":"shared_scratch_02_lo"},{"a":25924,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":25926,"t":"code","b":[230,10],"m":"inc","oa":10,"o":"vm_primary_value_b0"},{"a":25928,"t":"code","b":[208,2],"m":"bne","oa":25932,"o":"LAB_654c"},{"a":25930,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":25932,"l":"LAB_654c","t":"code","b":[165,10],"m":"lda","oa":10,"x":[25928],"o":"vm_primary_value_b0"},{"a":25934,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":25936,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":25938,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":25940,"t":"code","b":[144,236],"m":"bcc","oa":25922,"o":"LAB_6542"},{"a":25942,"t":"code","b":[96],"m":"rts"},{"a":25943,"l":"native_startup_enter_vm","c":"Initialize the resident compiler runtime and transfer to Alter Ego VM main. CLD restores binary arithmetic; clearing LORAM in the 6510 CPU port maps RAM at $A000-$BFFF while KERNAL ROM and I/O remain visible. The VM expression-stack pointer $04/$05 is initialized to $CFFF. Bytes $7FCB-$7FCE receive the initial runtime values $65,$84,$00,$00; the snapshot shows $7FCC later self-modified to $C4. Control then jumps to vm_proc_65a7 and does not return here. Inputs: depacked resident image. Outputs: VM active. Assumptions: Entered once by JMP from $4000 after the depacker has placed the resident image. Nothing may be live in $A000-$BFFF, because clearing LORAM replaces BASIC ROM with RAM there, and HIRAM and CHAREN must already be set so KERNAL and I/O stay visible. $CFFF downwards must be free for the VM expression stack, and control never returns. Clobbers: A and flags; changes CPU banking and VM runtime state. Hardware: Reads the 6510 processor port $01 and clears bit 0 (LORAM), mapping RAM under BASIC at $A000-$BFFF while KERNAL ROM and the I/O block remain visible -- the standard $37 to $36 transition. CLD clears decimal mode; no VIC, SID or CIA register is touched.","t":"code","b":[216],"m":"cld","x":[16384]},{"a":25944,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":25946,"t":"code","b":[41,254],"m":"and","o":"#$FE"},{"a":25948,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":25950,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":25952,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":25954,"t":"code","b":[169,207],"m":"lda","o":"#$CF"},{"a":25956,"t":"code","b":[133,5],"m":"sta","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":25958,"t":"code","b":[169,101],"m":"lda","o":"#$65"},{"a":25960,"t":"code","b":[141,203,127],"m":"sta","oa":32715,"o":"vm_heap_next_free_pointer"},{"a":25963,"t":"code","b":[169,132],"m":"lda","o":"#$84"},{"a":25965,"t":"code","b":[141,204,127],"m":"sta","oa":32716,"o":"vm_heap_next_free_high"},{"a":25968,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":25970,"t":"code","b":[141,205,127],"m":"sta","oa":32717,"o":"startup_cleared_7fcd_open"},{"a":25973,"t":"code","b":[141,206,127],"m":"sta","oa":32718,"o":"a_7FCE"},{"a":25976,"t":"code","b":[76,167,101],"m":"jmp","oa":26023,"o":"vm_proc_65a7"},{"a":25979,"l":"find_byte_in_zero_terminated_buffer","c":"Find the first matching byte in a NUL-terminated buffer. Inputs: argument bytes 0-1=buffer pointer and byte 2=search value. Outputs: $0A/$0B=pointer to the matching byte, or zero when the terminator is reached first. Assumptions: $04/$05 must point at a three-byte record (buffer pointer, search value); four bytes of that record are copied into $0A-$0D, so $0A/$0B become the live scan pointer and must be free. The buffer must contain a NUL, since the scan is otherwise unbounded and carries into the pointer high byte across pages. Clobbers: A,Y and flags; scans across page boundaries. Hardware: Touches no hardware: a pure RAM scan through zero-page pointer $0A/$0B, calling nothing.","t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":25981,"l":"LAB_657d","t":"code","b":[177,4],"m":"lda","oa":4,"x":[25987],"o":"(vm_expression_stack_ptr_lo),y"},{"a":25983,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":25986,"t":"code","b":[136],"m":"dey"},{"a":25987,"t":"code","b":[16,248],"m":"bpl","oa":25981,"o":"LAB_657d"},{"a":25989,"t":"code","b":[200],"m":"iny"},{"a":25990,"l":"LAB_6586","t":"code","b":[177,10],"m":"lda","oa":10,"x":[25999,26003],"o":"(vm_primary_value_b0),y"},{"a":25992,"t":"code","b":[240,11],"m":"beq","oa":26005,"o":"LAB_6595"},{"a":25994,"t":"code","b":[197,12],"m":"cmp","oa":12,"o":"vm_primary_value_b2"},{"a":25996,"t":"code","b":[240,14],"m":"beq","oa":26012,"o":"LAB_659c"},{"a":25998,"t":"code","b":[200],"m":"iny"},{"a":25999,"t":"code","b":[208,245],"m":"bne","oa":25990,"o":"LAB_6586"},{"a":26001,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":26003,"t":"code","b":[208,241],"m":"bne","oa":25990,"o":"LAB_6586"},{"a":26005,"l":"LAB_6595","t":"code","b":[169,0],"m":"lda","x":[25992],"o":"#$00"},{"a":26007,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26009,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":26011,"t":"code","b":[96],"m":"rts"},{"a":26012,"l":"LAB_659c","t":"code","b":[24],"m":"clc","x":[25996]},{"a":26013,"t":"code","b":[152],"m":"tya"},{"a":26014,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":26016,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26018,"t":"code","b":[144,2],"m":"bcc","oa":26022,"o":"LAB_65a6"},{"a":26020,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":26022,"l":"LAB_65a6","t":"code","b":[96],"m":"rts","x":[26018]},{"a":26023,"l":"vm_proc_65a7","c":"Callable Alter Ego VM procedure. Purpose: Top-level resident VM main entered by the native startup at $6557.\nInputs: arguments reside on the VM expression stack at $04/$05 according to this procedure call site; $06/$07 points at the current eight-byte frame. Outputs: VM primary value in $0A/$0B unless the procedure exits through a one-way native transfer. Assumptions: Entered by JMP from native startup $6557, so the VM expression stack pointer $04/$05 must already be $CFFF and the frame-adjustment word at $65AA must immediately follow the JSR $70F8 stub. This is the top-level procedure and never returns to a native caller; the native absolute calls it makes ($4003, $66DB, $6E15, $6E33) require KERNAL ROM to be banked in. Clobbers/state: bytecode may update VM stack, frame locals, globals and any listed native helper state.\nEntry protocol: JSR $70F8; signed frame adjustment -2 at $65AA; bytecode $65AC-$65F8 (77 bytes, 42 decoded operations). Native absolute calls: $4003, $66DB, $6E15, $6E33. VM opcode $CF restores the saved frame and returns to the native caller. Hardware: The stub itself only performs JSR $70F8. The bytecode that follows reaches native code that programs the VIC-II and SID through initialize_display_and_sprite_irq ($43B3) and calls KERNAL CLALL $FFE7 via $6E15.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"x":[25976],"o":"vm_procedure_call_gateway"},{"a":26026,"l":"vm_frame_adjust_65a7","c":"Signed frame adjustment -2 for vm_proc_65a7 at $65A7, consumed by the $70F8 VM gateway before bytecode begins at $65AC. Callable Alter Ego VM procedure. Purpose: Top-level resident VM main entered by the native startup at $6557.","t":"word","b":[254,255],"d":[65534]},{"a":26028,"l":"vm_bytecode_65a7","c":"Compiled bytecode belonging to vm_proc_65a7 ($65A7). Callable Alter Ego VM procedure. Purpose: Top-level resident VM main entered by the native startup at $6557. This position is the opcode of load_primary_const_0 at $65AC. The procedure decodes to 42 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include initialize_alter_ego_runtime, open_file_slot, kernal_clall_wrapper, terminate_to_basic_with_status.","t":"byte","b":[64,43,172,21,110,138,5,102]},{"a":26036,"t":"byte","b":[168,207,127,11,90,198,216,208]},{"a":26044,"t":"byte","b":[101,11,208,43,209,87,181,140]},{"a":26052,"t":"byte","b":[211,127,187,179,138,255,0,180]},{"a":26060,"t":"byte","b":[212,214,183,101,98,142,249,101]},{"a":26068,"t":"byte","b":[172,219,102,174,4,98,142,253]},{"a":26076,"t":"byte","b":[101,172,219,102,174,4,98,142]},{"a":26084,"t":"byte","b":[1,102,172,219,102,174,4,96]},{"a":26092,"t":"byte","b":[96,172,3,64,174,4,179,172]},{"a":26100,"t":"byte","b":[51,110,174,2,207]},{"a":26105,"l":"keyboard_field_prefix_copies","c":"Three zero-terminated copies of the compact UI field prefix 'kb:'.","t":"byte","b":[107,98,58,0,107,98,58,0]},{"a":26113,"t":"byte","b":[107,98,58,0]},{"a":26117,"l":"close_all_open_file_slots","c":"Close every occupied entry in the ten-slot open-file table.\nInputs: none.\nOutputs: all occupied slots closed.\nAssumptions: $7FD3 contains ten seven-byte records and $FF marks a free record.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; file-slot table.\nHardware: KERNAL/IEC through $6691.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $660A-$662F (25 decoded operations); native calls $6691. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":26120,"l":"vm_frame_adjust_6605","c":"Signed frame adjustment -2 for close_all_open_file_slots at $6605, consumed by the $70F8 VM gateway before bytecode begins at $660A. Close every occupied entry in the ten-slot open-file table.","t":"word","b":[254,255],"d":[65534]},{"a":26122,"l":"vm_bytecode_6605","c":"Compiled bytecode belonging to close_all_open_file_slots ($6605). Close every occupied entry in the ten-slot open-file table. This position is the opcode of load_primary_const_0 at $660A. The procedure decodes to 25 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include close_file_slot.","t":"byte","b":[64,43,11,90,198,216,47,102]},{"a":26130,"t":"byte","b":[11,208,43,209,87,181,140,211]},{"a":26138,"t":"byte","b":[127,187,211,140,255,0,193,216]},{"a":26146,"t":"byte","b":[44,102,11,209,179,172,145,102]},{"a":26154,"t":"byte","b":[174,2,214,12,102,207]},{"a":26160,"l":"memmove_bytes","c":"Overlap-safe memmove. Inputs: argument bytes 0-1=destination, 2-3=source, 4-5=length. Outputs: length bytes copied. Assumptions: $04/$05 must point at a six-byte record (destination, source, length); all six bytes are copied into $0A-$0F, so that whole zero-page block must be free. The overlap direction is chosen by comparing destination against source, so callers must pass the true buffer starts rather than pre-adjusted pointers. Clobbers: A,X,Y and $0A-$0F. It compares source/destination and chooses descending or ascending copying so overlapping regions retain source order. Hardware: Touches no hardware: a RAM-to-RAM move through zero-page pointers $0A/$0B and $0C/$0D.","t":"code","b":[160,5],"m":"ldy","o":"#$05"},{"a":26162,"l":"LAB_6632","t":"code","b":[177,4],"m":"lda","oa":4,"x":[26168],"o":"(vm_expression_stack_ptr_lo),y"},{"a":26164,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":26167,"t":"code","b":[136],"m":"dey"},{"a":26168,"t":"code","b":[16,248],"m":"bpl","oa":26162,"o":"LAB_6632"},{"a":26170,"t":"code","b":[200],"m":"iny"},{"a":26171,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":26173,"t":"code","b":[197,12],"m":"cmp","oa":12,"o":"vm_primary_value_b2"},{"a":26175,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":26177,"t":"code","b":[229,13],"m":"sbc","oa":13,"o":"vm_primary_value_b3"},{"a":26179,"t":"code","b":[144,52],"m":"bcc","oa":26233,"o":"LAB_6679"},{"a":26181,"t":"code","b":[24],"m":"clc"},{"a":26182,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":26184,"t":"code","b":[101,14],"m":"adc","oa":14,"o":"vm_secondary_value_b0"},{"a":26186,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26188,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":26190,"t":"code","b":[101,15],"m":"adc","oa":15,"o":"vm_secondary_value_b1"},{"a":26192,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":26194,"t":"code","b":[24],"m":"clc"},{"a":26195,"t":"code","b":[165,12],"m":"lda","oa":12,"o":"vm_primary_value_b2"},{"a":26197,"t":"code","b":[101,14],"m":"adc","oa":14,"o":"vm_secondary_value_b0"},{"a":26199,"t":"code","b":[133,12],"m":"sta","oa":12,"o":"vm_primary_value_b2"},{"a":26201,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"vm_primary_value_b3"},{"a":26203,"t":"code","b":[101,15],"m":"adc","oa":15,"o":"vm_secondary_value_b1"},{"a":26205,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"vm_primary_value_b3"},{"a":26207,"t":"code","b":[166,14],"m":"ldx","oa":14,"o":"vm_secondary_value_b0"},{"a":26209,"l":"LAB_6661","t":"code","b":[138],"m":"txa","x":[26229]},{"a":26210,"t":"code","b":[208,4],"m":"bne","oa":26216,"o":"LAB_6668"},{"a":26212,"t":"code","b":[198,15],"m":"dec","oa":15,"o":"vm_secondary_value_b1"},{"a":26214,"t":"code","b":[48,16],"m":"bmi","oa":26232,"o":"LAB_6678"},{"a":26216,"l":"LAB_6668","t":"code","b":[152],"m":"tya","x":[26210]},{"a":26217,"t":"code","b":[208,4],"m":"bne","oa":26223,"o":"LAB_666f"},{"a":26219,"t":"code","b":[198,11],"m":"dec","oa":11,"o":"vm_primary_value_b1"},{"a":26221,"t":"code","b":[198,13],"m":"dec","oa":13,"o":"vm_primary_value_b3"},{"a":26223,"l":"LAB_666f","t":"code","b":[136],"m":"dey","x":[26217]},{"a":26224,"t":"code","b":[177,12],"m":"lda","oa":12,"o":"(vm_primary_value_b2),y"},{"a":26226,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":26228,"t":"code","b":[202],"m":"dex"},{"a":26229,"t":"code","b":[76,97,102],"m":"jmp","oa":26209,"o":"LAB_6661"},{"a":26232,"l":"LAB_6678","t":"code","b":[96],"m":"rts","x":[26214,26240]},{"a":26233,"l":"LAB_6679","t":"code","b":[166,14],"m":"ldx","oa":14,"x":[26179],"o":"vm_secondary_value_b0"},{"a":26235,"l":"LAB_667b","t":"code","b":[138],"m":"txa","x":[26254]},{"a":26236,"t":"code","b":[208,4],"m":"bne","oa":26242,"o":"LAB_6682"},{"a":26238,"t":"code","b":[198,15],"m":"dec","oa":15,"o":"vm_secondary_value_b1"},{"a":26240,"t":"code","b":[48,246],"m":"bmi","oa":26232,"o":"LAB_6678"},{"a":26242,"l":"LAB_6682","t":"code","b":[177,12],"m":"lda","oa":12,"x":[26236],"o":"(vm_primary_value_b2),y"},{"a":26244,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":26246,"t":"code","b":[200],"m":"iny"},{"a":26247,"t":"code","b":[208,4],"m":"bne","oa":26253,"o":"LAB_668d"},{"a":26249,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":26251,"t":"code","b":[230,13],"m":"inc","oa":13,"o":"vm_primary_value_b3"},{"a":26253,"l":"LAB_668d","t":"code","b":[202],"m":"dex","x":[26247]},{"a":26254,"t":"code","b":[76,123,102],"m":"jmp","oa":26235,"o":"LAB_667b"},{"a":26257,"l":"close_file_slot","c":"Close one open-file table entry and mark it free.\nInputs: +8 zero-based slot 0..9.\nOutputs: zero or -1.\nAssumptions: slot table at $7FD3 is valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; selected seven-byte record and channel state.\nHardware: registered callback or KERNAL CLOSE, then CLRCHN.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $6696-$66DA (44 decoded operations); native calls $687D, $6DE6, $6E18. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":26260,"l":"vm_frame_adjust_6691","c":"Signed frame adjustment -2 for close_file_slot at $6691, consumed by the $70F8 VM gateway before bytecode begins at $6696. Close one open-file table entry and mark it free.","t":"word","b":[254,255],"d":[65534]},{"a":26262,"l":"vm_bytecode_6691","c":"Compiled bytecode belonging to close_file_slot ($6691). Close one open-file table entry and mark it free. This position is the opcode of load_primary_local_+8 at $6696. The procedure decodes to 44 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include dispatch_record_callback, kernal_clrchn_wrapper, kernal_close_wrapper.","t":"byte","b":[12,80,194,215,178,102,12,90]},{"a":26270,"t":"byte","b":[197,215,178,102,12,87,181,140]},{"a":26278,"t":"byte","b":[211,127,187,43,211,140,255,0]},{"a":26286,"t":"byte","b":[192,216,181,102,137,255,207,11]},{"a":26294,"t":"byte","b":[115,211,215,200,102,99,11,114]},{"a":26302,"t":"byte","b":[211,179,172,125,104,174,4,214]},{"a":26310,"t":"byte","b":[211,102,172,230,109,12,208,179]},{"a":26318,"t":"byte","b":[172,24,110,174,2,59,138,255]},{"a":26326,"t":"byte","b":[0,180,212,64,207]},{"a":26331,"l":"open_file_slot","c":"Allocate a seven-byte file slot, parse its specification and open it.\nInputs: +8 filename/spec pointer; +10 mode (0 read, 1 write observed).\nOutputs: slot index or -1.\nAssumptions: a free slot and valid Commodore filename syntax.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $7FD3 table, $8019/$8043 and parse buffers.\nHardware: KERNAL SETLFS/SETNAM/OPEN/CLOSE/CLRCHN or callback.\nEntry protocol: JSR $70F8; signed frame adjustment -6; bytecode $66E0-$67DE (155 decoded operations); native calls $67E2, $687D, $68F8, $6977, $6DB2, $6DC7, $6DE0, $6DE6, $6E18. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":26334,"l":"vm_frame_adjust_66db","c":"Signed frame adjustment -6 for open_file_slot at $66DB, consumed by the $70F8 VM gateway before bytecode begins at $66E0. Allocate a seven-byte file slot, parse its specification and open it.","t":"word","b":[250,255],"d":[65530]},{"a":26336,"l":"vm_bytecode_66db","c":"Compiled bytecode belonging to open_file_slot ($66DB). Allocate a seven-byte file slot, parse its specification and open it. This position is the opcode of load_primary_const_0 at $66E0. The procedure decodes to 155 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include enter_inline_native_67e8_adjust_minus2, dispatch_record_callback, append_zero_terminated_string, parse_file_spec_and_allocate_slot, kernal_setlfs_wrapper, kernal_setnam_wrapper.","t":"byte","b":[64,168,67,128,138,211,127,41]},{"a":26344,"t":"byte","b":[214,240,102,9,119,41,143,249]},{"a":26352,"t":"byte","b":[9,140,25,128,198,216,4,103]},{"a":26360,"t":"byte","b":[9,211,140,255,0,192,215,11]},{"a":26368,"t":"byte","b":[103,214,235,102,74,168,67,128]},{"a":26376,"t":"byte","b":[137,255,207,9,140,211,127,188]},{"a":26384,"t":"byte","b":[87,184,43,57,60,172,119,105]},{"a":26392,"t":"byte","b":[174,4,80,194,216,34,103,137]},{"a":26400,"t":"byte","b":[255,207,9,114,211,42,9,115]},{"a":26408,"t":"byte","b":[211,215,66,103,61,96,58,172]},{"a":26416,"t":"byte","b":[125,104,174,6,80,194,216,60]},{"a":26424,"t":"byte","b":[103,137,255,207,57,13,180,212]},{"a":26432,"t":"byte","b":[11,207,9,208,211,140,255,0]},{"a":26440,"t":"byte","b":[192,216,83,103,9,208,179,11]},{"a":26448,"t":"byte","b":[114,180,212,13,81,192,216,100]},{"a":26456,"t":"byte","b":[103,142,223,103,142,26,128,172]},{"a":26464,"t":"byte","b":[248,104,174,4,9,208,211,179]},{"a":26472,"t":"byte","b":[58,11,208,179,172,178,109,174]},{"a":26480,"t":"byte","b":[6,142,26,128,172,199,109,174]},{"a":26488,"t":"byte","b":[2,172,224,109,168,67,128,215]},{"a":26496,"t":"byte","b":[209,103,165,25,128,216,148,103]},{"a":26504,"t":"byte","b":[165,25,128,144,0,2,168,67]},{"a":26512,"t":"byte","b":[128,137,255,207,58,172,226,103]},{"a":26520,"t":"byte","b":[174,2,168,67,128,216,185,103]},{"a":26528,"t":"byte","b":[172,230,109,11,208,179,172,24]},{"a":26536,"t":"byte","b":[110,174,2,138,0,3,205,164]},{"a":26544,"t":"byte","b":[67,128,219,168,67,128,137,255]},{"a":26552,"t":"byte","b":[207,9,118,179,66,180,212,9]},{"a":26560,"t":"byte","b":[116,179,65,180,212,9,117,179]},{"a":26568,"t":"byte","b":[64,180,212,57,13,180,212,11]},{"a":26576,"t":"byte","b":[207,138,0,1,205,164,67,128]},{"a":26584,"t":"byte","b":[219,168,67,128,137,255,207]},{"a":26591,"l":"iec_write_filename_suffix","c":"Zero-terminated ',W' suffix. VM procedure $66DB passes its address while constructing/opening a KERNAL file, selecting write mode for the active IEC disk path.","t":"byte","b":[44,87,0]},{"a":26594,"l":"enter_inline_native_67e8_adjust_minus2","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $67E5 preserves 0 workspace bytes and adjusts the VM expression stack by -2. Execution begins at physical RAM $67E8; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $67E5 must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $67E8, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":26597,"l":"AlterEgo_Runtime_runtime_descriptor_67e2_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment -2. Body starts immediately afterward at $67E8; there is no target-pointer field.","t":"byte","b":[0]},{"a":26598,"l":"native_frame_adjust_67e2","c":"Signed native-procedure frame adjustment -2 after $7059 gateway at $67E2. Header byte $67E5 requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $67E8. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[254,255],"d":[65534]},{"a":26600,"l":"read_status_and_restart_drive_fastloader","c":"Read the two-digit Commodore DOS status for the caller's device through $6840 and preserve it as the return value. Inputs: frame +9/+10 is the device number. For devices greater than 4 (including normal drive 8), send the five-byte 'M-E'+$E6BF command at $683A through $64E9 to restart code already installed in drive RAM; for device numbers 0-4, do not send it. Output: original status code in VM primary. Assumptions: Entered through the $67E2 shim with the $7059 frame live; frame +9/+10 must hold the device number. KERNAL ROM must be banked in for the IEC path in $6840. The 'M-E' $E6BF restart is sent only for device numbers above 4, and it assumes the drive already holds the fastloader code at that address from an earlier $5B72 upload. Clobbers: A,X,Y, VM scratch and IEC workspace. Hardware: KERNAL IEC TALK/TKSA/ACPTR/UNTLK and command output.\nEntry: $7059 frame active. Return: RTS to $70D1. Physical extent $67E8-$6839.","t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":26602,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":26604,"t":"code","b":[72],"m":"pha"},{"a":26605,"t":"code","b":[136],"m":"dey"},{"a":26606,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":26608,"t":"code","b":[72],"m":"pha"},{"a":26609,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":26612,"l":"inline_call_67f1_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $67F1. The authoritative bytes encode target $6840; execution resumes through cleanup JSR $67F6.","t":"byte","b":[64,104]},{"a":26614,"l":"native_resume_67f6","c":"Continuation of read_status_and_restart_drive_fastloader after inline parameters or a typed-block boundary. Read the two-digit Commodore DOS status for the caller's device through $6840 and preserve it as the return value. The complete native body spans $67E8-$6839; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $67F6; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":26617,"l":"inline_call_67f1_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $67F1. The stored value is $02, releasing 2 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[2]},{"a":26618,"l":"native_resume_67fa","c":"Continuation of read_status_and_restart_drive_fastloader after inline parameters or a typed-block boundary. Read the two-digit Commodore DOS status for the caller's device through $6840 and preserve it as the return value. The complete native body spans $67E8-$6839; execution resumes here within that body. This segment follows the $6FF4 call at $67F1 to read_iec_drive_status_code, then cleanup of 2 argument bytes by $7033.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":26620,"t":"code","b":[160,254],"m":"ldy","o":"#$FE"},{"a":26622,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":26624,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":26626,"t":"code","b":[200],"m":"iny"},{"a":26627,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":26629,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":26631,"t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":26633,"t":"code","b":[209,6],"m":"cmp","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":26635,"t":"code","b":[138],"m":"txa"},{"a":26636,"t":"code","b":[200],"m":"iny"},{"a":26637,"t":"code","b":[241,6],"m":"sbc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":26639,"t":"code","b":[112,0],"m":"bvs","oa":26641,"o":"LAB_6811"},{"a":26641,"l":"LAB_6811","t":"code","b":[16,27],"m":"bpl","oa":26670,"x":[26639],"o":"LAB_682e"},{"a":26643,"t":"code","b":[138],"m":"txa"},{"a":26644,"t":"code","b":[72],"m":"pha"},{"a":26645,"t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":26647,"t":"code","b":[72],"m":"pha"},{"a":26648,"t":"code","b":[169,104],"m":"lda","o":"#$68"},{"a":26650,"t":"code","b":[72],"m":"pha"},{"a":26651,"t":"code","b":[169,58],"m":"lda","o":"#$3A"},{"a":26653,"t":"code","b":[72],"m":"pha"},{"a":26654,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":26656,"t":"code","b":[72],"m":"pha"},{"a":26657,"t":"code","b":[136],"m":"dey"},{"a":26658,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":26660,"t":"code","b":[72],"m":"pha"},{"a":26661,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":26664,"l":"inline_call_6825_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $6825. The authoritative bytes encode target $64E9; execution resumes through cleanup JSR $682A.","t":"byte","b":[233,100]},{"a":26666,"l":"native_resume_682a","c":"Continuation of read_status_and_restart_drive_fastloader after inline parameters or a typed-block boundary. Read the two-digit Commodore DOS status for the caller's device through $6840 and preserve it as the return value. The complete native body spans $67E8-$6839; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $682A; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":26669,"l":"inline_call_6825_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $6825. The stored value is $06, releasing 6 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[6]},{"a":26670,"l":"LAB_682e","c":"Continuation of read_status_and_restart_drive_fastloader after inline parameters or a typed-block boundary. Read the two-digit Commodore DOS status for the caller's device through $6840 and preserve it as the return value. The complete native body spans $67E8-$6839; execution resumes here within that body. This segment follows the $6FF4 call at $6825 to serial_send_buffer_with_cr, then cleanup of 6 argument bytes by $7033.","t":"code","b":[160,254],"m":"ldy","x":[26641],"o":"#$FE"},{"a":26672,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":26674,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26676,"t":"code","b":[200],"m":"iny"},{"a":26677,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":26679,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":26681,"t":"code","b":[96],"m":"rts"},{"a":26682,"l":"iec_drive_memory_execute_e6bf_command","c":"Six-byte Commodore drive command 'M-E' followed by little-endian drive address $E6BF and NUL. It requests execution of code already present in the disk drive's own RAM; this host-side command record is active data, while the drive-resident implementation is outside the captured C64 address space.","t":"byte","b":[77,45,69,191,230,0]},{"a":26688,"l":"read_iec_drive_status_code","c":"Read the two decimal status digits from the current IEC device command channel and return their numeric value. Input: ($04),Y at Y=0 supplies the current device number when it is 4 or greater; values below 4 return zero without using IEC. Operation: UNLSN releases any pending LISTEN state, TALK selects the device, TKSA selects secondary address $0F via KERNAL workspace $B9=$6F, and two ACPTR calls receive the tens and units digits. Only each byte low nybble is used; the first digit is multiplied by ten with repeated addition. Output: $0A/$0B = unsigned 16-bit status code, high byte zero. Leaves the bus in UNLSN state by tail-jumping to KERNAL UNLSN ($FFAB). Assumptions: $04/$05 must point at an argument record whose first byte is the device number; values below 4 short-circuit to zero without touching the bus. KERNAL ROM must be banked in and the device must have a status message pending. The routine masks each received byte to its low nybble, so it assumes exactly two ASCII decimal digits, and it leaves the bus untalked -- the caller must not expect an open channel afterwards. Clobbers A, X/Y and KERNAL IEC workspace including $B9/$BA. Hardware: Calls KERNAL UNTLK $FFAB, TALK $FFB4, TKSA $FF96 and ACPTR $FFA5 (twice), writing KERNAL IEC workspace $BA with the device and $B9 with secondary address $6F (the command channel), then tail-jumps to UNTLK $FFAB. All CIA 2 $DD00 serial-line handling is inside those KERNAL routines. Clobbers: A, Y and the processor flags; writes vm_primary_value_b0, vm_primary_value_b1, kernal_current_device_number, kernal_current_secondary_address.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26690,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26692,"t":"code","b":[201,4],"m":"cmp","o":"#$04"},{"a":26694,"t":"code","b":[176,5],"m":"bcs","oa":26701,"o":"LAB_684d"},{"a":26696,"t":"code","b":[132,10],"m":"sty","oa":10,"o":"vm_primary_value_b0"},{"a":26698,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":26700,"t":"code","b":[96],"m":"rts"},{"a":26701,"l":"LAB_684d","t":"code","b":[32,171,255],"m":"jsr","oa":65451,"x":[26694],"o":"KERNAL_UNTLK"},{"a":26704,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26706,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26708,"t":"code","b":[133,186],"m":"sta","oa":186,"o":"kernal_current_device_number"},{"a":26710,"t":"code","b":[32,180,255],"m":"jsr","oa":65460,"o":"KERNAL_TALK"},{"a":26713,"t":"code","b":[169,111],"m":"lda","o":"#$6F"},{"a":26715,"t":"code","b":[133,185],"m":"sta","oa":185,"o":"kernal_current_secondary_address"},{"a":26717,"t":"code","b":[32,150,255],"m":"jsr","oa":65430,"o":"KERNAL_TKSA"},{"a":26720,"t":"code","b":[32,165,255],"m":"jsr","oa":65445,"o":"KERNAL_ACPTR"},{"a":26723,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":26725,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26727,"t":"code","b":[32,165,255],"m":"jsr","oa":65445,"o":"KERNAL_ACPTR"},{"a":26730,"t":"code","b":[41,15],"m":"and","o":"#$0F"},{"a":26732,"t":"code","b":[164,10],"m":"ldy","oa":10,"o":"vm_primary_value_b0"},{"a":26734,"t":"code","b":[240,6],"m":"beq","oa":26742,"o":"LAB_6876"},{"a":26736,"t":"code","b":[24],"m":"clc"},{"a":26737,"l":"LAB_6871","t":"code","b":[105,10],"m":"adc","x":[26740],"o":"#$0A"},{"a":26739,"t":"code","b":[136],"m":"dey"},{"a":26740,"t":"code","b":[208,251],"m":"bne","oa":26737,"o":"LAB_6871"},{"a":26742,"l":"LAB_6876","t":"code","b":[133,10],"m":"sta","oa":10,"x":[26734],"o":"vm_primary_value_b0"},{"a":26744,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":26746,"t":"code","b":[76,171,255],"m":"jmp","oa":65451,"o":"KERNAL_UNTLK"},{"a":26749,"l":"dispatch_record_callback","c":"Select and dispatch a callback from a 16-byte record in the table based at $6B75. Inputs: argument word 0=one-based record index, word 2=slot selector, word 4=availability/fallback flags. Outputs: $0A/$0B=0 or $FFFF when no callback is selected; otherwise control transfers through callback pointer $10/$11. Assumptions: $04/$05 must point at a six-byte record (one-based record index, slot selector, availability flags). The index is decremented and multiplied by 16 and the table base $6B75 is added with an 8-bit ADC, so the index must be 1..N and the resulting record must lie within the same page reach. The routine temporarily advances $04/$05 by four to build the callback's argument area, so the caller's own arguments must already have been consumed. Clobbers: A,X,Y and $0E-$11; temporarily advances VM stack pointer $04/$05 by four for the callback ABI. Hardware: Touches no hardware itself: it computes a pointer and transfers through $10/$11, so any register access belongs to the selected callback.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26751,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26753,"t":"code","b":[170],"m":"tax"},{"a":26754,"t":"code","b":[202],"m":"dex"},{"a":26755,"t":"code","b":[138],"m":"txa"},{"a":26756,"t":"code","b":[10],"m":"asl","o":"a"},{"a":26757,"t":"code","b":[10],"m":"asl","o":"a"},{"a":26758,"t":"code","b":[10],"m":"asl","o":"a"},{"a":26759,"t":"code","b":[10],"m":"asl","o":"a"},{"a":26760,"t":"code","b":[105,117],"m":"adc","o":"#$75"},{"a":26762,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":26764,"t":"code","b":[152],"m":"tya"},{"a":26765,"t":"code","b":[105,107],"m":"adc","o":"#$6B"},{"a":26767,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":26769,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":26771,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26773,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":26775,"t":"code","b":[208,36],"m":"bne","oa":26813,"o":"LAB_68bd"},{"a":26777,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":26779,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26781,"t":"code","b":[240,9],"m":"beq","oa":26792,"o":"LAB_68a8"},{"a":26783,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":26785,"t":"code","b":[177,14],"m":"lda","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26787,"t":"code","b":[200],"m":"iny"},{"a":26788,"t":"code","b":[17,14],"m":"ora","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26790,"t":"code","b":[240,17],"m":"beq","oa":26809,"o":"LAB_68b9"},{"a":26792,"l":"LAB_68a8","t":"code","b":[160,4],"m":"ldy","x":[26781],"o":"#$04"},{"a":26794,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26796,"t":"code","b":[41,1],"m":"and","o":"#$01"},{"a":26798,"t":"code","b":[208,13],"m":"bne","oa":26813,"o":"LAB_68bd"},{"a":26800,"t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":26802,"t":"code","b":[177,14],"m":"lda","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26804,"t":"code","b":[200],"m":"iny"},{"a":26805,"t":"code","b":[17,14],"m":"ora","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26807,"t":"code","b":[208,4],"m":"bne","oa":26813,"o":"LAB_68bd"},{"a":26809,"l":"LAB_68b9","t":"code","b":[169,255],"m":"lda","x":[26790],"o":"#$FF"},{"a":26811,"t":"code","b":[208,51],"m":"bne","oa":26864,"o":"LAB_68f0"},{"a":26813,"l":"LAB_68bd","t":"code","b":[160,2],"m":"ldy","x":[26775,26798,26807],"o":"#$02"},{"a":26815,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26817,"t":"code","b":[10],"m":"asl","o":"a"},{"a":26818,"t":"code","b":[105,6],"m":"adc","o":"#$06"},{"a":26820,"t":"code","b":[168],"m":"tay"},{"a":26821,"t":"code","b":[177,14],"m":"lda","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26823,"t":"code","b":[133,16],"m":"sta","oa":16,"o":"vm_secondary_value_b2"},{"a":26825,"t":"code","b":[200],"m":"iny"},{"a":26826,"t":"code","b":[17,14],"m":"ora","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26828,"t":"code","b":[240,32],"m":"beq","oa":26862,"o":"LAB_68ee"},{"a":26830,"t":"code","b":[177,14],"m":"lda","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":26832,"t":"code","b":[133,17],"m":"sta","oa":17,"o":"vm_secondary_value_b3"},{"a":26834,"t":"code","b":[24],"m":"clc"},{"a":26835,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":26837,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":26839,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":26841,"t":"code","b":[144,2],"m":"bcc","oa":26845,"o":"LAB_68dd"},{"a":26843,"t":"code","b":[230,5],"m":"inc","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":26845,"l":"LAB_68dd","t":"code","b":[32,245,104],"m":"jsr","oa":26869,"x":[26841],"o":"jump_record_callback"},{"a":26848,"t":"code","b":[56],"m":"sec"},{"a":26849,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":26851,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":26853,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":26855,"t":"code","b":[176,2],"m":"bcs","oa":26859,"o":"LAB_68eb"},{"a":26857,"t":"code","b":[198,5],"m":"dec","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":26859,"l":"LAB_68eb","t":"code","b":[76,244,104],"m":"jmp","oa":26868,"x":[26855],"o":"LAB_68f4"},{"a":26862,"l":"LAB_68ee","t":"code","b":[169,0],"m":"lda","x":[26828],"o":"#$00"},{"a":26864,"l":"LAB_68f0","t":"code","b":[133,10],"m":"sta","oa":10,"x":[26811],"o":"vm_primary_value_b0"},{"a":26866,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":26868,"l":"LAB_68f4","t":"code","b":[96],"m":"rts","x":[26859]},{"a":26869,"l":"jump_record_callback","c":"Tail-jump through callback pointer $10/$11. Inputs: $10/$11 must name a valid native callback and $04/$05 points at its argument area. Outputs and clobbers are callback-defined. No local return path is created; the callback returns to the original caller. Assumptions: $10/$11 must already hold a valid native callback address and $04/$05 must point at that callback's argument area. Because this is a JMP, the return address on the stack is the one dispatch_record_callback's caller pushed, so the callback must return with exactly one RTS. Hardware: Touches no hardware: a single JMP ($10). Any register access is performed by the selected callback. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[108,16,0],"m":"jmp","oa":16,"x":[26845],"o":"(vm_secondary_value_b2)"},{"a":26872,"l":"append_zero_terminated_string","c":"Append a NUL-terminated source string to the destination string. Inputs: argument record contains destination pointer followed by source pointer. It measures the destination with $6BBB, advances the live destination pointer to its terminator, copies with $6936, then restores the original pointer bytes. Outputs: concatenated destination. Assumptions: $04/$05 must point at a four-byte record holding the destination pointer then the source pointer, and the destination buffer must have room for both strings plus the terminator because no bound is checked. The routine temporarily rewrites the destination pointer inside the caller's record and restores it afterwards, so that record must be in writable RAM. Clobbers: A,Y and VM primary/scratch. Hardware: Touches no hardware; the work is done by the pure-RAM helpers $6BBB and $6936.","t":"code","b":[32,187,107],"m":"jsr","oa":27579,"o":"measure_zero_terminated_string"},{"a":26875,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26877,"t":"code","b":[24],"m":"clc"},{"a":26878,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26880,"t":"code","b":[72],"m":"pha"},{"a":26881,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":26883,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26885,"t":"code","b":[200],"m":"iny"},{"a":26886,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26888,"t":"code","b":[72],"m":"pha"},{"a":26889,"t":"code","b":[101,11],"m":"adc","oa":11,"o":"vm_primary_value_b1"},{"a":26891,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26893,"t":"code","b":[32,54,105],"m":"jsr","oa":26934,"o":"copy_zero_terminated_string"},{"a":26896,"t":"code","b":[104],"m":"pla"},{"a":26897,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":26899,"t":"code","b":[104],"m":"pla"},{"a":26900,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26902,"t":"code","b":[96],"m":"rts"},{"a":26903,"l":"append_bounded_zero_terminated_string","c":"Append a bounded NUL-terminated source string to a destination string. Inputs: destination/source/count fields in the argument record. It advances to the destination terminator with $6BBB and copies via bounded helper $6951, then restores the original destination pointer. Outputs: destination extended subject to count/terminator. Assumptions: $04/$05 must point at a six-byte record (destination, source, maximum count). The count bounds the copied bytes, not the total length, so the destination must still hold the existing text plus that many bytes. As in $68F8 the caller's record is temporarily modified in place and must be writable. Clobbers: A,X,Y and scratch. Hardware: Touches no hardware; the work is done by $6BBB and the bounded copier $6951, both pure RAM code.","t":"code","b":[32,187,107],"m":"jsr","oa":27579,"o":"measure_zero_terminated_string"},{"a":26906,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":26908,"t":"code","b":[24],"m":"clc"},{"a":26909,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26911,"t":"code","b":[72],"m":"pha"},{"a":26912,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":26914,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26916,"t":"code","b":[200],"m":"iny"},{"a":26917,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26919,"t":"code","b":[72],"m":"pha"},{"a":26920,"t":"code","b":[101,11],"m":"adc","oa":11,"o":"vm_primary_value_b1"},{"a":26922,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":26924,"t":"code","b":[32,81,105],"m":"jsr","oa":26961,"o":"copy_bounded_zero_terminated_string"},{"a":26927,"t":"code","b":[104],"m":"pla"},{"a":26928,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":26930,"t":"code","b":[104],"m":"pla"},{"a":26931,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":26933,"t":"code","b":[96],"m":"rts"},{"a":26934,"l":"copy_zero_terminated_string","c":"Copy a NUL-terminated string from source $0C/$0D to destination $0A/$0B. Inputs are loaded from the four-byte argument record. Outputs include the terminating zero. Assumptions: $04/$05 must point at a four-byte record (destination, source) -- all four bytes are copied into $0A-$0D, so that zero-page block must be free. The source must be NUL-terminated and the destination large enough, since no limit is applied and both pointer high bytes are incremented across page boundaries. Clobbers: A,Y and pointer high bytes while crossing pages. Hardware: Touches no hardware: a pure RAM copy through zero-page pointers $0A/$0B and $0C/$0D. Inputs: memory it reads before writing: $04,Y, $0C,Y, vm_primary_value_b1, vm_primary_value_b3. Outputs: writes $0A,Y, vm_primary_value_b1, vm_primary_value_b3.","t":"code","b":[160,3],"m":"ldy","x":[26893],"o":"#$03"},{"a":26936,"l":"LAB_6938","t":"code","b":[177,4],"m":"lda","oa":4,"x":[26942],"o":"(vm_expression_stack_ptr_lo),y"},{"a":26938,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":26941,"t":"code","b":[136],"m":"dey"},{"a":26942,"t":"code","b":[16,248],"m":"bpl","oa":26936,"o":"LAB_6938"},{"a":26944,"t":"code","b":[200],"m":"iny"},{"a":26945,"l":"LAB_6941","t":"code","b":[177,12],"m":"lda","oa":12,"x":[26952,26958],"o":"(vm_primary_value_b2),y"},{"a":26947,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":26949,"t":"code","b":[240,9],"m":"beq","oa":26960,"o":"LAB_6950"},{"a":26951,"t":"code","b":[200],"m":"iny"},{"a":26952,"t":"code","b":[208,247],"m":"bne","oa":26945,"o":"LAB_6941"},{"a":26954,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":26956,"t":"code","b":[230,13],"m":"inc","oa":13,"o":"vm_primary_value_b3"},{"a":26958,"t":"code","b":[208,241],"m":"bne","oa":26945,"o":"LAB_6941"},{"a":26960,"l":"LAB_6950","t":"code","b":[96],"m":"rts","x":[26949]},{"a":26961,"l":"copy_bounded_zero_terminated_string","c":"Copy a NUL-terminated string with a 16-bit byte limit. Inputs: destination $0A/$0B, source $0C/$0D, maximum count $0E/$0F from the six-byte argument record. Outputs: bytes copied until NUL or count exhaustion. Assumptions: $04/$05 must point at a six-byte record (destination, source, 16-bit maximum); all six bytes land in $0A-$0F. Both pointers are pre-decremented and indexed with Y starting from -1, so the caller must pass true buffer starts, and a maximum of zero copies nothing. Clobbers: A,X,Y and working pointers/count. Hardware: Touches no hardware: pure RAM copying through zero-page pointers $0A/$0B and $0C/$0D.","t":"code","b":[160,5],"m":"ldy","x":[26924],"o":"#$05"},{"a":26963,"l":"LAB_6953","t":"code","b":[177,4],"m":"lda","oa":4,"x":[26969],"o":"(vm_expression_stack_ptr_lo),y"},{"a":26965,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":26968,"t":"code","b":[136],"m":"dey"},{"a":26969,"t":"code","b":[16,248],"m":"bpl","oa":26963,"o":"LAB_6953"},{"a":26971,"t":"code","b":[198,11],"m":"dec","oa":11,"o":"vm_primary_value_b1"},{"a":26973,"t":"code","b":[198,13],"m":"dec","oa":13,"o":"vm_primary_value_b3"},{"a":26975,"t":"code","b":[166,14],"m":"ldx","oa":14,"o":"vm_secondary_value_b0"},{"a":26977,"l":"LAB_6961","t":"code","b":[138],"m":"txa","x":[26996]},{"a":26978,"t":"code","b":[208,4],"m":"bne","oa":26984,"o":"LAB_6968"},{"a":26980,"t":"code","b":[198,15],"m":"dec","oa":15,"o":"vm_secondary_value_b1"},{"a":26982,"t":"code","b":[48,14],"m":"bmi","oa":26998,"o":"LAB_6976"},{"a":26984,"l":"LAB_6968","t":"code","b":[202],"m":"dex","x":[26978]},{"a":26985,"t":"code","b":[200],"m":"iny"},{"a":26986,"t":"code","b":[208,4],"m":"bne","oa":26992,"o":"LAB_6970"},{"a":26988,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":26990,"t":"code","b":[230,13],"m":"inc","oa":13,"o":"vm_primary_value_b3"},{"a":26992,"l":"LAB_6970","t":"code","b":[177,12],"m":"lda","oa":12,"x":[26986],"o":"(vm_primary_value_b2),y"},{"a":26994,"t":"code","b":[145,10],"m":"sta","oa":10,"o":"(vm_primary_value_b0),y"},{"a":26996,"t":"code","b":[208,235],"m":"bne","oa":26977,"o":"LAB_6961"},{"a":26998,"l":"LAB_6976","t":"code","b":[96],"m":"rts","x":[26982]},{"a":26999,"l":"parse_file_spec_and_allocate_slot","c":"Allocate a file binding and parse a Commodore file specification into it.\nInputs: +8 filename; +10 seven-byte output record.\nOutputs: slot/LFN or -1.\nAssumptions: NUL-terminated input.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $7FCA/$7FD1/$801C/$8038 and output record.\nHardware: none directly.\nEntry protocol: JSR $70F8; signed frame adjustment -6; bytecode $697C-$6A1F (114 decoded operations); native calls $6A20, $6B4F, $6BBB. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27002,"l":"vm_frame_adjust_6977","c":"Signed frame adjustment -6 for parse_file_spec_and_allocate_slot at $6977, consumed by the $70F8 VM gateway before bytecode begins at $697C. Allocate a file binding and parse a Commodore file specification into it.","t":"word","b":[250,255],"d":[65530]},{"a":27004,"l":"vm_bytecode_6977","c":"Compiled bytecode belonging to parse_file_spec_and_allocate_slot ($6977). Allocate a file binding and parse a Commodore file specification into it. This position is the opcode of push_local_+8 at $697C. The procedure decodes to 114 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include parse_cbm_file_spec, find_keyboard_binding_record, measure_zero_terminated_string.","t":"byte","b":[60,172,32,106,174,2,80,194]},{"a":27012,"t":"byte","b":[215,141,105,165,28,128,215,144]},{"a":27020,"t":"byte","b":[105,137,255,207,65,43,214,152]},{"a":27028,"t":"byte","b":[105,11,208,43,11,90,195,216]},{"a":27036,"t":"byte","b":[192,105,59,172,79,107,174,2]},{"a":27044,"t":"byte","b":[42,216,189,105,10,139,255,192]},{"a":27052,"t":"byte","b":[215,192,105,13,115,179,64,180]},{"a":27060,"t":"byte","b":[212,13,114,179,11,180,212,11]},{"a":27068,"t":"byte","b":[207,214,149,105,142,26,128,172]},{"a":27076,"t":"byte","b":[187,107,174,2,140,26,128,187]},{"a":27084,"t":"byte","b":[41,9,208,41,209,179,137,44]},{"a":27092,"t":"byte","b":[180,212,9,208,41,209,179,165]},{"a":27100,"t":"byte","b":[56,128,180,212,165,56,128,139]},{"a":27108,"t":"byte","b":[76,192,216,252,105,9,208,41]},{"a":27116,"t":"byte","b":[209,179,137,44,180,212,9,208]},{"a":27124,"t":"byte","b":[41,209,179,138,254,0,180,212]},{"a":27132,"t":"byte","b":[9,208,41,209,179,64,180,212]},{"a":27140,"t":"byte","b":[13,115,179,165,56,128,180,212]},{"a":27148,"t":"byte","b":[13,114,179,164,209,127,180,212]},{"a":27156,"t":"byte","b":[13,208,179,165,202,127,180,212]},{"a":27164,"t":"byte","b":[164,209,127,207]},{"a":27168,"l":"parse_cbm_file_spec","c":"Parse Commodore device/type, comma, colon and decimal syntax.\nInputs: +8 mutable specification string.\nOutputs: zero or -1.\nAssumptions: NUL-terminated ASCII-compatible input.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $7FCA/$7FD1/$801A/$8038/$8039/$8043.\nHardware: none directly.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $6A25-$6B4E (174 decoded operations); native calls $6BD9, $6E59. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27171,"l":"vm_frame_adjust_6a20","c":"Signed frame adjustment -2 for parse_cbm_file_spec at $6A20, consumed by the $70F8 VM gateway before bytecode begins at $6A25. Parse Commodore device/type, comma, colon and decimal syntax.","t":"word","b":[254,255],"d":[65534]},{"a":27173,"l":"vm_bytecode_6a20","c":"Compiled bytecode belonging to parse_cbm_file_spec ($6A20). Parse Commodore device/type, comma, colon and decimal syntax. This position is the opcode of load_primary_const_0 at $6A25. The procedure decodes to 174 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include ascii_to_upper, ascii_is_digit.","t":"byte","b":[64,168,67,128,137,80,169,56]},{"a":27181,"t":"byte","b":[128,138,255,0,169,202,127,12]},{"a":27189,"t":"byte","b":[211,215,60,106,137,255,207,64]},{"a":27197,"t":"byte","b":[168,57,128,72,168,209,127,138]},{"a":27205,"t":"byte","b":[26,128,43,12,208,211,139,58]},{"a":27213,"t":"byte","b":[192,216,108,106,11,208,43,209]},{"a":27221,"t":"byte","b":[179,12,208,44,209,211,180,212]},{"a":27229,"t":"byte","b":[11,208,43,209,179,12,208,44]},{"a":27237,"t":"byte","b":[209,211,180,212,214,126,106,11]},{"a":27245,"t":"byte","b":[208,43,209,179,137,48,180,212]},{"a":27253,"t":"byte","b":[11,208,43,209,179,137,58,180]},{"a":27261,"t":"byte","b":[212,12,211,216,160,106,12,211]},{"a":27269,"t":"byte","b":[139,44,193,216,160,106,11,208]},{"a":27277,"t":"byte","b":[43,209,179,12,208,44,209,211]},{"a":27285,"t":"byte","b":[179,172,217,107,174,2,180,212]},{"a":27293,"t":"byte","b":[214,126,106,59,64,180,212,12]},{"a":27301,"t":"byte","b":[211,139,44,192,216,57,107,12]},{"a":27309,"t":"byte","b":[208,44,211,179,172,217,107,174]},{"a":27317,"t":"byte","b":[2,214,25,107,12,208,44,209]},{"a":27325,"t":"byte","b":[211,179,172,217,107,174,2,169]},{"a":27333,"t":"byte","b":[56,128,214,54,107,64,168,209]},{"a":27341,"t":"byte","b":[127,12,208,44,211,179,172,89]},{"a":27349,"t":"byte","b":[110,174,2,216,237,106,164,209]},{"a":27357,"t":"byte","b":[127,90,181,179,12,211,180,187]},{"a":27365,"t":"byte","b":[143,208,168,209,127,214,206,106]},{"a":27373,"t":"byte","b":[214,54,107,64,169,202,127,12]},{"a":27381,"t":"byte","b":[208,44,211,179,172,89,110,174]},{"a":27389,"t":"byte","b":[2,216,19,107,12,211,179,165]},{"a":27397,"t":"byte","b":[202,127,90,181,180,187,143,208]},{"a":27405,"t":"byte","b":[169,202,127,214,244,106,214,54]},{"a":27413,"t":"byte","b":[107,214,62,107,217,6,0,67]},{"a":27421,"t":"byte","b":[0,240,106,68,0,202,106,76]},{"a":27429,"t":"byte","b":[0,185,106,80,0,185,106,83]},{"a":27437,"t":"byte","b":[0,185,106,85,0,185,106,22]},{"a":27445,"t":"byte","b":[107,214,164,106,12,211,216,69]},{"a":27453,"t":"byte","b":[107,73,168,67,128,137,255,207]},{"a":27461,"t":"byte","b":[165,26,128,143,208,168,57,128]},{"a":27469,"t":"byte","b":[64,207]},{"a":27471,"l":"find_keyboard_binding_record","c":"Find a one-based keyboard-binding record by its stored string.\nInputs: +8 one-based record index.\nOutputs: input index on match, 0 no match, -1 empty record.\nAssumptions: 16-byte table at $6B75 and comparison string $801C are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; string-compare scratch only.\nHardware: none.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $6B54-$6B74 (21 decoded operations); native calls $6B86. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27474,"l":"vm_frame_adjust_6b4f","c":"Signed frame adjustment -2 for find_keyboard_binding_record at $6B4F, consumed by the $70F8 VM gateway before bytecode begins at $6B54. Find a one-based keyboard-binding record by its stored string.","t":"word","b":[254,255],"d":[65534]},{"a":27476,"l":"vm_bytecode_6b4f","c":"Compiled bytecode belonging to find_keyboard_binding_record ($6B4F). Find a one-based keyboard-binding record by its stored string. This position is the opcode of load_primary_local_+8 at $6B54. The procedure decodes to 21 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include compare_zero_terminated_strings.","t":"byte","b":[12,209,84,189,140,117,107,187]},{"a":27484,"t":"byte","b":[43,11,211,215,101,107,137,255]},{"a":27492,"t":"byte","b":[207,59,142,28,128,172,134,107]},{"a":27500,"t":"byte","b":[174,4,215,115,107,12,207,64]},{"a":27508,"t":"byte","b":[207]},{"a":27509,"l":"keyboard_binding_record_prefix","c":"First eight bytes of the single 16-byte binding record indexed by VM procedure $6B4F: key/tag text 'KB:' plus zero-terminated/control fields. The procedure computes record=$6B75+16*(argument-1), rejects an empty first byte, and compares through the handler at $6B86.","t":"byte","b":[75,66,58,0,0,0,0,0]},{"a":27517,"l":"keyboard_binding_record_handler_ptrs","c":"Two little-endian pointers inside the $6B75 binding record, currently $6CF0 and $6C0B, selecting VM-side handling paths.","t":"word","b":[240,108,11,108],"d":[27888,27659]},{"a":27521,"l":"keyboard_binding_record_tail_and_sentinel","c":"Four zero state/flag bytes completing the 16-byte binding record at $6B75, followed by a zero sentinel byte before the native string comparator at $6B86.","t":"byte","b":[0,0,0,0,0]},{"a":27526,"l":"compare_zero_terminated_strings","c":"Lexicographically compare two NUL-terminated byte strings. Inputs: two pointers from the four-byte argument record. Outputs: signed VM primary word -1, 0 or +1 in $0A/$0B. Assumptions: $04/$05 must point at a four-byte record holding the two pointers, which are copied into $0A-$0D, so that block must be free. Both strings must be NUL-terminated: the scan has no length limit and increments the pointer high bytes on page crossing. Clobbers: A,Y and pointer high bytes. Comparison is unsigned byte order and stops at the first difference or terminator. Hardware: Touches no hardware: both operands are read from RAM through zero-page pointers and the result goes to VM primary $0A/$0B.","t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":27528,"l":"LAB_6b88","t":"code","b":[177,4],"m":"lda","oa":4,"x":[27534],"o":"(vm_expression_stack_ptr_lo),y"},{"a":27530,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":27533,"t":"code","b":[136],"m":"dey"},{"a":27534,"t":"code","b":[16,248],"m":"bpl","oa":27528,"o":"LAB_6b88"},{"a":27536,"t":"code","b":[200],"m":"iny"},{"a":27537,"t":"code","b":[240,7],"m":"beq","oa":27546,"o":"LAB_6b9a"},{"a":27539,"l":"LAB_6b93","t":"code","b":[200],"m":"iny","x":[27563]},{"a":27540,"t":"code","b":[208,4],"m":"bne","oa":27546,"o":"LAB_6b9a"},{"a":27542,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":27544,"t":"code","b":[230,13],"m":"inc","oa":13,"o":"vm_primary_value_b3"},{"a":27546,"l":"LAB_6b9a","t":"code","b":[177,10],"m":"lda","oa":10,"x":[27537,27540],"o":"(vm_primary_value_b0),y"},{"a":27548,"t":"code","b":[208,11],"m":"bne","oa":27561,"o":"LAB_6ba9"},{"a":27550,"t":"code","b":[177,12],"m":"lda","oa":12,"o":"(vm_primary_value_b2),y"},{"a":27552,"t":"code","b":[240,21],"m":"beq","oa":27575,"o":"LAB_6bb7"},{"a":27554,"l":"LAB_6ba2","t":"code","b":[160,255],"m":"ldy","x":[27565],"o":"#$FF"},{"a":27556,"l":"LAB_6ba4","t":"code","b":[132,10],"m":"sty","oa":10,"x":[27577],"o":"vm_primary_value_b0"},{"a":27558,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":27560,"t":"code","b":[96],"m":"rts"},{"a":27561,"l":"LAB_6ba9","t":"code","b":[209,12],"m":"cmp","oa":12,"x":[27548],"o":"(vm_primary_value_b2),y"},{"a":27563,"t":"code","b":[240,230],"m":"beq","oa":27539,"o":"LAB_6b93"},{"a":27565,"t":"code","b":[144,243],"m":"bcc","oa":27554,"o":"LAB_6ba2"},{"a":27567,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":27569,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":27571,"t":"code","b":[200],"m":"iny"},{"a":27572,"t":"code","b":[132,10],"m":"sty","oa":10,"o":"vm_primary_value_b0"},{"a":27574,"t":"code","b":[96],"m":"rts"},{"a":27575,"l":"LAB_6bb7","t":"code","b":[160,0],"m":"ldy","x":[27552],"o":"#$00"},{"a":27577,"t":"code","b":[240,233],"m":"beq","oa":27556,"o":"LAB_6ba4"},{"a":27579,"l":"measure_zero_terminated_string","c":"Measure a NUL-terminated string. Inputs: pointer in argument bytes 0-1. Outputs: 16-bit length in $0A/$0B excluding the terminator. Assumptions: $04/$05 must point at a two-byte pointer record; the pointer is copied into $0E/$0F, which must be free, and the string must be NUL-terminated because the scan is unbounded and carries into the pointer high byte across pages. Clobbers: A,Y and $0E/$0F; handles page crossings. Hardware: Touches no hardware: a pure RAM scan through zero-page pointer $0E/$0F.","t":"code","b":[160,0],"m":"ldy","x":[26872,26903],"o":"#$00"},{"a":27581,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":27583,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":27585,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":27587,"t":"code","b":[200],"m":"iny"},{"a":27588,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":27590,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":27592,"t":"code","b":[136],"m":"dey"},{"a":27593,"l":"LAB_6bc9","t":"code","b":[177,14],"m":"lda","oa":14,"x":[27598,27604],"o":"(vm_secondary_value_b0),y"},{"a":27595,"t":"code","b":[240,9],"m":"beq","oa":27606,"o":"LAB_6bd6"},{"a":27597,"t":"code","b":[200],"m":"iny"},{"a":27598,"t":"code","b":[208,249],"m":"bne","oa":27593,"o":"LAB_6bc9"},{"a":27600,"t":"code","b":[230,15],"m":"inc","oa":15,"o":"vm_secondary_value_b1"},{"a":27602,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":27604,"t":"code","b":[208,243],"m":"bne","oa":27593,"o":"LAB_6bc9"},{"a":27606,"l":"LAB_6bd6","t":"code","b":[132,10],"m":"sty","oa":10,"x":[27595],"o":"vm_primary_value_b0"},{"a":27608,"t":"code","b":[96],"m":"rts"},{"a":27609,"l":"ascii_to_upper","c":"Convert ASCII a-z to uppercase.\nInputs: +8 byte.\nOutputs: uppercased or unchanged byte.\nAssumptions: ASCII-compatible input.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; none.\nHardware: none.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $6BDE-$6BF1 (13 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27612,"l":"vm_frame_adjust_6bd9","c":"Signed frame adjustment 0 for ascii_to_upper at $6BD9, consumed by the $70F8 VM gateway before bytecode begins at $6BDE. Convert ASCII a-z to uppercase.","t":"word","b":[0,0],"d":[0]},{"a":27614,"l":"vm_bytecode_6bd9","c":"Compiled bytecode belonging to ascii_to_upper ($6BD9). Convert ASCII a-z to uppercase. This position is the opcode of load_primary_local_+8 at $6BDE. The procedure decodes to 13 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[12,139,97,197,216,240,107,12]},{"a":27622,"t":"byte","b":[139,122,195,216,240,107,12,143]},{"a":27630,"t":"byte","b":[224,207,12,207]},{"a":27634,"l":"ascii_to_lower","c":"Convert ASCII A-Z to lowercase.\nInputs: +8 byte.\nOutputs: lowercased or unchanged byte.\nAssumptions: ASCII-compatible input.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; none.\nHardware: none.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $6BF7-$6C0A (13 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27637,"l":"vm_frame_adjust_6bf2","c":"Signed frame adjustment 0 for ascii_to_lower at $6BF2, consumed by the $70F8 VM gateway before bytecode begins at $6BF7. Convert ASCII A-Z to lowercase.","t":"word","b":[0,0],"d":[0]},{"a":27639,"l":"vm_bytecode_6bf2","c":"Compiled bytecode belonging to ascii_to_lower ($6BF2). Convert ASCII A-Z to lowercase. This position is the opcode of load_primary_local_+8 at $6BF7. The procedure decodes to 13 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[12,139,65,197,216,9,108,12]},{"a":27647,"t":"byte","b":[139,90,195,216,9,108,12,143]},{"a":27655,"t":"byte","b":[32,207,12,207]},{"a":27659,"l":"keyboard_binding_handler_6c0b","c":"Read, echo and encode a bounded keyboard-binding string.\nInputs: +8 destination; +10 capacity/count.\nOutputs: original count after appending encoded bytes.\nAssumptions: KERNAL keyboard and output are available.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; caller buffer and KERNAL channel state.\nHardware: calls CLRCHN/GETIN/CHROUT.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $6C10-$6CEF (102 decoded operations); native calls $6DE6, $6DFA, $6E0B. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27662,"l":"vm_frame_adjust_6c0b","c":"Signed frame adjustment -4 for keyboard_binding_handler_6c0b at $6C0B, consumed by the $70F8 VM gateway before bytecode begins at $6C10. Read, echo and encode a bounded keyboard-binding string.","t":"word","b":[252,255],"d":[65532]},{"a":27664,"l":"vm_bytecode_6c0b","c":"Compiled bytecode belonging to keyboard_binding_handler_6c0b ($6C0B). Read, echo and encode a bounded keyboard-binding string. This position is the opcode of load_primary_local_+10 at $6C10. The procedure decodes to 102 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include kernal_clrchn_wrapper, kernal_getin_wrapper, kernal_chrout_wrapper.","t":"byte","b":[13,42,172,230,109,10,209,42]},{"a":27672,"t":"byte","b":[208,216,238,108,142,224,0,172]},{"a":27680,"t":"byte","b":[11,110,174,2,172,250,109,43]},{"a":27688,"t":"byte","b":[215,46,108,214,36,108,142,157]},{"a":27696,"t":"byte","b":[0,172,11,110,174,2,141,32]},{"a":27704,"t":"byte","b":[172,11,110,174,2,142,157,0]},{"a":27712,"t":"byte","b":[172,11,110,174,2,11,139,65]},{"a":27720,"t":"byte","b":[197,216,92,108,11,139,90,195]},{"a":27728,"t":"byte","b":[216,92,108,137,32,205,11,187]},{"a":27736,"t":"byte","b":[43,214,202,108,11,140,193,0]},{"a":27744,"t":"byte","b":[197,216,118,108,11,140,218,0]},{"a":27752,"t":"byte","b":[195,216,118,108,138,128,0,205]},{"a":27760,"t":"byte","b":[11,188,43,214,202,108,11,214]},{"a":27768,"t":"byte","b":[165,108,137,123,43,214,202,108]},{"a":27776,"t":"byte","b":[137,125,43,214,202,108,137,96]},{"a":27784,"t":"byte","b":[43,214,202,108,137,124,43,214]},{"a":27792,"t":"byte","b":[202,108,137,126,43,214,202,108]},{"a":27800,"t":"byte","b":[137,92,43,214,202,108,138,223]},{"a":27808,"t":"byte","b":[0,43,214,202,108,217,8,0]},{"a":27816,"t":"byte","b":[27,0,122,108,29,0,128,108]},{"a":27824,"t":"byte","b":[31,0,134,108,34,0,158,108]},{"a":27832,"t":"byte","b":[92,0,152,108,129,0,140,108]},{"a":27840,"t":"byte","b":[144,0,140,108,222,0,146,108]},{"a":27848,"t":"byte","b":[202,108,59,172,11,110,174,2]},{"a":27856,"t":"byte","b":[11,93,192,216,216,108,74,43]},{"a":27864,"t":"byte","b":[11,140,223,0,192,216,227,108]},{"a":27872,"t":"byte","b":[137,34,43,12,208,44,209,179]},{"a":27880,"t":"byte","b":[11,180,212,214,21,108,13,207]},{"a":27888,"l":"keyboard_binding_handler_6cf0","c":"Decode and echo a stored keyboard-binding string.\nInputs: +8 source; +10 count.\nOutputs: original count.\nAssumptions: source uses the resident control encoding.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; KERNAL output and optional SID feedback state.\nHardware: calls CLRCHN/CHROUT and SID feedback helper.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $6CF5-$6D58 (42 decoded operations); native calls $6D59, $6DE6, $6E0B. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27891,"l":"vm_frame_adjust_6cf0","c":"Signed frame adjustment -4 for keyboard_binding_handler_6cf0 at $6CF0, consumed by the $70F8 VM gateway before bytecode begins at $6CF5. Decode and echo a stored keyboard-binding string.","t":"word","b":[252,255],"d":[65532]},{"a":27893,"l":"vm_bytecode_6cf0","c":"Compiled bytecode belonging to keyboard_binding_handler_6cf0 ($6CF0). Decode and echo a stored keyboard-binding string. This position is the opcode of load_primary_local_+10 at $6CF5. The procedure decodes to 42 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include initialize_sid_feedback_tone, kernal_clrchn_wrapper, kernal_chrout_wrapper.","t":"byte","b":[13,42,172,230,109,10,209,42]},{"a":27901,"t":"byte","b":[208,216,87,109,12,208,44,209]},{"a":27909,"t":"byte","b":[211,43,214,53,109,77,43,214]},{"a":27917,"t":"byte","b":[78,109,138,223,0,43,214,78]},{"a":27925,"t":"byte","b":[109,138,157,0,43,214,78,109]},{"a":27933,"t":"byte","b":[137,29,43,59,172,11,110,174]},{"a":27941,"t":"byte","b":[2,59,172,11,110,174,2,214]},{"a":27949,"t":"byte","b":[78,109,172,89,109,214,78,109]},{"a":27957,"t":"byte","b":[217,5,0,7,0,47,109,8]},{"a":27965,"t":"byte","b":[0,22,109,9,0,29,109,10]},{"a":27973,"t":"byte","b":[0,10,109,34,32,15,109,78]},{"a":27981,"t":"byte","b":[109,59,172,11,110,174,2,214]},{"a":27989,"t":"byte","b":[250,108,13,207]},{"a":27993,"l":"initialize_sid_feedback_tone","c":"Reset SID and configure voice 1 as the keyboard-feedback tone.\nInputs: none.\nOutputs: SID voice/filter registers configured.\nAssumptions: SID I/O is visible.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; SID registers $D400-$D418.\nHardware: writes SID voice 1 and master volume/filter registers.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $6D5E-$6D99 (46 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":27996,"l":"vm_frame_adjust_6d59","c":"Signed frame adjustment -2 for initialize_sid_feedback_tone at $6D59, consumed by the $70F8 VM gateway before bytecode begins at $6D5E. Reset SID and configure voice 1 as the keyboard-feedback tone.","t":"word","b":[254,255],"d":[65534]},{"a":27998,"l":"vm_bytecode_6d59","c":"Compiled bytecode belonging to initialize_sid_feedback_tone ($6D59). Reset SID and configure voice 1 as the keyboard-feedback tone. This position is the opcode of load_primary_immediate_word at $6D5E. The procedure decodes to 46 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[138,24,212,43,11,140,0,212]},{"a":28006,"t":"byte","b":[201,216,117,109,11,209,43,208]},{"a":28014,"t":"byte","b":[179,64,180,212,214,98,109,138]},{"a":28022,"t":"byte","b":[1,212,43,179,137,84,180,212]},{"a":28030,"t":"byte","b":[11,116,179,137,55,180,212,11]},{"a":28038,"t":"byte","b":[117,179,76,180,212,11,143,23]},{"a":28046,"t":"byte","b":[179,79,180,212,11,115,179,137]},{"a":28054,"t":"byte","b":[17,180,212,207]},{"a":28058,"l":"kernal_untlk_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL UNTLK $FFAB, releasing the current IEC talker. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. It releases the current talker, so a TALK/TKSA sequence must have been issued first. Hardware: Tail-jumps to KERNAL UNTLK $FFAB, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,171,255],"m":"jmp","oa":65451,"o":"KERNAL_UNTLK"},{"a":28061,"l":"kernal_talk_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL TALK $FFB4, commanding the device number in A to talk on IEC. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. A must hold the device number. Hardware: Tail-jumps to KERNAL TALK $FFB4, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,180,255],"m":"jmp","oa":65460,"o":"KERNAL_TALK"},{"a":28064,"l":"kernal_tksa_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL TKSA $FF96, sending the secondary address in A after TALK. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. A must hold the secondary address and TALK must already have been issued. Hardware: Tail-jumps to KERNAL TKSA $FF96, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,150,255],"m":"jmp","oa":65430,"o":"KERNAL_TKSA"},{"a":28067,"l":"kernal_acptr_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL ACPTR $FFA5 to receive one byte from IEC. Requires KERNAL ROM visible. Returns the byte in A with KERNAL status semantics. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. A talker must already have been addressed with TALK and TKSA. Hardware: Tail-jumps to KERNAL ACPTR $FFA5, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to KERNAL ACPTR, whose inputs apply unchanged. Outputs: no memory write of its own; the effect is the transfer of control to KERNAL ACPTR with the register state established above. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,165,255],"m":"jmp","oa":65445,"o":"KERNAL_ACPTR"},{"a":28070,"l":"kernal_unlsn_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL UNLSN $FFAE, releasing all IEC listeners. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. It releases all listeners, so a LISTEN/SECOND sequence must have been issued first. Hardware: Tail-jumps to KERNAL UNLSN $FFAE, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,174,255],"m":"jmp","oa":65454,"o":"KERNAL_UNLSN"},{"a":28073,"l":"kernal_second_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL SECOND $FF93, sending the secondary address in A after LISTEN. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. LISTEN must already have been issued and A must hold the secondary address. Hardware: Tail-jumps to KERNAL SECOND $FF93, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,147,255],"m":"jmp","oa":65427,"o":"KERNAL_SECOND"},{"a":28076,"l":"kernal_listen_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL LISTEN $FFB1, commanding the device number in A to listen on IEC. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. A must hold the device number. Hardware: Tail-jumps to KERNAL LISTEN $FFB1, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,177,255],"m":"jmp","oa":65457,"o":"KERNAL_LISTEN"},{"a":28079,"l":"kernal_ciout_tail_wrapper","c":"Indirect-call table entry that tail-jumps to KERNAL CIOUT $FFA8 to transmit A on IEC. Requires KERNAL ROM visible. Inputs/outputs and clobbers follow the KERNAL routine. Assumptions: Reached only through the resident indirect-call table, so the caller's return address must already be on the stack: this is a JMP and KERNAL returns directly to that caller. KERNAL ROM must be banked in (HIRAM set in $01) -- under the resident $36 mapping it is, but the RAM beneath the KERNAL entry is game data, so calling it with KERNAL hidden would execute that data. A listener must already be addressed and A must hold the byte to send. Hardware: Tail-jumps to KERNAL CIOUT $FFA8, which manipulates the IEC ATN/CLK/DATA lines through CIA 2 port A $DD00. This three-byte stub writes no register itself. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,168,255],"m":"jmp","oa":65448,"o":"KERNAL_CIOUT"},{"a":28082,"l":"kernal_setlfs_wrapper","c":"KERNAL SETLFS wrapper. Inputs: argument byte 0=logical file number, byte 2=device, byte 4=secondary address. Outputs: KERNAL file parameters updated. Assumptions: $04/$05 must point at a five-byte record (logical file, device, secondary address) and KERNAL ROM must be banked in, because the routine tail-jumps into $FFBA. The file number is held in $0E while X and Y are loaded, so that byte must be free, and none of the three values is validated. Clobbers: A,X,Y and flags. Tail-jumps to SETLFS $FFBA and therefore requires KERNAL ROM visible. Hardware: Tail-jumps to KERNAL SETLFS $FFBA with A=logical file, X=device, Y=secondary address. SETLFS only updates KERNAL workspace $B8/$BA/$B9 and touches no I/O register.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28084,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28086,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":28088,"t":"code","b":[160,2],"m":"ldy","o":"#$02"},{"a":28090,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28092,"t":"code","b":[170],"m":"tax"},{"a":28093,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":28095,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28097,"t":"code","b":[168],"m":"tay"},{"a":28098,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":28100,"t":"code","b":[76,186,255],"m":"jmp","oa":65466,"o":"KERNAL_SETLFS"},{"a":28103,"l":"kernal_setnam_wrapper","c":"KERNAL SETNAM wrapper. Inputs: argument bytes 0-1=filename pointer; the routine scans to NUL to derive length. Outputs: KERNAL filename parameters set through SETNAM $FFBD. Assumptions: $04/$05 must point at a two-byte pointer to a NUL-terminated filename; the pointer is copied into $24/$25, so those bytes must be free, and the name must actually terminate because the length scan is unbounded. KERNAL ROM must be banked in, and the name buffer must stay intact until OPEN, since SETNAM only records the pointer. Clobbers: A,X,Y and zero-page $24/$25. Requires KERNAL ROM visible. Hardware: Tail-jumps to KERNAL SETNAM $FFBD with A=length and X/Y=name pointer. SETNAM writes only KERNAL workspace $B7/$BB/$BC and touches no I/O register.","t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28105,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28107,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28109,"t":"code","b":[136],"m":"dey"},{"a":28110,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28112,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28114,"t":"code","b":[170],"m":"tax"},{"a":28115,"l":"LAB_6dd3","t":"code","b":[177,36],"m":"lda","oa":36,"x":[28120],"o":"(shared_pointer_or_math_sign_lo),y"},{"a":28117,"t":"code","b":[240,3],"m":"beq","oa":28122,"o":"LAB_6dda"},{"a":28119,"t":"code","b":[200],"m":"iny"},{"a":28120,"t":"code","b":[208,249],"m":"bne","oa":28115,"o":"LAB_6dd3"},{"a":28122,"l":"LAB_6dda","t":"code","b":[152],"m":"tya","x":[28117]},{"a":28123,"t":"code","b":[164,37],"m":"ldy","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28125,"t":"code","b":[76,189,255],"m":"jmp","oa":65469,"o":"KERNAL_SETNAM"},{"a":28128,"l":"kernal_open_wrapper","c":"KERNAL OPEN wrapper. Inputs: previously prepared SETLFS/SETNAM state. Outputs: VM primary low is 0 on clear carry or the KERNAL error byte on set carry; $0B=0. Also stores READST result at $8019. Assumptions: SETLFS and SETNAM must already have been called and KERNAL ROM must be banked in. The routine relies on the carry-set/carry-clear convention of $FFC0 and hands the result to $6E22, which also records READST at $8019, so callers must read the status from there rather than from A. Clobbers: A and flags. Calls OPEN $FFC0. Hardware: Calls KERNAL OPEN $FFC0, which for disk devices drives the IEC bus through CIA 2 port A $DD00, then falls into $6E22, which calls READST $FFB7.","t":"code","b":[32,192,255],"m":"jsr","oa":65472,"o":"KERNAL_OPEN"},{"a":28131,"t":"code","b":[76,34,110],"m":"jmp","oa":28194,"o":"kernal_status_to_vm_primary"},{"a":28134,"l":"kernal_clrchn_wrapper","c":"Tail wrapper for KERNAL CLRCHN $FFCC. Inputs: none. Outputs: KERNAL restores default I/O channels. No local return work; requires KERNAL ROM visible. Assumptions: KERNAL ROM must be banked in. This is a JMP, so the caller's return address must already be on the stack and CLRCHN returns to it directly; any channel previously selected with CHKIN or CHKOUT is dropped, so the caller must not expect a redirected channel to survive. Hardware: Tail-jumps to KERNAL CLRCHN $FFCC, which restores the default input/output devices and, for serial devices, issues UNTLK/UNLSN over CIA 2 port A $DD00. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,204,255],"m":"jmp","oa":65484,"o":"KERNAL_CLRCHN"},{"a":28137,"l":"kernal_chkin_wrapper","c":"KERNAL CHKIN wrapper. Inputs: argument byte 0=logical file number. Outputs: VM primary normalized by $6E22 and serial status recorded at $8019. Assumptions: $04/$05 must point at a record whose first byte is a logical file number that has already been OPENed, and KERNAL ROM must be banked in. The result is normalised by $6E22, which overwrites VM primary and stores READST at $8019. Clobbers: A,X and flags. Calls CHKIN $FFC6. Hardware: Calls KERNAL CHKIN $FFC6, which for serial files sends TALK/TKSA over CIA 2 port A $DD00, then $6E22 calls READST $FFB7.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28139,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28141,"t":"code","b":[170],"m":"tax"},{"a":28142,"t":"code","b":[32,198,255],"m":"jsr","oa":65478,"o":"KERNAL_CHKIN"},{"a":28145,"t":"code","b":[76,34,110],"m":"jmp","oa":28194,"o":"kernal_status_to_vm_primary"},{"a":28148,"l":"kernal_chrin_wrapper","c":"KERNAL CHRIN wrapper. Inputs: current input channel. Outputs: character/error byte normalized into VM primary low $0A by $6E26, $0B=0, and READST saved at $8019. Assumptions: An input channel must already be selected with CHKIN, or the default keyboard channel accepted, and KERNAL ROM must be banked in. The routine jumps into $6E26 rather than $6E22, so the byte in A is stored unconditionally: the caller cannot distinguish data from an error here and must consult $8019. Clobbers: A and flags. Calls CHRIN $FFCF and requires KERNAL ROM visible. Hardware: Calls KERNAL CHRIN $FFCF, which reads the serial bus via CIA 2 $DD00 for disk channels or the keyboard buffer for the default channel, then $6E26 calls READST $FFB7.","t":"code","b":[32,207,255],"m":"jsr","oa":65487,"o":"KERNAL_CHRIN"},{"a":28151,"t":"code","b":[76,38,110],"m":"jmp","oa":28198,"o":"kernal_result_zero_and_capture_status"},{"a":28154,"l":"kernal_getin_wrapper","c":"KERNAL GETIN wrapper. Inputs: current input channel. Outputs: key/input byte in VM primary low $0A, $0B=0; READST saved at $8019. Assumptions: KERNAL ROM must be banked in and the KERNAL IRQ must still be running SCNKEY, because GETIN returns bytes from the queue that handler fills -- with the game's own CINV hook at $4229 installed, the chain must still reach $EA31. A zero result means 'no key', not an error. Clobbers: A and flags. Calls GETIN $FFE4. Hardware: Calls KERNAL GETIN $FFE4, which for the default channel drains the keyboard buffer filled by SCNKEY scanning the CIA 1 matrix at $DC00/$DC01, and for serial channels reads via CIA 2 $DD00; $6E26 then calls READST $FFB7.","t":"code","b":[32,228,255],"m":"jsr","oa":65508,"o":"KERNAL_GETIN"},{"a":28157,"t":"code","b":[76,38,110],"m":"jmp","oa":28198,"o":"kernal_result_zero_and_capture_status"},{"a":28160,"l":"kernal_chkout_wrapper","c":"KERNAL CHKOUT wrapper. Inputs: argument byte 0=logical file number. Outputs: VM primary normalized by $6E22; READST saved at $8019. Assumptions: $04/$05 must point at a record whose first byte is an already-OPENed logical file number, and KERNAL ROM must be banked in. The result is normalised by $6E22, which stores READST at $8019. Clobbers: A,X and flags. Calls CHKOUT $FFC9. Hardware: Calls KERNAL CHKOUT $FFC9, which for serial files sends LISTEN/SECOND over CIA 2 port A $DD00, then $6E22 calls READST $FFB7.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28162,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28164,"t":"code","b":[170],"m":"tax"},{"a":28165,"t":"code","b":[32,201,255],"m":"jsr","oa":65481,"o":"KERNAL_CHKOUT"},{"a":28168,"t":"code","b":[76,34,110],"m":"jmp","oa":28194,"o":"kernal_status_to_vm_primary"},{"a":28171,"l":"kernal_chrout_wrapper","c":"KERNAL CHROUT wrapper. Inputs: argument byte 0=character/PETSCII byte. Outputs: VM primary normalized by $6E22; READST saved at $8019. Assumptions: $04/$05 must point at a record whose first byte is the PETSCII byte to send, an output channel must already be selected with CHKOUT or the default screen accepted, and KERNAL ROM must be banked in. Clobbers: A and flags. Calls CHROUT $FFD2. Hardware: Calls KERNAL CHROUT $FFD2, which writes through the screen editor for the default channel or CIOUT over CIA 2 port A $DD00 for serial files, then $6E22 calls READST $FFB7.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28173,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28175,"t":"code","b":[32,210,255],"m":"jsr","oa":65490,"o":"KERNAL_CHROUT"},{"a":28178,"t":"code","b":[76,34,110],"m":"jmp","oa":28194,"o":"kernal_status_to_vm_primary"},{"a":28181,"l":"kernal_clall_wrapper","c":"Tail wrapper for KERNAL CLALL $FFE7. Inputs: none. Outputs: all logical files/channels closed by KERNAL. Requires KERNAL ROM visible. Assumptions: KERNAL ROM must be banked in. This is a JMP, so the caller's return address must already be on the stack. All logical files are forgotten without being properly closed, so any file whose data must reach the disk has to be closed beforehand. Hardware: Tail-jumps to KERNAL CLALL $FFE7, which clears the KERNAL file tables and calls CLRCHN, releasing the serial bus through CIA 2 port A $DD00. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,231,255],"m":"jmp","oa":65511,"o":"KERNAL_CLALL"},{"a":28184,"l":"kernal_close_wrapper","c":"KERNAL CLOSE wrapper. Inputs: argument byte 0=logical file number. Outputs: VM primary normalized by $6E22; READST saved at $8019. Assumptions: $04/$05 must point at a record whose first byte is the logical file number, and KERNAL ROM must be banked in. The result is normalised by $6E22, which also records READST at $8019. Clobbers: A and flags. Calls CLOSE $FFC3. Hardware: Calls KERNAL CLOSE $FFC3, which for serial files sends the close sequence over CIA 2 port A $DD00, then $6E22 calls READST $FFB7.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28186,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28188,"t":"code","b":[32,195,255],"m":"jsr","oa":65475,"o":"KERNAL_CLOSE"},{"a":28191,"t":"code","b":[76,34,110],"m":"jmp","oa":28194,"o":"kernal_status_to_vm_primary"},{"a":28194,"l":"kernal_status_to_vm_primary","c":"Normalize a KERNAL carry/error result for the VM and capture serial status. Inputs: A=KERNAL return/error, C=error flag. Outputs: $0A=0 on success or incoming A on failure, $0B=0; $8019=READST $FFB7. Assumptions: Entered either at $6E22, where the carry flag is the KERNAL error indicator and A the error code, or at $6E26, where A is already the final value; callers must choose the correct entry. KERNAL ROM must be banked in for the READST call, and $8019 is overwritten unconditionally. Clobbers: A and flags. Hardware: Calls KERNAL READST $FFB7 and stores the returned serial/tape status byte at $8019. It touches no I/O register directly.","t":"code","b":[176,2],"m":"bcs","oa":28198,"x":[28131,28145,28168,28178,28191],"o":"kernal_result_zero_and_capture_status"},{"a":28196,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28198,"l":"kernal_result_zero_and_capture_status","c":"Shared tail of the KERNAL IEC wrapper family. It stores A into VM primary low $0A, clears the primary high byte, calls KERNAL READST $FFB7 and saves the returned serial status byte to $8019. Reached three ways: by branch from kernal_status_to_vm_primary at $6E22 when carry is clear (success, A already forced to 0 at $6E24) or when carry is set (A carries the KERNAL error code), and by direct jump from the GETIN and CHRIN wrappers at $6DF7 and $6DFD, which pass the fetched input byte through unchanged. Inputs: A = the value to publish as the VM result, which is 0 on a successful KERNAL call, the KERNAL error code on a failed one, or the fetched input byte from GETIN/CHRIN. Outputs: VM primary $0A = A, $0B = 0; $8019 = the READST result. Returns by RTS to the wrapper's caller. Assumptions: KERNAL ROM must be banked in, so the 6510 port must have HIRAM set ($01 = $36 or $37) when this tail runs; entered only by branch or jump from its sibling wrappers, never called directly. Clobbers: A, flags, VM primary $0A/$0B and $8019. Hardware: calls KERNAL READST at $FFB7, which reads the KERNAL serial/tape status byte; the callers reach CIA 1 $DC00/$DC01 and CIA 2 $DD00 through the KERNAL routines themselves.","t":"code","b":[133,10],"m":"sta","oa":10,"x":[28151,28157,28194],"o":"vm_primary_value_b0"},{"a":28200,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28202,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":28204,"t":"code","b":[32,183,255],"m":"jsr","oa":65463,"o":"KERNAL_READST"},{"a":28207,"t":"code","b":[141,25,128],"m":"sta","oa":32793,"o":"kernal_readst_last_status"},{"a":28210,"t":"code","b":[96],"m":"rts"},{"a":28211,"l":"terminate_to_basic_with_status","c":"Run the optional cleanup callback and return to BASIC warm start.\nInputs: +8 termination status.\nOutputs: normally does not return.\nAssumptions: $7FCF is zero or a valid cleanup callback.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; cleanup-defined state; BASIC takes ownership.\nHardware: banks/restores ROM and transfers to BASIC.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $6E38-$6E42 (6 decoded operations); native calls $6E43. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":28214,"l":"vm_frame_adjust_6e33","c":"Signed frame adjustment 0 for terminate_to_basic_with_status at $6E33, consumed by the $70F8 VM gateway before bytecode begins at $6E38. Run the optional cleanup callback and return to BASIC warm start.","t":"word","b":[0,0],"d":[0]},{"a":28216,"l":"vm_bytecode_6e33","c":"Compiled bytecode belonging to terminate_to_basic_with_status ($6E33). Run the optional cleanup callback and return to BASIC warm start. This position is the opcode of load_primary_absolute_word_alias at $6E38. The procedure decodes to 6 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include enter_basic_warm_start.","t":"byte","b":[164,207,127,221,60,172,67,110]},{"a":28224,"t":"byte","b":[174,2,207]},{"a":28227,"l":"enter_basic_warm_start","c":"Enter BASIC warm start. Inputs: argument word becomes $02AA/$02AB. It sets LORAM in CPU port $01 so BASIC ROM is readable at $A000-$BFFF, then JMP ($A002) through the BASIC warm-start vector. Outputs: no return. Leaves BASIC mapped in and assumes HIRAM already set. Assumptions: $04/$05 must point at a two-byte argument word, which is written to $02AA/$02AB before the jump. BASIC ROM must be readable once LORAM is set -- the resident runtime normally has RAM there, so the underlying $A000-$BFFF ROM image must be intact -- and HIRAM must already be set. Control never returns. Hardware: Reads the 6510 processor port $01 and sets bit 0 (LORAM) so BASIC ROM is visible at $A000-$BFFF, then JMP ($A002) through the BASIC warm-start vector. Clobbers: A, Y and the processor flags; writes basic_warm_start_argument_lo, basic_warm_start_argument_hi, cpu_port_underlying_ram.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28229,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28231,"t":"code","b":[141,170,2],"m":"sta","oa":682,"o":"basic_warm_start_argument_lo"},{"a":28234,"t":"code","b":[200],"m":"iny"},{"a":28235,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28237,"t":"code","b":[141,171,2],"m":"sta","oa":683,"o":"basic_warm_start_argument_hi"},{"a":28240,"t":"code","b":[165,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":28242,"t":"code","b":[9,1],"m":"ora","o":"#$01"},{"a":28244,"t":"code","b":[133,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram"},{"a":28246,"t":"code","b":[108,2,160],"m":"jmp","oa":40962,"o":"(descriptor_interpreter_choice_cursor_continuation)"},{"a":28249,"l":"ascii_is_digit","c":"Test whether a byte is ASCII '0' through '9'.\nInputs: +8 byte.\nOutputs: 1 for a digit, otherwise 0.\nAssumptions: none.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; none.\nHardware: none.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $6E5E-$6E6F (12 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":28252,"l":"vm_frame_adjust_6e59","c":"Signed frame adjustment 0 for ascii_is_digit at $6E59, consumed by the $70F8 VM gateway before bytecode begins at $6E5E. Test whether a byte is ASCII '0' through '9'.","t":"word","b":[0,0],"d":[0]},{"a":28254,"l":"vm_bytecode_6e59","c":"Compiled bytecode belonging to ascii_is_digit ($6E59). Test whether a byte is ASCII '0' through '9'. This position is the opcode of load_primary_local_+8 at $6E5E. The procedure decodes to 12 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[12,139,57,199,216,110,110,12]},{"a":28262,"t":"byte","b":[139,48,201,216,110,110,65,207]},{"a":28270,"t":"byte","b":[64,207]},{"a":28272,"l":"AllocateVmHeapBlock","c":"Compiled VM procedure allocating size at frame +8. Computes 16-bit wrapped heap+size and compares unsigned against its current expression-stack address minus 256; rejects only an end above that guard. Accepted requests return old heap and update $7FCB/$7FCC. Eight controlled native executions verify exact guard acceptance, guard+1 rejection and three overflow cases; overflow can move the heap backwards or to zero. This does not establish a normal menu path that requests an overflowing size.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":28275,"l":"vm_frame_adjust_6e70","c":"Signed frame adjustment -2 for vm_heap_allocate at $6E70, consumed by the $70F8 VM gateway before bytecode begins at $6E75. Allocate an upward-growing VM heap block below the expression-stack guard.","t":"word","b":[254,255],"d":[65534]},{"a":28277,"l":"vm_bytecode_6e70","c":"Compiled bytecode belonging to vm_heap_allocate ($6E70). Allocate an upward-growing VM heap block below the expression-stack guard. This position is the opcode of load_primary_absolute_word_alias at $6E75. The procedure decodes to 20 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[164,4,0,144,0,255,179,164]},{"a":28285,"t":"byte","b":[203,127,28,187,180,200,216,136]},{"a":28293,"t":"byte","b":[110,64,207,164,203,127,43,12]},{"a":28301,"t":"byte","b":[205,164,203,127,187,168,203,127]},{"a":28309,"t":"byte","b":[11]},{"a":28310,"l":"vm_body_6e70_6e96","c":"Compiled bytecode belonging to vm_heap_allocate ($6E70). Allocate an upward-growing VM heap block below the expression-stack guard. This position is the opcode of return at $6E96. The procedure decodes to 20 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[207],"x":[28635]},{"a":28311,"l":"math_operand_x_byte0","c":"Four-byte little-endian work copy of the operand addressed by X on entry to the 32-bit arithmetic helpers. For division this is the divisor; the high byte supplies its two-complement sign.","t":"byte","b":[252],"x":[28348,28527,28530,28584]},{"a":28312,"l":"arithmetic_operand_upper_bytes_6e97","c":"Upper three bytes of the four-byte little-endian arithmetic work operand beginning $6E97. Resident 32-bit multiply/divide helpers shift and copy these bytes; they do not begin a new operand allocation.","t":"byte","b":[0],"x":[28591]},{"a":28313,"l":"math_operand_x_byte2","t":"byte","b":[0],"x":[28598]},{"a":28314,"l":"math_operand_x_byte3_sign","t":"byte","b":[0],"x":[28385,28510,28515,28604,28649]},{"a":28315,"l":"math_operand_y_result_byte0","c":"Four-byte little-endian work copy of the operand addressed by Y. Multiply builds the low product here; division builds the quotient here; the result wrapper copies the selected four-byte result back to the Y buffer.","t":"byte","b":[76],"x":[28333,28375,28415,28428,28549,28552,28561,28621]},{"a":28316,"l":"arithmetic_operand_upper_bytes_6e9b","c":"Upper three bytes of the four-byte little-endian arithmetic work operand beginning $6E9B. Resident 32-bit multiply/divide helpers shift and copy these bytes; they do not begin a new operand allocation.","t":"byte","b":[44],"x":[28372,28564]},{"a":28317,"l":"math_operand_y_result_byte2","t":"byte","b":[0],"x":[28369,28567]},{"a":28318,"l":"math_operand_y_result_byte3_sign","t":"byte","b":[0],"x":[28366,28505,28537,28570]},{"a":28319,"l":"multiply_i32_low32","c":"Multiply two four-byte values and retain the low 32 bits. Input: X points to the first little-endian operand; Y points to the second operand and result buffer. The routine uses a 32-round shift/add multiplication. Two-complement signed multiplication has the same low 32 bits as unsigned multiplication, so no separate sign pass is required. Output: Y..Y+3 receives the product modulo 2^32; A=0, X=0, Y=1. Assumptions: X and Y must each be a direct-page address whose four operand bytes lie at X-3..X and Y-3..Y, because the loader indexes backwards, so neither may be below $03. The work area $6E97-$6E9E and zero page $02 and $24-$27 must be free, and the caller must accept a wrapped low-32-bit product since no overflow is signalled. Clobbers $02, $24-$27 and $6E97-$6E9E. No overflow indication is returned. Hardware: Touches no hardware: operands, the RAM work area at $6E97-$6E9E and the zero-page scratch are all memory; the only callee is the operand loader $6FD5. Clobbers: A, X, Y and the processor flags; writes shared_pointer_or_math_sign_lo, shared_pointer_or_math_sign_hi, division_remainder_b2, division_remainder_b3, shared_scratch_02_lo, $24,X, math_operand_y_result_byte3_sign, math_operand_y_result_byte2, math_operand_y_result_byte1, math_operand_y_result_byte0 and 1 more; uses the 6502 stack (1 push, 1 pull in this body).","t":"code","b":[32,213,111],"m":"jsr","oa":28629,"x":[24282],"o":"load_i32_operands_to_math_work"},{"a":28322,"t":"code","b":[72],"m":"pha"},{"a":28323,"t":"code","b":[134,36],"m":"stx","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28325,"t":"code","b":[134,37],"m":"stx","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28327,"t":"code","b":[134,38],"m":"stx","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":28329,"t":"code","b":[134,39],"m":"stx","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":28331,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":28333,"l":"LAB_6ead","t":"code","b":[173,155,110],"m":"lda","oa":28315,"x":[28379],"o":"math_operand_y_result_byte0"},{"a":28336,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":28337,"t":"code","b":[144,19],"m":"bcc","oa":28358,"o":"LAB_6ec6"},{"a":28339,"t":"code","b":[24],"m":"clc"},{"a":28340,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28342,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28344,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28346,"l":"LAB_6eba","t":"code","b":[181,36],"m":"lda","oa":36,"x":[28356],"o":"shared_pointer_or_math_sign_lo,x"},{"a":28348,"t":"code","b":[125,151,110],"m":"adc","oa":28311,"o":"math_operand_x_byte0,x"},{"a":28351,"t":"code","b":[149,36],"m":"sta","oa":36,"o":"shared_pointer_or_math_sign_lo,x"},{"a":28353,"t":"code","b":[232],"m":"inx"},{"a":28354,"t":"code","b":[198,2],"m":"dec","oa":2,"o":"shared_scratch_02_lo"},{"a":28356,"t":"code","b":[208,244],"m":"bne","oa":28346,"o":"LAB_6eba"},{"a":28358,"l":"LAB_6ec6","t":"code","b":[70,39],"m":"lsr","oa":39,"x":[28337],"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":28360,"t":"code","b":[102,38],"m":"ror","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":28362,"t":"code","b":[102,37],"m":"ror","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28364,"t":"code","b":[102,36],"m":"ror","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28366,"t":"code","b":[110,158,110],"m":"ror","oa":28318,"o":"math_operand_y_result_byte3_sign"},{"a":28369,"t":"code","b":[110,157,110],"m":"ror","oa":28317,"o":"math_operand_y_result_byte2"},{"a":28372,"t":"code","b":[110,156,110],"m":"ror","oa":28316,"o":"arithmetic_operand_upper_bytes_6e9b"},{"a":28375,"t":"code","b":[110,155,110],"m":"ror","oa":28315,"o":"math_operand_y_result_byte0"},{"a":28378,"t":"code","b":[136],"m":"dey"},{"a":28379,"t":"code","b":[208,208],"m":"bne","oa":28333,"o":"LAB_6ead"},{"a":28381,"t":"code","b":[104],"m":"pla"},{"a":28382,"t":"code","b":[170],"m":"tax"},{"a":28383,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":28385,"l":"LAB_6ee1","t":"code","b":[185,154,110],"m":"lda","oa":28314,"x":[28392],"o":"math_operand_x_byte3_sign,y"},{"a":28388,"t":"code","b":[149,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi,x"},{"a":28390,"t":"code","b":[202],"m":"dex"},{"a":28391,"t":"code","b":[136],"m":"dey"},{"a":28392,"t":"code","b":[208,247],"m":"bne","oa":28385,"o":"LAB_6ee1"},{"a":28394,"t":"code","b":[152],"m":"tya"},{"a":28395,"t":"code","b":[170],"m":"tax"},{"a":28396,"t":"code","b":[200],"m":"iny"},{"a":28397,"t":"code","b":[96],"m":"rts"},{"a":28398,"l":"divide_i32_quotient_nonzero_contract","c":"Signed 32-bit quotient wrapper. All resident callers arise from MAP offset arithmetic and load constant divisor 252; zero is outside the active caller contract. Inputs: signed 32-bit operands in the native math work areas. Outputs: signed quotient. Assumptions: X must address the four-byte divisor and Y the four-byte dividend/result, both in zero page, and the divisor must be non-zero -- the core performs no zero check and would return a meaningless magnitude. Every resident caller supplies the constant 252 from MAP offset arithmetic. The work area $6E97-$6E9E and zero page $02/$03 and $24-$27 must be free. Clobbers: math scratch and flags. Hardware: none.","t":"code","b":[32,76,111],"m":"jsr","oa":28492,"x":[23757],"o":"divide_i32_unsigned_magnitude_core"},{"a":28401,"t":"code","b":[170],"m":"tax"},{"a":28402,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28404,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28406,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28408,"t":"code","b":[181,0],"m":"lda","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":28410,"t":"code","b":[16,16],"m":"bpl","oa":28428,"o":"LAB_6f0c"},{"a":28412,"t":"code","b":[56],"m":"sec"},{"a":28413,"l":"LAB_6efd","t":"code","b":[169,0],"m":"lda","x":[28424],"o":"#$00"},{"a":28415,"t":"code","b":[249,155,110],"m":"sbc","oa":28315,"o":"math_operand_y_result_byte0,y"},{"a":28418,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":28420,"t":"code","b":[232],"m":"inx"},{"a":28421,"t":"code","b":[200],"m":"iny"},{"a":28422,"t":"code","b":[198,2],"m":"dec","oa":2,"o":"shared_scratch_02_lo"},{"a":28424,"t":"code","b":[208,243],"m":"bne","oa":28413,"o":"LAB_6efd"},{"a":28426,"t":"code","b":[240,11],"m":"beq","oa":28439,"o":"LAB_6f17"},{"a":28428,"l":"LAB_6f0c","t":"code","b":[185,155,110],"m":"lda","oa":28315,"x":[28410,28437],"o":"math_operand_y_result_byte0,y"},{"a":28431,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":28433,"t":"code","b":[232],"m":"inx"},{"a":28434,"t":"code","b":[200],"m":"iny"},{"a":28435,"t":"code","b":[198,2],"m":"dec","oa":2,"o":"shared_scratch_02_lo"},{"a":28437,"t":"code","b":[208,245],"m":"bne","oa":28428,"o":"LAB_6f0c"},{"a":28439,"l":"LAB_6f17","t":"code","b":[162,0],"m":"ldx","x":[28426],"o":"#$00"},{"a":28441,"t":"code","b":[138],"m":"txa"},{"a":28442,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28444,"t":"code","b":[96],"m":"rts"},{"a":28445,"l":"divide_i32_remainder_nonzero_contract","c":"Signed 32-bit remainder wrapper. All resident callers arise from MAP offset arithmetic and load constant divisor 252; zero is outside the active caller contract. Inputs: signed 32-bit operands. Outputs: signed remainder. Assumptions: X must address the four-byte divisor and Y the dividend/result, both in zero page, and the divisor must be non-zero because the shared core has no zero check; all resident callers pass the constant 252. The remainder is taken from $24-$27, so that block plus $02/$03 and the work area $6E97-$6E9E must be free. Clobbers: math scratch and flags. Hardware: none.","t":"code","b":[32,76,111],"m":"jsr","oa":28492,"x":[23689],"o":"divide_i32_unsigned_magnitude_core"},{"a":28448,"t":"code","b":[170],"m":"tax"},{"a":28449,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":28451,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28453,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28455,"t":"code","b":[181,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":28457,"t":"code","b":[16,16],"m":"bpl","oa":28475,"o":"LAB_6f3b"},{"a":28459,"t":"code","b":[56],"m":"sec"},{"a":28460,"l":"LAB_6f2c","t":"code","b":[169,0],"m":"lda","x":[28471],"o":"#$00"},{"a":28462,"t":"code","b":[249,36,0],"m":"sbc","oa":36,"o":"shared_pointer_or_math_sign_lo,y"},{"a":28465,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":28467,"t":"code","b":[232],"m":"inx"},{"a":28468,"t":"code","b":[200],"m":"iny"},{"a":28469,"t":"code","b":[198,2],"m":"dec","oa":2,"o":"shared_scratch_02_lo"},{"a":28471,"t":"code","b":[208,243],"m":"bne","oa":28460,"o":"LAB_6f2c"},{"a":28473,"t":"code","b":[240,11],"m":"beq","oa":28486,"o":"LAB_6f46"},{"a":28475,"l":"LAB_6f3b","t":"code","b":[185,36,0],"m":"lda","oa":36,"x":[28457,28484],"o":"shared_pointer_or_math_sign_lo,y"},{"a":28478,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":28480,"t":"code","b":[232],"m":"inx"},{"a":28481,"t":"code","b":[200],"m":"iny"},{"a":28482,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":28484,"t":"code","b":[208,245],"m":"bne","oa":28475,"o":"LAB_6f3b"},{"a":28486,"l":"LAB_6f46","t":"code","b":[169,0],"m":"lda","x":[28473],"o":"#$00"},{"a":28488,"t":"code","b":[170],"m":"tax"},{"a":28489,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28491,"t":"code","b":[96],"m":"rts"},{"a":28492,"l":"divide_i32_unsigned_magnitude_core","c":"Internal signed-division magnitude core. Inputs: X points to the four-byte little-endian divisor and Y to the four-byte dividend/result. It records signs in result bytes 0/1, converts both operands to magnitudes, and performs 32 restoring-division rounds. Outputs: unsigned quotient in $6E9B-$6E9E, remainder in $24-$27, A restores the original result pointer and Y=0; wrappers reapply sign. Assumptions: X must address the four-byte divisor and Y the four-byte dividend/result in zero page, and the divisor must be non-zero. The routine overwrites result bytes 0 and 1 with sign metadata before dividing, so the caller must be one of the $6EEE/$6F1D wrappers that knows to re-read them; $6E97-$6E9E, $02/$03 and $24-$27 must all be free, and an operand of $80000000 negates to itself and is outside the contract. Clobbers: A,X,Y, flags, $02/$03, $24-$27, $6E97-$6E9E and the first two result bytes. Hardware: none. Every resident native caller uses constant divisor 252 for MAP-record offset conversion, so zero is outside the active contract.","t":"code","b":[32,213,111],"m":"jsr","oa":28629,"x":[28398,28445],"o":"load_i32_operands_to_math_work"},{"a":28495,"t":"code","b":[72],"m":"pha"},{"a":28496,"t":"code","b":[134,36],"m":"stx","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28498,"t":"code","b":[134,37],"m":"stx","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28500,"t":"code","b":[134,38],"m":"stx","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":28502,"t":"code","b":[134,39],"m":"stx","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":28504,"t":"code","b":[170],"m":"tax"},{"a":28505,"t":"code","b":[173,158,110],"m":"lda","oa":28318,"o":"math_operand_y_result_byte3_sign"},{"a":28508,"t":"code","b":[149,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":28510,"t":"code","b":[77,154,110],"m":"eor","oa":28314,"o":"math_operand_x_byte3_sign"},{"a":28513,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":28515,"t":"code","b":[173,154,110],"m":"lda","oa":28314,"o":"math_operand_x_byte3_sign"},{"a":28518,"t":"code","b":[16,17],"m":"bpl","oa":28537,"o":"LAB_6f79"},{"a":28520,"t":"code","b":[56],"m":"sec"},{"a":28521,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":28523,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28525,"l":"LAB_6f6d","t":"code","b":[169,0],"m":"lda","x":[28535],"o":"#$00"},{"a":28527,"t":"code","b":[253,151,110],"m":"sbc","oa":28311,"o":"math_operand_x_byte0,x"},{"a":28530,"t":"code","b":[157,151,110],"m":"sta","oa":28311,"o":"math_operand_x_byte0,x"},{"a":28533,"t":"code","b":[232],"m":"inx"},{"a":28534,"t":"code","b":[136],"m":"dey"},{"a":28535,"t":"code","b":[208,244],"m":"bne","oa":28525,"o":"LAB_6f6d"},{"a":28537,"l":"LAB_6f79","t":"code","b":[173,158,110],"m":"lda","oa":28318,"x":[28518],"o":"math_operand_y_result_byte3_sign"},{"a":28540,"t":"code","b":[16,17],"m":"bpl","oa":28559,"o":"LAB_6f8f"},{"a":28542,"t":"code","b":[56],"m":"sec"},{"a":28543,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":28545,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28547,"l":"LAB_6f83","t":"code","b":[169,0],"m":"lda","x":[28557],"o":"#$00"},{"a":28549,"t":"code","b":[253,155,110],"m":"sbc","oa":28315,"o":"math_operand_y_result_byte0,x"},{"a":28552,"t":"code","b":[157,155,110],"m":"sta","oa":28315,"o":"math_operand_y_result_byte0,x"},{"a":28555,"t":"code","b":[232],"m":"inx"},{"a":28556,"t":"code","b":[136],"m":"dey"},{"a":28557,"t":"code","b":[208,244],"m":"bne","oa":28547,"o":"LAB_6f83"},{"a":28559,"l":"LAB_6f8f","t":"code","b":[160,32],"m":"ldy","x":[28540],"o":"#$20"},{"a":28561,"l":"LAB_6f91","t":"code","b":[14,155,110],"m":"asl","oa":28315,"x":[28625],"o":"math_operand_y_result_byte0"},{"a":28564,"t":"code","b":[46,156,110],"m":"rol","oa":28316,"o":"arithmetic_operand_upper_bytes_6e9b"},{"a":28567,"t":"code","b":[46,157,110],"m":"rol","oa":28317,"o":"math_operand_y_result_byte2"},{"a":28570,"t":"code","b":[46,158,110],"m":"rol","oa":28318,"o":"math_operand_y_result_byte3_sign"},{"a":28573,"t":"code","b":[38,36],"m":"rol","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28575,"t":"code","b":[38,37],"m":"rol","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28577,"t":"code","b":[38,38],"m":"rol","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":28579,"t":"code","b":[38,39],"m":"rol","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":28581,"t":"code","b":[56],"m":"sec"},{"a":28582,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28584,"t":"code","b":[237,151,110],"m":"sbc","oa":28311,"o":"math_operand_x_byte0"},{"a":28587,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28589,"t":"code","b":[165,37],"m":"lda","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28591,"t":"code","b":[237,152,110],"m":"sbc","oa":28312,"o":"arithmetic_operand_upper_bytes_6e97"},{"a":28594,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":28596,"t":"code","b":[165,38],"m":"lda","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":28598,"t":"code","b":[237,153,110],"m":"sbc","oa":28313,"o":"math_operand_x_byte2"},{"a":28601,"t":"code","b":[170],"m":"tax"},{"a":28602,"t":"code","b":[165,39],"m":"lda","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":28604,"t":"code","b":[237,154,110],"m":"sbc","oa":28314,"o":"math_operand_x_byte3_sign"},{"a":28607,"t":"code","b":[144,15],"m":"bcc","oa":28624,"o":"LAB_6fd0"},{"a":28609,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":28611,"t":"code","b":[134,38],"m":"stx","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":28613,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":28615,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":28617,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":28619,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":28621,"t":"code","b":[238,155,110],"m":"inc","oa":28315,"o":"math_operand_y_result_byte0"},{"a":28624,"l":"LAB_6fd0","t":"code","b":[136],"m":"dey","x":[28607]},{"a":28625,"t":"code","b":[208,190],"m":"bne","oa":28561,"o":"LAB_6f91"},{"a":28627,"t":"code","b":[104],"m":"pla"},{"a":28628,"t":"code","b":[96],"m":"rts"},{"a":28629,"l":"load_i32_operands_to_math_work","c":"Copy two four-byte little-endian operands into the arithmetic work area. Input: X points to operand X at direct-page addresses X..X+3; Y points to operand Y at Y..Y+3. Output: $6E97-$6E9A contains operand X and $6E9B-$6E9E contains operand Y; A preserves the original Y pointer, X=0, Y=0. Assumptions: X and Y must each be a direct-page address whose four operand bytes lie at X-3..X and Y-3..Y, since both loops index backwards, so neither may be below $03. The work area $6E97-$6E9E is overwritten unconditionally, and the caller must preserve the returned A because it is the only surviving copy of the original Y pointer. Clobbers the arithmetic work bytes and processor flags. The callers use operand X as the divisor and operand Y as the dividend/result for division. Hardware: Touches no hardware: it copies eight zero-page bytes into the RAM work area at $6E97-$6E9E and calls nothing. Clobbers: A, X, Y and the processor flags; writes $6E96,Y, $6E9A,Y; uses the 6502 stack (2 push, 2 pull in this body).","t":"code","b":[152],"m":"tya","x":[28319,28492]},{"a":28630,"t":"code","b":[72],"m":"pha"},{"a":28631,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":28633,"l":"LAB_6fd9","t":"code","b":[181,3],"m":"lda","oa":3,"x":[28640],"o":"shared_scratch_02_hi,x"},{"a":28635,"t":"code","b":[153,150,110],"m":"sta","oa":28310,"o":"vm_body_6e70_6e96,y"},{"a":28638,"t":"code","b":[202],"m":"dex"},{"a":28639,"t":"code","b":[136],"m":"dey"},{"a":28640,"t":"code","b":[208,247],"m":"bne","oa":28633,"o":"LAB_6fd9"},{"a":28642,"t":"code","b":[104],"m":"pla"},{"a":28643,"t":"code","b":[72],"m":"pha"},{"a":28644,"t":"code","b":[170],"m":"tax"},{"a":28645,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":28647,"l":"LAB_6fe7","t":"code","b":[181,3],"m":"lda","oa":3,"x":[28654],"o":"shared_scratch_02_hi,x"},{"a":28649,"t":"code","b":[153,154,110],"m":"sta","oa":28314,"o":"math_operand_x_byte3_sign,y"},{"a":28652,"t":"code","b":[202],"m":"dex"},{"a":28653,"t":"code","b":[136],"m":"dey"},{"a":28654,"t":"code","b":[208,247],"m":"bne","oa":28647,"o":"LAB_6fe7"},{"a":28656,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":28658,"t":"code","b":[104],"m":"pla"},{"a":28659,"t":"code","b":[96],"m":"rts"},{"a":28660,"l":"inline_native_call_gateway","c":"Bridge an inline native-call descriptor into the game VM calling convention. Layout after JSR $6FF4: a two-byte native target, JSR $7033, one argument-byte count, then the continuation. The gateway removes its hardware-stack return address, reads the argument count at return+6, reserves that many bytes below VM stack pointer $04/$05, and moves the native caller arguments from the hardware stack to VM stack memory. It loads the inline target into $0A/$0B, synthesizes a hardware return address for the following JSR $7033, sets A=0, X=0, Y=1, and jumps indirectly to the target. Assumptions: Only valid when the caller is a JSR $6FF4 followed by the exact descriptor {two-byte native target, JSR $7033, argument-byte count}: the gateway reads the target at return+1 and the count at return+6, so those bytes must be typed as data and must not be relocated. The native caller must already have pushed exactly that many argument bytes on the hardware stack, and $02-$05 and $0A/$0B must be free. Clobbers $02-$05 and $0A/$0B. The descriptor bytes must be typed as data and both gateway JSRs require CALL_RETURN overrides. Hardware: Touches no hardware: it manipulates the 6502 hardware stack and zero-page pointers only, then JMP ($0A). Any register access belongs to the dispatched target. Inputs: memory it reads before writing: vm_expression_stack_ptr_lo, $02,Y, vm_expression_stack_ptr_hi. Outputs: writes shared_scratch_02_lo, shared_scratch_02_hi, vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi, $04,Y, vm_primary_value_b0, vm_primary_value_b1; control then leaves through ($0A). Clobbers: A, X, Y and the processor flags; writes the locations named under Outputs; uses the 6502 stack (2 push, 3 pull in this body).\nfunction: undefined inline_native_call_gateway()","t":"code","b":[104],"m":"pla","x":[23454,23467,23540,24037,26609,26661,42114,42136,42292,42456,43240]},{"a":28661,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28663,"t":"code","b":[104],"m":"pla"},{"a":28664,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":28666,"t":"code","b":[56],"m":"sec"},{"a":28667,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":28669,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28671,"t":"code","b":[241,2],"m":"sbc","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":28673,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28675,"t":"code","b":[176,2],"m":"bcs","oa":28679,"o":"LAB_7007"},{"a":28677,"t":"code","b":[198,5],"m":"dec","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":28679,"l":"LAB_7007","t":"code","b":[177,2],"m":"lda","oa":2,"x":[28675],"o":"(shared_scratch_02_lo),y"},{"a":28681,"t":"code","b":[170],"m":"tax"},{"a":28682,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":28684,"l":"LAB_700c","t":"code","b":[104],"m":"pla","x":[28689]},{"a":28685,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":28687,"t":"code","b":[200],"m":"iny"},{"a":28688,"t":"code","b":[202],"m":"dex"},{"a":28689,"t":"code","b":[208,249],"m":"bne","oa":28684,"o":"LAB_700c"},{"a":28691,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28693,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":28695,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":28697,"t":"code","b":[200],"m":"iny"},{"a":28698,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":28700,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":28702,"t":"code","b":[24],"m":"clc"},{"a":28703,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":28705,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":28707,"t":"code","b":[168],"m":"tay"},{"a":28708,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":28710,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":28712,"t":"code","b":[72],"m":"pha"},{"a":28713,"t":"code","b":[152],"m":"tya"},{"a":28714,"t":"code","b":[72],"m":"pha"},{"a":28715,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28717,"t":"code","b":[170],"m":"tax"},{"a":28718,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28720,"t":"code","b":[108,10,0],"m":"jmp","oa":10,"o":"(vm_primary_value_b0)"},{"a":28723,"l":"inline_native_call_cleanup","c":"Finish a call made through inline_native_call_gateway. The native target returns to this JSR. This routine removes its hardware-stack return address, reads the inline argument-byte count at return+1, releases that many bytes from VM stack pointer $04/$05, advances past the count byte, resets A=0, X=0, Y=1, and jumps directly to the inline continuation. It does not RTS because it has already consumed the synthetic return frame. Assumptions: Only reachable because $6FF4 pushed a synthetic return pointing at this JSR; the byte at return+1 must be the same argument count $6FF4 consumed, or the VM expression stack is released by the wrong amount. It must never be called directly, and it does not RTS because the synthetic frame has already been consumed. Clobbers $02-$05 and processor flags. Hardware: Touches no hardware: hardware-stack and zero-page pointer arithmetic ending in JMP ($02). Inputs: memory it reads before writing: vm_expression_stack_ptr_lo, $02,Y, vm_expression_stack_ptr_hi. Outputs: writes shared_scratch_02_lo, shared_scratch_02_hi, vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi; control then leaves through ($02). Clobbers: A, X, Y and the processor flags; writes the locations named under Outputs; uses the 6502 stack (0 push, 2 pull in this body).\nfunction: undefined inline_native_call_cleanup()","t":"code","b":[104],"m":"pla","x":[23459,23472,23545,24042,26614,26666,42119,42141,42297,42461,43245]},{"a":28724,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28726,"t":"code","b":[104],"m":"pla"},{"a":28727,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":28729,"t":"code","b":[24],"m":"clc"},{"a":28730,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28732,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28734,"t":"code","b":[113,2],"m":"adc","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":28736,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28738,"t":"code","b":[144,2],"m":"bcc","oa":28742,"o":"LAB_7046"},{"a":28740,"t":"code","b":[230,5],"m":"inc","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":28742,"l":"LAB_7046","t":"code","b":[24],"m":"clc","x":[28738]},{"a":28743,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":28745,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":28747,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28749,"t":"code","b":[144,2],"m":"bcc","oa":28753,"o":"LAB_7051"},{"a":28751,"t":"code","b":[230,3],"m":"inc","oa":3,"o":"shared_scratch_02_hi"},{"a":28753,"l":"LAB_7051","t":"code","b":[169,0],"m":"lda","x":[28749],"o":"#$00"},{"a":28755,"t":"code","b":[170],"m":"tax"},{"a":28756,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28758,"t":"code","b":[108,2,0],"m":"jmp","oa":2,"o":"(shared_scratch_02_lo)"},{"a":28761,"l":"runtime_descriptor_call_gateway","c":"Compiler gateway for inline native bodies. It removes its own JSR return and the native caller return, builds a nine-byte VM/runtime frame, saves $02-$09, and reads exactly three bytes after the JSR as {saved zero-page workspace count, signed 16-bit expression-stack adjustment}. A 6502 JSR return points at the last JSR byte, so adding four selects the first opcode after that header. It pushes synthetic return $70D0 so RTS enters $70D1, clears A/X, sets Y=1, and JMPs to the inline opcode. No target pointer follows the header. Assumptions: Only valid when entered by JSR $7059 from a shim whose next three bytes are the {saved-workspace count, signed 16-bit stack adjustment} header, because the body is taken as return+4 and the header must stay data. Two return addresses must be on the stack (the shim's and the native caller's), the VM expression stack must have room for the nine-byte frame plus the requested adjustment, and a non-zero saved count means $30.. must currently hold the compiler workspace to preserve. Hardware: Touches no hardware: it copies zero page $02-$09 into the VM frame, adjusts $04/$05 and pushes a synthetic $70D0 return. Any register access belongs to the inline body it enters. Inputs: memory it reads before writing: vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi, $02,Y, $0A,Y, $30,Y. Outputs: writes vm_primary_value_b0, vm_primary_value_b1, shared_scratch_02_lo, shared_scratch_02_hi, vm_secondary_value_b0, vm_secondary_value_b1, $0E,Y, vm_frame_ptr_lo, vm_instruction_ptr_lo, vm_frame_ptr_hi and 5 more; control then leaves through ($0A). Clobbers: A, X, Y and the processor flags; writes the locations named under Outputs; uses the 6502 stack (2 push, 4 pull in this body).\nfunction: undefined runtime_descriptor_call_gateway()","t":"code","b":[104],"m":"pla","x":[23404,23607,23776,23977,24231,24353,24368,26594,42071,42203,42225,43082,43374]},{"a":28762,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":28764,"t":"code","b":[104],"m":"pla"},{"a":28765,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":28767,"t":"code","b":[24],"m":"clc"},{"a":28768,"t":"code","b":[104],"m":"pla"},{"a":28769,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":28771,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28773,"t":"code","b":[104],"m":"pla"},{"a":28774,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":28776,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":28778,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":28780,"t":"code","b":[56],"m":"sec"},{"a":28781,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28783,"t":"code","b":[233,9],"m":"sbc","o":"#$09"},{"a":28785,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":28787,"t":"code","b":[165,5],"m":"lda","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":28789,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":28791,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":28793,"l":"LAB_7079","t":"code","b":[185,2,0],"m":"lda","oa":2,"x":[28799],"o":"shared_scratch_02_lo,y"},{"a":28796,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":28798,"t":"code","b":[136],"m":"dey"},{"a":28799,"t":"code","b":[16,248],"m":"bpl","oa":28793,"o":"LAB_7079"},{"a":28801,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28803,"t":"code","b":[56],"m":"sec"},{"a":28804,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":28806,"t":"code","b":[133,6],"m":"sta","oa":6,"o":"vm_frame_ptr_lo"},{"a":28808,"t":"code","b":[241,10],"m":"sbc","oa":10,"o":"(vm_primary_value_b0),y"},{"a":28810,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":28812,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":28814,"t":"code","b":[133,7],"m":"sta","oa":7,"o":"vm_frame_ptr_hi"},{"a":28816,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":28818,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"vm_instruction_ptr_hi"},{"a":28820,"t":"code","b":[177,10],"m":"lda","oa":10,"o":"(vm_primary_value_b0),y"},{"a":28822,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":28824,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":28826,"t":"code","b":[168],"m":"tay"},{"a":28827,"t":"code","b":[240,9],"m":"beq","oa":28838,"o":"LAB_70a6"},{"a":28829,"t":"code","b":[136],"m":"dey"},{"a":28830,"l":"LAB_709e","t":"code","b":[185,48,0],"m":"lda","oa":48,"x":[28836],"o":"AlterEgo_Runtime_compiler_workspace_30,y"},{"a":28833,"t":"code","b":[145,8],"m":"sta","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":28835,"t":"code","b":[136],"m":"dey"},{"a":28836,"t":"code","b":[16,248],"m":"bpl","oa":28830,"o":"LAB_709e"},{"a":28838,"l":"LAB_70a6","t":"code","b":[160,2],"m":"ldy","x":[28827],"o":"#$02"},{"a":28840,"t":"code","b":[24],"m":"clc"},{"a":28841,"t":"code","b":[165,8],"m":"lda","oa":8,"o":"vm_instruction_ptr_lo"},{"a":28843,"t":"code","b":[113,10],"m":"adc","oa":10,"o":"(vm_primary_value_b0),y"},{"a":28845,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28847,"t":"code","b":[200],"m":"iny"},{"a":28848,"t":"code","b":[165,9],"m":"lda","oa":9,"o":"vm_instruction_ptr_hi"},{"a":28850,"t":"code","b":[113,10],"m":"adc","oa":10,"o":"(vm_primary_value_b0),y"},{"a":28852,"t":"code","b":[133,5],"m":"sta","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":28854,"t":"code","b":[198,9],"m":"dec","oa":9,"o":"vm_instruction_ptr_hi"},{"a":28856,"t":"code","b":[24],"m":"clc"},{"a":28857,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":28859,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":28861,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":28863,"t":"code","b":[144,2],"m":"bcc","oa":28867,"o":"LAB_70c3"},{"a":28865,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":28867,"l":"LAB_70c3","t":"code","b":[169,112],"m":"lda","x":[28863],"o":"#$70"},{"a":28869,"t":"code","b":[72],"m":"pha"},{"a":28870,"t":"code","b":[169,208],"m":"lda","o":"#$D0"},{"a":28872,"t":"code","b":[72],"m":"pha"},{"a":28873,"t":"code","b":[169,0],"m":"lda","o":"#$00"},{"a":28875,"t":"code","b":[170],"m":"tax"},{"a":28876,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28878,"t":"code","b":[108,10,0],"m":"jmp","oa":10,"o":"(vm_primary_value_b0)"},{"a":28881,"l":"inline_native_return_epilogue","c":"Return epilogue for a body entered through $7059. RTS lands here through synthetic return $70D0. Restore optional $30+ workspace and saved $02-$09, then jump through the original native return in $02/$03. Assumptions: Only reachable by RTS from a body entered through $7059, because that gateway pushed the synthetic return $70D0. Frame pointer $06/$07 must still address the nine-byte frame and the saved-count byte at frame+8 must match what was saved; entering it in any other context restores garbage into $02-$09. Clobbers A,Y and frame scratch. Hardware: Touches no hardware: it restores the $30.. workspace and zero page $02-$09 from the RAM frame and jumps through the restored return in $02/$03. Inputs: memory it reads before writing: vm_instruction_ptr_hi, $06,Y, $08,Y, vm_frame_ptr_lo, vm_frame_ptr_hi, $0E,Y. Outputs: writes vm_instruction_ptr_hi, $30,Y, vm_secondary_value_b0, vm_secondary_value_b1, $02,Y; control then leaves through ($02). Clobbers: A, Y and the processor flags; writes the locations named under Outputs.","t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":28883,"t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":28885,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":28887,"t":"code","b":[168],"m":"tay"},{"a":28888,"t":"code","b":[240,9],"m":"beq","oa":28899,"o":"LAB_70e3"},{"a":28890,"t":"code","b":[136],"m":"dey"},{"a":28891,"l":"LAB_70db","t":"code","b":[177,8],"m":"lda","oa":8,"x":[28897],"o":"(vm_instruction_ptr_lo),y"},{"a":28893,"t":"code","b":[153,48,0],"m":"sta","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30,y"},{"a":28896,"t":"code","b":[136],"m":"dey"},{"a":28897,"t":"code","b":[16,248],"m":"bpl","oa":28891,"o":"LAB_70db"},{"a":28899,"l":"LAB_70e3","t":"code","b":[165,6],"m":"lda","oa":6,"x":[28888],"o":"vm_frame_ptr_lo"},{"a":28901,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":28903,"t":"code","b":[165,7],"m":"lda","oa":7,"o":"vm_frame_ptr_hi"},{"a":28905,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":28907,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":28909,"l":"LAB_70ed","t":"code","b":[177,14],"m":"lda","oa":14,"x":[28915],"o":"(vm_secondary_value_b0),y"},{"a":28911,"t":"code","b":[153,2,0],"m":"sta","oa":2,"o":"shared_scratch_02_lo,y"},{"a":28914,"t":"code","b":[136],"m":"dey"},{"a":28915,"t":"code","b":[16,248],"m":"bpl","oa":28909,"o":"LAB_70ed"},{"a":28917,"t":"code","b":[108,2,0],"m":"jmp","oa":2,"o":"(shared_scratch_02_lo)"},{"a":28920,"l":"vm_procedure_call_gateway","c":"Gateway from a native JSR stub into one VM procedure. It pops the stub and caller return addresses, allocates an eight-byte frame, saves $02-$09, applies the signed frame adjustment word following the JSR, sets script IP $08/$09 to the first bytecode byte, and falls into $713C. Inputs: exact stub bytes JSR $70F8, signed adjustment. Outputs: procedure-defined VM primary; opcode $CF restores the frame and returns. Assumptions: Only valid when the caller is the exact stub JSR $70F8 followed by a signed 16-bit frame-adjustment word, which is read through $0A/$0B at return+1 with the bytecode taken as return+3. Two return addresses must be on the stack and the VM expression stack must have room for the eight-byte frame plus the adjustment. It falls through into $713C, so it must never be entered with a partially built frame. Clobbers: A,Y and VM frame/stack pointers. Hardware: Touches no hardware: it saves zero page $02-$09 into the new frame and updates $04-$09. Hardware access happens only in native routines the dispatched bytecode later calls.","t":"code","b":[104],"m":"pla","x":[16387,19182,19279,19287,19474,19617,19660,19678,19717,19784,19846,19953,19968,19983,20212,20325,20493,20711,20764,21024,21118,21209,21354,21595,21625,21660,21695,21772,21788,21805,21826,21837,21910,22019,22135,22271,22286,22313,22458,22888,23132,24388,24554,24591,24700,25097,25737,26023,26117,26257,26331,26999,27168,27471,27609,27634,27659,27888,27993,28211,28249,28272,36190,36393,36795,36984,37667,39444,39704,39830,39929,41069,41525,41593,41936,43664,43945,44460,45547,45591,45718,45793]},{"a":28921,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":28923,"t":"code","b":[104],"m":"pla"},{"a":28924,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":28926,"t":"code","b":[104],"m":"pla"},{"a":28927,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":28929,"t":"code","b":[104],"m":"pla"},{"a":28930,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":28932,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":28934,"t":"code","b":[56],"m":"sec"},{"a":28935,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28937,"t":"code","b":[233,8],"m":"sbc","o":"#$08"},{"a":28939,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":28941,"t":"code","b":[165,5],"m":"lda","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":28943,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":28945,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":28947,"l":"LAB_7113","t":"code","b":[185,2,0],"m":"lda","oa":2,"x":[28953],"o":"shared_scratch_02_lo,y"},{"a":28950,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":28952,"t":"code","b":[136],"m":"dey"},{"a":28953,"t":"code","b":[16,248],"m":"bpl","oa":28947,"o":"LAB_7113"},{"a":28955,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":28957,"t":"code","b":[24],"m":"clc"},{"a":28958,"t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":28960,"t":"code","b":[133,6],"m":"sta","oa":6,"o":"vm_frame_ptr_lo"},{"a":28962,"t":"code","b":[113,10],"m":"adc","oa":10,"o":"(vm_primary_value_b0),y"},{"a":28964,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":28966,"t":"code","b":[200],"m":"iny"},{"a":28967,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":28969,"t":"code","b":[133,7],"m":"sta","oa":7,"o":"vm_frame_ptr_hi"},{"a":28971,"t":"code","b":[113,10],"m":"adc","oa":10,"o":"(vm_primary_value_b0),y"},{"a":28973,"t":"code","b":[133,5],"m":"sta","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":28975,"t":"code","b":[24],"m":"clc"},{"a":28976,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":28978,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":28980,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":28982,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":28984,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":28986,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"vm_instruction_ptr_hi"},{"a":28988,"l":"vm_fetch_decode_dispatch","c":"Fetch/decode/dispatch loop for the resident Alter Ego VM. It reads one opcode through script IP $08/$09, increments the IP, loads the 16-bit handler from split tables $7927/$7A27, and JMPs through scratch $02/$03. Inputs: valid VM frame and script IP. Outputs: handler-defined; handlers normally tail-jump back here. Assumptions: Requires a fully built VM frame: script IP $08/$09 must address the next opcode byte and $04-$07 must be valid. Handlers are entered with Y=0 and rely on it, $02/$03 must be free because the handler address is staged there, and both halves of the split 256-entry handler table at $7927/$7A27 must be intact -- an out-of-range opcode cannot occur, but a corrupted table entry jumps anywhere. Clobbers: A,X,Y and $02/$03. The 256-entry table includes explicit invalid-opcode BRK handlers. Hardware: Touches no hardware: it reads the bytecode stream and the handler tables from RAM and jumps through $02/$03. Handlers reached from here may touch anything.","t":"code","b":[160,0],"m":"ldy","x":[29078,29104,29173,29199,29268,29294,29452,29520,29656,29676,29696,29721,29769,29784,29794,29809,29841,29858,29875,29890,29919,29928,29948,29978,29993,30003,30015,30095,30152,30165,30174,30186,30193,30223,30263,30269,30285,30347,30361,30416,30432,30443,30467,30488,30512,30527,30542,30562,30582,30605,30628,30651,30674,30692,30710,30728,30746,30760,30774,30789,30808,30817,30828,30835,31006,31012],"o":"#$00"},{"a":28990,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":28992,"t":"code","b":[230,8],"m":"inc","oa":8,"o":"vm_instruction_ptr_lo"},{"a":28994,"t":"code","b":[208,2],"m":"bne","oa":28998,"o":"LAB_7146"},{"a":28996,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":28998,"l":"LAB_7146","t":"code","b":[170],"m":"tax","x":[28994]},{"a":28999,"t":"code","b":[189,39,121],"m":"lda","oa":31015,"o":"AlterEgo_VM_vm_opcode_handler_table,x"},{"a":29002,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":29004,"t":"code","b":[189,39,122],"m":"lda","oa":31271,"o":"vm_opcode_handler_high_bytes,x"},{"a":29007,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":29009,"t":"code","b":[108,2,0],"m":"jmp","oa":2,"o":"(shared_scratch_02_lo)"},{"a":29012,"l":"AlterEgo_VM_vm_opcode_handler_7154","c":"Alter Ego VM handler for opcode(s) $00. Purpose/decoded semantics: load_primary_local_-24. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$E8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,232],"m":"lda","o":"#$E8"},{"a":29014,"t":"code","b":[208,42],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29016,"l":"AlterEgo_VM_vm_opcode_handler_7158","c":"Alter Ego VM handler for opcode(s) $01. Purpose/decoded semantics: load_primary_local_-22. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$EA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":29018,"t":"code","b":[208,38],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29020,"l":"AlterEgo_VM_vm_opcode_handler_715c","c":"Alter Ego VM handler for opcode(s) $02. Purpose/decoded semantics: load_primary_local_-20. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$EC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,236],"m":"lda","o":"#$EC"},{"a":29022,"t":"code","b":[208,34],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29024,"l":"AlterEgo_VM_vm_opcode_handler_7160","c":"Alter Ego VM handler for opcode(s) $03. Purpose/decoded semantics: load_primary_local_-18. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$EE loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":29026,"t":"code","b":[208,30],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29028,"l":"AlterEgo_VM_vm_opcode_handler_7164","c":"Alter Ego VM handler for opcode(s) $04. Purpose/decoded semantics: load_primary_local_-16. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F0 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":29030,"t":"code","b":[208,26],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29032,"l":"AlterEgo_VM_vm_opcode_handler_7168","c":"Alter Ego VM handler for opcode(s) $05. Purpose/decoded semantics: load_primary_local_-14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F2 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,242],"m":"lda","o":"#$F2"},{"a":29034,"t":"code","b":[208,22],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29036,"l":"AlterEgo_VM_vm_opcode_handler_716c","c":"Alter Ego VM handler for opcode(s) $06. Purpose/decoded semantics: load_primary_local_-12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F4 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,244],"m":"lda","o":"#$F4"},{"a":29038,"t":"code","b":[208,18],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29040,"l":"AlterEgo_VM_vm_opcode_handler_7170","c":"Alter Ego VM handler for opcode(s) $07. Purpose/decoded semantics: load_primary_local_-10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F6 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,246],"m":"lda","o":"#$F6"},{"a":29042,"t":"code","b":[208,14],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29044,"l":"AlterEgo_VM_vm_opcode_handler_7174","c":"Alter Ego VM handler for opcode(s) $08. Purpose/decoded semantics: load_primary_local_-8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":29046,"t":"code","b":[208,10],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29048,"l":"AlterEgo_VM_vm_opcode_handler_7178","c":"Alter Ego VM handler for opcode(s) $09. Purpose/decoded semantics: load_primary_local_-6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$FA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":29050,"t":"code","b":[208,6],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29052,"l":"AlterEgo_VM_vm_opcode_handler_717c","c":"Alter Ego VM handler for opcode(s) $0A. Purpose/decoded semantics: load_primary_local_-4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_negative_tail is unconditional in practice: the preceding LDA #$FC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":29054,"t":"code","b":[208,2],"m":"bne","oa":29058,"o":"vm_load_primary_local_negative_tail"},{"a":29056,"l":"AlterEgo_VM_vm_opcode_handler_7180","c":"Alter Ego VM handler for opcode(s) $0B. Purpose/decoded semantics: load_primary_local_-2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDA execution falls through into vm_load_primary_local_negative_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":29058,"l":"vm_load_primary_local_negative_tail","c":"Shared tail of the load_primary_local_-24..-2 family (opcodes $00-$0B). A holds the signed 8-bit frame offset; the tail sign-extends it by adding $FF as the high byte, forms the effective address in $02/$03, loads the 16-bit local through ($02),Y and stores it into VM primary. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B = the local word; tail-jumps to the dispatcher at $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y, flags and $02/$03. Hardware: None.","t":"code","b":[24],"m":"clc","x":[29014,29018,29022,29026,29030,29034,29038,29042,29046,29050,29054]},{"a":29059,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":29061,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":29063,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":29065,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":29067,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":29069,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29071,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29073,"t":"code","b":[200],"m":"iny"},{"a":29074,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29076,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":29078,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29081,"l":"AlterEgo_VM_vm_opcode_handler_7199","c":"Alter Ego VM handler for opcode(s) $0F. Purpose/decoded semantics: load_primary_local_+14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_positive_tail is unconditional in practice: the preceding LDY #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":29083,"t":"code","b":[208,10],"m":"bne","oa":29095,"o":"vm_load_primary_local_positive_tail"},{"a":29085,"l":"AlterEgo_VM_vm_opcode_handler_719d","c":"Alter Ego VM handler for opcode(s) $0E. Purpose/decoded semantics: load_primary_local_+12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_positive_tail is unconditional in practice: the preceding LDY #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":29087,"t":"code","b":[208,6],"m":"bne","oa":29095,"o":"vm_load_primary_local_positive_tail"},{"a":29089,"l":"AlterEgo_VM_vm_opcode_handler_71a1","c":"Alter Ego VM handler for opcode(s) $0D. Purpose/decoded semantics: load_primary_local_+10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_local_positive_tail is unconditional in practice: the preceding LDY #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":29091,"t":"code","b":[208,2],"m":"bne","oa":29095,"o":"vm_load_primary_local_positive_tail"},{"a":29093,"l":"AlterEgo_VM_vm_opcode_handler_71a5","c":"Alter Ego VM handler for opcode(s) $0C. Purpose/decoded semantics: load_primary_local_+8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDY execution falls through into vm_load_primary_local_positive_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":29095,"l":"vm_load_primary_local_positive_tail","c":"Shared tail of the load_primary_local_+8..+14 family (opcodes $0C-$0F). Y holds the positive frame offset; the tail indexes ($06),Y directly and loads the 16-bit argument word into VM primary. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B = the argument word; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[177,6],"m":"lda","oa":6,"x":[29083,29087,29091],"o":"(vm_frame_ptr_lo),y"},{"a":29097,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29099,"t":"code","b":[200],"m":"iny"},{"a":29100,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":29102,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":29104,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29107,"l":"AlterEgo_VM_vm_opcode_handler_71b3","c":"Alter Ego VM handler for opcode(s) $10. Purpose/decoded semantics: load_secondary_local_-24. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$E8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,232],"m":"lda","o":"#$E8"},{"a":29109,"t":"code","b":[208,42],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29111,"l":"AlterEgo_VM_vm_opcode_handler_71b7","c":"Alter Ego VM handler for opcode(s) $11. Purpose/decoded semantics: load_secondary_local_-22. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$EA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":29113,"t":"code","b":[208,38],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29115,"l":"AlterEgo_VM_vm_opcode_handler_71bb","c":"Alter Ego VM handler for opcode(s) $12. Purpose/decoded semantics: load_secondary_local_-20. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$EC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,236],"m":"lda","o":"#$EC"},{"a":29117,"t":"code","b":[208,34],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29119,"l":"AlterEgo_VM_vm_opcode_handler_71bf","c":"Alter Ego VM handler for opcode(s) $13. Purpose/decoded semantics: load_secondary_local_-18. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$EE loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":29121,"t":"code","b":[208,30],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29123,"l":"AlterEgo_VM_vm_opcode_handler_71c3","c":"Alter Ego VM handler for opcode(s) $14. Purpose/decoded semantics: load_secondary_local_-16. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$F0 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":29125,"t":"code","b":[208,26],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29127,"l":"AlterEgo_VM_vm_opcode_handler_71c7","c":"Alter Ego VM handler for opcode(s) $15. Purpose/decoded semantics: load_secondary_local_-14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$F2 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,242],"m":"lda","o":"#$F2"},{"a":29129,"t":"code","b":[208,22],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29131,"l":"AlterEgo_VM_vm_opcode_handler_71cb","c":"Alter Ego VM handler for opcode(s) $16. Purpose/decoded semantics: load_secondary_local_-12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$F4 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,244],"m":"lda","o":"#$F4"},{"a":29133,"t":"code","b":[208,18],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29135,"l":"AlterEgo_VM_vm_opcode_handler_71cf","c":"Alter Ego VM handler for opcode(s) $17. Purpose/decoded semantics: load_secondary_local_-10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$F6 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,246],"m":"lda","o":"#$F6"},{"a":29137,"t":"code","b":[208,14],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29139,"l":"AlterEgo_VM_vm_opcode_handler_71d3","c":"Alter Ego VM handler for opcode(s) $18. Purpose/decoded semantics: load_secondary_local_-8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$F8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":29141,"t":"code","b":[208,10],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29143,"l":"AlterEgo_VM_vm_opcode_handler_71d7","c":"Alter Ego VM handler for opcode(s) $19. Purpose/decoded semantics: load_secondary_local_-6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$FA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":29145,"t":"code","b":[208,6],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29147,"l":"AlterEgo_VM_vm_opcode_handler_71db","c":"Alter Ego VM handler for opcode(s) $1A. Purpose/decoded semantics: load_secondary_local_-4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_negative_tail is unconditional in practice: the preceding LDA #$FC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":29149,"t":"code","b":[208,2],"m":"bne","oa":29153,"o":"vm_load_secondary_local_negative_tail"},{"a":29151,"l":"AlterEgo_VM_vm_opcode_handler_71df","c":"Alter Ego VM handler for opcode(s) $1B. Purpose/decoded semantics: load_secondary_local_-2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDA execution falls through into vm_load_secondary_local_negative_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":29153,"l":"vm_load_secondary_local_negative_tail","c":"Shared tail of the load_secondary_local_-24..-2 family (opcodes $10-$1B). As $7182 but stores into VM secondary. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM secondary $0E/$0F = the local word; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y, flags and $02/$03. Hardware: None.","t":"code","b":[24],"m":"clc","x":[29109,29113,29117,29121,29125,29129,29133,29137,29141,29145,29149]},{"a":29154,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":29156,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":29158,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":29160,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":29162,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":29164,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29166,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":29168,"t":"code","b":[200],"m":"iny"},{"a":29169,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29171,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":29173,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29176,"l":"AlterEgo_VM_vm_opcode_handler_71f8","c":"Alter Ego VM handler for opcode(s) $1F. Purpose/decoded semantics: load_secondary_local_+14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_positive_tail is unconditional in practice: the preceding LDY #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":29178,"t":"code","b":[208,10],"m":"bne","oa":29190,"o":"vm_load_secondary_local_positive_tail"},{"a":29180,"l":"AlterEgo_VM_vm_opcode_handler_71fc","c":"Alter Ego VM handler for opcode(s) $1E. Purpose/decoded semantics: load_secondary_local_+12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_positive_tail is unconditional in practice: the preceding LDY #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":29182,"t":"code","b":[208,6],"m":"bne","oa":29190,"o":"vm_load_secondary_local_positive_tail"},{"a":29184,"l":"AlterEgo_VM_vm_opcode_handler_7200","c":"Alter Ego VM handler for opcode(s) $1D. Purpose/decoded semantics: load_secondary_local_+10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_local_positive_tail is unconditional in practice: the preceding LDY #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":29186,"t":"code","b":[208,2],"m":"bne","oa":29190,"o":"vm_load_secondary_local_positive_tail"},{"a":29188,"l":"AlterEgo_VM_vm_opcode_handler_7204","c":"Alter Ego VM handler for opcode(s) $1C. Purpose/decoded semantics: load_secondary_local_+8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDY execution falls through into vm_load_secondary_local_positive_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":29190,"l":"vm_load_secondary_local_positive_tail","c":"Shared tail of the load_secondary_local_+8..+14 family (opcodes $1C-$1F). Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM secondary $0E/$0F = the argument word; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[177,6],"m":"lda","oa":6,"x":[29178,29182,29186],"o":"(vm_frame_ptr_lo),y"},{"a":29192,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":29194,"t":"code","b":[200],"m":"iny"},{"a":29195,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":29197,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":29199,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29202,"l":"AlterEgo_VM_vm_opcode_handler_7212","c":"Alter Ego VM handler for opcode(s) $20. Purpose/decoded semantics: store_primary_local_-24. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$E8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,232],"m":"lda","o":"#$E8"},{"a":29204,"t":"code","b":[208,42],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29206,"l":"AlterEgo_VM_vm_opcode_handler_7216","c":"Alter Ego VM handler for opcode(s) $21. Purpose/decoded semantics: store_primary_local_-22. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$EA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":29208,"t":"code","b":[208,38],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29210,"l":"AlterEgo_VM_vm_opcode_handler_721a","c":"Alter Ego VM handler for opcode(s) $22. Purpose/decoded semantics: store_primary_local_-20. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$EC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,236],"m":"lda","o":"#$EC"},{"a":29212,"t":"code","b":[208,34],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29214,"l":"AlterEgo_VM_vm_opcode_handler_721e","c":"Alter Ego VM handler for opcode(s) $23. Purpose/decoded semantics: store_primary_local_-18. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$EE loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":29216,"t":"code","b":[208,30],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29218,"l":"AlterEgo_VM_vm_opcode_handler_7222","c":"Alter Ego VM handler for opcode(s) $24. Purpose/decoded semantics: store_primary_local_-16. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F0 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":29220,"t":"code","b":[208,26],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29222,"l":"AlterEgo_VM_vm_opcode_handler_7226","c":"Alter Ego VM handler for opcode(s) $25. Purpose/decoded semantics: store_primary_local_-14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F2 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,242],"m":"lda","o":"#$F2"},{"a":29224,"t":"code","b":[208,22],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29226,"l":"AlterEgo_VM_vm_opcode_handler_722a","c":"Alter Ego VM handler for opcode(s) $26. Purpose/decoded semantics: store_primary_local_-12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F4 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,244],"m":"lda","o":"#$F4"},{"a":29228,"t":"code","b":[208,18],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29230,"l":"AlterEgo_VM_vm_opcode_handler_722e","c":"Alter Ego VM handler for opcode(s) $27. Purpose/decoded semantics: store_primary_local_-10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F6 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,246],"m":"lda","o":"#$F6"},{"a":29232,"t":"code","b":[208,14],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29234,"l":"AlterEgo_VM_vm_opcode_handler_7232","c":"Alter Ego VM handler for opcode(s) $28. Purpose/decoded semantics: store_primary_local_-8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$F8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":29236,"t":"code","b":[208,10],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29238,"l":"AlterEgo_VM_vm_opcode_handler_7236","c":"Alter Ego VM handler for opcode(s) $29. Purpose/decoded semantics: store_primary_local_-6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$FA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":29240,"t":"code","b":[208,6],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29242,"l":"AlterEgo_VM_vm_opcode_handler_723a","c":"Alter Ego VM handler for opcode(s) $2A. Purpose/decoded semantics: store_primary_local_-4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_negative_tail is unconditional in practice: the preceding LDA #$FC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":29244,"t":"code","b":[208,2],"m":"bne","oa":29248,"o":"vm_store_primary_local_negative_tail"},{"a":29246,"l":"AlterEgo_VM_vm_opcode_handler_723e","c":"Alter Ego VM handler for opcode(s) $2B. Purpose/decoded semantics: store_primary_local_-2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDA execution falls through into vm_store_primary_local_negative_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":29248,"l":"vm_store_primary_local_negative_tail","c":"Shared tail of the store_primary_local_-24..-2 family (opcodes $20-$2B). Forms the frame-relative effective address in $02/$03 exactly as $7182, then writes VM primary through it. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The local word at frame+offset = VM primary; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y, flags and $02/$03. Hardware: None.","t":"code","b":[24],"m":"clc","x":[29204,29208,29212,29216,29220,29224,29228,29232,29236,29240,29244]},{"a":29249,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":29251,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":29253,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":29255,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":29257,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":29259,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":29261,"t":"code","b":[145,2],"m":"sta","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29263,"t":"code","b":[200],"m":"iny"},{"a":29264,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":29266,"t":"code","b":[145,2],"m":"sta","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29268,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29271,"l":"AlterEgo_VM_vm_opcode_handler_7257","c":"Alter Ego VM handler for opcode(s) $2F. Purpose/decoded semantics: store_primary_local_+14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_positive_tail is unconditional in practice: the preceding LDY #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,14],"m":"ldy","o":"#$0E"},{"a":29273,"t":"code","b":[208,10],"m":"bne","oa":29285,"o":"vm_store_primary_local_positive_tail"},{"a":29275,"l":"AlterEgo_VM_vm_opcode_handler_725b","c":"Alter Ego VM handler for opcode(s) $2E. Purpose/decoded semantics: store_primary_local_+12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_positive_tail is unconditional in practice: the preceding LDY #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,12],"m":"ldy","o":"#$0C"},{"a":29277,"t":"code","b":[208,6],"m":"bne","oa":29285,"o":"vm_store_primary_local_positive_tail"},{"a":29279,"l":"AlterEgo_VM_vm_opcode_handler_725f","c":"Alter Ego VM handler for opcode(s) $2D. Purpose/decoded semantics: store_primary_local_+10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_store_primary_local_positive_tail is unconditional in practice: the preceding LDY #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_store_primary_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":29281,"t":"code","b":[208,2],"m":"bne","oa":29285,"o":"vm_store_primary_local_positive_tail"},{"a":29283,"l":"AlterEgo_VM_vm_opcode_handler_7263","c":"Alter Ego VM handler for opcode(s) $2C. Purpose/decoded semantics: store_primary_local_+8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDY execution falls through into vm_store_primary_local_positive_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,8],"m":"ldy","o":"#$08"},{"a":29285,"l":"vm_store_primary_local_positive_tail","c":"Shared tail of the store_primary_local_+8..+14 family (opcodes $2C-$2F). Writes VM primary through ($06),Y. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The argument word at frame+offset = VM primary; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[165,10],"m":"lda","oa":10,"x":[29273,29277,29281],"o":"vm_primary_value_b0"},{"a":29287,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":29289,"t":"code","b":[200],"m":"iny"},{"a":29290,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":29292,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":29294,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29297,"l":"AlterEgo_VM_vm_opcode_handler_7271","c":"Alter Ego VM handler for opcode(s) $30. Purpose/decoded semantics: push_local_-24. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$E8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,232],"m":"lda","o":"#$E8"},{"a":29299,"t":"code","b":[208,42],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29301,"l":"AlterEgo_VM_vm_opcode_handler_7275","c":"Alter Ego VM handler for opcode(s) $31. Purpose/decoded semantics: push_local_-22. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$EA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,234],"m":"lda","o":"#$EA"},{"a":29303,"t":"code","b":[208,38],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29305,"l":"AlterEgo_VM_vm_opcode_handler_7279","c":"Alter Ego VM handler for opcode(s) $32. Purpose/decoded semantics: push_local_-20. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$EC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,236],"m":"lda","o":"#$EC"},{"a":29307,"t":"code","b":[208,34],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29309,"l":"AlterEgo_VM_vm_opcode_handler_727d","c":"Alter Ego VM handler for opcode(s) $33. Purpose/decoded semantics: push_local_-18. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$EE loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,238],"m":"lda","o":"#$EE"},{"a":29311,"t":"code","b":[208,30],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29313,"l":"AlterEgo_VM_vm_opcode_handler_7281","c":"Alter Ego VM handler for opcode(s) $34. Purpose/decoded semantics: push_local_-16. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$F0 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,240],"m":"lda","o":"#$F0"},{"a":29315,"t":"code","b":[208,26],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29317,"l":"AlterEgo_VM_vm_opcode_handler_7285","c":"Alter Ego VM handler for opcode(s) $35. Purpose/decoded semantics: push_local_-14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$F2 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,242],"m":"lda","o":"#$F2"},{"a":29319,"t":"code","b":[208,22],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29321,"l":"AlterEgo_VM_vm_opcode_handler_7289","c":"Alter Ego VM handler for opcode(s) $36. Purpose/decoded semantics: push_local_-12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$F4 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,244],"m":"lda","o":"#$F4"},{"a":29323,"t":"code","b":[208,18],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29325,"l":"AlterEgo_VM_vm_opcode_handler_728d","c":"Alter Ego VM handler for opcode(s) $37. Purpose/decoded semantics: push_local_-10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$F6 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,246],"m":"lda","o":"#$F6"},{"a":29327,"t":"code","b":[208,14],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29329,"l":"AlterEgo_VM_vm_opcode_handler_7291","c":"Alter Ego VM handler for opcode(s) $38. Purpose/decoded semantics: push_local_-8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$F8 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,248],"m":"lda","o":"#$F8"},{"a":29331,"t":"code","b":[208,10],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29333,"l":"AlterEgo_VM_vm_opcode_handler_7295","c":"Alter Ego VM handler for opcode(s) $39. Purpose/decoded semantics: push_local_-6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$FA loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,250],"m":"lda","o":"#$FA"},{"a":29335,"t":"code","b":[208,6],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29337,"l":"AlterEgo_VM_vm_opcode_handler_7299","c":"Alter Ego VM handler for opcode(s) $3A. Purpose/decoded semantics: push_local_-4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_negative_tail is unconditional in practice: the preceding LDA #$FC loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_negative_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,252],"m":"lda","o":"#$FC"},{"a":29339,"t":"code","b":[208,2],"m":"bne","oa":29343,"o":"vm_push_local_negative_tail"},{"a":29341,"l":"AlterEgo_VM_vm_opcode_handler_729d","c":"Alter Ego VM handler for opcode(s) $3B. Purpose/decoded semantics: push_local_-2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDA execution falls through into vm_push_local_negative_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,254],"m":"lda","o":"#$FE"},{"a":29343,"l":"vm_push_local_negative_tail","c":"Shared tail of the push_local_-24..-2 family (opcodes $30-$3B). Forms the effective address, loads the local high byte into X and low byte into A, and tail-jumps to vm_push_ax at $7909. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The local word pushed on the descending expression stack; $7909 then resumes $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, X, Y, flags and $02/$03. Hardware: None.","t":"code","b":[24],"m":"clc","x":[29299,29303,29307,29311,29315,29319,29323,29327,29331,29335,29339]},{"a":29344,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":29346,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":29348,"t":"code","b":[169,255],"m":"lda","o":"#$FF"},{"a":29350,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":29352,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":29354,"t":"code","b":[200],"m":"iny"},{"a":29355,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29357,"t":"code","b":[170],"m":"tax"},{"a":29358,"t":"code","b":[136],"m":"dey"},{"a":29359,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29361,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29364,"l":"AlterEgo_VM_vm_opcode_handler_72b4","c":"Alter Ego VM handler for opcode(s) $3F. Purpose/decoded semantics: push_local_+14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_positive_tail is unconditional in practice: the preceding LDY #$0F loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":29366,"t":"code","b":[208,10],"m":"bne","oa":29378,"o":"vm_push_local_positive_tail"},{"a":29368,"l":"AlterEgo_VM_vm_opcode_handler_72b8","c":"Alter Ego VM handler for opcode(s) $3E. Purpose/decoded semantics: push_local_+12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_positive_tail is unconditional in practice: the preceding LDY #$0D loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":29370,"t":"code","b":[208,6],"m":"bne","oa":29378,"o":"vm_push_local_positive_tail"},{"a":29372,"l":"AlterEgo_VM_vm_opcode_handler_72bc","c":"Alter Ego VM handler for opcode(s) $3D. Purpose/decoded semantics: push_local_+10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_local_positive_tail is unconditional in practice: the preceding LDY #$0B loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_local_positive_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,11],"m":"ldy","o":"#$0B"},{"a":29374,"t":"code","b":[208,2],"m":"bne","oa":29378,"o":"vm_push_local_positive_tail"},{"a":29376,"l":"AlterEgo_VM_vm_opcode_handler_72c0","c":"Alter Ego VM handler for opcode(s) $3C. Purpose/decoded semantics: push_local_+8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDY execution falls through into vm_push_local_positive_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,9],"m":"ldy","o":"#$09"},{"a":29378,"l":"vm_push_local_positive_tail","c":"Shared tail of the push_local_+8..+14 family (opcodes $3C-$3F). Note Y arrives one higher than the other positive families ($9,$B,$D,$F) because this tail reads the high byte first. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The argument word pushed on the expression stack via $7909. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, X, Y and flags. Hardware: None.","t":"code","b":[177,6],"m":"lda","oa":6,"x":[29366,29370,29374],"o":"(vm_frame_ptr_lo),y"},{"a":29380,"t":"code","b":[170],"m":"tax"},{"a":29381,"t":"code","b":[136],"m":"dey"},{"a":29382,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":29384,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29387,"l":"AlterEgo_VM_vm_opcode_handler_72cb","c":"Alter Ego VM handler for opcode(s) $4F. Purpose/decoded semantics: load_primary_const_15. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$0F loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":29389,"t":"code","b":[208,57],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29391,"l":"AlterEgo_VM_vm_opcode_handler_72cf","c":"Alter Ego VM handler for opcode(s) $4E. Purpose/decoded semantics: load_primary_const_14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":29393,"t":"code","b":[208,53],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29395,"l":"AlterEgo_VM_vm_opcode_handler_72d3","c":"Alter Ego VM handler for opcode(s) $4D. Purpose/decoded semantics: load_primary_const_13. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$0D loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":29397,"t":"code","b":[208,49],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29399,"l":"AlterEgo_VM_vm_opcode_handler_72d7","c":"Alter Ego VM handler for opcode(s) $4C. Purpose/decoded semantics: load_primary_const_12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":29401,"t":"code","b":[208,45],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29403,"l":"AlterEgo_VM_vm_opcode_handler_72db","c":"Alter Ego VM handler for opcode(s) $4B. Purpose/decoded semantics: load_primary_const_11. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$0B loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":29405,"t":"code","b":[208,41],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29407,"l":"AlterEgo_VM_vm_opcode_handler_72df","c":"Alter Ego VM handler for opcode(s) $4A. Purpose/decoded semantics: load_primary_const_10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":29409,"t":"code","b":[208,37],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29411,"l":"AlterEgo_VM_vm_opcode_handler_72e3","c":"Alter Ego VM handler for opcode(s) $49. Purpose/decoded semantics: load_primary_const_9. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$09 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":29413,"t":"code","b":[208,33],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29415,"l":"AlterEgo_VM_vm_opcode_handler_72e7","c":"Alter Ego VM handler for opcode(s) $48. Purpose/decoded semantics: load_primary_const_8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$08 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29417,"t":"code","b":[208,29],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29419,"l":"AlterEgo_VM_vm_opcode_handler_72eb","c":"Alter Ego VM handler for opcode(s) $47. Purpose/decoded semantics: load_primary_const_7. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$07 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":29421,"t":"code","b":[208,25],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29423,"l":"AlterEgo_VM_vm_opcode_handler_72ef","c":"Alter Ego VM handler for opcode(s) $46. Purpose/decoded semantics: load_primary_const_6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$06 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29425,"t":"code","b":[208,21],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29427,"l":"AlterEgo_VM_vm_opcode_handler_72f3","c":"Alter Ego VM handler for opcode(s) $45. Purpose/decoded semantics: load_primary_const_5. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$05 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":29429,"t":"code","b":[208,17],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29431,"l":"AlterEgo_VM_vm_opcode_handler_72f7","c":"Alter Ego VM handler for opcode(s) $44. Purpose/decoded semantics: load_primary_const_4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$04 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29433,"t":"code","b":[208,13],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29435,"l":"AlterEgo_VM_vm_opcode_handler_72fb","c":"Alter Ego VM handler for opcode(s) $43. Purpose/decoded semantics: load_primary_const_3. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$03 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29437,"t":"code","b":[208,9],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29439,"l":"AlterEgo_VM_vm_opcode_handler_72ff","c":"Alter Ego VM handler for opcode(s) $42. Purpose/decoded semantics: load_primary_const_2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$02 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29441,"t":"code","b":[208,5],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29443,"l":"AlterEgo_VM_vm_opcode_handler_7303","c":"Alter Ego VM handler for opcode(s) $41. Purpose/decoded semantics: load_primary_const_1. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_primary_const_tail is unconditional in practice: the preceding LDA #$01 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29445,"t":"code","b":[208,1],"m":"bne","oa":29448,"o":"vm_load_primary_const_tail"},{"a":29447,"l":"AlterEgo_VM_vm_opcode_handler_7307","c":"Alter Ego VM handler for opcode(s) $40. Purpose/decoded semantics: load_primary_const_0. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final TYA execution falls through into vm_load_primary_const_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[152],"m":"tya"},{"a":29448,"l":"vm_load_primary_const_tail","c":"Shared tail of the load_primary_const_0..15 family (opcodes $40-$4F). A holds the constant; the tail stores A into the low byte and Y, known zero, into the high byte, so constants are zero-extended rather than sign-extended. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B = 0..15; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: Flags only; A and Y are already set by the caller. Hardware: None.","t":"code","b":[133,10],"m":"sta","oa":10,"x":[29389,29393,29397,29401,29405,29409,29413,29417,29421,29425,29429,29433,29437,29441,29445],"o":"vm_primary_value_b0"},{"a":29450,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":29452,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29455,"l":"AlterEgo_VM_vm_opcode_handler_730f","c":"Alter Ego VM handler for opcode(s) $5F. Purpose/decoded semantics: load_secondary_const_15. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$0F loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":29457,"t":"code","b":[208,57],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29459,"l":"AlterEgo_VM_vm_opcode_handler_7313","c":"Alter Ego VM handler for opcode(s) $5E. Purpose/decoded semantics: load_secondary_const_14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":29461,"t":"code","b":[208,53],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29463,"l":"AlterEgo_VM_vm_opcode_handler_7317","c":"Alter Ego VM handler for opcode(s) $5D. Purpose/decoded semantics: load_secondary_const_13. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$0D loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":29465,"t":"code","b":[208,49],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29467,"l":"AlterEgo_VM_vm_opcode_handler_731b","c":"Alter Ego VM handler for opcode(s) $5C. Purpose/decoded semantics: load_secondary_const_12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":29469,"t":"code","b":[208,45],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29471,"l":"AlterEgo_VM_vm_opcode_handler_731f","c":"Alter Ego VM handler for opcode(s) $5B. Purpose/decoded semantics: load_secondary_const_11. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$0B loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":29473,"t":"code","b":[208,41],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29475,"l":"AlterEgo_VM_vm_opcode_handler_7323","c":"Alter Ego VM handler for opcode(s) $5A. Purpose/decoded semantics: load_secondary_const_10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":29477,"t":"code","b":[208,37],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29479,"l":"AlterEgo_VM_vm_opcode_handler_7327","c":"Alter Ego VM handler for opcode(s) $59. Purpose/decoded semantics: load_secondary_const_9. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$09 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":29481,"t":"code","b":[208,33],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29483,"l":"AlterEgo_VM_vm_opcode_handler_732b","c":"Alter Ego VM handler for opcode(s) $58. Purpose/decoded semantics: load_secondary_const_8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$08 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29485,"t":"code","b":[208,29],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29487,"l":"AlterEgo_VM_vm_opcode_handler_732f","c":"Alter Ego VM handler for opcode(s) $57. Purpose/decoded semantics: load_secondary_const_7. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$07 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":29489,"t":"code","b":[208,25],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29491,"l":"AlterEgo_VM_vm_opcode_handler_7333","c":"Alter Ego VM handler for opcode(s) $56. Purpose/decoded semantics: load_secondary_const_6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$06 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29493,"t":"code","b":[208,21],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29495,"l":"AlterEgo_VM_vm_opcode_handler_7337","c":"Alter Ego VM handler for opcode(s) $55. Purpose/decoded semantics: load_secondary_const_5. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$05 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":29497,"t":"code","b":[208,17],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29499,"l":"AlterEgo_VM_vm_opcode_handler_733b","c":"Alter Ego VM handler for opcode(s) $54. Purpose/decoded semantics: load_secondary_const_4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$04 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29501,"t":"code","b":[208,13],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29503,"l":"AlterEgo_VM_vm_opcode_handler_733f","c":"Alter Ego VM handler for opcode(s) $53. Purpose/decoded semantics: load_secondary_const_3. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$03 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29505,"t":"code","b":[208,9],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29507,"l":"AlterEgo_VM_vm_opcode_handler_7343","c":"Alter Ego VM handler for opcode(s) $52. Purpose/decoded semantics: load_secondary_const_2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$02 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29509,"t":"code","b":[208,5],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29511,"l":"AlterEgo_VM_vm_opcode_handler_7347","c":"Alter Ego VM handler for opcode(s) $51. Purpose/decoded semantics: load_secondary_const_1. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_load_secondary_const_tail is unconditional in practice: the preceding LDA #$01 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_load_secondary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29513,"t":"code","b":[208,1],"m":"bne","oa":29516,"o":"vm_load_secondary_const_tail"},{"a":29515,"l":"AlterEgo_VM_vm_opcode_handler_734b","c":"Alter Ego VM handler for opcode(s) $50. Purpose/decoded semantics: load_secondary_const_0. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final TYA execution falls through into vm_load_secondary_const_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[152],"m":"tya"},{"a":29516,"l":"vm_load_secondary_const_tail","c":"Shared tail of the load_secondary_const_0..15 family (opcodes $50-$5F). Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM secondary $0E/$0F = 0..15; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: Flags only. Hardware: None.","t":"code","b":[133,14],"m":"sta","oa":14,"x":[29457,29461,29465,29469,29473,29477,29481,29485,29489,29493,29497,29501,29505,29509,29513],"o":"vm_secondary_value_b0"},{"a":29518,"t":"code","b":[132,15],"m":"sty","oa":15,"o":"vm_secondary_value_b1"},{"a":29520,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29523,"l":"AlterEgo_VM_vm_opcode_handler_7353","c":"Alter Ego VM handler for opcode(s) $6F. Purpose/decoded semantics: push_const_15. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$0F loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":29525,"t":"code","b":[208,57],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29527,"l":"AlterEgo_VM_vm_opcode_handler_7357","c":"Alter Ego VM handler for opcode(s) $6E. Purpose/decoded semantics: push_const_14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":29529,"t":"code","b":[208,53],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29531,"l":"AlterEgo_VM_vm_opcode_handler_735b","c":"Alter Ego VM handler for opcode(s) $6D. Purpose/decoded semantics: push_const_13. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$0D loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":29533,"t":"code","b":[208,49],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29535,"l":"AlterEgo_VM_vm_opcode_handler_735f","c":"Alter Ego VM handler for opcode(s) $6C. Purpose/decoded semantics: push_const_12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":29537,"t":"code","b":[208,45],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29539,"l":"AlterEgo_VM_vm_opcode_handler_7363","c":"Alter Ego VM handler for opcode(s) $6B. Purpose/decoded semantics: push_const_11. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$0B loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":29541,"t":"code","b":[208,41],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29543,"l":"AlterEgo_VM_vm_opcode_handler_7367","c":"Alter Ego VM handler for opcode(s) $6A. Purpose/decoded semantics: push_const_10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":29545,"t":"code","b":[208,37],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29547,"l":"AlterEgo_VM_vm_opcode_handler_736b","c":"Alter Ego VM handler for opcode(s) $69. Purpose/decoded semantics: push_const_9. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$09 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":29549,"t":"code","b":[208,33],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29551,"l":"AlterEgo_VM_vm_opcode_handler_736f","c":"Alter Ego VM handler for opcode(s) $68. Purpose/decoded semantics: push_const_8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$08 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29553,"t":"code","b":[208,29],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29555,"l":"AlterEgo_VM_vm_opcode_handler_7373","c":"Alter Ego VM handler for opcode(s) $67. Purpose/decoded semantics: push_const_7. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$07 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":29557,"t":"code","b":[208,25],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29559,"l":"AlterEgo_VM_vm_opcode_handler_7377","c":"Alter Ego VM handler for opcode(s) $66. Purpose/decoded semantics: push_const_6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$06 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29561,"t":"code","b":[208,21],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29563,"l":"AlterEgo_VM_vm_opcode_handler_737b","c":"Alter Ego VM handler for opcode(s) $65. Purpose/decoded semantics: push_const_5. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$05 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":29565,"t":"code","b":[208,17],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29567,"l":"AlterEgo_VM_vm_opcode_handler_737f","c":"Alter Ego VM handler for opcode(s) $64. Purpose/decoded semantics: push_const_4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$04 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29569,"t":"code","b":[208,13],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29571,"l":"AlterEgo_VM_vm_opcode_handler_7383","c":"Alter Ego VM handler for opcode(s) $63. Purpose/decoded semantics: push_const_3. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$03 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29573,"t":"code","b":[208,9],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29575,"l":"AlterEgo_VM_vm_opcode_handler_7387","c":"Alter Ego VM handler for opcode(s) $62. Purpose/decoded semantics: push_const_2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$02 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29577,"t":"code","b":[208,5],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29579,"l":"AlterEgo_VM_vm_opcode_handler_738b","c":"Alter Ego VM handler for opcode(s) $61. Purpose/decoded semantics: push_const_1. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_push_const_tail is unconditional in practice: the preceding LDA #$01 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_push_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29581,"t":"code","b":[208,1],"m":"bne","oa":29584,"o":"vm_push_const_tail"},{"a":29583,"l":"AlterEgo_VM_vm_opcode_handler_738f","c":"Alter Ego VM handler for opcode(s) $60. Purpose/decoded semantics: push_const_0. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final TYA execution falls through into vm_push_const_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[152],"m":"tya"},{"a":29584,"l":"vm_push_const_tail","c":"Shared tail of the push_const_0..15 family (opcodes $60-$6F). Clears X and tail-jumps to vm_push_ax so the constant is pushed as a zero-extended word. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The constant pushed as a 16-bit word via $7909. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: X and flags. Hardware: None.","t":"code","b":[162,0],"m":"ldx","x":[29525,29529,29533,29537,29541,29545,29549,29553,29557,29561,29565,29569,29573,29577,29581],"o":"#$00"},{"a":29586,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29589,"l":"AlterEgo_VM_vm_opcode_handler_7395","c":"Alter Ego VM handler for opcode(s) $7F. Purpose/decoded semantics: add_primary_const_15. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$0F loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,15],"m":"lda","o":"#$0F"},{"a":29591,"t":"code","b":[208,54],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29593,"l":"AlterEgo_VM_vm_opcode_handler_7399","c":"Alter Ego VM handler for opcode(s) $7E. Purpose/decoded semantics: add_primary_const_14. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$0E loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,14],"m":"lda","o":"#$0E"},{"a":29595,"t":"code","b":[208,50],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29597,"l":"AlterEgo_VM_vm_opcode_handler_739d","c":"Alter Ego VM handler for opcode(s) $7D. Purpose/decoded semantics: add_primary_const_13. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$0D loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,13],"m":"lda","o":"#$0D"},{"a":29599,"t":"code","b":[208,46],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29601,"l":"AlterEgo_VM_vm_opcode_handler_73a1","c":"Alter Ego VM handler for opcode(s) $7C. Purpose/decoded semantics: add_primary_const_12. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$0C loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,12],"m":"lda","o":"#$0C"},{"a":29603,"t":"code","b":[208,42],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29605,"l":"AlterEgo_VM_vm_opcode_handler_73a5","c":"Alter Ego VM handler for opcode(s) $7B. Purpose/decoded semantics: add_primary_const_11. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$0B loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,11],"m":"lda","o":"#$0B"},{"a":29607,"t":"code","b":[208,38],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29609,"l":"AlterEgo_VM_vm_opcode_handler_73a9","c":"Alter Ego VM handler for opcode(s) $7A. Purpose/decoded semantics: add_primary_const_10. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$0A loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":29611,"t":"code","b":[208,34],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29613,"l":"AlterEgo_VM_vm_opcode_handler_73ad","c":"Alter Ego VM handler for opcode(s) $79. Purpose/decoded semantics: add_primary_const_9. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$09 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":29615,"t":"code","b":[208,30],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29617,"l":"AlterEgo_VM_vm_opcode_handler_73b1","c":"Alter Ego VM handler for opcode(s) $78. Purpose/decoded semantics: add_primary_const_8. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$08 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":29619,"t":"code","b":[208,26],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29621,"l":"AlterEgo_VM_vm_opcode_handler_73b5","c":"Alter Ego VM handler for opcode(s) $77. Purpose/decoded semantics: add_primary_const_7. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$07 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,7],"m":"lda","o":"#$07"},{"a":29623,"t":"code","b":[208,22],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29625,"l":"AlterEgo_VM_vm_opcode_handler_73b9","c":"Alter Ego VM handler for opcode(s) $76. Purpose/decoded semantics: add_primary_const_6. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$06 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,6],"m":"lda","o":"#$06"},{"a":29627,"t":"code","b":[208,18],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29629,"l":"AlterEgo_VM_vm_opcode_handler_73bd","c":"Alter Ego VM handler for opcode(s) $75. Purpose/decoded semantics: add_primary_const_5. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$05 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,5],"m":"lda","o":"#$05"},{"a":29631,"t":"code","b":[208,14],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29633,"l":"AlterEgo_VM_vm_opcode_handler_73c1","c":"Alter Ego VM handler for opcode(s) $74. Purpose/decoded semantics: add_primary_const_4. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$04 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":29635,"t":"code","b":[208,10],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29637,"l":"AlterEgo_VM_vm_opcode_handler_73c5","c":"Alter Ego VM handler for opcode(s) $73. Purpose/decoded semantics: add_primary_const_3. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$03 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":29639,"t":"code","b":[208,6],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29641,"l":"AlterEgo_VM_vm_opcode_handler_73c9","c":"Alter Ego VM handler for opcode(s) $72. Purpose/decoded semantics: add_primary_const_2. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The branch to vm_add_primary_const_tail is unconditional in practice: the preceding LDA #$02 loads a non-zero value, so Z is always clear. This handler contributes only that constant; vm_add_primary_const_tail performs the addressing and the transfer. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,2],"m":"lda","o":"#$02"},{"a":29643,"t":"code","b":[208,2],"m":"bne","oa":29647,"o":"vm_add_primary_const_tail"},{"a":29645,"l":"AlterEgo_VM_vm_opcode_handler_73cd","c":"Alter Ego VM handler for opcode(s) $71. Purpose/decoded semantics: add_primary_const_1. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends without a jump: after the final LDA execution falls through into vm_add_primary_const_tail at the next address, so the two must stay adjacent. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":29647,"l":"vm_add_primary_const_tail","c":"Shared tail of the add_primary_const_1..15 family (opcodes $71-$7F). Adds A to the primary low byte and propagates carry into the high byte. Falls through into the $70 nop handler's JMP, which is why opcode $70 costs no extra bytes. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B increased by 1..15, wrapping at 16 bits; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A and flags. Hardware: None.","t":"code","b":[24],"m":"clc","x":[29591,29595,29599,29603,29607,29611,29615,29619,29623,29627,29631,29635,29639,29643]},{"a":29648,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":29650,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29652,"t":"code","b":[144,2],"m":"bcc","oa":29656,"o":"AlterEgo_VM_vm_opcode_handler_73d8"},{"a":29654,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":29656,"l":"AlterEgo_VM_vm_opcode_handler_73d8","c":"Alter Ego VM handler for opcode(s) $70. Purpose/decoded semantics: nop. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[76,60,113],"m":"jmp","oa":28988,"x":[29652],"o":"vm_fetch_decode_dispatch"},{"a":29659,"l":"AlterEgo_VM_vm_opcode_handler_73db","c":"Alter Ego VM handler for opcode(s) $82. Purpose/decoded semantics: load_primary_local_indirect. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_load_primary_word_through_scratch_tail is unconditional in practice because vm_fetch_frame_relative_address issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_load_primary_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29662,"t":"code","b":[144,3],"m":"bcc","oa":29667,"o":"vm_load_primary_word_through_scratch_tail"},{"a":29664,"l":"AlterEgo_VM_vm_opcode_handler_73e0","c":"Alter Ego VM handler for opcode(s) $81. Purpose/decoded semantics: load_primary_local_indirect_short. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_branch_target returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_branch_target.","t":"code","b":[32,167,120],"m":"jsr","oa":30887,"o":"vm_fetch_signed_branch_target"},{"a":29667,"l":"vm_load_primary_word_through_scratch_tail","c":"Shared tail for loading a 16-bit word into VM primary through the effective address in $02/$03. Reached from the frame-relative form (opcode $82) and the absolute form (opcode $A4). The two callers differ only in which operand fetcher filled $02/$03. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B = the word at ($02); tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[177,2],"m":"lda","oa":2,"x":[29662,29682],"o":"(shared_scratch_02_lo),y"},{"a":29669,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29671,"t":"code","b":[200],"m":"iny"},{"a":29672,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29674,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":29676,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29679,"l":"AlterEgo_VM_vm_opcode_handler_73ef","c":"Alter Ego VM handler for opcode $A4: load_primary_absolute_word. $73EF calls the absolute-word operand fetcher at $78D6, then branches to $73E3 to store the result in VM primary $0A/$0B. The BCC is unconditional in practice because both fetcher exits clear carry. Inputs: script IP $08/$09 points after the opcode. Clobbers: A, X, Y, flags and VM scratch. Hardware: none.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29682,"t":"code","b":[144,239],"m":"bcc","oa":29667,"o":"vm_load_primary_word_through_scratch_tail"},{"a":29684,"l":"AlterEgo_VM_vm_opcode_handler_73f4","c":"Alter Ego VM handler for opcode(s) $83. Purpose/decoded semantics: load_secondary_local_indirect_short. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_branch_target returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_branch_target.","t":"code","b":[32,167,120],"m":"jsr","oa":30887,"o":"vm_fetch_signed_branch_target"},{"a":29687,"l":"vm_load_secondary_word_through_scratch_tail","c":"Shared tail for loading a 16-bit word into VM secondary through $02/$03. Reached from opcode $84 (frame-relative) and opcode $A6 (absolute); opcode $83 falls into it. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM secondary $0E/$0F = the word at ($02); tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[177,2],"m":"lda","oa":2,"x":[29702,29707],"o":"(shared_scratch_02_lo),y"},{"a":29689,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":29691,"t":"code","b":[200],"m":"iny"},{"a":29692,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29694,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":29696,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29699,"l":"AlterEgo_VM_vm_opcode_handler_7403","c":"Alter Ego VM handler for opcode(s) $84. Purpose/decoded semantics: load_secondary_local_indirect. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_load_secondary_word_through_scratch_tail is unconditional in practice because vm_fetch_frame_relative_address issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_load_secondary_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29702,"t":"code","b":[144,239],"m":"bcc","oa":29687,"o":"vm_load_secondary_word_through_scratch_tail"},{"a":29704,"l":"AlterEgo_VM_vm_opcode_handler_7408","c":"Alter Ego VM handler for opcode(s) $A6. Purpose/decoded semantics: load_secondary_absolute_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_load_secondary_word_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_load_secondary_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29707,"t":"code","b":[144,234],"m":"bcc","oa":29687,"o":"vm_load_secondary_word_through_scratch_tail"},{"a":29709,"l":"AlterEgo_VM_vm_opcode_handler_740d","c":"Alter Ego VM handler for opcode(s) $85. Purpose/decoded semantics: store_primary_local_indirect_short. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_branch_target returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_branch_target.","t":"code","b":[32,167,120],"m":"jsr","oa":30887,"o":"vm_fetch_signed_branch_target"},{"a":29712,"l":"vm_store_primary_word_through_scratch_tail","c":"Shared tail for storing VM primary as a 16-bit word through $02/$03. Reached from opcode $86 (frame-relative) and opcode $A8 (absolute); opcode $85 falls into it. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The word at ($02) = VM primary; tail-jumps to $713C. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[165,10],"m":"lda","oa":10,"x":[29727,29732],"o":"vm_primary_value_b0"},{"a":29714,"t":"code","b":[145,2],"m":"sta","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29716,"t":"code","b":[200],"m":"iny"},{"a":29717,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":29719,"t":"code","b":[145,2],"m":"sta","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29721,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29724,"l":"AlterEgo_VM_vm_opcode_handler_741c","c":"Alter Ego VM handler for opcode(s) $86. Purpose/decoded semantics: store_primary_local_indirect. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_store_primary_word_through_scratch_tail is unconditional in practice because vm_fetch_frame_relative_address issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_store_primary_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29727,"t":"code","b":[144,239],"m":"bcc","oa":29712,"o":"vm_store_primary_word_through_scratch_tail"},{"a":29729,"l":"AlterEgo_VM_vm_opcode_handler_7421","c":"Alter Ego VM handler for opcode(s) $A8. Purpose/decoded semantics: store_primary_absolute_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_store_primary_word_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_store_primary_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29732,"t":"code","b":[144,234],"m":"bcc","oa":29712,"o":"vm_store_primary_word_through_scratch_tail"},{"a":29734,"l":"AlterEgo_VM_vm_opcode_handler_7426","c":"Alter Ego VM handler for opcode(s) $87. Purpose/decoded semantics: push_local_indirect_short. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_branch_target returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_branch_target.","t":"code","b":[32,167,120],"m":"jsr","oa":30887,"o":"vm_fetch_signed_branch_target"},{"a":29737,"l":"vm_push_word_through_scratch_tail","c":"Shared tail for pushing the 16-bit word at $02/$03 onto the expression stack. Reached from opcode $88 (frame-relative) and opcode $AA (absolute); opcode $87 falls into it. Reads the high byte first into X, then the low byte into A, then tail-jumps to $7909. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: The word pushed via vm_push_ax. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, X, Y and flags. Hardware: None.","t":"code","b":[200],"m":"iny","x":[29750,29755]},{"a":29738,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29740,"t":"code","b":[170],"m":"tax"},{"a":29741,"t":"code","b":[136],"m":"dey"},{"a":29742,"t":"code","b":[177,2],"m":"lda","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29744,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29747,"l":"AlterEgo_VM_vm_opcode_handler_7433","c":"Alter Ego VM handler for opcode(s) $88. Purpose/decoded semantics: push_local_indirect. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_push_word_through_scratch_tail is unconditional in practice because vm_fetch_frame_relative_address issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_push_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29750,"t":"code","b":[144,241],"m":"bcc","oa":29737,"o":"vm_push_word_through_scratch_tail"},{"a":29752,"l":"AlterEgo_VM_vm_opcode_handler_7438","c":"Alter Ego VM handler for opcode(s) $AA. Purpose/decoded semantics: push_absolute_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_push_word_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_push_word_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29755,"t":"code","b":[144,236],"m":"bcc","oa":29737,"o":"vm_push_word_through_scratch_tail"},{"a":29757,"l":"AlterEgo_VM_vm_opcode_handler_743d","c":"Alter Ego VM handler for opcode(s) $DE. Purpose/decoded semantics: load_primary_frame_address. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_frame_ptr_lo, vm_frame_ptr_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29760,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":29762,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29764,"t":"code","b":[138],"m":"txa"},{"a":29765,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":29767,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":29769,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29772,"l":"AlterEgo_VM_vm_opcode_handler_744c","c":"Alter Ego VM handler for opcode(s) $DF. Purpose/decoded semantics: load_secondary_frame_address. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_frame_ptr_lo, vm_frame_ptr_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29775,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":29777,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":29779,"t":"code","b":[138],"m":"txa"},{"a":29780,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":29782,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":29784,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29787,"l":"AlterEgo_VM_vm_opcode_handler_745b","c":"Alter Ego VM handler for opcode(s) $89. Purpose/decoded semantics: load_primary_immediate_signed_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_byte returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_byte.","t":"code","b":[32,152,120],"m":"jsr","oa":30872,"o":"vm_fetch_signed_byte"},{"a":29790,"l":"vm_store_primary_from_ax_tail","c":"Shared tail that publishes a freshly fetched immediate operand as VM primary. It stores A into $0A and X into $0B, then tail-jumps to the fetch/decode dispatcher at $713C. Inputs: A = operand low byte, X = operand high byte, exactly as returned by the signed-byte fetcher $7898 (which sign-extends into X) or the word fetcher $78C0. Outputs: VM primary $0A/$0B = the operand; control resumes at $713C and never returns here. Assumptions: Entered only by fall-through from vmop_89_load_primary_immediate_signed_byte at $745B and by BCC from vmop_8a_load_primary_immediate_word at $7468; both fetchers return with carry clear and have already advanced the script IP $08/$09 past the operand. Not an independent routine: no prologue, no RTS. Clobbers: flags and VM primary $0A/$0B. Hardware: None.","t":"code","b":[133,10],"m":"sta","oa":10,"x":[29800],"o":"vm_primary_value_b0"},{"a":29792,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":29794,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29797,"l":"AlterEgo_VM_vm_opcode_handler_7465","c":"Alter Ego VM handler for opcode(s) $8A. Purpose/decoded semantics: load_primary_immediate_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_store_primary_from_ax_tail depends on the carry vm_fetch_word_split_ax returns. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29800,"t":"code","b":[144,244],"m":"bcc","oa":29790,"o":"vm_store_primary_from_ax_tail"},{"a":29802,"l":"AlterEgo_VM_vm_opcode_handler_746a","c":"Alter Ego VM handler for opcode(s) $8B. Purpose/decoded semantics: load_secondary_immediate_signed_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_byte returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_byte.","t":"code","b":[32,152,120],"m":"jsr","oa":30872,"o":"vm_fetch_signed_byte"},{"a":29805,"l":"vm_store_secondary_from_ax_tail","c":"Shared tail that publishes a freshly fetched immediate operand as VM secondary. It stores A into $0E and X into $0F, then tail-jumps to the dispatcher at $713C. Inputs: A = operand low byte, X = operand high byte from $7898 (sign-extended) or $78C0. Outputs: VM secondary $0E/$0F = the operand; control resumes at $713C. Assumptions: Entered only by fall-through from vmop_8b_load_secondary_immediate_signed_byte at $746A and by BCC from vmop_8c_load_secondary_immediate_word at $7474; the fetcher has already advanced the script IP. Not an independent routine. Clobbers: flags and VM secondary $0E/$0F. Hardware: None.","t":"code","b":[133,14],"m":"sta","oa":14,"x":[29815],"o":"vm_secondary_value_b0"},{"a":29807,"t":"code","b":[134,15],"m":"stx","oa":15,"o":"vm_secondary_value_b1"},{"a":29809,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29812,"l":"AlterEgo_VM_vm_opcode_handler_7474","c":"Alter Ego VM handler for opcode(s) $8C. Purpose/decoded semantics: load_secondary_immediate_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_store_secondary_from_ax_tail depends on the carry vm_fetch_word_split_ax returns. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29815,"t":"code","b":[144,244],"m":"bcc","oa":29805,"o":"vm_store_secondary_from_ax_tail"},{"a":29817,"l":"AlterEgo_VM_vm_opcode_handler_7479","c":"Alter Ego VM handler for opcode(s) $8D. Purpose/decoded semantics: push_immediate_signed_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_push_ax, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_byte.","t":"code","b":[32,152,120],"m":"jsr","oa":30872,"o":"vm_fetch_signed_byte"},{"a":29820,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29823,"l":"AlterEgo_VM_vm_opcode_handler_747f","c":"Alter Ego VM handler for opcode(s) $8E. Purpose/decoded semantics: push_immediate_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_push_ax, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29826,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29829,"l":"AlterEgo_VM_vm_opcode_handler_7485","c":"Alter Ego VM handler for opcode(s) $8F. Purpose/decoded semantics: add_primary_immediate_signed_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_signed_byte returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_byte.","t":"code","b":[32,152,120],"m":"jsr","oa":30872,"o":"vm_fetch_signed_byte"},{"a":29832,"l":"vm_add_ax_to_primary_tail","c":"Shared tail that adds a freshly fetched immediate operand to VM primary. It computes $0A/$0B = $0A/$0B + A/X with carry propagation through the high byte, then tail-jumps to the dispatcher at $713C. Inputs: A = addend low byte, X = addend high byte; VM primary $0A/$0B holds the accumulator. Carry must be clear on entry, which both fetchers guarantee. Outputs: VM primary $0A/$0B = the 16-bit sum; control resumes at $713C. Assumptions: Entered only by fall-through from vmop_8f_add_primary_immediate_signed_byte at $7485 and by BCC from vmop_90_add_primary_immediate_word at $7494; the BCC both tests and supplies the required clear carry. Not an independent routine. Clobbers: A, flags and VM primary $0A/$0B. Hardware: None.","t":"code","b":[101,10],"m":"adc","oa":10,"x":[29847],"o":"vm_primary_value_b0"},{"a":29834,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29836,"t":"code","b":[138],"m":"txa"},{"a":29837,"t":"code","b":[101,11],"m":"adc","oa":11,"o":"vm_primary_value_b1"},{"a":29839,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":29841,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29844,"l":"AlterEgo_VM_vm_opcode_handler_7494","c":"Alter Ego VM handler for opcode(s) $90. Purpose/decoded semantics: add_primary_immediate_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_add_ax_to_primary_tail depends on the carry vm_fetch_word_split_ax returns. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29847,"t":"code","b":[144,239],"m":"bcc","oa":29832,"o":"vm_add_ax_to_primary_tail"},{"a":29849,"l":"AlterEgo_VM_vm_opcode_handler_7499","c":"Alter Ego VM handler for opcode(s) $A0. Purpose/decoded semantics: load_primary_local_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_frame_relative_address returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29852,"l":"vm_load_primary_byte_through_scratch_tail","c":"Shared tail that loads one byte through the effective address in the zero-page scratch pointer $02/$03 and zero-extends it into VM primary. It performs LDA ($02),Y, stores it in $0A, and stores Y (which is 0) in $0B, then tail-jumps to the dispatcher at $713C. Inputs: $02/$03 = effective address computed by the frame-relative fetcher $78ED or the absolute fetcher $78D6; Y = 0. Outputs: VM primary $0A = the loaded byte, $0B = 0; control resumes at $713C. Assumptions: Entered only by fall-through from vmop_a0_load_primary_local_byte at $7499 and by BCC from vmop_a5_load_primary_absolute_byte at $74A5; Y must be 0 both to index the pointer and to supply the zero high byte. Not an independent routine. Clobbers: A, flags and VM primary $0A/$0B. Hardware: None unless the bytecode-supplied absolute address lies in the I/O block, in which case one I/O register is read.","t":"code","b":[177,2],"m":"lda","oa":2,"x":[29864],"o":"(shared_scratch_02_lo),y"},{"a":29854,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":29856,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":29858,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29861,"l":"AlterEgo_VM_vm_opcode_handler_74a5","c":"Alter Ego VM handler for opcode(s) $A5. Purpose/decoded semantics: load_primary_absolute_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_load_primary_byte_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_load_primary_byte_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29864,"t":"code","b":[144,242],"m":"bcc","oa":29852,"o":"vm_load_primary_byte_through_scratch_tail"},{"a":29866,"l":"AlterEgo_VM_vm_opcode_handler_74aa","c":"Alter Ego VM handler for opcode(s) $A1. Purpose/decoded semantics: load_secondary_local_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_frame_relative_address returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29869,"l":"vm_load_secondary_byte_through_scratch_tail","c":"Shared tail that loads one byte through the scratch pointer $02/$03 and zero-extends it into VM secondary. LDA ($02),Y goes to $0E and Y (0) to $0F, then control tail-jumps to the dispatcher at $713C. Inputs: $02/$03 = effective address from $78ED or $78D6; Y = 0. Outputs: VM secondary $0E = the loaded byte, $0F = 0; control resumes at $713C. Assumptions: Entered only by fall-through from vmop_a1_load_secondary_local_byte at $74AA and by BCC from vmop_a7_load_secondary_absolute_byte at $74B6; Y must be 0. Not an independent routine. Clobbers: A, flags and VM secondary $0E/$0F. Hardware: None unless the absolute address lies in the I/O block, in which case one I/O register is read.","t":"code","b":[177,2],"m":"lda","oa":2,"x":[29881],"o":"(shared_scratch_02_lo),y"},{"a":29871,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":29873,"t":"code","b":[132,15],"m":"sty","oa":15,"o":"vm_secondary_value_b1"},{"a":29875,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29878,"l":"AlterEgo_VM_vm_opcode_handler_74b6","c":"Alter Ego VM handler for opcode(s) $A7. Purpose/decoded semantics: load_secondary_absolute_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_load_secondary_byte_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_load_secondary_byte_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29881,"t":"code","b":[144,242],"m":"bcc","oa":29869,"o":"vm_load_secondary_byte_through_scratch_tail"},{"a":29883,"l":"AlterEgo_VM_vm_opcode_handler_74bb","c":"Alter Ego VM handler for opcode(s) $A2. Purpose/decoded semantics: store_primary_local_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_frame_relative_address returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29886,"l":"vm_store_primary_byte_through_scratch_tail","c":"Shared tail that stores the low byte of VM primary through the scratch pointer $02/$03. It performs LDA $0A / STA ($02),Y and tail-jumps to the dispatcher at $713C; the primary high byte is discarded, so this is the byte-sized store. Inputs: VM primary $0A; $02/$03 = effective address from $78ED or $78D6; Y = 0. Outputs: one byte written at the effective address; control resumes at $713C. Assumptions: Entered only by fall-through from vmop_a2_store_primary_local_byte at $74BB and by BCC from vmop_a9_store_primary_absolute_byte at $74C5; Y must be 0 and the target must be writable. Not an independent routine. Clobbers: A and flags. Hardware: None unless the bytecode-supplied absolute address lies in the I/O block, in which case one I/O register is written.","t":"code","b":[165,10],"m":"lda","oa":10,"x":[29896],"o":"vm_primary_value_b0"},{"a":29888,"t":"code","b":[145,2],"m":"sta","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":29890,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29893,"l":"AlterEgo_VM_vm_opcode_handler_74c5","c":"Alter Ego VM handler for opcode(s) $A9. Purpose/decoded semantics: store_primary_absolute_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_store_primary_byte_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_store_primary_byte_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29896,"t":"code","b":[144,244],"m":"bcc","oa":29886,"o":"vm_store_primary_byte_through_scratch_tail"},{"a":29898,"l":"AlterEgo_VM_vm_opcode_handler_74ca","c":"Alter Ego VM handler for opcode(s) $A3. Purpose/decoded semantics: push_local_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. After vm_fetch_frame_relative_address returns, execution falls through into the code that follows this handler in address order, so nothing may be inserted between them. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_frame_relative_address.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":29901,"l":"vm_push_byte_through_scratch_tail","c":"Shared tail that loads one byte through the scratch pointer $02/$03 and pushes it, zero-extended to 16 bits, on the VM expression stack. It performs LDA ($02),Y / LDX #0 and tail-jumps to the shared 16-bit push helper at $7909, which decrements $04/$05 and writes A/X. Inputs: $02/$03 = effective address from $78ED or $78D6; Y = 0; VM expression stack pointer $04/$05. Outputs: the zero-extended byte pushed on the expression stack; $7909 resumes the dispatcher. Does not return here. Assumptions: Entered only by fall-through from vmop_a3_push_local_byte at $74CA and by BCC from vmop_ab_push_absolute_byte at $74D4; Y must be 0 and the expression stack must have room for one word. Not an independent routine. Clobbers: A, X, flags and the expression stack pointer $04/$05. Hardware: None unless the absolute address lies in the I/O block, in which case one I/O register is read.","t":"code","b":[177,2],"m":"lda","oa":2,"x":[29911],"o":"(shared_scratch_02_lo),y"},{"a":29903,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":29905,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":29908,"l":"AlterEgo_VM_vm_opcode_handler_74d4","c":"Alter Ego VM handler for opcode(s) $AB. Purpose/decoded semantics: push_absolute_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The BCC into vm_push_byte_through_scratch_tail is unconditional in practice because vm_fetch_word_to_scratch issues CLC on both of its exit paths before RTS, so carry is always clear on return; the operand word it leaves in $02/$03 is what vm_push_byte_through_scratch_tail consumes. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29911,"t":"code","b":[144,244],"m":"bcc","oa":29901,"o":"vm_push_byte_through_scratch_tail"},{"a":29913,"l":"AlterEgo_VM_vm_opcode_handler_74d9","c":"VM opcode $AC: fetch a little-endian absolute native target into $02/$03, call it through trampoline $74E2, then resume fetch/decode at $713C. Inputs: two-byte target at script IP and VM arguments at $04/$05. Outputs: native helper result in VM registers. Clobbers: native-helper-defined plus scratch $02/$03. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_to_scratch, vm_native_indirect_trampoline.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":29916,"t":"code","b":[32,226,116],"m":"jsr","oa":29922,"o":"vm_native_indirect_trampoline"},{"a":29919,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29922,"l":"vm_native_indirect_trampoline","c":"Indirect native-call trampoline used by VM opcode $AC. Inputs: $02/$03=target. Outputs: returns to $74DF when the target executes RTS. Assumptions: $02/$03 must hold a valid native address and the JSR return pushed at $74DC must still be on the stack, because this JMP deliberately creates no new frame -- the target's RTS returns to $74DF. Entering it with stale $02/$03 transfers control to arbitrary memory. Clobbers: target-defined. The JMP indirect deliberately preserves the JSR return already placed by $74DC. Hardware: Touches no hardware: a single JMP ($02). Whatever the dispatched target does is its own.","t":"code","b":[108,2,0],"m":"jmp","oa":2,"x":[29916],"o":"(shared_scratch_02_lo)"},{"a":29925,"l":"AlterEgo_VM_vm_opcode_handler_74e5","c":"Alter Ego VM handler for opcode(s) $DD. Purpose/decoded semantics: call_native_indirect_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_call_primary_indirect.","t":"code","b":[32,235,116],"m":"jsr","oa":29931,"o":"vm_call_primary_indirect"},{"a":29928,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29931,"l":"vm_call_primary_indirect","c":"Indirect call through VM primary $0A/$0B. Inputs: primary word must be a native address. Outputs/clobbers are target-defined; returns to the VM dispatcher through its caller. Assumptions: VM primary $0A/$0B must hold a native code address rather than a data pointer, and the caller's return address must already be on the stack because this is a JMP: the target's RTS returns to the VM dispatcher's caller. Hardware: Touches no hardware: a single JMP ($0A). Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[108,10,0],"m":"jmp","oa":10,"x":[29925],"o":"(vm_primary_value_b0)"},{"a":29934,"l":"AlterEgo_VM_vm_opcode_handler_74ee","c":"Alter Ego VM handler for opcode(s) $AD. Purpose/decoded semantics: copy_primary_to_secondary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends on a conditional BNE: control either goes to LAB_74ff or falls through into vm_opcode_handler_750f at the next address, so both continuations are live and the two bodies must stay adjacent. The locations it reads before writing ($0A,Y, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29937,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":29939,"t":"code","b":[134,2],"m":"stx","oa":2,"o":"shared_scratch_02_lo"},{"a":29941,"t":"code","b":[170],"m":"tax"},{"a":29942,"t":"code","b":[208,7],"m":"bne","oa":29951,"o":"LAB_74ff"},{"a":29944,"l":"LAB_74f8","t":"code","b":[198,2],"m":"dec","oa":2,"x":[29963],"o":"shared_scratch_02_lo"},{"a":29946,"t":"code","b":[16,3],"m":"bpl","oa":29951,"o":"LAB_74ff"},{"a":29948,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29951,"l":"LAB_74ff","t":"code","b":[177,10],"m":"lda","oa":10,"x":[29942,29946,29965],"o":"(vm_primary_value_b0),y"},{"a":29953,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":29955,"t":"code","b":[200],"m":"iny"},{"a":29956,"t":"code","b":[208,4],"m":"bne","oa":29962,"o":"LAB_750a"},{"a":29958,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":29960,"t":"code","b":[230,15],"m":"inc","oa":15,"o":"vm_secondary_value_b1"},{"a":29962,"l":"LAB_750a","t":"code","b":[202],"m":"dex","x":[29956]},{"a":29963,"t":"code","b":[240,235],"m":"beq","oa":29944,"o":"LAB_74f8"},{"a":29965,"t":"code","b":[208,240],"m":"bne","oa":29951,"o":"LAB_74ff"},{"a":29967,"l":"AlterEgo_VM_vm_opcode_handler_750f","c":"Alter Ego VM handler for opcode(s) $AE. Purpose/decoded semantics: adjust_stack_signed_byte. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_signed_byte.","t":"code","b":[32,152,120],"m":"jsr","oa":30872,"o":"vm_fetch_signed_byte"},{"a":29970,"t":"code","b":[101,4],"m":"adc","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":29972,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":29974,"t":"code","b":[144,2],"m":"bcc","oa":29978,"o":"LAB_751a"},{"a":29976,"t":"code","b":[230,5],"m":"inc","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":29978,"l":"LAB_751a","t":"code","b":[76,60,113],"m":"jmp","oa":28988,"x":[29974],"o":"vm_fetch_decode_dispatch"},{"a":29981,"l":"AlterEgo_VM_vm_opcode_handler_751d","c":"Alter Ego VM handler for opcode(s) $AF. Purpose/decoded semantics: adjust_stack_word. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"o":"vm_fetch_word_split_ax"},{"a":29984,"t":"code","b":[101,4],"m":"adc","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":29986,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":29988,"t":"code","b":[138],"m":"txa"},{"a":29989,"t":"code","b":[101,5],"m":"adc","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":29991,"t":"code","b":[133,5],"m":"sta","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":29993,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":29996,"l":"AlterEgo_VM_vm_opcode_handler_752c","c":"Alter Ego VM handler for opcode(s) $D6. Purpose/decoded semantics: branch. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_fetch_word_split_ax.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"x":[30010,30022],"o":"vm_fetch_word_split_ax"},{"a":29999,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30001,"t":"code","b":[134,9],"m":"stx","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30003,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30006,"l":"AlterEgo_VM_vm_opcode_handler_7536","c":"Alter Ego VM handler for opcode(s) $D7. Purpose/decoded semantics: branch_if_primary_nonzero. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends on a conditional BNE: control either goes to vm_opcode_handler_752c or falls through into vm_branch_not_taken_skip_word_operand_tail at the next address, so both continuations are live and the two bodies must stay adjacent. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30008,"t":"code","b":[5,11],"m":"ora","oa":11,"o":"vm_primary_value_b1"},{"a":30010,"t":"code","b":[208,240],"m":"bne","oa":29996,"o":"AlterEgo_VM_vm_opcode_handler_752c"},{"a":30012,"l":"vm_branch_not_taken_skip_word_operand_tail","c":"Shared not-taken path of the two conditional-branch opcodes. It calls the word fetcher $78C0 purely to step the script IP $08/$09 over the two-byte branch displacement, discards the value, and tail-jumps to the dispatcher at $713C. Inputs: script IP $08/$09 pointing at the branch operand. Outputs: script IP advanced by two; control resumes at $713C with primary and secondary untouched. Assumptions: Entered only by fall-through from vmop_d7_branch_if_primary_nonzero at $7536 when its BNE is not taken, and by BNE from vmop_d8_branch_if_primary_zero at $7548. Two operand bytes must be present. Not an independent routine. Clobbers: A, X, Y, flags and script IP $08/$09. Hardware: None.","t":"code","b":[32,192,120],"m":"jsr","oa":30912,"x":[30024],"o":"vm_fetch_word_split_ax"},{"a":30015,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30018,"l":"AlterEgo_VM_vm_opcode_handler_7542","c":"Alter Ego VM handler for opcode(s) $D8. Purpose/decoded semantics: branch_if_primary_zero. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends on a conditional BNE: control either goes to vm_branch_not_taken_skip_word_operand_tail or falls through into vm_opcode_handler_754a at the next address, so both continuations are live and the two bodies must stay adjacent. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30020,"t":"code","b":[5,11],"m":"ora","oa":11,"o":"vm_primary_value_b1"},{"a":30022,"t":"code","b":[240,228],"m":"beq","oa":29996,"o":"AlterEgo_VM_vm_opcode_handler_752c"},{"a":30024,"t":"code","b":[208,242],"m":"bne","oa":30012,"o":"vm_branch_not_taken_skip_word_operand_tail"},{"a":30026,"l":"AlterEgo_VM_vm_opcode_handler_754a","c":"Alter Ego VM handler for opcode(s) $D9. Purpose/decoded semantics: case_sparse. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing ($08,Y, vm_instruction_ptr_lo, vm_instruction_ptr_hi, vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30028,"t":"code","b":[170],"m":"tax"},{"a":30029,"t":"code","b":[200],"m":"iny"},{"a":30030,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30032,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":30034,"t":"code","b":[24],"m":"clc"},{"a":30035,"t":"code","b":[165,8],"m":"lda","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30037,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":30039,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30041,"t":"code","b":[144,2],"m":"bcc","oa":30045,"o":"LAB_755d"},{"a":30043,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30045,"l":"LAB_755d","t":"code","b":[160,0],"m":"ldy","x":[30041,30078,30082],"o":"#$00"},{"a":30047,"t":"code","b":[138],"m":"txa"},{"a":30048,"t":"code","b":[208,7],"m":"bne","oa":30057,"o":"LAB_7569"},{"a":30050,"t":"code","b":[198,14],"m":"dec","oa":14,"o":"vm_secondary_value_b0"},{"a":30052,"t":"code","b":[16,3],"m":"bpl","oa":30057,"o":"LAB_7569"},{"a":30054,"t":"code","b":[136],"m":"dey"},{"a":30055,"t":"code","b":[208,27],"m":"bne","oa":30084,"o":"LAB_7584"},{"a":30057,"l":"LAB_7569","t":"code","b":[202],"m":"dex","x":[30048,30052]},{"a":30058,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30060,"t":"code","b":[197,10],"m":"cmp","oa":10,"o":"vm_primary_value_b0"},{"a":30062,"t":"code","b":[208,7],"m":"bne","oa":30071,"o":"LAB_7577"},{"a":30064,"t":"code","b":[200],"m":"iny"},{"a":30065,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30067,"t":"code","b":[197,11],"m":"cmp","oa":11,"o":"vm_primary_value_b1"},{"a":30069,"t":"code","b":[240,13],"m":"beq","oa":30084,"o":"LAB_7584"},{"a":30071,"l":"LAB_7577","t":"code","b":[24],"m":"clc","x":[30062]},{"a":30072,"t":"code","b":[165,8],"m":"lda","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30074,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":30076,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30078,"t":"code","b":[144,221],"m":"bcc","oa":30045,"o":"LAB_755d"},{"a":30080,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30082,"t":"code","b":[176,217],"m":"bcs","oa":30045,"o":"LAB_755d"},{"a":30084,"l":"LAB_7584","t":"code","b":[200],"m":"iny","x":[30055,30069]},{"a":30085,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30087,"t":"code","b":[170],"m":"tax"},{"a":30088,"t":"code","b":[200],"m":"iny"},{"a":30089,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30091,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30093,"t":"code","b":[134,8],"m":"stx","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30095,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30098,"l":"AlterEgo_VM_vm_opcode_handler_7592","c":"Alter Ego VM handler for opcode(s) $D5. Purpose/decoded semantics: case_dense. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing ($08,Y, vm_primary_value_b0, vm_primary_value_b1, vm_instruction_ptr_lo, vm_instruction_ptr_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[24],"m":"clc"},{"a":30099,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30101,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":30103,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30105,"t":"code","b":[200],"m":"iny"},{"a":30106,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30108,"t":"code","b":[101,11],"m":"adc","oa":11,"o":"vm_primary_value_b1"},{"a":30110,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30112,"t":"code","b":[200],"m":"iny"},{"a":30113,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30115,"t":"code","b":[209,8],"m":"cmp","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30117,"t":"code","b":[200],"m":"iny"},{"a":30118,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30120,"t":"code","b":[241,8],"m":"sbc","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30122,"t":"code","b":[200],"m":"iny"},{"a":30123,"t":"code","b":[176,17],"m":"bcs","oa":30142,"o":"LAB_75be"},{"a":30125,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30127,"t":"code","b":[10],"m":"asl","o":"a"},{"a":30128,"t":"code","b":[38,11],"m":"rol","oa":11,"o":"vm_primary_value_b1"},{"a":30130,"t":"code","b":[101,8],"m":"adc","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30132,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30134,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30136,"t":"code","b":[101,9],"m":"adc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30138,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30140,"t":"code","b":[160,6],"m":"ldy","o":"#$06"},{"a":30142,"l":"LAB_75be","t":"code","b":[177,8],"m":"lda","oa":8,"x":[30123],"o":"(vm_instruction_ptr_lo),y"},{"a":30144,"t":"code","b":[170],"m":"tax"},{"a":30145,"t":"code","b":[200],"m":"iny"},{"a":30146,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30148,"t":"code","b":[133,9],"m":"sta","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30150,"t":"code","b":[134,8],"m":"stx","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30152,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30155,"l":"AlterEgo_VM_vm_opcode_handler_75cb","c":"Alter Ego VM handler for opcode(s) $B0. Purpose/decoded semantics: load_word_through_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing ($0A,Y) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[177,10],"m":"lda","oa":10,"o":"(vm_primary_value_b0),y"},{"a":30157,"t":"code","b":[170],"m":"tax"},{"a":30158,"t":"code","b":[200],"m":"iny"},{"a":30159,"t":"code","b":[177,10],"m":"lda","oa":10,"o":"(vm_primary_value_b0),y"},{"a":30161,"t":"code","b":[134,10],"m":"stx","oa":10,"o":"vm_primary_value_b0"},{"a":30163,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30165,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30168,"l":"AlterEgo_VM_vm_opcode_handler_75d8","c":"Alter Ego VM handler for opcode(s) $D3. Purpose/decoded semantics: load_byte_through_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing ($0A,Y) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[177,10],"m":"lda","oa":10,"o":"(vm_primary_value_b0),y"},{"a":30170,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30172,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30174,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30177,"l":"AlterEgo_VM_vm_opcode_handler_75e1","c":"Alter Ego VM handler for opcode(s) $B1. Purpose/decoded semantics: store_word_through_secondary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30179,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":30181,"t":"code","b":[200],"m":"iny"},{"a":30182,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30184,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":30186,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30189,"l":"AlterEgo_VM_vm_opcode_handler_75ed","c":"Alter Ego VM handler for opcode(s) $D4. Purpose/decoded semantics: store_byte_through_secondary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30191,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":30193,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30196,"l":"AlterEgo_VM_vm_opcode_handler_75f4","c":"Alter Ego VM handler for opcode(s) $B3. Purpose/decoded semantics: push_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_push_ax, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30198,"t":"code","b":[166,11],"m":"ldx","oa":11,"o":"vm_primary_value_b1"},{"a":30200,"t":"code","b":[76,9,121],"m":"jmp","oa":30985,"o":"vm_push_ax"},{"a":30203,"l":"AlterEgo_VM_vm_opcode_handler_75fb","c":"Alter Ego VM handler for opcode(s) $B4. Purpose/decoded semantics: pop_secondary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing ($04,Y, vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":30205,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":30207,"t":"code","b":[200],"m":"iny"},{"a":30208,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":30210,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":30212,"t":"code","b":[24],"m":"clc"},{"a":30213,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":30215,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":30217,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":30219,"t":"code","b":[144,2],"m":"bcc","oa":30223,"o":"LAB_760f"},{"a":30221,"t":"code","b":[230,5],"m":"inc","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":30223,"l":"LAB_760f","t":"code","b":[76,60,113],"m":"jmp","oa":28988,"x":[30219],"o":"vm_fetch_decode_dispatch"},{"a":30226,"l":"AlterEgo_VM_vm_opcode_handler_7612","c":"Alter Ego VM handler for opcode(s) $B5. Purpose/decoded semantics: multiply_unsigned. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_secondary_value_b1, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":30228,"t":"code","b":[132,2],"m":"sty","oa":2,"o":"shared_scratch_02_lo"},{"a":30230,"t":"code","b":[132,3],"m":"sty","oa":3,"o":"shared_scratch_02_hi"},{"a":30232,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":30234,"l":"LAB_761a","t":"code","b":[165,10],"m":"lda","oa":10,"x":[30261],"o":"vm_primary_value_b0"},{"a":30236,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":30237,"t":"code","b":[144,13],"m":"bcc","oa":30252,"o":"LAB_762c"},{"a":30239,"t":"code","b":[24],"m":"clc"},{"a":30240,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":30242,"t":"code","b":[101,14],"m":"adc","oa":14,"o":"vm_secondary_value_b0"},{"a":30244,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":30246,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":30248,"t":"code","b":[101,15],"m":"adc","oa":15,"o":"vm_secondary_value_b1"},{"a":30250,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":30252,"l":"LAB_762c","t":"code","b":[102,3],"m":"ror","oa":3,"x":[30237],"o":"shared_scratch_02_hi"},{"a":30254,"t":"code","b":[102,2],"m":"ror","oa":2,"o":"shared_scratch_02_lo"},{"a":30256,"t":"code","b":[102,11],"m":"ror","oa":11,"o":"vm_primary_value_b1"},{"a":30258,"t":"code","b":[102,10],"m":"ror","oa":10,"o":"vm_primary_value_b0"},{"a":30260,"t":"code","b":[136],"m":"dey"},{"a":30261,"t":"code","b":[208,227],"m":"bne","oa":30234,"o":"LAB_761a"},{"a":30263,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30266,"l":"AlterEgo_VM_vm_opcode_handler_763a","c":"Alter Ego VM handler for opcode(s) $B8. Purpose/decoded semantics: divide_unsigned. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_divide_u16_core.","t":"code","b":[32,80,118],"m":"jsr","oa":30288,"o":"divide_u16_vm_restoring_core"},{"a":30269,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30272,"l":"AlterEgo_VM_vm_opcode_handler_7640","c":"Alter Ego VM handler for opcode(s) $B6. Purpose/decoded semantics: divide_signed. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b2) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_divide_u16_core, vm_prepare_signed_division.","t":"code","b":[32,156,118],"m":"jsr","oa":30364,"o":"vm_prepare_signed_division"},{"a":30275,"t":"code","b":[32,80,118],"m":"jsr","oa":30288,"o":"divide_u16_vm_restoring_core"},{"a":30278,"t":"code","b":[165,12],"m":"lda","oa":12,"o":"vm_primary_value_b2"},{"a":30280,"t":"code","b":[16,3],"m":"bpl","oa":30285,"o":"LAB_764d"},{"a":30282,"t":"code","b":[76,43,120],"m":"jmp","oa":30763,"o":"AlterEgo_VM_vm_opcode_handler_782b"},{"a":30285,"l":"LAB_764d","t":"code","b":[76,60,113],"m":"jmp","oa":28988,"x":[30280],"o":"vm_fetch_decode_dispatch"},{"a":30288,"l":"divide_u16_vm_restoring_core","c":"Unsigned 16-bit restoring-division core for VM quotient and remainder opcodes. Inputs: dividend in VM primary $0A/$0B and divisor in secondary $0E/$0F, little-endian. Outputs after sixteen rounds: quotient in primary and remainder in $02/$03; secondary retains the divisor. Assumptions: The divisor in secondary $0E/$0F must be non-zero: the sixteen restoring rounds contain no zero check and would return $FFFF with the dividend left as the remainder. $02/$03 must be free because they hold the running remainder, and Y is loaded internally so no entry value is required. Clobbers: A,X,Y, flags and $02/$03. Hardware: none. Across all 14,726 exported descriptors its data-driven callers use choice radices 1..12 or random-modulo operands 3, 33 or 99; no active divisor is zero. Outputs: writes shared_scratch_02_lo, shared_scratch_02_hi, vm_primary_value_b0, vm_primary_value_b1.","t":"code","b":[160,0],"m":"ldy","x":[30266,30275,30329,30350],"o":"#$00"},{"a":30290,"t":"code","b":[132,2],"m":"sty","oa":2,"o":"shared_scratch_02_lo"},{"a":30292,"t":"code","b":[132,3],"m":"sty","oa":3,"o":"shared_scratch_02_hi"},{"a":30294,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":30296,"l":"LAB_7658","t":"code","b":[6,10],"m":"asl","oa":10,"x":[30323],"o":"vm_primary_value_b0"},{"a":30298,"t":"code","b":[38,11],"m":"rol","oa":11,"o":"vm_primary_value_b1"},{"a":30300,"t":"code","b":[38,2],"m":"rol","oa":2,"o":"shared_scratch_02_lo"},{"a":30302,"t":"code","b":[38,3],"m":"rol","oa":3,"o":"shared_scratch_02_hi"},{"a":30304,"t":"code","b":[56],"m":"sec"},{"a":30305,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":30307,"t":"code","b":[229,14],"m":"sbc","oa":14,"o":"vm_secondary_value_b0"},{"a":30309,"t":"code","b":[170],"m":"tax"},{"a":30310,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":30312,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30314,"t":"code","b":[144,6],"m":"bcc","oa":30322,"o":"LAB_7672"},{"a":30316,"t":"code","b":[134,2],"m":"stx","oa":2,"o":"shared_scratch_02_lo"},{"a":30318,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":30320,"t":"code","b":[230,10],"m":"inc","oa":10,"o":"vm_primary_value_b0"},{"a":30322,"l":"LAB_7672","t":"code","b":[136],"m":"dey","x":[30314]},{"a":30323,"t":"code","b":[208,227],"m":"bne","oa":30296,"o":"LAB_7658"},{"a":30325,"t":"code","b":[96],"m":"rts"},{"a":30326,"l":"AlterEgo_VM_vm_opcode_handler_7676","c":"Alter Ego VM handler for opcode(s) $B9. Purpose/decoded semantics: remainder_signed. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (shared_scratch_02_lo, shared_scratch_02_hi, vm_primary_value_b3) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_divide_u16_core, vm_prepare_signed_division.","t":"code","b":[32,156,118],"m":"jsr","oa":30364,"o":"vm_prepare_signed_division"},{"a":30329,"t":"code","b":[32,80,118],"m":"jsr","oa":30288,"o":"divide_u16_vm_restoring_core"},{"a":30332,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":30334,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30336,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":30338,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30340,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"vm_primary_value_b3"},{"a":30342,"t":"code","b":[16,3],"m":"bpl","oa":30347,"o":"LAB_768b"},{"a":30344,"t":"code","b":[76,43,120],"m":"jmp","oa":30763,"o":"AlterEgo_VM_vm_opcode_handler_782b"},{"a":30347,"l":"LAB_768b","t":"code","b":[76,60,113],"m":"jmp","oa":28988,"x":[30342],"o":"vm_fetch_decode_dispatch"},{"a":30350,"l":"AlterEgo_VM_vm_opcode_handler_768e","c":"Alter Ego VM handler for opcode(s) $BA. Purpose/decoded semantics: remainder_unsigned. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (shared_scratch_02_lo, shared_scratch_02_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside vm_divide_u16_core.","t":"code","b":[32,80,118],"m":"jsr","oa":30288,"o":"divide_u16_vm_restoring_core"},{"a":30353,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":30355,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30357,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":30359,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30361,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30364,"l":"vm_prepare_signed_division","c":"Prepare VM operands for signed division or remainder. Input: primary $0A/$0B is the signed dividend and secondary $0E/$0F is the signed divisor. Saves the dividend sign in $0D and the quotient sign, dividend XOR divisor, in $0C, then converts each negative operand to its 16-bit two-complement magnitude. The caller runs vm_divide_u16_core and reapplies $0C to a quotient or $0D to a remainder. Output: nonnegative magnitudes in primary and secondary; sign flags in $0C/$0D. Assumptions: Y must be zero on entry: both negation sequences compute 0-value with TYA/SBC, so a non-zero Y silently biases the magnitudes. $0C/$0D must be free for the sign flags, the caller must run the unsigned core and then reapply $0C for a quotient or $0D for a remainder, and an operand of $8000 negates to itself and is outside the contract. Clobbers A and flags; Y is assumed zero by the surrounding VM dispatcher. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Clobbers: A and the processor flags; writes vm_primary_value_b3, vm_primary_value_b2, vm_primary_value_b0, vm_primary_value_b1, vm_secondary_value_b0, vm_secondary_value_b1.","t":"code","b":[165,11],"m":"lda","oa":11,"x":[30272,30326],"o":"vm_primary_value_b1"},{"a":30366,"t":"code","b":[133,13],"m":"sta","oa":13,"o":"vm_primary_value_b3"},{"a":30368,"t":"code","b":[69,15],"m":"eor","oa":15,"o":"vm_secondary_value_b1"},{"a":30370,"t":"code","b":[133,12],"m":"sta","oa":12,"o":"vm_primary_value_b2"},{"a":30372,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30374,"t":"code","b":[16,11],"m":"bpl","oa":30387,"o":"LAB_76b3"},{"a":30376,"t":"code","b":[56],"m":"sec"},{"a":30377,"t":"code","b":[152],"m":"tya"},{"a":30378,"t":"code","b":[229,10],"m":"sbc","oa":10,"o":"vm_primary_value_b0"},{"a":30380,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30382,"t":"code","b":[152],"m":"tya"},{"a":30383,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":30385,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30387,"l":"LAB_76b3","t":"code","b":[165,15],"m":"lda","oa":15,"x":[30374],"o":"vm_secondary_value_b1"},{"a":30389,"t":"code","b":[16,11],"m":"bpl","oa":30402,"o":"LAB_76c2"},{"a":30391,"t":"code","b":[56],"m":"sec"},{"a":30392,"t":"code","b":[152],"m":"tya"},{"a":30393,"t":"code","b":[229,14],"m":"sbc","oa":14,"o":"vm_secondary_value_b0"},{"a":30395,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":30397,"t":"code","b":[152],"m":"tya"},{"a":30398,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30400,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":30402,"l":"LAB_76c2","t":"code","b":[96],"m":"rts","x":[30389]},{"a":30403,"l":"AlterEgo_VM_vm_opcode_handler_76c3","c":"Alter Ego VM handler for opcode(s) $BB. Purpose/decoded semantics: add. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[24],"m":"clc"},{"a":30404,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30406,"t":"code","b":[101,14],"m":"adc","oa":14,"o":"vm_secondary_value_b0"},{"a":30408,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30410,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30412,"t":"code","b":[101,15],"m":"adc","oa":15,"o":"vm_secondary_value_b1"},{"a":30414,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30416,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30419,"l":"AlterEgo_VM_vm_opcode_handler_76d3","c":"Alter Ego VM handler for opcode(s) $BC. Purpose/decoded semantics: subtract. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[56],"m":"sec"},{"a":30420,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30422,"t":"code","b":[229,14],"m":"sbc","oa":14,"o":"vm_secondary_value_b0"},{"a":30424,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30426,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30428,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30430,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30432,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30435,"l":"AlterEgo_VM_vm_opcode_handler_76e3","c":"Alter Ego VM handler for opcode(s) $BD. Purpose/decoded semantics: shift_left. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends on a conditional BNE: control either goes to LAB_76ee or falls through into vm_opcode_handler_76f7 at the next address, so both continuations are live and the two bodies must stay adjacent. The locations it reads before writing (vm_secondary_value_b0, vm_secondary_value_b1, vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[166,14],"m":"ldx","oa":14,"o":"vm_secondary_value_b0"},{"a":30437,"t":"code","b":[208,7],"m":"bne","oa":30446,"o":"LAB_76ee"},{"a":30439,"l":"LAB_76e7","t":"code","b":[198,15],"m":"dec","oa":15,"x":[30451],"o":"vm_secondary_value_b1"},{"a":30441,"t":"code","b":[16,3],"m":"bpl","oa":30446,"o":"LAB_76ee"},{"a":30443,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30446,"l":"LAB_76ee","t":"code","b":[6,10],"m":"asl","oa":10,"x":[30437,30441,30453],"o":"vm_primary_value_b0"},{"a":30448,"t":"code","b":[38,11],"m":"rol","oa":11,"o":"vm_primary_value_b1"},{"a":30450,"t":"code","b":[202],"m":"dex"},{"a":30451,"t":"code","b":[240,242],"m":"beq","oa":30439,"o":"LAB_76e7"},{"a":30453,"t":"code","b":[208,247],"m":"bne","oa":30446,"o":"LAB_76ee"},{"a":30455,"l":"AlterEgo_VM_vm_opcode_handler_76f7","c":"Alter Ego VM handler for opcode(s) $BF. Purpose/decoded semantics: shift_right_arithmetic. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends on a conditional BNE: control either goes to LAB_7706 or falls through into vm_opcode_handler_7710 at the next address, so both continuations are live and the two bodies must stay adjacent. The locations it reads before writing (vm_primary_value_b1, vm_secondary_value_b0, vm_secondary_value_b1, vm_primary_value_b0) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30457,"t":"code","b":[16,21],"m":"bpl","oa":30480,"o":"AlterEgo_VM_vm_opcode_handler_7710"},{"a":30459,"t":"code","b":[166,14],"m":"ldx","oa":14,"o":"vm_secondary_value_b0"},{"a":30461,"t":"code","b":[208,7],"m":"bne","oa":30470,"o":"LAB_7706"},{"a":30463,"l":"LAB_76ff","t":"code","b":[198,15],"m":"dec","oa":15,"x":[30476],"o":"vm_secondary_value_b1"},{"a":30465,"t":"code","b":[16,3],"m":"bpl","oa":30470,"o":"LAB_7706"},{"a":30467,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30470,"l":"LAB_7706","t":"code","b":[56],"m":"sec","x":[30461,30465,30478]},{"a":30471,"t":"code","b":[102,11],"m":"ror","oa":11,"o":"vm_primary_value_b1"},{"a":30473,"t":"code","b":[102,10],"m":"ror","oa":10,"o":"vm_primary_value_b0"},{"a":30475,"t":"code","b":[202],"m":"dex"},{"a":30476,"t":"code","b":[240,241],"m":"beq","oa":30463,"o":"LAB_76ff"},{"a":30478,"t":"code","b":[208,246],"m":"bne","oa":30470,"o":"LAB_7706"},{"a":30480,"l":"AlterEgo_VM_vm_opcode_handler_7710","c":"Alter Ego VM handler for opcode(s) $BE. Purpose/decoded semantics: shift_right_logical. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It ends on a conditional BNE: control either goes to LAB_771b or falls through into vm_opcode_handler_7724 at the next address, so both continuations are live and the two bodies must stay adjacent. The locations it reads before writing (vm_secondary_value_b0, vm_secondary_value_b1, vm_primary_value_b1, vm_primary_value_b0) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[166,14],"m":"ldx","oa":14,"x":[30457],"o":"vm_secondary_value_b0"},{"a":30482,"t":"code","b":[208,7],"m":"bne","oa":30491,"o":"LAB_771b"},{"a":30484,"l":"LAB_7714","t":"code","b":[198,15],"m":"dec","oa":15,"x":[30496],"o":"vm_secondary_value_b1"},{"a":30486,"t":"code","b":[16,3],"m":"bpl","oa":30491,"o":"LAB_771b"},{"a":30488,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30491,"l":"LAB_771b","t":"code","b":[70,11],"m":"lsr","oa":11,"x":[30482,30486,30498],"o":"vm_primary_value_b1"},{"a":30493,"t":"code","b":[102,10],"m":"ror","oa":10,"o":"vm_primary_value_b0"},{"a":30495,"t":"code","b":[202],"m":"dex"},{"a":30496,"t":"code","b":[240,242],"m":"beq","oa":30484,"o":"LAB_7714"},{"a":30498,"t":"code","b":[208,247],"m":"bne","oa":30491,"o":"LAB_771b"},{"a":30500,"l":"AlterEgo_VM_vm_opcode_handler_7724","c":"Alter Ego VM handler for opcode(s) $DA. Purpose/decoded semantics: bitwise_and. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30502,"t":"code","b":[37,14],"m":"and","oa":14,"o":"vm_secondary_value_b0"},{"a":30504,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30506,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30508,"t":"code","b":[37,15],"m":"and","oa":15,"o":"vm_secondary_value_b1"},{"a":30510,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30512,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30515,"l":"AlterEgo_VM_vm_opcode_handler_7733","c":"Alter Ego VM handler for opcode(s) $DB. Purpose/decoded semantics: bitwise_or. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30517,"t":"code","b":[5,14],"m":"ora","oa":14,"o":"vm_secondary_value_b0"},{"a":30519,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30521,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30523,"t":"code","b":[5,15],"m":"ora","oa":15,"o":"vm_secondary_value_b1"},{"a":30525,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30527,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30530,"l":"AlterEgo_VM_vm_opcode_handler_7742","c":"Alter Ego VM handler for opcode(s) $DC. Purpose/decoded semantics: bitwise_xor. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30532,"t":"code","b":[69,14],"m":"eor","oa":14,"o":"vm_secondary_value_b0"},{"a":30534,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30536,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30538,"t":"code","b":[69,15],"m":"eor","oa":15,"o":"vm_secondary_value_b1"},{"a":30540,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30542,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30545,"l":"AlterEgo_VM_vm_opcode_handler_7751","c":"Alter Ego VM handler for opcode(s) $C0. Purpose/decoded semantics: compare_equal. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b1, vm_secondary_value_b1, vm_primary_value_b0, vm_secondary_value_b0) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30547,"t":"code","b":[197,15],"m":"cmp","oa":15,"o":"vm_secondary_value_b1"},{"a":30549,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30551,"t":"code","b":[208,7],"m":"bne","oa":30560,"o":"LAB_7760"},{"a":30553,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30555,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":30557,"t":"code","b":[208,1],"m":"bne","oa":30560,"o":"LAB_7760"},{"a":30559,"t":"code","b":[200],"m":"iny"},{"a":30560,"l":"LAB_7760","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30551,30557],"o":"vm_primary_value_b0"},{"a":30562,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30565,"l":"AlterEgo_VM_vm_opcode_handler_7765","c":"Alter Ego VM handler for opcode(s) $C1. Purpose/decoded semantics: compare_not_equal. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b1, vm_secondary_value_b1, vm_primary_value_b0, vm_secondary_value_b0) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30567,"t":"code","b":[197,15],"m":"cmp","oa":15,"o":"vm_secondary_value_b1"},{"a":30569,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30571,"t":"code","b":[208,6],"m":"bne","oa":30579,"o":"LAB_7773"},{"a":30573,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30575,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":30577,"t":"code","b":[240,1],"m":"beq","oa":30580,"o":"LAB_7774"},{"a":30579,"l":"LAB_7773","t":"code","b":[200],"m":"iny","x":[30571]},{"a":30580,"l":"LAB_7774","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30577],"o":"vm_primary_value_b0"},{"a":30582,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30585,"l":"AlterEgo_VM_vm_opcode_handler_7779","c":"Alter Ego VM handler for opcode(s) $C2. Purpose/decoded semantics: compare_signed_less. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30587,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":30589,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30591,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30593,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30595,"t":"code","b":[16,1],"m":"bpl","oa":30598,"o":"LAB_7786"},{"a":30597,"t":"code","b":[200],"m":"iny"},{"a":30598,"l":"LAB_7786","t":"code","b":[152],"m":"tya","x":[30595]},{"a":30599,"t":"code","b":[80,2],"m":"bvc","oa":30603,"o":"LAB_778b"},{"a":30601,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":30603,"l":"LAB_778b","t":"code","b":[133,10],"m":"sta","oa":10,"x":[30599],"o":"vm_primary_value_b0"},{"a":30605,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30608,"l":"AlterEgo_VM_vm_opcode_handler_7790","c":"Alter Ego VM handler for opcode(s) $C4. Purpose/decoded semantics: compare_signed_greater. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_secondary_value_b0, vm_primary_value_b0, vm_secondary_value_b1, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":30610,"t":"code","b":[197,10],"m":"cmp","oa":10,"o":"vm_primary_value_b0"},{"a":30612,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":30614,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":30616,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30618,"t":"code","b":[16,1],"m":"bpl","oa":30621,"o":"LAB_779d"},{"a":30620,"t":"code","b":[200],"m":"iny"},{"a":30621,"l":"LAB_779d","t":"code","b":[152],"m":"tya","x":[30618]},{"a":30622,"t":"code","b":[80,2],"m":"bvc","oa":30626,"o":"LAB_77a2"},{"a":30624,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":30626,"l":"LAB_77a2","t":"code","b":[133,10],"m":"sta","oa":10,"x":[30622],"o":"vm_primary_value_b0"},{"a":30628,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30631,"l":"AlterEgo_VM_vm_opcode_handler_77a7","c":"Alter Ego VM handler for opcode(s) $C3. Purpose/decoded semantics: compare_signed_greater_equal. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_secondary_value_b0, vm_primary_value_b0, vm_secondary_value_b1, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":30633,"t":"code","b":[197,10],"m":"cmp","oa":10,"o":"vm_primary_value_b0"},{"a":30635,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":30637,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":30639,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30641,"t":"code","b":[48,1],"m":"bmi","oa":30644,"o":"LAB_77b4"},{"a":30643,"t":"code","b":[200],"m":"iny"},{"a":30644,"l":"LAB_77b4","t":"code","b":[152],"m":"tya","x":[30641]},{"a":30645,"t":"code","b":[80,2],"m":"bvc","oa":30649,"o":"LAB_77b9"},{"a":30647,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":30649,"l":"LAB_77b9","t":"code","b":[133,10],"m":"sta","oa":10,"x":[30645],"o":"vm_primary_value_b0"},{"a":30651,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30654,"l":"AlterEgo_VM_vm_opcode_handler_77be","c":"Alter Ego VM handler for opcode(s) $C5. Purpose/decoded semantics: compare_signed_less_equal. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30656,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":30658,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30660,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30662,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30664,"t":"code","b":[48,1],"m":"bmi","oa":30667,"o":"LAB_77cb"},{"a":30666,"t":"code","b":[200],"m":"iny"},{"a":30667,"l":"LAB_77cb","t":"code","b":[152],"m":"tya","x":[30664]},{"a":30668,"t":"code","b":[80,2],"m":"bvc","oa":30672,"o":"LAB_77d0"},{"a":30670,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":30672,"l":"LAB_77d0","t":"code","b":[133,10],"m":"sta","oa":10,"x":[30668],"o":"vm_primary_value_b0"},{"a":30674,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30677,"l":"AlterEgo_VM_vm_opcode_handler_77d5","c":"Alter Ego VM handler for opcode(s) $C6. Purpose/decoded semantics: compare_unsigned_less. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30679,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":30681,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30683,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30685,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30687,"t":"code","b":[176,1],"m":"bcs","oa":30690,"o":"LAB_77e2"},{"a":30689,"t":"code","b":[200],"m":"iny"},{"a":30690,"l":"LAB_77e2","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30687],"o":"vm_primary_value_b0"},{"a":30692,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30695,"l":"AlterEgo_VM_vm_opcode_handler_77e7","c":"Alter Ego VM handler for opcode(s) $C8. Purpose/decoded semantics: compare_unsigned_greater. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_secondary_value_b0, vm_primary_value_b0, vm_secondary_value_b1, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":30697,"t":"code","b":[197,10],"m":"cmp","oa":10,"o":"vm_primary_value_b0"},{"a":30699,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":30701,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":30703,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30705,"t":"code","b":[176,1],"m":"bcs","oa":30708,"o":"LAB_77f4"},{"a":30707,"t":"code","b":[200],"m":"iny"},{"a":30708,"l":"LAB_77f4","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30705],"o":"vm_primary_value_b0"},{"a":30710,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30713,"l":"AlterEgo_VM_vm_opcode_handler_77f9","c":"Alter Ego VM handler for opcode(s) $C7. Purpose/decoded semantics: compare_unsigned_greater_equal. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_secondary_value_b0, vm_primary_value_b0, vm_secondary_value_b1, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,14],"m":"lda","oa":14,"o":"vm_secondary_value_b0"},{"a":30715,"t":"code","b":[197,10],"m":"cmp","oa":10,"o":"vm_primary_value_b0"},{"a":30717,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":30719,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":30721,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30723,"t":"code","b":[144,1],"m":"bcc","oa":30726,"o":"LAB_7806"},{"a":30725,"t":"code","b":[200],"m":"iny"},{"a":30726,"l":"LAB_7806","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30723],"o":"vm_primary_value_b0"},{"a":30728,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30731,"l":"AlterEgo_VM_vm_opcode_handler_780b","c":"Alter Ego VM handler for opcode(s) $C9. Purpose/decoded semantics: compare_unsigned_less_equal. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30733,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":30735,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30737,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":30739,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30741,"t":"code","b":[144,1],"m":"bcc","oa":30744,"o":"LAB_7818"},{"a":30743,"t":"code","b":[200],"m":"iny"},{"a":30744,"l":"LAB_7818","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30741],"o":"vm_primary_value_b0"},{"a":30746,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30749,"l":"AlterEgo_VM_vm_opcode_handler_781d","c":"Alter Ego VM handler for opcode(s) $CA. Purpose/decoded semantics: booleanize_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b1, vm_primary_value_b0) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30751,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":30753,"t":"code","b":[5,10],"m":"ora","oa":10,"o":"vm_primary_value_b0"},{"a":30755,"t":"code","b":[208,1],"m":"bne","oa":30758,"o":"LAB_7826"},{"a":30757,"t":"code","b":[200],"m":"iny"},{"a":30758,"l":"LAB_7826","t":"code","b":[132,10],"m":"sty","oa":10,"x":[30755],"o":"vm_primary_value_b0"},{"a":30760,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30763,"l":"AlterEgo_VM_vm_opcode_handler_782b","c":"Alter Ego VM handler for opcode(s) $CB. Purpose/decoded semantics: negate_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[56],"m":"sec","x":[30282,30344]},{"a":30764,"t":"code","b":[152],"m":"tya"},{"a":30765,"t":"code","b":[229,10],"m":"sbc","oa":10,"o":"vm_primary_value_b0"},{"a":30767,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30769,"t":"code","b":[152],"m":"tya"},{"a":30770,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":30772,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30774,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30777,"l":"AlterEgo_VM_vm_opcode_handler_7839","c":"Alter Ego VM handler for opcode(s) $CC. Purpose/decoded semantics: complement_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30779,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":30781,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":30783,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30785,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":30787,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":30789,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30792,"l":"AlterEgo_VM_vm_opcode_handler_7848","c":"Alter Ego VM handler for opcode(s) $CD. Purpose/decoded semantics: swap_primary_secondary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_secondary_value_b0, vm_primary_value_b1, vm_secondary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30794,"t":"code","b":[166,14],"m":"ldx","oa":14,"o":"vm_secondary_value_b0"},{"a":30796,"t":"code","b":[134,10],"m":"stx","oa":10,"o":"vm_primary_value_b0"},{"a":30798,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":30800,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":30802,"t":"code","b":[166,15],"m":"ldx","oa":15,"o":"vm_secondary_value_b1"},{"a":30804,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":30806,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":30808,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30811,"l":"AlterEgo_VM_vm_opcode_handler_785b","c":"Alter Ego VM handler for opcode(s) $D0. Purpose/decoded semantics: increment_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[230,10],"m":"inc","oa":10,"o":"vm_primary_value_b0"},{"a":30813,"t":"code","b":[208,2],"m":"bne","oa":30817,"o":"LAB_7861"},{"a":30815,"t":"code","b":[230,11],"m":"inc","oa":11,"o":"vm_primary_value_b1"},{"a":30817,"l":"LAB_7861","t":"code","b":[76,60,113],"m":"jmp","oa":28988,"x":[30813],"o":"vm_fetch_decode_dispatch"},{"a":30820,"l":"AlterEgo_VM_vm_opcode_handler_7864","c":"Alter Ego VM handler for opcode(s) $D1. Purpose/decoded semantics: decrement_primary. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":30822,"t":"code","b":[208,2],"m":"bne","oa":30826,"o":"LAB_786a"},{"a":30824,"t":"code","b":[198,11],"m":"dec","oa":11,"o":"vm_primary_value_b1"},{"a":30826,"l":"LAB_786a","t":"code","b":[198,10],"m":"dec","oa":10,"x":[30822],"o":"vm_primary_value_b0"},{"a":30828,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30831,"l":"AlterEgo_VM_vm_opcode_handler_786f","c":"Alter Ego VM handler for opcode(s) $D2. Purpose/decoded semantics: shift_left_one. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. The locations it reads before writing (vm_primary_value_b0, vm_primary_value_b1) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[6,10],"m":"asl","oa":10,"o":"vm_primary_value_b0"},{"a":30833,"t":"code","b":[38,11],"m":"rol","oa":11,"o":"vm_primary_value_b1"},{"a":30835,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":30838,"l":"AlterEgo_VM_vm_opcode_handler_7876","c":"Alter Ego VM handler for opcode(s) $CF. Purpose/decoded semantics: return. Inputs: script IP $08/$09 points immediately after the opcode; VM primary is $0A/$0B, secondary $0E/$0F, expression stack $04/$05 and frame $06/$07. Outputs and operand consumption follow the listed opcode semantics. Clobbers: A,X,Y, flags and handler-specific VM scratch. Control normally tail-resumes fetch/decode at $713C; branch, call, return, switch and trap handlers alter that flow as named. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through ($02), so the VM register block must be live throughout. The locations it reads before writing (vm_frame_ptr_lo, vm_frame_ptr_hi, $0E,Y, shared_scratch_02_lo, shared_scratch_02_hi) must already be valid. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":30840,"t":"code","b":[165,6],"m":"lda","oa":6,"o":"vm_frame_ptr_lo"},{"a":30842,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":30844,"t":"code","b":[165,7],"m":"lda","oa":7,"o":"vm_frame_ptr_hi"},{"a":30846,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":30848,"l":"LAB_7880","t":"code","b":[177,14],"m":"lda","oa":14,"x":[30854],"o":"(vm_secondary_value_b0),y"},{"a":30850,"t":"code","b":[153,2,0],"m":"sta","oa":2,"o":"shared_scratch_02_lo,y"},{"a":30853,"t":"code","b":[136],"m":"dey"},{"a":30854,"t":"code","b":[16,248],"m":"bpl","oa":30848,"o":"LAB_7880"},{"a":30856,"t":"code","b":[230,2],"m":"inc","oa":2,"o":"shared_scratch_02_lo"},{"a":30858,"t":"code","b":[208,4],"m":"bne","oa":30864,"o":"LAB_7890"},{"a":30860,"t":"code","b":[230,3],"m":"inc","oa":3,"o":"shared_scratch_02_hi"},{"a":30862,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":30864,"l":"LAB_7890","t":"code","b":[108,2,0],"m":"jmp","oa":2,"x":[30858],"o":"(shared_scratch_02_lo)"},{"a":30867,"l":"AlterEgo_VM_vm_opcode_handler_7893","c":"BRK trap shared by reserved VM opcodes $80, $91-$9F, $CE and $E0-$FE. All 82 resident procedures decode without one of these opcodes at a reachable instruction boundary. Inputs: none; the body writes every location it uses before reading it. Outputs: none in memory or registers; the body only transfers control. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The single BRK is a deliberate trap: it needs the BRK vector to be the one this program installed, and it never returns to the VM. Clobbers: the processor flags only. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[0],"m":"brk"},{"a":30868,"l":"AlterEgo_VM_vm_opcode_handler_7894","c":"BRK trap for VM opcode $FF. No decoded resident procedure reaches this halt opcode; it is an explicit reserved trap rather than unclassified data. Inputs: none; the body writes every location it uses before reading it. Outputs: none in memory or registers; the body only transfers control. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. The single BRK is a deliberate trap: it needs the BRK vector to be the one this program installed, and it never returns to the VM. Clobbers: the processor flags only. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[0],"m":"brk"},{"a":30869,"l":"unreachable_vm_dispatch_tail_residue","c":"Verified unreachable bare JMP $713C immediately after reserved VM traps. No decoded procedure or opcode-table entry selects it in the captured phase; retained as compiler residue.","t":"byte","b":[76,60,113]},{"a":30872,"l":"vm_fetch_signed_byte","c":"Fetch one signed byte from script IP and sign-extend it into A/X. Inputs: $08/$09, Y=0. Outputs: A=low byte, X=$00 or $FF, C clear; script IP advanced one. Assumptions: Y must be 0 on entry, because the fetch is (script IP),Y and the routine never sets Y itself; script IP $08/$09 must address the operand byte. It returns with carry clear, which the calling opcode handlers rely on for their following adds. Clobbers: A,X and flags. Hardware: Touches no hardware: it reads one bytecode byte from RAM and increments the RAM script-IP word.","t":"code","b":[162,0],"m":"ldx","x":[29787,29802,29817,29829,29967],"o":"#$00"},{"a":30874,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30876,"t":"code","b":[16,1],"m":"bpl","oa":30879,"o":"LAB_789f"},{"a":30878,"t":"code","b":[202],"m":"dex"},{"a":30879,"l":"LAB_789f","t":"code","b":[230,8],"m":"inc","oa":8,"x":[30876],"o":"vm_instruction_ptr_lo"},{"a":30881,"t":"code","b":[208,2],"m":"bne","oa":30885,"o":"LAB_78a5"},{"a":30883,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30885,"l":"LAB_78a5","t":"code","b":[24],"m":"clc","x":[30881]},{"a":30886,"t":"code","b":[96],"m":"rts"},{"a":30887,"l":"vm_fetch_signed_branch_target","c":"Fetch a signed one-byte displacement and add it to current frame pointer $06/$07, producing address $02/$03. Inputs: script IP and frame pointer. Outputs: effective address $02/$03; script IP advanced one; C clear. Assumptions: Y must be 0 on entry, script IP $08/$09 must address the displacement byte and frame pointer $06/$07 must be the frame it is relative to. $02/$03 are overwritten with the effective address and must be free; carry is deliberately clear on return. Clobbers: A,X and flags. Hardware: Touches no hardware: bytecode, frame pointer and result all live in RAM.","t":"code","b":[24],"m":"clc","x":[29664,29684,29709,29734]},{"a":30888,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":30890,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30892,"t":"code","b":[16,1],"m":"bpl","oa":30895,"o":"LAB_78af"},{"a":30894,"t":"code","b":[202],"m":"dex"},{"a":30895,"l":"LAB_78af","t":"code","b":[101,6],"m":"adc","oa":6,"x":[30892],"o":"vm_frame_ptr_lo"},{"a":30897,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":30899,"t":"code","b":[138],"m":"txa"},{"a":30900,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":30902,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":30904,"t":"code","b":[230,8],"m":"inc","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30906,"t":"code","b":[208,2],"m":"bne","oa":30910,"o":"LAB_78be"},{"a":30908,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30910,"l":"LAB_78be","t":"code","b":[24],"m":"clc","x":[30906]},{"a":30911,"t":"code","b":[96],"m":"rts"},{"a":30912,"l":"vm_fetch_word_split_ax","c":"Fetch a little-endian word operand from script IP. Outputs: A=low byte, X=high byte, script IP advanced two, C clear. Assumptions: Y must be 0 on entry: the routine does INY to read the high byte and DEY to read the low byte, so it depends on starting at the operand's first byte. Script IP $08/$09 must address a two-byte operand, and the caller must accept carry clear on return. Clobbers: A,X,Y and flags. Hardware: Touches no hardware: it reads two bytecode bytes from RAM and advances the RAM script IP by two. Inputs: entry register Y; memory it reads before writing: $08,Y, vm_instruction_ptr_lo, vm_instruction_ptr_hi.","t":"code","b":[200],"m":"iny","x":[29757,29772,29797,29812,29823,29844,29934,29981,29996,30012]},{"a":30913,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30915,"t":"code","b":[170],"m":"tax"},{"a":30916,"t":"code","b":[136],"m":"dey"},{"a":30917,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30919,"t":"code","b":[72],"m":"pha"},{"a":30920,"t":"code","b":[24],"m":"clc"},{"a":30921,"t":"code","b":[165,8],"m":"lda","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30923,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":30925,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30927,"t":"code","b":[144,3],"m":"bcc","oa":30932,"o":"LAB_78d4"},{"a":30929,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30931,"t":"code","b":[24],"m":"clc"},{"a":30932,"l":"LAB_78d4","t":"code","b":[104],"m":"pla","x":[30927]},{"a":30933,"t":"code","b":[96],"m":"rts"},{"a":30934,"l":"vm_fetch_word_to_scratch","c":"Fetch a little-endian word operand from script IP into scratch $02/$03 and advance script IP by two. Outputs: $02/$03. Assumptions: Y must be 0 on entry and is restored to 0 before returning; script IP $08/$09 must address the two-byte operand and $02/$03 must be free because the fetched word is stored there. Carry is clear on return by contract. Clobbers: A,Y and flags; C clear. Hardware: Touches no hardware: a RAM bytecode read plus a RAM script-IP update. Inputs: entry register Y; memory it reads before writing: $08,Y, vm_instruction_ptr_lo, vm_instruction_ptr_hi.","t":"code","b":[177,8],"m":"lda","oa":8,"x":[29679,29704,29729,29752,29861,29878,29893,29908,29913,32246,32251,32256,32261],"o":"(vm_instruction_ptr_lo),y"},{"a":30936,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":30938,"t":"code","b":[200],"m":"iny"},{"a":30939,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30941,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":30943,"t":"code","b":[136],"m":"dey"},{"a":30944,"t":"code","b":[24],"m":"clc"},{"a":30945,"t":"code","b":[165,8],"m":"lda","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30947,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":30949,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30951,"t":"code","b":[144,3],"m":"bcc","oa":30956,"o":"LAB_78ec"},{"a":30953,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30955,"t":"code","b":[24],"m":"clc"},{"a":30956,"l":"LAB_78ec","t":"code","b":[96],"m":"rts","x":[30951]},{"a":30957,"l":"vm_fetch_frame_relative_address","c":"Fetch a signed frame-relative word offset, add it to frame pointer $06/$07, and return effective address in $02/$03. Inputs: word at script IP. Outputs: effective address and advanced IP. Assumptions: Y must be 0 on entry (it is incremented and then decremented around the two-byte fetch), script IP $08/$09 must address the signed offset word and frame pointer $06/$07 must be valid. $02/$03 receive the effective address and must be free; carry is clear on return. Clobbers: A,Y and flags. Hardware: Touches no hardware: bytecode, frame pointer and result are all RAM.","t":"code","b":[24],"m":"clc","x":[29659,29699,29724,29747,29849,29866,29883,29898,32199,32213,32227,32241]},{"a":30958,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30960,"t":"code","b":[101,6],"m":"adc","oa":6,"o":"vm_frame_ptr_lo"},{"a":30962,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":30964,"t":"code","b":[200],"m":"iny"},{"a":30965,"t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":30967,"t":"code","b":[101,7],"m":"adc","oa":7,"o":"vm_frame_ptr_hi"},{"a":30969,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":30971,"t":"code","b":[136],"m":"dey"},{"a":30972,"t":"code","b":[24],"m":"clc"},{"a":30973,"t":"code","b":[165,8],"m":"lda","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30975,"t":"code","b":[105,2],"m":"adc","o":"#$02"},{"a":30977,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":30979,"t":"code","b":[144,3],"m":"bcc","oa":30984,"o":"LAB_7908"},{"a":30981,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":30983,"t":"code","b":[24],"m":"clc"},{"a":30984,"l":"LAB_7908","t":"code","b":[96],"m":"rts","x":[30979]},{"a":30985,"l":"vm_push_ax","c":"Push A/X as a little-endian word onto the descending VM expression stack. Inputs: A=low, X=high, $04/$05=stack pointer. Outputs: stack pointer decremented by two and word stored. Assumptions: $04/$05 must point at the descending VM expression stack with at least two bytes of headroom, and A/X must already hold the word. The caller must be a VM opcode handler, because the routine ends with JMP $713C instead of RTS -- a native caller would lose its return path. Clobbers: A,Y and flags; then tail-resumes $713C. Hardware: Touches no hardware: it decrements the RAM stack pointer and stores two bytes through it.","t":"code","b":[168],"m":"tay","x":[29361,29384,29586,29744,29820,29826,29905,30200]},{"a":30986,"t":"code","b":[56],"m":"sec"},{"a":30987,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":30989,"t":"code","b":[233,2],"m":"sbc","o":"#$02"},{"a":30991,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":30993,"t":"code","b":[176,2],"m":"bcs","oa":30997,"o":"LAB_7915"},{"a":30995,"t":"code","b":[198,5],"m":"dec","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":30997,"l":"LAB_7915","t":"code","b":[152],"m":"tya","x":[30993]},{"a":30998,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":31000,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":31002,"t":"code","b":[200],"m":"iny"},{"a":31003,"t":"code","b":[138],"m":"txa"},{"a":31004,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":31006,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":31009,"l":"AlterEgo_VM_vm_opcode_handler_7921","c":"Reserved VM opcode $B2 handler. It executes JSR through the fixed external trampoline at $02A7 and resumes fetch/decode at $713C. The slot is zero and no resident procedure emits this opcode in the captured phase. Inputs/outputs/clobbers are therefore external-phase ABI state; hardware effects are target-defined. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through vm_fetch_decode_dispatch, so the VM register block must be live throughout. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply. Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called, so any hardware effect arises inside reserved_external_call_trampoline_slot.","t":"code","b":[32,167,2],"m":"jsr","oa":679,"o":"reserved_external_call_trampoline_slot"},{"a":31012,"t":"code","b":[76,60,113],"m":"jmp","oa":28988,"o":"vm_fetch_decode_dispatch"},{"a":31015,"l":"AlterEgo_VM_vm_opcode_handler_table","c":"Virtual-machine opcode dispatch table. The first 256 bytes are handler low bytes and the second 256 bytes are handler high bytes. The interpreter fetches one byte from the script pointer in $08/$09, indexes both halves, writes the result to zero-page $02/$03, and jumps indirectly. Duplicate entries intentionally map multiple opcodes to shared handlers.","t":"byte","b":[84,88,92,96,100,104,108,112],"x":[28999]},{"a":31023,"t":"byte","b":[116,120,124,128,165,161,157,153]},{"a":31031,"t":"byte","b":[179,183,187,191,195,199,203,207]},{"a":31039,"t":"byte","b":[211,215,219,223,4,0,252,248]},{"a":31047,"t":"byte","b":[18,22,26,30,34,38,42,46]},{"a":31055,"t":"byte","b":[50,54,58,62,99,95,91,87]},{"a":31063,"t":"byte","b":[113,117,121,125,129,133,137,141]},{"a":31071,"t":"byte","b":[145,149,153,157,192,188,184,180]},{"a":31079,"t":"byte","b":[7,3,255,251,247,243,239,235]},{"a":31087,"t":"byte","b":[231,227,223,219,215,211,207,203]},{"a":31095,"t":"byte","b":[75,71,67,63,59,55,51,47]},{"a":31103,"t":"byte","b":[43,39,35,31,27,23,19,15]},{"a":31111,"t":"byte","b":[143,139,135,131,127,123,119,115]},{"a":31119,"t":"byte","b":[111,107,103,99,95,91,87,83]},{"a":31127,"t":"byte","b":[216,205,201,197,193,189,185,181]},{"a":31135,"t":"byte","b":[177,173,169,165,161,157,153,149]},{"a":31143,"t":"byte","b":[147,224,219,244,3,13,28,38]},{"a":31151,"t":"byte","b":[51,91,101,106,116,121,127,133]},{"a":31159,"t":"byte","b":[148,147,147,147,147,147,147,147]},{"a":31167,"t":"byte","b":[147,147,147,147,147,147,147,147]},{"a":31175,"t":"byte","b":[153,170,187,202,239,165,8,182]},{"a":31183,"t":"byte","b":[33,197,56,212,217,238,15,29]},{"a":31191,"t":"byte","b":[203,225,33,244,251,18,64,39]},{"a":31199,"t":"byte","b":[58,118,142,195,211,227,16,247]},{"a":31207,"t":"byte","b":[81,101,121,167,144,190,213,249]},{"a":31215,"t":"byte","b":[231,11,29,43,57,72,147,118]},{"a":31223,"t":"byte","b":[91,100,111,216,237,146,44,54]},{"a":31231,"t":"byte","b":[66,74,36,51,66,229,61,76]},{"a":31239,"t":"byte","b":[147,147,147,147,147,147,147,147]},{"a":31247,"t":"byte","b":[147,147,147,147,147,147,147,147]},{"a":31255,"t":"byte","b":[147,147,147,147,147,147,147,147]},{"a":31263,"t":"byte","b":[147,147,147,147,147,147,147,148]},{"a":31271,"l":"vm_opcode_handler_high_bytes","c":"256 high bytes of the VM dispatch directory, paired with lows at $7927-$7A26. Index is the fetched opcode; interpreter writes the reconstructed address to $02/$03 and jumps indirectly. Entries through $7B26 belong to this table, including the range omitted from the old ledger; duplicate handlers implement aliases. Structural decoding checks all 7071 current operations, while full opcode semantics remain a separate verification task.","t":"byte","b":[113,113,113,113,113,113,113,113],"x":[29004]},{"a":31279,"t":"byte","b":[113,113,113,113,113,113,113,113]},{"a":31287,"t":"byte","b":[113,113,113,113,113,113,113,113]},{"a":31295,"t":"byte","b":[113,113,113,113,114,114,113,113]},{"a":31303,"t":"byte","b":[114,114,114,114,114,114,114,114]},{"a":31311,"t":"byte","b":[114,114,114,114,114,114,114,114]},{"a":31319,"t":"byte","b":[114,114,114,114,114,114,114,114]},{"a":31327,"t":"byte","b":[114,114,114,114,114,114,114,114]},{"a":31335,"t":"byte","b":[115,115,114,114,114,114,114,114]},{"a":31343,"t":"byte","b":[114,114,114,114,114,114,114,114]},{"a":31351,"t":"byte","b":[115,115,115,115,115,115,115,115]},{"a":31359,"t":"byte","b":[115,115,115,115,115,115,115,115]},{"a":31367,"t":"byte","b":[115,115,115,115,115,115,115,115]},{"a":31375,"t":"byte","b":[115,115,115,115,115,115,115,115]},{"a":31383,"t":"byte","b":[115,115,115,115,115,115,115,115]},{"a":31391,"t":"byte","b":[115,115,115,115,115,115,115,115]},{"a":31399,"t":"byte","b":[120,115,115,115,116,116,116,116]},{"a":31407,"t":"byte","b":[116,116,116,116,116,116,116,116]},{"a":31415,"t":"byte","b":[116,120,120,120,120,120,120,120]},{"a":31423,"t":"byte","b":[120,120,120,120,120,120,120,120]},{"a":31431,"t":"byte","b":[116,116,116,116,115,116,116,116]},{"a":31439,"t":"byte","b":[116,116,116,116,116,116,117,117]},{"a":31447,"t":"byte","b":[117,117,121,117,117,118,118,123]},{"a":31455,"t":"byte","b":[118,118,118,118,118,118,119,118]},{"a":31463,"t":"byte","b":[119,119,119,119,119,119,119,119]},{"a":31471,"t":"byte","b":[119,120,120,120,120,120,120,120]},{"a":31479,"t":"byte","b":[120,120,120,117,117,117,117,117]},{"a":31487,"t":"byte","b":[117,117,119,119,119,116,116,116]},{"a":31495,"t":"byte","b":[120,120,120,120,120,120,120,120]},{"a":31503,"t":"byte","b":[120,120,120,120,120,120,120,120]},{"a":31511,"t":"byte","b":[120,120,120,120,120,120,120,120]},{"a":31519,"t":"byte","b":[120,120,120,120,120,120,120,120]},{"a":31527,"l":"AlterEgo_VM_vm_opcode_handler_7b27","c":"VM opcode $B7 native-primitive dispatcher. It consumes one byte from script IP, doubles it, loads a little-endian target from the interleaved table beginning at $7B42, pushes synthetic return $713B, and JMPs to the primitive. Inputs: primitive index byte and VM 32-bit registers $0A-$11. Outputs: primitive-defined, then RTS resumes VM dispatch. Entry 0 deliberately reads the overlapping JMP operand as target $0002; indices 1-$27 are typed table words. Assumptions: entered only through vm_fetch_decode_dispatch at $713C, which loads the opcode with LDY #0 / LDA ($08),Y, advances the script IP past it, indexes the two 256-entry handler tables at $7927 (low) and $7A27 (high) by the opcode in X and jumps through $02/$03. On entry, therefore, Y is 0, X holds the opcode byte, $02/$03 alias this handler's own address, and $08/$09 point at the operand bytes that follow the opcode. It runs to completion and resumes the interpreter through ($02), so the VM register block must be live throughout. The locations it reads before writing ($08,Y, vm_instruction_ptr_lo, vm_instruction_ptr_hi, $7B42,X, $7B43,X) must already be valid. Clobbers: A, X and the processor flags; writes vm_instruction_ptr_lo, vm_instruction_ptr_hi, shared_scratch_02_lo, shared_scratch_02_hi; uses the 6502 stack (2 push, 0 pull in this body). Hardware: none. Every operand in this body is RAM or zero page; no VIC-II, SID, CIA, colour-RAM or 6510-port register is read or written and no KERNAL entry is called.","t":"code","b":[177,8],"m":"lda","oa":8,"o":"(vm_instruction_ptr_lo),y"},{"a":31529,"t":"code","b":[230,8],"m":"inc","oa":8,"o":"vm_instruction_ptr_lo"},{"a":31531,"t":"code","b":[208,2],"m":"bne","oa":31535,"o":"LAB_7b2f"},{"a":31533,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":31535,"l":"LAB_7b2f","t":"code","b":[10],"m":"asl","x":[31531],"o":"a"},{"a":31536,"t":"code","b":[170],"m":"tax"},{"a":31537,"t":"code","b":[189,66,123],"m":"lda","oa":31554,"o":"primitive_zero_and_indirect_jump_operand,x"},{"a":31540,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":31542,"t":"code","b":[189,67,123],"m":"lda","oa":31555,"o":"primitive_zero_target_high_operand_alias,x"},{"a":31545,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":31547,"t":"code","b":[169,113],"m":"lda","o":"#$71"},{"a":31549,"t":"code","b":[72],"m":"pha"},{"a":31550,"t":"code","b":[169,59],"m":"lda","o":"#$3B"},{"a":31552,"t":"code","b":[72],"m":"pha"},{"a":31553,"t":"code","b":[108,2,0],"m":"jmp","oa":2,"o":"(shared_scratch_02_lo)"},{"a":31554,"t":"note","l":"primitive_zero_and_indirect_jump_operand","c":"Two-byte $0002 operand of JMP ($0002) at $7B41, also read as primitive-selector zero's target word by $7B27. Controlled selectors 0 and 1 stop at $0002 and $7B92 respectively. Selector zero overwrites $02/$03 with $0002 and targets byte $02 (JAM) at $0002; it does not preserve or invoke the previous pointer. No $B7 operation occurs among the 7071 structurally decoded current VM operations; that bounded observation does not rule out computed or later code.","note":"inside the item at $7B41","x":[31537]},{"a":31555,"t":"note","l":"primitive_zero_target_high_operand_alias","c":"High byte $00 of the overlapping primitive-zero word $0002 and JMP-indirect operand. The low byte at $7B42 remains part of the native instruction starting $7B41; do not turn these bytes into a separate executable routine.","note":"inside the item at $7B41","x":[31542]},{"a":31556,"l":"native_primitive_targets_1_to_39","c":"39 little-endian routine-address words $7B44-$7B91, used by VM primitive dispatch $7B27 for selectors 1..39. Selector zero instead aliases the operand word $0002 at $7B42; a native control confirms target $7B92 for selector 1 and $0002 for zero. No index bounds check precedes the indexed loads, so selectors outside this directory need separate analysis. Whole native-primitive semantics are not inferred from their pointer names.","t":"word","b":[146,123,193,123,66,124,79,124],"d":[31634,31681,31810,31823]},{"a":31564,"t":"word","b":[206,124,229,124,246,124,6,125],"d":[31950,31973,31990,32006]},{"a":31572,"t":"word","b":[36,125,22,125,50,125,199,125],"d":[32036,32022,32050,32199]},{"a":31580,"t":"word","b":[213,125,227,125,241,125,246,125],"d":[32213,32227,32241,32246]},{"a":31588,"t":"word","b":[251,125,0,126,5,126,29,126],"d":[32251,32256,32261,32285]},{"a":31596,"t":"word","b":[38,126,60,126,174,125,113,125],"d":[32294,32316,32174,32113]},{"a":31604,"t":"word","b":[125,125,185,125,151,125,146,125],"d":[32125,32185,32151,32146]},{"a":31612,"t":"word","b":[218,124,46,124,92,124,120,124],"d":[31962,31790,31836,31864]},{"a":31620,"t":"word","b":[158,124,170,124,182,124,194,124],"d":[31902,31914,31926,31938]},{"a":31628,"t":"word","b":[102,125,108,125,112,125],"d":[32102,32108,32112]},{"a":31634,"l":"AlterEgo_VM_native_primitive_7b92","c":"Unsigned 32-bit shift/add multiply core. Inputs: primary operand $0A-$0D and secondary/addend workspace $0E-$11. Outputs: 32-bit accumulated product in $12-$15 after 32 iterations; operand bits are shifted destructively. Assumptions: Y must be 0 on entry, because the four accumulator bytes $12-$15 are cleared with STY and a non-zero Y would seed the product. Primary $0A-$0D is consumed destructively as the shift register, secondary $0E-$11 must hold the multiplicand, and the caller must accept a truncated low-32-bit product with no overflow indication. Clobbers: A,X,Y, flags and $12-$15. Called through VM primitive table index 1. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register.","t":"code","b":[132,18],"m":"sty","oa":18,"o":"native_math_scratch_b0"},{"a":31636,"t":"code","b":[132,19],"m":"sty","oa":19,"o":"native_math_scratch_b1"},{"a":31638,"t":"code","b":[132,20],"m":"sty","oa":20,"o":"native_math_scratch_b2"},{"a":31640,"t":"code","b":[132,21],"m":"sty","oa":21,"o":"native_math_scratch_b3"},{"a":31642,"t":"code","b":[160,32],"m":"ldy","o":"#$20"},{"a":31644,"l":"LAB_7b9c","t":"code","b":[165,10],"m":"lda","oa":10,"x":[31678],"o":"vm_primary_value_b0"},{"a":31646,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":31647,"t":"code","b":[144,12],"m":"bcc","oa":31661,"o":"LAB_7bad"},{"a":31649,"t":"code","b":[24],"m":"clc"},{"a":31650,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31652,"l":"LAB_7ba4","t":"code","b":[181,22],"m":"lda","oa":22,"x":[31659],"o":"transition_source_ptr_lo,x"},{"a":31654,"t":"code","b":[117,18],"m":"adc","oa":18,"o":"native_math_scratch_b0,x"},{"a":31656,"t":"code","b":[149,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo,x"},{"a":31658,"t":"code","b":[232],"m":"inx"},{"a":31659,"t":"code","b":[208,247],"m":"bne","oa":31652,"o":"LAB_7ba4"},{"a":31661,"l":"LAB_7bad","t":"code","b":[70,21],"m":"lsr","oa":21,"x":[31647],"o":"native_math_scratch_b3"},{"a":31663,"t":"code","b":[102,20],"m":"ror","oa":20,"o":"native_math_scratch_b2"},{"a":31665,"t":"code","b":[102,19],"m":"ror","oa":19,"o":"native_math_scratch_b1"},{"a":31667,"t":"code","b":[102,18],"m":"ror","oa":18,"o":"native_math_scratch_b0"},{"a":31669,"t":"code","b":[102,13],"m":"ror","oa":13,"o":"vm_primary_value_b3"},{"a":31671,"t":"code","b":[102,12],"m":"ror","oa":12,"o":"vm_primary_value_b2"},{"a":31673,"t":"code","b":[102,11],"m":"ror","oa":11,"o":"vm_primary_value_b1"},{"a":31675,"t":"code","b":[102,10],"m":"ror","oa":10,"o":"vm_primary_value_b0"},{"a":31677,"t":"code","b":[136],"m":"dey"},{"a":31678,"t":"code","b":[208,220],"m":"bne","oa":31644,"o":"LAB_7b9c"},{"a":31680,"t":"code","b":[96],"m":"rts"},{"a":31681,"l":"AlterEgo_VM_native_primitive_7bc1","c":"Signed 32-bit division wrapper. Inputs: dividend/divisor in VM 32-bit primary/secondary registers. It calls unsigned/sign-normalizing core $7BCC and negates the result when required. Outputs: signed quotient in the runtime result registers used by the VM. Assumptions: The dividend must be in primary $0A-$0D and the divisor in secondary $0E-$11, and the divisor must be non-zero because the core contains no zero check. Y must be 0 on entry since the core clears $12-$15 with STY, and $24/$25 must be free for the sign metadata the core leaves behind. Clobbers: A,X,Y, $12-$15 and sign scratch $24/$25. Primitive index 2. Hardware: Touches no hardware: zero-page arithmetic only; the sole callee is the negation primitive at $7CCE.","t":"code","b":[32,204,123],"m":"jsr","oa":31692,"o":"divide_32bit_core"},{"a":31684,"t":"code","b":[165,36],"m":"lda","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":31686,"t":"code","b":[16,3],"m":"bpl","oa":31691,"o":"LAB_7bcb"},{"a":31688,"t":"code","b":[76,206,124],"m":"jmp","oa":31950,"o":"AlterEgo_VM_native_primitive_7cce"},{"a":31691,"l":"LAB_7bcb","t":"code","b":[96],"m":"rts","x":[31686]},{"a":31692,"l":"divide_32bit_core","c":"32-round division core. It records operand signs, converts negative operands to magnitudes, performs restoring long division across $0A-$15, and leaves sign metadata in $24/$25 for quotient/remainder wrappers. Inputs: $0A-$11. Outputs: quotient/remainder work in $0A-$15. Assumptions: Y must be 0 on entry -- it clears the $12-$15 remainder with STY and is then reused as the 32-round counter -- the divisor in $0E-$11 must be non-zero, and $02/$03 plus $24/$25 must be free, since $24 receives the quotient sign and $25 the dividend sign for the wrappers to reapply. An operand of $80000000 negates to itself and is outside the contract. Clobbers: A,X,Y, flags and scratch $02/$03/$24/$25. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register.","t":"code","b":[132,18],"m":"sty","oa":18,"x":[31681,31790],"o":"native_math_scratch_b0"},{"a":31694,"t":"code","b":[132,19],"m":"sty","oa":19,"o":"native_math_scratch_b1"},{"a":31696,"t":"code","b":[132,20],"m":"sty","oa":20,"o":"native_math_scratch_b2"},{"a":31698,"t":"code","b":[132,21],"m":"sty","oa":21,"o":"native_math_scratch_b3"},{"a":31700,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"vm_primary_value_b3"},{"a":31702,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":31704,"t":"code","b":[69,17],"m":"eor","oa":17,"o":"vm_secondary_value_b3"},{"a":31706,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":31708,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"vm_primary_value_b3"},{"a":31710,"t":"code","b":[16,3],"m":"bpl","oa":31715,"o":"LAB_7be3"},{"a":31712,"t":"code","b":[32,206,124],"m":"jsr","oa":31950,"o":"AlterEgo_VM_native_primitive_7cce"},{"a":31715,"l":"LAB_7be3","t":"code","b":[165,17],"m":"lda","oa":17,"x":[31710],"o":"vm_secondary_value_b3"},{"a":31717,"t":"code","b":[16,11],"m":"bpl","oa":31730,"o":"LAB_7bf2"},{"a":31719,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31721,"l":"LAB_7be9","t":"code","b":[169,0],"m":"lda","x":[31728],"o":"#$00"},{"a":31723,"t":"code","b":[245,18],"m":"sbc","oa":18,"o":"native_math_scratch_b0,x"},{"a":31725,"t":"code","b":[149,18],"m":"sta","oa":18,"o":"native_math_scratch_b0,x"},{"a":31727,"t":"code","b":[232],"m":"inx"},{"a":31728,"t":"code","b":[208,247],"m":"bne","oa":31721,"o":"LAB_7be9"},{"a":31730,"l":"LAB_7bf2","t":"code","b":[160,32],"m":"ldy","x":[31717],"o":"#$20"},{"a":31732,"l":"LAB_7bf4","t":"code","b":[6,10],"m":"asl","oa":10,"x":[31787],"o":"vm_primary_value_b0"},{"a":31734,"t":"code","b":[38,11],"m":"rol","oa":11,"o":"vm_primary_value_b1"},{"a":31736,"t":"code","b":[38,12],"m":"rol","oa":12,"o":"vm_primary_value_b2"},{"a":31738,"t":"code","b":[38,13],"m":"rol","oa":13,"o":"vm_primary_value_b3"},{"a":31740,"t":"code","b":[38,18],"m":"rol","oa":18,"o":"native_math_scratch_b0"},{"a":31742,"t":"code","b":[38,19],"m":"rol","oa":19,"o":"native_math_scratch_b1"},{"a":31744,"t":"code","b":[38,20],"m":"rol","oa":20,"o":"native_math_scratch_b2"},{"a":31746,"t":"code","b":[38,21],"m":"rol","oa":21,"o":"native_math_scratch_b3"},{"a":31748,"t":"code","b":[56],"m":"sec"},{"a":31749,"t":"code","b":[165,18],"m":"lda","oa":18,"o":"native_math_scratch_b0"},{"a":31751,"t":"code","b":[229,14],"m":"sbc","oa":14,"o":"vm_secondary_value_b0"},{"a":31753,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":31755,"t":"code","b":[165,19],"m":"lda","oa":19,"o":"native_math_scratch_b1"},{"a":31757,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":31759,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":31761,"t":"code","b":[165,20],"m":"lda","oa":20,"o":"native_math_scratch_b2"},{"a":31763,"t":"code","b":[229,16],"m":"sbc","oa":16,"o":"vm_secondary_value_b2"},{"a":31765,"t":"code","b":[170],"m":"tax"},{"a":31766,"t":"code","b":[165,21],"m":"lda","oa":21,"o":"native_math_scratch_b3"},{"a":31768,"t":"code","b":[229,17],"m":"sbc","oa":17,"o":"vm_secondary_value_b3"},{"a":31770,"t":"code","b":[144,14],"m":"bcc","oa":31786,"o":"LAB_7c2a"},{"a":31772,"t":"code","b":[134,20],"m":"stx","oa":20,"o":"native_math_scratch_b2"},{"a":31774,"t":"code","b":[133,21],"m":"sta","oa":21,"o":"native_math_scratch_b3"},{"a":31776,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":31778,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":31780,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":31782,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":31784,"t":"code","b":[230,10],"m":"inc","oa":10,"o":"vm_primary_value_b0"},{"a":31786,"l":"LAB_7c2a","t":"code","b":[136],"m":"dey","x":[31770]},{"a":31787,"t":"code","b":[208,199],"m":"bne","oa":31732,"o":"LAB_7bf4"},{"a":31789,"t":"code","b":[96],"m":"rts"},{"a":31790,"l":"AlterEgo_VM_native_primitive_7c2e","c":"Signed 32-bit remainder wrapper. Inputs: dividend/divisor in $0A-$11. It runs division core $7BCC, copies remainder workspace $12-$15 to primary $0A-$0D, and reapplies dividend sign. Outputs: signed remainder in primary. Assumptions: Same contract as the quotient wrapper: dividend in $0A-$0D, non-zero divisor in $0E-$11 and Y=0 on entry. It copies $12-$15 over primary after the core runs, so anything still needed in $0A-$0D must be saved first, and it reapplies the dividend sign from $25 so the remainder takes the dividend's sign. Clobbers: A,X,Y and division workspace. Primitive index $1E. Hardware: Touches no hardware: zero-page arithmetic plus a call to the negation primitive at $7CCE.","t":"code","b":[32,204,123],"m":"jsr","oa":31692,"o":"divide_32bit_core"},{"a":31793,"t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31795,"l":"LAB_7c33","t":"code","b":[181,18],"m":"lda","oa":18,"x":[31800],"o":"native_math_scratch_b0,x"},{"a":31797,"t":"code","b":[149,10],"m":"sta","oa":10,"o":"vm_primary_value_b0,x"},{"a":31799,"t":"code","b":[202],"m":"dex"},{"a":31800,"t":"code","b":[16,249],"m":"bpl","oa":31795,"o":"LAB_7c33"},{"a":31802,"t":"code","b":[165,37],"m":"lda","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":31804,"t":"code","b":[48,1],"m":"bmi","oa":31807,"o":"LAB_7c3f"},{"a":31806,"t":"code","b":[96],"m":"rts"},{"a":31807,"l":"LAB_7c3f","t":"code","b":[76,206,124],"m":"jmp","oa":31950,"x":[31804],"o":"AlterEgo_VM_native_primitive_7cce"},{"a":31810,"l":"AlterEgo_VM_native_primitive_7c42","c":"Add the 32-bit secondary register $0E-$11 into the 32-bit primary register $0A-$0D with carry propagation. The literal operands are `$0E,X` and `$12,X` with X running $FC..$FF, so zero-page,X wrap makes them address primary $0A-$0D and secondary $0E-$11 respectively; $12-$15 is not touched. Outputs: sum in primary $0A-$0D. Assumptions: Relies on zero-page,X wrap-around: with X running $FC..$FF, `$0E,X` actually addresses primary $0A-$0D and `$12,X` addresses secondary $0E-$11, so both VM 32-bit registers must be live and nothing else may occupy $0A-$11. No entry flag state is required because CLC is issued first. Clobbers: A,X and flags. Primitive table index 3 enters here. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: the two 32-bit VM registers -- primary $0A-$0D and secondary $0E-$11. No entry register is required: X is loaded with #$FC inside the routine, so the literal `$0E,X` and `$12,X` operands wrap to primary and secondary respectively, and carry is cleared by the CLC that precedes the loop.","t":"code","b":[24],"m":"clc"},{"a":31811,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31813,"l":"LAB_7c45","t":"code","b":[181,14],"m":"lda","oa":14,"x":[31820],"o":"vm_secondary_value_b0,x"},{"a":31815,"t":"code","b":[117,18],"m":"adc","oa":18,"o":"native_math_scratch_b0,x"},{"a":31817,"t":"code","b":[149,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31819,"t":"code","b":[232],"m":"inx"},{"a":31820,"t":"code","b":[208,247],"m":"bne","oa":31813,"o":"LAB_7c45"},{"a":31822,"t":"code","b":[96],"m":"rts"},{"a":31823,"l":"AlterEgo_VM_native_primitive_7c4f","c":"Subtract the 32-bit secondary register $0E-$11 from the 32-bit primary register $0A-$0D with borrow propagation. The literal operands `$0E,X` and `$12,X` with X running $FC..$FF wrap to primary $0A-$0D and secondary $0E-$11; $12-$15 is not touched. Outputs: difference in primary $0A-$0D. Assumptions: Relies on the same zero-page,X wrap-around as the adder: with X running $FC..$FF, `$0E,X` addresses primary $0A-$0D and `$12,X` addresses secondary $0E-$11, so both registers must be live. SEC is issued internally, so no entry flag state is required. Clobbers: A,X and flags. Primitive table index 4 enters here. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: the two 32-bit VM registers -- the minuend in primary $0A-$0D and the subtrahend in secondary $0E-$11. No entry register is required: X is loaded with #$FC inside the routine, so `$0E,X` and `$12,X` wrap to primary and secondary, and SEC sets the borrow before the loop.","t":"code","b":[56],"m":"sec"},{"a":31824,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31826,"l":"LAB_7c52","t":"code","b":[181,14],"m":"lda","oa":14,"x":[31833],"o":"vm_secondary_value_b0,x"},{"a":31828,"t":"code","b":[245,18],"m":"sbc","oa":18,"o":"native_math_scratch_b0,x"},{"a":31830,"t":"code","b":[149,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31832,"t":"code","b":[232],"m":"inx"},{"a":31833,"t":"code","b":[208,247],"m":"bne","oa":31826,"o":"LAB_7c52"},{"a":31835,"t":"code","b":[96],"m":"rts"},{"a":31836,"l":"AlterEgo_VM_native_primitive_7c5c","c":"Shift the 32-bit primary value $0A-$0D left by the count held in the 32-bit secondary register $0E-$11. The literal `$12,X` with X running $FC..$FF wraps to $0E-$11, so each round decrements secondary by one and shifts primary once, until the count's high byte goes negative. Outputs: shifted primary $0A-$0D; the count in secondary is consumed. Assumptions: Zero-page,X wrap means `$12,X` with X=$FC..$FF actually addresses secondary $0E-$11, so the shift count must be the 32-bit secondary register and the value the primary $0A-$0D; both must be live. The count is decremented in place until it goes negative, so the caller must not need it afterwards, and an already-negative count leaves the value unchanged. Clobbers: A,X,Y, flags and count workspace. Primitive index $1F. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: the 32-bit value in primary $0A-$0D and the 32-bit shift count in secondary $0E-$11, the latter reached through the wrapped `$12,X` operand. X (#$FC) and Y (#$FF) are both initialised inside the routine, so no entry register need be set up.","t":"code","b":[24],"m":"clc","x":[31861]},{"a":31837,"t":"code","b":[160,255],"m":"ldy","o":"#$FF"},{"a":31839,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31841,"l":"LAB_7c61","t":"code","b":[152],"m":"tya","x":[31847]},{"a":31842,"t":"code","b":[117,18],"m":"adc","oa":18,"o":"native_math_scratch_b0,x"},{"a":31844,"t":"code","b":[149,18],"m":"sta","oa":18,"o":"native_math_scratch_b0,x"},{"a":31846,"t":"code","b":[232],"m":"inx"},{"a":31847,"t":"code","b":[208,248],"m":"bne","oa":31841,"o":"LAB_7c61"},{"a":31849,"t":"code","b":[170],"m":"tax"},{"a":31850,"t":"code","b":[16,1],"m":"bpl","oa":31853,"o":"LAB_7c6d"},{"a":31852,"t":"code","b":[96],"m":"rts"},{"a":31853,"l":"LAB_7c6d","t":"code","b":[6,10],"m":"asl","oa":10,"x":[31850],"o":"vm_primary_value_b0"},{"a":31855,"t":"code","b":[38,11],"m":"rol","oa":11,"o":"vm_primary_value_b1"},{"a":31857,"t":"code","b":[38,12],"m":"rol","oa":12,"o":"vm_primary_value_b2"},{"a":31859,"t":"code","b":[38,13],"m":"rol","oa":13,"o":"vm_primary_value_b3"},{"a":31861,"t":"code","b":[76,92,124],"m":"jmp","oa":31836,"o":"AlterEgo_VM_native_primitive_7c5c"},{"a":31864,"l":"AlterEgo_VM_native_primitive_7c78","c":"Shift the 32-bit primary value $0A-$0D right by the count held in the 32-bit secondary register $0E-$11, preserving the original sign bit of $0D so the shift is arithmetic. The literal `$12,X` with X running $FC..$FF wraps to secondary $0E-$11. Outputs: shifted primary $0A-$0D; the count in secondary is consumed. Assumptions: Uses the same wrapped addressing, so the count is really secondary $0E-$11 and is consumed destructively. It pushes the sign of $0D with PHP and re-pulls it each round, so at least one stack byte must be free and nothing may unbalance the stack mid-loop; an already-negative count returns after restoring the flags. Clobbers: A,X,Y, flags and count workspace. Primitive index $20. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: the 32-bit value in primary $0A-$0D, whose byte $0D supplies the sign bit that makes the shift arithmetic, and the 32-bit count in secondary $0E-$11 reached through the wrapped `$12,X` operand. X and Y are initialised internally; one byte of 6502 stack must be free for the PHP that carries the sign across each round.","t":"code","b":[24],"m":"clc"},{"a":31865,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"vm_primary_value_b3"},{"a":31867,"t":"code","b":[16,1],"m":"bpl","oa":31870,"o":"LAB_7c7e"},{"a":31869,"t":"code","b":[56],"m":"sec"},{"a":31870,"l":"LAB_7c7e","t":"code","b":[8],"m":"php","x":[31867]},{"a":31871,"l":"LAB_7c7f","t":"code","b":[24],"m":"clc","x":[31899]},{"a":31872,"t":"code","b":[160,255],"m":"ldy","o":"#$FF"},{"a":31874,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31876,"l":"LAB_7c84","t":"code","b":[152],"m":"tya","x":[31882]},{"a":31877,"t":"code","b":[117,18],"m":"adc","oa":18,"o":"native_math_scratch_b0,x"},{"a":31879,"t":"code","b":[149,18],"m":"sta","oa":18,"o":"native_math_scratch_b0,x"},{"a":31881,"t":"code","b":[232],"m":"inx"},{"a":31882,"t":"code","b":[208,248],"m":"bne","oa":31876,"o":"LAB_7c84"},{"a":31884,"t":"code","b":[170],"m":"tax"},{"a":31885,"t":"code","b":[16,2],"m":"bpl","oa":31889,"o":"LAB_7c91"},{"a":31887,"t":"code","b":[40],"m":"plp"},{"a":31888,"t":"code","b":[96],"m":"rts"},{"a":31889,"l":"LAB_7c91","t":"code","b":[40],"m":"plp","x":[31885]},{"a":31890,"t":"code","b":[8],"m":"php"},{"a":31891,"t":"code","b":[102,13],"m":"ror","oa":13,"o":"vm_primary_value_b3"},{"a":31893,"t":"code","b":[102,12],"m":"ror","oa":12,"o":"vm_primary_value_b2"},{"a":31895,"t":"code","b":[102,11],"m":"ror","oa":11,"o":"vm_primary_value_b1"},{"a":31897,"t":"code","b":[102,10],"m":"ror","oa":10,"o":"vm_primary_value_b0"},{"a":31899,"t":"code","b":[76,127,124],"m":"jmp","oa":31871,"o":"LAB_7c7f"},{"a":31902,"l":"AlterEgo_VM_native_primitive_7c9e","c":"Bitwise complement primary 32-bit value $0A-$0D in place. Inputs/outputs: primary. Assumptions: Primary $0A-$0D must hold the operand: the loop indexes $0A,X with X=3..0, so exactly those four bytes are inverted and nothing else may alias them. No entry register or flag state is required. Clobbers: A,X and flags. Primitive index $21. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31904,"l":"LAB_7ca0","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31911],"o":"vm_primary_value_b0,x"},{"a":31906,"t":"code","b":[73,255],"m":"eor","o":"#$FF"},{"a":31908,"t":"code","b":[149,10],"m":"sta","oa":10,"o":"vm_primary_value_b0,x"},{"a":31910,"t":"code","b":[202],"m":"dex"},{"a":31911,"t":"code","b":[16,247],"m":"bpl","oa":31904,"o":"LAB_7ca0"},{"a":31913,"t":"code","b":[96],"m":"rts"},{"a":31914,"l":"AlterEgo_VM_native_primitive_7caa","c":"Bitwise AND primary $0A-$0D with secondary $0E-$11, storing the result in primary. Assumptions: Primary $0A-$0D and secondary $0E-$11 must both be live VM 32-bit registers, since the loop indexes both with X=3..0 and no other use of $0A-$11 may be pending. No entry register or flag state is required. Clobbers: A,X and flags. Primitive index $22. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X, $0E,X. Outputs: writes $0A,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31916,"l":"LAB_7cac","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31923],"o":"vm_primary_value_b0,x"},{"a":31918,"t":"code","b":[53,14],"m":"and","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31920,"t":"code","b":[149,10],"m":"sta","oa":10,"o":"vm_primary_value_b0,x"},{"a":31922,"t":"code","b":[202],"m":"dex"},{"a":31923,"t":"code","b":[16,247],"m":"bpl","oa":31916,"o":"LAB_7cac"},{"a":31925,"t":"code","b":[96],"m":"rts"},{"a":31926,"l":"AlterEgo_VM_native_primitive_7cb6","c":"Bitwise OR primary $0A-$0D with secondary $0E-$11, storing the result in primary. Assumptions: Primary $0A-$0D and secondary $0E-$11 must both be live VM registers; the loop indexes both with X=3..0, so nothing else may occupy $0A-$11. No entry register or flag state is required. Clobbers: A,X and flags. Primitive index $23. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X, $0E,X. Outputs: writes $0A,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31928,"l":"LAB_7cb8","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31935],"o":"vm_primary_value_b0,x"},{"a":31930,"t":"code","b":[21,14],"m":"ora","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31932,"t":"code","b":[149,10],"m":"sta","oa":10,"o":"vm_primary_value_b0,x"},{"a":31934,"t":"code","b":[202],"m":"dex"},{"a":31935,"t":"code","b":[16,247],"m":"bpl","oa":31928,"o":"LAB_7cb8"},{"a":31937,"t":"code","b":[96],"m":"rts"},{"a":31938,"l":"AlterEgo_VM_native_primitive_7cc2","c":"Bitwise XOR primary $0A-$0D with secondary $0E-$11, storing the result in primary. Assumptions: Primary $0A-$0D and secondary $0E-$11 must both be live VM registers; the loop indexes both with X=3..0. No entry register or flag state is required. Clobbers: A,X and flags. Primitive index $24. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X, $0E,X. Outputs: writes $0A,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31940,"l":"LAB_7cc4","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31947],"o":"vm_primary_value_b0,x"},{"a":31942,"t":"code","b":[85,14],"m":"eor","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31944,"t":"code","b":[149,10],"m":"sta","oa":10,"o":"vm_primary_value_b0,x"},{"a":31946,"t":"code","b":[202],"m":"dex"},{"a":31947,"t":"code","b":[16,247],"m":"bpl","oa":31940,"o":"LAB_7cc4"},{"a":31949,"t":"code","b":[96],"m":"rts"},{"a":31950,"l":"AlterEgo_VM_native_primitive_7cce","c":"Two's-complement negate the 32-bit primary register $0A-$0D by zero-minus-value with borrow propagation. The literal operand `$0E,X` with X running $FC..$FF wraps to $0A-$0D, so this negates primary and not secondary, which is how $7BCC normalizes a negative dividend. Outputs: negated primary $0A-$0D. Assumptions: Y must be zero on entry, because each round computes Y minus the operand byte with TYA/SBC and a non-zero Y biases the result. Zero-page,X wrap means `$0E,X` with X=$FC..$FF addresses primary $0A-$0D, so it is the primary register that is negated -- this is how $7BCC negates its dividend -- and $80000000 negates to itself. Clobbers: A,X and flags. Shared by signed arithmetic and primitive index 5. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: the 32-bit primary register $0A-$0D, addressed through the wrapped `$0E,X` operand after X is loaded with #$FC internally, and Y, which must be zero on entry because every round computes Y minus the operand byte with TYA/SBC; a non-zero Y biases the result.","t":"code","b":[56],"m":"sec","x":[31688,31712,31807]},{"a":31951,"t":"code","b":[162,252],"m":"ldx","o":"#$FC"},{"a":31953,"l":"LAB_7cd1","t":"code","b":[152],"m":"tya","x":[31959]},{"a":31954,"t":"code","b":[245,14],"m":"sbc","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31956,"t":"code","b":[149,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31958,"t":"code","b":[232],"m":"inx"},{"a":31959,"t":"code","b":[208,248],"m":"bne","oa":31953,"o":"LAB_7cd1"},{"a":31961,"t":"code","b":[96],"m":"rts"},{"a":31962,"l":"AlterEgo_VM_native_primitive_7cda","c":"Convert primary 32-bit value $0A-$0D to VM Boolean word. Outputs: $0A/$0B=1 if any input byte was nonzero, otherwise 0. Assumptions: Primary $0A-$0D must be live and Y must be 0 on entry, because the shared result tails at $7CF0/$7D01 store Y (and INY-then-Y) as the Boolean word. The routine has no RTS of its own: it branches into that shared tail. Clobbers: A,X,Y and flags. Primitive index $1D. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31964,"l":"LAB_7cdc","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31969],"o":"vm_primary_value_b0,x"},{"a":31966,"t":"code","b":[208,16],"m":"bne","oa":31984,"o":"vm_primitive_set_primary_true_tail"},{"a":31968,"t":"code","b":[202],"m":"dex"},{"a":31969,"t":"code","b":[16,249],"m":"bpl","oa":31964,"o":"LAB_7cdc"},{"a":31971,"t":"code","b":[48,28],"m":"bmi","oa":32001,"o":"vm_primitive_set_primary_false_tail"},{"a":31973,"l":"AlterEgo_VM_native_primitive_7ce5","c":"Compare primary and secondary 32-bit values for equality. Outputs: VM Boolean word $0A/$0B=1 when all four bytes match, otherwise 0. Assumptions: Both 32-bit registers $0A-$0D and $0E-$11 must be live and Y must be 0 on entry, since the true/false tails build the Boolean word from Y and INY. The test is a plain byte-wise equality comparison and is therefore sign-agnostic. Clobbers: A,X,Y and flags. Primitive index 6. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X, $0E,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31975,"l":"LAB_7ce7","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31982],"o":"vm_primary_value_b0,x"},{"a":31977,"t":"code","b":[213,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31979,"t":"code","b":[208,20],"m":"bne","oa":32001,"o":"vm_primitive_set_primary_false_tail"},{"a":31981,"t":"code","b":[202],"m":"dex"},{"a":31982,"t":"code","b":[16,247],"m":"bpl","oa":31975,"o":"LAB_7ce7"},{"a":31984,"l":"vm_primitive_set_primary_true_tail","c":"Shared true-result tail of the 32-bit comparison primitives. Stores Y (zero) into the primary high byte, increments Y, and stores it into the low byte, producing the VM Boolean 1. Reached from booleanize_primary_32bit (primitive $1D) and compare_not_equal_32bit (primitive 7). Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B = 1; RTS to the $B7 dispatcher's synthetic return $713B. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[132,11],"m":"sty","oa":11,"x":[31966,31996],"o":"vm_primary_value_b1"},{"a":31986,"t":"code","b":[200],"m":"iny"},{"a":31987,"t":"code","b":[132,10],"m":"sty","oa":10,"o":"vm_primary_value_b0"},{"a":31989,"t":"code","b":[96],"m":"rts"},{"a":31990,"l":"AlterEgo_VM_native_primitive_7cf6","c":"Compare primary and secondary 32-bit values for inequality. Outputs: VM Boolean word $0A/$0B=1 on the first differing byte, otherwise 0. Assumptions: Both 32-bit registers must be live and Y must be 0 on entry, because the shared tails at $7CF0/$7D01 write Y and INY as the Boolean word. It shares those tails with the equality primitive, so nothing may relocate them independently. Clobbers: A,X,Y and flags. Primitive index 7. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X, $0E,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":31992,"l":"LAB_7cf8","t":"code","b":[181,10],"m":"lda","oa":10,"x":[31999],"o":"vm_primary_value_b0,x"},{"a":31994,"t":"code","b":[213,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0,x"},{"a":31996,"t":"code","b":[208,242],"m":"bne","oa":31984,"o":"vm_primitive_set_primary_true_tail"},{"a":31998,"t":"code","b":[202],"m":"dex"},{"a":31999,"t":"code","b":[16,247],"m":"bpl","oa":31992,"o":"LAB_7cf8"},{"a":32001,"l":"vm_primitive_set_primary_false_tail","c":"Shared false-result tail of the 32-bit comparison primitives. Stores Y (zero) into both primary bytes, producing the VM Boolean 0. Reached from booleanize_primary_32bit (primitive $1D) and compare_equal_32bit (primitive 6). Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A/$0B = 0; RTS to $713B. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: Y and flags. Hardware: None.","t":"code","b":[132,11],"m":"sty","oa":11,"x":[31971,31979],"o":"vm_primary_value_b1"},{"a":32003,"t":"code","b":[132,10],"m":"sty","oa":10,"o":"vm_primary_value_b0"},{"a":32005,"t":"code","b":[96],"m":"rts"},{"a":32006,"l":"AlterEgo_VM_native_primitive_7d06","c":"Signed 32-bit less-than comparison using primary-minus-secondary flag helper $7D40 and overflow correction. Outputs: VM Boolean low byte $0A, with $0B cleared by the helper. Assumptions: Y must be 0 on entry, because $7D40 stores Y into $0B and the INY/TYA sequence builds the Boolean from it. Both 32-bit registers must be live, and the extra `SBC $11` after the helper returns re-does the top-byte subtraction, so the V flag $7D40 left must still be intact. Clobbers: A,Y and flags. Primitive index 8. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: entry registers A, Y; memory it reads before writing: vm_secondary_value_b3.","t":"code","b":[32,64,125],"m":"jsr","oa":32064,"o":"compare_primary_minus_secondary_32bit"},{"a":32009,"t":"code","b":[229,17],"m":"sbc","oa":17,"o":"vm_secondary_value_b3"},{"a":32011,"t":"code","b":[16,1],"m":"bpl","oa":32014,"o":"LAB_7d0e"},{"a":32013,"t":"code","b":[200],"m":"iny"},{"a":32014,"l":"LAB_7d0e","t":"code","b":[152],"m":"tya","x":[32011]},{"a":32015,"t":"code","b":[80,2],"m":"bvc","oa":32019,"o":"LAB_7d13"},{"a":32017,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":32019,"l":"LAB_7d13","t":"code","b":[133,10],"m":"sta","oa":10,"x":[32015],"o":"vm_primary_value_b0"},{"a":32021,"t":"code","b":[96],"m":"rts"},{"a":32022,"l":"AlterEgo_VM_native_primitive_7d16","c":"Signed 32-bit greater-than-or-equal comparison using secondary-minus-primary helper $7D53 and overflow correction. Outputs: VM Boolean in $0A/$0B. Assumptions: Y must be 0 on entry, since $7D53 stores it into $0B and the Boolean is built from Y with INY. Both 32-bit registers must be live and the N and V flags left by the helper must not be disturbed before they are tested. Clobbers: A,Y and flags. Primitive index $0A. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: entry register Y.","t":"code","b":[32,83,125],"m":"jsr","oa":32083,"o":"compare_secondary_minus_primary_32bit"},{"a":32025,"t":"code","b":[16,1],"m":"bpl","oa":32028,"o":"LAB_7d1c"},{"a":32027,"t":"code","b":[200],"m":"iny"},{"a":32028,"l":"LAB_7d1c","t":"code","b":[152],"m":"tya","x":[32025]},{"a":32029,"t":"code","b":[80,2],"m":"bvc","oa":32033,"o":"LAB_7d21"},{"a":32031,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":32033,"l":"LAB_7d21","t":"code","b":[133,10],"m":"sta","oa":10,"x":[32029],"o":"vm_primary_value_b0"},{"a":32035,"t":"code","b":[96],"m":"rts"},{"a":32036,"l":"AlterEgo_VM_native_primitive_7d24","c":"Signed 32-bit greater-than comparison using secondary-minus-primary helper $7D53 and overflow correction. Outputs: VM Boolean in $0A/$0B. Assumptions: Y must be 0 on entry, since $7D53 stores it into $0B and the Boolean is built from Y with INY. Both 32-bit registers must be live and the helper's N and V flags must reach the BMI/BVC untouched. Clobbers: A,Y and flags. Primitive index 9. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: entry register Y.","t":"code","b":[32,83,125],"m":"jsr","oa":32083,"o":"compare_secondary_minus_primary_32bit"},{"a":32039,"t":"code","b":[48,1],"m":"bmi","oa":32042,"o":"LAB_7d2a"},{"a":32041,"t":"code","b":[200],"m":"iny"},{"a":32042,"l":"LAB_7d2a","t":"code","b":[152],"m":"tya","x":[32039]},{"a":32043,"t":"code","b":[80,2],"m":"bvc","oa":32047,"o":"LAB_7d2f"},{"a":32045,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":32047,"l":"LAB_7d2f","t":"code","b":[133,10],"m":"sta","oa":10,"x":[32043],"o":"vm_primary_value_b0"},{"a":32049,"t":"code","b":[96],"m":"rts"},{"a":32050,"l":"AlterEgo_VM_native_primitive_7d32","c":"Signed 32-bit less-than-or-equal comparison using primary-minus-secondary helper $7D40 and overflow correction. Outputs: VM Boolean in $0A/$0B. Assumptions: Y must be 0 on entry, since $7D40 stores it into $0B and the Boolean is built from Y with INY. Both 32-bit registers must be live and the helper's N and V flags must reach the BMI/BVC untouched. Clobbers: A,Y and flags. Primitive index $0B. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: entry register Y.","t":"code","b":[32,64,125],"m":"jsr","oa":32064,"o":"compare_primary_minus_secondary_32bit"},{"a":32053,"t":"code","b":[48,1],"m":"bmi","oa":32056,"o":"LAB_7d38"},{"a":32055,"t":"code","b":[200],"m":"iny"},{"a":32056,"l":"LAB_7d38","t":"code","b":[152],"m":"tya","x":[32053]},{"a":32057,"t":"code","b":[80,2],"m":"bvc","oa":32061,"o":"LAB_7d3d"},{"a":32059,"t":"code","b":[73,1],"m":"eor","o":"#$01"},{"a":32061,"l":"LAB_7d3d","t":"code","b":[133,10],"m":"sta","oa":10,"x":[32057],"o":"vm_primary_value_b0"},{"a":32063,"t":"code","b":[96],"m":"rts"},{"a":32064,"l":"compare_primary_minus_secondary_32bit","c":"Compute flags for signed 32-bit primary-minus-secondary comparison, testing low word then high word while clearing $0B for Boolean construction. Inputs: $0A-$11, Y normally 0. Outputs: N,V,C,Z reflect the high-order subtraction; $0B=Y. Assumptions: Y must be 0 on entry, because it is stored into $0B mid-sequence to pre-clear the Boolean high byte, and both 32-bit registers must be live. Only the final SBC's N, V, C and Z are meaningful, so the caller must consume them immediately. Clobbers: A and flags. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register.","t":"code","b":[165,10],"m":"lda","oa":10,"x":[32006,32050],"o":"vm_primary_value_b0"},{"a":32066,"t":"code","b":[197,14],"m":"cmp","oa":14,"o":"vm_secondary_value_b0"},{"a":32068,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":32070,"t":"code","b":[229,15],"m":"sbc","oa":15,"o":"vm_secondary_value_b1"},{"a":32072,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":32074,"t":"code","b":[165,12],"m":"lda","oa":12,"o":"vm_primary_value_b2"},{"a":32076,"t":"code","b":[229,16],"m":"sbc","oa":16,"o":"vm_secondary_value_b2"},{"a":32078,"t":"code","b":[165,13],"m":"lda","oa":13,"o":"vm_primary_value_b3"},{"a":32080,"t":"code","b":[229,17],"m":"sbc","oa":17,"o":"vm_secondary_value_b3"},{"a":32082,"t":"code","b":[96],"m":"rts"},{"a":32083,"l":"compare_secondary_minus_primary_32bit","c":"Compute flags for signed 32-bit secondary-minus-primary comparison, testing low word then high word while clearing $0B for Boolean construction. Inputs: $0A-$11, Y normally 0. Outputs: comparison flags and $0B=Y. Assumptions: Y must be 0 on entry, since it is stored into $0B to pre-clear the Boolean high byte, and both 32-bit registers must be live. Only the flags from the final SBC are meaningful and must be consumed before any other instruction disturbs them. Clobbers: A and flags. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register.","t":"code","b":[165,14],"m":"lda","oa":14,"x":[32022,32036],"o":"vm_secondary_value_b0"},{"a":32085,"t":"code","b":[197,10],"m":"cmp","oa":10,"o":"vm_primary_value_b0"},{"a":32087,"t":"code","b":[165,15],"m":"lda","oa":15,"o":"vm_secondary_value_b1"},{"a":32089,"t":"code","b":[229,11],"m":"sbc","oa":11,"o":"vm_primary_value_b1"},{"a":32091,"t":"code","b":[132,11],"m":"sty","oa":11,"o":"vm_primary_value_b1"},{"a":32093,"t":"code","b":[165,16],"m":"lda","oa":16,"o":"vm_secondary_value_b2"},{"a":32095,"t":"code","b":[229,12],"m":"sbc","oa":12,"o":"vm_primary_value_b2"},{"a":32097,"t":"code","b":[165,17],"m":"lda","oa":17,"o":"vm_secondary_value_b3"},{"a":32099,"t":"code","b":[229,13],"m":"sbc","oa":13,"o":"vm_primary_value_b3"},{"a":32101,"t":"code","b":[96],"m":"rts"},{"a":32102,"l":"AlterEgo_VM_native_primitive_7d66","c":"Sign-extend primary 16-bit word $0A/$0B into 32-bit $0A-$0D. Outputs: $0C/$0D=$FF when bit 15 is set, otherwise zero. Assumptions: $0A/$0B must hold the 16-bit value and Y must be 0 on entry, because the fall-through at $7D6C stores Y into $0C and $0D; the routine only overrides Y with $FF when bit 15 is set. It has no RTS and depends on falling into $7D6C. Clobbers: A,Y and flags. Primitive index $25. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: vm_primary_value_b1.","t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":32104,"t":"code","b":[16,2],"m":"bpl","oa":32108,"o":"AlterEgo_VM_native_primitive_7d6c"},{"a":32106,"t":"code","b":[160,255],"m":"ldy","o":"#$FF"},{"a":32108,"l":"AlterEgo_VM_native_primitive_7d6c","c":"Zero-extend primary 16-bit word $0A/$0B into 32-bit $0A-$0D. Entry assumes dispatcher Y=0 and stores zero into $0C/$0D. Assumptions: Y must be 0 on entry -- that is the entire mechanism, since $0C and $0D are filled from Y -- and $0A/$0B must already hold the word. The routine has no RTS: it falls through to the following primitive, so it may only be entered as opcode $26 or from $7D66. Clobbers: Y only by convention. Primitive index $26. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: entry register Y. Outputs: writes vm_primary_value_b2, vm_primary_value_b3.","t":"code","b":[132,12],"m":"sty","oa":12,"x":[32104],"o":"vm_primary_value_b2"},{"a":32110,"t":"code","b":[132,13],"m":"sty","oa":13,"o":"vm_primary_value_b3"},{"a":32112,"l":"AlterEgo_VM_native_primitive_7d70","c":"Truncate primary 32-bit value to its low 16-bit word by returning without changing $0A/$0B; high bytes become irrelevant to the consuming VM operation. Inputs/outputs: low word preserved. Primitive index $27. Assumptions: Nothing is required beyond $0A/$0B already holding the low word. The high bytes $0C/$0D are deliberately left stale, so the consuming VM operation must be one that reads only 16 bits. Hardware: Touches no hardware: a single RTS. Clobbers: the processor flags only.","t":"code","b":[96],"m":"rts"},{"a":32113,"l":"AlterEgo_VM_native_primitive_7d71","c":"Fetch a four-byte immediate from script IP into primary $0A-$0D and advance IP by four. Inputs: $08/$09, Y=0. Outputs: primary 32-bit value. Assumptions: Y must be 0 on entry, because it indexes both the bytecode and the destination $0A,Y, so the four immediate bytes only land correctly when the loop starts at zero. Script IP $08/$09 must address the four-byte immediate, and the shared tail at $7D87 relies on the carry set by CPY #$04 so that ADC #$03 advances the IP by four. Clobbers: A,Y and flags. Primitive index $18. Hardware: Touches no hardware: bytecode read from RAM and a RAM script-IP update.","t":"code","b":[177,8],"m":"lda","oa":8,"x":[32121],"o":"(vm_instruction_ptr_lo),y"},{"a":32115,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":32118,"t":"code","b":[200],"m":"iny"},{"a":32119,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":32121,"t":"code","b":[208,246],"m":"bne","oa":32113,"o":"AlterEgo_VM_native_primitive_7d71"},{"a":32123,"t":"code","b":[240,10],"m":"beq","oa":32135,"o":"vm_advance_script_ip_past_32bit_immediate_tail"},{"a":32125,"l":"AlterEgo_VM_native_primitive_7d7d","c":"Fetch a four-byte immediate from script IP into secondary $0E-$11 and advance IP by four. Inputs: $08/$09, Y=0. Outputs: secondary 32-bit value. Assumptions: Y must be 0 on entry, since it indexes both the bytecode and the destination $0E,Y. Script IP $08/$09 must address four immediate bytes, and the shared tail relies on the carry set by CPY #$04 so that ADC #$03 advances the IP by four. Clobbers: A,Y and flags. Primitive index $19. Hardware: Touches no hardware: bytecode read from RAM and a RAM script-IP update.","t":"code","b":[177,8],"m":"lda","oa":8,"x":[32133],"o":"(vm_instruction_ptr_lo),y"},{"a":32127,"t":"code","b":[153,14,0],"m":"sta","oa":14,"o":"vm_secondary_value_b0,y"},{"a":32130,"t":"code","b":[200],"m":"iny"},{"a":32131,"t":"code","b":[192,4],"m":"cpy","o":"#$04"},{"a":32133,"t":"code","b":[208,246],"m":"bne","oa":32125,"o":"AlterEgo_VM_native_primitive_7d7d"},{"a":32135,"l":"vm_advance_script_ip_past_32bit_immediate_tail","c":"Shared tail of the two 32-bit immediate fetchers. Both copy four bytes from the bytecode at ($08),Y with Y running 0..3, which leaves carry set and the script IP still pointing at the opcode's operand; this tail performs ADC #$03 on $08/$09 with that carry still set, so the script IP advances by exactly the four immediate bytes, and returns by RTS. Inputs: script IP $08/$09 at the first operand byte; carry set by the terminating CPY/BNE of either loop. Outputs: script IP advanced past the four-byte immediate; RTS to the primitive's caller. Assumptions: Entered by fall-through from native_primitive_7d7d fetch_immediate_secondary_32bit and by BEQ from native_primitive_7d71 fetch_immediate_32bit at $7D7B; the BEQ is the always-taken partner of the loop's terminating BNE, and carry must be set for the ADC #3 to add four. Not an independent routine. Clobbers: A, flags and script IP $08/$09. Hardware: None.","t":"code","b":[165,8],"m":"lda","oa":8,"x":[32123],"o":"vm_instruction_ptr_lo"},{"a":32137,"t":"code","b":[105,3],"m":"adc","o":"#$03"},{"a":32139,"t":"code","b":[133,8],"m":"sta","oa":8,"o":"vm_instruction_ptr_lo"},{"a":32141,"t":"code","b":[144,2],"m":"bcc","oa":32145,"o":"LAB_7d91"},{"a":32143,"t":"code","b":[230,9],"m":"inc","oa":9,"o":"vm_instruction_ptr_hi"},{"a":32145,"l":"LAB_7d91","t":"code","b":[96],"m":"rts","x":[32141]},{"a":32146,"l":"AlterEgo_VM_native_primitive_7d92","c":"Decrement primary 32-bit value $0A-$0D by one with carry propagation. Outputs: primary updated. Assumptions: Primary $0A-$0D must be live. The routine sets Y=$FF itself and falls into the shared propagation loop at $7D99, so it must be entered at $7D92 rather than mid-body, and Y is destroyed. Clobbers: A,X,Y and flags. Primitive index $1C. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: none; the body writes every location it uses before reading it.","t":"code","b":[160,255],"m":"ldy","o":"#$FF"},{"a":32148,"t":"code","b":[152],"m":"tya"},{"a":32149,"t":"code","b":[208,2],"m":"bne","oa":32153,"o":"add_signed_byte_to_primary_32bit_tail"},{"a":32151,"l":"AlterEgo_VM_native_primitive_7d97","c":"Increment primary 32-bit value $0A-$0D by one with carry propagation. Outputs: primary updated. Assumptions: Primary $0A-$0D must be live and Y must be 0 on entry, because Y is the per-byte addend in the propagation loop ($00 for increment, $FF for the decrement entry at $7D92). Wrap from $FFFFFFFF to zero is silent. Clobbers: A,X,Y and flags. Primitive index $1B enters here. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: none; the body writes every location it uses before reading it.","t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":32153,"l":"add_signed_byte_to_primary_32bit_tail","c":"Shared tail of the 32-bit increment and decrement primitives. With A holding the signed delta and Y its sign extension, it adds the delta to the low byte of VM primary at $0A and then ripples the sign extension through $0B, $0C and $0D using the indexed form $0A,X with X = 1..3. Inputs: A = +1 or -1 as the delta and Y = its sign extension, $00 for increment or $FF for decrement; VM primary $0A-$0D. The decrement entry sets Y=$FF itself; the increment entry relies on the primitive dispatcher entering with Y=0. Outputs: VM primary $0A-$0D incremented or decremented as a 32-bit little-endian value; RTS to the primitive's caller. Assumptions: Entered by fall-through from native_primitive_7d97 increment_primary_32bit and by BNE from native_primitive_7d92 decrement_primary_32bit at $7D95; A and Y must already agree in sign, which only those two entries arrange. Not an independent routine. Clobbers: A, X, Y, flags and VM primary $0A-$0D. Hardware: None.","t":"code","b":[24],"m":"clc","x":[32149]},{"a":32154,"t":"code","b":[162,1],"m":"ldx","o":"#$01"},{"a":32156,"t":"code","b":[101,10],"m":"adc","oa":10,"o":"vm_primary_value_b0"},{"a":32158,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":32160,"t":"code","b":[106],"m":"ror","o":"a"},{"a":32161,"l":"LAB_7da1","t":"code","b":[42],"m":"rol","x":[32171],"o":"a"},{"a":32162,"t":"code","b":[152],"m":"tya"},{"a":32163,"t":"code","b":[117,10],"m":"adc","oa":10,"o":"vm_primary_value_b0,x"},{"a":32165,"t":"code","b":[149,10],"m":"sta","oa":10,"o":"vm_primary_value_b0,x"},{"a":32167,"t":"code","b":[106],"m":"ror","o":"a"},{"a":32168,"t":"code","b":[232],"m":"inx"},{"a":32169,"t":"code","b":[224,4],"m":"cpx","o":"#$04"},{"a":32171,"t":"code","b":[208,244],"m":"bne","oa":32161,"o":"LAB_7da1"},{"a":32173,"t":"code","b":[96],"m":"rts"},{"a":32174,"l":"AlterEgo_VM_native_primitive_7dae","c":"Store primary 32-bit value $0A-$0D through pointer $0E/$0F. Inputs: pointer and primary. Outputs: four destination bytes. Assumptions: $0E/$0F must hold a valid writable destination address and primary $0A-$0D the value; Y is set to 3 internally, so no entry value is needed. Four bytes are written unconditionally, with no bound check. Clobbers: A,Y and flags. Primitive index $17. Hardware: Touches no hardware itself -- it stores through a caller-supplied pointer -- so hardware is only affected if the caller aims $0E/$0F at the I/O block.","t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":32176,"l":"LAB_7db0","t":"code","b":[185,10,0],"m":"lda","oa":10,"x":[32182],"o":"vm_primary_value_b0,y"},{"a":32179,"t":"code","b":[145,14],"m":"sta","oa":14,"o":"(vm_secondary_value_b0),y"},{"a":32181,"t":"code","b":[136],"m":"dey"},{"a":32182,"t":"code","b":[16,248],"m":"bpl","oa":32176,"o":"LAB_7db0"},{"a":32184,"t":"code","b":[96],"m":"rts"},{"a":32185,"l":"AlterEgo_VM_native_primitive_7db9","c":"Swap primary $0A-$0D and secondary $0E-$11 byte-for-byte. Outputs: operands exchanged. Assumptions: Both $0A-$0D and $0E-$11 must be live VM registers; the loop indexes both with X=3..0 and uses Y as the byte temporary, so Y is destroyed and the calling handler must not depend on it. Clobbers: A,X,Y and flags. Primitive index $1A. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $0A,X, $0E,X.","t":"code","b":[162,3],"m":"ldx","o":"#$03"},{"a":32187,"l":"LAB_7dbb","t":"code","b":[181,10],"m":"lda","oa":10,"x":[32196],"o":"vm_primary_value_b0,x"},{"a":32189,"t":"code","b":[180,14],"m":"ldy","oa":14,"o":"vm_secondary_value_b0,x"},{"a":32191,"t":"code","b":[149,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0,x"},{"a":32193,"t":"code","b":[148,10],"m":"sty","oa":10,"o":"vm_primary_value_b0,x"},{"a":32195,"t":"code","b":[202],"m":"dex"},{"a":32196,"t":"code","b":[16,245],"m":"bpl","oa":32187,"o":"LAB_7dbb"},{"a":32198,"t":"code","b":[96],"m":"rts"},{"a":32199,"l":"AlterEgo_VM_native_primitive_7dc7","c":"Load primary 32-bit value from a frame-relative address fetched from script IP. Inputs: signed offset at $08/$09 and frame $06/$07. Outputs: $0A-$0D. Assumptions: Y must be 0 on entry for the operand fetch in $78ED, script IP $08/$09 must address the signed offset word, frame pointer $06/$07 must be valid and $02/$03 must be free because the effective address is staged there. The four bytes at that address must be readable. Clobbers: A,Y,$02/$03 and flags. Primitive index $0C. Hardware: Touches no hardware unless the computed frame-relative address falls in the I/O block, which the VM frame region near $CF00-$CFFF does not.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":32202,"l":"load_primary_32bit_through_scratch_tail","c":"Shared tail that copies four bytes from ($02),Y into VM primary $0A-$0D, high byte first. Reached from the absolute 32-bit load (primitive $10) and from the 32-bit pop path; the frame-relative primitive $0C falls into it. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: VM primary $0A-$0D = the 32-bit value at ($02); RTS to $713B. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y and flags. Hardware: None.","t":"code","b":[160,3],"m":"ldy","x":[32249,32324],"o":"#$03"},{"a":32204,"l":"LAB_7dcc","t":"code","b":[177,2],"m":"lda","oa":2,"x":[32210],"o":"(shared_scratch_02_lo),y"},{"a":32206,"t":"code","b":[153,10,0],"m":"sta","oa":10,"o":"vm_primary_value_b0,y"},{"a":32209,"t":"code","b":[136],"m":"dey"},{"a":32210,"t":"code","b":[16,248],"m":"bpl","oa":32204,"o":"LAB_7dcc"},{"a":32212,"t":"code","b":[96],"m":"rts"},{"a":32213,"l":"AlterEgo_VM_native_primitive_7dd5","c":"Load secondary 32-bit value from a frame-relative address fetched from script IP. Inputs: signed offset and frame pointer. Outputs: $0E-$11. Assumptions: Y must be 0 on entry for $78ED, script IP must address the signed offset, frame pointer $06/$07 must be valid and $02/$03 must be free. The four source bytes must be readable memory. Clobbers: A,Y,$02/$03 and flags. Primitive index $0D. Hardware: Touches no hardware unless the computed frame-relative address falls in the I/O block, which the VM frame region does not.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":32216,"l":"load_secondary_32bit_through_scratch_tail","c":"Shared tail that loads a 32-bit little-endian value through the scratch pointer $02/$03 into VM secondary $0E-$11, copying four bytes from high index to low with LDY #3 / LDA ($02),Y / STA $0E,Y / DEY / BPL, then returning by RTS. Inputs: $02/$03 = effective address produced by the frame-relative fetcher $78ED or the absolute fetcher $78D6. Outputs: VM secondary $0E-$11 = the 32-bit value; RTS to the primitive's caller. Assumptions: Entered by fall-through from native_primitive_7dd5 load_secondary_32bit_frame_relative and by BCC from native_primitive_7dfb load_secondary_32bit_absolute at $7DFE; four readable bytes must exist at the effective address. Not an independent routine. Clobbers: A, Y, flags and VM secondary $0E-$11. Hardware: None unless the bytecode-supplied absolute address lies in the I/O block, in which case four I/O registers are read.","t":"code","b":[160,3],"m":"ldy","x":[32254],"o":"#$03"},{"a":32218,"l":"LAB_7dda","t":"code","b":[177,2],"m":"lda","oa":2,"x":[32224],"o":"(shared_scratch_02_lo),y"},{"a":32220,"t":"code","b":[153,14,0],"m":"sta","oa":14,"o":"vm_secondary_value_b0,y"},{"a":32223,"t":"code","b":[136],"m":"dey"},{"a":32224,"t":"code","b":[16,248],"m":"bpl","oa":32218,"o":"LAB_7dda"},{"a":32226,"t":"code","b":[96],"m":"rts"},{"a":32227,"l":"AlterEgo_VM_native_primitive_7de3","c":"Store primary 32-bit value to a frame-relative address fetched from script IP. Outputs: four destination bytes. Assumptions: Y must be 0 on entry for $78ED, script IP must address the signed offset, frame pointer $06/$07 must be valid and $02/$03 must be free. The destination must be writable: four bytes are stored with no bound check against the frame size. Clobbers: A,Y,$02/$03 and flags. Primitive index $0E. Hardware: Touches no hardware unless the computed frame-relative address falls in the I/O block, which the VM frame region does not. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_fetch_frame_relative_address, whose inputs apply unchanged.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":32230,"l":"store_primary_32bit_through_scratch_tail","c":"Shared tail that stores VM primary $0A-$0D as a 32-bit little-endian value through the scratch pointer $02/$03, copying four bytes from high index to low with LDY #3 / LDA $0A,Y / STA ($02),Y / DEY / BPL, then returning by RTS. Inputs: VM primary $0A-$0D; $02/$03 = effective address from $78ED or $78D6. Outputs: four bytes written at the effective address; RTS to the primitive's caller. Assumptions: Entered by fall-through from native_primitive_7de3 store_primary_32bit_frame_relative and by BCC from native_primitive_7e00 store_primary_32bit_absolute at $7E03; the four target bytes must be writable, since the store is unconditional. Not an independent routine. Clobbers: A, Y and flags. Hardware: None unless the bytecode-supplied absolute address lies in the I/O block, in which case four I/O registers are written.","t":"code","b":[160,3],"m":"ldy","x":[32259],"o":"#$03"},{"a":32232,"l":"LAB_7de8","t":"code","b":[185,10,0],"m":"lda","oa":10,"x":[32238],"o":"vm_primary_value_b0,y"},{"a":32235,"t":"code","b":[145,2],"m":"sta","oa":2,"o":"(shared_scratch_02_lo),y"},{"a":32237,"t":"code","b":[136],"m":"dey"},{"a":32238,"t":"code","b":[16,248],"m":"bpl","oa":32232,"o":"LAB_7de8"},{"a":32240,"t":"code","b":[96],"m":"rts"},{"a":32241,"l":"AlterEgo_VM_native_primitive_7df1","c":"Push a 32-bit value from a frame-relative address onto the VM expression stack. Inputs: signed frame offset at script IP. Outputs: $04/$05 decremented by four and four bytes copied. Assumptions: Y must be 0 on entry for the frame-relative fetch, and the routine reaches the shared push tail at $7E08 through BCC, so it depends on $78ED returning with carry clear. The VM expression stack at $04/$05 must have four bytes of headroom and $02/$03 must be free. Clobbers: A,Y,$02/$03 and flags. Primitive index $0F. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register.","t":"code","b":[32,237,120],"m":"jsr","oa":30957,"o":"vm_fetch_frame_relative_address"},{"a":32244,"t":"code","b":[144,18],"m":"bcc","oa":32264,"o":"push_32bit_through_scratch_tail"},{"a":32246,"l":"AlterEgo_VM_native_primitive_7df6","c":"Load primary 32-bit value from an absolute address fetched from script IP. Outputs: $0A-$0D and IP advanced two. Assumptions: Y must be 0 on entry for $78D6, script IP must address the two-byte absolute address, and the routine reaches the shared load loop through BCC, so it depends on $78D6 returning carry clear. $02/$03 are overwritten with the address. Clobbers: A,Y,$02/$03 and flags. Primitive index $10. Hardware: Touches no hardware unless the absolute address supplied by the bytecode lies in the I/O block. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_fetch_word_to_scratch, whose inputs apply unchanged.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":32249,"t":"code","b":[144,207],"m":"bcc","oa":32202,"o":"load_primary_32bit_through_scratch_tail"},{"a":32251,"l":"AlterEgo_VM_native_primitive_7dfb","c":"Load secondary 32-bit value from an absolute address fetched from script IP. Outputs: $0E-$11 and IP advanced two. Assumptions: Y must be 0 on entry for $78D6, script IP must address the two-byte absolute address, and the BCC path depends on $78D6 returning carry clear. $02/$03 are overwritten. Clobbers: A,Y,$02/$03 and flags. Primitive index $11. Hardware: Touches no hardware unless the absolute address supplied by the bytecode lies in the I/O block. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_fetch_word_to_scratch, whose inputs apply unchanged.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":32254,"t":"code","b":[144,216],"m":"bcc","oa":32216,"o":"load_secondary_32bit_through_scratch_tail"},{"a":32256,"l":"AlterEgo_VM_native_primitive_7e00","c":"Store primary 32-bit value to an absolute address fetched from script IP. Outputs: four destination bytes and IP advanced two. Assumptions: Y must be 0 on entry for $78D6 and the BCC path depends on its carry-clear return. The absolute address from the bytecode must be writable, since four bytes are stored unconditionally, and $02/$03 are overwritten. Clobbers: A,Y,$02/$03 and flags. Primitive index $12. Hardware: Touches no hardware unless the absolute address supplied by the bytecode lies in the I/O block, in which case four I/O registers are written. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_fetch_word_to_scratch, whose inputs apply unchanged.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":32259,"t":"code","b":[144,225],"m":"bcc","oa":32230,"o":"store_primary_32bit_through_scratch_tail"},{"a":32261,"l":"AlterEgo_VM_native_primitive_7e05","c":"Push a 32-bit value from an absolute address fetched from script IP. Outputs: stack pointer decremented four, four bytes copied, IP advanced two. Assumptions: Y must be 0 on entry for $78D6 and the routine relies on its carry-clear return to reach $7E08. The VM expression stack must have four bytes of headroom below $04/$05, and $02/$03 are used as the source pointer. Clobbers: A,Y,$02/$03 and flags. Primitive index $13. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to vm_fetch_word_to_scratch, whose inputs apply unchanged.","t":"code","b":[32,214,120],"m":"jsr","oa":30934,"o":"vm_fetch_word_to_scratch"},{"a":32264,"l":"push_32bit_through_scratch_tail","c":"Shared tail that subtracts four from the expression-stack pointer and copies the 32-bit value at ($02) onto the stack. Reached from two 32-bit push primitives; primitive $13 falls into it. Inputs: Set by the calling opcode handler as described in Purpose; VM frame $06/$07, expression stack $04/$05 and Y = 0 from the dispatcher. Outputs: Expression-stack pointer $04/$05 decremented by four and four bytes stored; RTS to $713B. Assumptions: Entered only by branch from its sibling opcode handlers, never by call; Y is 0 on entry; the frame pointer addresses a live VM frame. Not an independent routine: it has no prologue and no return. Clobbers: A, Y, flags and $04/$05. Hardware: None.","t":"code","b":[56],"m":"sec","x":[32244,32291]},{"a":32265,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":32267,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":32269,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":32271,"t":"code","b":[176,2],"m":"bcs","oa":32275,"o":"LAB_7e13"},{"a":32273,"t":"code","b":[198,5],"m":"dec","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":32275,"l":"LAB_7e13","t":"code","b":[160,3],"m":"ldy","x":[32271],"o":"#$03"},{"a":32277,"l":"LAB_7e15","t":"code","b":[177,2],"m":"lda","oa":2,"x":[32282],"o":"(shared_scratch_02_lo),y"},{"a":32279,"t":"code","b":[145,4],"m":"sta","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":32281,"t":"code","b":[136],"m":"dey"},{"a":32282,"t":"code","b":[16,249],"m":"bpl","oa":32277,"o":"LAB_7e15"},{"a":32284,"t":"code","b":[96],"m":"rts"},{"a":32285,"l":"AlterEgo_VM_native_primitive_7e1d","c":"Push current primary 32-bit value $0A-$0D onto the VM expression stack via shared copy tail $7E08. Outputs: $04/$05 decremented by four. Assumptions: Y must be 0 on entry, because it is stored as the high byte of the source pointer $02/$03, which is set to $000A -- the routine literally makes the VM primary register its own source. Four bytes of VM expression-stack headroom are required. Clobbers: A,Y,$02/$03 and flags. Primitive index $14. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: entry register Y.","t":"code","b":[169,10],"m":"lda","o":"#$0A"},{"a":32287,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":32289,"t":"code","b":[132,3],"m":"sty","oa":3,"o":"shared_scratch_02_hi"},{"a":32291,"t":"code","b":[76,8,126],"m":"jmp","oa":32264,"o":"push_32bit_through_scratch_tail"},{"a":32294,"l":"AlterEgo_VM_native_primitive_7e26","c":"Pop four bytes from the VM expression stack into secondary $0E-$11 and advance $04/$05 by four. Outputs: secondary and updated stack pointer. Assumptions: $04/$05 must point at four readable bytes on the VM expression stack; Y is set internally, so no entry value is required. The pop is unchecked, so the caller must guarantee the stack is not empty. Clobbers: A,Y and flags. Primitive index $15. Hardware: Touches no hardware: the whole computation is zero-page arithmetic on the VM registers, and it reads or writes no VIC, SID, CIA or 6510-port register. Inputs: memory it reads before writing: $04,Y, vm_expression_stack_ptr_lo, vm_expression_stack_ptr_hi.","t":"code","b":[160,3],"m":"ldy","o":"#$03"},{"a":32296,"l":"LAB_7e28","t":"code","b":[177,4],"m":"lda","oa":4,"x":[32302],"o":"(vm_expression_stack_ptr_lo),y"},{"a":32298,"t":"code","b":[153,14,0],"m":"sta","oa":14,"o":"vm_secondary_value_b0,y"},{"a":32301,"t":"code","b":[136],"m":"dey"},{"a":32302,"t":"code","b":[16,248],"m":"bpl","oa":32296,"o":"LAB_7e28"},{"a":32304,"t":"code","b":[24],"m":"clc"},{"a":32305,"t":"code","b":[165,4],"m":"lda","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":32307,"t":"code","b":[105,4],"m":"adc","o":"#$04"},{"a":32309,"t":"code","b":[133,4],"m":"sta","oa":4,"o":"vm_expression_stack_ptr_lo"},{"a":32311,"t":"code","b":[144,2],"m":"bcc","oa":32315,"o":"LAB_7e3b"},{"a":32313,"t":"code","b":[230,5],"m":"inc","oa":5,"o":"vm_expression_stack_ptr_hi"},{"a":32315,"l":"LAB_7e3b","t":"code","b":[96],"m":"rts","x":[32311]},{"a":32316,"l":"AlterEgo_VM_native_primitive_7e3c","c":"Load primary 32-bit value indirectly through pointer held in primary low word $0A/$0B. It copies that pointer to $02/$03 then shares the frame-load loop. Outputs: dereferenced value in $0A-$0D. Assumptions: Primary low word $0A/$0B must hold a readable address before the call, since it becomes the source pointer in $02/$03 and the four loaded bytes then overwrite it. Y is set by the shared loop at $7DCA, so no entry value is required. Clobbers: A,Y,$02/$03 and flags. Primitive index $16. Hardware: Touches no hardware unless the pointer held in $0A/$0B addresses the I/O block. Inputs: memory it reads before writing: vm_primary_value_b0, vm_primary_value_b1.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":32318,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":32320,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":32322,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":32324,"t":"code","b":[76,202,125],"m":"jmp","oa":32202,"o":"load_primary_32bit_through_scratch_tail"},{"a":32327,"l":"resident_runtime_state_and_tables","c":"Resident mutable runtime state and compact lookup tables used by the VM, IEC transfer helpers, menus and personality system. This snapshot records the state at the first name prompt; individual live fields are labeled from their readers and writers.","t":"byte","b":[0,4,0,6,0,0,0,1]},{"a":32335,"t":"byte","b":[0,233,78,4,0,0,0,6]},{"a":32343,"t":"byte","b":[0,0,0,8,0,0,0,10]},{"a":32351,"t":"byte","b":[0,0,0,12,0,0,0,14]},{"a":32359,"t":"byte","b":[0,0,0,0,0,49,85,49]},{"a":32367,"t":"byte","b":[85,49,68,50,85,50,68,51]},{"a":32375,"t":"byte","b":[85,51,68,49,68,0,4,0]},{"a":32383,"t":"byte","b":[1,0,0,0,2,0,106,86]},{"a":32391,"t":"byte","b":[4,0,0,0,0,0,4,0]},{"a":32399,"t":"byte","b":[16,243]},{"a":32401,"l":"map_stream_channel_handle","c":"16-bit handle used by the custom MAP streaming layer. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"word","b":[8,0],"d":[8],"x":[23414,23450,23536,24033]},{"a":32403,"l":"expected_map_record_identifier","c":"16-bit expected record identifier compared with the received record header. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"word","b":[1,0],"d":[1],"x":[23426,23582,24142,24361]},{"a":32405,"l":"map_record_index","c":"16-bit record number: seek computes offset/252; reader increments it at a payload-record boundary. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"word","b":[45,0],"d":[45],"x":[23554,23762,23902,23931,23936,23986,24248]},{"a":32407,"l":"map_record_buffer_cursor","c":"One-byte index into the 256-byte record buffer $8045; payload indices are 3 through 254, and index 255 triggers refill. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"byte","b":[191],"x":[23551,23719,23826,23854,23861,23949,23959,24285]},{"a":32408,"l":"drive_record_request_command","c":"Three-byte custom execute-record command preceding the execute address and requested record index. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"byte","b":[77,45,69]},{"a":32411,"l":"drive_record_execute_address","c":"Little-endian execute-address field of the command record sent to the drive. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"byte","b":[0,3],"x":[23983]},{"a":32413,"l":"drive_requested_record_index","c":"Little-endian requested record number in the custom drive command. Consumers are $5C3D-$5EAD and the custom CIA2 transfer helpers; this is runtime/command state, distinct from narrative file payload.","t":"word","b":[45,0],"d":[45],"x":[23989]},{"a":32415,"t":"gap","n":161},{"a":32576,"l":"persistent_state_words_64","c":"First save segment: 64 little-endian 16-bit state words copied verbatim to file $0000-$007F. Conditions and effects address the words by index. Questionnaire words 0-11 hold the personality traits checked by the native scoring fixtures. Later occupation, relationship, salary, school and family interpretations remain imported leads; the name-prompt checks establish storage and scoring, not those phase-dependent gameplay meanings.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32584,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32592,"t":"byte","b":[0,0]},{"a":32594,"l":"persistent_state_09_word","c":"Little-endian state word 9 at $7F52 in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $0012. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"word","b":[0,0],"d":[0]},{"a":32596,"t":"gap","n":4},{"a":32600,"l":"persistent_state_12_word","c":"Little-endian state word 12 at $7F58 in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $0018. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"word","b":[0,0],"d":[0]},{"a":32602,"t":"gap","n":26},{"a":32628,"l":"player_age_years","c":"Player age in years, stored as a little-endian 16-bit word. This is save-file offset $0034 because the containing $7F40 segment begins at file offset zero. Confirmed independently by all five female AES slots and their AESD labels (0, 65, 19, 31, 46) and by the male template ('Age 19').","t":"word","b":[0,0],"d":[0]},{"a":32630,"l":"persistent_state_27_word","c":"Little-endian state word 27 at $7F76 in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $0036. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"word","b":[0,0],"d":[0]},{"a":32632,"l":"state_28_cash_high_base1000","t":"word","b":[0,0],"d":[0]},{"a":32634,"t":"gap","n":8},{"a":32642,"l":"persistent_state_33_word","c":"Little-endian state word 33 at $7F82 in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $0042. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"word","b":[0,0],"d":[0]},{"a":32644,"l":"state_34_debt_high_base1000","t":"word","b":[0,0],"d":[0]},{"a":32646,"t":"gap","n":2},{"a":32648,"l":"persistent_state_36_word","c":"Little-endian state word 36 at $7F88 in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $0048. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"word","b":[0,0],"d":[0]},{"a":32650,"l":"annual_salary_thousands_dollars_lo","c":"State word 37, little-endian. Gross annual salary in $1,000/year units; zero means no salary. Authored male job entries pair annual text amounts $4000, $4500, $5000, $6000, and $7500 with values 4, 5, 5, 6, and 7. Both gameplay overlays multiply this value by elapsed years, the retained-income percentage, and 10, where 10 is $1,000 divided by 100 percentage points.","t":"byte","b":[0]},{"a":32651,"l":"persistent_state_37_high","c":"High byte of state word 37 at $7F8A in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $004A. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"byte","b":[0]},{"a":32652,"l":"state_38_child_age_years","t":"word","b":[0,0],"d":[0]},{"a":32654,"t":"gap","n":10},{"a":32664,"l":"edition_specific_state_word_44_lo","c":"Edition-specific state word 44, little-endian. In the female corpus this is infidelity_attempt_in_progress. In the released male corpus its sole read is a verified misindex of the intended number_of_children > 0 condition: male child count is actually state 51, no male writer updates state 44, and all supplied male saves contain zero. Compatibility mode preserves the erroneous read; a corrected remake tests state 51.","t":"byte","b":[0]},{"a":32665,"l":"persistent_state_44_high","c":"High byte of state word 44 at $7F98 in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $0058. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32673,"t":"byte","b":[0]},{"a":32674,"l":"questionnaire_strict_parenting_flag","c":"Sixteenth-bit state word 49. Questionnaire scoring clears it, and Question 22 TRUE ('My parents were extremely strict disciplinarians') is the sole scoring record that assigns it one. Conditions/effects can subsequently read or update it like every state-vector word.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32682,"t":"byte","b":[0,0,0,0]},{"a":32686,"l":"school_status_code_lo","c":"State word 55, little-endian phase-reused school status code. Adolescence: 0 high school incomplete, 1 completion latch, cleared at the stage transition. Female college: 0 inactive/dropout, 1 enrolled, 2+ graduated. Male college: zero inactive/dropout/graduated, positive enrolled. Progress is stored separately at male state 45 and female state 46; threshold 12 means graduation.","t":"byte","b":[0]},{"a":32687,"l":"persistent_state_55_high","c":"High byte of state word 55 at $7FAE in the 64-word persisted vector $7F40-$7FBF. Save transfer copies this word at slot offset $006E. Later gameplay meanings are phase-dependent imported leads; the name-prompt tests establish storage layout, not those later behaviors.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32695,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32703,"t":"byte","b":[0]},{"a":32704,"l":"used_family_episode_mask","c":"Four-byte little-endian used-family-episode mask, copied verbatim to save offsets $0178-$017B. Gameplay helper $8DD6 removes these bits from selector-6 candidates and adds the chosen family episode after selection, preventing a family episode from recurring across stages. Inputs/outputs: persistent 32-bit bitset. Assumptions: selector 6 denotes family. Hardware: none.","t":"byte","b":[0,0,0,0]},{"a":32708,"l":"fractional_year_remainder","c":"Sixteen-bit month component displayed by $AA90 beneath the literal 'MONTHS:' label in the LIFE TIME status screen. It complements state-vector age_years at $7F74. The first-name snapshot precedes normal initialization, so its captured bytes are not a valid saved month value.","t":"word","b":[43,150],"d":[38443]},{"a":32710,"t":"gap","n":5},{"a":32715,"l":"vm_heap_next_free_pointer","c":"16-bit next-free heap address at $7FCB/$7FCC, initialized to $8465 by $6557. VM allocator $6E70 compares the 16-bit wrapped heap+size against its expression-stack pointer minus 256, returning zero when too large. Eight native cases verify boundary acceptance/rejection and wraparound: $FFFF decrements the pointer, and a count wrapping the end to zero is accepted. The following two startup-cleared bytes are not consumed as a 32-bit address by this allocator. Player-reachable oversize requests remain open.","t":"byte","b":[101],"x":[25960]},{"a":32716,"l":"vm_heap_next_free_high","c":"High byte of the 16-bit heap address at $7FCB, read/written by compiled allocator $6E70. Startup sets it to $84. Do not include adjacent $7FCD/$7FCE in the allocator pointer width.","t":"byte","b":[196],"x":[25965]},{"a":32717,"l":"startup_cleared_7fcd_open","t":"byte","b":[0],"x":[25970]},{"a":32718,"l":"a_7FCE","t":"byte","b":[0],"x":[25973]},{"a":32719,"l":"termination_cleanup_callback","c":"16-bit cleanup callback set to $6605 by top-level VM startup $65B4, read by $6E33 before terminating to BASIC. Zero skips cleanup. This is separate from the heap pointer immediately before it.","t":"byte","b":[5,102]},{"a":32721,"l":"file_spec_parse_number","c":"16-bit decimal-number accumulator used while parsing Commodore file specifications at $6A20; $6977 also reads it when binding a file slot. File-slot records begin separately at $7FD3.","t":"byte","b":[8,0]},{"a":32723,"l":"file_slot_binding_records","c":"Ten seven-byte file-binding records $7FD3-$8018. Top-level VM startup iterates indices 0-9 and writes $FF to each record's first byte; parser/binder $6977 searches and fills the selected record. First-byte $FF marks an unused slot. Full malformed file-spec and I/O failure cases remain open.","t":"byte","b":[2,0,1,0,0,0,0,2]},{"a":32731,"t":"byte","b":[0,1,0,0,0,0,2,0]},{"a":32739,"t":"byte","b":[1,0,0,0,0,255,0,0]},{"a":32747,"t":"byte","b":[0,0,0,0,255,0,0,0]},{"a":32755,"t":"byte","b":[0,0,0,255,0,0,0,0]},{"a":32763,"t":"byte","b":[0,0,255,0,0]},{"a":32768,"t":"gap","n":25},{"a":32793,"l":"kernal_readst_last_status","t":"byte","b":[64,48,58,75,66,58,0,0],"x":[28207]},{"a":32801,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32809,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32817,"t":"byte","b":[0,0,0,0,0,0,0,80]},{"a":32825,"t":"byte","b":[0,0]},{"a":32827,"l":"current_stage_age_low","c":"Current MAP stage age bounds and transient configuration. $803B/$803C is the inclusive lower age bound; $803D/$803E is the upper bound; $803F/$8040 is age_advance_scale_q10; $8041/$8042 is exactly 8-current_stage. Loaded by gameplay VM $88A9 before route and block-span metadata. Hardware: none.","t":"byte","b":[0,0]},{"a":32829,"l":"current_stage_age_high","c":"16-bit upper age bound loaded with lower bound $803B from the active MAP stage header. In supplied male MAP1 the bounds are 0 and 3; separate scale/configuration words follow. This field does not own the later drive record buffer.","t":"byte","b":[3,0]},{"a":32831,"l":"age_advance_scale_q10","c":"16-bit scale/configuration word adjacent to MAP stage age bounds. The stage header supplies it; later gameplay interpretation as age-advance scale is an imported lead requiring a fresh gameplay overlay, so the name does not establish current prompt behavior.","t":"word","b":[22,15],"d":[3862]},{"a":32833,"l":"reverse_stage_index","c":"16-bit stage configuration at $8041, adjacent to the scale word. Imported later-state interpretation is 8-stage; current prompt capture does not exercise age advancement.","t":"word","b":[7,0],"d":[7]},{"a":32835,"l":"runtime_file_status_flags","c":"Mutable status byte used by whole-file read/open helpers $5F44/$6977. The adjoining $8044 byte is separate state and the drive-record buffer begins at $8045.","t":"word","b":[0,0],"d":[0],"x":[23478,23486,23497,24212]},{"a":32837,"l":"map_record_status_byte","c":"First byte of the 256-byte custom drive record at $8045-$8144. The receive path requires status zero; offset 1 is record identifier, offset 2 a $3A framing marker, offsets 3..254 the 252 logical payload bytes, and offset 255 the trailing $3A. Other program phases may reuse this buffer; current bytes alone do not establish a successful record receipt.","t":"byte","b":[0],"x":[24110,24134,24209]},{"a":32838,"l":"map_record_identifier","c":"Record identifier at byte 1 of the custom 256-byte drive record. Logical MAP content starts at byte 3, not here; do not concatenate this byte with file payload.","t":"byte","b":[1],"x":[24145,24215]},{"a":32839,"l":"map_record_leading_marker","c":"Leading $3A marker at byte 2 of a valid custom drive record. The native read path starts copied payload at index 3 and rolls at index 255. Host-extracted REL records omit the status and identifier, leaving $3A + 252 payload bytes + $3A.","t":"byte","b":[58,0,0,0,0,0,0,0],"x":[24160]},{"a":32847,"t":"byte","b":[0,0,0,0,3,1,0,20]},{"a":32855,"t":"byte","b":[1,8,30,1,2,20,0,0]},{"a":32863,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32871,"t":"byte","b":[0,0,0,0,0,1,1,3]},{"a":32879,"t":"byte","b":[30,0,0,0,0,0,0,0]},{"a":32887,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32895,"t":"byte","b":[0,0,0,0,0,0,2,1]},{"a":32903,"t":"byte","b":[8,20,1,2,20,0,0,0]},{"a":32911,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32919,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":32927,"t":"byte","b":[1,3,30,0,0,0,0,0]},{"a":32935,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32943,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32951,"t":"byte","b":[2,1,8,30,1,9,30,0]},{"a":32959,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32967,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32975,"t":"byte","b":[0,1,1,4,20,0,0,0]},{"a":32983,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32991,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":32999,"t":"byte","b":[0,0,1,1,4,20,0,0]},{"a":33007,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33015,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33023,"t":"byte","b":[0,0,0,0,0]},{"a":33028,"l":"vm_resume_callback_ptr","c":"Little-endian callback pointer $8466. The target restores a saved native/VM frame and enters VM procedure $8D5E.","t":"word","b":[102,132],"d":[33894]},{"a":33030,"l":"resident_menu_and_personality_tables","c":"Resident menu records, selection geometry, scoring tables and mutable personality/questionnaire state. The byte records are kept as data; the callback at $8104 and executable stub at $8466 are modeled separately.","t":"byte","b":[4,72,76,146,179,32,32,32]},{"a":33038,"t":"byte","b":[32,68,111,32,121,111,117,32]},{"a":33046,"t":"byte","b":[119,105,115,104,32,116,111,58]},{"a":33054,"t":"byte","b":[0,32,32,32,32,32,67,79]},{"a":33062,"t":"byte","b":[78,84,73,78,85,69,0,32]},{"a":33070,"t":"byte","b":[32,32,32,32,83,65,86,69]},{"a":33078,"t":"byte","b":[32,71,65,77,69,0,32,32]},{"a":33086,"t":"byte","b":[32,32,32,82,69,83]},{"a":33092,"l":"map_record_trailing_marker","c":"Final $3A framing byte of a valid custom drive record at $8045. It is excluded from the 252-byte logical payload. Bytes beginning $8145 hold separate resident configuration/state; this marker does not own them.","t":"byte","b":[58,13,0,56,0,49,0,50],"x":[24170]},{"a":33100,"t":"byte","b":[0,7,0,61,0,72,0,68]},{"a":33108,"t":"byte","b":[0,55,0,5,0,39,0,50]},{"a":33116,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33124,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33132,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33140,"t":"byte","b":[0,0,0,0,0,1,0,244]},{"a":33148,"t":"byte","b":[1,0,0,0,0,0,0,0]},{"a":33156,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33164,"t":"byte","b":[0,0,0,0,0,1,0,0]},{"a":33172,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33180,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33188,"t":"byte","b":[0,0,0,1,0,0,0,0]},{"a":33196,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33204,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33212,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33220,"t":"byte","b":[0]},{"a":33221,"l":"persisted_stage_life_choice_config","c":"Forty-eight persisted stage bytes copied to save offsets $0080-$00AF and loaded from MAP stage_config[4:52]. Bytes 0-15 are eight {scene/control, selector} pairs; bytes 16-47 are eight little-endian remaining-episode masks. Selector values are 1 life time, 2 major purchase, 3 college, 4 relationships, 5 life status, 6 family, 7 later-life risk, 8 marriage, 9 adolescent risk, 10 work, and 11 high school; zero is unused. $8DD6 consumes the masks, with selector 6 additionally consulting $7FC0-$7FC3.","t":"byte","b":[255,0,255,0,255,0,1,5]},{"a":33229,"t":"byte","b":[255,0,255,0,255,0,255,1]},{"a":33237,"l":"remaining_episode_masks_8x_u32le","c":"Eight little-endian 32-bit remaining-episode masks within persisted stage configuration. Ordinary selections clear the chosen bit in the slot mask. Family selections instead exclude the persistent used-family mask at $7FC0-$7FC3 and add the chosen bit there. Pristine MAP masks and all save mutations are retained exactly.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33245,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33253,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33261,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33269,"t":"byte","b":[0,232]},{"a":33271,"l":"life_map_grid_30x3_words","c":"Persisted 30-row by 3-column life-map grid: 90 little-endian words saved at file offsets $00B0-$0163. Word bits 0-7 are the global scene ID, bits 8-11 are a 1-based icon selector (zero means no icon), and bits 12-15 are four connector-direction flags. Scene ID zero is empty/connector; IDs below the terminal ID select compressed scene blocks; the unique terminal ID marks the end of the stage. Stage loading copies the variable MAP route-word prefix here and clears unused cells; map display procedures use a six-byte row stride.","t":"byte","b":[3,71,4,166,0,0,0,0]},{"a":33279,"t":"byte","b":[5,115,6,131,7,102,0,176]},{"a":33287,"t":"byte","b":[0,0,8,55,9,54,0,0]},{"a":33295,"t":"byte","b":[10,83,0,176,11,34,0,0]},{"a":33303,"t":"byte","b":[12,55,13,51,0,0,0,112]},{"a":33311,"t":"byte","b":[14,146,15,39,16,54,0,0]},{"a":33319,"t":"byte","b":[17,83,18,179,0,0,0,0]},{"a":33327,"t":"byte","b":[19,55,0,0,20,68,0,176]},{"a":33335,"t":"byte","b":[0,0,0,0,21,87,22,166]},{"a":33343,"t":"byte","b":[23,34,0,0,24,52,0,80]},{"a":33351,"t":"byte","b":[25,231,0,176,0,0,26,118]},{"a":33359,"t":"byte","b":[27,176,28,96,0,240,29,144]},{"a":33367,"t":"byte","b":[0,80,30,176,0,0,31,0]},{"a":33375,"t":"byte","b":[32,112,33,128,34,64,35,144]},{"a":33383,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33391,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33399,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33407,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33415,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33423,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33431,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33439,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33447,"t":"byte","b":[0,0,0,0]},{"a":33451,"l":"acquisitions_bitmask","c":"Sixteen-bit acquisitions mask copied to save offsets $0176-$0177. Bits 1-11 select watch, stereo, photo equipment, video equipment, computer, sports equipment, wardrobe, automobile, library, boat and home in that order; bit 0 is not a displayed acquisition.","t":"word","b":[0,0],"d":[0]},{"a":33453,"l":"life_map_boundary_zero_and_columns","c":"Life-map rendering coordinate data, not save payload. $82AD is a zero/prepad word followed at $82AF by little-endian boundaries {8,72,136,200,264,320}. $57BA indexes the inner 72/136/200 values and adds 24 to derive companion clipping coordinates 96/160/224. Hardware effects occur only through the caller's VIC screen rendering.","t":"byte","b":[0,0,8,0,72,0,136,0]},{"a":33461,"t":"byte","b":[200,0,8,1,64,1]},{"a":33467,"l":"current_stage_route_word_count","c":"Number of route words loaded for the current stage. $88A9 reads this count, copies that many two-byte route words to the 30x3 Life Map grid at $81F7, and verifies the remaining directory fields. Hardware: none.","t":"byte","b":[57,0]},{"a":33469,"l":"current_life_stage","c":"Signed 16-bit current life stage copied to save offsets $0174-$0175. Values -1 through -7 denote infancy, childhood, adolescence, young adulthood, adulthood, middle age and old age.","t":"byte","b":[1,0,0,0,24,0,72,0]},{"a":33477,"t":"byte","b":[120,0,168,0,200,0]},{"a":33483,"l":"player_name_sixteen_bytes","c":"Sixteen-byte player-name field, copied to save-slot offsets $0164-$0173. Ordinary typing and deletion were checked; a full name occupies all sixteen bytes without an internal NUL, so it is not always NUL-padded. The editor ignores later letters once full.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33491,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33499,"l":"initial_cursor_cell_index","c":"Zero-based flattened initial Life Map cursor cell loaded from the MAP section. The gameplay main loop divides it by three to obtain row and column before placing sprite 0. It must lie within the loaded route-word prefix.","t":"byte","b":[51,0,5,0,1,0,2,76]},{"a":33507,"t":"byte","b":[1,0,3,76,2,0,4,76]},{"a":33515,"t":"byte","b":[3,0,5,76,5,0,0,0]},{"a":33523,"t":"byte","b":[0,0]},{"a":33525,"l":"current_stage_terminal_scene_id","c":"Current stage terminal scene ID. It is the maximum low-byte scene ID in the route-word prefix and marks the unique non-loadable stage endpoint; lower nonzero IDs address compressed scene blocks.","t":"byte","b":[35,0]},{"a":33527,"l":"stage_block_span_table_payload_offset","c":"Four-byte little-endian MAP payload offset of the current stage block-span table. $9830 copies it to the streaming cursor at $CC65-$CC68, walks allocated scene spans, and calls $9908 when the span window must be refilled.","t":"byte","b":[6,118,0,0,142,9,0,0]},{"a":33535,"t":"byte","b":[84,7,240,13,6,6,166,10]},{"a":33543,"t":"byte","b":[194,10,54,15,182,24,16,14]},{"a":33551,"t":"byte","b":[16,5,108,6,148,7,20,5]},{"a":33559,"t":"byte","b":[184,9,16,7,198,9,8,8]},{"a":33567,"t":"byte","b":[226,4,2,6,240,7,16,6]},{"a":33575,"t":"byte","b":[92,16,152,4,78,8,146,4]},{"a":33583,"t":"byte","b":[136,20,82,13,162,8,14,9]},{"a":33591,"t":"byte","b":[212,18,186,6,248,12,30,8]},{"a":33599,"t":"byte","b":[132,9,0,0,0,0,0,0]},{"a":33607,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33615,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33623,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33631,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33639,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33647,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33655,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33663,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33671,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33679,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33687,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33695,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33703,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33711,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33719,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33727,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33735,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33743,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33751,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33759,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33767,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33775,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33783,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33791,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33799,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33807,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33815,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33823,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33831,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33839,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33847,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33855,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33863,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33871,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33879,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":33887,"t":"byte","b":[0,0,0,0,0,224,0]},{"a":33894,"l":"callback_8466","c":"Tail-call stub stored as the callback word at $8104. It transfers to restore_native_frame_and_enter_vm_impl at $9348 and therefore does not return through this three-byte stub. The two bytes at $8464-$8465 belong to the preceding data record, not this instruction. Assumptions: Reached only through the callback word stored at $8104, so the caller's return address must be on the stack -- this is a JMP and $9348 immediately discards two stack bytes of its own, so the calling convention must be exactly the one $9348 expects. The two bytes at $8464-$8465 belong to the preceding data record and must never be executed. Hardware: Touches no hardware: a single JMP to $9348. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to restore_native_frame_and_enter_vm_impl, whose inputs apply unchanged. Outputs: no memory write of its own; the effect is the transfer of control to restore_native_frame_and_enter_vm_impl with the register state established above. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[76,72,147],"m":"jmp","oa":37704,"o":"restore_native_frame_and_enter_vm_impl"},{"a":33897,"l":"personality_text_line_8469","c":"Resident zero-terminated PETSCII/ASCII-compatible text pool containing personality questionnaire statements, phase-of-life labels, title credits, instructions and new/resume/profile menu text. Embedded zero bytes split display lines and strings. This is active game content needed by a remake, not prior-phase residue.","t":"byte","b":[73,32,119,105,108,108,32,112]},{"a":33905,"t":"byte","b":[114,111,98,97,98,108,121,32]},{"a":33913,"t":"byte","b":[116,114,121,32,116,111,32,97]},{"a":33921,"t":"byte","b":[110,115,119,101,114,0]},{"a":33927,"l":"personality_text_line_8487","c":"Zero-terminated text record personality_text_line_8487, 25 content bytes plus terminator at $84A0: 'these questions honestly.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[116,104,101,115,101,32,113,117]},{"a":33935,"t":"byte","b":[101,115,116,105,111,110,115,32]},{"a":33943,"t":"byte","b":[104,111,110,101,115,116,108,121]},{"a":33951,"t":"byte","b":[46,0]},{"a":33953,"l":"personality_text_line_84a1","t":"byte","b":[0]},{"a":33954,"l":"personality_text_line_84a2","c":"Zero-terminated text record personality_text_line_84a2, 29 content bytes plus terminator at $84BF: 'I am likely to speak whatever'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,97,109,32,108,105,107]},{"a":33962,"t":"byte","b":[101,108,121,32,116,111,32,115]},{"a":33970,"t":"byte","b":[112,101,97,107,32,119,104,97]},{"a":33978,"t":"byte","b":[116,101,118,101,114,0]},{"a":33984,"l":"personality_text_line_84c0","c":"Zero-terminated text record personality_text_line_84c0, 14 content bytes plus terminator at $84CE: 'comes to mind.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[99,111,109,101,115,32,116,111]},{"a":33992,"t":"byte","b":[32,109,105,110,100,46,0]},{"a":33999,"l":"personality_text_line_84cf","t":"byte","b":[0]},{"a":34000,"l":"personality_text_line_84d0","c":"Zero-terminated text record personality_text_line_84d0, 30 content bytes plus terminator at $84EE: 'I am a light sleeper who stirs'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,97,109,32,97,32,108]},{"a":34008,"t":"byte","b":[105,103,104,116]},{"a":34012,"l":"j_84DC","t":"byte","b":[32,115,108,101,101,112,101,114],"x":[46002]},{"a":34020,"t":"byte","b":[32,119,104,111,32,115,116,105]},{"a":34028,"t":"byte","b":[114,115,0]},{"a":34031,"l":"personality_text_line_84ef","c":"Zero-terminated text record personality_text_line_84ef, 28 content bytes plus terminator at $850B: 'at even the slightest sound.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[97,116,32,101,118,101,110,32]},{"a":34039,"t":"byte","b":[116,104,101,32,115,108,105,103]},{"a":34047,"t":"byte","b":[104,116,101,115,116,32,115,111]},{"a":34055,"t":"byte","b":[117,110,100,46,0]},{"a":34060,"l":"personality_text_line_850c","t":"byte","b":[0]},{"a":34061,"l":"personality_text_line_850d","c":"Zero-terminated text record personality_text_line_850d, 17 content bytes plus terminator at $851E: 'Revenge is sweet.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[82,101,118,101,110,103,101,32]},{"a":34069,"t":"byte","b":[105,115,32,115,119,101,101,116]},{"a":34077,"t":"byte","b":[46,0]},{"a":34079,"l":"personality_text_line_851f","t":"byte","b":[0]},{"a":34080,"l":"personality_text_line_8520","t":"byte","b":[0]},{"a":34081,"l":"personality_text_line_8521","c":"Zero-terminated text record personality_text_line_8521, 25 content bytes plus terminator at $853A: 'I often feel slow, tired,'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,111,102,116,101,110,32]},{"a":34089,"t":"byte","b":[102,101,101,108,32,115,108,111]},{"a":34097,"t":"byte","b":[119,44,32,116,105,114,101,100]},{"a":34105,"t":"byte","b":[44,0]},{"a":34107,"l":"personality_text_line_853b","c":"Zero-terminated text record personality_text_line_853b, 22 content bytes plus terminator at $8551: 'and down in the dumps.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[97,110,100,32,100,111,119,110]},{"a":34115,"t":"byte","b":[32,105,110,32,116,104,101,32]},{"a":34123,"t":"byte","b":[100,117,109,112,115,46,0]},{"a":34130,"l":"personality_text_line_8552","t":"byte","b":[0]},{"a":34131,"l":"personality_text_line_8553","c":"Zero-terminated text record personality_text_line_8553, 30 content bytes plus terminator at $8571: 'An important part of every job'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[65,110,32,105,109,112,111,114]},{"a":34139,"t":"byte","b":[116,97,110,116,32,112,97,114]},{"a":34147,"t":"byte","b":[116,32,111,102,32,101,118,101]},{"a":34155,"t":"byte","b":[114,121,32,106,111,98,0]},{"a":34162,"l":"personality_text_line_8572","c":"Zero-terminated text record personality_text_line_8572, 26 content bytes plus terminator at $858C: 'is knowing who to impress.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[105,115,32,107,110,111,119,105]},{"a":34170,"t":"byte","b":[110,103,32,119,104,111,32,116]},{"a":34178,"t":"byte","b":[111,32,105,109,112,114,101,115]},{"a":34186,"t":"byte","b":[115,46,0]},{"a":34189,"l":"personality_text_line_858d","t":"byte","b":[0]},{"a":34190,"l":"personality_text_line_858e","c":"Zero-terminated text record personality_text_line_858e, 32 content bytes plus terminator at $85AE: 'I am fascinated by car accidents'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,97,109,32,102,97,115]},{"a":34198,"t":"byte","b":[99,105,110,97,116,101,100,32]},{"a":34206,"t":"byte","b":[98,121,32,99,97,114,32,97]},{"a":34214,"t":"byte","b":[99,99,105,100,101,110,116,115]},{"a":34222,"t":"byte","b":[0]},{"a":34223,"l":"personality_text_line_85af","c":"Zero-terminated text record personality_text_line_85af, 26 content bytes plus terminator at $85C9: 'and other disaster scenes.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[97,110,100,32,111,116,104,101]},{"a":34231,"t":"byte","b":[114,32,100,105,115,97,115,116]},{"a":34239,"t":"byte","b":[101,114,32,115,99,101,110,101]},{"a":34247,"t":"byte","b":[115,46,0]},{"a":34250,"l":"personality_text_line_85ca","t":"byte","b":[0]},{"a":34251,"l":"personality_text_line_85cb","c":"Zero-terminated text record personality_text_line_85cb, 28 content bytes plus terminator at $85E7: 'The people who know me best '. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[84,104,101,32,112,101,111,112]},{"a":34259,"t":"byte","b":[108,101,32,119,104,111,32,107]},{"a":34267,"t":"byte","b":[110,111,119,32,109,101,32,98]},{"a":34275,"t":"byte","b":[101,115,116,32,0]},{"a":34280,"l":"personality_text_line_85e8","c":"Zero-terminated text record personality_text_line_85e8, 20 content bytes plus terminator at $85FC: 'like me as a person.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[108,105,107,101,32,109,101,32]},{"a":34288,"t":"byte","b":[97,115,32,97,32,112,101,114]},{"a":34296,"t":"byte","b":[115,111,110,46,0]},{"a":34301,"l":"personality_text_line_85fd","t":"byte","b":[0]},{"a":34302,"l":"personality_text_line_85fe","c":"Zero-terminated text record personality_text_line_85fe, 27 content bytes plus terminator at $8619: 'I am extremely sensitive to'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,97,109,32,101,120,116]},{"a":34310,"t":"byte","b":[114,101,109,101,108,121,32,115]},{"a":34318,"t":"byte","b":[101,110,115,105,116,105,118,101]},{"a":34326,"t":"byte","b":[32,116,111,0]},{"a":34330,"l":"personality_text_line_861a","c":"Zero-terminated text record personality_text_line_861a, 10 content bytes plus terminator at $8624: 'criticism.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[99,114,105,116,105,99,105,115]},{"a":34338,"t":"byte","b":[109,46,0]},{"a":34341,"l":"personality_text_line_8625","t":"byte","b":[0]},{"a":34342,"l":"personality_text_line_8626","c":"Zero-terminated text record personality_text_line_8626, 33 content bytes plus terminator at $8647: 'I get nervous performing in front'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,103,101,116,32,110,101]},{"a":34350,"t":"byte","b":[114,118,111,117,115,32,112,101]},{"a":34358,"t":"byte","b":[114,102,111,114,109,105,110,103]},{"a":34366,"t":"byte","b":[32,105,110,32,102,114,111,110]},{"a":34374,"t":"byte","b":[116,0]},{"a":34376,"l":"personality_text_line_8648","c":"Zero-terminated text record personality_text_line_8648, 32 content bytes plus terminator at $8668: 'of people, even when the task is'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[111,102,32,112,101,111,112,108]},{"a":34384,"t":"byte","b":[101,44,32,101,118,101,110,32]},{"a":34392,"t":"byte","b":[119,104,101,110,32,116,104,101]},{"a":34400,"t":"byte","b":[32,116,97,115,107,32,105,115]},{"a":34408,"t":"byte","b":[0]},{"a":34409,"l":"personality_text_line_8669","c":"Zero-terminated text record personality_text_line_8669, 26 content bytes plus terminator at $8683: 'something I know by heart.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[115,111,109,101,116,104,105,110]},{"a":34417,"t":"byte","b":[103,32,73,32,107,110,111,119]},{"a":34425,"t":"byte","b":[32,98,121,32,104,101,97,114]},{"a":34433,"t":"byte","b":[116,46,0]},{"a":34436,"l":"personality_text_line_8684","c":"Zero-terminated text record personality_text_line_8684, 25 content bytes plus terminator at $869D: 'The people around me seem'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[84,104,101,32,112,101,111,112]},{"a":34444,"t":"byte","b":[108,101,32,97,114,111,117,110]},{"a":34452,"t":"byte","b":[100,32,109,101,32,115,101,101]},{"a":34460,"t":"byte","b":[109,0]},{"a":34462,"l":"personality_text_line_869e","c":"Zero-terminated text record personality_text_line_869e, 22 content bytes plus terminator at $86B4: 'to be happier than me.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[116,111,32,98,101,32,104,97]},{"a":34470,"t":"byte","b":[112,112,105,101,114,32,116,104]},{"a":34478,"t":"byte","b":[97,110,32,109,101,46,0]},{"a":34485,"l":"personality_text_line_86b5","t":"byte","b":[0]},{"a":34486,"l":"personality_text_line_86b6","c":"Zero-terminated text record personality_text_line_86b6, 30 content bytes plus terminator at $86D4: 'When I see a \"Wet Paint\" sign,'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[87,104,101,110,32,73,32,115]},{"a":34494,"t":"byte","b":[101,101,32,97,32,34,87,101]},{"a":34502,"t":"byte","b":[116,32,80,97,105,110,116,34]},{"a":34510,"t":"byte","b":[32,115,105,103,110,44,0]},{"a":34517,"l":"personality_text_line_86d5","c":"Zero-terminated text record personality_text_line_86d5, 30 content bytes plus terminator at $86F3: 'I always want to touch to find'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,97,108,119,97,121,115]},{"a":34525,"t":"byte","b":[32,119,97,110,116,32,116,111]},{"a":34533,"t":"byte","b":[32,116,111,117,99,104,32,116]},{"a":34541,"t":"byte","b":[111,32,102,105,110,100,0]},{"a":34548,"l":"personality_text_line_86f4","c":"Zero-terminated text record personality_text_line_86f4, 23 content bytes plus terminator at $870B: \"out if it's really wet.\". Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[111,117,116,32,105,102,32,105]},{"a":34556,"t":"byte","b":[116,39,115,32,114,101,97,108]},{"a":34564,"t":"byte","b":[108,121,32,119,101,116,46,0]},{"a":34572,"l":"personality_text_line_870c","c":"Zero-terminated text record personality_text_line_870c, 30 content bytes plus terminator at $872A: 'When I am ill, I become short-'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[87,104,101,110,32,73,32,97]},{"a":34580,"t":"byte","b":[109,32,105,108,108,44,32,73]},{"a":34588,"t":"byte","b":[32,98,101,99,111,109,101,32]},{"a":34596,"t":"byte","b":[115,104,111,114,116,45,0]},{"a":34603,"l":"personality_text_line_872b","c":"Zero-terminated text record personality_text_line_872b, 28 content bytes plus terminator at $8747: 'tempered and snap at people.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[116,101,109,112,101,114,101,100]},{"a":34611,"t":"byte","b":[32,97,110,100,32,115,110,97]},{"a":34619,"t":"byte","b":[112,32,97,116,32,112,101,111]},{"a":34627,"t":"byte","b":[112,108,101,46,0]},{"a":34632,"l":"personality_text_line_8748","t":"byte","b":[0]},{"a":34633,"l":"personality_text_line_8749","c":"Zero-terminated text record personality_text_line_8749, 31 content bytes plus terminator at $8768: 'On important matters, I usually'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[79,110,32,105,109,112,111,114]},{"a":34641,"t":"byte","b":[116,97,110,116,32,109,97,116]},{"a":34649,"t":"byte","b":[116,101,114,115,44,32,73,32]},{"a":34657,"t":"byte","b":[117,115,117,97,108,108,121,0]},{"a":34665,"l":"personality_text_line_8769","c":"Zero-terminated text record personality_text_line_8769, 31 content bytes plus terminator at $8788: \"follow my parents' advice, even\". Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[102,111,108,108,111,119,32,109]},{"a":34673,"t":"byte","b":[121,32,112,97,114,101,110,116]},{"a":34681,"t":"byte","b":[115,39,32,97,100,118,105,99]},{"a":34689,"t":"byte","b":[101,44,32,101,118,101,110,0]},{"a":34697,"l":"personality_text_line_8789","c":"Zero-terminated text record personality_text_line_8789, 24 content bytes plus terminator at $87A1: 'when I disagree with it.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[119,104,101,110,32,73,32,100]},{"a":34705,"t":"byte","b":[105,115,97,103,114,101,101,32]},{"a":34713,"t":"byte","b":[119,105,116,104,32,105,116,46]},{"a":34721,"t":"byte","b":[0]},{"a":34722,"l":"personality_text_line_87a2","c":"Zero-terminated text record personality_text_line_87a2, 32 content bytes plus terminator at $87C2: 'It is possible that we live in a'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,116,32,105,115,32,112,111]},{"a":34730,"t":"byte","b":[115,115,105,98,108,101,32,116]},{"a":34738,"t":"byte","b":[104,97,116,32,119,101,32,108]},{"a":34746,"t":"byte","b":[105,118,101,32,105,110,32,97]},{"a":34754,"t":"byte","b":[0]},{"a":34755,"l":"personality_text_line_87c3","c":"Zero-terminated text record personality_text_line_87c3, 24 content bytes plus terminator at $87DB: 'world where people watch'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[119,111,114,108,100,32,119,104]},{"a":34763,"t":"byte","b":[101,114,101,32,112,101,111,112]},{"a":34771,"t":"byte","b":[108,101,32,119,97,116,99,104]},{"a":34779,"t":"byte","b":[0]},{"a":34780,"l":"personality_text_line_87dc","c":"Zero-terminated text record personality_text_line_87dc, 15 content bytes plus terminator at $87EB: 'our every move.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[111,117,114,32,101,118,101,114]},{"a":34788,"t":"byte","b":[121,32,109,111,118,101,46,0]},{"a":34796,"l":"personality_text_line_87ec","c":"Zero-terminated text record personality_text_line_87ec, 32 content bytes plus terminator at $880C: 'When I am in a quiet place I get'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[87,104,101,110,32,73,32,97]},{"a":34804,"t":"byte","b":[109,32,105,110,32,97,32,113]},{"a":34812,"t":"byte","b":[117,105,101,116,32,112,108,97]},{"a":34820,"t":"byte","b":[99,101,32,73,32,103,101,116]},{"a":34828,"t":"byte","b":[0]},{"a":34829,"l":"personality_text_line_880d","c":"Zero-terminated text record personality_text_line_880d, 19 content bytes plus terminator at $8820: 'the urge to scream.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[116,104,101,32,117,114,103,101]},{"a":34837,"t":"byte","b":[32,116,111,32,115,99,114,101]},{"a":34845,"t":"byte","b":[97,109,46,0]},{"a":34849,"l":"personality_text_line_8821","t":"byte","b":[0]},{"a":34850,"l":"personality_text_line_8822","c":"Zero-terminated text record personality_text_line_8822, 30 content bytes plus terminator at $8840: 'It is O.K. to tell a white lie'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,116,32,105,115,32,79,46]},{"a":34858,"t":"byte","b":[75,46,32,116,111,32,116,101]},{"a":34866,"t":"byte","b":[108,108,32,97,32,119,104,105]},{"a":34874,"t":"byte","b":[116,101,32,108,105,101,0]},{"a":34881,"l":"personality_text_line_8841","c":"Zero-terminated text record personality_text_line_8841, 28 content bytes plus terminator at $885D: 'if it is guaranteed to bring'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[105,102,32,105,116,32,105,115]},{"a":34889,"t":"byte","b":[32,103,117,97,114,97,110,116]},{"a":34897,"t":"byte","b":[101,101,100,32,116,111,32,98]},{"a":34905,"t":"byte","b":[114,105,110,103,0]},{"a":34910,"l":"personality_text_line_885e","c":"Zero-terminated text record personality_text_line_885e, 20 content bytes plus terminator at $8872: 'great personal gain.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[103,114,101,97,116,32,112,101]},{"a":34918,"t":"byte","b":[114,115,111,110,97,108,32,103]},{"a":34926,"t":"byte","b":[97,105,110,46,0]},{"a":34931,"l":"personality_text_line_8873","c":"Zero-terminated text record personality_text_line_8873, 31 content bytes plus terminator at $8892: 'It is often pointless to try to'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,116,32,105,115,32,111,102]},{"a":34939,"t":"byte","b":[116,101,110,32,112,111,105,110]},{"a":34947,"t":"byte","b":[116,108,101,115,115,32,116,111]},{"a":34955,"t":"byte","b":[32,116,114,121,32,116,111,0]},{"a":34963,"l":"personality_text_line_8893","c":"Zero-terminated text record personality_text_line_8893, 29 content bytes plus terminator at $88B0: 'discuss problems with another'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[100,105,115,99,117,115,115,32]},{"a":34971,"t":"byte","b":[112,114,111,98,108,101,109,115]},{"a":34979,"t":"byte","b":[32,119,105,116,104,32,97,110]},{"a":34987,"t":"byte","b":[111,116,104,101,114,0]},{"a":34993,"l":"personality_text_line_88b1","c":"Zero-terminated text record personality_text_line_88b1, 7 content bytes plus terminator at $88B8: 'person.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[112,101,114,115,111,110,46,0]},{"a":35001,"l":"personality_text_line_88b9","c":"Zero-terminated text record personality_text_line_88b9, 24 content bytes plus terminator at $88D1: 'I am easily embarrassed.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,97,109,32,101,97,115]},{"a":35009,"t":"byte","b":[105,108,121,32,101,109,98,97]},{"a":35017,"t":"byte","b":[114,114,97,115,115,101,100,46]},{"a":35025,"t":"byte","b":[0]},{"a":35026,"l":"personality_text_line_88d2","t":"byte","b":[0]},{"a":35027,"l":"personality_text_line_88d3","t":"byte","b":[0]},{"a":35028,"l":"personality_text_line_88d4","c":"Zero-terminated text record personality_text_line_88d4, 27 content bytes plus terminator at $88EF: 'Children should be seen and'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[67,104,105,108,100,114,101,110]},{"a":35036,"t":"byte","b":[32,115,104,111,117,108,100,32]},{"a":35044,"t":"byte","b":[98,101,32,115,101,101,110,32]},{"a":35052,"t":"byte","b":[97,110,100,0]},{"a":35056,"l":"personality_text_line_88f0","c":"Zero-terminated text record personality_text_line_88f0, 10 content bytes plus terminator at $88FA: 'not heard.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[110,111,116,32,104,101,97,114]},{"a":35064,"t":"byte","b":[100,46,0]},{"a":35067,"l":"personality_text_line_88fb","t":"byte","b":[0]},{"a":35068,"l":"personality_text_line_88fc","c":"Zero-terminated text record personality_text_line_88fc, 32 content bytes plus terminator at $891C: 'I find it difficult to break the'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,102,105,110,100,32,105]},{"a":35076,"t":"byte","b":[116,32,100,105,102,102,105,99]},{"a":35084,"t":"byte","b":[117,108,116,32,116,111,32,98]},{"a":35092,"t":"byte","b":[114,101,97,107,32,116,104,101]},{"a":35100,"t":"byte","b":[0]},{"a":35101,"l":"personality_text_line_891d","c":"Zero-terminated text record personality_text_line_891d, 32 content bytes plus terminator at $893D: 'ice in conversations with people'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[105,99,101,32,105,110,32,99]},{"a":35109,"t":"byte","b":[111,110,118,101,114,115,97,116]},{"a":35117,"t":"byte","b":[105,111,110,115,32,119,105,116]},{"a":35125,"t":"byte","b":[104,32,112,101,111,112,108,101]},{"a":35133,"t":"byte","b":[0]},{"a":35134,"l":"personality_text_line_893e","c":"Zero-terminated text record personality_text_line_893e, 14 content bytes plus terminator at $894C: 'I barely know.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,98,97,114,101,108,121]},{"a":35142,"t":"byte","b":[32,107,110,111,119,46,0]},{"a":35149,"l":"personality_text_line_894d","c":"Zero-terminated text record personality_text_line_894d, 32 content bytes plus terminator at $896D: 'My parents were extremely strict'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[77,121,32,112,97,114,101,110]},{"a":35157,"t":"byte","b":[116,115,32,119,101,114,101,32]},{"a":35165,"t":"byte","b":[101,120,116,114,101,109,101,108]},{"a":35173,"t":"byte","b":[121,32,115,116,114,105,99,116]},{"a":35181,"t":"byte","b":[0]},{"a":35182,"l":"personality_text_line_896e","c":"Zero-terminated text record personality_text_line_896e, 16 content bytes plus terminator at $897E: 'disciplinarians.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[100,105,115,99,105,112,108,105]},{"a":35190,"t":"byte","b":[110,97,114,105,97,110,115,46]},{"a":35198,"t":"byte","b":[0]},{"a":35199,"l":"personality_text_line_897f","t":"byte","b":[0]},{"a":35200,"l":"personality_text_line_8980","c":"Zero-terminated text record personality_text_line_8980, 30 content bytes plus terminator at $899E: 'You can usually judge a person'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[89,111,117,32,99,97,110,32]},{"a":35208,"t":"byte","b":[117,115,117,97,108,108,121,32]},{"a":35216,"t":"byte","b":[106,117,100,103,101,32,97,32]},{"a":35224,"t":"byte","b":[112,101,114,115,111,110,0]},{"a":35231,"l":"personality_text_line_899f","c":"Zero-terminated text record personality_text_line_899f, 21 content bytes plus terminator at $89B4: 'by first impressions.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[98,121,32,102,105,114,115,116]},{"a":35239,"t":"byte","b":[32,105,109,112,114,101,115,115]},{"a":35247,"t":"byte","b":[105,111,110,115,46,0]},{"a":35253,"l":"personality_text_line_89b5","t":"byte","b":[0]},{"a":35254,"l":"personality_text_line_89b6","c":"Zero-terminated text record personality_text_line_89b6, 34 content bytes plus terminator at $89D8: 'One way of getting people to treat'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[79,110,101,32,119,97,121,32]},{"a":35262,"t":"byte","b":[111,102,32,103,101,116,116,105]},{"a":35270,"t":"byte","b":[110,103,32,112,101,111,112,108]},{"a":35278,"t":"byte","b":[101,32,116,111,32,116,114,101]},{"a":35286,"t":"byte","b":[97,116,0]},{"a":35289,"l":"personality_text_line_89d9","c":"Zero-terminated text record personality_text_line_89d9, 35 content bytes plus terminator at $89FC: 'you fairly is to take an aggressive'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[121,111,117,32,102,97,105,114]},{"a":35297,"t":"byte","b":[108,121,32,105,115,32,116,111]},{"a":35305,"t":"byte","b":[32,116,97,107,101,32,97,110]},{"a":35313,"t":"byte","b":[32,97,103,103,114,101,115,115]},{"a":35321,"t":"byte","b":[105,118,101,0]},{"a":35325,"l":"personality_text_line_89fd","c":"Zero-terminated text record personality_text_line_89fd, 34 content bytes plus terminator at $8A1F: 'stance and make them win you over.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[115,116,97,110,99,101,32,97]},{"a":35333,"t":"byte","b":[110,100,32,109,97,107,101,32]},{"a":35341,"t":"byte","b":[116,104,101,109,32,119,105,110]},{"a":35349,"t":"byte","b":[32,121,111,117,32,111,118,101]},{"a":35357,"t":"byte","b":[114,46,0]},{"a":35360,"l":"personality_text_line_8a20","c":"Zero-terminated text record personality_text_line_8a20, 31 content bytes plus terminator at $8A3F: 'I think questions like this are'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","t":"byte","b":[73,32,116,104,105,110,107,32]},{"a":35368,"t":"byte","b":[113,117,101,115,116,105,111,110]},{"a":35376,"t":"byte","b":[115,32,108,105,107,101,32,116]},{"a":35384,"t":"byte","b":[104,105,115,32,97,114,101,0]},{"a":35392,"t":"byte","b":[115,116,117,112,105,100,32,97]},{"a":35400,"t":"byte","b":[110,100,32,109,101,97,110,105]},{"a":35408,"t":"byte","b":[110,103,108,101,115,115,46,0]},{"a":35416,"t":"byte","b":[0,32,32,32,32,32,32,32]},{"a":35424,"t":"byte","b":[32,32,32,32,32,32,80,72]},{"a":35432,"t":"byte","b":[65,83,69,83,32,79,70,32]},{"a":35440,"t":"byte","b":[76,73,70,69,0,32,32,32]},{"a":35448,"t":"byte","b":[32,32,32,32,32,32,32,49]},{"a":35456,"t":"byte","b":[58,32,73,110,102,97,110,99]},{"a":35464,"t":"byte","b":[121,0,32,32,32,32,32,32]},{"a":35472,"t":"byte","b":[32,32,32,32,50,58,32,67]},{"a":35480,"t":"byte","b":[104,105,108,100,104,111,111,100]},{"a":35488,"t":"byte","b":[0,32,32,32,32,32,32,32]},{"a":35496,"t":"byte","b":[32,32,32,51,58,32,65,100]},{"a":35504,"t":"byte","b":[111,108,101,115,99,101,110,99]},{"a":35512,"t":"byte","b":[101,0,32,32,32,32,32,32]},{"a":35520,"t":"byte","b":[32,32,32,32,52,58,32,89]},{"a":35528,"t":"byte","b":[111,117,110,103,32,65,100,117]},{"a":35536,"t":"byte","b":[108,116,104,111,111,100,0,32]},{"a":35544,"t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":35552,"t":"byte","b":[32,53,58,32,65,100,117,108]},{"a":35560,"t":"byte","b":[116,104,111,111,100,0,32,32]},{"a":35568,"t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":35576,"t":"byte","b":[54,58,32,77,105,100,100,108]},{"a":35584,"t":"byte","b":[101,32,65,100,117,108,116,104]},{"a":35592,"t":"byte","b":[111,111,100,0,32,32,32,32]},{"a":35600,"t":"byte","b":[32,32,32,32,32,32,55,58]},{"a":35608,"t":"byte","b":[32,79,108,100,32,65,103,101]},{"a":35616,"t":"byte","b":[0,32,32,32,32,32,32,32]},{"a":35624,"t":"byte","b":[32,32,65,67,84,73,86,73]},{"a":35632,"t":"byte","b":[83,73,79,78,32,112,114,101]},{"a":35640,"t":"byte","b":[115,101,110,116,115,0,32,32]},{"a":35648,"t":"byte","b":[32,32,32,32,32,32,32,32]},{"a":35656,"t":"byte","b":[32,65,76,84,69,82,32,69]},{"a":35664,"t":"byte","b":[71,79,32,40,116,109,41,0]},{"a":35672,"t":"byte","b":[32,32,32,32,32,32,68,101]},{"a":35680,"t":"byte","b":[115,105,103,110,101,100,32,97]},{"a":35688,"t":"byte","b":[110,100,32,119,114,105,116,116]},{"a":35696,"t":"byte","b":[101,110,32,98,121,58,0,32]},{"a":35704,"t":"byte","b":[32,32,32,32,32,32,32,80]},{"a":35712,"t":"byte","b":[101,116,101,114,32,74,46,32]},{"a":35720,"t":"byte","b":[70,97,118,97,114,111,44,32]},{"a":35728,"t":"byte","b":[80,104,46,68,0,32,32,32]},{"a":35736,"t":"byte","b":[32,32,32,80,114,111,103,114]},{"a":35744,"t":"byte","b":[97,109,109,105,110,103,32,98]},{"a":35752,"t":"byte","b":[121,58,0,32,32,32,32,32]},{"a":35760,"t":"byte","b":[32,32,32,69,46,67,46,32]},{"a":35768,"t":"byte","b":[72,111,114,118,97,116,104,44]},{"a":35776,"t":"byte","b":[32,85,110,105,77,97,99,32]},{"a":35784,"t":"byte","b":[73,110,99,46,0,32,32,85]},{"a":35792,"t":"byte","b":[115,101,32,116,104,101,32,106]},{"a":35800,"t":"byte","b":[111,121,115,116,105,99,107,32]},{"a":35808,"t":"byte","b":[111,114,32,99,117,114,115,111]},{"a":35816,"t":"byte","b":[114,32,107,101,121,115,32,116]},{"a":35824,"t":"byte","b":[111,0,32,32,109,111,118,101]},{"a":35832,"t":"byte","b":[32,116,104,101,32,99,117,114]},{"a":35840,"t":"byte","b":[115,111,114,32,110,101,120,116]},{"a":35848,"t":"byte","b":[32,116,111,32,97,32,114,101]},{"a":35856,"t":"byte","b":[115,112,111,110,115,101,46,0]},{"a":35864,"t":"byte","b":[32,32,80,114,101,115,115,32]},{"a":35872,"t":"byte","b":[116,104,101,32,102,105,114,101]},{"a":35880,"t":"byte","b":[32,98,117,116,116,111,110,32]},{"a":35888,"t":"byte","b":[111,114,32,82,69,84,85,82]},{"a":35896,"t":"byte","b":[78,32,116,111,0,32,32,115]},{"a":35904,"t":"byte","b":[101,108,101,99,116,32,116,104]},{"a":35912,"t":"byte","b":[97,116,32,114,101,115,112,111]},{"a":35920,"t":"byte","b":[110,115,101,46,0,32,32,32]},{"a":35928,"t":"byte","b":[32,66,69,71,73,78,32,65]},{"a":35936,"t":"byte","b":[32,78,69,87,32,71,65,77]},{"a":35944,"t":"byte","b":[69,0,32,32,32,32,82,69]},{"a":35952,"t":"byte","b":[83,85,77,69,32,65,32,83]},{"a":35960,"t":"byte","b":[65,86,69,68,32,71,65,77]},{"a":35968,"t":"byte","b":[69,0,32,32,67,79,80,89]},{"a":35976,"t":"byte","b":[82,73,71,72,84,32,49,57]},{"a":35984,"t":"byte","b":[56,53,44,32,49,57,56,54]},{"a":35992,"t":"byte","b":[32,65,67,84,73,86,73,83]},{"a":36000,"t":"byte","b":[73,79,78,32,73,78,67,46]},{"a":36008,"t":"byte","b":[0,32,32,32,32,80,69,82]},{"a":36016,"t":"byte","b":[83,79,78,65,76,73,84,89]},{"a":36024,"t":"byte","b":[32,68,69,86,69,76,79,80]},{"a":36032,"t":"byte","b":[77,69,78,84,32,80,82,79]},{"a":36040,"t":"byte","b":[70,73,76,69,0,32,32,32]},{"a":36048,"t":"byte","b":[32,83,69,76,69,67,84,32]},{"a":36056,"t":"byte","b":[77,89,32,79,87,78,32,80]},{"a":36064,"t":"byte","b":[69,82,83,79,78,65,76,73]},{"a":36072,"t":"byte","b":[84,89,0,32,32,32,32,76]},{"a":36080,"t":"byte","b":[69,84,32,67,79,77,80,85]},{"a":36088,"t":"byte","b":[84,69,82,32,83,69,76,69]},{"a":36096,"t":"byte","b":[67,84,32,77,89,32,80,69]},{"a":36104,"t":"byte","b":[82,83,79,78,65,76,73,84]},{"a":36112,"t":"byte","b":[89,0,32,32,32,32,76,69]},{"a":36120,"t":"byte","b":[84,32,67,79,77,80,85,84]},{"a":36128,"t":"byte","b":[69,82,32,83,69,76,69,67]},{"a":36136,"t":"byte","b":[84,32,77,89,32,80,69,82]},{"a":36144,"t":"byte","b":[83,79,78,65,76,73,84,89]},{"a":36152,"t":"byte","b":[0,32,32,32,32,32,32,84]},{"a":36160,"t":"byte","b":[72,69,78,32,76,69,84,32]},{"a":36168,"t":"byte","b":[77,69,32,69,88,65,77,73]},{"a":36176,"t":"byte","b":[78,69,32,79,82,32,69,68]},{"a":36184,"t":"byte","b":[73,84,32,73,84,0]},{"a":36190,"l":"run_new_or_resume_personality_setup","c":"Run new/resume selection, personality mode, questionnaire scoring and starting-stage selection.\nInputs: none.\nOutputs: phase/menu result returned to startup.\nAssumptions: questionnaire, score and menu records are resident.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; 25-byte answer frame, all trait words, strict-parenting flag and selected stage $82BD.\nHardware: SID noise for random profiles; display/input/disk through callees.\nEntry protocol: JSR $70F8; signed frame adjustment -33; bytecode $8D63-$8E10 (66 decoded operations); native calls $4B57, $4EF4, $511C, $8E29, $8FBB, $9323. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"x":[37736],"o":"vm_procedure_call_gateway"},{"a":36193,"l":"vm_frame_adjust_8d5e","c":"Signed frame adjustment -33 for run_new_or_resume_personality_setup at $8D5E, consumed by the $70F8 VM gateway before bytecode begins at $8D63. Run new/resume selection, personality mode, questionnaire scoring and starting-stage selection.","t":"word","b":[223,255],"d":[65503]},{"a":36195,"l":"vm_bytecode_8d5e","c":"Compiled bytecode belonging to run_new_or_resume_personality_setup ($8D5E). Run new/resume selection, personality mode, questionnaire scoring and starting-stage selection. This position is the opcode of push_const_0 at $8D63. The procedure decodes to 66 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include run_modal_selection_dialog, resume_saved_game_menu, edit_or_select_menu_entry, score_personality_questionnaire, run_personality_questionnaire_pages, randomize_questionnaire_answers.","t":"byte","b":[96,142,86,148,172,87,75,174]},{"a":36203,"t":"byte","b":[4,216,133,141,172,244,78,43]},{"a":36211,"t":"byte","b":[214,120,141,11,207,217,2,0]},{"a":36219,"t":"byte","b":[1,0,118,141,2,0,118,141]},{"a":36227,"t":"byte","b":[133,141,141,16,142,203,130,142]},{"a":36235,"t":"byte","b":[17,142,172,28,81,174,6,96]},{"a":36243,"t":"byte","b":[142,146,148,172,87,75,174,4]},{"a":36251,"t":"byte","b":[214,241,141,96,222,223,255,179]},{"a":36259,"t":"byte","b":[142,152,147,172,187,143,174,6]},{"a":36267,"t":"byte","b":[222,223,255,179,172,41,142,174]},{"a":36275,"t":"byte","b":[2,214,2,142,222,223,255,179]},{"a":36283,"t":"byte","b":[172,35,147,174,2,222,223,255]},{"a":36291,"t":"byte","b":[179,172,41,142,174,2,214,2]},{"a":36299,"t":"byte","b":[142,222,223,255,179,172,35,147]},{"a":36307,"t":"byte","b":[174,2,97,222,223,255,179,142]},{"a":36315,"t":"byte","b":[152,147,172,187,143,174,6,222]},{"a":36323,"t":"byte","b":[223,255,179,172,41,142,174,2]},{"a":36331,"t":"byte","b":[214,2,142,214,2,142,217,3]},{"a":36339,"t":"byte","b":[0,0,0,158,141,1,0,183]},{"a":36347,"t":"byte","b":[141,2,0,204,141,238,141,101]},{"a":36355,"t":"byte","b":[142,46,148,172,87,75,174,4]},{"a":36363,"t":"byte","b":[208,168,189,130,64,207]},{"a":36369,"l":"player_name_prompt_text","c":"Zero-terminated first-interaction prompt 'Please enter your name:'. The authoritative snapshot was captured while this prompt was awaiting input.","t":"byte","b":[80,108,101,97,115,101,32,101]},{"a":36377,"t":"byte","b":[110,116,101,114,32,121,111,117]},{"a":36385,"t":"byte","b":[114,32,110,97,109,101,58,0]},{"a":36393,"l":"ScorePersonalityQuestionnaire","c":"Compiled VM procedure scoring 25 answers from pointer at frame +8. Initializes twelve traits $7F40-$7F57 to 50 and state word 49 to zero, then chooses 25-byte records from TRUE table $94AE or FALSE table $971F in question order. Each record has count plus {operation,state,magnitude} triples: 0 assigns, 1 adds floor((100-old)*magnitude/100), 2 subtracts floor(old*magnitude/100). All 50 records use only these operations; codes 3/4 also implement direct addition but are not present in these tables. Sixty full native executions match an independent table interpreter, including all TRUE/FALSE, every one-answer flip on both baselines, five mixed profiles, and invalid all-0/3/255 inputs (all choose FALSE). Repeated inputs produce the same scores in this routine. A later stage may still change them.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":36396,"l":"vm_frame_adjust_8e29","c":"Signed frame adjustment -12 for score_personality_questionnaire at $8E29, consumed by the $70F8 VM gateway before bytecode begins at $8E2E. Score 25 TRUE/FALSE answers using paired fixed-size operation records.","t":"word","b":[244,255],"d":[65524]},{"a":36398,"l":"vm_bytecode_8e29","c":"Compiled bytecode belonging to score_personality_questionnaire ($8E29). Score 25 TRUE/FALSE answers using paired fixed-size operation records. This position is the opcode of load_primary_immediate_signed_byte at $8E2E. The procedure decodes to 261 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[137,50,168,70,127,137,50,168]},{"a":36406,"t":"byte","b":[80,127,137,50,168,78,127,137]},{"a":36414,"t":"byte","b":[50,168,86,127,137,50,168,66]},{"a":36422,"t":"byte","b":[127,137,50,168,84,127,137,50]},{"a":36430,"t":"byte","b":[168,64,127,137,50,168,72,127]},{"a":36438,"t":"byte","b":[137,50,168,82,127,137,50,168]},{"a":36446,"t":"byte","b":[68,127,137,50,168,74,127,137]},{"a":36454,"t":"byte","b":[50,168,76,127,64,168,162,127]},{"a":36462,"t":"byte","b":[64,39,214,119,142,7,208,39]},{"a":36470,"t":"byte","b":[209,7,139,25,194,216,186,143]},{"a":36478,"t":"byte","b":[12,23,187,211,81,192,216,148]},{"a":36486,"t":"byte","b":[142,7,139,25,181,140,174,148]},{"a":36494,"t":"byte","b":[187,211,38,214,158,142,7,139]},{"a":36502,"t":"byte","b":[25,181,140,31,151,187,211,38]},{"a":36510,"t":"byte","b":[64,40,214,167,142,8,208,40]},{"a":36518,"t":"byte","b":[209,8,22,194,216,183,143,12]},{"a":36526,"t":"byte","b":[23,187,211,81,192,216,236,142]},{"a":36534,"t":"byte","b":[8,83,181,179,7,139,25,181]},{"a":36542,"t":"byte","b":[180,187,140,174,148,187,208,211]},{"a":36550,"t":"byte","b":[43,8,83,181,179,7,139,25]},{"a":36558,"t":"byte","b":[181,180,187,140,174,148,187,114]},{"a":36566,"t":"byte","b":[211,42,8,83,181,179,7,139]},{"a":36574,"t":"byte","b":[25,181,180,187,140,174,148,187]},{"a":36582,"t":"byte","b":[115,211,41,214,31,143,8,83]},{"a":36590,"t":"byte","b":[181,179,7,139,25,181,180,187]},{"a":36598,"t":"byte","b":[140,31,151,187,208,211,43,8]},{"a":36606,"t":"byte","b":[83,181,179,7,139,25,181,180]},{"a":36614,"t":"byte","b":[187,140,31,151,187,114,211,42]},{"a":36622,"t":"byte","b":[8,83,181,179,7,139,25,181]},{"a":36630,"t":"byte","b":[180,187,140,31,151,187,115,211]},{"a":36638,"t":"byte","b":[41,11,214,163,143,10,210,140]},{"a":36646,"t":"byte","b":[64,127,187,179,9,180,177,214]},{"a":36654,"t":"byte","b":[180,143,10,210,140,64,127,187]},{"a":36662,"t":"byte","b":[179,10,210,140,64,127,187,176]},{"a":36670,"t":"byte","b":[179,10,210,140,64,127,187,176]},{"a":36678,"t":"byte","b":[179,137,100,180,188,25,181,139]},{"a":36686,"t":"byte","b":[100,182,180,187,180,177,214,180]},{"a":36694,"t":"byte","b":[143,10,210,140,64,127,187,179]},{"a":36702,"t":"byte","b":[10,210,140,64,127,187,176,25]},{"a":36710,"t":"byte","b":[181,139,100,182,179,10,210,140]},{"a":36718,"t":"byte","b":[64,127,187,176,180,188,180,177]},{"a":36726,"t":"byte","b":[214,180,143,10,210,140,64,127]},{"a":36734,"t":"byte","b":[187,179,10,210,140,64,127,187]},{"a":36742,"t":"byte","b":[176,25,187,180,177,214,180,143]},{"a":36750,"t":"byte","b":[10,210,140,64,127,187,179,10]},{"a":36758,"t":"byte","b":[210,140,64,127,187,176,25,187]},{"a":36766,"t":"byte","b":[180,177,214,180,143,213,0,0]},{"a":36774,"t":"byte","b":[5,0,180,143,35,143,48,143]},{"a":36782,"t":"byte","b":[87,143,121,143,142,143,214,163]},{"a":36790,"t":"byte","b":[142,214,115,142,207]},{"a":36795,"l":"run_personality_questionnaire_pages","c":"Render seven questionnaire pages and reject completion while any answer is unset.\nInputs: +8 three-line pointer table; +10 answer buffer; +12 clear/preserve flag.\nOutputs: returns after all 25 answers are nonzero.\nAssumptions: 75 pointers and 25 answer bytes are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; clears/edits answer bytes and page cursor.\nHardware: display/input through $9078.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $8FC0-$9077 (114 decoded operations); native calls $9078. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":36798,"l":"vm_frame_adjust_8fbb","c":"Signed frame adjustment -2 for run_personality_questionnaire_pages at $8FBB, consumed by the $70F8 VM gateway before bytecode begins at $8FC0. Render seven questionnaire pages and reject completion while any answer is unset.","t":"word","b":[254,255],"d":[65534]},{"a":36800,"l":"vm_bytecode_8fbb","c":"Compiled bytecode belonging to run_personality_questionnaire_pages ($8FBB). Render seven questionnaire pages and reject completion while any answer is unset. This position is the opcode of load_primary_local_+12 at $8FC0. The procedure decodes to 114 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include present_and_edit_questionnaire_page.","t":"byte","b":[14,215,222,143,64,43,214,205]},{"a":36808,"t":"byte","b":[143,11,208,43,209,11,139,25]},{"a":36816,"t":"byte","b":[194,216,222,143,13,27,187,179]},{"a":36824,"t":"byte","b":[64,180,212,214,201,143,61,60]},{"a":36832,"t":"byte","b":[100,96,172,120,144,174,8,61]},{"a":36840,"t":"byte","b":[60,100,100,172,120,144,174,8]},{"a":36848,"t":"byte","b":[216,222,143,61,60,100,104,172]},{"a":36856,"t":"byte","b":[120,144,174,8,216,231,143,61]},{"a":36864,"t":"byte","b":[60,100,108,172,120,144,174,8]},{"a":36872,"t":"byte","b":[216,243,143,61,60,100,141,16]},{"a":36880,"t":"byte","b":[172,120,144,174,8,216,255,143]},{"a":36888,"t":"byte","b":[61,60,100,141,20,172,120,144]},{"a":36896,"t":"byte","b":[174,8,216,11,144,61,60,97]},{"a":36904,"t":"byte","b":[141,24,172,120,144,174,8,216]},{"a":36912,"t":"byte","b":[24,144,64,43,13,27,187,211]},{"a":36920,"t":"byte","b":[216,73,144,11,139,25,194,216]},{"a":36928,"t":"byte","b":[73,144,11,208,43,209,214,52]},{"a":36936,"t":"byte","b":[144,11,84,194,215,222,143,11]},{"a":36944,"t":"byte","b":[88,194,215,231,143,11,92,194]},{"a":36952,"t":"byte","b":[215,243,143,11,139,16,194,215]},{"a":36960,"t":"byte","b":[255,143,11,139,20,194,215,11]},{"a":36968,"t":"byte","b":[144,11,139,24,194,215,24,144]},{"a":36976,"t":"byte","b":[11,139,25,194,215,37,144,207]},{"a":36984,"l":"present_and_edit_questionnaire_page","c":"Present up to four three-line questions and edit TRUE/FALSE selections.\nInputs: +8 starting question; +10 count; +12 line table; +14 answer buffer.\nOutputs: page navigation result.\nAssumptions: question indices and pointers are in range.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; answer bytes, screen, glyph and selection state.\nHardware: VIC-II/CIA/KERNAL through display/input helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -36; bytecode $907D-$92F1 (409 decoded operations); native calls $475D, $4CCC, $4CDE, $545B, $54BF, $56FF. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":36987,"l":"vm_frame_adjust_9078","c":"Signed frame adjustment -36 for present_and_edit_questionnaire_page at $9078, consumed by the $70F8 VM gateway before bytecode begins at $907D. Present up to four three-line questions and edit TRUE/FALSE selections.","t":"word","b":[220,255],"d":[65500]},{"a":36989,"l":"vm_bytecode_9078","c":"Compiled bytecode belonging to present_and_edit_questionnaire_page ($9078). Present up to four three-line questions and edit TRUE/FALSE selections. This position is the opcode of call_native at $907D. The procedure decodes to 409 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_rom_glyph_to_screen_charset, clear_hires_bitmap, install_dialog_glyph_range, delay_scaled_iterations, read_pointer_device_position, read_normalized_input.","t":"byte","b":[172,204,76,65,34,13,208,210]},{"a":36997,"t":"byte","b":[223,236,255,187,179,137,23,180]},{"a":37005,"t":"byte","b":[177,65,133,222,67,33,12,216]},{"a":37013,"t":"byte","b":[161,144,97,101,142,242,146,172]},{"a":37021,"t":"byte","b":[222,76,174,6,12,133,226,214]},{"a":37029,"t":"byte","b":[173,144,129,226,208,133,226,209]},{"a":37037,"t":"byte","b":[12,29,187,179,129,226,180,194]},{"a":37045,"t":"byte","b":[216,93,145,1,208,33,209,179]},{"a":37053,"t":"byte","b":[99,129,226,86,181,30,187,176]},{"a":37061,"t":"byte","b":[179,172,222,76,174,6,129,226]},{"a":37069,"t":"byte","b":[83,181,208,210,30,187,176,211]},{"a":37077,"t":"byte","b":[216,237,144,1,208,33,209,179]},{"a":37085,"t":"byte","b":[99,129,226,83,181,208,210,30]},{"a":37093,"t":"byte","b":[187,176,179,172,222,76,174,6]},{"a":37101,"t":"byte","b":[129,226,83,181,114,210,30,187]},{"a":37109,"t":"byte","b":[176,211,216,15,145,1,208,33]},{"a":37117,"t":"byte","b":[209,179,99,129,226,83,181,114]},{"a":37125,"t":"byte","b":[210,30,187,176,179,172,222,76]},{"a":37133,"t":"byte","b":[174,6,49,101,142,249,146,172]},{"a":37141,"t":"byte","b":[222,76,174,6,15,131,226,187]},{"a":37149,"t":"byte","b":[211,81,192,216,45,145,49,99]},{"a":37157,"t":"byte","b":[142,11,147,172,222,76,174,6]},{"a":37165,"t":"byte","b":[15,131,226,187,211,82,192,216]},{"a":37173,"t":"byte","b":[65,145,49,111,142,13,147,172]},{"a":37181,"t":"byte","b":[222,76,174,6,129,222,210,223]},{"a":37189,"t":"byte","b":[236,255,187,179,1,180,177,129]},{"a":37197,"t":"byte","b":[222,208,133,222,209,1,208,33]},{"a":37205,"t":"byte","b":[209,1,208,33,209,214,167,144]},{"a":37213,"t":"byte","b":[12,29,187,139,25,193,216,116]},{"a":37221,"t":"byte","b":[145,141,23,101,142,15,147,172]},{"a":37229,"t":"byte","b":[222,76,174,6,214,127,145,141]},{"a":37237,"t":"byte","b":[23,101,142,24,147,172,222,76]},{"a":37245,"t":"byte","b":[174,6,12,133,226,65,133,224]},{"a":37253,"t":"byte","b":[129,226,208,133,226,209,31,187]},{"a":37261,"t":"byte","b":[211,216,159,145,129,224,208,133]},{"a":37269,"t":"byte","b":[224,209,29,195,216,159,145,214]},{"a":37277,"t":"byte","b":[133,145,129,224,29,196,216,169]},{"a":37285,"t":"byte","b":[145,65,133,224,129,224,210,223]},{"a":37293,"t":"byte","b":[236,255,187,176,179,100,172,191]},{"a":37301,"t":"byte","b":[84,174,4,129,224,33,68,32]},{"a":37309,"t":"byte","b":[129,224,133,230,68,133,228,142]},{"a":37317,"t":"byte","b":[232,3,172,91,84,174,2,65]},{"a":37325,"t":"byte","b":[216,241,146,172,255,86,133,220]},{"a":37333,"t":"byte","b":[12,215,237,145,129,220,81,192]},{"a":37341,"t":"byte","b":[216,234,145,1,81,196,216,234]},{"a":37349,"t":"byte","b":[145,1,209,33,208,214,254,145]},{"a":37357,"t":"byte","b":[129,220,81,192,216,254,145,1]},{"a":37365,"t":"byte","b":[80,196,216,254,145,1,209,33]},{"a":37373,"t":"byte","b":[208,129,220,82,192,216,16,146]},{"a":37381,"t":"byte","b":[1,131,222,194,216,16,146,1]},{"a":37389,"t":"byte","b":[208,33,209,129,220,84,192,216]},{"a":37397,"t":"byte","b":[25,146,68,32,129,220,88,192]},{"a":37405,"t":"byte","b":[216,35,146,137,16,32,1,216]},{"a":37413,"t":"byte","b":[46,146,1,131,222,192,216,48]},{"a":37421,"t":"byte","b":[146,68,32,129,228,16,193,215]},{"a":37429,"t":"byte","b":[62,146,129,230,17,193,216,90]},{"a":37437,"t":"byte","b":[146,1,210,223,236,255,187,176]},{"a":37445,"t":"byte","b":[179,48,172,191,84,174,4,0]},{"a":37453,"t":"byte","b":[133,228,1,133,230,142,136,19]},{"a":37461,"t":"byte","b":[172,91,84,174,2,129,220,139]},{"a":37469,"t":"byte","b":[16,218,216,238,146,1,215,104]},{"a":37477,"t":"byte","b":[146,64,207,1,131,222,192,216]},{"a":37485,"t":"byte","b":[113,146,65,207,1,210,223,236]},{"a":37493,"t":"byte","b":[255,187,176,179,99,141,32,172]},{"a":37501,"t":"byte","b":[93,71,174,6,1,210,223,236]},{"a":37509,"t":"byte","b":[255,187,176,179,111,141,32,172]},{"a":37517,"t":"byte","b":[93,71,174,6,0,84,192,216]},{"a":37525,"t":"byte","b":[177,146,15,28,187,17,187,209]},{"a":37533,"t":"byte","b":[179,65,180,212,1,210,223,236]},{"a":37541,"t":"byte","b":[255,187,176,179,99,141,42,172]},{"a":37549,"t":"byte","b":[93,71,174,6,0,139,16,192]},{"a":37557,"t":"byte","b":[216,210,146,15,28,187,17,187]},{"a":37565,"t":"byte","b":[209,179,66,180,212,1,210,223]},{"a":37573,"t":"byte","b":[236,255,187,176,179,111,141,42]},{"a":37581,"t":"byte","b":[172,93,71,174,6,68,32,1]},{"a":37589,"t":"byte","b":[208,33,209,1,210,223,236,255]},{"a":37597,"t":"byte","b":[187,176,179,100,172,191,84,174]},{"a":37605,"t":"byte","b":[4,142,136,19,172,91,84,174]},{"a":37613,"t":"byte","b":[2,214,204,145,207]},{"a":37618,"l":"questionnaire_review_begin_text_pool","c":"Zero-terminated questionnaire/menu labels: REVIEW; TRUE        FALSE; two '*' markers; CONTINUE; BEGIN GAME.","t":"byte","b":[82,69,86,73,69,87,0,84]},{"a":37626,"t":"byte","b":[82,85,69,32,32,32,32,32]},{"a":37634,"t":"byte","b":[32,32,32,70,65,76,83,69]},{"a":37642,"t":"byte","b":[0,42,0,42,0,67,79,78]},{"a":37650,"t":"byte","b":[84,73,78,85,69,0,66,69]},{"a":37658,"t":"byte","b":[71,73,78,32,71,65,77,69]},{"a":37666,"t":"byte","b":[0]},{"a":37667,"l":"randomize_questionnaire_answers","c":"Fill all 25 answer bytes with independently sampled TRUE/FALSE values.\nInputs: +8 points to 25 answer bytes.\nOutputs: buffer filled with 1 or 2.\nAssumptions: SID voice 3 is configured as a usable noise source.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; 25-byte answer buffer.\nHardware: reads SID oscillator 3 output $D41B.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $9328-$9347 (23 decoded operations); native calls $4697. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":37670,"l":"vm_frame_adjust_9323","c":"Signed frame adjustment -2 for randomize_questionnaire_answers at $9323, consumed by the $70F8 VM gateway before bytecode begins at $9328. Fill all 25 answer bytes with independently sampled TRUE/FALSE values.","t":"word","b":[254,255],"d":[65534]},{"a":37672,"l":"vm_bytecode_9323","c":"Compiled bytecode belonging to randomize_questionnaire_answers ($9323). Fill all 25 answer bytes with independently sampled TRUE/FALSE values. This position is the opcode of load_primary_const_0 at $9328. The procedure decodes to 23 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include read_sid_voice3_noise.","t":"byte","b":[64,43,214,49,147,11,208,43]},{"a":37680,"t":"byte","b":[209,11,139,25,194,216,71,147]},{"a":37688,"t":"byte","b":[12,27,187,179,172,151,70,81]},{"a":37696,"t":"byte","b":[218,208,180,212,214,45,147,207]},{"a":37704,"l":"restore_native_frame_and_enter_vm_impl","c":"Discard the immediate native caller return, restore a saved VM/native frame, and enter VM procedure $8D5E using the restored native return. Inputs: $06/$07 points to an eight-byte saved frame whose bytes restore zero-page $02-$09. Operation: saves the old frame pointer to $9990/$9991 and VM secondary $0E/$0F, copies the frame bytes back to $02-$09, pushes restored native return $02/$03 on the hardware stack, then jumps to vm_proc_8d5e. Outputs are defined by that VM procedure; this path does not return to its direct caller. Assumptions: $0E/$0F must address an eight-byte saved frame whose bytes restore zero page $02-$09, and two return addresses must be on the stack because the routine pulls two bytes before doing anything. $9990/$9991 must be free to receive the outgoing frame pointer, and the restored $02/$03 must be a valid native return, since it is pushed as the return address for VM procedure $8D5E. Clobbers A,Y, stack and VM frame/register state. Hardware: Touches no hardware: hardware-stack and zero-page frame manipulation followed by a JMP into a VM procedure. Outputs: writes saved_vm_frame_ptr, vm_secondary_value_b0, saved_vm_frame_ptr_hi, vm_secondary_value_b1, $02,Y; control then leaves through run_new_or_resume_personality_setup. Clobbers: A, Y and the processor flags; writes the locations named under Outputs; uses the 6502 stack (2 push, 2 pull in this body).","t":"code","b":[104],"m":"pla","x":[33894]},{"a":37705,"t":"code","b":[104],"m":"pla"},{"a":37706,"t":"code","b":[165,6],"m":"lda","oa":6,"o":"vm_frame_ptr_lo"},{"a":37708,"t":"code","b":[141,144,153],"m":"sta","oa":39312,"o":"saved_vm_frame_ptr"},{"a":37711,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":37713,"t":"code","b":[165,7],"m":"lda","oa":7,"o":"vm_frame_ptr_hi"},{"a":37715,"t":"code","b":[141,145,153],"m":"sta","oa":39313,"o":"saved_vm_frame_pointer_high"},{"a":37718,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":37720,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":37722,"l":"LAB_935a","t":"code","b":[177,14],"m":"lda","oa":14,"x":[37728],"o":"(vm_secondary_value_b0),y"},{"a":37724,"t":"code","b":[153,2,0],"m":"sta","oa":2,"o":"shared_scratch_02_lo,y"},{"a":37727,"t":"code","b":[136],"m":"dey"},{"a":37728,"t":"code","b":[16,248],"m":"bpl","oa":37722,"o":"LAB_935a"},{"a":37730,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":37732,"t":"code","b":[72],"m":"pha"},{"a":37733,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":37735,"t":"code","b":[72],"m":"pha"},{"a":37736,"t":"code","b":[76,94,141],"m":"jmp","oa":36190,"o":"run_new_or_resume_personality_setup"},{"a":37739,"l":"restore_saved_native_frame_and_return_vm_value","c":"Discard the immediate caller return, recover a VM result, restore the previously saved native frame, and resume its return address. Input: VM stack pointer $04/$05 addresses a two-byte result; $9990/$9991 holds the saved frame pointer written by $9348. Operation: copies the result to VM primary $0A/$0B, restores frame bytes to $02-$09, increments restored native return $02/$03, sets X=0, and jumps indirectly through it. Output: primary contains the result and the older native/VM context is active. Assumptions: Two return bytes must be on the stack for the initial double PLA, $04/$05 must address a two-byte result on the VM expression stack, and $9990/$9991 must still hold the frame pointer written by $9348 -- this routine is only valid as that routine's counterpart. The restored $02/$03 is incremented before the indirect jump, so the saved value must be a JSR-style return address one byte short of the resume point. Clobbers A,X,Y, stack and frame/register state. This is the complementary return path for restore_native_frame_and_enter_vm_impl. Hardware: Touches no hardware: hardware-stack and zero-page manipulation ending in JMP ($02). Clobbers: A, X, Y and the processor flags; writes vm_primary_value_b0, vm_primary_value_b1, vm_secondary_value_b0, vm_secondary_value_b1, $02,Y, shared_scratch_02_lo, shared_scratch_02_hi; uses the 6502 stack (0 push, 2 pull in this body).","t":"code","b":[104],"m":"pla"},{"a":37740,"t":"code","b":[104],"m":"pla"},{"a":37741,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":37743,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":37745,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":37747,"t":"code","b":[200],"m":"iny"},{"a":37748,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":37750,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":37752,"t":"code","b":[173,144,153],"m":"lda","oa":39312,"o":"saved_vm_frame_ptr"},{"a":37755,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":37757,"t":"code","b":[173,145,153],"m":"lda","oa":39313,"o":"saved_vm_frame_pointer_high"},{"a":37760,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":37762,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":37764,"l":"LAB_9384","t":"code","b":[177,14],"m":"lda","oa":14,"x":[37770],"o":"(vm_secondary_value_b0),y"},{"a":37766,"t":"code","b":[153,2,0],"m":"sta","oa":2,"o":"shared_scratch_02_lo,y"},{"a":37769,"t":"code","b":[136],"m":"dey"},{"a":37770,"t":"code","b":[16,248],"m":"bpl","oa":37764,"o":"LAB_9384"},{"a":37772,"t":"code","b":[230,2],"m":"inc","oa":2,"o":"shared_scratch_02_lo"},{"a":37774,"t":"code","b":[208,2],"m":"bne","oa":37778,"o":"LAB_9392"},{"a":37776,"t":"code","b":[230,3],"m":"inc","oa":3,"o":"shared_scratch_02_hi"},{"a":37778,"l":"LAB_9392","t":"code","b":[162,0],"m":"ldx","x":[37774],"o":"#$00"},{"a":37780,"t":"code","b":[108,2,0],"m":"jmp","oa":2,"o":"(shared_scratch_02_lo)"},{"a":37783,"l":"question_line_pointer_alignment_padding","c":"One zero alignment byte after native JMP ($0002) at $9394-$9396 and before the even-aligned question pointer table. No code reads it as a count or sentinel.","t":"byte","b":[0]},{"a":37784,"l":"personality_question_line_ptrs_25x3","c":"Seventy-five little-endian pointers: 25 personality questions times three display lines. $9078 indexes question*6, always renders line 1 and suppresses line 2/3 when the pointed string is empty. The final question pointers are $9428/$942A/$942C.","t":"word","b":[105,132,135,132,161,132,162,132],"d":[33897,33927,33953,33954]},{"a":37792,"t":"word","b":[192,132,207,132,208,132,239,132],"d":[33984,33999,34000,34031]},{"a":37800,"t":"word","b":[12,133,13,133,31,133,32,133],"d":[34060,34061,34079,34080]},{"a":37808,"t":"word","b":[33,133,59,133,82,133,83,133],"d":[34081,34107,34130,34131]},{"a":37816,"t":"word","b":[114,133,141,133,142,133,175,133],"d":[34162,34189,34190,34223]},{"a":37824,"t":"word","b":[202,133,203,133,232,133,253,133],"d":[34250,34251,34280,34301]},{"a":37832,"t":"word","b":[254,133,26,134,37,134,38,134],"d":[34302,34330,34341,34342]},{"a":37840,"t":"word","b":[72,134,105,134,132,134,158,134],"d":[34376,34409,34436,34462]},{"a":37848,"t":"word","b":[181,134,182,134,213,134,244,134],"d":[34485,34486,34517,34548]},{"a":37856,"t":"word","b":[12,135,43,135,72,135,73,135],"d":[34572,34603,34632,34633]},{"a":37864,"t":"word","b":[105,135,137,135,162,135,195,135],"d":[34665,34697,34722,34755]},{"a":37872,"t":"word","b":[220,135,236,135,13,136,33,136],"d":[34780,34796,34829,34849]},{"a":37880,"t":"word","b":[34,136,65,136,94,136,115,136],"d":[34850,34881,34910,34931]},{"a":37888,"t":"word","b":[147,136,177,136,185,136,210,136],"d":[34963,34993,35001,35026]},{"a":37896,"t":"word","b":[211,136,212,136,240,136,251,136],"d":[35027,35028,35056,35067]},{"a":37904,"t":"word","b":[252,136,29,137,62,137,77,137],"d":[35068,35101,35134,35149]},{"a":37912,"t":"word","b":[110,137,127,137,128,137,159,137],"d":[35182,35199,35200,35231]},{"a":37920,"t":"word","b":[181,137,182,137,217,137,253,137],"d":[35253,35254,35289,35325]},{"a":37928,"t":"word","b":[32,138],"d":[35360]},{"a":37930,"t":"gap","n":4},{"a":37934,"l":"phase_of_life_menu_descriptor","c":"Menu descriptor with first selectable row 7 and seven choices. Format: u16 first row, u16 choice count, repeated {u16 text pointer, u16 screen row}, terminated by zero pointer/row. Occupies $942E-$9455.","t":"byte","b":[7,0,7,0,89,138,4,0]},{"a":37942,"t":"byte","b":[117,138,7,0,138,138,9,0]},{"a":37950,"t":"byte","b":[161,138,11,0,186,138,13,0]},{"a":37958,"t":"byte","b":[215,138,15,0,238,138,17,0]},{"a":37966,"t":"byte","b":[12,139,19,0,0,0,0,0]},{"a":37974,"l":"title_new_or_resume_menu_descriptor","c":"Menu descriptor with first selectable row 17 and two choices for new/resume flow. It uses the standard pointer/row pairs and occupies $9456-$9491.","t":"byte","b":[17,0,2,0,33,139,1,0]},{"a":37982,"t":"byte","b":[62,139,3,0,88,139,5,0]},{"a":37990,"t":"byte","b":[119,139,6,0,149,139,8,0]},{"a":37998,"t":"byte","b":[171,139,9,0,205,139,11,0]},{"a":38006,"t":"byte","b":[242,139,12,0,24,140,13,0]},{"a":38014,"t":"byte","b":[61,140,14,0,85,140,17,0]},{"a":38022,"t":"byte","b":[106,140,19,0,130,140,23,0]},{"a":38030,"t":"byte","b":[0,0,0,0]},{"a":38034,"l":"personality_mode_menu_descriptor","c":"Menu descriptor with first selectable row 5 and three personality modes. It uses the standard pointer/row pairs and occupies $9492-$94AD.","t":"byte","b":[5,0,3,0,169,140,1,0]},{"a":38042,"t":"byte","b":[205,140,5,0,235,140,7,0]},{"a":38050,"t":"byte","b":[18,141,9,0,57,141,10,0]},{"a":38058,"t":"byte","b":[0,0,0,0]},{"a":38062,"l":"questionnaire_true_score_records","c":"25 fixed 25-byte TRUE scoring records through $971E. Byte 0 is operation count 0..8, followed by count triples {operation,state-index,magnitude} and zero padding. Native scoring chooses this record only when its corresponding answer equals 1. Independent parsing checks every count, state index and padding byte; all records are exercised by 60 native profiles.","t":"byte","b":[5,1,10,50,1,9,30,1]},{"a":38070,"t":"byte","b":[0,10,1,8,20,1,3,10]},{"a":38078,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38086,"t":"byte","b":[0,3,2,9,20,2,8,10]},{"a":38094,"t":"byte","b":[2,1,20,0,0,0,0,0]},{"a":38102,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38110,"t":"byte","b":[0,0,2,2,9,20,2,0]},{"a":38118,"t":"byte","b":[30,0,0,0,0,0,0,0]},{"a":38126,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38134,"t":"byte","b":[0,0,0,2,2,4,60,2]},{"a":38142,"t":"byte","b":[9,30,0,0,0,0,0,0]},{"a":38150,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38158,"t":"byte","b":[0,0,0,0,3,2,5,40]},{"a":38166,"t":"byte","b":[2,8,30,2,1,20,0,0]},{"a":38174,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38182,"t":"byte","b":[0,0,0,0,0,4,2,10]},{"a":38190,"t":"byte","b":[30,1,8,50,2,9,10,2]},{"a":38198,"t":"byte","b":[0,10,0,0,0,0,0,0]},{"a":38206,"t":"byte","b":[0,0,0,0,0,0,2,2]},{"a":38214,"t":"byte","b":[9,60,2,4,0,0,0,0]},{"a":38222,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38230,"t":"byte","b":[0,0,0,0,0,0,0,3]},{"a":38238,"t":"byte","b":[1,1,50,1,5,30,1,8]},{"a":38246,"t":"byte","b":[20,0,0,0,0,0,0,0]},{"a":38254,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38262,"t":"byte","b":[2,2,1,30,2,4,20,0]},{"a":38270,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38278,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38286,"t":"byte","b":[0,3,2,1,30,2,8,20]},{"a":38294,"t":"byte","b":[2,2,10,0,0,0,0,0]},{"a":38302,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38310,"t":"byte","b":[0,0,1,2,5,40,0,0]},{"a":38318,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38326,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38334,"t":"byte","b":[0,0,0,2,2,10,20,2]},{"a":38342,"t":"byte","b":[9,50,0,0,0,0,0,0]},{"a":38350,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38358,"t":"byte","b":[0,0,0,0,2,1,2,40]},{"a":38366,"t":"byte","b":[2,4,20,0,0,0,0,0]},{"a":38374,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38382,"t":"byte","b":[0,0,0,0,0,3,1,3]},{"a":38390,"t":"byte","b":[30,2,0,30,2,1,30,0]},{"a":38398,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38406,"t":"byte","b":[0,0,0,0,0,0,3,2]},{"a":38414,"t":"byte","b":[1,80,2,0,40,2,8,60]},{"a":38422,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38430,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":38438,"t":"byte","b":[2,9,20,0,0,0,0,0]},{"a":38446,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38454,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38462,"t":"byte","b":[4,2,9,10,2,10,10,1]},{"a":38470,"t":"byte","b":[8,50,1,1,20,0,0,0]},{"a":38478,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38486,"t":"byte","b":[0,3,2,2,20,2,4,20]},{"a":38494,"t":"byte","b":[2,8,10,0,0,0,0,0]},{"a":38502,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38510,"t":"byte","b":[0,0,2,2,0,20,2,2]},{"a":38518,"t":"byte","b":[10,0,0,0,0,0,0,0]},{"a":38526,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38534,"t":"byte","b":[0,0,0,1,2,3,10,0]},{"a":38542,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38550,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38558,"t":"byte","b":[0,0,0,0,2,2,8,20]},{"a":38566,"t":"byte","b":[2,1,10,0,0,0,0,0]},{"a":38574,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38582,"t":"byte","b":[0,0,0,0,0,2,2,3]},{"a":38590,"t":"byte","b":[20,0,49,1,0,0,0,0]},{"a":38598,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38606,"t":"byte","b":[0,0,0,0,0,0,3,2]},{"a":38614,"t":"byte","b":[8,10,1,1,10,2,9,10]},{"a":38622,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38630,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":38638,"t":"byte","b":[2,4,30,0,0,0,0,0]},{"a":38646,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38654,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38662,"t":"byte","b":[1,2,4,20,0,0,0,0]},{"a":38670,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38678,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38686,"t":"byte","b":[0]},{"a":38687,"l":"questionnaire_false_score_records","c":"25 fixed 25-byte FALSE scoring records through $998F, with the same count/triple/padding structure as $94AE. Scoring selects FALSE for every answer byte other than 1, including controlled values 0,3 and255. The questionnaire UI separately requires answered entries, so permissive scoring is not evidence that the ordinary UI accepts those values.","t":"byte","b":[3,2,10,20,2,9,10,2]},{"a":38695,"t":"byte","b":[3,10,0,0,0,0,0,0]},{"a":38703,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38711,"t":"byte","b":[0,3,2,0,10,1,8,20]},{"a":38719,"t":"byte","b":[1,9,30,0,0,0,0,0]},{"a":38727,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38735,"t":"byte","b":[0,0,2,1,1,20,1,0]},{"a":38743,"t":"byte","b":[30,0,0,0,0,0,0,0]},{"a":38751,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38759,"t":"byte","b":[0,0,0,2,1,4,30,1]},{"a":38767,"t":"byte","b":[8,10,0,0,0,0,0,0]},{"a":38775,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38783,"t":"byte","b":[0,0,0,0,3,1,5,40]},{"a":38791,"t":"byte","b":[1,8,30,1,1,10,0,0]},{"a":38799,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38807,"t":"byte","b":[0,0,0,0,0,3,1,5]},{"a":38815,"t":"byte","b":[20,2,8,10,1,4,20,0]},{"a":38823,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38831,"t":"byte","b":[0,0,0,0,0,0,3,2]},{"a":38839,"t":"byte","b":[0,10,1,9,20,1,4,10]},{"a":38847,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38855,"t":"byte","b":[0,0,0,0,0,0,0,3]},{"a":38863,"t":"byte","b":[2,1,40,2,5,20,2,8]},{"a":38871,"t":"byte","b":[20,0,0,0,0,0,0,0]},{"a":38879,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38887,"t":"byte","b":[2,1,1,40,1,4,30,0]},{"a":38895,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38903,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38911,"t":"byte","b":[0,3,1,1,30,1,8,20]},{"a":38919,"t":"byte","b":[1,2,10,0,0,0,0,0]},{"a":38927,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38935,"t":"byte","b":[0,0,1,1,5,40,0,0]},{"a":38943,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38951,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38959,"t":"byte","b":[0,0,0,1,1,9,20,0]},{"a":38967,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38975,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":38983,"t":"byte","b":[0,0,0,0,4,2,2,10]},{"a":38991,"t":"byte","b":[1,4,20,2,0,10,1,8]},{"a":38999,"t":"byte","b":[20,0,0,0,0,0,0,0]},{"a":39007,"t":"byte","b":[0,0,0,0,0,2,1,2]},{"a":39015,"t":"byte","b":[20,1,1,20,0,0,0,0]},{"a":39023,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39031,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39039,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39047,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39055,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":39063,"t":"byte","b":[1,9,20,0,0,0,0,0]},{"a":39071,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39079,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39087,"t":"byte","b":[3,1,9,30,1,10,20,1]},{"a":39095,"t":"byte","b":[8,10,0,0,0,0,0,0]},{"a":39103,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39111,"t":"byte","b":[0,1,1,2,40,0,0,0]},{"a":39119,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39127,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39135,"t":"byte","b":[0,0,3,1,0,20,1,8]},{"a":39143,"t":"byte","b":[30,1,2,20,0,0,0,0]},{"a":39151,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39159,"t":"byte","b":[0,0,0,1,1,3,30,0]},{"a":39167,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39175,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39183,"t":"byte","b":[0,0,0,0,2,1,8,20]},{"a":39191,"t":"byte","b":[1,2,20,0,0,0,0,0]},{"a":39199,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39207,"t":"byte","b":[0,0,0,0,0,1,1,3]},{"a":39215,"t":"byte","b":[30,0,0,0,0,0,0,0]},{"a":39223,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39231,"t":"byte","b":[0,0,0,0,0,0,2,1]},{"a":39239,"t":"byte","b":[8,30,1,9,30,0,0,0]},{"a":39247,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39255,"t":"byte","b":[0,0,0,0,0,0,0,1]},{"a":39263,"t":"byte","b":[1,4,20,0,0,0,0,0]},{"a":39271,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39279,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39287,"t":"byte","b":[1,1,4,20,0,0,0,0]},{"a":39295,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39303,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":39311,"t":"byte","b":[0]},{"a":39312,"l":"saved_vm_frame_ptr","c":"Mutable little-endian pointer to the saved eight-byte VM/native frame. $9348 writes $06/$07 here before entering procedure $8D5E; $936B reads it to restore the older frame. Snapshot value $CFD5 lies in the live VM stack image.","t":"word","b":[213,207],"d":[53205],"x":[37708,37752]},{"a":39313,"t":"note","l":"saved_vm_frame_pointer_high","c":"High byte of saved VM/native frame pointer $9990. At the fresh prompt the pointer is $CFD5; native $9348 writes it and $936B restores the saved frame. MAP1's loaded program object stores zero here before this runtime write.","note":"inside the item at $9990","x":[37715,37757]},{"a":39314,"l":"retained_prior_phase_disk_error_vm_fragment","c":"PRIOR-PHASE DATA \u2014 partially overwritten VM fragment. From $9993 it pushes the 'Fatal Disk Error!' text at $9A02, calls $4CA1, passes -1 to retained gateway $B3B5 and branches through an independent sparse case for values 6, 7 and 15. Its dependencies at $8A72 and $990D are overwritten by current text/data and no resident CFG or encoded pointer enters it. It cannot execute in the captured phase.","t":"byte","b":[153,142,2,154,172,161,76,174]},{"a":39322,"t":"byte","b":[2,141,255,172,181,179,174,2]},{"a":39330,"t":"byte","b":[214,182,153,217,3,0,6,0]},{"a":39338,"t":"byte","b":[147,153,7,0,147,153,15,0]},{"a":39346,"t":"byte","b":[147,153,182,153,172,114,138,214]},{"a":39354,"t":"byte","b":[13,153]},{"a":39356,"l":"fatal_disk_error_text_pool","c":"Zero-terminated resident diagnostic strings: Preseek failed, theVig cread failed, chof cread failed, chunkseek failed, and Fatal Disk Error!. These are game/runtime error content and should be preserved for remake compatibility.","t":"byte","b":[80,114,101,115,101,101,107,32]},{"a":39364,"t":"byte","b":[102,97,105,108,101,100,0,116]},{"a":39372,"t":"byte","b":[104,101,86,105,103,32,99,114]},{"a":39380,"t":"byte","b":[101,97,100,32,102,97,105,108]},{"a":39388,"t":"byte","b":[101,100,0,99,104,111,102,32]},{"a":39396,"t":"byte","b":[99,114,101,97,100,32,102,97]},{"a":39404,"t":"byte","b":[105,108,101,100,0,99,104,117]},{"a":39412,"t":"byte","b":[110,107,115,101,101,107,32,102]},{"a":39420,"t":"byte","b":[97,105,108,101,100,0,70,97]},{"a":39428,"t":"byte","b":[116,97,108,32,68,105,115,107]},{"a":39436,"t":"byte","b":[32,69,114,114,111,114,33,0]},{"a":39444,"l":"load_local_map_chunk","c":"Load and LZW-expand one local descriptor chunk from the active scene block.\nInputs: +8 local chunk index.\nOutputs: pointer into $C2A2, or zero on failure.\nAssumptions: boundary table $CAE5, compressed base $CAAB and file slot $CADB are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $CAAF/$CAD1 cache, $CADD descriptor pointer and LZW workspace.\nHardware: MAP seek/read through custom serial layer.\nEntry protocol: JSR $70F8; signed frame adjustment -8; bytecode $9A19-$9AE3 (115 decoded operations); native calls $4C12, $4CA1, $5C37, $A4DB, $A4F1. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":39447,"l":"vm_frame_adjust_9a14","c":"Signed frame adjustment -8 for load_local_map_chunk at $9A14, consumed by the $70F8 VM gateway before bytecode begins at $9A19. Load and LZW-expand one local descriptor chunk from the active scene block.","t":"word","b":[248,255],"d":[65528]},{"a":39449,"l":"vm_bytecode_9a14","c":"Compiled bytecode belonging to load_local_map_chunk ($9A14). Load and LZW-expand one local descriptor chunk from the active scene block. This position is the opcode of load_primary_absolute_word_alias at $9A19. The procedure decodes to 115 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_and_show_error_message, report_packed_runtime_error, enter_inline_native_5c3d_adjust_minus4, enter_inline_native_a4e1_adjust_0, enter_inline_native_a4f7_adjust_0.","t":"byte","b":[164,175,202,28,195,216,41,154]},{"a":39457,"t":"byte","b":[12,166,209,202,194,215,178,154]},{"a":39465,"t":"byte","b":[12,210,140,229,202,187,176,41]},{"a":39473,"t":"byte","b":[12,166,175,202,194,216,89,154]},{"a":39481,"t":"byte","b":[172,219,164,142,171,202,172,55]},{"a":39489,"t":"byte","b":[92,174,2,139,255,192,216,84]},{"a":39497,"t":"byte","b":[154,142,228,154,172,161,76,174]},{"a":39505,"t":"byte","b":[2,64,207,9,43,214,103,154]},{"a":39513,"t":"byte","b":[164,209,202,210,140,229,202,187]},{"a":39521,"t":"byte","b":[176,179,9,180,188,43,12,208]},{"a":39529,"t":"byte","b":[210,140,229,202,187,42,10,176]},{"a":39537,"t":"byte","b":[25,188,40,140,0,8,196,216]},{"a":39545,"t":"byte","b":[138,154,10,176,25,188,179,142]},{"a":39553,"t":"byte","b":[241,154,172,18,76,174,4,64]},{"a":39561,"t":"byte","b":[207,56,59,142,162,194,170,219]},{"a":39569,"t":"byte","b":[202,172,241,164,174,8,216,164]},{"a":39577,"t":"byte","b":[154,142,8,155,172,161,76,174]},{"a":39585,"t":"byte","b":[2,64,207,12,168,175,202,10]},{"a":39593,"t":"byte","b":[140,229,202,188,81,190,168,209]},{"a":39601,"t":"byte","b":[202,164,175,202,28,195,216,220]},{"a":39609,"t":"byte","b":[154,12,166,209,202,194,216,220]},{"a":39617,"t":"byte","b":[154,164,175,202,210,140,229,202]},{"a":39625,"t":"byte","b":[187,176,179,12,210,140,229,202]},{"a":39633,"t":"byte","b":[187,176,180,188,140,162,194,187]},{"a":39641,"t":"byte","b":[214,221,154,64,168,221,202,164]},{"a":39649,"t":"byte","b":[221,202,207]},{"a":39652,"l":"chunk_loader_error_text_pool","c":"Zero-terminated active loader diagnostics: 'cseek failed', 'Chunk too big to load!', and 'Can't loadChunk'. This documents current game chunk-loader behavior without treating overwritten bootstrap code as resident logic.","t":"byte","b":[99,115,101,101,107,32,102,97]},{"a":39660,"t":"byte","b":[105,108,101,100,0,67,104,117]},{"a":39668,"t":"byte","b":[110,107,32,116,111,111,32,98]},{"a":39676,"t":"byte","b":[105,103,32,116,111,32,108,111]},{"a":39684,"t":"byte","b":[97,100,33,0,67,97,110,39]},{"a":39692,"t":"byte","b":[116,32,108,111,97,100,67,104]},{"a":39700,"t":"byte","b":[117,110,107,0]},{"a":39704,"l":"execute_scene_chunk_chain","c":"Execute a scene's descriptor chain from local chunk zero until terminal control.\nInputs: none.\nOutputs: terminal signed control or local chunk result.\nAssumptions: an active scene block and valid route bytes.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $CAD9/$CADD and all descriptor-driven state.\nHardware: display/input/disk through descriptor interpreter.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $9B1D-$9B94 (58 decoded operations); native calls $9A14, $9BF9, $A3D0. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":39707,"l":"vm_frame_adjust_9b18","c":"Signed frame adjustment -4 for execute_scene_chunk_chain at $9B18, consumed by the $70F8 VM gateway before bytecode begins at $9B1D. Execute a scene's descriptor chain from local chunk zero until terminal control.","t":"word","b":[252,255],"d":[65532]},{"a":39709,"l":"vm_bytecode_9b18","c":"Compiled bytecode belonging to execute_scene_chunk_chain ($9B18). Execute a scene's descriptor chain from local chunk zero until terminal control. This position is the opcode of load_primary_const_0 at $9B1D. The procedure decodes to 58 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include load_local_map_chunk, interpret_interaction_descriptor, execute_invalid_choice_descriptor.","t":"byte","b":[64,42,96,172,20,154,174,2]},{"a":39717,"t":"byte","b":[215,43,155,137,254,207,65,168]},{"a":39725,"t":"byte","b":[217,202,172,249,155,43,139,253]},{"a":39733,"t":"byte","b":[192,216,60,155,137,253,207,11]},{"a":39741,"t":"byte","b":[214,111,155,164,221,202,208,211]},{"a":39749,"t":"byte","b":[140,255,0,218,43,214,60,155]},{"a":39757,"t":"byte","b":[11,207,172,208,163,10,43,214]},{"a":39765,"t":"byte","b":[128,155,138,255,0,205,11,218]},{"a":39773,"t":"byte","b":[43,11,140,240,0,218,140,240]},{"a":39781,"t":"byte","b":[0,192,216,108,155,11,207,214]},{"a":39789,"t":"byte","b":[128,155,217,3,0,253,255,64]},{"a":39797,"t":"byte","b":[155,254,255,77,155,255,0,79]},{"a":39805,"t":"byte","b":[155,87,155,11,42,59,172,20]},{"a":39813,"t":"byte","b":[154,174,2,215,142,155,137,254]},{"a":39821,"t":"byte","b":[207,172,249,155,43,214,60,155]},{"a":39829,"l":"unreachable_vm_return_padding_9b95","c":"Verified unreachable isolated VM return byte. It is not a procedure entry, CFG target or overlapping instruction byte in any of the 82 decoded resident procedures.","t":"byte","b":[207]},{"a":39830,"l":"evaluate_scene_conditions","c":"Evaluate the current ordered phase of five-byte state-range conditions.\nInputs: +8 remaining clause count; +10 current clause pointer.\nOutputs: updated pointer after the consumed phase on success; zero on the first failed bounded clause.\nAssumptions: records are a state byte plus two signed big-endian inclusive bounds. State $FF is a phase separator: entry evaluation stops there and leaves the suffix for presentation opcode 6; it is not an unconditional state test.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; reads the state vector at $7F40.\nHardware: none.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $9B9B-$9BF8 (76 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":39833,"l":"vm_frame_adjust_9b96","c":"Signed frame adjustment -4 for evaluate_scene_conditions at $9B96, consumed by the $70F8 VM gateway before bytecode begins at $9B9B. Evaluate the current ordered phase of five-byte state-range conditions.","t":"word","b":[252,255],"d":[65532]},{"a":39835,"l":"vm_bytecode_9b96","c":"Compiled bytecode belonging to evaluate_scene_conditions ($9B96). Evaluate the current ordered phase of five-byte state-range conditions. This position is the opcode of branch at $9B9B. The procedure decodes to 76 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[214,162,155,12,209,44,208,12]},{"a":39843,"t":"byte","b":[80,196,216,247,155,13,211,140]},{"a":39851,"t":"byte","b":[255,0,218,140,255,0,192,216]},{"a":39859,"t":"byte","b":[184,155,13,117,207,13,208,45]},{"a":39867,"t":"byte","b":[209,211,210,140,64,127,187,176]},{"a":39875,"t":"byte","b":[43,13,208,211,179,13,211,88]},{"a":39883,"t":"byte","b":[189,180,187,42,66,205,13,187]},{"a":39891,"t":"byte","b":[45,11,26,194,216,220,155,64]},{"a":39899,"t":"byte","b":[207,13,208,211,179,13,211,88]},{"a":39907,"t":"byte","b":[189,180,187,42,66,205,13,187]},{"a":39915,"t":"byte","b":[45,11,26,196,216,244,155,64]},{"a":39923,"t":"byte","b":[207,214,158,155,13,207]},{"a":39929,"l":"interpret_interaction_descriptor","c":"Interpret one decompressed interaction descriptor. Input: descriptor pointer at $CADD. It evaluates five-byte signed-big-endian inclusive conditions; executes four-byte effects; collects mixed-radix choices; runs the presentation script; substitutes dynamic text; and selects the next local route/control code. Output: next route or terminal control result. Assumptions: the descriptor obeys the exported grammar. Clobbers/state: VM values, expression stack, frame locals, selected state-vector words, choice/radix work and display buffers. Hardware: SID voice-3 noise for random effects and VIC/CIA through UI helpers. Corpus proof: all 5,802 choice radices are 1..12 and all 103 random-modulo operands are 3, 33 or 99, so the data-driven divisors are nonzero.\nEntry protocol: JSR $70F8; frame adjustment -94; bytecode $9BFE-$A057; native calls $4697, $4C12, $6E33, $9B96, $A06D, $A235 and $A279. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":39932,"l":"vm_frame_adjust_9bf9","c":"Signed frame adjustment -94 for interpret_interaction_descriptor at $9BF9, consumed by the $70F8 VM gateway before bytecode begins at $9BFE. Interpret one decompressed interaction descriptor. Input: descriptor pointer at $CADD. It evaluates five-byte signed-big-endian inclusive conditions; executes four-byte effects; collects mixed-radix choices; runs the presentation script; substitutes dynamic text; and selects the next local route/control code. Output: next route or terminal control result. Assumptions: the descriptor obeys the exported grammar. Clobbers/state: VM values, expression stack, frame locals, selected state-vector words, choice/radix work and display buffers. Hardware: SID voice-3 noise for random effects and VIC/CIA through UI helpers. Corpus proof: all 5,802 choice radices are 1..12 and all 103 random-modulo operands are 3, 33 or 99, so the data-driven divisors are nonzero.","t":"word","b":[162,255],"d":[65442]},{"a":39934,"l":"vm_bytecode_9bf9","c":"Compiled bytecode belonging to interpret_interaction_descriptor ($9BF9). Interpret one decompressed interaction descriptor. Input: descriptor pointer at $CADD. It evaluates five-byte signed-big-endian inclusive conditions; executes four-byte effects; collects mixed-radix choices; runs the presentation script; substitutes dynamic text; and selects the next local route/control code. Output: next route or terminal control result. Assumptions: the descriptor obeys the exported grammar. Clobbers/state: VM values, expression stack, frame locals, selected state-vector words, choice/radix work and display buffers. Hardware: SID voice-3 noise for random effects and VIC/CIA through UI helpers. Corpus proof: all 5,802 choice radices are 1..12 and all 103 random-modulo operands are 3, 33 or 99, so the data-driven divisors are nonzero. This position is the opcode of load_primary_absolute_word_alias at $9BFE. The procedure decodes to 662 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include read_sid_voice3_noise, format_and_show_error_message, terminate_to_basic_with_status, evaluate_scene_conditions, collect_scene_choice, begin_scene_text_output.","t":"byte","b":[164,221,202,211,140,255,0,218]},{"a":39942,"t":"byte","b":[208,166,221,202,187,43,11,208]},{"a":39950,"t":"byte","b":[43,209,211,42,59,58,172,150]},{"a":39958,"t":"byte","b":[155,174,4,133,235,215,33,156]},{"a":39966,"t":"byte","b":[137,253,207,129,235,27,188,85]},{"a":39974,"t":"byte","b":[182,179,10,180,188,133,233,10]},{"a":39982,"t":"byte","b":[85,181,205,11,187,43,11,208]},{"a":39990,"t":"byte","b":[43,209,211,42,214,65,156,10]},{"a":39998,"t":"byte","b":[209,42,208,10,80,196,216,87]},{"a":40006,"t":"byte","b":[157,11,208,43,209,211,41,11]},{"a":40014,"t":"byte","b":[114,211,179,11,208,211,88,189]},{"a":40022,"t":"byte","b":[180,187,133,231,67,205,11,187]},{"a":40030,"t":"byte","b":[43,11,143,253,211,139,64,218]},{"a":40038,"t":"byte","b":[216,115,156,129,231,210,140,64]},{"a":40046,"t":"byte","b":[127,187,176,133,231,11,143,253]},{"a":40054,"t":"byte","b":[211,139,191,218,214,63,157,9]},{"a":40062,"t":"byte","b":[210,140,64,127,187,179,129,231]},{"a":40070,"t":"byte","b":[180,177,214,84,157,135,231,9]},{"a":40078,"t":"byte","b":[210,140,64,127,187,180,179,176]},{"a":40086,"t":"byte","b":[187,180,177,214,84,157,9,92]},{"a":40094,"t":"byte","b":[194,216,196,156,9,210,140,64]},{"a":40102,"t":"byte","b":[127,187,176,179,137,100,180,188]},{"a":40110,"t":"byte","b":[131,231,181,139,100,182,179,9]},{"a":40118,"t":"byte","b":[210,140,64,127,187,180,179,176]},{"a":40126,"t":"byte","b":[187,180,177,214,250,156,9,210]},{"a":40134,"t":"byte","b":[140,64,127,187,176,133,164,129]},{"a":40142,"t":"byte","b":[164,139,100,182,131,231,181,179]},{"a":40150,"t":"byte","b":[9,210,140,64,127,187,180,179]},{"a":40158,"t":"byte","b":[176,187,180,177,129,164,139,100]},{"a":40166,"t":"byte","b":[185,131,231,181,139,100,182,179]},{"a":40174,"t":"byte","b":[9,210,140,64,127,187,180,179]},{"a":40182,"t":"byte","b":[176,187,180,177,214,84,157,135]},{"a":40190,"t":"byte","b":[231,9,210,140,64,127,187,180]},{"a":40198,"t":"byte","b":[179,176,188,180,177,214,84,157]},{"a":40206,"t":"byte","b":[9,210,140,64,127,187,176,131]},{"a":40214,"t":"byte","b":[231,181,139,100,182,179,9,210]},{"a":40222,"t":"byte","b":[140,64,127,187,180,179,176,188]},{"a":40230,"t":"byte","b":[180,177,214,84,157,9,210,140]},{"a":40238,"t":"byte","b":[64,127,187,179,172,151,70,82]},{"a":40246,"t":"byte","b":[191,131,231,185,180,177,214,84]},{"a":40254,"t":"byte","b":[157,213,0,0,7,0,84,157]},{"a":40262,"t":"byte","b":[125,156,84,157,139,156,156,156]},{"a":40270,"t":"byte","b":[253,156,14,157,43,157,214,61]},{"a":40278,"t":"byte","b":[156,11,133,243,129,243,211,209]},{"a":40286,"t":"byte","b":[42,214,102,157,10,209,42,208]},{"a":40294,"t":"byte","b":[10,80,197,216,122,157,10,223]},{"a":40302,"t":"byte","b":[245,255,187,179,138,255,0,180]},{"a":40310,"t":"byte","b":[212,214,98,157,11,211,140,255]},{"a":40318,"t":"byte","b":[0,218,208,27,187,43,11,211]},{"a":40326,"t":"byte","b":[140,255,0,218,208,27,187,133]},{"a":40334,"t":"byte","b":[241,129,241,176,208,210,131,241]},{"a":40342,"t":"byte","b":[187,133,239,129,241,114,133,241]},{"a":40350,"t":"byte","b":[143,254,11,208,43,209,11,133]},{"a":40358,"t":"byte","b":[227,64,133,229,64,162,225,255]},{"a":40366,"t":"byte","b":[64,162,166,255,135,229,172,53]},{"a":40374,"t":"byte","b":[162,174,2,162,226,255,129,229]},{"a":40382,"t":"byte","b":[216,231,157,96,163,226,255,11]},{"a":40390,"t":"byte","b":[208,43,209,211,140,255,0,218]},{"a":40398,"t":"byte","b":[210,131,241,187,176,131,239,187]},{"a":40406,"t":"byte","b":[179,172,121,162,174,6,162,226]},{"a":40414,"t":"byte","b":[255,160,166,255,208,162,166,255]},{"a":40422,"t":"byte","b":[209,11,208,43,209,211,214,179]},{"a":40430,"t":"byte","b":[159,214,200,159,96,163,226,255]},{"a":40438,"t":"byte","b":[11,208,43,209,211,140,255,0]},{"a":40446,"t":"byte","b":[218,210,131,241,187,176,131,239]},{"a":40454,"t":"byte","b":[187,179,172,121,162,174,6,162]},{"a":40462,"t":"byte","b":[226,255,160,166,255,208,162,166]},{"a":40470,"t":"byte","b":[255,209,214,200,159,11,211,95]},{"a":40478,"t":"byte","b":[218,215,49,158,11,211,84,191]},{"a":40486,"t":"byte","b":[95,218,223,167,255,187,179,129]},{"a":40494,"t":"byte","b":[229,180,212,160,225,255,210,223]},{"a":40502,"t":"byte","b":[175,255,187,179,11,208,43,209]},{"a":40510,"t":"byte","b":[211,180,212,160,225,255,210,223]},{"a":40518,"t":"byte","b":[176,255,187,179,160,226,255,180]},{"a":40526,"t":"byte","b":[212,97,163,226,255,11,208,43]},{"a":40534,"t":"byte","b":[209,211,140,255,0,218,210,131]},{"a":40542,"t":"byte","b":[241,187,176,131,239,187,179,172]},{"a":40550,"t":"byte","b":[121,162,174,6,162,226,255,11]},{"a":40558,"t":"byte","b":[143,254,211,95,218,179,11,143]},{"a":40566,"t":"byte","b":[254,211,84,191,95,218,223,245]},{"a":40574,"t":"byte","b":[255,187,211,180,192,216,153,158]},{"a":40582,"t":"byte","b":[96,160,225,255,210,223,176,255]},{"a":40590,"t":"byte","b":[187,211,179,142,88,160,172,121]},{"a":40598,"t":"byte","b":[162,174,6,160,225,255,208,162]},{"a":40606,"t":"byte","b":[225,255,209,160,166,255,208,162]},{"a":40614,"t":"byte","b":[166,255,209,214,200,159,11,208]},{"a":40622,"t":"byte","b":[43,209,211,84,191,87,218,162]},{"a":40630,"t":"byte","b":[163,255,160,163,255,223,245,255]},{"a":40638,"t":"byte","b":[187,211,140,255,0,192,216,222]},{"a":40646,"t":"byte","b":[158,160,163,255,223,245,255,187]},{"a":40654,"t":"byte","b":[179,11,209,211,95,218,179,172]},{"a":40662,"t":"byte","b":[151,70,82,191,180,185,180,212]},{"a":40670,"t":"byte","b":[214,200,159,135,235,135,233,172]},{"a":40678,"t":"byte","b":[150,155,174,4,216,241,158,64]},{"a":40686,"t":"byte","b":[214,242,158,65,162,245,255,214]},{"a":40694,"t":"byte","b":[200,159,160,166,255,216,203,159]},{"a":40702,"t":"byte","b":[160,225,255,210,223,175,255,187]},{"a":40710,"t":"byte","b":[179,138,255,0,180,212,222,245]},{"a":40718,"t":"byte","b":[255,179,222,175,255,179,172,109]},{"a":40726,"t":"byte","b":[160,174,4,214,159,159,137,254]},{"a":40734,"t":"byte","b":[207,129,229,216,41,159,137,255]},{"a":40742,"t":"byte","b":[214,42,159,64,205,129,229,187]},{"a":40750,"t":"byte","b":[133,229,129,227,43,64,42,214]},{"a":40758,"t":"byte","b":[60,159,10,208,42,209,10,131]},{"a":40766,"t":"byte","b":[229,194,216,122,159,11,208,43]},{"a":40774,"t":"byte","b":[209,11,208,43,209,211,214,97]},{"a":40782,"t":"byte","b":[159,66,205,11,187,43,214,71]},{"a":40790,"t":"byte","b":[159,11,208,43,209,214,71,159]},{"a":40798,"t":"byte","b":[214,116,159,213,255,255,6,0]},{"a":40806,"t":"byte","b":[116,159,87,159,79,159,94,159]},{"a":40814,"t":"byte","b":[87,159,116,159,91,159,214,119]},{"a":40822,"t":"byte","b":[159,214,56,159,214,170,157,129]},{"a":40830,"t":"byte","b":[229,208,133,229,209,11,209,211]},{"a":40838,"t":"byte","b":[214,143,159,214,170,157,214,203]},{"a":40846,"t":"byte","b":[159,217,2,0,3,0,137,159]},{"a":40854,"t":"byte","b":[5,0,140,159,156,159,214,176]},{"a":40862,"t":"byte","b":[159,217,3,0,2,0,28,159]},{"a":40870,"t":"byte","b":[1,0,31,159,0,0,125,159]},{"a":40878,"t":"byte","b":[176,159,214,200,159,213,0,0]},{"a":40886,"t":"byte","b":[7,0,200,159,239,157,242,157]},{"a":40894,"t":"byte","b":[27,158,254,158,172,158,248,158]},{"a":40902,"t":"byte","b":[225,158,214,231,157,129,243,211]},{"a":40910,"t":"byte","b":[215,219,159,164,221,202,208,211]},{"a":40918,"t":"byte","b":[140,255,0,218,207,64,133,237]},{"a":40926,"t":"byte","b":[64,42,214,231,159,10,208,42]},{"a":40934,"t":"byte","b":[209,129,243,211,179,10,180,194]},{"a":40942,"t":"byte","b":[216,36,160,10,223,245,255,187]},{"a":40950,"t":"byte","b":[211,140,255,0,192,216,9,160]},{"a":40958,"l":"vm_body_9bf9_9ffe","c":"Compiled bytecode belonging to interpret_interaction_descriptor ($9BF9). Interpret one decompressed interaction descriptor. Input: descriptor pointer at $CADD. It evaluates five-byte signed-big-endian inclusive conditions; executes four-byte effects; collects mixed-radix choices; runs the presentation script; substitutes dynamic text; and selects the next local route/control code. Output: next route or terminal control result. Assumptions: the descriptor obeys the exported grammar. Clobbers/state: VM values, expression stack, frame locals, selected state-vector words, choice/radix work and display buffers. Hardware: SID voice-3 noise for random effects and VIC/CIA through UI helpers. Corpus proof: all 5,802 choice radices are 1..12 and all 103 random-modulo operands are 3, 33 or 99, so the data-driven divisors are nonzero. This position is the opcode of load_primary_local_-4 at $9FFE. The procedure decodes to 662 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include read_sid_voice3_noise, format_and_show_error_message, terminate_to_basic_with_status, evaluate_scene_conditions, collect_scene_choice, begin_scene_text_output.","t":"byte","b":[10,223,167,255]},{"a":40962,"l":"descriptor_interpreter_choice_cursor_continuation","c":"ADD operation in compiled descriptor interpreter $9BF9. Continues from $9FFF frame-address operand spanning $A000/$A001, reads a choice byte and updates local state before selecting a route. Every instruction through return $A06C belongs to the same structurally checked VM body; $A000 is an operand continuation, not a native entry.","t":"byte","b":[187,211,133,229,214,48,159,129],"x":[16762,28246]},{"a":40970,"t":"byte","b":[243,26,187,208,211,205,129,237]},{"a":40978,"t":"byte","b":[181,133,237,10,223,245,255,187]},{"a":40986,"t":"byte","b":[211,205,129,237,187,133,237,214]},{"a":40994,"t":"byte","b":[227,159,65,205,129,237,187,133]},{"a":41002,"t":"byte","b":[237,164,221,202,211,140,255,0]},{"a":41010,"t":"byte","b":[218,179,129,237,180,196,216,76]},{"a":41018,"t":"byte","b":[160,170,67,128,142,90,160,172]},{"a":41026,"t":"byte","b":[18,76,174,4,97,172,51,110]},{"a":41034,"t":"byte","b":[174,2,164,221,202,131,237,187]},{"a":41042,"t":"byte","b":[211,140,255,0,218,207]},{"a":41048,"l":"range_error_text_pool","c":"Zero-terminated '*' marker followed by runtime diagnostic 'next out of range!'.","t":"byte","b":[42,0,110,101,120,116,32,111]},{"a":41056,"t":"byte","b":[117,116,32,111,102,32,114,97]},{"a":41064,"t":"byte","b":[110,103,101,33,0]},{"a":41069,"l":"collect_scene_choice","c":"Present the descriptor interpreter's accumulated display-item list and collect a response when the list defines selectable choices.\nInputs: +8/+10 carry packed display/choice metadata assembled by $9BF9; $CAD9 identifies the active descriptor context. Opcode 3 calls this routine after adding an indexed text fragment, while opcode 5 calls it to finalize a choice set.\nOutputs: selected mixed-radix choice/control result when selection is requested; otherwise the text panel is presented and interpretation continues.\nAssumptions: descriptor text indices, choice radices, and packed display metadata are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $B568 packed-text work, selection/sprite/screen state.\nHardware: VIC-II/CIA through display/input helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -3; bytecode $A072-$A233 (220 decoded operations); native calls $44C5, $475D, $545B, $54BF, $554D, $56FF, $5F30. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":41072,"l":"vm_frame_adjust_a06d","c":"Signed frame adjustment -3 for collect_scene_choice at $A06D, consumed by the $70F8 VM gateway before bytecode begins at $A072. Present the descriptor interpreter's accumulated display-item list and collect a response when the list defines selectable choices.","t":"word","b":[253,255],"d":[65533]},{"a":41074,"l":"vm_bytecode_a06d","c":"Compiled bytecode belonging to collect_scene_choice ($A06D). Present the descriptor interpreter's accumulated display-item list and collect a response when the list defines selectable choices. This position is the opcode of push_absolute_word at $A072. The procedure decodes to 220 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include animate_screen_region_transition, copy_rom_glyph_to_screen_charset, delay_scaled_iterations, read_pointer_device_position, hit_test_selection_rectangle, read_normalized_input.","t":"byte","b":[170,217,202,141,24,142,0,8]},{"a":41082,"t":"byte","b":[141,23,97,100,172,197,68,174]},{"a":41090,"t":"byte","b":[12,72,168,217,202,64,162,255]},{"a":41098,"t":"byte","b":[255,160,255,255,140,255,0,192]},{"a":41106,"t":"byte","b":[216,159,160,98,103,172,191,84]},{"a":41114,"t":"byte","b":[174,4,214,200,160,160,255,255]},{"a":41122,"t":"byte","b":[210,28,187,211,140,255,0,192]},{"a":41130,"t":"byte","b":[216,184,160,141,22,103,172,191]},{"a":41138,"t":"byte","b":[84,174,4,214,200,160,160,255]},{"a":41146,"t":"byte","b":[255,210,28,187,208,211,208,179]},{"a":41154,"t":"byte","b":[103,172,191,84,174,4,142,136]},{"a":41162,"t":"byte","b":[19,172,91,84,174,2,172,255]},{"a":41170,"t":"byte","b":[86,162,254,255,160,254,255,214]},{"a":41178,"t":"byte","b":[97,161,214,208,160,172,48,95]},{"a":41186,"t":"byte","b":[66,207,160,255,255,140,255,0]},{"a":41194,"t":"byte","b":[193,216,5,161,165,104,181,215]},{"a":41202,"t":"byte","b":[250,160,160,255,255,216,5,161]},{"a":41210,"t":"byte","b":[160,255,255,209,162,255,255,208]},{"a":41218,"t":"byte","b":[214,37,161,64,162,255,255,214]},{"a":41226,"t":"byte","b":[20,161,160,255,255,208,162,255]},{"a":41234,"t":"byte","b":[255,209,160,255,255,210,28,187]},{"a":41242,"t":"byte","b":[211,140,255,0,193,216,37,161]},{"a":41250,"t":"byte","b":[214,12,161,214,139,160,160,255]},{"a":41258,"t":"byte","b":[255,140,255,0,192,215,64,161]},{"a":41266,"t":"byte","b":[160,255,255,210,28,187,211,140]},{"a":41274,"t":"byte","b":[255,0,193,216,75,161,160,255]},{"a":41282,"t":"byte","b":[255,208,162,255,255,209,214,91]},{"a":41290,"t":"byte","b":[161,165,104,181,216,87,161,138]},{"a":41298,"t":"byte","b":[255,0,214,88,161,64,162,255]},{"a":41306,"t":"byte","b":[255,214,139,160,214,118,161,217]},{"a":41314,"t":"byte","b":[4,0,1,0,228,160,2,0]},{"a":41322,"t":"byte","b":[40,161,3,0,223,160,16,0]},{"a":41330,"t":"byte","b":[94,161,220,160,160,255,255,140]},{"a":41338,"t":"byte","b":[255,0,192,216,133,161,172,48]},{"a":41346,"t":"byte","b":[95,65,207,160,255,255,210,28]},{"a":41354,"t":"byte","b":[187,211,140,255,0,192,216,167]},{"a":41362,"t":"byte","b":[161,172,48,95,97,111,141,39]},{"a":41370,"t":"byte","b":[111,141,32,142,0,8,172,77]},{"a":41378,"t":"byte","b":[85,174,12,64,207,64,162,253]},{"a":41386,"t":"byte","b":[255,214,182,161,160,253,255,208]},{"a":41394,"t":"byte","b":[162,253,255,209,160,253,255,210]},{"a":41402,"t":"byte","b":[28,187,211,140,255,0,193,216]},{"a":41410,"t":"byte","b":[18,162,160,255,255,210,28,187]},{"a":41418,"t":"byte","b":[211,140,240,0,218,179,160,253]},{"a":41426,"t":"byte","b":[255,210,28,187,211,140,240,0]},{"a":41434,"t":"byte","b":[218,180,192,216,5,162,160,253]},{"a":41442,"t":"byte","b":[255,210,28,187,208,211,208,179]},{"a":41450,"t":"byte","b":[101,160,253,255,161,255,255,192]},{"a":41458,"t":"byte","b":[216,250,161,137,42,214,252,161]},{"a":41466,"t":"byte","b":[137,32,179,172,93,71,174,6]},{"a":41474,"t":"byte","b":[214,15,162,160,253,255,161,255]},{"a":41482,"t":"byte","b":[255,196,215,18,162,214,174,161]},{"a":41490,"t":"byte","b":[160,255,255,210,28,187,211,84]},{"a":41498,"t":"byte","b":[191,87,218,29,187,179,160,255]},{"a":41506,"t":"byte","b":[255,210,28,187,211,95,218,180]},{"a":41514,"t":"byte","b":[212,160,253,255,162,255,255,214]},{"a":41522,"t":"byte","b":[139,160]},{"a":41524,"l":"unreachable_vm_return_padding_a234","c":"Verified unreachable isolated VM return byte. It is not a procedure entry, CFG target or overlapping instruction byte in any resident procedure.","t":"byte","b":[207]},{"a":41525,"l":"begin_scene_text_output","c":"Initialize the descriptor text region and emit its fixed opening controls.\nInputs: +8 display-mode byte.\nOutputs: constant 2.\nAssumptions: renderer and resident control strings are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $B568 and text-region state.\nHardware: display through callees.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $A23A-$A262 (20 decoded operations); native calls $52D9, $A279. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":41528,"l":"vm_frame_adjust_a235","c":"Signed frame adjustment 0 for begin_scene_text_output at $A235, consumed by the $70F8 VM gateway before bytecode begins at $A23A. Initialize the descriptor text region and emit its fixed opening controls.","t":"word","b":[0,0],"d":[0]},{"a":41530,"l":"vm_bytecode_a235","c":"Compiled bytecode belonging to begin_scene_text_output ($A235). Initialize the descriptor text region and emit its fixed opening controls. This position is the opcode of load_primary_local_+8 at $A23A. The procedure decodes to 20 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include clear_and_frame_text_region, render_scene_text_with_substitutions.","t":"byte","b":[12,169,104,181,142,0,8,141]},{"a":41538,"t":"byte","b":[23,172,217,82,174,4,96,141]},{"a":41546,"t":"byte","b":[21,142,99,162,172,121,162,174]},{"a":41554,"t":"byte","b":[6,12,216,97,162,96,97,142]},{"a":41562,"t":"byte","b":[111,162,172,121,162,174,6,66]},{"a":41570,"t":"byte","b":[207]},{"a":41571,"l":"continue_review_menu_text","c":"Zero-terminated indented menu choices '   CONTINUE' and '   REVIEW'.","t":"byte","b":[32,32,32,67,79,78,84,73]},{"a":41579,"t":"byte","b":[78,85,69,0,32,32,32,82]},{"a":41587,"t":"byte","b":[69,86,73,69,87,0]},{"a":41593,"l":"render_scene_text_with_substitutions","c":"Render a text stream with trait/state substitutions and newline controls.\nInputs: +8 source; +10 output position; +12 uppercase-dynamic-string flag.\nOutputs: advanced output position.\nAssumptions: source is NUL/control terminated and token indices are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; renderer buffers and dynamic-string scratch.\nHardware: clears HIRAM (CPU-port $01 bit 1) while retaining I/O, exposing physical RAM under KERNAL at $E000-$FFFF; then restores HIRAM. The installed under-ROM hardware vectors remain effective while KERNAL is absent.\nEntry protocol: JSR $70F8; signed frame adjustment -136; bytecode $A27E-$A3CF (206 decoded operations); native calls $46A1, $6951. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":41596,"l":"vm_frame_adjust_a279","c":"Signed frame adjustment -136 for render_scene_text_with_substitutions at $A279, consumed by the $70F8 VM gateway before bytecode begins at $A27E. Render a text stream with trait/state substitutions and newline controls.","t":"word","b":[120,255],"d":[65400]},{"a":41598,"l":"vm_bytecode_a279","c":"Compiled bytecode belonging to render_scene_text_with_substitutions ($A279). Render a text stream with trait/state substitutions and newline controls. This position is the opcode of load_primary_const_1 at $A27E. The procedure decodes to 206 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_rom_glyph_to_buffer, copy_bounded_zero_terminated_string.","t":"byte","b":[65,42,12,208,44,209,211,43]},{"a":41606,"t":"byte","b":[216,205,163,11,140,128,0,218]},{"a":41614,"t":"byte","b":[215,178,162,11,90,192,216,160]},{"a":41622,"t":"byte","b":[162,65,42,13,208,45,209,214]},{"a":41630,"t":"byte","b":[175,162,142,0,8,61,10,208]},{"a":41638,"t":"byte","b":[42,209,179,59,172,161,70,174]},{"a":41646,"t":"byte","b":[8,214,128,162,137,127,205,11]},{"a":41654,"t":"byte","b":[218,43,11,92,194,215,203,162]},{"a":41662,"t":"byte","b":[11,139,26,197,215,203,162,164]},{"a":41670,"t":"byte","b":[99,132,215,35,163,11,210,140]},{"a":41678,"t":"byte","b":[64,127,187,176,43,11,139,99]},{"a":41686,"t":"byte","b":[196,216,239,162,142,0,8,61]},{"a":41694,"t":"byte","b":[10,208,42,209,179,11,139,100]},{"a":41702,"t":"byte","b":[182,143,48,179,172,161,70,174]},{"a":41710,"t":"byte","b":[8,11,89,196,216,12,163,142]},{"a":41718,"t":"byte","b":[0,8,61,10,208,42,209,179]},{"a":41726,"t":"byte","b":[11,139,100,185,90,182,143,48]},{"a":41734,"t":"byte","b":[179,172,161,70,174,8,142,0]},{"a":41742,"t":"byte","b":[8,61,10,208,42,209,179,11]},{"a":41750,"t":"byte","b":[90,185,143,48,179,172,161,70]},{"a":41758,"t":"byte","b":[174,8,214,128,162,164,99,132]},{"a":41766,"t":"byte","b":[134,122,255,11,143,244,210,205]},{"a":41774,"t":"byte","b":[130,122,255,187,134,122,255,11]},{"a":41782,"t":"byte","b":[210,140,64,127,187,176,43,138]},{"a":41790,"t":"byte","b":[253,0,205,165,1,0,218,169]},{"a":41798,"t":"byte","b":[1,0,141,127,11,210,179,130]},{"a":41806,"t":"byte","b":[122,255,176,180,187,176,179,222]},{"a":41814,"t":"byte","b":[124,255,179,172,81,105,174,6]},{"a":41822,"t":"byte","b":[66,205,165,1,0,219,169,1]},{"a":41830,"t":"byte","b":[0,64,162,251,255,222,124,255]},{"a":41838,"t":"byte","b":[134,120,255,130,120,255,211,216]},{"a":41846,"t":"byte","b":[202,163,14,216,175,163,130,120]},{"a":41854,"t":"byte","b":[255,211,179,137,97,180,195,216]},{"a":41862,"t":"byte","b":[175,163,130,120,255,211,139,122]},{"a":41870,"t":"byte","b":[195,216,175,163,142,0,8,61]},{"a":41878,"t":"byte","b":[10,208,42,209,179,130,120,255]},{"a":41886,"t":"byte","b":[208,134,120,255,209,211,143,224]},{"a":41894,"t":"byte","b":[179,172,161,70,174,8,214,199]},{"a":41902,"t":"byte","b":[163,142,0,8,61,10,208,42]},{"a":41910,"t":"byte","b":[209,179,130,120,255,208,134,120]},{"a":41918,"t":"byte","b":[255]},{"a":41919,"l":"overwritten_prior_phase_bootstrap_target_bytes","c":"Current-phase bytes at a logical address used by the prior bootstrap. The earlier callee has been overwritten before the first-interaction snapshot. Its copy result is already present and verified in the resident image; reconstructing the excluded loader occupant is not required for gameplay behavior.","t":"byte","b":[209,211,179,172,161,70,174,8],"x":[3771]},{"a":41927,"t":"byte","b":[214,113,163,214,128,162,13,208]},{"a":41935,"t":"byte","b":[207]},{"a":41936,"l":"execute_invalid_choice_descriptor","c":"Install and execute the resident invalid-choice fallback descriptor.\nInputs: none.\nOutputs: descriptor interpreter result, normally terminal $FE.\nAssumptions: fallback descriptor at $A3DF is intact.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; $CADD and display/choice state.\nHardware: through $9BF9.\nEntry protocol: JSR $70F8; signed frame adjustment +0; bytecode $A3D5-$A3DE (4 decoded operations); native calls $9BF9. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":41939,"l":"vm_frame_adjust_a3d0","c":"Signed frame adjustment 0 for execute_invalid_choice_descriptor at $A3D0, consumed by the $70F8 VM gateway before bytecode begins at $A3D5. Install and execute the resident invalid-choice fallback descriptor.","t":"word","b":[0,0],"d":[0]},{"a":41941,"l":"vm_bytecode_a3d0","c":"Compiled bytecode belonging to execute_invalid_choice_descriptor ($A3D0). Install and execute the resident invalid-choice fallback descriptor. This position is the opcode of load_primary_immediate_word at $A3D5. The procedure decodes to 4 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include interpret_interaction_descriptor.","t":"byte","b":[138,223,163,168,221,202,172,249]},{"a":41949,"t":"byte","b":[155,207]},{"a":41951,"l":"invalid_choice_response_descriptor","c":"Complete interaction descriptor used for an invalid combination of choices. Layout: one route byte $FE; zero conditions; zero effects; zero choice radices; ten-byte presentation script {$00,$01,$00,$01,$01,$01,$02,$01,$03,$05}; five little-endian text boundaries {$0000,$001C,$0032,$004A,$005C}; then the four NUL-terminated response fragments at $A3FB-$A456. The script composes the fragments and exits through descriptor control code 5.","t":"byte","b":[1,254,0,0,0,10,0,1]},{"a":41959,"t":"byte","b":[0,1,1,1,2,1,3,5]},{"a":41967,"t":"byte","b":[5,0,0,0,28,0,50,0]},{"a":41975,"t":"byte","b":[74,0,92,0]},{"a":41979,"l":"invalid_choice_response_text_pool","c":"Four zero-terminated response fragments: 'I don't know how to respond'; 'appropriately to that'; 'combination of choices.'; 'Please try again.'. The descriptor at $A3DF composes them for invalid choice combinations.","t":"byte","b":[73,32,100,111,110,39,116,32]},{"a":41987,"t":"byte","b":[107,110,111,119,32,104,111,119]},{"a":41995,"t":"byte","b":[32,116,111,32,114,101,115,112]},{"a":42003,"t":"byte","b":[111,110,100,0,97,112,112,114]},{"a":42011,"t":"byte","b":[111,112,114,105,97,116,101,108]},{"a":42019,"t":"byte","b":[121,32,116,111,32,116,104,97]},{"a":42027,"t":"byte","b":[116,0,99,111,109,98,105,110]},{"a":42035,"t":"byte","b":[97,116,105,111,110,32,111,102]},{"a":42043,"t":"byte","b":[32,99,104,111,105,99,101,115]},{"a":42051,"t":"byte","b":[46,0,80,108,101,97,115,101]},{"a":42059,"t":"byte","b":[32,116,114,121,32,97,103,97]},{"a":42067,"t":"byte","b":[105,110,46,0]},{"a":42071,"l":"enter_inline_native_a45d_save2","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $A45A preserves 2 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $A45D; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $A45A must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $A45D, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"x":[42270],"o":"runtime_descriptor_call_gateway"},{"a":42074,"l":"runtime_descriptor_a457_saved_zp","c":"Three-byte $7059 header: saved-workspace count 2, signed stack adjustment +0. Body starts immediately afterward at $A45D; there is no target-pointer field.","t":"byte","b":[2]},{"a":42075,"l":"native_frame_adjust_a457","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $A457. Header byte $A45A requests preservation of 2 bytes from zero-page workspace $30 onward; body starts $A45D. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":42077,"l":"initialize_grouped_lzw_decoder","c":"Initialize the grouped 9/10-bit LZW decoder. Inputs: none beyond the $7059 native frame. It clears the 2,048-byte prefix table $B57B-$BD7A and 1,024-byte suffix table $BD7B-$C17A, initializes suffix entries 0..255 to their literal byte values, sets group width to nine bytes/codes and the first dictionary threshold to 256. Outputs: decoder tables and counters ready for a MAP scene. Assumptions: Entered through the $A457 shim, which preserves two workspace bytes, so the $7059 frame must be live and X must be 0 on entry -- X is the zero it stores into the cursor and counter bytes. The 3,072 bytes of table space $B57B-$C17A must be free, which requires LORAM cleared in $01 so that RAM rather than BASIC ROM is mapped there, and the routine must be called once before any code is read from a MAP stream. Clobbers: A,X,Y, VM/native scratch and $B569-$B57A/$C243-$C245. Hardware: none.\nEntry: $7059 frame active. Return: RTS to $70D1. Physical extent $A45D-$A4DA.","t":"code","b":[142,119,181],"m":"stx","oa":46455,"o":"lzw_group_bit_position"},{"a":42080,"t":"code","b":[142,120,181],"m":"stx","oa":46456,"o":"lzw_bit_position_high"},{"a":42083,"t":"code","b":[140,69,194],"m":"sty","oa":49733,"o":"lzw_phrase_resume_flag"},{"a":42086,"t":"code","b":[142,107,181],"m":"stx","oa":46443,"o":"lzw_group_growth_threshold"},{"a":42089,"t":"code","b":[140,108,181],"m":"sty","oa":46444,"o":"lzw_growth_threshold_high"},{"a":42092,"t":"code","b":[169,9],"m":"lda","o":"#$09"},{"a":42094,"t":"code","b":[141,105,181],"m":"sta","oa":46441,"o":"lzw_group_code_width"},{"a":42097,"t":"code","b":[142,106,181],"m":"stx","oa":46442,"o":"lzw_code_width_high"},{"a":42100,"t":"code","b":[138],"m":"txa"},{"a":42101,"t":"code","b":[72],"m":"pha"},{"a":42102,"t":"code","b":[72],"m":"pha"},{"a":42103,"t":"code","b":[169,8],"m":"lda","o":"#$08"},{"a":42105,"t":"code","b":[72],"m":"pha"},{"a":42106,"t":"code","b":[138],"m":"txa"},{"a":42107,"t":"code","b":[72],"m":"pha"},{"a":42108,"t":"code","b":[169,181],"m":"lda","o":"#$B5"},{"a":42110,"t":"code","b":[72],"m":"pha"},{"a":42111,"t":"code","b":[169,123],"m":"lda","o":"#$7B"},{"a":42113,"t":"code","b":[72],"m":"pha"},{"a":42114,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":42117,"l":"inline_call_a482_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $A482. The authoritative bytes encode target $6521; execution resumes through cleanup JSR $A487.","t":"byte","b":[33,101]},{"a":42119,"l":"native_resume_a487","c":"Continuation of initialize_grouped_lzw_decoder after inline parameters or a typed-block boundary. Initialize the grouped 9/10-bit LZW decoder. The complete native body spans $A45D-$A4DA; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $A487; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":42122,"l":"inline_call_a482_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $A482. The stored value is $06, releasing 6 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[6]},{"a":42123,"l":"native_resume_a48b","c":"Continuation of initialize_grouped_lzw_decoder after inline parameters or a typed-block boundary. Initialize the grouped 9/10-bit LZW decoder. The complete native body spans $A45D-$A4DA; execution resumes here within that body. This segment follows the $6FF4 call at $A482 to fill_memory_range, then cleanup of 6 argument bytes by $7033.","t":"code","b":[72],"m":"pha"},{"a":42124,"t":"code","b":[72],"m":"pha"},{"a":42125,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":42127,"t":"code","b":[72],"m":"pha"},{"a":42128,"t":"code","b":[138],"m":"txa"},{"a":42129,"t":"code","b":[72],"m":"pha"},{"a":42130,"t":"code","b":[169,189],"m":"lda","o":"#$BD"},{"a":42132,"t":"code","b":[72],"m":"pha"},{"a":42133,"t":"code","b":[169,123],"m":"lda","o":"#$7B"},{"a":42135,"t":"code","b":[72],"m":"pha"},{"a":42136,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":42139,"l":"inline_call_a498_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $A498. The authoritative bytes encode target $6521; execution resumes through cleanup JSR $A49D.","t":"byte","b":[33,101]},{"a":42141,"l":"native_resume_a49d","c":"Continuation of initialize_grouped_lzw_decoder after inline parameters or a typed-block boundary. Initialize the grouped 9/10-bit LZW decoder. The complete native body spans $A45D-$A4DA; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $A49D; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":42144,"l":"inline_call_a498_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $A498. The stored value is $06, releasing 6 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[6]},{"a":42145,"l":"native_resume_a4a1","c":"Continuation of initialize_grouped_lzw_decoder after inline parameters or a typed-block boundary. Initialize the grouped 9/10-bit LZW decoder. The complete native body spans $A45D-$A4DA; execution resumes here within that body. This segment follows the $6FF4 call at $A498 to fill_memory_range, then cleanup of 6 argument bytes by $7033.","t":"code","b":[142,67,194],"m":"stx","oa":49731,"o":"lzw_next_dictionary_code"},{"a":42148,"t":"code","b":[142,68,194],"m":"stx","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":42151,"t":"code","b":[76,178,164],"m":"jmp","oa":42162,"o":"LAB_a4b2"},{"a":42154,"l":"LAB_a4aa","t":"code","b":[238,67,194],"m":"inc","oa":49731,"x":[42199],"o":"lzw_next_dictionary_code"},{"a":42157,"t":"code","b":[208,3],"m":"bne","oa":42162,"o":"LAB_a4b2"},{"a":42159,"t":"code","b":[238,68,194],"m":"inc","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":42162,"l":"LAB_a4b2","t":"code","b":[173,67,194],"m":"lda","oa":49731,"x":[42151,42157],"o":"lzw_next_dictionary_code"},{"a":42165,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":42167,"t":"code","b":[173,68,194],"m":"lda","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":42170,"t":"code","b":[233,1],"m":"sbc","o":"#$01"},{"a":42172,"t":"code","b":[112,5],"m":"bvs","oa":42179,"o":"LAB_a4c3"},{"a":42174,"t":"code","b":[48,3],"m":"bmi","oa":42179,"o":"LAB_a4c3"},{"a":42176,"t":"code","b":[76,218,164],"m":"jmp","oa":42202,"o":"LAB_a4da"},{"a":42179,"l":"LAB_a4c3","t":"code","b":[24],"m":"clc","x":[42172,42174]},{"a":42180,"t":"code","b":[173,67,194],"m":"lda","oa":49731,"o":"lzw_next_dictionary_code"},{"a":42183,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42185,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42187,"t":"code","b":[173,68,194],"m":"lda","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":42190,"t":"code","b":[105,189],"m":"adc","o":"#$BD"},{"a":42192,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42194,"t":"code","b":[173,67,194],"m":"lda","oa":49731,"o":"lzw_next_dictionary_code"},{"a":42197,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":42199,"t":"code","b":[76,170,164],"m":"jmp","oa":42154,"o":"LAB_a4aa"},{"a":42202,"l":"LAB_a4da","t":"code","b":[96],"m":"rts","x":[42176]},{"a":42203,"l":"enter_inline_native_a4e1_adjust_0","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $A4DE preserves 0 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $A4E1; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $A4DE must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $A4E1, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":42206,"l":"runtime_descriptor_a4db_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment +0. Body starts immediately afterward at $A4E1; there is no target-pointer field.","t":"byte","b":[0]},{"a":42207,"l":"native_frame_adjust_a4db","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $A4DB. Header byte $A4DE requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $A4E1. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":42209,"l":"reset_grouped_lzw_block_cursor","c":"Reset the per-block grouped-LZW cursor and dictionary-growth counters at $B577-$B57A and $C245 to zero while retaining the initialized literal tables. Inputs: none beyond the $7059 native frame. Outputs: next compressed scene starts at its first 9-bit group. Assumptions: Entered through the $A4DB shim with the $7059 frame live and X=0 on entry, since X supplies the zero written to all five state bytes. It assumes the literal tables built by $A45D are still intact and must be called between compressed scenes, never mid-code, because it resets the bit cursor without touching the dictionary. Clobbers: X-derived zero and the five state bytes; hardware: none.\nEntry: $7059 frame active, X=0. Return: RTS to $70D1. Physical extent $A4E1-$A4F0. Hardware: Touches no hardware at all: five stores to RAM at $B577-$B57A and $C245 followed by RTS.","t":"code","b":[142,119,181],"m":"stx","oa":46455,"o":"lzw_group_bit_position"},{"a":42212,"t":"code","b":[142,120,181],"m":"stx","oa":46456,"o":"lzw_bit_position_high"},{"a":42215,"t":"code","b":[142,121,181],"m":"stx","oa":46457,"o":"lzw_group_bit_limit"},{"a":42218,"t":"code","b":[142,122,181],"m":"stx","oa":46458,"o":"lzw_bit_limit_high"},{"a":42221,"t":"code","b":[142,69,194],"m":"stx","oa":49733,"o":"lzw_phrase_resume_flag"},{"a":42224,"t":"code","b":[96],"m":"rts"},{"a":42225,"l":"enter_inline_native_a4f7_adjust_0","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $A4F4 preserves 0 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $A4F7; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $A4F4 must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $A4F7, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":42228,"l":"runtime_descriptor_a4f1_saved_zp","c":"Three-byte $7059 header: saved-workspace count 0, signed stack adjustment +0. Body starts immediately afterward at $A4F7; there is no target-pointer field.","t":"byte","b":[0]},{"a":42229,"l":"native_frame_adjust_a4f1","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $A4F1. Header byte $A4F4 requests preservation of 0 bytes from zero-page workspace $30 onward; body starts $A4F7. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":42231,"l":"decompress_grouped_lzw_slice","c":"Expand the requested slice of one MAP scene with the game's grouped LZW codec. Inputs: the native frame supplies compressed-stream reader state, a destination cursor and the requested decompressed bounds. It initializes the decoder on first use, obtains grouped 9/10-bit codes through $A850, handles the ordinary and KwKwK cases, walks prefix/suffix chains, adds dictionary entries up to 1,024, skips bytes before the requested lower boundary and copies the selected range. Outputs: VM primary is the resulting destination/cursor value or $FFFF on malformed/end-of-stream input; caller bounds/cursors advance. Assumptions: the section directory supplied valid output bounds. Clobbers: A,X,Y, VM/native scratch, decoder tables and $B5xx/$C24x working state. Hardware: none.\nEntry: $7059 frame active. Return: RTS to $70D1. Physical extent $A4F7-$A849.","t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":42233,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42235,"t":"code","b":[200],"m":"iny"},{"a":42236,"t":"code","b":[17,6],"m":"ora","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42238,"t":"code","b":[240,3],"m":"beq","oa":42243,"o":"LAB_a503"},{"a":42240,"t":"code","b":[76,19,165],"m":"jmp","oa":42259,"o":"LAB_a513"},{"a":42243,"l":"LAB_a503","t":"code","b":[200],"m":"iny","x":[42238]},{"a":42244,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42246,"t":"code","b":[200],"m":"iny"},{"a":42247,"t":"code","b":[17,6],"m":"ora","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42249,"t":"code","b":[240,3],"m":"beq","oa":42254,"o":"LAB_a50e"},{"a":42251,"t":"code","b":[76,19,165],"m":"jmp","oa":42259,"o":"LAB_a513"},{"a":42254,"l":"LAB_a50e","t":"code","b":[134,10],"m":"stx","oa":10,"x":[42249],"o":"vm_primary_value_b0"},{"a":42256,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":42258,"t":"code","b":[96],"m":"rts"},{"a":42259,"l":"LAB_a513","t":"code","b":[173,69,194],"m":"lda","oa":49733,"x":[42240,42251],"o":"lzw_phrase_resume_flag"},{"a":42262,"t":"code","b":[208,3],"m":"bne","oa":42267,"o":"LAB_a51b"},{"a":42264,"t":"code","b":[76,30,165],"m":"jmp","oa":42270,"o":"LAB_a51e"},{"a":42267,"l":"LAB_a51b","t":"code","b":[76,8,167],"m":"jmp","oa":42760,"x":[42262],"o":"LAB_a708"},{"a":42270,"l":"LAB_a51e","t":"code","b":[32,87,164],"m":"jsr","oa":42071,"x":[42264],"o":"enter_inline_native_a45d_save2"},{"a":42273,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":42275,"t":"code","b":[169,200],"m":"lda","o":"#$C8"},{"a":42277,"t":"code","b":[141,70,194],"m":"sta","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42280,"t":"code","b":[142,71,194],"m":"stx","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42283,"t":"code","b":[160,10],"m":"ldy","o":"#$0A"},{"a":42285,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42287,"t":"code","b":[72],"m":"pha"},{"a":42288,"t":"code","b":[136],"m":"dey"},{"a":42289,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42291,"t":"code","b":[72],"m":"pha"},{"a":42292,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":42295,"l":"inline_call_a534_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $A534. The authoritative bytes encode target $A84A; execution resumes through cleanup JSR $A539.","t":"byte","b":[74,168]},{"a":42297,"l":"native_resume_a539","c":"Continuation of decompress_grouped_lzw_slice after inline parameters or a typed-block boundary. Expand the requested slice of one MAP scene with the game's grouped LZW codec. The complete native body spans $A4F7-$A849; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $A539; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":42300,"l":"inline_call_a534_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $A534. The stored value is $02, releasing 2 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[2]},{"a":42301,"l":"native_resume_a53d","c":"Continuation of decompress_grouped_lzw_slice after inline parameters or a typed-block boundary. Expand the requested slice of one MAP scene with the game's grouped LZW codec. The complete native body spans $A4F7-$A849; execution resumes here within that body. This segment follows the $6FF4 call at $A534 to enter_inline_native_a850_save2, then cleanup of 2 argument bytes by $7033.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":42303,"t":"code","b":[141,74,194],"m":"sta","oa":49738,"o":"lzw_previous_phrase_code"},{"a":42306,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":42308,"t":"code","b":[141,75,194],"m":"sta","oa":49739,"o":"lzw_previous_phrase_code_high"},{"a":42311,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":42313,"t":"code","b":[141,78,194],"m":"sta","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":42316,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":42318,"t":"code","b":[141,79,194],"m":"sta","oa":49743,"o":"lzw_phrase_first_byte_word_high"},{"a":42321,"t":"code","b":[173,78,194],"m":"lda","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":42324,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":42326,"t":"code","b":[208,5],"m":"bne","oa":42333,"o":"LAB_a55d"},{"a":42328,"t":"code","b":[173,79,194],"m":"lda","oa":49743,"o":"lzw_phrase_first_byte_word_high"},{"a":42331,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":42333,"l":"LAB_a55d","t":"code","b":[240,3],"m":"beq","oa":42338,"x":[42326],"o":"LAB_a562"},{"a":42335,"t":"code","b":[76,119,165],"m":"jmp","oa":42359,"o":"LAB_a577"},{"a":42338,"l":"LAB_a562","t":"code","b":[24],"m":"clc","x":[42333]},{"a":42339,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":42341,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42343,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":42345,"t":"code","b":[113,6],"m":"adc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42347,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":42349,"t":"code","b":[136],"m":"dey"},{"a":42350,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42352,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":42354,"t":"code","b":[113,6],"m":"adc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42356,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":42358,"t":"code","b":[96],"m":"rts"},{"a":42359,"l":"LAB_a577","t":"code","b":[138],"m":"txa","x":[42335]},{"a":42360,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":42362,"t":"code","b":[209,6],"m":"cmp","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42364,"t":"code","b":[200],"m":"iny"},{"a":42365,"t":"code","b":[241,6],"m":"sbc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42367,"t":"code","b":[112,5],"m":"bvs","oa":42374,"o":"LAB_a586"},{"a":42369,"t":"code","b":[48,3],"m":"bmi","oa":42374,"o":"LAB_a586"},{"a":42371,"t":"code","b":[76,152,165],"m":"jmp","oa":42392,"o":"LAB_a598"},{"a":42374,"l":"LAB_a586","t":"code","b":[24],"m":"clc","x":[42367,42369]},{"a":42375,"t":"code","b":[136],"m":"dey"},{"a":42376,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42378,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42380,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42382,"t":"code","b":[200],"m":"iny"},{"a":42383,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42385,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42387,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42389,"t":"code","b":[76,207,165],"m":"jmp","oa":42447,"o":"LAB_a5cf"},{"a":42392,"l":"LAB_a598","t":"code","b":[138],"m":"txa","x":[42371]},{"a":42393,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":42395,"t":"code","b":[209,6],"m":"cmp","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42397,"t":"code","b":[200],"m":"iny"},{"a":42398,"t":"code","b":[241,6],"m":"sbc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42400,"t":"code","b":[112,5],"m":"bvs","oa":42407,"o":"LAB_a5a7"},{"a":42402,"t":"code","b":[48,3],"m":"bmi","oa":42407,"o":"LAB_a5a7"},{"a":42404,"t":"code","b":[76,207,165],"m":"jmp","oa":42447,"o":"LAB_a5cf"},{"a":42407,"l":"LAB_a5a7","t":"code","b":[24],"m":"clc","x":[42400,42402]},{"a":42408,"t":"code","b":[136],"m":"dey"},{"a":42409,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42411,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42413,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42415,"t":"code","b":[200],"m":"iny"},{"a":42416,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42418,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42420,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42422,"t":"code","b":[24],"m":"clc"},{"a":42423,"t":"code","b":[160,11],"m":"ldy","o":"#$0B"},{"a":42425,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42427,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42429,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42431,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42433,"t":"code","b":[200],"m":"iny"},{"a":42434,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42436,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42438,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":42440,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42442,"t":"code","b":[173,78,194],"m":"lda","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":42445,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":42447,"l":"LAB_a5cf","t":"code","b":[160,10],"m":"ldy","x":[42389,42404,43079],"o":"#$0A"},{"a":42449,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42451,"t":"code","b":[72],"m":"pha"},{"a":42452,"t":"code","b":[136],"m":"dey"},{"a":42453,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42455,"t":"code","b":[72],"m":"pha"},{"a":42456,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":42459,"l":"inline_call_a5d8_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $A5D8. The authoritative bytes encode target $A84A; execution resumes through cleanup JSR $A5DD.","t":"byte","b":[74,168]},{"a":42461,"l":"native_resume_a5dd","c":"Continuation of decompress_grouped_lzw_slice after inline parameters or a typed-block boundary. Expand the requested slice of one MAP scene with the game's grouped LZW codec. The complete native body spans $A4F7-$A849; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $A5DD; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":42464,"l":"inline_call_a5d8_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $A5D8. The stored value is $02, releasing 2 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[2]},{"a":42465,"l":"native_resume_a5e1","c":"Continuation of decompress_grouped_lzw_slice after inline parameters or a typed-block boundary. Expand the requested slice of one MAP scene with the game's grouped LZW codec. The complete native body spans $A4F7-$A849; execution resumes here within that body. This segment follows the $6FF4 call at $A5D8 to enter_inline_native_a850_save2, then cleanup of 2 argument bytes by $7033.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":42467,"t":"code","b":[141,72,194],"m":"sta","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42470,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":42472,"t":"code","b":[141,73,194],"m":"sta","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42475,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":42477,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":42479,"t":"code","b":[208,4],"m":"bne","oa":42485,"o":"LAB_a5f5"},{"a":42481,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":42483,"t":"code","b":[201,255],"m":"cmp","o":"#$FF"},{"a":42485,"l":"LAB_a5f5","t":"code","b":[240,3],"m":"beq","oa":42490,"x":[42479],"o":"LAB_a5fa"},{"a":42487,"t":"code","b":[76,15,166],"m":"jmp","oa":42511,"o":"LAB_a60f"},{"a":42490,"l":"LAB_a5fa","t":"code","b":[24],"m":"clc","x":[42485]},{"a":42491,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":42493,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42495,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":42497,"t":"code","b":[113,6],"m":"adc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42499,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":42501,"t":"code","b":[136],"m":"dey"},{"a":42502,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42504,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":42506,"t":"code","b":[113,6],"m":"adc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42508,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":42510,"t":"code","b":[96],"m":"rts"},{"a":42511,"l":"LAB_a60f","t":"code","b":[173,72,194],"m":"lda","oa":49736,"x":[42487],"o":"lzw_prefix_walk_code"},{"a":42514,"t":"code","b":[141,76,194],"m":"sta","oa":49740,"o":"lzw_current_phrase_code"},{"a":42517,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42520,"t":"code","b":[141,77,194],"m":"sta","oa":49741,"o":"lzw_current_phrase_code_high"},{"a":42523,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42526,"t":"code","b":[205,67,194],"m":"cmp","oa":49731,"o":"lzw_next_dictionary_code"},{"a":42529,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42532,"t":"code","b":[237,68,194],"m":"sbc","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":42535,"t":"code","b":[112,4],"m":"bvs","oa":42541,"o":"LAB_a62d"},{"a":42537,"t":"code","b":[16,7],"m":"bpl","oa":42546,"o":"LAB_a632"},{"a":42539,"t":"code","b":[48,2],"m":"bmi","oa":42543,"o":"LAB_a62f"},{"a":42541,"l":"LAB_a62d","t":"code","b":[48,3],"m":"bmi","oa":42546,"x":[42535],"o":"LAB_a632"},{"a":42543,"l":"LAB_a62f","t":"code","b":[76,99,166],"m":"jmp","oa":42595,"x":[42539],"o":"LAB_a663"},{"a":42546,"l":"LAB_a632","t":"code","b":[24],"m":"clc","x":[42537,42541]},{"a":42547,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42550,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42552,"t":"code","b":[141,70,194],"m":"sta","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42555,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42558,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42560,"t":"code","b":[141,71,194],"m":"sta","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42563,"t":"code","b":[24],"m":"clc"},{"a":42564,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42567,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42569,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42571,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42574,"t":"code","b":[105,193],"m":"adc","o":"#$C1"},{"a":42576,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42578,"t":"code","b":[173,78,194],"m":"lda","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":42581,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":42583,"t":"code","b":[173,74,194],"m":"lda","oa":49738,"o":"lzw_previous_phrase_code"},{"a":42586,"t":"code","b":[141,72,194],"m":"sta","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42589,"t":"code","b":[173,75,194],"m":"lda","oa":49739,"o":"lzw_previous_phrase_code_high"},{"a":42592,"t":"code","b":[141,73,194],"m":"sta","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42595,"l":"LAB_a663","t":"code","b":[173,73,194],"m":"lda","oa":49737,"x":[42543,42696],"o":"lzw_prefix_walk_code_high"},{"a":42598,"t":"code","b":[41,255],"m":"and","o":"#$FF"},{"a":42600,"t":"code","b":[208,3],"m":"bne","oa":42605,"o":"LAB_a66d"},{"a":42602,"t":"code","b":[76,203,166],"m":"jmp","oa":42699,"o":"LAB_a6cb"},{"a":42605,"l":"LAB_a66d","t":"code","b":[24],"m":"clc","x":[42600]},{"a":42606,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42609,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42611,"t":"code","b":[141,70,194],"m":"sta","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42614,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42617,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42619,"t":"code","b":[141,71,194],"m":"sta","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42622,"t":"code","b":[24],"m":"clc"},{"a":42623,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42626,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42628,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42630,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42633,"t":"code","b":[105,193],"m":"adc","o":"#$C1"},{"a":42635,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42637,"t":"code","b":[24],"m":"clc"},{"a":42638,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42641,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42643,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":42645,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42648,"t":"code","b":[105,189],"m":"adc","o":"#$BD"},{"a":42650,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":42652,"t":"code","b":[161,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":42654,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":42656,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42659,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42661,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42664,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42666,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":42668,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":42670,"t":"code","b":[32,12,181],"m":"jsr","oa":46348,"o":"shift_u16_buffer_left_by_ax"},{"a":42673,"t":"code","b":[24],"m":"clc"},{"a":42674,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":42676,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42678,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":42680,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":42682,"t":"code","b":[105,181],"m":"adc","o":"#$B5"},{"a":42684,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":42686,"t":"code","b":[161,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":42688,"t":"code","b":[141,72,194],"m":"sta","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42691,"t":"code","b":[177,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo),y"},{"a":42693,"t":"code","b":[141,73,194],"m":"sta","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42696,"t":"code","b":[76,99,166],"m":"jmp","oa":42595,"o":"LAB_a663"},{"a":42699,"l":"LAB_a6cb","t":"code","b":[24],"m":"clc","x":[42602]},{"a":42700,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42703,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42705,"t":"code","b":[141,70,194],"m":"sta","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42708,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42711,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42713,"t":"code","b":[141,71,194],"m":"sta","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42716,"t":"code","b":[24],"m":"clc"},{"a":42717,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42720,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42722,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42724,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42727,"t":"code","b":[105,193],"m":"adc","o":"#$C1"},{"a":42729,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42731,"t":"code","b":[24],"m":"clc"},{"a":42732,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42735,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42737,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":42739,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42742,"t":"code","b":[105,189],"m":"adc","o":"#$BD"},{"a":42744,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":42746,"t":"code","b":[161,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":42748,"t":"code","b":[141,78,194],"m":"sta","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":42751,"t":"code","b":[138],"m":"txa"},{"a":42752,"t":"code","b":[141,79,194],"m":"sta","oa":49743,"o":"lzw_phrase_first_byte_word_high"},{"a":42755,"t":"code","b":[173,78,194],"m":"lda","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":42758,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":42760,"l":"LAB_a708","t":"code","b":[138],"m":"txa","x":[42267,42815]},{"a":42761,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":42763,"t":"code","b":[209,6],"m":"cmp","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42765,"t":"code","b":[200],"m":"iny"},{"a":42766,"t":"code","b":[241,6],"m":"sbc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42768,"t":"code","b":[112,5],"m":"bvs","oa":42775,"o":"LAB_a717"},{"a":42770,"t":"code","b":[48,3],"m":"bmi","oa":42775,"o":"LAB_a717"},{"a":42772,"t":"code","b":[76,66,167],"m":"jmp","oa":42818,"o":"LAB_a742"},{"a":42775,"l":"LAB_a717","t":"code","b":[173,70,194],"m":"lda","oa":49734,"x":[42768,42770],"o":"lzw_phrase_stack_index"},{"a":42778,"t":"code","b":[201,200],"m":"cmp","o":"#$C8"},{"a":42780,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42783,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":42785,"t":"code","b":[112,5],"m":"bvs","oa":42792,"o":"LAB_a728"},{"a":42787,"t":"code","b":[48,3],"m":"bmi","oa":42792,"o":"LAB_a728"},{"a":42789,"t":"code","b":[76,66,167],"m":"jmp","oa":42818,"o":"LAB_a742"},{"a":42792,"l":"LAB_a728","t":"code","b":[24],"m":"clc","x":[42785,42787]},{"a":42793,"t":"code","b":[136],"m":"dey"},{"a":42794,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42796,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42798,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42800,"t":"code","b":[200],"m":"iny"},{"a":42801,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42803,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42805,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42807,"t":"code","b":[238,70,194],"m":"inc","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42810,"t":"code","b":[208,3],"m":"bne","oa":42815,"o":"LAB_a73f"},{"a":42812,"t":"code","b":[238,71,194],"m":"inc","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42815,"l":"LAB_a73f","t":"code","b":[76,8,167],"m":"jmp","oa":42760,"x":[42810],"o":"LAB_a708"},{"a":42818,"l":"LAB_a742","t":"code","b":[138],"m":"txa","x":[42772,42789,42924]},{"a":42819,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":42821,"t":"code","b":[209,6],"m":"cmp","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42823,"t":"code","b":[200],"m":"iny"},{"a":42824,"t":"code","b":[241,6],"m":"sbc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42826,"t":"code","b":[112,5],"m":"bvs","oa":42833,"o":"LAB_a751"},{"a":42828,"t":"code","b":[48,3],"m":"bmi","oa":42833,"o":"LAB_a751"},{"a":42830,"t":"code","b":[76,175,167],"m":"jmp","oa":42927,"o":"LAB_a7af"},{"a":42833,"l":"LAB_a751","t":"code","b":[173,70,194],"m":"lda","oa":49734,"x":[42826,42828],"o":"lzw_phrase_stack_index"},{"a":42836,"t":"code","b":[201,200],"m":"cmp","o":"#$C8"},{"a":42838,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42841,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":42843,"t":"code","b":[112,5],"m":"bvs","oa":42850,"o":"LAB_a762"},{"a":42845,"t":"code","b":[48,3],"m":"bmi","oa":42850,"o":"LAB_a762"},{"a":42847,"t":"code","b":[76,175,167],"m":"jmp","oa":42927,"o":"LAB_a7af"},{"a":42850,"l":"LAB_a762","t":"code","b":[24],"m":"clc","x":[42843,42845]},{"a":42851,"t":"code","b":[160,11],"m":"ldy","o":"#$0B"},{"a":42853,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42855,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42857,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42859,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42861,"t":"code","b":[200],"m":"iny"},{"a":42862,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42864,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42866,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":42868,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42870,"t":"code","b":[24],"m":"clc"},{"a":42871,"t":"code","b":[173,70,194],"m":"lda","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42874,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":42876,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":42878,"t":"code","b":[141,70,194],"m":"sta","oa":49734,"o":"lzw_phrase_stack_index"},{"a":42881,"t":"code","b":[173,71,194],"m":"lda","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42884,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":42886,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":42888,"t":"code","b":[141,71,194],"m":"sta","oa":49735,"o":"lzw_phrase_stack_index_high"},{"a":42891,"t":"code","b":[24],"m":"clc"},{"a":42892,"t":"code","b":[165,22],"m":"lda","oa":22,"o":"transition_source_ptr_lo"},{"a":42894,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":42896,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":42898,"t":"code","b":[165,23],"m":"lda","oa":23,"o":"transition_source_ptr_hi"},{"a":42900,"t":"code","b":[105,193],"m":"adc","o":"#$C1"},{"a":42902,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":42904,"t":"code","b":[161,18],"m":"lda","oa":18,"o":"(native_math_scratch_b0,x)"},{"a":42906,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":42908,"t":"code","b":[24],"m":"clc"},{"a":42909,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":42911,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42913,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42915,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42917,"t":"code","b":[200],"m":"iny"},{"a":42918,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42920,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":42922,"t":"code","b":[145,6],"m":"sta","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42924,"t":"code","b":[76,66,167],"m":"jmp","oa":42818,"o":"LAB_a742"},{"a":42927,"l":"LAB_a7af","t":"code","b":[24],"m":"clc","x":[42830,42847]},{"a":42928,"t":"code","b":[160,13],"m":"ldy","o":"#$0D"},{"a":42930,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42932,"t":"code","b":[160,15],"m":"ldy","o":"#$0F"},{"a":42934,"t":"code","b":[113,6],"m":"adc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42936,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42938,"t":"code","b":[136],"m":"dey"},{"a":42939,"t":"code","b":[177,6],"m":"lda","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42941,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":42943,"t":"code","b":[113,6],"m":"adc","oa":6,"o":"(vm_frame_ptr_lo),y"},{"a":42945,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":42947,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":42949,"t":"code","b":[5,27],"m":"ora","oa":27,"o":"transition_destination_ptr_hi"},{"a":42951,"t":"code","b":[240,3],"m":"beq","oa":42956,"o":"LAB_a7cc"},{"a":42953,"t":"code","b":[76,209,167],"m":"jmp","oa":42961,"o":"LAB_a7d1"},{"a":42956,"l":"LAB_a7cc","t":"code","b":[134,10],"m":"stx","oa":10,"x":[42951],"o":"vm_primary_value_b0"},{"a":42958,"t":"code","b":[134,11],"m":"stx","oa":11,"o":"vm_primary_value_b1"},{"a":42960,"t":"code","b":[96],"m":"rts"},{"a":42961,"l":"LAB_a7d1","t":"code","b":[173,67,194],"m":"lda","oa":49731,"x":[42953],"o":"lzw_next_dictionary_code"},{"a":42964,"t":"code","b":[141,72,194],"m":"sta","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42967,"t":"code","b":[173,68,194],"m":"lda","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":42970,"t":"code","b":[141,73,194],"m":"sta","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42973,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":42976,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":42978,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42981,"t":"code","b":[233,4],"m":"sbc","o":"#$04"},{"a":42983,"t":"code","b":[112,5],"m":"bvs","oa":42990,"o":"LAB_a7ee"},{"a":42985,"t":"code","b":[48,3],"m":"bmi","oa":42990,"o":"LAB_a7ee"},{"a":42987,"t":"code","b":[76,59,168],"m":"jmp","oa":43067,"o":"LAB_a83b"},{"a":42990,"l":"LAB_a7ee","t":"code","b":[173,72,194],"m":"lda","oa":49736,"x":[42983,42985],"o":"lzw_prefix_walk_code"},{"a":42993,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":42995,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":42998,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43000,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43002,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":43004,"t":"code","b":[32,12,181],"m":"jsr","oa":46348,"o":"shift_u16_buffer_left_by_ax"},{"a":43007,"t":"code","b":[24],"m":"clc"},{"a":43008,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43010,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":43012,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":43014,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43016,"t":"code","b":[105,181],"m":"adc","o":"#$B5"},{"a":43018,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":43020,"t":"code","b":[173,74,194],"m":"lda","oa":49738,"o":"lzw_previous_phrase_code"},{"a":43023,"t":"code","b":[129,22],"m":"sta","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":43025,"t":"code","b":[173,75,194],"m":"lda","oa":49739,"o":"lzw_previous_phrase_code_high"},{"a":43028,"t":"code","b":[145,22],"m":"sta","oa":22,"o":"(transition_source_ptr_lo),y"},{"a":43030,"t":"code","b":[24],"m":"clc"},{"a":43031,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":43034,"t":"code","b":[105,123],"m":"adc","o":"#$7B"},{"a":43036,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43038,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":43041,"t":"code","b":[105,189],"m":"adc","o":"#$BD"},{"a":43043,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43045,"t":"code","b":[173,78,194],"m":"lda","oa":49742,"o":"lzw_phrase_first_byte_word"},{"a":43048,"t":"code","b":[129,26],"m":"sta","oa":26,"o":"(transition_destination_ptr_lo,x)"},{"a":43050,"t":"code","b":[24],"m":"clc"},{"a":43051,"t":"code","b":[173,72,194],"m":"lda","oa":49736,"o":"lzw_prefix_walk_code"},{"a":43054,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43056,"t":"code","b":[141,67,194],"m":"sta","oa":49731,"o":"lzw_next_dictionary_code"},{"a":43059,"t":"code","b":[173,73,194],"m":"lda","oa":49737,"o":"lzw_prefix_walk_code_high"},{"a":43062,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":43064,"t":"code","b":[141,68,194],"m":"sta","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":43067,"l":"LAB_a83b","t":"code","b":[173,76,194],"m":"lda","oa":49740,"x":[42987],"o":"lzw_current_phrase_code"},{"a":43070,"t":"code","b":[141,74,194],"m":"sta","oa":49738,"o":"lzw_previous_phrase_code"},{"a":43073,"t":"code","b":[173,77,194],"m":"lda","oa":49741,"o":"lzw_current_phrase_code_high"},{"a":43076,"t":"code","b":[141,75,194],"m":"sta","oa":49739,"o":"lzw_previous_phrase_code_high"},{"a":43079,"t":"code","b":[76,207,165],"m":"jmp","oa":42447,"o":"LAB_a5cf"},{"a":43082,"l":"enter_inline_native_a850_save2","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $A84D preserves 2 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $A850; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $A84D must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $A850, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"o":"runtime_descriptor_call_gateway"},{"a":43085,"l":"runtime_descriptor_a84a_saved_zp","c":"Three-byte $7059 header: saved-workspace count 2, signed stack adjustment +0. Body starts immediately afterward at $A850; there is no target-pointer field.","t":"byte","b":[2]},{"a":43086,"l":"native_frame_adjust_a84a","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $A84A. Header byte $A84D requests preservation of 2 bytes from zero-page workspace $30 onward; body starts $A850. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":43088,"l":"FetchGroupedLzwCodeBody","c":"Compares bit position with effective group limit and dictionary index with width threshold. Refills on group exhaustion; dictionary growth from index 256 to 257 increments width 9 to 10, sets threshold 1024 and discards the old group remainder. Refill calls the MAP payload reader, computes complete-code limit, or returns $FFFF on no bytes. Otherwise reads through $A96E and advances bit position by width. Four native branch tests stop before either disk refill or code read; actual disk errors remain to be tested.","t":"code","b":[173,119,181],"m":"lda","oa":46455,"o":"lzw_group_bit_position"},{"a":43091,"t":"code","b":[205,121,181],"m":"cmp","oa":46457,"o":"lzw_group_bit_limit"},{"a":43094,"t":"code","b":[173,120,181],"m":"lda","oa":46456,"o":"lzw_bit_position_high"},{"a":43097,"t":"code","b":[237,122,181],"m":"sbc","oa":46458,"o":"lzw_bit_limit_high"},{"a":43100,"t":"code","b":[112,4],"m":"bvs","oa":43106,"o":"LAB_a862"},{"a":43102,"t":"code","b":[48,7],"m":"bmi","oa":43111,"o":"LAB_a867"},{"a":43104,"t":"code","b":[16,2],"m":"bpl","oa":43108,"o":"LAB_a864"},{"a":43106,"l":"LAB_a862","t":"code","b":[16,3],"m":"bpl","oa":43111,"x":[43100],"o":"LAB_a867"},{"a":43108,"l":"LAB_a864","t":"code","b":[76,126,168],"m":"jmp","oa":43134,"x":[43104],"o":"LAB_a87e"},{"a":43111,"l":"LAB_a867","t":"code","b":[173,107,181],"m":"lda","oa":46443,"x":[43102,43106],"o":"lzw_group_growth_threshold"},{"a":43114,"t":"code","b":[205,67,194],"m":"cmp","oa":49731,"o":"lzw_next_dictionary_code"},{"a":43117,"t":"code","b":[173,108,181],"m":"lda","oa":46444,"o":"lzw_growth_threshold_high"},{"a":43120,"t":"code","b":[237,68,194],"m":"sbc","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":43123,"t":"code","b":[112,4],"m":"bvs","oa":43129,"o":"LAB_a879"},{"a":43125,"t":"code","b":[48,7],"m":"bmi","oa":43134,"o":"LAB_a87e"},{"a":43127,"t":"code","b":[16,2],"m":"bpl","oa":43131,"o":"LAB_a87b"},{"a":43129,"l":"LAB_a879","t":"code","b":[16,3],"m":"bpl","oa":43134,"x":[43123],"o":"LAB_a87e"},{"a":43131,"l":"LAB_a87b","t":"code","b":[76,69,169],"m":"jmp","oa":43333,"x":[43127],"o":"LAB_a945"},{"a":43134,"l":"LAB_a87e","t":"code","b":[173,107,181],"m":"lda","oa":46443,"x":[43108,43125,43129],"o":"lzw_group_growth_threshold"},{"a":43137,"t":"code","b":[205,67,194],"m":"cmp","oa":49731,"o":"lzw_next_dictionary_code"},{"a":43140,"t":"code","b":[173,108,181],"m":"lda","oa":46444,"o":"lzw_growth_threshold_high"},{"a":43143,"t":"code","b":[237,68,194],"m":"sbc","oa":49732,"o":"lzw_next_dictionary_index_high"},{"a":43146,"t":"code","b":[112,4],"m":"bvs","oa":43152,"o":"LAB_a890"},{"a":43148,"t":"code","b":[48,7],"m":"bmi","oa":43157,"o":"LAB_a895"},{"a":43150,"t":"code","b":[16,2],"m":"bpl","oa":43154,"o":"LAB_a892"},{"a":43152,"l":"LAB_a890","t":"code","b":[16,3],"m":"bpl","oa":43157,"x":[43146],"o":"LAB_a895"},{"a":43154,"l":"LAB_a892","t":"code","b":[76,218,168],"m":"jmp","oa":43226,"x":[43150],"o":"LAB_a8da"},{"a":43157,"l":"LAB_a895","t":"code","b":[238,105,181],"m":"inc","oa":46441,"x":[43148,43152],"o":"lzw_group_code_width"},{"a":43160,"t":"code","b":[208,3],"m":"bne","oa":43165,"o":"LAB_a89d"},{"a":43162,"t":"code","b":[238,106,181],"m":"inc","oa":46442,"o":"lzw_code_width_high"},{"a":43165,"l":"LAB_a89d","t":"code","b":[173,105,181],"m":"lda","oa":46441,"x":[43160],"o":"lzw_group_code_width"},{"a":43168,"t":"code","b":[201,10],"m":"cmp","o":"#$0A"},{"a":43170,"t":"code","b":[208,5],"m":"bne","oa":43177,"o":"LAB_a8a9"},{"a":43172,"t":"code","b":[173,106,181],"m":"lda","oa":46442,"o":"lzw_code_width_high"},{"a":43175,"t":"code","b":[201,0],"m":"cmp","o":"#$00"},{"a":43177,"l":"LAB_a8a9","t":"code","b":[240,3],"m":"beq","oa":43182,"x":[43170],"o":"LAB_a8ae"},{"a":43179,"t":"code","b":[76,185,168],"m":"jmp","oa":43193,"o":"LAB_a8b9"},{"a":43182,"l":"LAB_a8ae","t":"code","b":[142,107,181],"m":"stx","oa":46443,"x":[43177],"o":"lzw_group_growth_threshold"},{"a":43185,"t":"code","b":[169,4],"m":"lda","o":"#$04"},{"a":43187,"t":"code","b":[141,108,181],"m":"sta","oa":46444,"o":"lzw_growth_threshold_high"},{"a":43190,"t":"code","b":[76,218,168],"m":"jmp","oa":43226,"o":"LAB_a8da"},{"a":43193,"l":"LAB_a8b9","t":"code","b":[169,1],"m":"lda","x":[43179],"o":"#$01"},{"a":43195,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43197,"t":"code","b":[134,27],"m":"stx","oa":27,"o":"transition_destination_ptr_hi"},{"a":43199,"t":"code","b":[173,106,181],"m":"lda","oa":46442,"o":"lzw_code_width_high"},{"a":43202,"t":"code","b":[170],"m":"tax"},{"a":43203,"t":"code","b":[173,105,181],"m":"lda","oa":46441,"o":"lzw_group_code_width"},{"a":43206,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":43208,"t":"code","b":[32,12,181],"m":"jsr","oa":46348,"o":"shift_u16_buffer_left_by_ax"},{"a":43211,"t":"code","b":[24],"m":"clc"},{"a":43212,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43214,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":43216,"t":"code","b":[141,107,181],"m":"sta","oa":46443,"o":"lzw_group_growth_threshold"},{"a":43219,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43221,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":43223,"t":"code","b":[141,108,181],"m":"sta","oa":46444,"o":"lzw_growth_threshold_high"},{"a":43226,"l":"LAB_a8da","t":"code","b":[173,106,181],"m":"lda","oa":46442,"x":[43154,43190],"o":"lzw_code_width_high"},{"a":43229,"t":"code","b":[72],"m":"pha"},{"a":43230,"t":"code","b":[173,105,181],"m":"lda","oa":46441,"o":"lzw_group_code_width"},{"a":43233,"t":"code","b":[72],"m":"pha"},{"a":43234,"t":"code","b":[169,181],"m":"lda","o":"#$B5"},{"a":43236,"t":"code","b":[72],"m":"pha"},{"a":43237,"t":"code","b":[169,109],"m":"lda","o":"#$6D"},{"a":43239,"t":"code","b":[72],"m":"pha"},{"a":43240,"t":"code","b":[32,244,111],"m":"jsr","oa":28660,"o":"inline_native_call_gateway"},{"a":43243,"l":"inline_call_a8e8_target_ptr","c":"Inline little-endian native target pointer consumed by $6FF4 after the JSR at $A8E8. The authoritative bytes encode target $5CE0; execution resumes through cleanup JSR $A8ED.","t":"byte","b":[224,92]},{"a":43245,"l":"native_resume_a8ed","c":"Continuation of read_next_grouped_lzw_code after inline parameters or a typed-block boundary. Read the next LZW code from the current fixed-size byte group. The complete native body spans $A850-$A96D; execution resumes here within that body. The preceding typed inline header ends immediately before this resume point, $A8ED; the first captured opcode byte is $20.","t":"code","b":[32,51,112],"m":"jsr","oa":28723,"o":"inline_native_call_cleanup"},{"a":43248,"l":"inline_call_a8e8_arg_bytes","c":"Inline argument-byte count consumed by cleanup helper $7033 for the native call begun at $A8E8. The stored value is $04, releasing 4 bytes from the VM expression stack before resuming after this byte.","t":"byte","b":[4]},{"a":43249,"l":"native_resume_a8f1","c":"Continuation of read_next_grouped_lzw_code after inline parameters or a typed-block boundary. Read the next LZW code from the current fixed-size byte group. The complete native body spans $A850-$A96D; execution resumes here within that body. This segment follows the $6FF4 call at $A8E8 to enter_inline_native_5ce6_save4_adjust_minus2, then cleanup of 4 argument bytes by $7033.","t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":43251,"t":"code","b":[141,121,181],"m":"sta","oa":46457,"o":"lzw_group_bit_limit"},{"a":43254,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":43256,"t":"code","b":[141,122,181],"m":"sta","oa":46458,"o":"lzw_bit_limit_high"},{"a":43259,"t":"code","b":[138],"m":"txa"},{"a":43260,"t":"code","b":[205,121,181],"m":"cmp","oa":46457,"o":"lzw_group_bit_limit"},{"a":43263,"t":"code","b":[237,122,181],"m":"sbc","oa":46458,"o":"lzw_bit_limit_high"},{"a":43266,"t":"code","b":[112,2],"m":"bvs","oa":43270,"o":"LAB_a906"},{"a":43268,"t":"code","b":[16,3],"m":"bpl","oa":43273,"o":"LAB_a909"},{"a":43270,"l":"LAB_a906","t":"code","b":[76,16,169],"m":"jmp","oa":43280,"x":[43266],"o":"LAB_a910"},{"a":43273,"l":"LAB_a909","t":"code","b":[169,255],"m":"lda","x":[43268],"o":"#$FF"},{"a":43275,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":43277,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":43279,"t":"code","b":[96],"m":"rts"},{"a":43280,"l":"LAB_a910","t":"code","b":[142,119,181],"m":"stx","oa":46455,"x":[43270],"o":"lzw_group_bit_position"},{"a":43283,"t":"code","b":[142,120,181],"m":"stx","oa":46456,"o":"lzw_bit_position_high"},{"a":43286,"t":"code","b":[173,121,181],"m":"lda","oa":46457,"o":"lzw_group_bit_limit"},{"a":43289,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43291,"t":"code","b":[173,122,181],"m":"lda","oa":46458,"o":"lzw_bit_limit_high"},{"a":43294,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43296,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43298,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":43300,"t":"code","b":[32,12,181],"m":"jsr","oa":46348,"o":"shift_u16_buffer_left_by_ax"},{"a":43303,"t":"code","b":[24],"m":"clc"},{"a":43304,"t":"code","b":[173,105,181],"m":"lda","oa":46441,"o":"lzw_group_code_width"},{"a":43307,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":43309,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":43311,"t":"code","b":[173,106,181],"m":"lda","oa":46442,"o":"lzw_code_width_high"},{"a":43314,"t":"code","b":[105,255],"m":"adc","o":"#$FF"},{"a":43316,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":43318,"t":"code","b":[56],"m":"sec"},{"a":43319,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43321,"t":"code","b":[229,22],"m":"sbc","oa":22,"o":"transition_source_ptr_lo"},{"a":43323,"t":"code","b":[141,121,181],"m":"sta","oa":46457,"o":"lzw_group_bit_limit"},{"a":43326,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43328,"t":"code","b":[229,23],"m":"sbc","oa":23,"o":"transition_source_ptr_hi"},{"a":43330,"t":"code","b":[141,122,181],"m":"sta","oa":46458,"o":"lzw_bit_limit_high"},{"a":43333,"l":"LAB_a945","t":"code","b":[32,110,169],"m":"jsr","oa":43374,"x":[43131],"o":"enter_inline_native_a974_save10"},{"a":43336,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":43338,"t":"code","b":[165,10],"m":"lda","oa":10,"o":"vm_primary_value_b0"},{"a":43340,"t":"code","b":[133,48],"m":"sta","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43342,"t":"code","b":[165,11],"m":"lda","oa":11,"o":"vm_primary_value_b1"},{"a":43344,"t":"code","b":[133,49],"m":"sta","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43346,"t":"code","b":[24],"m":"clc"},{"a":43347,"t":"code","b":[173,119,181],"m":"lda","oa":46455,"o":"lzw_group_bit_position"},{"a":43350,"t":"code","b":[109,105,181],"m":"adc","oa":46441,"o":"lzw_group_code_width"},{"a":43353,"t":"code","b":[141,119,181],"m":"sta","oa":46455,"o":"lzw_group_bit_position"},{"a":43356,"t":"code","b":[173,120,181],"m":"lda","oa":46456,"o":"lzw_bit_position_high"},{"a":43359,"t":"code","b":[109,106,181],"m":"adc","oa":46442,"o":"lzw_code_width_high"},{"a":43362,"t":"code","b":[141,120,181],"m":"sta","oa":46456,"o":"lzw_bit_position_high"},{"a":43365,"t":"code","b":[165,48],"m":"lda","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43367,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":43369,"t":"code","b":[165,49],"m":"lda","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43371,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":43373,"t":"code","b":[96],"m":"rts"},{"a":43374,"l":"enter_inline_native_a974_save10","c":"Inline-native entry shim. JSR $7059 consumes both hardware returns; header $A971 preserves 10 workspace bytes and adjusts the VM expression stack by +0. Execution begins at physical RAM $A974; those bytes are opcodes, not an encoded target. RTS returns through $70D1. Assumptions: The three header bytes at $A971 must remain typed as data: $7059 reads them as {saved-workspace byte count, signed 16-bit expression-stack adjustment} and computes the body entry as return+4, i.e. $A974, so inserting or moving a byte relocates execution. Entry must be by JSR from VM or native code -- there is no fallthrough into the header -- and the body leaves through the synthetic $70D0/$70D1 epilogue, never back to this stub. Hardware: Touches no hardware: a single JSR to the runtime descriptor gateway at $7059. Inputs: none consumed here \u2014 the body reads no register or memory location before handing control to runtime_descriptor_call_gateway, whose inputs apply unchanged. Outputs: none of its own; runtime_descriptor_call_gateway consumes the pushed return address and continues at the body that follows the two header bytes, so the observable outputs are those of the routine it introduces. Clobbers: nothing of its own \u2014 control leaves at once, so only the callee's clobbers apply.","t":"code","b":[32,89,112],"m":"jsr","oa":28761,"x":[43333],"o":"runtime_descriptor_call_gateway"},{"a":43377,"l":"runtime_descriptor_a96e_saved_zp","c":"Three-byte $7059 header: saved-workspace count 10, signed stack adjustment +0. Body starts immediately afterward at $A974; there is no target-pointer field.","t":"byte","b":[10]},{"a":43378,"l":"native_frame_adjust_a96e","c":"Signed native-procedure frame adjustment 0 after $7059 gateway at $A96E. Header byte $A971 requests preservation of 10 bytes from zero-page workspace $30 onward; body starts $A974. Gateway builds saved frame and local workspace, epilogue $70D1 restores it. These two bytes are inline header data, not instructions.","t":"word","b":[0,0],"d":[0]},{"a":43380,"l":"ReadGroupedLzwCodeBody","c":"Native body entered after the $A96E compiled-procedure header. Reads one MSB-first code from $B56D at word bit position $B577 using width $B569; returns the masked code in $0A/$0B without advancing the position. Uses $30-$39 and arithmetic helpers $B50C/$B529, assuming X=0. Sixteen controlled calls at both widths and all eight group positions match independent packing. Direct-body tests do not exercise the gateway prologue or disk refill.","t":"code","b":[173,119,181],"m":"lda","oa":46455,"o":"lzw_group_bit_position"},{"a":43383,"t":"code","b":[133,48],"m":"sta","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43385,"t":"code","b":[173,120,181],"m":"lda","oa":46456,"o":"lzw_bit_position_high"},{"a":43388,"t":"code","b":[133,49],"m":"sta","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43390,"t":"code","b":[173,105,181],"m":"lda","oa":46441,"o":"lzw_group_code_width"},{"a":43393,"t":"code","b":[133,50],"m":"sta","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":43395,"t":"code","b":[173,106,181],"m":"lda","oa":46442,"o":"lzw_code_width_high"},{"a":43398,"t":"code","b":[133,51],"m":"sta","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":43400,"t":"code","b":[165,48],"m":"lda","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43402,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43404,"t":"code","b":[165,49],"m":"lda","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43406,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43408,"t":"code","b":[169,3],"m":"lda","o":"#$03"},{"a":43410,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":43412,"t":"code","b":[32,41,181],"m":"jsr","oa":46377,"o":"shift_i16_buffer_right_by_ax"},{"a":43415,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43417,"t":"code","b":[133,54],"m":"sta","oa":54,"o":"AlterEgo_Runtime_compiler_workspace_36"},{"a":43419,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43421,"t":"code","b":[133,55],"m":"sta","oa":55,"o":"AlterEgo_Runtime_compiler_workspace_37"},{"a":43423,"t":"code","b":[165,48],"m":"lda","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43425,"t":"code","b":[41,7],"m":"and","o":"#$07"},{"a":43427,"t":"code","b":[133,48],"m":"sta","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43429,"t":"code","b":[165,49],"m":"lda","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43431,"t":"code","b":[41,0],"m":"and","o":"#$00"},{"a":43433,"t":"code","b":[133,49],"m":"sta","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43435,"t":"code","b":[24],"m":"clc"},{"a":43436,"t":"code","b":[165,50],"m":"lda","oa":50,"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":43438,"t":"code","b":[101,48],"m":"adc","oa":48,"o":"AlterEgo_Runtime_compiler_workspace_30"},{"a":43440,"t":"code","b":[133,52],"m":"sta","oa":52,"o":"AlterEgo_Runtime_compiler_workspace_34"},{"a":43442,"t":"code","b":[165,51],"m":"lda","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":43444,"t":"code","b":[101,49],"m":"adc","oa":49,"o":"AlterEgo_Runtime_compiler_workspace_31"},{"a":43446,"t":"code","b":[133,53],"m":"sta","oa":53,"o":"AlterEgo_Runtime_compiler_workspace_35"},{"a":43448,"t":"code","b":[134,56],"m":"stx","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43450,"t":"code","b":[134,57],"m":"stx","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43452,"l":"LAB_a9bc","t":"code","b":[56],"m":"sec","x":[43612]},{"a":43453,"t":"code","b":[165,52],"m":"lda","oa":52,"o":"AlterEgo_Runtime_compiler_workspace_34"},{"a":43455,"t":"code","b":[233,8],"m":"sbc","o":"#$08"},{"a":43457,"t":"code","b":[133,52],"m":"sta","oa":52,"o":"AlterEgo_Runtime_compiler_workspace_34"},{"a":43459,"t":"code","b":[165,53],"m":"lda","oa":53,"o":"AlterEgo_Runtime_compiler_workspace_35"},{"a":43461,"t":"code","b":[233,0],"m":"sbc","o":"#$00"},{"a":43463,"t":"code","b":[133,53],"m":"sta","oa":53,"o":"AlterEgo_Runtime_compiler_workspace_35"},{"a":43465,"t":"code","b":[138],"m":"txa"},{"a":43466,"t":"code","b":[197,52],"m":"cmp","oa":52,"o":"AlterEgo_Runtime_compiler_workspace_34"},{"a":43468,"t":"code","b":[229,53],"m":"sbc","oa":53,"o":"AlterEgo_Runtime_compiler_workspace_35"},{"a":43470,"t":"code","b":[112,5],"m":"bvs","oa":43477,"o":"LAB_a9d5"},{"a":43472,"t":"code","b":[48,3],"m":"bmi","oa":43477,"o":"LAB_a9d5"},{"a":43474,"t":"code","b":[76,19,170],"m":"jmp","oa":43539,"o":"LAB_aa13"},{"a":43477,"l":"LAB_a9d5","t":"code","b":[24],"m":"clc","x":[43470,43472]},{"a":43478,"t":"code","b":[165,54],"m":"lda","oa":54,"o":"AlterEgo_Runtime_compiler_workspace_36"},{"a":43480,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43482,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43484,"t":"code","b":[133,54],"m":"sta","oa":54,"o":"AlterEgo_Runtime_compiler_workspace_36"},{"a":43486,"t":"code","b":[165,55],"m":"lda","oa":55,"o":"AlterEgo_Runtime_compiler_workspace_37"},{"a":43488,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43490,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":43492,"t":"code","b":[133,55],"m":"sta","oa":55,"o":"AlterEgo_Runtime_compiler_workspace_37"},{"a":43494,"t":"code","b":[24],"m":"clc"},{"a":43495,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43497,"t":"code","b":[105,109],"m":"adc","o":"#$6D"},{"a":43499,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":43501,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43503,"t":"code","b":[105,181],"m":"adc","o":"#$B5"},{"a":43505,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":43507,"t":"code","b":[161,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":43509,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43511,"t":"code","b":[138],"m":"txa"},{"a":43512,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43514,"t":"code","b":[165,53],"m":"lda","oa":53,"o":"AlterEgo_Runtime_compiler_workspace_35"},{"a":43516,"t":"code","b":[170],"m":"tax"},{"a":43517,"t":"code","b":[165,52],"m":"lda","oa":52,"o":"AlterEgo_Runtime_compiler_workspace_34"},{"a":43519,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":43521,"t":"code","b":[32,12,181],"m":"jsr","oa":46348,"o":"shift_u16_buffer_left_by_ax"},{"a":43524,"t":"code","b":[165,56],"m":"lda","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43526,"t":"code","b":[5,26],"m":"ora","oa":26,"o":"transition_destination_ptr_lo"},{"a":43528,"t":"code","b":[133,56],"m":"sta","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43530,"t":"code","b":[165,57],"m":"lda","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43532,"t":"code","b":[5,27],"m":"ora","oa":27,"o":"transition_destination_ptr_hi"},{"a":43534,"t":"code","b":[133,57],"m":"sta","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43536,"t":"code","b":[76,92,170],"m":"jmp","oa":43612,"o":"LAB_aa5c"},{"a":43539,"l":"LAB_aa13","t":"code","b":[24],"m":"clc","x":[43474]},{"a":43540,"t":"code","b":[165,54],"m":"lda","oa":54,"o":"AlterEgo_Runtime_compiler_workspace_36"},{"a":43542,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43544,"t":"code","b":[105,1],"m":"adc","o":"#$01"},{"a":43546,"t":"code","b":[133,54],"m":"sta","oa":54,"o":"AlterEgo_Runtime_compiler_workspace_36"},{"a":43548,"t":"code","b":[165,55],"m":"lda","oa":55,"o":"AlterEgo_Runtime_compiler_workspace_37"},{"a":43550,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43552,"t":"code","b":[105,0],"m":"adc","o":"#$00"},{"a":43554,"t":"code","b":[133,55],"m":"sta","oa":55,"o":"AlterEgo_Runtime_compiler_workspace_37"},{"a":43556,"t":"code","b":[24],"m":"clc"},{"a":43557,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43559,"t":"code","b":[105,109],"m":"adc","o":"#$6D"},{"a":43561,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":43563,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43565,"t":"code","b":[105,181],"m":"adc","o":"#$B5"},{"a":43567,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":43569,"t":"code","b":[56],"m":"sec"},{"a":43570,"t":"code","b":[138],"m":"txa"},{"a":43571,"t":"code","b":[229,52],"m":"sbc","oa":52,"o":"AlterEgo_Runtime_compiler_workspace_34"},{"a":43573,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43575,"t":"code","b":[138],"m":"txa"},{"a":43576,"t":"code","b":[229,53],"m":"sbc","oa":53,"o":"AlterEgo_Runtime_compiler_workspace_35"},{"a":43578,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43580,"t":"code","b":[161,22],"m":"lda","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":43582,"t":"code","b":[133,18],"m":"sta","oa":18,"o":"native_math_scratch_b0"},{"a":43584,"t":"code","b":[138],"m":"txa"},{"a":43585,"t":"code","b":[133,19],"m":"sta","oa":19,"o":"native_math_scratch_b1"},{"a":43587,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43589,"t":"code","b":[170],"m":"tax"},{"a":43590,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43592,"t":"code","b":[160,18],"m":"ldy","o":"#$12"},{"a":43594,"t":"code","b":[32,41,181],"m":"jsr","oa":46377,"o":"shift_i16_buffer_right_by_ax"},{"a":43597,"t":"code","b":[165,56],"m":"lda","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43599,"t":"code","b":[5,18],"m":"ora","oa":18,"o":"native_math_scratch_b0"},{"a":43601,"t":"code","b":[133,56],"m":"sta","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43603,"t":"code","b":[165,57],"m":"lda","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43605,"t":"code","b":[5,19],"m":"ora","oa":19,"o":"native_math_scratch_b1"},{"a":43607,"t":"code","b":[133,57],"m":"sta","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43609,"t":"code","b":[76,95,170],"m":"jmp","oa":43615,"o":"LAB_aa5f"},{"a":43612,"l":"LAB_aa5c","t":"code","b":[76,188,169],"m":"jmp","oa":43452,"x":[43536],"o":"LAB_a9bc"},{"a":43615,"l":"LAB_aa5f","t":"code","b":[165,50],"m":"lda","oa":50,"x":[43609],"o":"AlterEgo_Runtime_compiler_workspace_32"},{"a":43617,"t":"code","b":[133,26],"m":"sta","oa":26,"o":"transition_destination_ptr_lo"},{"a":43619,"t":"code","b":[165,51],"m":"lda","oa":51,"o":"AlterEgo_Runtime_compiler_workspace_33"},{"a":43621,"t":"code","b":[133,27],"m":"sta","oa":27,"o":"transition_destination_ptr_hi"},{"a":43623,"t":"code","b":[169,1],"m":"lda","o":"#$01"},{"a":43625,"t":"code","b":[160,26],"m":"ldy","o":"#$1A"},{"a":43627,"t":"code","b":[32,12,181],"m":"jsr","oa":46348,"o":"shift_u16_buffer_left_by_ax"},{"a":43630,"t":"code","b":[24],"m":"clc"},{"a":43631,"t":"code","b":[165,26],"m":"lda","oa":26,"o":"transition_destination_ptr_lo"},{"a":43633,"t":"code","b":[105,80],"m":"adc","o":"#$50"},{"a":43635,"t":"code","b":[133,22],"m":"sta","oa":22,"o":"transition_source_ptr_lo"},{"a":43637,"t":"code","b":[165,27],"m":"lda","oa":27,"o":"transition_destination_ptr_hi"},{"a":43639,"t":"code","b":[105,194],"m":"adc","o":"#$C2"},{"a":43641,"t":"code","b":[133,23],"m":"sta","oa":23,"o":"transition_source_ptr_hi"},{"a":43643,"t":"code","b":[165,56],"m":"lda","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43645,"t":"code","b":[33,22],"m":"and","oa":22,"o":"(transition_source_ptr_lo,x)"},{"a":43647,"t":"code","b":[133,56],"m":"sta","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43649,"t":"code","b":[165,57],"m":"lda","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43651,"t":"code","b":[49,22],"m":"and","oa":22,"o":"(transition_source_ptr_lo),y"},{"a":43653,"t":"code","b":[133,57],"m":"sta","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43655,"t":"code","b":[165,56],"m":"lda","oa":56,"o":"AlterEgo_Runtime_compiler_workspace_38"},{"a":43657,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":43659,"t":"code","b":[165,57],"m":"lda","oa":57,"o":"AlterEgo_Runtime_compiler_workspace_39"},{"a":43661,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":43663,"t":"code","b":[96],"m":"rts"},{"a":43664,"l":"show_lifetime_status_screen","c":"Render the LIFE TIME status screen. Inputs: none. It displays state-vector age_years at $7F74 beside 'YEARS:' and the 16-bit component at $7FC4 beside the resident literal 'MONTHS:', then offers RETURN TO GAME. Output: return-to-game selection. Assumptions: time state is initialized. Clobbers: VM values, expression stack/frame locals, numeric text buffers and selection screen state. Hardware: VIC-II/CIA through display/input helpers.\nEntry protocol: JSR $70F8; frame adjustment -32; bytecode $AA95-$AB7D; native calls $42D3, $439D, $44C5, $52D9, $536A, $54BF, $550C, $552D and $5F30. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":43667,"l":"vm_frame_adjust_aa90","c":"Signed frame adjustment -32 for show_lifetime_status_screen at $AA90, consumed by the $70F8 VM gateway before bytecode begins at $AA95. Render the LIFE TIME status screen. Inputs: none. It displays state-vector age_years at $7F74 beside 'YEARS:' and the 16-bit component at $7FC4 beside the resident literal 'MONTHS:', then offers RETURN TO GAME. Output: return-to-game selection. Assumptions: time state is initialized. Clobbers: VM values, expression stack/frame locals, numeric text buffers and selection screen state. Hardware: VIC-II/CIA through display/input helpers.","t":"word","b":[224,255],"d":[65504]},{"a":43669,"l":"vm_bytecode_aa90","c":"Compiled bytecode belonging to show_lifetime_status_screen ($AA90). Render the LIFE TIME status screen. Inputs: none. It displays state-vector age_years at $7F74 beside 'YEARS:' and the 16-bit component at $7FC4 beside the resident literal 'MONTHS:', then offers RETURN TO GAME. Output: return-to-game selection. Assumptions: time state is initialized. Clobbers: VM values, expression stack/frame locals, numeric text buffers and selection screen state. Hardware: VIC-II/CIA through display/input helpers. This position is the opcode of push_immediate_word at $AA95. The procedure decodes to 109 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_word_as_three_decimal_digits, return_argument_byte_1, animate_screen_region_transition, clear_and_frame_text_region, render_text_into_region, read_pointer_device_position.","t":"byte","b":[142,0,8,141,23,172,217,82]},{"a":43677,"t":"byte","b":[174,4,98,107,105,142,0,8]},{"a":43685,"t":"byte","b":[142,126,171,172,106,83,174,10]},{"a":43693,"t":"byte","b":[102,103,141,17,142,0,8,142]},{"a":43701,"t":"byte","b":[136,171,172,106,83,174,10,222]},{"a":43709,"t":"byte","b":[226,255,179,170,116,127,172,211]},{"a":43717,"t":"byte","b":[66,174,4,160,226,255,139,48]},{"a":43725,"t":"byte","b":[192,216,228,170,137,32,162,226]},{"a":43733,"t":"byte","b":[255,160,227,255,139,48,192,216]},{"a":43741,"t":"byte","b":[228,170,137,32,162,227,255,104]},{"a":43749,"t":"byte","b":[105,99,142,0,8,222,226,255]},{"a":43757,"t":"byte","b":[179,172,106,83,174,10,222,226]},{"a":43765,"t":"byte","b":[255,179,170,196,127,172,157,67]},{"a":43773,"t":"byte","b":[174,2,92,181,179,172,157,67]},{"a":43781,"t":"byte","b":[174,2,179,172,211,66,174,4]},{"a":43789,"t":"byte","b":[160,226,255,139,48,192,216,41]},{"a":43797,"t":"byte","b":[171,137,32,162,226,255,160,227]},{"a":43805,"t":"byte","b":[255,139,48,192,216,41,171,137]},{"a":43813,"t":"byte","b":[32,162,227,255,104,141,18,99]},{"a":43821,"t":"byte","b":[142,0,8,222,226,255,179,172]},{"a":43829,"t":"byte","b":[106,83,174,10,141,21,104,110]},{"a":43837,"t":"byte","b":[142,0,8,142,154,171,172,106]},{"a":43845,"t":"byte","b":[83,174,10,172,12,85,97,141]},{"a":43853,"t":"byte","b":[24,142,0,8,141,23,97,100]},{"a":43861,"t":"byte","b":[172,197,68,174,12,141,22,102]},{"a":43869,"t":"byte","b":[172,191,84,174,4,172,45,85]},{"a":43877,"t":"byte","b":[216,107,171,214,98,171,172,48]},{"a":43885,"t":"byte","b":[95,104,141,22,142,0,8,141]},{"a":43893,"t":"byte","b":[23,97,100,172,197,68,174,12]},{"a":43901,"t":"byte","b":[207]},{"a":43902,"l":"life_time_status_text_pool","c":"Zero-terminated status UI strings: LIFE TIME; YEARS:    MONTHS:; RETURN TO GAME.","t":"byte","b":[76,73,70,69,32,84,73,77]},{"a":43910,"t":"byte","b":[69,0,89,69,65,82,83,58]},{"a":43918,"t":"byte","b":[32,32,32,32,77,79,78,84]},{"a":43926,"t":"byte","b":[72,83,58,0,82,69,84,85]},{"a":43934,"t":"byte","b":[82,78,32,84,79,32,71,65]},{"a":43942,"t":"byte","b":[77,69,0]},{"a":43945,"l":"show_profile_and_acquisitions_menu","c":"Show personality traits and material acquisitions.\nInputs: +8/+10/+12/+14 carry menu/display values.\nOutputs: selection/control result.\nAssumptions: profile text pool and state vector are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; status screen, renderer and selection state.\nHardware: VIC-II/CIA through display/input helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $ABAE-$AC33 (68 decoded operations); native calls $44C5, $52D9, $536A, $54BF, $552D, $5F30, $6BBB. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":43948,"l":"vm_frame_adjust_aba9","c":"Signed frame adjustment -2 for show_profile_and_acquisitions_menu at $ABA9, consumed by the $70F8 VM gateway before bytecode begins at $ABAE. Show personality traits and material acquisitions.","t":"word","b":[254,255],"d":[65534]},{"a":43950,"l":"vm_bytecode_aba9","c":"Compiled bytecode belonging to show_profile_and_acquisitions_menu ($ABA9). Show personality traits and material acquisitions. This position is the opcode of push_immediate_word at $ABAE. The procedure decodes to 68 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include animate_screen_region_transition, clear_and_frame_text_region, render_text_into_region, read_pointer_device_position, poll_input_high_nibble, enter_inline_native_5f36_adjust_0.","t":"byte","b":[142,0,8,141,23,172,217,82]},{"a":43958,"t":"byte","b":[174,4,98,97,61,172,187,107]},{"a":43966,"t":"byte","b":[174,2,179,142,0,8,61,172]},{"a":43974,"t":"byte","b":[106,83,174,10,99,97,62,172]},{"a":43982,"t":"byte","b":[187,107,174,2,179,142,0,8]},{"a":43990,"t":"byte","b":[62,172,106,83,174,10,100,97]},{"a":43998,"t":"byte","b":[63,172,187,107,174,2,179,142]},{"a":44006,"t":"byte","b":[0,8,63,172,106,83,174,10]},{"a":44014,"t":"byte","b":[141,21,104,104,142,0,8,142]},{"a":44022,"t":"byte","b":[52,172,172,106,83,174,10,97]},{"a":44030,"t":"byte","b":[141,24,142,0,8,141,23,97]},{"a":44038,"t":"byte","b":[100,172,197,68,174,12,141,22]},{"a":44046,"t":"byte","b":[108,172,191,84,174,4,172,45]},{"a":44054,"t":"byte","b":[85,216,29,172,214,20,172,172]},{"a":44062,"t":"byte","b":[48,95,12,216,51,172,104,141]},{"a":44070,"t":"byte","b":[22,142,0,8,141,23,97,100]},{"a":44078,"t":"byte","b":[172,197,68,174,12,207]},{"a":44084,"l":"profile_traits_and_acquisitions_text_pool","c":"Zero-terminated profile UI content: CONTINUE; twelve scored traits (Calmness through Vocational, tagged $80-$8B); and acquisition choices from (none) through Home. This pool is direct remake content.","t":"byte","b":[67,79,78,84,73,78,85,69]},{"a":44092,"t":"byte","b":[0,32,67,97,108,109,110,101]},{"a":44100,"t":"byte","b":[115,115,32,40,128,41,0,32]},{"a":44108,"t":"byte","b":[67,111,110,102,105,100,101,110]},{"a":44116,"t":"byte","b":[99,101,32,40,129,41,0,32]},{"a":44124,"t":"byte","b":[69,120,112,114,101,115,115,105]},{"a":44132,"t":"byte","b":[118,101,110,101,115,115,32,40]},{"a":44140,"t":"byte","b":[130,41,0,32,70,97,109,105]},{"a":44148,"t":"byte","b":[108,105,97,108,32,40,131,41]},{"a":44156,"t":"byte","b":[0,32,71,101,110,116,108,101]},{"a":44164,"t":"byte","b":[110,101,115,115,32,40,132,41]},{"a":44172,"t":"byte","b":[0,32,72,97,112,112,105,110]},{"a":44180,"t":"byte","b":[101,115,115,32,40,133,41,0]},{"a":44188,"t":"byte","b":[32,73,110,116,101,108,108,105]},{"a":44196,"t":"byte","b":[103,101,110,99,101,32,40,134]},{"a":44204,"t":"byte","b":[41,0,32,80,104,121,115,105]},{"a":44212,"t":"byte","b":[99,97,108,32,40,135,41,0]},{"a":44220,"t":"byte","b":[32,83,111,99,105,97,108,32]},{"a":44228,"t":"byte","b":[40,136,41,0,32,84,104,111]},{"a":44236,"t":"byte","b":[117,103,104,116,102,117,108,110]},{"a":44244,"t":"byte","b":[101,115,115,32,40,137,41,0]},{"a":44252,"t":"byte","b":[32,84,114,117,115,116,119,111]},{"a":44260,"t":"byte","b":[114,116,104,105,110,101,115,115]},{"a":44268,"t":"byte","b":[32,40,138,41,0,32,86,111]},{"a":44276,"t":"byte","b":[99,97,116,105,111,110,97,108]},{"a":44284,"t":"byte","b":[32,40,139,41,0,32,32,32]},{"a":44292,"t":"byte","b":[40,110,111,110,101,41,0,32]},{"a":44300,"t":"byte","b":[32,32,87,97,116,99,104,0]},{"a":44308,"t":"byte","b":[32,32,32,83,116,101,114,101]},{"a":44316,"t":"byte","b":[111,32,69,113,117,105,112,109]},{"a":44324,"t":"byte","b":[101,110,116,0,32,32,32,80]},{"a":44332,"t":"byte","b":[104,111,116,111,32,69,113,117]},{"a":44340,"t":"byte","b":[105,112,109,101,110,116,0,32]},{"a":44348,"t":"byte","b":[32,32,86,105,100,101,111,32]},{"a":44356,"t":"byte","b":[69,113,117,105,112,109,101,110]},{"a":44364,"t":"byte","b":[116,0,32,32,32,67,111,109]},{"a":44372,"t":"byte","b":[112,117,116,101,114,0,32,32]},{"a":44380,"t":"byte","b":[32,83,112,111,114,116,115,32]},{"a":44388,"t":"byte","b":[69,113,117,105,112,109,101,110]},{"a":44396,"t":"byte","b":[116,0,32,32,32,87,97,114]},{"a":44404,"t":"byte","b":[100,114,111,98,101,0,32,32]},{"a":44412,"t":"byte","b":[32,65,117,116,111,109,111,98]},{"a":44420,"t":"byte","b":[105,108,101,0,32,32,32,76]},{"a":44428,"t":"byte","b":[105,98,114,97,114,121,32,111]},{"a":44436,"t":"byte","b":[102,32,66,111,111,107,115,0]},{"a":44444,"t":"byte","b":[32,32,32,66,111,97,116,0]},{"a":44452,"t":"byte","b":[32,32,32,72,111,109,101,0]},{"a":44460,"l":"render_complete_life_status","c":"Render the complete life-status view: identity, years/months, work, relationships, base-1000 cash/debt, and acquisitions.\nInputs: frame +8/+10 select entry/mode.\nOutputs: selection/control result.\nAssumptions: the phase-appropriate gameplay overlay is resident at $8466-$9991 and the state vector/player name are valid.\nClobbers/state: VM values, expression stack/frame locals, status text buffers, screen/input state.\nHardware: SID noise plus VIC-II/CIA through formatting/UI helpers.\nPhase-sensitive calls: operand $B09C-$B09D targets $8DD0, enter_select_remaining_episode, and $B0A8-$B0A9 targets $91CD, enter_advance_age_for_scene_span. The archive has explicit references to both male and female gameplay occupants. At the first-name phase the same logical addresses contain questionnaire VM bytes and must not be interpreted as these native callees.\nEntry protocol: JSR $70F8; frame adjustment -72; bytecode $ADB1-$B0DD; native calls otherwise $42D3, $44C5, $4697, $52D9, $536A, $54BF, $550C, $552D, $5596, $5F30, $6521, $6951, $6BBB, $A279, $B1EB, $B217 and $B2E1. VM opcode $CF returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":44463,"l":"vm_frame_adjust_adac","c":"Signed frame adjustment -72 for render_complete_life_status at $ADAC, consumed by the $70F8 VM gateway before bytecode begins at $ADB1. Render the complete life-status view: identity, years/months, work, relationships, base-1000 cash/debt, and acquisitions.","t":"word","b":[184,255],"d":[65464]},{"a":44465,"l":"vm_bytecode_adac","c":"Compiled bytecode belonging to render_complete_life_status ($ADAC). Render the complete life-status view: identity, years/months, work, relationships, base-1000 cash/debt, and acquisitions. This position is the opcode of load_primary_const_1 at $ADB1. The procedure decodes to 413 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_word_as_three_decimal_digits, animate_screen_region_transition, read_sid_voice3_noise, clear_and_frame_text_region, render_text_into_region, read_pointer_device_position.","t":"byte","b":[65,40,142,0,8,141,23,172]},{"a":44473,"t":"byte","b":[217,82,174,4,97,106,105,142]},{"a":44481,"t":"byte","b":[0,8,142,222,176,172,106,83]},{"a":44489,"t":"byte","b":[174,10,99,102,141,18,142,0]},{"a":44497,"t":"byte","b":[8,142,232,176,172,106,83,174]},{"a":44505,"t":"byte","b":[10,102,98,101,142,0,8,142]},{"a":44513,"t":"byte","b":[251,176,172,106,83,174,10,141]},{"a":44521,"t":"byte","b":[16,142,203,130,222,184,255,179]},{"a":44529,"t":"byte","b":[172,81,105,174,6,64,162,200]},{"a":44537,"t":"byte","b":[255,103,100,222,184,255,179,172]},{"a":44545,"t":"byte","b":[187,107,174,2,179,142,0,8]},{"a":44553,"t":"byte","b":[222,184,255,179,172,106,83,174]},{"a":44561,"t":"byte","b":[10,141,32,103,222,184,255,179]},{"a":44569,"t":"byte","b":[172,33,101,174,6,64,162,193]},{"a":44577,"t":"byte","b":[255,105,98,100,142,0,8,142]},{"a":44585,"t":"byte","b":[1,177,172,106,83,174,10,222]},{"a":44593,"t":"byte","b":[184,255,179,170,116,127,172,211]},{"a":44601,"t":"byte","b":[66,174,4,160,185,255,139,48]},{"a":44609,"t":"byte","b":[192,216,74,174,137,32,162,185]},{"a":44617,"t":"byte","b":[255,106,100,98,142,0,8,222]},{"a":44625,"t":"byte","b":[185,255,179,172,106,83,174,10]},{"a":44633,"t":"byte","b":[108,98,107,142,0,8,142,6]},{"a":44641,"t":"byte","b":[177,172,106,83,174,10,96,109]},{"a":44649,"t":"byte","b":[142,18,177,172,121,162,174,6]},{"a":44657,"t":"byte","b":[111,98,141,20,142,0,8,142]},{"a":44665,"t":"byte","b":[23,177,172,106,83,174,10,164]},{"a":44673,"t":"byte","b":[122,127,216,148,174,96,141,16]},{"a":44681,"t":"byte","b":[142,44,177,172,121,162,174,6]},{"a":44689,"t":"byte","b":[214,239,174,164,124,127,216,168]},{"a":44697,"t":"byte","b":[174,96,141,16,142,60,177,172]},{"a":44705,"t":"byte","b":[121,162,174,6,214,239,174,164]},{"a":44713,"t":"byte","b":[156,127,216,188,174,96,141,16]},{"a":44721,"t":"byte","b":[142,76,177,172,121,162,174,6]},{"a":44729,"t":"byte","b":[214,239,174,164,126,127,216,208]},{"a":44737,"t":"byte","b":[174,96,141,16,142,93,177,172]},{"a":44745,"t":"byte","b":[121,162,174,6,214,239,174,164]},{"a":44753,"t":"byte","b":[128,127,216,228,174,96,141,16]},{"a":44761,"t":"byte","b":[142,109,177,172,121,162,174,6]},{"a":44769,"t":"byte","b":[214,239,174,96,141,16,142,120]},{"a":44777,"t":"byte","b":[177,172,121,162,174,6,141,21]},{"a":44785,"t":"byte","b":[103,104,142,0,8,142,130,177]},{"a":44793,"t":"byte","b":[172,106,83,174,10,8,216,25]},{"a":44801,"t":"byte","b":[175,172,12,85,97,141,24,142]},{"a":44809,"t":"byte","b":[0,8,141,23,97,100,172,197]},{"a":44817,"t":"byte","b":[68,174,12,64,40,214,40,175]},{"a":44825,"t":"byte","b":[104,141,24,142,0,8,141,23]},{"a":44833,"t":"byte","b":[97,100,172,197,68,174,12,141]},{"a":44841,"t":"byte","b":[22,102,172,191,84,174,4,142]},{"a":44849,"t":"byte","b":[0,8,141,23,172,217,82,174]},{"a":44857,"t":"byte","b":[4,172,45,85,216,67,175,214]},{"a":44865,"t":"byte","b":[58,175,172,48,95,97,103,102]},{"a":44873,"t":"byte","b":[142,0,8,142,139,177,172,106]},{"a":44881,"t":"byte","b":[83,174,10,64,43,66,42,214]},{"a":44889,"t":"byte","b":[100,175,11,208,43,209,67,205]},{"a":44897,"t":"byte","b":[10,187,42,11,86,194,216,136]},{"a":44905,"t":"byte","b":[175,96,58,11,210,140,106,194]},{"a":44913,"t":"byte","b":[187,176,179,172,121,162,174,6]},{"a":44921,"t":"byte","b":[142,0,8,10,208,179,59,172]},{"a":44929,"t":"byte","b":[235,177,174,6,214,91,175,141]},{"a":44937,"t":"byte","b":[21,103,104,142,0,8,142,146]},{"a":44945,"t":"byte","b":[177,172,106,83,174,10,172,23]},{"a":44953,"t":"byte","b":[178,215,179,173,97,103,102,142]},{"a":44961,"t":"byte","b":[0,8,142,155,177,172,106,83]},{"a":44969,"t":"byte","b":[174,10,70,43,66,42,214,187]},{"a":44977,"t":"byte","b":[175,11,208,43,209,67,205,10]},{"a":44985,"t":"byte","b":[187,42,11,92,194,216,223,175]},{"a":44993,"t":"byte","b":[96,58,11,210,140,106,194,187]},{"a":45001,"t":"byte","b":[176,179,172,121,162,174,6,142]},{"a":45009,"t":"byte","b":[0,8,10,208,179,59,172,235]},{"a":45017,"t":"byte","b":[177,174,6,214,178,175,141,21]},{"a":45025,"t":"byte","b":[103,104,142,0,8,142,162,177]},{"a":45033,"t":"byte","b":[172,106,83,174,10,172,23,178]},{"a":45041,"t":"byte","b":[215,70,175,97,103,102,142,0]},{"a":45049,"t":"byte","b":[8,142,171,177,172,106,83,174]},{"a":45057,"t":"byte","b":[10,170,118,127,170,120,127,99]},{"a":45065,"t":"byte","b":[142,178,177,172,225,178,174,8]},{"a":45073,"t":"byte","b":[170,130,127,170,132,127,101,142]},{"a":45081,"t":"byte","b":[187,177,172,225,178,174,8,103]},{"a":45089,"t":"byte","b":[98,108,142,0,8,142,196,177]},{"a":45097,"t":"byte","b":[172,106,83,174,10,164,171,130]},{"a":45105,"t":"byte","b":[215,65,176,96,104,142,210,177]},{"a":45113,"t":"byte","b":[172,121,162,174,6,214,112,176]},{"a":45121,"t":"byte","b":[72,42,65,43,214,76,176,11]},{"a":45129,"t":"byte","b":[208,43,209,11,139,16,194,216]},{"a":45137,"t":"byte","b":[112,176,65,27,189,166,171,130]},{"a":45145,"t":"byte","b":[218,216,109,176,96,58,11,210]},{"a":45153,"t":"byte","b":[140,130,194,187,176,179,172,121]},{"a":45161,"t":"byte","b":[162,174,6,42,214,72,176,141]},{"a":45169,"t":"byte","b":[21,103,110,142,0,8,142,220]},{"a":45177,"t":"byte","b":[177,172,106,83,174,10,172,23]},{"a":45185,"t":"byte","b":[178,215,157,175,13,80,197,216]},{"a":45193,"t":"byte","b":[172,176,172,151,70,82,191,83]},{"a":45201,"t":"byte","b":[185,215,172,176,97,222,248,255]},{"a":45209,"t":"byte","b":[179,60,172]},{"a":45212,"l":"status_episode_selector_native_target","c":"Little-endian VM native-call operand for opcode $AC at $B09B. Its logical value is $8DD0. In the questionnaire capture, ordinary RAM $8DD0 contains the earlier VM occupant; in gameplay it resolves to GAMEPLAY_MALE_PHASE::$8DD0 or GAMEPLAY_FEMALE_PHASE::$8DD0, which selects an eligible episode from persisted masks. Both phase references are attached explicitly.","t":"word","b":[208,141],"d":[36304]},{"a":45214,"l":"vm_body_adac_b09e","c":"Compiled bytecode belonging to render_complete_life_status ($ADAC). Render the complete life-status view: identity, years/months, work, relationships, base-1000 cash/debt, and acquisitions. This position is the opcode of adjust_stack_signed_byte at $B09E. The procedure decodes to 413 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_word_as_three_decimal_digits, animate_screen_region_transition, read_sid_voice3_noise, clear_and_frame_text_region, render_text_into_region, read_pointer_device_position.","t":"byte","b":[174,6,8,80,196,216,172,176]},{"a":45222,"t":"byte","b":[56,172]},{"a":45224,"l":"status_age_advance_native_target","c":"Little-endian VM native-call operand for opcode $AC at $B0A7. Its logical value is $91CD. In the questionnaire capture, ordinary RAM $91CD contains the earlier VM occupant; in gameplay it resolves to GAMEPLAY_MALE_PHASE::$91CD or GAMEPLAY_FEMALE_PHASE::$91CD, which advances fractional age from scene span. Both phase references are attached explicitly.","t":"word","b":[205,145],"d":[37325]},{"a":45226,"l":"vm_body_adac_b0aa","c":"Compiled bytecode belonging to render_complete_life_status ($ADAC). Render the complete life-status view: identity, years/months, work, relationships, base-1000 cash/debt, and acquisitions. This position is the opcode of adjust_stack_signed_byte at $B0AA. The procedure decodes to 413 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include format_word_as_three_decimal_digits, animate_screen_region_transition, read_sid_voice3_noise, clear_and_frame_text_region, render_text_into_region, read_pointer_device_position.","t":"byte","b":[174,2,13,80,197,216,194,176]},{"a":45234,"t":"byte","b":[142,0,8,61,141,23,97,100]},{"a":45242,"t":"byte","b":[172,150,85,174,10,214,206,176]},{"a":45250,"t":"byte","b":[96,142,72,22,142,0,8,172]},{"a":45258,"t":"byte","b":[33,101,174,6,104,141,22,142]},{"a":45266,"t":"byte","b":[0,8,141,23,97,100,172,197]},{"a":45274,"t":"byte","b":[68,174,12,207]},{"a":45278,"l":"life_sphere_status_text_pool","c":"Zero-terminated life-sphere status UI: title, name/age/occupation/relationship labels and states, CONTINUE/REVIEW choices, cash/debt/acquisitions labels, and RETURN TO GAME. Bytes $8C-$8E embedded in selected strings are runtime substitution/control tokens.","t":"byte","b":[65,76,84,69,82,32,69,71]},{"a":45286,"t":"byte","b":[79,0,76,73,70,69,32,83]},{"a":45294,"t":"byte","b":[80,72,69,82,69,32,83,84]},{"a":45302,"t":"byte","b":[65,84,85,83,0,78,97,109]},{"a":45310,"t":"byte","b":[101,58,0,65,103,101,58,0]},{"a":45318,"t":"byte","b":[79,99,99,117,112,97,116,105]},{"a":45326,"t":"byte","b":[111,110,58,0,32,32,32,140]},{"a":45334,"t":"byte","b":[0,82,101,108,97,116,105,111]},{"a":45342,"t":"byte","b":[110,115,104,105,112,32,115,116]},{"a":45350,"t":"byte","b":[97,116,117,115,58,0,32,32]},{"a":45358,"t":"byte","b":[32,77,97,114,114,105,101,100]},{"a":45366,"t":"byte","b":[32,116,111,32,142,0,32,32]},{"a":45374,"t":"byte","b":[32,69,110,103,97,103,101,100]},{"a":45382,"t":"byte","b":[32,116,111,32,141,0,32,32]},{"a":45390,"t":"byte","b":[32,76,105,118,105,110,103,32]},{"a":45398,"t":"byte","b":[119,105,116,104,32,141,0,32]},{"a":45406,"t":"byte","b":[32,32,71,111,105,110,103,32]},{"a":45414,"t":"byte","b":[119,105,116,104,32,141,0,32]},{"a":45422,"t":"byte","b":[32,32,87,105,100,111,119,101]},{"a":45430,"t":"byte","b":[100,0,32,32,32,83,105,110]},{"a":45438,"t":"byte","b":[103,108,101,0,67,79,78,84]},{"a":45446,"t":"byte","b":[73,78,85,69,0,82,69,86]},{"a":45454,"t":"byte","b":[73,69,87,0,67,79,78,84]},{"a":45462,"t":"byte","b":[73,78,85,69,0,82,69,86]},{"a":45470,"t":"byte","b":[73,69,87,0,67,79,78,84]},{"a":45478,"t":"byte","b":[73,78,85,69,0,82,69,86]},{"a":45486,"t":"byte","b":[73,69,87,0,32,67,97,115]},{"a":45494,"t":"byte","b":[104,58,32,36,0,32,68,101]},{"a":45502,"t":"byte","b":[98,116,58,32,36,0,65,99]},{"a":45510,"t":"byte","b":[113,117,105,115,105,116,105,111]},{"a":45518,"t":"byte","b":[110,115,58,0,32,32,32,40]},{"a":45526,"t":"byte","b":[110,111,110,101,41,0,82,69]},{"a":45534,"t":"byte","b":[84,85,82,78,32,84,79,32]},{"a":45542,"t":"byte","b":[71,65,77,69,0]},{"a":45547,"l":"draw_trait_score_bar","c":"Draw a custom-glyph bar for one personality score.\nInputs: +8 state index; +10/+12 destination geometry.\nOutputs: bar rendered.\nAssumptions: selected state word is a 0-100 trait score.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; destination glyph cells.\nHardware: active charset/screen through $470F.\nEntry protocol: JSR $70F8; signed frame adjustment -4; bytecode $B1F0-$B216 (28 decoded operations); native calls $470F. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":45550,"l":"vm_frame_adjust_b1eb","c":"Signed frame adjustment -4 for draw_trait_score_bar at $B1EB, consumed by the $70F8 VM gateway before bytecode begins at $B1F0. Draw a custom-glyph bar for one personality score.","t":"word","b":[252,255],"d":[65532]},{"a":45552,"l":"vm_bytecode_b1eb","c":"Compiled bytecode belonging to draw_trait_score_bar ($B1EB). Draw a custom-glyph bar for one personality score. This position is the opcode of load_primary_local_+8 at $B1F0. The procedure decodes to 28 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include copy_custom_glyph_to_buffer.","t":"byte","b":[12,210,140,64,127,187,176,85]},{"a":45560,"t":"byte","b":[182,43,11,114,42,214,4,178]},{"a":45568,"t":"byte","b":[10,209,42,208,10,82,196,216]},{"a":45576,"t":"byte","b":[22,178,62,61,58,110,172,15]},{"a":45584,"t":"byte","b":[71,174,8,214,0,178,207]},{"a":45591,"l":"prompt_status_screen_action","c":"Prompt for the next action from a status screen.\nInputs: none.\nOutputs: continue/review/return control.\nAssumptions: status screen is displayed and input initialized.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; dialog, transition, sprite and input state.\nHardware: VIC-II/CIA/KERNAL through helpers.\nEntry protocol: JSR $70F8; signed frame adjustment -6; bytecode $B21C-$B295 (68 decoded operations); native calls $44C5, $52D9, $545B, $54BF, $551C, $56FF, $5F30. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":45594,"l":"vm_frame_adjust_b217","c":"Signed frame adjustment -6 for prompt_status_screen_action at $B217, consumed by the $70F8 VM gateway before bytecode begins at $B21C. Prompt for the next action from a status screen.","t":"word","b":[250,255],"d":[65530]},{"a":45596,"l":"vm_bytecode_b217","c":"Compiled bytecode belonging to prompt_status_screen_action ($B217). Prompt for the next action from a status screen. This position is the opcode of load_primary_const_1 at $B21C. The procedure decodes to 68 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include animate_screen_region_transition, clear_and_frame_text_region, delay_scaled_iterations, read_pointer_device_position, enable_sprite0, read_normalized_input.","t":"byte","b":[65,42,65,41,104,141,24,142]},{"a":45604,"t":"byte","b":[0,8,141,23,97,100,172,197]},{"a":45612,"t":"byte","b":[68,174,12,141,22,102,172,191]},{"a":45620,"t":"byte","b":[84,174,4,172,28,85,142,0]},{"a":45628,"t":"byte","b":[8,141,23,172,217,82,174,4]},{"a":45636,"t":"byte","b":[172,255,86,43,11,139,16,218]},{"a":45644,"t":"byte","b":[215,139,178,11,81,218,216,90]},{"a":45652,"t":"byte","b":[178,64,42,214,98,178,11,82]},{"a":45660,"t":"byte","b":[218,216,98,178,65,42,9,26]},{"a":45668,"t":"byte","b":[193,216,136,178,10,41,10,215]},{"a":45676,"t":"byte","b":[120,178,98,102,172,191,84,174]},{"a":45684,"t":"byte","b":[4,214,128,178,141,22,102,172]},{"a":45692,"t":"byte","b":[191,84,174,4,142,136,19,172]},{"a":45700,"t":"byte","b":[91,84,174,2,214,68,178,172]},{"a":45708,"t":"byte","b":[48,95,10,215,148,178,65,207]},{"a":45716,"t":"byte","b":[64,207]},{"a":45718,"l":"append_unsigned_decimal_0_999","c":"Append a 0-999 decimal value with optional leading zeroes.\nInputs: +8 destination; +10 value; +12 leading-zero flag.\nOutputs: advanced destination pointer.\nAssumptions: value is intended to be 0..999 and destination has capacity.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; destination bytes.\nHardware: none.\nEntry protocol: JSR $70F8; signed frame adjustment -2; bytecode $B29B-$B2E0 (57 decoded operations); native calls none. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":45721,"l":"vm_frame_adjust_b296","c":"Signed frame adjustment -2 for append_unsigned_decimal_0_999 at $B296, consumed by the $70F8 VM gateway before bytecode begins at $B29B. Append a 0-999 decimal value with optional leading zeroes.","t":"word","b":[254,255],"d":[65534]},{"a":45723,"l":"vm_bytecode_b296","c":"Compiled bytecode belonging to append_unsigned_decimal_0_999 ($B296). Append a 0-999 decimal value with optional leading zeroes. This position is the opcode of load_primary_local_+10 at $B29B. The procedure decodes to 57 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export.","t":"byte","b":[13,139,100,182,43,215,167,178]},{"a":45731,"t":"byte","b":[14,216,187,178,12,208,44,209]},{"a":45739,"t":"byte","b":[179,11,143,48,180,212,137,100]},{"a":45747,"t":"byte","b":[205,13,185,45,14,208,46,209]},{"a":45755,"t":"byte","b":[13,90,182,43,215,198,178,14]},{"a":45763,"t":"byte","b":[216,213,178,12,208,44,209,179]},{"a":45771,"t":"byte","b":[11,143,48,180,212,74,205,13]},{"a":45779,"t":"byte","b":[185,45,12,208,44,209,179,13]},{"a":45787,"t":"byte","b":[143,48,180,212,12,207]},{"a":45793,"l":"render_status_numeric_field","c":"Format and render one numeric status field.\nInputs: +8/+10/+12/+14 carry destination, value, format and text fields.\nOutputs: field rendered.\nAssumptions: formatter and renderer buffers are valid.\nClobbers/state: VM primary/secondary values, expression stack and frame locals are scratch; temporary decimal/text buffer.\nHardware: display through $A279.\nEntry protocol: JSR $70F8; signed frame adjustment -36; bytecode $B2E6-$B391 (105 decoded operations); native calls $A279, $B296. VM opcode $CF restores the saved frame and returns.","t":"code","b":[32,248,112],"m":"jsr","oa":28920,"o":"vm_procedure_call_gateway"},{"a":45796,"l":"vm_frame_adjust_b2e1","c":"Signed frame adjustment -36 for render_status_numeric_field at $B2E1, consumed by the $70F8 VM gateway before bytecode begins at $B2E6. Format and render one numeric status field.","t":"word","b":[220,255],"d":[65500]},{"a":45798,"l":"vm_bytecode_b2e1","c":"Compiled bytecode belonging to render_status_numeric_field ($B2E1). Format and render one numeric status field. This position is the opcode of load_primary_local_+14 at $B2E6. The procedure decodes to 105 operations with valid instruction-boundary targets; fresh snapshot operation bytes match the supplied VM export. Native/VM helpers include render_scene_text_with_substitutions, append_unsigned_decimal_0_999.","t":"byte","b":[15,140,231,3,196,216,254,178]},{"a":45806,"t":"byte","b":[15,140,232,3,182,205,14,187]},{"a":45814,"t":"byte","b":[46,138,232,3,205,15,185,47]},{"a":45822,"t":"byte","b":[222,224,255,133,222,129,222,208]},{"a":45830,"t":"byte","b":[133,222,209,179,12,208,44,209]},{"a":45838,"t":"byte","b":[211,180,212,216,23,179,214,3]},{"a":45846,"t":"byte","b":[179,129,222,209,133,222,208,64]},{"a":45854,"t":"byte","b":[133,220,14,140,231,3,196,216]},{"a":45862,"t":"byte","b":[74,179,135,220,14,140,232,3]},{"a":45870,"t":"byte","b":[182,179,135,222,172,150,178,174]},{"a":45878,"t":"byte","b":[6,133,222,129,222,208,133,222]},{"a":45886,"t":"byte","b":[209,179,137,44,180,212,129,220]},{"a":45894,"t":"byte","b":[208,133,220,209,14,215,83,179]},{"a":45902,"t":"byte","b":[129,220,216,117,179,135,220,14]},{"a":45910,"t":"byte","b":[140,232,3,185,179,135,222,172]},{"a":45918,"t":"byte","b":[150,178,174,6,133,222,129,222]},{"a":45926,"t":"byte","b":[208,133,222,209,179,137,44,180]},{"a":45934,"t":"byte","b":[212,129,220,208,133,220,209,135]},{"a":45942,"t":"byte","b":[220,63,135,222,172,150,178,174]},{"a":45950,"t":"byte","b":[6,133,222,135,222,64,180,212]},{"a":45958,"t":"byte","b":[96,61,222,224,255,179,172,121]},{"a":45966,"t":"byte","b":[162,174,6,207]},{"a":45970,"l":"gameplay_object_entry_setjmp","c":"Entry point of the later gameplay occupant and the setjmp half of its non-local-exit pair. Reached only through each overlay's own load-address entry: GAMEPLAY_MALE_PHASE::$8466 holds 4C 92 B3 (JMP $B392) and RAM $8109-$810A holds the word $B392. It discards the two-byte native return pushed by the caller, publishes the current VM frame pointer to the recovery slot $C29A/$C29B, mirrors it into $0E/$0F, copies the eight-byte VM frame at ($0E) to $02-$09, re-pushes the recovered return address from $03/$02, and jumps to $84DC. Inputs: A valid VM frame: $06/$07 frame pointer, $04/$05 expression-stack pointer, $08/$09 script IP. Two bytes of native return on the 6502 stack. Outputs: $C29A/$C29B hold the recovery frame pointer; $02-$09 reloaded from the frame; control transferred to the gameplay main loop at $84DC, which does not return here. Assumptions: Valid only in GAMEPLAY_MALE_PHASE, where $84DC is male_gameplay_main_loop. In the captured questionnaire phase $84DC holds active questionnaire text and executing this routine would be invalid; the male gameplay overlay ends at $9991, so these bytes live in ordinary RAM and are shared between the two phases. The female edition uses the byte-identical routine one address lower at GAMEPLAY_FEMALE_PHASE::$B391. Clobbers: A, Y, flags, $0E/$0F, $02-$09, and two bytes of 6502 stack; pushes two bytes back. Hardware: None directly. The gameplay main loop it enters programs VIC-II and CIA registers through its own plated helpers.","t":"code","b":[104],"m":"pla"},{"a":45971,"t":"code","b":[104],"m":"pla"},{"a":45972,"t":"code","b":[165,6],"m":"lda","oa":6,"o":"vm_frame_ptr_lo"},{"a":45974,"t":"code","b":[141,154,194],"m":"sta","oa":49818,"o":"gameplay_object_recovery_frame_ptr"},{"a":45977,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":45979,"t":"code","b":[165,7],"m":"lda","oa":7,"o":"vm_frame_ptr_hi"},{"a":45981,"t":"code","b":[141,155,194],"m":"sta","oa":49819,"o":"a_C29B"},{"a":45984,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":45986,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":45988,"l":"LAB_b3a4","t":"code","b":[177,14],"m":"lda","oa":14,"x":[45994],"o":"(vm_secondary_value_b0),y"},{"a":45990,"t":"code","b":[153,2,0],"m":"sta","oa":2,"o":"shared_scratch_02_lo,y"},{"a":45993,"t":"code","b":[136],"m":"dey"},{"a":45994,"t":"code","b":[16,248],"m":"bpl","oa":45988,"o":"LAB_b3a4"},{"a":45996,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":45998,"t":"code","b":[72],"m":"pha"},{"a":45999,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":46001,"t":"code","b":[72],"m":"pha"},{"a":46002,"s":"Phase-qualified target: GAMEPLAY_MALE_PHASE::$84DC = male_gameplay_main_loop, the VM procedure header 20 F8 70 (JSR vm_procedure_call_gateway) with frame -16. In the captured questionnaire phase the same address holds active personality text, so this edge is only valid under the male gameplay occupant. The user-defined UNCONDITIONAL_JUMP reference recorded here resolves into GAMEPLAY_MALE_PHASE; the raw operand text is the unrelocated scalar.","t":"code","b":[76,220,132],"m":"jmp","oa":34012,"o":"j_84DC"},{"a":46005,"l":"gameplay_object_longjmp_exit","c":"Non-local exit of the later gameplay occupant and the longjmp half of the pair whose setjmp is $B392. Called as an ordinary VM native call: opcode $AC with the two-byte little-endian target $B3B5. It discards the native return, pops one argument word off the VM expression stack ($04),Y into VM primary $0A/$0B, reloads the recovery frame pointer recorded at $C29A/$C29B, copies eight bytes back over $02-$09, increments the recovered return address by one, and jumps indirectly through ($0002). Inputs: VM expression stack $04/$05 with one pushed argument word; $C29A/$C29B previously written by $B392. Outputs: The argument word in VM primary $0A/$0B as the longjmp value; VM registers $02-$09 restored to the recovery frame; control resumed at the recovery point. Does not return to its caller. Assumptions: $B392 must have run in this phase so the recovery frame is valid. Valid only in GAMEPLAY_MALE_PHASE; the male overlay ends at $9991 so these bytes sit in ordinary RAM. The female mirror is GAMEPLAY_FEMALE_PHASE::$B3B4. Clobbers: A, X, Y, flags, $0A/$0B, $0E/$0F, $02-$09 and two bytes of 6502 stack. Hardware: None directly.","t":"code","b":[104],"m":"pla"},{"a":46006,"t":"code","b":[104],"m":"pla"},{"a":46007,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46009,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":46011,"t":"code","b":[133,10],"m":"sta","oa":10,"o":"vm_primary_value_b0"},{"a":46013,"t":"code","b":[200],"m":"iny"},{"a":46014,"t":"code","b":[177,4],"m":"lda","oa":4,"o":"(vm_expression_stack_ptr_lo),y"},{"a":46016,"t":"code","b":[133,11],"m":"sta","oa":11,"o":"vm_primary_value_b1"},{"a":46018,"t":"code","b":[173,154,194],"m":"lda","oa":49818,"o":"gameplay_object_recovery_frame_ptr"},{"a":46021,"t":"code","b":[133,14],"m":"sta","oa":14,"o":"vm_secondary_value_b0"},{"a":46023,"t":"code","b":[173,155,194],"m":"lda","oa":49819,"o":"a_C29B"},{"a":46026,"t":"code","b":[133,15],"m":"sta","oa":15,"o":"vm_secondary_value_b1"},{"a":46028,"t":"code","b":[160,7],"m":"ldy","o":"#$07"},{"a":46030,"l":"LAB_b3ce","t":"code","b":[177,14],"m":"lda","oa":14,"x":[46036],"o":"(vm_secondary_value_b0),y"},{"a":46032,"t":"code","b":[153,2,0],"m":"sta","oa":2,"o":"shared_scratch_02_lo,y"},{"a":46035,"t":"code","b":[136],"m":"dey"},{"a":46036,"t":"code","b":[16,248],"m":"bpl","oa":46030,"o":"LAB_b3ce"},{"a":46038,"t":"code","b":[230,2],"m":"inc","oa":2,"o":"shared_scratch_02_lo"},{"a":46040,"t":"code","b":[208,2],"m":"bne","oa":46044,"o":"LAB_b3dc"},{"a":46042,"t":"code","b":[230,3],"m":"inc","oa":3,"o":"shared_scratch_02_hi"},{"a":46044,"l":"LAB_b3dc","t":"code","b":[162,0],"m":"ldx","x":[46040],"o":"#$00"},{"a":46046,"t":"code","b":[108,2,0],"m":"jmp","oa":2,"o":"(shared_scratch_02_lo)"},{"a":46049,"l":"retained_unreferenced_compiler_arithmetic_library","c":"Retained compiler arithmetic support bytes with no resident current-phase caller, pointer or encoded operand. Classified as prior/unused compiler residue and excluded from gameplay semantics.","t":"byte","b":[132,2,134,3,24,160,4,166]},{"a":46057,"t":"byte","b":[3,169,255,117,0,149,0,232]},{"a":46065,"t":"byte","b":[136,208,246,170,16,4,152,170]},{"a":46073,"t":"byte","b":[200,96,166,2,22,0,54,1]},{"a":46081,"t":"byte","b":[54,2,54,3,76,229,179]},{"a":46088,"l":"arithmetic_shift_i32_buffer_right_by_count_buffer","c":"Arithmetic-right-shift a caller-owned signed 32-bit little-endian value by a caller-owned 32-bit count.\nInputs: X is the zero-page address of the count at X..X+3; Y is the zero-page address of the value at Y..Y+3. The active callers supply nonnegative counts.\nOutputs: value shifted in place with sign extension; count decremented to $FFFFFFFF; returns A=0, X=0, Y=1.\nAssumptions: both four-byte objects fit in zero page and do not overlap. Counts of 32 or more converge to all sign bits.\nClobbers/state: $02/$03 hold the two base addresses; the count buffer and flags are scratch.\nHardware: none. The routine snapshots the value's sign in carry, decrements the count, rotates high byte to low once per nonnegative count, and stops after the decrement crosses below zero.","t":"code","b":[132,2],"m":"sty","oa":2,"o":"shared_scratch_02_lo"},{"a":46090,"t":"code","b":[134,3],"m":"stx","oa":3,"o":"shared_scratch_02_hi"},{"a":46092,"t":"code","b":[24],"m":"clc"},{"a":46093,"t":"code","b":[185,3,0],"m":"lda","oa":3,"o":"shared_scratch_02_hi,y"},{"a":46096,"t":"code","b":[16,1],"m":"bpl","oa":46099,"o":"LAB_b413"},{"a":46098,"t":"code","b":[56],"m":"sec"},{"a":46099,"l":"LAB_b413","t":"code","b":[8],"m":"php","x":[46096]},{"a":46100,"l":"LAB_b414","t":"code","b":[24],"m":"clc","x":[46135]},{"a":46101,"t":"code","b":[160,4],"m":"ldy","o":"#$04"},{"a":46103,"t":"code","b":[166,3],"m":"ldx","oa":3,"o":"shared_scratch_02_hi"},{"a":46105,"l":"LAB_b419","t":"code","b":[169,255],"m":"lda","x":[46113],"o":"#$FF"},{"a":46107,"t":"code","b":[117,0],"m":"adc","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46109,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46111,"t":"code","b":[232],"m":"inx"},{"a":46112,"t":"code","b":[136],"m":"dey"},{"a":46113,"t":"code","b":[208,246],"m":"bne","oa":46105,"o":"LAB_b419"},{"a":46115,"t":"code","b":[170],"m":"tax"},{"a":46116,"t":"code","b":[16,5],"m":"bpl","oa":46123,"o":"LAB_b42b"},{"a":46118,"t":"code","b":[40],"m":"plp"},{"a":46119,"t":"code","b":[152],"m":"tya"},{"a":46120,"t":"code","b":[170],"m":"tax"},{"a":46121,"t":"code","b":[200],"m":"iny"},{"a":46122,"t":"code","b":[96],"m":"rts"},{"a":46123,"l":"LAB_b42b","t":"code","b":[40],"m":"plp","x":[46116]},{"a":46124,"t":"code","b":[8],"m":"php"},{"a":46125,"t":"code","b":[166,2],"m":"ldx","oa":2,"o":"shared_scratch_02_lo"},{"a":46127,"t":"code","b":[118,3],"m":"ror","oa":3,"o":"shared_scratch_02_hi,x"},{"a":46129,"t":"code","b":[118,2],"m":"ror","oa":2,"o":"shared_scratch_02_lo,x"},{"a":46131,"t":"code","b":[118,1],"m":"ror","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46133,"t":"code","b":[118,0],"m":"ror","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46135,"t":"code","b":[76,20,180],"m":"jmp","oa":46100,"o":"LAB_b414"},{"a":46138,"l":"multiply_u16_buffer_by_ax_in_place","c":"Multiply a caller-owned unsigned 16-bit little-endian value by AX using a 16-round shift/add product.\nInputs: A is factor low, X factor high, and Y is the zero-page address of the value at Y/Y+1.\nOutputs: low product word replaces the caller's value; high product word remains in $02/$03; returns A=0, X=0, Y=1.\nAssumptions: the two-byte caller value fits in zero page and does not overlap $02/$03 or $24/$25.\nClobbers/state: $02/$03 product high, $24/$25 saved factor, caller value, and flags.\nHardware: none. Each source bit conditionally adds the factor to $02/$03, then ROR propagates through the four-byte accumulator/value pair.","t":"code","b":[133,36],"m":"sta","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":46140,"t":"code","b":[134,37],"m":"stx","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46142,"t":"code","b":[152],"m":"tya"},{"a":46143,"t":"code","b":[170],"m":"tax"},{"a":46144,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46146,"t":"code","b":[132,2],"m":"sty","oa":2,"o":"shared_scratch_02_lo"},{"a":46148,"t":"code","b":[132,3],"m":"sty","oa":3,"o":"shared_scratch_02_hi"},{"a":46150,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":46152,"l":"LAB_b448","t":"code","b":[181,0],"m":"lda","oa":0,"x":[46179],"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46154,"t":"code","b":[74],"m":"lsr","o":"a"},{"a":46155,"t":"code","b":[144,13],"m":"bcc","oa":46170,"o":"LAB_b45a"},{"a":46157,"t":"code","b":[24],"m":"clc"},{"a":46158,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":46160,"t":"code","b":[101,36],"m":"adc","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":46162,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":46164,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":46166,"t":"code","b":[101,37],"m":"adc","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46168,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":46170,"l":"LAB_b45a","t":"code","b":[102,3],"m":"ror","oa":3,"x":[46155],"o":"shared_scratch_02_hi"},{"a":46172,"t":"code","b":[102,2],"m":"ror","oa":2,"o":"shared_scratch_02_lo"},{"a":46174,"t":"code","b":[118,1],"m":"ror","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46176,"t":"code","b":[118,0],"m":"ror","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46178,"t":"code","b":[136],"m":"dey"},{"a":46179,"t":"code","b":[208,227],"m":"bne","oa":46152,"o":"LAB_b448"},{"a":46181,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":46183,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46185,"t":"code","b":[138],"m":"txa"},{"a":46186,"t":"code","b":[96],"m":"rts"},{"a":46187,"l":"DivideSigned16InPlace","c":"Signed 16-bit quotient wrapper. A/X supply divisor low/high; Y is the zero-page address of the dividend word. $B4DB takes operand magnitudes, $B4B5 performs 16 restoring-division rounds, then this wrapper negates quotient when operand signs differ. Output word replaces the dividend; A/X=0,Y=1. Division by zero and overflow are not guarded. Eleven controlled native cases for this wrapper, 44 across the four wrappers, match integer calculations including mixed signs, $8000/$FFFF overflow and divisor zero. A/X return zero and Y one in every case. Callers and player reachability remain open.","t":"code","b":[32,219,180],"m":"jsr","oa":46299,"o":"DivideSigned16MagnitudeSetup"},{"a":46190,"t":"code","b":[165,38],"m":"lda","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":46192,"t":"code","b":[16,11],"m":"bpl","oa":46205,"o":"b_B47D"},{"a":46194,"t":"code","b":[56],"m":"sec"},{"a":46195,"t":"code","b":[152],"m":"tya"},{"a":46196,"t":"code","b":[245,0],"m":"sbc","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46198,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46200,"t":"code","b":[152],"m":"tya"},{"a":46201,"t":"code","b":[245,1],"m":"sbc","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46203,"t":"code","b":[149,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46205,"l":"b_B47D","t":"code","b":[152],"m":"tya","x":[46192]},{"a":46206,"t":"code","b":[170],"m":"tax"},{"a":46207,"t":"code","b":[200],"m":"iny"},{"a":46208,"t":"code","b":[96],"m":"rts"},{"a":46209,"l":"DivideUnsigned16InPlace","c":"Unsigned 16-bit quotient wrapper around $B4AD. Divisor is A/X, dividend word is at zero-page address Y. Returns quotient in the caller word; remainder remains $02/$03. Wrapper restores A/X=0,Y=1. Eleven controlled native cases for this wrapper, 44 across the four wrappers, match integer calculations including mixed signs, $8000/$FFFF overflow and divisor zero. A/X return zero and Y one in every case. Callers and player reachability remain open.","t":"code","b":[32,173,180],"m":"jsr","oa":46253,"o":"DivideUnsigned16Setup"},{"a":46212,"t":"code","b":[152],"m":"tya"},{"a":46213,"t":"code","b":[170],"m":"tax"},{"a":46214,"t":"code","b":[200],"m":"iny"},{"a":46215,"t":"code","b":[96],"m":"rts"},{"a":46216,"l":"RemainderSigned16InPlace","c":"Signed 16-bit remainder wrapper. Uses magnitude division $B4DB, copies/negates the remainder according to original dividend sign, and replaces the caller word. A/X=0,Y=1 on return. No divide-by-zero or minimum-value/-1 guard. Eleven controlled native cases for this wrapper, 44 across the four wrappers, match integer calculations including mixed signs, $8000/$FFFF overflow and divisor zero. A/X return zero and Y one in every case. Callers and player reachability remain open.","t":"code","b":[32,219,180],"m":"jsr","oa":46299,"o":"DivideSigned16MagnitudeSetup"},{"a":46219,"t":"code","b":[165,39],"m":"lda","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":46221,"t":"code","b":[16,18],"m":"bpl","oa":46241,"o":"b_B4A1"},{"a":46223,"t":"code","b":[56],"m":"sec"},{"a":46224,"t":"code","b":[152],"m":"tya"},{"a":46225,"t":"code","b":[229,2],"m":"sbc","oa":2,"o":"shared_scratch_02_lo"},{"a":46227,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46229,"t":"code","b":[152],"m":"tya"},{"a":46230,"t":"code","b":[229,3],"m":"sbc","oa":3,"o":"shared_scratch_02_hi"},{"a":46232,"t":"code","b":[149,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46234,"t":"code","b":[152],"m":"tya"},{"a":46235,"t":"code","b":[170],"m":"tax"},{"a":46236,"t":"code","b":[200],"m":"iny"},{"a":46237,"t":"code","b":[96],"m":"rts"},{"a":46238,"l":"RemainderUnsigned16InPlace","c":"Unsigned remainder wrapper: invokes $B4AD then copies remainder $02/$03 into the caller dividend word. Divisor is A/X and Y chooses the zero-page word; returns A/X=0,Y=1. Eleven controlled native cases for this wrapper, 44 across the four wrappers, match integer calculations including mixed signs, $8000/$FFFF overflow and divisor zero. A/X return zero and Y one in every case. Callers and player reachability remain open.","t":"code","b":[32,173,180],"m":"jsr","oa":46253,"o":"DivideUnsigned16Setup"},{"a":46241,"l":"b_B4A1","t":"code","b":[165,2],"m":"lda","oa":2,"x":[46221],"o":"shared_scratch_02_lo"},{"a":46243,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46245,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":46247,"t":"code","b":[149,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46249,"t":"code","b":[152],"m":"tya"},{"a":46250,"t":"code","b":[170],"m":"tax"},{"a":46251,"t":"code","b":[200],"m":"iny"},{"a":46252,"t":"code","b":[96],"m":"rts"},{"a":46253,"l":"DivideUnsigned16Setup","c":"Saves the A/X divisor to $24/$25, changes X to the caller zero-page word offset supplied in Y, clears the remainder and enters the 16-round unsigned kernel at $B4B5. This belongs to the division allocation, not the preceding multiply routine. The complete instruction stream was recovered from fresh physical RAM; its callers and native edge cases are checked separately.","t":"code","b":[133,36],"m":"sta","oa":36,"x":[46209,46238],"o":"shared_pointer_or_math_sign_lo"},{"a":46255,"t":"code","b":[134,37],"m":"stx","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46257,"t":"code","b":[152],"m":"tya"},{"a":46258,"t":"code","b":[170],"m":"tax"},{"a":46259,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46261,"l":"DivideUnsigned16Rounds","c":"Sixteen restoring-division rounds. Shift dividend/quotient word left into remainder $02/$03; when remainder is at least divisor $24/$25, subtract it and increment quotient low byte. Returns with quotient in the selected zero-page word and remainder $02/$03. The complete instruction stream was recovered from fresh physical RAM; its callers and native edge cases are checked separately.","t":"code","b":[132,2],"m":"sty","oa":2,"x":[46345],"o":"shared_scratch_02_lo"},{"a":46263,"t":"code","b":[132,3],"m":"sty","oa":3,"o":"shared_scratch_02_hi"},{"a":46265,"t":"code","b":[160,16],"m":"ldy","o":"#$10"},{"a":46267,"l":"b_B4BB","t":"code","b":[22,0],"m":"asl","oa":0,"x":[46296],"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46269,"t":"code","b":[54,1],"m":"rol","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46271,"t":"code","b":[38,2],"m":"rol","oa":2,"o":"shared_scratch_02_lo"},{"a":46273,"t":"code","b":[38,3],"m":"rol","oa":3,"o":"shared_scratch_02_hi"},{"a":46275,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":46277,"t":"code","b":[197,36],"m":"cmp","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":46279,"t":"code","b":[165,3],"m":"lda","oa":3,"o":"shared_scratch_02_hi"},{"a":46281,"t":"code","b":[229,37],"m":"sbc","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46283,"t":"code","b":[144,10],"m":"bcc","oa":46295,"o":"b_B4D7"},{"a":46285,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":46287,"t":"code","b":[165,2],"m":"lda","oa":2,"o":"shared_scratch_02_lo"},{"a":46289,"t":"code","b":[229,36],"m":"sbc","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":46291,"t":"code","b":[133,2],"m":"sta","oa":2,"o":"shared_scratch_02_lo"},{"a":46293,"t":"code","b":[246,0],"m":"inc","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46295,"l":"b_B4D7","t":"code","b":[136],"m":"dey","x":[46283]},{"a":46296,"t":"code","b":[208,225],"m":"bne","oa":46267,"o":"b_B4BB"},{"a":46298,"t":"code","b":[96],"m":"rts"},{"a":46299,"l":"DivideSigned16MagnitudeSetup","c":"Saves divisor to $24/$25, original dividend high byte to $27 and XOR of operand high bytes to $26. Takes two's-complement magnitudes of negative operands and jumps to unsigned kernel $B4B5. Callers use $26 for quotient sign and $27 for remainder sign. The complete instruction stream was recovered from fresh physical RAM; its callers and native edge cases are checked separately.","t":"code","b":[133,36],"m":"sta","oa":36,"x":[46187,46216],"o":"shared_pointer_or_math_sign_lo"},{"a":46301,"t":"code","b":[134,37],"m":"stx","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46303,"t":"code","b":[152],"m":"tya"},{"a":46304,"t":"code","b":[170],"m":"tax"},{"a":46305,"t":"code","b":[160,0],"m":"ldy","o":"#$00"},{"a":46307,"t":"code","b":[181,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46309,"t":"code","b":[133,39],"m":"sta","oa":39,"o":"AlterEgo_Runtime_division_remainder_b3"},{"a":46311,"t":"code","b":[69,37],"m":"eor","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46313,"t":"code","b":[133,38],"m":"sta","oa":38,"o":"AlterEgo_Runtime_division_remainder_b2"},{"a":46315,"t":"code","b":[165,37],"m":"lda","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46317,"t":"code","b":[16,11],"m":"bpl","oa":46330,"o":"b_B4FA"},{"a":46319,"t":"code","b":[152],"m":"tya"},{"a":46320,"t":"code","b":[56],"m":"sec"},{"a":46321,"t":"code","b":[229,36],"m":"sbc","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":46323,"t":"code","b":[133,36],"m":"sta","oa":36,"o":"shared_pointer_or_math_sign_lo"},{"a":46325,"t":"code","b":[152],"m":"tya"},{"a":46326,"t":"code","b":[229,37],"m":"sbc","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46328,"t":"code","b":[133,37],"m":"sta","oa":37,"o":"shared_pointer_or_math_sign_hi"},{"a":46330,"l":"b_B4FA","t":"code","b":[181,1],"m":"lda","oa":1,"x":[46317],"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46332,"t":"code","b":[16,11],"m":"bpl","oa":46345,"o":"b_B509"},{"a":46334,"t":"code","b":[56],"m":"sec"},{"a":46335,"t":"code","b":[152],"m":"tya"},{"a":46336,"t":"code","b":[245,0],"m":"sbc","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46338,"t":"code","b":[149,0],"m":"sta","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46340,"t":"code","b":[152],"m":"tya"},{"a":46341,"t":"code","b":[245,1],"m":"sbc","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46343,"t":"code","b":[149,1],"m":"sta","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46345,"l":"b_B509","t":"code","b":[76,181,180],"m":"jmp","oa":46261,"x":[46332],"o":"DivideUnsigned16Rounds"},{"a":46348,"l":"shift_u16_buffer_left_by_ax","c":"Shift a caller-owned 16-bit little-endian value left by a 16-bit count. Input: A=count low byte, X=count high byte, Y=direct-page address of the value at Y/Y+1. The low count drives the first shift group and each remaining high-count unit performs another 256 ASL/ROL rounds. Output: shifted value in place; A=0, X=0, Y=1. Assumptions: Y must be a zero-page address whose 16-bit value occupies Y and Y+1: the routine transfers Y into X and then uses $00,X and $01,X, so an address above $FE would wrap into page zero's start. $02/$03 must be free because they become the private count, and A and X are consumed as the count and returned as zero. Clobbers $02/$03 as the private count and processor flags. Counts greater than 15 naturally shift all source bits out. Hardware: Touches no hardware: zero-page shifting only, with no VIC, SID, CIA or 6510-port access. Clobbers: A, X, Y and the processor flags; writes shared_scratch_02_lo, shared_scratch_02_hi, $00,X, $01,X.","t":"code","b":[134,2],"m":"stx","oa":2,"x":[42670,43004,43208,43300,43521,43627],"o":"shared_scratch_02_lo"},{"a":46350,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":46352,"t":"code","b":[152],"m":"tya"},{"a":46353,"t":"code","b":[170],"m":"tax"},{"a":46354,"t":"code","b":[164,3],"m":"ldy","oa":3,"o":"shared_scratch_02_hi"},{"a":46356,"t":"code","b":[208,10],"m":"bne","oa":46368,"o":"LAB_b520"},{"a":46358,"l":"LAB_b516","t":"code","b":[198,2],"m":"dec","oa":2,"x":[46373],"o":"shared_scratch_02_lo"},{"a":46360,"t":"code","b":[16,6],"m":"bpl","oa":46368,"o":"LAB_b520"},{"a":46362,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":46364,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46366,"t":"code","b":[138],"m":"txa"},{"a":46367,"t":"code","b":[96],"m":"rts"},{"a":46368,"l":"LAB_b520","t":"code","b":[22,0],"m":"asl","oa":0,"x":[46356,46360,46375],"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46370,"t":"code","b":[54,1],"m":"rol","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46372,"t":"code","b":[136],"m":"dey"},{"a":46373,"t":"code","b":[240,239],"m":"beq","oa":46358,"o":"LAB_b516"},{"a":46375,"t":"code","b":[208,247],"m":"bne","oa":46368,"o":"LAB_b520"},{"a":46377,"l":"shift_i16_buffer_right_by_ax","c":"Arithmetic-right-shift a caller-owned signed 16-bit value by a 16-bit count. Input: A=count low byte, X=count high byte, Y=direct-page address of the value at Y/Y+1. Negative values shift with carry set to preserve the sign bit; nonnegative values share the logical-right-shift loop at $B551. Output: shifted value in place; A=0, X=0, Y=1. Assumptions: Y must be a zero-page address holding the 16-bit value at Y and Y+1, since the routine copies Y into X and indexes $00,X/$01,X, so Y must be $FE or below. $02/$03 are used as the private count and must be free. The sign is tested once on entry, so the loop preserves the original sign rather than re-testing it each round. Clobbers $02/$03 and processor flags. Counts greater than 15 converge to $FFFF for negative values and zero otherwise. Hardware: Touches no hardware: zero-page shifting only. Clobbers: A, X, Y and the processor flags; writes shared_scratch_02_hi, shared_scratch_02_lo, $01,X, $00,X.","t":"code","b":[133,3],"m":"sta","oa":3,"x":[43412,43594],"o":"shared_scratch_02_hi"},{"a":46379,"t":"code","b":[134,2],"m":"stx","oa":2,"o":"shared_scratch_02_lo"},{"a":46381,"t":"code","b":[152],"m":"tya"},{"a":46382,"t":"code","b":[170],"m":"tax"},{"a":46383,"t":"code","b":[181,1],"m":"lda","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46385,"t":"code","b":[16,30],"m":"bpl","oa":46417,"o":"shift_u16_buffer_right_loop_entry"},{"a":46387,"t":"code","b":[164,3],"m":"ldy","oa":3,"o":"shared_scratch_02_hi"},{"a":46389,"t":"code","b":[208,10],"m":"bne","oa":46401,"o":"LAB_b541"},{"a":46391,"l":"LAB_b537","t":"code","b":[198,2],"m":"dec","oa":2,"x":[46407],"o":"shared_scratch_02_lo"},{"a":46393,"t":"code","b":[16,6],"m":"bpl","oa":46401,"o":"LAB_b541"},{"a":46395,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":46397,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46399,"t":"code","b":[138],"m":"txa"},{"a":46400,"t":"code","b":[96],"m":"rts"},{"a":46401,"l":"LAB_b541","t":"code","b":[56],"m":"sec","x":[46389,46393,46409]},{"a":46402,"t":"code","b":[118,1],"m":"ror","oa":1,"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46404,"t":"code","b":[118,0],"m":"ror","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46406,"t":"code","b":[136],"m":"dey"},{"a":46407,"t":"code","b":[240,238],"m":"beq","oa":46391,"o":"LAB_b537"},{"a":46409,"t":"code","b":[208,246],"m":"bne","oa":46401,"o":"LAB_b541"},{"a":46411,"l":"shift_u16_buffer_right_by_ax","c":"Standalone logical-right-shift entry for a caller-owned unsigned 16-bit value. Input: A=count low byte, X=count high byte, Y=direct-page address of the value at Y/Y+1. LSR of the high byte followed by ROR of the low byte performs each round. The signed helper at $B529 branches into the internal loop at $B551 for nonnegative values. Output: shifted value in place; A=0, X=0, Y=1. Assumptions: Same contract as the signed variant: Y must be a zero-page address of a 16-bit value at Y and Y+1 (so $FE or below), $02/$03 must be free as the private count, and A/X supply the 16-bit shift count. It shares its loop body at $B551 with $B529, so anything that relocates that loop breaks both entries. Clobbers $02/$03 and flags. No recorded active caller currently targets this standalone entry. Hardware: Touches no hardware: zero-page shifting only. Clobbers: A, X and the processor flags; writes shared_scratch_02_lo, shared_scratch_02_hi.","t":"code","b":[134,2],"m":"stx","oa":2,"o":"shared_scratch_02_lo"},{"a":46413,"t":"code","b":[133,3],"m":"sta","oa":3,"o":"shared_scratch_02_hi"},{"a":46415,"t":"code","b":[152],"m":"tya"},{"a":46416,"t":"code","b":[170],"m":"tax"},{"a":46417,"l":"shift_u16_buffer_right_loop_entry","c":"Shared logical-shift-right body of the 16-bit buffer shifters. It reads the remaining shift count from $03, and while the count is non-zero performs LSR $01,X / ROR $00,X on the two-byte buffer selected by X, decrementing the count and then the whole-byte counter at $02. Inputs: X = zero-page index of the two-byte buffer, $02 = whole-byte shift count, $03 = residual bit count. Outputs: the buffer shifted right; on exhaustion it returns with Y = 1, X = 0 and A = 0. Assumptions: Entered by fall-through from shift_u16_buffer_right_by_ax at $B54B and by BPL from shift_i16_buffer_right_by_ax at $B531, which branches here precisely when the value is non-negative and an arithmetic shift therefore degenerates to a logical one. Not an independent routine: it has no prologue of its own. Clobbers: A, X, Y, flags, $02/$03 and the indexed buffer. Hardware: None.","t":"code","b":[164,3],"m":"ldy","oa":3,"x":[46385],"o":"shared_scratch_02_hi"},{"a":46419,"t":"code","b":[208,10],"m":"bne","oa":46431,"o":"LAB_b55f"},{"a":46421,"l":"LAB_b555","t":"code","b":[198,2],"m":"dec","oa":2,"x":[46436],"o":"shared_scratch_02_lo"},{"a":46423,"t":"code","b":[16,6],"m":"bpl","oa":46431,"o":"LAB_b55f"},{"a":46425,"t":"code","b":[160,1],"m":"ldy","o":"#$01"},{"a":46427,"t":"code","b":[162,0],"m":"ldx","o":"#$00"},{"a":46429,"t":"code","b":[138],"m":"txa"},{"a":46430,"t":"code","b":[96],"m":"rts"},{"a":46431,"l":"LAB_b55f","t":"code","b":[86,1],"m":"lsr","oa":1,"x":[46419,46423,46438],"o":"C64_CPU_cpu_port_underlying_ram,x"},{"a":46433,"t":"code","b":[118,0],"m":"ror","oa":0,"o":"C64_CPU_cpu_port_ddr_underlying_ram,x"},{"a":46435,"t":"code","b":[136],"m":"dey"},{"a":46436,"t":"code","b":[240,239],"m":"beq","oa":46421,"o":"LAB_b555"},{"a":46438,"t":"code","b":[208,247],"m":"bne","oa":46431,"o":"LAB_b55f"},{"a":46440,"l":"packed_text_runtime_work","c":"Compiler/runtime work words used by the active $A45D/$A850/$A974 overlap routines for bounds, shifts and buffer offsets. Fields $B569-$B56C and $B577-$B57A are directly read and written as little-endian 16-bit values; intermediate bytes retain transient state from the first-interaction snapshot.","t":"byte","b":[0]},{"a":46441,"l":"lzw_group_code_width","c":"16-bit packed-code width, initialized to 9. $A850 changes it to 10 when next dictionary entry becomes 257, abandons the remainder of the old group and requests a fresh ten-byte group. Native tests at next-entry 256/257 and bit-position 0/72 confirm the branch, new width and threshold. Group buffers contain eight MSB-first codes in nine or ten bytes.","t":"word","b":[10,0],"d":[10],"x":[42094,43157,43165,43203,43230,43304,43350,43390]},{"a":46442,"t":"note","l":"lzw_code_width_high","c":"High byte of the 16-bit code width field beginning $B569; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $B569","x":[42097,43162,43172,43199,43226,43311,43359,43395]},{"a":46443,"l":"lzw_group_growth_threshold","c":"16-bit width-growth threshold: 256 at nine bits, then 1024 at ten bits. $A850 compares it against next dictionary entry $C243; the strict greater-than test triggers the nine-to-ten transition at 257. Dictionary insertion stops at 1024 entries, so ordinary streams remain ten-bit. Native boundary tests confirmed both values.","t":"word","b":[0,4],"d":[1024],"x":[42086,43111,43134,43182,43216]},{"a":46444,"t":"note","l":"lzw_growth_threshold_high","c":"High byte of the 16-bit growth threshold field beginning $B56B; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $B56B","x":[42089,43117,43140,43187,43223]},{"a":46445,"l":"lzw_packed_group_buffer","c":"Ten-byte packed-code input group at $B56D-$B576. $A850 requests code_width bytes; $A974 reads one MSB-first code at the bit offset $B577. Nine-bit groups use the first nine bytes, ten-bit groups all ten. Sixteen controlled native calls covering eight positions at each width matched independently packed codes, including $1FF and $3FF.","t":"byte","b":[136,46,187,190,241,137,239,68]},{"a":46453,"t":"byte","b":[80,3]},{"a":46455,"l":"lzw_group_bit_position","c":"16-bit offset of the next code within the packed group. $A974 derives byte offset by shifting right three and within-byte offset with AND 7; $A945 adds current width after reading. $A850 refills when position reaches the effective bit limit, or when dictionary growth changes width. This is a bit offset, not a file byte cursor.","t":"word","b":[10,0],"d":[10],"x":[42077,42209,43088,43280,43347,43353,43380]},{"a":46456,"t":"note","l":"lzw_bit_position_high","c":"High byte of the 16-bit bit position field beginning $B577; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $B577","x":[42080,42212,43094,43283,43356,43362,43385]},{"a":46457,"l":"lzw_group_bit_limit","c":"16-bit effective packed-group limit computed after refill as bytes_read*8-(code_width-1). Position below this value admits one complete code. A width change forces refill even when unread bits remain in the old group; incomplete trailing codes are discarded.","t":"word","b":[71,0],"d":[71],"x":[42215,43091,43251,43260,43286,43323]},{"a":46458,"t":"note","l":"lzw_bit_limit_high","c":"High byte of the 16-bit bit limit field beginning $B579; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $B579","x":[42218,43097,43256,43263,43291,43330]},{"a":46459,"l":"lzw_dictionary_literal_prefixes","c":"First 256 little-endian prefix words of the 1024-entry LZW dictionary at $B57B-$BD7A. The initializer $A457 clears all 2048 prefix bytes; literal codes $00-$FF have zero prefixes. $A6AA-$A6C5 index this table with twice the code, following predecessor phrases. A separate suffix byte for each code lies at $BD7B-$C17A. Independently decoding male MAP1 scene 26 reproduced all 3072 prefix/suffix bytes in this capture. This is dictionary state, not a generic 512-byte disk buffer.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46467,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46475,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46483,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46491,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46499,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46507,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46515,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46523,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46531,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46539,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46547,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46555,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46563,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46571,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46579,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46587,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46595,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46603,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46611,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46619,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46627,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46635,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46643,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46651,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46659,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46667,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46675,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46683,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46691,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46699,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46707,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46715,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46723,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46731,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46739,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46747,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46755,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46763,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46771,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46779,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46787,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46795,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46803,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46811,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46819,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46827,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46835,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46843,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46851,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46859,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46867,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46875,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46883,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46891,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46899,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46907,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46915,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46923,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46931,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46939,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46947,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46955,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46963,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":46971,"l":"lzw_dictionary_compound_prefixes","c":"Prefix words for dictionary codes 256-1023, continuing the table at $B57B. Each allocated entry stores the previous phrase code; the corresponding suffix stores the first byte of the following phrase. The expansion loop follows prefixes at $A6AA-$A6C5 and stores reconstructed suffix bytes on the reverse phrase stack at $A69C-$A69E. All 768 compound prefix words match an independent grouped-bit LZW decode of the captured MAP scene. They are not 768 scene text tokens.","t":"word","b":[6,0,1,0,12,0,22,0],"d":[6,1,12,22]},{"a":46979,"t":"word","b":[28,0,28,0,36,0,0,0],"d":[28,28,36,0]},{"a":46987,"t":"word","b":[0,0,2,0,2,0,3,0],"d":[0,2,2,3]},{"a":46995,"t":"word","b":[25,0,0,0,1,0,0,0],"d":[25,0,1,0]},{"a":47003,"t":"word","b":[3,0,1,0,2,0,8,1],"d":[3,1,2,264]},{"a":47011,"t":"word","b":[2,0,1,0,16,1,4,0],"d":[2,1,272,4]},{"a":47019,"t":"word","b":[1,0,5,0,2,0,16,0],"d":[1,5,2,16]},{"a":47027,"t":"word","b":[6,0,2,0,17,0,7,0],"d":[6,2,17,7]},{"a":47035,"t":"word","b":[2,0,18,0,8,0,5,0],"d":[2,18,8,5]},{"a":47043,"t":"word","b":[10,0,7,1,0,0,162,0],"d":[10,263,0,162]},{"a":47051,"t":"word","b":[0,0,170,0,0,0,178,0],"d":[0,170,0,178]},{"a":47059,"t":"word","b":[0,0,188,0,0,0,189,0],"d":[0,188,0,189]},{"a":47067,"t":"word","b":[0,0,198,0,0,0,242,0],"d":[0,198,0,242]},{"a":47075,"t":"word","b":[0,0,9,0,1,0,37,0],"d":[0,9,1,37]},{"a":47083,"t":"word","b":[1,0,89,0,111,0,117,0],"d":[1,89,111,117]},{"a":47091,"t":"word","b":[32,0,97,0,114,0,101,0],"d":[32,97,114,101]},{"a":47099,"t":"word","b":[32,0,115,0,105,0,116,0],"d":[32,115,105,116]},{"a":47107,"t":"word","b":[116,0,105,0,110,0,103,0],"d":[116,105,110,103]},{"a":47115,"t":"word","b":[32,0,69,1,32,0,121,0],"d":[32,325,32,121]},{"a":47123,"t":"word","b":[58,1,114,0,10,0,104,0],"d":[314,114,10,104]},{"a":47131,"t":"word","b":[105,0,103,0,104,0,99,0],"d":[105,103,104,99]},{"a":47139,"t":"word","b":[104,0,97,0,105,0,114,0],"d":[104,97,105,114]},{"a":47147,"t":"word","b":[44,0,32,0,101,0,97,0],"d":[44,32,101,97]},{"a":47155,"t":"word","b":[68,1,70,1,74,1,76,1],"d":[324,326,330,332]},{"a":47163,"t":"word","b":[32,0,108,0,117,0,110,0],"d":[32,108,117,110]},{"a":47171,"t":"word","b":[83,1,10,0,119,0,79,1],"d":[339,10,119,335]},{"a":47179,"t":"word","b":[83,1,32,0,99,0,111,0],"d":[339,32,99,111]},{"a":47187,"t":"word","b":[110,0,65,1,115,0,116,0],"d":[110,321,115,116]},{"a":47195,"t":"word","b":[115,0,32,0,111,0,102,0],"d":[115,32,111,102]},{"a":47203,"t":"word","b":[105,1,114,0,97,0,99,0],"d":[361,114,97,99]},{"a":47211,"t":"word","b":[107,0,101,0,114,0,115,0],"d":[107,101,114,115]},{"a":47219,"t":"word","b":[44,0,10,0,110,1,117,1],"d":[44,10,366,373]},{"a":47227,"t":"word","b":[69,1,101,0,100,0,32,0],"d":[325,101,100,32]},{"a":47235,"t":"word","b":[112,0,90,1,112,1,97,0],"d":[112,346,368,97]},{"a":47243,"t":"word","b":[110,0,130,1,97,0,32,0],"d":[110,386,97,32]},{"a":47251,"t":"word","b":[109,0,117,0,71,1,114,1],"d":[109,117,327,370]},{"a":47259,"t":"word","b":[10,0,109,0,105,0,108,0],"d":[10,109,105,108]},{"a":47267,"t":"word","b":[107,0,46,0,32,0,57,1],"d":[107,46,32,313]},{"a":47275,"t":"word","b":[59,1,61,1,63,1,106,0],"d":[315,317,319,106]},{"a":47283,"t":"word","b":[117,0,110,1,96,1,90,1],"d":[117,366,352,346]},{"a":47291,"t":"word","b":[114,0,110,0,69,1,103,0],"d":[114,110,325,103]},{"a":47299,"t":"word","b":[78,1,111,0,119,0,32,0],"d":[334,111,119,32]},{"a":47307,"t":"word","b":[116,0,111,0,89,1,91,1],"d":[116,111,345,347]},{"a":47315,"t":"word","b":[32,0,119,0,66,1,104,0],"d":[32,119,322,104]},{"a":47323,"t":"word","b":[32,0,117,0,116,0,101,0],"d":[32,117,116,101]},{"a":47331,"t":"word","b":[108,1,146,1,115,0,46,0],"d":[364,402,115,46]},{"a":47339,"t":"word","b":[0,0,10,0,77,0,111,0],"d":[0,10,77,111]},{"a":47347,"t":"word","b":[111,0,100,0,115,0,58,0],"d":[111,100,115,58]},{"a":47355,"t":"word","b":[0,0,32,0,32,0,65,0],"d":[0,32,32,65]},{"a":47363,"t":"word","b":[78,0,71,0,82,0,89,0],"d":[78,71,82,89]},{"a":47371,"t":"word","b":[192,1,32,0,67,0,85,0],"d":[448,32,67,85]},{"a":47379,"t":"word","b":[82,0,73,0,79,0,85,0],"d":[82,73,79,85]},{"a":47387,"t":"word","b":[83,0,7,1,65,0,99,0],"d":[83,263,65,99]},{"a":47395,"t":"word","b":[68,1,107,1,190,1,200,1],"d":[324,363,446,456]},{"a":47403,"t":"word","b":[80,0,73,0,67,0,75,0],"d":[80,73,67,75]},{"a":47411,"t":"word","b":[32,0,85,0,80,0,32,0],"d":[32,85,80,32]},{"a":47419,"t":"word","b":[83,0,221,1,69,0,82,0],"d":[83,477,69,82]},{"a":47427,"t":"word","b":[68,0,85,0,218,1,32,0],"d":[68,85,474,32]},{"a":47435,"t":"word","b":[80,0,76,0,65,0,83,0],"d":[80,76,65,83]},{"a":47443,"t":"word","b":[84,0,217,1,10,0,193,1],"d":[84,473,10,449]},{"a":47451,"t":"word","b":[32,0,68,0,204,1,78,0],"d":[32,68,460,78]},{"a":47459,"t":"word","b":[75,0,73,0,196,1,201,1],"d":[75,73,452,457]},{"a":47467,"t":"word","b":[221,1,200,1,84,0,198,1],"d":[477,456,84,454]},{"a":47475,"t":"word","b":[32,0,84,0,79,0,220,1],"d":[32,84,79,476]},{"a":47483,"t":"word","b":[83,0,69,0,252,1,72,0],"d":[83,69,508,72]},{"a":47491,"t":"word","b":[1,2,83,0,80,0,79,0],"d":[513,83,80,79]},{"a":47499,"t":"word","b":[79,0,78,0,200,1,69,0],"d":[79,78,456,69]},{"a":47507,"t":"word","b":[83,0,67,0,65,0,80,0],"d":[83,67,65,80]},{"a":47515,"t":"word","b":[1,2,70,0,82,0,79,0],"d":[513,70,82,79]},{"a":47523,"t":"word","b":[77,0,2,2,1,2,72,0],"d":[77,514,513,72]},{"a":47531,"t":"word","b":[73,0,71,0,72,0,67,0],"d":[73,71,72,67]},{"a":47539,"t":"word","b":[72,0,65,0,73,0,82,0],"d":[72,65,73,82]},{"a":47547,"t":"word","b":[7,1,9,1,6,0,7,1],"d":[263,265,6,263]},{"a":47555,"t":"word","b":[17,1,12,0,13,1,15,1],"d":[273,12,269,271]},{"a":47563,"t":"word","b":[17,1,19,1,21,1,5,0],"d":[273,275,277,5]},{"a":47571,"t":"word","b":[5,0,37,1,253,0,0,0],"d":[5,293,253,0]},{"a":47579,"t":"word","b":[254,0,0,0,28,0,1,0],"d":[254,0,28,1]},{"a":47587,"t":"word","b":[36,0,56,1,58,1,60,1],"d":[36,312,314,316]},{"a":47595,"t":"word","b":[62,1,72,1,110,0,60,1],"d":[318,328,110,316]},{"a":47603,"t":"word","b":[32,0,98,0,97,0,130,1],"d":[32,98,97,386]},{"a":47611,"t":"word","b":[109,0,187,1,100,0,149,1],"d":[109,443,100,405]},{"a":47619,"t":"word","b":[151,1,101,1,121,1,63,1],"d":[407,357,377,319]},{"a":47627,"t":"word","b":[100,0,105,0,110,1,117,0],"d":[100,105,366,117]},{"a":47635,"t":"word","b":[114,0,98,0,129,1,32,0],"d":[114,98,385,32]},{"a":47643,"t":"word","b":[114,0,80,1,104,0,116,0],"d":[114,336,104,116]},{"a":47651,"t":"word","b":[57,2,167,1,104,0,101,0],"d":[569,423,104,101]},{"a":47659,"t":"word","b":[144,1,105,0,100,0,100,0],"d":[400,105,100,100]},{"a":47667,"t":"word","b":[108,0,63,1,114,1,60,1],"d":[108,319,370,316]},{"a":47675,"t":"word","b":[58,2,101,0,120,0,99,0],"d":[570,101,120,99]},{"a":47683,"t":"word","b":[66,1,162,1,32,0,103,0],"d":[322,418,32,103]},{"a":47691,"t":"word","b":[97,0,109,0,93,2,102,0],"d":[97,109,605,102]},{"a":47699,"t":"word","b":[10,0,98,0,108,0,111,0],"d":[10,98,108,111]},{"a":47707,"t":"word","b":[119,1,182,1,223,1,117,0],"d":[375,438,479,117]},{"a":47715,"t":"word","b":[132,1,114,0,100,0,117,0],"d":[388,114,100,117]},{"a":47723,"t":"word","b":[119,1,172,1,58,1,108,0],"d":[375,428,314,108]},{"a":47731,"t":"word","b":[100,0,10,0,98,1,100,0],"d":[100,10,354,100]},{"a":47739,"t":"word","b":[121,1,110,1,135,1,66,2],"d":[377,366,391,578]},{"a":47747,"t":"word","b":[150,1,54,2,104,0,111,0],"d":[406,566,104,111]},{"a":47755,"t":"word","b":[123,2,85,2,87,2,112,0],"d":[635,597,599,112]},{"a":47763,"t":"word","b":[108,0,97,0,110,1,105,0],"d":[108,97,366,105]},{"a":47771,"t":"word","b":[99,0,139,1,141,1,32,0],"d":[99,395,397,32]},{"a":47779,"t":"word","b":[79,1,81,1,113,1,118,0],"d":[335,337,369,118]},{"a":47787,"t":"word","b":[121,1,94,1,75,2,78,1],"d":[377,350,587,334]},{"a":47795,"t":"word","b":[90,1,131,2,73,0,83,2],"d":[346,643,73,595]},{"a":47803,"t":"word","b":[73,2,32,0,102,0,117,0],"d":[585,32,102,117]},{"a":47811,"t":"word","b":[108,0,108,0,113,1,115,1],"d":[108,108,369,371]},{"a":47819,"t":"word","b":[145,1,147,1,46,0,185,1],"d":[401,403,46,441]},{"a":47827,"t":"word","b":[111,0,116,0,86,2,114,0],"d":[111,116,598,114]},{"a":47835,"t":"word","b":[64,1,97,0,121,0,123,1],"d":[320,97,121,379]},{"a":47843,"t":"word","b":[32,0,34,0,80,0,177,1],"d":[32,34,80,433]},{"a":47851,"t":"word","b":[137,2,145,2,163,1,100,0],"d":[649,657,419,100]},{"a":47859,"t":"word","b":[165,1,58,2,107,1,184,2],"d":[421,570,363,696]},{"a":47867,"t":"word","b":[116,0,97,0,109,2,63,1],"d":[116,97,621,319]},{"a":47875,"t":"word","b":[77,2,102,0,111,0,56,2],"d":[589,102,111,568]},{"a":47883,"t":"word","b":[75,1,117,0,125,1,112,0],"d":[331,117,381,112]},{"a":47891,"t":"word","b":[146,1,165,2,66,1,46,0],"d":[402,677,322,46]},{"a":47899,"t":"word","b":[34,0,7,1,193,1,34,0],"d":[34,263,449,34]},{"a":47907,"t":"word","b":[79,0,46,0,75,0,207,2],"d":[79,46,75,719]},{"a":47915,"t":"word","b":[194,1,78,0,68,0,231,1],"d":[450,78,68,487]},{"a":47923,"t":"word","b":[85,0,84,0,240,1,79,0],"d":[85,84,496,79]},{"a":47931,"t":"word","b":[87,0,78,0,21,2,32,0],"d":[87,78,533,32]},{"a":47939,"t":"word","b":[77,0,85,0,71,0,200,1],"d":[77,85,71,456]},{"a":47947,"t":"word","b":[34,0,78,0,79,0,33,0],"d":[34,78,79,33]},{"a":47955,"t":"word","b":[208,2,10,1,8,0,35,2],"d":[720,266,8,547]},{"a":47963,"t":"word","b":[2,0,37,2,14,1,16,1],"d":[2,549,270,272]},{"a":47971,"t":"word","b":[18,1,9,1,42,2,44,2],"d":[274,265,554,556]},{"a":47979,"t":"word","b":[7,1,16,0,0,0,17,0],"d":[263,16,0,17]},{"a":47987,"t":"word","b":[0,0,55,0,0,0,72,0],"d":[0,55,0,72]},{"a":47995,"l":"lzw_dictionary_prefixes_codes_768_1023","c":"Final 256 little-endian prefix words for dictionary codes 768-1023. They complete the 2048-byte allocation beginning $B57B; suffixes for the same codes reside in the 1024-byte suffix table at $BD7B. Independent MAP1 decoding reproduces this entire tail. This boundary splits a large allocation for the 1024-byte ownership limit, not because the dictionary uses a new representation here.","t":"word","b":[0,0,186,1,109,0,167,1],"d":[0,442,109,423]},{"a":48003,"t":"word","b":[75,2,108,1,60,1,119,0],"d":[587,364,316,119]},{"a":48011,"t":"word","b":[177,2,183,1,200,1,235,1],"d":[689,439,456,491]},{"a":48019,"t":"word","b":[65,0,82,0,221,2,232,1],"d":[65,82,733,488]},{"a":48027,"t":"word","b":[65,0,89,0,245,1,71,0],"d":[65,89,501,71]},{"a":48035,"t":"word","b":[32,0,87,0,73,0,84,0],"d":[32,87,73,84]},{"a":48043,"t":"word","b":[72,0,226,2,202,1,80,0],"d":[72,738,458,80]},{"a":48051,"t":"word","b":[238,1,193,1,65,0,71,0],"d":[494,449,65,71]},{"a":48059,"t":"word","b":[29,2,9,2,193,1,241,1],"d":[541,521,449,497]},{"a":48067,"t":"word","b":[245,1,219,1,23,3,1,2],"d":[501,475,791,513]},{"a":48075,"t":"word","b":[77,0,73,0,76,0,75,0],"d":[77,73,76,75]},{"a":48083,"t":"word","b":[8,1,4,0,44,2,1,0],"d":[264,4,556,1]},{"a":48091,"t":"word","b":[10,0,44,2,20,0,17,1],"d":[10,556,20,273]},{"a":48099,"t":"word","b":[34,2,14,1,4,0,2,0],"d":[546,270,4,2]},{"a":48107,"t":"word","b":[25,1,37,1,84,0,0,0],"d":[281,293,84,0]},{"a":48115,"t":"word","b":[83,0,115,2,121,1,118,2],"d":[83,627,377,630]},{"a":48123,"t":"word","b":[120,2,97,0,7,3,121,0],"d":[632,97,775,121]},{"a":48131,"t":"word","b":[33,0,132,2,59,1,122,0],"d":[33,644,315,122]},{"a":48139,"t":"word","b":[187,1,109,0,10,0,60,3],"d":[443,109,10,828]},{"a":48147,"t":"word","b":[116,2,63,3,107,0,150,2],"d":[628,831,107,662]},{"a":48155,"t":"word","b":[152,2,200,2,175,2,86,2],"d":[664,712,687,598]},{"a":48163,"t":"word","b":[62,2,124,1,115,0,134,2],"d":[574,380,115,646]},{"a":48171,"t":"word","b":[119,0,121,1,101,2,173,2],"d":[119,377,613,685]},{"a":48179,"t":"word","b":[63,1,107,0,66,1,83,1],"d":[319,107,322,339]},{"a":48187,"t":"word","b":[179,1,172,1,174,1,88,2],"d":[435,428,430,600]},{"a":48195,"t":"word","b":[169,2,13,1,48,2,7,1],"d":[681,269,560,263]},{"a":48203,"t":"word","b":[4,0,38,2,56,3,7,1],"d":[4,550,824,263]},{"a":48211,"t":"word","b":[192,0,0,3,111,0,2,3],"d":[192,768,111,770]},{"a":48219,"t":"word","b":[187,2,101,0,115,0,110,0],"d":[699,101,115,110]},{"a":48227,"t":"word","b":[39,0,83,2,110,0,172,2],"d":[39,595,110,684]},{"a":48235,"t":"word","b":[143,2,63,1,91,3,139,1],"d":[655,319,859,395]},{"a":48243,"t":"word","b":[113,3,115,0,125,2,110,0],"d":[881,115,637,110]},{"a":48251,"t":"word","b":[68,1,165,2,86,3,63,1],"d":[324,677,854,319]},{"a":48259,"t":"word","b":[115,0,108,0,105,0,112,0],"d":[115,108,105,112]},{"a":48267,"t":"word","b":[112,1,190,2,66,1,95,2],"d":[368,702,322,607]},{"a":48275,"t":"word","b":[124,2,140,2,136,1,112,1],"d":[636,652,392,368]},{"a":48283,"t":"word","b":[80,2,81,1,83,2,190,2],"d":[592,337,595,702]},{"a":48291,"t":"word","b":[122,3,102,0,110,2,198,2],"d":[890,102,622,710]},{"a":48299,"t":"word","b":[170,2,70,0,198,2,116,0],"d":[682,70,710,116]},{"a":48307,"t":"word","b":[98,1,91,1,101,0,108,0],"d":[354,347,101,108]},{"a":48315,"t":"word","b":[121,0,88,1,130,3,32,0],"d":[121,344,898,32]},{"a":48323,"t":"word","b":[112,3,114,3,116,3,102,2],"d":[880,882,884,614]},{"a":48331,"t":"word","b":[101,0,116,0,78,1,75,2],"d":[101,116,334,587]},{"a":48339,"t":"word","b":[116,0,149,1,66,0,183,2],"d":[116,405,66,695]},{"a":48347,"t":"word","b":[162,3,121,0,158,3,108,0],"d":[930,121,926,108]},{"a":48355,"t":"word","b":[112,1,110,2,117,0,91,2],"d":[368,622,117,603]},{"a":48363,"t":"word","b":[121,0,170,2,158,2,147,2],"d":[121,682,670,659]},{"a":48371,"t":"word","b":[171,3,112,1,81,3,170,1],"d":[939,368,849,426]},{"a":48379,"t":"word","b":[122,1,139,3,153,2,108,2],"d":[378,907,665,620]},{"a":48387,"t":"word","b":[101,0,103,0,73,1,168,1],"d":[101,103,329,424]},{"a":48395,"t":"word","b":[116,1,184,3,69,3,172,1],"d":[372,952,837,428]},{"a":48403,"t":"word","b":[70,2,60,2,62,2,183,1],"d":[582,572,574,439]},{"a":48411,"t":"word","b":[1,0,48,2,24,1,49,3],"d":[1,560,280,817]},{"a":48419,"t":"word","b":[0,0,104,3,14,1,106,3],"d":[0,872,270,874]},{"a":48427,"t":"word","b":[0,0,210,0,0,0,151,1],"d":[0,210,0,407]},{"a":48435,"t":"word","b":[167,3,83,2,99,0,97,0],"d":[935,595,99,97]},{"a":48443,"t":"word","b":[141,1,82,2,149,1,78,0],"d":[397,594,405,78]},{"a":48451,"t":"word","b":[172,2,89,1,151,2,110,0],"d":[684,345,663,110]},{"a":48459,"t":"word","b":[74,3,61,3,117,2,119,2],"d":[842,829,629,631]},{"a":48467,"t":"word","b":[78,3,173,1,164,2,147,2],"d":[846,429,676,659]},{"a":48475,"t":"word","b":[158,3,112,0,153,2,113,1],"d":[926,112,665,369]},{"a":48483,"t":"word","b":[177,1,10,0,94,2,173,2],"d":[433,10,606,685]},{"a":48491,"t":"word","b":[160,2,105,2,115,0,113,2],"d":[672,617,115,625]},{"a":48499,"t":"word","b":[219,3,103,0,168,3,74,1],"d":[987,103,936,330]},{"a":48507,"l":"lzw_dictionary_literal_suffixes","c":"Suffix bytes for literal codes $00-$FF: exactly the identity sequence 0..255, initialized at $A4AA-$A4D7. The dictionary suffix allocation continues through $C17A for compound codes; prefix words reside at $B57B-$BD7A. Its role is the final byte of each LZW dictionary entry, rather than an independent character translation table.","t":"byte","b":[0,1,2,3,4,5,6,7]},{"a":48515,"t":"byte","b":[8,9,10,11,12,13,14,15]},{"a":48523,"t":"byte","b":[16,17,18,19,20,21,22,23]},{"a":48531,"t":"byte","b":[24,25,26,27,28,29,30,31]},{"a":48539,"t":"byte","b":[32,33,34,35,36,37,38,39]},{"a":48547,"t":"byte","b":[40,41,42,43,44,45,46,47]},{"a":48555,"t":"byte","b":[48,49,50,51,52,53,54,55]},{"a":48563,"t":"byte","b":[56,57,58,59,60,61,62,63]},{"a":48571,"t":"byte","b":[64,65,66,67,68,69,70,71]},{"a":48579,"t":"byte","b":[72,73,74,75,76,77,78,79]},{"a":48587,"t":"byte","b":[80,81,82,83,84,85,86,87]},{"a":48595,"t":"byte","b":[88,89,90,91,92,93,94,95]},{"a":48603,"t":"byte","b":[96,97,98,99,100,101,102,103]},{"a":48611,"t":"byte","b":[104,105,106,107,108,109,110,111]},{"a":48619,"t":"byte","b":[112,113,114,115,116,117,118,119]},{"a":48627,"t":"byte","b":[120,121,122,123,124,125,126,127]},{"a":48635,"t":"byte","b":[128,129,130,131,132,133,134,135]},{"a":48643,"t":"byte","b":[136,137,138,139,140,141,142,143]},{"a":48651,"t":"byte","b":[144,145,146,147,148,149,150,151]},{"a":48659,"t":"byte","b":[152,153,154,155,156,157,158,159]},{"a":48667,"t":"byte","b":[160,161,162,163,164,165,166,167]},{"a":48675,"t":"byte","b":[168,169,170,171,172,173,174,175]},{"a":48683,"t":"byte","b":[176,177,178,179,180,181,182,183]},{"a":48691,"t":"byte","b":[184,185,186,187,188,189,190,191]},{"a":48699,"t":"byte","b":[192,193,194,195,196,197,198,199]},{"a":48707,"t":"byte","b":[200,201,202,203,204,205,206,207]},{"a":48715,"t":"byte","b":[208,209,210,211,212,213,214,215]},{"a":48723,"t":"byte","b":[216,217,218,219,220,221,222,223]},{"a":48731,"t":"byte","b":[224,225,226,227,228,229,230,231]},{"a":48739,"t":"byte","b":[232,233,234,235,236,237,238,239]},{"a":48747,"t":"byte","b":[240,241,242,243,244,245,246,247]},{"a":48755,"t":"byte","b":[248,249,250,251,252,253,254,255]},{"a":48763,"l":"lzw_dictionary_compound_suffixes_part1","c":"Compound-code suffix bytes for dictionary entries 256-644, at $BE7B-$BFFF. Continues at $C000 for entries 645-1023. Each suffix is the first byte of the phrase that followed the entry's prefix phrase when it was allocated. Independent MAP1 decoding reproduced this entire table; these bytes are not a low-byte projection of a 16-bit scene-token array.","t":"byte","b":[1,12,22,28,28,36,0,0]},{"a":48771,"t":"byte","b":[2,2,3,25,0,1,0,3]},{"a":48779,"t":"byte","b":[1,2,0,2,1,3,4,1]},{"a":48787,"t":"byte","b":[5,2,16,6,2,17,7,2]},{"a":48795,"t":"byte","b":[18,8,5,10,0,0,162,0]},{"a":48803,"t":"byte","b":[170,0,178,0,188,0,189,0]},{"a":48811,"t":"byte","b":[198,0,242,0,9,1,37,1]},{"a":48819,"t":"byte","b":[89,111,117,32,97,114,101,32]},{"a":48827,"t":"byte","b":[115,105,116,116,105,110,103,32]},{"a":48835,"t":"byte","b":[105,32,121,111,114,10,104,105]},{"a":48843,"t":"byte","b":[103,104,99,104,97,105,114,44]},{"a":48851,"t":"byte","b":[32,101,97,116,110,32,111,32]},{"a":48859,"t":"byte","b":[108,117,110,99,10,119,104,99]},{"a":48867,"t":"byte","b":[32,99,111,110,115,115,116,115]},{"a":48875,"t":"byte","b":[32,111,102,32,114,97,99,107]},{"a":48883,"t":"byte","b":[101,114,115,44,10,115,114,105]},{"a":48891,"t":"byte","b":[101,100,32,112,101,115,97,110]},{"a":48899,"t":"byte","b":[100,97,32,109,117,103,111,10]},{"a":48907,"t":"byte","b":[109,105,108,107,46,32,89,117]},{"a":48915,"t":"byte","b":[97,101,106,117,115,32,101,114]},{"a":48923,"t":"byte","b":[110,105,103,10,111,119,32,116]},{"a":48931,"t":"byte","b":[111,32,97,32,119,105,104,32]},{"a":48939,"t":"byte","b":[117,116,101,110,105,115,46,0]},{"a":48947,"t":"byte","b":[10,77,111,111,100,115,58,0]},{"a":48955,"t":"byte","b":[32,32,65,78,71,82,89,0]},{"a":48963,"t":"byte","b":[32,67,85,82,73,79,85,83]},{"a":48971,"t":"byte","b":[0,65,99,116,111,115,0,80]},{"a":48979,"t":"byte","b":[73,67,75,32,85,80,32,83]},{"a":48987,"t":"byte","b":[85,69,82,68,85,67,32,80]},{"a":48995,"t":"byte","b":[76,65,83,84,73,10,32,32]},{"a":49003,"t":"byte","b":[68,82,78,75,73,78,32,85]},{"a":49011,"t":"byte","b":[0,84,82,32,84,79,32,83]},{"a":49019,"t":"byte","b":[69,32,72,69,83,80,79,79]},{"a":49027,"t":"byte","b":[78,0,69,83,67,65,80,69]},{"a":49035,"t":"byte","b":[70,82,79,77,32,69,72,73]},{"a":49043,"t":"byte","b":[71,72,67,72,65,73,82,0]},{"a":49051,"t":"byte","b":[2,6,0,1,12,0,0,1]},{"a":49059,"t":"byte","b":[0,1,5,5,0,253,0,254]},{"a":49067,"t":"byte","b":[0,28,1,36,1,111,32,114]},{"a":49075,"t":"byte","b":[32,110,32,32,98,97,100,109]},{"a":49083,"t":"byte","b":[111,100,46,89,10,101,101,100]},{"a":49091,"t":"byte","b":[105,115,117,114,98,101,32,114]},{"a":49099,"t":"byte","b":[105,104,116,32,32,104,101,10]},{"a":49107,"t":"byte","b":[105,100,100,108,101,111,32,110]},{"a":49115,"t":"byte","b":[101,120,99,105,105,32,103,97]},{"a":49123,"t":"byte","b":[109,101,102,10,98,108,111,99]},{"a":49131,"t":"byte","b":[115,32,117,112,114,100,117,99]},{"a":49139,"t":"byte","b":[32,111,108,100,10,117,100,101]},{"a":49147,"t":"byte","b":[115,97,100,32,111]},{"a":49152,"l":"lzw_dictionary_compound_suffixes_part2","c":"Suffix bytes for compound dictionary codes 645-1023, continuing $BE7B-$BFFF and ending $C17A. At the first name prompt the bytes agree with an independent decode of MAP1 scene 26. This physical area also belongs to the retained $1000-to-$C000 initialization copy; a byte-equal template is not evidence that the current occupant has no purpose. VM stack/frame workspace is farther above it.","t":"byte","b":[104,111,108,32,101,112,108,97]},{"a":49160,"t":"byte","b":[115,105,99,32,117,32,104,103]},{"a":49168,"t":"byte","b":[32,118,101,32,117,10,101,100]},{"a":49176,"t":"byte","b":[73,116,105,32,102,117,108,108]},{"a":49184,"t":"byte","b":[32,102,109,108,46,10,111,116]},{"a":49192,"t":"byte","b":[104,114,32,97,121,115,32,34]},{"a":49200,"t":"byte","b":[80,117,32,32,103,100,111,110]},{"a":49208,"t":"byte","b":[111,32,116,97,98,101,98,102]},{"a":49216,"t":"byte","b":[111,114,121,117,10,112,105,108]},{"a":49224,"t":"byte","b":[105,46,34,0,32,34,79,46]},{"a":49232,"t":"byte","b":[75,46,32,78,68,32,85,84]},{"a":49240,"t":"byte","b":[32,79,87,78,32,32,77,85]},{"a":49248,"t":"byte","b":[71,0,34,78,79,33,34,2]},{"a":49256,"t":"byte","b":[8,0,2,12,1,3,2,2]},{"a":49264,"t":"byte","b":[1,5,0,16,0,17,0,55]},{"a":49272,"t":"byte","b":[0,72,0,77,109,32,117,110]},{"a":49280,"t":"byte","b":[32,119,97,46,0,83,65,82]},{"a":49288,"t":"byte","b":[84,80,65,89,73,71,32,87]},{"a":49296,"t":"byte","b":[73,84,72,32,67,80,10,32]},{"a":49304,"t":"byte","b":[65,71,65,78,32,68,73,75]},{"a":49312,"t":"byte","b":[84,69,77,73,76,75,0,4]},{"a":49320,"t":"byte","b":[5,1,10,5,20,1,6,1]},{"a":49328,"t":"byte","b":[4,2,5,0,84,0,83,117]},{"a":49336,"t":"byte","b":[101,100,99,97,119,121,33,32]},{"a":49344,"t":"byte","b":[117,122,111,109,10,83,112,100]},{"a":49352,"t":"byte","b":[107,32,101,121,114,104,97,44]},{"a":49360,"t":"byte","b":[115,104,119,101,105,116,101,107]},{"a":49368,"t":"byte","b":[105,99,101,32,105,10,108,0]},{"a":49376,"t":"byte","b":[254,0,4,0,5,0,192,0]},{"a":49384,"t":"byte","b":[111,109,100,101,115,110,39,116]},{"a":49392,"t":"byte","b":[110,111,105,101,116,32,101,115]},{"a":49400,"t":"byte","b":[10,110,116,108,115,101,115,108]},{"a":49408,"t":"byte","b":[105,112,115,111,105,32,100,108]},{"a":49416,"t":"byte","b":[110,115,114,103,116,111,116,102]},{"a":49424,"t":"byte","b":[108,111,46,70,111,116,117,97]},{"a":49432,"t":"byte","b":[101,108,121,44,115,32,100,115]},{"a":49440,"t":"byte","b":[39,32,101,116,10,117,116,46]},{"a":49448,"t":"byte","b":[66,117,115,121,101,108,115,108]},{"a":49456,"t":"byte","b":[117,100,121,46,73,32,117,115]},{"a":49464,"t":"byte","b":[121,32,114,32,32,10,101,103]},{"a":49472,"t":"byte","b":[105,116,32,121,32,32,101,32]},{"a":49480,"t":"byte","b":[97,46,1,254,1,5,0,4]},{"a":49488,"t":"byte","b":[1,5,0,210,0,89,32,116]},{"a":49496,"t":"byte","b":[99,97,117,104,46,78,111,32]},{"a":49504,"t":"byte","b":[118,110,10,117,114,117,107,119]},{"a":49512,"t":"byte","b":[108,32,101,112,32,32,117,10]},{"a":49520,"t":"byte","b":[111,116,105,109,115,115,89,103]},{"a":49528,"t":"byte","b":[101,32]},{"a":49530,"l":"lzw_dictionary_last_suffix","c":"Suffix byte for dictionary code 1023, the final byte of the 1024-entry suffix array beginning $BD7B. It is followed by a distinct 200-byte phrase output stack at $C17B. This is not an unexplained initialization-image tail.","t":"byte","b":[101]},{"a":49531,"l":"lzw_phrase_output_stack","c":"200-byte reverse phrase stack $C17B-$C242, traversed using the word index $C246. The expansion routine initializes the index to 200, follows dictionary prefix chains and pushes suffix bytes downward; output subsequently drains the reconstructed phrase in forward order. $C243 begins separate decompressor state. Maximum legal phrase depth and overflow handling still require edge-case tests.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49539,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49547,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49555,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49563,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49571,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49579,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49587,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49595,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49603,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49611,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49619,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49627,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49635,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49643,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49651,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49659,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49667,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49675,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49683,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49691,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49699,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49707,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49715,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":49723,"t":"byte","b":[0,0,32,121,32,0,0,2]},{"a":49731,"l":"lzw_next_dictionary_code","c":"next entry to allocate, initialized to 256 after setting literal suffixes; capped by comparison with 1023 during dictionary insertion. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"word","b":[0,4],"d":[1024],"x":[42145,42154,42162,42180,42194,42526,42961,43056,43114,43137]},{"a":49732,"t":"note","l":"lzw_next_dictionary_index_high","c":"High byte of the 16-bit next dictionary index field beginning $C243; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $C243","x":[42148,42159,42167,42187,42532,42967,43064,43120,43143]},{"a":49733,"l":"lzw_phrase_resume_flag","c":"one-byte flag distinguishing a fresh phrase request from resuming an incompletely drained phrase. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"byte","b":[1],"x":[42083,42221,42259]},{"a":49734,"l":"lzw_phrase_stack_index","c":"word offset into the 200-byte reverse phrase stack at $C17B. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"word","b":[199,0],"d":[199],"x":[42277,42547,42552,42564,42606,42611,42623,42700,42705,42717,42775,42807,42833,42871,42878]},{"a":49735,"t":"note","l":"lzw_phrase_stack_index_high","c":"High byte of the 16-bit phrase stack index field beginning $C246; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $C246","x":[42280,42555,42560,42571,42614,42619,42630,42708,42713,42724,42780,42812,42838,42881,42888]},{"a":49736,"l":"lzw_prefix_walk_code","c":"word code currently being chased through prefix/suffix entries. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"word","b":[0,0],"d":[0],"x":[42467,42511,42523,42586,42638,42656,42688,42732,42964,42973,42990,43031,43051]},{"a":49737,"t":"note","l":"lzw_prefix_walk_code_high","c":"High byte of the 16-bit prefix walk code field beginning $C248; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $C248","x":[42472,42517,42529,42592,42595,42645,42661,42693,42739,42970,42978,42995,43038,43059]},{"a":49738,"l":"lzw_previous_phrase_code","c":"previous input phrase code, used as the prefix of a newly allocated dictionary entry. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"word","b":[66,2],"d":[578],"x":[42303,42583,43020,43070]},{"a":49739,"t":"note","l":"lzw_previous_phrase_code_high","c":"High byte of the 16-bit previous phrase code field beginning $C24A; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $C24A","x":[42308,42589,43025,43076]},{"a":49740,"l":"lzw_current_phrase_code","c":"current packed input code, including the special next-entry case. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"word","b":[32,2],"d":[544],"x":[42514,43067]},{"a":49741,"t":"note","l":"lzw_current_phrase_code_high","c":"High byte of the 16-bit current phrase code field beginning $C24C; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $C24C","x":[42520,43073]},{"a":49742,"l":"lzw_phrase_first_byte_word","c":"word holding the first decoded byte used as a new entry's suffix; $FFFF also propagates end-of-input. State belongs to $A457-$AA8F; it is not authored VM bytecode.","t":"word","b":[0,0],"d":[0],"x":[42313,42321,42442,42578,42748,42755,43045]},{"a":49743,"t":"note","l":"lzw_phrase_first_byte_word_high","c":"High byte of the 16-bit phrase first byte word field beginning $C24E; part of the checked grouped-LZW decompressor state. It is not a separate allocation.","note":"inside the item at $C24E","x":[42318,42328,42752]},{"a":49744,"l":"lzw_low_bit_masks","c":"Thirteen little-endian masks for bit widths 0..12: (1<<width)-1, occupying $C250-$C269. $AA5F doubles the width and masks the accumulated code with the selected word before returning it in $0A/$0B. All masks independently match the formula. The pointer words beginning $C26A are a distinct allocation.","t":"word","b":[0,0,1,0,3,0,7,0],"d":[0,1,3,7]},{"a":49752,"t":"word","b":[15,0,31,0,63,0,127,0],"d":[15,31,63,127]},{"a":49760,"t":"word","b":[255,0,255,1,255,3,255,7],"d":[255,511,1023,2047]},{"a":49768,"t":"word","b":[255,15],"d":[4095]},{"a":49770,"l":"life_status_label_pointer_directory","c":"24 little-endian label pointers through $C299, ranging from $AC3D to $ADD5. Compiled life-status procedure $ADAC indexes this directory while laying out state labels and values. It is separate from the LZW mask words preceding it. Life-status display is a later gameplay feature whose full behavior needs a fresh overlay; this table remains resident in the name-prompt image.","t":"word","b":[61,172,75,172,91,172,111,172],"d":[44093,44107,44123,44143]},{"a":49778,"t":"word","b":[125,172,141,172,156,172,174,172],"d":[44157,44173,44188,44206]},{"a":49786,"t":"word","b":[188,172,200,172,220,172,241,172],"d":[44220,44232,44252,44273]},{"a":49794,"t":"word","b":[1,173,11,173,20,173,40,173],"d":[44289,44299,44308,44328]},{"a":49802,"t":"word","b":[59,173,78,173,90,173,110,173],"d":[44347,44366,44378,44398]},{"a":49810,"t":"word","b":[122,173,136,173,156,173,164,173],"d":[44410,44424,44444,44452]},{"a":49818,"l":"gameplay_object_recovery_frame_ptr","c":"Recovery frame-pointer slot of the gameplay occupant's non-local-exit pair. gameplay_object_entry_setjmp publishes the live VM frame pointer $06/$07 here; gameplay_object_longjmp_exit reloads it into $0E/$0F and copies the saved eight-byte frame back over $02-$09. Little-endian 16-bit. Written once per gameplay entry and read once per non-local exit; no other code in the resident image or either occupant references it.","t":"word","b":[213,207],"d":[53205],"x":[45974,46018]},{"a":49820,"t":"gap","n":6},{"a":49826,"l":"resident_scene26_descriptor31","c":"394-byte cached interaction descriptor at $C2A2-$C42B. Independent male MAP1 decoding yields this exact allocation, using scene-26 boundaries 6032 and 6426. It contains one route $FE, no conditions, one four-byte effect {state 9, flags 5, big-endian value 30}, no choice dimensions, four script bytes 0,1,0,5, and two text boundaries 0 and 373 followed by 373 text bytes and one zero trailer. The current name prompt does not display this cached narrative. All 39 descriptors in that scene independently parse to complete boundaries; effect behavior requires its interpreter, not these fields alone.","t":"byte","b":[1,254,0,1,9,5,0,30]},{"a":49834,"t":"byte","b":[0,4,0,1,0,5]},{"a":49840,"l":"resident_descriptor_text_boundary_count","c":"Two little-endian text boundaries in cached scene-26 descriptor 31. Their words begin $C2B2; boundaries 0 and 373 delimit its single text fragment. Text starts at $C2B6, ends $C42A, and a final zero trailer is at $C42B.","t":"byte","b":[2,0]},{"a":49842,"l":"resident_descriptor_text_boundaries","c":"Two little-endian text offsets 0 and 373 for the cached 394-byte descriptor. They index the text pool beginning $C2B6 rather than CPU memory addresses.","t":"byte","b":[0,0,117,1]},{"a":49846,"l":"resident_descriptor_narrative_text","c":"373 bytes of scene-26 descriptor-31 text, through $C42A. Starts with the daredevil statement; embedded line breaks and display substitutions are part of the preserved text. All bytes match independent decompression of the contributor's disk data. This is cached narrative data at the name prompt, not text visibly shown by that prompt.","t":"byte","b":[68,97,114,101,100,101,118,105]},{"a":49854,"t":"byte","b":[108,32,97,99,116,115,32,108]},{"a":49862,"t":"byte","b":[105,107,101,32,116,104,105,115]},{"a":49870,"t":"byte","b":[32,119,105,108,108,10,112,114]},{"a":49878,"t":"byte","b":[111,98,97,98,108,121,32,110]},{"a":49886,"t":"byte","b":[111,116,32,98,101,32,118,101]},{"a":49894,"t":"byte","b":[114,121,32,117,110,99,111,109]},{"a":49902,"t":"byte","b":[109,111,110,10,105,110,32,121]},{"a":49910,"t":"byte","b":[111,117,114,32,108,105,102,101]},{"a":49918,"t":"byte","b":[46,32,80,108,101,97,115,101]},{"a":49926,"t":"byte","b":[32,116,114,121,32,116,111,10]},{"a":49934,"t":"byte","b":[97,112,112,114,111,97,99,104]},{"a":49942,"t":"byte","b":[32,116,104,101,109,32,119,105]},{"a":49950,"t":"byte","b":[116,104,32,97,116,32,108,101]},{"a":49958,"t":"byte","b":[97,115,116,32,97,10,99,111]},{"a":49966,"t":"byte","b":[110,99,101,114,110,32,102,111]},{"a":49974,"t":"byte","b":[114,32,121,111,117,114,32,111]},{"a":49982,"t":"byte","b":[119,110,10,119,101,108,108,45]},{"a":49990,"t":"byte","b":[98,101,105,110,103,44,32,105]},{"a":49998,"t":"byte","b":[102,32,110,111,116,32,102,111]},{"a":50006,"t":"byte","b":[114,32,116,104,101,10,119,101]},{"a":50014,"t":"byte","b":[108,108,45,98,101,105,110,103]},{"a":50022,"t":"byte","b":[32,111,102,32,111,116,104,101]},{"a":50030,"t":"byte","b":[114,115,46,32,65,102,116,101]},{"a":50038,"t":"byte","b":[114,10,116,104,114,101,101,32]},{"a":50046,"t":"byte","b":[99,108,111,115,101,32,99,97]},{"a":50054,"t":"byte","b":[108,108,115,32,116,104,101,32]},{"a":50062,"t":"byte","b":[115,112,111,111,110,10,97,110]},{"a":50070,"t":"byte","b":[100,32,99,117,112,32,115,112]},{"a":50078,"t":"byte","b":[105,108,108,32,97,108,108,32]},{"a":50086,"t":"byte","b":[111,118,101,114,32,121,111,117]},{"a":50094,"t":"byte","b":[46,10,89,111,117,32,115,117]},{"a":50102,"t":"byte","b":[102,102,101,114,32,116,101,109]},{"a":50110,"t":"byte","b":[112,111,114,97,114,121,32,112]},{"a":50118,"t":"byte","b":[104,121,115,105,99,97,108,10]},{"a":50126,"t":"byte","b":[100,105,115,116,114,101,115,115]},{"a":50134,"t":"byte","b":[32,40,109,105,108,100,41,32]},{"a":50142,"t":"byte","b":[98,101,99,97,117,115,101,32]},{"a":50150,"t":"byte","b":[121,111,117,10,104,97,118,101]},{"a":50158,"t":"byte","b":[32,116,111,32,98,101,32,99]},{"a":50166,"t":"byte","b":[108,101,97,110,101,100,32,97]},{"a":50174,"t":"byte","b":[110,100,10,99,104,97,110,103]},{"a":50182,"t":"byte","b":[101,100,46,32,89,111,117,32]},{"a":50190,"t":"byte","b":[109,97,107,101,32,121,111,117]},{"a":50198,"t":"byte","b":[114,32,109,111,116,104,101,114]},{"a":50206,"t":"byte","b":[10,97,103,103,114,97,118,97]},{"a":50214,"t":"byte","b":[116,101,100,46,0]},{"a":50219,"l":"resident_descriptor_zero_trailer","c":"Single zero byte following the checked 373-byte text pool. Completes the 394-byte cached descriptor; higher memory at $C42C has separate unresolved ownership.","t":"byte","b":[0]},{"a":50220,"l":"post_descriptor_retained_bytes_open","t":"byte","b":[105,108,32,71,114,97,110,100]},{"a":50228,"t":"byte","b":[109,97,10,105,110,116,101,114]},{"a":50236,"t":"byte","b":[118,101,110,101,115,46,32,87]},{"a":50244,"t":"byte","b":[104,101,110,32,71,114,97,110]},{"a":50252,"t":"byte","b":[100,109,97,10,116,114,105,101]},{"a":50260,"t":"byte","b":[115,32,116,111,32,104,101,108]},{"a":50268,"t":"byte","b":[112,32,121,111,117,58,0,0]},{"a":50276,"t":"byte","b":[32,32,76,65,85,71,72,32]},{"a":50284,"t":"byte","b":[69,86,69,78,32,72,65,82]},{"a":50292,"t":"byte","b":[68,69,82,0,32,32,71,69]},{"a":50300,"t":"byte","b":[84,32,73,78,84,79,32,89]},{"a":50308,"t":"byte","b":[79,85,82,32,83,85,73,84]},{"a":50316,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50324,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50332,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50340,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50348,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50356,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50364,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50372,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50380,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50388,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50396,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50404,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50412,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50420,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50428,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50436,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50444,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50452,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50460,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50468,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50476,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50484,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50492,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50500,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50508,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50516,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50524,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50532,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50540,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50548,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50556,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50564,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50572,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50580,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50588,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50596,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50604,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50612,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50620,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50628,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50636,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50644,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50652,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50660,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50668,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50676,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50684,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50692,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50700,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50708,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50716,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50724,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50732,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50740,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50748,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50756,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50764,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50772,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50780,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50788,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50796,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50804,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50812,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50820,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50828,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50836,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50844,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50852,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50860,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50868,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50876,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50884,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50892,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50900,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50908,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50916,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50924,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50932,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50940,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50948,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50956,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50964,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50972,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50980,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50988,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":50996,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51004,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51012,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51020,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51028,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51036,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51044,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51052,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51060,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51068,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51076,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51084,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51092,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51100,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51108,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51116,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51124,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51132,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51140,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51148,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51156,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51164,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51172,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51180,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51188,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51196,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51204,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51212,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51220,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51228,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51236,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":51244,"t":"gap","n":639},{"a":51883,"l":"cached_scene_packed_payload_offset","c":"Four-byte little-endian logical MAP payload offset, passed by VM $9A14 to seek helper $5C37 before decoding an earlier descriptor. Captured value 89098 independently equals scene-26 block offset 89016 + two count bytes + 80 boundary bytes. It points at the compressed group stream, not CPU RAM. Native cache checks for descriptors 30/31/32 verify reset/hit/forward-decode selection without running disk I/O.","t":"byte","b":[10,92,1,0]},{"a":51887,"l":"cached_descriptor_first_index","c":"16-bit first index in the cached descriptor interval. Captured value 31, paired with exclusive end 32 at $CAD1. Native request 31 returns $C2A2; 30 stops on decompressor reset $A4DB and 32 on fresh decode $A4F1. This is a one-descriptor cache, not a window containing four descriptors.","t":"byte","b":[31,0]},{"a":51889,"l":"between_scene_cursor_fields_open","t":"byte","b":[4,0,5,0,105,132,1,0]},{"a":51897,"t":"byte","b":[125,132,4,0,139,132,6,0]},{"a":51905,"t":"byte","b":[154,132,8,0,171,132,10,0]},{"a":51913,"t":"byte","b":[181,132,12,0,0,0,0,0]},{"a":51921,"l":"cached_descriptor_end_index","c":"16-bit exclusive end of the cached descriptor interval; captured 32 with first index 31 at $CAAF. $9AAF updates it after loading a descriptor. Native adjacent-index checks confirm 31 hits while 32 requires decoding.","t":"byte","b":[32,0]},{"a":51923,"l":"scene_selection_scratch_open","t":"byte","b":[17,0,19,0,24,0,8,0]},{"a":51931,"l":"active_map_stream_id","c":"16-bit MAP stream/channel identifier passed by scene loader VM procedure $9A14 to native $A4F1. The current value is 1. This operand is embedded in compiled VM bytecode, so a search confined to 6502 absolute operands misses its consumer.","t":"byte","b":[1,0]},{"a":51933,"l":"current_scene_descriptor_pointer","c":"16-bit pointer published by VM scene loader $9ADD and read by interaction procedures $9B18/$9BF9. At the name prompt it is $C2A2. Independently decompressing MAP1 scene 26 and taking local descriptor 31 reproduces all 394 bytes at $C2A2-$C42B.","t":"byte","b":[162,194]},{"a":51935,"l":"scene_uncompressed_length","c":"Captured 16-bit value 7872, agreeing with the final of 40 scene boundaries and the independently decoded MAP1 scene-26 length. This is a size rather than a pointer.","t":"byte","b":[192,30]},{"a":51937,"l":"scene_compressed_length","c":"Captured 16-bit value 5169, agreeing with the independent scene-26 decoder's compressed bytes consumed. Native full-stream/error behavior remains open; a matching stored size alone is not a live disk-read test.","t":"byte","b":[49,20]},{"a":51939,"l":"current_scene_boundary_count","c":"40 descriptor boundary words for captured MAP1 scene 26, loaded immediately before the boundary table $CAE5. The directory-derived block contains 7872 decompressed bytes, and all 80 boundary bytes independently match the fresh snapshot. The count includes the final end boundary, so there are 39 descriptor slices.","t":"byte","b":[40,0]},{"a":51941,"l":"current_scene_descriptor_boundaries","c":"Forty little-endian decompressed-stream offsets through $CB34. They strictly increase from 0 to 7872. VM scene loader $9A14 uses consecutive boundaries to locate/size descriptors; boundary indices 31 and 32 are 6032 and 6426, giving the current 394-byte descriptor. Independent decoding checks the complete table, not merely those two entries.","t":"word","b":[0,0,98,1,166,2,14,3],"d":[0,354,678,782]},{"a":51949,"t":"word","b":[122,3,74,4,48,5,232,5],"d":[890,1098,1328,1512]},{"a":51957,"t":"word","b":[150,6,148,7,12,8,188,8],"d":[1686,1940,2060,2236]},{"a":51965,"t":"word","b":[40,9,252,9,192,10,46,11],"d":[2344,2556,2752,2862]},{"a":51973,"t":"word","b":[142,11,246,11,176,12,236,12],"d":[2958,3062,3248,3308]},{"a":51981,"t":"word","b":[232,13,114,14,22,15,10,16],"d":[3560,3698,3862,4106]},{"a":51989,"t":"word","b":[232,16,254,17,26,19,162,19],"d":[4328,4606,4890,5026]},{"a":51997,"t":"word","b":[4,20,18,21,124,22,144,23],"d":[5124,5394,5756,6032]},{"a":52005,"t":"word","b":[26,25,140,25,0,26,78,27],"d":[6426,6540,6656,6990]},{"a":52013,"t":"word","b":[186,27,192,28,200,29,192,30],"d":[7098,7360,7624,7872]},{"a":52021,"l":"retained_scene_boundary_tail_open","t":"byte","b":[106,24,190,24,78,25,168,25]},{"a":52029,"t":"byte","b":[36,26,144,26,22,27,132,27]},{"a":52037,"t":"byte","b":[0,28,84,28,0,0,0,0]},{"a":52045,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52053,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52061,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52069,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52077,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52085,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52093,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52101,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52109,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52117,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52125,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52133,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52141,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52149,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52157,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52165,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52173,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52181,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52189,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52197,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52205,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52213,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52221,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52229,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52237,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52245,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52253,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52261,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52269,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52277,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52285,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52293,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52301,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52309,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52317,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52325,"l":"map_scene_span_cursor","c":"Four-byte little-endian logical MAP payload cursor at $CC65-$CC68. Compiled VM procedure $9830 copies the stage span-table offset from $82F7 here, walks scene spans and invokes $9908 to refill. This is not a CPU address and does not own the higher VM stack allocation.","t":"byte","b":[180,91,1,0]},{"a":52329,"l":"high_ram_after_span_cursor_open","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52337,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52345,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52353,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52361,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52369,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52377,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52385,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52393,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52401,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52409,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52417,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52425,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52433,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52441,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52449,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52457,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52465,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52473,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52481,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52489,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52497,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52505,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52513,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52521,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52529,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52537,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52545,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52553,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52561,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52569,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52577,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52585,"t":"byte","b":[8,0,152,126,7,0,0,5]},{"a":52593,"t":"byte","b":[0,221,92,123,205,127,205,127]},{"a":52601,"t":"byte","b":[204,0,16,117,0,0,223,116]},{"a":52609,"t":"byte","b":[136,205,175,205,145,136,0,140]},{"a":52617,"t":"byte","b":[205,1,0,16,117,0,0,0]},{"a":52625,"t":"byte","b":[0,0,0,8,0,152,126,7]},{"a":52633,"t":"byte","b":[0,0,5,0,105,93,166,205]},{"a":52641,"t":"byte","b":[172,205,168,70,0,3,4,3]},{"a":52649,"t":"byte","b":[0,223,116,179,205,223,116,183]},{"a":52657,"t":"byte","b":[205,187,207,193,137,0,247,130]},{"a":52665,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52673,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52681,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52689,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52697,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52705,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52713,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52721,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52729,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52737,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52745,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52753,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52761,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52769,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52777,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52785,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52793,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52801,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52809,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52817,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52825,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52833,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52841,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52849,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52857,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52865,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52873,"t":"byte","b":[0,0,0,0,0,0,48,0]},{"a":52881,"t":"byte","b":[9,0,5,0,0,8,0,11]},{"a":52889,"t":"byte","b":[0,21,0,0,8,0,0,46]},{"a":52897,"t":"byte","b":[0,11,0,15,0,0,8,0]},{"a":52905,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52913,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52921,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52929,"t":"byte","b":[0,0,41,0,9,0,8,0]},{"a":52937,"t":"byte","b":[0,8,211,206,0,224,78,111]},{"a":52945,"t":"byte","b":[110,101,0,0,0,0,0,0]},{"a":52953,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52961,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52969,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52977,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52985,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":52993,"t":"byte","b":[0,0,248,29,48,0,0,0]},{"a":53001,"t":"byte","b":[222,116,17,207,27,207,27,90]},{"a":53009,"t":"byte","b":[33,128,248,29,0,0,48,0]},{"a":53017,"t":"byte","b":[64,0,222,116,35,207,49,207]},{"a":53025,"t":"byte","b":[101,89,33,128,248,29,0,0]},{"a":53033,"t":"byte","b":[48,0,3,0,24,1,3,0]},{"a":53041,"t":"byte","b":[222,116,57,207,79,207,239,85]},{"a":53049,"t":"byte","b":[80,29,197,129,93,130,4,0]},{"a":53057,"t":"byte","b":[32,0,31,0,17,0,11,1]},{"a":53065,"t":"byte","b":[0,0,5,0,0,0,222,116]},{"a":53073,"t":"byte","b":[87,207,169,207,4,0,1,0]},{"a":53081,"t":"byte","b":[23,0,0,8,22,0,8,0]},{"a":53089,"t":"byte","b":[48,32,49,0,32,32,32,21]},{"a":53097,"t":"byte","b":[0,0,0,168,171,128,207,0]},{"a":53105,"t":"byte","b":[0,33,222,116,123,207,125,207]},{"a":53113,"t":"byte","b":[11,87,16,0,222,116,133,207]},{"a":53121,"t":"byte","b":[4,0]},{"a":53123,"l":"live_vm_stack_mutation_boundary","c":"First byte where the live $C000 image differs from its retained $1000 template. The remaining differences through $CFFF are runtime VM frames, expression-stack entries and saved return state; this boundary is capture-specific.","t":"byte","b":[4,11,212,24,212,7,212,58]},{"a":53131,"t":"byte","b":[0,25,0,3,0,26,0,23]},{"a":53139,"t":"byte","b":[0,222,116,156,207,0,0,222]},{"a":53147,"t":"byte","b":[116,162,207,166,207,103,81,0]},{"a":53155,"t":"byte","b":[0,0,0,222,116,174,207,213]},{"a":53163,"t":"byte","b":[207,144,141,17,142,203,130,16]},{"a":53171,"t":"byte","b":[0,0,105,93,190,207,196,207]},{"a":53179,"t":"byte","b":[192,206,0,44,21,146,144,146]},{"a":53187,"t":"byte","b":[0,223,116,205,207,215,207,68]},{"a":53195,"t":"byte","b":[75,4,102,132,44,21,101,196]},{"a":53203,"t":"byte","b":[44,21]},{"a":53205,"l":"saved_frame_cfd5","c":"Saved eight-byte VM/native frame pointed to by $9990/$9991 after the name-prompt transition: $02/$03 native continuation, $04/$05 older expression stack, $06/$07 older frame and $08/$09 VM instruction pointer. $9348 publishes this frame and $936B restores it. Higher bytes belong to additional ancestor frames, not a single 43-byte frame structure.","t":"byte","b":[222,116,221,207,233,207,150,64]},{"a":53213,"l":"ancestor_vm_frame_chain_tail","c":"Ancestor VM frame/expression-stack data above saved frame $CFD5. Native gateways $7059/$70F8 push eight saved zero-page bytes and procedure-local workspace downward from the stack initialized at $CFFF. The exact saved-frame chain is capture-specific; the live prompt uses expression stack $CFA2 and frame $CFA6. These are runtime saved state, not instructions.","t":"byte","b":[102,132,0,0,102,132,8,45]},{"a":53221,"t":"byte","b":[0,0,64,0,222,116,241,207]},{"a":53229,"t":"byte","b":[247,207,240,101,0,0,0,0]},{"a":53237,"t":"byte","b":[10,0,120,169,255,207,83,34]},{"a":53245,"t":"byte","b":[0,0,128]},{"a":53248,"l":"under_io_graphics_first_half","c":"First 128 eight-byte hires glyph patterns of the 2,048-byte graphics resource under I/O at $D000-$D7FF. Each pattern has eight row bytes, bit 7 at the left. CPU hardware references at these addresses denote VIC/SID registers; these physical RAM bytes are a separate occupant.","t":"byte","b":[15,15,60,60,60,60,60,60]},{"a":53256,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":53264,"t":"byte","b":[240,240,60,60,252,252,252,252]},{"a":53272,"t":"byte","b":[0,0,12,12,240,240,0,0]},{"a":53280,"t":"byte","b":[3,3,15,15,60,60,63,63]},{"a":53288,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53296,"t":"byte","b":[192,192,240,240,60,60,252,252]},{"a":53304,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53312,"t":"byte","b":[63,63,60,60,60,60,63,63]},{"a":53320,"t":"byte","b":[60,60,60,60,63,63,0,0]},{"a":53328,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":53336,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":53344,"t":"byte","b":[15,15,60,60,60,60,60,60]},{"a":53352,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":53360,"t":"byte","b":[240,240,60,60,0,0,0,0]},{"a":53368,"t":"byte","b":[0,0,60,60,240,240,0,0]},{"a":53376,"t":"byte","b":[63,63,60,60,60,60,60,60]},{"a":53384,"t":"byte","b":[60,60,60,60,63,63,0,0]},{"a":53392,"t":"byte","b":[192,192,240,240,60,60,60,60]},{"a":53400,"t":"byte","b":[60,60,240,240,192,192,0,0]},{"a":53408,"t":"byte","b":[63,63,60,60,60,60,63,63]},{"a":53416,"t":"byte","b":[60,60,60,60,63,63,0,0]},{"a":53424,"t":"byte","b":[252,252,0,0,0,0,192,192]},{"a":53432,"t":"byte","b":[0,0,0,0,252,252,0,0]},{"a":53440,"t":"byte","b":[63,63,60,60,60,60,63,63]},{"a":53448,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53456,"t":"byte","b":[252,252,0,0,0,0,192,192]},{"a":53464,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53472,"t":"byte","b":[15,15,60,60,60,60,60,60]},{"a":53480,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":53488,"t":"byte","b":[240,240,60,60,0,0,252,252]},{"a":53496,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":53504,"t":"byte","b":[60,60,60,60,60,60,63,63]},{"a":53512,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53520,"t":"byte","b":[60,60,60,60,60,60,252,252]},{"a":53528,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53536,"t":"byte","b":[15,15,3,3,3,3,3,3]},{"a":53544,"t":"byte","b":[3,3,3,3,15,15,0,0]},{"a":53552,"t":"byte","b":[240,240,192,192,192,192,192,192]},{"a":53560,"t":"byte","b":[192,192,192,192,240,240,0,0]},{"a":53568,"t":"byte","b":[3,3,0,0,0,0,0,0]},{"a":53576,"t":"byte","b":[0,0,60,60,15,15,0,0]},{"a":53584,"t":"byte","b":[252,252,240,240,240,240,240,240]},{"a":53592,"t":"byte","b":[240,240,240,240,192,192,0,0]},{"a":53600,"t":"byte","b":[60,60,60,60,63,63,63,63]},{"a":53608,"t":"byte","b":[63,63,60,60,60,60,0,0]},{"a":53616,"t":"byte","b":[60,60,240,240,192,192,0,0]},{"a":53624,"t":"byte","b":[192,192,240,240,60,60,0,0]},{"a":53632,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":53640,"t":"byte","b":[60,60,60,60,63,63,0,0]},{"a":53648,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53656,"t":"byte","b":[0,0,0,0,252,252,0,0]},{"a":53664,"t":"byte","b":[60,60,63,63,63,63,60,60]},{"a":53672,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53680,"t":"byte","b":[15,15,63,63,255,255,207,207]},{"a":53688,"t":"byte","b":[15,15,15,15,15,15,0,0]},{"a":53696,"t":"byte","b":[60,60,63,63,63,63,63,63]},{"a":53704,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53712,"t":"byte","b":[60,60,60,60,252,252,252,252]},{"a":53720,"t":"byte","b":[252,252,60,60,60,60,0,0]},{"a":53728,"t":"byte","b":[15,15,60,60,60,60,60,60]},{"a":53736,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":53744,"t":"byte","b":[240,240,60,60,60,60,60,60]},{"a":53752,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":53760,"t":"byte","b":[63,63,60,60,60,60,63,63]},{"a":53768,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":53776,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":53784,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":53792,"t":"byte","b":[15,15,60,60,60,60,60,60]},{"a":53800,"t":"byte","b":[60,60,15,15,0,0,0,0]},{"a":53808,"t":"byte","b":[240,240,60,60,60,60,60,60]},{"a":53816,"t":"byte","b":[60,60,240,240,252,252,0,0]},{"a":53824,"t":"byte","b":[63,63,60,60,60,60,63,63]},{"a":53832,"t":"byte","b":[63,63,60,60,60,60,0,0]},{"a":53840,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":53848,"t":"byte","b":[192,192,240,240,60,60,0,0]},{"a":53856,"t":"byte","b":[15,15,60,60,60,60,15,15]},{"a":53864,"t":"byte","b":[0,0,60,60,15,15,0,0]},{"a":53872,"t":"byte","b":[240,240,60,60,0,0,240,240]},{"a":53880,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":53888,"t":"byte","b":[63,63,3,3,3,3,3,3]},{"a":53896,"t":"byte","b":[3,3,3,3,3,3,0,0]},{"a":53904,"t":"byte","b":[252,252,192,192,192,192,192,192]},{"a":53912,"t":"byte","b":[192,192,192,192,192,192,0,0]},{"a":53920,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":53928,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":53936,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":53944,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":53952,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":53960,"t":"byte","b":[60,60,15,15,3,3,0,0]},{"a":53968,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":53976,"t":"byte","b":[60,60,240,240,192,192,0,0]},{"a":53984,"t":"byte","b":[60,60,60,60,60,60,60,60]},{"a":53992,"t":"byte","b":[63,63,63,63,60,60,0,0]},{"a":54000,"t":"byte","b":[15,15,15,15,15,15,207,207]},{"a":54008,"t":"byte","b":[255,255,63,63,15,15,0,0]},{"a":54016,"t":"byte","b":[60,60,60,60,15,15,3,3]},{"a":54024,"t":"byte","b":[15,15,60,60,60,60,0,0]},{"a":54032,"t":"byte","b":[60,60,60,60,240,240,192,192]},{"a":54040,"t":"byte","b":[240,240,60,60,60,60,0,0]},{"a":54048,"t":"byte","b":[60,60,60,60,60,60,15,15]},{"a":54056,"t":"byte","b":[3,3,3,3,3,3,0,0]},{"a":54064,"t":"byte","b":[60,60,60,60,60,60,240,240]},{"a":54072,"t":"byte","b":[192,192,192,192,192,192,0,0]},{"a":54080,"t":"byte","b":[63,63,0,0,0,0,3,3]},{"a":54088,"t":"byte","b":[15,15,60,60,63,63,0,0]},{"a":54096,"t":"byte","b":[252,252,60,60,240,240,192,192]},{"a":54104,"t":"byte","b":[0,0,0,0,252,252,0,0]},{"a":54112,"t":"byte","b":[15,15,15,15,15,15,15,15]},{"a":54120,"t":"byte","b":[15,15,15,15,15,15,0,0]},{"a":54128,"t":"byte","b":[240,240,0,0,0,0,0,0]},{"a":54136,"t":"byte","b":[0,0,0,0,240,240,0,0]},{"a":54144,"t":"byte","b":[0,0,3,3,15,15,63,63]},{"a":54152,"t":"byte","b":[15,15,60,60,255,255,0,0]},{"a":54160,"t":"byte","b":[240,240,12,12,0,0,240,240]},{"a":54168,"t":"byte","b":[0,0,12,12,240,240,0,0]},{"a":54176,"t":"byte","b":[15,15,0,0,0,0,0,0]},{"a":54184,"t":"byte","b":[0,0,0,0,15,15,0,0]},{"a":54192,"t":"byte","b":[240,240,240,240,240,240,240,240]},{"a":54200,"t":"byte","b":[240,240,240,240,240,240,0,0]},{"a":54208,"t":"byte","b":[0,0,3,3,15,15,63,63]},{"a":54216,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":54224,"t":"byte","b":[0,0,192,192,240,240,252,252]},{"a":54232,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":54240,"t":"byte","b":[0,0,3,3,15,15,63,63]},{"a":54248,"t":"byte","b":[63,63,15,15,3,3,0,0]},{"a":54256,"t":"byte","b":[0,0,0,0,0,0,255,255]},{"a":54264,"t":"byte","b":[255,255,0,0,0,0,0,0]},{"a":54272,"l":"under_io_graphics_second_half","c":"Second 128 eight-byte patterns of the graphics resource beginning at $D000. This half spans $D400-$D7FF in physical RAM beneath SID and unused I/O; the graphical data and the visible device registers are separate occupants.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54280,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54288,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54296,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54304,"t":"byte","b":[3,3,3,3,3,3,3,3]},{"a":54312,"t":"byte","b":[0,0,0,0,3,3,0,0]},{"a":54320,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":54328,"t":"byte","b":[0,0,0,0,192,192,0,0]},{"a":54336,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":54344,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54352,"t":"byte","b":[60,60,60,60,60,60,0,0]},{"a":54360,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54368,"t":"byte","b":[60,60,60,60,255,255,60,60]},{"a":54376,"t":"byte","b":[255,255,60,60,60,60,0,0]},{"a":54384,"t":"byte","b":[60,60,60,60,255,255,60,60]},{"a":54392,"t":"byte","b":[255,255,60,60,60,60,0,0]},{"a":54400,"t":"byte","b":[3,3,15,15,60,60,15,15]},{"a":54408,"t":"byte","b":[0,0,63,63,3,3,0,0]},{"a":54416,"t":"byte","b":[192,192,252,252,0,0,240,240]},{"a":54424,"t":"byte","b":[60,60,240,240,192,192,0,0]},{"a":54432,"t":"byte","b":[60,60,60,60,0,0,3,3]},{"a":54440,"t":"byte","b":[15,15,60,60,48,48,0,0]},{"a":54448,"t":"byte","b":[12,12,60,60,240,240,192,192]},{"a":54456,"t":"byte","b":[0,0,60,60,60,60,0,0]},{"a":54464,"t":"byte","b":[15,15,60,60,15,15,15,15]},{"a":54472,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":54480,"t":"byte","b":[240,240,60,60,240,240,192,192]},{"a":54488,"t":"byte","b":[63,63,60,60,255,255,0,0]},{"a":54496,"t":"byte","b":[0,0,0,0,3,3,0,0]},{"a":54504,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54512,"t":"byte","b":[60,60,240,240,192,192,0,0]},{"a":54520,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54528,"t":"byte","b":[0,0,3,3,15,15,15,15]},{"a":54536,"t":"byte","b":[15,15,3,3,0,0,0,0]},{"a":54544,"t":"byte","b":[240,240,192,192,0,0,0,0]},{"a":54552,"t":"byte","b":[0,0,192,192,240,240,0,0]},{"a":54560,"t":"byte","b":[15,15,3,3,0,0,0,0]},{"a":54568,"t":"byte","b":[0,0,3,3,15,15,0,0]},{"a":54576,"t":"byte","b":[0,0,192,192,240,240,240,240]},{"a":54584,"t":"byte","b":[240,240,192,192,0,0,0,0]},{"a":54592,"t":"byte","b":[0,0,60,60,15,15,255,255]},{"a":54600,"t":"byte","b":[15,15,60,60,0,0,0,0]},{"a":54608,"t":"byte","b":[0,0,60,60,240,240,255,255]},{"a":54616,"t":"byte","b":[240,240,60,60,0,0,0,0]},{"a":54624,"t":"byte","b":[0,0,3,3,3,3,63,63]},{"a":54632,"t":"byte","b":[3,3,3,3,0,0,0,0]},{"a":54640,"t":"byte","b":[0,0,192,192,192,192,252,252]},{"a":54648,"t":"byte","b":[192,192,192,192,0,0,0,0]},{"a":54656,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54664,"t":"byte","b":[0,0,3,3,3,3,15,15]},{"a":54672,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54680,"t":"byte","b":[0,0,192,192,192,192,0,0]},{"a":54688,"t":"byte","b":[0,0,0,0,0,0,63,63]},{"a":54696,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54704,"t":"byte","b":[0,0,0,0,0,0,252,252]},{"a":54712,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54720,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54728,"t":"byte","b":[0,0,3,3,3,3,0,0]},{"a":54736,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54744,"t":"byte","b":[0,0,192,192,192,192,0,0]},{"a":54752,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":54760,"t":"byte","b":[3,3,15,15,60,60,0,0]},{"a":54768,"t":"byte","b":[0,0,15,15,60,60,240,240]},{"a":54776,"t":"byte","b":[192,192,0,0,0,0,0,0]},{"a":54784,"t":"byte","b":[15,15,60,60,60,60,63,63]},{"a":54792,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":54800,"t":"byte","b":[240,240,60,60,252,252,60,60]},{"a":54808,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":54816,"t":"byte","b":[3,3,3,3,15,15,3,3]},{"a":54824,"t":"byte","b":[3,3,3,3,63,63,0,0]},{"a":54832,"t":"byte","b":[192,192,192,192,192,192,192,192]},{"a":54840,"t":"byte","b":[192,192,192,192,252,252,0,0]},{"a":54848,"t":"byte","b":[15,15,60,60,0,0,0,0]},{"a":54856,"t":"byte","b":[15,15,60,60,63,63,0,0]},{"a":54864,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":54872,"t":"byte","b":[0,0,0,0,252,252,0,0]},{"a":54880,"t":"byte","b":[15,15,60,60,0,0,3,3]},{"a":54888,"t":"byte","b":[0,0,60,60,15,15,0,0]},{"a":54896,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":54904,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":54912,"t":"byte","b":[0,0,0,0,3,3,60,60]},{"a":54920,"t":"byte","b":[63,63,0,0,0,0,0,0]},{"a":54928,"t":"byte","b":[60,60,252,252,252,252,60,60]},{"a":54936,"t":"byte","b":[255,255,60,60,60,60,0,0]},{"a":54944,"t":"byte","b":[63,63,60,60,63,63,0,0]},{"a":54952,"t":"byte","b":[0,0,60,60,15,15,0,0]},{"a":54960,"t":"byte","b":[252,252,0,0,240,240,60,60]},{"a":54968,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":54976,"t":"byte","b":[15,15,60,60,60,60,63,63]},{"a":54984,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":54992,"t":"byte","b":[240,240,60,60,0,0,240,240]},{"a":55000,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":55008,"t":"byte","b":[63,63,60,60,0,0,3,3]},{"a":55016,"t":"byte","b":[3,3,3,3,3,3,0,0]},{"a":55024,"t":"byte","b":[252,252,60,60,240,240,192,192]},{"a":55032,"t":"byte","b":[192,192,192,192,192,192,0,0]},{"a":55040,"t":"byte","b":[15,15,60,60,60,60,15,15]},{"a":55048,"t":"byte","b":[60,60,60,60,15,15,0,0]},{"a":55056,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":55064,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":55072,"t":"byte","b":[15,15,60,60,60,60,15,15]},{"a":55080,"t":"byte","b":[0,0,60,60,15,15,0,0]},{"a":55088,"t":"byte","b":[240,240,60,60,60,60,252,252]},{"a":55096,"t":"byte","b":[60,60,60,60,240,240,0,0]},{"a":55104,"t":"byte","b":[0,0,0,0,3,3,0,0]},{"a":55112,"t":"byte","b":[0,0,3,3,0,0,0,0]},{"a":55120,"t":"byte","b":[0,0,0,0,192,192,0,0]},{"a":55128,"t":"byte","b":[0,0,192,192,0,0,0,0]},{"a":55136,"t":"byte","b":[0,0,0,0,3,3,0,0]},{"a":55144,"t":"byte","b":[0,0,3,3,3,3,15,15]},{"a":55152,"t":"byte","b":[0,0,0,0,192,192,0,0]},{"a":55160,"t":"byte","b":[0,0,192,192,192,192,0,0]},{"a":55168,"t":"byte","b":[0,0,3,3,15,15,60,60]},{"a":55176,"t":"byte","b":[15,15,3,3,0,0,0,0]},{"a":55184,"t":"byte","b":[252,252,192,192,0,0,0,0]},{"a":55192,"t":"byte","b":[0,0,192,192,252,252,0,0]},{"a":55200,"t":"byte","b":[0,0,0,0,63,63,0,0]},{"a":55208,"t":"byte","b":[63,63,0,0,0,0,0,0]},{"a":55216,"t":"byte","b":[0,0,0,0,252,252,0,0]},{"a":55224,"t":"byte","b":[252,252,0,0,0,0,0,0]},{"a":55232,"t":"byte","b":[63,63,3,3,0,0,0,0]},{"a":55240,"t":"byte","b":[0,0,3,3,63,63,0,0]},{"a":55248,"t":"byte","b":[0,0,192,192,240,240,60,60]},{"a":55256,"t":"byte","b":[240,240,192,192,0,0,0,0]},{"a":55264,"t":"byte","b":[15,15,60,60,0,0,0,0]},{"a":55272,"t":"byte","b":[3,3,0,0,3,3,0,0]},{"a":55280,"t":"byte","b":[240,240,60,60,60,60,240,240]},{"a":55288,"t":"byte","b":[192,192,0,0,192,192,0,0]},{"a":55296,"l":"stored_vm_copy_abeb_b3ea","c":"Beginning of the complete 2,048-byte stored mirror at $D800-$DFFF, matching active RAM $ABEB-$B3EA byte for byte in the fresh name-prompt capture. This first 449-byte portion includes compiled VM code and personality/acquisition strings before the previously identified $D9C1-$DFFF suffix. CPU colour-RAM accesses at $D800 are a different visible occupant.","t":"byte","b":[83,174,10,141,21,104,104,142]},{"a":55304,"t":"byte","b":[0,8,142,52,172,172,106,83]},{"a":55312,"t":"byte","b":[174,10,97,141,24,142,0,8]},{"a":55320,"t":"byte","b":[141,23,97,100,172,197,68,174]},{"a":55328,"t":"byte","b":[12,141,22,108,172,191,84,174]},{"a":55336,"t":"byte","b":[4,172,45,85,216,29,172,214]},{"a":55344,"t":"byte","b":[20,172,172,48,95,12,216,51]},{"a":55352,"t":"byte","b":[172,104,141,22,142,0,8,141]},{"a":55360,"t":"byte","b":[23,97,100,172,197,68,174,12]},{"a":55368,"t":"byte","b":[207,67,79,78,84,73,78,85]},{"a":55376,"t":"byte","b":[69,0,32,67,97,108,109,110]},{"a":55384,"t":"byte","b":[101,115,115,32,40,128,41,0]},{"a":55392,"t":"byte","b":[32,67,111,110,102,105,100,101]},{"a":55400,"t":"byte","b":[110,99,101,32,40,129,41,0]},{"a":55408,"t":"byte","b":[32,69,120,112,114,101,115,115]},{"a":55416,"t":"byte","b":[105,118,101,110,101,115,115,32]},{"a":55424,"t":"byte","b":[40,130,41,0,32,70,97,109]},{"a":55432,"t":"byte","b":[105,108,105,97,108,32,40,131]},{"a":55440,"t":"byte","b":[41,0,32,71,101,110,116,108]},{"a":55448,"t":"byte","b":[101,110,101,115,115,32,40,132]},{"a":55456,"t":"byte","b":[41,0,32,72,97,112,112,105]},{"a":55464,"t":"byte","b":[110,101,115,115,32,40,133,41]},{"a":55472,"t":"byte","b":[0,32,73,110,116,101,108,108]},{"a":55480,"t":"byte","b":[105,103,101,110,99,101,32,40]},{"a":55488,"t":"byte","b":[134,41,0,32,80,104,121,115]},{"a":55496,"t":"byte","b":[105,99,97,108,32,40,135,41]},{"a":55504,"t":"byte","b":[0,32,83,111,99,105,97,108]},{"a":55512,"t":"byte","b":[32,40,136,41,0,32,84,104]},{"a":55520,"t":"byte","b":[111,117,103,104,116,102,117,108]},{"a":55528,"t":"byte","b":[110,101,115,115,32,40,137,41]},{"a":55536,"t":"byte","b":[0,32,84,114,117,115,116,119]},{"a":55544,"t":"byte","b":[111,114,116,104,105,110,101,115]},{"a":55552,"t":"byte","b":[115,32,40,138,41,0,32,86]},{"a":55560,"t":"byte","b":[111,99,97,116,105,111,110,97]},{"a":55568,"t":"byte","b":[108,32,40,139,41,0,32,32]},{"a":55576,"t":"byte","b":[32,40,110,111,110,101,41,0]},{"a":55584,"t":"byte","b":[32,32,32,87,97,116,99,104]},{"a":55592,"t":"byte","b":[0,32,32,32,83,116,101,114]},{"a":55600,"t":"byte","b":[101,111,32,69,113,117,105,112]},{"a":55608,"t":"byte","b":[109,101,110,116,0,32,32,32]},{"a":55616,"t":"byte","b":[80,104,111,116,111,32,69,113]},{"a":55624,"t":"byte","b":[117,105,112,109,101,110,116,0]},{"a":55632,"t":"byte","b":[32,32,32,86,105,100,101,111]},{"a":55640,"t":"byte","b":[32,69,113,117,105,112,109,101]},{"a":55648,"t":"byte","b":[110,116,0,32,32,32,67,111]},{"a":55656,"t":"byte","b":[109,112,117,116,101,114,0,32]},{"a":55664,"t":"byte","b":[32,32,83,112,111,114,116,115]},{"a":55672,"t":"byte","b":[32,69,113,117,105,112,109,101]},{"a":55680,"t":"byte","b":[110,116,0,32,32,32,87,97]},{"a":55688,"t":"byte","b":[114,100,114,111,98,101,0,32]},{"a":55696,"t":"byte","b":[32,32,65,117,116,111,109,111]},{"a":55704,"t":"byte","b":[98,105,108,101,0,32,32,32]},{"a":55712,"t":"byte","b":[76,105,98,114,97,114,121,32]},{"a":55720,"t":"byte","b":[111,102,32,66,111,111,107,115]},{"a":55728,"t":"byte","b":[0,32,32,32,66,111,97,116]},{"a":55736,"t":"byte","b":[0,32,32,32,72,111,109,101]},{"a":55744,"t":"byte","b":[0]},{"a":55745,"l":"stored_vm_copy_adac_first","c":"First 1,024 bytes of the parked 1,599-byte VM mirror at $D9C1-$DFFF. A byte-for-byte comparison of the fresh snapshot matches active $ADAC-$B3EA. Internal branch addresses still refer to the active program, so this mirror is stored data rather than relocated executable code.","t":"byte","b":[32,248,112,184,255,65,40,142]},{"a":55753,"t":"byte","b":[0,8,141,23,172,217,82,174]},{"a":55761,"t":"byte","b":[4,97,106,105,142,0,8,142]},{"a":55769,"t":"byte","b":[222,176,172,106,83,174,10,99]},{"a":55777,"t":"byte","b":[102,141,18,142,0,8,142,232]},{"a":55785,"t":"byte","b":[176,172,106,83,174,10,102,98]},{"a":55793,"t":"byte","b":[101,142,0,8,142,251,176,172]},{"a":55801,"t":"byte","b":[106,83,174,10,141,16,142,203]},{"a":55809,"t":"byte","b":[130,222,184,255,179,172,81,105]},{"a":55817,"t":"byte","b":[174,6,64,162,200,255,103,100]},{"a":55825,"t":"byte","b":[222,184,255,179,172,187,107,174]},{"a":55833,"t":"byte","b":[2,179,142,0,8,222,184,255]},{"a":55841,"t":"byte","b":[179,172,106,83,174,10,141,32]},{"a":55849,"t":"byte","b":[103,222,184,255,179,172,33,101]},{"a":55857,"t":"byte","b":[174,6,64,162,193,255,105,98]},{"a":55865,"t":"byte","b":[100,142,0,8,142,1,177,172]},{"a":55873,"t":"byte","b":[106,83,174,10,222,184,255,179]},{"a":55881,"t":"byte","b":[170,116,127,172,211,66,174,4]},{"a":55889,"t":"byte","b":[160,185,255,139,48,192,216,74]},{"a":55897,"t":"byte","b":[174,137,32,162,185,255,106,100]},{"a":55905,"t":"byte","b":[98,142,0,8,222,185,255,179]},{"a":55913,"t":"byte","b":[172,106,83,174,10,108,98,107]},{"a":55921,"t":"byte","b":[142,0,8,142,6,177,172,106]},{"a":55929,"t":"byte","b":[83,174,10,96,109,142,18,177]},{"a":55937,"t":"byte","b":[172,121,162,174,6,111,98,141]},{"a":55945,"t":"byte","b":[20,142,0,8,142,23,177,172]},{"a":55953,"t":"byte","b":[106,83,174,10,164,122,127,216]},{"a":55961,"t":"byte","b":[148,174,96,141,16,142,44,177]},{"a":55969,"t":"byte","b":[172,121,162,174,6,214,239,174]},{"a":55977,"t":"byte","b":[164,124,127,216,168,174,96,141]},{"a":55985,"t":"byte","b":[16,142,60,177,172,121,162,174]},{"a":55993,"t":"byte","b":[6,214,239,174,164,156,127,216]},{"a":56001,"t":"byte","b":[188,174,96,141,16,142,76,177]},{"a":56009,"t":"byte","b":[172,121,162,174,6,214,239,174]},{"a":56017,"t":"byte","b":[164,126,127,216,208,174,96,141]},{"a":56025,"t":"byte","b":[16,142,93,177,172,121,162,174]},{"a":56033,"t":"byte","b":[6,214,239,174,164,128,127,216]},{"a":56041,"t":"byte","b":[228,174,96,141,16,142,109,177]},{"a":56049,"t":"byte","b":[172,121,162,174,6,214,239,174]},{"a":56057,"t":"byte","b":[96,141,16,142,120,177,172,121]},{"a":56065,"t":"byte","b":[162,174,6,141,21,103,104,142]},{"a":56073,"t":"byte","b":[0,8,142,130,177,172,106,83]},{"a":56081,"t":"byte","b":[174,10,8,216,25,175,172,12]},{"a":56089,"t":"byte","b":[85,97,141,24,142,0,8,141]},{"a":56097,"t":"byte","b":[23,97,100,172,197,68,174,12]},{"a":56105,"t":"byte","b":[64,40,214,40,175,104,141,24]},{"a":56113,"t":"byte","b":[142,0,8,141,23,97,100,172]},{"a":56121,"t":"byte","b":[197,68,174,12,141,22,102,172]},{"a":56129,"t":"byte","b":[191,84,174,4,142,0,8,141]},{"a":56137,"t":"byte","b":[23,172,217,82,174,4,172,45]},{"a":56145,"t":"byte","b":[85,216,67,175,214,58,175,172]},{"a":56153,"t":"byte","b":[48,95,97,103,102,142,0,8]},{"a":56161,"t":"byte","b":[142,139,177,172,106,83,174,10]},{"a":56169,"t":"byte","b":[64,43,66,42,214,100,175,11]},{"a":56177,"t":"byte","b":[208,43,209,67,205,10,187,42]},{"a":56185,"t":"byte","b":[11,86,194,216,136,175,96,58]},{"a":56193,"t":"byte","b":[11,210,140,106,194,187,176,179]},{"a":56201,"t":"byte","b":[172,121,162,174,6,142,0,8]},{"a":56209,"t":"byte","b":[10,208,179,59,172,235,177,174]},{"a":56217,"t":"byte","b":[6,214,91,175,141,21,103,104]},{"a":56225,"t":"byte","b":[142,0,8,142,146,177,172,106]},{"a":56233,"t":"byte","b":[83,174,10,172,23,178,215,179]},{"a":56241,"t":"byte","b":[173,97,103,102,142,0,8,142]},{"a":56249,"t":"byte","b":[155,177,172,106,83,174,10,70]},{"a":56257,"t":"byte","b":[43,66,42,214,187,175,11,208]},{"a":56265,"t":"byte","b":[43,209,67,205,10,187,42,11]},{"a":56273,"t":"byte","b":[92,194,216,223,175,96,58,11]},{"a":56281,"t":"byte","b":[210,140,106,194,187,176,179,172]},{"a":56289,"t":"byte","b":[121,162,174,6,142,0,8,10]},{"a":56297,"t":"byte","b":[208,179,59,172,235,177,174,6]},{"a":56305,"t":"byte","b":[214,178,175,141,21,103,104,142]},{"a":56313,"t":"byte","b":[0,8,142,162,177,172,106,83]},{"a":56321,"t":"byte","b":[174,10,172,23,178,215,70,175]},{"a":56329,"t":"byte","b":[97,103,102,142,0,8,142,171]},{"a":56337,"t":"byte","b":[177,172,106,83,174,10,170,118]},{"a":56345,"t":"byte","b":[127,170,120,127,99,142,178,177]},{"a":56353,"t":"byte","b":[172,225,178,174,8,170,130,127]},{"a":56361,"t":"byte","b":[170,132,127,101,142,187,177,172]},{"a":56369,"t":"byte","b":[225,178,174,8,103,98,108,142]},{"a":56377,"t":"byte","b":[0,8,142,196,177,172,106,83]},{"a":56385,"t":"byte","b":[174,10,164,171,130,215,65,176]},{"a":56393,"t":"byte","b":[96,104,142,210,177,172,121,162]},{"a":56401,"t":"byte","b":[174,6,214,112,176,72,42,65]},{"a":56409,"t":"byte","b":[43,214,76,176,11,208,43,209]},{"a":56417,"t":"byte","b":[11,139,16,194,216,112,176,65]},{"a":56425,"t":"byte","b":[27,189,166,171,130,218,216,109]},{"a":56433,"t":"byte","b":[176,96,58,11,210,140,130,194]},{"a":56441,"t":"byte","b":[187,176,179,172,121,162,174,6]},{"a":56449,"t":"byte","b":[42,214,72,176,141,21,103,110]},{"a":56457,"t":"byte","b":[142,0,8,142,220,177,172,106]},{"a":56465,"t":"byte","b":[83,174,10,172,23,178,215,157]},{"a":56473,"t":"byte","b":[175,13,80,197,216,172,176,172]},{"a":56481,"t":"byte","b":[151,70,82,191,83,185,215,172]},{"a":56489,"t":"byte","b":[176,97,222,248,255,179,60,172]},{"a":56497,"t":"byte","b":[208,141,174,6,8,80,196,216]},{"a":56505,"t":"byte","b":[172,176,56,172,205,145,174,2]},{"a":56513,"t":"byte","b":[13,80,197,216,194,176,142,0]},{"a":56521,"t":"byte","b":[8,61,141,23,97,100,172,150]},{"a":56529,"t":"byte","b":[85,174,10,214,206,176,96,142]},{"a":56537,"t":"byte","b":[72,22,142,0,8,172,33,101]},{"a":56545,"t":"byte","b":[174,6,104,141,22,142,0,8]},{"a":56553,"t":"byte","b":[141,23,97,100,172,197,68,174]},{"a":56561,"t":"byte","b":[12,207,65,76,84,69,82,32]},{"a":56569,"t":"byte","b":[69,71,79,0,76,73,70,69]},{"a":56577,"t":"byte","b":[32,83,80,72,69,82,69,32]},{"a":56585,"t":"byte","b":[83,84,65,84,85,83,0,78]},{"a":56593,"t":"byte","b":[97,109,101,58,0,65,103,101]},{"a":56601,"t":"byte","b":[58,0,79,99,99,117,112,97]},{"a":56609,"t":"byte","b":[116,105,111,110,58,0,32,32]},{"a":56617,"t":"byte","b":[32,140,0,82,101,108,97,116]},{"a":56625,"t":"byte","b":[105,111,110,115,104,105,112,32]},{"a":56633,"t":"byte","b":[115,116,97,116,117,115,58,0]},{"a":56641,"t":"byte","b":[32,32,32,77,97,114,114,105]},{"a":56649,"t":"byte","b":[101,100,32,116,111,32,142,0]},{"a":56657,"t":"byte","b":[32,32,32,69,110,103,97,103]},{"a":56665,"t":"byte","b":[101,100,32,116,111,32,141,0]},{"a":56673,"t":"byte","b":[32,32,32,76,105,118,105,110]},{"a":56681,"t":"byte","b":[103,32,119,105,116,104,32,141]},{"a":56689,"t":"byte","b":[0,32,32,32,71,111,105,110]},{"a":56697,"t":"byte","b":[103,32,119,105,116,104,32,141]},{"a":56705,"t":"byte","b":[0,32,32,32,87,105,100,111]},{"a":56713,"t":"byte","b":[119,101,100,0,32,32,32,83]},{"a":56721,"t":"byte","b":[105,110,103,108,101,0,67,79]},{"a":56729,"t":"byte","b":[78,84,73,78,85,69,0,82]},{"a":56737,"t":"byte","b":[69,86,73,69,87,0,67,79]},{"a":56745,"t":"byte","b":[78,84,73,78,85,69,0,82]},{"a":56753,"t":"byte","b":[69,86,73,69,87,0,67,79]},{"a":56761,"t":"byte","b":[78,84,73,78,85,69,0,82]},{"a":56769,"l":"stored_vm_copy_adac_tail","c":"Final 575 bytes of the stored VM mirror beginning at $D9C1, corresponding to active $B1AC-$B3EA. The full 1,599-byte mirror matches the active VM image exactly in the fresh name-prompt capture.","t":"byte","b":[69,86,73,69,87,0,32,67]},{"a":56777,"t":"byte","b":[97,115,104,58,32,36,0,32]},{"a":56785,"t":"byte","b":[68,101,98,116,58,32,36,0]},{"a":56793,"t":"byte","b":[65,99,113,117,105,115,105,116]},{"a":56801,"t":"byte","b":[105,111,110,115,58,0,32,32]},{"a":56809,"t":"byte","b":[32,40,110,111,110,101,41,0]},{"a":56817,"t":"byte","b":[82,69,84,85,82,78,32,84]},{"a":56825,"t":"byte","b":[79,32,71,65,77,69,0,32]},{"a":56833,"t":"byte","b":[248,112,252,255,12,210,140,64]},{"a":56841,"t":"byte","b":[127,187,176,85,182,43,11,114]},{"a":56849,"t":"byte","b":[42,214,4,178,10,209,42,208]},{"a":56857,"t":"byte","b":[10,82,196,216,22,178,62,61]},{"a":56865,"t":"byte","b":[58,110,172,15,71,174,8,214]},{"a":56873,"t":"byte","b":[0,178,207,32,248,112,250,255]},{"a":56881,"t":"byte","b":[65,42,65,41,104,141,24,142]},{"a":56889,"t":"byte","b":[0,8,141,23,97,100,172,197]},{"a":56897,"t":"byte","b":[68,174,12,141,22,102,172,191]},{"a":56905,"t":"byte","b":[84,174,4,172,28,85,142,0]},{"a":56913,"t":"byte","b":[8,141,23,172,217,82,174,4]},{"a":56921,"t":"byte","b":[172,255,86,43,11,139,16,218]},{"a":56929,"t":"byte","b":[215,139,178,11,81,218,216,90]},{"a":56937,"t":"byte","b":[178,64,42,214,98,178,11,82]},{"a":56945,"t":"byte","b":[218,216,98,178,65,42,9,26]},{"a":56953,"t":"byte","b":[193,216,136,178,10,41,10,215]},{"a":56961,"t":"byte","b":[120,178,98,102,172,191,84,174]},{"a":56969,"t":"byte","b":[4,214,128,178,141,22,102,172]},{"a":56977,"t":"byte","b":[191,84,174,4,142,136,19,172]},{"a":56985,"t":"byte","b":[91,84,174,2,214,68,178,172]},{"a":56993,"t":"byte","b":[48,95,10,215,148,178,65,207]},{"a":57001,"t":"byte","b":[64,207,32,248,112,254,255,13]},{"a":57009,"t":"byte","b":[139,100,182,43,215,167,178,14]},{"a":57017,"t":"byte","b":[216,187,178,12,208,44,209,179]},{"a":57025,"t":"byte","b":[11,143,48,180,212,137,100,205]},{"a":57033,"t":"byte","b":[13,185,45,14,208,46,209,13]},{"a":57041,"t":"byte","b":[90,182,43,215,198,178,14,216]},{"a":57049,"t":"byte","b":[213,178,12,208,44,209,179,11]},{"a":57057,"t":"byte","b":[143,48,180,212,74,205,13,185]},{"a":57065,"t":"byte","b":[45,12,208,44,209,179,13,143]},{"a":57073,"t":"byte","b":[48,180,212,12,207,32,248,112]},{"a":57081,"t":"byte","b":[220,255,15,140,231,3,196,216]},{"a":57089,"t":"byte","b":[254,178,15,140,232,3,182,205]},{"a":57097,"t":"byte","b":[14,187,46,138,232,3,205,15]},{"a":57105,"t":"byte","b":[185,47,222,224,255,133,222,129]},{"a":57113,"t":"byte","b":[222,208,133,222,209,179,12,208]},{"a":57121,"t":"byte","b":[44,209,211,180,212,216,23,179]},{"a":57129,"t":"byte","b":[214,3,179,129,222,209,133,222]},{"a":57137,"t":"byte","b":[208,64,133,220,14,140,231,3]},{"a":57145,"t":"byte","b":[196,216,74,179,135,220,14,140]},{"a":57153,"t":"byte","b":[232,3,182,179,135,222,172,150]},{"a":57161,"t":"byte","b":[178,174,6,133,222,129,222,208]},{"a":57169,"t":"byte","b":[133,222,209,179,137,44,180,212]},{"a":57177,"t":"byte","b":[129,220,208,133,220,209,14,215]},{"a":57185,"t":"byte","b":[83,179,129,220,216,117,179,135]},{"a":57193,"t":"byte","b":[220,14,140,232,3,185,179,135]},{"a":57201,"t":"byte","b":[222,172,150,178,174,6,133,222]},{"a":57209,"t":"byte","b":[129,222,208,133,222,209,179,137]},{"a":57217,"t":"byte","b":[44,180,212,129,220,208,133,220]},{"a":57225,"t":"byte","b":[209,135,220,63,135,222,172,150]},{"a":57233,"t":"byte","b":[178,174,6,133,222,135,222,64]},{"a":57241,"t":"byte","b":[180,212,96,61,222,224,255,179]},{"a":57249,"t":"byte","b":[172,121,162,174,6,207,104,104]},{"a":57257,"t":"byte","b":[165,6,141,154,194,133,14,165]},{"a":57265,"t":"byte","b":[7,141,155,194,133,15,160,7]},{"a":57273,"t":"byte","b":[177,14,153,2,0,136,16,248]},{"a":57281,"t":"byte","b":[165,3,72,165,2,72,76,220]},{"a":57289,"t":"byte","b":[132,104,104,160,0,177,4,133]},{"a":57297,"t":"byte","b":[10,200,177,4,133,11,173,154]},{"a":57305,"t":"byte","b":[194,133,14,173,155,194,133,15]},{"a":57313,"t":"byte","b":[160,7,177,14,153,2,0,136]},{"a":57321,"t":"byte","b":[16,248,230,2,208,2,230,3]},{"a":57329,"t":"byte","b":[162,0,108,2,0,132,2,134]},{"a":57337,"t":"byte","b":[3,24,160,4,166,3,169]},{"a":57344,"l":"resident_text_resident_text_category_directory","c":"Fourteen little-endian pointers select category-specific pointer tables in the resident text resource pool. Each selected table is terminated by a null word.","t":"word","b":[28,224,72,224,138,224,204,224],"d":[57372,57416,57482,57548]},{"a":57352,"t":"word","b":[248,224,12,225,18,225,24,225],"d":[57592,57612,57618,57624]},{"a":57360,"t":"word","b":[30,225,38,225,46,225,54,225],"d":[57630,57638,57646,57654]},{"a":57368,"t":"word","b":[62,225,70,225],"d":[57662,57670]},{"a":57372,"l":"resident_text_career_options","c":"Career choices shown by the resident UI. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[78,225,83,225,88,225,94,225],"d":[57678,57683,57688,57694]},{"a":57380,"t":"word","b":[107,225,124,225,138,225,150,225],"d":[57707,57724,57738,57750]},{"a":57388,"t":"word","b":[159,225,173,225,191,225,210,225],"d":[57759,57773,57791,57810]},{"a":57396,"t":"word","b":[223,225,231,225,242,225,249,225],"d":[57823,57831,57842,57849]},{"a":57404,"t":"word","b":[3,226,11,226,20,226,29,226],"d":[57859,57867,57876,57885]},{"a":57412,"t":"word","b":[37,226],"d":[57893]},{"a":57414,"l":"resident_text_career_options_terminator","c":"Zero little-endian pointer ending resident_text_career_options; the category reader stops at this two-byte terminator at $E046.","t":"word","b":[0,0],"d":[0]},{"a":57416,"l":"resident_text_female_name_list_a","c":"Resident female-name pointer list selected by substitution byte $8D through state 13 (nonspouse_partner_id). Entries are little-endian pointers into the NUL-terminated resident ASCII string pool. The mapping is verified by resident.json.","t":"word","b":[48,226,53,226,60,226,67,226],"d":[57904,57909,57916,57923]},{"a":57424,"t":"word","b":[72,226,78,226,83,226,90,226],"d":[57928,57934,57939,57946]},{"a":57432,"t":"word","b":[100,226,106,226,116,226,122,226],"d":[57956,57962,57972,57978]},{"a":57440,"t":"word","b":[127,226,138,226,144,226,153,226],"d":[57983,57994,58000,58009]},{"a":57448,"t":"word","b":[158,226,166,226,171,226,177,226],"d":[58014,58022,58027,58033]},{"a":57456,"t":"word","b":[184,226,192,226,200,226,205,226],"d":[58040,58048,58056,58061]},{"a":57464,"t":"word","b":[212,226,218,226,226,226,234,226],"d":[58068,58074,58082,58090]},{"a":57472,"t":"word","b":[242,226,250,226,1,227,9,227],"d":[58098,58106,58113,58121]},{"a":57480,"l":"resident_text_female_name_list_a_terminator","c":"Zero little-endian pointer ending resident_text_female_name_list_a; the category reader stops at this two-byte terminator at $E088.","t":"word","b":[0,0],"d":[0]},{"a":57482,"l":"resident_text_female_name_list_b","c":"Resident female-name pointer list selected by substitution byte $8E through state 14 (spouse_id). Its contents duplicate the preceding list at different addresses. Entries are little-endian pointers into the NUL-terminated resident ASCII string pool. The mapping is verified by resident.json.","t":"word","b":[15,227,20,227,27,227,34,227],"d":[58127,58132,58139,58146]},{"a":57490,"t":"word","b":[39,227,45,227,50,227,57,227],"d":[58151,58157,58162,58169]},{"a":57498,"t":"word","b":[67,227,73,227,83,227,89,227],"d":[58179,58185,58195,58201]},{"a":57506,"t":"word","b":[94,227,105,227,111,227,120,227],"d":[58206,58217,58223,58232]},{"a":57514,"t":"word","b":[125,227,133,227,138,227,144,227],"d":[58237,58245,58250,58256]},{"a":57522,"t":"word","b":[151,227,159,227,167,227,172,227],"d":[58263,58271,58279,58284]},{"a":57530,"t":"word","b":[179,227,185,227,193,227,201,227],"d":[58291,58297,58305,58313]},{"a":57538,"t":"word","b":[209,227,217,227,224,227,232,227],"d":[58321,58329,58336,58344]},{"a":57546,"l":"resident_text_female_name_list_b_terminator","c":"Zero little-endian pointer ending resident_text_female_name_list_b; the category reader stops at this two-byte terminator at $E0CA.","t":"word","b":[0,0],"d":[0]},{"a":57548,"l":"resident_text_mixed_name_list","c":"Resident mixed-gender personal-name choices. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[238,227,243,227,248,227,1,228],"d":[58350,58355,58360,58369]},{"a":57556,"t":"word","b":[9,228,15,228,23,228,29,228],"d":[58377,58383,58391,58397]},{"a":57564,"t":"word","b":[34,228,41,228,46,228,55,228],"d":[58402,58409,58414,58423]},{"a":57572,"t":"word","b":[61,228,65,228,69,228,75,228],"d":[58429,58433,58437,58443]},{"a":57580,"t":"word","b":[80,228,85,228,93,228,101,228],"d":[58448,58453,58461,58469]},{"a":57588,"t":"word","b":[108,228],"d":[58476]},{"a":57590,"l":"resident_text_mixed_name_list_terminator","c":"Zero little-endian pointer ending resident_text_mixed_name_list; the category reader stops at this two-byte terminator at $E0F6.","t":"word","b":[0,0],"d":[0]},{"a":57592,"l":"resident_text_meeting_locations","c":"Resident phrases describing where two people met. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[113,228,131,228,150,228,168,228],"d":[58481,58499,58518,58536]},{"a":57600,"t":"word","b":[184,228,208,228,234,228,4,229],"d":[58552,58576,58602,58628]},{"a":57608,"t":"word","b":[31,229],"d":[58655]},{"a":57610,"l":"resident_text_meeting_locations_terminator","c":"Zero little-endian pointer ending resident_text_meeting_locations; the category reader stops at this two-byte terminator at $E10A.","t":"word","b":[0,0],"d":[0]},{"a":57612,"l":"resident_text_paternal_guardian_names","c":"Resident paternal guardian labels: Dad and Uncle Jim. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[55,229,59,229],"d":[58679,58683]},{"a":57616,"l":"resident_text_paternal_guardian_names_terminator","c":"Zero little-endian pointer ending resident_text_paternal_guardian_names; the category reader stops at this two-byte terminator at $E110.","t":"word","b":[0,0],"d":[0]},{"a":57618,"l":"resident_text_maternal_guardian_names","c":"Resident maternal guardian labels: Mom and Aunt Lori. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[69,229,73,229],"d":[58693,58697]},{"a":57622,"l":"resident_text_maternal_guardian_names_terminator","c":"Zero little-endian pointer ending resident_text_maternal_guardian_names; the category reader stops at this two-byte terminator at $E116.","t":"word","b":[0,0],"d":[0]},{"a":57624,"l":"resident_text_guardian_terms","c":"Resident collective guardian labels: parents and guardians. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[83,229,91,229],"d":[58707,58715]},{"a":57628,"l":"resident_text_guardian_terms_terminator","c":"Zero little-endian pointer ending resident_text_guardian_terms; the category reader stops at this two-byte terminator at $E11C.","t":"word","b":[0,0],"d":[0]},{"a":57630,"l":"resident_text_intensity_scale_0","c":"Three-level intensity scale: not very, moderately, very. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[101,229,110,229,121,229],"d":[58725,58734,58745]},{"a":57636,"l":"resident_text_intensity_scale_0_terminator","c":"Zero little-endian pointer ending resident_text_intensity_scale_0; the category reader stops at this two-byte terminator at $E124.","t":"word","b":[0,0],"d":[0]},{"a":57638,"l":"resident_text_intensity_scale_1","c":"Second copy of the three-level intensity scale. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[126,229,135,229,146,229],"d":[58750,58759,58770]},{"a":57644,"l":"resident_text_intensity_scale_1_terminator","c":"Zero little-endian pointer ending resident_text_intensity_scale_1; the category reader stops at this two-byte terminator at $E12C.","t":"word","b":[0,0],"d":[0]},{"a":57646,"l":"resident_text_intensity_scale_2","c":"Third copy of the three-level intensity scale. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[151,229,160,229,171,229],"d":[58775,58784,58795]},{"a":57652,"l":"resident_text_intensity_scale_2_terminator","c":"Zero little-endian pointer ending resident_text_intensity_scale_2; the category reader stops at this two-byte terminator at $E134.","t":"word","b":[0,0],"d":[0]},{"a":57654,"l":"resident_text_intensity_scale_3","c":"Fourth copy of the three-level intensity scale. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[176,229,185,229,196,229],"d":[58800,58809,58820]},{"a":57660,"l":"resident_text_intensity_scale_3_terminator","c":"Zero little-endian pointer ending resident_text_intensity_scale_3; the category reader stops at this two-byte terminator at $E13C.","t":"word","b":[0,0],"d":[0]},{"a":57662,"l":"resident_text_intensity_scale_4","c":"Fifth copy of the three-level intensity scale. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[201,229,210,229,221,229],"d":[58825,58834,58845]},{"a":57668,"l":"resident_text_intensity_scale_4_terminator","c":"Zero little-endian pointer ending resident_text_intensity_scale_4; the category reader stops at this two-byte terminator at $E144.","t":"word","b":[0,0],"d":[0]},{"a":57670,"l":"resident_text_intensity_scale_5","c":"Sixth copy of the three-level intensity scale. Entries are little-endian pointers into the null-terminated resident ASCII string pool.","t":"word","b":[226,229,235,229,246,229],"d":[58850,58859,58870]},{"a":57676,"l":"resident_text_intensity_scale_5_terminator","c":"Zero little-endian pointer ending resident_text_intensity_scale_5; the category reader stops at this two-byte terminator at $E14C.","t":"word","b":[0,0],"d":[0]},{"a":57678,"l":"text_career_00_none","c":"Null-terminated ASCII-compatible strings referenced through the two-level directory at $E000. These bytes use the game renderer character convention rather than the C64 PETSCII case mapping.","s":"ASCII-compatible text: 'None'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[78,111,110,101,0]},{"a":57683,"l":"text_career_01_cook","c":"Zero-terminated text record text_career_01_cook, 4 content bytes plus terminator at $E157: 'Cook'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Cook'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,111,111,107,0]},{"a":57688,"l":"text_career_02_clerk","c":"Zero-terminated text record text_career_02_clerk, 5 content bytes plus terminator at $E15D: 'Clerk'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Clerk'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,108,101,114,107,0]},{"a":57694,"l":"text_career_03_ticket_taker","c":"Zero-terminated text record text_career_03_ticket_taker, 12 content bytes plus terminator at $E16A: 'Ticket Taker'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Ticket Taker'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,105,99,107,101,116,32,84]},{"a":57702,"t":"byte","b":[97,107,101,114,0]},{"a":57707,"l":"text_career_04_trucker_s_helper","c":"Zero-terminated text record text_career_04_trucker_s_helper, 16 content bytes plus terminator at $E17B: \"Trucker's Helper\". Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: \"Trucker's Helper\". Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,114,117,99,107,101,114,39]},{"a":57715,"t":"byte","b":[115,32,72,101,108,112,101,114]},{"a":57723,"t":"byte","b":[0]},{"a":57724,"l":"text_career_05_law_assistant","c":"Zero-terminated text record text_career_05_law_assistant, 13 content bytes plus terminator at $E189: 'Law Assistant'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Law Assistant'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,97,119,32,65,115,115,105]},{"a":57732,"t":"byte","b":[115,116,97,110,116,0]},{"a":57738,"l":"text_career_06_businessman","c":"Zero-terminated text record text_career_06_businessman, 11 content bytes plus terminator at $E195: 'Businessman'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Businessman'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,117,115,105,110,101,115,115]},{"a":57746,"t":"byte","b":[109,97,110,0]},{"a":57750,"l":"text_career_07_salesman","c":"Zero-terminated text record text_career_07_salesman, 8 content bytes plus terminator at $E19E: 'Salesman'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Salesman'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[83,97,108,101,115,109,97,110]},{"a":57758,"t":"byte","b":[0]},{"a":57759,"l":"text_career_08_creative_arts","c":"Zero-terminated text record text_career_08_creative_arts, 13 content bytes plus terminator at $E1AC: 'Creative Arts'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Creative Arts'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,114,101,97,116,105,118,101]},{"a":57767,"t":"byte","b":[32,65,114,116,115,0]},{"a":57773,"l":"text_career_09_health_services_i","c":"Zero-terminated text record text_career_09_health_services_i, 17 content bytes plus terminator at $E1BE: 'Health Services I'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Health Services I'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,101,97,108,116,104,32,83]},{"a":57781,"t":"byte","b":[101,114,118,105,99,101,115,32]},{"a":57789,"t":"byte","b":[73,0]},{"a":57791,"l":"text_career_10_health_services_ii","c":"Zero-terminated text record text_career_10_health_services_ii, 18 content bytes plus terminator at $E1D1: 'Health Services II'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Health Services II'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,101,97,108,116,104,32,83]},{"a":57799,"t":"byte","b":[101,114,118,105,99,101,115,32]},{"a":57807,"t":"byte","b":[73,73,0]},{"a":57810,"l":"text_career_11_entrepreneur","c":"Zero-terminated text record text_career_11_entrepreneur, 12 content bytes plus terminator at $E1DE: 'Entrepreneur'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Entrepreneur'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[69,110,116,114,101,112,114,101]},{"a":57818,"t":"byte","b":[110,101,117,114,0]},{"a":57823,"l":"text_career_12_teacher","c":"Zero-terminated text record text_career_12_teacher, 7 content bytes plus terminator at $E1E6: 'Teacher'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Teacher'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,101,97,99,104,101,114,0]},{"a":57831,"l":"text_career_13_researcher","c":"Zero-terminated text record text_career_13_researcher, 10 content bytes plus terminator at $E1F1: 'Researcher'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Researcher'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[82,101,115,101,97,114,99,104]},{"a":57839,"t":"byte","b":[101,114,0]},{"a":57842,"l":"text_career_14_lawyer","c":"Zero-terminated text record text_career_14_lawyer, 6 content bytes plus terminator at $E1F8: 'Lawyer'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Lawyer'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,97,119,121,101,114,0]},{"a":57849,"l":"text_career_15_technical","c":"Zero-terminated text record text_career_15_technical, 9 content bytes plus terminator at $E202: 'Technical'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Technical'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,101,99,104,110,105,99,97]},{"a":57857,"t":"byte","b":[108,0]},{"a":57859,"l":"text_career_16_labor_i","c":"Zero-terminated text record text_career_16_labor_i, 7 content bytes plus terminator at $E20A: 'Labor I'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Labor I'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,97,98,111,114,32,73,0]},{"a":57867,"l":"text_career_17_labor_ii","c":"Zero-terminated text record text_career_17_labor_ii, 8 content bytes plus terminator at $E213: 'Labor II'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Labor II'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,97,98,111,114,32,73,73]},{"a":57875,"t":"byte","b":[0]},{"a":57876,"l":"text_career_18_delivery","c":"Zero-terminated text record text_career_18_delivery, 8 content bytes plus terminator at $E21C: 'Delivery'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Delivery'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[68,101,108,105,118,101,114,121]},{"a":57884,"t":"byte","b":[0]},{"a":57885,"l":"text_career_19_laborer","c":"Zero-terminated text record text_career_19_laborer, 7 content bytes plus terminator at $E224: 'Laborer'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Laborer'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,97,98,111,114,101,114,0]},{"a":57893,"l":"text_career_20_apprentice","c":"Zero-terminated text record text_career_20_apprentice, 10 content bytes plus terminator at $E22F: 'Apprentice'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Apprentice'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,112,112,114,101,110,116,105]},{"a":57901,"t":"byte","b":[99,101,0]},{"a":57904,"l":"text_female_name_a_00_none","c":"Zero-terminated text record text_female_name_a_00_none, 4 content bytes plus terminator at $E234: 'none'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'none'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,110,101,0]},{"a":57909,"l":"text_female_name_a_01_louise","c":"Zero-terminated text record text_female_name_a_01_louise, 6 content bytes plus terminator at $E23B: 'Louise'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Louise'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,111,117,105,115,101,0]},{"a":57916,"l":"text_female_name_a_02_marion","c":"Zero-terminated text record text_female_name_a_02_marion, 6 content bytes plus terminator at $E242: 'Marion'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marion'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,105,111,110,0]},{"a":57923,"l":"text_female_name_a_03_ruth","c":"Zero-terminated text record text_female_name_a_03_ruth, 4 content bytes plus terminator at $E247: 'Ruth'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Ruth'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[82,117,116,104,0]},{"a":57928,"l":"text_female_name_a_04_betsy","c":"Zero-terminated text record text_female_name_a_04_betsy, 5 content bytes plus terminator at $E24D: 'Betsy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Betsy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,101,116,115,121,0]},{"a":57934,"l":"text_female_name_a_05_anne","c":"Zero-terminated text record text_female_name_a_05_anne, 4 content bytes plus terminator at $E252: 'Anne'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Anne'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,110,110,101,0]},{"a":57939,"l":"text_female_name_a_06_marsha","c":"Zero-terminated text record text_female_name_a_06_marsha, 6 content bytes plus terminator at $E259: 'Marsha'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marsha'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,115,104,97,0]},{"a":57946,"l":"text_female_name_a_07_henrietta","c":"Zero-terminated text record text_female_name_a_07_henrietta, 9 content bytes plus terminator at $E263: 'Henrietta'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Henrietta'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,101,110,114,105,101,116,116]},{"a":57954,"t":"byte","b":[97,0]},{"a":57956,"l":"text_female_name_a_08_cathy","c":"Zero-terminated text record text_female_name_a_08_cathy, 5 content bytes plus terminator at $E269: 'Cathy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Cathy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,97,116,104,121,0]},{"a":57962,"l":"text_female_name_a_09_bridgette","c":"Zero-terminated text record text_female_name_a_09_bridgette, 9 content bytes plus terminator at $E273: 'Bridgette'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Bridgette'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,114,105,100,103,101,116,116]},{"a":57970,"t":"byte","b":[101,0]},{"a":57972,"l":"text_female_name_a_10_carol","c":"Zero-terminated text record text_female_name_a_10_carol, 5 content bytes plus terminator at $E279: 'Carol'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Carol'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,97,114,111,108,0]},{"a":57978,"l":"text_female_name_a_11_gigi","c":"Zero-terminated text record text_female_name_a_11_gigi, 4 content bytes plus terminator at $E27E: 'Gigi'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Gigi'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[71,105,103,105,0]},{"a":57983,"l":"text_female_name_a_12_antoinette","c":"Zero-terminated text record text_female_name_a_12_antoinette, 10 content bytes plus terminator at $E289: 'Antoinette'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Antoinette'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,110,116,111,105,110,101,116]},{"a":57991,"t":"byte","b":[116,101,0]},{"a":57994,"l":"text_female_name_a_13_gayle","c":"Zero-terminated text record text_female_name_a_13_gayle, 5 content bytes plus terminator at $E28F: 'Gayle'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Gayle'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[71,97,121,108,101,0]},{"a":58000,"l":"text_female_name_a_14_kimberly","c":"Zero-terminated text record text_female_name_a_14_kimberly, 8 content bytes plus terminator at $E298: 'Kimberly'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Kimberly'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[75,105,109,98,101,114,108,121]},{"a":58008,"t":"byte","b":[0]},{"a":58009,"l":"text_female_name_a_15_toni","c":"Zero-terminated text record text_female_name_a_15_toni, 4 content bytes plus terminator at $E29D: 'Toni'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Toni'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,111,110,105,0]},{"a":58014,"l":"text_female_name_a_16_martina","c":"Zero-terminated text record text_female_name_a_16_martina, 7 content bytes plus terminator at $E2A5: 'Martina'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Martina'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,116,105,110,97,0]},{"a":58022,"l":"text_female_name_a_17_judy","c":"Zero-terminated text record text_female_name_a_17_judy, 4 content bytes plus terminator at $E2AA: 'Judy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Judy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,117,100,121,0]},{"a":58027,"l":"text_female_name_a_18_helen","c":"Zero-terminated text record text_female_name_a_18_helen, 5 content bytes plus terminator at $E2B0: 'Helen'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Helen'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,101,108,101,110,0]},{"a":58033,"l":"text_female_name_a_19_brenda","c":"Zero-terminated text record text_female_name_a_19_brenda, 6 content bytes plus terminator at $E2B7: 'Brenda'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Brenda'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,114,101,110,100,97,0]},{"a":58040,"l":"text_female_name_a_20_suzette","c":"Zero-terminated text record text_female_name_a_20_suzette, 7 content bytes plus terminator at $E2BF: 'Suzette'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Suzette'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[83,117,122,101,116,116,101,0]},{"a":58048,"l":"text_female_name_a_21_roxanne","c":"Zero-terminated text record text_female_name_a_21_roxanne, 7 content bytes plus terminator at $E2C7: 'Roxanne'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Roxanne'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[82,111,120,97,110,110,101,0]},{"a":58056,"l":"text_female_name_a_22_joan","c":"Zero-terminated text record text_female_name_a_22_joan, 4 content bytes plus terminator at $E2CC: 'Joan'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Joan'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,111,97,110,0]},{"a":58061,"l":"text_female_name_a_23_marion","c":"Zero-terminated text record text_female_name_a_23_marion, 6 content bytes plus terminator at $E2D3: 'Marion'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marion'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,105,111,110,0]},{"a":58068,"l":"text_female_name_a_24_linda","c":"Zero-terminated text record text_female_name_a_24_linda, 5 content bytes plus terminator at $E2D9: 'Linda'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Linda'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,105,110,100,97,0]},{"a":58074,"l":"text_female_name_a_25_harriet","c":"Zero-terminated text record text_female_name_a_25_harriet, 7 content bytes plus terminator at $E2E1: 'Harriet'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Harriet'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,97,114,114,105,101,116,0]},{"a":58082,"l":"text_female_name_a_26_hillary","c":"Zero-terminated text record text_female_name_a_26_hillary, 7 content bytes plus terminator at $E2E9: 'Hillary'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Hillary'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,105,108,108,97,114,121,0]},{"a":58090,"l":"text_female_name_a_27_francis","c":"Zero-terminated text record text_female_name_a_27_francis, 7 content bytes plus terminator at $E2F1: 'Francis'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Francis'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[70,114,97,110,99,105,115,0]},{"a":58098,"l":"text_female_name_a_28_georgia","c":"Zero-terminated text record text_female_name_a_28_georgia, 7 content bytes plus terminator at $E2F9: 'Georgia'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Georgia'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[71,101,111,114,103,105,97,0]},{"a":58106,"l":"text_female_name_a_29_bonnie","c":"Zero-terminated text record text_female_name_a_29_bonnie, 6 content bytes plus terminator at $E300: 'Bonnie'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Bonnie'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,111,110,110,105,101,0]},{"a":58113,"l":"text_female_name_a_30_allison","c":"Zero-terminated text record text_female_name_a_30_allison, 7 content bytes plus terminator at $E308: 'Allison'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Allison'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,108,108,105,115,111,110,0]},{"a":58121,"l":"text_female_name_a_31_cindy","c":"Zero-terminated text record text_female_name_a_31_cindy, 5 content bytes plus terminator at $E30E: 'Cindy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Cindy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,105,110,100,121,0]},{"a":58127,"l":"text_female_name_b_00_none","c":"Zero-terminated text record text_female_name_b_00_none, 4 content bytes plus terminator at $E313: 'none'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'none'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,110,101,0]},{"a":58132,"l":"text_female_name_b_01_louise","c":"Zero-terminated text record text_female_name_b_01_louise, 6 content bytes plus terminator at $E31A: 'Louise'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Louise'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,111,117,105,115,101,0]},{"a":58139,"l":"text_female_name_b_02_marion","c":"Zero-terminated text record text_female_name_b_02_marion, 6 content bytes plus terminator at $E321: 'Marion'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marion'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,105,111,110,0]},{"a":58146,"l":"text_female_name_b_03_ruth","c":"Zero-terminated text record text_female_name_b_03_ruth, 4 content bytes plus terminator at $E326: 'Ruth'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Ruth'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[82,117,116,104,0]},{"a":58151,"l":"text_female_name_b_04_betsy","c":"Zero-terminated text record text_female_name_b_04_betsy, 5 content bytes plus terminator at $E32C: 'Betsy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Betsy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,101,116,115,121,0]},{"a":58157,"l":"text_female_name_b_05_anne","c":"Zero-terminated text record text_female_name_b_05_anne, 4 content bytes plus terminator at $E331: 'Anne'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Anne'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,110,110,101,0]},{"a":58162,"l":"text_female_name_b_06_marsha","c":"Zero-terminated text record text_female_name_b_06_marsha, 6 content bytes plus terminator at $E338: 'Marsha'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marsha'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,115,104,97,0]},{"a":58169,"l":"text_female_name_b_07_henrietta","c":"Zero-terminated text record text_female_name_b_07_henrietta, 9 content bytes plus terminator at $E342: 'Henrietta'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Henrietta'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,101,110,114,105,101,116,116]},{"a":58177,"t":"byte","b":[97,0]},{"a":58179,"l":"text_female_name_b_08_cathy","c":"Zero-terminated text record text_female_name_b_08_cathy, 5 content bytes plus terminator at $E348: 'Cathy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Cathy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,97,116,104,121,0]},{"a":58185,"l":"text_female_name_b_09_bridgette","c":"Zero-terminated text record text_female_name_b_09_bridgette, 9 content bytes plus terminator at $E352: 'Bridgette'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Bridgette'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,114,105,100,103,101,116,116]},{"a":58193,"t":"byte","b":[101,0]},{"a":58195,"l":"text_female_name_b_10_carol","c":"Zero-terminated text record text_female_name_b_10_carol, 5 content bytes plus terminator at $E358: 'Carol'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Carol'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,97,114,111,108,0]},{"a":58201,"l":"text_female_name_b_11_gigi","c":"Zero-terminated text record text_female_name_b_11_gigi, 4 content bytes plus terminator at $E35D: 'Gigi'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Gigi'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[71,105,103,105,0]},{"a":58206,"l":"text_female_name_b_12_antoinette","c":"Zero-terminated text record text_female_name_b_12_antoinette, 10 content bytes plus terminator at $E368: 'Antoinette'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Antoinette'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,110,116,111,105,110,101,116]},{"a":58214,"t":"byte","b":[116,101,0]},{"a":58217,"l":"text_female_name_b_13_gayle","c":"Zero-terminated text record text_female_name_b_13_gayle, 5 content bytes plus terminator at $E36E: 'Gayle'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Gayle'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[71,97,121,108,101,0]},{"a":58223,"l":"text_female_name_b_14_kimberly","c":"Zero-terminated text record text_female_name_b_14_kimberly, 8 content bytes plus terminator at $E377: 'Kimberly'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Kimberly'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[75,105,109,98,101,114,108,121]},{"a":58231,"t":"byte","b":[0]},{"a":58232,"l":"text_female_name_b_15_toni","c":"Zero-terminated text record text_female_name_b_15_toni, 4 content bytes plus terminator at $E37C: 'Toni'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Toni'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,111,110,105,0]},{"a":58237,"l":"text_female_name_b_16_martina","c":"Zero-terminated text record text_female_name_b_16_martina, 7 content bytes plus terminator at $E384: 'Martina'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Martina'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,116,105,110,97,0]},{"a":58245,"l":"text_female_name_b_17_judy","c":"Zero-terminated text record text_female_name_b_17_judy, 4 content bytes plus terminator at $E389: 'Judy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Judy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,117,100,121,0]},{"a":58250,"l":"text_female_name_b_18_helen","c":"Zero-terminated text record text_female_name_b_18_helen, 5 content bytes plus terminator at $E38F: 'Helen'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Helen'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,101,108,101,110,0]},{"a":58256,"l":"text_female_name_b_19_brenda","c":"Zero-terminated text record text_female_name_b_19_brenda, 6 content bytes plus terminator at $E396: 'Brenda'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Brenda'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,114,101,110,100,97,0]},{"a":58263,"l":"text_female_name_b_20_suzette","c":"Zero-terminated text record text_female_name_b_20_suzette, 7 content bytes plus terminator at $E39E: 'Suzette'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Suzette'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[83,117,122,101,116,116,101,0]},{"a":58271,"l":"text_female_name_b_21_roxanne","c":"Zero-terminated text record text_female_name_b_21_roxanne, 7 content bytes plus terminator at $E3A6: 'Roxanne'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Roxanne'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[82,111,120,97,110,110,101,0]},{"a":58279,"l":"text_female_name_b_22_joan","c":"Zero-terminated text record text_female_name_b_22_joan, 4 content bytes plus terminator at $E3AB: 'Joan'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Joan'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,111,97,110,0]},{"a":58284,"l":"text_female_name_b_23_marion","c":"Zero-terminated text record text_female_name_b_23_marion, 6 content bytes plus terminator at $E3B2: 'Marion'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marion'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,105,111,110,0]},{"a":58291,"l":"text_female_name_b_24_linda","c":"Zero-terminated text record text_female_name_b_24_linda, 5 content bytes plus terminator at $E3B8: 'Linda'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Linda'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,105,110,100,97,0]},{"a":58297,"l":"text_female_name_b_25_harriet","c":"Zero-terminated text record text_female_name_b_25_harriet, 7 content bytes plus terminator at $E3C0: 'Harriet'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Harriet'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,97,114,114,105,101,116,0]},{"a":58305,"l":"text_female_name_b_26_hillary","c":"Zero-terminated text record text_female_name_b_26_hillary, 7 content bytes plus terminator at $E3C8: 'Hillary'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Hillary'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[72,105,108,108,97,114,121,0]},{"a":58313,"l":"text_female_name_b_27_francis","c":"Zero-terminated text record text_female_name_b_27_francis, 7 content bytes plus terminator at $E3D0: 'Francis'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Francis'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[70,114,97,110,99,105,115,0]},{"a":58321,"l":"text_female_name_b_28_georgia","c":"Zero-terminated text record text_female_name_b_28_georgia, 7 content bytes plus terminator at $E3D8: 'Georgia'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Georgia'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[71,101,111,114,103,105,97,0]},{"a":58329,"l":"text_female_name_b_29_bonnie","c":"Zero-terminated text record text_female_name_b_29_bonnie, 6 content bytes plus terminator at $E3DF: 'Bonnie'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Bonnie'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,111,110,110,105,101,0]},{"a":58336,"l":"text_female_name_b_30_allison","c":"Zero-terminated text record text_female_name_b_30_allison, 7 content bytes plus terminator at $E3E7: 'Allison'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Allison'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,108,108,105,115,111,110,0]},{"a":58344,"l":"text_female_name_b_31_cindy","c":"Zero-terminated text record text_female_name_b_31_cindy, 5 content bytes plus terminator at $E3ED: 'Cindy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Cindy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,105,110,100,121,0]},{"a":58350,"l":"text_personal_name_00_none","c":"Zero-terminated text record text_personal_name_00_none, 4 content bytes plus terminator at $E3F2: 'none'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'none'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,110,101,0]},{"a":58355,"l":"text_personal_name_01_lori","c":"Zero-terminated text record text_personal_name_01_lori, 4 content bytes plus terminator at $E3F7: 'Lori'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Lori'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,111,114,105,0]},{"a":58360,"l":"text_personal_name_02_courtney","c":"Zero-terminated text record text_personal_name_02_courtney, 8 content bytes plus terminator at $E400: 'Courtney'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Courtney'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[67,111,117,114,116,110,101,121]},{"a":58368,"t":"byte","b":[0]},{"a":58369,"l":"text_personal_name_03_allison","c":"Zero-terminated text record text_personal_name_03_allison, 7 content bytes plus terminator at $E408: 'Allison'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Allison'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,108,108,105,115,111,110,0]},{"a":58377,"l":"text_personal_name_04_kathy","c":"Zero-terminated text record text_personal_name_04_kathy, 5 content bytes plus terminator at $E40E: 'Kathy'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Kathy'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[75,97,116,104,121,0]},{"a":58383,"l":"text_personal_name_05_theresa","c":"Zero-terminated text record text_personal_name_05_theresa, 7 content bytes plus terminator at $E416: 'Theresa'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Theresa'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[84,104,101,114,101,115,97,0]},{"a":58391,"l":"text_personal_name_06_linda","c":"Zero-terminated text record text_personal_name_06_linda, 5 content bytes plus terminator at $E41C: 'Linda'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Linda'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[76,105,110,100,97,0]},{"a":58397,"l":"text_personal_name_07_mary","c":"Zero-terminated text record text_personal_name_07_mary, 4 content bytes plus terminator at $E421: 'Mary'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Mary'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,121,0]},{"a":58402,"l":"text_personal_name_08_marcia","c":"Zero-terminated text record text_personal_name_08_marcia, 6 content bytes plus terminator at $E428: 'Marcia'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Marcia'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,97,114,99,105,97,0]},{"a":58409,"l":"text_personal_name_09_anne","c":"Zero-terminated text record text_personal_name_09_anne, 4 content bytes plus terminator at $E42D: 'Anne'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Anne'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,110,110,101,0]},{"a":58414,"l":"text_personal_name_10_jennifer","c":"Zero-terminated text record text_personal_name_10_jennifer, 8 content bytes plus terminator at $E436: 'Jennifer'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Jennifer'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,101,110,110,105,102,101,114]},{"a":58422,"t":"byte","b":[0]},{"a":58423,"l":"text_personal_name_11_peter","c":"Zero-terminated text record text_personal_name_11_peter, 5 content bytes plus terminator at $E43C: 'Peter'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Peter'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[80,101,116,101,114,0]},{"a":58429,"l":"text_personal_name_12_jim","c":"Zero-terminated text record text_personal_name_12_jim, 3 content bytes plus terminator at $E440: 'Jim'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Jim'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,105,109,0]},{"a":58433,"l":"text_personal_name_13_ned","c":"Zero-terminated text record text_personal_name_13_ned, 3 content bytes plus terminator at $E444: 'Ned'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Ned'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[78,101,100,0]},{"a":58437,"l":"text_personal_name_14_kerry","c":"Zero-terminated text record text_personal_name_14_kerry, 5 content bytes plus terminator at $E44A: 'Kerry'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Kerry'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[75,101,114,114,121,0]},{"a":58443,"l":"text_personal_name_15_bill","c":"Zero-terminated text record text_personal_name_15_bill, 4 content bytes plus terminator at $E44F: 'Bill'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Bill'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[66,105,108,108,0]},{"a":58448,"l":"text_personal_name_16_dick","c":"Zero-terminated text record text_personal_name_16_dick, 4 content bytes plus terminator at $E454: 'Dick'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Dick'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[68,105,99,107,0]},{"a":58453,"l":"text_personal_name_17_vincent","c":"Zero-terminated text record text_personal_name_17_vincent, 7 content bytes plus terminator at $E45C: 'Vincent'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Vincent'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[86,105,110,99,101,110,116,0]},{"a":58461,"l":"text_personal_name_18_michael","c":"Zero-terminated text record text_personal_name_18_michael, 7 content bytes plus terminator at $E464: 'Michael'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Michael'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,105,99,104,97,101,108,0]},{"a":58469,"l":"text_personal_name_19_robert","c":"Zero-terminated text record text_personal_name_19_robert, 6 content bytes plus terminator at $E46B: 'Robert'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Robert'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[82,111,98,101,114,116,0]},{"a":58476,"l":"text_personal_name_20_john","c":"Zero-terminated text record text_personal_name_20_john, 4 content bytes plus terminator at $E470: 'John'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'John'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[74,111,104,110,0]},{"a":58481,"l":"text_meeting_location_00_in_the_cafeteria","c":"Zero-terminated text record text_meeting_location_00_in_the_cafeteria, 17 content bytes plus terminator at $E482: 'in the cafeteria.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'in the cafeteria.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[105,110,32,116,104,101,32,99]},{"a":58489,"t":"byte","b":[97,102,101,116,101,114,105,97]},{"a":58497,"t":"byte","b":[46,0]},{"a":58499,"l":"text_meeting_location_01_during_study_hall","c":"Zero-terminated text record text_meeting_location_01_during_study_hall, 18 content bytes plus terminator at $E495: 'during study hall.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'during study hall.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[100,117,114,105,110,103,32,115]},{"a":58507,"t":"byte","b":[116,117,100,121,32,104,97,108]},{"a":58515,"t":"byte","b":[108,46,0]},{"a":58518,"l":"text_meeting_location_02_in_biology_class","c":"Zero-terminated text record text_meeting_location_02_in_biology_class, 17 content bytes plus terminator at $E4A7: 'in Biology class.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'in Biology class.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[105,110,32,66,105,111,108,111]},{"a":58526,"t":"byte","b":[103,121,32,99,108,97,115,115]},{"a":58534,"t":"byte","b":[46,0]},{"a":58536,"l":"text_meeting_location_03_down_the_block","c":"Zero-terminated text record text_meeting_location_03_down_the_block, 15 content bytes plus terminator at $E4B7: 'down the block.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'down the block.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[100,111,119,110,32,116,104,101]},{"a":58544,"t":"byte","b":[32,98,108,111,99,107,46,0]},{"a":58552,"l":"text_meeting_location_04_one_town_over_from_you","c":"Zero-terminated text record text_meeting_location_04_one_town_over_from_you, 23 content bytes plus terminator at $E4CF: 'one town over from you.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'one town over from you.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[111,110,101,32,116,111,119,110]},{"a":58560,"t":"byte","b":[32,111,118,101,114,32,102,114]},{"a":58568,"t":"byte","b":[111,109,32,121,111,117,46,0]},{"a":58576,"l":"text_meeting_location_05_in_a_local_shopping_mall","c":"Zero-terminated text record text_meeting_location_05_in_a_local_shopping_mall, 25 content bytes plus terminator at $E4E9: 'in a local shopping mall.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'in a local shopping mall.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[105,110,32,97,32,108,111,99]},{"a":58584,"t":"byte","b":[97,108,32,115,104,111,112,112]},{"a":58592,"t":"byte","b":[105,110,103,32,109,97,108,108]},{"a":58600,"t":"byte","b":[46,0]},{"a":58602,"l":"text_meeting_location_06_while_visiting_relatives","c":"Zero-terminated text record text_meeting_location_06_while_visiting_relatives, 25 content bytes plus terminator at $E503: 'while visiting relatives.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'while visiting relatives.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[119,104,105,108,101,32,118,105]},{"a":58610,"t":"byte","b":[115,105,116,105,110,103,32,114]},{"a":58618,"t":"byte","b":[101,108,97,116,105,118,101,115]},{"a":58626,"t":"byte","b":[46,0]},{"a":58628,"l":"text_meeting_location_07_while_away_for_the_summer","c":"Zero-terminated text record text_meeting_location_07_while_away_for_the_summer, 26 content bytes plus terminator at $E51E: 'while away for the summer.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'while away for the summer.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[119,104,105,108,101,32,97,119]},{"a":58636,"t":"byte","b":[97,121,32,102,111,114,32,116]},{"a":58644,"t":"byte","b":[104,101,32,115,117,109,109,101]},{"a":58652,"t":"byte","b":[114,46,0]},{"a":58655,"l":"text_meeting_location_08_while_away_on_vacation","c":"Zero-terminated text record text_meeting_location_08_while_away_on_vacation, 23 content bytes plus terminator at $E536: 'while away on vacation.'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'while away on vacation.'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[119,104,105,108,101,32,97,119]},{"a":58663,"t":"byte","b":[97,121,32,111,110,32,118,97]},{"a":58671,"t":"byte","b":[99,97,116,105,111,110,46,0]},{"a":58679,"l":"text_paternal_guardian_00_dad","c":"Zero-terminated text record text_paternal_guardian_00_dad, 3 content bytes plus terminator at $E53A: 'Dad'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Dad'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[68,97,100,0]},{"a":58683,"l":"text_paternal_guardian_01_uncle_jim","c":"Zero-terminated text record text_paternal_guardian_01_uncle_jim, 9 content bytes plus terminator at $E544: 'Uncle Jim'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Uncle Jim'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[85,110,99,108,101,32,74,105]},{"a":58691,"t":"byte","b":[109,0]},{"a":58693,"l":"text_maternal_guardian_00_mom","c":"Zero-terminated text record text_maternal_guardian_00_mom, 3 content bytes plus terminator at $E548: 'Mom'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Mom'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[77,111,109,0]},{"a":58697,"l":"text_maternal_guardian_01_aunt_lori","c":"Zero-terminated text record text_maternal_guardian_01_aunt_lori, 9 content bytes plus terminator at $E552: 'Aunt Lori'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'Aunt Lori'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[65,117,110,116,32,76,111,114]},{"a":58705,"t":"byte","b":[105,0]},{"a":58707,"l":"text_guardian_term_00_parents","c":"Zero-terminated text record text_guardian_term_00_parents, 7 content bytes plus terminator at $E55A: 'parents'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'parents'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[112,97,114,101,110,116,115,0]},{"a":58715,"l":"text_guardian_term_01_guardians","c":"Zero-terminated text record text_guardian_term_01_guardians, 9 content bytes plus terminator at $E564: 'guardians'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'guardians'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[103,117,97,114,100,105,97,110]},{"a":58723,"t":"byte","b":[115,0]},{"a":58725,"l":"text_intensity_0_00_not_very","c":"Zero-terminated text record text_intensity_0_00_not_very, 8 content bytes plus terminator at $E56D: 'not very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'not very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,116,32,118,101,114,121]},{"a":58733,"t":"byte","b":[0]},{"a":58734,"l":"text_intensity_0_01_moderately","c":"Zero-terminated text record text_intensity_0_01_moderately, 10 content bytes plus terminator at $E578: 'moderately'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'moderately'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[109,111,100,101,114,97,116,101]},{"a":58742,"t":"byte","b":[108,121,0]},{"a":58745,"l":"text_intensity_0_02_very","c":"Zero-terminated text record text_intensity_0_02_very, 4 content bytes plus terminator at $E57D: 'very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[118,101,114,121,0]},{"a":58750,"l":"text_intensity_1_00_not_very","c":"Zero-terminated text record text_intensity_1_00_not_very, 8 content bytes plus terminator at $E586: 'not very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'not very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,116,32,118,101,114,121]},{"a":58758,"t":"byte","b":[0]},{"a":58759,"l":"text_intensity_1_01_moderately","c":"Zero-terminated text record text_intensity_1_01_moderately, 10 content bytes plus terminator at $E591: 'moderately'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'moderately'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[109,111,100,101,114,97,116,101]},{"a":58767,"t":"byte","b":[108,121,0]},{"a":58770,"l":"text_intensity_1_02_very","c":"Zero-terminated text record text_intensity_1_02_very, 4 content bytes plus terminator at $E596: 'very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[118,101,114,121,0]},{"a":58775,"l":"text_intensity_2_00_not_very","c":"Zero-terminated text record text_intensity_2_00_not_very, 8 content bytes plus terminator at $E59F: 'not very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'not very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,116,32,118,101,114,121]},{"a":58783,"t":"byte","b":[0]},{"a":58784,"l":"text_intensity_2_01_moderately","c":"Zero-terminated text record text_intensity_2_01_moderately, 10 content bytes plus terminator at $E5AA: 'moderately'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'moderately'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[109,111,100,101,114,97,116,101]},{"a":58792,"t":"byte","b":[108,121,0]},{"a":58795,"l":"text_intensity_2_02_very","c":"Zero-terminated text record text_intensity_2_02_very, 4 content bytes plus terminator at $E5AF: 'very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[118,101,114,121,0]},{"a":58800,"l":"text_intensity_3_00_not_very","c":"Zero-terminated text record text_intensity_3_00_not_very, 8 content bytes plus terminator at $E5B8: 'not very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'not very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,116,32,118,101,114,121]},{"a":58808,"t":"byte","b":[0]},{"a":58809,"l":"text_intensity_3_01_moderately","c":"Zero-terminated text record text_intensity_3_01_moderately, 10 content bytes plus terminator at $E5C3: 'moderately'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'moderately'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[109,111,100,101,114,97,116,101]},{"a":58817,"t":"byte","b":[108,121,0]},{"a":58820,"l":"text_intensity_3_02_very","c":"Zero-terminated text record text_intensity_3_02_very, 4 content bytes plus terminator at $E5C8: 'very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[118,101,114,121,0]},{"a":58825,"l":"text_intensity_4_00_not_very","c":"Zero-terminated text record text_intensity_4_00_not_very, 8 content bytes plus terminator at $E5D1: 'not very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'not very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,116,32,118,101,114,121]},{"a":58833,"t":"byte","b":[0]},{"a":58834,"l":"text_intensity_4_01_moderately","c":"Zero-terminated text record text_intensity_4_01_moderately, 10 content bytes plus terminator at $E5DC: 'moderately'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'moderately'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[109,111,100,101,114,97,116,101]},{"a":58842,"t":"byte","b":[108,121,0]},{"a":58845,"l":"text_intensity_4_02_very","c":"Zero-terminated text record text_intensity_4_02_very, 4 content bytes plus terminator at $E5E1: 'very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[118,101,114,121,0]},{"a":58850,"l":"text_intensity_5_00_not_very","c":"Zero-terminated text record text_intensity_5_00_not_very, 8 content bytes plus terminator at $E5EA: 'not very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'not very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[110,111,116,32,118,101,114,121]},{"a":58858,"t":"byte","b":[0]},{"a":58859,"l":"text_intensity_5_01_moderately","c":"Zero-terminated text record text_intensity_5_01_moderately, 10 content bytes plus terminator at $E5F5: 'moderately'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'moderately'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[109,111,100,101,114,97,116,101]},{"a":58867,"t":"byte","b":[108,121,0]},{"a":58870,"l":"text_intensity_5_02_very","c":"Zero-terminated text record text_intensity_5_02_very, 4 content bytes plus terminator at $E5FA: 'very'. Embedded bytes above $7F are kept as hexadecimal substitution/control codes rather than decoded as literal letters.","s":"ASCII-compatible text: 'very'. Selected through resident_text_category_directory and rendered by the game text engine.","t":"byte","b":[118,101,114,121,0,0]},{"a":58876,"l":"hidden_kernal_ram_scene_token_copy_tail","c":"Under-KERNAL RAM copy of a tail of the loaded scene 16-bit token stream. The bytes match the wide token representation used in the $B7xx workspace; they are data-only and hidden while KERNAL ROM is mapped.","t":"byte","b":[58,1,60,1,62,1,72,1]},{"a":58884,"t":"byte","b":[110,0,60,1,32,0,98,0]},{"a":58892,"t":"byte","b":[97,0,130,1,109,0,187,1]},{"a":58900,"t":"byte","b":[100,0,149,1,151,1,101,1]},{"a":58908,"t":"byte","b":[121,1,63,1,100,0,105,0]},{"a":58916,"t":"byte","b":[110,1,117,0,114,0,98,0]},{"a":58924,"t":"byte","b":[129,1,32,0,114,0,80,1]},{"a":58932,"t":"byte","b":[104,0,116,0,57,2,167,1]},{"a":58940,"t":"byte","b":[104,0,101,0,144,1,105,0]},{"a":58948,"t":"byte","b":[100,0,100,0,108,0,63,1]},{"a":58956,"t":"byte","b":[114,1,60,1,58,2,101,0]},{"a":58964,"t":"byte","b":[120,0,99,0,66,1,162,1]},{"a":58972,"t":"byte","b":[32,0,103,0,97,0,109,0]},{"a":58980,"t":"byte","b":[93,2,102,0,10,0,98,0]},{"a":58988,"t":"byte","b":[108,0,111,0,119,1,182,1]},{"a":58996,"t":"byte","b":[223,1,117,0,132,1,114,0]},{"a":59004,"t":"byte","b":[100,0,117,0,119,1,172,1]},{"a":59012,"t":"byte","b":[58,1,108,0,100,0,10,0]},{"a":59020,"t":"byte","b":[98,1,100,0,121,1,110,1]},{"a":59028,"t":"byte","b":[135,1,66,2,150,1,54,2]},{"a":59036,"t":"byte","b":[104,0,111,0,123,2,85,2]},{"a":59044,"t":"byte","b":[87,2,112,0,108,0,97,0]},{"a":59052,"t":"byte","b":[110,1,105,0,99,0,139,1]},{"a":59060,"t":"byte","b":[141,1,32,0,79,1,81,1]},{"a":59068,"t":"byte","b":[113,1,118,0,121,1,94,1]},{"a":59076,"t":"byte","b":[75,2,78,1,90,1,131,2]},{"a":59084,"t":"byte","b":[73,0,83,2,73,2,32,0]},{"a":59092,"t":"byte","b":[102,0,117,0,108,0,108,0]},{"a":59100,"t":"byte","b":[113,1,115,1,145,1,147,1]},{"a":59108,"t":"byte","b":[46,0,185,1,111,0,116,0]},{"a":59116,"t":"byte","b":[86,2,114,0,64,1,97,0]},{"a":59124,"t":"byte","b":[121,0,123,1,32,0,34,0]},{"a":59132,"t":"byte","b":[80,0,177,1,137,2,145,2]},{"a":59140,"t":"byte","b":[163,1,100,0,165,1,58,2]},{"a":59148,"t":"byte","b":[107,1,184,2,116,0,97,0]},{"a":59156,"t":"byte","b":[109,2,63,1,77,2,102,0]},{"a":59164,"t":"byte","b":[111,0,56,2,75,1,117,0]},{"a":59172,"t":"byte","b":[125,1,112,0,146,1,165,2]},{"a":59180,"t":"byte","b":[66,1,46,0,34,0,7,1]},{"a":59188,"t":"byte","b":[193,1,34,0,79,0,46,0]},{"a":59196,"t":"byte","b":[75,0,207,2,194,1,78,0]},{"a":59204,"t":"byte","b":[68,0,231,1,85,0,84,0]},{"a":59212,"t":"byte","b":[240,1,79,0,87,0,78,0]},{"a":59220,"t":"byte","b":[21,2,32,0,77,0,85,0]},{"a":59228,"t":"byte","b":[71,0,200,1,34,0,78,0]},{"a":59236,"t":"byte","b":[79,0,33,0,208,2,10,1]},{"a":59244,"t":"byte","b":[8,0,35,2,2,0,37,2]},{"a":59252,"t":"byte","b":[14,1,16,1,18,1,9,1]},{"a":59260,"t":"byte","b":[42,2,44,2,7,1,16,0]},{"a":59268,"t":"byte","b":[0,0,17,0,0,0,55,0]},{"a":59276,"t":"byte","b":[0,0,72,0,0,0,186,1]},{"a":59284,"t":"byte","b":[109,0,167,1,75,2,108,1]},{"a":59292,"t":"byte","b":[60,1,119,0,177,2,183,1]},{"a":59300,"t":"byte","b":[200,1,235,1,65,0,82,0]},{"a":59308,"t":"byte","b":[221,2,232,1,65,0,89,0]},{"a":59316,"t":"byte","b":[245,1,71,0,32,0,87,0]},{"a":59324,"t":"byte","b":[73,0,84,0,72,0,226,2]},{"a":59332,"t":"byte","b":[202,1,80,0,238,1,193,1]},{"a":59340,"t":"byte","b":[65,0,71,0,29,2,9,2]},{"a":59348,"t":"byte","b":[193,1,241,1,245,1,219,1]},{"a":59356,"t":"byte","b":[23,3,1,2,77,0,73,0]},{"a":59364,"t":"byte","b":[76,0,75,0,8,1,4,0]},{"a":59372,"t":"byte","b":[44,2,1,0,10,0,44,2]},{"a":59380,"t":"byte","b":[20,0,17,1,34,2,14,1]},{"a":59388,"t":"byte","b":[4,0,2,0]},{"a":59392,"l":"hidden_kernal_ram_graphics_resources","c":"Game graphics/resource payload in RAM underneath KERNAL ROM. Charset renderings at $E800, $F000 and $F800 produce structured tile sheets rather than coherent executable flow; representative decoded PNG assets are preserved. The current $01=$36 maps KERNAL ROM over these bytes, so active KERNAL calls at the same logical addresses target the ROM overlay, not this RAM occupant.","t":"byte","b":[63,127,253,253,253,253,253,253]},{"a":59400,"t":"byte","b":[255,85,127,85,255,85,255,85]},{"a":59408,"t":"byte","b":[255,85,255,85,23,0,223,87]},{"a":59416,"t":"byte","b":[255,93,255,85,80,0,253,85]},{"a":59424,"t":"byte","b":[255,85,255,85,127,85,255,85]},{"a":59432,"t":"byte","b":[252,126,95,95,223,95,223,95]},{"a":59440,"t":"byte","b":[253,253,253,253,253,253,253,253]},{"a":59448,"t":"byte","b":[255,85,255,85,223,85,255,85]},{"a":59456,"t":"byte","b":[223,87,223,87,223,87,223,95]},{"a":59464,"t":"byte","b":[253,85,253,85,253,85,253,253]},{"a":59472,"t":"byte","b":[255,85,255,85,255,85,255,85]},{"a":59480,"t":"byte","b":[223,95,223,95,223,95,223,95]},{"a":59488,"t":"byte","b":[253,253,253,253,253,253,253,253]},{"a":59496,"t":"byte","b":[255,85,255,85,255,85,255,93]},{"a":59504,"t":"byte","b":[247,87,253,85,247,87,223,87]},{"a":59512,"t":"byte","b":[247,245,223,213,247,85,253,117]},{"a":59520,"t":"byte","b":[255,87,255,85,255,85,255,85]},{"a":59528,"t":"byte","b":[223,95,223,95,223,95,95,95]},{"a":59536,"t":"byte","b":[253,253,253,253,253,253,253,253]},{"a":59544,"t":"byte","b":[255,85,255,85,255,85,255,85]},{"a":59552,"t":"byte","b":[223,87,223,87,223,87,223,95]},{"a":59560,"t":"byte","b":[253,85,253,85,221,245,253,253]},{"a":59568,"t":"byte","b":[255,85,255,85,255,85,253,85]},{"a":59576,"t":"byte","b":[223,95,223,95,223,95,223,95]},{"a":59584,"t":"byte","b":[253,253,253,253,253,255,127,63]},{"a":59592,"t":"byte","b":[255,85,255,85,127,85,255,255]},{"a":59600,"t":"byte","b":[223,95,23,0,255,85,255,255]},{"a":59608,"t":"byte","b":[253,253,64,0,255,85,255,255]},{"a":59616,"t":"byte","b":[255,85,127,85,255,85,255,255]},{"a":59624,"t":"byte","b":[223,95,223,95,95,127,254,252]},{"a":59632,"t":"byte","b":[63,127,253,253,253,253,253,253]},{"a":59640,"t":"byte","b":[255,85,255,85,255,85,247,85]},{"a":59648,"t":"byte","b":[255,85,246,86,253,85,252,83]},{"a":59656,"t":"byte","b":[255,85,103,49,143,21,207,241]},{"a":59664,"t":"byte","b":[255,85,255,85,253,85,255,93]},{"a":59672,"t":"byte","b":[252,126,223,95,223,95,223,95]},{"a":59680,"t":"byte","b":[253,253,253,253,253,253,253,253]},{"a":59688,"t":"byte","b":[255,85,252,83,207,79,192,70]},{"a":59696,"t":"byte","b":[206,62,254,254,255,255,0,219]},{"a":59704,"t":"byte","b":[60,223,63,223,159,255,0,109]},{"a":59712,"t":"byte","b":[255,21,207,241,249,249,1,177]},{"a":59720,"t":"byte","b":[223,95,223,95,223,95,223,95]},{"a":59728,"t":"byte","b":[253,252,248,255,248,255,255,255]},{"a":59736,"t":"byte","b":[6,6,6,198,54,134,198,230]},{"a":59744,"t":"byte","b":[219,219,219,219,219,219,219,219]},{"a":59752,"t":"byte","b":[109,109,109,109,109,109,109,109]},{"a":59760,"t":"byte","b":[176,176,176,177,182,176,177,179]},{"a":59768,"t":"byte","b":[95,31,15,255,15,255,255,255]},{"a":59776,"t":"byte","b":[255,255,255,255,248,253,253,253]},{"a":59784,"t":"byte","b":[230,230,198,134,6,6,6,6]},{"a":59792,"t":"byte","b":[219,219,219,219,219,219,219,219]},{"a":59800,"t":"byte","b":[109,109,109,109,109,109,109,109]},{"a":59808,"t":"byte","b":[179,179,177,176,176,176,176,176]},{"a":59816,"t":"byte","b":[255,255,255,255,15,95,95,95]},{"a":59824,"t":"byte","b":[253,253,253,253,253,255,127,63]},{"a":59832,"t":"byte","b":[6,6,6,6,64,85,240,255]},{"a":59840,"t":"byte","b":[219,219,219,219,0,85,0,255]},{"a":59848,"t":"byte","b":[109,109,109,109,0,85,0,255]},{"a":59856,"t":"byte","b":[176,176,176,176,1,85,7,255]},{"a":59864,"t":"byte","b":[95,95,95,95,95,127,254,252]},{"a":59872,"t":"byte","b":[63,127,253,253,253,253,253,253]},{"a":59880,"t":"byte","b":[255,85,255,85,255,85,255,85]},{"a":59888,"t":"byte","b":[255,85,255,84,251,87,239,95]},{"a":59896,"t":"byte","b":[255,85,255,85,191,229,249,254]},{"a":59904,"t":"byte","b":[255,85,255,85,255,85,255,85]},{"a":59912,"t":"byte","b":[252,254,127,127,127,127,127,127]},{"a":59920,"t":"byte","b":[253,253,253,253,253,253,253,253]},{"a":59928,"t":"byte","b":[255,85,254,85,252,80,192,0]},{"a":59936,"t":"byte","b":[188,112,192,0,0,0,0,0]},{"a":59944,"t":"byte","b":[127,31,7,1,0,0,0,0]},{"a":59952,"t":"byte","b":[159]},{"a":59953,"l":"j_EA31","t":"byte","b":[229,249,254,127,31,6,1,127],"x":[3733]},{"a":59961,"t":"byte","b":[127,127,127,191,63,127,255,252]},{"a":59969,"t":"byte","b":[240,252,255,254,253,251,253,0]},{"a":59977,"t":"byte","b":[0,0,0,192,240,244,241,6]},{"a":59985,"t":"byte","b":[7,0,0,0,0,0,0,0]},{"a":59993,"t":"byte","b":[0,128,32,8,2,0,1,0]},{"a":60001,"t":"byte","b":[0,0,1,7,21,159,21,127]},{"a":60009,"t":"byte","b":[63,127,127,127,127,127,127,254]},{"a":60017,"t":"byte","b":[253,253,253,253,253,253,253,240]},{"a":60025,"t":"byte","b":[120,188,94,239,87,251,85,64]},{"a":60033,"t":"byte","b":[16,4,1,128,240,255,255,4]},{"a":60041,"t":"byte","b":[16,65,5,27,117,239,213,159]},{"a":60049,"t":"byte","b":[21,159,21,159,21,159,21,127]},{"a":60057,"t":"byte","b":[127,127,127,127,127,127,127,253]},{"a":60065,"t":"byte","b":[253,253,253,253,255,127,63,254]},{"a":60073,"t":"byte","b":[85,255,85,255,85,255,255,255]},{"a":60081,"t":"byte","b":[127,190,93,235,85,255,255,191]},{"a":60089,"t":"byte","b":[85,255,85,255,85,255,255,159]},{"a":60097,"t":"byte","b":[21,255,85,255,85,255,255,127]},{"a":60105,"t":"byte","b":[127,127,127,127,255,254,252,63]},{"a":60113,"t":"byte","b":[127,253,253,253,253,253,253,255]},{"a":60121,"t":"byte","b":[85,255,85,255,85,255,85,255]},{"a":60129,"t":"byte","b":[85,255,85,255,85,255,213,255]},{"a":60137,"t":"byte","b":[85,255,85,255,85,255,85,255]},{"a":60145,"t":"byte","b":[85,255,85,255,85,255,85,252]},{"a":60153,"t":"byte","b":[126,223,95,223,95,223,95,253]},{"a":60161,"t":"byte","b":[253,253,253,253,253,253,253,255]},{"a":60169,"t":"byte","b":[85,255,85,255,85,255,85,255]},{"a":60177,"t":"byte","b":[85,255,85,255,85,192,31,255]},{"a":60185,"t":"byte","b":[85,255,84,255,85,31,241,255]},{"a":60193,"t":"byte","b":[85,255,85,255,85,255,85,223]},{"a":60201,"t":"byte","b":[95,223,95,223,95,223,95,253]},{"a":60209,"t":"byte","b":[240,240,240,240,240,240,240,126]},{"a":60217,"t":"byte","b":[4,28,60,127,63,31,63,127]},{"a":60225,"t":"byte","b":[96,207,63,255,255,255,252,252]},{"a":60233,"t":"byte","b":[127,15,227,248,30,199,241,60]},{"a":60241,"t":"byte","b":[132,228,248,254,126,30,206,15]},{"a":60249,"t":"byte","b":[255,127,127,127,127,127,127,240]},{"a":60257,"t":"byte","b":[240,240,245,245,245,253,253,127]},{"a":60265,"t":"byte","b":[31,1,82,248,84,255,85,254]},{"a":60273,"t":"byte","b":[255,249,60,143,195,24,25,60]},{"a":60281,"t":"byte","b":[143,227,120,30,193,112,129,110]},{"a":60289,"t":"byte","b":[14,220,48,68,21,127,85,127]},{"a":60297,"t":"byte","b":[127,127,255,15,87,215,87,253]},{"a":60305,"t":"byte","b":[253,253,253,253,255,127,63,255]},{"a":60313,"t":"byte","b":[85,255,85,255,85,255,255,225]},{"a":60321,"t":"byte","b":[84,255,85,255,85,255,255,143]},{"a":60329,"t":"byte","b":[85,255,85,255,85,255,255,255]},{"a":60337,"t":"byte","b":[85,255,85,255,85,255,255,223]},{"a":60345,"t":"byte","b":[95,223,95,223,127,254,252,63]},{"a":60353,"t":"byte","b":[127,253,253,253,253,253,253,255]},{"a":60361,"t":"byte","b":[85,127,85,255,85,85,0,255]},{"a":60369,"t":"byte","b":[85,255,85,255,85,81,1,255]},{"a":60377,"t":"byte","b":[85,255,85,255,85,255,85,255]},{"a":60385,"t":"byte","b":[85,255,85,255,85,247,85,252]},{"a":60393,"t":"byte","b":[126,95,95,223,95,223,95,253]},{"a":60401,"t":"byte","b":[253,253,253,253,253,253,253,255]},{"a":60409,"t":"byte","b":[85,85,0,255,85,85,0]},{"a":60416,"t":"gap","n":3536},{"a":63952,"l":"retained_high_ram_initialization_twin","c":"580 bytes $F9D0-$FC13 exactly duplicate initialization-template bytes $1DBB-$1FFE. The first 212 are zero; the remaining bytes include state and saved VM frame records. They lie immediately after the checked MAP1 graphics object, which ends at $F9CF. This equality establishes a retained twin, not an extra graphics sheet or an independent active stack.","t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":63960,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":63968,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":63976,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":63984,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":63992,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64000,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64008,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64016,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64024,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64032,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64040,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64048,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64056,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64064,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64072,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64080,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64088,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64096,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64104,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64112,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64120,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64128,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64136,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64144,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64152,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64160,"t":"byte","b":[0,0,0,0]},{"a":64164,"l":"retained_initialization_twin_nonzero_tail","c":"368 bytes $FAA4-$FC13, the nonzero-containing tail of the 580-byte twin beginning $F9D0. Every byte matches $1E8F-$1FFE; source contains initialization state and captured frame-chain records. Distinct instruction-like prior-phase material starts at $FC14. The origin of the extra stored twin remains open; do not claim it is live scene geometry.","t":"byte","b":[48,0,9,0,5,0,0,8]},{"a":64172,"t":"byte","b":[0,11,0,21,0,0,8,0]},{"a":64180,"t":"byte","b":[0,46,0,11,0,15,0,0]},{"a":64188,"t":"byte","b":[8,0,0,0,0,0,0,0]},{"a":64196,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64204,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64212,"t":"byte","b":[0,0,0,0,41,0,9,0]},{"a":64220,"t":"byte","b":[8,0,0,8,211,206,0,224]},{"a":64228,"t":"byte","b":[78,111,110,101,0,0,0,0]},{"a":64236,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64244,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64252,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64260,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64268,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64276,"t":"byte","b":[0,0,0,0,248,29,48,0]},{"a":64284,"t":"byte","b":[0,0,222,116,17,207,27,207]},{"a":64292,"t":"byte","b":[27,90,33,128,248,29,0,0]},{"a":64300,"t":"byte","b":[48,0,64,0,222,116,35,207]},{"a":64308,"t":"byte","b":[49,207,101,89,33,128,248,29]},{"a":64316,"t":"byte","b":[0,0,48,0,3,0,24,1]},{"a":64324,"t":"byte","b":[3,0,222,116,57,207,79,207]},{"a":64332,"t":"byte","b":[239,85,80,29,197,129,93,130]},{"a":64340,"t":"byte","b":[4,0,32,0,31,0,17,0]},{"a":64348,"t":"byte","b":[11,1,0,0,5,0,0,0]},{"a":64356,"t":"byte","b":[222,116,87,207,169,207,4,0]},{"a":64364,"t":"byte","b":[1,0,23,0,0,8,22,0]},{"a":64372,"t":"byte","b":[8,0,48,32,49,0,32,32]},{"a":64380,"t":"byte","b":[32,21,0,0,0,168,171,128]},{"a":64388,"t":"byte","b":[207,0,0,33,222,116,123,207]},{"a":64396,"t":"byte","b":[125,207,11,87,16,0,222,116]},{"a":64404,"t":"byte","b":[133,207,4,0,1,21,208,21]},{"a":64412,"t":"byte","b":[208,222,116,144,207,222,116,148]},{"a":64420,"t":"byte","b":[207,150,207,11,87,0,0,222]},{"a":64428,"t":"byte","b":[116,158,207,168,207,157,75,0]},{"a":64436,"t":"byte","b":[0,0,0,0,0,2,0,17]},{"a":64444,"t":"byte","b":[0,222,116,176,207,213,207,106]},{"a":64452,"t":"byte","b":[141,142,148,0,0,0,105,93]},{"a":64460,"t":"byte","b":[190,207,196,207,192,206,0,44]},{"a":64468,"t":"byte","b":[21,8,3,8,0,223,116,205]},{"a":64476,"t":"byte","b":[207,215,207,68,75,4,102,132]},{"a":64484,"t":"byte","b":[44,21,101,196,44,21,222,116]},{"a":64492,"t":"byte","b":[221,207,233,207,150,64,102,132]},{"a":64500,"t":"byte","b":[0,0,102,132,8,45,0,0]},{"a":64508,"t":"byte","b":[64,0,222,116,241,207,247,207]},{"a":64516,"t":"byte","b":[240,101,0,0,0,0,10,0]},{"a":64524,"t":"byte","b":[0,10,255,207,179,34,34,0]},{"a":64532,"l":"retained_bootstrap_fragment_open","t":"byte","b":[173,0,221,41,252,141,0,221]},{"a":64540,"t":"byte","b":[169,52,141,24,208,120,169,0]},{"a":64548,"t":"byte","b":[133,5,165,5,32,0,193,230]},{"a":64556,"t":"byte","b":[5,36,5,80,245,169,55,133]},{"a":64564,"t":"byte","b":[1,169,199,141,22,208,162,0]},{"a":64572,"t":"byte","b":[169,128,157,0,204,157,0,205]},{"a":64580,"t":"byte","b":[157,0,206,157,0,207,169,1]},{"a":64588,"t":"byte","b":[157,0,217,238,55,192,238,55]},{"a":64596,"t":"byte","b":[192,157,0,218,232,208,225,169]},{"a":64604,"t":"byte","b":[0,141,32,208,169,0,141,33]},{"a":64612,"t":"byte","b":[208,88,169,11,133,3,169,0]},{"a":64620,"t":"byte","b":[133,2,169,12,133,251,169,194]},{"a":64628,"t":"byte","b":[133,252,160,0,177,251,41,63]},{"a":64636,"t":"byte","b":[133,6,32,121,193,200,192,20]},{"a":64644,"t":"byte","b":[208,242,165,251,24,105,19,133]},{"a":64652,"t":"byte","b":[251,162,2,32,206,193,202,208]},{"a":64660,"t":"byte","b":[250,230,251,208,2,230,252,160]},{"a":64668,"t":"byte","b":[0,177,251,208,10,169,11,133]},{"a":64676,"t":"byte","b":[251,169,194,133,252,169,32,133]},{"a":64684,"t":"byte","b":[6,32,121,193,32,228,255,201]},{"a":64692,"t":"byte","b":[32,208,39,32,91,255,32,21]},{"a":64700,"t":"byte","b":[253,32,163,253,162,200,142,22]},{"a":64708,"t":"byte","b":[208,160,255,162,0,232,208,253]},{"a":64716,"t":"byte","b":[136,140,24,208,208,245,32,91]},{"a":64724,"t":"byte","b":[255,76,16,196,0,0,0,0]},{"a":64732,"t":"byte","b":[0,0,238,39,208,238,40,208]},{"a":64740,"t":"byte","b":[238,41,208,76,121,192,0,0]},{"a":64748,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64756,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64764,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64772,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64780,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":64788,"t":"byte","b":[133,251,169,0,133,4,133,252]},{"a":64796,"t":"byte","b":[6,251,38,252,6,251,38,252]},{"a":64804,"t":"byte","b":[6,251,38,252,165,252,133,254]},{"a":64812,"t":"byte","b":[105,208,133,252,49,234,102,254]},{"a":64820,"t":"byte","b":[71,254,74,243,145,242,14,242]},{"a":64828,"t":"byte","b":[80,242,51,243,87,241,202,241]},{"a":64836,"t":"byte","b":[237,246,62,241,47,243,102,254]},{"a":64844,"t":"byte","b":[165,244,237,245,7,132,2,132]},{"a":64852,"t":"byte","b":[3,10,8,38,3,38,2,40]},{"a":64860,"t":"byte","b":[38,3,38,2,202,16,242,165]},{"a":64868,"t":"byte","b":[2,145,253,200,145,253,160,16]},{"a":64876,"t":"byte","b":[165,3,145,253,200,145,253,24]},{"a":64884,"t":"byte","b":[165,253,105,2,133,253,208,2]},{"a":64892,"t":"byte","b":[230,254,230,251,208,2,230,252]},{"a":64900,"t":"byte","b":[230,4,165,4,201,8,208,187]},{"a":64908,"t":"byte","b":[96,72,138,72,152,72,234,234]},{"a":64916,"t":"byte","b":[169,0,133,4,133,5,166,3]},{"a":64924,"t":"byte","b":[240,14,165,4,24,105,40,133]},{"a":64932,"t":"byte","b":[4,144,2,230,5,202,208,242]},{"a":64940,"t":"byte","b":[165,5,24,105,204,133,5,165]},{"a":64948,"t":"byte","b":[6,10,10,170,164,2,145,4]},{"a":64956,"t":"byte","b":[232,232,200,138,145,4,152,24]},{"a":64964,"t":"byte","b":[105,39,168,202,138,145,4,200]},{"a":64972,"t":"byte","b":[232,232,138,145,4,165,2,24]},{"a":64980,"t":"byte","b":[105,2,201,40,176,2,133,2]},{"a":64988,"t":"byte","b":[104,168,104,170,104,96,120,173]},{"a":64996,"t":"byte","b":[18,208,201,56,208,249,88,172]},{"a":65004,"t":"byte","b":[22,208,136,152,41,7,133,6]},{"a":65012,"t":"byte","b":[173,22,208,41,248,5,6,141]},{"a":65020,"t":"byte","b":[22,208,165,6,201,7,208,222]},{"a":65028,"t":"byte","b":[160,0,185,185,205,153,184,205]},{"a":65036,"t":"byte","b":[185,225,205,153,224,205,200,192]},{"a":65044,"t":"byte","b":[39,208,239,169,128,141,223,205]},{"a":65052,"t":"byte","b":[141,7,206,96,7,7,7,7]},{"a":65060,"t":"byte","b":[7,7,7,7,7,7,7,7]},{"a":65068,"t":"byte","b":[115,111,98,7,105,98,112,100]},{"a":65076,"t":"byte","b":[104,106,98,117,116,7,119,117]},{"a":65084,"t":"byte","b":[98,116,98,105,115,29,7]},{"a":65091,"l":"KERNAL_NMI_VECTOR","t":"byte","b":[10,26,25,7,102,107,115,98],"x":[16703]},{"a":65099,"t":"byte","b":[117,7,98,96,104,7,27,26]},{"a":65107,"t":"byte","b":[10,7,7,7,7,111,98,126]},{"a":65115,"t":"byte","b":[7,115,104,29,7,101,116,115]},{"a":65123,"t":"byte","b":[11,99,10,99,114,104,11,97]},{"a":65131,"t":"byte","b":[102,100,11,100,117,106,11,116]},{"a":65139,"t":"byte","b":[117,11,96,116,116,11,119,104]},{"a":65147,"t":"byte","b":[96,104,7,22,22,23,19,11]},{"a":65155,"t":"byte","b":[114,100,96,11,115,106,100,11]},{"a":65163,"t":"byte","b":[100,117,114,105,100,111,98,117]},{"a":65171,"t":"byte","b":[11,97,107,102,116,111,11,98]},{"a":65179,"t":"byte","b":[100,102,11,119,101,102,11,100]},{"a":65187,"t":"byte","b":[97,101,11,115,111,98,7,101]},{"a":65195,"t":"byte","b":[110,115,98,117,116,11,96,112]},{"a":65203,"t":"byte","b":[107,11,110,116,119,11,98,117]},{"a":65211,"t":"byte","b":[117,104,117,10,116,104,97,115]},{"a":65219,"t":"byte","b":[7,1,7,111,98,102,99,101]},{"a":65227,"t":"byte","b":[102,105,96,98,117,7,7,7]},{"a":65235,"t":"byte","b":[7,7,7,7,7,39,39,39]},{"a":65243,"t":"byte","b":[39,39,39,39,39]},{"a":65248,"l":"prior_phase_cracktro_bootstrap_bytes","c":"PROVENANCE ONLY \u2014 prior-phase cracktro/bootstrap residue; not active Alter Ego gameplay and excluded from the remake model. At the first-interaction boundary the 6510 port is $36, so KERNAL ROM is visible at $E000-$FFFF and these physical-RAM bytes are hidden. It is classified as bytes solely to retain address/phase provenance; do not disassemble or infer its internal logic.","t":"byte","b":[162,0,189,96,195,157,0,224]},{"a":65256,"t":"byte","b":[232,224,64,208,245,169,13,141]},{"a":65264,"t":"byte","b":[248,7,141,249,7,141,250,7]},{"a":65272,"t":"byte","b":[169,1,141,39,208,141,40,208]},{"a":65280,"t":"byte","b":[141,41,208,169,85,141,1,208]},{"a":65288,"t":"byte","b":[141,5,208,169,75,141,0,208]},{"a":65296,"t":"byte","b":[169,140,141,2,208,169,215,141]},{"a":65304,"t":"byte","b":[4,208,169,185,141,3,208,169]},{"a":65312,"t":"byte","b":[7,141,21,208,141,23,208,141]},{"a":65320,"t":"byte","b":[29,208,162,0,189,12,194,73]},{"a":65328,"t":"byte","b":[39,157,12,194,232,224,192,208]},{"a":65336,"t":"byte","b":[243,32,5,196,76,0,192]},{"a":65343,"l":"hidden_kernal_ram_residue_before_vectors","c":"Provenance-only underlying RAM immediately below the hardware vectors. The region is hidden by KERNAL ROM in the first-interaction state and has no verified current-phase entry. Routine-like SID bytes at $FFE5 and $FFF0 are not modeled as active code: the latter is truncated by the installed vector words at $FFFA-$FFFF, demonstrating overwrite from an earlier occupant.","t":"byte","b":[0,3,255,192,3,255,192,3]},{"a":65351,"t":"byte","b":[60]},{"a":65352,"l":"KERNAL_IRQ_BRK_VECTOR","t":"byte","b":[192,0,60,0,0,60,0,0],"x":[16745]},{"a":65360,"t":"byte","b":[255,0,0,0,0,1,227,128]},{"a":65368,"t":"byte","b":[1,243,128,1,251,128,1,239]},{"a":65376,"t":"byte","b":[128,1,231,128,1,227,128,0]},{"a":65384,"t":"byte","b":[0,0,0,127,0,0,241,128]},{"a":65392,"t":"byte","b":[1,224,0,1,224,0,1,224]},{"a":65400,"t":"byte","b":[0,0,241,128,0,63,0,37]},{"a":65408,"t":"byte","b":[255,255,255,255,222,0,0,0]},{"a":65416,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":65424,"t":"byte","b":[0,0,0]},{"a":65427,"l":"KERNAL_SECOND","t":"byte","b":[0,0,0],"x":[25849,28073]},{"a":65430,"l":"KERNAL_TKSA","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[26717,28064]},{"a":65438,"t":"byte","b":[0,0,0,0,0,0,0]},{"a":65445,"l":"KERNAL_ACPTR","t":"byte","b":[0,0,0],"x":[26720,26727,28067]},{"a":65448,"l":"KERNAL_CIOUT","t":"byte","b":[0,0,0],"x":[25872,25882,28079]},{"a":65451,"l":"KERNAL_UNTLK","t":"byte","b":[0,0,0],"x":[26701,26746,28058]},{"a":65454,"l":"KERNAL_UNLSN","t":"byte","b":[0,0,0],"x":[25833,25885,28070]},{"a":65457,"l":"KERNAL_LISTEN","t":"byte","b":[0,0,0],"x":[25842,28076]},{"a":65460,"l":"KERNAL_TALK","t":"byte","b":[0,0,0],"x":[26710,28061]},{"a":65463,"l":"KERNAL_READST","t":"byte","b":[0,0,0],"x":[28204]},{"a":65466,"l":"KERNAL_SETLFS","t":"byte","b":[0,0,0],"x":[28100]},{"a":65469,"l":"KERNAL_SETNAM","t":"byte","b":[0,0,0],"x":[28125]},{"a":65472,"l":"KERNAL_OPEN","t":"byte","b":[0,0,0],"x":[28128]},{"a":65475,"l":"KERNAL_CLOSE","t":"byte","b":[0,0,0],"x":[28188]},{"a":65478,"l":"KERNAL_CHKIN","t":"byte","b":[0,0,0],"x":[28142]},{"a":65481,"l":"KERNAL_CHKOUT","t":"byte","b":[0,0,0],"x":[28165]},{"a":65484,"l":"KERNAL_CLRCHN","t":"byte","b":[0,0,0],"x":[28134]},{"a":65487,"l":"KERNAL_CHRIN","t":"byte","b":[0,0,0],"x":[28148]},{"a":65490,"l":"KERNAL_CHROUT","t":"byte","b":[0,0,0,0,0,0,0,0],"x":[28175]},{"a":65498,"t":"byte","b":[0,0,0,0,0,0,0,0]},{"a":65506,"t":"byte","b":[0,0]},{"a":65508,"l":"KERNAL_GETIN","t":"byte","b":[0,169,15],"x":[28154]},{"a":65511,"l":"KERNAL_CLALL","t":"byte","b":[141,24,212,32,104,9,96,0],"x":[28181]},{"a":65519,"t":"byte","b":[0,169,0,162,0,157,0,212]},{"a":65527,"t":"byte","b":[232,224,33]},{"a":65530,"l":"C64_KERNAL_NMI_VECTOR","c":"Three little-endian hardware vectors in RAM underneath KERNAL ROM, installed by $4109 even while ROM is readable: NMI=$4128, reset=$4174, IRQ/BRK=$414A. They take effect whenever HIRAM is cleared and KERNAL is banked out.","t":"word","b":[40,65],"d":[16680],"x":[16651]},{"a":65532,"l":"ram_reset_vector","c":"Little-endian reset vector $4174 in physical RAM underneath KERNAL ROM, installed by $4109. The visible reset vector is selected by banking; a RAM-vector name must not imply that the ROM vector has this value.","t":"word","b":[116,65],"d":[16756],"x":[16661]},{"a":65534,"l":"ram_irq_brk_vector","c":"Little-endian IRQ/BRK vector $414A installed in physical RAM by $4109. The first name prompt banks KERNAL ROM in, so visible CPU vector fetches use the ROM occupant unless banking changes.","t":"word","b":[74,65],"d":[16714],"x":[16671]}]}