.TITLE CHO - QUEUE CHARACTER OUTPUT .IDENT /21NOV7/ ;16:50, MK ; .ENTRY CHO - QUEUE CHARACTER OUTPUT ;+ ; C H O ; ; PURPOSE: QUEUE CHARACTER OUTPUT ROUTINE ; ; INTERFACE: CALLING SEQUENCE: ; CALLED WITH POINTER TO CHARACTER IN R0 ; JSR PC,CHO (OR JMP CHO) ; ; EXAMPLE: ; IHAR$S ;DISABLE AST RECOGNITION ; MOV CH.IN,R0 ;GET POINTER ; MOVB #CHAR,(R0)+ ;PUT CHAR IN BUFFER ; ... ;MOVE MORE CHAR'S IN ; JSR PC,CHO ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: NOT FORTRAN-CALLABLE. THIS ROUTINE IS INTERNAL ; TO THE PLOTTING PACKAGE (RS4010) AND IS NOT ; INTENDED FOR GENERAL USE. ;- ; REVISIONS: ; 30-SEP-75 MK MODIFIED TO PREVENT BUFFER ; OVERRUN IN AST ENVIRONMENT. ; 01-JUN-77 SJS UPDATED TO CONFORM TO STANDARDS. ; 18-NOV-77 MK MAKE RSX-11M COMPATIBLE ; 20-NOV-77 MK MOVE ATTACH AND DETACH QIOS AND ATTACH FLAG ; TO THIS MODULE ; .MCALL ENAR$S,DIR$,ASTX$S,QIOW$,MRKT$,CMKT$S ; CHO:: MOV R0,CH.IN ;UPDATE INPUT POINTER ENAR$S ;RE-ENABLE ASTS CMP R0,#BAKBUF ;BUFFER ALMOST FULL? BHI WTFOUT ;YES TST FLAG ;TIMEOUT IN PROGRESS? BNE 2$ ;YES INC FLAG ;SET TIMEOUT FLAG DIR$ #WTOUT ;START TIMEOUT 2$: RTS PC ; TIMOUT: TST (SP)+ JSR PC,DMPBUF ;DUMP BUFFER ASTX$S ; ; ; CALL: CALL WTFOUT ; ; WAIT FOR OUTPUT ROUTINE ; WTFOUT::CMKT$S ,#TIMOUT ;CANCEL TIMEOUT DMPBUF: MOV CH.IN,OUTDPB+Q.IOPL+2 ;COMPUTE CHAR COUNT SUB #OUTBUF,OUTDPB+Q.IOPL+2 BEQ 3$ ;RETURN IF BUFFER EMPTY DIR$ #OUTDPB ;OUTPUT THE BUFFER MOV #OUTBUF,CH.IN ;CLEAR THE BUFFER 3$: CLR FLAG ;RESET TIMEOUT FLAG RTS PC ; CH.MOD:: .WORD 0 FLAG: .WORD 0 CH.IN:: .WORD OUTBUF OUTBUF: .BLKB CBL BAKBUF: .BLKB 76. ; OUTDPB: QIOW$ IO.WAL,LUN,OUTFL,,,, WTOUT: MRKT$ ,3,1,TIMOUT ; CM.ATC::QIOW$ IO.ATA,LUN,INFL,,,, CM.DET::QIOW$ IO.DET,LUN,INFL CM.ATF::.WORD 0 ;ATTACH FLAG .END