C C B I N O U T C C BINARY CODE OUTPUT ROUTINE C C THIS ROUTINE SENDS THE ASSEMBLED CODE TO THE BINARY OUTPUT C FILE. THIS FILE HAS A HEADER RECORD WRITTEN IN THE ROUTINE C GETFIL AND THE DATA FOLLOWS HERE. EACH RECORD STARTS WITH C THE ADDRESS OF THE FIRST BYTE OF CODE AND MAY CONTAIN UP TO C 16 BYTES OF CODE PER LINE. C SUBROUTINE BINOUT(LOC,CODE) INCLUDE 'BINCOM.CMN' INCLUDE 'BSUCOM.CMN' INCLUDE 'IODEVS.CMN' INTEGER BINBUF(16),CODE(6),BLANKS INTEGER*4 LOC, NLOC EQUIVALENCE (KEYCHR(12),BLANKS) D WRITE (4,1) BINUNT,LOC,CODE,CURLOC,NBYTES,ASCLOC D 1 FORMAT (' BINOUT- BINUNT, LOC, CODE, CURLOC, NBYTES, ASCLOC = ', D $ /,2I7,2X,6A2,2I7,2X,A4) C IF (BINUNT.LE.0) RETURN NLOC = LOC C C DETERMINE NUMBER OF BYTES IN THIS CALL C NEW = 0 DO 5 I=1,6 IF (CODE(I).NE.BLANKS) NEW = NEW+1 5 CONTINUE C C IF NEW = 0 THEN ALL DONE, CLEAN UP C IF (NEW.EQ.0) GO TO 20 C C ON WITH THE NORMAL STUFF C DO 15 I=1,NEW IF (NBYTES+CURLOC.EQ.NLOC.AND.NBYTES.LT.16) GO TO 10 IF (NBYTES.NE.0) WRITE (BINUNT,6) ASCLOC, $ (BINBUF(J),J=1,NBYTES) 6 FORMAT (1X,A4,(1X,A2)) NBYTES = 0 CURLOC = NLOC CALL BINHEX(CURLOC,ASCLOC,4) C C OK, NOW STICK IT IN THE BUFFER C 10 NBYTES = NBYTES+1 BINBUF(NBYTES) = CODE(I) NLOC = NLOC+1 15 CONTINUE RETURN C C CLEAN UP C 20 IF (NBYTES.NE.0) WRITE (BINUNT,6) ASCLOC, $ (BINBUF(J),J=1,NBYTES) RETURN END