Compare commits

..

No commits in common. "0e7611bd8c458e93ec7064d06d620f16118fde4a" and "cf00ecef3bb0f0d0802211556630cf93ca132c5c" have entirely different histories.

6 changed files with 853 additions and 3375 deletions

View file

@ -92,7 +92,6 @@ DEVICES += interface/error.retro
DEVICES += interface/ioctl.retro
DEVICES += interface/final.retro
DEVICES += interface/library.retro
DEVICES += interface/descriptions.retro
# -------------------------------------------------------------

View file

@ -82,11 +82,10 @@ install-manpages:
# Toolchain ----------------------------------------------------
bin/retro-describe: tools/retro-describe.retro
@cp tools/retro-describe.retro bin/retro-describe
# @cat tools/retro-describe.retro > bin/retro-describe
# @cat doc/words.tsv >> bin/retro-describe
# @chmod +x bin/retro-describe
bin/retro-describe: tools/retro-describe.retro doc/words.tsv
@cat tools/retro-describe.retro > bin/retro-describe
@cat doc/words.tsv >> bin/retro-describe
@chmod +x bin/retro-describe
bin/retro-embedimage: tools/retro-embedimage.c
@$(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ $>

View file

@ -14,8 +14,6 @@
- toolchain
- retro-describe(1) now uses embedded glossary data
- documentation
- examples
@ -43,8 +41,6 @@
- `sigil:(` extended to store stack comments (with a form of
`(:comment)`
- add `d:describe`
- stack comments & descriptions are now part of the standard
system image
- library

View file

@ -1,677 +0,0 @@
~~~
:d:set-description (:ss-)
d:lookup dup n:-zero? [ d:descr &s:keep dip store ] &drop-pair choose ;
~~~
~~~
'Return_ASCII:NUL_(0). '$ d:set-description
'Return_an_empty_string. '' d:set-description
'Provide_a_visual_indication_of_a_code_group. '( d:set-description
'Provide_a_visual_indication_of_a_code_group. ') d:set-description
'Multiply_`n1`_by_`n2`_and_return_the_result. '* d:set-description
'Multiply_`x`_by_`y`_and_then_divide_by_`z`_and_return_the_integer_part_of_the_quotient_and_remainder. '*/mod d:set-description
'Add_`n1`_to_`n2`_and_return_the_result. '+ d:set-description
'Store_the_specified_value_into_the_memory_at_`here`_and_increment_`Heap`_by_1. ', d:set-description
'Subtract_`n2`_from_`n1`_and_return_the_result. '- d:set-description
'Switch_to_the_exposed_(public)_portion_of_a_lexical_namespace. '---reveal--- d:set-description
'Compare_two_values_for_inequality._Returns_`TRUE`_if_they_are_not_equal_or_`FALSE`_otherwise. '-eq? d:set-description
'Execute_the_quotation_if_the_flag_is_`FALSE`. '-if d:set-description
'Execute_the_quotation_if_the_flag_is_`FALSE`._If_false,_also_exit_the_word. '-if; d:set-description
'Divide_`n`_by_`m`_and_return_the_integer_part_of_the_quotient. '/ d:set-description
'"Ignore_any_tokens_remaining_on_the_current_line._Works_with_files_and_the_interactive_""listener""." '// d:set-description
'Divide_`n`_by_`m`_and_return_the_integer_part_of_the_quotient_and_remainder. '/mod d:set-description
'If_`n`_is_zero,_drop_`n`_and_exit_the_current_word._If_non-zero,_leave_`n`_alone_and_allow_execution_to_continue. '0; d:set-description
'End_the_current_definition. '; d:set-description
'Duplicate_top_value_on_stack_if_not_zero._If_zero,_do_nothing. '?dup d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:ACK d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:BEL d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:BS d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:CAN d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:CR d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:DC1 d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:DC2 d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:DC3 d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:DC4 d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:DEL d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:DLE d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:EM d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:ENQ d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:EOT d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:ESC d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:ETB d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:ETX d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:FF d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:FS d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:GS d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:HT d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:LF d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:NAK d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:NUL d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:RS d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:SI d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:SO d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:SOH d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:SPACE d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:STX d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:SUB d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:SYN d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:US d:set-description
'Constant._Refers_to_specific_ASCII_code. 'ASCII:VT d:set-description
'Constant._Return_a_build_identifier._Use_along_with_version_to_identify_an_image. 'BUILD d:set-description
'Variable._Holds_the_current_numeric_base._Base_must_be_in_the_range_of_2-16. 'Base d:set-description
'Variable._Holds_the_compiler_state._If_TRUE,_the_compiler_is_active._If_FALSE,_it_is_not. 'Compiler d:set-description
'Return_device_ID_for_block_support. 'DEVICE:BLOCKS d:set-description
'Return_device_ID_for_clock_words. 'DEVICE:CLOCK d:set-description
'Return_device_ID_for_error_handlers. 'DEVICE:ERROR d:set-description
'Return_device_ID_for_foreign_function_interface. 'DEVICE:FFI d:set-description
'Return_device_ID_for_filesystem_access. 'DEVICE:FILES d:set-description
'Return_device_ID_for_floating_point. 'DEVICE:FLOATS d:set-description
'Return_device_ID_for_image_writer. 'DEVICE:IMAGE d:set-description
'Return_device_ID_for_Unix_IOCTL_interface. 'DEVICE:IOCTL d:set-description
'Return_device_ID_for_Keyboard_input. 'DEVICE:KEYBOARD d:set-description
'Return_device_ID_for_memory_allocator. 'DEVICE:MALLOC d:set-description
'Return_device_ID_for_multicore_support. 'DEVICE:MULTICORE d:set-description
'Return_device_ID_for_Output_device. 'DEVICE:OUTPUT d:set-description
'Reserved_device_ID. 'DEVICE:RESERVED11 d:set-description
'Reserved_device_ID. 'DEVICE:RESERVED12 d:set-description
'Reserved_device_ID. 'DEVICE:RESERVED13 d:set-description
'Reserved_device_ID. 'DEVICE:RESERVED6 d:set-description
'Return_device_ID_for_random_number_generator. 'DEVICE:RNG d:set-description
'Return_device_ID_for_scripting_support. 'DEVICE:SCRIPTING d:set-description
'Return_device_ID_for_sockets. 'DEVICE:SOCKET d:set-description
'Return_device_ID_for_unix_syscall. 'DEVICE:UNIX d:set-description
'Return_device_ID_for_unsigned_maths. 'DEVICE:UNSIGNED d:set-description
'Variable._Holds_a_pointer_to_the_most_recent_dictionary_header. 'Dictionary d:set-description
'Used_to_denote_the_end_of_a_linked_list._The_last_cons_will_have_the_cdr_point_to_this_address. 'END d:set-description
'Constant._Returns_the_last_addressable_memory_address. 'EOM d:set-description
'Returns_`0`,_the_value_used_to_indicate_a_FALSE_result. 'FALSE d:set-description
'Returns_the_number_of_cells_available_to_your_application._This_is_the_amount_of_memory,_less_the_already_consumed_portion_and_buffers_mapped_for_Retro's_internal_use. 'FREE d:set-description
'Hold_the_path_to_the_users_home_directory._Defined_as_a_floating_buffer_above_`here`. 'HOME d:set-description
'Variable._Holds_the_address_of_the_next_available_cell. 'Heap d:set-description
'Access_the_loop_index_for_the_current_loop._(For_loops_made_using_`indexed-times`) 'I d:set-description
'Variable._When_TRUE,_ignore_input_to_end_of_line. 'Ignoring d:set-description
'Access_the_parent_loop_index_for_the_current_loop._(For_loops_made_using_`indexed-times`) 'J d:set-description
'Access_the_grandparent_loop_index_for_the_current_loop._(For_loops_made_using_`indexed-times`) 'K d:set-description
'Variable._When_set_to_`TRUE`,_Retro_will_replace_underscores_in_strings_with_spaces._When_`FALSE`,_Retro_does_not. 'RewriteUnderscores d:set-description
'Return_the_address_of_the_start_of_the_temporary_string_pool._This_can_be_altered_by_changing_the_values_of_`TempStrings`_and_`TempStringMax`. 'STRINGS d:set-description
'Variable._This_holds_some_information_used_by_`{{`_and_`}}`. 'ScopeList d:set-description
'Constant._Returns_a_pointer_to_the_text_input_buffer. 'TIB d:set-description
'Returns_`-1`,_the_value_used_to_indicate_a_TRUE_result. 'TRUE d:set-description
'Variable._Holds_the_maximum_length_of_a_temporary_string. 'TempStringMax d:set-description
'Variable._Holds_the_number_of_temporary_strings. 'TempStrings d:set-description
'Variable._This_stores_the_version_number. 'Version d:set-description
'Begin_a_quotation. '[ d:set-description
'End_a_quotation. '] d:set-description
'Compare_all_values_in_the_array._Return_`FALSE`_if_all_values_are_equal_or_`TRUE`_otherwise._This_assumes_the_array_contains_only_numeric_values. 'a:-eq? d:set-description
'Return_a_new_array_consisting_of_the_values_in_a1_followed_by_the_values_in_a2. 'a:append d:set-description
'Return_`TRUE`_if_a1_begins_with_a2_or_`FALSE`_otherwise. 'a:begins-with? d:set-description
'Return_a_new_array_containing_all_but_the_last_value_in_the_source_array. 'a:chop d:set-description
'Return_`TRUE`_if_the_string_value_is_in_the_array_or_`FALSE`_otherwise. 'a:contains/string? d:set-description
'Return_`TRUE`_if_the_value_is_in_the_array_or_`FALSE`_otherwise. 'a:contains? d:set-description
'Copy_an_array_(a1)_to_a_destination_(a2). 'a:copy d:set-description
'Run_a_quote_and_construct_a_new_array_from_the_returned_values._The_quote_should_return_the_values_and_the_number_of_values_to_put_into_the_array. 'a:counted-results d:set-description
'Make_a_copy_of_an_array._Return_the_address_of_the_copy. 'a:dup d:set-description
'Return_`TRUE`_if_a1_ends_with_a2_or_`FALSE`_otherwise. 'a:ends-with? d:set-description
'Compare_all_values_in_the_array._Return_`TRUE`_if_all_values_are_equal_or_`FALSE`_otherwise._This_assumes_the_array_contains_only_numeric_values. 'a:eq? d:set-description
'Fetch_the_value_stored_at_the_specified_index_in_the_specified_array. 'a:fetch d:set-description
'For_each_item_in_the_initial_array,_run_the_specified_quote._If_the_quote_returns_`TRUE`,_copy_the_item_into_a_new_array._If_`FALSE`,_discard_it._Returns_a_pointer_to_the_new_array. 'a:filter d:set-description
'Return_the_first_value_in_the_array. 'a:first d:set-description
'Execute_the_quote_once_for_each_item_in_the_array. 'a:for-each d:set-description
'Create_a_new_array_with_the_characters_in_the_source_string. 'a:from-string d:set-description
'Calculate_a_hash_value_for_a_given_array. 'a:hash d:set-description
'Return_the_location_of_the_first_instance_of_the_specified_value_in_the_array. 'a:index d:set-description
'Return_the_location_of_the_first_instance_of_the_specified_string_in_the_array. 'a:index/string d:set-description
'Return_a_new_array_with_the_indices_the_specified_value_was_found_at_in_the_original_array. 'a:indices d:set-description
'Return_a_new_array_with_the_indices_of_the_specified_string_in_the_original_array. 'a:indices/string d:set-description
'Return_the_last_value_in_the_array. 'a:last d:set-description
'Return_a_new_array_containing_the_first_`n`_values_from_the_source_array. 'a:left d:set-description
'Return_the_length_of_a_array. 'a:length d:set-description
'Execute_quote._Return_a_new_array_containing_the_values_the_quote_leaves_on_the_stack._This_is_identical_to_doing_`a:counted-results 'a:make d:set-description
'Execute_quote_once_for_each_item_in_the_array._Constructs_a_new_array_from_the_value_returned_by_the_quote. 'a:map d:set-description
'Extract_a_new_array_from_the_middle_of_the_specified_array._This_will_take_the_values_starting_at_`f`_and_extend_to_the_`l`_last_value. 'a:middle d:set-description
'Return_a_new_array_consisting_of_the_values_in_a2_followed_by_the_values_in_a1. 'a:prepend d:set-description
'Takes_an_array,_a_starting_value,_and_a_quote._This_will_apply_the_quote_to_each_item_in_the_array;_the_quote_should_consume_two_values_and_return_one. 'a:reduce d:set-description
'Reverse_the_order_of_items_in_a_array._This_will_return_a_new_array. 'a:reverse d:set-description
'Return_a_new_array_containing_the_specified_number_of_values_from_the_right_side_of_the_array. 'a:right d:set-description
'Store_a_value_into_the_array_at_the_specified_index. 'a:store d:set-description
'Make_a_copy_of_the_array_in_a_rotating_set_of_temporary_buffers. 'a:temp d:set-description
'Return_the_actual_address_of_the_`n`th_item_in_the_array. 'a:th d:set-description
'Create_a_new_string_from_the_provided_array_of_character_values._This_string_will_be_stored_in_the_temporal_string_buffers. 'a:to-string d:set-description
'Abort_execution. 'abort d:set-description
'Close_an_unconditional_loop._Branches_back_to_the_prior_`repeat`. 'again d:set-description
'Allocate_the_specified_number_of_cells_from_the_`Heap`. 'allot d:set-description
'Perform_a_bitwise_AND_operation_between_the_two_provided_values. 'and d:set-description
'Fetch_the_8-bit_value_stored_at_the_specified_address._Addressing_for_this_is_in_8-bit_units. 'b:fetch d:set-description
'Fetch_the_value_stored_at_the_specified_address._Returns_the_next_address_and_the_value. 'b:fetch-next d:set-description
'Store_an_8-bit_value_into_the_specified_address._Addressing_for_this_is_in_8-bit_units. 'b:store d:set-description
'Store_a_value_into_the_specified_address_and_return_the_next_address. 'b:store-next d:set-description
'Translate_a_physical_address_to_a_byte_address. 'b:to-byte-address d:set-description
'Display_a_welcome_message_on_startup. 'banner d:set-description
'Execute_q1_against_x,_then_execute_q2_against_a_copy_of_x. 'bi d:set-description
'Execute_q1_against_x_and_q2_against_y. 'bi* d:set-description
'Execute_q_against_x,_then_execute_q_against_y. 'bi@ d:set-description
'Set_`Base`_to_binary. 'binary d:set-description
'Read_1024_cells_from_block_n_in_the_block_storage_into_memory_at_address_a. 'block:read d:set-description
'Set_the_file_name_of_the_block_storage_device. 'block:set-file d:set-description
'Save_the_1024_cells_at_address_a_to_block_n_in_the_block_storage. 'block:write d:set-description
'Append_a_value_to_the_current_buffer. 'buffer:add d:set-description
'Reset_the_current_buffer_to_an_empty_state. 'buffer:empty d:set-description
'Return_a_pointer_to_the_current_end_of_the_active_buffer. 'buffer:end d:set-description
'Remove_the_last_value_from_the_current_buffer. 'buffer:get d:set-description
'Save_and_restore_the_current_buffer_before_and_after_executing_the_specified_quote. 'buffer:preserve d:set-description
'Assign_a_new_buffer_as_the_current_one. 'buffer:set d:set-description
'Return_the_number_of_cells_in_the_buffer. 'buffer:size d:set-description
'Return_the_start_address_of_the_current_buffer. 'buffer:start d:set-description
'Exit_Retro. 'bye d:set-description
'Return_TRUE_if_character_is_a_not_consonant_or_FALSE_otherwise. 'c:-consonant? d:set-description
'Return_TRUE_if_character_is_a_not_numeric_digit_or_FALSE_otherwise. 'c:-digit? d:set-description
'Return_TRUE_if_character_is_not_lowercase_or_FALSE_otherwise. 'c:-lowercase? d:set-description
'Return_TRUE_if_character_is_not_uppercase_or_FALSE_otherwise. 'c:-uppercase? d:set-description
'Return_TRUE_if_character_is_not_printable_or_FALSE_otherwise. 'c:-visible? d:set-description
'Return_TRUE_if_character_is_not_a_vowel_or_FALSE_otherwise. 'c:-vowel? d:set-description
'Return_TRUE_if_character_is_not_whitespace,_or_FALSE_otherwise. 'c:-whitespace? d:set-description
'Return_TRUE_if_character_is_a_consonant_or_FALSE_otherwise. 'c:consonant? d:set-description
'Return_TRUE_if_character_is_a_numeric_digit_or_FALSE_otherwise. 'c:digit? d:set-description
'Vectored._Read_a_single_keypress. 'c:get d:set-description
'Return_TRUE_if_character_is_an_ASCII_letter_or_FALSE_otherwise. 'c:letter? d:set-description
'Return_TRUE_if_character_is_lowercase_or_FALSE_otherwise. 'c:lowercase? d:set-description
'Vectored._Display_a_single_character. 'c:put d:set-description
'Convert_character_to_lowercase_equivalent. 'c:to-lower d:set-description
'Convert_an_ASCII_digit_character_into_the_corresponding_decimal_value 'c:to-number d:set-description
'Convert_character_into_a_string. 'c:to-string d:set-description
'Convert_character_to_uppercase_equivalent. 'c:to-upper d:set-description
'Convert_an_ASCII_character_to_the_opposite_case. 'c:toggle-case d:set-description
'Return_TRUE_if_character_is_uppercase_or_FALSE_otherwise. 'c:uppercase? d:set-description
'Return_TRUE_if_character_is_printable_or_FALSE_otherwise. 'c:visible? d:set-description
'Return_TRUE_if_character_is_a_vowel_or_FALSE_otherwise. 'c:vowel? d:set-description
'Return_TRUE_if_character_is_whitespace,_or_FALSE_otherwise. 'c:whitespace? d:set-description
'Call_a_function. 'call d:set-description
'Return_a_pointer_to_the_car_of_cons_a. 'car d:set-description
'Store_n_into_the_car_of_cons_a. 'car! d:set-description
'Return_the_contents_of_the_car_of_cons_a. 'car@ d:set-description
'If_`n`_is_equal_to_`m`,_drop_both_and_execute_the_specified_quote_before_exiting_the_calling_word._If_not_equal,_leave_`n`_on_the_stack_and_let_execution_continue. 'case d:set-description
'Return_a_pointer_to_the_cdr_of_cons_a. 'cdr d:set-description
'Store_n_into_the_cdr_of_cons_a. 'cdr! d:set-description
'Return_the_contents_of_the_cdr_of_cons_a. 'cdr@ d:set-description
'Execute_q1_if_the_flag_is_true_(-1)_or_q2_if_the_flag_is_false_(0)._Only_these_flags_are_valid_when_using_`choose`;_passing_other_values_as_flags_will_result_in_memory_corruption. 'choose d:set-description
'Class_handler_for_data_structures. 'class:data d:set-description
'Class_handler_for_compiler_macros_(immediate_words) 'class:macro d:set-description
'Class_handler_for_primitive_words_(words_which_map_to_Nga_instructions) 'class:primitive d:set-description
'Class_handler_for_normal_words. 'class:word d:set-description
'Clear_the_display. 'clear d:set-description
'Return_the_current_day. 'clock:day d:set-description
'Return_the_current_hour._This_will_be_in_the_range_of_0-23,_inclusive. 'clock:hour d:set-description
'Return_the_current_minute._This_will_be_in_the_range_of_0-59,_inclusive. 'clock:minute d:set-description
'Return_the_current_month._This_will_be_in_the_range_of_1-12,_inclusive. 'clock:month d:set-description
'Trigger_a_clock_operation._This_is_not_intended_to_be_used_directly. 'clock:operation d:set-description
'Return_the_current_second._This_will_be_in_the_range_of_0-59,_inclusive. 'clock:second d:set-description
'Return_a_host_specific_timestamp._In_the_standard_system,_this_is_a_32-bit_Unix_timestamp,_but_this_is_not_required. 'clock:timestamp d:set-description
'Return_the_current_day_in_UTC. 'clock:utc:day d:set-description
'Return_the_current_hour_in_UTC. 'clock:utc:hour d:set-description
'Return_the_current_minute_in_UTC. 'clock:utc:minute d:set-description
'Return_the_current_month_in_UTC. 'clock:utc:month d:set-description
'Return_the_current_second_in_UTC. 'clock:utc:second d:set-description
'Return_the_current_year_in_UTC. 'clock:utc:year d:set-description
'Return_the_current_year. 'clock:year d:set-description
'Store_the_specified_value_into_the_memory_at_`here`_and_increment_`Heap`_by_1._Identical_to_`,`,_this_is_provided_for_compatibility_with_the_RetroForth_on_ilo_and_napia. 'comma d:set-description
'Compile_a_call_to_the_specified_address_into_the_current_definition. 'compile:call d:set-description
'Compile_a_jump_to_the_specified_address_into_the_current_definition. 'compile:jump d:set-description
'Compile_the_code_to_push_a_number_to_the_stack_into_the_current_definition. 'compile:lit d:set-description
'Compile_a_return_instruction_into_the_current_definition. 'compile:ret d:set-description
'Return_`TRUE`_if_compiler_is_on_or_`FALSE`_otherwise. 'compiling? d:set-description
'Create_a_new_cons_cell_with_a_car_of_x_and_a_cdr_of_y. 'cons d:set-description
'Create_a_constant_returning_the_specified_value. 'const d:set-description
'Copy_`l`_cells_from_memory_at_`s`_to_the_memory_at_`d`._These_should_not_overlap. 'copy d:set-description
'Clear_the_internal_state_of_core_`n`._This_should_be_done_prior_to_use_of_`core:start`,_which_activates_processing_on_the_core. 'core:init d:set-description
'Suspend_processing_on_core_`n`. 'core:pause d:set-description
'Suspend_processing_on_the_current_core. 'core:pause-current d:set-description
'Read_a_value_from_register_`n`_on_the_current_core. 'core:read/reg d:set-description
'Resume_processing_on_core_`n`_after_a_`core:pause`_or_`core:pause-current`. 'core:resume d:set-description
'Set_the_IP_of_core_`n`_to_address_`a`_and_begin_processing_on_core_`n`. 'core:start d:set-description
'Write_a_value_to_register_number_`n`_on_the_current_core. 'core:write/reg d:set-description
'Bind_a_value_to_a_function_and_return_a_new_quote_that_calls_the_bound_action. 'curry d:set-description
'Inline_a_numeric_value_to_the_current_assembly_segment. 'd d:set-description
'Variable._Holds_a_pointer_tho_the_function_for_calculating_dictionary_hashes. 'd:Hash-Function d:set-description
'Vectored._Create_a_header._Provide_a_string_(s)_for_the_name,_a_pointer_to_the_class_handler_(a1)_and_a_pointer_to_the_word_definition_(a2)_Generally_this_won't_be_used_directly. 'd:add-header d:set-description
'Given_a_dictionary_header,_return_the_class_field. 'd:class d:set-description
'Hook._Create_a_new_dictionary_header_named_the_specified_string._The_new_header_will_point_to_`here`_and_have_a_class_of_`class:data`. 'd:create d:set-description
'Execute_the_specified_quote_once_for_each_header_in_the_dictionary._Before_running_the_quote,_this_also_pushes_a_pointer_to_the_header_onto_the_stack. 'd:for-each d:set-description
'Given_a_dictionary_header,_return_the_hash_field. 'd:hash d:set-description
'Return_the_most_recent_dictionary_header. 'd:last d:set-description
'Return_a_pointer_to_the_class_field_of_the_most_recent_dictionary_header. 'd:last.class d:set-description
'Return_a_pointer_to_the_name_field_of_the_most_recent_dictionary_header. 'd:last.name d:set-description
'Return_a_pointer_to_the_xt_field_of_the_most_recent_dictionary_header. 'd:last.xt d:set-description
'Given_a_dictionary_header,_return_the_link_field. 'd:link d:set-description
'Lookup_the_specified_name_in_the_dictionary_and_return_a_pointer_to_its_dictionary_header._This_returns_zero_if_the_word_is_not_found._This_also_sets_an_internal_variable_('which'_in_retro.muri)_to_the_header_address. 'd:lookup d:set-description
'Lookup_the_specified_address_in_the_dictionary_and_return_a_pointer_to_its_dictionary_header._This_returns_zero_if_the_word_is_not_found. 'd:lookup-xt d:set-description
'Given_a_dictionary_header,_return_the_name_field. 'd:name d:set-description
'Update_the_hashes_for_all_visible_words_in_the_dictionary. 'd:rehash d:set-description
'Set_the_`d:source`_field_of_the_header_for_the_named_word_(s2)_to_string_(s1)._The_string_will_not_be_duplicated. 'd:set-source d:set-description
'Given_a_dictionary_header,_return_the_source_field. 'd:source d:set-description
'Change_dictionary_search_to_use_hashed_name_comparions. 'd:use-hashes d:set-description
'Change_dictionary_search_to_use_full_name_comparions. 'd:use-strings d:set-description
'Display_a_list_of_all_named_items_in_the_`Dictionary`. 'd:words d:set-description
'Display_a_list_of_all_named_items_in_the_`Dictionary`_that_begin_with_the_provided_substring. 'd:words-beginning-with d:set-description
'Display_a_list_of_all_named_items_in_the_`Dictionary`_that_contain_the_provided_substring. 'd:words-with d:set-description
'Given_a_dictionary_header,_return_the_xt_field. 'd:xt d:set-description
'Change_the_class_of_the_most_recently_defined_word_to_`class:data`. 'data d:set-description
'Set_`Base`_to_decimal. 'decimal d:set-description
'Return_the_number_of_items_on_the_stack. 'depth d:set-description
'Temporarily_remove_n_from_the_stack,_execute_the_quotation,_and_then_restore_n_to_the_stack. 'dip d:set-description
'Attach_an_action_to_the_most_recently_created_word._This_is_used_in_a_manner_similar_to_CREATE/DOES>_in_traditional_Forth. 'does d:set-description
'Create_a_constant_returning_the_specified_double_cell_value. 'double:const d:set-description
'Temporarily_remove_m_and_n_from_the_stack,_execute_the_quotation,_and_then_restore_m_and_n_to_the_stack. 'double:dip d:set-description
'Fetch_the_double_cell_values_stored_in_the_double_cell_variable_at_a. 'double:fetch d:set-description
'Run_quote._After_execution_completes,_put_a_copy_of_m_and_n_back_on_top_of_the_stack. 'double:sip d:set-description
'Store_the_double_cell_values_on_the_stack_in_the_double_cell_variable_at_a. 'double:store d:set-description
'Swap_double_cell_value_on_stack. 'double:swap d:set-description
'Create_a_variable_for_holding_the_specified_double_cell_value. 'double:var d:set-description
'Discard_the_top_value_on_the_stack. 'drop d:set-description
'Remove_top_two_items_on_the_stack. 'drop-pair d:set-description
'Display_the_items_on_the_data_stack. 'dump-stack d:set-description
'Duplicate_the_top_item_on_the_stack. 'dup d:set-description
'Duplicate_the_top_two_items_on_the_stack. 'dup-pair d:set-description
'Constant._Negative_infinity.__For_encoded_floating-point_values. 'e:-INF d:set-description
'Is_encoded_value_negative_infinity? 'e:-inf? d:set-description
'Constant._Infinity._For_encoded_floating-point_values. 'e:INF d:set-description
'Constant._Maximum_value._For_encoded_floating-point_values. 'e:MAX d:set-description
'Constant._Minimum_value._For_encoded_floating-point_values. 'e:MIN d:set-description
'Constant._Not_a_Number._For_encoded_floating-point_values. 'e:NAN d:set-description
'Constrain_the_encoded_value_to_the_allowable_range. 'e:clip d:set-description
'Is_encoded_value_infinity? 'e:inf? d:set-description
'Is_encoded_value_at_the_maximum? 'e:max? d:set-description
'Is_encoded_value_at_the_minimum? 'e:min? d:set-description
'Return_`TRUE`_if_the_encoded_value_is_a_valid_number,_or_`FALSE`_otherwise. 'e:n? d:set-description
'Is_encoded_value_a_Nan? 'e:nan? d:set-description
'Display_an_encoded_number. 'e:put d:set-description
'Decode_an_encoded_floating-point_value. 'e:to-f d:set-description
'Return_`TRUE`_if_the_value_is_zero,_or_`FALSE`_otherwise. 'e:zero? d:set-description
'Compare_two_values_for_equality._Returns_`TRUE`_if_they_are_equal_or_`FALSE`_otherwise. 'eq? d:set-description
'Error_handler_for_data_stack_overflow 'err:dso d:set-description
'Error_handler_for_data_stack_underflow. 'err:dsu d:set-description
'Vectored._Error_handler._Called_when_a_word_is_not_found_by_`interpret`. 'err:notfound d:set-description
'Set_the_default_error_handlers_for_various_conditions. 'err:set-defaults d:set-description
'Set_error_handler_for_error_code_N._ 'err:set-handler d:set-description
'Multiply_two_floating-point_numbers,_returning_the_result. 'f:* d:set-description
'Add_two_floating-point_numbers,_returning_the_result. 'f:+ d:set-description
'Subtract_F2_from_F1_returning_the_result. 'f:- d:set-description
'Return_a_value_corresponding_to_negative_infinity 'f:-INF d:set-description
'Compare_two_floating-point_values_for_inequality._Returns_`TRUE`_if_they_are_not_equal_or_`FALSE`_otherwise. 'f:-eq? d:set-description
'Return_`TRUE`_if_floating-point_value_is_-INF_or_`FALSE`_otherwise. 'f:-inf? d:set-description
'Divide_floating-point_value_F1_by_F2. 'f:/ d:set-description
'Return_the_floating-point_value_for_Euler's_number. 'f:E d:set-description
'Hook._Return_a_constant_used_as_the_scaling_factor_for_the_e:_words. 'f:E1 d:set-description
'Return_a_value_corresponding_to_positive_infinity 'f:INF d:set-description
'Return_a_value_corresponding_to_NaN 'f:NAN d:set-description
'Return_the_floating-point_value_for_PI. 'f:PI d:set-description
'Return_the_absolute_value_for_a_floating-point_value. 'f:abs d:set-description
'Return_the_arc_cosine_of_a_floating-point_number. 'f:acos d:set-description
'Return_the_number_of_items_on_the_alternate_floating-point_stack. 'f:adepth d:set-description
'Return_the_arc_sine_of_a_floating-point_number. 'f:asin d:set-description
'Return_the_arc_tangent_of_a_floating-point_number. 'f:atan d:set-description
'Return_TRUE_if_number_is_between_the_lower_(l)_and_upper_(u)_bounds._If_not,_return_FALSE._This_is_inclusive_of_the_limits. 'f:between? d:set-description
'If_`n`_is_equal_to_`m`,_drop_both_and_execute_the_specified_quote_before_exiting_the_calling_word._If_not_equal,_leave_`n`_on_the_stack_and_let_execution_continue. 'f:case d:set-description
'Return_the_smallest_integral_value_greater_than_or_equal_to_the_specified_value. 'f:ceiling d:set-description
'Return_the_cosine_of_a_floating-point_number. 'f:cos d:set-description
'Decrement_n_by_one. 'f:dec d:set-description
'Return_the_number_of_items_on_the_floating-point_stack. 'f:depth d:set-description
'Discard_the_top_item_on_the_floating-point_stack. 'f:drop d:set-description
'Remove_top_two_items_on_the_stack. 'f:drop-pair d:set-description
'Display_the_items_on_the_alternate_floating-point_stack. 'f:dump-astack d:set-description
'Display_the_items_on_the_floating-point_stack. 'f:dump-stack d:set-description
'Duplicate_the_top_item_on_the_floating-point_stack. 'f:dup d:set-description
'Duplicate_the_top_two_items_on_the_stack. 'f:dup-pair d:set-description
'Compare_two_floating-point_values_for_equality._Returns_`TRUE`_if_they_are_equal_or_`FALSE`_otherwise. 'f:eq? d:set-description
'Fetch_a_stored_floating-point_value. 'f:fetch d:set-description
'Perform_a_mathematical_floor_operation_on_the_floating-point_value. 'f:floor d:set-description
'Compare_two_floating-point_values_for_greater_than. 'f:gt? d:set-description
'Increment_n_by_one. 'f:inc d:set-description
'Return_`TRUE`_if_floating-point_value_is_INF_or_`FALSE`_otherwise. 'f:inf? d:set-description
'Return_n_if_it_is_within_the_lower_(l)_and_upper_(u)_bounds._If_outside_the_bounds,_return_the_closes_boundary_value. 'f:limit d:set-description
'Return_log(F1)_for_base_F2_for_floating-point_values. 'f:log d:set-description
'Compare_two_floating-point_values_for_less_than. 'f:lt? d:set-description
'Return_the_greater_of_two_values. 'f:max d:set-description
'Return_the_lesser_of_two_values. 'f:min d:set-description
'Return_`TRUE`_if_floating-point_value_is_NaN_or_`FALSE`_otherwise. 'f:nan? d:set-description
'Invert_the_sign_of_the_floating-point_value. 'f:negate d:set-description
'Return_`TRUE`_if_floating-point_value_is_negative_or_`FALSE`_if_not. 'f:negative? d:set-description
'Remove_the_second_item_from_the_stack. 'f:nip d:set-description
'Put_a_copy_of_the_second_floating-point_value_over_the_top_one. 'f:over d:set-description
'Pop_a_floating-point_value_from_the_alternate_stack. 'f:pop d:set-description
'Return_`TRUE`_if_floating-point_value_is_positive_or_`FALSE`_otherwise. 'f:positive? d:set-description
'Return_F1^F2_for_floating-point_values. 'f:power d:set-description
'Push_a_floating-point_value_to_an_alternative_stack. 'f:push d:set-description
'Display_a_floating-point_number. 'f:put d:set-description
'Rotate_the_top_three_values. 'f:rot d:set-description
'Round_a_floating-point_value. 'f:round d:set-description
'Return_1_if_the_floating-point_value_is_positive_or_-1_if_it_is_negative. 'f:sign d:set-description
'Return_the_square_root_of_a_floating-point_number. 'f:signed-sqrt d:set-description
'Return_the_square_of_a_floating-point_number. 'f:signed-square d:set-description
'Return_the_sine_of_a_floating-point_number. 'f:sin d:set-description
'Return_the_square_root_of_a_floating-point_number. 'f:sqrt d:set-description
'Return_the_square_of_a_floating-point_number. 'f:square d:set-description
'Store_a_floating-point_value_to_the_specified_memory_location. 'f:store d:set-description
'Exchange_the_top_and_second_items_on_the_floating-point_stack. 'f:swap d:set-description
'Return_the_tangent_of_a_floating-point_number. 'f:tan d:set-description
'Encode_the_floating-point_value_to_an_integer. 'f:to-e d:set-description
'Convert_a_floating-point_value_into_a_number. 'f:to-number d:set-description
'Convert_a_floating-point_value_into_a_string. 'f:to-string d:set-description
'Tuck_a_copy_of_the_top_floating-point_value_under_the_second_one. 'f:tuck d:set-description
'Fetch_the_value_stored_at_the_specified_address. 'fetch d:set-description
'Fetch_the_value_stored_at_the_specified_address._Returns_the_next_address_and_the_value. 'fetch-next d:set-description
'Invoke_an_FFI_function._Set_the_stack_as_needed,_and_pass_the_FFI_handle_to_this. 'ffi:invoke d:set-description
'Map_in_a_symbol_from_a_shared_library_or_object_file._Returns_an_FFI_handle. 'ffi:map-sym d:set-description
'Open_a_shared_library_or_object_file. 'ffi:open d:set-description
'Trigger_an_i/o_operation_using_the_FFI_device. 'ffi:operation d:set-description
'Constant_for_opening_a_file_in_APPEND_mode. 'file:A d:set-description
'Constant_for_opening_a_file_in_READ_mode. 'file:R d:set-description
'Constant_for_opening_a_file_in_READ_&_WRITE_mode. 'file:R+ d:set-description
'Constant_for_opening_a_file_in_WRITE_mode. 'file:W d:set-description
'Given_a_file_handle,_close_the_file. 'file:close d:set-description
'Delete_the_named_file. 'file:delete d:set-description
'Given_a_file_name,_return_`TRUE`_if_it_exists_or_`FALSE`_if_it_does_not. 'file:exists? d:set-description
'Given_a_file_handle,_flush_any_pending_writes_to_disk. 'file:flush d:set-description
'Given_a_file_name,_open_it_and_run_the_quote_once_for_each_line_in_the_file. 'file:for-each-line d:set-description
'Open_a_named_file_(s)_with_the_given_mode_(m)._Returns_a_handle_identifying_the_file. 'file:open d:set-description
'Open_a_file_for_reading_&_writing._Returns_the_size_(NOS)_and_a_file_ID_(TOS) 'file:open-for-append d:set-description
'Open_a_file_for_reading._Returns_the_size_(NOS)_and_a_file_ID_(TOS) 'file:open-for-reading d:set-description
'Open_a_file_for_writing._Returns_the_file_ID 'file:open-for-writing d:set-description
'Trigger_a_file_I/O_operation._This_is_not_intended_to_be_used_directly. 'file:operation d:set-description
'Given_a_file_handle,_read_and_return_the_next_byte_in_it. 'file:read d:set-description
'Given_a_file_handle,_read_a_line_and_return_a_pointer_to_it. 'file:read-line d:set-description
'Given_a_pointer,_a_count,_and_a_file_handle,_read_and_store_the_requested_number_of_bytes_into_memory,_starting_at_the_specified_address. 'file:read/bytes d:set-description
'Given_a_file_handle,_read_and_return_the_next_character_in_it._If_compiled_with_UTF32_support_this_will_read_and_convert_UTF8. 'file:read/c d:set-description
'Move_the_current_offset_into_a_file_to_the_specified_one. 'file:seek d:set-description
'Given_a_file_handle,_return_the_size_of_the_file_(in_bytes). 'file:size d:set-description
'Given_an_address_and_a_file_name,_read_the_file_contents_into_memory_starting_at_the_address. 'file:slurp d:set-description
'Given_a_string_(s1)_and_a_file_name_(s2),_write_the_string_into_the_file,_replacing_any_existing_content. 'file:spew d:set-description
'Given_a_file_handle,_return_the_current_offset_in_the_file. 'file:tell d:set-description
'Write_a_byte_to_the_file_represented_by_the_handle. 'file:write d:set-description
'Write_n_bytes_to_the_file_represented_by_the_handle._Bytes_are_taken_from_memory,_starting_at_the_provided_address. 'file:write/bytes d:set-description
'Write_a_character_to_the_file_represented_by_the_handle._If_built_with_UTF32_support,_this_will_translate_the_character_back_to_a_UTF8_sequence_before_writing. 'file:write/c d:set-description
'Fill_memory_starting_at_"p"_with_value_"v"._Fills_"n"_cells. 'fill d:set-description
'Append_a_cons_cell_to_a_list. 'fll:append/value d:set-description
'Create_a_new_list_wit_the_given_value_as_the_car_of_the_first_node. 'fll:create d:set-description
'Remove_the_specified_cons_from_a_list. 'fll:del d:set-description
'Remove_the_last_cons_from_a_list. 'fll:drop d:set-description
'Run_a_quotation_against_each_value_in_a_list. 'fll:for-each d:set-description
'Insert_a_new_cons_(v)_into_the_list_(p),_at_the_specified_index_(n). 'fll:inject d:set-description
'Return_the_length_of_a_list. 'fll:length d:set-description
'Display_the_(as_numbers)_values_in_a_list. 'fll:put d:set-description
'Given_a_pointer_to_a_list,_return_a_pointer_to_the_last_cons_cell. 'fll:to-end d:set-description
'Given_a_node_number,_return_a_pointer_to_the_cons_cell_in_the_list. 'fll:to-index d:set-description
'Trigger_a_floating-point_operation._This_is_not_intended_to_be_used_directly. 'float:operation d:set-description
'Run_quotation_in_an_endless_loop. 'forever d:set-description
'Save_value_of_`Heap`,_run_the_function_provided,_then_restore_`Heap`. 'gc d:set-description
'Takes_an_address,_a_server,_a_port,_and_a_selector._Fetch_the_resource_and_store_it_at_address._Return_the_number_of_bytes_received. 'gopher:get d:set-description
'Compare_n1_and_n2._Return_`TRUE`_if_n1_is_greater_than_n2,_or_`FALSE`_otherwise. 'gt? d:set-description
'Compare_n1_and_n2._Return_`TRUE`_if_n1_is_greater_than_or_equal_to_n2,_or_`FALSE`_otherwise. 'gteq? d:set-description
'Fetch_the_16-bit_value_stored_at_the_specified_address._Addressing_for_this_is_in_8-bit_units. 'h:fetch d:set-description
'Fetch_the_value_stored_at_the_specified_address._Returns_the_next_address_and_the_value. 'h:fetch-next d:set-description
'Store_an_16-bit_value_into_the_specified_address._Addressing_for_this_is_in_8-bit_units. 'h:store d:set-description
'Store_a_value_into_the_specified_address_and_return_the_next_address. 'h:store-next d:set-description
'Return_the_next_free_address_in_memory. 'here d:set-description
'Set_`Base`_to_hexadecimal. 'hex d:set-description
'Add_a_hook_point_into_the_current_word._This_should_only_be_used_as_the_first_word_in_a_definition. 'hook d:set-description
'Assemble_the_instructions_specified_by_the_string_into_the_current_assembly_scope. 'i d:set-description
'Execute_the_quote_if_the_flag_is_`TRUE`. 'if d:set-description
'Execute_the_quotation_if_the_flag_is_`TRUE`._If_true,_also_exit_the_word. 'if; d:set-description
'Save_the_current_system_to_a_new_image_file. 'image:save d:set-description
'Change_the_class_of_the_most_recently_defined_word_to_`class:macro`. 'immediate d:set-description
'Run_the_code_in_the_specified_file._ 'include d:set-description
'Run_a_quote_the_specified_number_of_times,_tracking_the_loop_index_in_`I`._This_is_less_efficient_than_`times`,_so_if_the_index_is_not_needed,_this_should_be_avoided. 'indexed-times d:set-description
'Vectored._Interpret_a_single_input_token. 'interpret d:set-description
'Trigger_an_I/O_operation_involving_multicore_support._Unix_system_call. 'io:core d:set-description
'Return_the_number_of_I/O_devices. 'io:enumerate d:set-description
'Invoke_an_interaction_with_an_I/O_device. 'io:invoke d:set-description
'Ask_an_I/O_device_to_identify_itself._Returns_a_version_(m)_and_device_ID_(N). 'io:query d:set-description
'Scan_the_I/O_devices_for_a_device_with_a_specified_ID._Returns_the_device_number,_or_-1_if_not_found. 'io:scan-for d:set-description
'Trigger_a_Unix_system_call._This_is_not_intended_to_be_used_directly. 'io:unix-syscall d:set-description
'Data._Return_a_template_for_a_library_file_name_in_`~/.config/retroforth/library`. 'library:.CONFIG d:set-description
'Find_the_users_home_directory_and_construct_a_filename_for_a_library_in_the_`~/.config/retroforth/library`_directory. 'library:.config d:set-description
'Data._Return_a_template_for_a_library_file_name_in_`./library`. 'library:CWD d:set-description
'Check_to_see_if_a_library_exists. 'library:contains? d:set-description
'Construct_a_filename_for_a_library_in_the_`~/library`_directory. 'library:cwd d:set-description
'Given_a_library_name,_construct_the_actual_filename_to_load. 'library:filename d:set-description
'Load_a_library._This_will_load_the_string,_with_".retro". 'library:load d:set-description
'"Run_interactive_""listener""_(a_REPL)." 'listen d:set-description
'Compare_n1_and_n2._Return_`TRUE`_if_n1_is_less_than_n2,_or_`FALSE`_otherwise. 'lt? d:set-description
'Compare_n1_and_n2._Return_`TRUE`_if_n1_is_less_than_or_equal_to_n2,_or_`FALSE`_otherwise. 'lteq? d:set-description
'Use_malloc_to_allocate_memory._Returns_a_double_cell_pointer_to_this_memory. 'mem:alloc d:set-description
'Return_address_of_next_cell._Uses_a_double_cell_pointer_on_the_stack. 'mem:cell+ d:set-description
'Fetch_value_from_malloc'd_memory_region._Address_is_a_double_cell_value. 'mem:fetch d:set-description
'Fetch_a_double_cell_value_from_a_malloc_memory_region. 'mem:fetch-double d:set-description
'Fre_a_malloc'd_region_of_memory._Pass_a_double_cell_pointer_to_the_memory_to_free. 'mem:free d:set-description
'Resize_a_malloc'd_memory_area. 'mem:resize d:set-description
'Store_a_value_into_a_malloc'd_memory_region._Uses_a_double_cell_pointer_for_the_address. 'mem:store d:set-description
'Store_a_double_value_into_a_malloc'd_memory_region._Uses_a_double_cell_pointer_for_the_address. 'mem:store-double d:set-description
'Divide_`n`_by_`m`_and_return_the_remainder. 'mod d:set-description
'Return_`TRUE`_if_number_is_not_zero,_or_`FALSE`_otherwise. 'n:-zero? d:set-description
'Return_the_maximum_value_that_will_fit_in_a_cell. 'n:MAX d:set-description
'Return_the_minimum_value_that_will_fit_in_a_cell. 'n:MIN d:set-description
'Return_the_absolute_value_of_a_number. 'n:abs d:set-description
'Add_`n1`_to_`n2`_and_return_the_result. 'n:add d:set-description
'Return_TRUE_if_number_is_between_the_lower_(l)_and_upper_(u)_bounds._If_not,_return_FALSE._This_is_inclusive_of_the_limits. 'n:between? d:set-description
'Decrement_n_by_one. 'n:dec d:set-description
'Divide_`n`_by_`m`_and_return_the_integer_part_of_the_quotient. 'n:div d:set-description
'Divide_`n`_by_`m`_and_return_the_integer_part_of_the_quotient_and_remainder. 'n:divmod d:set-description
'Return_`TRUE`_if_number_is_even,_or_`FALSE`_if_not. 'n:even? d:set-description
'Increment_n_by_one. 'n:inc d:set-description
'Return_n_if_it_is_within_the_lower_(l)_and_upper_(u)_bounds._If_outside_the_bounds,_return_the_closes_boundary_value. 'n:limit d:set-description
'Return_the_greater_of_two_values. 'n:max d:set-description
'Return_the_lesser_of_two_values. 'n:min d:set-description
'Divide_`n`_by_`m`_and_return_the_remainder. 'n:mod d:set-description
'Multiply_`n1`_by_`n2`_and_return_the_result. 'n:mul d:set-description
'Invert_the_sign_of_a_number. 'n:negate d:set-description
'Return_`TRUE`_if_number_is_negative,_or_`FALSE`_if_not. 'n:negative? d:set-description
'Return_`TRUE`_if_number_is_odd,_or_`FALSE`_if_not. 'n:odd? d:set-description
'Return_`TRUE`_if_number_is_positive,_or_`FALSE`_if_not. 'n:positive? d:set-description
'Return_base_(b)_to_power_(p). 'n:pow d:set-description
'Display_a_number. 'n:put d:set-description
'Return_a_random_number. 'n:random d:set-description
'Return_the_square_root_of_a_number. 'n:sqrt d:set-description
'Return_the_square_of_a_number. 'n:square d:set-description
'Return_TRUE_if_number_is_greater_than_zero_or_FALSE_if_it_is_zero_or_less. 'n:strictly-positive? d:set-description
'Subtract_`n2`_from_`n1`_and_return_the_result. 'n:sub d:set-description
'Convert_a_number_into_a_floating-point_value. 'n:to-float d:set-description
'Convert_a_number_into_a_string. 'n:to-string d:set-description
'Return_`TRUE`_if_number_is_zero,_or_`FALSE`_otherwise. 'n:zero? d:set-description
'Remove_the_second_item_from_the_stack. 'nip d:set-description
'Display_a_newline. 'nl d:set-description
'Perform_a_logical_NOT_operation. 'not d:set-description
'Set_`Base`_to_octal. 'octal d:set-description
'Perform_a_bitwise_OR_between_the_provided_values. 'or d:set-description
'Put_a_copy_of_n_over_m. 'over d:set-description
'Pack_four_8-bit_values_into_a_32-bit_value. 'pack d:set-description
'Read_input_from_stdin_(via_`c:get`)_until_the_returned_character_is_matched_by_the_quote._Returns_a_string. 'parse-until d:set-description
'Copy_a_string_from_the_pasteboard_to_the_specified_address. 'pb:get d:set-description
'Return_the_length_of_the_string_on_the_pasteboard. 'pb:length d:set-description
'Copy_a_string_to_the_pasteboard. 'pb:set d:set-description
'Move_a_value_from_the_return_stack_to_the_data_stack. 'pop d:set-description
'Change_the_class_of_the_most_recently_defined_word_to_`class:primitive`. 'primitive d:set-description
'Move_a_value_from_the_data_stack_to_the_return_stack. 'push d:set-description
'Lookup_a_reference_by_name_and_inline_its_pointer_to_the_current_assembly_segment. 'r d:set-description
'Change_the_class_handler_of_the_most_recently_defined_word_to_the_specified_one. 'reclass d:set-description
'Restructure_the_order_of_items_on_the_stack. 'reorder d:set-description
'Begin_an_unconditional_loop. 'repeat d:set-description
'Remove_all_items_from_the_stack. 'reset d:set-description
'Rotate_the_top_three_values. 'rot d:set-description
'Compile_the_code_needed_to_push_a_string_pointer_to_the_stack_and_inline_the_string_data_into_the_current_definition. 's, d:set-description
'Constant._Returns_a_string_of_the_ASCII_letters_(upper_and_lower_case) 's:ASCII-LETTERS d:set-description
'Constant._Returns_a_string_of_the_ASCII_letters_in_lowercase 's:ASCII-LOWERCASE d:set-description
'Constant._Returns_a_string_of_the_ASCII_letters_in_uppercase 's:ASCII-UPPERCASE d:set-description
'Constant._Return_a_string_of_characters_recognized_as_numeric_digits. 's:DIGITS d:set-description
'Constant._Return_a_string_of_characters_recognized_as_punctuation. 's:PUNCTUATION d:set-description
'Constant._Returns_a_string_of_characters_recognized_as_whitespace. 's:WHITESPACE d:set-description
'Return_a_new_string_consisting_of_s1_followed_by_s2. 's:append d:set-description
'Return_`TRUE`_if_s1_begins_with_s2_or_`FALSE`_otherwise. 's:begins-with? d:set-description
'If_the_`s`_matches_`S`,_discard_`s`_and_run_the_quote_before_exiting_the_caller._If_they_do_not_match,_discard_the_quote_and_leave_`s`_on_the_stack. 's:case d:set-description
'Remove_the_last_character_from_a_string._Returns_a_new_string. 's:chop d:set-description
'Create_a_constant_named_s2,_returning_a_pointer_to_s1._This_will_use_`s:keep`_to_preserve_the_original_string. 's:const d:set-description
'Return_`TRUE`_if_the_character_is_present_in_the_string_or_`FALSE`_otherwise. 's:contains/char? d:set-description
'Return_`TRUE`_if_the_second_string_is_present_in_the_first_string_or_`FALSE`_otherwise. 's:contains/string? d:set-description
'Copy_a_string_(s)_to_a_destination_(a)._This_will_include_the_terminator_character_when_copying. 's:copy d:set-description
'Return_a_deduplicated_version_of_the_string. 's:dedup d:set-description
'Variable._Holds_a_pointer_to_the_deduplication_list. 's:dedup.data d:set-description
'Check_to_see_if_a_string_is_in_the_deduplication_list. 's:dedup.defined? d:set-description
'Return_a_pointer_to_a_deduplicated_copy_of_a_string._If_the_string_is_not_in_the_deduplication_list,_this_will_cause_errors. 's:dedup.find d:set-description
'Add_a_string_to_the_deduplication_list. 's:dedup.register d:set-description
'Return_an_empty_string. 's:empty d:set-description
'Return_`TRUE`_if_s1_ends_with_s2_or_`FALSE`_otherwise. 's:ends-with? d:set-description
'Compare_two_strings_for_equality._Return_`TRUE`_if_identical_or_`FALSE`_if_not. 's:eq? d:set-description
'Evaluate_string_as_if_it_was_typed_into_the_interpreter. 's:evaluate d:set-description
'Fetch_the_character_value_stored_at_the_specified_index_in_the_string. 's:fetch d:set-description
'Execute_the_quote_once_for_each_value_in_the_string._If_the_quote_returns_`TRUE`,_append_the_value_into_a_new_string._If_`FALSE`_the_value_will_be_discarded. 's:filter d:set-description
'Execute_the_quote_once_for_each_value_in_the_string. 's:for-each d:set-description
'Construct_a_new_string_using_the_template_passed_and_items_from_the_stack. 's:format d:set-description
'Read_input_from_standard_in_(via_`c:get`)_until_a_CR_or_LF_is_encountered._Returns_a_string. 's:get d:set-description
'Read_input_from_standard_in_(via_`c:get`)_until_a_whitespace_is_encountered._Returns_a_string. 's:get-word d:set-description
'Calculate_a_hash_value_for_a_string._This_uses_the_djb2_algorithm. 's:hash d:set-description
'Return_the_location_of_the_first_instance_of_the_specified_character_in_the_string. 's:index/char d:set-description
'Return_the_location_of_the_first_instance_of_the_specified_substring_(s2)_in_the_string_(s1)._Returns_-1_if_not_found. 's:index/string d:set-description
'Store_a_string_into_the_heap_and_return_a_pointer_to_the_start_of_it. 's:keep d:set-description
'Return_a_new_string_containing_the_first_`n`_characters_from_the_source_string. 's:left d:set-description
'Return_the_number_of_characters_in_a_string,_excluding_the_NULL_terminator. 's:length d:set-description
'Execute_the_specified_quote_once_for_each_character_in_the_string._Builds_a_new_string_from_the_return_value_of_the_quote._The_quote_should_return_only_one_value. 's:map d:set-description
'Return_a_new_string_consisting_of_s2_followed_by_s1. 's:prepend d:set-description
'Display_a_string. 's:put d:set-description
'Replace_the_first_instance_of_s2_in_s1_with_s3. 's:replace d:set-description
'Replace_all_instances_of_s2_in_s1_with_s3. 's:replace-all d:set-description
'Reverse_the_order_of_ASCII_characters_in_a_string. 's:reverse d:set-description
'Return_a_new_string_containing_the_specified_number_of_characters_from_the_right_side_of_the_string. 's:right d:set-description
'Internal_helper_function_used_to_skip_over_a_string_in_a_definition. 's:skip d:set-description
'Split_a_string_on_the_first_occurrence_of_the_specified_character. 's:split/char d:set-description
'Split_a_string_on_the_first_occurrence_of_the_specified_string._After_the_split,_the_top_stack_item_will_be_the_part_of_the_string_before_the_specified_substring,_and_the_second_item_will_be_the_rest_of_the_original_string. 's:split/string d:set-description
'Store_a_character_value_into_the_string_at_the_specified_index. 's:store d:set-description
'Extract_a_substring_from_the_specified_string._This_will_take_the_characters_starting_at_`f`_and_extend_`l`_characters_in_length. 's:substr d:set-description
'Move_a_string_into_the_temporary_string_buffers. 's:temp d:set-description
'Convert_a_string_representation_into_a_floating-point_value. 's:to-float d:set-description
'Convert_uppercase_ASCII_characters_in_a_string_to_lowercase. 's:to-lower d:set-description
'Convert_a_string_to_a_number. 's:to-number d:set-description
'Convert_lowercase_ASCII_characters_in_a_string_to_uppercase. 's:to-upper d:set-description
'Takes_a_string_and_a_character_to_use_as_a_separator._It_splits_the_string_into_substrings_and_returns_an_array_containing_pointers_to_each_of_them. 's:tokenize d:set-description
'Takes_a_string_(s1)_and_a_substring_(s2)__use_as_a_separator._It_splits_the_string_into_substrings_and_returns_as_array_containing_pointers_to_each_of_them. 's:tokenize-on-string d:set-description
'Trim_leading_and_trailing_whitespace_from_a_string. 's:trim d:set-description
'Trim_leading_whitespace_from_a_string. 's:trim-left d:set-description
'Trim_trailing_whitespace_from_a_string. 's:trim-right d:set-description
'Alias_for_`s:dedup.defined?`. 's:unique? d:set-description
'Discard_remaining_tokens_on_the_current_line_being_evaluated._This_only_works_when_including_a_file,_not_at_the_interpreter. 'script:abort-include d:set-description
'Return_the_number_of_arguments_passed_to_the_program. 'script:arguments d:set-description
'Return_the_filename_of_the_file_being_processed_by_the_current_`include`,_or_`/dev/stdin`_if_the_input_source_is_the_terminal. 'script:current-file d:set-description
'Return_the_current_line_number_of_the_file_being_processed_by_the_current_`include`,_or_`0`_if_the_input_source_is_the_terminal._Line_numbering_starts_at_1. 'script:current-line d:set-description
'Return_the_text_of_the_current_line_being_processed_by_the_current_`include`. 'script:current-line-text d:set-description
'Given_an_argument_number,_return_the_argument_as_a_string. 'script:get-argument d:set-description
'Discard_remaining_lines_in_the_file_currently_being_evaluated._This_only_works_when_including_a_file,_not_at_the_interpreter. 'script:ignore-to-eof d:set-description
'Discard_remaining_tokens_in_the_current_line._This_only_works_when_including_a_file,_not_at_the_interpreter. 'script:ignore-to-eol d:set-description
'Return_the_filename_of_the_program_being_run. 'script:name d:set-description
'Patch_the_hook_point_in_a2_to_point_to_a1. 'set-hook d:set-description
'Peform_a_bitwise_shift_of_m_by_n_bits._If_n_is_positive,_shift_right._If_negative,_the_shift_will_be_to_the_left. 'shift d:set-description
'Store_a_value_into_a_variable. 'sigil:! d:set-description
'Process_token_as_a_number. 'sigil:# d:set-description
'Process_token_as_an_ASCII_character. 'sigil:$ d:set-description
'Return_a_pointer_to_a_named_item._If_name_is_not_found,_returns_0. 'sigil:& d:set-description
'Process_token_as_a_string. 'sigil:' d:set-description
'Process_token_as_a_comment. 'sigil:( d:set-description
'Interpret_time:_convert_string_to_a_floating-point_value._Compile_time:_convert_string_to_a_floating-point_value_and_compile_code_to_push_this_value_to_the_float_stack. 'sigil:. d:set-description
'Hook._Process_token_as_a_new_definition. 'sigil:: d:set-description
'Fetch_from_a_stored_variable. 'sigil:@ d:set-description
'Process_token_as_an_instruction_bundle. 'sigil:\ d:set-description
'Process_token_as_a_function_reference. 'sigil:^ d:set-description
'Process_token_as_a_bytecode. 'sigil:` d:set-description
'POSTPONE_equivalent. 'sigil:| d:set-description
'Run_quote._After_execution_completes,_put_a_copy_of_n_back_on_top_of_the_stack. 'sip d:set-description
'Begin_accepting_connections._Returns_a_new_socket_and_an_error_code. 'socket:accept d:set-description
'Bind_a_socket_to_a_port._The_port_should_be_a_string._Returns_0_if_successful_or_-1_otherwise_and_an_error_code. 'socket:bind d:set-description
'Close_a_socket. 'socket:close d:set-description
'Configure_internal_settings_for_a_host_(s1)_and_port_(s2)._Use_before_`socket:bind`. 'socket:configure d:set-description
'Connect_to_a_server._Provide_a_socket,_this_will_return_a_status_flag_and_an_error_code. 'socket:connect d:set-description
'Obtain_a_new_socket. 'socket:create d:set-description
'Get_the_host_IP_in_dotted_notation._The_host_is_specified_by_the_string_and_the_address_is_the_start_of_the_buffer_for_the_dotted_IP. 'socket:gethostbyname d:set-description
'Prepare_a_socket_for_accepting_incoming_connections._Takes_a_backlog_count_(n1)_and_a_socket_(n2)._Returns_a_flag_(0_success,_-1_failed)_and_an_error_code. 'socket:listen d:set-description
'Trigger_a_socket_operation._This_is_not_intended_to_be_used_directly. 'socket:operation d:set-description
'Receive_data_from_a_socket._This_will_read_into_memory_starting_at_address_*a*,_up_to_*n1*_bytes._*n2*_is_the_socket._Returns_the_number_of_bytes_read_and_an_error_code. 'socket:recv d:set-description
'Send_a_string_to_a_socket._This_will_return_the_number_of_characters_sent_and_an_error_code. 'socket:send d:set-description
'Display_a_space_(`ASCII:SPACE`) 'sp d:set-description
'Store_a_value_into_the_specified_address. 'store d:set-description
'Store_a_value_into_the_specified_address_and_return_the_next_address. 'store-next d:set-description
'Exchange_the_position_of_the_top_two_items_on_the_stack 'swap d:set-description
'Display_a_tab_(`ASCII:HT`) 'tab d:set-description
'Convert_a_call_before_the_semicolon_to_a_jump. 'tail-recurse d:set-description
'Run_the_specified_quote_the_specified_number_of_times. 'times d:set-description
'Apply_q1_against_x,_then_q2_against_a_copy_of_x,_and_finally_q3_against_another_copy_of_x. 'tri d:set-description
'Apply_q1_against_x,_q2_against_y,_and_q3_against_z. 'tri* d:set-description
'Apply_q_against_x,_then_against_y,_and_finally_against_z. 'tri@ d:set-description
'Put_a_copy_of_the_top_item_on_the_stack_under_the_second_one. 'tuck d:set-description
'Add_view_named_`s`_to_the_displayed_views. 'ui:add-view d:set-description
'Create_a_new_view._`s1`_is_the_name_and_`s2`_is_the_type. 'ui:create-view d:set-description
'Return_the_address_of_the_Retro_handler_for_a_view's_associated_action. 'ui:get-action d:set-description
'Return_the_row_and_column_of_the_named_view. 'ui:get-position d:set-description
'Return_the_height_and_width_of_the_named_view. 'ui:get-size d:set-description
'Get_the_value_of_the_text_property_of_the_named_view. 'ui:get-text d:set-description
'Get_the_value_of_the_title_property_for_the_named_view. 'ui:get-title d:set-description
'Carry_out_a_UI_operation._Used_internally_by_the_other_`ui:`_words. 'ui:operation d:set-description
'Display_all_views. 'ui:present d:set-description
'Remove_view_named_`s`_from_the_displayed_views. 'ui:remove-view d:set-description
'Set_the_action_handler_for_a_view_to_the_specified_Retro_word_address. 'ui:set-action d:set-description
'Move_view_`s`_to_row_`n1`_and_column_`n2`. 'ui:set-position d:set-description
'Set_view_`s`_to_height_`n1`_and_width_`n2`. 'ui:set-size d:set-description
'Set_the_text_property_of_view_`s2`_to_`s1`. 'ui:set-text d:set-description
'Set_the_title_property_of_view_`s2`_to_`s1`. 'ui:set-title d:set-description
'Reset_the_hook_point_in_a1_to_the_default_definition. 'unhook d:set-description
'Change_the_current_working_directory_to_the_specified_one. 'unix:chdir d:set-description
'Return_the_number_of_files_(and_subdirectories)_in_the_current_working_directory 'unix:count-files-in-cwd d:set-description
'Execute_a_process_by_running_the_application_specified_by_s. 'unix:exec0 d:set-description
'Execute_a_process_by_running_the_application_specified_by_s1._Pass_s2_as_an_argument. 'unix:exec1 d:set-description
'Execute_a_process_by_running_the_application_specified_by_s1._Pass_s2_and_s3_as_arguments. 'unix:exec2 d:set-description
'Execute_a_process_by_running_the_application_specified_by_s1._Pass_s2,_s3,_and_s4_as_arguments. 'unix:exec3 d:set-description
'Runs_another_application_and_return_after_execution_is_completed._This_does_not_invoke_the_shell_like_`unix:system`_and_does_not_support_globbing. 'unix:execute d:set-description
'Exit_the_current_process,_returning_the_specified_return_code. 'unix:exit d:set-description
'Run_a_quote_once_for_each_file_or_subdirectory_in_the_current_directory._The_quote_will_receive_the_file_name_as_a_string_and_should_consume_this_and_return_nothing_on_the_stack. 'unix:for-each-file d:set-description
'Fork_the_current_process._Returns_a_PID. 'unix:fork d:set-description
'Return_the_current_working_directory 'unix:get-cwd d:set-description
'Get_an_environment_variable._Provide_the_name_and_an_address_to_store_it_in. 'unix:getenv d:set-description
'Return_the_PID_of_the_current_process. 'unix:getpid d:set-description
'Terminates_a_process._Takes_a_process_and_a_signal_to_send. 'unix:kill d:set-description
'Close_a_pipe. 'unix:pclose d:set-description
'Takes_a_string_with_a_Unix_command_line_and_run_it_in_a_pipe,_returning_a_new_string_with_the_first_line_of_the_output_from_the_pipe. 'unix:pipe d:set-description
'Open_a_pipe._Takes_a_command_to_run,_and_a_file_mode_(`file:R`_or_`file:W`;_`file:R+`_may_work_on_some_systems)._Returns_a_file_ID_usable_with_words_in_the_`file:`_namespace. 'unix:popen d:set-description
'Takes_a_string_in_the_form_`name=value`_and_sets_an_environment_variable_named_`name`_to_`value`. 'unix:putenv d:set-description
'Sleep_for_the_specified_number_of_seconds. 'unix:sleep d:set-description
'Open_a_pipe._Read_all_output_from_the_pipe_(until_ASCII:NULL)_and_store_in_the_specified_buffer._Return_the_number_of_bytes_read. 'unix:slurp-pipe d:set-description
'Runs_another_application_using_the_system_shell_and_returns_after_execution_is_completed. 'unix:system d:set-description
'Waits_for_a_child_process_to_complete._This_maps_to_the_wait()_system_call. 'unix:wait d:set-description
'Unpack_a_32-bit_value_into_four_8-bit_values. 'unpack d:set-description
'Multiply_`n1`_by_`n2`_and_return_the_result. 'unsigned:* d:set-description
'Multiply_`x`_by_`y`_and_then_divide_by_`z`_and_return_the_integer_part_of_the_quotient_and_remainder. 'unsigned:*/mod d:set-description
'Add_`n1`_to_`n2`_and_return_the_result. 'unsigned:+ d:set-description
'Subtract_`n2`_from_`n1`_and_return_the_result. 'unsigned:- d:set-description
'Compare_two_values_for_inequality._Returns_`TRUE`_if_they_are_not_equal_or_`FALSE`_otherwise. 'unsigned:-eq? d:set-description
'Divide_`n`_by_`m`_and_return_the_integer_part_of_the_quotient_and_remainder. 'unsigned:/mod d:set-description
'Compare_two_values_for_equality._Returns_`TRUE`_if_they_are_equal_or_`FALSE`_otherwise. 'unsigned:eq? d:set-description
'Compare_n1_and_n2._Return_`TRUE`_if_n1_is_greater_than_n2,_or_`FALSE`_otherwise. 'unsigned:gt? d:set-description
'Compare_n1_and_n2._Return_`TRUE`_if_n1_is_less_than_n2,_or_`FALSE`_otherwise. 'unsigned:lt? d:set-description
'Peform_a_bitwise_shift_of_m_by_n_bits._If_n_is_positive,_shift_right._If_negative,_the_shift_will_be_to_the_left. 'unsigned:shift d:set-description
'Execute_quote_repeatedly_while_the_quote_returns_a_value_of_`FALSE`._The_quote_should_return_a_flag_of_either_`TRUE`_or_`FALSE`,_though_`until`_will_treat_any_non-zero_value_as_`TRUE`. 'until d:set-description
'Decrement_the_value_stored_at_the_specified_address_by_1. 'v:dec d:set-description
'Decrement_the_value_stored_at_the_specified_address_by_the_specified_value. 'v:dec-by d:set-description
'Increment_the_value_stored_at_the_specified_address_by_1. 'v:inc d:set-description
'Increment_the_value_stored_at_the_specified_address_by_the_specified_value. 'v:inc-by d:set-description
'Fetch_the_value_stored_at_the_address,_then_run_`n:limit`_against_it,_using_the_specified_lower_and_upper_bounds._Then_store_the_resulting_value_back_to_the_original_address. 'v:limit d:set-description
'Set_a_variable_to_0. 'v:off d:set-description
'Set_a_variable_to_-1. 'v:on d:set-description
'Make_a_copy_of_the_value_at_the_address,_then_run_the_quote._Once_the_quote_completes,_restore_the_address_to_the_specified_value. 'v:preserve d:set-description
'Fetch_a_value_from_the_specified_address,_then_run_the_quotation_with_this_value_on_the_stack._Afterwards,_store_the_returned_value_at_the_original_address. 'v:update d:set-description
'Create_a_variable._The_variable_is_initialized_to_0. 'var d:set-description
'Create_a_variable_with_the_specified_initial_value. 'var-n d:set-description
'Create_a_variable_with_the_specified_initial_value. 'var-s d:set-description
'Fetch_the_32-bit_value_stored_at_the_specified_address._Addressing_for_this_is_in_8-bit_units._The_address_must_be_aligned_on_a_four_byte_boundary. 'w:fetch d:set-description
'Fetch_the_value_stored_at_the_specified_address._Returns_the_next_address_and_the_value. 'w:fetch-next d:set-description
'Store_an_32-bit_value_into_the_specified_address._Addressing_for_this_is_in_8-bit_units._The_address_must_be_aligned_on_a_four_byte_boundary. 'w:store d:set-description
'Store_a_value_into_the_specified_address_and_return_the_next_address. 'w:store-next d:set-description
'Execute_quote_repeatedly_while_the_quote_returns_a_`TRUE`_value._The_quote_should_return_a_flag_of_either_`TRUE`_or_`FALSE`,_though_`while`_will_treat_any_non-zero_value_as_`TRUE`. 'while d:set-description
'Perform_a_bitwise_XOR_operation. 'xor d:set-description
'Begin_an_array._This_is_intended_to_make_creating_arrays_a_bit_cleaner_than_using_a_quotation_and_`a:counted-results`. '{ d:set-description
'Begin_a_lexically_scoped_area. '{{ d:set-description
'Complete_an_array_begun_by_`{`._Returns_a_pointer_to_the_data. '} d:set-description
'End_a_lexically_scoped_area._This_will_hide_any_headers_between_`{{`_and_`---reveal---`,_leaving_only_headers_between_`---reveal---`_and_the_`}}`_visible. '}} d:set-description
~~~

View file

@ -1,5 +1,166 @@
#!/usr/bin/env retro
# retro-describe
This is a small tool to display some helpful information
about a word.
# Usage
retro-describe wordname
# Notes
This is based on the `glossary.forth` tool included with
Retro. It's basically just the `describe` functionality,
but is a little more streamlined to use and abandons the
editing and export functionality of the full tool.
# The Code
First, gather the command line arguments. If no word name
was passed, just exit.
~~~
script:arguments [ I script:get-argument d:describe ] indexed-times
script:arguments n:zero? [ #0 unix:exit ] if
~~~
~~~
#166 'DATA-START const
~~~
# Data File
/usr/local/share/RETRO12/words.tsv
I like plain text formats, so the data is stored as a plain text
file, with one line per word. Each line has a number of fields.
These are tab separated. The fields are:
| name | 0
| data stack | 1
| address stack | 2
| float stack | 3
| general description | 4
| interpret time description | 5
| compile time description | 6
| class handler | 7
| example 1 | 8
| example 2 | 9
| namespace | 10
| interface | 11
I use a variable named `SourceLine` to point to the current line
contents.
~~~
'SourceLine var
~~~
I next define words to access each field. This involves helpers
to skip over fields I'm not intersted in, a word to return a
specific field, and the top level wrappers over these.
Rather than manually enter each of the field accessors, I am
just listing them in a set and constructing the words via some
simple code.
~~~
{{
:select @SourceLine ASCII:HT s:tokenize swap a:fetch ;
---reveal---
#0 { 'name 'dstack 'astack 'fstack
'descr 'itime 'ctime 'class
'ex1 'ex2 'namespace 'interface }
[ 'field: s:prepend d:create
dup compile:lit &select compile:call compile:ret
&class:word reclass n:inc ] a:for-each drop
}}
~~~
# Display an Entry
I implement a word to display an entry. This will use a
format like:
name
Data: -
Addr: -
Float: -
A description of the word.
Class Handler: class:word | Namespace: global | Interface Layer: all
If there are specific notes on interpret or compile time
actions, or any examples, they will be displayed after
the description.
~~~
{{
:s:putfmt (s-) s:format s:put ;
:name field:name '%s\n\n s:putfmt ;
:data field:dstack '__Data:__%s\n s:putfmt ;
:address field:astack '__Addr:__%s\n s:putfmt ;
:float field:fstack '__Float:_%s\n\n s:putfmt ;
:description field:descr '%s\n\n s:putfmt ;
:interpret-time field:itime s:length 0; drop
field:itime 'Interpret_Time:\n__%s\n\n s:putfmt ;
:compile-time field:ctime s:length 0; drop
field:ctime 'Compile_Time:\n__%s\n\n s:putfmt ;
:| '_|_ s:put ;
:class field:class 'Class:_%s s:putfmt ;
:namespace field:namespace 'Namespace:_%s s:putfmt ;
:interface field:interface 'Interface_Layer:_%s s:putfmt ;
:example1 field:ex1 '{n/a} s:eq? not 0; drop
field:ex1 s:format '\nExample_#1:\n\n%s\n\n s:putfmt ;
:example2 field:ex2 '{n/a} s:eq? not 0; drop
field:ex2 s:format '\nExample_#2:\n\n%s\n\n s:putfmt ;
---reveal---
:display-result
name
data (stack)
address (stack)
float (stack)
description
interpret-time
compile-time
class | namespace | interface nl
example1
example2
;
}}
~~~
## Describe a Word
~~~
{{
'Target var
'Len var
'LineNumber var
:matched? (-f) @SourceLine @Len s:left s:hash @Target eq? ;
:entry? (-f) @LineNumber DATA-START gteq? &LineNumber v:inc ;
:process (-) &Heap [ s:keep !SourceLine matched? &display-result if ] v:preserve ;
---reveal---
:find-and-display-entry
#0 !LineNumber dup s:length !Len s:hash !Target
script:name [ entry? &process &drop choose ] file:for-each-line nl ;
}}
~~~
# Finish
This checks the command line arguments and calls the proper words to
handle each case.
~~~
script:arguments [ I script:get-argument find-and-display-entry ] indexed-times
~~~
# Glossary Data

File diff suppressed because it is too large Load diff