Home

0x378

0x378 is the conventional I/O port base address used by the first parallel port (LPT1) on IBM PC compatibles. This address identifies the hardware interface that connects a computer to devices such as printers through a parallel interface, a common arrangement in the 1980s and 1990s.

In the classic parallel port layout, three 8-bit registers are accessed via consecutive I/O ports starting at

Historically, 0x378 and its neighboring ports formed the standard interface for the PC’s parallel printer ports.

In modern computing, dedicated parallel ports are less common, with USB printers and networked devices becoming

0x378.
The
data
register
resides
at
the
base
address
(0x378)
and
provides
the
D0–D7
data
lines
to
the
connected
device.
The
status
register
is
at
base+1
(0x379)
and
exposes
input
lines
from
the
peripheral,
such
as
signals
indicating
readiness,
paper
status,
or
errors.
The
control
register
is
at
base+2
(0x37A)
and
controls
host-to-device
handshake
signals,
such
as
strobe
and
other
control
lines.
Many
of
the
status
and
control
lines
have
inverted
logic
in
practice,
depending
on
the
hardware
and
device.
LPT1
typically
shared
its
I/O
range
with
other
legacy
peripherals,
and
additional
parallel
ports
(LPT2,
LPT3)
were
mapped
to
other
base
addresses
such
as
0x278
and
0x3BC.
The
exact
mapping
could
be
configured
by
the
system
BIOS,
but
0x378
remained
the
canonical
base
address
in
many
systems.
prevalent.
When
present,
access
to
0x378-based
ports
is
usually
provided
through
operating
system
drivers
or
specialized
libraries
that
manage
the
I/O
port
operations
and
ensure
proper
privileges.
Programming
typically
involves
low-level
I/O
access,
using
port
I/O
instructions
in
environments
that
permit
direct
hardware
access
or
through
higher-level
driver
interfaces
in
contemporary
OSes.