.TITLE BUFDV3 .ENABL LC ; ; CALL BUFDV3 -- This subroutine will poll a Tektronix 4662 plotter ; (Idev=3) to check for the number of bytes available in the input ; buffer. That number (minus 10) is stored as IBfDv3 in COMMON ; /PLTR/. When polled, the plotter must empty the buffer before ; it can respond. ; .PSECT BUFDV3 BUFDV3::CMP #3,IDev ;TEKTRONIX 4662? BNE A ;BRANCH IF NOT ; ADD #10.,IBfDv3 ;RESTORE BUFFER LENGTH MOV #7,NIN ;SEVEN CHARACTERS ARE TO BE READ MOV R5,-(SP) ;SAVE R5 MOV #LIST,R5 ;SET ARGUMENT LIST JSR PC,TOUTIN ;POLL TERMINAL MOV (SP)+,R5 ;RESTORE R5 ; CMP #7,NIN ;SEVEN CHARACTERS READ? BNE BUFDV3 ;TRY AGAIN IF NOT MOVB IN+6,R0 ;GET LAST BYTE BIC #177754,R0 ;MASK OFF HIGH PART CMP #22,R0 ;STATUS INPUT, WORD 1? BNE BUFDV3 ;TRY AGAIN IF NOT ; MOVB IN+1,R0 ;GET BYTE 2 BIC #177740,R0 ;MASK OFF BOTTOM SWAB R0 ;SWAP TO HIGH BYTE ASL R0 ;SHIFT RIGHT ASL R0 ;THREE TIMES ASL R0 ;TO PUT INTO CORRECT PLACE MOVB IN+3,R1 ;GET BYTE 4 BIC #177740,R1 ;MASK OFF BOTTOM SWAB R1 ;SWAP TO HIGH BYTE ASR R1 ;SHIFT LEFT TWICE ASR R1 ;TO PUT INTO CORRECT PLACE BIS R1,R0 ;SET INTO R0 MOVB IN+5,R1 ;GET BYTE 6 BIC #177740,R1 ;MASK OFF BOTTOM ASL R1 ;SHIFT LEFT TO PUT INTO CORRECT SPOT. BIS R1,R0 ;SET INTO R0 SUB #10.,R0 ;SAVE 10 BYTES FOR NEXT REQUEST BIC #174000,R0 ;MASK OFF TOP MOV R0,IBfDv3 ;SAVE NEW BUFFER LENGTH A: RTS PC ;RETURN ; LIST: .WORD 5,OUT,NOUT,IN,NIN,VFC OUT: .ASCII <33>/AO1/<15> IN: .BLKB 7 NOUT: .WORD 5 NIN: .WORD 7 VFC: .BYTE 0 .EVEN