Category : Pascal Source Code
Archive   : LTCOMM50.ZIP
Filename : LCTKRNL-.PAS

 
Output of file : LCTKRNL-.PAS contained in archive : LTCOMM50.ZIP
{$A-,B-,D-,E+,F-,I-,L-,N-,O-,R-,S-,V-}
{$M 16384,0,655360}

(*
LiteComm-TP - LiteComm(tm) for Turbo Pascal
Copyright(c) 1987, 1988, 1989-Information Technology, Ltd.

LCTKRNL.PAS - Kernel functions for LiteComm-TP
*)

unit LCTKRNL;

interface

uses
DOS;

CONST
PORTMASK = $000F; (* used in port validation *)

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 *)
TxReady : BOOLEAN; (* TRUE IF transmitter available *)
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..14] of CCBPTR;
{$F-}

function PortChange(CPort:INTEGER; NewBase:WORD; NewIrq,NewVector:BYTE):BOOLEAN;

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; RaiseMdmCtl:BOOLEAN) : BOOLEAN;

PROCEDURE CommClose(CPort:INTEGER; DropMdmCtl:BOOLEAN);

PROCEDURE CommTx(Cptr:CCBPTR);

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;


  3 Responses to “Category : Pascal Source Code
Archive   : LTCOMM50.ZIP
Filename : LCTKRNL-.PAS

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/