Close encounters of the CADR kind

Alfred M. Szmidt ams at gnu.org
Tue Jan 17 03:04:35 CST 2017


   Noel Chiappa wrote:
   > My memory of the CONS machine is that, like the Chess Machine, it was
   > a special purpose CPU hung off the AI PDP-10. (Or maybe the Chess
   > Machine was attached to MC? I forget.)

   Would that Chess Machine be the one called CHEOPS?

   And oh, since I may have the attention of LispM hackers, I'll take this
   opportutity to ask what CAIOS was?  It seems intimately related to
   Chaosnet.  Maybe an earlier name for Chaos, or a Chaosnet hardware device?

CHAOS;ARC 1 contains some interesting bits, not that they make it
clearer.  Early name for Chaos?

	PDP10 CAIOS			2037 EDT  Saturday, 10 July 1976	DAM
	
	   It seems more reasonable for ML to have an interface on it directly
	than to use e.g. a crufty DL10.  Maybe other 10s want to go direct, also?
	
	   What needs to be done to attach a caios net interface directly
	to a pdp10 I/O bus, rather than via an 11.
	
	   Both ML and MC have open-collector type TTL I/O buses.  The cable
	requirements are a little different, but otherwise they appear to
	be about the same.  The ML one terminates in the Morton box.  The MC one
	starts at the impterface and doesn't go anywhere at the moment.
	Probably two cables could be arranged that presented the same interface
	at one end, and at the other end one had DEC connectors with the ML
	pinout, and the other had Augat-board connectors with the MC pinout.
	As far as I know AI doesn't have a TTL I/O bus (i.e. a set of level
	converters designed for more than one device.)  Should it be given
	one or should it work through one or more pdp11s?  DM has one, but
	who cares?
	
	   [F once said something about using tristate for the MC TTL I/O
	bus, but according to the prints it's unibus-style open collector.]
	
	   Putting a caios net interface on a 10 seems pretty easy since it needn't
	use DMA or even hairy interrupts; as on the 11 the data can be copied
	in and out of the buffer under program control.  The data probably ought
	to go in and out in 32 bit chunks rather than 16.  One problem is there
	is no SSYN on the I/O bus.  The receive and transmit buffers shift one
	bit each tick of the 8 MHz clock, so it would take 4 micro seconds to
	do it.  On the transmit side, a DATAO AOBJN loop might possibly be too
	fast, although there is supposed to be only one I/O bus operation every
	4 micro seconds (is this true on the KL?  I seem to recall some "fast
	I/O bus" option.)
	
	   On the receive side, the way the current interface works is when
	the 11 reads from CAIRBF, it stalls the 11 while the bits are shifted
	out of the RAM into the 16-bit shift register, then when the bits
	are in the shift register gives SSYN.  On a pdp10 the processor would
	expect the bits to be there 1 usec after it gave the DATAI signal,
	which isn't enough time.  One possibility is to change the design
	so the bits shift after the DATAI instead of before.  Then the first
	DATAI would input garbage, but initiate shifting in of the first data
	word which the second DATAI would pick up.  Again, if the 10 was in
	a DATAI AOBJN loop it might DATAI faster than the interface could shift
	the bits over.
	
	   One way to add delay to insure that the 10 doesn't DATAI or DATAO
	too fast is to require a CONI in that loop.  The receive side might
	want one anyway so it could check whether it had read the whole message
	yet.
	
	   Another detail is the pdp11 versus pdp10 byte reversal lossage.  I
	suggest there be a CONO'able flag which controls multiplexors to and
	from the I/O bus so that the 10 can select either to have the bits
	in correct order for 16-bit bytes or for 8-bit bytes.  So it would
	read or write the header of a packet in 16-bit mode, switch to 8-bit
	mode for the data, and switch back to 16-bit mode for the trailer (the
	destination/source/crc words).  All this time it would be transferring
	32 bits on each I/O bus cycle.
	
	   Another problem is that the source my# kludge which works by
	putting the number on the unibus and reading it back wouldn't work
	because of the 32 bit words (maybe other reasons, too.)  This could
	be changed.  E.g. a "last word" CONO bit which is set before the
	DATAO.  Then the 10 can DATAO a word with the destination # in the
	high 16 bits and the hardware can fill in the source # in the low 
	16 bits.
	
	   There needn't be any provision for the 10 to send or receive messages
	not a multiple of 32 bits long.  Actually, messages will be a multiple
	of 32 data bits + 32 bits of source and destination addresses + 16 bits
	of CRC check word + the 1 "overhead" bit.  That extra 1/2 word will
	cause a little bit of trouble.
	
	Detailed comments on each drawing:
	
	11CON - entirely replaced by pdp10 I/O bus control logic.  CONI =
	11RCSR in the right half, 11RRBTCT in the left half.  CONO = 11WCSR.
	DATAI = 11RRBUF.  DATAO = 11WTBUF.  This does not allow any way
	to read MY#, does not allow for a programmable clock, and does not
	allow for the 11SCTRL operation which is not used anyway.  I don't
	think any of these are problems.  This drawing would get a good
	deal simpler.
	
	CPINS - replace by pdp10 TTL I/O bus pinout, which is pretty much
	whatever we choose.  E.g. the connector pins on an Augat PG21.
	
	DATAPA - Similar, but 36 bits of I/O bus tranceivers.  The input
	multiplexors need to be for DATAI vs CONI, and for 16-mode vs 8-mode
	for DATAI.  There need to be output multiplexors for 16-mode vs
	8-mode on DATAO and for substituting MY# in the second 16 bits
	of DATAO of the last word.  Apparently DM8838's are the right
	thing to use for the bus tranceivers.
	
	DETECT - unchanged
	
	ICON - replaced by pdp10-style interrupt control.  A 3-bit PIA
	register, an open-collector 1-of-8 decoder to drive the PI lines,
	and the PI RQ = (RDONE and RIEN) or (TDONE and TIEN) gate are all
	that's needed.  There's no need to hack channel 1 multiplex (KA)
	nor vector interrupt (KL).
	
	MODULA - unchanged
	
	MY# - unchanged
	
	MYTURN - unchanged
	
	PROGCK - delete
	
	RBUF - change the shift register to 32 bits.  Change the ^ROWEND signal
	to come from 5-bits over in the counter (this may require a modest
	amount of hair?)  Also, when taking out the CRC, ^ROWEND has to come
	after only 16 bits instead of 32.
	
	RCTL - no dependency on 11RRBTCT (this is only there to delay SSYN
	if the 11 reads the bit count while it's changing).  Change it so
	that ^ROCLK doesn't start clocking until after the DATAI has finished.
	Maybe hair to detect another DATAI too early, while the ^ROCLK is
	still clocking, and set a CONI error bit?
	
	TBUF - change the shift register to 32 bits.  Change the ^TIWEND signal
	to be every 32 bits instead of every 16, except when shifting in the CRC
	it's going to need to go off after only 16.
	
	TBUFIN - unchanged except get rid of the 11RMY# hair.  Add (on some
	other drawing like 10CON or DATAPA) a last-word-in flip flop which enables
	the DATAO multiplexor to plug in the MY#.
	
	TCLK - unchanged
	
	WRDBTS - changed to the following:
	
		DATAO (16 mode)
			4.9-3.3 first 16 bit word
			3.2-1.5 second 16 bit word
			1.4-1.1 ignored
	
		DATAO (8 mode)
			4.9-4.2 first 8 bit byte (low half of first word)
			4.1-3.3 second 8 bit byte (high half of first word)
			3.2-2.4 third 8 bit byte (low half of second word)
			2.3-1.5 fourth 8 bit byte (high half of second word)
			1.4-1.1 ignored
	
		DATAI (16 mode)
			4.9-3.3 first 16 bit word
			3.2-1.5 second 16 bit word
			1.4-1.1 zero
	
		DATAI (8 mode)
			4.9-4.2 first 8 bit byte (low half of first word)
			4.1-3.3 second 8 bit byte (high half of first word)
			3.2-2.4 third 8 bit byte (low half of second word)
			2.3-1.5 fourth 8 bit byte (high half of second word)
			1.4-1.1 zero
	
		CONO
			1.1-1.3 jam into PIA
			1.4	1 => set TDONE
			1.5	ignored
			1.6	jam into TIEN
			1.7	1 => 11 SAYS GO
			1.8	ignored
			1.9	jam into RIEN
			2.1	jam into MATCH ANY DEST
			2.2	1 => next DATAO is last word, 0 => not.
				     (this is the destination, source address word)
			2.3	0 => 16 mode, 1 => 8 mode
			2.4	1 => INIT
			2.5-2.9	ignored
	
		CONI	1.1-1.3	PIA
			1.4	TDONE
			1.5	TBSY
			1.6	TIEN
			1.7	RDONE
			1.8	RACT
			1.9	RIEN
			2.1	MATCH ANY DEST
			2.2	1 => next DATAO is last word
			2.3	0 => 16 mode, 1 => 8 mode
			2.4	CW
			2.5	CRCERR
			2.6	TABORT OF LAST MSG
			2.7-2.8	zero
			2.9	sign of RRBTCT (1 => next DATAI is last word)
			3.1-3.4	LOST COUNT
			3.5-3.6	zero
			3.7-4.9	RRBTCT
	


More information about the cctalk mailing list