<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://bbcbasic.net/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://bbcbasic.net/wiki/feed.php">
        <title>BBC BASIC Programmers' Reference</title>
        <description></description>
        <link>https://bbcbasic.net/wiki/</link>
        <image rdf:resource="https://bbcbasic.net/wiki/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-04-14T11:03:22+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=3d_object_order_can_matter&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=accessing_20files_20with_20no_20extension&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=accessing_20huge_20files&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=accessing_20the_20fast_20sys_20interface&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=accessing_20the_20shell_20clipboard&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=accessing_20two_20joysticks&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=adding_20_27create_20new_20bbc_20basic_20program_20file_27_20to_20the_20shell_20new_20menu&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=adding_20an_20event_20to_20the_20event_20queue&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=adding_20an_20up-down_20control_20to_20the_20main_20window&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=adding_20tooltips_20to_20a_20dialogue_20box&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=adding_20tooltips_20to_20the_20status_20bar&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=aliasing_20strings_20and_20byte_20arrays&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=aligning_20structures&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=allocating_20arrays_20using_20the_20windows_20api&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=allocating_20item_20ids_20automatically&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=allocating_and_freeing_memory_blocks&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=alternative_20comment_20styles&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=alternative_20for_20next_20behaviour&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=alternative_20pseudo-random_20numbers&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=arabic_20text_20on_20the_20mainwin_20and_20printer_20_28lbb_29&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=array_20arithmetic&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=arrays_20of_20structures_20_28lbb_29&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=assembler&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=associating_20an_20application_20with_20a_20file_20type&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=associating_20an_20application_20with_20an_20extension_20_28lbb_29&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=asynchronous_20speech&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=automating_20mouse_20actions&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=avoiding_20resource_20leaks&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=bbc_20basic_20language&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=calling_20basic_20from_20assembler_20code&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=calling_20dll_20functions_20that_20return_20strings&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=calling_20dlls_20that_20return_20floats&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=calling_20internal_20routines_20from_20assembler_20code&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=calling_20object_20methods_20using_20structures&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=capturing_20audio_20using_20mci&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=capturing_20the_20contents_20of_20a_20window&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=cascaded_20error_20handling&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=cascaded_20on_20close_20handling&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=centering_20the_20graphics_20origin&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20a_20control_27s_20colours&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20case_20of_20a_20string&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20document_20name&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20font_20of_20a_20control&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20mdi_20background_20colour&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20mouse_20speed&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20serial_20buffer_20size&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20step_20size_20of_20an_20up-down_20control&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=checking_20if_20a_20library_20is_20installed&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=checking_20whether_20a_20directory_20exists&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=clearing_20the_20contents_20of_20a_20structure&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=coding_20the_20pause_20instruction&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=colored_20text_20in_20the_20mainwin&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=colour_20text_20in_20a_20list_20view&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=commented_20example_20programs&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=commenting_20library_20code&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=communication_20and_20input-output&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=comparing_20arrays_20for_20equality&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=compatibility_20with_20wine_20_28lbb_29&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=compatibility_20with_20wine&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=component_20object_20model_20programming&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20audio_20mixer&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20master_20volume&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20windows_20taskbar&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_20a_20number_20to_20a_20string&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_20binary_20coded_20decimal&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_20binary_20to_20bcd&amp;rev=1704414141&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_20graphics_20coordinates&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_20islamic_20dates&amp;rev=1704414139&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_20programs_20from_20risc_20os_20to_20windows&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=converting_2040-bit_20floats_20to_2064-bit_20floats&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=copy_20key_20functionality_20with_20get_20and_20inkey&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=counting_20the_20characters_20in_20a_20unicode_20string&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20chm_20version_20of_20the_20lb_20help_20files&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20custom_20graphics_20control&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20dialogue_20box_20from_20a_20resource&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20globally_20unique_20identifier&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20keyboard_20accelerator_20table_20from_20a_20resource&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20menu_20from_20a_20resource&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20png_20file_20from_20a_20windows_20icon&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20rebar_20control&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20shortcut&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20tab_20control&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20an_20animation_20control&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20an_20array_20alias&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20child_20controls_20in_20a_20loop&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20function_20key_20macros&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20pdf_20files&amp;rev=1704414137&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=creating_20temporary_20files_20and_20directories&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=customising_20the_20browse_20for_20folder_20dialogue&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=data_20without_20data&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=database_20and_20files&amp;rev=1720269746&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=date_20formatting_20extended_20functionality&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=debugging_20techniques_20_28lbb_29&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=deconstructing_20arrays&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=detecting_20a_20second_20instance_20of_20a_20program&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=detecting_20when_20a_20menu_20is_20open&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=determining_20how_20a_20macro_20was_20run&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=determining_20if_20the_20user_20is_20an_20administrator&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=detokeniser&amp;rev=1704414138&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=direct_20screen_20memory_20access&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=direct3d_2011_20tutorials&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=disabling_20_27sticky_20key_27_20action_20of_20shift&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=disabling_20the_20close_20button&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=discovering_20how_20a_20program_20was_20run&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=discovering_20the_20system_20power_20status&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20jpeg_20or_20gif_20in_20a_20picture_20box&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20png_20or_20tiff_20image&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20tooltip_20on_20demand_20_28lbb_29&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20tooltip_20on_20demand&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20an_20icon_20on_20a_20pushbutton&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20animated_20gifs&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20inverse_20video&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20program_20errors_20in_20a_20message_20box&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20unicode_20text_20in_20a_20control&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=displaying_20unicode_20text_20in_20a_20graphicbox&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=distributing_20crunched_20libraries&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=dlls_20compatible_20with_20lbb&amp;rev=1704653145&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=docking_20a_20dialogue_20box_20on_20the_20toolbar&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=downloading_20a_20file_20from_20a_20url&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=drawing_20a_20transparent_20bitmap&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=drawing_20outside_20the_20window&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=drawing_20text_20with_20a_20translucent_20dropshadow&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=drawing_rounded_rectangles&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=drawing_to_an_in-memory_bitmap_texture&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=effect_20of_20get_20and_20input_20on_20event_20handling&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=effect_20of_20menu_20bar_20on_20window_20size&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=ejecting_20a_20removable_20disk&amp;rev=1704414132&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=embedding_20resources_20in_20different_20folders&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=emulating_20the_20c_20assignment_20function&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=enabling_20word-wrap_20in_20a_20texteditor_20_28lbb_29&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=encoding_20text_20into_20base64&amp;rev=1704414129&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=enumerating_20serial_20ports&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=enumerating_20the_20installed_20printers&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=example_20property_20sheet&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=exceeding_20the_20limit_20of_208_20open_20files&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=extracting_20a_20file_27s_20thumbnail&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=faking_20keyboard_20input&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=fast_variables&amp;rev=1704414136&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=fetching_20a_20secure_20web_20page&amp;rev=1742742819&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=filenames_20containing_20spaces&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20drive_20serial_20numbers&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20application_20associated_20with_20an_20extension&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20bbc_20basic_20installation_20directory&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20cpu_20usage&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20current_20user_20name&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20default_20national_20language&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20free_20space_20on_20a_20disk&amp;rev=1704414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20host_20ip_20address&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20iso_20week_20number&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20last_20character_20read_20from_20a_20file&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20mac_20address&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20mime_20type_20of_20a_20file&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20modulus_20of_20part_20of_20an_20array&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20parity_20of_20a_20number&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20partial_20sum_20of_20an_20array&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20size_20of_20an_20array_20in_20a_20structure&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20version_20number&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20which_20items_20are_20selected_20in_20a_20list_20view&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_20which_20window_20has_20input_20focus&amp;rev=1704414127&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_image_file_dimensions&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=finding_sum_mod_partial_array&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=fitting_20programs_20in_20the_20demo_20version&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=fixing_20a_20bad_20library_20error&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=flushing_20file_20buffers&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=forcing_20a_20variable_20to_20exist&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=format&amp;rev=1704414140&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=fscale&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=generating_20pseudo-random_20numbers&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=getting_20connected_20and_20online&amp;rev=1704414126&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=getting_20the_20current_20line_20number&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=getting_20the_20current_20voice&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=getting_20the_20user_20idle_20time&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=graphics_20and_20games&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=guide_20to_20writing_20libraries&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=handling_20unsigned_2032-bit_20values&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=handling_20very_20large_20numbers_20without_20using_20scientific_20notation&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=hiding_20a_20window_20from_20a_20screenshot&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=hiding_20confidential_20data&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=high_20quality_20hardcopy_20output_20_28lbb_29&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=high_20quality_20random_20number_20generation&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=home&amp;rev=1704414133&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=how_20to_20avoid_20gotos&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=how_20to_20display_20a_20hex_20dump_20of_20memory_20contents&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=hyperbolic_functions_lbb&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=hyperbolic_functions&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=hyperlinks_20in_20text_20boxes&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=improving_20the_20print_20quality&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=incorporating_20bookmarks_20in_20a_20program&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=inputting_20real-time_20audio&amp;rev=1713548621&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=inserting_20characters_20into_20the_20keyboard_20buffer&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=installing_20both_20demo_20and_20full_20versions&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=installing_20under_20wine&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=interpreter_20internal_20variables&amp;rev=1729540953&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=interrogating_20the_20audio_20mixer&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=islamic_20calendar_20conversion_20_28lbb_29&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=lambdas_anonymous_functions&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=large_20fonts_20and_20the_20text_20cursor&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=lb_20booster&amp;rev=1704414134&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=libraries&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=limiting_20the_20size_20of_20a_20window&amp;rev=1704414125&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=linked_20lists_20using_20structures&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=list_20view_20with_20header_20tooltips&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=list_20view_20with_20tooltips&amp;rev=1704414124&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20available_20voices&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20drives_20and_20types&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20files_20on_20an_20ftp_20server&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20other_20windows_20and_20applications&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20processes&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20contents_20of_20a_20directory_20_28unicode_29&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20contents_20of_20a_20directory&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20line_20an_20error_20occurs_20in_20on_20error&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20midi_20output_20devices&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=loading_20a_20bbc_20micro_20style_20bitmap&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=loading_20a_20gif_20or_20jpeg_20image&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=loading_20a_20png_20or_20tiff_20image&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=loading_20bfont_20files&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=lowering_himem_proc_fn&amp;rev=1720269608&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=making_20a_20text_20window_20read-only_20_28lbb_29&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=making_20the_20title_20bar_20opaque_20_28lbb_29&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=manipulating_20filenames_20and_20pathnames&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=manual&amp;rev=1704414135&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=marking_20up_20bbc_20basic_20program_20code&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=marquee_20style_20progress_20bar_20_28win_20xp_20and_20above_29&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=memory_20usage_20monitor&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=minimizing_20sound_20clicks&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=modulo_20integer_20arithmetic&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=moving_20the_20cursor_20in_20an_20edit_20control&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=multi-column_20list_20boxes&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=multi-page_20graphics&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=multiple_20file_20operations&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=non-integer_20modulo_20operation&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=non-rectangular_20windows&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=notes_20for_20risc_20os_20users&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=notes_20on_20the_20use_20of_20rnd&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=number_20conversion_20in_20basic&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=object_20orientated_20programming&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=object_20oriented_20programming_20_28lbb_29&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=on_20screen_20keyboard&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=opengl_20programming&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20by_20dropping_20or_20clicking&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20by_20dropping_20or_20right-clicking&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20in_20a_20specified_20application&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=opening_20serial_20ports_20above_20com9&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=operating_20system&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=optimising_20integer_20division&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=outputting_20arabic_20text&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=outputting_20real-time_20audio&amp;rev=1713548434&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=outputting_20speech_20to_20a_20file&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=outputting_20text_20with_20word-wrap&amp;rev=1704414123&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=overcoming_20the_20memory_20limit&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=palette_20animation&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=passing_20array_20and_20structure_20parameters&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=passing_20arrays_20to_20subs_20and_20functions&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=passing_20data_20to_20assembler_20code&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=passing_20floating-point_20values_20to_20dlls&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=passing_20substructures_20to_20procedures&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=pausing_20and_20resuming_20midi_20playback&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=pausing_20under_20program_20control&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=permutations&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20a_20media_20file_20using_20direct_20show&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20arpeggio&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20avi_20file&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20mp3_20file_20_28lbb_29&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20mp3_20file&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20multiple_20wav_20files&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=playing_20part_20of_20a_20wav_20file&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=point-in-polygon_20hit_20testing&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=preventing_20a_20library_20from_20being_20run&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=preventing_20structure_20member_20names_20being_20crunched&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=preventing_20the_20_27downloaded_20file_27_20warning&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=printing_20a_20program_20containing_20unicode_20strings&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=printing_20strings&amp;rev=1704414122&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=printing_20the_20output_20from_20a_20program&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=profiler_20utility&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=program_20editor_20and_20ide&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=prompting_20for_20admin_20rights&amp;rev=1704414119&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=pseudo-variable_20side_20effects&amp;rev=1704414118&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=putting_20an_20image_20on_20the_20clipboard&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=qbasic-compatible_20music&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=quad-precision_20multiplication&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=querying_20the_20dns&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=queueing_20event_20interrupts&amp;rev=1704414117&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=re-dimensioning_20arrays&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20a_20shortcut&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20.ini_20data_20files&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20arrays_20in_20files&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20csv_20files&amp;rev=1771076750&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20nonstandard_20values&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20plain_20text_20files&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20environment_20variables&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20rss_20feeds&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20the_20exit_20code_20of_20a_20dos_20utility&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reading_20the_20palette_20contents&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=receiving_20dropped_20files&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=redim_20preserve&amp;rev=1704414120&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=redirecting_20the_20vdu_20commands_20to_20a_20sprite&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=replacing_20the_20message_20pump&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=responding_20to_20a_20hot_20key&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=responding_20to_20mouse_20double-clicks&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=returning_20an_20array_20from_20a_20function&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=returning_20errors_20from_20windows_20commands&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=reversing_20a_20string&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=right-click_20context_20menu&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=rounding_20functions&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=running_a_bas_file_from_the_command_prompt&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sandbox&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=saturation_arithmetic&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20gif_20image&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20jpeg_20image&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20png_20image&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20tiff_20image&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=saving_20previous_20load_20and_20save_20paths&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=scanning_20a_20directory_20_28reading_20directory_20entries_29&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=scrollable_20list_20boxes&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=scrolling_20a_20list_20box&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=scrolling_20over_20a_20large_20canvas&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=searching_20ordered_20lists&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=selecting_20a_20font_20by_20pixel_20height&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=selecting_20and_20copying_20using_20the_20mouse&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=selecting_20draft_20print_20quality&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=selecting_20multiple_20files&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20a_20serial_20break&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20an_20email_20automatically&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20an_20email_20with_20attachments&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20an_20html_20email_20with_20optional_20attachments&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20and_20receiving_20midi_20data&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20image_20files_20to_20the_20printer&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_20raw_20data_20to_20a_20printer&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sending_midi_data_linux&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=setting_20an_20edit_20box_20cue_20banner&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=setting_20speech_20parameters&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=setting_20the_20desktop_20wallpaper&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=setting_20the_20focus_20in_20a_20dialogue_20box&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=setting_20the_20position_20of_20the_20file_20open_20dialogue&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sharing_20a_20structure_20between_20processes&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sharing_20private_20variables&amp;rev=1751580810&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=short-circuit_20evaluation&amp;rev=1704414116&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=shutting_20down_20the_20pc&amp;rev=1704414115&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sidebar&amp;rev=1704414131&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simd_20signum_20function&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simple_20list_20box&amp;rev=1704414113&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simple_20registry_20usage&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simple_20terminal_20program&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simplifying_20arithmetic_20using_20strings&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20modal_20dialogue_20box&amp;rev=1704414114&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20union_20_28lbb_29&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20union&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simulating_20assembler_20macros&amp;rev=1704414112&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simulating_20continue&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=simulating_20resume_20and_20resume_20next&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sorting_20arrays_20of_20structures&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sorting_20the_20characters_20in_20a_20string&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sound_2c_20music_20and_20video&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sound_20and_20envelope_20in_20assembler&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=space.menu&amp;rev=1704414121&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=speaking_20the_20contents_20of_20a_20file&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=speech_20recognition_20_28shared_29&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=speech_20synthesis_20_28lbb_29&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=speeding_20up_20graphics_20plotting&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sprites_20in_20multiple_20windows_20_28lbb_29&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sqlite_20example_20program_20_28phonenos_29&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=stacks_20using_20structures&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=start&amp;rev=1704414130&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=storing_20structures_20containing_20strings&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=storing_20structures_20in_20files&amp;rev=1705099581&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=structured_20exception_20handling&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=sub-structure_arrays&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=substituting_20characters_20in_20a_20string&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=summing_20part_20of_20an_20array&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=supporting_20different_20dpi_20values&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=swapping_20the_20contents_20of_20two_20areas_20of_20memory&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=swapping_20the_20mouse_20buttons&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=switching_20back_20from_20full-screen&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=synchronizing_20with_20video_20refresh&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=the_20atan2_20function&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=the_20extended_20combobox&amp;rev=1704414105&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=the_20graphics_20screen&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=three_or_more_pass_assembly&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tokeniser&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tools_20and_20utilities&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tooltips_20on_20the_20main_20output_20window&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=torus2&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_201_20-_20_20direct3d_2011_20basics&amp;rev=1704414111&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_202_20-_20rendering_20a_20triangle&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_203_20-_20shaders_20and_20effect_20system&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_204_20-_203d_20spaces&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_205_20-_203d_20transformation&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_206_20-_20lighting&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorial_207_20-_20texture_20mapping_20and_20constant_20buffers&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=tutorials&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=unicode_20filenames&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=uploading_20files_20to_20an_20ftp_20server&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=user_20interface_20and_20windows_20api&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=user_20interface&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20a_20pager_20control&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20an_20atl_20container_20control&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20array_20pointers&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20callback_20functions&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20data_20statements_20in_20libraries&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20larger_20colour_20palettes&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20lbb_20with_20liberty_20basic_20workshop&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20non-standard_20mouse_20pointers&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20openin_20_28etc._29_20with_20wildcards&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20regular_20expressions&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20rich_20edit_20controls&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20sound_20with_20true_20frequencies&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20sse2_20instructions&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20supplied_20example_20files&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20built-in_20program_20cruncher&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20date_20and_20time_20picker&amp;rev=1704414105&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20entire_20desktop_20area&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20eventlib_20library&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20fscale_20instruction&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20internal_20speaker&amp;rev=1704414110&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20the_20lea_20instruction&amp;rev=1704414107&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_20transparent_20windows&amp;rev=1704414106&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_28_29_20format_20extended_20functionality&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_2016-bit_20floating_20point_20values&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_2032-bit_20floating_20point_20values&amp;rev=1704414109&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=using_serial_ports_in_linux&amp;rev=1704414105&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=variable_length_array_structure&amp;rev=1720286251&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=verbose_20error_20messages&amp;rev=1704414104&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=waiting_20for_20an_20external_20program_20to_20terminate&amp;rev=1704414103&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=when_20and_20when_20not_20to_20use_20_2acd&amp;rev=1704414103&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=whole-array_20operations_20in_20structures&amp;rev=1704414103&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=writing_20console_20mode_20programs_20that_20will_20also_20run_20in_20the_20ide&amp;rev=1704414103&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=writing_20graphics_20to_20the_20printer&amp;rev=1704414103&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=writing_20log_20files&amp;rev=1704414108&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=writing_20to_20the_20screen_20using_20the_20windows_20api&amp;rev=1704414103&amp;do=diff"/>
                <rdf:li rdf:resource="https://bbcbasic.net/wiki/doku.php?id=writing_20to_20vdu_20variables&amp;rev=1704414103&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://bbcbasic.net/wiki/lib/tpl/dokuwiki/images/favicon.ico">
        <title>BBC BASIC Programmers' Reference</title>
        <link>https://bbcbasic.net/wiki/</link>
        <url>https://bbcbasic.net/wiki/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=3d_object_order_can_matter&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>3d_object_order_can_matter</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=3d_object_order_can_matter&amp;rev=1704414141&amp;do=diff</link>
        <description>3D object order can matter

by Richard Russell, November 2018

One would not expect the order in which 3D objects are specified (i.e. the order in which they are listed in the arrays passed to PROC_render) to matter - after all the GPU has to plot them in Z-order anyway to ensure that foreground objects occlude background objects. However there appears to be an important exception when it comes to objects with transparent (or partially transparent) textures.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=accessing_20files_20with_20no_20extension&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>accessing_20files_20with_20no_20extension</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=accessing_20files_20with_20no_20extension&amp;rev=1704414141&amp;do=diff</link>
        <description>Accessing files with no extension

by Jon Ripley, May 2006

 When using OPENIN, OPENUP and OPENOUT to create or access files that do not have a file extension the default action of BBC BASIC is to append a .bbc file extension. To create or access files with no file extension you must add a full stop to the file name.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=accessing_20huge_20files&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>accessing_20huge_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=accessing_20huge_20files&amp;rev=1704414141&amp;do=diff</link>
        <description>Accessing huge files

by Richard Russell, October 2007

 Most of the BBC BASIC for Windows file-handling statements and functions are fully compatible with files in excess of 2 Gbytes (2^31 bytes) in length. You can successfully open (using OPENIN or</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=accessing_20the_20fast_20sys_20interface&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>accessing_20the_20fast_20sys_20interface</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=accessing_20the_20fast_20sys_20interface&amp;rev=1704414141&amp;do=diff</link>
        <description>Accessing the fast SYS interface

by Jon Ripley, July 2006

 The SYS statement allows you to call functions in the following DLLs (Dynamic Link Libraries) by name. Functions in all other DLLs must be called by their address in memory.

	*  ADVAPI32.DLL</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=accessing_20the_20shell_20clipboard&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>accessing_20the_20shell_20clipboard</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=accessing_20the_20shell_20clipboard&amp;rev=1704414140&amp;do=diff</link>
        <description>Accessing the Shell Clipboard

by Richard Russell, October 2010

Windows Explorer lets you copy files from one place in the filesystem to another (e.g. from one folder to another, or from one drive to another) by means of Copy and Paste operations, analogous to how you might copy-and-paste text from one document to another. This article describes how you can access the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=accessing_20two_20joysticks&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>accessing_20two_20joysticks</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=accessing_20two_20joysticks&amp;rev=1704414140&amp;do=diff</link>
        <description>Accessing two joysticks

by Richard Russell, April 2007

 The BBC BASIC ADVAL statement allows you to access only one joystick. If you need to access two joysticks you can do that using the Windows API. The procedure below allows you to read the X, Y, Z and</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=adding_20_27create_20new_20bbc_20basic_20program_20file_27_20to_20the_20shell_20new_20menu&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adding_20_27create_20new_20bbc_20basic_20program_20file_27_20to_20the_20shell_20new_20menu</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=adding_20_27create_20new_20bbc_20basic_20program_20file_27_20to_20the_20shell_20new_20menu&amp;rev=1704414140&amp;do=diff</link>
        <description>Adding 'Create new BBC BASIC program file' to the Shell new menu

by Jon Ripley, July 2007

 This article shows how to add an option in to the file explorer Shell new menu to create a new BBC BASIC for Windows program file.

 To do this manually run the registry editor and navigate to:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=adding_20an_20event_20to_20the_20event_20queue&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adding_20an_20event_20to_20the_20event_20queue</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=adding_20an_20event_20to_20the_20event_20queue&amp;rev=1704414140&amp;do=diff</link>
        <description>Adding an event to the event queue

by Richard Russell, August 2014

 Normally, event interrupts (e.g. ON MOUSE, ON MOVE, ON SYS and ON TIME) take place as a result of user actions such as mouse clicks, menu selections, moving/re-sizing a window or (in the case of ON TIME) periodically. The events are initially added to a 32-event FIFO queue, and then automatically dispatched to the specified BASIC handler routine (if any).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=adding_20an_20up-down_20control_20to_20the_20main_20window&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adding_20an_20up-down_20control_20to_20the_20main_20window</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=adding_20an_20up-down_20control_20to_20the_20main_20window&amp;rev=1704414139&amp;do=diff</link>
        <description>Adding an up-down control to the main window

by Richard Russell, May 2006

 The BB4W help documentation describes how to add an up-down control to a dialogue box here but doesn't tell you how to add one to the main output window.

 The code below illustrates the creation of an up-down control which is 'attached' to an edit box, which is the usual way in which one is used. First install the necessary library:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=adding_20tooltips_20to_20a_20dialogue_20box&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adding_20tooltips_20to_20a_20dialogue_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=adding_20tooltips_20to_20a_20dialogue_20box&amp;rev=1704414139&amp;do=diff</link>
        <description>Adding tooltips to a dialogue box

by Richard Russell and Howard Bolton, May 2006

 Tooltips are small (usually light yellow) windows containing useful information, which pop up when you 'hover' the mouse over a particular control or region of the screen. This article describes how you can add tooltips to a dialogue box; there are other articles for adding tooltips to a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=adding_20tooltips_20to_20the_20status_20bar&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adding_20tooltips_20to_20the_20status_20bar</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=adding_20tooltips_20to_20the_20status_20bar&amp;rev=1704414139&amp;do=diff</link>
        <description>Adding tooltips to the status bar

by Richard Russell, January 2007

 If your program uses the WINLIB library to create a toolbar then you can easily add tooltips to the toolbar buttons using the PROC_addtooltips function provided. However if you use the same library to create a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=aliasing_20strings_20and_20byte_20arrays&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>aliasing_20strings_20and_20byte_20arrays</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=aliasing_20strings_20and_20byte_20arrays&amp;rev=1704414139&amp;do=diff</link>
        <description>Aliasing strings and byte arrays

by Richard Russell, March 2014

BBC BASIC provides two data types in which you can store a set of byte (8-bit, or character) values: one is the string (for example A$) and the other is the byte array (for example A&amp;()</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=aligning_20structures&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>aligning_20structures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=aligning_20structures&amp;rev=1704414139&amp;do=diff</link>
        <description>Aligning structures

by Richard Russell, June 2010

 BBC BASIC's structures are by default aligned on a DWORD boundary, i.e. the memory address of the first member of the structure will always be an exact multiple of four. This is a requirement for some structures passed to Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=allocating_20arrays_20using_20the_20windows_20api&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>allocating_20arrays_20using_20the_20windows_20api</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=allocating_20arrays_20using_20the_20windows_20api&amp;rev=1704414139&amp;do=diff</link>
        <description>Allocating arrays using the Windows or SDL 2.0 API

by Richard Russell, December 2006

 You can allocate arrays, using DIM, either on BASIC's heap (global and PRIVATE arrays) or on the stack (LOCAL arrays). Using a combination of these will satisfy the needs of most programs. For example a skeleton program might be structured as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=allocating_20item_20ids_20automatically&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>allocating_20item_20ids_20automatically</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=allocating_20item_20ids_20automatically&amp;rev=1704414138&amp;do=diff</link>
        <description>Allocating item IDs automatically

by Michael Hutton, June 2010; amended by Richard Russell

 Whenever menu items are created (and this also applies to controls within a dialog box for example) you must assign each of them a unique ID. For example:

 
        SYS &quot;AppendMenu&quot;, hmenu%, 0, 100, &quot;Menu Item&amp;1&quot;
        SYS &quot;AppendMenu&quot;, hmenu%, 0, 101, &quot;Menu Item&amp;2&quot;</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=allocating_and_freeing_memory_blocks&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>allocating_and_freeing_memory_blocks</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=allocating_and_freeing_memory_blocks&amp;rev=1704414138&amp;do=diff</link>
        <description>Allocating and freeing memory blocks

by Richard Russell, June 2020

In BBC BASIC, a block of memory can be allocated either from the heap or from the stack; the statements to do this are as follows:


      DIM memory%% size%


This statement allocates</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=alternative_20comment_20styles&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>alternative_20comment_20styles</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=alternative_20comment_20styles&amp;rev=1704414138&amp;do=diff</link>
        <description>Alternative comment styles

by Richard Russell, May 2010

 There are three main ways of incorporating multi-line comments (remarks) in your program:

Using the REM statement

   
        REM This is comment line one
        REM This is comment line two
        REM This is comment line three</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=alternative_20for_20next_20behaviour&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>alternative_20for_20next_20behaviour</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=alternative_20for_20next_20behaviour&amp;rev=1704414138&amp;do=diff</link>
        <description>Alternative FOR NEXT behaviour

by Richard Russell, July 2007

 Although the FOR...NEXT loop is fundamental to all versions of BASIC, dialects differ in its detailed implementation. In BBC BASIC FOR...NEXT loops have the following properties:

	*  The body of the loop is always executed at least once, irrespective of the values specified in the FOR statement.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=alternative_20pseudo-random_20numbers&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>alternative_20pseudo-random_20numbers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=alternative_20pseudo-random_20numbers&amp;rev=1704414138&amp;do=diff</link>
        <description>Alternative pseudo-random numbers

by Jon Ripley, August 2006

BBC BASIC for Windows provides a pseudo-random number generator for use in BASIC programs but has no built-in support for generating pseudo-random numbers from assembly language programs. This article contains code to add support for generating pseudo-random numbers from assembly language that can be added to any program.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=arabic_20text_20on_20the_20mainwin_20and_20printer_20_28lbb_29&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>arabic_20text_20on_20the_20mainwin_20and_20printer_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=arabic_20text_20on_20the_20mainwin_20and_20printer_20_28lbb_29&amp;rev=1704414138&amp;do=diff</link>
        <description>Arabic text on the mainwin and printer (LBB)

by Richard Russell, December 2014

LB Booster supports Unicode, so it is possible for a program to contain, and for the mainwin and printer to show, characters from foreign alphabets (Cyrillic, Greek, Arabic, Hebrew etc.)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=array_20arithmetic&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>array_20arithmetic</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=array_20arithmetic&amp;rev=1704414137&amp;do=diff</link>
        <description>Array arithmetic

by Richard Russell, March 2014

LB Booster supports the ability to perform arithmetic operations on whole arrays, that is the operation is performed individually on every element of the array without you having to code a loop. For example you can add, subtract, multiply or divide arrays as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=arrays_20of_20structures_20_28lbb_29&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>arrays_20of_20structures_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=arrays_20of_20structures_20_28lbb_29&amp;rev=1704414137&amp;do=diff</link>
        <description>Arrays of structures (LBB)

by Richard Russell, December 2014

 One of the language extensions provided by LB Booster is native arrays of structures. These can be useful for structured data storage within a program, or when calling a Windows API function (for example</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=assembler&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>assembler</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=assembler&amp;rev=1704414137&amp;do=diff</link>
        <description>Assembler

Data conversion

	*  Converting binary to BCD
	*  Converting 40-bit floats to 64-bit floats
	*  Converting a number to a string

Miscellaneous

	*  Calling BASIC from assembler code
	*  Calling internal routines from assembler code
	*  Generating pseudo-random numbers (compatible with BASIC's RND function)
	*  Alternative pseudo-random numbers (increased sequence length of 2^64-1)
	*  Optimising integer division
	*  SOUND and ENVELOPE in assembler
	*  Passing data to assembler code
	*…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=associating_20an_20application_20with_20a_20file_20type&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>associating_20an_20application_20with_20a_20file_20type</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=associating_20an_20application_20with_20a_20file_20type&amp;rev=1704414137&amp;do=diff</link>
        <description>Associating an application with a file type

by Richard Russell, May 2015

 The code below associates an application with a particular file type, as indicated by its extension. The extension is specified as Extension$ (don't forget the dot) and the command used to open files with that extension is specified as</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=associating_20an_20application_20with_20an_20extension_20_28lbb_29&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>associating_20an_20application_20with_20an_20extension_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=associating_20an_20application_20with_20an_20extension_20_28lbb_29&amp;rev=1704414136&amp;do=diff</link>
        <description>Associating an application with an extension (LBB)

by Richard Russell, May 2015

 The code below associates an application with a particular file type, as indicated by its extension. The extension is specified as Extension$ (don't forget the dot) and the command used to open files with that extension is specified as</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=asynchronous_20speech&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>asynchronous_20speech</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=asynchronous_20speech&amp;rev=1704414136&amp;do=diff</link>
        <description>Asynchronous speech

by Richard Russell, October 2016

 The supplied example program SPEAK.BBC outputs the speech synchronously, that is PROCspeak() does not return to the caller until the speech output is complete. That will often be what is wanted, but in some circumstances you may wish to get on with doing something else while a phrase is being spoken. The programs below illustrate how that may be achieved; the first uses the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=automating_20mouse_20actions&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>automating_20mouse_20actions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=automating_20mouse_20actions&amp;rev=1704414136&amp;do=diff</link>
        <description>Automating mouse actions

by Richard Russell, October 2008

 You may on occasion want to automate mouse actions, such as simulating the effect of the user clicking a button or rotating the wheel. One use for such a facility could, for example, be in a training or tutorial situation where you wish to illustrate how to use the mouse to achieve a particular result.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=avoiding_20resource_20leaks&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>avoiding_20resource_20leaks</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=avoiding_20resource_20leaks&amp;rev=1704414136&amp;do=diff</link>
        <description>Avoiding resource leaks

by Richard Russell, November 2007

 A resource leak is the term used when a program uses some finite system resource but doesn't free it again when it has finished with it. For example a program might allocate some memory, and never free it (commonly called a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=bbc_20basic_20language&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bbc_20basic_20language</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=bbc_20basic_20language&amp;rev=1704414136&amp;do=diff</link>
        <description>BBC BASIC Language

 (Articles about the editor and compiler have been moved to Program Editor and IDE)



BASIC programs

	*  Alternative comment styles
	*  Alternative FOR NEXT behaviour
	*  Detokenising tokenised code
	*  Discovering how a program was run
	*  Finding the BBC BASIC installation directory
	*  Finding saved BASIC file format
	*  Finding the version number
	*  Fitting programs in the demo version
	*  How to avoid GOTOs
	*  Notes for RISC OS users
	*  Object Orientated programming…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=calling_20basic_20from_20assembler_20code&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>calling_20basic_20from_20assembler_20code</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=calling_20basic_20from_20assembler_20code&amp;rev=1704414137&amp;do=diff</link>
        <description>Calling BASIC from assembler code

by Richard Russell, November 2008

 You can't actually call BASIC from assembler code, but you can achieve an equivalent capability quite easily. What it involves is returning from the assembler code to BASIC, executing a BASIC procedure, and then re-entering the assembler code at the right place.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=calling_20dll_20functions_20that_20return_20strings&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>calling_20dll_20functions_20that_20return_20strings</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=calling_20dll_20functions_20that_20return_20strings&amp;rev=1704414140&amp;do=diff</link>
        <description>Calling DLL functions that return strings

by Richard Russell, March 2015

 Passing a string as an input parameter to a DLL function is straightforward, but if the parameter is intended to receive a string output by the function then there are two important requirements:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=calling_20dlls_20that_20return_20floats&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>calling_20dlls_20that_20return_20floats</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=calling_20dlls_20that_20return_20floats&amp;rev=1704414138&amp;do=diff</link>
        <description>Calling DLLs that return floats

by Richard Russell, May 2007, amended April 2013

 BBC BASIC for Windows implements the SYS statement for calling routines in external DLLs (Dynamic Link Libraries). This statement has an optional TO clause which specifies a variable that should receive an integer value (if any) returned from the DLL:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=calling_20internal_20routines_20from_20assembler_20code&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>calling_20internal_20routines_20from_20assembler_20code</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=calling_20internal_20routines_20from_20assembler_20code&amp;rev=1704414139&amp;do=diff</link>
        <description>Calling internal routines from assembler code

by Richard Russell, January 2016

 A small selection of subroutines, internal to the BASIC interpreter, is exposed to the assembly language programmer so that they may be called from his own assembler code. These are grouped into two sets; the most commonly needed subroutines are callable by</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=calling_20object_20methods_20using_20structures&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>calling_20object_20methods_20using_20structures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=calling_20object_20methods_20using_20structures&amp;rev=1704414137&amp;do=diff</link>
        <description>Calling object methods using structures

by Richard Russell, March 2007

 Calling COM, OLE or ActiveX object methods generally involves the use of a rather arcane syntax, such as this example taken from the BB4W manual under Displaying GIF and JPEG images:

 
        SYS !(!gpp%+24), gpp%, ^hmw% : REM. IPicture::get_Width
        SYS !(!gpp%+28), gpp%, ^hmh% : REM. IPicture::get_Height</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=capturing_20audio_20using_20mci&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>capturing_20audio_20using_20mci</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=capturing_20audio_20using_20mci&amp;rev=1704414141&amp;do=diff</link>
        <description>Capturing audio using MCI

by Richard Russell, October 2010

 The article Inputting real-time audio describes how to input audio data and make it available to your program for display, analysis or capture. If you simply need to record audio to a WAV file you can use that technique, but a much easier method is to use the capture facilities built into the Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=capturing_20the_20contents_20of_20a_20window&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>capturing_20the_20contents_20of_20a_20window</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=capturing_20the_20contents_20of_20a_20window&amp;rev=1704414140&amp;do=diff</link>
        <description>Capturing the contents of a window

by Richard Russell, May 2007 (updated)

 You can capture, as a bitmap file, the contents of your program's main output window using the *SCREENSAVE (or *GSAVE) command. But what if you want to save not your output window but the contents of a dialogue box, Direct3D window or other window? There is no equivalent built-in command to do that.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=cascaded_20error_20handling&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cascaded_20error_20handling</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=cascaded_20error_20handling&amp;rev=1704414136&amp;do=diff</link>
        <description>Cascaded error handling

by Richard Russell, February 2007

 See also Structured Exception Handling and Cascaded ON CLOSE handling

 There may be situations when you need to take some remedial action in the event of an error (for example to terminate a Windows API operation) but then to pass the responsibility for reporting the error to an existing error handler. You can do that using a combination of the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=cascaded_20on_20close_20handling&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>cascaded_20on_20close_20handling</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=cascaded_20on_20close_20handling&amp;rev=1704414136&amp;do=diff</link>
        <description>Cascaded ON CLOSE handling

by Richard Russell, September 2010

 The article Cascaded error handling explains how a procedure or function can take some 'local' remedial action in the event of an error (for example to cleanup after a Windows API operation) and then pass responsibility for dealing with the error to the code from which it was called. In principle there may be several cascaded procedures or functions, each of which needs to handle the error before passing it 'down the chain'.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=centering_20the_20graphics_20origin&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>centering_20the_20graphics_20origin</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=centering_20the_20graphics_20origin&amp;rev=1704414135&amp;do=diff</link>
        <description>Centering the graphics origin

by Richard Russell, October 2010

 The following code will centre the graphics origin both horizontally and vertically, irrespective of the size and shape of the window:


        VDU 26
        IF POS REM SDL thread sync (needed in BBCSDL only)
        ORIGIN @vdu.tr%,@vdu.tb%</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20a_20control_27s_20colours&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20a_20control_27s_20colours</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20a_20control_27s_20colours&amp;rev=1704414139&amp;do=diff</link>
        <description>Changing a control's colours

by Richard Russell, September 2007

 You will normally want dialogue box controls to use their default colour scheme, for reasons of uniformity with other Windows applications, but occasionally you may want to change the foreground and/or background colours for special purposes. There are a number of techniques that can be used to achieve this, for example you can create a coloured Edit Box by using a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20case_20of_20a_20string&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20case_20of_20a_20string</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20case_20of_20a_20string&amp;rev=1704414139&amp;do=diff</link>
        <description>Changing the case of a string

by Jon Ripley, May 2006

 The FNUSING library supplied with BBC BASIC for Windows contains the functions FNlower and FNupper which can be used to change the case of a string to lower case or UPPER CASE respectively. These are described in the main help documentation</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20document_20name&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20document_20name</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20document_20name&amp;rev=1704414135&amp;do=diff</link>
        <description>Changing the document name

by Richard Russell, April 2010

 When you output to a printer from a BBC BASIC program the 'document name' is set to BBC BASIC output. The principal purpose of this name is to identify the print job in the Print Manager's list of queued documents. For example if you need to delete the document from the queue you can identify it using this name.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20font_20of_20a_20control&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20font_20of_20a_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20font_20of_20a_20control&amp;rev=1704414141&amp;do=diff</link>
        <description>Changing the font of a control

by Richard Russell, October 2006

 By default a Windows control (e.g. edit box, list box or static box) uses a font which in most circumstances should be suitable for your needs. This is particularly so for a control in a dialogue box, because the default font size is determined by system-wide settings which are under the control of the user (for example he may have selected Large Fonts).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20mdi_20background_20colour&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20mdi_20background_20colour</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20mdi_20background_20colour&amp;rev=1704414140&amp;do=diff</link>
        <description>Changing the MDI background colour

 by Richard Russell, March 2007

 If your program uses a Multiple Document Interface, by means of the MDILIB library, the background of the MDI client area is filled with the COLOR_APPWORKSPACE system colour, which by default is a mid-grey. Although you can change this colour in Windows Control Panel that will affect all applications, which you probably don't want to do.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20mouse_20speed&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20mouse_20speed</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20mouse_20speed&amp;rev=1704414140&amp;do=diff</link>
        <description>Changing the mouse speed

by Richard Russell, January 2011

 You can change the mouse speed, that is how fast the mouse pointer moves when you physically move the mouse, as follows:

 
        SPI_SETMOUSESPEED = 113
        SYS &quot;SystemParametersInfo&quot;, SPI_SETMOUSESPEED, 0, speed%, 0</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20serial_20buffer_20size&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20serial_20buffer_20size</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20serial_20buffer_20size&amp;rev=1704414139&amp;do=diff</link>
        <description>Changing the serial buffer size

by Richard Russell, December 2012

 When you open a serial port for input, a buffer (queue) is automatically created to hold incoming data until it is read by your program. This buffer is typically 4096 bytes in size (although that may vary according to the version of Windows, serial port driver etc.).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=changing_20the_20step_20size_20of_20an_20up-down_20control&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>changing_20the_20step_20size_20of_20an_20up-down_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=changing_20the_20step_20size_20of_20an_20up-down_20control&amp;rev=1704414135&amp;do=diff</link>
        <description>Changing the step size of an up-down control

by Richard Russell, July 2014

 When you create an up-down control you can easily choose the minimum and maximum values, and the direction in which it changes (i.e. whether clicking on the up arrow increases or decreases the value). However you cannot choose the step size: each click always changes the value by either +1 or -1 (or zero if the limit has been reached).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=checking_20if_20a_20library_20is_20installed&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>checking_20if_20a_20library_20is_20installed</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=checking_20if_20a_20library_20is_20installed&amp;rev=1704414138&amp;do=diff</link>
        <description>Checking if a library is INSTALLed

by Jon Ripley, January 2006

BBC BASIC for Windows provides no built in function to check whether a library has been loaded into memory using the INSTALL command. 

 The following routine FN_IsInstalled(lib$) implements a method to check if a library is currently</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=checking_20whether_20a_20directory_20exists&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>checking_20whether_20a_20directory_20exists</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=checking_20whether_20a_20directory_20exists&amp;rev=1704414139&amp;do=diff</link>
        <description>Checking whether a directory exists

by Richard Russell, May 2006, amended May 2010

 It's easy to check whether a file exists: you just try to open it:



        DEF FNcheckfile(file$)
        LOCAL F%
        F% = OPENIN(file$)
        IF F% CLOSE #F%
        = F%</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=clearing_20the_20contents_20of_20a_20structure&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>clearing_20the_20contents_20of_20a_20structure</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=clearing_20the_20contents_20of_20a_20structure&amp;rev=1704414138&amp;do=diff</link>
        <description>Clearing the contents of a structure

by Jon Ripley, May 2007

 The following routine will clear the contents of any structure passed to it:



        REM Clear any structure (by Jon Ripley)
        DEF PROC_ClearStruct(S{})
        LOCAL E{}, F{}
        DIM E{} = S{}, F{} = S{}
        E{} = S{} : S{} = F{}
        ENDPROC</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=coding_20the_20pause_20instruction&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>coding_20the_20pause_20instruction</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=coding_20the_20pause_20instruction&amp;rev=1704414137&amp;do=diff</link>
        <description>Coding the PAUSE instruction

by Richard Russell, November 2009

 If you want to use the PAUSE instruction (available on Pentium 4 and later CPUs) one way would be to encode it using DBs:


      db &amp;F3 : db &amp;90
but a more convenient and elegant way is as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=colored_20text_20in_20the_20mainwin&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>colored_20text_20in_20the_20mainwin</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=colored_20text_20in_20the_20mainwin&amp;rev=1704414138&amp;do=diff</link>
        <description>Colored text in the mainwin

by Richard Russell, May 2013

 Liberty BASIC can only display black text on a white background in the mainwin. LB Booster, however, allows both the text and background colors to be changed. For example:



  !COLOR 15
  !COLOR 129
  print &quot;White text on a red background&quot;</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=colour_20text_20in_20a_20list_20view&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>colour_20text_20in_20a_20list_20view</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=colour_20text_20in_20a_20list_20view&amp;rev=1704414141&amp;do=diff</link>
        <description>Colour text in a List View

by Michael Hutton 22/01/2009

 Getting windows to print colour text in a list view involes intercepting windows messages about the state of its current Paint cycle. When a common control (in this case the list view) is about to paint (draw) something it sends a message to its parent window informing it of what it is about to do. We have to intercept this NM_CUSTOMDRAW message and process it ourselves. Unfortunately, by the time the message has got through to BB4W to b…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=commented_20example_20programs&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>commented_20example_20programs</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=commented_20example_20programs&amp;rev=1704414140&amp;do=diff</link>
        <description>Commented Example Programs

 It has been suggested that it would be helpful to have, in addition to the set of example programs supplied with BBC BASIC for Windows, versions of those programs with extra comments and/or more meaningful variable and procedure/function names</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=commenting_20library_20code&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>commenting_20library_20code</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=commenting_20library_20code&amp;rev=1704414140&amp;do=diff</link>
        <description>Commenting library code

by Jon Ripley, July 2006

 All programs and libraries should be supplied with adequate documentation to enable yourself and other programmers to use the library in their programs. Comments form an important part of library documentation and should not be overlooked. Time taken during development to adequately comment a library can save time in the future when the library is used or updated.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=communication_20and_20input-output&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>communication_20and_20input-output</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=communication_20and_20input-output&amp;rev=1704414138&amp;do=diff</link>
        <description>Communication and Input-Output

Console mode programming

	*  Writing console mode programs that will also run in the IDE

Inter-process communication and automation

	*  Component Object Model programming
	*  Opening a file by dropping or clicking
	*  Receiving dropped files
	*  Sharing a structure between processes

Network and socket programming

	*  Downloading a file from a URL
	*  Fetching a secure web page
	*  Finding the host IP address
	*  Finding the MAC address
	*  Getting Connected a…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=comparing_20arrays_20for_20equality&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>comparing_20arrays_20for_20equality</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=comparing_20arrays_20for_20equality&amp;rev=1704414136&amp;do=diff</link>
        <description>Comparing arrays for equality

by Richard Russell, November 2012

 Supposing you have two numeric arrays (of the same size) and you want to test whether they are identical, i.e. that their contents are the same. Obviously you could iterate through the indices, comparing each element in turn with the corresponding element in the other array, but that's a bit messy. Luckily there is a much neater way to do it:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=compatibility_20with_20wine_20_28lbb_29&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compatibility_20with_20wine_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=compatibility_20with_20wine_20_28lbb_29&amp;rev=1704414136&amp;do=diff</link>
        <description>Compatibility with Wine (LBB)

by Richard Russell, January 2016

LB Booster will run satisfactorily under Linux (x86) using Wine but there are a few known compatibility issues:



	*  In order for LBB to run at all, the directory lib must first be manually created as a subdirectory of the Wine</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=compatibility_20with_20wine&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>compatibility_20with_20wine</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=compatibility_20with_20wine&amp;rev=1704414136&amp;do=diff</link>
        <description>Compatibility with Wine

by Richard Russell, October 2007, updated August 2012

Wine is an Open Source implementation of the Windows API for use with Unix-based Operating Systems such as Linux or MacOS X (the use of an Intel x86-based processor is assumed). The design goal of Wine is to allow Windows applications to run successfully on such Operating Systems, but inevitably the emulation of Windows isn't perfect. You can find out more about Wine</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=component_20object_20model_20programming&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>component_20object_20model_20programming</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=component_20object_20model_20programming&amp;rev=1704414135&amp;do=diff</link>
        <description>Component Object Model programming

by Malcolm Marten, May 2008

 The Component Object Model, or COM for short (not to be confused with COMmunication ports!), is a Microsoft protocol allowing programs to cooperate in sharing data.

 The key word in COM is</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20audio_20mixer&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>controlling_20the_20audio_20mixer</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20audio_20mixer&amp;rev=1704414135&amp;do=diff</link>
        <description>Controlling the audio mixer

by Richard Russell, July 2007

Note: On Windows Vista and Windows 7 each running application has its own independent audio mixer. The code listed here will work correctly, but the mixer controlled is that for the specific application.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20master_20volume&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>controlling_20the_20master_20volume</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20master_20volume&amp;rev=1704414135&amp;do=diff</link>
        <description>Controlling the Master Volume

by Richard Russell, October 2016

 The main Help documentation describes how to control the sound volume but in Windows Vista and later each running application has its own volume control and the code shown there affects only the sound output from your own program. If instead you want to control the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20windows_20taskbar&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>controlling_20the_20windows_20taskbar</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=controlling_20the_20windows_20taskbar&amp;rev=1704414135&amp;do=diff</link>
        <description>Controlling the Windows taskbar

by Richard Russell, August 2007

 The code listed in this article allows you to control various aspects of the Windows taskbar, in particular to hide and show the deskband, notification icons and clock:



 In the normal configuration, the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_20a_20number_20to_20a_20string&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_20a_20number_20to_20a_20string</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_20a_20number_20to_20a_20string&amp;rev=1704414135&amp;do=diff</link>
        <description>Converting a number to a string

by Richard Russell, January 2015

 You may wish to convert a number to a string in assembly language (equivalent to the STR$ function in BASIC). This can easily be done by calling an internal routine within the interpreter. Here is how to do it (requires</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_20binary_20coded_20decimal&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_20binary_20coded_20decimal</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_20binary_20coded_20decimal&amp;rev=1704414134&amp;do=diff</link>
        <description>Converting Binary Coded Decimal

By JGH, April 2007

Binary Coded Decimal (BCD) is a method of representing a decimal number as a hexadecimal value using the hex digits 0-9 and ignoring A-F. For example, the number 21 (hex &amp;15) would be represented as &amp;21 (decimal 33). It can be a convenient internal representation of decimal numbers as each hexadecimal digit can be displayed without any further processing. See</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_20binary_20to_20bcd&amp;rev=1704414141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_20binary_20to_20bcd</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_20binary_20to_20bcd&amp;rev=1704414141&amp;do=diff</link>
        <description>Converting binary to BCD

by Richard Russell, June 2007

 Converting binary (base-2) to BCD (base-10) is a frequently needed operation, especially when printing out numeric results in decimal. There are standard methods of doing this in assembly language, mostly using the DAA (Decimal Adjust after Addition) instruction, but if it is acceptable to use the Floating Point Unit (Numeric Coprocessor) then there is a much easier method.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_20graphics_20coordinates&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_20graphics_20coordinates</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_20graphics_20coordinates&amp;rev=1704414134&amp;do=diff</link>
        <description>Converting graphics coordinates

by Richard Russell, January 2007

 If your program outputs its graphics using only BBC BASIC graphics statements then all the coordinates need to be supplied in BBC BASIC units, that is (0,0) is at the bottom left-hand corner of the graphics viewport and each pixel corresponds to</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_20islamic_20dates&amp;rev=1704414139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_20islamic_20dates</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_20islamic_20dates&amp;rev=1704414139&amp;do=diff</link>
        <description>Converting Islamic dates

by Richard Russell, August 2015

 The code below shows how to convert between Western (Gregorian) and Islamic (Hijri) dates; it requires Windows Vista or later:


        year% = 2015 : month% = 8 : day% = 14

        PROC_GregorianToHijri(year%, month%, day%)
        PRINT year%, month%, day%

        PROC_HijriToGregorian(year%, month%, day%)
        PRINT year%, month%, day%

        END

        DEF PROC_GregorianToHijri(RETURN year%, RETURN month%, RETURN day%)
   …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_20programs_20from_20risc_20os_20to_20windows&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_20programs_20from_20risc_20os_20to_20windows</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_20programs_20from_20risc_20os_20to_20windows&amp;rev=1704414134&amp;do=diff</link>
        <description>Converting programs from RISC OS to Windows

by Richard Russell, October 2009

 The conversion of WIMP-based BBC BASIC programs (i.e. programs having a Graphical User Interface) from RISC OS to Windows is a very broad subject, and it would be virtually impossible to provide a comprehensive guide. Therefore this article takes the form of a Case Study, dealing specifically with the conversion of one program:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=converting_2040-bit_20floats_20to_2064-bit_20floats&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>converting_2040-bit_20floats_20to_2064-bit_20floats</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=converting_2040-bit_20floats_20to_2064-bit_20floats&amp;rev=1704414134&amp;do=diff</link>
        <description>Converting 40-bit floats to 64-bit floats

by Richard Russell, August 2014

 The assembly language routine below converts a 40-bit floating-point value, in the registers cl edx, into a 64-bit floating-point ('double') value, in the registers ecx edx:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=copy_20key_20functionality_20with_20get_20and_20inkey&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>copy_20key_20functionality_20with_20get_20and_20inkey</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=copy_20key_20functionality_20with_20get_20and_20inkey&amp;rev=1704414134&amp;do=diff</link>
        <description>Copy Key functionality with GET and INKEY

by Richard Russell, April 2008


BBC BASIC for Windows and BBC BASIC for SDL 2.0 emulate the Copy Key functionality provided on the BBC Microcomputer and other Acorn machines, but only at the Immediate Mode prompt or when user input is being requested using the INPUT statement; Copy Key editing is</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=counting_20the_20characters_20in_20a_20unicode_20string&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>counting_20the_20characters_20in_20a_20unicode_20string</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=counting_20the_20characters_20in_20a_20unicode_20string&amp;rev=1704414133&amp;do=diff</link>
        <description>Counting the characters in a Unicode string

by Richard Russell, March 2010

BBC BASIC for Windows provides native support for the Unicode Basic Multilingual Plane, allowing you to work with, output and print a wide range of foreign-language and other character sets with very little extra effort. The main</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20chm_20version_20of_20the_20lb_20help_20files&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20chm_20version_20of_20the_20lb_20help_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20chm_20version_20of_20the_20lb_20help_20files&amp;rev=1704414133&amp;do=diff</link>
        <description>Creating a CHM version of the LB Help files

Creating a CHM version of the Liberty Basic v4.5.1 Help files


 The Help system supplied with Liberty Basic has been the source of some debate. Liberty Basic v4.03 and earlier came with a file in WinHelp format which opened in the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20custom_20graphics_20control&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20custom_20graphics_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20custom_20graphics_20control&amp;rev=1704414133&amp;do=diff</link>
        <description>Creating a custom graphics control

by Richard Russell, August 2014

 BBC BASIC supports drawing text, graphics, images etc. to the 'mainwin' and, by means of the MULTIWIN library, to one or more separate windows. The code listed below demonstrates how to create a custom graphics control to which such output can also be drawn. This allows you to display animated graphics etc. in a dialogue box.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20dialogue_20box_20from_20a_20resource&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20dialogue_20box_20from_20a_20resource</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20dialogue_20box_20from_20a_20resource&amp;rev=1704414133&amp;do=diff</link>
        <description>Creating a dialogue box from a resource

by Richard Russell, May 2006, revised April 2012

 The normal method of creating a dialogue box in BBC BASIC for Windows is to call the procedures in the WINLIB2 library: 

	*  PROC_pushbutton
	*  PROC_checkbox</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20globally_20unique_20identifier&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20globally_20unique_20identifier</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20globally_20unique_20identifier&amp;rev=1704414133&amp;do=diff</link>
        <description>Creating a Globally Unique Identifier

by Richard Russell, April 2007

 A Globally Unique Identifier, or GUID for short, is a 128-bit (16 byte) number which, as its name suggests, is intended to be unique in the world - or possibly in the universe! GUIDs are often represented in a textual form as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20keyboard_20accelerator_20table_20from_20a_20resource&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20keyboard_20accelerator_20table_20from_20a_20resource</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20keyboard_20accelerator_20table_20from_20a_20resource&amp;rev=1704414132&amp;do=diff</link>
        <description>Creating a keyboard accelerator table from a resource

by Jon Ripley, August 2007

 The normal method of checking for keyboard hot keys is to use INKEY with a negative argument:

 
          SYS &quot;GetForegroundWindow&quot; TO hWnd%
          IF hWnd% = @hwnd% THEN
            IF INKEY-2 THEN
              IF INKEY-86 THEN PROCnew  :REM Ctrl+N
              IF INKEY-55 THEN PROCopen :REM Ctrl+O
            ENDIF
            REM ...
          ENDIF</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20menu_20from_20a_20resource&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20menu_20from_20a_20resource</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20menu_20from_20a_20resource&amp;rev=1704414132&amp;do=diff</link>
        <description>Creating a menu from a resource

by Jon Ripley, June 2006

 The normal method of creating a menu is to use the Windows API functions “CreateMenu”, “CreatePopupMenu” and “AppendMenu” to create a menu structure:


        SYS &quot;CreatePopupMenu&quot; TO m_file%
        SYS &quot;AppendMenu&quot;, m_file%, 0, 100, &quot;&amp;New&quot;+CHR$9+&quot;Ctrl+N&quot;
        SYS &quot;AppendMenu&quot;, m_file%, 0, 101, &quot;&amp;Open&quot;+CHR$9+&quot;Ctrl+O&quot;
        SYS &quot;AppendMenu&quot;, m_file%, 0, 102, &quot;&amp;Save&quot;+CHR$9+&quot;Ctrl+S&quot;
        SYS &quot;AppendMenu&quot;, m_file%, 0, 103, &quot;Save &amp;…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20png_20file_20from_20a_20windows_20icon&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20png_20file_20from_20a_20windows_20icon</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20png_20file_20from_20a_20windows_20icon&amp;rev=1704414132&amp;do=diff</link>
        <description>Creating a PNG file from a Windows icon

by Richard Russell, February 2018

 Both Windows icons and PNG (Portable Network Graphics) files support transparency - an alpha channel if you prefer - so it may be useful to convert the former to the latter. For example Android and Mac</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20rebar_20control&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20rebar_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20rebar_20control&amp;rev=1704414137&amp;do=diff</link>
        <description>Creating a rebar control

by Richard Russell, August 2006

 A rebar control acts a bit like a toolbar, but instead of being a simple bar it consists of a number of bands each of which can contain a child window. Typically the child window can itself be a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20shortcut&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20shortcut</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20shortcut&amp;rev=1704414137&amp;do=diff</link>
        <description>Creating a shortcut

by Richard Russell, June 2007

 If you want to create a shortcut (link) to a file or a folder, you can do it using the PROCshortcut routine listed below. You would call the routine using code similar to the following:


        PROCshortcut(&quot;C:\Documents and Settings\RTR\Desktop\Test Shortcut.lnk&quot;, \
        \            &quot;C:\Program Files\BBC BASIC for Windows\bbcwin.exe&quot;, \
        \            &quot;C:\Program Files\BBC BASIC for Windows\Examples\&quot;, \
        \            &quot;Test…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20a_20tab_20control&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20a_20tab_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20a_20tab_20control&amp;rev=1704414136&amp;do=diff</link>
        <description>Creating a tab control

by Richard Russell, November 2006

 A Tab Control is similar to a Property Sheet, but it is less intelligent: that is, you have to do more of the work yourself! The advantage is that it gives you extra flexibility: for example a Property Sheet contains built-in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20an_20animation_20control&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20an_20animation_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20an_20animation_20control&amp;rev=1704414132&amp;do=diff</link>
        <description>Creating an animation control

by Richard Russell, November 2009

 A typical example of an animation control is the familiar 'search' animation:



 To create an animation control in your main window use code similar to the following:




        INSTALL @lib$+&quot;WINLIB5A&quot;

        ACM_OPEN = &amp;464
        ACM_PLAY = &amp;465
        WS_BORDER = &amp;800000

        hwndAnim% = FN_createwindow(@hwnd%, &quot;SysAnimate32&quot;, &quot;&quot;, 100, 100, \
        \                           0, 0, 0, WS_BORDER, 0)

        SYS &quot;S…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20an_20array_20alias&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20an_20array_20alias</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20an_20array_20alias&amp;rev=1704414132&amp;do=diff</link>
        <description>Creating an array alias

by Richard Russell, June 2009, modified August 2020

 If you use a simple array assignment statement to copy an array the contents are copied (that is, each element of the source array is copied into the destination array):</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20child_20controls_20in_20a_20loop&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20child_20controls_20in_20a_20loop</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20child_20controls_20in_20a_20loop&amp;rev=1704414131&amp;do=diff</link>
        <description>Creating child controls in a loop

by Richard Russell, March 2013

 In Liberty BASIC 4.04 you can use the MAPHANDLE statement to, for example, reuse the same code to open multiple windows. The LB4 documentation illustrates how to open three windows using this technique:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20function_20key_20macros&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20function_20key_20macros</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20function_20key_20macros&amp;rev=1704414131&amp;do=diff</link>
        <description>Creating function key macros

by Richard Russell, December 2008

 In the BBC BASIC for Windows Integrated Development Environment (i.e program editor and user interface) function keys F9 to F12 have no effect, by default. The same is true of function keys</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20pdf_20files&amp;rev=1704414137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20pdf_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20pdf_20files&amp;rev=1704414137&amp;do=diff</link>
        <description>Creating PDF files

by Richard Russell, October 2007

 A popular method for creating a PDF (Portable Document Format) file from a Windows application is to use a 'PDF Printer Driver' (or 'Virtual Printer'). This installs like an ordinary printer but rather than outputting to paper it creates a PDF file. There are many such products including:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=creating_20temporary_20files_20and_20directories&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>creating_20temporary_20files_20and_20directories</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=creating_20temporary_20files_20and_20directories&amp;rev=1704414131&amp;do=diff</link>
        <description>Creating temporary files and directories

by Jon Ripley, August 2007

 The FNtempfile function creates and returns the name of a unique file in the current temporary directory. You should ensure that you delete this file when you no longer require it.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=customising_20the_20browse_20for_20folder_20dialogue&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>customising_20the_20browse_20for_20folder_20dialogue</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=customising_20the_20browse_20for_20folder_20dialogue&amp;rev=1704414131&amp;do=diff</link>
        <description>Customising the Browse for Folder dialogue

by Richard Russell, July 2009

 The main Help documentation explains how you can use the Windows API to display a Browse for Folder dialogue box, allowing the user to select a folder (directory) for some purpose.

 Unfortunately the basic functionality of</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=data_20without_20data&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>data_20without_20data</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=data_20without_20data&amp;rev=1704414131&amp;do=diff</link>
        <description>Data without DATA

By JGH, May-2006.
 It is common for programs to put commonly used data in DATA statements which are then read into a set a variables at startup. A classic example is the names of months:



        DIM mon$(12)
        RESTORE
        FOR mon%=1 TO 12:READ mon$(mon%):NEXT mon%
        DATA Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=database_20and_20files&amp;rev=1720269746&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-06T12:42:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>database_20and_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=database_20and_20files&amp;rev=1720269746&amp;do=diff</link>
        <description>Database and Files

Arrays

	*  Aliasing strings and byte arrays
	*  Allocating arrays using the Windows API
	*  Deconstructing arrays
	*  Finding the SUM or MOD of a partial array
	*  Finding the size of an array in a structure
	*  Reading and writing arrays in files
	*  Re-dimensioning arrays
	*  Searching ordered lists
	*  Using array pointers
	*  Variable-length array in a structure

Data Structures

	*  Clearing the contents of a structure
	*  Creating a Globally Unique Identifier
	*  Linke…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=date_20formatting_20extended_20functionality&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>date_20formatting_20extended_20functionality</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=date_20formatting_20extended_20functionality&amp;rev=1704414130&amp;do=diff</link>
        <description>Date$ Formatting - Extended Functionality

LBB has extended functionality when using Date$() .

 LBB will return the date in any format that can be constructed from the following elements, in any order, separated by '/' or '-': 
 d
 Day of month as digits with no leading zero for single-digit days.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=debugging_20techniques_20_28lbb_29&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>debugging_20techniques_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=debugging_20techniques_20_28lbb_29&amp;rev=1704414130&amp;do=diff</link>
        <description>Debugging Techniques

by Jack Kelly

with valued contributions from Alyce Watson, John Fisher, and Anatoly

April 2018

It is rare that a programmer writes any significant amount of code that is entirely free of errors. Often the error is very small, perhaps just one incorrect character. Or perhaps a variable that should be global. Or it could be a major error in logic. All are difficult to see and correct when immersed in the writing and reviewing of code.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=deconstructing_20arrays&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>deconstructing_20arrays</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=deconstructing_20arrays&amp;rev=1704414130&amp;do=diff</link>
        <description>Deconstructing arrays

by Jon Ripley, August 2006

 This article assumes that you have read the manual section 'Array storage in memory'. This article expands on the documentation and shows how to use this information in a real program.

 Understanding the layout and structure of arrays in memory has practical applications when dealing with arrays from assembly language and when writing code that manipulates arrays. This information can also be used to implement methods to deal with arrays in wa…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=detecting_20a_20second_20instance_20of_20a_20program&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>detecting_20a_20second_20instance_20of_20a_20program</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=detecting_20a_20second_20instance_20of_20a_20program&amp;rev=1704414130&amp;do=diff</link>
        <description>Detecting a second instance of a program

by Richard Russell, July 2006

 There may be situations when you need to ensure that only one copy of a program can be run at a time; an attempt to run a second copy should fail (with or without an error message being displayed). There are several ways in which this can be achieved, but the one described here is relatively simple and free from unwanted side effects; it uses the Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=detecting_20when_20a_20menu_20is_20open&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>detecting_20when_20a_20menu_20is_20open</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=detecting_20when_20a_20menu_20is_20open&amp;rev=1704414129&amp;do=diff</link>
        <description>Detecting when a menu is open

by Richard Russell, December 2008

 There may be circumstances when you need to detect whether a drop-down ('popup') menu is 'open', that is the menu selections are displayed. A particular example is when you have changed the mouse pointer (cursor) shape using</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=determining_20how_20a_20macro_20was_20run&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>determining_20how_20a_20macro_20was_20run</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=determining_20how_20a_20macro_20was_20run&amp;rev=1704414133&amp;do=diff</link>
        <description>Determining how a macro was run

by Jon Ripley, October 2007

 When writing a macro it is often useful to be able to determine whether it is being run as the main program or if it has been CALLed. Making this distinction allows more flexibility when writing macros.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=determining_20if_20the_20user_20is_20an_20administrator&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>determining_20if_20the_20user_20is_20an_20administrator</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=determining_20if_20the_20user_20is_20an_20administrator&amp;rev=1704414135&amp;do=diff</link>
        <description>Determining if the user is an administrator

by Richard Russell, October 2011

 The code listed below reports whether the user is currently logged-in as an administrator or not:


        SYS &quot;IsUserAnAdmin&quot; TO res%
        IF res% THEN
          PRINT &quot;The current user is an administrator&quot;
        ELSE
          PRINT &quot;The current user is not an administrator&quot;
        ENDIF</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=detokeniser&amp;rev=1704414138&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>detokeniser</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=detokeniser&amp;rev=1704414138&amp;do=diff</link>
        <description>Detokeniser

by Jon Ripley, January 2008, May 2011

The FNdetokenise function listed below accepts a string containing either a tokenised program line or tokenised code and returns a string containing detokenised code:


        DEF FNdetokenise(S$)
        IF S$ = &quot;&quot; OR S$ = CHR$0+CHR$255+CHR$255 THEN =&quot;&quot;
        PRIVATE Keywd$()
        IF !^Keywd$()=0 THEN
          DIM Keywd$(160)
          Keywd$() = &quot;AND&quot;,&quot;DIV&quot;,&quot;EOR&quot;,&quot;MOD&quot;,&quot;OR&quot;,&quot;ERROR&quot;,&quot;LINE&quot;,&quot;OFF&quot;,\
          \&quot;STEP&quot;,&quot;SPC&quot;,&quot;TAB(&quot;,&quot;ELSE&quot;,&quot;…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=direct_20screen_20memory_20access&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>direct_20screen_20memory_20access</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=direct_20screen_20memory_20access&amp;rev=1704414135&amp;do=diff</link>
        <description>Direct screen memory access

by Richard Russell, March 2007

 Normally, your BASIC program doesn't have direct access to its screen memory, i.e. the contents of the bitmap holding the text and graphics output from the program. The only ways to write to that bitmap are by using BASIC statements and commands (e.g.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=direct3d_2011_20tutorials&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>direct3d_2011_20tutorials</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=direct3d_2011_20tutorials&amp;rev=1704414129&amp;do=diff</link>
        <description>Direct3D 11 Tutorials

by Richard Russell, August 2015

Note that the code in these tutorials requires Windows 8.1 or Windows 10

 This set of tutorials is very closely based on Microsoft's Direct3D 11 tutorials but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=disabling_20_27sticky_20key_27_20action_20of_20shift&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>disabling_20_27sticky_20key_27_20action_20of_20shift</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=disabling_20_27sticky_20key_27_20action_20of_20shift&amp;rev=1704414134&amp;do=diff</link>
        <description>Disabling 'sticky key' action of Shift

by Richard Russell, October 2008

 By default, pressing the Shift key five times activates the Windows StickyKeys accessibility feature. Whilst this can be useful for people with certain disabilities, it can be irritating if you use BBC BASIC's</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=disabling_20the_20close_20button&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>disabling_20the_20close_20button</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=disabling_20the_20close_20button&amp;rev=1704414134&amp;do=diff</link>
        <description>Disabling the close button

by Richard Russell, August 2008

 It is easy enough to make the close button (in the top-right corner of the window) ineffective, by executing the following statement:


        ON CLOSE RETURN


This results in the button being ignored. However there may be occasions when you actually want to disable the close button, and indicate that it is disabled by it being 'greyed out'. You can do that as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=discovering_20how_20a_20program_20was_20run&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>discovering_20how_20a_20program_20was_20run</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=discovering_20how_20a_20program_20was_20run&amp;rev=1704414134&amp;do=diff</link>
        <description>Discovering how a program was run

by Jon Ripley, May 2006

 In some cases it is important to know what environment your program is running in so you can make different choices to suit the environment.

 There are three methods to run a BBC BASIC program:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=discovering_20the_20system_20power_20status&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>discovering_20the_20system_20power_20status</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=discovering_20the_20system_20power_20status&amp;rev=1704414133&amp;do=diff</link>
        <description>Discovering the system power status

by Richard Russell, October 2011

 The code listed below reports the current system power status, including whether the PC is operating from batteries or from the mains, the current battery status and the remaining battery life (if appropriate).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20jpeg_20or_20gif_20in_20a_20picture_20box&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20a_20jpeg_20or_20gif_20in_20a_20picture_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20jpeg_20or_20gif_20in_20a_20picture_20box&amp;rev=1704414132&amp;do=diff</link>
        <description>Displaying a JPEG or GIF in a picture box

by Richard Russell, November 2006

 The main BBC BASIC for Windows documentation explains how to display a BMP image in a picture box (i.e. a static control having the SS_BITMAP style). The code it lists is as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20png_20or_20tiff_20image&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20a_20png_20or_20tiff_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20png_20or_20tiff_20image&amp;rev=1704414131&amp;do=diff</link>
        <description>Displaying a PNG or TIFF image

by Richard Russell, November 2010, amended January 2012

 BBC BASIC for Windows provides the *DISPLAY command to display on the screen an image contained in a BMP file, and the main Help documentation describes how to display a GIF or JPEG image. If you want to display a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20tooltip_20on_20demand_20_28lbb_29&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20a_20tooltip_20on_20demand_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20tooltip_20on_20demand_20_28lbb_29&amp;rev=1704414133&amp;do=diff</link>
        <description>Displaying a tooltip on demand (LBB)

by Richard Russell, August 2012

 As a rule, a tooltip is displayed when the mouse moves into the tool's rectangle and stays there for a specified minimum period of time; typically this is when the user 'hovers' the mouse over a control or other region of interest. However it is also possible to force a tooltip to display 'on demand', under the control of your program.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20tooltip_20on_20demand&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20a_20tooltip_20on_20demand</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20a_20tooltip_20on_20demand&amp;rev=1704414130&amp;do=diff</link>
        <description>Displaying a tooltip on demand

by Richard Russell, August 2012

 As a rule, a tooltip is displayed when the mouse moves into the tool's rectangle and stays there for a specified minimum period of time; typically this is when the user 'hovers' the mouse over a control or other region of interest. However it is also possible to force a tooltip to display 'on demand', under the control of your program.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20an_20icon_20on_20a_20pushbutton&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20an_20icon_20on_20a_20pushbutton</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20an_20icon_20on_20a_20pushbutton&amp;rev=1704414133&amp;do=diff</link>
        <description>Displaying an icon on a pushbutton

by Richard Russell, March 2016

 The main BBC BASIC for Windows help documentation tells you how to display a BMP image on a pushbutton but not how to display an icon (ICO file) instead. The simple code below shows how to do that:



        BM_SETIMAGE = &amp;F7
        BS_ICON = 64
        IMAGE_ICON = 1
        LR_LOADFROMFILE = 16

        INSTALL @lib$+&quot;WINLIB5&quot;
        ICOfile$ = @lib$+&quot;..\bbchelp.ico&quot;

        hButton = FN_button(&quot;&quot;, 100, 100, 96, 96, FN_se…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20animated_20gifs&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20animated_20gifs</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20animated_20gifs&amp;rev=1704414132&amp;do=diff</link>
        <description>Displaying animated GIFs

by Richard Russell, November 2007 amended January 2022

The easiest way of displaying an animated GIF is to use the imglib libraries supplied with BBC BASIC for Windows and BBC BASIC for SDL 2.0; see the relevant documentation.  The rest of this article describes alternative methods that may be used in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20inverse_20video&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20inverse_20video</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20inverse_20video&amp;rev=1704414132&amp;do=diff</link>
        <description>Displaying inverse video

 Inverse video is a display mode where text and graphics on a display are presented as a negative of their original appearance.



Inverse Video Text

by Jon Ripley, May 2006

 To read the current foreground and background text colours use the following code:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20program_20errors_20in_20a_20message_20box&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20program_20errors_20in_20a_20message_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20program_20errors_20in_20a_20message_20box&amp;rev=1704414131&amp;do=diff</link>
        <description>Displaying program errors in a message box

by Jon Ripley, July 2006

 To display a program error in a message box use code similar to the following:



        ON ERROR SYS &quot;MessageBox&quot;, @hwnd%, REPORT$ + &quot; at line &quot; + STR$ERL, &quot;Error&quot;, 48:QUIT



 If you replace</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20unicode_20text_20in_20a_20control&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20unicode_20text_20in_20a_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20unicode_20text_20in_20a_20control&amp;rev=1704414130&amp;do=diff</link>
        <description>Displaying Unicode text in a control

by Richard Russell, February 2012

 Versions 1.80 and later of LB Booster provide built-in support to output Unicode text to the mainwin, and to the printer using LPRINT, but not to GUI controls. In the case of controls other than a TEXTEDITOR it is quite easy to support Unicode output using a little</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=displaying_20unicode_20text_20in_20a_20graphicbox&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>displaying_20unicode_20text_20in_20a_20graphicbox</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=displaying_20unicode_20text_20in_20a_20graphicbox&amp;rev=1704414129&amp;do=diff</link>
        <description>Displaying Unicode text in a graphicbox

by Richard Russell, March 2015

 LB Booster provides built-in support to output Unicode text to the mainwin, and to the printer using LPRINT, but not to GUI controls. In the case of controls other than a TEXTEDITOR it is quite easy to support Unicode output using a little</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=distributing_20crunched_20libraries&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>distributing_20crunched_20libraries</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=distributing_20crunched_20libraries&amp;rev=1704414134&amp;do=diff</link>
        <description>Distributing crunched libraries

by Richard Russell, March 2010

 The libraries distributed with BBC BASIC for Windows are supplied in their original source form. This is mainly because an experienced BBC BASIC programmer might want to examine their code for ideas, or base new libraries on them. Admittedly, most of the supplied libraries contain 'terse' code, and are only minimally commented (mainly for reasons of speed and so they will fit in the trial version), but they are at least editable a…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=dlls_20compatible_20with_20lbb&amp;rev=1704653145&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-07T18:45:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>dlls_20compatible_20with_20lbb</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=dlls_20compatible_20with_20lbb&amp;rev=1704653145&amp;do=diff</link>
        <description>DLLs compatible with LBB

 LB Booster should be fully compatible with the following standard Windows DLLs. They have pre-assigned handles so do not need to be explicitly opened or closed in your programs:


 DLL
 handle
 ADVAPI32.DLL
 #advapi32
 COMCTL32.DLL</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=docking_20a_20dialogue_20box_20on_20the_20toolbar&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>docking_20a_20dialogue_20box_20on_20the_20toolbar</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=docking_20a_20dialogue_20box_20on_20the_20toolbar&amp;rev=1704414129&amp;do=diff</link>
        <description>Docking a dialogue box on the toolbar

by Richard Russell, December 2006

DO NOT USE THE CODE IN THIS ARTICLE, IT HAS BEEN REPORTED THAT IT CAN MAKE YOUR PROGRAM UNSTABLE

 A normal dialogue box is free to be moved anywhere on the desktop. This article describes how to 'dock' a dialogue box to a program's toolbar and fix it there so it tracks window movements etc.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=downloading_20a_20file_20from_20a_20url&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>downloading_20a_20file_20from_20a_20url</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=downloading_20a_20file_20from_20a_20url&amp;rev=1704414132&amp;do=diff</link>
        <description>Downloading a file from a URL

by Richard Russell, August 2007; amended July 2009

 The simplest method of downloading a file (e.g. a web page) from an internet URL is to use the URLDownloadToFile API function as described in the main documentation. The following program segment illustrates how to do that:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=drawing_20a_20transparent_20bitmap&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>drawing_20a_20transparent_20bitmap</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=drawing_20a_20transparent_20bitmap&amp;rev=1704414131&amp;do=diff</link>
        <description>Drawing a Transparent Bitmap

Introduction by Richard Russell

 The commands built into BBC BASIC for Windows for displaying a bitmap image (*DISPLAY and *MDISPLAY) can only display an opaque image, i.e. anything 'underneath' the image will be obliterated. You may sometimes want to display a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=drawing_20outside_20the_20window&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>drawing_20outside_20the_20window</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=drawing_20outside_20the_20window&amp;rev=1704414130&amp;do=diff</link>
        <description>Drawing outside the window

by Richard Russell, December 2006

 When you initialise BBC BASIC's output window using MODE or VDU 23,22 not only is the window's size set to the appropriate dimensions but the graphics viewport is also initialised to the same area. This is done for reasons of efficiency, so BB4W doesn't waste time drawing graphics outside of the window where they cannot be seen. This is particularly true of statements like</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=drawing_20text_20with_20a_20translucent_20dropshadow&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>drawing_20text_20with_20a_20translucent_20dropshadow</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=drawing_20text_20with_20a_20translucent_20dropshadow&amp;rev=1704414129&amp;do=diff</link>
        <description>Drawing text with a translucent dropshadow

by Richard Russell, October 2007

 It is straightforward to draw text with an opaque dropshadow: you simply draw the 'shadow' text first (probably in a suitable shade of grey) then draw the foreground text on top, offset by a few pixels, in whatever colour you want. The effect can be acceptable, particularly when drawn on a uniformly-coloured background, but isn't very realistic when drawn over something like a picture. Ideally in that case you should …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=drawing_rounded_rectangles&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>drawing_rounded_rectangles</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=drawing_rounded_rectangles&amp;rev=1704414130&amp;do=diff</link>
        <description>Drawing rounded rectangles

by Richard Russell, January 2021

Neither BBC BASIC for Windows nor BBC BASIC for SDL 2.0 supports drawing anti-aliased rounded rectangles (that is, boxes with radiused corners).  Fortunately it is easy enough to decompose that shape into simpler components (straight lines and 90° arcs) which can be drawn using the supplied anti-aliased graphics libraries (</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=drawing_to_an_in-memory_bitmap_texture&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>drawing_to_an_in-memory_bitmap_texture</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=drawing_to_an_in-memory_bitmap_texture&amp;rev=1704414129&amp;do=diff</link>
        <description>Drawing to an in-memory bitmap/texture

by Richard Russell, June 2020

By default, text and graphics output is displayed in the 'main' (output) window.  The supplied MULTIWIN library (available for both BBC BASIC for Windows and BBC BASIC for SDL 2.0</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=effect_20of_20get_20and_20input_20on_20event_20handling&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>effect_20of_20get_20and_20input_20on_20event_20handling</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=effect_20of_20get_20and_20input_20on_20event_20handling&amp;rev=1704414129&amp;do=diff</link>
        <description>Effect of GET and INPUT on event handling

by Jon Ripley and Richard Russell, April 2007

 The functions GET and GET$, and the statement INPUT, can adversely affect the handling of events (e.g. ON CLOSE, ON MOUSE etc.) by your program. This is because whilst they are waiting for user input no events will be processed.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=effect_20of_20menu_20bar_20on_20window_20size&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>effect_20of_20menu_20bar_20on_20window_20size</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=effect_20of_20menu_20bar_20on_20window_20size&amp;rev=1704414129&amp;do=diff</link>
        <description>Effect of menu bar on window size

by Richard Russell, May 2006

 Adding a menu bar to your output window has the effect of reducing the size of the 'client area', i.e. the area available for your program's output. So, assuming for example that your program selects</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=ejecting_20a_20removable_20disk&amp;rev=1704414132&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ejecting_20a_20removable_20disk</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=ejecting_20a_20removable_20disk&amp;rev=1704414132&amp;do=diff</link>
        <description>Ejecting a removable disk

by Richard Russell, November 2007

 The routine listed below will eject a disk (if any) in the specified drive; it requires Windows NT4, Windows 2000, Windows XP or Windows Vista. It should be called using code similar to the following:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=embedding_20resources_20in_20different_20folders&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>embedding_20resources_20in_20different_20folders</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=embedding_20resources_20in_20different_20folders&amp;rev=1704414129&amp;do=diff</link>
        <description>Embedding resources in different folders

by Richard Russell, July 2007



Background


 BBC BASIC for Windows defines two system variables @dir$ and @lib$ which contain the paths to two important directories; @dir$ is the directory containing the program itself (whether a BASIC program file, .BBC or .BAS, or a 'compiled' executable, .EXE) and</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=emulating_20the_20c_20assignment_20function&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>emulating_20the_20c_20assignment_20function</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=emulating_20the_20c_20assignment_20function&amp;rev=1704414129&amp;do=diff</link>
        <description>Emulating the C assignment function

by Richard Russell, July 2009

 In the C programming language, an assignment operation such as:




        variable = expression


can be used either as a statement or as a function. When used as a function, it returns the new value of the variable. Whilst at first sight this might not seem very useful, it is particularly convenient in the case of a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=enabling_20word-wrap_20in_20a_20texteditor_20_28lbb_29&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>enabling_20word-wrap_20in_20a_20texteditor_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=enabling_20word-wrap_20in_20a_20texteditor_20_28lbb_29&amp;rev=1704414129&amp;do=diff</link>
        <description>Enabling word-wrap in a texteditor (LBB)

by Richard Russell, February 2016

 The Liberty BASIC texteditor control does not support word-wrap at all, but in LB Booster word-wrapping may be enabled using stylebits:



  texteditor #w.te, 10, 10, 280, 280
  stylebits #w.te, 0, _ES_AUTOHSCROLL or _WS_HSCROLL, 0, 0
  open &quot;Wordwrap test&quot; for window as #w
  #w.te &quot;!font Arial 0 28&quot;
  #w.te &quot;The quick brown fox jumps over the lazy dog's tail.&quot;
  wait</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=encoding_20text_20into_20base64&amp;rev=1704414129&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>encoding_20text_20into_20base64</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=encoding_20text_20into_20base64&amp;rev=1704414129&amp;do=diff</link>
        <description>Encoding Text into Base64

Encoding Text into Base64

 It can be useful to encode a text string into a base 64 representation. For example when passing usernames and passwords to an SMTP server the request and response are both done using base 64.
 The encoding is done by taking 3</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=enumerating_20serial_20ports&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>enumerating_20serial_20ports</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=enumerating_20serial_20ports&amp;rev=1704414131&amp;do=diff</link>
        <description>Enumerating serial ports

by Richard Russell, May 2014

 The program below uses Windows Management Instrumentation (WMI) to enumerate the serial I/O ports (if any):



        INSTALL @lib$+&quot;COMLIB&quot;
        PROC_cominitlcid(1033)

        ON CLOSE PROCcleanup : QUIT
        ON ERROR PROCcleanup : SYS &quot;MessageBox&quot;, @hwnd%, REPORT$, 0, 0 : END

        objSWbemLocator% = FN_createobject(&quot;WbemScripting.SWbemLocator&quot;)

        objWMIService% = FN_getobject(objSWbemLocator%, \
        \              …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=enumerating_20the_20installed_20printers&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>enumerating_20the_20installed_20printers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=enumerating_20the_20installed_20printers&amp;rev=1704414128&amp;do=diff</link>
        <description>Enumerating the installed printers

by Richard Russell, February 2014

 The following program will list the installed printers:



        SYS &quot;LoadLibrary&quot;, &quot;WINSPOOL.DRV&quot; TO winspool%
        SYS &quot;GetProcAddress&quot;, winspool%, &quot;EnumPrintersA&quot; TO EnumPrinters%

        SYS EnumPrinters%, 6, 0, 4, 0, 0, ^needed%, ^returned%
        DIM buffer% needed%
        SYS EnumPrinters%, 6, 0, 4, buffer%, needed%, ^needed%, ^returned%
        IF returned% = 0 PRINT &quot;No printers&quot; : END

        FOR p% = 0 TO…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=example_20property_20sheet&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>example_20property_20sheet</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=example_20property_20sheet&amp;rev=1704414131&amp;do=diff</link>
        <description>Example property sheet

by Richard Russell, October 2015

 The main BBC BASIC for Windows Help documentation contains information on how to create a Property Sheet, but no demonstration program is supplied. For those who prefer to adapt an existing program rather than to write their own from scratch, here is an example of a property sheet in action.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=exceeding_20the_20limit_20of_208_20open_20files&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>exceeding_20the_20limit_20of_208_20open_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=exceeding_20the_20limit_20of_208_20open_20files&amp;rev=1704414128&amp;do=diff</link>
        <description>Exceeding the limit of 8 open files

by Richard Russell, October 2015

 Normally only a maximum of eight files may be open simultaneously in BBC BASIC for Windows; an attempt to open a ninth file will result in the Too many open files error (ERR = 192). It is possible to work around this limitation by opening-and-closing the file for each transaction (so that only one file is open at a time), for example to write a record to a file one might do:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=extracting_20a_20file_27s_20thumbnail&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>extracting_20a_20file_27s_20thumbnail</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=extracting_20a_20file_27s_20thumbnail&amp;rev=1704414128&amp;do=diff</link>
        <description>Extracting a file's thumbnail

by Richard Russell, July 2007

 Several file types can have associated thumbnail images, which are displayed (for example) in Windows Explorer's Thumbnails view. Examples of such file types are image files (e.g. BMP, GIF, JPEG), PowerPoint files, Word and Excel files (when the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=faking_20keyboard_20input&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>faking_20keyboard_20input</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=faking_20keyboard_20input&amp;rev=1704414130&amp;do=diff</link>
        <description>Faking keyboard input

by Richard Russell, September 2007

 In special circumstances you may wish to 'automate' another application, that is to control it from your BASIC program rather then via user input (e.g. from the keyboard). Ideally you would do that through an official 'COM automation' interface, such as is provided by several Microsoft applications; the main</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=fast_variables&amp;rev=1704414136&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fast_variables</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=fast_variables&amp;rev=1704414136&amp;do=diff</link>
        <description>Fast variables

by Richard Russell, June 2020

A 'fast' variable is stored as a token in the range &amp;18 to &amp;1F, followed by two bytes to be interpreted as a 16-bit number (little-endian). This number indexes a 4-byte 'slot' pre-allocated at the start of the heap; some variables use more than one slot. So to find the memory address of a fast variable multiply the 16-bit index by 4 and add it to LOMEM. Some slots are never used and are 'wasted', because their index would include a disallowed byte.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=fetching_20a_20secure_20web_20page&amp;rev=1742742819&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-23T15:13:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fetching_20a_20secure_20web_20page</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=fetching_20a_20secure_20web_20page&amp;rev=1742742819&amp;do=diff</link>
        <description>Fetching a secure web page

by Richard Russell, July 2009, updated July 2018 and March 2025

The procedure listed below fetches the contents of a web resource to a specified file; it uses the code listed in the BBC BASIC for Windows manual (it also runs in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=filenames_20containing_20spaces&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>filenames_20containing_20spaces</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=filenames_20containing_20spaces&amp;rev=1704414128&amp;do=diff</link>
        <description>Filenames containing spaces

by Richard Russell, May 2006

 You don't need to take any special precautions when using OPENIN, OPENOUT or OPENUP to access files whose names (or paths) contain one or more spaces:




        filename$ = &quot;Filename containing spaces&quot;
        file% = OPENIN(filename$)
        file% = OPENUP(filename$)
        file% = OPENOUT(filename$)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20drive_20serial_20numbers&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20drive_20serial_20numbers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20drive_20serial_20numbers&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding drive serial numbers

by Richard Russell, October 2015

 Disk drives (including internal and external hard drives, USB flash drives etc.) have two kinds of serial number. One is the volume serial number which is created when the drive is formatted, and can later be changed, and the other is the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20application_20associated_20with_20an_20extension&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20application_20associated_20with_20an_20extension</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20application_20associated_20with_20an_20extension&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding the application associated with an extension

by J.G.Harston, August 2008

 The application associated with a particular file extension (actually, the command used to launch or open a file) is stored in the system registry. This associated command can be found with the following code:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20bbc_20basic_20installation_20directory&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20bbc_20basic_20installation_20directory</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20bbc_20basic_20installation_20directory&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding the BBC BASIC installation directory

by Jon Ripley, May 2006, rewritten February 2008

 To find the installation directory of BBC BASIC for Windows use the following FN_ReadBB4WInstallPath function which takes no parameters and returns a path to where BBC BASIC is installed or an empty string if no installation is found:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20cpu_20usage&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20cpu_20usage</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20cpu_20usage&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding the CPU usage

by Richard Russell, October 2011

 The code listed below reports, once per second, the current total CPU usage:


        *FLOAT 64

        DIM IdleTime{l%,h%}, KernelTime{l%,h%}, UserTime{l%,h%}

        idletime = 0
        kerneltime = 0
        usertime = 0
        REPEAT
          WAIT 100
          SYS &quot;GetSystemTimes&quot;, IdleTime{}, KernelTime{}, UserTime{}

          oldidletime = idletime
          oldkerneltime = kerneltime
          oldusertime = usertime
       …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20current_20user_20name&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20current_20user_20name</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20current_20user_20name&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding the current user name

by Richard Russell, October 2010

 To find the user name for the current thread use this function:


        DEF FNusername
        LOCAL name%, size%
        size% = 255
        DIM name% LOCAL size%
        SYS &quot;GetUserName&quot;, name%, ^size%
        = $$name%</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20default_20national_20language&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20default_20national_20language</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20default_20national_20language&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding the default national language

by Richard Russell, March 2014

 You can discover the national language for which your PC is configured by default as follows:

 
        SYS &quot;GetSystemDefaultLCID&quot; TO lcid%
        PRINT ~lcid%


The hexadecimal code displayed can be related to the language according to</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20free_20space_20on_20a_20disk&amp;rev=1704414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20free_20space_20on_20a_20disk</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20free_20space_20on_20a_20disk&amp;rev=1704414128&amp;do=diff</link>
        <description>Finding the free space on a disk

by Richard Russell, October 2006

 If you need to find out the amount of free space on a disk drive you can do that quite easily:




        drive$ = &quot;C:\&quot;
        SYS &quot;GetDiskFreeSpace&quot;, drive$, ^SpC%, ^BpS%, ^Free%, ^Total%
        gbytes_total = SpC% * BpS% * Total% / 2^30
        gbytes_free  = SpC% * BpS% * Free% / 2^30</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20host_20ip_20address&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20host_20ip_20address</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20host_20ip_20address&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the host IP address

by Richard Russell, May 2007

 It is easy to discover the host PC's network name using the FN_gethostname function in the SOCKLIB library, but there is no equivalent function for discovering its IP (Internet Protocol) address. However that can easily be achieved using a little code:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20iso_20week_20number&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20iso_20week_20number</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20iso_20week_20number&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the ISO week number

by Richard Russell, November 2015

 The code listed below finds the ISO week number (or year and week) corresponding to a given date:


        INSTALL @lib$+&quot;DATELIB&quot;

        PRINT FN_ISOweek(1,1,2005)
        PRINT FN_ISOweek(2,1,2005)
        PRINT FN_ISOweek(31,12,2005)
        PRINT FN_ISOweek(31,12,2006)
        PRINT FN_ISOweek(1,1,2007)
        PRINT FN_ISOweek(30,12,2007)
        PRINT FN_ISOweek(31,12,2007)
        PRINT FN_ISOweek(1,1,2008)
        PRINT …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20last_20character_20read_20from_20a_20file&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20last_20character_20read_20from_20a_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20last_20character_20read_20from_20a_20file&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the last character read from a file

by Richard Russell, January 2012

 Occasionally you may want to find out what was the last character read from a file (without the overhead of backspacing the file pointer and reading it again). For example, if you read a string from a file using</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20mac_20address&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20mac_20address</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20mac_20address&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the MAC address

by Richard Russell, May 2007

 This article lists no fewer than five different methods of discovering the MAC address (Media Access Control address or physical address) of one or more network adaptors in the host system. The MAC address can be useful, amongst other things, as a unique identifier of the host PC. Each method has its own strengths and weaknesses.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20mime_20type_20of_20a_20file&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20mime_20type_20of_20a_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20mime_20type_20of_20a_20file&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the MIME type of a file

by Jon Ripley, May 2007

 To read the MIME type of a file call “FN_GetMIMEType” passing it a file extension, for example:



        PRINT &quot;The MIME type of a .html file is &quot;;FN_GetMIMEType(&quot;html&quot;)



 The code for</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20modulus_20of_20part_20of_20an_20array&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20modulus_20of_20part_20of_20an_20array</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20modulus_20of_20part_20of_20an_20array&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the modulus of part of an array

by Richard Russell, October 2013

 The MOD() function, when applied to an array, returns the square-root of the sum of the squares of the elements of the array (the so-called modulus). It may occasionally be useful to discover the modulus of only</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20parity_20of_20a_20number&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20parity_20of_20a_20number</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20parity_20of_20a_20number&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the parity of a number

by Richard Russell, March 2014

 The parity of an integer is determined by the number of set (i.e. 1) bits in its binary representation. If there are an even number of set bits the parity is even and if there are an odd number of set bits the parity is</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20partial_20sum_20of_20an_20array&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20partial_20sum_20of_20an_20array</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20partial_20sum_20of_20an_20array&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the partial sum of an array

by Richard Russell, July 2015

 The SUM() function returns the sum of all the elements in a numeric array, and it is much faster than summing the elements yourself in a loop. However you have no control over how many elements are summed: it is always the entire array. To find the sum of the first</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20size_20of_20an_20array_20in_20a_20structure&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20size_20of_20an_20array_20in_20a_20structure</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20size_20of_20an_20array_20in_20a_20structure&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the size of an array in a structure

by Richard Russell, January 2011

 You can discover the size (i.e. the number of dimensions and the maximum subscript for each dimension) of a regular array using the DIM function. For example consider an array declared as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20the_20version_20number&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20the_20version_20number</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20the_20version_20number&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding the version number

by Richard Russell, January 2010

You can discover the version number of BBC BASIC for Windows or BBC BASIC for SDL 2.0 using the following procedure:


        DEF FNversion
        LOCAL F%, V$
        F% = OPENOUT(@tmp$+&quot;version.txt&quot;)
        OSCLI &quot;OUTPUT &quot;+STR$F%
        *HELP
        *OUTPUT 0
        PTR #F% = 0
        INPUT #F%,V$
        CLOSE #F%
        = RIGHT$(V$,5)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20which_20items_20are_20selected_20in_20a_20list_20view&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20which_20items_20are_20selected_20in_20a_20list_20view</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20which_20items_20are_20selected_20in_20a_20list_20view&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding which items are selected in a List View

by Richard Russell, September 2010

 A significant difference between a List View and a List Box is that the former allows you to select multiple items whereas the latter only allows you to select a single</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_20which_20window_20has_20input_20focus&amp;rev=1704414127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_20which_20window_20has_20input_20focus</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_20which_20window_20has_20input_20focus&amp;rev=1704414127&amp;do=diff</link>
        <description>Finding which window has input focus

by Richard Russell, April 2010

 The WINLIB5 (and WINLIB5A) libaries contain the PROC_setfocus routine which allows you to set the input focus to a specified child window (or the main output window). However, there is no related function to return the handle of the window which currently has input focus.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_image_file_dimensions&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_image_file_dimensions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_image_file_dimensions&amp;rev=1704414126&amp;do=diff</link>
        <description>Finding image file dimensions

by Richard Russell, October 2018

The routines listed below will return the image dimensions (width and height, in pixels) of the most common image file formats (BMP, JPG, PNG and GIF).  If the file cannot be opened, the width and height parameters will be returned unchanged; if necessary this may be detected by initialising them to zero and checking their values on return.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=finding_sum_mod_partial_array&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>finding_sum_mod_partial_array</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=finding_sum_mod_partial_array&amp;rev=1704414111&amp;do=diff</link>
        <description>Finding the SUM or MOD of a partial array

by Richard Russell, January 2023

The SUM() and MOD() functions return the sum and modulus (square-root of the sum of the squares) respectively of a numeric array, and they are much faster than performing the calculations yourself in a loop.  However you have no control over which elements are operated on: it is always the entire array (remember that in BBC BASIC array indices are zero-based).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=fitting_20programs_20in_20the_20demo_20version&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fitting_20programs_20in_20the_20demo_20version</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=fitting_20programs_20in_20the_20demo_20version&amp;rev=1704414126&amp;do=diff</link>
        <description>Fitting programs in the demo version

by Richard Russell, June 2007 amended January 2014

This article applies to BBC BASIC for Windows version 5.95a or later only 

 The trial (evaluation) version of BBC BASIC for Windows provides, by default, 16 Kbytes (16384 bytes)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=fixing_20a_20bad_20library_20error&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fixing_20a_20bad_20library_20error</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=fixing_20a_20bad_20library_20error&amp;rev=1704414126&amp;do=diff</link>
        <description>Fixing a Bad library error

by Jon Ripley, August 2006

 If you get a “Bad library” error when installing a library or calling a program file then it is likely that the error occurred because the file in question is not a tokenised BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=flushing_20file_20buffers&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flushing_20file_20buffers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=flushing_20file_20buffers&amp;rev=1704414126&amp;do=diff</link>
        <description>Flushing file buffers

by Richard Russell, June 2010

 When you write to a sequential data file using PRINT# or BPUT# the data is buffered by BBC BASIC before being output to Windows (typically for storage on disk). This is done for reasons of performance, because transferring data in blocks is more efficient than transferring it one byte at a time. A similar process occurs when you are reading from a file.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=forcing_20a_20variable_20to_20exist&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>forcing_20a_20variable_20to_20exist</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=forcing_20a_20variable_20to_20exist&amp;rev=1704414126&amp;do=diff</link>
        <description>Forcing a variable to exist

by Richard Russell, May 2006

 Programs frequently need to contain a cleanup routine which gets called before the program quits. Such a routine may close files, remove open dialogue boxes, free Windows resources that have been allocated (e.g. memory or graphics objects) etc. So the routine will typically include code similar to the following:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=format&amp;rev=1704414140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>format</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=format&amp;rev=1704414140&amp;do=diff</link>
        <description>Format

by JGH, June 2006

 BBC BASIC programs are stored in a tokenised format. Most of the tokens used by different versions of BBC BASIC are the same, but extended tokens are different, and different versions have different line headers. The exception is</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=fscale&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>fscale</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=fscale&amp;rev=1704414135&amp;do=diff</link>
        <description>REM Expo .... Rev 2.0
      REM A J Tooth // October 2015

      *FLOAT64
      MODE 14 : OFF : COLOUR 132,50,0,0 : COLOUR 132 : CLS

      INPUT TAB(5,5);&quot;Enter a value; &quot;;X

      ResB = EXP(X)

      PRINT TAB(5,5);&quot;BBC version of EXP(&quot;;X;&quot;)=&quot;;ResB

      Res = FN_EXP(1.0*X)

      PRINT TAB(5,10);&quot;ASM version of EXP(&quot;;X;&quot;)= &quot;;Res

      a$=GET$
      QUIT
      REM End of Program ===============================================
      REM =======================================================…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=generating_20pseudo-random_20numbers&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>generating_20pseudo-random_20numbers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=generating_20pseudo-random_20numbers&amp;rev=1704414126&amp;do=diff</link>
        <description>Generating pseudo-random numbers

by Richard Russell, August 2006

 BBC BASIC supplies pseudo-random numbers in three formats:



	*  RND supplies a pseudo-random 32-bit integer
	*  RND(N) supplies a pseudo-random positive integer in the range 1 to N</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=getting_20connected_20and_20online&amp;rev=1704414126&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>getting_20connected_20and_20online</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=getting_20connected_20and_20online&amp;rev=1704414126&amp;do=diff</link>
        <description>Getting Connected and Online

by Malcolm Marten, August 2007

 The simple method of downloading a web page &quot;Downloading a file from a URL&quot; can fail if you are not connected or not online.

 While this sounds obvious, the nature of the Internet being a connected web makes this a little more complicated than you might think. The Windows environment has the concept of</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=getting_20the_20current_20line_20number&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>getting_20the_20current_20line_20number</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=getting_20the_20current_20line_20number&amp;rev=1704414125&amp;do=diff</link>
        <description>Getting the current line number

by Jon Ripley, Richard Russell, January 2012

 The FN_linenumber(!384) function returns the line number of the currently executing line of code as demonstrated below.



  12345 PRINT FN_linenumber(!384)
        END

        DEF FN_linenumber(E%)
        LOCAL p%% : p%% = PAGE
        WHILE ?p%% AND p%% + ?p%% &lt; (E% + PAGE - !340) p%% += ?p%% : ENDWHILE
        = (p%%?2*256+p%%?1)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=getting_20the_20current_20voice&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>getting_20the_20current_20voice</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=getting_20the_20current_20voice&amp;rev=1704414125&amp;do=diff</link>
        <description>Getting the current voice

by Richard Russell, March 2013

This article is specific to the SAPI5 speech system, typically installed on Windows 2000, XP and later

 The code below can be used to discover the currently selected voice name:


        voice$ = FN_getvaluestr(tts%, &quot;Voice.GetDescription&quot;)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=getting_20the_20user_20idle_20time&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>getting_20the_20user_20idle_20time</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=getting_20the_20user_20idle_20time&amp;rev=1704414125&amp;do=diff</link>
        <description>Getting the User Idle time

by Richard Russell, October 2011

 The User Idle time is the time since the user last interacted with the PC, for example by pressing a key or moving the mouse. It's useful for things like determining when to display a screensaver.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=graphics_20and_20games&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>graphics_20and_20games</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=graphics_20and_20games&amp;rev=1704414133&amp;do=diff</link>
        <description>Graphics and Games

Game programming

	*  Accessing two joysticks

General graphics

	*  Capturing the contents of a window
	*  Centering the graphics origin
	*  Converting graphics coordinates
	*  Creating a PNG file from a Windows icon
	*  Direct screen memory access
	*  Displaying a PNG or TIFF image
	*  Displaying animated GIFs
	*  Displaying inverse video
	*  Drawing rounded rectangles
	*  Drawing a Transparent Bitmap
	*  Drawing text with a translucent dropshadow
	*  Drawing outside the wi…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=guide_20to_20writing_20libraries&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>guide_20to_20writing_20libraries</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=guide_20to_20writing_20libraries&amp;rev=1704414133&amp;do=diff</link>
        <description>Guide to writing libraries

by Richard Russell, March 2010

Note: This article specifically applies to re-usable code libraries. Another use of the INSTALL statement is as a means of splitting a large program into modules. Several of the guidelines listed below</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=handling_20unsigned_2032-bit_20values&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>handling_20unsigned_2032-bit_20values</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=handling_20unsigned_2032-bit_20values&amp;rev=1704414125&amp;do=diff</link>
        <description>Handling unsigned 32-bit values

by Richard Russell, October 2006

 BBC BASIC's 32-bit integers are all signed, i.e. they represent values between -2147483648 (&amp;80000000) and +2147483647 (&amp;7FFFFFFF); values outside this range can only be represented by floating-point numbers. Occasionally you may want to treat a 32-bit integer as if it was unsigned, i.e. representing a value between zero (&amp;00000000) and +4294967295 (&amp;FFFFFFFF), for example this could be necessary when interpreting a UINT value r…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=handling_20very_20large_20numbers_20without_20using_20scientific_20notation&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>handling_20very_20large_20numbers_20without_20using_20scientific_20notation</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=handling_20very_20large_20numbers_20without_20using_20scientific_20notation&amp;rev=1704414125&amp;do=diff</link>
        <description>Handling very large numbers without using scientific notation

 BB4W, like most programming languages, can handle very large numbers - but only in floating-point notation. This is fine for normal usage, but what if you want to investigate the digits of such a number? For instance, you may be looking for patterns in the digits such as a sequence or groupings of similar digits (there are still folk out there looking for patterns in pi, out at the millionth decimal place!).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=hiding_20a_20window_20from_20a_20screenshot&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>hiding_20a_20window_20from_20a_20screenshot</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=hiding_20a_20window_20from_20a_20screenshot&amp;rev=1704414125&amp;do=diff</link>
        <description>Hiding a window from a screenshot

by Richard Russell, November 2014

 Suppose your program displays something which you would prefer the user not to be able to capture in a screenshot (e.g. using the Print Screen key). You can do that as follows:


        WDA_MONITOR = 1
        SYS &quot;SetWindowDisplayAffinity&quot;, @hwnd%, WDA_MONITOR</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=hiding_20confidential_20data&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>hiding_20confidential_20data</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=hiding_20confidential_20data&amp;rev=1704414124&amp;do=diff</link>
        <description>Hiding confidential data

by Richard Russell, March 2007

 BBC BASIC for Windows provides a convenient method of incorporating resource files within a 'compiled' executable, using the Embedded files feature of the Compile utility (or the “REM!Embed</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=high_20quality_20hardcopy_20output_20_28lbb_29&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>high_20quality_20hardcopy_20output_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=high_20quality_20hardcopy_20output_20_28lbb_29&amp;rev=1704414124&amp;do=diff</link>
        <description>High quality hardcopy output (LBB)

by Richard Russell, October 2015

 The article Improving the print quality describes one way of improving the quality of hardcopy output from LBB. An alternative approach is to use a large (normally) invisible window, of a sufficient size to achieve the desired quality, and then to send it to the printer using the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=high_20quality_20random_20number_20generation&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>high_20quality_20random_20number_20generation</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=high_20quality_20random_20number_20generation&amp;rev=1704414124&amp;do=diff</link>
        <description>High Quality Random Number Generation

by Richard Russell, March 2010

 Listed below are BBC BASIC implementations of two high performance Pseudo Random Number Generators: the WELL512A and WELL1024A algorithms developed in 2006 (see this Wikipedia article). They have state sizes of 512 bits and 1024 bits, and therefore sequence lengths of 2^512-1 and 2^1024-1, respectively. They both return 32-bit signed integer values, but these can easily be converted to other formats, for example using the co…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=home&amp;rev=1704414133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>home</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=home&amp;rev=1704414133&amp;do=diff</link>
        <description>home




----------

 This Wiki contains a set of technical articles for BBC BASIC for Windows programmers, in an easy-to-use form. You can simply browse the contents using the Navigation bar on the left, or search for a word or phrase by typing it into the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=how_20to_20avoid_20gotos&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>how_20to_20avoid_20gotos</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=how_20to_20avoid_20gotos&amp;rev=1704414124&amp;do=diff</link>
        <description>How to avoid GOTOs

by Richard Russell, November 2006, revised June 2007 and October 2011

 BBC BASIC includes the GOTO statement, but GOTOs are generally considered to be a bad thing. I won't repeat the arguments for avoiding GOTOs here: they are well explained in the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=how_20to_20display_20a_20hex_20dump_20of_20memory_20contents&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>how_20to_20display_20a_20hex_20dump_20of_20memory_20contents</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=how_20to_20display_20a_20hex_20dump_20of_20memory_20contents&amp;rev=1704414124&amp;do=diff</link>
        <description>How to display a hex dump of memory contents

by Jon Ripley, May 2011

 It is useful sometimes to be able to list the contents of a block of memory to examine it. This may be to help debug a problem, examine binary data in memory or one of many other uses.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=hyperbolic_functions_lbb&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>hyperbolic_functions_lbb</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=hyperbolic_functions_lbb&amp;rev=1704414123&amp;do=diff</link>
        <description>by Richard Russell, April 2018

Liberty BASIC doesn't include the hyperbolic trig functions (sinh, cosh, tanh etc.) as a built-in feature, but they can easily be synthesised as user-defined functions as follows:


function sinh(x)
    sinh = (exp(x) - exp(-x)) / 2
end function

function cosh(x)
    cosh = (exp(x) + exp(-x)) / 2
end function

function tanh(x)
    tanh = (exp(x) - exp(-x)) / (exp(x) + exp(-x))
end function

function coth(x)
    coth = (exp(x) + exp(-x)) / (exp(x) - exp(-x))
end fu…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=hyperbolic_functions&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>hyperbolic_functions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=hyperbolic_functions&amp;rev=1704414124&amp;do=diff</link>
        <description>by Richard Russell, April 2018

BBC BASIC doesn't include the hyperbolic trig functions (sinh, cosh, tanh etc.) as a built-in feature, but they can easily be synthesised as user-defined functions as follows:


      DEF FNsinh(x) = (EXP(x) - EXP(-x)) / 2
      DEF FNcosh(x) = (EXP(x) + EXP(-x)) / 2
      DEF FNtanh(x) = (EXP(x) - EXP(-x)) / (EXP(x) + EXP(-x))
      DEF FNcoth(x) = (EXP(x) + EXP(-x)) / (EXP(x) - EXP(-x))
      DEF FNsech(x) = 2 / (EXP(x) + EXP(-x))
      DEF FNcsch(x) = 2 / (EXP(…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=hyperlinks_20in_20text_20boxes&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>hyperlinks_20in_20text_20boxes</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=hyperlinks_20in_20text_20boxes&amp;rev=1704414123&amp;do=diff</link>
        <description>Hyperlinks in text boxes

by Richard Russell, January 2007

The code in this article is not applicable to Windows 9x, Windows Me or Windows NT4.

 On occasion you may want to incorporate clickable hyperlinks in some text displayed in a dialogue box or elsewhere. For example you may want to incorporate a web or email address in a page of help text. One way of doing that would be to write the text in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=improving_20the_20print_20quality&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>improving_20the_20print_20quality</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=improving_20the_20print_20quality&amp;rev=1704414124&amp;do=diff</link>
        <description>Improving the print quality

by Richard Russell, February 2014

 (see also High quality hardcopy output (LBB))

LB Booster uses a conventional double-buffered method of outputting graphics: objects, images, text etc. are drawn to a 'memory' bitmap which is then blitted to the screen when required. This has the advantage that graphics automatically 'stick', that is they are redrawn when a window is restored or uncovered, without any extra effort by the programmer.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=incorporating_20bookmarks_20in_20a_20program&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>incorporating_20bookmarks_20in_20a_20program</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=incorporating_20bookmarks_20in_20a_20program&amp;rev=1704414123&amp;do=diff</link>
        <description>Incorporating bookmarks in a program

by Richard Russell and Michael Hutton, July 2009

 The right-click context menu in the BBC BASIC for Windows IDE allows you to navigate around your program quickly and easily, by providing a means to 'jump' to the beginning of a specified function or procedure with just a couple of mouse clicks. However there may be circumstances when you would like to jump not to the beginning of a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=inputting_20real-time_20audio&amp;rev=1713548621&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-19T17:43:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>inputting_20real-time_20audio</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=inputting_20real-time_20audio&amp;rev=1713548621&amp;do=diff</link>
        <description>Inputting real-time audio

Most PCs provide the capability of inputting audio, typically either from a microphone or from a line-level input. This article describes how a BBC BASIC for SDL 2.0 or BBC BASIC for Windows program can read and process audio data from this source in real-time (i.e. without it having to be recorded to a file first).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=inserting_20characters_20into_20the_20keyboard_20buffer&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>inserting_20characters_20into_20the_20keyboard_20buffer</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=inserting_20characters_20into_20the_20keyboard_20buffer&amp;rev=1704414124&amp;do=diff</link>
        <description>Inserting characters into the keyboard buffer

by Richard Russell, July 2006

 On the BBC Microcomputer and some other Acorn computers you could insert a character into the keyboard buffer using the *FX 138 command. For example the following code would insert the character</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=installing_20both_20demo_20and_20full_20versions&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>installing_20both_20demo_20and_20full_20versions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=installing_20both_20demo_20and_20full_20versions&amp;rev=1704414124&amp;do=diff</link>
        <description>Installing both demo and full versions

by Richard Russell, May 2007

 If you want to write programs which will run with the free demo (evaluation) version of BBC BASIC for Windows you may well want to have easy access to that version on your desktop. At the same time you probably won't want to lose convenient access to the full version. Installing both versions, so that each is accessible via its own desktop shortcut, is quite straightforward and can be achieved as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=installing_20under_20wine&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>installing_20under_20wine</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=installing_20under_20wine&amp;rev=1704414125&amp;do=diff</link>
        <description>Installing under wine

by Jon Ripley, June 2007

 This article is written with Ubuntu, Kubuntu and other modern versions of Debian in mind. Download and installation information for other distributions is available download area of the wine web site.



Install Wine


 To install wine open a command shell by running</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=interpreter_20internal_20variables&amp;rev=1729540953&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-21T20:02:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>interpreter_20internal_20variables</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=interpreter_20internal_20variables&amp;rev=1729540953&amp;do=diff</link>
        <description>Interpreter internal variables

by Richard Russell, June 2009

 The table below lists the addresses and purposes of a number of memory locations used internally by the BBC BASIC for Windows interpreter. Only very rarely will a BASIC programmer be interested in these values, and only experienced programmers with a good understanding of the inner workings of the interpreter should attempt to use them. It will hardly ever be required to write to these locations, and doing so without a full understa…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=interrogating_20the_20audio_20mixer&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>interrogating_20the_20audio_20mixer</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=interrogating_20the_20audio_20mixer&amp;rev=1704414123&amp;do=diff</link>
        <description>Interrogating the audio mixer

by Richard Russell, June 2010

Note: On Windows Vista and Windows 7 each running application has its own independent audio mixer. The code listed here will work correctly, but the mixer interrogated is that for the specific application.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=islamic_20calendar_20conversion_20_28lbb_29&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>islamic_20calendar_20conversion_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=islamic_20calendar_20conversion_20_28lbb_29&amp;rev=1704414123&amp;do=diff</link>
        <description>Islamic calendar conversion (LBB)

by Richard Russell, August 2015

 The code below shows how to convert between Western (Gregorian) and Islamic (Hijri) dates; it requires Windows Vista or later:




      CAL.HIJRI = 6
      global CAL.HIJRI

      struct SYSTEMTIME, wYear as word, wMonth as word, _
        wDayOfWeek as word, wDay as word, wHour as word, _
        wMinute as word, wSecond as word, wMilliseconds as word

      struct CALDATETIME, CalId as long, Era as long, _
        Year as lo…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=lambdas_anonymous_functions&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lambdas_anonymous_functions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=lambdas_anonymous_functions&amp;rev=1704414125&amp;do=diff</link>
        <description>Lambdas (anonymous functions)

by Richard Russell, March 2022

BBC BASIC does not 'officially' support lambdas (anonymous functions), in that the language itself does not incorporate that concept.  But as is so often the case the functionality can quite easily be synthesised from lower-level operations.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=large_20fonts_20and_20the_20text_20cursor&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>large_20fonts_20and_20the_20text_20cursor</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=large_20fonts_20and_20the_20text_20cursor&amp;rev=1704414123&amp;do=diff</link>
        <description>Large fonts and the text cursor

by Richard Russell, December 2007

 BBC BASIC for Windows normally displays a text cursor (caret), by default consisting of a flashing underscore, the main purpose of which is to indicate to the user where a character typed at the keyboard will appear (for example when entering information in response to an</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=lb_20booster&amp;rev=1704414134&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lb_20booster</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=lb_20booster&amp;rev=1704414134&amp;do=diff</link>
        <description>LB Booster

----------


 This Wiki contains a set of technical articles for Liberty BASIC and Just BASIC programmers using LB Booster (LBB) to develop and/or compile their applications. You can simply browse the contents using the Contents list below, or search for a word or phrase by typing it into the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=libraries&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>libraries</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=libraries&amp;rev=1704414124&amp;do=diff</link>
        <description>Libraries

What is a library and why are libraries important? 

	*  Library (Wikipedia)
	*  Code reuse (Wikipedia)

Writing Libraries

	*  Checking if a library is INSTALLed
	*  Commenting library code
	*  Distributing crunched libraries
	*  Guide to writing libraries
	*  Fixing a 'Bad library' error
	*  Preventing a library from being run
	*  Using DATA statements in libraries

Supplied Libraries

	*  ARRAYLIB - Array and matrix functions
	*  ASMLIB - Assembler extensions (CMOV and SSE)
	*  ASM…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=limiting_20the_20size_20of_20a_20window&amp;rev=1704414125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>limiting_20the_20size_20of_20a_20window</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=limiting_20the_20size_20of_20a_20window&amp;rev=1704414125&amp;do=diff</link>
        <description>Limiting the size of a window

by Richard Russell, October 2007

 Normally windows are either fully resizable by the user (by dragging a corner or edge), which is the default, or are a fixed size (see the Help documentation under Fixing the window size). However, occasionally you may want to allow the user to resize the window, but only within certain limits. You can do that by handling the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=linked_20lists_20using_20structures&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>linked_20lists_20using_20structures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=linked_20lists_20using_20structures&amp;rev=1704414123&amp;do=diff</link>
        <description>Linked lists using structures

by Richard Russell, May 2006

 Structures provide a convenient means to create and manipulate linked lists, because they allow the content of each node in the list to be clearly described.

 I will illustrate the steps required to create, search and read a linked list of structures using the example of an</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=list_20view_20with_20header_20tooltips&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>list_20view_20with_20header_20tooltips</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=list_20view_20with_20header_20tooltips&amp;rev=1704414122&amp;do=diff</link>
        <description>List View with header tooltips

by Richard Russell, April 2011

 The article List View with tooltips shows how to add tooltips to the main body of a List View control. Occasionally you may instead want to add tooltips to the column headers; the program listed below shows one way of achieving that. Basically it differs from the other program only in using the Header Control handle</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=list_20view_20with_20tooltips&amp;rev=1704414124&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>list_20view_20with_20tooltips</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=list_20view_20with_20tooltips&amp;rev=1704414124&amp;do=diff</link>
        <description>List View with tooltips

by Richard Russell, April 2011

 A List View control has built-in support for tooltips, but this feature requires your program to respond to the LVN_EX_INFOTIP notification, and in BBC BASIC for Windows that is only possible using assembler code.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20available_20voices&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20available_20voices</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20available_20voices&amp;rev=1704414123&amp;do=diff</link>
        <description>Listing available voices

by Richard Russell, October 2008

 The supplied example program SPEAK.BBC provides the capability of choosing the 'voice' to be used (for example Microsoft Sam or Microsoft Mary), however you need to know in advance which voices are available; if you select one which isn't available it won't work. This is a particular problem given that the available voices may differ between versions of Windows, for example Windows Vista may only have</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20drives_20and_20types&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20drives_20and_20types</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20drives_20and_20types&amp;rev=1704414122&amp;do=diff</link>
        <description>Listing drives and types

by Michael Hicks, May 2007

 The Microsoft Windows API function “GetLogicalDriveStrings” enables a user to determine what drives are connected to a computer. The function “GetDriveType” enables the user to determine the type of the drive. The following is an example of the use of these functions.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20files_20on_20an_20ftp_20server&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20files_20on_20an_20ftp_20server</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20files_20on_20an_20ftp_20server&amp;rev=1704414122&amp;do=diff</link>
        <description>Listing files on an FTP server

by Richard Russell, April 2013

 The code below list the files on an FTP server.



        FTP_PORT = 21 : REM default for FTP servers
        _INTERNET_SERVICE_FTP = 1
        OPEN_TYPE_PRECONFIG = 0 : REM use registry configuration
        OPEN_TYPE_DIRECT = 1 : REM direct to net
        OPEN_TYPE_PROXY = 3 : REM via named proxy
        OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 : REM prevent using Java

        SYS &quot;LoadLibrary&quot;, &quot;WININET.DLL&quot; TO wininet%
     …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20other_20windows_20and_20applications&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20other_20windows_20and_20applications</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20other_20windows_20and_20applications&amp;rev=1704414122&amp;do=diff</link>
        <description>Listing other windows and applications

By Michael Hicks, June 2007, amended by Richard Russell, March 2011

 The Microsoft Windows API call “EnumWindows” enables a user to find all the windows which are open. This function requires the use of a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20processes&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20processes</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20processes&amp;rev=1704414122&amp;do=diff</link>
        <description>Listing processes

by Michael Hicks, June 2007

 The Microsoft Windows API call “CreateToolhelp32Snapshot” takes, as its name suggests, a “snapshot” of the processes (programs) running. Each process may spawn multiple “threads”. This code lists the running processes and provides various other details of the process such as the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20contents_20of_20a_20directory_20_28unicode_29&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20the_20contents_20of_20a_20directory_20_28unicode_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20the_20contents_20of_20a_20directory_20_28unicode_29&amp;rev=1704414121&amp;do=diff</link>
        <description>Listing the contents of a directory (Unicode)

by Richard Russell, September 2014

See also Listing the contents of a directory

 The main help documentation contains the routine PROClistdirectory which lists all the files in the current directory, but it only returns ANSI filenames. If a file or directory contains a non-ANSI character (e.g. from a different alphabet) it will be returned as a question mark. If you want to see these names with their true characters you can use the routine listed …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20contents_20of_20a_20directory&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20the_20contents_20of_20a_20directory</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20the_20contents_20of_20a_20directory&amp;rev=1704414122&amp;do=diff</link>
        <description>Listing the contents of a directory

by Richard Russell, March 2010

 The main BBC BASIC for Windows documentation explains how to list the contents of a disk directory and more detail is provided in the article Scanning a Directory (Reading Directory Entries), but both require the code to be adapted to the needs of the programmer. Some dialects of BASIC provide a built-in means of extracting the contents of a directory to a string array, for example Liberty Basic's</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20line_20an_20error_20occurs_20in_20on_20error&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20the_20line_20an_20error_20occurs_20in_20on_20error</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20the_20line_20an_20error_20occurs_20in_20on_20error&amp;rev=1704414121&amp;do=diff</link>
        <description>Listing the line an error occurs in ON ERROR

by Jon Ripley, May 2011

 The detokeniser function documented on this wiki allows us to write an ON ERROR statement that lists the source code of the errant line when an error occurs. The FNErrorLine function returns the source code of the line the last error occurred in.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=listing_20the_20midi_20output_20devices&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>listing_20the_20midi_20output_20devices</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=listing_20the_20midi_20output_20devices&amp;rev=1704414121&amp;do=diff</link>
        <description>Listing the MIDI output devices

by Richard Russell, May 2006

The code below will list to the screen all the available MIDI output devices:


        DIM  moc{ \
        \    wMid{l&amp;,h&amp;}, \ int16
        \    wPid{l&amp;,h&amp;}, \ int16
        \    vDriverVersion%, \ int32
        \    szPname&amp;(31), \ string
        \    wTechnology{l&amp;,h&amp;}, \ int16
        \    wVoices{l&amp;,h&amp;}, \ int16
        \    wNotes{l&amp;,h&amp;}, \ int16
        \    wChannelMask{l&amp;,h&amp;}, \ int16
        \    dwSupport% \ int32
       …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=loading_20a_20bbc_20micro_20style_20bitmap&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>loading_20a_20bbc_20micro_20style_20bitmap</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=loading_20a_20bbc_20micro_20style_20bitmap&amp;rev=1704414121&amp;do=diff</link>
        <description>Loading a BBC Micro style bitmap

 Whilst BBC Basic for windows can load and display Windows style bitmaps natively, 
 no capability is provided to load legacy screen data from BBC BASIC on other platforms
 unless it is first converted into a intermediate format Windows can understand.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=loading_20a_20gif_20or_20jpeg_20image&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>loading_20a_20gif_20or_20jpeg_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=loading_20a_20gif_20or_20jpeg_20image&amp;rev=1704414121&amp;do=diff</link>
        <description>Loading a GIF or JPEG image

by Richard Russell, September 2008

 The main Help documentation describes how to display a GIF or JPEG image on the main output window, but you may wish to perform other operations on an image such as accessing its data or displaying it in a static control. In such cases you are likely to need a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=loading_20a_20png_20or_20tiff_20image&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>loading_20a_20png_20or_20tiff_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=loading_20a_20png_20or_20tiff_20image&amp;rev=1704414121&amp;do=diff</link>
        <description>Loading a PNG or TIFF image

by Richard Russell, October 2008, revised November 2010 and January 2012

 The article Loading a GIF or JPEG image lists a replacement for the LoadImage API which works for JPEG, GIF, ICO, EMF and WMF images as well as for BMP images. However two common still-image formats not supported by that function are</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=loading_20bfont_20files&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>loading_20bfont_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=loading_20bfont_20files&amp;rev=1704414120&amp;do=diff</link>
        <description>Loading BFont files

 8×8 bitmap character definitions (called BFonts) are defined with VDU 23 and read with OSWORD 10. They can be saved as BFont files (such as these) as the sequences of eight bytes that define each character.

 These BFont files can be loaded to define characters, and code using VDU similar to the following is often used:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=lowering_himem_proc_fn&amp;rev=1720269608&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-06T12:40:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lowering_himem_proc_fn</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=lowering_himem_proc_fn&amp;rev=1720269608&amp;do=diff</link>
        <description>Lowering HIMEM in a PROC/FN

by Richard Russell, July 2024

One way of reserving a block of memory is to lower HIMEM, this frees up the region between the new value of HIMEM and the old value of HIMEM (-1), for example to contain assembly language code or for any other purpose.  A specific advantage of this method is that the memory region thus reserved is maintained throughout the rest of the 'session', even if new programs are loaded, unless HIMEM is raised again.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=making_20a_20text_20window_20read-only_20_28lbb_29&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>making_20a_20text_20window_20read-only_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=making_20a_20text_20window_20read-only_20_28lbb_29&amp;rev=1704414120&amp;do=diff</link>
        <description>Making a Text Window read-only (LBB)

by Richard Russell, September 2016

 A TEXTEDITOR control (or a TEXTBOX) can easily be made read-only using the _ES_READONLY stylebit, but this doesn't work with a Text Window. You can achieve the desired result using the code below:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=making_20the_20title_20bar_20opaque_20_28lbb_29&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>making_20the_20title_20bar_20opaque_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=making_20the_20title_20bar_20opaque_20_28lbb_29&amp;rev=1704414120&amp;do=diff</link>
        <description>Making the title bar opaque (LBB)

by Richard Russell, June 2016

 In Windows Vista and Windows 7, by default, the title bar and other non-client areas of a window are translucent, and the background shows through to a degree (albeit blurred). This Aero Glass</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=manipulating_20filenames_20and_20pathnames&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>manipulating_20filenames_20and_20pathnames</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=manipulating_20filenames_20and_20pathnames&amp;rev=1704414120&amp;do=diff</link>
        <description>Manipulating filenames and pathnames

by Jonathan Harston

 Here are some code fragments and routines to manipulate various filenames and pathnames.



Root directory

FNf_root() extracts the root directory from the supplied path. You can't just look for a colon specifying a drive, as the program may have been run with a Uniform Naming Convention path (see</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=manual&amp;rev=1704414135&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>manual</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=manual&amp;rev=1704414135&amp;do=diff</link>
        <description>Manual

Help documentation

	*  Index
	*  Introduction and Overview
	*  Command and Editing Window
	*  General Information
	*  Graphics and Colours
	*  Keywords (ABS to ENVELOPE)
	*  Keywords (EOF# to LOMEM)
	*  Keywords (MID$ to PRINT)
	*  Keywords (PRINT# to WIDTH)
	*  VDU Emulation
	*  Operating System Interface
	*  Disk Files
	*  The Assembler
	*  Reference Information
	*  Error Messages and Codes
	*  Format of Data in Memory
	*  Accessing the Windows API
	*  Serial and Parallel I/O
	*  Libr…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=marking_20up_20bbc_20basic_20program_20code&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>marking_20up_20bbc_20basic_20program_20code</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=marking_20up_20bbc_20basic_20program_20code&amp;rev=1704414119&amp;do=diff</link>
        <description>Marking up BBC BASIC program code

By JGH, May-2006



Line continuation character (backslash)


 When a backslash line continuation character is used at the end of a line in a block of example code, a space must be added after it otherwise it will be interpreted as a WikiText line continuation.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=marquee_20style_20progress_20bar_20_28win_20xp_20and_20above_29&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>marquee_20style_20progress_20bar_20_28win_20xp_20and_20above_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=marquee_20style_20progress_20bar_20_28win_20xp_20and_20above_29&amp;rev=1704414119&amp;do=diff</link>
        <description>Marquee Style Progress Bar (Win XP and above)

by Michael Hutton. May 2009

 This style of progress bar is useful to show when you don't know the total time a process may take but you would like to inform the user something is going on. It requires Windows XP or above. See</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=memory_20usage_20monitor&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>memory_20usage_20monitor</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=memory_20usage_20monitor&amp;rev=1704414119&amp;do=diff</link>
        <description>Memory usage monitor

by Richard Russell, May 2007

This facility is now more conveniently available as an Add-In Utility

 It is sometimes useful to be able to monitor memory usage (for example heap and stack size) while a program is running. This can alert you to problems like a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=minimizing_20sound_20clicks&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>minimizing_20sound_20clicks</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=minimizing_20sound_20clicks&amp;rev=1704414119&amp;do=diff</link>
        <description>Minimizing sound clicks

by Richard Russell, January 2010

 When generating music using the SOUND statement, clicks may sometimes be audible at the start and/or end of notes. These clicks are likely to be more noticeable when listening in high-quality, such as on headphones or when feeding the PC's sound output to a hi-fi system.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=modulo_20integer_20arithmetic&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>modulo_20integer_20arithmetic</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=modulo_20integer_20arithmetic&amp;rev=1704414119&amp;do=diff</link>
        <description>Modulo integer arithmetic

by Richard Russell, July 2007

(Note: In later versions of BBC BASIC for Windows and BBC BASIC for SDL 2.0 the SUM operator provides modulo 64-bit addition: a = b SUM c).

Some implementations of BBC BASIC (for example Acorn versions) allow you to add (or subtract) two 32-bit integers in such a way that the result 'wraps around', i.e. is evaluated</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=moving_20the_20cursor_20in_20an_20edit_20control&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>moving_20the_20cursor_20in_20an_20edit_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=moving_20the_20cursor_20in_20an_20edit_20control&amp;rev=1704414119&amp;do=diff</link>
        <description>Moving the cursor in an edit control

by Richard Russell, November 2007

 Windows doesn't provide an explicit method for moving the text cursor (caret) in an Edit Control, however it is easy to achieve the same result using a side effect of the EM_SETSEL</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=multi-column_20list_20boxes&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>multi-column_20list_20boxes</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=multi-column_20list_20boxes&amp;rev=1704414118&amp;do=diff</link>
        <description>Multi-column list boxes

by Richard Russell, October 2006

 If you want to display a list of items in a multiple-column format the best way is probably to use a list view control: that provides facilities for column headers, column dividers, user-adjustable column widths, sorting-by-column etc. See</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=multi-page_20graphics&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>multi-page_20graphics</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=multi-page_20graphics&amp;rev=1704414118&amp;do=diff</link>
        <description>Multi-page graphics

by Richard Russell, November 2007

 Some dialects of BASIC provide the ability to have multiple pages of graphics, whereby you can draw text and/or graphics into each page and then switch 'instantly' between them. Such a facility could be used for simple animation, or simply to avoid having to redraw the screen (possibly taking a significant time) each time a particular layout is needed by your program. It also has the advantage of 'remembering' the contents of each page wit…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=multiple_20file_20operations&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>multiple_20file_20operations</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=multiple_20file_20operations&amp;rev=1704414118&amp;do=diff</link>
        <description>Multiple file operations

by Richard Russell, July 2007

 The Windows API function SHFileOperation is very flexible, allowing you to perform common file-system operations (delete, copy, move/rename) on one or more files. It can optionally move 'deleted' files to the Recycle Bin, display a handy progress dialogue for lengthy operations and prompt for confirmation.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=non-integer_20modulo_20operation&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>non-integer_20modulo_20operation</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=non-integer_20modulo_20operation&amp;rev=1704414118&amp;do=diff</link>
        <description>Non-integer modulo operation

by Richard Russell, November 2011

BBC BASIC, in common with several other languages (e.g. C), provides only an integer MOD operator as standard. That is, you can pass non-integer values to MOD but they will be truncated to integers before the operation is carried out. For example:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=non-rectangular_20windows&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>non-rectangular_20windows</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=non-rectangular_20windows&amp;rev=1704414118&amp;do=diff</link>
        <description>Non-rectangular windows

by Richard Russell, December 2006

 Ordinary windows are rectangular, with square corners (with the exception of XP-style windows which have slightly rounded top corners). However this need not be the case - windows can be any shape (within reason). This article describes how to create a shaped window.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=notes_20for_20risc_20os_20users&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>notes_20for_20risc_20os_20users</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=notes_20for_20risc_20os_20users&amp;rev=1704414118&amp;do=diff</link>
        <description>Notes for RISC OS users

by Jon Ripley, April 2007

 This page is intended to contain information that is relevant to RISC OS users using BBC BASIC for Windows.



Loading BBC BASIC for Windows programs on RISC OS


 RISC OS has no default method of loading or saving</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=notes_20on_20the_20use_20of_20rnd&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>notes_20on_20the_20use_20of_20rnd</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=notes_20on_20the_20use_20of_20rnd&amp;rev=1704414117&amp;do=diff</link>
        <description>Notes on the use of RND

by Richard Russell, February 2010, revised May 2013

This article expands on the description of RND in the main documentation, discusses some of the limitations and pitfalls in its use, and provides some code examples.

Variants of RND</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=number_20conversion_20in_20basic&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>number_20conversion_20in_20basic</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=number_20conversion_20in_20basic&amp;rev=1704414117&amp;do=diff</link>
        <description>Number Conversion in BASIC

by Jonathan Harston and Richard Russell, December 2007

The following short functions perform conversion of unsigned 32-bit integers to fixed-length strings, in hexadecimal (base 16), octal (base 8) and binary (base 2).

Hexadecimal Output</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=object_20orientated_20programming&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>object_20orientated_20programming</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=object_20orientated_20programming&amp;rev=1704414122&amp;do=diff</link>
        <description>Object Orientated programming

by Richard Russell, April 2011

 BBC BASIC isn't an Object Oriented (OO) language, but the CLASSLIB library (see Libraries) supports some of the more important features of that programming paradigm. To be specific, it provides the ability to create</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=object_20oriented_20programming_20_28lbb_29&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>object_20oriented_20programming_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=object_20oriented_20programming_20_28lbb_29&amp;rev=1704414121&amp;do=diff</link>
        <description>Object Oriented Programming (LBB)

by Richard Russell, February 2015

 Version 3.00 of LB Booster (LBB) incorporates some extensions to support Object Oriented Programming (OOP). I should emphasise that the use of these extensions is entirely optional, and their presence should not impair compatibility with non-OOP Liberty BASIC programs. But please don't stop reading now: OOP has a lot to offer!</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=on_20screen_20keyboard&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>on_20screen_20keyboard</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=on_20screen_20keyboard&amp;rev=1704414119&amp;do=diff</link>
        <description>On Screen Keyboard

by Richard Russell, September 2013

 To open the Windows On Screen Keyboard from an LBB program use this code:



  files &quot;c:\windows\sysnative\&quot;, &quot;cmd.exe&quot;, info$()
  if val(info$(0,0)) then
    run &quot;c:\windows\sysnative\cmd.exe /c osk.exe&quot;, hide
  else
    run &quot;cmd.exe /c osk.exe&quot;, hide
  end if</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=opengl_20programming&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>opengl_20programming</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=opengl_20programming&amp;rev=1704414120&amp;do=diff</link>
        <description>OpenGL programming

by Richard Russell, August 2006



Introduction


 This article explains how to interface with the OpenGL 3D graphics standard from BBC BASIC for Windows. It is not an OpenGL tutorial; you will need to refer to the OpenGL Reference Manual and the OpenGL Programming Guide in order to write OpenGL programs.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20by_20dropping_20or_20clicking&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>opening_20a_20file_20by_20dropping_20or_20clicking</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20by_20dropping_20or_20clicking&amp;rev=1704414123&amp;do=diff</link>
        <description>Opening a file by dropping or clicking

by Richard Russell, October 2007

 In Windows, some common ways of opening a file (for example a document or image file) are as follows:

	*  Drag-and-drop the file onto the icon of the application you want to open it.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20by_20dropping_20or_20right-clicking&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>opening_20a_20file_20by_20dropping_20or_20right-clicking</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20by_20dropping_20or_20right-clicking&amp;rev=1704414122&amp;do=diff</link>
        <description>Opening a file by dropping or right-clicking

by Richard Russell, October 2007

 In Windows, some common ways of opening a file (for example a document or image file) are as follows:


	*  Drag-and-drop the file onto the icon of the application you want to open it.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20in_20a_20specified_20application&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>opening_20a_20file_20in_20a_20specified_20application</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=opening_20a_20file_20in_20a_20specified_20application&amp;rev=1704414122&amp;do=diff</link>
        <description>Opening a file in a specified application

by J.G.Harston, February 2008

 You can open a file in an application, equivalent to double-clicking on it in a filer window, by using ShellExecute, as follows:



        SYS &quot;ShellExecute&quot;, @hwnd%, 0, file$, 0, 0, 1</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=opening_20serial_20ports_20above_20com9&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>opening_20serial_20ports_20above_20com9</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=opening_20serial_20ports_20above_20com9&amp;rev=1704414121&amp;do=diff</link>
        <description>Opening serial ports above COM9

by Richard Russell, February 2010

 Since version 5.91a, BBC BASIC for Windows has fully supported serial ports above COM9; to open such a port you need only use the regular OPENUP function:



        port% = OPENUP(&quot;COM15: baud=9600 parity=N data=8 stop=1 dtr=on rts=on&quot;)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=operating_20system&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>operating_20system</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=operating_20system&amp;rev=1704414120&amp;do=diff</link>
        <description>Operating System

Calling DLLs, OCXs and Object Methods

	*  Component Object Model programming
	*  Calling object methods using structures
	*  Calling DLLs that return floats
	*  Calling DLL functions that return strings
	*  Passing floating-point values to DLLs
	*  Using callback functions

External programs

	*  Reading the exit code of a DOS utility
	*  Returning errors from Windows commands
	*  Waiting for an external program to terminate

Operating System

	*  Accessing the fast SYS interf…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=optimising_20integer_20division&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>optimising_20integer_20division</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=optimising_20integer_20division&amp;rev=1704414120&amp;do=diff</link>
        <description>Optimising integer division

by Richard Russell, July 2010

 The integer division instructions div (unsigned) and idiv (signed) are the slowest of all the integer instructions, sometimes taking tens of clock cycles. When the divisor is a constant (that is, it is known when the code is assembled) a significantly faster execution can be achieved by using a multiplication (effectively by the reciprocal of the divisor) followed by a shift.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=outputting_20arabic_20text&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>outputting_20arabic_20text</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=outputting_20arabic_20text&amp;rev=1704414120&amp;do=diff</link>
        <description>Outputting Arabic text

by Richard Russell, April 2012

 BBC BASIC for Windows supports outputting Unicode text to the main output window or to the printer, and it also supports right-to-left printing, so in principle it ought to be able to output Arabic text. However there is a complication: in Arabic the shapes of characters (their</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=outputting_20real-time_20audio&amp;rev=1713548434&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-19T17:40:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>outputting_20real-time_20audio</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=outputting_20real-time_20audio&amp;rev=1713548434&amp;do=diff</link>
        <description>Outputting real-time audio

BBC BASIC for SDL 2.0

by Richard Russell, April 2024

BBC BASIC for SDL 2.0 provides a number of methods for outputting sounds and music, for example the SOUND statement and the audiolib library. However there may be circumstances when you want more control over the audio output, such as generating continuous tones of a particular waveform and/or frequency.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=outputting_20speech_20to_20a_20file&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>outputting_20speech_20to_20a_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=outputting_20speech_20to_20a_20file&amp;rev=1704414123&amp;do=diff</link>
        <description>Outputting speech to a file

by Richard Russell, October 2008

 The supplied example program SPEAK.BBC illustrates how you can use Windows' built-in speech synthesis capabilities to output speech to your PC's loudspeakers, but what if you want to create a sound file containing the speech? Fortunately the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=outputting_20text_20with_20word-wrap&amp;rev=1704414123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>outputting_20text_20with_20word-wrap</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=outputting_20text_20with_20word-wrap&amp;rev=1704414123&amp;do=diff</link>
        <description>Outputting text with word-wrap

by Richard Russell, August 2009

 BBC BASIC (by default) automatically 'wraps' text that is output to the screen or the printer. If a character will not fit on the current line (or within the current text viewport) a 'new line' is generated and the character is displayed or printed at the beginning of the next line. The text viewport scrolls, or a new page is ejected from the printer, if necessary.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=overcoming_20the_20memory_20limit&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>overcoming_20the_20memory_20limit</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=overcoming_20the_20memory_20limit&amp;rev=1704414122&amp;do=diff</link>
        <description>Overcoming the memory limit

by Richard Russell, March 2014

 LB Booster's memory limit (versions 2.00 to 2.53) is similar to that of LB 4.04. For example in both cases a numeric array with 8 million elements can be successfully created but one with 10 million elements cannot (LBB reports a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=palette_20animation&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>palette_20animation</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=palette_20animation&amp;rev=1704414121&amp;do=diff</link>
        <description>Palette animation

by Alex Farlie and Richard Russell, July 2012

 On 'hardware paletted' displays (i.e. those with 256 colours - 8 bits-per-pixel - or fewer) palette animation is possible. For example by changing the contents of the colour palette everything displayed in blue might be changed to be red, without actually needing to re-plot any graphics. Also, effects such as flashing colours can be achieved by dynamically changing the contents of the palette (this is how the BBC Micro achieves i…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=passing_20array_20and_20structure_20parameters&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>passing_20array_20and_20structure_20parameters</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=passing_20array_20and_20structure_20parameters&amp;rev=1704414121&amp;do=diff</link>
        <description>Passing array and structure parameters

by Richard Russell, April 2009

 The main BBC BASIC for Windows documentation explains that whilst scalar variables are (by default) passed to functions and procedures by value arrays and structures are passed</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=passing_20arrays_20to_20subs_20and_20functions&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>passing_20arrays_20to_20subs_20and_20functions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=passing_20arrays_20to_20subs_20and_20functions&amp;rev=1704414121&amp;do=diff</link>
        <description>Passing arrays to SUBs and FUNCTIONs

by Richard Russell, March 2014

 LB Booster provides the capability of passing an entire array as a parameter to a SUB or a FUNCTION. Here is a simple example:



      one(5) = 123
      call test one()
      end

  sub test two()
      print two(5)
  end sub</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=passing_20data_20to_20assembler_20code&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>passing_20data_20to_20assembler_20code</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=passing_20data_20to_20assembler_20code&amp;rev=1704414117&amp;do=diff</link>
        <description>Passing data to assembler code

by Richard Russell, November 2006

 When you incorporate assembly language code in your BBC BASIC program (either for speed or to do things which aren't possible in BASIC) you are very likely to want to pass data into, and possibly out of, the assembler code. There are a number of different ways to do this, each with its own particular advantages and disadvantages. This article discusses four alternative methods and illustrates each with a common example for ease …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=passing_20floating-point_20values_20to_20dlls&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>passing_20floating-point_20values_20to_20dlls</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=passing_20floating-point_20values_20to_20dlls&amp;rev=1704414117&amp;do=diff</link>
        <description>Passing floating-point values to DLLs

by Richard Russell, July 2009

 The majority of functions that you are likely to want to call using SYS (typically Windows API functions, or functions in third-party DLLs) will require only integer or string parameters; you can specify those straightforwardly in the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=passing_20substructures_20to_20procedures&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>passing_20substructures_20to_20procedures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=passing_20substructures_20to_20procedures&amp;rev=1704414117&amp;do=diff</link>
        <description>Passing substructures to procedures

by Richard Russell, August 2006

 As described in the main documentation you can pass entire structures to a procedure or function as follows:




        DIM object{name$,pos{x,y,z}}
        object.pos.x = 1.0
        object.pos.y = 2.0
        object.pos.z = 3.0
        PRINT FN_distance(object{})
        END

        DEF FN_distance(s{})
        = SQR(s.pos.x^2 + s.pos.y^2 + s.pos.z^2)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=pausing_20and_20resuming_20midi_20playback&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pausing_20and_20resuming_20midi_20playback</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=pausing_20and_20resuming_20midi_20playback&amp;rev=1704414117&amp;do=diff</link>
        <description>Pausing and resuming MIDI playback

by Richard Russell, May 2006

 BBC BASIC for Windows allows you to play a MIDI file using the *PLAY command. Whilst you can terminate playback before the song has finished by using the SOUND OFF statement, there is no built-in mechanism for</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=pausing_20under_20program_20control&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pausing_20under_20program_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=pausing_20under_20program_20control&amp;rev=1704414122&amp;do=diff</link>
        <description>Pausing under program control

by Richard Russell, February 2007

 When running a program from the Interactive Development Environment you can enter (or exit) paused mode using the menu selection Run... Pause, clicking the Pause button on the toolbar or pressing the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=permutations&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>permutations</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=permutations&amp;rev=1704414119&amp;do=diff</link>
        <description>Permutations

Permutations and Derangements

by Michael Hutton May 2011

 You may want to find all the possible permutations of a set. The following procedure(s) will take an integer array of values (they could be numbers or pointers to strings for example) and calculate the next lexicographical permutation of the array.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20a_20media_20file_20using_20direct_20show&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20a_20media_20file_20using_20direct_20show</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20a_20media_20file_20using_20direct_20show&amp;rev=1704414117&amp;do=diff</link>
        <description>Playing a media file using Direct Show

by Richard Russell, December 2007

 Windows provides several methods for playing audio and video files. One of the simplest is the Media Control Interface (MCI) which is used by BBC BASIC for Windows to play MIDI files and is also the basis of the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20arpeggio&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20an_20arpeggio</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20an_20arpeggio&amp;rev=1704414119&amp;do=diff</link>
        <description>Playing an arpeggio

by Richard Russell, December 2014

 If you want to play a sequence of short, rising, notes (for example from the chromatic scale) the most obvious way is something like this:


        ENVELOPE 1,1,0,0,0,0,0,0,126,-4,0,-1,126,0

        pitch = 100
        FOR note = 0 TO 19
          SOUND 1, 1, pitch, 2
          pitch += 4
        NEXT</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20avi_20file&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20an_20avi_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20an_20avi_20file&amp;rev=1704414118&amp;do=diff</link>
        <description>Playing an AVI file

by Richard Russell, June 2013

 This is a very simple, no-frills, way of playing an AVI movie file:

 
        avifile% = OPENIN(&quot;*.avi&quot;)
        IF avifile% = 0 THEN QUIT
        CLOSE #avifile%
        avifile$ = $$!420

        PROCmci(&quot;open &quot;&quot;&quot; + avifile$ + &quot;&quot;&quot; type avivideo alias movie style popup&quot;)
        PROCmci(&quot;play movie wait&quot;)
        PROCmci(&quot;close movie&quot;)
        END

        DEF PROCmci(cmd$)
        LOCAL R%, S%
        DIM R% LOCAL 128
        SYS &quot;mciSendSt…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20mp3_20file_20_28lbb_29&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20an_20mp3_20file_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20an_20mp3_20file_20_28lbb_29&amp;rev=1704414118&amp;do=diff</link>
        <description>Playing an MP3 file (LBB)

by Richard Russell, January 2016

 This is a very simple, no-frills, way of playing an MP3 file:




      mp3file$ = &quot;C:\users\richard\music\Saint_Saens-Organ.mp3&quot;
      ret$ = space$(128) + chr$(0)
      cmd$ = &quot;open &quot; + chr$(34) + mp3file$ + chr$(34) + &quot; type mpegvideo alias music&quot;
      calldll #winmm, &quot;mciSendStringA&quot;, cmd$ as ptr, ret$ as ptr, 128 as long, 0 as long, r as long
      cmd$ = &quot;play music&quot;
      calldll #winmm, &quot;mciSendStringA&quot;, cmd$ as ptr, ret$ as …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20an_20mp3_20file&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20an_20mp3_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20an_20mp3_20file&amp;rev=1704414118&amp;do=diff</link>
        <description>Playing an MP3 file

by Richard Russell, May 2015

 This is a very simple, no-frills, way of playing an MP3 music file:

 
        mp3file% = OPENIN(&quot;*.mp3&quot;)
        IF mp3file% = 0 THEN QUIT
        CLOSE #mp3file%
        mp3file$ = $$!420

        PROCmci(&quot;open &quot;&quot;&quot; + mp3file$ + &quot;&quot;&quot; type mpegvideo alias music&quot;)
        PROCmci(&quot;play music&quot;)
        END

        DEF PROCmci(cmd$)
        LOCAL R%, S%
        DIM R% LOCAL 128
        SYS &quot;mciSendString&quot;, cmd$, R%, 128, 0 TO S%
        IF S% ERRO…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20multiple_20wav_20files&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20multiple_20wav_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20multiple_20wav_20files&amp;rev=1704414118&amp;do=diff</link>
        <description>Playing multiple WAV files

by Richard Russell, February 2013

 The method described in the main Help documentation for playing WAV files only allows you to play one file at a time. If you want to play two or more WAV files simultaneously a different approach must be used. The code snippet below demonstrates how to do it:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=playing_20part_20of_20a_20wav_20file&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>playing_20part_20of_20a_20wav_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=playing_20part_20of_20a_20wav_20file&amp;rev=1704414118&amp;do=diff</link>
        <description>Playing part of a WAV file

by Richard Russell, April 2013

 If you want to play just a section of a WAV file, you can do so using code similar to the following:

 
  SYS &quot;mciSendString&quot;, &quot;open &quot;&quot;&quot; + wavfile$ + &quot;&quot;&quot; alias wav1&quot;, 0, 0, 0
  SYS &quot;mciSendString&quot;, &quot;play wav1 from 10000 to 20000&quot;, 0, 0, 0</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=point-in-polygon_20hit_20testing&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>point-in-polygon_20hit_20testing</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=point-in-polygon_20hit_20testing&amp;rev=1704414117&amp;do=diff</link>
        <description>Point-in-Polygon hit testing

by Richard Russell, September 2010

 A common requirement in graphics programming is to determine whether a point is inside or outside a polygon (which can be regular or irregular, concave or convex). Since any closed curve can be approximated by a polygon, given a sufficient number of vertices, this can be extended to testing whether a point is inside or outside an arbitrary boundary.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=preventing_20a_20library_20from_20being_20run&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>preventing_20a_20library_20from_20being_20run</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=preventing_20a_20library_20from_20being_20run&amp;rev=1704414117&amp;do=diff</link>
        <description>Preventing a library from being run

by Jon Ripley, July 2006, January 2007

 To prevent a library from being run add the following code to the start of the library after any initial comment block to generate a syntax error when a user tries to run your library:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=preventing_20structure_20member_20names_20being_20crunched&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>preventing_20structure_20member_20names_20being_20crunched</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=preventing_20structure_20member_20names_20being_20crunched&amp;rev=1704414117&amp;do=diff</link>
        <description>Preventing structure member names being crunched

by Richard Russell, March 2010

 By default structure member names are crunched on compilation (assuming the Abbreviate names option is selected), just like the names of ordinary variables, arrays etc. Normally this is perfectly OK, and is what you will want to reduce the size of the executable and make it run more quickly.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=preventing_20the_20_27downloaded_20file_27_20warning&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>preventing_20the_20_27downloaded_20file_27_20warning</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=preventing_20the_20_27downloaded_20file_27_20warning&amp;rev=1704414116&amp;do=diff</link>
        <description>Preventing the 'downloaded file' warning

by Richard Russell, June 2009

 When you attempt to run an executable file downloaded from the internet (or another computer), Windows may display a 'security warning' dialogue box requiring confirmation before the file is run. This can happen when an NTFS filesystem is in use on Windows XP (SP2 or later), Windows Vista or Windows 7:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=printing_20a_20program_20containing_20unicode_20strings&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>printing_20a_20program_20containing_20unicode_20strings</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=printing_20a_20program_20containing_20unicode_20strings&amp;rev=1704414116&amp;do=diff</link>
        <description>Printing a program containing Unicode strings

by Richard Russell, July 2011, amended October 2012

 The BBC BASIC for Windows program editor and IDE (version 5.94a and later) supports constant (quoted) strings and comments containing UTF-8 text. Therefore no special measures are required in order to print such programs, other than to ensure that the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=printing_20strings&amp;rev=1704414122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>printing_20strings</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=printing_20strings&amp;rev=1704414122&amp;do=diff</link>
        <description>Printing strings

by Jon Ripley, August 2006

 This article documents three routines to output strings and VDU command sequences from assembler:



	*  Write0 - Output a NULL terminated string
	*  WriteN - Output a known length string
	*  WriteS - Output an in-line string</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=printing_20the_20output_20from_20a_20program&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>printing_20the_20output_20from_20a_20program</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=printing_20the_20output_20from_20a_20program&amp;rev=1704414116&amp;do=diff</link>
        <description>Printing the output from a program

by Richard Russell, June 2007

 On the old BBC Microcomputer, if you wanted to create a hardcopy record of the output from a program (which normally displays its results only on the screen) you could easily do that simply by pressing</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=profiler_20utility&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>profiler_20utility</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=profiler_20utility&amp;rev=1704414120&amp;do=diff</link>
        <description>Profiler Utility

by Michael Hutton 16/11/2009

 Version 4.0 (beta) is available Profiler v4,0 (beta) Click the link and choose 'Run'.

 You can now start and stop the profiler from within your program by using the following code.



  REM!PROF_ON


and



  REM!PROF_OFF</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=program_20editor_20and_20ide&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>program_20editor_20and_20ide</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=program_20editor_20and_20ide&amp;rev=1704414119&amp;do=diff</link>
        <description>Program Editor and IDE

Compiler

	*  Preventing structure member names being crunched
	*  Using the built-in program cruncher




Editor

	*  Incorporating bookmarks in a program
	*  Printing a program containing Unicode strings




Installation

	*  Adding 'Create new BBC BASIC program file' to the Shell new menu
	*  Installing both demo and full versions
	*  Installing under wine




Macros

	*  Creating function key macros
	*  Determining how a macro was run</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=prompting_20for_20admin_20rights&amp;rev=1704414119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>prompting_20for_20admin_20rights</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=prompting_20for_20admin_20rights&amp;rev=1704414119&amp;do=diff</link>
        <description>Prompting for admin rights

by Richard Russell, December 2012

 If your program needs to perform an action that requires Administrator Privileges (for example it needs to write files to one of the 'protected' areas like Program Files) it will fail if run by a standard user. A low-tech approach to this problem is to inform your users that they need to execute the program using the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=pseudo-variable_20side_20effects&amp;rev=1704414118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pseudo-variable_20side_20effects</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=pseudo-variable_20side_20effects&amp;rev=1704414118&amp;do=diff</link>
        <description>Pseudo-variable side effects

by Richard Russell, March 2011

 One thing that distinguishes the pseudo-variables (HIMEM, LOMEM, PAGE, PTR# and TIME/TIME$) from regular variables is that writing or reading a pseudo-variable may have a side effect in addition to what you would expect it to do. So for example a statement like:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=putting_20an_20image_20on_20the_20clipboard&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>putting_20an_20image_20on_20the_20clipboard</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=putting_20an_20image_20on_20the_20clipboard&amp;rev=1704414116&amp;do=diff</link>
        <description>Putting an image on the clipboard

by Richard Russell, March 2012

 Putting an image on the clipboard is straightforward:


        cx% = 0
        cy% = 0
        hbitmap% = FNloadimage(pic$, cx%, cy%, 0)
        SYS &quot;OpenClipboard&quot;, @hwnd%
        SYS &quot;EmptyClipboard&quot;
        SYS &quot;SetClipboardData&quot;, CF_BITMAP, hbitmap%
        SYS &quot;CloseClipboard&quot;</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=qbasic-compatible_20music&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>qbasic-compatible_20music</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=qbasic-compatible_20music&amp;rev=1704414116&amp;do=diff</link>
        <description>QBASIC-compatible music

by Richard Russell, March 2014

 The code below implements a QBASIC-compatible PLAY command, which allows you to play simple tunes; it makes use of the BBC BASIC SOUND and ENVELOPE statements available in LBB. The example tune is from Beethoven's</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=quad-precision_20multiplication&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>quad-precision_20multiplication</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=quad-precision_20multiplication&amp;rev=1704414116&amp;do=diff</link>
        <description>Quad-precision multiplication

by Richard Russell, December 2014

 The program listed below illustrates how to multiply two (unsigned) 64-bit integers together to produce a 128-bit result. It is based on a blog post by Raymond Chen:

  
        INSTALL @lib$+&quot;ASMLIB2&quot;

        DIM crossterms 15+15, result 15+15, gap% 2047, P% 120
        crossterms = (crossterms + 15) AND -16
        result = (result + 15) AND -16 : REM align

        ON ERROR LOCAL [OPT FN_asmext : ]
        [
        .mul
    …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=querying_20the_20dns&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>querying_20the_20dns</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=querying_20the_20dns&amp;rev=1704414117&amp;do=diff</link>
        <description>Querying the DNS

by Richard Russell, October 2013

 The code below allows you to query the DNS to find the IP address(es) corresponding to a specified URL:




        SYS &quot;LoadLibrary&quot;, &quot;dnsapi.dll&quot; TO dnsapi%
        SYS &quot;GetProcAddress&quot;, dnsapi%, &quot;DnsQuery_A&quot; TO `DnsQuery`
        SYS &quot;GetProcAddress&quot;, dnsapi%, &quot;DnsRecordListFree&quot; TO `DnsRecordListFree`

        DIM dnsr{pNext%, pName%, wType{l&amp;,h&amp;}, wDataLength{l&amp;,h&amp;}, dwFlags%, \
        \        dwTtl%, dwReserved%, dwData%}

        quer…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=queueing_20event_20interrupts&amp;rev=1704414117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>queueing_20event_20interrupts</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=queueing_20event_20interrupts&amp;rev=1704414117&amp;do=diff</link>
        <description>Queueing event interrupts

by Richard Russell, June 2006; amended June 2009 and December 2011

Consider using the EVENTLIB library instead of the code listed in this article.

 The ON CLOSE, ON MOUSE, ON MOVE, ON SYS and ON TIME statements interrupt your program when one of the specified events occurs. Perhaps the most obvious way to use these statements is to cause a procedure (an</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=re-dimensioning_20arrays&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>re-dimensioning_20arrays</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=re-dimensioning_20arrays&amp;rev=1704414120&amp;do=diff</link>
        <description>Re-dimensioning arrays

by Richard Russell, May 2014

 BBC BASIC does not have a REDIM or REDIM PRESERVE statement, as found in some other dialects of BASIC (REDIM allows you to increase the dimensions of an existing array - the contents are lost - and REDIM PRESERVE allows you to increase the dimensions of an array without destroying its contents). However it is not difficult to provide an equivalent functionality using user-defined procedures (these are for BB4W, for BBCSDL see below):</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20a_20shortcut&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20a_20shortcut</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20a_20shortcut&amp;rev=1704414116&amp;do=diff</link>
        <description>Reading a shortcut

by Jon Ripley, January 2008

 If you want to read the name of the file or directory pointed to by a short cut (link) file you can use the routine listed below. FNShell_GetShortcut takes a full path to a short cut (link) file and returns a path to the linked file:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20.ini_20data_20files&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20and_20writing_20.ini_20data_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20.ini_20data_20files&amp;rev=1704414116&amp;do=diff</link>
        <description>Reading and writing .INI data files

by Richard Russell, May 2006

 You may want your program to read configuration settings or user options on start up, to avoid the user having to enter them every time. One way of doing that is to use the registry, and this is described in the main help documentation</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20arrays_20in_20files&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20and_20writing_20arrays_20in_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20arrays_20in_20files&amp;rev=1704414116&amp;do=diff</link>
        <description>Reading and writing arrays in files

by Jon Ripley, May 2011

Alternative method added by Steve Drain, Oct 2013

 BBC BASIC for Windows does not provide a simple method of writing arrays to a file and reading them back again, doing so traditionally requires looping through the array and saving each separate item individually.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20csv_20files&amp;rev=1771076750&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-14T13:45:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20and_20writing_20csv_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20csv_20files&amp;rev=1771076750&amp;do=diff</link>
        <description>Reading and writing CSV files

by Richard Russell, July 2007

Comma Separated Value or CSV files are a common format typically used to represent the contents of a spreadsheet or database (or any other 2D matrix of data cells); they can by read and written by programs such as</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20nonstandard_20values&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20and_20writing_20nonstandard_20values</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20nonstandard_20values&amp;rev=1704414115&amp;do=diff</link>
        <description>Reading and writing nonstandard values

by J.G.Harston, July 2009
 Read a 16-bit integer



        DEF FNrd16(I%):=BGET#I%+256*BGET#I%


Read a 32-bit integer (same as INPUT#I%,A% but as a function, see notes)



        DEF FNrd32(I%):LOCAL A%:DIM zp% LOCAL 3:FOR A%=0 TO 3:zp%?A%=BGET#I%:NEXT:=!A%</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20plain_20text_20files&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20and_20writing_20plain_20text_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20and_20writing_20plain_20text_20files&amp;rev=1704414115&amp;do=diff</link>
        <description>Reading and writing plain text files

by Richard Russell, August 2007

 Standard text files, such as are created by text editors like Windows Notepad or MS-DOS EDIT, consist of lines of plain text separated by the character sequence Carriage Return, Line Feed</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20environment_20variables&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20environment_20variables</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20environment_20variables&amp;rev=1704414115&amp;do=diff</link>
        <description>Reading Environment Variables

by Richard Russell, May 2011

 You can read the environment variables associated with the current process using code similar to this:


        PRINT FNenvironment(&quot;PATH&quot;)
        PRINT FNenvironment(&quot;USERNAME&quot;)
        END

        DEF FNenvironment(envar$)
        LOCAL buffer%, size%
        SYS &quot;GetEnvironmentVariable&quot;, envar$, 0, 0 TO size%
        DIM buffer% LOCAL size%
        SYS &quot;GetEnvironmentVariable&quot;, envar$, buffer%, size%+1
        = $$buffer%</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20rss_20feeds&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20rss_20feeds</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20rss_20feeds&amp;rev=1704414115&amp;do=diff</link>
        <description>Reading RSS Feeds

by Tony Tooth and Richard Russell, Revised July 2009

 There is a rapidly growing body of raw data available from certain sites, in the form of so-called RSS Feeds which can be downloaded and used within a BB4W application. RSS (Really Simple</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20the_20exit_20code_20of_20a_20dos_20utility&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20the_20exit_20code_20of_20a_20dos_20utility</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20the_20exit_20code_20of_20a_20dos_20utility&amp;rev=1704414115&amp;do=diff</link>
        <description>Reading the exit code of a DOS utility

by Richard Russell, May 2006

 BBC BASIC for Windows allows you to execute an external program using the *RUN command. The program can be a Windows GUI program, a Windows console program or an MS-DOS program. Both Windows console programs and MS-DOS programs have the ability to return an</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reading_20the_20palette_20contents&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reading_20the_20palette_20contents</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reading_20the_20palette_20contents&amp;rev=1704414114&amp;do=diff</link>
        <description>Reading the palette contents

by Richard Russell, October 2011

 In BBC BASIC you can change the contents of the colour palette using either VDU 19 or a variant of the COLOUR statement. However, no standard method of reading back the contents of the palette is provided, other than by plotting the colour and sampling it using</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=receiving_20dropped_20files&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>receiving_20dropped_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=receiving_20dropped_20files&amp;rev=1704414114&amp;do=diff</link>
        <description>Receiving dropped files

by Richard Russell, June 2010

 The article Opening a file by dropping or clicking describes how you can handle a file which is dragged-and-dropped onto your program's icon. Another way of receiving files is as a result of the user dropping them onto your program's</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=redim_20preserve&amp;rev=1704414120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>redim_20preserve</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=redim_20preserve&amp;rev=1704414120&amp;do=diff</link>
        <description>Redim Preserve

by Richard Russell, May 2014

 Liberty BASIC does not have the REDIM PRESERVE statement, available in some other BASIC dialects, which is used to change the dimensions of an array without destroying the data it contains. Fortunately in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=redirecting_20the_20vdu_20commands_20to_20a_20sprite&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>redirecting_20the_20vdu_20commands_20to_20a_20sprite</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=redirecting_20the_20vdu_20commands_20to_20a_20sprite&amp;rev=1704414114&amp;do=diff</link>
        <description>#REDIRECT Drawing to an in-memory bitmap/texture</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=replacing_20the_20message_20pump&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>replacing_20the_20message_20pump</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=replacing_20the_20message_20pump&amp;rev=1704414114&amp;do=diff</link>
        <description>Replacing the message pump

by Richard Russell, January 2012

 In Windows, every User Interface (UI) thread must have a message pump (or message loop), the function of which is to serialise and dispatch incoming messages to their destination windows. 

 In BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=responding_20to_20a_20hot_20key&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>responding_20to_20a_20hot_20key</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=responding_20to_20a_20hot_20key&amp;rev=1704414114&amp;do=diff</link>
        <description>Responding to a hot key

by Richard Russell, October 2010

 A hot key is a unique system-wide key combination which can be used to cause your program to take some action, irrespective of which application currently has the keyboard 'input focus'. Typically your program will be running invisibly 'in the background', biding its time until the appropriate keys are pressed.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=responding_20to_20mouse_20double-clicks&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>responding_20to_20mouse_20double-clicks</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=responding_20to_20mouse_20double-clicks&amp;rev=1704414113&amp;do=diff</link>
        <description>Responding to mouse double-clicks

by Richard Russell, October 2015

 By default the ON MOUSE event interrupt is activated by clicking one of the mouse buttons, but a double-click is not distinguishable from a single click. If you specifically want to respond to mouse double-clicks two steps are necessary; firstly you must enable them as follows:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=returning_20an_20array_20from_20a_20function&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>returning_20an_20array_20from_20a_20function</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=returning_20an_20array_20from_20a_20function&amp;rev=1704414113&amp;do=diff</link>
        <description>Returning an array from a function

by Richard Russell, November 2012

 Modifying the contents of an array (i.e. its elements) within a PROC or FN is straightforward, because arrays are passed by reference and therefore any modifications to their contents remain intact after the FN or PROC returns.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=returning_20errors_20from_20windows_20commands&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>returning_20errors_20from_20windows_20commands</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=returning_20errors_20from_20windows_20commands&amp;rev=1704414113&amp;do=diff</link>
        <description>Returning errors from Windows commands

by Jonathan Harston, August 2010

 The OSCLI command can be used to execute a Windows command. However, if the command fails, no error is generated, the Windows command interpreter merely displays an error message. You may see this appearing in a DOS command box before it quickly disappears.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=reversing_20a_20string&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>reversing_20a_20string</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=reversing_20a_20string&amp;rev=1704414113&amp;do=diff</link>
        <description>Reversing a string

by Jon Ripley, May 2006

 Reversing is a simple string manipulation that often has a sub-optimal solution.

 One commonly used method to reverse strings is:



        a$=&quot;Hello world!&quot;
        IF LEN(a$)&gt;0 THEN
          l%=LEN(a$)-1
          FOR i%=0 TO l% DIV 2
            tmp$=MID$(a$,i%,1)
            MID$(a$,i%,1)=MID$(a$,l%-i%,1)
            MID$(a$,l%-i%)=tmp$
          NEXT i%
        ENDIF
        PRINT a$</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=right-click_20context_20menu&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>right-click_20context_20menu</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=right-click_20context_20menu&amp;rev=1704414113&amp;do=diff</link>
        <description>Right-click Context Menu

by Richard Russell, March 2014

 When the user right-clicks in a window a WM_CONTEXTMENU message is generated, which may be intercepted using ON SYS (so long as a *SYS 1 command has been issued). On receipt of this message you should typically display a popup menu containing commands relevant to the context, for example if the user right-clicks in an editing pane it would often be appropriate to display the same menu as results from clicking on</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=rounding_20functions&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>rounding_20functions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=rounding_20functions&amp;rev=1704414113&amp;do=diff</link>
        <description>Rounding functions

by Richard Russell, June 2016

 If you want to round a numeric value to a specific number of decimal places or significant figures there are a number of ways in which this can be achieved. The most flexible way is to use the @% system variable because, when used in conjunction with</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=running_a_bas_file_from_the_command_prompt&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>running_a_bas_file_from_the_command_prompt</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=running_a_bas_file_from_the_command_prompt&amp;rev=1704414112&amp;do=diff</link>
        <description>Running a BAS file from the command line

by Richard Russell, April 2019

It is straighforward to run a BASIC program from the command line, using either the BBC BASIC for Windows or BBC BASIC for SDL 2.0 run-time engine:


\path\to\bbcwrun6 \path\to\myprog.bbc
/path/to/bbcsdl /path/to/myprog.bbc</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sandbox&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sandbox</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sandbox&amp;rev=1704414131&amp;do=diff</link>
        <description>Sandbox

 rem 
 rem least squares polynomial fitting:-
 def fn_polyfit(Order,Npoints,z())


 local i
 local o% : o%=Order
 if o&lt;1 or o&gt;6 then print “cannot have polynomial order of ”;o : end




 local N% : N%=Npoints
 local x(), y(), xn(), xny() : dim x(N%), y(N%), xn(N%), xny(N%)</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=saturation_arithmetic&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>saturation_arithmetic</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=saturation_arithmetic&amp;rev=1704414112&amp;do=diff</link>
        <description>Saturation arithmetic

by Richard Russell, 14th March 2021

When working with audio or video data one often wants to perform 'saturation arithmetic', such that the result of an arithmetic operation is 'clamped' or 'clipped' to a certain range of values.  So typically that might be signed audio samples, which you want to be limited to the range -32768 to +32767 (or -32767 to +32767, the difference is unlikely to be important) without 'wrapping around'.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20gif_20image&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>saving_20a_20gif_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=saving_20a_20gif_20image&amp;rev=1704414112&amp;do=diff</link>
        <description>Saving a GIF image

by Richard Russell, December 2006

 The main BBC BASIC for Windows documentation explains how to display a GIF image and elsewhere you can find out how to load a GIF image for use in your program. This article describes how to save an image as a GIF file. It relies on the presence of the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20jpeg_20image&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>saving_20a_20jpeg_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=saving_20a_20jpeg_20image&amp;rev=1704414112&amp;do=diff</link>
        <description>Saving a JPEG image

by Richard Russell, December 2006

 The main BBC BASIC for Windows documentation explains how to display a JPEG image and elsewhere you can find out how to load a JPEG image for use in your program. This article describes how to save an image as a JPEG file. It relies on the presence of the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20png_20image&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>saving_20a_20png_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=saving_20a_20png_20image&amp;rev=1704414112&amp;do=diff</link>
        <description>Saving a PNG image

by Richard Russell, November 2010

 This article describes how to save an image as a PNG file. It relies on the presence of the GDI Plus library so will work only on Windows XP (or later) or if you have specifically installed GDIPLUS.DLL</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=saving_20a_20tiff_20image&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>saving_20a_20tiff_20image</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=saving_20a_20tiff_20image&amp;rev=1704414112&amp;do=diff</link>
        <description>Saving a TIFF image

by Richard Russell, October 2010

 This article describes how to save an image as a TIFF file. It relies on the presence of the GDI Plus library so will work only on Windows XP (or later) or if you have specifically installed GDIPLUS.DLL</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=saving_20previous_20load_20and_20save_20paths&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>saving_20previous_20load_20and_20save_20paths</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=saving_20previous_20load_20and_20save_20paths&amp;rev=1704414111&amp;do=diff</link>
        <description>Saving previous load and save paths

Please see the discussion page

 It is often useful if a program remembers where a file was last loaded from or saved to so that the next time a file open or file save dialogue is used it opens on the same directory as last time. Repeated calls of</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=scanning_20a_20directory_20_28reading_20directory_20entries_29&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>scanning_20a_20directory_20_28reading_20directory_20entries_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=scanning_20a_20directory_20_28reading_20directory_20entries_29&amp;rev=1704414115&amp;do=diff</link>
        <description>Scanning a Directory (Reading Directory Entries)

by JGH, 03-Jan-2008

 The Windows API functions FindFirstFile and FindFileNext can be used to scan a directory to find what files and subdirectories exist within it. The BBC BASIC for Windows manual contains some</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=scrollable_20list_20boxes&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>scrollable_20list_20boxes</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=scrollable_20list_20boxes&amp;rev=1704414111&amp;do=diff</link>
        <description>Scrollable list boxes

by Richard Russell, June 2010

 There are three main ways in which a scroll bar may be used with a list box:



	*  If the number of items is greater than will fit in the height of the list box, a vertical scroll bar is automatically added. This is the default behaviour.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=scrolling_20a_20list_20box&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>scrolling_20a_20list_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=scrolling_20a_20list_20box&amp;rev=1704414116&amp;do=diff</link>
        <description>Scrolling a list box

by Richard Russell, March 2007

 You can scroll the contents of a list box, under the control of your own program, by sending it a WM_VSCROLL message. The simple program below illustrates the use of that technique:




        INSTALL @lib$+&quot;WINLIB5&quot;

        WS_VSCROLL = &amp;200000
        WS_BORDER = &amp;800000
        LB_ADDSTRING = 384
        WM_VSCROLL = 277
        SB_BOTTOM = 7

        hlist%=FN_listbox(&quot;&quot;, 20, 20, 200, 200, 1, WS_VSCROLL + WS_BORDER)

        REPEAT
   …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=scrolling_20over_20a_20large_20canvas&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>scrolling_20over_20a_20large_20canvas</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=scrolling_20over_20a_20large_20canvas&amp;rev=1704414116&amp;do=diff</link>
        <description>Scrolling over a large canvas

by Richard Russell, September 2007

The code in this article requires BBC BASIC for Windows version 5.70a or later.

 Sometimes it may not be possible to display the entirety of your program's User Interface at once in a window of a sensible size, especially when you need the program to run on PCs with a relatively low display resolution. One solution to this is to give the user the ability to scroll the window so that the region of interest is in view.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=searching_20ordered_20lists&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>searching_20ordered_20lists</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=searching_20ordered_20lists&amp;rev=1704414115&amp;do=diff</link>
        <description>Searching ordered lists

by Richard Russell, December 2006

 The fastest way to search an ordered list is the binary search; you can find a description of how it works in the main BB4W documentation. The code below is a slightly simplified version, which searches an alphabetically-ordered string array for an exact match to a supplied string:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=selecting_20a_20font_20by_20pixel_20height&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>selecting_20a_20font_20by_20pixel_20height</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=selecting_20a_20font_20by_20pixel_20height&amp;rev=1704414115&amp;do=diff</link>
        <description>Selecting a font by pixel height

by Richard Russell, July 2007

 The BBC BASIC for Windows *FONT command selects the font size in points (nominally units of 1/72 inch), and as a consequence the character height in pixels varies acccording to the current Dots Per Inch setting. This is the way font size selection in Windows normally works and is what you would expect. See the article</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=selecting_20and_20copying_20using_20the_20mouse&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>selecting_20and_20copying_20using_20the_20mouse</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=selecting_20and_20copying_20using_20the_20mouse&amp;rev=1704414113&amp;do=diff</link>
        <description>Selecting and copying using the mouse

by Richard Russell, May 2006, amended October 2009

Selecting and copying text

Many Windows programs allow you to select a block of text by dragging the mouse. Typically you can then copy the selected text to the clipboard by right-clicking and selecting</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=selecting_20draft_20print_20quality&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>selecting_20draft_20print_20quality</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=selecting_20draft_20print_20quality&amp;rev=1704414113&amp;do=diff</link>
        <description>Selecting draft print quality

by Richard Russell, November 2009

 If your printer has a draft quality setting (which may, for example, be faster and/or use less ink) you can select it as follows:




        PROCprintquality(-1) : REM Draft quality</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=selecting_20multiple_20files&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>selecting_20multiple_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=selecting_20multiple_20files&amp;rev=1704414113&amp;do=diff</link>
        <description>Selecting multiple files

by Richard Russell, March 2010

 The main Help documentation describes how to use the Windows GetOpenFileName common dialogue to select a file (usually so it can subsequently be opened). That dialogue also permits the selection of multiple files</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20a_20serial_20break&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20a_20serial_20break</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20a_20serial_20break&amp;rev=1704414112&amp;do=diff</link>
        <description>Sending a serial break

by Richard Russell, July 2007

 Occasionally you may wish to send a break condition on a serial port output line. For example this may be needed to 'wake up' a remote device such as a modem. You can easily do that using the following code:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20an_20email_20automatically&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20an_20email_20automatically</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20an_20email_20automatically&amp;rev=1704414115&amp;do=diff</link>
        <description>Sending an email automatically

by Richard Russell, October 2006


See also Sending an email with attachments and Sending an HTML email with optional attachments


 There are two principal ways of automating the process of sending an email message: utililising the resources of the user's existing email client (e.g. Outlook or Eudora) or doing it entirely with BBC BASIC code.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20an_20email_20with_20attachments&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20an_20email_20with_20attachments</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20an_20email_20with_20attachments&amp;rev=1704414115&amp;do=diff</link>
        <description>Sending an email with attachments

by Richard Russell, October 2012, corrected August 2015


See also Sending an HTML email with optional attachments


 In the article Sending an email automatically the procedure PROCsendmail() automatically sends an email using the SOCKLIB library. Listed below is a procedure which performs the same function except that you can specify one or more files to attach to the email. The final parameter is a comma-separated list of the pathnames of the file(s) you wis…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20an_20html_20email_20with_20optional_20attachments&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20an_20html_20email_20with_20optional_20attachments</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20an_20html_20email_20with_20optional_20attachments&amp;rev=1704414114&amp;do=diff</link>
        <description>Sending an HTML email with optional attachments

by Richard Russell, April 2014, corrected August 2015

 In the article Sending an email with attachments the procedure PROCsendmailattach() automatically sends an email using the SOCKLIB library. Listed below is a procedure which performs the same function except that you can send the body of the email as</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20and_20receiving_20midi_20data&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20and_20receiving_20midi_20data</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20and_20receiving_20midi_20data&amp;rev=1704414114&amp;do=diff</link>
        <description>Sending and receiving MIDI data

by Richard Russell, December 2010

 MIDI (Musical Instrument Digital Interface) is a standard means of communicating with a digital musical instrument, whether an input device like a keyboard or an output device like a synthesiser.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20image_20files_20to_20the_20printer&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20image_20files_20to_20the_20printer</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20image_20files_20to_20the_20printer&amp;rev=1704414114&amp;do=diff</link>
        <description>Sending image files to the printer

by Richard Russell, May 2006, updated November 2010 and January 2012

 BBC BASIC for Windows provides the *DISPLAY command to display an image contained in a Windows Bitmap (.BMP) file on the screen, but there is no equivalent command for sending the file to the printer. You can of course first display it on the screen and then transfer it to the printer using</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_20raw_20data_20to_20a_20printer&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_20raw_20data_20to_20a_20printer</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_20raw_20data_20to_20a_20printer&amp;rev=1704414114&amp;do=diff</link>
        <description>Sending raw data to a printer

by Richard Russell, December 2006

 Normally BBC BASIC for Windows outputs to a printer using the Windows printer drivers. This is useful in presenting a uniform interface; you don't have to concern yourself with the particular manufacturer and model of printer. To change the font you can use</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sending_midi_data_linux&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sending_midi_data_linux</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sending_midi_data_linux&amp;rev=1704414114&amp;do=diff</link>
        <description>Sending MIDI data (Linux)

by Richard Russell, May 2018

Unlike Windows, Linux does not incorporate a software MIDI synthesiser as a standard feature.  If you want to output MIDI data you will need to install a synthesiser such as amSynth or Timidity.  For example to install amSynth you would typically do:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=setting_20an_20edit_20box_20cue_20banner&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>setting_20an_20edit_20box_20cue_20banner</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=setting_20an_20edit_20box_20cue_20banner&amp;rev=1704414113&amp;do=diff</link>
        <description>Setting an edit box cue banner

by Richard Russell, March 2009

 Windows Vista and later have the capability of displaying a cue banner in an edit control; this is a line of 'greyed out' text which can be used to prompt the user for the information he is expected to enter in that box. For example if the edit control receives a search string, the cue banner may read</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=setting_20speech_20parameters&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>setting_20speech_20parameters</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=setting_20speech_20parameters&amp;rev=1704414112&amp;do=diff</link>
        <description>Setting speech parameters

by Richard Russell, October 2008

This article is specific to the SAPI5 speech system, typically installed on Windows 2000, XP and Vista

 When using Windows' built-in speech synthesis capability it is possible to override the default</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=setting_20the_20desktop_20wallpaper&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>setting_20the_20desktop_20wallpaper</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=setting_20the_20desktop_20wallpaper&amp;rev=1704414112&amp;do=diff</link>
        <description>Setting the Desktop wallpaper

by Jon Ripley, July 2007



Setting the Desktop wallpaper


 To set the current Desktop wallpaper use the following code:


        SPIF_UPDATEINIFILE = 1
        SPI_SETDESKWALLPAPER = 20
        SYS &quot;SystemParametersInfo&quot;, SPI_SETDESKWALLPAPER, 0, filename$, SPIF_UPDATEINIFILE</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=setting_20the_20focus_20in_20a_20dialogue_20box&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>setting_20the_20focus_20in_20a_20dialogue_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=setting_20the_20focus_20in_20a_20dialogue_20box&amp;rev=1704414111&amp;do=diff</link>
        <description>Setting the focus in a dialogue box

by Richard Russell, May 2010

 If you want to initialise a dialogue box so that the input focus is on a particular control, simply make that control the first in the template (i.e. the first to be created after calling</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=setting_20the_20position_20of_20the_20file_20open_20dialogue&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>setting_20the_20position_20of_20the_20file_20open_20dialogue</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=setting_20the_20position_20of_20the_20file_20open_20dialogue&amp;rev=1704414111&amp;do=diff</link>
        <description>Setting the position of the File Open dialogue

by Richard Russell, February 2016

 The File Open (and File Save) dialogues open, by default, at a position on the screen determined by Windows. Whilst this will almost always be satisfactory, there may very occasionally be a requirement to position the dialogue box at specific coordinates. This may be achieved using the code below:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sharing_20a_20structure_20between_20processes&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sharing_20a_20structure_20between_20processes</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sharing_20a_20structure_20between_20processes&amp;rev=1704414111&amp;do=diff</link>
        <description>Sharing a structure between processes

by Richard Russell, October 2014

 Most modern PCs have multiple CPU cores, often four or more. If you are creating a computationally-intensive application you may wish to take advantage of this feature, but that is not so easy to do in BBC BASIC. One approach is to code some of the functionality in assembly language (using the built-in assembler) which can be arranged to run in a separate thread, and therefore potentially on a different core. However this …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sharing_20private_20variables&amp;rev=1751580810&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-03T22:13:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sharing_20private_20variables</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sharing_20private_20variables&amp;rev=1751580810&amp;do=diff</link>
        <description>Sharing PRIVATE variables

by Richard Russell, May 2007

 The PRIVATE statement allows you to create variables (also arrays, structures etc.) which are private to a procedure or function, in the sense that they retain their values from one call to the next, but are not visible to the rest of the program.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=short-circuit_20evaluation&amp;rev=1704414116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>short-circuit_20evaluation</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=short-circuit_20evaluation&amp;rev=1704414116&amp;do=diff</link>
        <description>Short-circuit evaluation

by Richard Russell, December 2009

 Consider a compound conditional test such as the following:




        IF condition1 AND condition2 AND condition3 THEN


It can be seen that if condition1 is FALSE then the entire expression must be FALSE, irrespective of the results of the other conditions. Ideally, in such a case it would be better not to waste time evaluating</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=shutting_20down_20the_20pc&amp;rev=1704414115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>shutting_20down_20the_20pc</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=shutting_20down_20the_20pc&amp;rev=1704414115&amp;do=diff</link>
        <description>Shutting down the PC

by Richard Russell, October 2007

 It's not a very likely thing to want to do, but the code below shuts down the PC when executed. Note that if run under Windows 2000 Professional, Windows XP Professional or Windows Vista it's entirely likely that the system adminstrator will have disabled the ability of ordinary user programs to shut down the PC. In that case the program will fail with the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sidebar&amp;rev=1704414131&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sidebar</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sidebar&amp;rev=1704414131&amp;do=diff</link>
        <description>Navigation

Assembler

BBC BASIC Language

Communication and I/O

Database and Files

Graphics and Games

Libraries

Manual

Operating System

Program Editor and IDE

Sound, Music and Video

Tools and Utilities

Tutorials

User Interface</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simd_20signum_20function&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simd_20signum_20function</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simd_20signum_20function&amp;rev=1704414113&amp;do=diff</link>
        <description>SIMD signum function

by Richard Russell, 30th December 2014 (based on a blog post by Raymond Chen)

 The signum function returns -1 for all negative numbers, +1 for all positive non-zero numbers and zero for an input of zero; it corresponds to the SGN() function in BBC BASIC. There is no direct equivalent in assembly language, but the following code snippets illustrate how it may be calculated on multiple data values using MMX and SSE2 code. In all cases the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simple_20list_20box&amp;rev=1704414113&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simple_20list_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simple_20list_20box&amp;rev=1704414113&amp;do=diff</link>
        <description>Simple list box

by Richard Russell, February 2012

 A simple List Box may be used to display a list of items which is too big to fit in the output window in its entirety. The List Box provides the ability to scroll through the list, without the overheads associated with a dialogue box:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simple_20registry_20usage&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simple_20registry_20usage</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simple_20registry_20usage&amp;rev=1704414112&amp;do=diff</link>
        <description>Simple Registry Usage

By JGH, Feb-2007.

 The registry is a repository of data maintained by Windows, which holds various information. An application can store configuration or other information from one session to the next within the HKCU/Software/MyPublisher/MyApplication part of the registry, where</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simple_20terminal_20program&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simple_20terminal_20program</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simple_20terminal_20program&amp;rev=1704414112&amp;do=diff</link>
        <description>Simple Terminal Program

by Colin McDonagh, April 2007

 In my work, I often need to communicate with older pieces of equipment via RS232 cables. Of course there are many such applications available, but it's quite easy in BBC BASIC. First we set up the com port we want to use, in this case com1.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simplifying_20arithmetic_20using_20strings&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simplifying_20arithmetic_20using_20strings</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simplifying_20arithmetic_20using_20strings&amp;rev=1704414110&amp;do=diff</link>
        <description>Simplifying arithmetic using strings

 Sometimes, rather than building a complicated formula for a piece of code, it can be simplified by using a string of values.

 For instance, I was recently updating some Acorn code that read VDU variables so that it would run in BBC BASIC for Windows. The VDU variables are in a slightly different order on BBFW than they are on RISC</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20modal_20dialogue_20box&amp;rev=1704414114&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simulating_20a_20modal_20dialogue_20box</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20modal_20dialogue_20box&amp;rev=1704414114&amp;do=diff</link>
        <description>Simulating a modal dialogue box

by Richard Russell, October 2006

 Dialogue boxes created using the functions in the WINLIB2 library are modeless dialogue boxes, that is the main window (and any other dialogue boxes) remain active whilst they are open. If you want to simulate the behaviour of a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20union_20_28lbb_29&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simulating_20a_20union_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20union_20_28lbb_29&amp;rev=1704414110&amp;do=diff</link>
        <description>Simulating a union (LBB)

by Richard Russell, September 2016

 A union is a value or data structure that may have two or more different representations or formats. Liberty BASIC doesn't have unions, but it is simple to simulate them in LBB using structures. The trick is to create two (or more) structures, which should be the same size, and then to arrange for them to share the same memory address.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20union&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simulating_20a_20union</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simulating_20a_20union&amp;rev=1704414111&amp;do=diff</link>
        <description>Simulating a union

by Richard Russell, March 2007

 BBC BASIC doesn't have unions, but it is possible to simulate them using structures. The trick is to create two (or more) structures, which should be the same size, then manipulate the internal pointers such that both structures refer to the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simulating_20assembler_20macros&amp;rev=1704414112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simulating_20assembler_20macros</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simulating_20assembler_20macros&amp;rev=1704414112&amp;do=diff</link>
        <description>Simulating assembler macros

by Richard Russell, December 2008

This article supplements the information in the main Help documentation under Conditional assembly and macros.

 The assembler built into BBC BASIC for Windows doesn't have a conventional macro facility, but something similar can be simulated utilising the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simulating_20continue&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simulating_20continue</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simulating_20continue&amp;rev=1704414110&amp;do=diff</link>
        <description>Simulating CONTINUE

by Richard Russell, November 2012, extended April 2022

Many languages, including some dialects of BASIC (e.g. Visual Basic), have a CONTINUE or CONT statement, which continues execution at the next iteration of a FOR, REPEAT or WHILE loop.  It is equivalent to jumping to the NEXT, UNTIL or ENDWHILE statement (i.e. it skips the remainder of the 'body' of the loop).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=simulating_20resume_20and_20resume_20next&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>simulating_20resume_20and_20resume_20next</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=simulating_20resume_20and_20resume_20next&amp;rev=1704414110&amp;do=diff</link>
        <description>Simulating RESUME and RESUME NEXT

by Richard Russell, September 2007

 BBC BASIC doesn't have the RESUME and RESUME NEXT statements sometimes found in other dialects of BASIC. Although there are alternative (and probably better) ways of achieving a similar effect when writing a program from scratch, their absence can be inconvenient when translating programs from another dialect. This article describes how a very similar effect can be achieved in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sorting_20arrays_20of_20structures&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sorting_20arrays_20of_20structures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sorting_20arrays_20of_20structures&amp;rev=1704414110&amp;do=diff</link>
        <description>Sorting Arrays of Structures

by Michael Hutton, October 2008

 The SORTSALIB library provides a fast way of sorting Arrays of Structures. It will sort the following types of structure elements: bytes(&amp;), integers(%), floating point numbers (both FLOAT 40 and FLOAT 64 (#)), and strings ($).</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sorting_20the_20characters_20in_20a_20string&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sorting_20the_20characters_20in_20a_20string</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sorting_20the_20characters_20in_20a_20string&amp;rev=1704414110&amp;do=diff</link>
        <description>Sorting the characters in a string

by Richard Russell, October 2008

 You can quickly and easily sort the elements of an array by using the SORTLIB library, but BBC BASIC for Windows does not directly provide the facility to sort the characters in a string</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sound_2c_20music_20and_20video&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sound_2c_20music_20and_20video</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sound_2c_20music_20and_20video&amp;rev=1704414109&amp;do=diff</link>
        <description>Sound, Music and Video

Audio controls

	*  Controlling the audio mixer
	*  Controlling the Master Volume
	*  Interrogating the audio mixer

Real-time audio

	*  Capturing audio using MCI
	*  Inputting real-time audio
	*  Outputting real-time audio

MIDI

	*  Listing the MIDI output devices
	*  Pausing and resuming MIDI playback
	*  Sending and receiving MIDI data
	*  Sending MIDI data (Linux)

Music

	*  Playing an MP3 file

Sound

	*  Playing an arpeggio
	*  Minimizing sound clicks
	*  Using S…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sound_20and_20envelope_20in_20assembler&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sound_20and_20envelope_20in_20assembler</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sound_20and_20envelope_20in_20assembler&amp;rev=1704414109&amp;do=diff</link>
        <description>SOUND and ENVELOPE in assembler

by Richard Russell, March 2010

BBC BASIC for Windows provides no direct means for an assembly language program to access the SOUND or ENVELOPE statements. It can be achieved using the technique described in Calling BASIC from assembler code but an alternative approach is to use the code listed below. This makes available three subroutines:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=space.menu&amp;rev=1704414121&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>space.menu</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=space.menu&amp;rev=1704414121&amp;do=diff</link>
        <description>space.menu

BB4W
Assembler
BBC BASIC Language
Communication and I/O
Database and Files
Graphics and Games
Libraries
Manual
Operating System
Program Editor and IDE
Sound, Music and Video
Tools and Utilities
Tutorials
User Interface

/LB%20Booster
LB Booster</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=speaking_20the_20contents_20of_20a_20file&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>speaking_20the_20contents_20of_20a_20file</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=speaking_20the_20contents_20of_20a_20file&amp;rev=1704414109&amp;do=diff</link>
        <description>Speaking the contents of a file

by Richard Russell, October 2008

 The supplied example program SPEAK.BBC illustrates how you can use Windows' built-in speech synthesis capabilities to speak a string (or strings) provided by your program, but what if you want to speak the contents of a text file? You could, of course, load the file into a set of strings and speak those, but the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=speech_20recognition_20_28shared_29&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>speech_20recognition_20_28shared_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=speech_20recognition_20_28shared_29&amp;rev=1704414109&amp;do=diff</link>
        <description>Speech Recognition (Shared)

by Rob Jeffs, February 2017

 The code below demonstrates Command and Control speech recognition for a Shared Recognizer, via the API route (not COM automation/ActiveX). Although, confusingly, the first unavoidable step is to create an instance of a speech recognizer object using COM automation!</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=speech_20synthesis_20_28lbb_29&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>speech_20synthesis_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=speech_20synthesis_20_28lbb_29&amp;rev=1704414109&amp;do=diff</link>
        <description>Speech synthesis (LBB)

by Richard Russell, November 2015

 The program below illustrates the use of the speak sub; it is compatible with both LB and LBB. Note that it is necessary to declare speechInit as global:




     ' LB speech synthesis without a helper DLL!
     ' by Richard Russell, 26-Mar-2012

     open &quot;ole32.dll&quot; for dll as #ole32
     calldll #ole32, &quot;CoInitialize&quot;, 0 as long, r as long
     global speechInit
     do
       read phrase$
       print phrase$
       call speak phras…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=speeding_20up_20graphics_20plotting&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>speeding_20up_20graphics_20plotting</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=speeding_20up_20graphics_20plotting&amp;rev=1704414109&amp;do=diff</link>
        <description>Speeding up graphics plotting

by Richard Russell, December 2013

 You may occasionally find that plotting graphics in LBB is a little slower than in LB 4.04; this results from the overhead of the emulator. This can often be resolved by sending fewer, longer, graphics commands.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sprites_20in_20multiple_20windows_20_28lbb_29&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sprites_20in_20multiple_20windows_20_28lbb_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sprites_20in_20multiple_20windows_20_28lbb_29&amp;rev=1704414108&amp;do=diff</link>
        <description>Sprites in multiple windows (LBB)

by Richard Russell, February 2015

 In LB Booster you can, with care, have sprites in two or more windows or graphicboxes. To make this work you need to take the following steps before every DRAWSPRITES command:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sqlite_20example_20program_20_28phonenos_29&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sqlite_20example_20program_20_28phonenos_29</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sqlite_20example_20program_20_28phonenos_29&amp;rev=1704414108&amp;do=diff</link>
        <description>SQLite Example Program (PhoneNos)

by Jon Ripley, October 2012

Please note: This program requires SQLite library for BB4W.

 This example program shows how to create a simple contact database using SQLite and includes methods to create, update, delete, find and list records.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=stacks_20using_20structures&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>stacks_20using_20structures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=stacks_20using_20structures&amp;rev=1704414108&amp;do=diff</link>
        <description>Stacks using structures

by Jon Ripley, May 2006

 A stack is a dynamic data structure operating on the principle of LIFO (Last In First Out). Items are added to and removed from the top of the stack. There are three operations that are applied to stacks, namely initialise, add to the stack (push) and remove from the stack (pull). Only the last item pushed to the stack is accessible.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=start&amp;rev=1704414130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>start</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=start&amp;rev=1704414130&amp;do=diff</link>
        <description>(also for BBC BASIC for SDL 2.0)

----------

 This Wiki contains a set of technical articles for BBC BASIC programmers, in an easy-to-use form. You can simply browse the contents using the Category List below, or search for a word or phrase by typing it into the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=storing_20structures_20containing_20strings&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>storing_20structures_20containing_20strings</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=storing_20structures_20containing_20strings&amp;rev=1704414108&amp;do=diff</link>
        <description>Storing structures containing strings

by Jon Ripley, July 2006

 The technique described in the storing structures in files article does not work for structures containing strings or string arrays. In most cases it is easier simply to write the individual structure members to file one at a time using</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=storing_20structures_20in_20files&amp;rev=1705099581&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-12T22:46:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>storing_20structures_20in_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=storing_20structures_20in_20files&amp;rev=1705099581&amp;do=diff</link>
        <description>Storing structures in files

by Richard Russell, July 2006

 BBC BASIC does not provide any built-in means of writing entire data structures to a file and reading them back again. Ideally it would be nice if one could say “PRINT #file%,struct{}“ and</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=structured_20exception_20handling&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>structured_20exception_20handling</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=structured_20exception_20handling&amp;rev=1704414107&amp;do=diff</link>
        <description>Structured Exception Handling

by Richard Russell, April 2008

 Several modern programming languages (e.g. C++, Java and Visual Basic) provide a Structured Exception Handling capability. Typically this uses a syntax similar to the following:




  try
    {
      // Code you want to execute, which might result in an error
    }
  catch
    {
      // Code to execute if an error occurred in the 'try' clause
    }</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=sub-structure_arrays&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sub-structure_arrays</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=sub-structure_arrays&amp;rev=1704414107&amp;do=diff</link>
        <description>Sub-structure arrays

by Richard Russell, December 2020

Sub-structure arrays (that is, a structure member that is itself an array of structures) are not supported in any current version of BBC BASIC.  For example one might prefer to have code something like this, but unfortunately it doesn't work:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=substituting_20characters_20in_20a_20string&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>substituting_20characters_20in_20a_20string</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=substituting_20characters_20in_20a_20string&amp;rev=1704414107&amp;do=diff</link>
        <description>Substituting characters in a string

by Richard Russell, August 2011

 If you want to substitute one character for another in a string (for example you want to change every colon ':' into a dash '-') there's a more efficient and elegant way than looping through each character in turn:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=summing_20part_20of_20an_20array&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>summing_20part_20of_20an_20array</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=summing_20part_20of_20an_20array&amp;rev=1704414107&amp;do=diff</link>
        <description>Summing part of an array

by Richard Russell, October 2013 (original concept by Michael Hutton)

 The SUM() function returns the sum of all the elements of an array. It may occasionally be useful to discover the sum of only part of an array, but BBC BASIC doesn't have a built-in function to do that.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=supporting_20different_20dpi_20values&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>supporting_20different_20dpi_20values</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=supporting_20different_20dpi_20values&amp;rev=1704414107&amp;do=diff</link>
        <description>Supporting different DPI values

by Richard Russell, July 2006

 Windows assumes, for certain operations (particularly displaying text), a specific dots per inch (or pixels per inch) value for the current display. The most common value used is 96 dots per inch (dpi), but other values, for example 120 dpi, will be encountered. A user can choose the higher value in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=swapping_20the_20contents_20of_20two_20areas_20of_20memory&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>swapping_20the_20contents_20of_20two_20areas_20of_20memory</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=swapping_20the_20contents_20of_20two_20areas_20of_20memory&amp;rev=1704414106&amp;do=diff</link>
        <description>Swapping the contents of two areas of memory

by Jon Ripley, August 2006

 The Windows API provides several functions for manipulating blocks of memory but is missing a function to swap the contents of two areas of memory. 

 This function can be added to your programs by adding following routine:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=swapping_20the_20mouse_20buttons&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>swapping_20the_20mouse_20buttons</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=swapping_20the_20mouse_20buttons&amp;rev=1704414106&amp;do=diff</link>
        <description>Swapping the mouse buttons

by Richard Russell, January 2011

 You can swap the mouse buttons, that is reverse the normal actions of the left and right buttons, as follows:


        SYS &quot;SwapMouseButton&quot;, 1


To restore the conventional functions for the buttons use:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=switching_20back_20from_20full-screen&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>switching_20back_20from_20full-screen</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=switching_20back_20from_20full-screen&amp;rev=1704414106&amp;do=diff</link>
        <description>Switching back from full-screen

by Richard Russell, October 2013

 The main Help documentation tells you how to switch to full-screen mode but it doesn't tell you how to switch back to a regular window if you need to. To do that you can use code similar to the following:


        GWL_STYLE = -16
        HWND_NOTOPMOST = -2
        SWP_FRAMECHANGED = 32
        SYS &quot;SetWindowLong&quot;, @hwnd%, GWL_STYLE, &amp;16CF0000
        SYS &quot;SetWindowPos&quot;, @hwnd%, HWND_NOTOPMOST, 100, 100, 800, 600, SWP_FRAMECHAN…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=synchronizing_20with_20video_20refresh&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>synchronizing_20with_20video_20refresh</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=synchronizing_20with_20video_20refresh&amp;rev=1704414106&amp;do=diff</link>
        <description>Synchronizing with video refresh

by Richard Russell, April 2007

(Note that the code in this article requires DirectX 7 or later).

 To achieve perfectly smooth animated graphics it is necessary to synchronize the output from your program with the video refresh rate of your graphics card and monitor. For example, if your display is running at 75 Hz your program should update its output (preferably) 75 times per second, synchronized with the start of each video frame. If it cannot run that quick…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=the_20atan2_20function&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>the_20atan2_20function</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=the_20atan2_20function&amp;rev=1704414106&amp;do=diff</link>
        <description>The ATAN2 function

by Richard Russell, September 2007

 BBC BASIC includes the ATN (arctangent) function as standard, but it does not include the ATAN2 function available in some other programming languages. The difference between them is that ATN takes a single parameter and returns its arctangent in the range -PI/2 to +PI/2, whereas</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=the_20extended_20combobox&amp;rev=1704414105&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>the_20extended_20combobox</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=the_20extended_20combobox&amp;rev=1704414105&amp;do=diff</link>
        <description>The extended combobox

by Richard Russell, January 2007

 Ordinary comboboxes can be created using the routines provided in the WINLIB2 (for use in a dialogue box) and WINLIB5 (for use on the main output window) libraries. However there is a different kind, the extended combobox</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=the_20graphics_20screen&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>the_20graphics_20screen</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=the_20graphics_20screen&amp;rev=1704414104&amp;do=diff</link>
        <description>The Graphics Screen

by Mohsen Alshayef 24 Oct 2008

BBC BASIC for Windows provides keywords to perform graphics operations, such as plotting points, lines and circles, etc. These operations are performed using graphics coordinates into the graphics screen.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=three_or_more_pass_assembly&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>three_or_more_pass_assembly</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=three_or_more_pass_assembly&amp;rev=1704414104&amp;do=diff</link>
        <description>Three (or more) pass assembly

by Richard Russell, September 2021

The x86 CPU has some instructions which have alternative encodings that are different lengths.  One of those instructions is 'push constant', which has these two alternative forms when the constant is in the range -128 to +127 (I'll use the value &amp;55 as an example):</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tokeniser&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tokeniser</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tokeniser&amp;rev=1704414107&amp;do=diff</link>
        <description>Tokeniser

by JGH, June 2006

 BBC BASIC programs are tokenised, that is, BASIC keywords are stored as one-byte values. This results in programs which execute faster and are more compact.

 A tokenised line can easily be detokenised, or expanded, as there is a one-to-one mapping between token values and the expanded string. For example, code similar to the following would expand a tokenised line:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tools_20and_20utilities&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tools_20and_20utilities</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tools_20and_20utilities&amp;rev=1704414111&amp;do=diff</link>
        <description>Tools and Utilities

Supplied Add-in Utilities


 These utilities are automatically installed with BBC BASIC for Windows; they should appear in the Utilities menu.



Utilities Manager

 (authors Malcolm Marten and Richard Russell)

 This is a little program that expands the Utility menu system to cope with more than nine add-in utilities, and allows it to be configured by any BB4W user. It has two parts: a list of 'extra' utilities or other runable programs, and a manager to add, move or remove…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tooltips_20on_20the_20main_20output_20window&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tooltips_20on_20the_20main_20output_20window</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tooltips_20on_20the_20main_20output_20window&amp;rev=1704414111&amp;do=diff</link>
        <description>Tooltips on the main output window

by Richard Russell, May 2009

Tooltips (helpful information displayed in a small box when you 'hover' the mouse over a certain region) are usually associated with toolbars, status bars, dialogue boxes or other Windows controls, and information on such uses can be found at the linked pages. However it is also possible to display tooltips on your main output window.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=torus2&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>torus2</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=torus2&amp;rev=1704414111&amp;do=diff</link>
        <description>ON ERROR OSCLI &quot;refresh on&quot; : IF ERR=17 CHAIN @lib$+&quot;../examples/tools/touchide&quot; ELSE MODE 3 : PRINT REPORT$ : END

      REM  Torus 2
      REM  Version 1.2 // 16-Mar-2012
      REM  Original BB4W/GFXLIB program by David Williams
      REM  BBCSDL/GFX2DLIB adaptation by Richard Russell.

      REM  Prevent the program window from being resized by the user
      IF @platform% &gt;= &amp;2050000 SYS &quot;SDL_SetWindowResizable&quot;, @hwnd%, FALSE

      REM  Select a 640x512 display mode and switch off the flas…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_201_20-_20_20direct3d_2011_20basics&amp;rev=1704414111&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_201_20-_20_20direct3d_2011_20basics</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_201_20-_20_20direct3d_2011_20basics&amp;rev=1704414111&amp;do=diff</link>
        <description>Tutorial 1 -  Direct3D 11 Basics

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct 3D 11 Tutorial 1 but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_202_20-_20rendering_20a_20triangle&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_202_20-_20rendering_20a_20triangle</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_202_20-_20rendering_20a_20triangle&amp;rev=1704414110&amp;do=diff</link>
        <description>Tutorial 2 - Rendering a Triangle

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct 3D 11 Tutorial 2 but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_203_20-_20shaders_20and_20effect_20system&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_203_20-_20shaders_20and_20effect_20system</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_203_20-_20shaders_20and_20effect_20system&amp;rev=1704414110&amp;do=diff</link>
        <description>Tutorial 3 - Shaders and Effect System

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct 3D 11 Tutorial 3 but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_204_20-_203d_20spaces&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_204_20-_203d_20spaces</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_204_20-_203d_20spaces&amp;rev=1704414109&amp;do=diff</link>
        <description>Tutorial 4 - 3D Spaces

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct 3D 11 Tutorial 4 but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_205_20-_203d_20transformation&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_205_20-_203d_20transformation</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_205_20-_203d_20transformation&amp;rev=1704414108&amp;do=diff</link>
        <description>Tutorial 5 - 3D Transformation

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct 3D 11 Tutorial 5 but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_206_20-_20lighting&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_206_20-_20lighting</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_206_20-_20lighting&amp;rev=1704414108&amp;do=diff</link>
        <description>Tutorial 6 - Lighting

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct 3D 11 Tutorial 6 but with the code translated from C++ to BBC BASIC for Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorial_207_20-_20texture_20mapping_20and_20constant_20buffers&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorial_207_20-_20texture_20mapping_20and_20constant_20buffers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorial_207_20-_20texture_20mapping_20and_20constant_20buffers&amp;rev=1704414104&amp;do=diff</link>
        <description>Tutorial 7 - Texture Mapping and Constant Buffers

by Richard Russell, August 2015

Note that the code in this tutorial requires Windows 8.1 or Windows 10

 This tutorial is closely based on Microsoft's Direct3D 11 Tutorial 7 but with the code translated from C++ to</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=tutorials&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>tutorials</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=tutorials&amp;rev=1704414108&amp;do=diff</link>
        <description>Tutorials

Peter Nairn's Beginners' Tutorial

	*  Chapter 1 - Introduction
	*  Chapter 2 - One Line Programs
	*  Chapter 3 - Using the Editor
	*  Chapter 4 - Storing Data in Variables
	*  Chapter 5 - Numeric Data Types
	*  Chapter 6 - String Data Types
	*  Chapter 7 - Coloured Text
	*  Chapter 8 - Interacting with the User
	*  Chapter 9 - Conditional Execution
	*  Chapter 10 - Selection using CASE
	*  Chapter 11 - Looping with FOR
	*  Chapter 12 - Others Loops: REPEAT and WHILE
	*  Chapter 13 - …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=unicode_20filenames&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>unicode_20filenames</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=unicode_20filenames&amp;rev=1704414107&amp;do=diff</link>
        <description>Unicode filenames

by Richard Russell, October 2016

 Although BBC BASIC for Windows includes limited support for Unicode (UTF-8) strings, this support does not extend to directory and file names. Even if you explicitly select UTF-8 as the character set in a</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=uploading_20files_20to_20an_20ftp_20server&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>uploading_20files_20to_20an_20ftp_20server</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=uploading_20files_20to_20an_20ftp_20server&amp;rev=1704414110&amp;do=diff</link>
        <description>Uploading files to an FTP server

by Richard Russell, March 2010, amended June 2012

 This article describes how to upload one or more files to an FTP server. The first step is to define some constants:



        FTP_TRANSFER_TYPE_ASCII = 1
        FTP_TRANSFER_TYPE_BINARY = 2
        _INTERNET_DEFAULT_FTP_PORT = 21 : REM default port for FTP servers
        _INTERNET_SERVICE_FTP = 1
        _INTERNET_FLAG_PASSIVE = &amp;8000000
        OPEN_TYPE_PRECONFIG = 0 : REM use registry configuration
     …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=user_20interface_20and_20windows_20api&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>user_20interface_20and_20windows_20api</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=user_20interface_20and_20windows_20api&amp;rev=1704414109&amp;do=diff</link>
        <description>User Interface and Windows API

 Redirect to User Interface</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=user_20interface&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>user_20interface</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=user_20interface&amp;rev=1704414110&amp;do=diff</link>
        <description>User Interface

Dialogue Boxes

These articles are applicable to BBC BASIC for Windows only but in some cases BBC BASIC for SDL 2.0 has an equivalent capability.

	*  Adding tooltips to a dialogue box
	*  Allocating item IDs automatically
	*  Changing a control's colours
	*  Changing the font of a control
	*  Creating a dialogue box from a resource
	*  Customising the Browse for Folder dialogue
	*  Displaying a JPEG or GIF in a picture box
	*  Multi-column list boxes
	*  Selecting multiple files…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20a_20pager_20control&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20a_20pager_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20a_20pager_20control&amp;rev=1704414108&amp;do=diff</link>
        <description>Using a pager control

by Richard Russell, July 2010

 A pager control is useful if you have a child window which is too big to be displayed in its entirety. The pager control allows you to scroll into view the part of the child control in which you are interested.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20an_20atl_20container_20control&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20an_20atl_20container_20control</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20an_20atl_20container_20control&amp;rev=1704414108&amp;do=diff</link>
        <description>Using an ATL container control

by Richard Russell, November 2006

 If, in your BBC BASIC program, you want to display a 'document' file (or other registered file type, such as an image file) you can very easily do that using SYS “ShellExecute”, as described in the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20array_20pointers&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20array_20pointers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20array_20pointers&amp;rev=1704414107&amp;do=diff</link>
        <description>Using array pointers

by Richard Russell, December 2009

 In BBC BASIC for Windows you can perform operations on entire arrays, such as arithmetic operations and the dot product. For example:




        a() = a() + b() + c()
        d() = e() * f()
        g() = h() . i()
        j() = 1, 2, 3, 4, 5</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20callback_20functions&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20callback_20functions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20callback_20functions&amp;rev=1704414106&amp;do=diff</link>
        <description>Using callback functions

by Richard Russell, December 2008

 A few Windows API functions require the use of a callback routine, that is a function which you provide that is called by Windows during execution of the API call. The normal SYS statement does not provide this capability, but it is available by means of the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20data_20statements_20in_20libraries&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20data_20statements_20in_20libraries</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20data_20statements_20in_20libraries&amp;rev=1704414106&amp;do=diff</link>
        <description>Using DATA statements in libraries

by Richard Russell, March 2011

 Because you cannot use line numbers or labels in libraries (or other INSTALLed modules), the conventional forms of the RESTORE statement cannot be used. At first sight it might appear that this precludes the use of</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20larger_20colour_20palettes&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20larger_20colour_20palettes</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20larger_20colour_20palettes&amp;rev=1704414109&amp;do=diff</link>
        <description>Using larger colour palettes

by Richard Russell, July 2010

 By default, BBC BASIC for Windows uses a colour palette of 16 colours. It must be emphasised that this doesn't restrict the number of colours you can use in your program, any more than an artist's palette retricts the number of colours he can use in a painting. Because you can change the contents of the palette whenever you like, you can use any colour available with your current display settings (see for example the supplied example …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20lbb_20with_20liberty_20basic_20workshop&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20lbb_20with_20liberty_20basic_20workshop</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20lbb_20with_20liberty_20basic_20workshop&amp;rev=1704414104&amp;do=diff</link>
        <description>Using LBB with Liberty BASIC Workshop

by Richard Russell, October 2013

 If you use Liberty BASIC Workshop you can easily configure it to call LB Booster to compile and run your programs. To do that follow these steps:



	*  In LB Workshop select Options... Preferences...</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20non-standard_20mouse_20pointers&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20non-standard_20mouse_20pointers</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20non-standard_20mouse_20pointers&amp;rev=1704414109&amp;do=diff</link>
        <description>Using non-standard mouse pointers

 by Richard Russell, October 2007

 You can select the mouse pointer (cursor) from any of the standard shapes using the MOUSE ON statement. However there may be occasions when you want to use a pointer that is not one of the standard shapes. This is most straightforwardly achieved by loading the pointer shape from a cursor (.CUR) file.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20openin_20_28etc._29_20with_20wildcards&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20openin_20_28etc._29_20with_20wildcards</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20openin_20_28etc._29_20with_20wildcards&amp;rev=1704414104&amp;do=diff</link>
        <description>Using OPENIN (etc.) with wildcards

by Richard Russell, June 2010

 The BBC BASIC OPENIN, OPENOUT and OPENUP functions generally take an unambiguous filename as their parameter. In BBC BASIC for Windows you can instead supply an ambiguous filename, that is a filename containing one or more</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20regular_20expressions&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20regular_20expressions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20regular_20expressions&amp;rev=1704414108&amp;do=diff</link>
        <description>Using regular expressions

by Richard Russell, December 2006

 Regular expressions provide a means to specify a pattern of characters, or syntax rule, which a string (or part of a string) must match. Certain metacharacters have special significance; for example a dot (.) matches any single character, square brackets [] enclose a list of matching characters, a caret (^) signifies negation and so on. Here are some simple examples:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20rich_20edit_20controls&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20rich_20edit_20controls</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20rich_20edit_20controls&amp;rev=1704414107&amp;do=diff</link>
        <description>Using Rich Edit controls

by Richard Russell, March 2007

 Rich Edit controls are superficially very similar to ordinary Edit Boxes, but they give you much greater control over the formatting of their contents. Amongst the many features available are:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20sound_20with_20true_20frequencies&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20sound_20with_20true_20frequencies</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20sound_20with_20true_20frequencies&amp;rev=1704414104&amp;do=diff</link>
        <description>Using SOUND with true frequencies

by Richard Russell, May 2014

 The SOUND statement's third parameter normally specifies the required pitch in units of quarter-semitones. For example the value 100 corresponds to middle C and the value 136 corresponds to the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20sse2_20instructions&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20sse2_20instructions</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20sse2_20instructions&amp;rev=1704414107&amp;do=diff</link>
        <description>Using SSE2 instructions

by Richard Russell, updated May 2015

SSE2 instructions are supported by the ASMLIB2 library, and that will generally be the most appropriate way to incorporate them in a program. However using the library has one significant disadvantage: the resulting program cannot be straightforwardly compiled, because the SSE2 instructions will not be accepted by the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20supplied_20example_20files&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20supplied_20example_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20supplied_20example_20files&amp;rev=1704414106&amp;do=diff</link>
        <description>Using supplied example files

by Richard Russell, August 2007

 If you want to utilise, in your own program, any of the example files supplied with BBC BASIC for Windows the best way of accessing them is relative to the @lib$ folder. For example, if you want to customise a toolbar using the file</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20built-in_20program_20cruncher&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20built-in_20program_20cruncher</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20built-in_20program_20cruncher&amp;rev=1704414104&amp;do=diff</link>
        <description>Using the built-in program cruncher

by Jon Ripley, April 2007

 The BBC BASIC for Windows compiler provides four functions to rewrite programs before compilation, these options are:



	*  Discard spaces
	*  Concatenate lines
	*  Remove REMarks
	*  Abbreviate names</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20date_20and_20time_20picker&amp;rev=1704414105&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20date_20and_20time_20picker</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20date_20and_20time_20picker&amp;rev=1704414105&amp;do=diff</link>
        <description>Using the Date and Time Picker

by Richard Russell, May 2006

 One of the standard controls provided by the Windows API is the Date and Time Picker. This can be used when you want the user to enter a date or a time into your program. For date entry Windows can display a small clickable calendar:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20entire_20desktop_20area&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20entire_20desktop_20area</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20entire_20desktop_20area&amp;rev=1704414104&amp;do=diff</link>
        <description>Using the entire desktop area

by Richard Russell, October 2006

 Normally you will want your BBC BASIC program either to use the default window size (this is appropriate for simple programs outputting only textual information) or to fix the window to a specific size in pixels (this will generally make incorporating graphics much easier, and makes your program independent of display resolution). The latter can be achieved either by using the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20eventlib_20library&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20eventlib_20library</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20eventlib_20library&amp;rev=1704414104&amp;do=diff</link>
        <description>Using the EVENTLIB library

by Richard Russell, August 2014

 (This article is an extended version of the forum message announcing the EVENTLIB library).

 The EVENTLIB library is designed to circumvent some limitations in the built-in ON MOUSE, ON MOVE, ON SYS and ON TIME event-handing mechanism in</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20fscale_20instruction&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20fscale_20instruction</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20fscale_20instruction&amp;rev=1704414104&amp;do=diff</link>
        <description>Using the fscale instruction

by Tony Tooth, January 2016. Edited by Tony Tooth April 2018

 Randall Hyde's book “The Art of Assembly Language” omits to cover or even mention the fscale instruction in the main text or in the index, although it is in his Table B-2: Floating Point Instruction Set.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20internal_20speaker&amp;rev=1704414110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20internal_20speaker</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20internal_20speaker&amp;rev=1704414110&amp;do=diff</link>
        <description>Using the internal speaker

by Richard Russell, November 2007

The code in this article requires Windows NT4, Windows 2000, Windows XP or Windows Vista.

 Even if your PC has a sound card (or integrated audio) it is still possible to use the internal speaker (if fitted) to produce simple sounds. You can do that using the</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20the_20lea_20instruction&amp;rev=1704414107&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20the_20lea_20instruction</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20the_20lea_20instruction&amp;rev=1704414107&amp;do=diff</link>
        <description>Using the lea instruction

by Richard Russell, July 2007

 Beginners in x86 (or IA-32) assembly language programming often fail to appreciate the value of the lea (Load Effective Address) instruction and use it rarely, if at all. lea takes advantage of the CPU's address generator(s) in being able to perform some simple calculations on 32-bit values which do not tie-up the resources of the CPU's Arithmetic Logic Unit(s). In so doing the resulting code can be shorter and faster.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_20transparent_20windows&amp;rev=1704414106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_20transparent_20windows</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_20transparent_20windows&amp;rev=1704414106&amp;do=diff</link>
        <description>Using transparent windows

by Richard Russell, August 2006

This article is not applicable to Windows 9x, Windows Me or Windows NT4.

 Normally the main output window of your BASIC program has an opaque background, hiding anything 'underneath' (whether the Desktop or another window). However, with Windows 2000 and Windows XP, it is possible to make the window background transparent. This allows some interesting effects to be achieved:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_28_29_20format_20extended_20functionality&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_28_29_20format_20extended_20functionality</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_28_29_20format_20extended_20functionality&amp;rev=1704414104&amp;do=diff</link>
        <description>Using() Format Extended Functionality

LBB supports extended functionality for the using() function as is common in many other BASIC programming languages:
 #  The hash character is used to represent a digit position.  +  A plus sign at the beginning or end of the template string causes the sign (+ or -) to be printed before or after the number.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_2016-bit_20floating_20point_20values&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_2016-bit_20floating_20point_20values</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_2016-bit_20floating_20point_20values&amp;rev=1704414109&amp;do=diff</link>
        <description>Using 16-bit floating point values

by Richard Russell, August 2007

BBC BASIC for Windows stores floating point numbers in 40-bit and 64-bit resolutions and has no built-in support for 16-bit (half precision) floating point numbers. Half precision floats are sometimes used in graphics applications, including OpenGL and Direct3D, because they are an efficient method of representing luminance and chrominance levels with a high dynamic range.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_2032-bit_20floating_20point_20values&amp;rev=1704414109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_2032-bit_20floating_20point_20values</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_2032-bit_20floating_20point_20values&amp;rev=1704414109&amp;do=diff</link>
        <description>Using 32-bit floating point values

by Jon Ripley, August 2006

BBC BASIC for Windows stores floating point numbers in 40-bit and 64-bit resolutions and has no built-in support for 32-bit (single precision) floating point numbers. When using the Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=using_serial_ports_in_linux&amp;rev=1704414105&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>using_serial_ports_in_linux</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=using_serial_ports_in_linux&amp;rev=1704414105&amp;do=diff</link>
        <description>Using serial ports in Linux

by Richard Russell, March 2022

In both Windows and Linux-derived operating systems serial ports are treated like files, i.e. to read data from a serial port you would use INPUT# or BGET# etc. and to write data to a serial port you would use</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=variable_length_array_structure&amp;rev=1720286251&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-06T17:17:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>variable_length_array_structure</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=variable_length_array_structure&amp;rev=1720286251&amp;do=diff</link>
        <description>Variable-length array in a structure

by Richard Russell, September 2023

Suppose you're using a structure to represent an object, and a collection of those structures (perhaps a linked-list or a structure array) to represent a set of those objects. Further suppose that the objects themselves each contain a collection of things, which you want to represent as an array inside the structure.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=verbose_20error_20messages&amp;rev=1704414104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>verbose_20error_20messages</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=verbose_20error_20messages&amp;rev=1704414104&amp;do=diff</link>
        <description>Verbose error messages

By J.G.Harston, July 2009
 The REPORT command reports the last program error. It can make error messages more informative if you also display a message telling the user what action caused the error. A simple way to do this is to set and clear a variable around actions, and display this message as part of the error handler. For instance, the following error handler:</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=waiting_20for_20an_20external_20program_20to_20terminate&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>waiting_20for_20an_20external_20program_20to_20terminate</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=waiting_20for_20an_20external_20program_20to_20terminate&amp;rev=1704414103&amp;do=diff</link>
        <description>Waiting for an external program to terminate

by Richard Russell, June 2006

 The *RUN command (or, equivalently, the OSCLI “RUN” statement) executes a specified external application and (by default) waits for the application to terminate before returning control to your BASIC program. This is often what is required: for example if the external application creates a file you probably don't want to continue execution of your BASIC program until the file has been created.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=when_20and_20when_20not_20to_20use_20_2acd&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>when_20and_20when_20not_20to_20use_20_2acd</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=when_20and_20when_20not_20to_20use_20_2acd&amp;rev=1704414103&amp;do=diff</link>
        <description>When and when not to use *CD

by Richard Russell, June 2007

 In BBC BASIC for Windows you can change the current directory (folder) using the *CD (or alternatively OSCLI “CD”) command:




        *CD &quot;C:\MyPath\MyFolder&quot;


or


        NewDirectory$ = &quot;C:\MyPath\MyFolder&quot;
        OSCLI &quot;CD &quot;&quot;&quot;+NewDirectory$+&quot;&quot;&quot;&quot;</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=whole-array_20operations_20in_20structures&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>whole-array_20operations_20in_20structures</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=whole-array_20operations_20in_20structures&amp;rev=1704414103&amp;do=diff</link>
        <description>Whole-array operations in structures

by Richard Russell, August 2013

(for an alternative way of tackling this issue, see Variable-length array in a structure)

As it states in the main help documentation the 'whole array' operations (e.g. assignment, arithmetic and the SUM and MOD functions) cannot be used with arrays which are structure members. Similarly, you cannot pass a structure-member array as the parameter of an FN or PROC. These limitations arise because of the need to maintain compat…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=writing_20console_20mode_20programs_20that_20will_20also_20run_20in_20the_20ide&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>writing_20console_20mode_20programs_20that_20will_20also_20run_20in_20the_20ide</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=writing_20console_20mode_20programs_20that_20will_20also_20run_20in_20the_20ide&amp;rev=1704414103&amp;do=diff</link>
        <description>Writing console mode programs that will also run in the IDE

by Jon Ripley, January 2007, April 2007

 The following code demonstrates how to write a console mode BBC BASIC program that will also run from the IDE:


        IF FNInConsoleMode THEN
          SYS &quot;GetStdHandle&quot;,-10 TO @hfile%(1):*INPUT 13
          SYS &quot;GetStdHandle&quot;,-11 TO @hfile%(2):*OUTPUT 14
          SYS &quot;SetConsoleMode&quot;,@hfile%(1),0
        ENDIF

        PRINT &quot;Hello world!&quot;'
        INPUT &quot;What is your name &quot;,name$
       …</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=writing_20graphics_20to_20the_20printer&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>writing_20graphics_20to_20the_20printer</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=writing_20graphics_20to_20the_20printer&amp;rev=1704414103&amp;do=diff</link>
        <description>Writing graphics to the printer

by Richard Russell, May 2006

 The only built-in means for writing graphics to the printer provided by BBC BASIC for Windows is the *HARDCOPY command: this transfers an area of the screen (which may include graphics) to the printer. However this is not a very satisfactory method because the graphics are limited to the resolution of the screen, which is far poorer than the resolution of a typical (laser or inkjet) printer; graphics can therefore appear much coarse…</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=writing_20log_20files&amp;rev=1704414108&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>writing_20log_20files</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=writing_20log_20files&amp;rev=1704414108&amp;do=diff</link>
        <description>Writing log files

by Richard Russell, June 2010

 Conventionally, a log file is a plain-text file containing a list of records (probably timed) corresponding to significant events. For example, a program might log the occurrence of errors for subsequent analysis.</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=writing_20to_20the_20screen_20using_20the_20windows_20api&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>writing_20to_20the_20screen_20using_20the_20windows_20api</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=writing_20to_20the_20screen_20using_20the_20windows_20api&amp;rev=1704414103&amp;do=diff</link>
        <description>Writing to the screen using the Windows API

by Richard Russell, November 2006

 Normally you would write to the screen using BBC BASIC's built-in text and graphics statements; see the main help documentation (particularly Graphics and Colours and VDU Emulation). However there may be circumstances when you need to use the Windows</description>
    </item>
    <item rdf:about="https://bbcbasic.net/wiki/doku.php?id=writing_20to_20vdu_20variables&amp;rev=1704414103&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-05T00:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>writing_20to_20vdu_20variables</title>
        <link>https://bbcbasic.net/wiki/doku.php?id=writing_20to_20vdu_20variables&amp;rev=1704414103&amp;do=diff</link>
        <description>Writing to VDU variables

by Richard Russell, April 2009

 The main Help documentation recommends that the VDU variables be treated as read-only values, which are modified only by means of the related VDU commands or associated keywords. However, to achieve certain special effects, or in advanced applications, it may be appropriate to write to those variables. This should be done with care, if unwanted side-effects are not to result.</description>
    </item>
</rdf:RDF>
