home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 18
/
CD_ASCQ_18_111294_W.iso
/
dos
/
prg
/
pas
/
pcl4p42
/
pcl4p.ref
< prev
next >
Wrap
Text File
|
1994-08-19
|
62KB
|
1,497 lines
Personal Communications Library
For the Turbo Pascal
( PCL4P )
REFERENCE MANUAL
Version 4.2
Sept 1, 1994
This software is provided as-is.
There are no warranties, expressed or implied.
Copyright (C) 1994
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
_______
____|__ | (R)
--+ | +-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
--+--+ | +---------------------
|___|___| MEMBER
PCL4P Reference Manual Page 1
C O N T E N T S
Chapter Page
Table of Contents......................................2
Introduction...........................................3
SioBaud.............................................4
SioBrkKey...........................................4
SioBrkSig...........................................5
SioCTS..............................................5
SioDCD..............................................6
SioDelay............................................6
SioDone.............................................7
SioDSR..............................................7
SioDTR..............................................8
SioError............................................8
SioFIFO.............................................9
SioFlow.............................................9
SioGetc............................................10
SioGetDiv..........................................10
SioInfo............................................11
SioIRQ.............................................11
SioLine............................................12
SioLoopBack........................................12
SioModem...........................................13
SioParms...........................................13
SioPorts...........................................14
SioPutc............................................14
SioRead............................................15
SioReset...........................................15
SioRI..............................................16
SioRTS.............................................16
SioRxBuf...........................................17
SioRxFlush.........................................17
SioRxQue...........................................18
SioTimer...........................................18
SioTxBuf...........................................19
SioTxFlush.........................................19
SioTxQue...........................................20
SioUART............................................20
SioUnGetc..........................................21
Function Summary......................................21
Error Code Summary....................................22
PCL4P Reference Manual Page 2
Introduction
This manual list all the PCL4P functions in alphabetical order. Every
library function will return a value as follows:
1. Negative values for error conditions. See last page of this manual for a
list of error values and their meanings.
2. Non-negative values when returning data ( eg: SioLine ).
3. Zero otherwise.
When debugging an application, be sure to test all return values. Use
SioError to print the associated text for errors.
Example Code Segment
+--------------------------------------------------------+
| RetCode := SioFunction(); (* any PCL4P function *) |
| if RetCode < 0 then begin |
| RetCode := SioError(RetCode); |
| (* ...do some stuff... *) |
| end; |
+--------------------------------------------------------+
For more examples, examine each of the example programs provided. Also look
at the examples associated with each library function described in the
following section.
PCL4P Reference Manual Page 3
+-------------+------------------------------------------------------------+
| SioBaud | Sets the baud rate of the selected port. |
+-------------+------------------------------------------------------------+
Syntax function SioBaud(Port,BaudCode:Integer):Integer;
(* Port: Port selected (COM1 - COM16) *)
(* BaudCode: Baud code *)
Remarks The SioBaud function sets the baud rate without resetting the
port. It is used to change the baud rate after calling SioReset.
Code Rate Name Code Rate Name
0 300 Baud300 5 9600 Baud9600
1 600 Baud600 6 19200 Baud19200
2 1200 Baud1200 7 38400 Baud38400
3 2400 Baud2400 8 57600 Baud57600
4 4800 Baud4800 9 115200 Baud115200
Returns -4 : No such port. Expect 0 to MaxPort.
-11 : Bad baud rate code. See above code values.
See Also SioReset
+-------------+------------+-------------------+---------------------------+
| SioBrkKey | Return non|zero if the Control|Break key was pressed. |
+-------------+------------+-------------------+---------------------------+
Syntax function SioBrkKey:Integer;
Remarks The SioBrkKey function returns a TRUE value (non-zero) if the
Control-BREAK key was pressed, else it returns a zero. Use
SioBrkKey as a safety exit from a polling loop. Don't mix this
function up with SioBrkSig.
Returns -1 : Control-BREAK was pressed.
0 : Control-BREAK was NOT pressed.
See Also SioBrkSig
PCL4P Reference Manual Page 4
+-------------+------------------------------------------------------------+
| SioBrkSig | Asserts, cancels, or detects BREAK signal. |
+-------------+------------------------------------------------------------+
Syntax function SioBrkSig(Port:Integer;Cmd:Char):Boolean;
(* Port: Port selected (COM1 thru COM16) *)
(* char Cmd: ASSERT, CANCEL, or DETECT *)
Remarks The SioBrkSig function controls the BREAK bit in the line status
register. The legal commands are:
ASSERT_BREAK ('A') to assert BREAK
CANCEL_BREAK ('C') to cancel BREAK
DETECT_BREAK ('D') to detect BREAK
ASSERT_BREAK, CANCEL_BREAK, and DETECT_BREAK are defined in
PCL4P.H. See TERM.C for an example of the use of SioBrkSig.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-6 : Illegal command. Expected 'A', 'C', or 'D'.
>0 : BREAK signal detected (DETECT command only)
See Also SioBrkKey
+-------------+------------------------------------------------------------+
| SioCTS | Reads the Clear to Send (CTS) modem status bit. |
+-------------+------------------------------------------------------------+
Syntax function SioCTS(Port:Integer):Integer;
(* int Port: Port selected (COM1 thru COM16) *)
Remarks The SioCTS function is used to read the Clear to Send (CTS)
modem status bit.
The CTS line is used by some error correcting modems to
implement hardware flow control. CTS is dropped by the modem to
signal the computer not to send data and is raised to signal
the computer to continue.
Refer to the User's Manual for a discussion of flow control.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : CTS is clear.
>0 : CTS is set.
See Also SioFlow, SioDSR, SioRI, SioDCD, and SioModem.
PCL4P Reference Manual Page 5
+-------------+------------------------------------------------------------+
| SioDCD | Reads the Data Carrier Detect (DCD) modem staus bit. |
+-------------+------------------------------------------------------------+
Syntax function SioDCD(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioDCD function is used to read the Data Carrier Detect
(DCD) modem status bit. Also see SioModem.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : DCD is clear.
>0 : DCD is set.
See Also SioDSR, SioCTS, SioRI, and SioModem.
+-------------+------------------------------------------------------------+
| SioDelay | Delays one or more timer tics. |
+-------------+------------------------------------------------------------+
Syntax function SioDelay(Tics:Integer):Integer;
(* Tics: # timer tics to delay *)
Remarks The SioDelay function is used to delay one or more timer tics,
where each timer tic is approximately 55 milliseconds (18.2 tics
to the second).
Returns zero.
See Also SioTimer
PCL4P Reference Manual Page 6
+-------------+------------------------------------------------------------+
| SioDone | Terminates further serial processing. |
+-------------+------------------------------------------------------------+
Syntax function SioDone(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioDone function terminates further serial processing.
SioDone MUST be called before exiting your application so that
interrupts can be restored to their original state. Failure to
do this can crash the operating system. If you forget to call
SioDone before exiting, be sure to re-boot your computer. You
can call SioDone even if SioReset has not been called, so it is
good practice to always call SioDone before exiting your
application.
Also note that SioDone dereferences the transmit and receive
buffers set up by SioRxQue and SioTxQue.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioReset.
+-------------+------------------------------------------------------------+
| SioDSR | Reads the Data Set Ready (DSR) modem status bit. |
+-------------+------------------------------------------------------------+
Syntax function SioDSR(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioDSR function is used to read the Data Set Ready (DSR)
modem status bit.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : DSR is clear.
>0 : DSR is set
See Also SioCTS, SioRI, SioDCD, and SioModem
PCL4P Reference Manual Page 7
+-------------+------------------------------------------------------------+
| SioDTR | Set, clear, or read Data Terminal Ready (DTR) status bit. |
+-------------+------------------------------------------------------------+
Syntax function SioDTR(Port:Integer;Cmd Char):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Cmd: DTR command (SET, CLEAR, or READ) *)
Remarks The SioDTR function controls the Data Terminal Ready (DTR) bit
in the modem control register. DTR should always be set when
communicating with a modem. Commands (defined in PCL4P.H) are:
SET_LINE ('S') to set DTR (ON)
CLEAR_LINE ('C') to clear DTR (OFF)
READ_LINE ('R') to read DTR
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-5 : Not one of 'S', 'C', or 'R'.
0 : DTR is OFF (READ_LINE Command).
>0 : DTR is ON (READ_LINE Command).
See Also SioRTS.
+-------------+------------------------------------------------------------+
| SioError | Displays error in text. |
+-------------+------------------------------------------------------------+
Syntax function SioError(Code:Integer):Integer;
(* Code: PCL4P error code *)
Remarks The SioError function displays the error in text corresponding
to the error code returned from a PCL4P function. During
development of a communications application, it is a good idea
to always test return codes, and print out their descriptions
with SioError.
Returns zero.
PCL4P Reference Manual Page 8
+-------------+------------------------------------------------------------+
| SioFIFO | Sets the FIFO trigger level (16550 UART only). |
+-------------+------------------------------------------------------------+
Syntax function SioFIFO(Port,LevelCode:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* LevelCode: FIFO level code (see below) *)
Remarks The SioFIFO function is used to enable both transmit & receive
FIFOs for 16550 UARTS, and to set the trigger level at which
receive interrupts are generated.
For example, if the FIFO level is set to 8, then the 16550 UART
will not generate an interrupt until 8 bytes have been received.
This reduces the number of interrupts generated. In order to
take advantage of the TX FIFO, use the PCL4P library with TX
interrupts enabled (PCL4P_2.OBJ).
In order to test if your port is a 16550 UART, call SioFIFO with
a LevelCode of other than FIFO_OFF. SioFIFO can be called for
the 8250 and 16450 UART without ill effect.
Code PCL4P.H Name Trigger Level
-1 FIFO_OFF Disable FIFO
0 LEVEL_1 1 byte
1 LEVEL_4 4 bytes
2 LEVEL_8 8 bytes
3 LEVEL_14 14 bytes
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : FIFO level set.
0 : FIFO level not set (not 16550).
+------------+-------------------------------------------------------------+
| SioFlow | Sets hardware (RTS/CTS) flow control. |
+------------+-------------------------------------------------------------+
Syntax function SioFlow(Port,Tics:Integer)
(* Port: Port selected (COM1 thru COM16) *)
(* Tics: # tics before time out *)
Remarks The SioFlow function is used to enable or disable hardware flow
control. Hardware flow control uses RTS and CTS to control data
flow between the modem and the computer. Refer to the User's
Manual for a discussion of flow control. To enable hardware
flow control, call SioFlow with Tics > 0.
"Tics" is the number of timer tics (18.2 per second) before a
call to SioPutc will time out because CTS was not set.
In order for hardware flow control to work correctly, your modem
must also be configured to work with hardware flow control, and
your computer to modem cable must have RTS and CTS wired
straight through. If you enable hardware flow control, do not
modify the RTS line (by calling SioRTS). To explicitly disable
hardware flow control, call SioFlow with Tics=-1.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
=0 : Flow control disabled.
>0 : Flow control enabled.
See Also SioPutc
PCL4P Reference Manual Page 9
+------------+-------------------------------------------------------------+
| SioGetc | Reads the next character from the serial line. |
+------------+-------------------------------------------------------------+
Syntax function SioGetc(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioGetc function reads a byte from the selected serial port.
The function will return immediately if no serial byte is ready.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-1 : If timed out.
>0 : Character read.
See Also SioUnGetc and SioPutc.
+---------------+----------------------------------------------------------+
| SioGetDiv | Reads the baud rate divisor. |
+---------------+----------------------------------------------------------+
Syntax function SioGetDiv(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioGetDiv function reads the baud rate divisor. The baud
rate can then be determined by the divisor:
Baud Divisor Baud Divisor Baud Divisor
300 0180 4800 0018 38400 0003
1200 0060 9600 000C 57600 0002
2400 0030 19200 0006 115200 0001
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : Baud rate divisor.
See Also SioParms.
PCL4P Reference Manual Page 10
+-------------+------------------------------------------------------------+
| SioInfo | Returns PCL4P library information. |
+-------------+------------------------------------------------------------+
Syntax function SioInfo(Cmd:Char):Integer;
(* Cmd: Command ('V' or 'I') *)
Remarks The SioInfo function returns an integer code corresponding to
either the (1) library version number or (2) whether or not
transmitter interrupts are enabled.
Returns Version ('V')
hex byte XY where version is denoted as X.Y
TX Interrupts ('I')
TRUE if transmitter interrupts are enabled in the library,
otherwise FALSE.
+-------------+------------------------------------------------------------+
| SioIRQ | Assigns an IRQ line to a port. |
+-------------+------------------------------------------------------------+
Syntax function SioIRQ(Port,IRQcode:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* IRQcode: IRQ number [IRQ2..IRQ7] *)
Remarks The SioIRQ function assigns an IRQ line to a port. That is,
SioIRQ maps an IRQ to a port. SioIRQ (like SioUART) must be
called before calling SioReset. Unless you have a non-standard
(COM1 & COM3 use IRQ4 while COM2 & COM4 use IRQ3) serial port
configuration (or don't want to run more than 2 ports
concurrently), you will not need to call SioIRQ. Be EXTREMELY
careful with SioIRQ as it can lock your machine up if given
incorrect information.
In particular, remember that your port hardware must generate
the interrupt that you have specified. You should refer to your
serial board hardware manual for specfic instructions in
configuring your hardware. Be sure to call SioPorts first to
setup DigiBoard ports if you have them. Refer to the PCL4P
Users Manual for additional information.
Returns -4 : No such port. Expect 0 to MaxPort.
-15 : Port already enabled. SioReset has already been called.
|17 : No such IRQ.
-18 : ISR limit (maximum of 4 PC IRQs) exceeded.
0 : Otherwise
See Also SioUART and SioPorts.
PCL4P Reference Manual Page 11
+-------------+------------------------------------------------------------+
| SioLine | Reads the line status register. |
+-------------+------------------------------------------------------------+
Syntax function SioLine(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioLine function reads the line status register. The
individual bit masks are as follows:
0x40 = Transmitter empty.
0x20 = Transmitter buffer empty.
0x10 = Break detected.
0x08 = Framming error.
0x04 = Parity error.
0x02 = Overrun error.
0x01 = Data ready.
The above are documented in the file PCL4P.H.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : Line status (rightmost byte of word).
See Also SioModem.
+-------------+------------------------------------------------------------+
| SioLoopBack | Does a UART loopback test. |
+-------------+------------------------------------------------------------+
Syntax function SioLoopBack(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks SioLoopBack makes use of the built in loopback test capability
of the INS8250 family UART. Normally SioLoopBack will never
need to be called unless you suspect that your UART is bad. Many
UARTs must be reset after running a loopback test.
Returns 0 : Loopback test is successfull.
-2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-12 : Loopback test fails.
PCL4P Reference Manual Page 12
+-------------+------------------------------------------------------------+
| SioModem | Reads the modem status register. |
+-------------+------------------------------------------------------------+
Syntax function SioModem(Port,Mask:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Mask: Modem function mask *)
Remarks The SioModem function reads the modem register. The bit
definitions for the function mask are as follows:
Bit Name Function Bit Name Function
7 DCD Data Carrier Detect 3 DeltaDCD DCD has changed
6 RI Ring Indicator 2 DeltaRI RI has changed
5 DSR Data Set Ready 1 DeltaDSR DSR has changed
4 CTS Clear To Send 0 DeltaCTS CTS has changed
Bits 4 through 7 represent the absolute state of their
respective RS-232 inputs. Bits 0 through 3 represent a change
in the state of their respective RS-232 inputs since last read.
Once UART register 3 is read, the Delta bits are cleared. Thus,
it is best not to depend on the Delta bits.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : Modem status (rightmost byte of word).
See Also SioCTS, SioDCD, SioDSR and SioRI.
+-------------+------------------------------------------------------------+
| SioParms | Sets parity, stop bits, and word length. |
+-------------+------------------------------------------------------------+
Syntax int SioParms(Port,Parity,StopBits,DataBits:Integer):Integer;
(* Port: Port selected (COM1 - COM16) *)
(* Parity: Parity code [0,1,2] *)
(* StopBits: Stop bits code [0,1] *)
(* DataBits: Word length code [0,1,2,3] *)
Remarks The SioParms function sets the parity, stop bits, and word
length. If the default parity (none), stop bits (1), or word
length (8) is not acceptable, then they can be changed by
calling SioParms. SioParms can be called either before or after
calling SioReset. See file PCL4P.H. (8 = default)
Value Description PCL4P.H Name
ParityCode: *0 no parity NoParity
1 odd parity OddParity
3 even parity EvenParity
StopBitsCode: *0 1 stop bit OneStopBit
1 2 stop bits TwoStopBits
WordLengthCode: 0 5 data bits WordLength5
1 6 data bits WordLength6
2 7 data bits WordLength7
*3 8 data bits WordLength8
Returns -4 : No such port. Expect 0 to MaxPort.
-7 : Bad parity code selected. Expecting 0 to 2.
|8 : Bad stop bits code. Expecting 0 or 1.
-9 : Bad word length code. Expecting 0 to 3.
See Also SioReset.
PCL4P Reference Manual Page 13
+-------------+------------------------------------------------------------+
| SioPorts | Sets number of PC & Digiboard / BOCA Board ports. |
+-------------+------------------------------------------------------------+
Syntax function SioPorts(NbrPorts,FirstPort,StatusReg,Code:Integer)
:Integer;
(* NbrPorts: Total number of ports *)
(* FirstPort: First DigiBoard port *)
(* StatusReg: DigiBoard Status Register *)
(* Code: PC_PORTS, DIGIBOARD, or BOCABOARD *)
Remarks The SioPorts function must be called before ANY other serial
functions. The purpose of the SioPorts function is to set the
total number of ports, the first DigiBoard (or BOCA board) port
and the DigiBoard (or BOCA board) status register address.
Once SioPorts is called, all COM ports starting with "FirstPort"
will be treated as DigiBoard (or BOCA board) ports. The default
setup is 4 standard PC ports and no DigiBoard or BOCA ports [
SioPorts(4,4,0,PC_PORTS) ].
Refer to ther PCL4P users maniual for more information on the
DigiBoard and BOCA board.
Returns -4 : No such port. Expect 0 to 9.
0 : No error (sets MaxPort to NumberPorts-1).
See Also SioUART, SioIRQ, and Code Examples.
+-------------+------------------------------------------------------------+
| SioPutc | Transmit a character over a serial line. |
+-------------+------------------------------------------------------------+
Syntax function SioPutc(Port:Integer;Ch:Char):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Ch: Character to send *)
Remarks The SioPutc function transmits one character over the selected
serial line.
If flow control has been enabled, then SioPutc may return a -1
(time out) if the number of tics specified in the SioFlow
function was exceeded waiting for the modem to raise CTS.
Refer to the User's Manual for a discussion of flow control.
If transmitter interrupts are enabled (there are separate
versions of the library for transmitter interrupts enabled),
then the byte is placed in the transmit buffer, awaiting
transmission by the PCL4P interrupt service routine.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-1 : Timed out waiting for CTS (flow control enabled)
See Also SioGetc and SioFlow.
PCL4P Reference Manual Page 14
+-------------+------------------------------------------------------------+
| SioRead | Reads any UART register. |
+-------------+------------------------------------------------------------+
Syntax function SioRead(Port,Reg:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Reg: UART register (0 to 7) *)
Remarks The SioReset function directly reads the contents of any of the
7 UART registers. This function is useful when debugging
application programs and as a method for verifying UART
contents. Refer to the PCL4P Users Manual for a discussion of
the 7 UART registers.
The line status register (register 5) can also be read with
SioLine while the modem status register (register 6) can also be
read with SioModem. Refer to the PCL4P User's Manual for a
discussion of the UART registers.
Returns -3 : No buffer available. Call SioRxBuf first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioLine and SioModem.
+-------------+------------------------------------------------------------+
| SioReset | Initialize a serial port for processing. |
+-------------+------------------------------------------------------------+
Syntax function SioReset(Port,BaudCode:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* BaudCode: Baud code or -1 *)
Remarks The SioReset function initializes the selected serial port.
SioReset should be called after calling SioParm and SioRxBuf but
before making any other calls to PCL4P. SioReset uses the
parity, stop bits, and word length value previously set if
SioParm was called, otherwise the default values (see SioParm)
are used.
Recall that COM1 and COM3 share the same interrupt vector and
therefore cannot operate simultaneously. Similiarly, COM2 and
COM4 cannot operate simultaneously. Any other combination of two
ports can be used.
By specifing NORESET (-1) for the baud rate code, the port will
NOT be reset. This is used to "take over" a port from a host
communications program that allows a "DOS gateway". External
protocols can be implemented this way. See SioBaud for a list
of the baud rate codes, or see "PCL4P.H".
Returns -3 : No buffer available. Call SioRxBuf first.
-4 : No such port. Expect 0 to MaxPort.
-11 : Bad baud rate code selected. Expecting 0 to 9.
|13 : UART undefined. SioUART(Port,0) was called previously.
|14 : Bad or missing UART. You may not have hardware present.
|15 : Port already enabled. SioReset has already been called.
-16 : Interrupt already in use.
See Also SioBaud, SioParms, SioRxBuf, SioDone, and SioUART.
PCL4P Reference Manual Page 15
+-------------+------------------------------------------------------------+
| SioRI | Reads the Ring Indicator (RI) modem status bit. |
+-------------+------------------------------------------------------------+
Syntax function SioRI(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioRI function is used to read the Ring Indicator
(RI) modem status bit. Also see SioModem.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : RI is clear.
>0 : RI is set (RING has occurred).
See Also SioDSR, SioCTS, SioDCD, and SioModem.
+-------------+------------------------------------------------------------+
| SioRTS | Sets, clears, or reads the Request to Send (RTS) line. |
+-------------+------------------------------------------------------------+
Syntax function SioRTS(Port:Integer;Cmd:Char):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Cmd: RTS command (SET, CLEAR, or READ) *)
Remarks The SioRTS function controls the Request to Send (RTS bit in the
modem control register.
The RTS line is used by some error correcting modems to
implement hardware flow control. RTS is dropped by the computer
to signal the modem not to send data, and is raised to signal
the modem to continue. RTS should be set when communicating with
a modem unless Flow Control is being used.
Refer to the User's Manual for a discussion of flow control.
Commands (defined in PCL4P.H) are:
SET_LINE ('S') - set RTS (ON)
CLEAR_LINE ('C') | clear RTS (OFF)
READ_LINE ('R') - read RTS
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-5 : Command is not one of 'S', 'C', or 'R'.
0 : RTS is OFF (READ_LINE Command).
>0 : RTS is ON (READ_LINE Command).
See Also SioFlow and SioDTR.
PCL4P Reference Manual Page 16
+------------+-------------------------------------------------------------+
| SioRxBuf | Sets up receive buffers. |
+------------+-------------------------------------------------------------+
Syntax function SioRxBuf(Port,Selector,SizeCode:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Selector: Receive buffer selector *)
(* SizeCode: Buffer size code *)
Remarks The SioRxBuf function passes the address selector and size of
the receive buffer to PCL4P. Recall that PCL4P requires a
receive buffer for each port in simultaneous operation since the
receive function is interrupt driven. It must be called before
any incoming characters can be received. SioRxBuf must be called
before SioReset. Buffer size codes are listed in "PCL4P.H".
Size Code Buffer Size PCL4P.H Name
4 128 bytes Size128
5 256 bytes Size256
6 512 bytes Size512
7 1024 bytes Size1024 or Size1K
8 2048 bytes Size2048 or Size2K
9 4096 bytes Size4096 or Size4K
10 8192 bytes Size8192 or Size8K
11 16384 bytes Size16384 or Size16K
12 32768 bytes Size32768 or Size32K
Returns -4 : No such port. Expect 0 to MaxPort.
-10 : Bad buffer size code. Expecting 0 to 11.
See Also SioReset and Code Examples.
+------------+-------------------------------------------------------------+
| SioRxFlush | Flushes (clears) the receive buffer. |
+------------+-------------------------------------------------------------+
Syntax function SioRxFlush(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioRxFlush function will delete any characters in the
receive buffer for the specified port. After execution, the
receive buffer will be empty. Call SioRxBuf after resetting a
port in order to delete any spurious characters.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioRxQue.
PCL4P Reference Manual Page 17
+-------------+------------------------------------------------------------+
| SioRxQue | Returns the number of bytes in the receive queue. |
+-------------+------------------------------------------------------------+
Syntax function SioRxQue(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioRxQue function will return the number of characters in
the receive queue at the time of the call. It can be used to
implement XON/XOFF flow control.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioRxFlush.
+------------+---------------------------------------------------------+---*
| SioTimer | Returns the number of system clock tics since midnight |
+------------+---------------------------------------------------------+---*
Syntax function SioTimer:LongInt;
Remarks The SioTimer function will return the number of system clock
tics since midnight, at 18.2065 tics per second. This function
is usefull for timing various functions.
See Also SioDelay
PCL4P Reference Manual Page 18
+------------+-------------------------------------------------------------+
| SioTxBuf | Sets up transmitter buffer. |
+------------+-------------------------------------------------------------+
Syntax function SioTxBuf(Port,Selector,SizeCode:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Selector: Receive buffer selector *)
(* SizeCode: Buffer size code *)
int Port; (* Port selected (COM1 thru COM16) *)
char *Buffer; (* Transmit buffer *)
int SizeCode; (* Buffer size code *)
Remarks The SioTxBuf function passes the address selector and size of
the transmit buffer to PCL4P, provided that you will link with a
PCL4P library with transmitter interrupts enabled. PCL4P
requires a transmit buffer for each port in simultaneous
operation if you are using the version of the library with
transmitter interrupts enabled (PCL4P2.LIB). SioTxBuf() must be
called before SioReset.
Size Code Buffer Size PCL4P.H Name
4 128 bytes Size128
5 256 bytes Size256
6 512 bytes Size512
7 1024 bytes Size1024 or Size1K
8 2048 bytes Size2048 or Size2K
9 4096 bytes Size4096 or Size4K
10 8192 bytes Size8192 or Size8K
11 16384 bytes Size16384 or Size16K
12 32768 bytes Size32768 or Size32K
This function is not used unless the transmitter interrupts are
enabled (PCL4P_2.OBJ). Refer to the PCL4P Users Manual for
information on transmitter (TX) interrupts.
Returns -4 : No such port. Expect 0 to MaxPort.
-10 : Bad buffer size code. Expecting 0 to 11.
See Also SioRxBuf, SioReset and Code Examples.
+------------+-------------------------------------------------------------+
| SioTxFlush | Flushes (clears) the transmitter buffer. |
+------------+-------------------------------------------------------------+
Syntax function SioTxFlush(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioTxFlush function will delete any characters in the
transmit buffer for the specified port, provided that you will
link with a PCL4P library with transmitter interrupts enabled.
After execution, the transmit buffer will be empty.
Once this function is called, any character in the transmit
buffer (put there by SioPutc) will be lost and therefore not
transmitted. This function is not used unless the transmitter
interrupts are enabled Refer to the PCL4P Users Manual for
information on transmitter (TX) interrupts.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioTxQue.
PCL4P Reference Manual Page 19
+------------+-------------------------------------------------------------+
| SioTxQue | Returns the number of bytes in the transmit queue. |
+------------+-------------------------------------------------------------+
Syntax function SioTxQue(Port:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *)
Remarks The SioTxQue function will return the number of characters in
the transmit queue at the time of the call, provided that you
will link with a PCL4P library with transmitter interrupts
enabled.
This function is not used unless the transmitter interrupts are
enabled. Refer to the PCL4P Users Manual for information on
transmitter (TX) interrupts.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioTxFlush.
+------------+-------------------------------------------------------------+
| SioUART | Sets the UART base address. |
+------------+-------------------------------------------------------------+
Syntax function SioUART(Port,Address:Integer):Integer;
(* Port: Port selected (COM1 thru COM16) *) int Port; (* COM1 to COM4 *)
(* Address: UART address *)
Remarks The SioUART function sets the UART base address for the
specified port. SioUART must be called before SioReset in order
to have effect. Be extremely sure that you know what you are
doing! Note that PCL4P uses the standard PC/XT/AT port
addresses, interrupt request lines, and interrupt service
vectors. Therefore, this function is only needed for
non-standard ports.
Returns >0 : The previous base address for this port.
-4 : No such port. Expect 0 to MaxPort.
-15 : Port already enabled. SioReset has already been called.
See Also SioPorts, SioIRQ, and SioReset.
PCL4P Reference Manual Page 20
+------------+-----+-------------------------------------------------------+
| SioUnGetc | "Un|gets" the last character read with SioGetc(). |
+------------+-----+-------------------------------------------------------+
Syntax function SioUnGetc(Port:Integer;Ch:Char):Integer;
(* Port: Port selected (COM1 thru COM16) *)
(* Ch: Character to unget *)
Remarks The SioUnGetc function returns ("pushes") the character back
into the serial input buffer. The character pushed will be the
next character returned by SioGetc. Only one character can be
pushed back. This function works just like the "ungetc" function
in the C language.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioReset.
Function Sumary
+-------------+----------+----------+----------+----------+
| Function | Arg1 | Arg2 | Arg3 | Arg4 |
+-------------+----------+----------+----------+----------+
| SioBaud | Port | BaudCode | | |
| SioBrkSig | Port | Cmd | | |
| SioCTS | Port | | | |
| SioDCD | Port | | | |
| SioDone | Port | | | |
| SioDSR | Port | | | |
| SioDTR | Port | Cmd | | |
| SioError | Code | | | |
| SioFIFO | Port | FIFOcode | | |
| SioFlow | Port | | | |
| SioGetc | Port | | | |
| SioGetDiv | Port | | | |
| SioInfo | Cmd | | | |
| SioIRQ | Port | IRQcode | ISRcode | |
| SioLine | Port | | | |
| SioLoopBack | Port | | | |
| SioModem | Port | Mask | | |
| SioParms | Port | Parity | StopBits |WordLength|
| SioPorts | NbrPorts | FirstDBP |StatusReg | Code |
| SioPutc | Port | Ch | | |
| SioRead | Port | Register | | |
| SioReset | Port | BaudCode | | |
| SioRI | Port | | | |
| SioRTS | Port | Cmd | | |
| SioRxBuf | Port | Buffer | SizeCode | |
| SioRxFlush | Port | | | |
| SioRxQue | Port | | | |
| SioTxBuf | Port | Buffer | SizeCode | |
| SioTxFlush | Port | | | |
| SioTxQue | Port | | | |
| SioUART | Port | Address | | |
| SioUnGetc | Port | Ch | | |
+-------------+----------+----------+----------+----------+
PCL4P Reference Manual Page 21
Error Code Summary
+------+--------------------------------------------------------+
| Code | Description |
+------+--------------------------------------------------------+
| 0 | No error. |
| -1 | Timeout waiting for I/O. |
| |2 | Port not enabled. Call SioReset first. |
| |3 | No buffer available. Call SioRxBuf first. |
| |4 | No such port. Expect 0 to MaxPort. (COM1 = 0) |
| |5 | Expected 'S', 'C', or 'R' as 2nd argument. |
| |6 | Expected 'A', 'C', or 'D' as 2nd argument. |
| |7 | Bad parity code specified. Expected 0 to 7. |
| |8 | Bad stop bits code specified. Expected 0 or 1. |
| -9 | Bad wordlength code specified. Expect 0 to MaxPort. |
| -10 | Bad buffer size code specified. Expected 0 to 11. |
| |11 | Bad baud rate code. Expected 0 to 9. |
| |12 | Loopback test fails. |
| |13 | UART undefined. |
| |14 | Missing or bad UART. (no UART hardware ?) |
| |15 | Port already enabled. |
| |16 | ISR (interrupt) already in use. |
| |17 | No such IRQ. (Should be 2 to 7) |
| |18 | ISR limit (maximum of 4 PC IRQs) exceeded. |
+-+----+--------------------------------------------------------+
Code Examples
SioRxBuf() Example
DigiBoard Example
BOCA Board Example
PCL4P Reference Manual Page 22