How to use odd memory sizes on odd configurations

Chris Torek chris at umcp-cs.UUCP
Sun Jul 27 01:37:26 AEST 1986


This information may someday be useful to someone else, and is
apparently quite hard to find, so for its preservation, I am posting
it here.

We have a Vax 11/780-5 (i.e., a 785 that complies only with the
older FCC regulations) with two memory controllers.  One of these
is the old 4K chip controller (MS780C) and the other the 64K chip
controller (MS780E).  With this configuration, for hardware reasons,
the MS780E must be low memory (address zero), and the 780C high
memory.  As long as you stick to four or eight megabytes of 780E
memory, everything is fine, for the 780C may be wired for a start
address of either four or eight megabytes.  (It may be that it can
be set to any multiple of four megabytes.)

We recently acquired two extra 780E one-megabyte boards.  Until we
learned how to set the 780C's memory start address, we were unable
to use the extra two megabytes.  The 780C would start either at
four megabytes (in which case addresses from four to six meg would
evoke responses from both controllers, resulting in a machine
check), or at eight megabytes (in which case the memory would
discontiguous, a situation that 4BSD Unix is not prepared to handle).

We left the hardware address at 4M.  No one seemed to know how to
set it to 6M, yet VMS could use the full 10M without hardware
changes, so it was clear that something could be done.  I found a
clue in the `VAX Hardware Handbook, Volume 1--1986', on page 5-23,
which details the configuration registers for MS780E and MS780H
controllers.  As it happens, the MS780C `B' register has the same
format (a rank assumption on my part, but it worked).

Unfortunately, while the format shows the `Mem Start Addr' field,
it does not say just what to put there.  This I determined by trial
and error---two trials, one error.  Take the desired starting
address and divide by two, then set bits 14 and 12.  Bit 14 is `Mem
Start Addr Enb' (i.e., enable).  Bits 12 and 13 comprise the `Mem
Init Stat'; I have no idea what this is, but examining the register
showed them to be one and zero respectively, and leaving them that
way worked for us.

Since the 780C is at TR 2, it is addressible at location 0x20004000
(the formula for converting a TR number to an SBI address on a 780
is 0x20000000 + 0x2000*TR#).  Register B is the second register,
and is thus at 0x20004004.  To set the starting address to six
megabytes, deposit the value 0x00305000:

	>>>D/P 20004004 00305000

Insert this command in your floppy boot files using arff, and you
are all set.  Of course, you may need to install fixes for 4.1 or
4.2 to handle more than eight megabytes then. . . .

[I find it rather curious that no one in the local field service
group knew how to do this.  Our DEC FieldServicePerson, Dan Rosendall
---who is, by the way, very competent, and a nice guy too---was
told that `Unix can't use more than 8M': a rather amusing statement,
given my conversion instructions from two months ago, and the fact
that another campus Unix Vax that he services is using 64M.  Even
more amusing, someone also suggested asking `that guy at Maryland'
about it.  Can you guess who `that guy' might be?  :-)]
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 1516)
UUCP:	seismo!umcp-cs!chris
CSNet:	chris at umcp-cs		ARPA:	chris at mimsy.umd.edu



More information about the Comp.unix.wizards mailing list