home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-08-01 | 66.9 KB | 1,742 lines |
-
-
- Personal Communications Library
-
- For the C Language
-
-
- (PCL4C)
-
-
-
- USERS MANUAL
-
-
-
-
-
- Version 3.3
-
- Aug 3, 1992
-
-
-
-
- This software is provided as-is.
- There are no warranties, expressed or implied.
-
-
-
-
- Copyright (C) 1992
- All rights reserved
-
-
-
- MarshallSoft Computing, Inc.
- Post Office Box 4543
- Huntsville AL 35815
-
- Voice 205-881-4630
- FAX 205-881-4630
- BBS 205-880-9748
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 1
- C O N T E N T S
-
-
-
-
-
- Chapter Page
-
- 1.0 Introduction................................................3
- 1.1 User Support............................................4
- 1.2 A Typical Application...................................5
- 1.3 Installation............................................6
- 2.0 Library Organization........................................7
- 2.1 Initialization & Termination............................7
- 2.2 Configuration...........................................7
- 2.3 Modem Control & Status..................................8
- 2.4 Serial I/O..............................................8
- 2.5 Error Detection.........................................9
- 2.6 General Support.........................................9
- 3.0 Library Overview...........................................10
- 3.1 Memory Models..........................................10
- 3.2 Compilers Supported....................................11
- 3.3 Using the Library......................................12
- 3.4 Example Programs.......................................12
- 3.5 Compiling & Linking....................................13
- 4.0 Talking to Your Modem......................................14
- 4.1 Modem Standards........................................14
- 4.2 Flow Control...........................................15
- 4.3 Modem Initialization...................................16
- 5.0 Problems...................................................17
- 6.0 Serial Communications......................................18
- 6.1 Communications Basics..................................18
- 6.2 Standard Port Addresses................................19
- 6.3 RS232 Signals..........................................20
- 6.4 National INS8250, INS16450, and INS16550 UARTs.........21
- 6.5 Register Summary.......................................22
- 7.0 Terminal Emulator Program (TERM)...........................24
- 8.0 Legal Issues...............................................25
- 8.1 Registration...........................................25
- 8.2 License................................................26
- 8.3 Warranty...............................................26
- 9.0 Summary....................................................27
- 9.1 Revision History.......................................27
- 9.2 Function Summary.......................................28
- 9.3 Further Reading........................................28
- 10.0 Other MarshallSoft Computing products......................29
- 10.1 The Personal Communications Library for Pascal........29
- 10.2 The Personal Protocol Library for C...................29
- 10.3 The Personal Protocol Library for Pascal..............29
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 2
- 1.0 Introduction
-
-
- The Personal Communications Library for the C Language (PCL4C) is
- an asynchronous communications library designed for experienced
- software developers programming in C. Four compilers are
- supported: Microsoft Optimizing C, Microsoft Quick C, Borland
- Turbo C, and MIX Power C. An IBM PC/XT/AT or compatible is
- required. The PCL features:
-
- o SMALL, COMPACT, MEDIUM & LARGE memory models.
- o 32 communications and support functions.
- o Support for the high performance INS16550 UART.
- o Supports hardware (RTS/CTS) flow control.
- o Interrupt driven receiver.
- o Supports 300 baud to 115,200 baud.
- o Supports COM1, COM2, COM3, and COM4.
- o Adjustable receive queues from 8 bytes to 32 KB.
- o Control-BREAK error exit.
- o 17 communications error conditions trapped.
- o Allows 2 ports to run concurrently.
- o Complete modem control & status.
- o Written in assembly language for small size & high speed.
- o Terminal program featuring XMODEM, YMODEM, & YMODEM-G.
-
- Why should you buy PCL4C ? I can give you several good reasons.
-
- COMPLETE - PCL4C is complete since it provides absolute control
- of the serial ports (including the high performance
- INS16550).
-
- COMPACT - PCL4C is very compact at less than 6 KB. Your
- application doesn't carry a lot of excess code.
-
- FAST - PCL4C is fast since it will run at 38400 baud on
- even slow 8088 PCs (4.77 MHZ) and at 115200 baud on
- most everything else.
-
- SUPPORT - If you get stuck, you talk to the programmer that
- wrote the code, not a person hired to answer the
- phone.
-
- BBS - A BBS is available (2400 baud N81) in order to
- provide immediate support as necessary.
-
- NEWSLETTER - One year subscription to the MSC newsletter
- discusses communications problems and solutions
- (published quarterly).
-
- PRICE - You get PCL4C for a very reasonable price !
-
- UPGRADES - Once you buy PCL4C, you can always update to the most
- recent version for little more than the cost of
- sending it out to you.
-
-
-
-
-
- PCL4C Users Manual Page 3
- 1.1 User Support
-
- We want you to be successful in developing your applications using
- PCL4C! We depend on our customers to let us know what they need
- in a communications library. This means we are committed to
- providing the best communications library that we can. If you have
- any suggestions or comments, please let us know.
-
- If you are having a problem using PCL4C, call us at 205-881-4630
- between 5 PM and 9 PM CST Monday through Saturday, or FAX us at
- the same telephone number at any time (24 hours). You can also
- call at other times and leave a message, and call back later for a
- reply.
-
- You may also call our User Support BBS (2400 baud, no parity, 8
- data bits, 1 stop bit) at 205-880-9748 and leave a message
- (address it to the SYSOP). We will usually have a reply ready for
- you within 24 hours.
-
- The BBS is available 24 hours per day except at 2 PM Sundays for
- maintenanace. All files are in standard ZIP format. The BBS will
- contain the latest shareware version of all MarshallSoft products
- as well as related files such as:
-
- BUGS.ZIP -- Bug report.
- NEWS.ZIP -- Latest news regarding our products.
-
- The MarshallSoft Computing, Inc. newsletter "Comm Talk" is
- published quarterly. It discusses various communications problems
- and solutions using PCL4C as well as related information.
- Registered users receive a one year complimentary subscription
- when first registering and for each update purchased.
-
- Of course, you can always write to us. You should receive a reply
- within a week or so.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 4
- 1.2 A Typical Application
-
-
- In general, there are two classes of applications that use a
- communications library like PCL4C -- those that use a modem to
- connect to the outside world and those that connect directly to a
- peripheral device. In either case, a typical application program
- using PCL4C might look like the following code outline:
-
-
-
- *****************************************************
- * #include "pcl4c.h" *
- * *
- * char Buffer[1024]; *
- * main() *
- * {/* initialize serial comm system */ *
- * SioRxBuf(Port,Buffer,Size1024); *
- * SioParms(Port,NoParity,OneStopBit,WordLength8); *
- * SioReset(Port,Baud2400); *
- * *
- * ...application code... *
- * *
- * /* terminate serial comm system */ *
- * SioDone(Port); *
- * } *
- *****************************************************
-
-
-
- In the above example, SioRxBuf is called to set up the a 1024 byte
- receive buffer; SioParms is called to set up the parity, stop bit
- count, and word length; SioReset is called to set the baud rate to
- 2400 and reset the UART (Univeral Asynchronous Receiver /
- Transmitter).
-
- Before leaving your application, SioDone is called to restore the
- prior state of the serial communications system.
-
- If you are using a modem, you also need to be concerned about
- initializing your modem correctly and handling any required flow
- control. Refer to the "Talking to Your Modem" chapter for detailed
- information.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 5
- 1.3 Installation
-
-
- (1) Before installation of PCL4C , your C compiler should already
- be installed on your system and tested. If you are not familiar
- with makefiles, refer to your compiler manual. If you are using
- the interactive environment for Quick C or Turbo C, be sure to
- compile with the memory model corresponding to the PCL4C library
- used. Examine the file "FILES.LST" for a list of all the
- distribution files.
-
- (2) Make a backup copy of your distribution disk. Put your
- original distribution disk in a safe place.
-
- (3) Create a work directory on your work disk (normally your
- harddisk). For example, to create a work directory named PCL4C, we
- first log onto the work disk and then type:
-
- MKDIR PCL4C
-
- (4) Copy all the files from your backup copy of the distribution
- disk to your work directory. For example, to copy from the A:
- drive to your work directory, we type:
-
- CD PCL4C
- COPY A:*.*
-
- (5) [OPTIONAL] Delete the makefiles that you won't need. For
- example, if you use the Microsoft C compiler, then you want to
- keep all makefiles ending *._M_ but can delete those for Turbo C
- (*._T_), Quick C (*._Q_), and MIX Power C (X_*.BAT). You may also
- delete any libraries that you won't need.
-
- (6) Compile SIMPLE.C and link with the appropriate PCL4C library
- (PCL4C_S.LIB for all but Power C which must use PCL4C_S.MIX).
- Makefiles (or project files) are provided for each of the
- supported compilers.
-
- a) Microsoft C: Type MAKE SIMPLE._M_
-
- b) Microsoft Quick C: Type MAKE SIMPLE._Q_
-
- c) Borland Turbo C: Type MAKE -FSIMPLE._T_
-
- d) MIX Power C: Type X_SIMPLE
-
- SIMPLE.C should compile without any problems as all example code
- has been tested with each of the supported compilers.
-
- (7) The recommended way to test SIMPLE is to run it on two
- computers connected by a null modem cable. Whatever is typed on
- one computer should be displayed on the other.
-
-
-
-
-
-
-
- PCL4C Users Manual Page 6
- 2.0 Library Organization
-
-
- The PCL4C library is organized into six categories of functions.
- Refer to the PCL Reference Manual (PCL4C.REF) for details on
- individual functions.
-
-
- 2.1 Initialization & Termination
-
-
- There are seven functions in the initialization and termination
- category. Together, SioParms, SioFIFO, SioRxBuf, and SioReset
- initialize your serial communications system. Your application
- must call SioParms and SioRxBuf before calling SioReset, and
- SioReset must be called before any serial I/O processing can be
- done.
-
- After initialization, SioParms and SioBaud can be called again to
- change the communications parameters without resetting the serial
- port. SioFlow can be called to enable hardware flow control.
-
- Before exiting from your application, SioDone must be called.
- Failure to call SioDone can crash your system later.
-
- SioRxBuf -- Sets up receive buffer.
- SioFIFO -- Sets the interrupt level for the INS16550.
- SioParms -- Sets parity, stop bits, and word length.
- SioReset -- Initialize a serial port for processing.
- SioDone -- Terminates further serial processing.
- SioBaud -- Sets the baud rate of the selected port.
- SioFlow -- Enables / disables flow control.
-
- 2.2 Configuration
-
-
- There are two functions in the configuration category. SioUART is
- used to change the UART base address for a communications port at
- a non-standard address, while SioIRQ is used to assign a
- nonstandard IRQ line to a port. (See the chapter IBM
- Communications Ports for more details on standard UART addresses
- and IRQ lines).
-
- The configuration category functions should be called before
- calling SioReset in order to have any effect. There is no "error
- checking" done, so be very careful in using these functions.
-
- SioUART -- Sets the UART base address.
- SioIRQ -- Assigns an IRQ line to a port.
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 7
- 2.3 Modem Control & Status
-
-
- There are seven functions in the modem control and status
- category which provide your application with complete control over
- the status and control bits of your modem.
-
- There are two modem control bits, "Data Terminal Ready" (DTR) and
- "Request To Send" (RTS). These bits can be read, set, or cleared
- by SioDTR and SioRTS.
-
- There are four modem status bits, "Data Set Ready" (DSR), "Clear
- To Send" (CTS), "Ring Indicator" (RI), and "Data Carrier Detect"
- (DCD). SioModem can read any of the modem status bits. SioDSR,
- SioCTS, SioRI, and SioDCD can only read their respective modem
- status bit.
-
- Refer to the chapter entitled "RS232 Signals" for a discussion of
- each of the control and status bits.
-
- SioDTR -- Set, clear, or read the Data Terminal Ready (DTR) bit.
- SioRTS -- Sets, clears, or reads the Request to Send (RTS) line.
- SioModem -- Reads the modem status register.
- SioDSR -- Reads the Data Set Ready (DSR) modem status bit.
- SioCTS -- Reads the Clear to Send (CTS) modem status bit
- SioDCD -- Reads the Data Carrier Detect (DCD) modem status bit.
- SioRI -- Reads the Ring Indicator (RI) modem status bit.
-
-
- 2.4 Serial I/O
-
-
- There are six library functions in the serial I/O category.
- Together, these functions give the programmer complete control
- over serial I/O. Higher level functions such as protocols and
- smart modem communications can be completely implemented in terms
- of these functions. Refer to the example code.
-
- SioGetc and SioPutc perform all the actual serial I/O. SioUnGetc
- and SioRxFlush modify the receive queue. SioLine can be used to
- test for UART errors.
-
- SioGetc -- Reads the next character from the serial line.
- SioPutc -- Transmit a character over a serial line.
- SioUnGetc -- "Un-gets" (puts back) a specified character.
- SioRxFlush -- Flush (clears) the receive buffer.
- SioRxQue -- Returns the number of characters in the receive queue.
- SioLine -- Reads the line status register.
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 8
- 2.5 Error Detection
-
-
- There are four functions in the error detection category. They are
- concerned with detecting or reporting communications errors. Use
- of these functions can make your application significantly more
- robust.
-
- SioBrkKey can be used as an "emergency" exit from your
- application. SioBrkSig can read or modify the UART break bit. This
- is useful for signalling the remote system that a fatal condition
- has occurred. SioLoopBack can be used to test the integrity of
- your UART. SioError displays a error message corresponding to an
- error code returned from a PCL4C function (every PCL4C function
- returns a code).
-
- SioBrkKey -- Returns non-zero if the Control-BREAK key was pressed
- SioBrkSig -- Asserts, cancels, or detects BREAK signal.
- SioError -- Displays error in text.
- SioLoopBack -- Performs a UART loopback test.
-
-
- 2.6 General Support
-
-
- There are six functions in the general support category. Strictly
- speaking, they are not communications functions but are provided
- in the PCL4C library because they are not always available
- (especially in some older compiler run-time libraries). At any
- rate, they take up a very small amount of additional memory.
- Registered users can also remove these functions from the library
- if needed.
-
- SioInfo -- Returns the library version & memory model.
- SioCrtWrite -- Write character to the screen.
- SioDelay -- Delays one or more tics.
- SioKeyPress -- Detects if keyboard has been pressed.
- SioKeyRead -- Reads the keyboard.
- SioTimer -- Returns the number of system clock tics.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 9
- 3.0 Library Organization
-
- 3.1 Memory Models
-
-
- Because of the segmented architecture of the INTEL CPU, there are
- four memory organizations possible for computer programs. These
- are named the SMALL, COMPACT, MEDIUM, and LARGE memory models,
- which correspond to the four combinations of "near" and "far"
- addresses for code and data.
-
- Each executable is composed of one or more segments, where each
- segment can occupy from one byte to 64 KB of memory. A "near"
- address is a 16 bit offset in a segment, whereas a "far" address
- consists of both a 16 bit segment value and a 16 bit offset.
-
- In the small memory model, code and data each occupy one segment.
- Thus, near addresses are allocated for both code and data.
-
- In the compact memory model, code occupies one segment while data
- may occupy multiple segments. Near addresses are allocated for
- code but far addresses are allocated for data.
-
- In the medium memory model, data occupies one segment while code
- may occupy multiple segments. Near addresses are allocated for
- data but far addresses are allocated for code.
-
- In the large memory model, data and code each occupy multiple
- segments. Far addesses are allocated for both code and data.
- Thus, both code and data can use as many segments as required.
-
- Refer to your compiler manual for a discussion of the memory
- models supported by your compiler.
-
- PCL4C is organized as four separate libraries (PCL4C_S.LIB,
- PCL4C_C.LIB, PCL4C_M.LIB and PCL4C_L.LIB) corresponding to the
- four standard memory models. For the MIX Power C compiler, the
- small, medium, and large models are provided (PCL4C_S.MIX,
- PCL4C_M.MIX and PCL4C_L.MIX). MIX doesn't support the compact
- memory model.
-
-
- MODEL CODE DATA Library
- Small Near Near PCL4C_S.LIB & PCL4C_S.MIX
- Compact Near Far PCL4C_C.LIB
- Medium Far Near PCL4C_M.LIB & PCL4C_M.MIX
- Large Far Far PCL4C_L.LIB & PCL4C_L.MIX
-
-
- However, one can always use the large memory model library
- PCL4C_L.LIB with any memory model application code by explicitly
- declaring the PCL4C procedures to be FAR (by prefixing "far"
- before the name of each function in the PCL4C.H file) and
- declaring your receive buffer to be FAR. This was the method used
- in early versions of PCL4C.
-
-
-
-
- PCL4C Users Manual Page 10
- 3.2 Compilers Supported
-
-
- At this time, four C compilers are supported by PCL4C.
-
- (1) Microsoft Optimizing C Compiler
-
- (2) Microsoft Quick C Compiler
-
- (3) Borland Turbo C Compiler
-
- (4) MIX Power C Compiler
-
- The Microsoft Optimizing C Compiler supports all memory models.
- Just be careful to link with the PCL4C library that corresponds to
- the memory model used. Recall that the small memory model is the
- default. Examine the (small model) makefiles *._M_ for the
- Microsoft compiler.
-
- The Microsoft Quick C Compiler supports all memory models, but be
- careful to link with the PCL4C library that corresponds with the
- memory model used. Recall that the small memory model is the
- default for the command line compiler (QCL) while the medium
- memory model is the default for the interactive compiler
- environment. Examine the (small model) makefiles *._Q_ for the
- Microsoft Quick C compiler.
-
- The Borland Turbo C Compiler also supports all memory models. Be
- sure to link with the correct PCL4C library corresponding to the
- memory model used. Examine the (small model) makefiles *._T_ for
- the Turbo C compiler.
-
- The MIX Power C Compiler supports the small, medium, and large
- memory models. However, older versions of Power C only support the
- small model. Examine the (small model) project batch files
- X_*.BAT for the Power C Compiler.
-
- Other compilers may also work with one or more of the PCL4C
- libraries but have not been tested. Since registered users have
- the source code to the library, it should not be difficult to
- modify PCL4C for use with any MSDOS C compiler.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 11
- 3.3 Using the Library
-
-
- The PCL4C has been tested on a TANDY 1000 (4.77 MHZ 8088 IBM PC
- clone), a TANDY 3000 (80286 IBM AT clone), a TANDY 1400LT (IBM XT
- clone), and a Gateway 2000 Cache (25 MHZ 80386-DX). PCL4C has
- been tested under MSDOS 2.11, 3.2, 3.3, 4.01, and 5.0.
-
- Please examine the PCL4C.H file. Note that COM1 is defined as port
- zero, not port one. The user must assume the responsibilty for
- passing the correct information when calling PCL4C functions.
- Note that function prototypes are provided in PCL4C. But since
- some earlier C compilers don't support function prototypes,
- PCL4C.H can be modified for no prototypes by changing the line
-
- #define PROTOTYPES 1
-
- to
-
- #define PROTOTYPES 0
-
-
- 3.4 Example Programs
-
-
- Two communications programs are provided as a demonstration of the
- PCL4C library -- SIMPLE and TERM.
-
- SIMPLE is provided as the simpliest example of communications
- programming using PCL4C. The user should compile and link SIMPLE.C
- as a test of the library.
-
- If you have two computers, connect them together with a null modem
- cable and run SIMPLE on both machines. The baud rate in SIMPLE is
- hard coded to 2400 baud. It is easily changed in the source code.
- Start SIMPLE by typing SIMPLE followed by the port. For example:
-
- SIMPLE 1
-
- Once SIMPLE is started on both computers, whatever is typed on one
- machine should be displayed on the other, and vice versa.
-
- The TERM program is a more capable terminal emulator than SIMPLE.
- It features modem initialization, hardware flow control, and file
- transfer using XMODEM, YMODEM, and YMODEM-G communications
- protocols. TERM can be used to call up any bulletin board system,
- including the MarshallSoft Computing BBS. Start TERM by typing
- TERM followed by the port and baud rate. For example:
-
- TERM 4 2400
-
- Refer to the chapter "Terminal Emulator Program" for a complete
- discussion of TERM.
-
-
-
-
-
-
- PCL4C Users Manual Page 12
- 3.5 Compiling and Linking
-
-
- Registered users may wish to assemble PCL4C.ASM. Use the /MX
- switch in order to disable automatic conversion from lower case to
- upper case. If the /MX switch is not used, then all PCL4C
- function references in C code must be in upper case. To assemble
- using the Microsoft assembler:
-
- Model Command
-
- Small MASM PCL4C /DSMALL_MODEL /MX;
- Compact MASM PCL4C /DCOMPACT_MODEL /MX;
- Medium MASM PCL4C /DMEDIUM_MODEL /MX;
- Large MASM PCL4C /DLARGE_MODEL /MX;
-
- To make the (small) model PCL4C.OBJ into a library file:
-
- DEL PCL4C_S.LIB
- LIB PCL4C_S.LIB+PCL4C,PCL4C.MAP;
-
- If you are using the MIX Power C Compiler, create the MIX object
- file (you will need version 1.3 of MIX which has the /_ switch):
-
- MIX /_ PCL4C_S
-
- Similarly with the other memory model libaries. See the batch
- files MAKE_S.BAT, MAKE_C.BAT, MAKE_M.BAT, and MAKE_L.BAT.
-
- To compile and link (small model) using Microsoft C:
-
- cl /AS simple.c /link pcl4c_s.lib
-
- To compile and link (small model) using Microsoft Quick C:
-
- qcl /AS simple.c /link pcl4c_s.lib
-
- To compile and link (small model) using Turbo C:
-
- tcc -ms simple.c pcl4c_s.lib
-
- To compile and link (small model) using Power C:
-
- pc /ms simple.c
- pcl simple pcl4c_s.mix
-
- Makefiles or project files are provided for both SIMPLE and TERM.
- Turbo C makefiles end with the extension '._T_', Microsoft C
- makefiles end with '._M_', Microsoft Quick C makefiles files end
- with '._Q_', and Power C project batch files start with 'X_' and
- end with '.BAT'.
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 13
- 4.0 Talking to Your Modem
-
-
- A modem is used to extend the distance over which you may
- communicate. Without a modem, your RS232 cable is limited to a
- maximum of approximately 50 feet. But with a modem, you can
- communicate literally around the world.
-
-
- 4.1 Modem Standards
-
-
- Two modems can communicate over a telephone line only if they are
- both using the same signaling frequencies and modulation, which
- are determined by the the modem standards used. Modem standards
- can be divided into three sets: (1) speed, (2) data compression
- used, and (3) error control.
-
- The Bell standards (103 & 212A) are those of AT&T. The CCITT (The
- International Consultative Committee for Telephone and Telegraph)
- standards are designated as "V. ".
-
-
- Speed
-
- Bell 103 -- 300 baud
- Bell 212A -- 1200 baud
- V.21 -- 300 baud
- V.22bis -- 1200 & 2400 baud
- V.32 -- 4800 & 9600 baud
- V.32bis -- 4800, 7200, 9600, 12000, and 14400 baud
-
-
- Data Compression
-
- MNP 5 -- Microcom Networking Protocol (proprietary).
- V.42bis -- International data compression standard.
-
-
- Error Control
-
- MNP 2,3,4 -- Three level error correction (public domain).
- V.42 -- International error correction standard.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 14
- 4.2 Flow Control
-
-
- With modems using data compression, the modem to modem connection
- will run at various speeds depending on the quality of the line.
- The computer to modem connection will be at a fixed baud rate.
- Therefore, a protocol (flow control) is necessary to synchronize
- the data flow between and modems and the computer to modem
- connection. Refer to your modem manual for information on flow
- control protocols supported.
-
- Two flow control protocols are used by most all modems which
- require flow control. Software flow control is called "XON/XOFF"
- (other software flow control character pairs are defined but
- operate the same as XON/XOFF) and hardware flow control is called
- "RTS/CTS". Most modems which require flow control enable hardware
- flow control by default.
-
- In XON/XOFF (software) flow control, the computer suspends
- transmitting data if it receives a XOFF character (13 hex) from
- the modem, and continues transmitting when it receives a XON
- character (11 hex). Similiarly, the computer can signal the modem
- not to send any more data by transmitting a XOFF to it, and can
- tell the modem to continue transmission be sending a XON.
-
- In RTS/CTS (hardware) flow control, the RTS line is used by the
- computer to signal the modem , while the CTS line is used by the
- modem to signal the computer. The RTS line is set OFF by the
- computer to tell the modem to suspend transmission, and set to ON
- to tell the modem to continue transmission. The CTS line is set
- to OFF by the modem to tell the computer to stop transmitting, and
- set to ON to tell the computer to continue transmitting.
-
- Given the choice, always choose hardware flow control over
- software flow control so that all data transmission is
- transparent. If hardware flow control is not the default (which
- it almost always is), your should modify your modem initialization
- string to turn hardware flow control on.
-
- Both software and hardware flow control is easy to implement using
- PCL4C. See TERM_IO.C for an example of hardware flow control.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 15
- 4.3 Modem Initialization
-
-
- If your application uses a modem (as opposed to using a null modem
- cable), then you should always send an initialization string to
- your modem if it is a programmable modem such as those made by
- Hayes. Communication programs such as PROCOMM and TELIX always
- send such a string automatically as soon as they start up.
-
- The particular initialization string depends on the make of your
- modem. For Hayes and Hayes AT command set compatible modems, the
- following string (followed by a carriage return) should work:
-
- AT E1 S7=60 S11=60 V1 X1 Q0 S0=0
-
- Refer to your Modem User's Guide for a full discussion of these
- commands. A brief description is as follows:
-
- AT Modem attention command.
- E1 Modem will echo what you send to it.
- S7=60 Wait 60 seconds for carrier and/or dial tone.
- S11=60 Use 60 milliseconds for tone dialing duration & spacing.
- V1 Display result code as words (not numbers).
- X1 Use the extended result message (CONNECT XXXX) set.
- Q0 Modem returns result codes.
- S0=0 Do not answer RING.
-
- If your application will answer incoming calls, then set the S0
- register to the ring on which to automatically answer.
-
- If you send the above codes by using SioPutc (as opposed to typing
- them from the keyboard), then follow these guidelines:
-
- (1) Send an initial carriage return before the initialization
- string.
-
- (2) Pause at least two tics (18 tics to the second) after each
- character sent as your modem needs the time to perform its own
- internal processing. Pause a little longer if your modem is not
- accepting your initialization string.
-
- (3) Pause one and a half seconds after sending any initialization
- command such as ATZ or AT&F since your modem must do quite a bit
- of processing.
-
- If you experience any problems in initializing your Hayes modem,
- you should first reset it to factory settings by sending:
-
- AT&F
-
- Refer to the TERM program (functions SendTo and WaitFor in the
- file MODEM_IO.C) for an example of sending an initialization
- string to a Hayes compatible modem.
-
-
-
-
-
-
- PCL4C Users Manual Page 16
- 5.0 Problems
-
-
- If you cannot get your application to run properly, first compile
- and run the terminal emulator program TERM provided on your
- distribution disk. If you are using a null modem cable or a
- non-programmable modem, be sure to set the HAYES constant to 0 in
- the source code (#define AT_COMMAND_SET 0). If you are using a
- Hayes compatible modem, set the AT_COMMAND_SET constant to 1. If
- you are using a programmable modem which is not Hayes compatible,
- then you must modify the initialization string for your particular
- modem.
-
- If your application does not run but TERM runs correctly, then you
- have most likely made a programming mistake in your application.
- MarshallSoft Computing cannot debug your application, especially
- over the telephone! However, consider each of the following when
- searching for an error in your application.
-
- 1. Have you included the file PCL4C.H in your application ?
-
- 2. Did you link with the correct PCL4C library ? This is the
- most probable cause if your application 'hangs' as soon as it
- starts and you must reboot. The function SioInfo() returns the
- the model ID under which the library was assembled.
-
- 3. Is your receive buffer large enough ? If you are using 1K data
- blocks in YMODEM, then your receive buffer should be at least
- 1K (2K if baud rates above 19200 are to be used).
-
- 4. Have you selected too high a baud rate (if you are using a
- slow PC) ? If only one COM port is being run, you should be
- able to run at 38400 baud on 8088 machines and 115200 on most
- 286 and all 386 and 486 machines.
-
- 5. Are you attempting to run another application in the
- background ? Try running without any other programs running
- in the background (unload all TSR programs).
-
- 6. If you are running two COM ports simultaneously, are you using
- separate receive buffers ? (you should).
-
- 7. Did SioReset return a zero value ? If not, then you must call
- SioReset again. See TERM.C for an example.
-
- 8. Did you send the proper initialization string to your modem ?
- Did you set DTR and RTS ? (you should).
-
- 9. Do you have more than one COM1 port, etc. For example, if you
- have a COM1 port on your motherboard, you cannot add another
- COM1 port or modem board that uses COM1 without first
- disabling the COM1 on the motherboard.
-
-
-
-
-
-
-
- PCL4C Users Manual Page 17
- 6.0 Serial Communications
-
- 6.1 Communications Basics
-
-
- The heart of serial communications is the UART (Universal
- Asynchronous Receiver Transmitter). The IBM PC/XT/AT and
- compatibles use the INS8250, INS16450, or the INS16550 UART. The
- purpose of the UART is:
-
- (1) To convert bytes from the CPU (Central Processing Unit), into
- a serial format by adding the necessary start, stop, and parity
- bits to each byte before transmission, and to then transmit each
- bit at the correct baud rate.
-
- (2) To convert the incoming stream (at a specified baud rate) of
- serial bits into bytes by removing the start, stop, and parity
- bits before being made available to the CPU.
-
- The UART is part of the serial interface circuitry which allows
- the CPU to send and receive signals over the RS232 lines. This can
- be diagrammed as follows:
-
- Serial Interface
- *********************
- * *
- ******* Data Bus * ******** * RS232 Signals
- * CPU ************** * UART * ******************
- ******* * ******** *
- * *
- *********************
-
- The INS8250/16450/16550 UART is capable of operating in one of
- two modes, "polled" and "interrupt driven". The serial
- communications functions in the BIOS uses the polled method. In
- this approach, the CPU is typically in a loop asking the UART
- over and over again if it has a byte ready. If its does, the
- polling code returns the byte. But, if the next byte comes in
- before the polling code is executing again, then that byte is
- lost.
-
- In the interrupt driven approach (used by PCL4C for incoming
- data), when a byte is received by the UART, an "Interrupt Service
- Routine" (ISR) is executed immediately, suspending temporarily
- whatever else is executing. The ISR then moves the byte to a
- buffer so that your application program can later read it. Refer
- to the sections entitled "RS232 Signals" and "National INS8250
- UART" for further information on these topics.
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 18
- 6.2 Standard Port Addresses
-
-
- There are a few things to know about how serial communications
- ports are used by IBM PC/XT/AT and compatible computers. The
- standard IBM PC/XT/AT configuration values are as follows:
-
- Port Reg Base IRQ Line Vector
- COM1 3F8H 4 12
- COM2 2F8H 3 11
- COM3 3E8H 4 12
- COM4 2E8H 3 11
-
- PCL4C assumes the above values. If necessary, the UART base
- address can be changed by SioUART, and IRQ lines can be
- re-assigned by SioIRQ. Refer to the PCL4C Reference Manual for
- specific details.
-
- When installing new communications cards, the following guidelines
- are recommended:
-
- (1) Be sure to read the documentation for the hardware you are
- installing. Pay special attention to UART base addresses and IRQ
- lines.
-
- (2) If you have a choice in base addresses and IRQ lines, always
- choose standard values as defined above.
-
- (3) The first port should be COM1, the second COM2, etc.
-
- (4) Use SioUART to zero all unused ports (for example, call
- SioUART(COM4,0) if there is no COM4 port installed).
-
- (5) Be carefull not to configure two ports for the same address.
- This is easier to do than you may believe.
-
- (6) Choose an external modem over an internal one. It is much
- easier to debug problems with an external modem than an internal
- one.
-
- (7) Select hardware flow control (RTS/CTS) if flow control is
- required and hardware flow control is not the default.
-
- (8) Always test your port as soon as it is installed.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 19
- 6.3 RS-232 Signals
-
-
- RS-232 is the name of the serial data interface standard used to
- connect computers to modems. Most IBM compatible computers are
- built with at least one serial port and use either DB9 (9 pin) or
- DB25 (25 pin) connectors.
-
- A summary of these pins and their function follows. For more
- detailed information, refer to one of the many books dealing with
- RS-232 interfacing.
-
- Signal Ground Pin 7 (DB25), Pin 5 (DB9)
-
- The SG line is used as the common signal ground, and must always
- be connected.
-
- Transmit Data Pin 2 (DB25), Pin 3 (DB9)
-
- The TX line is used to carry data from the computer to the modem.
-
- Receive Data Pin 3 (DB25), Pin 2 (DB9)
-
- The RX line is used to carry data from the modem to the computer.
-
- Data Terminal Ready Pin 20 (DB25), Pin 4 (DB9)
-
- The DTR line is used by the computer to signal the modem that it
- is ready. DTR should be set high when talking to a modem.
-
- Data Set Ready Pin 6 (DB25), Pin 6 (DB9)
-
- The DSR line is used by the modem to signal the computer that it
- is ready.
-
- Request to Send Pin 4 (DB25), Pin 7 (DB9)
-
- The RTS line is used to "turn the line around" in half duplex
- modems, and for hardware flow control in most modems that require
- flow control.
-
- Clear to Send Pin 5 (DB25), Pin 8 (DB9)
-
- The CTS line is used to "turn the line around" in half duplex
- modems, and for hardware flow control in most modems that require
- flow control.
-
- Data Carrier Detect Pin 8 (DB25), Pin 1 (DB9)
-
- The DCD line is used by the modem to signal the computer that a
- data carrier signal is present.
-
- Ring Indicator Pin 22 (DB25), Pin 9 (DB9)
-
- The RI line is asserted when a 'ring' occurs.
-
-
-
-
- PCL4C Users Manual Page 20
- 6.4 National INS8250, INS16450, and INS16550 UARTs
-
-
- The Personal Communications Library is based on the standard
- National INS8250, INS16450, and INS16550 UARTs. The 8250 was the
- original UART used in the IBM PC, whereas the 16450 is a faster
- version found on most 286 & up machines. The 16550 contains a 16
- byte FIFO to further reduce communications overhead. These UARTs
- consists of 8 register ports as follows:
-
- Offset R/W Register
- 0 R/W Receiver (read) / Transmitter (write)
- 1 R/W Interrupt Enable (read)
- 2 R Interrupt Identification
- 2 W FIFO control (INS16550 only)
- 3 R/W Data Format (Line Control)
- 4 R/W RS-232 (Modem) Control
- 5 R/W Line Status
- 6 R/W RS-232 (Modem) Status
- 7 R/W Not used.
-
- The UART registers are based at 3F8 (COM1), 2F8 (COM2), 3E8
- (COM3), and 2E8 (COM4). COM1 and COM3 share interrupt vector 12
- and interrupt request line IRQ4 while COM2 and COM4 share
- interrupt vector 11 and interrupt request line IRQ3. This means
- that COM1 and COM3 cannot both be used at the same time.
- Similarly, COM2 and COM4 cannot both be used at the same time.
-
-
- Port Reg Base IRQ Line Vector
- COM1 3F8H 4 12
- COM2 2F8H 3 11
- COM3 3E8H 4 12
- COM4 2E8H 3 11
-
- Four sources of interrupts are possible with the 8250 and 16550:
- (1) receiver error or BREAK, (2) receiver data ready, (3) ready to
- transmit, and (4) RS232 input. These four sources of interrupts
- are summarized as follows:
-
- Source of Interrupt Action Required to Clear
- Receiver error or BREAK. Read Line Status register.
- Receiver data. Read data from data register.
- Transmitter Buffer Empty. Write to data register or read IID reg.
- RS232 input. Read Modem Status register.
-
- However, PCL4C only enables the receiving data interrupt. This
- means that interrupts can only be caused by incoming data.
-
- If you are not familiar with the INS8250, several good books are
- available. Refer to the Serial Communications chapter for
- recommendations. Although a knowledge of the 8250 is not
- necessary to use PCL4C, a general knowledge of the theory of
- asynchronous serial communications is recommended.
-
-
-
-
-
- PCL4C Users Manual Page 21
- 6.5 Register Summary
-
-
- REG 0 : Data Register
-
- Reading from the data register fetches the next input byte, once
- it is ready. Writing to the data register transmits the byte
- written to it over the serial line.
-
- REG 1 : Interrupt Enable
-
- The Interrupt Enable register enables each of four types of
- interrupts when the appropriate bit is set to a one.
-
- bit 3 : Enable interrupt on RS232 input.
- bit 2 : Enable interrupt on receiver error or break.
- bit 1 : Enable interrupt on transmitter buffer empty (TBE).
- bit 0 : Enable interrupt on received data (RxRDY).
-
- REG 2 : Interrupt Identification (IID)
-
- Reading the Interrupt Identification (read only) register once
- an interrupt has occurred identifies the interrupt as follows:
-
- Bit 2 Bit 1 Bit 0 Priority Interrupt
- 0 0 1 none none
- 1 1 0 0 (high) Serialization or break.
- 1 0 0 1 Received data.
- 0 1 0 2 Transmitter Buffer Empty.
- 0 0 0 3 (low) RS232 Input.
-
- In the INS16650, REG 2 (write only) is also the FIFO control
- register. Writing bits 6 & 7 will set the FIFO trigger level
- (number of bytes received before an interrupt is generated).
-
- Bit 7 Bit 6 Trigger Bit 7 Bit 6 Trigger
- 0 0 1 byte 1 1 8 bytes
- 0 1 4 bytes 1 1 14 bytes
-
- REG 3 : Line Control
-
- RS232 line parameters are selected by writing to this register.
-
- bit 7 : DLAB = 0
- bit 6 : BREAK on(1), off(0).
- bits 5-3: Parity None(000),ODD(001),EVEN(011),MARK(101),SPACE(111)
- bit 2 : One stop bit(0), two stop bits(1).
- bits 1-0: Data bits = 5 (00), 6(01), 7(10), 8(11).
-
- When the Divisor Latch Access Bit (DLAB) is 1, registers 0 and 1
- become the LS and MS bytes of the Baud Rate Divisor registers.
-
- Baud Divisor Baud Divisor Baud Divisor
- 300 0180 4800 0018 38400 0003
- 1200 0060 9600 000C 57600 0002
- 2400 0030 19200 0006 115200 0001
-
-
-
- PCL4C Users Manual Page 22
- REG 4 : Modem Control
-
- RTS, DTR, loopback testing, and General Purpose Outputs #1 and #2
- are controlled by the Modem Control register as follows:
-
- bit 4 : Enable local loopback.
- bit 3 : Enable GP02. Necessary for 8250 interrupts.
- bit 2 : Enable GP01.
- bit 1 : Set / clear RTS.
- bit 0 : Set / clear DTR.
-
- REG 5 : Line Status
-
- Reading the Line Status register provides status information as
- follows (1 for TRUE, 0 for FALSE) :
-
- bit 6 : Transmitter Empty.
- bit 5 : Transmitter Buffer Empty (TBE).
- bit 4 : BREAK detect.
- bit 3 : Framing error.
- bit 2 : Parity error.
- bit 1 : Overrun error.
- bit 0 : Data Ready.
-
- REG 6 : Modem Status
-
- Reading the Modem Status register provides the following status
- information (1 for TRUE, 0 for FALSE) :
-
- bit 7 : DCD status.
- bit 6 : RI status.
- bit 5 : DSR status.
- bit 4 : CTS status.
- bit 3 : Delta DCD status.
- bit 2 : Delta RI status.
- bit 1 : Delta DSR status.
- bit 0 : Delta CTS status.
-
- The delta bits (bits 0 through 3) are set whenever one of the
- status bits (bits 4 through 7) changes (from 0 to 1 or from 1 to
- 0) since the last time that the Modem Status register was read.
- Reading the Modem Status register clear the delta bits.
-
- REG 7 : Scratch Register
-
- There is no function associated with register 7. It does not
- exist in early versions of the 8250.
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 23
- 7.0 Terminal Emulator Example Program
-
-
- TERM is an communications program suitable for calling up bulletin
- board systems (BBS) and performing as a PC to PC file copy
- program. TERM itself is not part of the communications library,
- but rather it is provided as an example of a communications
- application using PCL4C.
-
- TERM can send a standard Hayes standard AT command set string to
- your modem. An initialization string is sent by TERM provided
- that the constant AT_COMMAND_SET in the file TERM.H is defined to
- be TRUE:
-
- #define AT_COMMAND_SET 1
-
- Refer to the chapter "Modem Initialization" for a discussion of
- initialization strings.
-
- TERM also supports hardware flow control (RTS/CTS). Hardware flow
- control is observed provided that the constant RTS_CTS_CONTROL in
- the file TERM.H is defined to be TRUE:
-
- #define RTS_CTS_CONTROL 1
-
- Refer to the chapter "Flow Control" for a discussion of hardware
- flow control.
-
- TERM can also exchange files using XMODEM, YMODEM (batch
- capability), and YMODEM-G (streaming YMODEM used with error
- correcting modems) communications protocols. TERM can accept
- wildcards in the filename so that multiple files can be sent using
- YMODEM and YMODEM-G. The protocol timing can also be adjusted
- (this should not be necessary) by modifying the constants
- SHORT_WAIT and LONG_WAIT in the TERM.H file.
-
- TERM can also be used as a PC to PC transfer program using a null
- modem cable. In this case, AT_COMMAND_SET and RTS_CTS_CONTROL
- should be defined to be FALSE in the file TERM.H:
-
- #define AT_COMMAND_SET 0
- #define RTS_CTS_CONTROL 0
-
- Be advised that most null modem cables are do NOT swap RTS and
- CTS, which is necessary for hardware flow control. This means that
- RTS_CTS_CONTROL should never be set to 1 (TRUE) when using a null
- modem cable unless you are absolutely sure that RTS and CTS are
- swapped.
-
- To start TERM, type TERM followed by the port (1 to 4) and the
- baud rate (300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600,
- or 115200). For example, to start TERM at 2400 baud on port COM4:
-
- TERM 4 2400
-
- The TERM program (but of course not the library itself) is placed
- in the public domain by MarshallSoft Computing, Inc., and can be
- used in any way desired by the user.
-
- PCL4C Users Manual Page 24
- 8.0 Legal Issues
-
- 8.1 Registration
-
-
- The shareware version of PCL4C.LIB is provided so that you may
- personally determine the usefulness of the product for yourself.
- If you can use the Personal Communications Library for C, please
- register your use with us. Send $45 plus $3 S&H ($6 outside of
- North America) to:
-
- MarshallSoft Computing, Inc.
- Post Office Box 4543
- Huntsville AL 35815
-
- Please pay by check in US dollars drawn on a US bank. Purchase
- Orders (POs) are accepted from recognized US schools and companies
- listed in Dunn & Bradstreet. Print the file PCL4C.INV if an
- invoice is needed. The registered package is mailed first class US
- Mail (packet air mail overseas). If you are in a hurry, please
- call us and we can ship immediately within the USA by COD (street
- address and phone number required).
-
- The registered package includes:
-
- o Small, Compact, Medium & Large memory model libraries without
- the shareware screens.
- o Assembler source code for the library.
- o Printed Users Manual.
- o Printed Reference Manual.
- o Telephone, FAX, and BBS support for one year.
- o One year subscription (quarterly) to MSC newsletter.
- o All updates (with printed manuals) are $15 plus $3 S&H
- ($6 outside of North America).
-
- PCL4C.ASM is the source code for the library. The source code is
- copyrighted by MarshallSoft Computing, Inc. The user is granted a
- license to use the PCL4C object code in his own application only.
- PCL4C.ASM is not shareware and may not be sold or given away to
- anyone.
-
- The registered user will receive the latest version of PCL4C by
- return mail. A 5.25" diskette is provided unless a 3.5" diskette
- is requested.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 25
- 8.2 License
-
-
- MarshallSoft Computing, Inc. grants the registered user of PCL4C
- the right to use one copy of the PCL4C library (in object form) on
- a single computer in the development of any software product
- without any royalties. The user may not use the library on more
- than one computer at the same time. The source code for the
- library (PCL4C.ASM) may not be released in whole or in part.
-
-
- 8.3 Warranty
-
-
- MARSHALLSOFT COMPUTING, INC. DISCLAIMS ALL WARRANTIES RELATING TO
- THIS SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
- LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE, AND ALL SUCH WARRANTIES ARE EXPRESSLY
- AND SPECIFICALLY DISCLAIMED. NEITHER MARSHALLSOFT COMPUTING, INC.
- NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION,
- OR DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT,
-
- CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE SUCH SOFTWARE EVEN IF MARSHALLSOFT COMPUTING,
- INC. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR
- CLAIMS. IN NO EVENT SHALL MARSHALLSOFT COMPUTING, INC.'S LIABILITY
- FOR ANY SUCH DAMAGES EVER EXCEED THE PRICE PAID FOR THE LICENSE TO
- USE THE SOFTWARE, REGARDLESS OF THE FORM OF THE CLAIM. THE PERSON
- USING THE SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND
- PERFORMANCE OF THE SOFTWARE.
-
- Some states do not allow the exclusion of the limit of liability
- for consequential or incidental damages, so the above limitation
- may not apply to you.
-
- This agreement shall be governed by the laws of the State of
- Alabama and shall inure to the benefit of Marshallsoft Computing,
- Inc. and any successors, administrators, heirs and assigns. Any
- action or proceeding brought by either party against the other
- arising out of or related to this agreement shall be brought only
- in a STATE or FEDERAL COURT of competent jurisdiction located in
- Madison County, Alabama. The parties hereby consent to in personam
- jurisdiction of said courts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 26
- 9.0 Summary
-
- 9.1 Revision History
-
- Version 1.0 -- 14 January 1991 -- original release.
-
- Version 1.1 -- 11 March 1991
-
- o Added SioUnGetc() function to library.
-
- Version 1.2 -- 1 June 1991
-
- o SioParms() bug -- could not call before SioReset.
- o SioReset() bug -- was not saving & restoring all regs.
-
- Version 1.3 -- 1 July 1991
-
- o Added NORESET option to SioReset.
- o Added SioDSR, SioCTS, SioDCD, SioLoopBack, and SioRI.
-
- Version 2.0 -- 1 Nov 1991
-
- o Reorganized as four memory model libraries.
- o Added SioModel function to library.
- o Added support for Quick C and Power C.
-
- Version 2.1 -- 1 Dec 1991
-
- o Fixed bug due to Microsoft Assembler (MASM 5.0,5.1) error.
-
- Version 3.0 -- 15 Jan 1991
-
- o Added SioUART function.
- o Added "UART undefined" error code.
- o Added "Bad or missing UART" error code.
- o Added "Port already enabled" error code.
- o Added "Cannot enable both COM1 & COM3 ..." error code.
- o Fixed several minor bugs (using new automated testing).
-
- Version 3.1 -- 1 March 1992
-
- o Added SioFIFO (INS16550 support).
- o Added SioIRQ function.
- o Increased maximum receive buffer size to 32K bytes.
-
- Version 3.2 -- 1 May 1992
-
- o Modified SioReset so that it no longer clears DTR & RTS.
- o Modified SioModel & renamed to SioInfo.
- o Fixed bug in SioDone when using 2 ports simultaneously.
- o Added SioFlow to library.
- o Added YMODEM-G protocol to TERM program.
-
- Version 3.3 -- 3 August 1992
-
- o Fixed bug in SioUnGet when using 2 ports simultaneously.
- o Add SioRead function.
-
-
- PCL4C Users Manual Page 27
- 9.2 Function Summary
-
-
- Refer to the PCL4C Reference Manual (PCL4C.REF) for detailed
- information on the communications and support functions. A one
- line summary of each function follows:
-
-
- SioBaud Sets the baud rate of the selected port.
- SioBrkKey Returns non-zero if the Control-BREAK key was pressed.
- SioBrkSig Asserts, cancels, or detects BREAK signal.
- SioCrtWrite Write character to the screen.
- SioCTS Reads the Clear to Send (CTS) modem status bit.
- SioDCD Reads the Data Carrier Detect (DCD) modem status bit.
- SioDelay Delays one or more tics (18 tics per second).
- SioDone Terminates further serial processing.
- SioDSR Reads the Data Set Ready (DSR) modem status bit.
- SioDTR Set, clear, or read the Data Terminal Ready (DTR) bit.
- SioError Displays error in text.
- SioFIFO Sets the interrupt level for the INS16550.
- SioFlow Enables / disables hardware flow control.
- SioGetc Reads the next character from the serial line.
- SioKeyPress Detects if keyboard has been pressed.
- SioKeyRead Reads the keyboard.
- SioInfo Returns library version number & memory model.
- SioIRQ Assigns an IRQ line to a port.
- SioLine Reads the line status register.
- SioLoopBack Performs a UART loopback test.
- SioModem Reads the modem status register.
- SioParms Sets parity, stop bits, and word length.
- SioPutc Transmit a character over a serial line.
- SioRead Reads any of 7 UART ports.
- SioReset Initialize a serial port for processing.
- SioRI Reads the Ring Indicator (RI) modem status bit.
- SioRTS Sets, clears, or reads the Request to Send (RTS) line.
- SioRxBuf Sets up receive buffer.
- SioRxFlush Flushes (clears) the receive buffer.
- SioRxQue Returns the number of characters in the receive queue.
- SioTimer Returns the number of system clock tics.
- SioUART Sets the UART base address.
- SioUnGetc "Un-gets" (puts back) a specified character.
-
-
- 9.3 Further Reading
-
-
- The best way to learn about serial communications is to read a
- good book on the subject. Several good texts are available. Two
- that I like are:
-
- (1) C Programmers's Guide to Serial Communications by Joe Campbell
- (SAMS)
-
- (2) Mastering Serial Communications by Peter Gofton (SYBEX).
-
-
-
-
-
- PCL4C Users Manual Page 28
- 10.0 Other MarshallSoft Computing Products
-
- 10.1 The Personal Communications Library for Pascal
-
- The Personal Communications Library for Pascal (PCL4P) is a Turbo
- Pascal version of the Personal Communications Library for C, and
- is available for $45 plus $3 S&H ($6 S&H overseas). It contains
- the same library functions, example programs, documentation, and
- user support.
-
- 10.2 The Personal Protocol Library for C
-
- The Personal Protocol Library for C (PPL4C) consists of a state
- driven C language library which implements XMODEM, XMODEM-CRC,
- XMODEM-1K, XMODEM-G, YMODEM, and YMODEM-G file transfer protocols.
- This allows the communications application to run two ports
- simultaneously while interacting with the user at the keyboard.
- The state drive library functionally emulates background tasking
- with standard MSDOS.
-
- The primary application area for the protocol library is in the
- development of custom BBS programs (and programs that call BBS's)
- which require either multiple lines or which require user
- interaction while a file transfer is underway. The state driven
- architecture can also be used as a framework and guide to
- developing customized file transfer protocols.
-
- The protocol library (PPL4C) requires the C communications library
- PCL4C. The PPL4C comes with fully commented C source code, an
- example program which can transmit or receive two files
- simultaneously, printed documentation, and one year of telephone,
- FAX, and BBS support.
-
- The Personal Protocol Library for C is available for $35 plus $3
- S&H ($6 S&H overseas). It can also be ordered together with the C
- communications library for $65 for both, plus $3.50 S&H ($7
- overseas).
-
- 10.3 The Personal Protocol Library for Pascal
-
- The Personal Protocol Library for Pascal (PPL4P) is a Turbo Pascal
- version of the Personal Protocol Library for C, and is available
- for $35 plus $3 S&H ($6 S&H overseas). It contains the same
- library functions, example programs, documentation, and user
- support.
-
- The Personal Protocol Library for Pascal is available for $35 plus
- $3 S&H ($6 S&H overseas). It can also be ordered together with
- the Pascal communications library for $65 for both, plus $3.50 S&H
- ($7 overseas).
-
-
-
-
-
-
-
-
-
- PCL4C Users Manual Page 29
-
-