mirror of
https://github.com/PDP-10/its.git
synced 2026-01-13 07:19:57 +00:00
463 lines
16 KiB
Plaintext
Executable File
463 lines
16 KiB
Plaintext
Executable File
|
||
How to Build a Terminal Concentrator
|
||
|
||
I'm writing this because I found out the hard way that most of this
|
||
information isn't stored anywhere. Hopefully you will have an easier
|
||
time of it than I did. Please add new information if you think that
|
||
it is relevant, or correct/update what is already here.
|
||
|
||
The document is broken up into sections and subsections by asterisks
|
||
in the left hand column. The number of asterisks indicates the
|
||
section level, that is, one asterisk is a section, two a subsection,
|
||
etc. This conforms with the conventions of Outline Mode in GNU Emacs,
|
||
which you can use to easily read this.
|
||
|
||
There is also abbreviated information about MINITS in:
|
||
<DCP.MINITS>MINITS-DOC.TXT
|
||
and about boot-proms in: <DCP.MINITS>ETHER-PROM-DOC.TXT.
|
||
|
||
Updated 6/23/86.
|
||
|
||
* What do you need?
|
||
|
||
** I found that I needed the following parts:
|
||
|
||
Qty Manufacturer Part Description
|
||
--- ------------ ---- -----------
|
||
1 DEC BA11-NL Processor Box
|
||
1 DEC KDF11-AC LSI-11/23 CPU (M8186)
|
||
1 DEC MXV11-AA 8Kb Multifunction Module (M8047-AA)
|
||
1 DEC MSV11-ED 64Kb RAM Module (M8045-D)
|
||
n DEC DLV11-J Asynchronous Serial Interface (M8043)
|
||
n DEC D315 Distribution Panel
|
||
1 Interlan NI2010A Ethernet QBUS Interface
|
||
1 3Com 3C100 Ethernet Transceiver
|
||
1 Interlan(?) (???) Cable to connect above two items
|
||
2 DEC (???) QBUS Grant Continuity boards
|
||
2 (many) 2716 2Kb EPROM
|
||
|
||
Notes:
|
||
|
||
*** I'm not sure about the part number for the LSI-11/23 box. I read
|
||
that off the back of the box that I have.
|
||
|
||
*** The Distribution Panel mentioned above is a cute frob that
|
||
connects all four serial ports of the DLV11-J to four RS232
|
||
connectors. There are other ways of accomplishing the same effect,
|
||
e.g. you may wish to build your own panel in which case all you need
|
||
is the connectors for either end and some ribbon cable.
|
||
|
||
*** The cable used to connect the Ethernet interface to its
|
||
transceiver may actually come with the Interlan board -- I got one
|
||
that was lying around so I don't really know. Also there is an
|
||
extension cable which you may need if the concentrator will be more
|
||
than 10 feet from the transceiver.
|
||
|
||
*** The QBUS Grant Continuity boards are normally supplied with the
|
||
Interlan card, but can also be obtained from DEC. The DEC cards will
|
||
need to have about a centimeter trimmed off the end since they are
|
||
slightly too long to fit with the Ethernet board.
|
||
|
||
** In addition to the hardware above, you will need the following
|
||
books to configure the various boards:
|
||
|
||
DEC EB-20912-20 Microcomputers and Memories 1982
|
||
DEC EB-23144-18 Microcomputer Interfaces Handbook 1983-84
|
||
|
||
* Configuring the hardware
|
||
|
||
** CPU card
|
||
|
||
This is easy -- most of the standard configuration is what you want.
|
||
You should change these jumpers:
|
||
|
||
*** Remove W4. This enables the use of the Line Time Clock, called by
|
||
DEC in their literature the `BEVENT signal'.
|
||
|
||
*** Remove W5 and Install W6. This selects `Power-up Mode 2, Execute
|
||
Boot'. This will cause the machine to go to address (octal) 173000.
|
||
|
||
** RAM card
|
||
|
||
Select a starting address of 0, which will make the RAM card fill the
|
||
entire 16-bit address space. The board comes factory configured to
|
||
prevent the selection of Bank 7 addresses (in the range 160000 to
|
||
177777, octal). You should leave it configured that way.
|
||
|
||
** Ethernet Interface
|
||
|
||
This is normally configured (by the factory) to CSR = 164000 and
|
||
Vector = 340. This is a perfectly good setting, using the modified
|
||
addressing scheme for DLV11-J's given below.
|
||
|
||
** MXV11-A
|
||
|
||
This board contains some RAM, some ROM, and two serial ports, which
|
||
must be configured.
|
||
|
||
*** The MXV11-A normally comes with its two serial channels configured
|
||
as follows:
|
||
|
||
Channel 0: CSR = 176500, Vector = 300, Baud rate = 38400.
|
||
Channel 1: CSR = 177560, Vector = 060, Baud rate = 9600.
|
||
|
||
Both channels come set up for eight data bits, one stop bit, and no
|
||
parity. All of these settings are OK, except for the baud rate on
|
||
channel 0, which you will probably want to change to 9600. You should
|
||
also disable the Break generation on channel 1 by removing the jumper
|
||
which the factory puts there.
|
||
|
||
Having made all of these changes, both of these ports should be usable
|
||
as ordinary ports on the terminal concentrator.
|
||
|
||
*** The RAM jumpers should be set up as:
|
||
|
||
J30 to J33
|
||
J31 to J33
|
||
J32 to J33
|
||
|
||
which selects a starting address of 0.
|
||
|
||
*** The ROM jumpers should be set up as:
|
||
|
||
J22 to J21
|
||
J29 to J15
|
||
J37 to J33
|
||
J36 to J38
|
||
J39 to J40
|
||
|
||
which selects 2716 type PROMS, and the 173000 to 173777 addressing
|
||
range (i.e. boot PROM).
|
||
|
||
The last jumper is extremely strange. Look at the board, component
|
||
side up, with the contact fingers down. Immediately to the right of
|
||
the upper right corner of the right-hand ROM socket is a vertical row
|
||
of five horizontal resistors. The fourth from the top should be a
|
||
zero-ohm resistor (it is really a wire, but DEC is using a resistor
|
||
for some reason). Remove this resistor/wire, and connect a wire from
|
||
where the right-hand lead of the resistor was to J34.
|
||
|
||
The net effect of all of these jumpers is that the two ROMs will cover
|
||
the address space between 170000 and 177777, with the even addresses
|
||
going to the right-hand ROM socket and the odd addresses going to the
|
||
left-hand ROM socket.
|
||
|
||
** DLV11-J card(s)
|
||
|
||
These cards require the following configuration:
|
||
|
||
*** You must set the CSR (control/status register) address and Vector
|
||
address of each card.
|
||
|
||
*** You must tie the jumpers C1 and C2 to zero, thus disabling the use
|
||
of channel 3 as the console channel.
|
||
|
||
*** You must remove the Break Operation Jumper, which causes special
|
||
actions when the Break key is hit on channel 3.
|
||
|
||
*** You should set the baud rate of each channel to 9600 if it isn't
|
||
already done (my boards came configured that way even though the
|
||
manual says that channel 3 comes set to 300).
|
||
|
||
*** You should guarantee that the word format jumpers (E, D, S, and P)
|
||
for each channel are set up for eight data bits, one stop bit, and no
|
||
parity (this is the factory default).
|
||
|
||
The addressing of the boards has generally been done very haphazardly,
|
||
as far as I can tell. Here is what appears to be the de facto CSR and
|
||
vector addresses used by people who set up terminal concentrators:
|
||
|
||
Card # CSR Vector
|
||
------ --- ------
|
||
1 176400 140
|
||
2 176440 200
|
||
3 176700 300
|
||
4 176740 340
|
||
|
||
There are some disadvantages to this addressing scheme. In
|
||
particular, the MXV11-A has a serial line on it that can only be given
|
||
a CSR address in {176500, 176510, ..., 176530} and a vector address in
|
||
{300, 310, ..., 370}. Also, the Interlan Ethernet card comes with a
|
||
factory default vector of 340. For these reasons, and after
|
||
consulting DEC's standard CSR and Vector address tables, it seems like
|
||
the following are good ranges to use:
|
||
|
||
CSR
|
||
---
|
||
175640-176470 (52 lines)
|
||
176540-176770 (20 lines)
|
||
177300-177530 (20 lines)
|
||
|
||
Vector
|
||
------
|
||
140-270 (12 lines)
|
||
400-770 (32 lines)
|
||
|
||
There seems to be more than enough room here to stuff a concentrator
|
||
box full of DLV11-J cards, so here is an alternative addressing scheme
|
||
that takes advantage of this:
|
||
|
||
Card # CSR Vector
|
||
------ --- ------
|
||
1 175640 140
|
||
2 175700 200
|
||
3 175740 240
|
||
4 176000 400
|
||
5 176040 440
|
||
6 176100 500
|
||
7 176140 540
|
||
8 176200 600
|
||
9 176240 640
|
||
|
||
* Setting up the software
|
||
|
||
** The first thing you have to do is get a Chaos address. To do this
|
||
you must know the subnet that you are going to put the concentrator
|
||
on. The chaos address is a 16-bit number whose MS byte is the subnet
|
||
number, and whose LS byte is the host number. You will have to search
|
||
through the file
|
||
|
||
MC: SYSNET; HSTMIT >
|
||
|
||
to find a host number which isn't already used. Once you have picked
|
||
a new address, MAKE SURE that it does not conflict with any other
|
||
address by searching (e.g. with EMACS) through the entire file for
|
||
that number.
|
||
|
||
Also, if you are using the LCS network, you should know that there is
|
||
a DIFFERENT HOST TABLE, which contains additional hosts. You must not
|
||
conflict with hosts in either table! See the LCS network people to
|
||
get one of these allocated -- you cannot get at the host table
|
||
yourself.
|
||
|
||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
++++ If you aren't sure what you're doing, get a network wizard to
|
||
++++ help you out -- if you screw up this file many people will be
|
||
++++ unhappy with you.
|
||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
** Next, you must build a new entry in the file
|
||
|
||
OZ:OZ:<DCP.MINITS.S>CONFIG.PALX
|
||
|
||
which is most easily done by copying the entry of a concentrator that
|
||
is similar to the one you're building, and then editing it to match
|
||
your specific hardware configuration. The new system that you make
|
||
should be the highest numbered system, and it should appear after all
|
||
the other numbered systems.
|
||
|
||
There are two other entries which you must make:
|
||
|
||
*** At the very beginning of the file is a list mapping system numbers
|
||
to concentrator names.
|
||
|
||
*** Somewhat after that is a bunch of conditionalizations which look
|
||
like:
|
||
|
||
.
|
||
.
|
||
.
|
||
.iif z system-34, pdp11==23
|
||
.iif z system-35, pdp11==23
|
||
.iif z system-36, pdp11==23
|
||
.
|
||
.
|
||
.
|
||
|
||
you should make an appropriate entry here, which would be just like
|
||
the above except that it would have your system number. All this says
|
||
is that you are using an LSI-11/23 processor.
|
||
|
||
The following page is the entry that I made as an example.
|
||
.sbttl System 144: NE43-4A-HUB
|
||
.if z system-144
|
||
.title AI Lab NE43-4A-HUB
|
||
|
||
.host. <AI Lab NE43-4A-HUB>
|
||
|
||
brdtim==-1 ;don't answer broadcast requests for the time
|
||
|
||
memtop==160000 ;top of usable memory
|
||
bootad=173000 ;bootstrap
|
||
dbugad=173002 ;debug routine
|
||
|
||
defdev np,pktncp,<>
|
||
|
||
ilanv2==-1
|
||
defdev il,interl,<
|
||
;;; ilan vec,csr ,chaddr
|
||
ilan 340,164000,015113 ;factory settings
|
||
>
|
||
|
||
defdev eth,ethncp,<>
|
||
|
||
defdev dl,dl11,<
|
||
;;; dl vec,csr ,typ,baud.,qsize,where
|
||
;;; MXV11
|
||
dl 060,177560,gaa,9600.,<NE43-4A-HUB port 1>
|
||
dl 300,176500,gaa,9600.,<NE43-4A-HUB port 2>
|
||
;;; DLV11-J #1
|
||
dl 140,175640,gaa,9600.,<NE43-4A-HUB line 3>
|
||
dl 150,175650,gaa,9600.,<NE43-4A-HUB line 4>
|
||
dl 160,175660,gaa,9600.,<NE43-4A-HUB line 5>
|
||
dl 170,175670,gaa,9600.,<NE43-4A-HUB line 6>
|
||
;;; DLV11-J #2
|
||
dl 200,175700,gaa,9600.,<NE43-4A-HUB line 7>
|
||
dl 210,175710,gaa,9600.,<NE43-4A-HUB line 8>
|
||
dl 220,175720,gaa,9600.,<NE43-4A-HUB line 9>
|
||
dl 230,175730,gaa,9600.,<NE43-4A-HUB line 10>
|
||
|
||
>
|
||
|
||
defdev chs,chsncp,<
|
||
;;; chsncp maxsubnet,maxconnections
|
||
chsncp 172, 30
|
||
>
|
||
|
||
.endc system 144
|
||
|
||
|
||
** You should now make two control files
|
||
|
||
OZ:OZ:<DCP.MINITS.E>foo.CTL
|
||
OZ:OZ:<DCP.MINITS.E>foo.INSTALL
|
||
|
||
where foo is constructed from the name of your concentrator in a
|
||
reasonable way and does not conflict with existing names. For
|
||
example, NE43-4A-HUB becomes NE434A.
|
||
|
||
Again, the way to make these control files is to copy those for an
|
||
existing concentrator and modify them. In foo.CTL you will need to
|
||
change the name of the binary output file to foo.PBIN and the number
|
||
given should be your new system number. In foo.INSTALL you will
|
||
need to change the number in each file to be your new Chaos address.
|
||
|
||
** Next, you should edit each of the files
|
||
|
||
OZ:SYSTEM:11LOAD.FILES
|
||
REAGAN:>PDP-11>11LOAD.FILES
|
||
ZERMATT:>PDP-11>11LOAD.FILES
|
||
|
||
to have a new entry. This entry will tell OZ and MC what binary file
|
||
is associated with your Chaos address. The format of the entry is
|
||
easy to grok from looking at other entries. There is another of these
|
||
files on EE, but I haven't found out where yet.
|
||
|
||
** Build the binary file as follows:
|
||
|
||
*** Connect to OZ:<DCP.MINITS.E>
|
||
|
||
*** Type
|
||
|
||
SUBMIT foo.CTL
|
||
|
||
this starts up a background job which will assemble your binary file.
|
||
When it finishes, it will leave two files, foo.PBIN and foo.LOG ,
|
||
in that directory. Look near the end of foo.LOG and you should see
|
||
the message
|
||
|
||
2 Errors Detected
|
||
|
||
If any other number of errors occurs something is wrong and you should
|
||
get a wizard.
|
||
|
||
*** Once you have successfully assembled your binary file, type
|
||
|
||
TAKE foo.INSTALL
|
||
|
||
which will send the new binary to MC and EE.
|
||
|
||
* Generating the boot PROMs
|
||
|
||
** On OZ, do
|
||
|
||
PALX <DCP.MINITS.BOOT-PROM>BOOTIL
|
||
|
||
This will assemble a new boot PROM program for you, leaving it in the
|
||
file BOOTIL BIN in your HSNAME (that is, your home directory). It
|
||
will ask you the following questions (the answers that I gave are in
|
||
parentheses):
|
||
|
||
What CSR address (0, meaning 164000)
|
||
What Chaos address (15113)
|
||
What set of downloading hosts (0, meaning MIT)
|
||
What start address (0, for an I/O page boot rom)
|
||
Power-up/boot support for 11/34 (0, meaning no)
|
||
LSI-11/23 PLUS boot PROM kludge (0, meaning no)
|
||
Start of temporary data storage (150000)
|
||
|
||
** On a Lisp Machine with a prom programmer attached and the prom-programmer
|
||
facility enabled do
|
||
|
||
(load "oz:ps:<dcp.minits.boot-prom>prom")
|
||
(27burn)
|
||
|
||
The program will ask you what starting address to use, and you should
|
||
reply 3000 (which it will suggest as a good value). Then it will ask
|
||
you for confirmation. When done, it returns NIL.
|
||
|
||
More info on prom programming is in SYS:FACILITIES;PROMP.DOC
|
||
|
||
** Finally you have the boot PROMs, which should be inserted into the
|
||
sockets on the MXV11-A card. Looking at the component side of the
|
||
card, with the contact fingers at the bottom, the B00 PROM should be
|
||
inserted in the right-hand socket, with the notch upwards. The B08
|
||
PROM goes in the left-hand socket.
|
||
|
||
* Assembling the hardware
|
||
|
||
The only trick about this is that the QBUS has a daisy-chained
|
||
interrupt grant line on the bus which requires that the cards be
|
||
inserted in adjacent slots on the bus. The QBUS Grant Continuity
|
||
cards that are in the parts list above are required because the
|
||
Interlan Ethernet card takes up four bus slots while only plugging
|
||
into two of them.
|
||
|
||
Here is a plausible way to plug the cards in:
|
||
|
||
CPU -- upper left hand corner
|
||
Memory -- upper right hand corner
|
||
Grant Continuity cards -- immediately below the CPU and Memory cards,
|
||
on the left hand side of each bus slot, with the contacts down.
|
||
Ethernet card -- immediately below the Grant Continuity cards.
|
||
MXV11 -- below the Ethernet card in the right hand slot.
|
||
DLV11-J(s) -- continuing down the bus: to left of MXV11, below MXV11,
|
||
below first DLV11, below second DLV11, etc. This is a right-to-left,
|
||
top-to-bottom order.
|
||
|
||
* Booting and possible problems
|
||
|
||
To boot the concentrator, you need to connect it to power and the
|
||
Ethernet, and then turn it on. The switches marked "Power", "LTC",
|
||
and "Halt Enable" should all be in the up position, then toggle the
|
||
"Boot" switch up to boot. The "transmit" light on the Ethernet card
|
||
should flicker once or twice as it sends out Request For Connection
|
||
packets, and then there should be a steady stream of "transmit" and
|
||
"receive" packets as MINITS gets loaded. Finally, your terminal
|
||
should display a message indicating that the boot has completed.
|
||
|
||
Some possible problems:
|
||
|
||
** You are transmitting but not receiving, so MINITS can't be loaded.
|
||
Check on MC using :PEEK to see if your RFC is being received. This
|
||
can be determined using the K command in PEEK. You should see a
|
||
connection named ___nnn 11LOAD RFCRCV with your Chaos address. If
|
||
this is so, then you may have a Chaos address for the wrong subnet.
|
||
Also, if you have tried to swap Ethernet cards, you should know that
|
||
the various Ethernet bridges actually cache information relating Chaos
|
||
to Ether addresses, so that it may be trying to contact your old Ether
|
||
card. You will need to boot the bridges if this is the problem, or
|
||
else get a new Chaos address and recompile everything from scratch. A
|
||
similar effect might be caused by having a conflicting host number, in
|
||
which case the packets addressed to you might be sent to the other
|
||
host instead.
|
||
|
||
** MINITS boots but you can't make connections. If you can do finger
|
||
from MINITS, but not SUPDUP or TELNET, probably your line time clock
|
||
is not working. This could be for two reasons: First, your backplane
|
||
might be broken. But far more likely you didn't remove W4 on the
|
||
processor board (like me), which gives the same effect. Try that to
|
||
find out. Otherwise, use a scope to look at the BEVNT L pin on the
|
||
bus, which is documented in Chapter 9 of the Microcomputers and
|
||
Memories handbook.
|