Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xp(4S) — OS/MP 4.1A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

tip(1C)

uucp(1C)

mcp(4S)

termio(4)

ldterm(4M)

ttcompat(4M)

zs(4S)

XP(4S)  —  DEVICES AND NETWORK INTERFACES

NAME

xp − Xylogics 781 multi-terminal interface

CONFIG — SOLBOURNE SYSTEM

devicexp0 at vme16d16 ? csr 0x620
dma vme24d16 flags 0xffff priority 5 vector xpintr 0x88
devicexp1 at vme16d16 ? csr 0x640
dma vme24d16 flags 0xffff priority 5 vector xpintr 0x89
devicexp2 at vme16d16 ? csr 0x660
dma vme24d16 flags 0xffff priority 5 vector xpintr 0x8a
devicexp3 at vme16d16 ? csr 0x680
dma vme24d16 flags 0xffff priority 5 vector xpintr 0x8b

SYNOPSIS

#include <fcntl.h>
#include <sys/termios.h>
open("/dev/ttyxy", mode);
open("/dev/ttydn", mode);
open("/dev/cuan", mode);

DESCRIPTION

The Xylogics 781 card provides 16 asynchronous serial communication lines with modem control and hardware flow control.  Each port supports those termio(4) device control functions specified by flags in the c_cflag word of the termios structure and by the IGNBRK, IGNPAR, PARMRK, or INPCK flags in the c_iflag word of the termios structure are performed by the xp driver.  All other termio(4) functions must be performed by STREAMS modules pushed atop the driver; when a device is opened, the ldterm(4M) and ttcompat(4M) STREAMS modules are automatically pushed on top of the stream, providing the standard termio(4) interface. 

Bit i of flags may be specified to say that a line is not properly connected, and that the line i should be treated as hard-wired with carrier always present.  Thus specifying flags 0x0004 in the specification of xp0 would treat line /dev/tty02 in this way. 

Minor device numbers in the range 0 − 63 correspond directly to the normal tty lines and are named /dev/ttyXY, where X is the physical board number (0 − 3), and Y is the line number on the board as a single hexadecimal digit.  (Thus the first line on the first board is /dev/tty00, and the sixteenth line on the third board is /dev/tty2f.) 

To allow a single tty line to be connected to a modem and used for both incoming and outgoing calls, a special feature, controlled by the minor device number, has been added.  Minor device numbers in the range 128 − 191 correspond to the same physical lines as those above (that is, the same line as the minor device number minus 128). 

A dial-in line has a minor device in the range 0 − 63 and is conventionally renamed /dev/ttydn, where n is a number indicating which dial-in line it is (so that /dev/ttyd0 is the first dial-in line), and the dial-out line corresponding to that dial-in line has a minor device number 128 greater than the minor device number of the dial-in line and is conventionally named /dev/cuan, where n is the number of the dial-in line. 

The /dev/cuan lines are special in that they can be opened even when there is no carrier on the line.  Once a /dev/cuan line is opened, the corresponding tty line can not be opened until the /dev/cuan line is closed; a blocking open will wait until the /dev/cuan line is closed (which will drop Data Terminal Ready, after which Carrier Detect will usually drop as well) and carrier is detected again, and a non-blocking open will return an error.  Also, if the /dev/ttydn line has been opened successfully (usually only when carrier is recognized on the modem) the corresponding /dev/cuan line can not be opened.  This allows a modem to be attached to e.g.  /dev/ttyd0 (renamed from /dev/tty00) and used for dialin (by enabling the line for login in /etc/ttytab) and also used for dialout (by tip(1C) or uucp(1C)) as /dev/cua0 when no one is logged in on the line.  Note: the bit in the flags word in the configuration file (see above) must be zero for this line, which enables hardware carrier detection. 

WIRING

The Xylogics card has 3 50-pin cables, each cable supporting a maximum of six 8-wire terminals.  The cable uses a mini-SCSI-II type connector on the controller side, and a SCSI-I/TELCO type connector on the terminal side.  The first cable supports ports (0,1,2,3,4,5), the second cable support ports (6,7,8,9,a,b), and the third cable supports ports (c,d,e,f,-,-).  Note that the last two ports on the third cable are not used. 

A “harmonica” which attaches to the TELCO connector breaks the cable signals out into six 8-wire RJ-45 "phone" connectors.  The wiring of each RJ-45 connector conforms to the Universal Circuit Ordering Code (USOC) standard. 


                   -------
     --------------|     |--------------
     |    pin side of female RJ-45     |
     |  8   7   6   5   4   3   2   1  |
     -----------------------------------
  8 WIRE CTS DSR GND RXD DCD TXD DTR RTS
 6 WIRE     DSR GND RXD DCD TXD DTR
 4 WIRE         GND RXD DCD TXD

IOCTLS

The standard set of termio ioctl() calls are supported by xp. 

The state of the CRTSCTS flag in the c_cflag word has no effect; no output will be generated unless CTS is high.  Breaks can be generated by the TCSBRK, TIOCSBRK, and TIOCCBRK ioctl() calls.  The modem control lines TIOCM_CAR, TIOCM_CTS, TIOCM_RTS, and TIOCM_DTR are provided. 

The input and output line speeds may be set to any of the speeds supported by termio.  The speeds can be set independently.  Two baud rate tables are supported based upon jumper configuration of the board.  The jumper configuration is automatically communicated to the driver. 

ERRORS

An open() will fail if:

ENXIO The unit being opened does not exist. 

EBUSY The dial-out device is being opened and the dial-in device is already open, or the dial-in device is being opened with a no-delay open and the dial-out device is already open. 

EBUSY The unit has been marked as exclusive-use by another process with a TIOCEXCL ioctl() call. 

EINTR The open was interrupted by the delivery of a signal. 

FILES

/dev/tty[0-3][0-9a-f]
hardwired tty lines

/dev/ttyd[0-9a-f] dialin tty lines

/dev/cua[0-9a-f] dialout tty lines

SEE ALSO

tip(1C), uucp(1C), mcp(4S), termio(4), ldterm(4M), ttcompat(4M), zs(4S)

DIAGNOSTICS

Most of these diagnostics “should never happen” and their occurrence usually indicates problems elsewhere in the system. 

xp%d: cannot read FER
The Fatal Error Register cannot be read after failing self test.

xp%d: failed in self test%x
The controller failed self test with the specified code.

xp%d: fw%s config:%s
This messages occurs when the controller is found during boot.  It contains hardware, firmware, and driver revision level information.

xp%d: can’t allocate idb
This message should never occur.

xp%d: can’t allocate input buffers
This message should never occur.

xp%d: can’t reset (cause)
This message should never occur.

xp%d,%x: BUSY and FCXMIT are set
This message should never occur.

xp%d,%x: unexpected transmit interrupt
This message should never occur.

xp%d,%x: silo overflow
Too many characters have been received by the xp firmware without being read by the driver.

xp%d,%x: command error
This message should never occur.

xp%d,%x: bus error
The controller experienced a VMEbus error while transferring data. This message should never occur.

xp%d,%x: time out error
The controller did not complete its VMEbus cycle within a reasonable amount of time. This message should never occur.

xp%d,%x: OCTART overflow
Too many characters have been received by the xp hardware without being read by the firmware.

xp%d,%x: unknown interrupt, rpt=0x%x
This message should never occur.

xp%d,%x: ring buffer overflow
The drivers ring buffer was filled faster than it could drain after streams buffers are all used.  This can be caused by data comming in on an open port and the application never issuing a read to pick up the data.

Solbourne Computer, Inc.  —  13 December 1989

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026