C PROGRAM TO READ PROLOG PROGRAMMER BUFFER AND XFER CONTENTS TO PDP-11 C RT-11 DISK FILE. C CREATED--14-JAN-80, G. BEVER. C 'IBUF' INCREASED--10-DEC-80, G. BEVER. C FB TT I/O NO WAIT BIT SET, INPUT CSR REQUESTED--5-JUN-84, G. BEVER. C C .COMPILE PROPDP/NOSWAP C C LINK AS FOLLOWS: C C .LINK PROPDP C BYTE IBUF(512) INTEGER*2 ISPEC(39),JSWI(4,1) REAL*4 EXT(2) DATA EXT/6RPRODAT,6RDATDAT/ DATA JSWI/'M',3*0/ DATA IBUF/512*0/ C K=1 TYPE 101 101 FORMAT(' ENTER BASE CSR, VECTOR FOR INPUT') ACCEPT 102,ICSR,IVEC 102 FORMAT(2O6) C GET OUTPUT FILE NAME. 4 IF(ICSI(ISPEC,EXT,,JSWI,1).NE.0) GO TO 4 C GET OPEN CHANNEL. ICHAN=IGETC() IF(ICHAN.LT.0) STOP 'NO CHANNEL' C FETCH OUTPUT DEVICE HANDLER INTO MEMORY. IF(IFETCH(ISPEC(16)).NE.0) STOP 'BAD FETCH' C PERFORM CREATE OF OUTPUT FILE. I=IENTER(ICHAN,ISPEC(16),-1) IF(I.LT.0) STOP 'BAD LOOKUP' IBLK=0 C DISABLE LP INTERRUPT. CALL IPOKE(ICSR,0) C SET SPECIAL MODE TT. CALL IPOKE("44,IOR(IPEEK("44),"010100)) C TERMINATE? IF SO, GO TO 90. 5 I=ITTINR() IF(I.GE.0) GO TO 90 C LOOP UNTIL RECEIVE CHAR. 10 I=IPEEK(ICSR) IF(IAND(I,"200).EQ.0) GO TO 5 C GET CHAR FROM PROLOG. I=IAND(IPEEK(ICSR+2),"377) C OUTPUT CHAR. J=ITTOUR(I) IBUF(K)=I K=K+1 IF(K.LE.512) GO TO 5 ! BLOCK NOT FULL. I=IWAIT(ICHAN) ! WAIT FOR CHANNEL COMPLETION. I=IWRITE(256,IBUF(1),IBLK,ICHAN) IBLK=IBLK+1 K=1 GO TO 5 C WRITE OUT BLOCK TO DISK FILE. C 90 L=1 C 15 I=IWRITW(256,IBUF(L),IBLK,ICHAN) C IBLK=IBLK+1 C L=L+512 C IF(L.LE.K) GO TO 15 C TAKE CARE OF LEFTOVERS. 90 IF(K.LE.1) GO TO 92 C CLEAR REST OF BUFFER NOT WRITTEN TO. DO 91 NUM=K,512 91 IBUF(NUM)=0 I=IWAIT(ICHAN) ! WAIT FOR CHANNEL COMPLETION. I=IWRITE(256,IBUF(1),IBLK,ICHAN) ! WRITE LAST BLOCK. C CLOSE OUTPUT FILE. 92 CALL CLOSEC(ICHAN) STOP END