C C S Y M P R T C C PRINT SYMBOL TABLE C C THIS ROUTINE IS CALLED AT THE END OF PASS 2 OF THE ASSEMBLY C TO PRINT THE CONTENTS OF THE USER SYMBOL TABLE. THE CALLING C SEQUENCE IS: C C CALL SYMPRT C C THERE ARE NO ARGUMENTS. THE SYMBOL TABLE IS PRINTED AS THE C LAST PAGE OF THE ASSEMBLY LISTING. THE SUBTITLE IS SET TO C "SYMBOL TABLE". C SUBROUTINE SYMPRT INCLUDE 'IODEVS.CMN' INCLUDE 'LSTHDG.CMN' INCLUDE 'PRGDAT.CMN' INCLUDE 'USRSYM.CMN' INTEGER SYMSBT(60),HPRGSZ(2),OUT,BLANKS,PAGE C DATA SYMSBT/'U', 'S', 'E', 'R', ' ', 'S', 'Y', 'M', 'B', 'O', $ 'L', ' ', 'T', 'A', 'B', 'L', 'E', ' ', 42*' '/ DATA BLANKS / ' ' /,OUT /5/ C D WRITE (OUT,1) SYMNUM,((SYMTAB(I,J),I=1,6),SYMVAL(J), D $ SYMFLG(J),J=1,SYMNUM) D 1 FORMAT (' SYMPRT CALLED TO PRINT TO FOLLOWING ',I5,' SYMBOLS'//, D $ 250(4(1X,6A2,1X,I8,1X,A2,/))) IF (LSTUNT.LE.0) GO TO 120 !NO LISTING REQUIRED? IF (SYMNUM.EQ.0) GO TO 105 !NO USER SYMBOLS? DO 10 I=1,60 SUBTTL(I) = SYMSBT(I) !SUBTITLE OF 10 CONTINUE !"USER SYMBOL TABLE" NLNPPG = 60 ! # LINES/PAGE NSYPLN = 6 ! # SYMBOLS/LINE NSYPPG = NLNPPG*NSYPLN ! # SYMBOLS/PAGE NPAGES = (SYMNUM-1)/NSYPPG+1 ! NUMBER OF PAGES AT NSYPPG SYMBLS/PG DO 100 PAGE=1,NPAGES CALL HEADNG !PAGE AND OUTPUT HEADING IF (PAGE.LT.NPAGES) GO TO 40 C C PAD THE TABLE TO FILL AN EVEN NUMBER OF LINES C NREM = SYMNUM-(PAGE-1)*NSYPPG NLINES = (NREM-1)/NSYPLN+1 IF (MOD(NREM,NSYPLN).EQ.0) GO TO 50 DO 30 N = SYMNUM+1,(PAGE-1)*NSYPPG+NLINES*NSYPLN DO 20 M=1,6 SYMTAB(M,N) = BLANKS 20 CONTINUE SYMVAL(N) = -1 SYMFLG(N) = BLANKS 30 CONTINUE GO TO 50 40 CONTINUE NLINES = NLNPPG ! A FULL PAGE 50 CONTINUE DO 90 M=1,NLINES IST = (PAGE-1)*NSYPPG+M IEN = IST+NLINES*(NSYPLN-1) DO 80 J=IST,IEN,NLINES IF (SYMVAL(J).EQ.-1) GO TO 70 CALL BINHEX(SYMVAL(J),SYMVAL(J),4) GO TO 80 70 SYMVAL(J) = ' ' 80 CONTINUE WRITE (LSTUNT,81) ((SYMTAB(K,L),K=1,6),SYMVAL(L), $ SYMFLG(L),L=IST,IEN,NLINES) 81 FORMAT (' ',6(6A2,1X,A4,A1,3X)) D WRITE (OUT,81) ((SYMTAB(K,L),K=1,6),SYMVAL(L), D $ SYMFLG(L),L=IST,IEN,NLINES) 90 CONTINUE 100 CONTINUE 105 CONTINUE CALL BINHEX(PRGSIZ,HPRGSZ,4) CALL TIMER(1) WRITE (LSTUNT,110) TIMES, ERRCNT, (MCRBUF(I),I=1,MCRBLN) 110 FORMAT (//, $ 5X,'ASSEMBLE TIME',3X,2A4,/, $ 5X,'ERRORS DETECTED ',I8,/, $ 5X,80A1) GO TO 125 120 CONTINUE CALL TIMER(1) CALL BINHEX(PRGSIZ,HPRGSZ,4) 125 CONTINUE WRITE (OUT,130) HPRGSZ,PAGNUM,TIMES,ERRCNT, $ (MCRBUF(I),I=1,MCRBLN) 130 FORMAT (/5X,'PROGRAM SIZE',8X,2A2,/, $ 5X,'LISTING SIZE (pgs)',I6,/, $ 5X,'ASSEMBLE TIME',3X,2A4,/, $ 5X,'ERRORS DETECTED ',I8,/, $ 5X,80A1) CALL TSKLOG(OUT,'RCAXASM ',TIMES,PAGNUM) RETURN END