Stanford 1822 Interface

From Computer History Wiki
Revision as of 23:58, 20 October 2021 by Jnc (talk | contribs) (Avoid redir)
Jump to: navigation, search

The Stanford 1822 Interface (the name is made up; examining contemporaneous documentation does not reveal an official or universally-used name) was an IMP interface (technically, it could connect to anything that provided a BBN-1822 bit-serial interface, including Packet Radio Network interfaces, not just ARPANET IMPs) for all machines (mostly PDP-11s) with either UNIBUS (via a DR11-C parallel interface) or QBUS (via a DRV11).

Since it used the programmed I/O of the underlying DR11-C/DRV11, with an interrupt for every byte, it was not suitable for high-throughput applications.

It consisted of a dual-width board with three Berg connector headers on it; two held flat cables going to the parallel interface, which connected up to the host computer's input/output bus. A 26-pin Berg header held a cable which led to the standard round Amphenol connector used for the 1822 interface. This board plugged into either the UNIBUS or QBUS backplane, near the parallel interface board.

Registers

The device had three control and buffer registers, which could be configured to any three sequential word locations in the I/O page. The first was normally configured to addresses 767770-767774; the second to 767760-767764, the third to 767750-767754, and so on.

Register Abbreviation Address
Control and Status Register SCSR 0167770
Output Buffer Register SOUTBUF 0167772
Input Buffer Register SINBUF 0167774

In the register contents (below), bits which are read/write or unused are shown in normal font, those which are read-only are in italics.

"Reading or writing into a register while it is in the process of transferring a byte may cause some bits to become lost and/or out of synchronization. This can waiting until be avoided by either an interrupt or interrupt request (as seen in the status register) is present before accessing the register."

Status Register (SCSR)

RDONE Unused TDONE TINTE RINTE Unused RENABL TENABL
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
  • RDONE - Receive done, interrupt requested
  • TDONE - Transmit done, interrupt requested
  • TINTE - Transmit Interrupt Enable
  • RINTE - Receive Interrupt Enable
  • RENABL - Receive data enable
  • TENABL - Transmit data enable

Output Buffer Register (SOUTBUF)

Unused HSTCLR HSTPWR LSTBYT Unused OUT7 <-> OUT0
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
  • HSTCLR - Open Host Ready relay
  • HSTPWR - Close Host Ready relay
  • LSTBYT - Last byte sent

"Either bit 13 OR bit 12 should be set. NOT BOTH."

Input Buffer Register (SINBUF)

IMPODD IMPDWN HSTMRY IMPMRY LSTBYT Unused IN7 <-> IN0
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
  • IMPODD - IMP was down or last byte received
  • IMPDWN - "IMP has been down since the last interrupt was serviced"
  • HSTMRY - Host relay check, 0 = closed
  • IMPMRY - IMP relay check, 0 = closed
  • LSTBYT - Last byte received

"The interface will receive bits until either it is full, or it receives the last IMP data bit (LIDB) signal. At this point the interface stops and requests an interrupt. It will not accept any new bits until the present load of bits is read from INBUF. ... Reading the receive register clears the receive buffer making it ready for another byte. Thus program testing of control bits should be done after the contents of the receive register have been moved elsewhere."

External links