SETBIT(OPCSDEFS)	Optical Printer Control System	  SETBIT(OPCSDEFS)

    NAME
        setbit - set bit(s) on a port

    USAGE
        setbit [port] [mask] [softlatch]    # (values hex!)

    EXAMPLES
        setbit 0378 04 0        # lpt1 port bit #2 (1=#0, 2=#1, 4=#2)
        setbit 0306 01 1        # kuper card logic connector,
	                        # bit #1 (note softlatch=1)

    DESCRIPTION
        This command enables bits on port, based on the mask. 
	Basically, the mask is ORed with the port's current value.

	[port] is the port number in hex.

	[mask] is a hex byte value which is OR'ed with the current
	value at the port. (In the case of softlatching, the software latched
	value is OR'ed with the mask, to create the new value that it output
	to the port)

        [softlatch] is usually '0' UNLESS [port] is a write only
	port. When [softlatch] is '1', the software maintains a software
	'latch' for that port, so that it never reads the port to determine
	which bit is set. This is the case for Kuper's logic port, whose
	OUTPUT port (usually at 0306) is the same address as the logic 
	INPUT port, which contains totally different information. (Remember 
	that in order for software to change ONE of the 8 bits in a port, the
	software must know the settings of the other 7 bits, and maintain them
	when the port is rewritten with the new bit setting)

    BUGS
        o With [softlatch] set to 1, only ports 0x0000 - 0x07ff are allowed.
	  Any ports referenced above 0x07ff with [softlatch] enabled will
	  cause an error.

        o External programs that modify a port defined to OPCS as a [softlatch]
	  port (such as would be the case for the kuper logic I/O port) should
	  beware that the OPCS software will be maintaining it's own internal
	  latch for that port, and this latch value will not reflect any 
	  changes that have been made by the external program.
	
	  This is not really a bug, just a fact that cannot be changed. It 
	  is usually bad hardware practice to make WRITE ONLY ports, since 
	  different programs cannot co-communicate with such a port, unless 
	  some common data area is arranged to latch the settings, which can
	  be hard to enforce on PCs.

    SEE ALSO
	DEENERGIZE(OPCSDEFS)  - define port/bit to deenergize motors
	ALLSTOP(OPDSDEFS)     - define port/bit to detect the allstop key
	BUCKLE(OPCSDEFS)      - define port/bit to detect film buckles
	VIEWER(OPCSDEFS)      - define port/bit to detect viewer open
	TRIPSWITCH(OPCSDEFS)  - define port/bit to detect trip switches
	SETBIT(OPCSDEFS)      - set bit(s) on a port
	CLRBIT(OPCSDEFS)      - clear bit(s) on a port
	XORBIT(OPCSDEFS)      - invert bit(s) on a port

    ORIGIN
	Version K1.12d+ Gregory Ercolano, Venice California 03/04/98
© Copyright 1997 Greg Ercolano. All rights reserved.