*COMDECK PBTESTIOR
_$J+  PAGE EJECT? 
_*****************************
*                            *
*       PBTESTIORDY          *
*      TEST I/O READY        *
*                            *
*****************************?
_$R+,G+,I-     RECURSIVE
               INTERRUPTABLE ?
_***********************************************************************
*                                                                      *
**OVERVIEW- PBTESTIORDY TESTS WHETHER OR NOT A LOCAL PERIPHERAL        *
*           IS READY.  A TRUE IS RETURNED IF THE DEVICE IS             *
*           READY.                                                     *
**INPUT- DEVICE NUMBER.                                                *
*                                                                      *
**OUTPUT- READY/NOT READY INDICATION.                                  *
*                                                                      *
**EXTERNAL SUBROUTINES-                                                *
*              1) PBREAD           READ DATA/STATUS                    *
*                                                                      *
***********************************************************************?
FUNCTION PBTESTIORDY(DEVICE : INTEGER) : BOOLEAN; 
CONST TTYBUSY = BIT1;                       _TTY BUSY                  ?
      TTYREAD = BIT9;                       _TTY IN READ MODE          ?
_?
      LPBUSY  = BIT1;                       _LINE PRINTER BUSY         ?
      LPREADY = BIT0;                       _LINE PRINTER READY        ?
_?
VAR STATUS : B0OVERLAY; 
_?
BEGIN 
  PBTESTIORDY := FALSE; 
  WITH STATUS DO
  CASE DEVICE OF                            _DEVICE CODE               ?
_?
  NODEVICE:                                 _NULL DEVICE               ?
  BEGIN 
    BA1CHAR := PBREAD(TTYSTAT,TTY);         _READ TTY STATUS           ?
    PBTESTIORDY := NOT (TTYBUSY IN BASET);
  END;
_?
  TTY:                                      _CONSOLE                   ?
  BEGIN 
    BA1CHAR := PBREAD(TTYSTAT,TTY);         _READ TTY STATUS           ?
    PBTESTIORDY := NOT ((TTYREAD IN BASET) !
                        (TTYBUSY IN BASET));
  END;
_?
  END; _CASE? 
END; _PBTESTIORDY?
