Ok, got a bit of time yesterday and today to clean up the work area so I
could work on the /45, and to actually go through some of the tests Tony had
suggested. First, let me describe the current setup, as I changed things
around a bit in order to simplify the setup. Here is how the machine is
configured right now, and how it was configured during the following tests.
I did not leave out any cards in my list here, so if you don't see it
listed, there isn't anything in that slot.
Current configuration
System Unit
1 (A-B) M930C
2-5 empty
6 (A-F) M8100
7 (A-F) M8101
8 (A-F) M8102
9 (A-F) M8103
10 (A-F) M8104
11 (A-F) M8105
12 (A-F) M8106
13 empty
14 (A-F) M8116
15 (C-F) M8109
16-25 empty
26 (A-B) M9200 side 1 (C-F) M7856 {note, the LTC option on this board is
enabled, there is nothing in slot 1C}
27 (A-B) M9200 side 2 (C-D) Dual Grant
28 (A-B) BC11A-0F side 1 (C-D) Dual Grant
MF11-L in system unit
1 (A-B) BC11A-0F side 2 (C-F) H214
2 (A-F) G231
3 (A-F) G110
4 (A-F) G231
5 (A-F) G110
6 (C-F) H214
7-8 empty
9 (A-B) BC11A-15 side 1
BA11-KU with DD11-DK
1 (A-B) BC11A-15 (C-D) Dual Grant
2 (A-F) M7762
3-7 (C-D) Dual Grant
8 (D) single grant
9 (A-B) M9312 (D) single grant
Connected to the M7762 is an RL02, and connected to the M7856 is an ADDS
vt100 clone. Before I go further, I should point out that the system DOES
have some basic functionality. It CAN boot up xxdp, and does pass a few
front panel tests. The basic problem is I suspect that interrupts aren't
working right. I suspect this because when trying to boot a known good RT11
pack, it hits the disk for at least 30 seconds before halting, and it's
definitely progressing and not just retrying one read over and over. Many
diagnostics fail, but they seem to fail whenever something with interrupts
is being tested. Let me also say I'm new to the /45, but learning, so I'm
not entirely 100% sure I'm operating the front panel right. In other words,
it is very possible this is all due to some stupidity on my part!
Initial setup - I power on the system with the front panel knobs set to cons
phy and data paths. The console emulator "@" shows up on the system console.
The status lights lit are Pause, Master, and Kernel. I type "DL" on the
console, the lights start counting up steadily - because I forgot to hit
load on the rl02. I hit load and when it goes ready the disk chugs for a
minute then prints the XXDP loaded message on the console and prompts for
date & time. I can load a few diags and it finds them at least. There is
basic sanity here.
I happened to find a program on the diag pack called "SIZER". Below is it's
output from powerup, which may be helpful to someone "in the know". It
reads...
---------
p
031757 077317 030217 034317
@DL
CHMDLE0 XXDP+ DL MONITOR
BOOTED VIA UNIT 0
16K UNIBUS SYSTEM
ENTER DATE (DD-MMM-YY):
RESTART ADDR: 072010
THIS IS XXDP+. TYPE "H" OR "H/L" FOR HELP.
.R SIZER
SIZER .BIN
PDP 11 SYSTEM SIZER V05.0
DIGITAL STANDARD CONFIGURATIONS
REFER TO THE PERIPHERALS HANDBOOK (1975, 1976)
CENTRAL PROCESSOR
PDP 11/45,50,55 (KB11 SERIES)
CPU INTERNAL OPTIONS
STACK LIMIT REGISTER
EXTENDED INSTRUCTION SET (ASH,ASHC,MUL,DIV)
MEMORY SIZE AND ADDRESS MAP
16K WORDS OF CONTIGUOUS MEMORY
, 000000, 20000, 40000, 60000, 100000, 120000, 140000, 160000
-------+-------+-------+-------+-------+-------+-------+-------+-------+
000000 I 4K I 8K I 12K I 16K I *NXM* I *NXM* I *NXM* I *DEV* I
-------+-------+-------+-------+-------+-------+-------+-------+-------+
' 17776' 37776' 57776' 77776' 117776' 137776'
157776' 177776
PERIPHERAL DEVICES
OPTION - ADDRESS - DESCRIPTION
KY11 777570 PROGRAMMERS CONSOLE (SWITCH REGISTER)
CONSOLE 777560 MAIN TERMINAL. (LA30, LA36, LT33, VT50, VT05, ETC)
KW11-L 777546 LINE FREQUENCY CLOCK
DP11 774400 SYNCHRONOUS INTERFACE
BOOT 773000 READ ONLY MEMORY BOOTSTRAP
BOOT 773100 READ ONLY MEMORY BOOTSTRAP
BOOT 773200 READ ONLY MEMORY BOOTSTRAP
BOOT 773300 READ ONLY MEMORY BOOTSTRAP
BOOT 773400 READ ONLY MEMORY BOOTSTRAP
BOOT 773500 READ ONLY MEMORY BOOTSTRAP
BOOT 773600 READ ONLY MEMORY BOOTSTRAP
BOOT 773700 READ ONLY MEMORY BOOTSTRAP
M9301 765000 DIAGNOSTIC BOOT
USER AND FLOATING PERIPHERAL DEVICES
NONE PRESENT
-----------------------------
At this point, nothing else is displayed. The above output makes perfect
sense to me, with one exception. What on earth does it think when it shows a
DP11 sync interface at 774400? Um, that address is what my RL11 is set to.
Not sure why it shows as a DP11, maybe that's a bug in this sizer program.
In any case...
First, Tony suggested I store sucessive bits and read them back, ie. start
at loc 0 and store 0,1,2,4,8 etc. I did that. All stored and read back
correctly.
Then Tony suggested that I run instruction diagnostics. I did that, and
below is the output.
-----------------------------
022700 000012 001000 000020
@DL
CHMDLE0 XXDP+ DL MONITOR
BOOTED VIA UNIT 0
16K UNIBUS SYSTEM
ENTER DATE (DD-MMM-YY):
RESTART ADDR: 072010
THIS IS XXDP+. TYPE "H" OR "H/L" FOR HELP.
.R CQKC??
CQKCG1.BIC
DCQKC-G 11/40 & 11/45 INST EXER
OPT.CP=045406
OPT.DEV.=000001
PASS #0000 VPC=072452 PSW=000344
PASS #0000 VPC=072452 PSW=010344
PASS #0000 VPC=072452 PSW=010344
PASS #0000 VPC=072452 PSW=010344
PASS #0000 VPC=
----------------------------
On the above diagnostic output, the system prints up to and including
"OPT.DEV.=000001" very quickly, then runs for a long time (maybe 2 minutes
or more), and then prints out the 5 lines of "PASS..." all very quickly. The
cursor just sits to the right of VPC= on the last line, forever and the
processor is halted. I'm betting money this is a bad result from this
diagnostic. No clue what it means. But.... read on....
There is a website for "hints on testing a dead pdp11" that I used the line
time clock test on. Here is what the website says to do....
----------------------------
Line Time Clock Interrupt Test
Most of the older PDP11's had a line time clock that would interrupt at
mains frequency (50 or 60Hz). On early LSI-11's, it was not programmable but
enabled by a switch on the front panel. Load the following program (which is
just a trap catcher and interrupt enable), and start. If an early LSI-11's,
substitute 000240 for the lines marked #, run the program for a second or
two, then enable the clock. The program should halt at address 104 (the
interrupt vector address is 100, and the vector is loaded with 102, which
then executes a halt at 102, the PC will then be 104).
Location Contents Opcode Comment
001000 012706 mov #770,sp set the stack pointer
001002 000770
001004 005000 clr r0 memory pointer
001006 012701 mov #2,r1 trap value
001010 000002
001012 010120 loop: mov r1,(r0)+ set trap vector value
001014 005020 clr (r0)+ set halt instruction in trap
001016 062701 add #4,r1 update r1 for next trap
001020 000004
001022 020600 cmp sp,r0 load up to stack pointer
001024 001372 bne loop
# 001026 012737 mov #100,@#ltc enable clock interrupt
# 001030 000100
# 001032 177546
001034 000777 br . loop for ever
If the processor doesn't halt, then your clock isn't running. If it halts at
6, then the clock register is missing.
--------------------------------
Now, I entered the above program. When I run it, it halts with PC = 4, NOT
104 and the data display shows 000770. Yes, I'm sure there are no burned out
front panel lights. To my limited knowledge, this sounds like the program
got the interrupt but instead of jumping to 100 for the vector, it jumped
somewhere around 0 or 2, since the PC said 4. The plot thickens though, read
on....
I took the above program and modified it to set bit six of the receive CSW
to 1 (receive character interrupt enable) on the SLU, I believe I did it
correctly by just changing location 1032 to 177560. When I run this program,
the system is looping at 1034 just like it should... until I hit a key on
the console. The moment I hit a key on the console, the processor halts with
PC=4, and the data display shows 000770. So it seems that whether the
interrupt comes from the LTC or the SLU, no matter what it halts at loc 4
with data 770. Now, I suspect I don't have firm enough ground to walk on to
proceed with the following, but just in case it might mean something/confirm
things to someone.... I decided to try to run the RL11 diagnostic. Below is
the output from that....
----------------------------------
000000 003260 000000 000000
@DL
CHMDLE0 XXDP+ DL MONITOR
BOOTED VIA UNIT 0
16K UNIBUS SYSTEM
ENTER DATE (DD-MMM-YY):
RESTART ADDR: 072010
THIS IS XXDP+. TYPE "H" OR "H/L" FOR HELP.
.R ZRLG??
ZRLGD0.BIC
DRS-E0
CZRLG-D-0
CZRLG TESTS CONTROLLER FUNCTIONS, INTERFACE LOGIC, REGISTER OPERATION
UNIT IS RL01,RL02
RSTRT ADR 067642
DR>START
CHANGE HW (L) ? Y
# UNITS (D) ? 1
UNIT 0
RL11=1, RLV11=2, RLV12=3 (O) 1 ? 1
BUS ADDRESS (O) 174400 ?
VECTOR (O) 160 ?
DRIVE (O) 0 ?
DRIVE TYPE = RL01 (L) Y ? N
BR LEVEL (O) 5 ?
CHANGE SW (L) ? N
NXT TST MAY ZERO LD UNIT. DOIT ANYWAY?Y
ILL INTER 000
PC 013634 PS 000004
----------------------------------
If I'm understanding what I'm seeing, it seems the processor is ignoring all
vectors as Tony suggested. Of course, I am not skilled enough to know where
to go from here. I can say that my processor cards (M8101 through M8106)
were borrowed from another collector and tested before I got them, but I
guess we can't rule out a problem with those. All the other cards, including
terminators and grants, are mine. The BC11A-15 was replaced recently with a
brand new one. I've rung out the bus grant lines from slot 26 in the system
unit to the terminator card in the BA11 and those seem ok. I've checked the
NPR jumper is everywhere, or a grant card is present - in all unibus slots,
with the exception of slot 2 in the BA11 where the RL11 is. I've tried two
or three different M7762's.
Hopefully all this paints a clear picture of the problem, and hopefully
someone can suggest a course of action that a DEC neophyte like myself can
take :)
Thanks for any input!
Jay West