home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / AAKINT14.ZIP / RCVSERCH.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-08-24  |  1.6 KB  |  39 lines

  1. (********************************************************************)
  2. (* THIS PROCEDURE WILL RECEIVE A CHAR FROM SERIAL DEVICE IF PRESENT *)
  3. (* INPUT        : Ser_Chan : INTEGER                                *)
  4. (* INPUT/OUTPUT : NONE                                              *)
  5. (* OUTPUT       : Ch : CHAR, Ok : BOOLEAN STATUS                    *)
  6. (* USES         : UPDATES GLB FLAGS AND COUNTERS                    *)
  7. (* CALLS        : INTR                                              *)
  8. (* ERRORS       : ALL SERIAL I/O POSSIBLE                           *)
  9. (* GLOBAL VARS  : GLB SERIAL VARS                                   *)
  10. (* SUBJECT      : SER COMM, RECEIVE CHARACTER                       *)
  11. (* DOMAIN       : ARNO A. KARNER                      LEVEL : 001   *)
  12. (********************************************************************)
  13.  
  14. PROCEDURE Recv_Char                       (     Ser_Chan : INTEGER ;
  15.                                             VAR CH       : CHAR ;
  16.                                             VAR OK       : BOOLEAN ) ;
  17.  
  18. VAR
  19.    Regs  : Reg ;
  20.  
  21. BEGIN (* PROC *)
  22.    Regs.AH := 2 ;
  23.    Regs.DX := Ser_Chan ;
  24.    INTR ( $14 , Regs ) ;
  25.    IF Regs.AH AND $80 = 0
  26.    THEN BEGIN
  27.            OK := TRUE ;
  28.            CH := CHR ( Regs.AL ) ;
  29.         END
  30.    ELSE Ok := FALSE;
  31.    IF Glb_Diag
  32.    THEN BEGIN (* DIAG MODE *)
  33.            CSF [ Ser_Chan ] := CSF [ Ser_Chan ] AND $9EFF;
  34.            CSF [ Ser_Chan ] := CSF [ Ser_Chan ] OR ( Regs.AH SHL 8 ) ;
  35.            Comm_Counters [ Ser_Chan ].Chars_Recieved :=
  36.            Comm_Counters [ Ser_Chan ].Chars_Recieved + 1 ;
  37.         END;
  38. END ; (* PROC *)
  39.