// Names of ZP and low memory locations // (Only those for now that we feel the need to implement initially) // (https://www.c64-wiki.com/wiki/Zeropage) // XXX get rid of this file, use ,aliases_ram_lowmem.s instead .label tokenise_work1 = $7 .label tokenise_work2 = $8 .label tokenise_work3 = $B .label tokenise_work4 = $F .label basic_line_number = $14 .label temp_string_ptr = $35 .label load_or_verify_or_tokenise_work5 = $C .label basic_work22 = $22 .label basic_work23 = $23 .label basic_work24 = $24 .label basic_work25 = $25 // The various pointers that separate memory regions for BASIC storage // We have multiple names for the ones that mark the boundary of regions. .label basic_start_of_text_ptr = $2b .label basic_end_of_text_ptr = $2d .label basic_start_of_vars_ptr = $2d .label basic_end_of_vars_ptr = $2f .label basic_start_of_arrays_ptr = $2f .label basic_end_of_arrays_ptr = $31 .label basic_start_of_free_space_ptr = $31 .label basic_start_of_strings_ptr = $33 .label basic_top_of_memory_ptr = $37 .label basic_current_line_number = $39 .label basic_previous_line_number = $3b .label basic_current_line_ptr = $3d // Note that the statement point is in the CHRGET/CHRGOT routine // in ZP RAM. (Compute's Mapping the 64, p25) .label basic_current_statement_ptr = $7a .label basic_numeric_work_area = $57 // $57 - $60 inclusive = 10 bytes // Floating point accumulator 1 $61 - $68 .label basic_fac1_exponent = $61 .label basic_fac1_mantissa = $62 // $62 - $65 .label basic_fac1_sign = $66 .label basic_fac1_overflow = $68 .label basic_fac1_mantissa_lob = $70 .label basic_fac2_exponent = $69 .label basic_fac2_mantissa = $6A // $6A - $6D .label basic_fac2_sign = $6E // We also re-use FAC2 for memory move pointers, since // we can't be doing calculations while moving memory .label memmove_src = $69 .label memmove_dst = $6b .label memmove_size = $6d .label current_file_num = $98 .label cassette_buffer_bytes_used = $A6 .label load_or_scroll_temp_pointer = $AC // We also use the following for temp colour pointer when scrolling .label load_save_verify_end_address = $AE .label cassette_buffer_ptr = $B2 .label current_logical_filenum = $B8 .label current_secondary_address = $B9 .label current_device_number = $BA .label current_filename_ptr = $BB .label load_save_start_ptr = $C1 .label load_save_end_ptr = $C3 .label last_key_matrix_position = $C5 .label keys_in_key_buffer = $C6 .label reverse_video_flag = $C7 .label end_of_input_line = $C8 .label start_of_keyboard_input = $C9 .label current_key_index_entry = $CB .label cursor_blink_disable = $CC .label cursor_blink_countdown = $CD .label cursor_saved_character = $CE .label cursor_is_visible = $CF .label keyboard_input_ready = $D0 .label current_screen_line_ptr = $D1 .label current_screen_x = $D3 .label quote_mode_flag = $D4 .label logical_line_length = $D5 .label current_screen_y = $D6 .label last_printed_character_ascii = $D7 .label insert_mode = $D8 // Bits 0 -3 = bits 8-11 of screen line address // Bit 7 = line spans multiple physical lines .label screen_line_link_table = $D9 .label current_screen_line_colour_ptr = $F3 .label keyboard_decoding_table_ptr = $F5 .label basic_input_buffer = BUF // "Compute's Mapping the 64" book .label keyboard_buffer = $0277 .label text_colour = $0286 // p55 .label colour_under_cursor = $0287 // p56 .label key_buffer_size = $0289 // p57 // 0 = cursor keys, insert, delete and space repeat, but nothing else // 128 = all keys repeat // 64 = no keys repeat .label key_repeat_flags = $028A // p58 // https://www.c64-wiki.com/wiki/Page_2 .label key_repeat_counter = $028B .label key_first_repeat_delay = $028C // bit 0 = shift, 1 = Vendor Key, 2 = Control .label key_bucky_state = $028D .label key_last_bucky_state = $028E .label keyboard_decoding_ptr = $028F .label enable_case_switch = $0291 .label screen_scroll_disable = $0292 #if CONFIG_MEMORY_MODEL_60K // BASIC uses some extra bytes for memory access under ROMs located at $2A7 onwards // IRQs are disabled when doing such accesses, and a default NMI handler only increments // a counter, so that if an NMI occurs, it doesn't crash the machine, but can be captured. .label missed_nmi_flag = $2A7 .label tiny_nmi_handler = $2A8 .label shift_mem_up = tiny_nmi_handler+shift_mem_up_routine-tiny_nmi_handler_routine .label shift_mem_down = tiny_nmi_handler+shift_mem_down_routine-tiny_nmi_handler_routine .label peek_under_roms = tiny_nmi_handler+peek_under_roms_routine-tiny_nmi_handler_routine .label poke_under_roms = tiny_nmi_handler+poke_under_roms_routine-tiny_nmi_handler_routine .label memmap_allram = tiny_nmi_handler+memmap_allram_routine-tiny_nmi_handler_routine .label memmap_normal = tiny_nmi_handler+memmap_normal_routine-tiny_nmi_handler_routine #endif // CONFIG_MEMORY_MODEL_60K