home *** CD-ROM | disk | FTP | other *** search
-
- unit LCTKRNL;
-
- interface
-
- uses
- DOS;
-
- const
- DTR = $01; { Data Terminal Ready }
- RTS = $02; { Request to Send }
- XON = $11; { XON/XOFF characters }
- XOFF = $13;
-
- OverRun = $02; { Error Status Masks }
- BadParity = $04;
- BadFrame = $08;
- BreakDet = $10;
-
- DeltaCTS = $01; { Deltas = 1 if bit changed }
- DeltaDSR = $02;
- DeltaRI = $04;
- DeltaDCD = $08;
- CTS = $10; { Clear to Send }
- DSR = $20; { Data Set Ready }
- RI = $40; { Ring Indicator }
- DCD = $80; { Carrier Detect }
-
- type
- BPtr = ^byte;
- CCB = record { Communications Control Block }
- OldVector : pointer; { save old interrupt vector }
- BasePort : word; { base 8250 port }
- IntVec : byte; { interrupt vector # for port }
- IrqMask : byte; { the IRQ mask for the port }
- OldIrq : byte; { previous mask }
- MdmStat : byte; { last modem status }
- MdmCtl : byte; { current mdm control value }
- LastErr : byte; { last detected error }
- IntMask : byte; { current int reg mask }
- XState : boolean; { TRUE if auto XON/XOFF }
- InXRecd : boolean; { TRUE if XOFF recd }
- OutXSent : boolean; { TRUE if XOFF auto-sent }
- BrkRecd : boolean; { TRUE if BREAK Detected }
- InBuff : BPtr;
- InBuffLen : integer; { input buffer abs size }
- InBuffCt : integer; { current # chars in input }
- InBuffMk : integer; { high-water mark for auto XOFF }
- InHead : BPtr;
- InTail : BPtr;
- InBuffEnd : BPtr;
- OutBuff : BPtr;
- OutBuffLen : integer;
- OutBuffCt : integer;
- OutHead : BPtr;
- OutTail : BPtr;
- OutBuffEnd : BPtr;
- SaveStk : pointer;
- NewStk : pointer;
- end; { CCB }
-
- CCBPTR = ^CCB;
-
- var
- {$F+}
- CPorts : Array [0..3] of CCBPTR;
- {$F-}
-
- function PortChange(CPort:integer; NewBase:word; NewIrq,NewVector:byte):boolean;
-
- function ValidatePort(CPort:integer) : CCBPTR;
-
- function CommSetup(CPort:integer; Baud:word; Parity:char;
- DataBits, StopBits:integer):boolean;
-
- function CommOpen(CPort:integer; Baud:word; Parity:char; Databits, Stopbits, InSize,
- OutSize:integer) : boolean;
-
- procedure CommClose(CPort : integer);
-
- function CommPut(Cptr:CCBPTR; Ch : byte) : boolean;
-
- function CommGet(CPtr:CCBPTR; var Ch : Byte) : boolean;
-
- function SetModemSignals(CPort : integer; NewSet : byte) : boolean;
-
- function ClearModemSignals(CPort : integer; NewSet : byte) : boolean;
-
- function FlipModemSignals(CPort : integer; NewSet : byte) : boolean;
-
- function SendBreak(CPort : integer) : boolean;
-
- function ModemStatus(CPort : integer) : byte;
-
- function ErrorStatus(CPort : integer) : byte;
-
- function EnableXon(CPort:integer; XonFlag:boolean) : boolean;
-
- function XoffRecd(CPort:integer) : boolean;
-
- function XoffSent(CPort:integer) : boolean;
-
- function BreakRecd(CPort:integer) : boolean;
-
- procedure IntOn; inline($FB);
- procedure IntOff; inline($FA);