Trailing-Edge
-
PDP-10 Archives
-
FORTRAN-10_Alpha_31-jul-86
-
scnr.bli
There are 12 other files named scnr.bli in the archive. Click here to see a list.
!COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1976, 1986
!ALL RIGHTS RESERVED.
!
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
!ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
!INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
!COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
!OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
!TRANSFERRED.
!
!THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
!AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
!CORPORATION.
!
!DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
!SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
! Author: *
MODULE SCNR=
BEGIN
GLOBAL BIND SCNRV = #11^24 + 0^18 + 0; ! Version Date: 21-Nov-80
%(
***** Begin Revision History *****
***** End Revision History *****
)%
MACRO BUFSIZ=100$;
FORWARD GETTTY,SETUP;
EXTERNAL RESET,CRLF,RETABLE;
EXTERNAL QPARSE,SECDEFS;
EXTERNAL SIXBIT,PUTMSG,IOERR;
GLOBAL ROUTINE INIT=
BEGIN
LOCAL VECTOR ZBUFFER[BUFSIZ+3];
RESET();
CRLF(0);
DO
BEGIN
RETABLE();
ZBUFFER[0]_BUFSIZ;
ZBUFFER[1]_0;
ZBUFFER[2]_0;
PUTMSG('*');
GETTTY(ZBUFFER);
END
UNTIL
SETUP(ZBUFFER);
END;
ROUTINE GETTTY(BUFF)=
BEGIN
MACRO INCHWL(X)=TTCALL(4,X)$,
SIZEFLD=24,6$,
CLRBFI=TTCALL(#11)$,
BSIZE=BUFFER[-3]$,
BCNT=BUFFER[-2]$,
BPTR=BUFFER[-1]$;
MACHOP TTCALL=#051;
BIND VECTOR BUFFER=.BUFF+3;
LOCAL T1,T2;
DECR PTR FROM .BSIZE TO 0 DO BUFFER[.PTR]_0;
IF .BPTR EQL 0 THEN
% USE DEFAULT VALUE %
T2_BPTR_BUFFER[0]<36,7> ELSE T2_.BPTR;
DO
BEGIN
INCHWL(T1);
REPLACEI(BPTR, IF .BPTR<SIZEFLD> EQL 6 THEN SIXBIT(.T1) ELSE .T1);
BSIZE_.BSIZE+1;
END
UNTIL
.T1 EQL #015 OR .BCNT GEQ .BSIZE;
IF .T1 EQL #015 THEN INCHWL(T1) ELSE
BEGIN
IOERR(1);
CLRBFI;
CRLF(0);
PUTMSG('*');
GETTTY(.BUFF);
END;
BPTR_.T2; % RESTORE POINTER %
END;
GLOBAL ROUTINE SETSTRING(BUFFER,CODE)=
BEGIN
EXTERNAL ZPOS;
LOCAL VECTOR QPROD[3];
MACRO XBUFF=QPROD[0]$, % BUFFER ADDRESS %
XTRSW=QPROD[2]<0,2>$, % TRACE SWITCH %
XFIX=QPROD[2]<2,1>$, % FIX SWITCH %
XMSGX=QPROD[2]<3,1>$, % MESSAGE SWITCH %
XHALTS=QPROD[2]<4,1>$, % HALT SWITCH %
XEXPL=QPROD[2]<18,18>$, % EXPLAIN TABLE %
XTRAC=QPROD[1]<18,18>$, % TRACE NAME TABLE %
XPROD=QPROD[1]<0,18>$; % PRODUCTIONS %
EXTERNAL QTRSW,QFIX,QMSG,QMACH,QTRACET;
XBUFF_.BUFFER;
XTRSW_.QTRSW;
XFIX_.QFIX;
XEXPL_QMSG;
XPROD_QMACH;
XTRAC_QTRACET;
( QPARSE(.CODE,QPROD) OR .ZPOS^18 )
END;
ROUTINE SETUP(BUFFER)=
BEGIN
IF SETSTRING(.BUFFER,1) THEN
BEGIN
RETURN SECDEFS();
END;
END;
END ELUDOM