SUBROUTINE DISP(FWA) CC C DISP - DISPLAYS A SEGMENT OF THE BUFFER ON THE SCREEN C C ENTRY: FWA = FIRST WORD TO START DISPLAYING C DISPLAYS 32 WORDS AT A TIME C INTEGER*2 FWA,LWA,NWDS,BBUFF(8) LOGICAL*1 ABUFF(8),RBUFF(12) INCLUDE '[214,10]BUFCOM.COM' C NWDS = MIN0(256-FWA+1,32) ! ONLY DISPLAY AS MANY WORDS AS LEFT LWA = FWA+NWDS-1 ! COMPUTE A LAST WORD ADDRESS IF(NWDS.LE.0) RETURN ! GET OUT IF NOTHING TO DO IF(NWDS.LT.4) GOTO 1000 ! SKIP THE LOOP IF LESS THAN 4 TO DO C DO 500 I=FWA,FWA-4+NWDS,4 ! LOOP BY 4 C DO 100 J=1,8 ! CONVERT THE ASCII/BYTES BBUFF(J) = BUFFB(2*(I-1)+J).AND."377 ! GET A BYTE FROM THE BUFFER ABUFF(J) = BBUFF(J).AND."177 ! MASK FOR ASCII IF((ABUFF(J).LT."40).OR.(ABUFF(J).GT."176)) ABUFF(J)=1H. 100 CONTINUE C CALL R50ASC(12,BUFF(I),RBUFF) TYPE 9000,2*(I-1),(BUFF(J),J=I,I+3) 1,(ABUFF(J),J=1,8),(RBUFF(J),J=1,12) 9000 FORMAT(O4,1X,4O7,' |',8A1,'|',12A1,'|') 500 CONTINUE 1000 I = NWDS.AND."3 ! SCARF OFF BOTTOM 2 BITS IF(I.EQ.0) GOTO 2000 ! LEAVE IF NONE LEFT TO DO DO 1010 J=1,2*I BBUFF(J) = BUFFB(((LWA.AND."177774)-1)*2+J).AND."377 ! GET A BYTE ABUFF(J) = BBUFF(J).AND."177 IF((ABUFF(J).LT."40).OR.(ABUFF(J).GT."176)) ABUFF(J)=1H. 1010 CONTINUE CALL R50ASC(3*I,BUFF(LWA-I+1),RBUFF) GOTO (1100,1200,1300) I ! DISPATCH ON NUMBER TO DO 1100 TYPE 9001,2*(LWA-1),BUFF(LWA) 1,(ABUFF(J),J=1,2),(RBUFF(J),J=1,3) 9001 FORMAT(O4,1X,O7,21X,' |',2A1,6X,'|',3A1,9X,'|') GOTO 2000 1200 TYPE 9002,2*(LWA-2),(BUFF(J),J=LWA-1,LWA) 1,(ABUFF(J),J=1,4),(RBUFF(J),J=1,6) 9002 FORMAT(O4,1X,2O7,14X,' |',4A1,4X,'|',6A1,6X,'|') GOTO 2000 1300 TYPE 9003,2*(LWA-3),(BUFF(J),J=LWA-2,LWA) 1,(ABUFF(J),J=1,6),(RBUFF(J),J=1,9) 9003 FORMAT(O4,1X,3O7,7X,' |',6A1,2X,'|',9A1,3X,'|') 2000 RETURN END