hydrovax@nmtsun.nmt.edu (M. Warner Losh) (02/02/88)
$Part3: $ File_is="ENTITY.MAR" $ Check_Sum_is=1535098164 $ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY X`009.title print entity block X X; VERB Version 1.0 June 1st, 1985 X; Written by Joe Meadows Jr., with thanks to the X; Fred Hutchinson Cancer Research Center for kindly X; allowing me to use their computing resources. X; X; If you have any questions, comments, ideas, or X; whatever, feel free to contact me via US Mail : X;`009Joe Meadows Jr. X;`0094841 268th Ave. N.E. X;`009Redmond Wa. 98052 X; or via phone : (206) 827-7296 X X`009.library 'clexlib' X X`009.entry`009clex_print_entity,^m<r2,r3,r4,r5,r6,r7,r8> X`009; 4(ap) = address of entity block X X`009movl`0094(ap),r6 X X`009moval`009table_types,r4 X`009movzbl`009ent_b_subtype(r6),r5 X`009decl`009r5 X`009blss`00910$ X`009cmpl`009r5,#3 X`009blss`00920$ X X10$:`009clrl`009r0 X`009ret X X20$:`009add_string`009<' '> X`009add_ascic`009(r4)[r5] X`009add_string`009<' '> X`009movzwl`009ent_w_name(r6),r7 X`009addl`009r6,r7 X`009add_ascic`009r7 X`009movl`009r7,r8 X X`009movl`009ent_l_syntax(r6),r7 X`009beql`009_label X`009add_string`009<' , syntax='> X`009addl`009clex_table,r7 X`009movzwl`009cmd_w_name(r7),r5 X`009addl`009r7,r5 X`009add_ascic`009r5 X X_label: X`009movzwl`009ent_w_label(r6),r7 X`009beql`009_prompt X`009addl`009r6,r7 X`009movzbl`009(r8),r0 X`009movzbl`009(r7),r1 X`009cmpc5`009r0,1(r8),#^a' ',r1,1(r7)`009; see if other that default X`009beql`009_prompt X`009add_string`009<' , label='> X`009add_ascic`009r7 X`009movl`009r7,r8`009; prompt defaults to label right? X_prompt: X`009movzwl`009ent_w_prompt(r6),r7 X`009beql`009_ent_neg X`009addl`009r6,r7 X`009movzbl`009(r8),r0 X`009movzbl`009(r7),r1 X`009cmpc5`009r0,1(r8),#^a' ',r1,1(r7)`009; see if other than default X`009beql`009_ent_neg X`009add_string`009<' , prompt="'> X`009add_ascic`009r7 X`009add_string`009<'"'> X_ent_neg: X`009calls`009#0,g^put_output X`009movzbl`009ent_b_subtype(r6),r5 X`009cmpl`009r5,#2 X`009beql`009_ent_neg1`009; default for qualifiers is negatable X`009bbc`009#ent_v_neg,ent_w_flags(r6),_ent_def X`009add_string`009<' negatable'> X`009calls`009#0,g^put_output X`009brb`009_ent_def X_ent_neg1: X`009bbs`009#ent_v_neg,ent_w_flags(r6),_ent_def X`009add_string`009<' nonnegatable'> X`009calls`009#0,g^put_output X_ent_def: X`009bbc`009#ent_v_deftrue,ent_w_flags(r6),_ent_bat X`009add_string`009<' default'> X`009calls`009#0,g^put_output X_ent_bat: X`009bbc`009#ent_v_batdef,ent_w_flags(r6),_ent_val X`009add_string`009<' batch'> X`009calls`009#0,g^put_output X_ent_val: X`009bbs`009#ent_v_val,ent_w_flags(r6),_ent_val1 X`009brw`009_ent_cliflags X_ent_val1: X`009add_string`009<' value'> X`009clrl`009r7 X`009bbc`009#ent_v_valreq,ent_w_flags(r6),_ent_impcat X`009add_string`009<' (required'> X`009incl`009r7 X_ent_impcat: X`009bbc`009#ent_v_impcat,ent_w_flags(r6),_ent_list X`009tstl`009r7 X`009bneq`009_ent_impcat1 X`009add_string`009<' ('> X`009incl`009r7 X`009brb`009_ent_impcat2 X_ent_impcat1: X`009add_ascic`009comma X_ent_impcat2: X`009add_string`009<'impcat'> X_ent_list: X`009bbc`009#ent_v_list,ent_w_flags(r6),_ent_concat X`009tstl`009r7 X`009bneq`009_ent_list1 X`009add_string`009<' ('> X`009incl`009r7 X`009brb`009_ent_list2 X_ent_list1: X`009add_ascic`009comma X_ent_list2: X`009add_string`009<'list'> X`009bbs`009#ent_v_concat,ent_w_flags(r6),_ent_defval X`009add_string`009<',noconcatenate'> X X_ent_concat: X`009bbc`009#ent_v_concat,ent_w_flags(r6),_ent_defval X`009tstl`009r7 X`009bneq`009_ent_concat1 X`009add_string`009<' ('> X`009incl`009r7 X`009brb`009_ent_concat2 X_ent_concat1: X`009add_ascic`009comma X_ent_concat2: X`009add_string`009<'concatenate'> X X_ent_defval: X`009movzwl`009ent_w_defval(r6),r5 X`009beql`009_ent_type X`009addl`009r6,r5 X`009tstl`009r7 X`009bneq`009_ent_defval1 X`009add_string`009<' ('> X`009incl`009r7 X`009brb`009_ent_defval2 X_ent_defval1: X`009add_ascic`009comma X_ent_defval2: X`009add_string`009<'default="'> X`009clrl`009r3 X`009movzbl`009(r5),r2`009; save size of entire thing X_ent_defval3: X`009incl`009r5`009; point to first ascic X`009decl`009r2`009; subtract off extra byte for count byte X`009movzbl`009(r5),r4 X`009tstl`009r3 X`009beql`009_ent_defval4 X`009add_ascic`009comma X_ent_defval4: X`009add_ascic`009r5 X`009incl`009r3 X`009subb`009r4,r2`009; subtract off printed portion. X`009beql`009_ent_defval5 X`009addl`009r4,r5 X`009brb`009_ent_defval3 X_ent_defval5: X`009add_string`009<'"'> X X_ent_type: X`009tstb`009ent_b_valtype(r6) X`009bneq`009_ent_type1 X`009movl`009ent_l_user_type(r6),r5 X`009bneq`009_ent_type00 X`009brw`009_ent_end_val X_ent_type00: X`009addl`009clex_table,r5 X`009movzwl`009type_w_name(r5),r4 X`009addl`009r5,r4 X`009tstl`009r7 X`009bneq`009_ent_type0 X`009incl`009r7 X`009add_string`009<' ('> X`009brb`009_ent_type01 X_ent_type0: X`009add_ascic`009comma X_ent_type01: X`009add_string`009<'type='> X`009add_ascic`009r4 X`009brb`009_ent_end_val X_ent_type1: X`009tstl`009r7 X`009bneq`009_ent_type2 X`009incl`009r7 X`009add_string`009<' ('> X`009brb`009_ent_type3 X_ent_type2: X`009add_ascic`009comma X_ent_type3: X`009add_string`009<'type='> X`009moval`009table_value_types,r1 X`009movzbl`009ent_b_valtype(r6),r2 X`009decl`009r2 X`009add_ascic`009(r1)[r2] X X_ent_end_val: X`009tstl`009r7 X`009beql`009_ent_end_val1 X`009add_string`009<')'> X_ent_end_val1: X`009calls`009#0,g^put_output X X_ent_cliflags: X`009bitw`009#ent_m_mcroptdelim!ent_m_mcrignore,ent_w_flags(r6) X`009beql`009_ent_position X`009clrl`009r7 X`009add_string`009<' cliflags ('> X`009bbc`009#ent_v_mcroptdelim,ent_w_flags(r6),_ent_cliflags1 X`009add_string`009<'mcroptdelim'> X`009incl`009r7 X_ent_cliflags1: X`009bbc`009#ent_v_mcrignore,ent_w_flags(r6),_ent_cliflags3 X`009tstl`009r7 X`009beql`009_ent_cliflags2 X`009add_ascic`009comma X_ent_cliflags2: X`009add_string`009<'mcrignore'> X_ent_cliflags3: X`009add_string`009<')'> X`009calls`009#0,g^put_output X X_ent_position: X`009bbc`009#ent_v_parm,ent_w_flags(r6),_ent_pos2 X`009add_string`009<' placement='> X`009bbc`009#ent_v_verb,ent_w_flags(r6),_ent_pos1 X`009add_string`009<'positional'> X`009brb`009_ent_pos2 X_ent_pos1: X`009add_string`009<'local'> X_ent_pos2: X`009calls`009#0,g^put_output X X`009movl`009ent_l_next(r6),r0 X`009beql`00910$ X`009addl3`009clex_table,r0,-(sp) X`009calls`009#1,clex_print_entity X10$:`009ret X X`009.psect`009string_table`009rd,nowrt,noexe Xcomma:`009string`009<','> Xtable_types: X`009string`009<'parameter'> X`009string`009<'qualifier'> X`009string`009<'keyword'> X Xtable_value_types: X`009string`009<'$infile'> X`009string`009<'$outfile'> X`009string`009<'$number'> X`009string`009<'$privilege'> X`009string`009<'$datetime'> X`009string`009<'$protection'> X`009string`009<'$process'> X`009string`009<'$inlog'> X`009string`009<'$outlog'> X`009string`009<'$insym'> X`009string`009<'$outsym'> X`009string`009<'$node'> X`009string`009<'$device'> X`009string`009<'$directory'> X`009string`009<'$uic'> X`009string`009<'$rest_of_line'> X`009string`009<'$parenthesized_value'> X`009string`009<'$deltatime'> X`009string`009<'$quoted_string'> X`009string`009<'$file'> X`009string`009<'$expression'> X`009string`009<'$$test1'> X`009string`009<'$$test2'> X`009string`009<'$$test3'> X`009string`009<'$acl'> X X X`009.end $ GoSub Convert_File $ File_is="EVALENTITY.MAR" $ Check_Sum_is=92099924 $ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY X`009.title evaluate entity, to print out TYPEs and SYNTAX's X X; VERB Version 1.0 June 1st, 1985 X; Written by Joe Meadows Jr., with thanks to the X; Fred Hutchinson Cancer Research Center for kindly X; allowing me to use their computing resources. X; X; If you have any questions, comments, ideas, or X; whatever, feel free to contact me via US Mail : X;`009Joe Meadows Jr. X;`0094841 268th Ave. N.E. X;`009Redmond Wa. 98052 X; or via phone : (206) 827-7296 X X`009.psect`009_clex_local`009rd,wrt,noexe X_clex_eval_count:: X`009.long X_clex_evals:: X`009.blkl`0094096 X_clex_ents_count:: X`009.long X_clex_ents:: X`009.blkl`0094096 X X`009.psect`009_clex_code`009rd,nowrt,exe X X`009.entry`009clex_evaluate_entity,^m<r2,r3,r4,r5> X X`009movl`0094(ap),r2 X`009moval`009_clex_evals,r3 X X_evaluate: X`009tstl`009ent_l_user_type(r2) X`009beql`00910$ X`009addl3`009clex_table,ent_l_user_type(r2),r4 X`009addl3`009type_l_keywords(r4),clex_table,r4 X X`009clrl`009r1 X`009tstl`009_clex_eval_count X`009beql`0095$ X3$:`009cmpl`009r4,(r3)[r1] X`009beql`00910$ X`009aoblss`009_clex_eval_count,r1,3$ X X5$:`009movl`009r4,(r3)[r1] X`009incl`009_clex_eval_count X X`009pushl`009r4 X`009calls`009#1,clex_evaluate_entity X X`009addl3`009clex_table,ent_l_user_type(r2),-(sp) X`009calls`009#1,clex_print_type X X10$:`009tstl`009ent_l_syntax(r2) X`009beql`00920$ X`009addl3`009clex_table,ent_l_syntax(r2),r4 X X`009clrl`009r1 X`009tstl`009_clex_eval_count X`009beql`00915$ X13$:`009cmpl`009r4,(r3)[r1] X`009beql`00920$ X`009aoblss`009_clex_eval_count,r1,13$ X X15$:`009movl`009r4,(r3)[r1] X`009incl`009_clex_eval_count X`009pushl`009r4 X`009calls`009#1,clex_print_command X X20$:`009tstl`009ent_l_next(r2) X`009beql`00930$ X`009addl3`009clex_table,ent_l_next(r2),-(sp) X`009calls`009#1,clex_evaluate_entity X X30$:`009ret X`009.end $ GoSub Convert_File $ File_is="FIND.MAR" $ Check_Sum_is=391466442 $ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY X`009.title`009find verb routine X X; VERB Version 1.0 June 1st, 1985 X; Written by Joe Meadows Jr., with thanks to the X; Fred Hutchinson Cancer Research Center for kindly X; allowing me to use their computing resources. X; X; If you have any questions, comments, ideas, or X; whatever, feel free to contact me via US Mail : X;`009Joe Meadows Jr. X;`0094841 268th Ave. N.E. X;`009Redmond Wa. 98052 X; or via phone : (206) 827-7296 X X`009.psect`009_clex_local`009rd,wrt,noexe X Xverb_buff_desc:`009.blkl`0092 X X`009.psect`009_clex_code`009rd,nowrt,exe X X`009.entry`009clex_find_verb,^m<r2,r3,r4,r5> X; X;`0094(ap)=verb descriptor X;`0098(ap)=verb number X;`00912(ap)=command block address X;`009`009start at verb number and go to last verb X;`009`009looking for baby that matches X; X`009movl`009clex_commands,r3 X X`009movl`009@8(ap),r4`009; verb number X`009cmpl`009r4,clex_cmd_cnt X`009bgeq`00940$ X X10$:`009movl`009(r3)[r4],r5`009`009; comand_block TRO X`009addl`009clex_table,r5 X`009movzwl`009cmd_w_name(r5),r0`009; name BRO X`009addl`009r0,r5`009`009`009; ascic all names X`009movzbl`009(r5),r2 X X20$:`009incl`009r5`009`009`009; ascic verb name X`009movzbl`009(r5),verb_buff_desc X`009moval`0091(r5),verb_buff_desc+4 X X`009pushl`0094(ap) X`009pushaq`009verb_buff_desc X`009calls`009#2,g^str$match_wild X`009blbs`009r0,50$ X X`009decl`009r2 X`009subb`009(r5),r2 X`009bleq`00930$ X X`009addl`009verb_buff_desc,r5 X`009brb`00920$ X X30$:`009aoblss`009clex_cmd_cnt,r4,10$ X X40$:`009clrl`009@8(ap) X`009clrl`009r0 X`009brb`00960$ X X50$:`009movl`009(r3)[r4],r5`009; get command TRO to compare with all previous X`009clrl`009r1`009`009; ones to see if we've already printed this one X`009tstl`009r4 X`009beql`00956$ X55$:`009cmpl`009(r3)[r1],r5 X`009beql`00930$`009`009; if this one's been done before continue search X`009aoblss`009r4,r1,55$`009; continue checking X X56$:`009movl`009r4,@8(ap) X`009movl`009(r3)[r4],@12(ap) X`009addl`009clex_table,@12(ap) X`009movl`009@12(ap),_clex_cmd_block X`009movl`009#1,r0 X X60$:`009ret X`009.end $ GoSub Convert_File $ File_is="FINDENTITY.MAR" $ Check_Sum_is=1367133722 $ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY X`009.title`009find_entity X X`009.library`009'clexlib' X X`009.entry`009clex_find_entity,^m<r2,r3,r4,r5> X`009; 4(ap) = entity block X`009; this routine searches down the entity block to see X`009; which command/syntax/keyword it belongs to. X X`009clrl`009r0 X`009clrl`009_clex_ents_count X`009pushl`0094(ap) X`009pushl`009_clex_cmd_block X`009calls`009#2,clex_check_entity X`009ret X X`009.entry`009clex_check_entity,^m<r2,r3,r4,r5> X X`009cmpl`0094(ap),8(ap) X`009bneq`00910$ X`009movl`009#1,r0 X`009ret X X`009; loop through and see if we've done this already X10$:`009movl`0094(ap),r4 X`009moval`009_clex_ents,r2 X`009clrl`009r1 X`009tstl`009_clex_ents_count X`009beql`00935$ X20$:`009cmpl`009(r2)[r1],r4 X`009bneq`00930$ X`009ret X30$:`009aoblss`009_clex_ents_count,r1,20$ X35$:`009incl`009_clex_ents_count X`009movl`009r4,(r2)[r1]`009; remember having done this.. X X`009cmpb`009#block_k_entity,ent_b_type(r4) X`009bneq`00960$ X`009movl`009ent_l_next(r4),r5 X`009beql`00940$ X`009jsb`009_clex_call_check X`009beql`00940$ X`009brw`00990$ X X40$:`009movl`009ent_l_syntax(r4),r5 X`009beql`00950$ X`009jsb`009_clex_call_check X`009beql`00950$ X`009brw`00990$ X X50$:`009cmpb`009#ent_k_user_defined,ent_b_valtype(r4) X`009bneq`00960$ X`009movl`009ent_l_user_type(r4),r5 X`009jsb`009_clex_call_check X`009beql`00960$ X`009cmpl`009r0,#1 X`009bneq`00990$ X`009movl`009r5,r0 X`009brw`00990$ X X60$:`009cmpb`009#block_k_type,type_b_type(r4) X`009bneq`00970$ X`009movl`009type_l_keywords(r4),r5 X`009jsb`009_clex_call_check X`009beql`00970$ X`009cmpl`009r0,#1 X`009bneq`00990$ X`009movl`009r4,r0 X`009brw`00990$ X X70$:`009cmpb`009#block_k_command,cmd_b_type(r4) X`009bneq`00990$ X`009bitw`009#cmd_m_parms,cmd_w_flags(r4) X`009beql`00980$ X`009movl`009cmd_l_parms(r4),r5 X`009beql`00980$ X`009jsb`009_clex_call_check X`009beql`00980$ X`009cmpl`009r0,#1 X`009bneq`00990$ X`009movl`009r4,r0 X`009brw`00990$ X X80$:`009bitw`009#cmd_m_quals,cmd_w_flags(r4) X`009beql`00990$ X`009movl`009cmd_l_quals(r4),r5 X`009beql`00990$ X`009jsb`009_clex_call_check X`009beql`00990$`009 X`009cmpl`009r0,#1 X`009bneq`00990$ X`009movl`009r4,r0 X`009brw`00990$ X X90$:`009ret X X_clex_call_check: X`009addl`009clex_table,r5 X`009pushl`0098(ap) X`009pushl`009r5 X`009calls`009#2,clex_check_entity X`009tstl`009r0 X`009rsb X X`009.end $ GoSub Convert_File $ Goto Part4 -- bitnet: losh@nmt.csnet M. Warner Losh warner@hydrovax.nmt.csnet ! Don't know if this works, let me know. csnet: warner@hydrovax.nmt.edu uucp: ...{cmcl2, ihnp4}!lanl!unmvax!nmtsun!warner%hydrovax