home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-01-24 | 97.8 KB | 3,367 lines |
-
-
-
-
-
-
-
-
- OVERVIEW OVERVIEW ________
-
-
- FEATURES FEATURES ________
-
-
- The LiteComm-TP Toolbox(tm) is a set of powerful routines
- designed to provide easy access to the full capabilities of
- the PC's asynchronous communications ports. In its initial
- release, the LiteComm-TP ToolBox supports fully interrupt-
- driven and buffered communications support on COM1 thru COM4
- simultaneously. Now you can quickly incorporate
- sophisticated communications support in your applications
- without having in-depth knowledge of how the hardware
- functions.
-
-
- LiteComm-TP is implemented as a set of 3 units for the basic
- product, with additional units providing the protocol-engine
- capability. The protocol engines are a part of the
- registered version of the package.
-
-
- The LiteComm ToolBox was originally developed in the C
- language for use in CAD/CAM applications that required the
- ability to have PC compatible systems communicating with a
- variety of devices. The introduction of version 4.0 of
- Turbo PASCAL1 has made it possible for use to extend the
- power and flexibility of the original LiteComm ToolBox(tm)
- to Turbo PASCAL programmers.
-
-
-
- THE SHAREWARE CONCEPT THE SHAREWARE CONCEPT _____________________
-
-
- Shareware is a "try before you buy" means of software
- distribution. If you find a shareware product useful, pay
- the registration fee, and let the authors know that you
- support their efforts.
-
-
- Information Technology, Ltd., is a member of, and supports
- the standards of, ASP, The Association of Shareware
- Professionals.
-
-
-
-
- ____________________
- 1 Turbo PASCAL is a registerd trademark of Borland
- International
-
-
-
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- LICENSE, WARRANTY AND REGISTRATION LICENSE, WARRANTY AND REGISTRATION __________________________________
-
-
- LICENSE LICENSE _______
-
-
- The LiteComm-TP ToolBox, is distributed as a shareware
- product. In its shareware form, support is limited to COM1
- only. To receive the units that support the extended
- features of LiteComm-TP and/or the source code for the
- product, register your copy today. See the registration form
- at the end of this manual.
-
-
- Information Technology, Ltd, grants to registered users a
- non-exclusive, perpetual license to the LiteComm-TP ToolBox,
- subject to these terms and conditions:
-
-
-
- 1. You must treat your copy of the LiteComm-TP
- Toolbox as you would a book. You may install
- the LiteComm-TP ToolBox on more than one
- machine, but you may use only one copy at a
- time. If you desire, site licenses are
- available at a reduced cost. You may make as
- many copies of the LiteComm-TP ToolBox as you
- require for the sole purpose of backup.
-
-
- 2. You may incorporate portions of the LiteComm-TP
- ToolBox in products that you develop without the
- payment of additional royalties or license fees.
- You must include the statement 'Portions
- Copyright 1987, 1988, Information Technology,
- Ltd' in your product's documentation.
-
-
- 3. You may copy and redistribute the shareware
- portion of the LiteComm-TP ToolBox, commonly
- known as LCOMMTP.ARC, but you may not modify in
- any way, the contents of the shareware package.
- Further, you may not charge a fee for providing
- such a copy, beyond a maximum $4.00 copying or
- duplication fee, without the express, written
- consent of Information Technology, Ltd,
-
-
- 4. You may not redistribute, in any form, the
- source code for the LiteComm-TP ToolBox.
- Further, you may not translate the source code
- for the LiteComm-TP ToolBox into any other
- language without the express, written consent of
- Information Technology, Ltd.
-
- Page 2
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- 5. Information Technology reserves the right to
- change both the LiteComm-TP ToolBox or its
- documentation without prior notice, with no
- obligation to you, the licensee.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 3
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- 6. You agree that any disputes arising from this
- license will be subject to the laws of the state
- of Rhode Island.
-
-
- 7. You agree to hold the developer and distributors
- of the LiteComm-TP ToolBox harmless for any
- damages, either direct or consequential, that
- might arise from the use of this product.
-
-
- 8. You acknowledge that the LiteComm-TP ToolBox,
- libraries, source code, and documentation are
- the copyrighted property of Information
- Technology, Ltd.
-
-
- 9. By your use of the LiteComm-TP ToolBox, you
- acknowledge that you have read, and understand
- the terms and conditions of this license.
-
-
- WARRANTY WARRANTY ________
-
-
- The LiteComm-TP ToolBox is distributed as-is and without
- warranty, including, but not limited to, the implied
- warranties of merchantability and fitness for a particular
- purpose.
-
-
- Information Technology, Ltd does warrant the distribution
- media for a period of 30 days. During that period,
- Information Technology, Ltd will replace the distribution
- media or provide a refund at its option.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 4
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- REGISTERING YOUR COPY REGISTERING YOUR COPY _____________________
-
-
- Registration of your copy of the LiteComm-TP ToolBox
- provides you with several benefits:
-
-
-
- 1. Puts you on our mailing list for low-cost
- updates, enhancements, and alert bulletins when
- they occur.
-
-
- 2. Gives you access to telephone support. Sorry,
- but we cannot provide support by telephone to
- unregistered user's of the ToolBox. Unregistered
- users can leave EMAIL on Compuserve to
- 70166,1152; on GEnie to I.TECH; and on DELPHI to
- RBMACE. We will respond to EMAIL on an as-
- available basis.
-
-
- 3.Helps to further the shareware concept.
-
- To register your copy, use the form at the end of this
- documentation. You may also register on-line through
- Compuserve, GEnie, or DELPHI, using EMAIL.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 5
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- NOTE NOTE ____
-
-
- LiteComm-TP is a package undergoing continuing development.
- Registered users of the product receive, in addition to the
- fully-functional base package, units that provide protocol
- engines supporting XModem, and YModem protocols.
-
-
- We plan to follow these with similar engines for Windowed
- XModem CompuServe B, Telink, and other protocols. These
- engines, as they are released, will only be made available
- to registered ToolBox users. The shareware version, as
- enhanced but without the protocol engines, will continue to
- be offered.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 6
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- COMMUNICATIONS AND THE PC COMMUNICATIONS AND THE PC _________________________
-
-
- PC SHORTCOMINGS PC SHORTCOMINGS _______________
-
-
- This section is intended as a mini-tutorial on ______________________________________________
- communications concepts. We encourage you to read it, _____________________________________________________
- although it is not strictly necessary to do so. _______________________________________________
-
-
- The IBM-PC, and its close compatibles, is a generally well
- thought-out, flexible, and well-executed computer.
- Unfortunately, not as much can be said for the thought which
- was given to the software which is meant to provide access
- to that hardware. One of the shortcomings which is most
- noticeable is in the support, or rather lack of it, that is
- provided to handle access to the serial port. Support for
- the serial port is limited by the BIOS to polled mode only,
- i.e. a program must interrogate the port on a regular basis
- to avoid losing received characters, and to check to
- determine whether or not the port is ready to send a
- character. Not only is this mode of operation primitive; it
- also tends to cause complications when attempting to perform
- any but the simplest of tasks, at slow speeds.
-
-
- A novice might think that the hardware, in some way, is the
- limiting factor. In fact, everything that is needed,
- hardware-wise, to support a more sophisticated method of
- handling the serial port is already there. All that is
- missing is the software follow-through. The LiteComm-TP
- ToolBox provides this missing software.
-
-
-
- THE 8250 UART THE 8250 UART _____________
-
-
- The term serial port comes from the fact that both incoming
- and outgoing characters entering and leaving the port do so
- in a bitwise fashion. When we send a character out the
- serial port, the responsible circuitry sends out information
- one bit at a time. When we receive a character, this
- circuitry accepts the individual bits and reassembles them
- into a recognizable character. These very complex operations
- are performed automatically by the 8250 UART (Universal
- Asynchronous Receiver-Transmitter).
-
-
-
-
-
-
-
- Page 7
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- The 8250 UART is a fully programmable device that permits
- independent control of the various parameters that affect
- serial communications, i.e. baud rate, parity, number of
- data bits, and number of stop bits. The 8250 also optionally
- supports four types of interrupts, error/break detection,
- modem status change detection, transmitter ready, and
- received character ready. The LiteComm-TP ToolBox fully
- supports all four type of interrupts.
-
-
- The term asynchronous implies that there is no absolute asynchronous ____________
- timing associated with the transmission of information.
- Instead, the clocking-in of the data bits is done by clocking-in ___________
- counting the bits. The first bit sent or received is call
- the start bit and signals the beginning of a new character.
- The individual data bits follow the start bit which are
- clocked out and in at the specified data rate, with the
- least significant bit transferred first and the parity bit,
- if present, transferred last. Finally one or more stop bits
- follow, signalling the end of the character.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 8
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- The 8250 UART takes care of all of the mechanics associated
- with the process described in the preceding paragraph. The
- UART will also detect and report error which may occur in
- the process. For example, if the parity bit is incorrect,
- the UART reports the fact. If too few or too many bits are
- received, the UART will report a framing error or overrun
- error respectively.
-
-
- Since the transmission of information may depend on complex
- interactions with another device, such as a modem or
- computer, the 8250 can also report on the status of the
- handshaking lines used to provide information about the handshaking ___________
- status of the connection with the other device. These
- signals are explained below.
-
-
-
-
- SIGNAL DESCRIPTIONS
-
- _______________________________________________________________
- | |
- CTS Clear To Send The other device will | |
- accept a transmission. | |
- DSR Data Set Ready The other device | |
- is enabled. | |
- RI Ring Indicator Usually reserved | |
- for modems only. The | |
- phone is ringing | |
- DCD Carrier Detect Usually reserved for | |
- modems. The other modem's | |
- carrier signal was | |
- detected. | |
- _______________________________________________________________ | |
-
- The header file for the LiteComm-TP ToolBox contains the
- various bit masks required for you to make use of the
- information provided by the 8250 UART.
-
-
-
- TOOLBOX NOTES AND WARNINGS TOOLBOX NOTES AND WARNINGS __________________________
-
-
- Before you can send or receive information on a serial port
- using the ToolBox, you must use the open function to enable
- the line. This function initializes the 8250 UART with the
- correct parameters, and introduces the UART into the
- interrupt structure of the PC. The ToolBox will detect, and
- report, any errors that you may make in selecting the port
- or specifying the initial parameters. The ToolBox cannot and
- will not detect an attempt to open a non-existent serial
- port.
-
- Page 9
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- The ToolBox interfaces directly with the interrupt structure
- of the PC. It is critical that, before exiting a program
- that has opened a serial port that the serial port is closed
- with the close function. If you exit your program without
- closing the port, you may cause your system to crash since
- the interrupt vector for the port might point to a section
- of memory that no longer contains the needed code to support
- the interrupt. As an alternative, Turbo PASCAL permits you
- to install one or more exit handlers (see the PASCAL
- reference). You may use this approach to provide a safe
- shutdown, but be follow carefully Borland's recommendations
- about implementing exit handlers.
-
-
- Failure of the open function can be the result of either
- improper parameters to the open function, or insufficient
- memory available to allocate the requested buffers and
- related control structures for the port. Memory for the
- transmit and receive buffers as well as the port control
- block are allocated from the heap. It is your responsibility
- to insure that adequate memory is available for this
- purpose.
-
-
- Unless you are very familiar with the interrupt structure of
- the PC, do not attempt to manipulate the interrupt enable
- flag outside of the ToolBox. The ToolBox sets and clears the
- interrupt enable flag at appropriate times and assumes that
- it has sole control over the flag.
-
-
- Unless otherwise specified, all library functions have been
- compiled with the default structure alignment, i.e. the
- structure alignment switch has not been used in creating the
- ToolBox library.
-
-
-
- LITECOMM-TP HISTORY LITECOMM-TP HISTORY ___________________
-
-
- VERSION 1.0 VERSION 1.0 ___________
-
-
- Version 1.0 is the first version of LiteComm-TP to be
- offered to the general public, although there have been 2
- Beta releases prior to Version 1.0 release. Version 1.0 is
- the functional equivalent of the original LiteComm ToolBox,
- version 2.5, except for YModem support which is still
- undergoing development for the C environment.
-
-
-
-
-
- Page 10
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- BEYOND COM2 BEYOND COM2 ___________
-
-
- THE TOOLBOX METHODOLOGY THE TOOLBOX METHODOLOGY _______________________
-
-
- In the design of the original PC, and in subsequent
- variations such as the PC/AT, there were only provision for
- two serial ports. Many manufacturers of add-in products,
- both serial ports and internal modems have added the
- capability to support 1 or more additional ports beyond the
- COM2 limit. Generally, this can cause problems in the PC
- since there is no room in the interrupt request scheme for
- additional levels of interrupts, and there are no designated
- interrupt vector for other additional ports.
-
-
- The ToolBox approach to resolving these issues is to permit
- the programmer a degree of control over the parameters that
- govern the interrupt mechanism for COM3 and COM4.
- Specifically, these parameters are: 1) the interrupt request
- (IRQ) bit that is used to mask the 8259 interrupt
- controller; 2) the interrupt vector number (not address) to
- which the port is attached; and 3) the base i/o register for
- the port itself. Of course, it is assumed that the port is
- based upon the 8250 UART or compatible device.
-
-
- Before you attempt to use COM3 and/or COM4, you must
- determine from the port's documentation, the appropriate
- values for these three parameters. As distributed, the
- ToolBox assumes the following:
-
-
-
- COM3 COM4 ____ ____
-
- IRQ Bit 4 3
- Vector # 0Ch 0Bh
- Base Reg 3E8h 2E8h
-
- You may change any or all of these values by using the
- PortChange function described below, but only before you
- open the port with CommOpen. Once the port has been opened,
- PortChange is ineffective, and PortChange will not work on
- COM1 or COM2.
-
-
-
- CAUTIONS CAUTIONS ________
-
-
-
-
-
- Page 11
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- There is an intimate relationship between the IRQ setting
- and the interrupt vector to which it relates. In the PC,
- this relationship is controlled, in part, by the 8259
- interrupt controller that is set during BIOS initialization.
-
-
- In brief, the BIOS settings for the PC (and most close
- compatibles) establish IRQ0 as being vector number 08h, and
- subsequent IRQ levels at increasing vector numbers. These
- vector numbers (or types in INTEL terms) act as a cpu-
- directed call table to locations in the lowest 1K of system
- memory. We can alter how the system responds to a given
- interrupt by replacing or changing the values in the
- associated vector position to point to a routine which we
- supply.
-
-
- COM3 and COM4 share two critical parameters with COM1 and
- COM2 respectively, the IRQ bit and the interrupt vector
- number. If you intend to use COM1 with COM3 or COM2 with
- COM4 simultaneously, you must change the BOTH the vector
- number and the IRQ for COM3 or COM4 to an unused or un-
- needed vector. The ability for your add-on ports to handle
- such a change is highly hardware dependent, so check your
- port's documentation carefully. Failure to do so will result
- in loss of data at best, and a system lockup at worst.
-
-
- Judging from the questions asked by some users of LiteComm-
- TP, there is evidently some mis-understanding about using
- ports beyond COM2, and how this all relates to your
- hardware. Before you can successfully use COM3 or COM4, you
- must consider the following:
-
-
-
- 1. Does the hardware permit a change to the base
- port and/or the interrupt vector to which the
- port responds. Some expansion cards will
- support changing one and not the other, giving
- rise to potential hardware conflicts and lost
- data.
-
-
- 2. Does the hardware permit re-assignment of the
- IRQ priority. Some expansion cards permit you to
- alter the IRQ priority, some won't. Suffice it
- to say from the previous discussion the any
- change to the IRQ priority must allow a
- corresponding change to the interrupt vector
- number. Without this capability, reprogramming
- of the 8259 chip would be required.
-
-
-
- Page 12
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- 3. In fact, many add-on cards permit this dual
- change simply by making a single switch or
- jumper setting. Unfortunately, the documentation
- for these cards generally assume that you are
- aware of the dual nature of the IRQ vector
- relationship, and may leave you with the
- impression that you are changing one and not the
- other. In most circumstances, this is not the
- case.
-
- The point to all of this is that LiteComm-TP can only
- provide as much support as the hardware permits, or is
- capable of responding to. If you wish to use other than the
- default base port, interrupt vector, or irq priority for
- COM3 or COM4, then your expansion card must be capable of
- supporting the new values; in other words, these values are
- all hardware-provided, and are recognized by the LiteComm-TP
- software. If your hardware does not permit changing a value,
- LiteComm-TP cannot improve the situation.
-
-
- We should, at this point, add one final caution about how
- interrupt priorities function, and their relationship to the
- irq bit the you may select. The standard PC permits 8
- interrupt priority levels, with the programmable timer
- having the highest priority, and the parallel printer port
- having the lowest priority. When an interrupt occurs, the
- interrupt controller (8259 chip) masks out all other
- interrupts from the priority of the interrupting device and
- all lower priority devices.
-
-
- As an aid to making COM3 and COM4 "fit", LiteComm-TP
- supports interrupt chaining for the COM3 and COM4 ports. If
- you use COM3 or COM4, when an interrupt occurs, the kernel
- will attempt to determine if the interrupt was caused by the
- supported port or from some other source.
-
-
- If the kernel determines that the supported port did not
- cause the interrupt, an automatic chain to the original
- interrupt handler for that interrupt level (IRQ level) will
- take place, allowing you to "patch in" or share the
- available interrupt vectors.
-
-
- If you intend to use other than the provided defaults, be
- sure that you understand the interrupt mechanism. The use of
- the automatic chaining described above can be particularly
- troublesome under some circumstances, resulting in loss of
- interrupts and, potentially, a system crash.
-
-
-
-
- Page 13
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- PACKAGE CONTENTS PACKAGE CONTENTS ________________
-
- Your distribution diskette contains several files that are
- important to you. All distribution diskettes, at a minimum,
- include the following files in the diskette's root
- directory:
-
-
- .fo off
- PSERIAL.NUM SERIAL NUMBER OF THIS COPY
- READ.ME LATEST INFORMATION ABOUT
- LITECOMM-TP
-
- LTCOMM.ARC SHAREWARE VERSION AND DOCUMENTATION
- FILES
-
- LTUNITS.ARC FULLY FUNCTIONAL UNIT FILES
-
-
- If you registered for the source code modules, the diskette
- contains a sub directory called SOURCE. The SOURCE
- directory contains 2 source code archives.
-
-
-
- LITECOMM-TP SOURCE CODE LTSRC.ARC
-
- XMODEM ENGINE SOURCE CODE LTXMSRC.ARC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 14
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- INSTALLATION INSTRUCTIONS INSTALLATION INSTRUCTIONS _________________________
-
- In the following discussion, we assume that your regular ________________________________________________________
- unit files are contained in a directory called \TP. \TP ___________________________________________________
-
-
- To install the unit files used with LiteComm-TP, perform the
- following steps:
-
-
-
- 1. CD \TP
-
-
- 2. ARC E A:LTUNITS
-
- Since Turbo PASCAL permits you the flexibility of having a
- separate sub-directory for units, you should execute the
- above instructions in whatever directory you use for units.
-
-
- If you are installing only the units, this completes the
- installation procedure. If you have registered for the
- package's source code, we recommend that you create a
- separate sub-directory. The example below assumes that you
- will use a directory named COMM to hold the LiteComm-TP and
- XModem source code modules. To install the LiteComm-TP
- source code, do the following:
-
-
-
- 1. MD \COMM
-
-
- 2. CD \COMM
-
-
- 3. ARC E A:LTSRC *.*
-
-
- 4. ARC E A:LTXMSRC *.*
-
- We strongly urge that you use the recommended approach in
- handling the source code to avoid naming conflicts that
- might arise.
-
-
-
- GENERAL NOTES GENERAL NOTES _____________
-
-
-
-
-
-
- Page 15
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- In the discussion of the various functions which follow, you
- should assume that any references to the 'port' variable
- refer to a variable or constant that may take on a value of
- from 1 to 4. No other values are acceptable, and will be
- rejected.
-
-
- While we feel that LiteComm-TP is written in the most
- efficient way possible, commensurate with good programming
- practice, we cannot be responsible for variations caused by
- hardware configurations or other factors beyond our control.
- LiteComm-TP has been tested, and is known to perform on, the
- IBM PC-AT and several compatible systems such as the Zenith
- and Wyse equivalents. LiteComm-TP has not been tested in
- environments in which other software, most significantly TSR
- (terminate and stay resident) modules exist. Some TSR
- programs that "steal" interrupts for their own purposes
- present an unfavorable environment to other programs that
- rely on the interrupt structure of the computer.
-
-
- Should you experience erratic behavior with LiteComm-TP in a
- TSR-type situation, try executing your application without
- the TSR module being present. If the problems you have
- experienced disappear, suspect the TSR module.
-
-
- Conversely, LiteComm-TP provides an excellent vehicle for
- supporting TSR programs that you may write. Since the
- package is fully reentrant, your only concern need be with
- those aspects of TSR programs are of normal concern, e.g.
- the non-reentrant nature of DOS. LiteComm-TP never uses DOS
- functions and may therefore be safely used in a TSR
- environment.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 16
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- PROCEDURE AND FUNCTION REFERENCE PROCEDURE AND FUNCTION REFERENCE ________________________________
-
- In the following pages, we provide the detailed information
- about each of the available LiteComm-TP ToolBox functions
- and procedures. Each definition includes, at a minimum, a
- summary of how the function or procedure is referenced, in
- which unit the function or procedure is found, a description
- of what the function or procedure does, and an indication of
- those values, if any, that might be returned.
-
-
- Where appropriate, we include additional documentation about
- the function. Some definitions include examples, in the
- sense of code fragments illustrating the function's usage.
- More importantly, some definitions include additional notes
- and warnings as well as references to other functions within
- the package.
-
-
- We have made every effort to insure that the documentation
- of the functions is complete and accurate. The style and
- manner of the documentation assumes that the reader is
- thoroughly familiar with the elements of C syntax and common
- conventions.
-
-
-
- UNIT USAGE UNIT USAGE __________
-
-
- To assist you in developing your own applications, you will
- need to know the following information.
-
-
- Unit Uses
-
- LctKrnl DOS
- LctSupp DOS, LctKrnl
- LctHayes DOS, LctSupp
- LcTimer DOS *
- LTXMKrnl DOS, LctSupp, LcTimer *
- LTXModem DOS, LctSupp, LTXMKrnl
- LcTimer *
-
- * This unit part of registered version only.
-
-
-
-
-
-
-
-
-
-
- Page 17
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- PortChange function LctKrnl PortChange function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Changes one or more of the critical parameters for port COM3
- or COM4.
-
-
-
- DECLARATION DECLARATION ___________
-
- Portchange(CPort:integer; NewBase:word; NewIrq,
- NewVector:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- This function must be used before the port is opened to be
- effective. To leave any of the parameters at its default
- value, make the corresponding entry 0. Note that vector is a
- vector number, not an address or pointer.
-
-
- The irq parameter should not be taken to be the irq
- (interrupt request number), but rather the irq mask. For
- example, the correct value for irq4 is NOT 4, but a byte in
- which bit 4, using INTEL's bit numbering, is set to a value
- of 1. Thus, to use irq priority 4 as the irq for either COM3
- or COM4, you would specify $10 as the value of irq when
- calling PortChange.
-
-
- If you intend to change the default irq settings, you MUST
- also make a corresponding change to the vector number. See
- the preceding section about using COM3 and COM4 for
- additional details. Failure to follow this rule may make the
- port appear to be non-functional.
-
-
- The PortChange function does NOT check to determine that you
- have provided both an IRQ mask AND a new vector number.
-
-
-
-
- Page 18
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- PortChange returns a value of TRUE if the change was
- successful, false otherwise.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 19
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- EXAMPLE EXAMPLE _______
-
- Var
- Newbase : word;
- Newirq : byte;
- NewVector : byte;
-
- Begin
- Newbase := $03E8;
- Newirq := $10;
- NewVector := $0C;
-
- if PortChange(3, Newbase, Newirq, NewVector)
- then
- Writeln('Port 3 Changed')
- else
- Writeln('Error changing Port 3');
- end;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 20
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- CommOpen function LctKrnl CommOpen function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Prepares the specified port for use by the other functions
-
-
-
- DECLARATION DECLARATION ___________
-
- CommOpen(CPort, Baud:integer; Parity:char; Databits,
- Stopbits, InSize, OutSize:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Opens the specified port for use and attaches an interrupt
- handler to DOS for the port. The function allocates buffers
- for input and output of the specified sizes, and sets the
- port to the parameters specified. The minimum value for
- InSize is 128; the minimum size for OutSize is 64. A port
- opened in this manner must be closed using CommClose before
- program termination to avoid the possibility of a system
- crash.
-
-
- The parameters passed to the function are discrete values,
- and must be drawn from the following lists:
-
-
- Baud: 110, 300, 600, 1200, 2400, 4800, 9600, 19200
- Parity: E, O, N, M, S
- E - Even
- O - Odd
- N - None
- M - Mark
- S - Space
- Databits: 5, 6, 7, 8
- StopBits: 1, 2
-
-
-
-
-
-
- Page 21
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- A return of TRUE indicates the port has been successfully
- opened and is ready for use. A return of FALSE indicates an
- error occurred, either as the result of an invalid
- parameter, or insufficient heap space available to allocate
- the buffers and control structures for the port.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 22
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- EXAMPLE EXAMPLE _______
-
- Var
- Baud, Databits, Stopbits : integer;
- Parity : char;
- Insize, Outsize : integer;
-
- begin
- Baud := 2400;
- Parity := 'E';
- Databits := 7;
- Stopbits := 1;
- Insize := 256;
- Outsize := 256;
-
- if CommOpen(1, Baud, Parity, Databits,
- Stopbits, Insize, Outsize) then
- Writeln('COM1 available for use')
- else
- Writeln('Error opening COM1');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 23
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- CommClose procedure LctKrnl CommClose procedure LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Closes a port that has been opened by the CommOpen function
-
-
-
- DECLARATION DECLARATION ___________
-
- CommClose(CPort:integer)
-
-
-
- REMARKS REMARKS _______
-
- This function is the companion to CommOpen and, in effect,
- performs the opposite action. CommClose detaches the kernel
- interrupt handler from the port, and reconnects the previous
- interrupt handler. CommClose also release dynamically
- allocated memory used for buffering and control structures.
- Failure to call CommClose before terminating a program may
- result in unexplained system crashes or hangs.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 24
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- CommSetup function LctKrnl CommSetup function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Provides the capability of changing the parameters for an
- open port, without breaking the connection or closing the
- port.
-
-
-
- DECLARATION DECLARATION ___________
-
- CommSetup(CPort, Baud:integer; Parity:char; Databits,
- Stopbits:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- The CommSetup function is a subset of the CommOpen function
- and the remarks made in the description of CommOpen apply.
- This function is useful if you wish to change the basic
- communication parameters of the specified port that has
- already been opened without CommClose'ing the port and
- breaking the connection.
-
-
-
- SEE ALSO SEE ALSO ________
-
- CommOpen
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 25
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- ValidatePort function LctKrnl ValidatePort function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Verifies that the specified port has been opened and returns
- a pointer to the Communications Control Block for the port.
-
-
-
- DECLARATION DECLARATION ___________
-
- ValidatePort(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- CCBPTR
-
-
-
- REMARKS REMARKS _______
-
- Used internally to validate that the port number specified
- is correct and has been opened with the CommOpen function.
- May be of use to you in writing certain applications that
- require access to the Communications Control Block. The
- function returns a value of NIL if the specified port is
- incorrect or not open.
-
-
-
- EXAMPLE EXAMPLE _______
-
- if ValidatePort(2) <> NIL then
- Writeln('The port has been opened')
- else
- Writeln('The port is nor presently open');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 26
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- BytesInInput function LctSupp BytesInInput function LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Returns the number of characters currently available in the
- input buffer (BytesInInput) or the number of untransmitted
- characters in the output buffer (ByteInOutput).
-
-
-
- DECLARATION DECLARATION ___________
-
- BytesInInput(CPort:integer)
- BytesInOutput(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- integer
-
-
-
- REMARKS REMARKS _______
-
- May be used to determine the number of characters currently
- in the input (BytesInInput) or output (BytesInOutput)
- buffers for the port. In the event of an error (bad port), a
- value of -1 is returned.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 27
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- ModemStatus function LctKrnl ModemStatus function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Returns the last know status of the modem control lines for
- the specified port.
-
-
-
- DECLARATION DECLARATION ___________
-
- ModemStatus(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- byte
-
-
-
- REMARKS REMARKS _______
-
- Use this function to determine the last known state of the
- modem-supplied handshake signals. These may be tested using
- the values included in the unit, using PASCAL's bitwise AND
- operator. NOTE: You should be aware that the handshake
- signals returned are reset once this function is called.
- Subsequent calls to this function will return to last known
- value for all signals. The signals which are tracked are
- CTS, DSR, RI, and DCD.
-
-
- To determine which signals, if any, have changed use the
- DeltaXXX bits returned. For example, if CTS has changed, the
- DeltaCTS bit will be set. The actual CTS value (on or off)
- will be found in the CTS bit of the returned byte.
-
-
- In the event of an error, a byte of $00 is returned.
-
-
-
- EXAMPLE EXAMPLE _______
-
-
-
-
-
-
-
-
- Page 28
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- Var
- CStat : byte;
-
- begin
- CStat := ModemStatus(1);
- if CStat and DeltaCTS = DeltaCTS then
- if CStat and CTS <> CTS then
- Writeln('The connection is broken');
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 29
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- ErrorStatus function LctKrnl ErrorStatus function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Return the last known error status for the specified port.
-
-
-
- DECLARATION DECLARATION ___________
-
- ErrorStatus(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- byte
-
-
-
- REMARKS REMARKS _______
-
- Returns the last known state of the serial port's error
- status bits, encoded in a byte. These may be tested using
- the constants defined in the unit in conjunction with
- PASCAL's bitwise AND operator. The applicable values that
- may be checked are OverRun, BadParity, BadFrame, and
- BreakDet. In the event of an error, a byte of $00 is
- returned.
-
-
- Once the error status bits have been read in this fashion,
- they are reset to $00, and will remain so until the next
- error occurs. Since this process happens asynchronously, it
- is not possible for your application to determine which
- character created the error, only that the error occurred.
-
-
-
- EXAMPLE EXAMPLE _______
-
- Var
- EStat : byte;
-
- begin
- EStat := ErrorStatus(2);
- if EStat and BreakDet = BreakDet then
- Writeln('Break Signal detected on Port 2');
-
-
-
-
- Page 30
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- SetModemSignals function LctKrnl SetModemSignals function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Allows the programmer to set the individual modem control
- lines for the specified port.
-
-
-
- DECLARATION DECLARATION ___________
-
- SetModemSignals(CPort:integer; NewSet:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Set one or more of the modem control signals. Because of the
- need to always have OUT2 set for interrupt support, the
- function always provides the correct setting for this bit.
-
-
- The value of NewSet is bitwise OR'ed with the current set of
- values to produce a new modem control setting. The value of
- NewSet DOES NOT replace the current values. Use the
- constants supplied in the unit to obtain the correct values.
- These include DTR and RTS.
-
-
-
- EXAMPLE EXAMPLE _______
-
- begin
- if SetModemSignals(1, (DTR and RTS)) then
- Writeln('Port is ready to transmit')
- else
- Writeln('Unable to set modem signals');
-
-
- SEE ALSO SEE ALSO ________
- ClearModemSignals, FlipModemSignals
-
-
-
-
-
- Page 31
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- ClearModemSignals function LctKrnl ClearModemSignals function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Allows the programmer to clear (reset) the individual modem
- control lines for the specified port.
-
-
-
- DECLARATION DECLARATION ___________
-
- ClearModemSignals(CPort:integer; NewSet:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Clears (resets) one or more of the modem control signals.
- Because of the need to always have OUT2 set for interrupt
- support, the function always provides the correct setting
- for this bit.
-
-
- The compliment of NewSet is bitwise AND'ed with the current
- set of values to produce a new modem control setting. The
- value of NewSet DOES NOT replace the current values. Use the
- constants supplied in the unit to obtain the correct values.
- These include DTR and RTS.
-
-
-
- EXAMPLE EXAMPLE _______
-
- begin
- if ClearModemSignals(1, RTS) then
- Writeln('RTS for Port 1 has been dropped')
- else
- Writeln('Unable to clear RTS');
-
-
- SEE ALSO SEE ALSO ________
- SetModemSignals, FlipModemSignals
-
-
-
-
- Page 32
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- FlipModemSignals function LctKrnl FlipModemSignals function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Allows the programmer to compliment(toggle) the individual
- modem control lines for the specified port.
-
-
-
- DECLARATION DECLARATION ___________
-
- FlipModemSignals(CPort:integer; NewSet:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Complements(toggles) one or more of the modem control
- signals. Because of the need to always have OUT2 set for
- interrupt support, the function always provides the correct
- setting for this bit.
-
-
- The value of NewSet is bitwise XOR'ed with the current set
- of values to produce a new modem control setting. The value
- of NewSet DOES NOT replace the current values. Use the
- constants supplied in the unit to obtain the correct values.
- These include DTR and RTS.
-
-
-
- EXAMPLE EXAMPLE _______
-
- begin
- if FlipModemSignals(1, RTS) then
- Writeln('RTS for Port 1 has been changed')
- else
- Writeln('Unable to change RTS');
-
-
- SEE ALSO SEE ALSO ________
- SetModemSignals, ClearModemSignals
-
-
-
-
- Page 33
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- EnableXon function LctKrnl EnableXon function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
-
- Enable or disable the semi-automatic flow control features
- of LiteComm-TP
-
-
-
- DECLARATION DECLARATION ___________
-
- EnableXon(CPort:integer; XonFlag:boolean)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean;
-
-
-
- DESCRIPTION DESCRIPTION ___________
-
- If XonFlag is TRUE, turns on semi-automatic XON-XOFF flow
- control function. If XonFlag is FALSE (the default setting),
- automatic flow control is disabled. When enabled, the kernel
- will automatically transmit an XOFF if and when the input
- buffer is approximately 2/3 full and will automatically
- recognize an XOFF sent by the companion system. If the
- companion system transmits an XOFF, the kernel will refuse
- to send any characters until the condition is cleared.
-
-
- It is the programmer's responsibility to transmit XON when
- conditions permit. See the XoffSent function to tell if an
- automatic XOFF has been sent by the kernel. See the XoffRecd
- function to determine if the kernel has detected an XOFF.
-
-
- If you intended to implement a protocol that might include
- the XON-XOFF characters, be sure to disable the automatic
- flow control. Failure to do so may result in a system hang.
-
-
-
- SEE ALSO SEE ALSO ________
-
- XoffRecd, XoffRecd
-
-
-
- Page 34
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- XoffRecd function LctKrnl XoffRecd function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Reports whether or not the kernel has detected an XOFF from
- the companion system
-
-
-
- DECLARATION DECLARATION ___________
-
- XoffRecd(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Returns TRUE if an XOFF has been received, FALSE otherwise.
- If an XOFF has been received, the port's flag will be reset,
- and transmission to the companion system will be permitted.
- If an XON is received from the companion system, the port's
- flag will also be reset, permitting further transmissions to
- occur. Be aware that if the companion system never sends an
- XON after sending an XOFF, a possible race condition may race ____
- occur, resulting in a system hang.
-
-
-
- SEE ALSO SEE ALSO ________
-
- EnableXon, XoffSent
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 35
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- XoffSent function LctKrnl XoffSent function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Reports whether or not the kernel has automatically sent an
- XOFF to the companion system.
-
-
-
- DECLARATION DECLARATION ___________
-
- XoffSent(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Returns TRUE if the kernel has sent an XOFF to the companion
- system, FALSE otherwise. If an XOFF has been sent, the
- port's flag will be reset. You must send an XON character to
- the companion system to permit transmissions to proceed.
-
-
-
- SEE ALSO SEE ALSO ________
-
- EnableXon, XoffRecd
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 36
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- LctGet function LctSupp LctGet function LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Returns an available character from the ports input buffer.
-
-
-
- DECLARATION DECLARATION ___________
-
- LctGet(CPort:integer; var Ch:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Places the next available character in the input buffer for
- the port in Ch. The function returns a value of TRUE if
- there is a character available, FALSE if there is no
- character available or on an error. The contents of Ch are
- undefined when the return is FALSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 37
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- LctPeek function LctSupp LctPeek function LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Permits you to look at the next character in the ports input
- buffer without removing if from the buffer.
-
-
-
- DECLARATION DECLARATION ___________
-
- LctPeek(CPort:integer; var Ch:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Places the next available character in the input buffer for
- the specified port into the Ch variable, but does not remove
- the character from the buffer. This allows the application
- to look-ahead by one character in a non-destructive fashion. look-ahead __________
- Returns FALSE if the port is not active, or if there are no
- characters in the port's buffer, TRUE otherwise. The
- contents of Ch are undefined when the result is FALSE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 38
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- LctPut function LctSupp LctPut function LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Places a character in the port's transmit buffer to be sent
- when the port is ready.
-
-
-
- DECLARATION DECLARATION ___________
-
- LctPut(CPort:integer; Ch:byte)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- Returns TRUE if successful. Note that this does not
- guarantee that the character has been sent, only that no
- errors were detected. Returns FALSE if the port is not
- active, or if there no room in the port's buffer.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 39
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- GetStream function LctSupp GetStream function LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Gets a stream of N characters from the port's
- input buffer
-
-
- DECLARATION DECLARATION ___________
-
- GetStream(CPort:integer; var Buff; BCnt:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- integer
-
-
-
- REMARKS REMARKS _______
-
- Reads a stream of, at most, BCnt characters from the serial
- port's input buffer into the Buff array. Returns the count
- of characters actually transferred, or -1 if an error
- occurs. NOTE that Buff is an array of characters or bytes,
- not a string, although you may treat a string variable like
- an array, as shown below.
-
-
-
- EXAMPLE EXAMPLE _______
-
- Type
- MaxStr = string[256];
-
- Var
- StrBuff : MaxStr;
- RecdLen : integer;
-
- begin
- RecdLen := GetStream(2, StrBuff[1], 256);
- if RecdLen <= 0 then { error or no char }
- StrBuff[0] := 0
- else
- StrBuff[0] := Chr(RecdLen);
- end;
-
-
-
-
-
- Page 40
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- PutStream function LctSupp PutStream function LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Places a stream of, at most, N characters in the port's
- transmit buffer.
-
-
-
- DECLARATION DECLARATION ___________
-
- PutStream(CPort:integer; var Buff; BCnt:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- integer
-
-
-
- REMARKS REMARKS _______
-
- Buff is an array of character or byte, not a string,
- although it is possible to specify a string variable, using
- the same approach as outlined for the GetStream function.
- PutStream returns the number of characters actually placed
- into the buffer. Note that this does not guarantee that the
- characters have been sent. A value of 0 will be returned if
- any error occurs, or if there no room in the port's buffer.
-
-
-
- SEE ALSO SEE ALSO ________
-
- PutStream
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 41
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- Buffer Flushing functions LctSupp Buffer Flushing functions LctSupp
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Provides several high level buffer management functions to
- control the contents of the port's transmit and receive
- buffers
-
-
-
- DELCLARATION DELCLARATION ____________
-
- function PurgeTxBuff(CPort:integer)
-
- function PurgeRxBuff(CPort:integer)
-
- procedure FlushUntilMatch(CPort:integer; Ch:byte)
-
- procedure FlushNBytes(CPort:integer; N:integer);
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean for PurgeTxBuff, PurgeRxBuff
-
-
-
- REMARKS REMARKS _______
-
- The PurgeRxBuff and PurgeTxBuff functions remove all
- characters from the port's receive and transmit buffers
- respectively and discard them; untransmitted characters in
- the transmit buffer are NEVER sent; unprocessed characters
- in the receive buffer are lost. Both functions return a
- value of TRUE if no errors were encountered, FALSE
- otherwise. An empty buffer is NOT considered an error.
-
-
- The FlushUntilMatch procedure will continually dispose of
- received characters until the character Ch is received. The
- procedure will return when the character Ch is detected, or
- when there are no more characters in the port's input
- buffer.
-
-
- The FlushNBytes procedure removes, at most, N characters
- from the port's receive buffer.
-
-
-
-
- Page 42
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- SendBreak function LctKrnl SendBreak function LctKrnl
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Send a true Break signal
-
-
-
- DECLARATION DECLARATION ___________
-
- SendBreak(CPort:integer)
-
-
-
- RESULT TYPE RESULT TYPE ___________
-
- boolean
-
-
-
- REMARKS REMARKS _______
-
- SendBreak generates a BREAK signal using a particular
- characteristic of the 8250 UART to generate an accurate
- BREAK at any baud rate. BREAKS generated in this manner are
- timed based upon the baud rate at which the 8250 is
- currently initialized. This function may or may not work
- correctly with other than the actual 8250 UART.
-
-
- Returns TRUE if successful. Returns FALSE if an error is
- detected.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 43
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
- _______________________________________________________________ _______________________________________________________________
-
- HAYES MODEM FUNCTIONS LctHayes HAYES MODEM FUNCTIONS LctHayes
- _______________________________________________________________ _______________________________________________________________
-
-
- FUNCTION FUNCTION ________
-
- Provides support for various aspects of modems the support
- the Hayes(tm) command set.
-
-
-
- DECLARATIONS DECLARATIONS ____________
-
- CONST
- NUMRES = 0 { numeric result codes}
- WRDRES = 1 { word result codes }
- SPKOFF = 0 { speaker off }
- SPKON = 1 { speaker on until CD }
- SPKSPC = 2 { speaker always on }
- ONHK = 0 { go on-hook (hang up) }
- OFFHK = 1 { go off-hook (lift receiver) }
- OFFHKS = 2 { go off-hook, don't close relay }
- BASIC = 0 { basic result set }
- EXSET1 = 1 { extended results, set 1 }
- EXSET3 = 2 { extended results, set 3 }
- EXSET4 = 3 { extended results, set 4 }
-
-
-
- TYPE
- TelNumStr = string[20];
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 44
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- procedure SetType(NType : byte)
-
- procedure SetSet(NSet : byte)
-
- function RetType : byte
-
- function RetSet : byte
-
- function ModemCodesOn(CPort : integer):boolean
-
- function ModemCodesOff(CPort : integer):boolean
-
- function ModemWordResponse(CPort : integer):boolean
-
- function ModemDigitResponse(CPort : integer):boolean
-
- function RepeatModemCommand(CPort : integer):boolean
-
- function ModemSpeaker(CPort : integer; Mode : byte):boolean
-
- function SetModemRegister(CPort, Reg, NValue : integer) :
- boolean
-
- function GetModemRegister(CPort, Reg, NValue : integer) :
- boolean
-
- function ModemHalfDuplex(CPort : integer) : boolean
-
- function ModemFullDuplex(CPort : integer) : boolean
-
- function ModemEchoCmd(CPort : integer) : boolean
-
- function ModemNoEchoCmd(CPort : integer) : boolean
-
- function ModemHookMode(CPort : integer; HMode : byte) :
- boolean
-
- function ModemCarrierOn(CPort : integer) : boolean
-
- function ModemCarrierOff(CPort : integer) : boolean
-
- function ModemWordResponse(CPort : integer):boolean
-
- function ModemDigitResponse(CPort : integer):boolean
-
- function RepeatModemCommand(CPort : integer):boolean
-
- function ModemSpeaker(CPort : integer; Mode : byte):boolean
-
- function SetModemRegister(CPort, Reg, NValue : integer) :
- boolean
-
- function GetModemRegister(CPort, Reg, NValue : integer) :
- boolean
-
- Page 45
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- function ModemHalfDuplex(CPort : integer) : boolean
-
- function ModemFullDuplex(CPort : integer) : boolean
-
- function ModemEchoCmd(CPort : integer) : boolean
-
- function ModemNoEchoCmd(CPort : integer) : boolean
-
- function ModemHookMode(CPort : integer; HMode : byte) :
- boolean
-
- function ModemCarrierOn(CPort : integer) : boolean
-
- function ModemCarrierOff(CPort : integer) : boolean
-
- function ModemCodeSet(CPort : integer; NewSet : byte) :
- boolean
-
- function ModemPulse(CPort : integer) : boolean
-
- function ModemTone(CPort : integer) : boolean
-
- function ModemDial(CPort : integer; TelNo : TelNumStr) :
- boolean
-
-
-
- REMARKS REMARKS _______
-
- The ModemCodeSet function allows you to change the set of
- codes that are returned by the modem when an action is
- specified.
-
-
- ModemDial instructs the modem to dial the number contained
- in TelNo. Do not include the dialing (ATD) prefix, or the
- trailing <CR>. These are provided by the function. You may
- include non-numeric characters as the contents of TelNo are
- not checked. The dialing is done in the last known, pulse or
- tone, mode. If you use the MpdemPulse or ModemTone
- functions, then dialing will be done in the mode that was
- last correctly enabled. If you have not exercised these
- functions, then dialing occurs in the modems default or
- power-up mode.
-
-
- The ModemHalfDuplex and ModemFullDuplex functions place the
- modem into local echo and remote echo modes respectively.
-
-
-
-
-
-
-
- Page 46
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- The GetModemRegister function requests that the modem return
- the current value of S-register Reg. Reg must be in the
- range 0 to 13. Use the GetStream, or similar function, to
- retrieve the modem's response. Specifying a register outside
- the 0 to 13 range will cause a return of FALSE.
-
-
- SetModemRegister is the companion to GetModemRegister, with
- the same restrictions. Sets the S-register Reg to the value
- contained in NValue. If NValue contains -1, then the
- register is reset to its default (power-up) value. The
- function checks the value to be certain that it is within
- the limits specified for the particular register, and
- returns a value of FALSE if the value is outside the
- predefined limits.
-
-
- ModemCarrierOff enables modem carrier detect, but disables
- the modems carrier signal. The ModemCarrierOn companion
- enables both carrier detect and the modems carrier signal.
- When ModemCarrierOff is used the modem will receive data but
- will be unable to send data.
-
-
- The ModemNoEchoCmd and ModemEchoCmd functions determine
- whether commands sent to the modem are echoed back to the
- sending program. With echo turned off, the modem will
- continue to accept commands, but will not try to redisplay
- the command's characters.
-
-
- ModemHookMode allows you to control the current status of
- the modem's telephone line connection. See your modem's
- documentation and the above constants for additional
- information.
-
-
- The ModemRepeatCommand function instructs the modem to
- repeat the last command sequence executed. Generally, this
- function is of greatest value in re-dialing numbers that are
- busy, although its use is not restricted to that.
-
-
- The way in which your modem responds to commands is
- determined, in part, by the ModemWordResponse and
- ModemDigitResponse functions. If you call ModemWordResponse,
- then modem responses use the English language response
- codes, e.g. CONNECT or OK. Calling ModemDigitResponse
- instructs the modem to respond with code numbers only from
- the currently selected response set, see the ModemCodeSet
- function above.
-
-
-
-
- Page 47
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- You may use the functions ModemCodesOn and ModemCodesOff to
- specify whether you want your modem to send back response
- codes when it receives a command string. In a sense, these
- act as companions to the EchoCmd functions above.
-
-
- Use the ModemSpeaker function to control the modem's
- internal speaker, if it has one. See the above constants for
- the applicable codes.
-
-
- The RetSet and RetType functions return, respectively, the
- last known command set (ModemCodeSet) and last known result
- type (ModemWordResponse, ModemDigitResponse). The RetSet and
- RetType functions are only of value when used in
- conjunction with the companion functions.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 48
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
- GENERAL REMARKS GENERAL REMARKS _______________
-
-
- Several considerations are in order if you intend to use the
- Hayes ToolBox functions.
-
-
-
- 1. You are responsible for checking the return
- codes from the modem once you have given modem a
- command. To make the task easier, we suggest
- that you turn OFF command echo (so that you
- don't have to worry about separating commands
- from responses) and turn ON numeric responses
- (to make the interpretation of result codes
- easier and faster).
-
-
- 2. Be sure that you allow adequate time between
- commands for the modem to process the command
- and respond. Failure to observe this rule may
- result in commands being misinterpreted or
- "lost". You can monitor the number of characters
- in the receive buffer to help you with the
- timing. Or alternatively, check the response
- after each command. The latter approach is more
- in line with what we believe to be good
- programming practice.
-
-
- RETURN VALUES RETURN VALUES _____________
-
- All functions return a value of FALSE if a port or other
- error is detected, TRUE otherwise.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 49
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
- LITECOMM-TP (tm) COMMUNICATIONS TOOLBOX
- for Microsoft, Datalight and Turbo C
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 50
- CopyRight (c) 1988 Information Technology, Ltd.
-
-
-
-
-
-
-
- LITECOMM-TP REGISTRATION FORM LITECOMM-TP REGISTRATION FORM _____________________________
-
- Please complete the following information. Note that the
- prices below are for a single-use registration only. Please
- contact us directly for site licensing.
-
- Mail to:
- Information Technology
- PO Box 554
- Coventry, RI 02816
- Telephone Orders or Information (401) 826-2223
- ┌──────────────────────────────────────────────────────────┐
- │ SHIP TO: │
- │ Name ________________________________________ │
- │ │
- │ Company ________________________________________ │
- │ │
- │ Street ________________________________________ │
- │ │
- │ ________________________________________ │
- │ │
- │ City ___________________ State __ Zip _____ │
- │ │
- │ Telephone _______________________ │
- ├─────┬──────────┬───────────────────┬─────────────────────┤
- │ │ │ │ │
- │ QTY │ │ REGISTRATION TYPE │ REGISTRATION FEE │
- │ │ │ │ │
- ├─────┼──────────┼───────────────────┼─────────────────────┤
- │ │ │ │ │
- │ │ BOTH │ LIBRARIES @ $30 │ │
- │ │ INCLUDE │ │ │
- ├─────┼ ┼───────────────────┼─────────────────────┤
- │ │ PRINTED │ │ │
- │ │ MANUAL │ LIBRARIES AND │ │
- │ │ │ SOURCE @ $55 │ │
- │ │ │ │ │
- ├─────┼──────────┼───────────────────┼─────────────────────┤
- │ │ │ │ │
- │ │ │ RI Sales Tax 6% │ │
- │ │ │ │ │
- └─────┴──────────┴───────────────────┴─────────────────────┘
- Method of Payment (Check, Mastercard, Visa) _____________
-
- Credit Card Number __________________________
-
- Expiration Date __________________________
-
- Name as it appears on card ___________________________
-
- Signature for MC/VISA ________________________________
-
- All MasterCard/Visa orders must include a telephone number,
-
- We regret that we cannot accept COD orders
- _______________________________________________________________
- (office use only)
- Date Received ______________ Date Sent _____________
- Version ______________ Serial Number _______________
-
-
-
-