XORBIT(OPCSDEFS)	Optical Printer Control System	  XORBIT(OPCSDEFS)

        xorbit - flip bit(s) on a port. (ie. invert, exclusive-or)

        xorbit [port] [mask] [softlatch]    # (values hex!)

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

        This command flips bits on a port, based on the mask. 
	All bits specified by the mask are inverted. (set will be clear,
	clear will be set, etc)

	[port] is the port number in hex.

	[mask] is a hex byte value indicating the bits to be flipped
	on that 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)

        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.

	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

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