.TITLE OUTPUT_TABLE FOR SIMPLE INDEX .ENABLE DEBUG .SUBTITLE STORAGE AREA .PSECT IMPURE_DATA,RD,WRT,NOSHR,NOEXE,GBL,CON,LONG OUTPUT_LINE: .BLKB 132 OUTPUT_STRING: .WORD 0,0 .LONG 0 DESCRIPTER: .LONG 0,0 NUMBER: .LONG 0 CHAR_COUNT: .LONG 0 LINE_COUNT: .LONG 0 TAG2_AG_2: ;V2.08 .ASCID /$Argument_0000/ ;V2.08 .ADDRESS OUTPUT_LINE .PSECT PURE_DATA,RD,NOWRT,SHR,NOEXE,GBL,CON CODE_1: .LONG 1 ;V1.4 CODE_2: .LONG 2 ;V1.4 CODE_3: .LONG 3 ;V1.4 CODE_4: .LONG 4 ;V1.4 CODE_5: .LONG 5 ;V1.4 SIZE_TABLE: .LONG 9,99,999,9999,99999,999999,9999999,99999999,999999999 ENTRY_SUPER_ERROR: .ASCID /INDEX-F-Error Writeing to Entry Super Index Scratch File/ SUPER_ERROR: .ASCID /INDEX-F-Error Writeing to Super Index Scratch File/ ENTRY_ERROR: .ASCID /INDEX-F-Error Writeing to Entry Index Scratch File/ TAG2_CN:.ASCID /$Common_Name/ ;V2.03 TAG2_SF:.ASCID /$Statement_Function/ ;V2.03 TAG2_EP:.ASCID /$Entry_Point/ ;V2.03 TAG2_PA:.ASCID /$Parameter/ ;V2.03 TAG2_BC:.ASCID /$Blank_Common/ ;V2.03 TAG2_AG:.ASCID /$Argument/ ;V2.03 TAG2_LO:.ASCID /$Local/ ;V2.03 .PAGE .SUBTITLE INITIALIZATION CODE .PSECT CODE,RD,NOWRT,SHR,EXE,GBL,CON .ENTRY DUMP_INDEX,^M ; ;V1.4 ; ACCUMULATE TIME STATS FOR PARSE/BUILD TABLE ;V1.4 ; ;V1.4 PUSHAL TIME_PARSE ;V1.4 PUSHAL CODE_1 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_PARSE+8 ;V1.4 PUSHAL CODE_2 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_PARSE+12 ;V1.4 PUSHAL CODE_3 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_PARSE+16 ;V1.4 PUSHAL CODE_4 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_PARSE+20 ;V1.4 PUSHAL CODE_5 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 CALLG NULL,G^LIB$INIT_TIMER ;V1.4 ;V1.4 CLRL LINES_ON_PAGE ;FORCE A NEW PAGE MOVL #INDEX_OUTPUT,STATUS_WORD ;SAY WHAT HEADER TO USE MOVAL SYMBOL_TABLE_QUEUE,R11 ;GET ADDR OF SYMBOL TABLE MOVL R11,R10 ;WORK ON COPY OF POINTER MOVL #132,LINE_COUNT BITL #NARROW_FLAG,FLAG_WORD BEQL 1$ MOVL #80,LINE_COUNT 1$: .PAGE .SUBTITLE GO CLIMB A TREE PUSHL #-1 ;V1.10 PUSHAL DUMP_SYMBOL ;V1.10 PUSHAL SYMBOL_TABLE_QUEUE ;V1.10 CALLS #3,G^LIB$TRAVERSE_TREE ;V1.10 ;SEE IF DOING GET E.P. ;V1.10 BITL #GET_ENTRY_FLAG,FLAG_WORD BNEQ 5001$ ;YES ;V1.21 JMP 5000$ ;NO ;V1.21 5001$: ;V1.21 ; WE ARE DOING GET E.P. TSTL PROGRAM_FLAG ;WAS THIS MODULES NAME DECLARED ?? BEQL 5002$ ;NO ;V1.21 JMP 5000$ ;YES ;V1.21 5002$: ;V1.21 ; NO-HAVE TO DO PASS THAT INFO ON AT THIS POINT LOCC #0,#31,MODULE_NAME ;FIND LENGTH OF MODULE NAME SUBL2 #MODULE_NAME,R1 CVTLB R1,ENTRY_BUFFER+32 ;LOAD LENGTH MOVC3 #31,MODULE_NAME,ENTRY_BUFFER+33 ;LOAD MODULE NAME MOVC3 #32,ENTRY_BUFFER+32,ENTRY_BUFFER MOVC3 #32,IN_FILE_NAME,ENTRY_BUFFER+64;LOAD FILE NAME ;V1.25 INCL SAVE_ENTRY ;V1.4 $PUT RAB=ENTRY_INDEX_RAB ;WRITE THE RECORD BLBS R0,5000$ PUSHR #^M ;FATAL ERROR PUSHAL ENTRY_ERROR CALLS #1,G^LIB$PUT_OUTPUT POPR #^M $EXIT_S R0 5000$: JMP DUMP_COMPLETE ;V1.17 .PAGE ;V1.10 .SUBTITLE DUMP SYMBOL ACTION ROUTINE ;V1.10 .ENTRY DUMP_SYMBOL,^M MOVL 4(AP),R10 ;V1.10 ; DUMP SYMBOL FOUND 4(AP) ;V1.10 BITL #GET_ENTRY_FLAG,FLAG_WORD ;IS THIS FOR E.P. XREF BNEQ 1030$ BRW 30$ ;NO ; YES OUTPUT AS APPROPRIATE TO SUPER AND ENTRY FILES 1030$: BITL #SYMBOL_FLAG_ENTRY_POINT,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.15 ;IS IT AN ENTRY POINT?? ;V1.15 BNEQ 1031$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET ;NO-SKIP IT ; LOAD SUPER INDEX WITH SYMBOL NAME & THIS MODULE NAME 1031$: MOVC3 #32,SYMBOL_TABLE_B_SIZE(R10),SUPER_BUFFER ;V1.10 LOCC #0,#31,MODULE_NAME ;FIND LENGTH OF MODULE NAME SUBL2 #MODULE_NAME,R1 CVTLB R1,SUPER_BUFFER+32 ;LOAD LENGTH MOVC3 #31,MODULE_NAME,SUPER_BUFFER+33 ;LOAD MODULE NAME MOVC3 #32,TAG_STRING,SUPER_BUFFER+64 ;LOAD TAG FIELD ;V1.16 BITL #SYMBOL_FLAG_DEFINED_ENTRY_POINT,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;WAS IT DEFINED HERE BNEQ 40$ ;YES ONLY OUTPUT ENTRY NAME INCL SAVE_SUPER ;V1.4 $PUT RAB=SUPER_INDEX_RAB ;WRITE THE RECORD BLBS R0,40$ PUSHR #^M ;FATAL ERROR PUSHAL ENTRY_SUPER_ERROR CALLS #1,G^LIB$PUT_OUTPUT POPR #^M $EXIT_S R0 40$: MOVC3 #64,SUPER_BUFFER,ENTRY_BUFFER ;COPY FOR ENTRY POINT BUFFER BITL #SYMBOL_FLAG_DEFINED_ENTRY_POINT,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;WAS IT DEFINED HERE BNEQ 41$ ;YES MOVC5 #0,NULL,#0,#32,ENTRY_BUFFER+32 ;NO-CANCELL MODULE NAME 41$: MOVC3 #32,IN_FILE_NAME,ENTRY_BUFFER+64;LOAD FILE NAME ;V1.25 INCL SAVE_ENTRY ;V1.4 $PUT RAB=ENTRY_INDEX_RAB ;WRITE THE RECORD ;V1.4 BLBS R0,42$ ;**-1 PUSHR #^M ;FATAL ERROR PUSHAL ENTRY_ERROR CALLS #1,G^LIB$PUT_OUTPUT POPR #^M $EXIT_S R0 42$: MOVL #LIB$_NORMAL,R0 ;V1.10 RET ; CHECK TO SEE IF WE WANT TO OUTPUT THIS SYMBOL 30$: BITL #GLOBAL_FLAG,FLAG_WORD ;DO WE CHECK FOR GLOBALS ? BEQL 10$ BITL #SYMBOL_FLAG_GLOBAL,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;YES-IS IT GLOBAL?? ;V1.10 BNEQ 11$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET ;NO-TRY NEXT SYMBOL 10$: BITL #LOCAL_FLAG,FLAG_WORD ;DO WE WANT LOCALS BEQL 11$ BITL #SYMBOL_FLAG_GLOBAL,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BEQL 11$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET 11$: BITL #USED_FLAG,FLAG_WORD ;IS IT A USED VARIABLE BEQL 12$ BITL #SYMBOL_FLAG_USED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BNEQ 13$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET 12$: BITL #UNUSED_FLAG,FLAG_WORD ;UNUSED VARIABLE BEQL 13$ BITL #SYMBOL_FLAG_USED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BEQL 13$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET 13$: BITL #UNCHANGED_FLAG,FLAG_WORD ;VALUE NOT CHANGED BEQL 14$ BITL #SYMBOL_FLAG_CHANGED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BEQL 14$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET 14$: BITL #CHANGED_FLAG,FLAG_WORD ;VALUE MODFIED BEQL 15$ BITL #SYMBOL_FLAG_CHANGED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BNEQ 15$ MOVL #LIB$_NORMAL,R0 ;V1.10 RET 15$: BITL #IMPORT_FLAG,FLAG_WORD ;V1.3 BEQL 16$ ;V1.3 ; CONDITIONS FOR AN IMPORTED VALUE ;V1.3 ; GLOBAL AND USED ;V1.3 ; CALLED BY ARG AND USED ;V1.3 ; FUNCTION VALUE RETURN ;V1.3 ; CALLING ARGUMENT USED ;V1.3 ; NOT A LABEL ;V1.29 BITL #SYMBOL_FLAG_LABEL,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.02 BNEQ 17$ ;V1.29 BITL #SYMBOL_FLAG_USED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;ALL CASES ARE USED ;V1.10 BEQL 17$ ;V1.3 BITL #SYMBOL_FLAG_CHANGED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;IF IT IS CHANGED-IT ;V1.10 ;IS AN EXPORT EVEN IF ;V1.3 ;IT IS ALSO USED BEFORE ;V1.3 ;CHANGE ;V1.3 BNEQ 17$ ;V1.3 BITL #SYMBOL_FLAG_GLOBAL,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;GLOBAL AND USED ;V1.10 BNEQ 16$ ;V1.3 BITL #SYMBOL_FLAG_CALLED_BY_ARG,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;CALLED BY AND USED ;V1.10 BNEQ 16$ ;V1.3 BITL #SYMBOL_FLAG_CALLING_ARG,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;A USED CALLING ARG ;V1.10 BNEQ 16$ ;V1.3 BITL #SYMBOL_FLAG_ENTRY_POINT,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 ;IS IT AN ENTRY POINT NAME ;V1.10 BEQL 17$ ;V1.3 BITL - ;V1.3 #,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BEQL 16$ ;V1.3 17$: MOVL #LIB$_NORMAL,R0 ;V1.10 RET ;V1.3 16$: BITL #EXPORT_FLAG,FLAG_WORD ;V1.3 BEQL 18$ ;V1.3 ; CONDITIONS FOR AN EXPORTED VALUE ;V1.3 ; GLOBAL AND CHANGED ;V1.3 ; CALLED BY ARG AND CHANGED ;V1.3 ; CALLING ARG AND CHANGED ;V1.3 ; DEFINED ENTRY POINT AND CHANGED ;V1.3 ; NOT A LABEL ;V1.29 BITL #SYMBOL_FLAG_LABEL,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.02 BNEQ 19$ ;V1.29 BITL #SYMBOL_FLAG_CHANGED,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BEQL 19$ ;V1.3 BITL #SYMBOL_FLAG_GLOBAL,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BNEQ 18$ ;V1.3 BITL #SYMBOL_FLAG_CALLED_BY_ARG,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BNEQ 18$ ;V1.3 BITL #SYMBOL_FLAG_CALLING_ARG,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BNEQ 18$ ;V1.3 BITL #SYMBOL_FLAG_DEFINED_ENTRY_POINT,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.10 BNEQ 18$ ;V1.3 19$: MOVL #LIB$_NORMAL,R0 ;V1.10 RET ;V1.3 18$: ;V1.3 ; CHECK FOR COMMON BLOCK FLAG ;V1.11 BITL #COMMON_FLAG,FLAG_WORD ;V1.11 BEQL 60$ ;V1.11 BITL #SYMBOL_FLAG_COMMON_NAME,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V1.11 BNEQ 60$ ;V1.11 61$: MOVL #LIB$_NORMAL,R0 ;V1.11 RET ;V1.11 60$: ;V1.11 ;HAVE PASSED ALL TESTS-OUTPUT THE SYMBOL ;V1.3 ; IS IT TIME TO ACCUMULATE SYMBOL FOR SUPER INDEX?? BITL #GET_SUPER_FLAG,FLAG_WORD BNEQ 1060$ ;V2.03 BRW 20$ ;V2.03 1060$: ;V2.03 ; NUMBERS(LABELS) NOT WANTED CMPC3 #1,#^A/(/,SYMBOL_TABLE_S_NAME(R10) ;V1.17 ;MUST NOT MISS "(BLANK_COMMON)" ;V1.17 BEQL 62$ ;V1.17 CMPC5 #1,#^A/A/,#0,#31,SYMBOL_TABLE_S_NAME(R10) ;V1.10 BLEQ 62$ ;V2.03 BRW 20$ ;V2.03 ; COPY THE INFORMATION TO SUPER INDEX BUFFER 62$: MOVC3 #32,SYMBOL_TABLE_B_SIZE(R10),SUPER_BUFFER ;V1.17 ;COPY THE SYMBOL LENGTH AND ;V1.10 ;NAME TO THE BUFFER LOCC #0,#31,MODULE_NAME ;FIND LENGTH OF MODULE NAME SUBL2 #MODULE_NAME,R1 CVTLB R1,SUPER_BUFFER+32 ;LOAD LENGTH MOVC3 #31,MODULE_NAME,SUPER_BUFFER+33 ;LOAD MODULE NAME MOVC3 #32,TAG_STRING,SUPER_BUFFER+64 ;LOAD TAG STRING ;V1.16 INCL SAVE_SUPER ;V1.4 MOVC5 #32,NULL,#0,#32,SUPER_BUFFER+96 ;V2.03 BITL #STORAGE_FLAG,FLAG_WORD+4 ;V2.03 BNEQ 10062$ ;V2.03 BRW 1062$ ;V2.03 10062$: BITL #SYMBOL_FLAG_COMMON_NAME,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 2062$ ;V2.03 MOVAL TAG2_CN,R6 ;V2.03 BRW 3062$ ;V2.03 2062$: BITL #SYMBOL_FLAG_STATEMENT_FN,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 4062$ ;V2.03 MOVAL TAG2_SF,R6 ;V2.03 BRW 3062$ ;V2.08 4062$: BITL #,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 5062$ ;V2.03 MOVAL TAG2_EP,R6 ;V2.03 BRW 3062$ ;V2.08 5062$: BITL #SYMBOL_FLAG_PARAMETER,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 6062$ ;V2.03 MOVAL TAG2_PA,R6 ;V2.03 BRW 3062$ ;V2.08 6062$: BITL #SYMBOL_FLAG_IN_BLANK_COMMON,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 7062$ ;V2.03 MOVAL TAG2_BC,R6 ;V2.03 BRW 3062$ ;V2.08 7062$: BITL #SYMBOL_FLAG_CALLED_BY_ARG,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 8062$ ;V2.03 TSTL SYMBOL_TABLE_L_ARGUMENT(R10) ;V2.08 BEQL 17062$ ;V2.08 MOVL #4,DESCRIPTER ;V2.08 ADDL3 #10,TAG2_AG_2+4,DESCRIPTER+4 ;V2.08 PUSHL #0 ;V2.08 PUSHL #4 ;V2.08 PUSHL #4 ;V2.08 PUSHAL DESCRIPTER ;V2.08 PUSHAL SYMBOL_TABLE_L_ARGUMENT(R10) ;V2.08 CALLS #5,G^OTS$CVT_L_TI ;V2.08 MOVAL TAG2_AG_2,R6 ;V2.08 BRW 3062$ ;V2.08 17062$: MOVAL TAG2_AG,R6 ;V2.08 BRW 3062$ ;V2.08 8062$: BITL #SYMBOL_FLAG_IN_NAMED_COMMON,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BNEQ 9062$ ;V2.03 MOVAL TAG2_LO,R6 ;V2.03 BRW 3062$ ;V2.08 9062$: MOVL SYMBOL_TABLE_L_COMMON_POINTER(R10),R9 ;V2.03 CVTBL SYMBOL_TABLE_B_SIZE(R9),R7 ;V2.03 MOVAL SYMBOL_TABLE_S_NAME(R9),R8 ;V2.03 MOVB R7,SUPER_BUFFER+96 ;V2.03 BRB 20062$ ;V2.03 3062$: CVTBL (R6),R7 ;V2.03 MOVB R7,SUPER_BUFFER+96 ;V2.03 MOVL 4(R6),R8 ;V2.03 20062$: MOVC3 R7,(R8),SUPER_BUFFER+97 ;V2.03 1062$: MOVC5 #0,NULL,#0,#37,SUPER_BUFFER+128 ;V2.09 BITL #ARGUMENT_FLAG,FLAG_WORD ;V2.09 BNEQ 11062$ ;V2.09 BRW 12062$ ;V2.09 11062$: CLRL R6 ;FOUND ARG TAG FLAG ;V2.09 PUSHR #^M ;V2.09 MOVAL SYMBOL_TABLE_Q_HOW_USED_QUEUE(R10),R9 ;V2.09 MOVL R9,R8 ;V2.09 13062$: MOVL (R8),R8 ;V2.09 CMPL R8,R9 ;V2.09 BNEQ 14062$ ;V2.09 BRW 15062$ ;V2.09 14062$: TSTL SYMBOL_HOW_USED_L_ENTRY_POINTER(R8) ;V2.09 BEQL 13062$ ;V2.09 MOVL #1,R6 ;V2.09 MOVL SYMBOL_HOW_USED_L_ENTRY_POINTER(R8),R11 ;V2.09 MOVC3 #32,SYMBOL_TABLE_B_SIZE(R11),SUPER_BUFFER+128 ;V2.09 CVTBL SUPER_BUFFER+128,R7 ;V2.09 ADDB2 #5,SUPER_BUFFER+128 ;V2.09 MOVB #^A/_/,SUPER_BUFFER+129[R7] ;V2.09 INCL R7 ;V2.09 MOVL #4,DESCRIPTER ;V2.09 MOVAB SUPER_BUFFER+129[R7],DESCRIPTER+4 ;V2.09 PUSHL #0 ;V2.09 PUSHL #4 ;V2.09 PUSHL #4 ;V2.09 PUSHAL DESCRIPTER ;V2.09 PUSHAL SYMBOL_HOW_USED_L_ARGUMENT(R8) ;V2.09 CALLS #5,G^OTS$CVT_L_TI ;V2.09 $PUT RAB=SUPER_INDEX_RAB ;WRITE THE RECORD ;V2.09 BLBC R0,16062$ ;V2.09 BRW 13062$ ;V2.09 15062$: POPR #^M ;V2.09 TSTL R6 ;V2.09 BEQL 12062$ ;V2.09 BRW 20$ ;V2.09 12062$: $PUT RAB=SUPER_INDEX_RAB ;WRITE THE RECORD ;V2.09 BLBS R0,20$ 16062$: PUSHR #^M ;FATAL ERROR ;V2.09 PUSHAL SUPER_ERROR CALLS #1,G^LIB$PUT_OUTPUT POPR #^M $EXIT_S R0 20$: MOVC5 #0,NULL,#0,#132,OUTPUT_LINE ;CLEAR THE OUTPUT STRING CLRL OUTPUT_STRING ;AND INIT ITS DESCRIPTER MOVAL OUTPUT_LINE,OUTPUT_STRING+4 CVTBL SYMBOL_TABLE_B_SIZE(R10),NUMBER ;V1.10 MOVC5 NUMBER,SYMBOL_TABLE_S_NAME(R10),#^A/./,#31,OUTPUT_LINE ;V1.10 ;LOAD THE SYMBOL NAME MOVW #31,OUTPUT_STRING SUBL3 #31,LINE_COUNT,CHAR_COUNT MOVAL SYMBOL_TABLE_Q_HOW_USED_QUEUE(R10),R9 ;POINT TO HOW USED ;V1.10 MOVL R9,R8 ;QUEUE HEADER FOR THIS ;SYMBOL BITL #STORAGE_FLAG,FLAG_WORD+4 ;V2.03 BNEQ 1050$ ;V2.03 BRW 50$ ;V2.03 1050$: PUSHR #^M ;V2.03 BITL #SYMBOL_FLAG_COMMON_NAME,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 1040$ ;V2.03 MOVAL TAG2_CN,R6 ;V2.03 BRW 32$ ;V2.08 1040$: BITL #SYMBOL_FLAG_STATEMENT_FN,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 1041$ ;V2.03 MOVAL TAG2_SF,R6 ;V2.03 BRW 32$ ;V2.08 1041$: BITL #,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 1042$ ;V2.03 MOVAL TAG2_EP,R6 ;V2.03 BRW 32$ ;V2.08 1042$: BITL #SYMBOL_FLAG_PARAMETER,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 43$ ;V2.03 MOVAL TAG2_PA,R6 ;V2.03 BRW 32$ ;V2.08 43$: BITL #SYMBOL_FLAG_IN_BLANK_COMMON,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 44$ ;V2.03 MOVAL TAG2_BC,R6 ;V2.03 BRW 32$ ;V2.08 44$: BITL #SYMBOL_FLAG_CALLED_BY_ARG,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BEQL 45$ ;V2.03 TSTL SYMBOL_TABLE_L_ARGUMENT(R10) ;V2.08 BEQL 1044$ ;V2.08 MOVL #4,DESCRIPTER ;V2.08 ADDL3 #10,TAG2_AG_2+4,DESCRIPTER+4 ;V2.08 PUSHL #0 ;V2.08 PUSHL #4 ;V2.08 PUSHL #4 ;V2.08 PUSHAL DESCRIPTER ;V2.08 PUSHAL SYMBOL_TABLE_L_ARGUMENT(R10) ;V2.08 CALLS #5,G^OTS$CVT_L_TI ;V2.08 MOVAL TAG2_AG_2,R6 ;V2.08 BRW 32$ ;V2.08 1044$: MOVAL TAG2_AG,R6 ;V2.03 BRW 32$ ;V2.08 45$: BITL #SYMBOL_FLAG_IN_NAMED_COMMON,SYMBOL_TABLE_L_FLAG_WORD(R10) ;V2.03 BNEQ 46$ ;V2.03 MOVAL TAG2_LO,R6 ;V2.03 BRB 32$ ;V2.03 46$: MOVL SYMBOL_TABLE_L_COMMON_POINTER(R10),R9 ;V2.03 CVTBL SYMBOL_TABLE_B_SIZE(R9),R7 ;V2.03 MOVAL SYMBOL_TABLE_S_NAME(R9),R8 ;V2.03 BRB 31$ ;V2.03 32$: CVTBL (R6),R7 ;V2.03 MOVL 4(R6),R8 ;V2.03 31$: ADDL2 #5,OUTPUT_STRING ;V2.03 ADDL2 R7,OUTPUT_STRING ;V2.03 SUBL2 #5,CHAR_COUNT ;V2.03 SUBL2 R7,CHAR_COUNT ;V2.03 MOVC5 #0,NULL,#^A/ /,#3,OUTPUT_LINE+31 ;V2.03 MOVB #^A/[/,OUTPUT_LINE+34 ;V2.03 MOVC3 R7,(R8),OUTPUT_LINE+35 ;V2.03 MOVB #^A/]/,OUTPUT_LINE+35[R7] ;V2.03 POPR #^M ;V2.03 50$: ;V2.03 .PAGE .SUBTITLE HOW USED LOOP HOW_USED_LOOP: MOVL SYMBOL_HOW_USED_Q_QUEUE(R8),R8 ;GET NEXT HOW USED ;V1.10 CMPL R8,R9 ;SEE IF DONE WITH THESE BNEQ 1$ BRW HOW_USED_DONE 1$: MOVAL SIZE_TABLE-4,R0 ;SET UP TO COMPARE MOVL #1,R6 2$: CMPL (R0)[R6],SYMBOL_HOW_USED_L_LINE_NUMBER(R8) ;V1.10 BGEQU 3$ AOBLEQ #9,R6,2$ 3$: ;R6 CONTAINS NUMBER OF DIGITS NEEDED TO HOLD LINE NUMBER SUBL3 #5000,SYMBOL_HOW_USED_L_TOKEN(R8),R0 ;GET HOW USED TOKEN ;V1.10 MOVAQ MNEMONIC_POINTER_TABLE[R0],R7;GET POINTER TO HOWUSED ;STRING DESCRIPTER CVTWL (R7),R5 ;GET NUMBER OF CHRS ADDL2 R6,R5 ;ADD IN SIZE OF NUMBER ADDL2 #4,R5 ;ACCOUNT FOR LEADING SPACES AND ;DASH BETWEEN NUMBER AND MNEMONIC BITL #ARGUMENT_FLAG,FLAG_WORD ;V2.09 BEQL 1003$ ;V2.09 CMPL #TOKEN_EVAL_CALLING_ARG,SYMBOL_HOW_USED_L_TOKEN(R8) ;V2.09 BNEQ 1003$ ;V2.09 ADDL2 #6,R5 ;ACCOUNT FOR UNDER SCORES AND ARG NUMBER ;V2.09 MOVL SYMBOL_HOW_USED_L_ENTRY_POINTER(R8),R0 ;V2.09 CVTBL SYMBOL_TABLE_B_SIZE(R0),R1 ;V2.09 ADDL2 R1,R5 ;V2.09 1003$: CMPL R5,CHAR_COUNT ;SEE IF ENOUGH ROOM LEFT TO PUT IN ;V2.09 BLEQ 4$ ;YES ; NOT ENOUGH ROOM-OUTPUT CURRENT LINE AND REINIT PUSHAL OUTPUT_STRING CALLS #1,PRINT_LINE ;PRINT THE FULL LINE MOVC5 #0,NULL,#0,#132,OUTPUT_LINE ;CLEAR THE OUTPUT STRING MOVC5 #0,NULL,#^A/ /,#31,OUTPUT_LINE ;BLANK OUT SYMBOL NAME ON ;CONTINUATION LINE SUBL3 #31,LINE_COUNT,CHAR_COUNT MOVL #31,OUTPUT_STRING 4$: ;ACCOUNT FOR POSSABLE OVERFLOW OF NARROW DISPLAY ;V2.09 CMPL R5,CHAR_COUNT ;V2.09 BLEQ 1004$ ;V2.09 SUBL3 CHAR_COUNT,R5,R0 ;V2.09 INCL R0 ;V2.09 ADDL2 R0,CHAR_COUNT ;V2.09 SUBL2 R0,OUTPUT_STRING ;V2.09 1004$: ADDL3 #3,R6,DESCRIPTER ;LOAD DESCRIPTER ;V2.09 CVTWL OUTPUT_STRING,R0 ;GET STARTING ADDR MOVAB OUTPUT_LINE[R0],DESCRIPTER+4 ;OF NUMBER PUSHAL DESCRIPTER PUSHAL 8(R8) CALLS #2,G^OTS$CVT_L_TI ;CONVERT NUMBER WITH LEADING BLANK ADDW2 R6,OUTPUT_STRING ADDL2 #3,OUTPUT_STRING SUBL2 R6,CHAR_COUNT SUBL2 #3,CHAR_COUNT ; NUMBER IS IN-NEXT PUT IN DASH CVTWL OUTPUT_STRING,R6 MOVB #^A/-/,OUTPUT_LINE[R6] INCW OUTPUT_STRING DECL CHAR_COUNT INCL R6 ; COPY IN THE HOW USED MNEMONIC CVTWL (R7),NUMBER MOVC3 NUMBER,@4(R7),OUTPUT_LINE[R6] ;COPY THE STRING MNEMONIC ADDW2 NUMBER,OUTPUT_STRING SUBL2 NUMBER,CHAR_COUNT BITL #ARGUMENT_FLAG,FLAG_WORD ;V2.09 BNEQ 3004$ ;V2.09 BRW 5$ ;V2.09 3004$: CMPL #TOKEN_EVAL_CALLING_ARG,SYMBOL_HOW_USED_L_TOKEN(R8) ;V2.09 BEQL 2004$ ;V2.09 BRW 5$ ;V2.09 2004$: PUSHR #^M ;V2.09 CVTWL OUTPUT_STRING,R6 ;V2.09 MOVB #^A/_/,OUTPUT_LINE[R6] ;V2.09 INCW OUTPUT_STRING ;V2.09 DECL CHAR_COUNT ;V2.09 INCL R6 ;V2.09 MOVL SYMBOL_HOW_USED_L_ENTRY_POINTER(R8),R11 ;V2.09 CVTBL SYMBOL_TABLE_B_SIZE(R11),R10 ;V2.09 MOVC3 R10,SYMBOL_TABLE_S_NAME(R11),OUTPUT_LINE[R6] ;V2.09 ADDL2 R10,R6 ;V2.09 ADDL2 R10,OUTPUT_STRING ;V2.09 SUBL2 R10,CHAR_COUNT ;V2.09 MOVB #^A/_/,OUTPUT_LINE[R6] ;V2.09 INCW OUTPUT_STRING ;V2.09 DECL CHAR_COUNT ;V2.09 INCL R6 ;V2.09 MOVL #4,DESCRIPTER ;V2.09 MOVAB OUTPUT_LINE[R6],DESCRIPTER+4 ;V2.09 PUSHL #0 ;V2.09 PUSHL #4 ;V2.09 PUSHL #4 ;V2.09 PUSHAL DESCRIPTER ;V2.09 PUSHAL SYMBOL_HOW_USED_L_ARGUMENT(R8) ;V2.09 ADDL2 #4,OUTPUT_STRING ;V2.09 SUBL2 #4,CHAR_COUNT ;V2.09 CALLS #5,G^OTS$CVT_L_TI ;V2.09 POPR #^M ;V2.09 5$: BRW HOW_USED_LOOP .PAGE .SUBTITLE INNER(HOW USED) AND OUTER (SYMBOL) LOOP TERMINATION HOW_USED_DONE: ; HOW USED FOR THIS SYMBOL IS COMLETE-OUTPUT CURRENT LINE ; AND TRY NEXT SYMBOL PUSHAL OUTPUT_STRING CALLS #1,PRINT_LINE ;PRINT THE FULL LINE MOVL #LIB$_NORMAL,R0 ;V1.10 RET DUMP_COMPLETE: CLRL LINES_ON_PAGE ;FORCE A NEW PAGE MOVL #PARSE_LINES,STATUS_WORD ;SAY WHAT HEADER TO USE ; ;V1.4 ; ACCUMULATE STATS FOR OUTPUT ;V1.4 ; ;V1.4 PUSHAL TIME_OUTPUT ;V1.4 PUSHAL CODE_1 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_OUTPUT+8 ;V1.4 PUSHAL CODE_2 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_OUTPUT+12 ;V1.4 PUSHAL CODE_3 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_OUTPUT+16 ;V1.4 PUSHAL CODE_4 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 PUSHAL TIME_OUTPUT+20 ;V1.4 PUSHAL CODE_5 ;V1.4 CALLS #2,G^LIB$STAT_TIMER ;V1.4 CALLG NULL,G^LIB$INIT_TIMER ;V1.4 RET .END