Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Apr 2020 20:47:27 +0200
From:      Polytropon <freebsd@edvax.de>
To:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Direct control of parallel port data lines
Message-ID:  <20200404204727.cd2a4042.freebsd@edvax.de>

next in thread | raw e-mail | index | archive | help
For an "external relay control unit", I need to activate
certain lines of the parallel port. I wish to address
the 8 output lines of the port. How is this done on
FreeBSD?

On DOS (not that DOS, the other one), it was quite simple.
Depending on which parallel port you wanted to address, you
simply needed to put the correct byte to a port whose
address would be assigned to the parallel port you wanted
to address (usually 0x378, 2nd one was 0x3BC, 3rd 0x278).
In ye olde Borland C, you would then do:

	outportb(portnum, databyte);

The "composition" of the databyte was easy: You could
control each of the 8 output lines of the port by
having their corresponding bit set or cleared, so for
example 1 | 2 | 8 | 256 would be bits (and therefore
activated lines) 1, 2, 4, and 8.

The rule was simple: line n -> bit 2^n; And for the
pins of the port: line n -> pin n+1 (D0 - D7).

To each of the 8 lines, a 2 x 7400 + SF123 + relay unit
was attached, and you could then control anything with
the relays. (By cascading, you could get more than 8
output lines.)

All this is a memory artifact from more than 30 years
ago... it needs to be reactivated... ;-)

Because Borland C here of course required "#include <dos.h>",
it doesn't work on FreeBSD.

What's the correct in FreeBSD equivalent here?

If possible, I want to use C for this task. I checked
"man ppc" and "man ppi", but I don't find their content
convincing, probably not what I'm looking for.

What am I _actually_ looking for?



-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200404204727.cd2a4042.freebsd>