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

  1. (********************************************************************)
  2. (* THIS PROCEDURE WILL SETUP THE SERIAL PORT SELECTED               *)
  3. (* INPUT        : Serial_Channel, Baud_Rate, Stop_Bits, Data_Bits   *)
  4. (*              : Parity : INTEGER                                  *)
  5. (* INPUT/OUTPUT : NONE                                              *)
  6. (* OUTPUT       : SETUP SERIAL PORT IF EXISTS                       *)
  7. (* USES         : SETS Sync_Time                                    *)
  8. (* CALLS        : INTR                                              *)
  9. (* ERRORS       : NONE CHECKED                                      *)
  10. (* GLOBAL VARS  : Sync_Time, Wait_Increment                         *)
  11. (* SUBJECT      : SERIAL COMM , SETUP COMMUNICATIONS PORT           *)
  12. (* DOMAIN       : ARNO A. KARNER                      LEVEL : 001   *)
  13. (********************************************************************)
  14.  
  15. PROCEDURE Set_Serial                            ( Serial_Channel,
  16.                                                   Baud_Rate,
  17.                                                   Stopbits,
  18.                                                   Databits,
  19.                                                   Parity : INTEGER ) ;
  20.  
  21. VAR
  22.    parameter : INTEGER ;
  23.    parn      : byte;
  24.    Regs      : Reg ;
  25.  
  26. BEGIN (* PROC *)
  27.    Case Baud_Rate OF
  28.          300  : BEGIN
  29.                    Baud_Rate:=2;
  30.                    Sync_Time := Wait_Increment div 4;
  31.                 END ;
  32.           600 : BEGIN
  33.                    Baud_Rate:=3;
  34.                    Sync_Time := Wait_Increment div 4;
  35.                 END;
  36.          1200 : BEGIN
  37.                    Baud_Rate:=4;
  38.                    Sync_Time := Wait_Increment div 11;
  39.                 END ;
  40.          2400 : BEGIN
  41.                    Baud_Rate := 5 ;
  42.                    Sync_Time := Wait_Increment div 22 ;
  43.                 END ;
  44.          4800 : BEGIN
  45.                    Baud_Rate := 6 ;
  46.                    Sync_Time := Wait_Increment div 44 ;
  47.                 END ;
  48.          9600 : BEGIN
  49.                    Baud_Rate := 7 ;
  50.                    Sync_Time := Wait_Increment div 66 ;
  51.                 END ;
  52.       else
  53.          Baud_Rate := 4 ;                      { Default to 1200 baud }
  54.          Sync_Time := Wait_Increment div 11;
  55.       END ;
  56.       if stopbits = 2 then
  57.          stopbits := 1
  58.       else  stopbits:=0;                     { Default to 1 stop bit }
  59.       parn := parity;
  60.       if databits=7 then
  61.          databits:=2
  62.       else BEGIN
  63.          databits:=3;                     { Default to 8 data bits }
  64.          parn:=0;
  65.       END ;
  66.       parameter:=(Baud_Rate shl 5)+(stopbits shl 2)+databits;
  67.       case parn of
  68.          1 : parameter:=parameter+24;
  69.          2 : parameter:=parameter+8;
  70.       END ;
  71.       Regs.DX := Serial_Channel ;                 { 0 .. COMM N -1 }
  72.       Regs.AX := parameter;
  73.       Regs.FLAGS := 0;
  74.       INTR ( 20, Regs);
  75.    END ;
  76.