%sbttl 'Definitions common to the AUX routines' ! ! COPYRIGHT (c) 1982 BY ! Project Software & Development, Inc. ! ! This software is furnished under a license and may be used and copied ! only in accordance with the terms of such license and with the ! inclusion of the above copyright notice. This software or any other ! copies thereof may not be provided or otherwise made available to any ! other person. No title to and ownership of the software is hereby ! transferred. ! ! The information in this software is subject to change without notice ! and should not be construed as a commitment by PROJECT SOFTWARE ! AND DEVELOPMENT, INC. ! ! PROJECT SOFTWARE assumes no responsibility for the use or reliability ! of its software on equipment which is not supplied by PROJECT SOFTWARE. ! !++ ! FACILITY: ! DCL alternate keypad applications ! ABSTRACT: ! ! Contains the macros and definitions common to the AUX routines ! ! ENVIRONMENT: ! ! AUTHOR: M.E.Husby ! ! MODIFIED BY: ! ! , : VERSION !-- ! ! TABLE OF CONTENTS: ! ! ! MACROS: ! macro ! Forms the bit that corresponds to the specified control character ! for a terminator mask. ctrl(n) = 1^(%c %string(n) -%c'@') % ; macro ! terminal characteristics buffer d_class = 0,0,8,0%, d_type = 1,0,8,0%, d_pw = 2,0,16,0%, d_char = 4,0,24,0%, d_pl = 7,0,8,0%, d_char2 = 8,0,32,0% ; macro symbol(char,key_name,sym_name,sym_text,row,column) = byte(char),$descriptor(key_name),$descriptor(sym_name), $descriptor(sym_text),byte(row),byte(column) % ; field symbol_table_fields = set sym_b_char = [0,0,8,0], ! Indentifing character sym_a_keyname = [1,0,32,0], ! Address of key name descriptor sym_a_command = [5,0,32,0], ! Address of command descriptor sym_a_display = [9,0,32,0], ! Address of display descriptor sym_b_row = [13,0,8,0], ! Row for keypad display sym_b_column = [14,0,8,0] ! Column for keypad display tes; macro symbol_table = blockvector[,15,byte] field(symbol_table_fields) % ; macro init_dynamic_descriptor(desc) = begin bind d = desc : block[,byte]; d[dsc$w_length] = 0; d[dsc$b_class] = dsc$k_class_d; d[dsc$b_type] = dsc$k_dtype_t; d[dsc$a_pointer] = 0; end % ; macro perform_it(command,n) = begin local status; external routine %name('STR$',command) : addressing_mode(general); if not ( status=%name('STR$',command)(%remove(n)) ) then signal(.status); end %; macro pos_extr(n) = perform_it('POS_EXTR',n) %, right(n) = perform_it('RIGHT',n) %, left(n) = perform_it('LEFT',n) %, free1_dx(n) = perform_it('FREE1_DX',n) %, copy_dx(n) = perform_it('COPY_DX',n) %, concat(n) = perform_it('CONCAT',n) %, append(n) = perform_it('APPEND',n) % ; ! ! EQUATED SYMBOLS: ! literal time_flag = 1, read_flag = 2, write_flag = 3, mbx_flag = 4, typeahead_flag= 5, msg_c_size = 1024, lf = 10, vt = 11, ht = 12, cr = 13, ctrl_z = 26, escape = 27, delete = 127 ; ! ! End of Aux.Req