’H’eading:
Alto-1822 Interface, PROMs
Page Numbers: Yes X: 527 Y: 10.5"
Inter-Office Memorandum
ToFileDateSeptember 18, 1978
FromL. StewartLocationPalo Alto
SubjectAlto-1822 InterfaceOrganizationSSL
PROM contents
XEROX
Filed on: [Ivy]<Alto-1822>AIproms.memo
Abstract
The Alto-1822 interface contains three PROM driven finite state machines. This memo presents an updated view of how they are supposed to work. Included here are state tables for two of the PROMs, and DRAW generated state diagrams. The bcpl program which creates the .MB file for the PROM blower is filed as [Ivy]<Alto-1822>AIProms.bcpl. For a complete understanding of how the finite state machines work, reference to the program is invaluable.
Comments
The finite state machines handle the bit by bit handshaking protocol specified by BBN-1822 for local host and distant host IMP interfaces. The choice of 2-way or 4-way handshaking on the input side is made by a wiring change in the "There’s Your Input Bit" synchronizer. For output, the choice is made by the IMP.
Input
Upon receipt of the task function IIEnbl, the input FSM begins assembly of a 16 bit word from the IMP. Usually, the machine will accept the 16th bit, set the hardware input wakeup signal, and stop. If the "Last Input Bit" signal arrives during the middle of a word, the FSM will fill out the word with zeros before setting the wakeup. In either case, a task function (IRead) must eventually read the input data register. If the hardware or software dies, the Alto reset lines will clear the wakeup.
The SIO Start input function is used only to wake up the 1822 microcode - which does an IIEnbl.
Output
Output is initiated by the SIO start output function. This generates a signal which drops the output machine into the wakeup state.
Upon receipt of the task function IWrite (which loads the output shift register from the bus), the output FSM will transmit a 16 bit word to the IMP. Usually, the machine will transmit the 16th bit, set the hardware output wakeup signal, and stop. If the "Last Word" signal is set during the middle of the word (by a task function), the 1822 "Last Output Bit" signal will be set during transmission of the 16th bit. There is no provision for transmitting partial words. In either case, the task function IOClr or hardware reset must eventually clear the output wakeup.
Wakeup Control
Serves as a priority encoder for the four possible wakeup conditions. Also remembers whether any SIO requests are outstanding.
Input PROM
StateEventNew StateActions
000IDLEIIEnbl (enable input)001ctr←15
RFNInB←1

001
Wait for bitTYInBS (bit available)010RFNInB←0
Shift
Pad←LInB

010
Clock data(next clock)101ctr←ctr+1

101
HandshakingTYInBS’ & ctr#15001RFNInB←1
wait & Pad’
TYInBS’ & ctr#15010Shift
& Pad
TYInBS’ & ctr=15111IWake←1
& Pad
TYInBS’ & ctr=15011IWake←1
& Pad

111
WakeupIRead000bus←sr
Pad←0
IWake←0

011
Last WakeupIRead110branch
bus←sr

110
Wakeup DelayIRead’111
Output PROM
StateEventNew StateActions
000IDLEIWrite (write function)001ctr←0
sr←bus
IOStrt011OWake←1

001
Wait for readyRFNOS (Imp ready)010TYOB←1

010
Send a bitRFNOS’ & ctr#15101TYOB←0
Shift
RFNOS’ & ctr=15011TYOB←0
OWake←1

101
Clock bitctr#14001ctr←ctr+1
ctr=14001ctr←ctr+1
LOutB←LastWd

011
WakeupIOClr000OWake←0