. . BUFFER SOURCE . . . (C) Copyright 1972-1978 John Walker . . This software is in the public domain . AXR$ DEFUNCT$ FANG PURE CODE . . WORKS LIKE INPUT EXCEPT THAT THE FCT HAS A POINTER . TO A DATA TYPED PARAMETER IN IOFN RATHER THAN A . FILE NAME. EMITS IOCOUNT BUFFERS, THE LAST OF WHICH . WILL HAVE IBLAST SET. THE 'M' OPTION MAKES IT EMIT . A FINAL EOF STATUS BUFFER. . . LX,U X10,<FCT> . LMJ A2,SOURCE . <RETURN> . SOURCE* FORK SORCESU ESTABLISH A SOURCE ACTIVITY J 0,A2 RETURN . SORCESU LA,U A10 CLEAR BLOCKS TRANSMITTED LA A11,IOOPT,X10 LOAD I/O OPTION LX X9,IOFN,X10 LOAD ADDRESS OF DATA PARAMETER . SORCEL LA A0,PBVAL,X9 LOAD LENGTH OF DATA AA,U A0,IBDATA ADD LENGTH OF BLOCK BUFFER BGET . ALLOCATE A BLOCK BUFFER LA,U A1,IBDATA,A0 LOAD ADDRESS OF DATA AREA LXI,U A1,1 SET UP INCREMENT LA,U A2,PBSS,X9 GET ADDRESS OF PROTOTYPE DATA LXI,U A2,1 GET SOURCE INCREMENT LR R1,PBVAL,X9 LOAD LENGTH OF DATA SUPPLIED SR R1,IBLEN,A0 SET LENGTH IN BLOCK BUFFER BT A1,,*A2 MOVE DATA TO BLOCK BUFFER SZ IBSTAT,A0 SET READ STATUS NORMAL SX X10,IBIOP,A0 SET BACKPOINTER TO SOURCE FCT SA A10,IBBLKN,A0 SET BLOCK NUMBER IN FCT SZ IBAFC,A0 CLEAR ABNORMAL FRAME COUNT SZ IBLAST,A0 CLEAR LAST BLOCK FLAG AA,U A10,1 INCREMENT BLOCK NUMBER TG A10,IOCOUNT,X10 ENOUGH BLOCKS WRITTEN ? BSEND SNONZ IBLAST,A0 YES. SET LAST FLAG IN THIS BLOCK LA A2,IBLAST,A0 LOAD LAST FLAG LA,U A1,IBQ,A0 LOAD HEAD WORDS ADDRESS TNE,U A11,'M' IS THE 'M' OPTION ON ? JNZ A2,SLASTE YES. IF LAST BLOCK CLOSE OUT PUT IOBB,X10 PUT ON BOUNDED BUFFER JZ A2,SORCEL LOOP UNTIL LAST BLOCK PASSED EXIT . ALL DONE . . 'M' OPTION CLOSEOUT . SLASTE SZ IBLAST,A1 MARK THIS ONE NOT LAST PUT IOBB,X10 TRANSMIT BUFFER BGET IBDATA ALLOCATE AN EOF STATUS BUFFER LA,U A1,1 LOAD EOF STATUS SA A1,IBSTAT,A0 PUT STATUS IN BUFFER LA,U A11 CLEAR I/O OPTION J BSEND TRANSMIT THE LAST BUFFER END