Component: 	TParallelPort
Description:	Simple control to access the printer port hardware
Version:	1.0 (16-bit/32-bit included, compiles under Delphi 1 or 2)
Platforms:	Win3.x or Win95 (NOT WinNT) 
Author:		Richard Shotbolt, Norwich, UK
Email:		100327,2305@compuserve.com
Date:		14 May 1996

For many hardware designers, the parallel ports (LPT1..3) offer the only
means of fast communication with the real world. Perhaps even this little
luxury will soon be denied us as Microsoft forces us into the world of
virtual everything. They reprimand people who do direct port access
under Win95, although they had to retain this for compatibility with 3.1.
This control will definitely NOT work under NT - the thin end of the wedge!
 
TParallelPort is a simple little control which attempts to grab a specified
parallel port in a Windows-legal way. If successful, it then gives you
exclusive usage of the data port and all the control outputs and status
inputs to have your wicked way with. Although you might think that access
via a control would be slow, tests show that a port line can be toggled in
about 3 microseconds on most computers.

Freeware, enjoy. I accept no responsibility for interference or interaction
with other installed parallel port devices or for any possible corruption
of data that may result. Take care when connecting any homebrewed devices
to your parallel port!

---------------------------------------------------------------------

<< Public Properties >>

Control		Read/write the Control Register

<< Published Properties >>

All the following properties can be viewed and changed (where permitted)
from the Object Inspector and at run time. Boolean properties always
represent the actual voltage levels on the pins.

Port		TPortNumber (values LPT1, LPT2, LPT3 or None allowed).
		Open/close a parallel port. To open a port, call using one
		of the permitted values.

		e.g. ParallelPort1.Port := LPT1;

		To verify whether the port is now available, read the 
		property and see whether it has been set. If unsuccessful,
		it will return the value None.

		To close the port, use ParallelPort1.Port := None;

BaseAddress	Word. Reads the base address of the selected port. This is
		usually either $378, $278 or $3BC. If no port is selected,
		the property returns zero (object inspector shows decimal
		equivalents e.g. 888, 632 or 956).

Data		Byte. Reads and writes the output data port.

		e.g. ParallelPort1.Data := $65;

Status		Byte. Read only, returns the contents of the status register.
---------------------------------------------------------------------
Control Outputs

With the following boolean properties, True means a +5V level on the
corresponding line, and False represents 0V.

Strobe		Boolean. Read/write.

		e.g. ParallelPort1.Strobe := True; (strobe goes high)
		
AutoFeed	Boolean. Read/write.
Initialize	Boolean. Read/write.
SlctIn		Boolean. Read/write.
---------------------------------------------------------------------
Status Inputs

Error		Boolean. Read only.

		e.g. ErrorInput := ParallelPort1.Error;

Slct		Boolean. Read only.
PaperEnd	Boolean. Read only.
Acknlg		Boolean. Read only.
Busy		Boolean. Read only.

---------------------------------------------------------------------

<< Installation for 16 or 32 bits >>

Backup your 'complib.dcl' or 'cmplib32.dcl' file as a precaution.
Select 'Component', 'Install'.
Select 'Add', 'Browse'.
Select the directory containing the ParaCode files.
Select 'ParaCode' and click OK on each box that appears.
The TParallelPort control will be added to the 'Samples' section of your
component toolbar. There is no special icon assigned.
If anything goes wrong, restore your backed-up complib.dcl or cmplib32.dcl
and try again after correcting any obvious problems.
