.TITLE RDAST ; ; FORTRAN-CALLABLE ROUTINE THAT, ONCE CALLED, WILL INCREMENT A SPECIFIED ; FLAG WHENEVER THERE IS A LINE OF UNSOLICITED INPUT FROM THE TERMINAL. ; RDAST USES THE ATTACH WITH UNSOLICITED READ AST FEATURE (IO.ATA) OF THE ; TERMINAL HANDLER. IT WAS WRITTEN FOR IAS VERSION 3.0, BUT THE SAME ; FEATURE EXISTS FOR RSX-11D AND RSX-11M. ; ; NOTE: RDAST ONLY INCREMENTS THE SPECIFIED FLAG SIGNIFYING THAT A LINE ; OF TEXT HAS BEEN INPUT. THE CALLING PROGRAM MUST ISSUE A READ REQUEST ; TO ACTUALLY READ THE LINE OF TEXT. ; ; CALLING SEQUENCE ; ; CALL RDAST(IAST) ; ; IAST - FLAG TO BE INCREMENTED WHEN UNSOLICITED INPUT IS AVAILABLE ; ; WRITTEN MARCH 1979 R B FRENCH THE BOEING COMPANY ; .MCALL DIR$,QIOW$,ASTX$S ; RDAST:: MOV 2(R5),ASTFLG ;SAVE THE ASTFLG FLAG ADDRESS DIR$ #SETAST ;SET UP FOR UNSOLICITED READ RTS PC ; SETAST::QIOW$ IO.ATA,1,1,,,, ; AST: TST @ASTFLG BNE 20$ ;BUFFER FULL CMP #15,(SP) ;END OF LINE? BEQ 10$ ;YES MOVB (SP),@PNT ;XFER CHRACTER INC PNT INC CNT CMP #80.,CNT ;BUFFER FULL? BGT 20$ ;NO 10$: INC @ASTFLG ;SHOW FULL BUFFER CLRB @PNT ;END OF TEXT 20$: TST (SP)+ ;CLEAR STACK ASTX$S ;EXIT THE AST ROUTINE ; ASTFLG: .WORD 0 ; ; ; CALL GETLIN(N.BUF) ;WHERE N # OF CHARACTERS RETURNED TO CALLERS BUFFER ; BUF BUFFER ADDRESS FOR CHARACTERS GETLIN:: MOV 4(R5),R1 ;CALLERS BUFFER MOV #BUF,R0 MOV CNT,@2(R5) ;RETURN # OF CHARACTERS CLR CNT MOV R0,PNT ;RESET BUFFER POINTER 10$: MOVB (R0)+,(R1)+ ;XFER CHAR TO CALLERS BUFFER BNE 10$ ;STOP ON ZERO BYTE CLR @ASTFLG ;AST CAN START AGAIN RETURN PNT: .WORD BUF BUF: .BLKB 80. CNT: .WORD 0 .END