; ZX Spectrum ROM routines ; By Marcos Cruz (programandala.net) ; ============================================================== ; History ; 2014-12-17: Start. Regulary improved afterwards. ; ; 2015-05-24: Changes to make the file usable as symbols input ; file by z80dasm. ; ; 2015-08-20: Add new routines. ; ; 2015-09-06: Add new routines. ; ; 2016-04-16: Add new routines. ; ; 2016-08-19: Add all remaining routines, extracted from the ROM ; disassembly; remove duplicates; change all hex addresses to ; upper case. Rename `draw` to `draw_line_24BA; use `draw` for ; the official routine. ; 2016-09-02: Rename the entry point of ADD-CHAR at 0F85 with a descriptive ; name. ; ; 2017-02-09: Add two additional entry points, and two 128K routines. ; ============================================================== MACRO RST_ROM name RST #20 DW name ENDM ; ============================================================== ROUTINE: .abs EQU 0x346A .acs EQU 0x3843 .add_back EQU 0x3004 .add_ch_1 EQU 0x0F8B .add_char EQU 0x0F81 .add_char_keeping_current_mode EQU 0x0F85 .add_rep_6 EQU 0x309F .addend_0 EQU 0x2FF9 .addition EQU 0x3014 .addn_oflw EQU 0x303C .all_added EQU 0x300D .alpha EQU 0x2C8D .alphanum EQU 0x2C88 .arc_end EQU 0x245F .arc_loop EQU 0x2425 .arc_start EQU 0x2439 .asn EQU 0x3833 .atn EQU 0x37E2 .auto_l_1 EQU 0x17CE .auto_l_2 EQU 0x17E1 .auto_l_3 EQU 0x17E4 .auto_l_4 EQU 0x17ED .auto_list EQU 0x1795 .bc_spaces EQU 0x0030 .be_end EQU 0x03F6 .be_h_and_l_lp EQU 0x03D6 .be_ix_plus_0 EQU 0x03D4 .be_ix_plus_1 EQU 0x03D3 .be_ix_plus_2 EQU 0x03D2 .be_ix_plus_3 EQU 0x03D1 .beep EQU 0x03F8 .beeper EQU 0x03B5 .bin_digit EQU 0x2CA2 .bin_end EQU 0x2CB3 .bits_zero EQU 0x3283 .border EQU 0x2294 .border_1 EQU 0x22A6 .border_2297 EQU 0x2297 ; secondary entry to rom_border .border_229b EQU 0x229B ; secondary entry to rom_border .both_null EQU 0x3572 .break_key EQU 0x1F54 ; return the carry flag reset if SHIFT and BREAK keys are both being pressed. .byte_comp EQU 0x3564 .byte_zero EQU 0x327E .c_arc_ge1 EQU 0x235A .c_ent EQU 0x37B7 .c_r_gre_1 EQU 0x233B .ca_10_by_a_plus_c EQU 0x2F8B .calculate EQU 0x335B .call_jump EQU 0x162C .call_sub EQU 0x15F7 .cases EQU 0x37FA .cat_etc EQU 0x1793 .cd_prms1 EQU 0x247D .ch_add_plus_1 EQU 0x0074 .chan_flag EQU 0x1615 .chan_k EQU 0x1634 .chan_op_1 EQU 0x1610 .chan_open EQU 0x1601 ; open a channel (channel in A) .chan_p EQU 0x164D .chan_s EQU 0x1642 ; set flags for upper screen channel .chan_s_1 EQU 0x1646 .check_end EQU 0x1BEE .chn_cd_lu EQU 0x162D .chrs EQU 0x35C9 .circle EQU 0x2320 .cl_09_1 EQU 0x1CD6 .cl_addr EQU 0x0E9B .cl_all EQU 0x0DAF ; clear whole (upper) display area .cl_attr EQU 0x0E88 .cl_chan EQU 0x0D94 .cl_chan_a EQU 0x0DA0 .cl_line EQU 0x0E44 .cl_line_1 EQU 0x0E4A .cl_line_2 EQU 0x0E4D .cl_line_3 EQU 0x0E80 .cl_sc_all EQU 0x0DFE .cl_scr_1 EQU 0x0E05 .cl_scr_2 EQU 0x0E0D .cl_scr_3 EQU 0x0E19 .cl_scroll EQU 0x0E00 ; scroll the number of lines in the B register .cl_set EQU 0x0DD9 .cl_set_1 EQU 0x0DEE .cl_set_2 EQU 0x0DF4 .cl_str_lu EQU 0x1716 .class_01 EQU 0x1C1F .class_02 EQU 0x1C4E .class_03 EQU 0x1C0D .class_04 EQU 0x1C6C .class_05 EQU 0x1C11 .class_07 EQU 0x1C96 .class_09 EQU 0x1CBE .class_0b EQU 0x1CDB .class_tbl EQU 0x1C01 .clear EQU 0x1EAC .clear_1 EQU 0x1EB7 .clear_2 EQU 0x1EDC .clear_prb EQU 0x0EDF .clear_run EQU 0x1EAF .clear_sp EQU 0x1097 .close EQU 0x16E5 .close_0_16EB EQU 0x16EB .close_1 EQU 0x16FC .close_2 EQU 0x1701 .close_str EQU 0x171C .cls EQU 0x0D6B ; CLS .cls_1 EQU 0x0D87 .cls_2 EQU 0x0D89 .cls_3 EQU 0x0D8E .cls_lower EQU 0x0D6E .co_change EQU 0x226C .co_temp_1 EQU 0x21E1 .co_temp_2 EQU 0x21E2 .co_temp_3 EQU 0x21F2 .co_temp_4 EQU 0x21FC .co_temp_5 EQU 0x2211 .co_temp_6 EQU 0x2228 .co_temp_7 EQU 0x2234 .co_temp_8 EQU 0x223E .co_temp_9 EQU 0x2246 .co_temp_a EQU 0x2257 .co_temp_b EQU 0x2258 .co_temp_c EQU 0x2273 .co_temp_d EQU 0x227D .co_temp_e EQU 0x2287 .code EQU 0x3669 .comma_sp EQU 0x1537 .continue EQU 0x1E5F .copy EQU 0x0EAC .copy_1 EQU 0x0EB2 .copy_2 EQU 0x0EC9 .copy_3 EQU 0x0ED3 .copy_buff EQU 0x0ECD .copy_end EQU 0x0EDA .copy_l_1 EQU 0x0EFD .copy_l_2 EQU 0x0F0C .copy_l_3 EQU 0x0F14 .copy_l_4 EQU 0x0F18 .copy_l_5 EQU 0x0F1E .copy_line EQU 0x0EF4 .copyright EQU 0x1539 .cos EQU 0x37AA .count_one EQU 0x31FA .cp_lines EQU 0x1980 .ctlchrtab EQU 0x0A11 .d_l_diag EQU 0x24D4 .d_l_hr_vt EQU 0x24DB .d_l_loop EQU 0x24CE .d_l_plot EQU 0x24EC .d_l_range EQU 0x24F7 .d_l_step EQU 0x24DF .d_letter EQU 0x2C1F .d_no_loop EQU 0x2C2E .d_rport_c EQU 0x2C05 .d_run EQU 0x2C15 .d_size EQU 0x2C2D .data EQU 0x1E27 .data_1 EQU 0x1E2C .data_2 EQU 0x1E37 .de_comma_paren_de_plus_1_parenequ EQU 0x2AEE .dec_jr_nz EQU 0x367A .dec_rpt_c EQU 0x2CCF .dec_sto_1 EQU 0x2CD5 .dec_to_fp EQU 0x2C9B .decimal EQU 0x2CCB .def_fn EQU 0x1F60 .def_fn_1 EQU 0x1F6A .def_fn_2 EQU 0x1F7D .def_fn_3 EQU 0x1F86 .def_fn_4 EQU 0x1F89 .def_fn_5 EQU 0x1F94 .def_fn_6 EQU 0x1FA6 .def_fn_7 EQU 0x1FBD .delete EQU 0x33A1 .differ EQU 0x19DD .dim EQU 0x2C02 .dim_clear EQU 0x2C7C .dim_sizes EQU 0x2C7F .div_34th EQU 0x31DB .div_loop EQU 0x31D2 .div_start EQU 0x31E2 .division EQU 0x31AF .divn_expt EQU 0x313D .dl_larger EQU 0x24CB .dl_x_ge_y EQU 0x24C4 .double_a EQU 0x338C .dr_3_prms EQU 0x238D .dr_prms EQU 0x23C1 .dr_sin_nz EQU 0x23A3 .draw EQU 0x2382 .draw_line EQU 0x24B7 .draw_line_24BA EQU 0x24BA ; entry point of the draw_line routine .draw_save EQU 0x2497 .drw_steps EQU 0x2420 .e_divsn EQU 0x2D6D .e_end EQU 0x2D7B .e_fetch EQU 0x2D6E .e_format EQU 0x2CEB .e_fp_jump EQU 0x2D18 .e_l_1 EQU 0x1A15 .e_line_no EQU 0x19FB .e_loop EQU 0x2D60 .e_save EQU 0x2D55 .e_to_fp EQU 0x2D4F .e_tst_end EQU 0x2D71 .each_s_1 EQU 0x1990 .each_s_2 EQU 0x1998 .each_s_3 EQU 0x199A .each_s_4 EQU 0x19A5 .each_s_5 EQU 0x19AD .each_s_6 EQU 0x19B1 .each_stmt EQU 0x198B .ed_again EQU 0x0F30 .ed_blank EQU 0x1150 .ed_c_done EQU 0x117C .ed_c_end EQU 0x117E .ed_contr EQU 0x0F6C .ed_copy EQU 0x111D .ed_cur EQU 0x1011 .ed_delete EQU 0x1015 .ed_down EQU 0x0FF3 .ed_edge EQU 0x1031 .ed_edge_1 EQU 0x103E .ed_edge_2 EQU 0x1051 .ed_edit EQU 0x0FA9 .ed_end EQU 0x1026 .ed_enter EQU 0x1024 .ed_error EQU 0x107F .ed_full EQU 0x1167 .ed_graph EQU 0x107C .ed_ignore EQU 0x101E .ed_keys EQU 0x0F92 .ed_keys_t EQU 0x0FA0 .ed_left EQU 0x1007 .ed_list EQU 0x106E .ed_loop EQU 0x0F38 .ed_right EQU 0x100C .ed_spaces EQU 0x115E .ed_stop EQU 0x1001 .ed_symbol EQU 0x1076 .ed_up EQU 0x1059 .editor EQU 0x0F2C .end_calc EQU 0x369B .end_compl EQU 0x30A3 .end_tests EQU 0x358C .ent_table EQU 0x338E .error_1 EQU 0x0008 .error_2 EQU 0x0053 .error_3 EQU 0x0055 .error_4 EQU 0x0058 .ex_or_not EQU 0x3543 .exchange EQU 0x343C .exit EQU 0x36C2 .exp EQU 0x36C4 .expt_1num EQU 0x1C82 .expt_2num EQU 0x1C7A .expt_exp EQU 0x1C8C .f_found EQU 0x1D7C .f_l_s EQU 0x1D34 .f_loop EQU 0x1D64 .f_reorder EQU 0x1D16 .f_use_1 EQU 0x1D10 .fetch_num EQU 0x1CDE .fetch_two EQU 0x2FBA .find_i_1 EQU 0x1E9C .find_int1 EQU 0x1E94 .find_int2 EQU 0x1E99 .first_3d EQU 0x3380 .fn_skpovr EQU 0x28AB .for EQU 0x1D03 .form_exp EQU 0x33DE .fp_0_or_1 EQU 0x350B .fp_a_end EQU 0x2DE1 .fp_calc EQU 0x0028 .fp_calc_2 EQU 0x33A2 .fp_delete EQU 0x2DAD .fp_to_a EQU 0x2DD5 .fp_to_bc EQU 0x2DA2 .free_mem EQU 0x1F1A .frst_less EQU 0x3585 .full_addn EQU 0x303E .g_loop EQU 0x3453 .gen_ent_1 EQU 0x335E .gen_ent_2 EQU 0x3362 .get_argt EQU 0x3783 .get_char EQU 0x0018 .get_hl_by_de EQU 0x2AF4 .get_mem_xx EQU 0x340F .get_param EQU 0x1B55 .go_nc_mlt EQU 0x30A5 .go_sub EQU 0x1EED .go_to EQU 0x1E67 .go_to_2 EQU 0x1E73 .go_to_bc EQU 0x1E6A ; 'GO TO' line in BC register .go_to_hl EQU 0x1E6C ; 'GO TO' line in HL register XXX not tested .gre.8 EQU 0x373D .greater_0 EQU 0x34F9 .hl_again EQU 0x30BC .hl_by_de_to_hl EQU 0x30A9 ; HL=HL*DE .hl_end EQU 0x30BE .hl_hl_by_de EQU 0x30A9 .hl_loop EQU 0x30B1 .hlxde EQU 0x30A9 ; HL=HL*DE .i_carry EQU 0x2AE8 .i_restore EQU 0x2AEB .if EQU 0x1CF0 .if_1 EQU 0x1D00 .in EQU 0x34A5 .in_assign EQU 0x21B9 .in_chan_k EQU 0x21D6 .in_item_1 EQU 0x20C1 .in_item_2 EQU 0x20D8 .in_item_3 EQU 0x20ED .in_next_1 EQU 0x21AF .in_next_2 EQU 0x21B2 .in_pk_stk EQU 0x34B0 .in_pr_1 EQU 0x211A .in_pr_2 EQU 0x211C .in_pr_3 EQU 0x2129 .in_prompt EQU 0x20FA .in_stop EQU 0x21D0 .in_var_1 EQU 0x213A .in_var_2 EQU 0x2148 .in_var_3 EQU 0x215E .in_var_4 EQU 0x2161 .in_var_5 EQU 0x2174 .in_var_6 EQU 0x219B .indexer EQU 0x16DC .indexer_1 EQU 0x16DB .init_chan EQU 0x15AF .init_strm EQU 0x15C6 .input EQU 0x2089 .input_1 EQU 0x2096 .input_2 EQU 0x20AD .input_ad EQU 0x15E6 .int EQU 0x36AF .int_case EQU 0x3483 .int_exp1 EQU 0x2ACC .int_exp2 EQU 0x2ACD .int_fetch EQU 0x2D7F .int_store EQU 0x2D8E .int_to_fp EQU 0x2D3B .ix_end EQU 0x3290 .jump EQU 0x3686 .jump_2 EQU 0x3687 .jump_true EQU 0x368F .k_8_and_9 EQU 0x0382 .k_@_char EQU 0x03B2 .k_ch_set EQU 0x02D1 .k_digit EQU 0x0367 .k_e_let EQU 0x0341 .k_end EQU 0x0308 .k_gra_dgt EQU 0x0389 .k_klc_dgt EQU 0x039D .k_klc_let EQU 0x034F .k_look_up EQU 0x034A .k_main EQU 0x032C .k_new EQU 0x02F1 .k_repeat EQU 0x0310 .k_st_loop EQU 0x02C6 .k_tokens EQU 0x0364 .key_3keys EQU 0x029F .key_bits EQU 0x02A1 .key_chan EQU 0x1113 .key_contr EQU 0x10FA .key_data EQU 0x1105 .key_decode EQU 0x0333 .key_done2 EQU 0x111B .key_done EQU 0x02AB .key_flag EQU 0x10F4 .key_input EQU 0x10A8 .key_int EQU 0x0048 .key_line EQU 0x0296 .key_m_cl EQU 0x10DB .key_mode EQU 0x10E6 .key_next EQU 0x110D .key_scan EQU 0x028E .key_test EQU 0x031E .keyboard EQU 0x02BF .l_add_string EQU 0x2BAF .l_char EQU 0x2B3E .l_delete_string EQU 0x2B72 .l_each_ch EQU 0x2B0B .l_enter EQU 0x2BA6 .l_exists EQU 0x2B66 .l_first EQU 0x2BEA .l_in_w_or_s EQU 0x2BA3 .l_length EQU 0x2B9B .l_new_string EQU 0x2BC0 .l_no_sp EQU 0x2B0C .l_numeric EQU 0x2B59 .l_single EQU 0x2B4F .l_spaces EQU 0x2B29 .l_string EQU 0x2BC6 .l_test_ch EQU 0x2B1F .last EQU 0x386C .ld_8_bits EQU 0x05CA .ld_block EQU 0x0802 .ld_break EQU 0x056B .ld_bytes EQU 0x0556 .ld_ch_pr EQU 0x07AD .ld_cont_1 EQU 0x0819 .ld_cont_2 EQU 0x0825 .ld_contrl EQU 0x0808 .ld_data EQU 0x082E .ld_data_1 EQU 0x084C .ld_dec EQU 0x05C4 .ld_delay EQU 0x05E9 .ld_edge_1 EQU 0x05E7 .ld_edge_2 EQU 0x05E3 .ld_flag EQU 0x05B3 .ld_leader EQU 0x0580 .ld_look_h EQU 0x0767 .ld_loop EQU 0x05A9 .ld_marker EQU 0x05C8 .ld_name EQU 0x07A6 .ld_next EQU 0x05C2 .ld_prog EQU 0x0873 .ld_prog_1 EQU 0x08AD .ld_sample EQU 0x05ED .ld_start EQU 0x056C .ld_sync EQU 0x058F .ld_type EQU 0x078A .ld_verify EQU 0x05BD .ld_wait EQU 0x0574 .len EQU 0x3674 .less_0 EQU 0x3506 .less_mask EQU 0x328A .let EQU 0x2AFF .line_ad_1 EQU 0x1974 .line_addr EQU 0x196E .line_draw EQU 0x2477 .line_end EQU 0x1BB3 .line_new EQU 0x1B9E .line_no EQU 0x1695 .line_no_a EQU 0x1691 .line_run EQU 0x1B8A .line_scan EQU 0x1B17 .line_use EQU 0x1BBF .line_zero EQU 0x168F .list EQU 0x17F9 .list_1 EQU 0x17FB .list_2 EQU 0x1814 .list_3 EQU 0x181A .list_4 EQU 0x181F .list_5 EQU 0x1822 .list_all EQU 0x1833 .list_all_2 EQU 0x1835 .llist EQU 0x17F5 .ln EQU 0x3713 .ln_fetch EQU 0x190F .ln_store EQU 0x191C .loc_mem EQU 0x3406 .log_paren_2_power_a_paren EQU 0x2DC1 .look_p_1 EQU 0x1D8B .look_p_2 EQU 0x1DA3 .look_prog EQU 0x1D86 .look_vars EQU 0x28B2 .lprint EQU 0x1FC9 .main_1 EQU 0x12A9 .main_2 EQU 0x12AC .main_3 EQU 0x12CF .main_4 EQU 0x1303 .main_5 EQU 0x133C .main_5_1349 EQU 0x1349 .main_6 EQU 0x1373 .main_7 EQU 0x1376 .main_8 EQU 0x1384 .main_9 EQU 0x1386 .main_add1 EQU 0x157D .main_add2 EQU 0x15AB .main_add EQU 0x155D .main_exec EQU 0x12A2 .main_g EQU 0x1313 ; runtime error (error in A) .main_keys EQU 0x0205 .make_expt EQU 0x313B .make_room EQU 0x1655 .mask_int EQU 0x0038 .me_contrl EQU 0x08B6 .me_ent_1 EQU 0x093E .me_ent_2 EQU 0x0955 .me_ent_3 EQU 0x0958 .me_enter EQU 0x092C .me_new_l2 EQU 0x08EB .me_new_lp EQU 0x08D2 .me_old_l1 EQU 0x08DF .me_old_lp EQU 0x08D7 .me_old_v1 EQU 0x0901 .me_old_v2 EQU 0x0909 .me_old_v3 EQU 0x0912 .me_old_v4 EQU 0x091E .me_old_vp EQU 0x08F9 .me_var_l1 EQU 0x0921 .me_var_l2 EQU 0x0923 .me_var_lp EQU 0x08F0 .mlt_loop EQU 0x3114 .move_fp EQU 0x33C0 .mult_long EQU 0x30F0 .mult_oflw EQU 0x30EF .mult_rslt EQU 0x30EA .multiply EQU 0x30CA .n_mod_m EQU 0x36A0 .n_negtv EQU 0x3705 .near_zero EQU 0x3159 .neg_byte EQU 0x2FAF .neg_test EQU 0x3474 .negate EQU 0x346E .new EQU 0x11B7 .next EQU 0x1DAB .next_1 EQU 0x1DE2 .next_2 EQU 0x1DE9 .next_2num EQU 0x1C79 .next_char EQU 0x0020 .next_line EQU 0x1BD1 .next_loop EQU 0x1DDA .next_o_1 EQU 0x19C7 .next_o_2 EQU 0x19CE .next_o_3 EQU 0x19D5 .next_o_4 EQU 0x19D6 .next_o_5 EQU 0x19DB .next_one EQU 0x19B8 .nil_bytes EQU 0x3272 .nmi_vect EQU 0x121C .no_add EQU 0x311B .no_and_no EQU 0x3524 .no_l_eql_etc EQU 0x353B .no_reset EQU 0x0070 .no_rstore EQU 0x31F9 .normalise EQU 0x316C .norml_now EQU 0x3186 .not EQU 0x3501 .not_bin EQU 0x2CB8 .not_used EQU 0x1988 .nu_or_str EQU 0x354E .number EQU 0x18B6 .numeric EQU 0x2D1B .nxt_dgt_1 EQU 0x2CDA .nxt_dgt_2 EQU 0x2D40 .offst_tbl EQU 0x1A48 .oflow_clr EQU 0x3195 .oflw1_clr EQU 0x3146 .oflw2_clr EQU 0x3151 .one EQU 0x386A .one_shift EQU 0x2FE5 .one_space EQU 0x1652 .op_str_lu EQU 0x177A .open EQU 0x1736 .open_1 EQU 0x1756 .open_2 EQU 0x175D .open_3 EQU 0x1767 .open_end EQU 0x178B .open_k EQU 0x1781 .open_p EQU 0x1789 .open_s EQU 0x1785 .or EQU 0x351B .other_str EQU 0x35B7 .out EQU 0x1E7A .out_c_1 EQU 0x18F3 .out_c_2 EQU 0x1909 .out_ch_1 EQU 0x195A .out_ch_2 EQU 0x1968 .out_ch_3 EQU 0x196C .out_char EQU 0x1937 .out_code EQU 0x15EF .out_curs EQU 0x18E1 .out_flash EQU 0x18C1 .out_line1 EQU 0x1865 .out_line2 EQU 0x187D .out_line3 EQU 0x1881 .out_line4 EQU 0x1894 .out_line5 EQU 0x18A1 .out_line6 EQU 0x18B4 .out_line EQU 0x1855 .out_num_1 EQU 0x1A1B .out_num_2 EQU 0x1A28 .out_num_3 EQU 0x1A30 .out_num_4 EQU 0x1A42 .out_sp_1 EQU 0x192B .out_sp_2 EQU 0x1925 .out_sp_no EQU 0x192A .p_beep EQU 0x1AE3 .p_border EQU 0x1AF5 .p_bright EQU 0x1AEE .p_cat EQU 0x1B14 .p_circle EQU 0x1AE7 .p_clear EQU 0x1ABB .p_close EQU 0x1B02 .p_cls EQU 0x1ABE .p_cont EQU 0x1AB8 .p_copy EQU 0x1AD6 .p_data EQU 0x1ACC .p_def_fn EQU 0x1AF9 .p_dim EQU 0x1AA2 .p_draw EQU 0x1AD2 .p_erase EQU 0x1B10 .p_flash EQU 0x1AED .p_for EQU 0x1A90 .p_format EQU 0x1B06 .p_go_sub EQU 0x1A86 .p_go_to EQU 0x1A7D .p_if EQU 0x1A81 .p_ink EQU 0x1AEB .p_input EQU 0x1A9F .p_int_sto EQU 0x2D8C .p_inverse EQU 0x1AEF .p_let EQU 0x1A7A .p_list EQU 0x1AAE .p_llist EQU 0x1ADC .p_load EQU 0x1AE0 .p_lprint EQU 0x1AD9 .p_merge EQU 0x1AE2 .p_move EQU 0x1B0A .p_new EQU 0x1AA8 .p_next EQU 0x1A98 .p_open EQU 0x1AFC .p_out EQU 0x1AF1 .p_over EQU 0x1AF0 .p_paper EQU 0x1AEC .p_pause EQU 0x1AC5 .p_plot EQU 0x1AC1 .p_poke EQU 0x1AB1 .p_print EQU 0x1A9C .p_random EQU 0x1AB5 .p_read EQU 0x1AC9 .p_rem EQU 0x1AA5 .p_restore EQU 0x1ACF .p_return EQU 0x1A8D .p_run EQU 0x1AAB .p_save EQU 0x1ADF .p_stop EQU 0x1A8A .p_verify EQU 0x1AE1 .pass_by EQU 0x1E39 .pause EQU 0x1F3A .pause_1 EQU 0x1F3D .pause_2 EQU 0x1F49 .pause_end EQU 0x1F4F .peek EQU 0x34AC .perm EQU 0x1C96 .pf_all_9 EQU 0x2EB8 .pf_bits EQU 0x2E7B .pf_bytes EQU 0x2E8A .pf_count EQU 0x2F2D .pf_dc_out EQU 0x2F5E .pf_dec_0s EQU 0x2F64 .pf_digits EQU 0x2EA1 .pf_e_frmt EQU 0x2F6C .pf_e_pos EQU 0x2F83 .pf_e_sbrn EQU 0x2F4A .pf_e_sign EQU 0x2F85 .pf_fr_dgt EQU 0x2EEC .pf_fr_exx EQU 0x2EEF .pf_fractn EQU 0x2ECF .pf_frn_lp EQU 0x2EDF .pf_insert EQU 0x2EA9 .pf_large EQU 0x2E56 .pf_loop EQU 0x2E01 .pf_medium EQU 0x2E6F .pf_more EQU 0x2ECB .pf_negtve EQU 0x2DF2 .pf_not_e EQU 0x2F46 .pf_out_dt EQU 0x2F59 .pf_out_lp EQU 0x2F52 .pf_postve EQU 0x2DF8 .pf_r_back EQU 0x2F25 .pf_rnd_lp EQU 0x2F18 .pf_round EQU 0x2F0C .pf_save EQU 0x2E1E .pf_small EQU 0x2E24 .pf_test_2 EQU 0x2EB3 .pixel_add EQU 0x22AA .pl_tst_in EQU 0x22FD .plot EQU 0x22DC .plot_22df EQU 0x22DF ; secondary entry to PLOT .plot_end EQU 0x2303 .plot_loop EQU 0x22F0 .plot_sub EQU 0x22E5 ; the plot subroutine (coords in BC) .po_1_oper EQU 0x0A7A .po_2_oper EQU 0x0A75 .po_able EQU 0x0AD9 .po_any EQU 0x0B24 .po_at_err EQU 0x0AAC .po_at_set EQU 0x0ABF .po_attr EQU 0x0BDB .po_attr_1 EQU 0x0BFA .po_attr_2 EQU 0x0C08 .po_back_1 EQU 0x0A23 .po_back_2 EQU 0x0A38 .po_back_3 EQU 0x0A3A .po_change EQU 0x0A80 .po_char EQU 0x0B65 .po_char_2 EQU 0x0B6A .po_char_3 EQU 0x0B76 .po_comma EQU 0x0A5F .po_cont EQU 0x0A87 .po_each EQU 0x0C22 .po_enter EQU 0x0A4F .po_f_pr EQU 0x0B1D .po_fetch EQU 0x0B03 .po_fill EQU 0x0AC3 .po_gr_1 EQU 0x0B38 .po_gr_2 EQU 0x0B3E .po_gr_3 EQU 0x0B4C .po_msg EQU 0x0C0A .po_quest EQU 0x0A69 .po_right EQU 0x0A3D .po_save EQU 0x0C3B .po_scr EQU 0x0C55 .po_scr_2 EQU 0x0C88 .po_scr_3 EQU 0x0CD2 .po_scr_3a EQU 0x0CF0 .po_scr_4 EQU 0x0D02 .po_scr_4a EQU 0x0D1C .po_scr_4b EQU 0x0D2D .po_search EQU 0x0C41 .po_space EQU 0x0AD0 .po_st_e EQU 0x0AF0 .po_st_pr EQU 0x0AFC .po_step EQU 0x0C44 .po_store EQU 0x0ADC .po_t EQU 0x0B5F .po_t_and_udg EQU 0x0B52 .po_t_udg EQU 0x0B52 .po_tab EQU 0x0AC2 .po_table EQU 0x0C14 .po_tokens EQU 0x0C10 .po_tr_sp EQU 0x0C35 .po_tv_1 EQU 0x0A7D .po_tv_2 EQU 0x0A6D .point_lp EQU 0x22D4 .point_sub EQU 0x22CB .point_sub_22ce EQU 0x22CE ; secondary entry to POINT-SUB .pointers EQU 0x1664 .poke EQU 0x1E80 .pr_all EQU 0x0B7F ; "print all characters" .pr_all_1 EQU 0x0B93 .pr_all_2 EQU 0x0BA4 .pr_all_3 EQU 0x0BB6 .pr_all_4 EQU 0x0BB7 .pr_all_5 EQU 0x0BC1 .pr_all_6 EQU 0x0BD3 .pr_at_tab EQU 0x201E .pr_end_z EQU 0x2045 .pr_item_1 EQU 0x1FFC .pr_item_2 EQU 0x200E .pr_item_3 EQU 0x2024 .pr_posn_1 EQU 0x204E .pr_posn_2 EQU 0x2061 .pr_posn_3 EQU 0x2067 .pr_posn_4 EQU 0x206E .pr_st_end EQU 0x2048 .pr_string EQU 0x203C ; print a string (start in DE, count in BC) .prb_bytes EQU 0x0EE7 .prep_add EQU 0x2F9B .prep_m_or_d EQU 0x30C0 .print EQU 0x1FCD .print_1 EQU 0x1FCF .print_2 EQU 0x1FDF .print_3 EQU 0x1FE5 .print_4 EQU 0x1FF2 .print_a EQU 0x0010 .print_a_2 EQU 0x15F2 .print_cr EQU 0x1FF5 .print_fp EQU 0x2DE3 ; print a floating point number .print_out EQU 0x09F4 .print_string EQU 0x203C .ptr_done EQU 0x167F .ptr_next EQU 0x166B .r_i_store EQU 0x365F .ram_check EQU 0x11DA .ram_done EQU 0x11EF .ram_fill EQU 0x11DC .ram_read EQU 0x11E2 .ram_set EQU 0x1219 .rand_1 EQU 0x1E5A .randomize EQU 0x1E4F .re_entry EQU 0x3365 .re_st_two EQU 0x3293 .re_stack EQU 0x3297 .read EQU 0x1DED .read_1 EQU 0x1E0A .read_2 EQU 0x1E1E .read_3 EQU 0x1DEC .read_in EQU 0x3645 .rec_edit EQU 0x16D4 .reclaim_1 EQU 0x19E5 .reclaim_2 EQU 0x19E8 .rem EQU 0x1BB2 .remove_fp EQU 0x11A7 .report_0 EQU 0x1BB0 .report_1 EQU 0x1DD8 .report_2 EQU 0x1C2E .report_2a EQU 0x0670 .report_3 EQU 0x2A20 .report_4 EQU 0x1F15 .report_5 EQU 0x0C86 .report_6 EQU 0x31AD .report_6b EQU 0x3703 .report_7 EQU 0x1F36 .report_8 EQU 0x15E4 .report_a EQU 0x34E7 .report_ab EQU 0x371A .report_b EQU 0x046C .report_bb EQU 0x1E9F .report_bc EQU 0x24F9 .report_bd EQU 0x35DC .report_c EQU 0x1C8A .report_cb EQU 0x21CE .report_d EQU 0x0D00 .report_da EQU 0x0552 .report_dc EQU 0x0F0A .report_e EQU 0x1E08 .report_fa EQU 0x0642 .report_fb EQU 0x1765 .report_h EQU 0x21D4 .report_i EQU 0x1D84 .report_j EQU 0x15C4 .report_k EQU 0x2244 .report_l EQU 0x1B7B .report_m EQU 0x1EDA .report_n EQU 0x1BEC .report_oa EQU 0x160E .report_ob EQU 0x1725 .report_p EQU 0x2812 .report_q EQU 0x288B .report_r EQU 0x0806 .reserve EQU 0x169E .reset EQU 0x0066 .rest_run EQU 0x1E45 .restk_sub EQU 0x3296 .restore EQU 0x1E42 .result_ok EQU 0x370C .return EQU 0x1F23 .rom_trap EQU 0x1708 .rpt_mesgs EQU 0x1391 .rs_nrmlse EQU 0x32B1 .rs_store EQU 0x32BD .rslt_zero EQU 0x370E .rstk_loop EQU 0x32B2 .run EQU 0x1EA1 .s_2_coord EQU 0x2522 .s_alphnum EQU 0x2684 .s_attr EQU 0x2672 .s_attr_s EQU 0x2580 .s_attr_s_2583 EQU 0x2583 ; secondary entry to S-ATTR-S .s_bracket EQU 0x25E8 .s_cont_1 EQU 0x26DD .s_cont_2 EQU 0x2712 .s_cont_3 EQU 0x2713 .s_decimal EQU 0x268D .s_fn EQU 0x25F5 .s_fn_sbrn EQU 0x27BD .s_ik_dollar_stk EQU 0x2660 .s_ink_dollar_en EQU 0x2665 .s_inkey_dollar EQU 0x2634 .s_letter EQU 0x26C9 .s_loop EQU 0x2734 .s_loop_1 EQU 0x24FF .s_loopend EQU 0x2770 .s_negate EQU 0x26DF .s_next EQU 0x2790 .s_no_to_string EQU 0x2707 .s_not_and EQU 0x2788 .s_numeric EQU 0x26C3 .s_opertr EQU 0x2723 .s_pi EQU 0x2627 .s_pi_end EQU 0x2630 .s_point EQU 0x267B .s_push_po EQU 0x270D .s_q_again EQU 0x25BE .s_q_copy EQU 0x25CB .s_q_prms EQU 0x25D9 .s_quote EQU 0x25B3 .s_quote_s EQU 0x250F .s_rnd EQU 0x25F8 .s_rnd_end EQU 0x2625 .s_rport_c2 EQU 0x2761 .s_rport_c EQU 0x252D .s_runtest EQU 0x2764 .s_sc_mtch EQU 0x255A .s_sc_rows EQU 0x255D .s_scr_nxt EQU 0x2573 .s_scr_sto EQU 0x257D .s_screen_dollar EQU 0x2668 .s_scrn_dollar_s EQU 0x2535 .s_scrn_lp EQU 0x254F .s_scrn_s EQU 0x2535 .s_scrn_s_2538 EQU 0x2538 ; secondary entry to S-SCRN$-S .s_sd_skip EQU 0x26B6 .s_stk_dec EQU 0x26B5 .s_stk_lst EQU 0x274C .s_string EQU 0x25DB .s_syntest EQU 0x275B .s_tighter EQU 0x2773 .s_u_plus EQU 0x25AF .sa_1_sec EQU 0x0991 .sa_8_bits EQU 0x0525 .sa_all EQU 0x075A ; tape save/load .sa_bit_1 EQU 0x0514 .sa_bit_2 EQU 0x0511 .sa_blank EQU 0x0629 .sa_bytes EQU 0x04C2 .sa_code EQU 0x06C3 .sa_code_1 EQU 0x06E1 .sa_code_2 EQU 0x06F0 .sa_code_3 EQU 0x06F5 .sa_code_4 EQU 0x06F9 .sa_contrl EQU 0x0970 .sa_data EQU 0x0652 .sa_data_1 EQU 0x0692 .sa_delay EQU 0x053C .sa_flag EQU 0x04D0 .sa_leader EQU 0x04D8 .sa_line EQU 0x0716 .sa_line_1 EQU 0x0723 .sa_loop EQU 0x04FE .sa_loop_p EQU 0x0505 .sa_name EQU 0x064B .sa_null EQU 0x0644 .sa_or_ld_end EQU 0x0554 .sa_or_ld_ret EQU 0x053F .sa_out EQU 0x051C .sa_parity EQU 0x050E .sa_scr_dollar EQU 0x06A0 .sa_set EQU 0x051A .sa_space EQU 0x0621 .sa_start EQU 0x0507 .sa_sync_1 EQU 0x04EA .sa_sync_2 EQU 0x04F2 .sa_type_0 EQU 0x073A .sa_type_3 EQU 0x0710 .sa_v_new EQU 0x0685 .sa_v_old EQU 0x0672 .sa_v_type EQU 0x068F .save_etc EQU 0x0605 .scan_ent EQU 0x336C .scan_func EQU 0x2596 .scan_loop EQU 0x1B52 .scanning EQU 0x24FB .scrl_mssg EQU 0x0CF8 .sec_plus EQU 0x3575 .secnd_low EQU 0x356B .separator EQU 0x1B6F .series_xx EQU 0x3449 .set_de EQU 0x1195 .set_hl EQU 0x1190 .set_min EQU 0x16B0 .set_permanent_colors_0x1CAD EQU 0x1CAD ; special entry point .set_permanent_colors_1CAD EQU 0x1CAD ; special entry point .set_stk EQU 0x16C5 .set_work EQU 0x16BF .sf_arg_lp EQU 0x2843 .sf_arg_vl EQU 0x2852 .sf_argmt1 EQU 0x2802 .sf_argmts EQU 0x27D9 .sf_brkt_1 EQU 0x27D0 .sf_brkt_2 EQU 0x27E4 .sf_cp_def EQU 0x2814 .sf_flag_6 EQU 0x27E9 .sf_fnd_df EQU 0x2808 .sf_not_fd EQU 0x2825 .sf_r_br_2 EQU 0x2885 .sf_rprt_c EQU 0x27E6 .sf_run EQU 0x27F7 .sf_syn_en EQU 0x27F4 .sf_value EQU 0x288D .sf_values EQU 0x2831 .sfa_cp_vr EQU 0x296B .sfa_end EQU 0x2991 .sfa_loop EQU 0x295A .sfa_match EQU 0x2981 .sgn EQU 0x3492 .shift_fp EQU 0x2FDD .shift_len EQU 0x3055 .shift_one EQU 0x316E .sign_done EQU 0x2CFE .sign_flag EQU 0x2CF2 .sign_to_c EQU 0x3507 .sin EQU 0x37B5 .skip_cons EQU 0x33F7 .skip_next EQU 0x33F8 .skip_over EQU 0x007D .skip_zero EQU 0x315E .skips EQU 0x0090 .sl_define EQU 0x2A94 .sl_over EQU 0x2AA8 .sl_rpt_c EQU 0x2A7A .sl_second EQU 0x2A81 .sl_store EQU 0x2AAD .slicing EQU 0x2A52 .small EQU 0x37F8 .spare EQU 0x386E .sqr EQU 0x384A .st_e_part EQU 0x2CFF .st_mem_xx EQU 0x342D .stack_a EQU 0x2D28 .stack_bc EQU 0x2D2B ; stack BC register pair .stack_fetch EQU 0x2BF1 ; get last value from calculator stack .stack_num EQU 0x33B4 .start EQU 0x0000 .start_new EQU 0x11CB .stk_code EQU 0x3671 .stk_const EQU 0x33C8 .stk_const_xx EQU 0x341B .stk_data EQU 0x33C6 .stk_digit EQU 0x2D22 .stk_f_arg EQU 0x2951 .stk_fetch EQU 0x2BF1 .stk_pntrs EQU 0x35BF .stk_st_0 EQU 0x2AB1 .stk_sto_string EQU 0x2AB2 .stk_store EQU 0x2AB6 .stk_to_a EQU 0x2314 .stk_to_bc EQU 0x2307 .stk_var EQU 0x2996 .stk_zeros EQU 0x33F1 .stmt_l_1 EQU 0x1B29 .stmt_loop EQU 0x1B28 .stmt_next EQU 0x1BF4 .stmt_r_1 EQU 0x1B7D .stmt_ret EQU 0x1B76 .stop EQU 0x1CEE .str_alter EQU 0x2070 .str_and_no EQU 0x352D .str_data1 EQU 0x1727 .str_data EQU 0x171E .str_dollar EQU 0x361F .str_test EQU 0x3588 .strings EQU 0x3559 .strs_add EQU 0x359C .strt_mlt EQU 0x3125 .subn_only EQU 0x31F2 .subtract EQU 0x300F .sv_arrays EQU 0x29AE .sv_ch_add EQU 0x29E0 .sv_close EQU 0x29D8 .sv_comma EQU 0x29C3 .sv_count EQU 0x29E7 .sv_dim EQU 0x2A48 .sv_elem_string EQU 0x2A2C .sv_loop EQU 0x29EA .sv_mult EQU 0x29FB .sv_number EQU 0x2A22 .sv_ptr EQU 0x29C0 .sv_rpt_c EQU 0x2A12 .sv_simple_string EQU 0x29A1 .sv_slice EQU 0x2A45 .sv_slice? EQU 0x2A49 .swap_byte EQU 0x343E .syntax_z EQU 0x2530 .t_expnent EQU 0x326C .t_first EQU 0x3233 .t_gr_zero EQU 0x3221 .t_numeric EQU 0x3252 .t_shift EQU 0x3261 .t_small EQU 0x323F .t_store EQU 0x3267 .t_test EQU 0x325E .tan EQU 0x37DA .tape_msgs EQU 0x09A1 .tbl_addrs EQU 0x32D7 .tbl_of_ops EQU 0x2795 .tbl_priors EQU 0x27B0 .temp_ptr1 EQU 0x0077 .temp_ptr2 EQU 0x0078 .temps EQU 0x0D4D ; copy the permanent color items to the temporary ones .temps_1 EQU 0x0D5B .temps_2 EQU 0x0D65 .test_5_sp EQU 0x33A9 .test_char EQU 0x001C .test_neg EQU 0x307C .test_norm EQU 0x3155 .test_room EQU 0x1F05 .test_zero EQU 0x34E9 .tkn_table EQU 0x0095 .to_power EQU 0x3851 .truncate EQU 0x3214 .two_p_1 EQU 0x1E8E .two_param EQU 0x1E85 .unstack_z EQU 0x1FC3 .use_252 EQU 0x2495 .use_zero EQU 0x1CE6 .usr_no EQU 0x34B3 .usr_range EQU 0x34D3 .usr_stack EQU 0x34E4 .usr_string EQU 0x34BC .v_80_byte EQU 0x2932 .v_char EQU 0x28D4 .v_each EQU 0x2900 .v_end EQU 0x294B .v_found_1 EQU 0x293E .v_found_2 EQU 0x293F .v_get_ptr EQU 0x2929 .v_matches EQU 0x2912 .v_next EQU 0x292A .v_pass EQU 0x2943 .v_rport_c EQU 0x360C .v_run EQU 0x28FD .v_run_or_syn EQU 0x28EF .v_spaces EQU 0x2913 .v_str_var EQU 0x28DE .v_syntax EQU 0x2934 .v_test_fn EQU 0x28E3 .val_dollar EQU 0x35DE .val_fet_1 EQU 0x1C56 .val_fet_2 EQU 0x1C59 .valid EQU 0x371C .var_a_1 EQU 0x1C22 .var_a_2 EQU 0x1C30 .var_a_3 EQU 0x1C46 .vr_cont_1 EQU 0x07E9 .vr_cont_2 EQU 0x07F4 .vr_cont_3 EQU 0x0800 .vr_contrl EQU 0x07CB .wait_key1 EQU 0x15DE .wait_key EQU 0x15D4 .x_large EQU 0x326D .x_neg EQU 0x36B7 .xis0 EQU 0x385D .yneg EQU 0x37A8 .zero_rslt EQU 0x315D .zeros_4_or_5 EQU 0x2FFB .zplus EQU 0x37A1 .zx81_name EQU 0x04AA ; ZX Spectrum 128K .ROM_SWAP EQU 0x5B00 ; 128K paging subroutine in RAM ._128_new EQU 0x0057