.title print entity block ; VERB Version 1.0 June 1st, 1985 ; Written by Joe Meadows Jr., with thanks to the ; Fred Hutchinson Cancer Research Center for kindly ; allowing me to use their computing resources. ; ; If you have any questions, comments, ideas, or ; whatever, feel free to contact me via US Mail : ; Joe Meadows Jr. ; 4841 268th Ave. N.E. ; Redmond Wa. 98052 ; or via phone : (206) 827-7296 .library 'clexlib' .entry clex_print_entity,^m ; 4(ap) = address of entity block movl 4(ap),r6 moval table_types,r4 movzbl ent_b_subtype(r6),r5 decl r5 blss 10$ cmpl r5,#3 blss 20$ 10$: clrl r0 ret 20$: add_string <' '> add_ascic (r4)[r5] add_string <' '> movzwl ent_w_name(r6),r7 addl r6,r7 add_ascic r7 movl r7,r8 movl ent_l_syntax(r6),r7 beql _label add_string <' , syntax='> addl clex_table,r7 movzwl cmd_w_name(r7),r5 addl r7,r5 add_ascic r5 _label: movzwl ent_w_label(r6),r7 beql _prompt addl r6,r7 movzbl (r8),r0 movzbl (r7),r1 cmpc5 r0,1(r8),#^a' ',r1,1(r7) ; see if other that default beql _prompt add_string <' , label='> add_ascic r7 movl r7,r8 ; prompt defaults to label right? _prompt: movzwl ent_w_prompt(r6),r7 beql _ent_neg addl r6,r7 movzbl (r8),r0 movzbl (r7),r1 cmpc5 r0,1(r8),#^a' ',r1,1(r7) ; see if other than default beql _ent_neg add_string <' , prompt="'> add_ascic r7 add_string <'"'> _ent_neg: calls #0,g^put_output movzbl ent_b_subtype(r6),r5 cmpl r5,#2 beql _ent_neg1 ; default for qualifiers is negatable bbc #ent_v_neg,ent_w_flags(r6),_ent_def add_string <' negatable'> calls #0,g^put_output brb _ent_def _ent_neg1: bbs #ent_v_neg,ent_w_flags(r6),_ent_def add_string <' nonnegatable'> calls #0,g^put_output _ent_def: bbc #ent_v_deftrue,ent_w_flags(r6),_ent_bat add_string <' default'> calls #0,g^put_output _ent_bat: bbc #ent_v_batdef,ent_w_flags(r6),_ent_val add_string <' batch'> calls #0,g^put_output _ent_val: bbs #ent_v_val,ent_w_flags(r6),_ent_val1 brw _ent_cliflags _ent_val1: add_string <' value'> clrl r7 bbc #ent_v_valreq,ent_w_flags(r6),_ent_impcat add_string <' (required'> incl r7 _ent_impcat: bbc #ent_v_impcat,ent_w_flags(r6),_ent_list tstl r7 bneq _ent_impcat1 add_string <' ('> incl r7 brb _ent_impcat2 _ent_impcat1: add_ascic comma _ent_impcat2: add_string <'impcat'> _ent_list: bbc #ent_v_list,ent_w_flags(r6),_ent_concat tstl r7 bneq _ent_list1 add_string <' ('> incl r7 brb _ent_list2 _ent_list1: add_ascic comma _ent_list2: add_string <'list'> bbs #ent_v_concat,ent_w_flags(r6),_ent_defval add_string <',noconcatenate'> _ent_concat: bbc #ent_v_concat,ent_w_flags(r6),_ent_defval tstl r7 bneq _ent_concat1 add_string <' ('> incl r7 brb _ent_concat2 _ent_concat1: add_ascic comma _ent_concat2: add_string <'concatenate'> _ent_defval: movzwl ent_w_defval(r6),r5 beql _ent_type addl r6,r5 tstl r7 bneq _ent_defval1 add_string <' ('> incl r7 brb _ent_defval2 _ent_defval1: add_ascic comma _ent_defval2: add_string <'default="'> clrl r3 movzbl (r5),r2 ; save size of entire thing _ent_defval3: incl r5 ; point to first ascic decl r2 ; subtract off extra byte for count byte movzbl (r5),r4 tstl r3 beql _ent_defval4 add_ascic comma _ent_defval4: add_ascic r5 incl r3 subb r4,r2 ; subtract off printed portion. beql _ent_defval5 addl r4,r5 brb _ent_defval3 _ent_defval5: add_string <'"'> _ent_type: tstb ent_b_valtype(r6) bneq _ent_type1 movl ent_l_user_type(r6),r5 bneq _ent_type00 brw _ent_end_val _ent_type00: addl clex_table,r5 movzwl type_w_name(r5),r4 addl r5,r4 tstl r7 bneq _ent_type0 incl r7 add_string <' ('> brb _ent_type01 _ent_type0: add_ascic comma _ent_type01: add_string <'type='> add_ascic r4 brb _ent_end_val _ent_type1: tstl r7 bneq _ent_type2 incl r7 add_string <' ('> brb _ent_type3 _ent_type2: add_ascic comma _ent_type3: add_string <'type='> moval table_value_types,r1 movzbl ent_b_valtype(r6),r2 decl r2 add_ascic (r1)[r2] _ent_end_val: tstl r7 beql _ent_end_val1 add_string <')'> _ent_end_val1: calls #0,g^put_output _ent_cliflags: bitw #ent_m_mcroptdelim!ent_m_mcrignore,ent_w_flags(r6) beql _ent_position clrl r7 add_string <' cliflags ('> bbc #ent_v_mcroptdelim,ent_w_flags(r6),_ent_cliflags1 add_string <'mcroptdelim'> incl r7 _ent_cliflags1: bbc #ent_v_mcrignore,ent_w_flags(r6),_ent_cliflags3 tstl r7 beql _ent_cliflags2 add_ascic comma _ent_cliflags2: add_string <'mcrignore'> _ent_cliflags3: add_string <')'> calls #0,g^put_output _ent_position: bbc #ent_v_parm,ent_w_flags(r6),_ent_pos2 add_string <' placement='> bbc #ent_v_verb,ent_w_flags(r6),_ent_pos1 add_string <'positional'> brb _ent_pos2 _ent_pos1: add_string <'local'> _ent_pos2: calls #0,g^put_output movl ent_l_next(r6),r0 beql 10$ addl3 clex_table,r0,-(sp) calls #1,clex_print_entity 10$: ret .psect string_table rd,nowrt,noexe comma: string <','> table_types: string <'parameter'> string <'qualifier'> string <'keyword'> table_value_types: string <'$infile'> string <'$outfile'> string <'$number'> string <'$privilege'> string <'$datetime'> string <'$protection'> string <'$process'> string <'$inlog'> string <'$outlog'> string <'$insym'> string <'$outsym'> string <'$node'> string <'$device'> string <'$directory'> string <'$uic'> string <'$rest_of_line'> string <'$parenthesized_value'> string <'$deltatime'> string <'$quoted_string'> string <'$file'> string <'$expression'> string <'$$test1'> string <'$$test2'> string <'$$test3'> string <'$acl'> .end