home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / LCOMMT.ZIP / LCTKRNL-.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-10-07  |  3.5 KB  |  107 lines

  1.  
  2. unit LCTKRNL;
  3.  
  4. interface
  5.  
  6. uses
  7.   DOS;
  8.  
  9. const
  10.     DTR = $01;                         { Data Terminal Ready }
  11.     RTS = $02;                         { Request to Send }
  12.     XON = $11;                         { XON/XOFF characters }
  13.     XOFF = $13;
  14.  
  15.     OverRun = $02;                     { Error Status Masks }
  16.     BadParity = $04;
  17.     BadFrame = $08;
  18.     BreakDet = $10;
  19.  
  20.     DeltaCTS = $01;                    { Deltas = 1 if bit changed }
  21.     DeltaDSR = $02;
  22.     DeltaRI  = $04;
  23.     DeltaDCD = $08;
  24.     CTS = $10;                         { Clear to Send }
  25.     DSR = $20;                         { Data Set Ready }
  26.     RI  = $40;                         { Ring Indicator }
  27.     DCD = $80;                         { Carrier Detect }
  28.  
  29. type
  30.     BPtr = ^byte;
  31.     CCB = record                       { Communications Control Block }
  32.         OldVector : pointer;           { save old interrupt vector }
  33.         BasePort  : word;              { base 8250 port }
  34.         IntVec    : byte;              { interrupt vector # for port }
  35.         IrqMask   : byte;              { the IRQ mask for the port }
  36.         OldIrq    : byte;              { previous mask }
  37.         MdmStat   : byte;              { last modem status }
  38.         MdmCtl    : byte;              { current mdm control value }
  39.         LastErr   : byte;              { last detected error }
  40.         IntMask   : byte;              { current int reg mask }
  41.         XState    : boolean;           { TRUE if auto XON/XOFF }
  42.         InXRecd   : boolean;           { TRUE if XOFF recd }
  43.         OutXSent  : boolean;           { TRUE if XOFF auto-sent }
  44.         BrkRecd   : boolean;           { TRUE if BREAK Detected }
  45.         InBuff    : BPtr;
  46.         InBuffLen : integer;           { input buffer abs size }
  47.         InBuffCt  : integer;           { current # chars in input }
  48.         InBuffMk  : integer;           { high-water mark for auto XOFF }
  49.         InHead    : BPtr;
  50.         InTail    : BPtr;
  51.         InBuffEnd : BPtr;
  52.         OutBuff    : BPtr;
  53.         OutBuffLen : integer;
  54.         OutBuffCt  : integer;
  55.         OutHead    : BPtr;
  56.         OutTail    : BPtr;
  57.         OutBuffEnd : BPtr;
  58.         SaveStk    : pointer;
  59.         NewStk     : pointer;
  60.     end;                               { CCB }
  61.  
  62.     CCBPTR = ^CCB;
  63.  
  64. var
  65. {$F+}
  66.     CPorts : Array [0..3] of CCBPTR;
  67. {$F-}
  68.  
  69. function PortChange(CPort:integer; NewBase:word; NewIrq,NewVector:byte):boolean;
  70.  
  71. function ValidatePort(CPort:integer) : CCBPTR;
  72.  
  73. function CommSetup(CPort:integer; Baud:word; Parity:char;
  74.                    DataBits, StopBits:integer):boolean;
  75.  
  76. function CommOpen(CPort:integer; Baud:word; Parity:char; Databits, Stopbits, InSize,
  77.                   OutSize:integer) : boolean;
  78.  
  79. procedure CommClose(CPort : integer);
  80.  
  81. function CommPut(Cptr:CCBPTR; Ch : byte) : boolean;
  82.  
  83. function CommGet(CPtr:CCBPTR; var Ch : Byte) : boolean;
  84.  
  85. function SetModemSignals(CPort : integer; NewSet : byte) : boolean;
  86.  
  87. function ClearModemSignals(CPort : integer; NewSet : byte) : boolean;
  88.  
  89. function FlipModemSignals(CPort : integer; NewSet : byte) : boolean;
  90.  
  91. function SendBreak(CPort : integer) : boolean;
  92.  
  93. function ModemStatus(CPort : integer) : byte;
  94.  
  95. function ErrorStatus(CPort : integer) : byte;
  96.  
  97. function EnableXon(CPort:integer; XonFlag:boolean) : boolean;
  98.  
  99. function XoffRecd(CPort:integer) : boolean;
  100.  
  101. function XoffSent(CPort:integer) : boolean;
  102.  
  103. function BreakRecd(CPort:integer) : boolean;
  104.  
  105. procedure IntOn; inline($FB);
  106. procedure IntOff; inline($FA);
  107.