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: MINITS-DOC.TXT and about boot-proms in: 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: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. 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., dl 300,176500,gaa,9600., ;;; DLV11-J #1 dl 140,175640,gaa,9600., dl 150,175650,gaa,9600., dl 160,175660,gaa,9600., dl 170,175670,gaa,9600., ;;; DLV11-J #2 dl 200,175700,gaa,9600., dl 210,175710,gaa,9600., dl 220,175720,gaa,9600., dl 230,175730,gaa,9600., > defdev chs,chsncp,< ;;; chsncp maxsubnet,maxconnections chsncp 172, 30 > .endc system 144 ** You should now make two control files OZ:OZ:foo.CTL OZ:OZ: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: *** 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 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: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.