# # BY BILL CAEL AND BILL WOOD, MAY-SEPTEMBER 1980 # DEFINE(LF,10) # LINE FEED DEFINE(CR,13) # CARRIAGE RETURN # SUBROUTINE MESSGE (TEXT) # # ROUTINE TO BUFFER AND OUTPUT PLAYER MESSAGES # # CALL MESSGE('STRING') # STRING MUST BE <= MAXTXT (MAXIMUM LINE SIZE) # # CALL MESSGE(0) # CLEAR ALL ACCUMULATED MESSAGES # IMPLICIT INTEGER (A - Z) PARAMETER MAXTXT = 20, MAXLIN = 5, MESPOS = 18 INTEGER LINSIZ(MAXLIN) BYTE TEXT(1),BUFFER((MAXTXT+2)*MAXLIN),LASTCH LOGICAL CLEARF,VERBOS,WRAP COMMON /MESS/ CLEARF,VERBOS DATA LINSIZ/MAXLIN*0/,CURLIN/0/,FLSHNM/0/,IN/0/ DATA CLEARF /.FALSE./,VERBOS/.TRUE./,WRAP/.FALSE./ IF (! CLEARF) [ CLEARF = .TRUE. FOR (I = CURLIN+1; I <= MAXLIN; I = I+1) LINSIZ(I) = 0 ] IF (TEXT(1) == 0 | CURLIN == MAXLIN) IF (CURLIN > 0 | FLSHNM >= 10) [ IF (!WRAP) FOR (I = CURLIN+1; I <= MAXLIN & LINSIZ(I) != 0; I = I+1) [ CALL PUTCH(LF,BUFFER,IN) DO J = 1,LINSIZ(I) CALL PUTCH(' ',BUFFER,IN) CALL PUTCH(CR,BUFFER,IN) LINSIZ(I) = 0 ] IF (IN > 0) [ CALL TPOS(MESPOS,1) CALL OUTCH(BUFFER,IN) CALL OUTCH(0,0) IN = 0 IF (CURLIN == MAXLIN) WRAP = .TRUE. CURLIN = 0 ] IF (TEXT(1) == 0) WRAP = .FALSE. FLSHNM = 0 ] ELSE FLSHNM = FLSHNM+1 IF (TEXT(1) != 0) [ CURLIN = CURLIN+1 CALL PUTCH(LF,BUFFER,IN) IF (VERBOS | (TEXT(1) == '*') | (TEXT(1) == '?')) FOR (I = 1; TEXT(I) != 0 & I <= MAXTXT; I = I+1) CALL PUTCH(TEXT(I),BUFFER,IN) ELSE [ LASTCH = ' ' I = 0 FOR (J = 1; TEXT(J) != 0 & J <= MAXTXT; J = J+1) [ IF (LASTCH == ' ') [ CALL PUTCH(TEXT(J),BUFFER,IN) I = I+1 ] LASTCH = TEXT(J) ] I = I+1 ] J = LINSIZ(CURLIN) LINSIZ(CURLIN) = I-1 FOR ( ; I <= J; I = I+1) CALL PUTCH(' ',BUFFER,IN) CALL PUTCH(CR,BUFFER,IN) ] RETURN END SUBROUTINE PUTCH (CH, BUF, PTR) IMPLICIT INTEGER (A - Z) BYTE CH,BUF(1) # PTR = PTR+1 BUF(PTR) = CH RETURN END