-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathm9301-troubles.html
307 lines (264 loc) · 17.5 KB
/
m9301-troubles.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>fritzm.github.io - PDP-11/45: M9301 Troubles</title>
<meta name="description" content="">
<meta name="author" content="Fritz Mueller">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="https://fritzm.github.io/theme/html5.js"></script>
<![endif]-->
<!-- Le styles -->
<link href="https://fritzm.github.io/theme/bootstrap.min.css" rel="stylesheet">
<link href="https://fritzm.github.io/theme/bootstrap.min.responsive.css" rel="stylesheet">
<link href="https://fritzm.github.io/theme/local.css" rel="stylesheet">
<link href="https://fritzm.github.io/theme/pygments.css" rel="stylesheet">
<!-- Photoswipe -->
<link rel="stylesheet" href="https://fritzm.github.io/theme/photoswipe.css">
<link rel="stylesheet" href="https://fritzm.github.io/theme/default-skin/default-skin.css">
<script src="https://fritzm.github.io/theme/photoswipe.min.js"></script>
<script src="https://fritzm.github.io/theme/photoswipe-ui-default.min.js"></script>
<script src="https://fritzm.github.io/galleries.js"></script>
<script type="text/javascript">
var pswipe = function(gname, index) {
var pswpElement = document.querySelectorAll('.pswp')[0];
var items = galleries[gname];
var options = { index: index };
var gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
};
</script>
<!-- So Firefox can bookmark->"abo this site" -->
<link href="https://fritzm.github.io/feeds/all.rss.xml" rel="alternate" title="fritzm.github.io" type="application/rss+xml">
</head>
<body>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="https://fritzm.github.io">fritzm.github.io</a>
<div class="nav-collapse">
<ul class="nav">
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="content">
<div class="row">
<div class="span9">
<div class='article'>
<div class="content-title">
<h1>PDP-11/45: M9301 Troubles</h1>
Tue 04 July 2017
by <a class="url fn" href="https://fritzm.github.io/author/fritz-mueller.html">Fritz Mueller</a>
</div>
<div><p>After a lot of recent progress with the RK11, suffered a setback: after trying once again to image
a fresh RT-11 pack, the machine began to behave erratically at boot. Sometimes the boot monitor would run
fine, sometimes it would run for a while and then take a machine exception or vector off to bad address,
and sometimes the machine would fail to boot at all, immediately taking exceptions of various sorts. Getting
so close, but then lost a lot of ground; I guess that's sort of the way it is going to be with a machine
that is this old...</p>
<p>So, back to the top without a working boot monitor. Microcode sequencing and seemed to be working fine --
exam/deposit/step working reliably from the front panel. Checked execution of the first few instructions
of the boot ROM in detail, a branch and some single operand instructions, and they seemed to execute
correctly.</p>
<p>Assuming some sort of new failure in the CPU, I prepared to instrument the Unibus with the HP
logic analyzer; it seemed that way I could trigger on machine exceptions then look back over the captured
address traces for a pattern. To make sense of those, I'd need a listing of the boot ROM in hand. Noel
Chiappa has a dump for this and a partial disassembly on his site <a href="http://ana-3.lcs.mit.edu/~jnc/tech/pdp11/ROMs/M9301-YB.mac">here</a>,
but is it the same as mine? Better check...</p>
<p>Started to run through Noel's listing and compare to the ROM contents on my machine via front panel exam.
Sure enough, there seemed to be some words different in a few places. Maybe the CPU is fine, and the ROM
card is failing? Swapped out the M9301 for a simpler M792 diode matrix boot ROM, and sure enough -- was
able to boot straight away off my RKDP pack, and from there reliably beat up the CPU with diagnostics. So,
great news: just a failing M9301!</p>
<p>Alright, so now I want to capture a dump of the M9301 so I can systematically compare with Noel's listing
to see if there's a pattern in failed/flaky bits to help guide my repair. For this I need a memory dump
utility that I can toggle in from the front panel. Came up with this:</p>
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nt">001000</span> <span class="nt">012705</span> <span class="nt">START</span><span class="o">:</span> <span class="nt">MOV</span> <span class="p">#</span><span class="nn">177564</span><span class="o">,</span><span class="nt">R5</span> <span class="o">;</span><span class="nt">CONSOLE</span> <span class="nt">XCSR</span>
<span class="nt">177564</span>
<span class="nt">001004</span> <span class="nt">012700</span> <span class="nt">L0</span><span class="o">:</span> <span class="nt">MOV</span> <span class="p">#</span><span class="nn">177570</span><span class="o">,</span><span class="nt">R0</span> <span class="o">;</span><span class="nt">SWITCH</span> <span class="nt">REGISTER</span>
<span class="nt">177570</span>
<span class="nt">001010</span> <span class="nt">000000</span> <span class="nt">HALT</span>
<span class="nt">001012</span> <span class="nt">011004</span> <span class="nt">MOV</span> <span class="p">@</span><span class="k">R0</span><span class="o">,</span><span class="nt">R4</span> <span class="p">;</span><span class="nt">READ</span> <span class="nt">ADDR</span> <span class="nt">FROM</span> <span class="nt">SWITCHES</span>
<span class="nt">001014</span> <span class="nt">000000</span> <span class="nt">HALT</span>
<span class="nt">001016</span> <span class="nt">011003</span> <span class="nt">MOV</span> <span class="p">@</span><span class="k">R0</span><span class="o">,</span><span class="nt">R3</span> <span class="p">;</span><span class="nt">READ</span> <span class="nt">COUNT</span> <span class="nt">FROM</span> <span class="nt">SWITCHES</span>
<span class="nt">001020</span> <span class="nt">012401</span> <span class="nt">L1</span><span class="o">:</span> <span class="nt">MOV</span> <span class="o">(</span><span class="nt">R4</span><span class="o">)+,</span><span class="nt">R1</span> <span class="o">;</span><span class="nt">GET</span> <span class="nt">NEXT</span> <span class="nt">WORD</span> <span class="nt">TO</span> <span class="nt">DUMP</span>
<span class="nt">001022</span> <span class="nt">012702</span> <span class="nt">MOV</span> <span class="p">#</span><span class="nn">6</span><span class="o">,</span><span class="nt">R2</span> <span class="o">;</span><span class="nt">SIX</span> <span class="nt">DIGITS</span> <span class="nt">TO</span> <span class="nt">PRINT</span>
<span class="nt">000006</span>
<span class="nt">001026</span> <span class="nt">005000</span> <span class="nt">CLR</span> <span class="nt">R0</span> <span class="o">;</span><span class="nt">R0</span> <span class="nt">GETS</span> <span class="nt">MSB</span> <span class="nt">R1</span>
<span class="nt">001030</span> <span class="nt">073027</span> <span class="nt">ASHC</span> <span class="p">#</span><span class="nn">1</span><span class="o">,</span><span class="nt">R0</span>
<span class="nt">000001</span>
<span class="nt">001034</span> <span class="nt">062700</span> <span class="nt">L2</span><span class="o">:</span> <span class="nt">ADD</span> <span class="p">#</span><span class="nn">60</span><span class="o">,</span><span class="nt">R0</span> <span class="o">;</span><span class="nt">MAKE</span> <span class="nt">INTO</span> <span class="nt">ASCII</span> <span class="nt">DIGIT</span>
<span class="nt">000060</span>
<span class="nt">001040</span> <span class="nt">010065</span> <span class="nt">MOV</span> <span class="nt">R0</span><span class="o">,</span><span class="nt">2</span><span class="o">(</span><span class="nt">R5</span><span class="o">)</span> <span class="o">;</span><span class="nt">OUTPUT</span>
<span class="nt">000002</span>
<span class="nt">001044</span> <span class="nt">105715</span> <span class="nt">TSTB</span> <span class="o">(</span><span class="nt">R5</span><span class="o">)</span>
<span class="nt">001046</span> <span class="nt">100376</span> <span class="nt">BPL</span> <span class="p">.</span><span class="nc">-2</span>
<span class="nt">001050</span> <span class="nt">005000</span> <span class="nt">CLR</span> <span class="nt">R0</span> <span class="o">;</span><span class="nt">R0</span> <span class="nt">GETS</span> <span class="nt">3</span> <span class="nt">MSB</span> <span class="nt">R1</span>
<span class="nt">001052</span> <span class="nt">073027</span> <span class="nt">ASHC</span> <span class="p">#</span><span class="nn">3</span><span class="o">,</span><span class="nt">R0</span>
<span class="nt">000003</span>
<span class="nt">001056</span> <span class="nt">077212</span> <span class="nt">SOB</span> <span class="nt">R2</span><span class="o">,</span><span class="nt">L2</span> <span class="o">;</span><span class="nt">LOOP</span> <span class="nt">DIGITS</span>
<span class="nt">001060</span> <span class="nt">012765</span> <span class="nt">MOV</span> <span class="p">#</span><span class="nn">15</span><span class="o">,</span><span class="nt">2</span><span class="o">(</span><span class="nt">R5</span><span class="o">)</span> <span class="o">;</span><span class="nt">OUTPUT</span> <span class="s1">'\R'</span>
<span class="nt">000015</span>
<span class="nt">000002</span>
<span class="nt">001066</span> <span class="nt">105715</span> <span class="nt">TSTB</span> <span class="o">(</span><span class="nt">R5</span><span class="o">)</span>
<span class="nt">001070</span> <span class="nt">100376</span> <span class="nt">BPL</span> <span class="p">.</span><span class="nc">-2</span>
<span class="nt">001072</span> <span class="nt">012765</span> <span class="nt">MOV</span> <span class="p">#</span><span class="nn">12</span><span class="o">,</span><span class="nt">2</span><span class="o">(</span><span class="nt">R5</span><span class="o">)</span> <span class="o">;</span><span class="nt">OUTPUT</span> <span class="s1">'\N'</span>
<span class="nt">000012</span>
<span class="nt">000002</span>
<span class="nt">001100</span> <span class="nt">105715</span> <span class="nt">TSTB</span> <span class="o">(</span><span class="nt">R5</span><span class="o">)</span>
<span class="nt">001102</span> <span class="nt">100376</span> <span class="nt">BPL</span> <span class="p">.</span><span class="nc">-2</span>
<span class="nt">001104</span> <span class="nt">077333</span> <span class="nt">SOB</span> <span class="nt">R3</span><span class="o">,</span><span class="nt">L1</span> <span class="o">;</span><span class="nt">LOOP</span> <span class="nt">WORDS</span>
<span class="nt">001106</span> <span class="nt">000736</span> <span class="nt">BR</span> <span class="nt">L0</span> <span class="o">;</span><span class="nt">START</span> <span class="nt">OVER</span>
</pre></div>
</td></tr></table>
<p>Executed this a few times and got slightly different results, then things settled into a pattern where the
lowest nybble of every word was consistently zeroed but everything else was fine. Smoking gun pointing to
a single PROM on the M9301. Pulled and reseated that chip, and did the same for the other three while I
was at it, and ... everything 100% after that. Wow, really should have just tried that first...</p>
<p>Well, at least I'm up and running again! The memory dump program might come in useful again at some other
time, and as a byproduct after I fixed my M9301 I got 100% agreement with Noel's listing. So I think that
listing can be considered authoritative now; good enough to generate replacement PROMs should anybody
ever need to do so.</p>
<p><img src='/images/pdp11/M9301_thumbnail_tall.jpg' title='M9301-YB bootstrap ROM' onclick='pswipe("pdp11",59);'/>
<img src='/images/pdp11/M792-YB_thumbnail_tall.jpg' title='M792-YB diode-matrix bootstrap ROM' onclick='pswipe("pdp11",60);'/>
<span class="videobox">
<iframe width="328" height="200"
src='https://www.youtube.com/embed/E7MAFjZVZ2Y?rel=0'
frameborder='0' webkitAllowFullScreen
mozallowfullscreen allowFullScreen>
</iframe>
</span></p></div>
<hr>
</div>
</div>
<div class="span3">
<div class="well" style="padding: 8px 0; background-color: #FBFBFB;">
<ul class="nav nav-list">
<li class="nav-header">
Site
</li>
<li><a href="https://fritzm.github.io/archives.html">Archives</a>
<li><a href="https://fritzm.github.io/tags.html">Tags</a>
<li><a href="https://fritzm.github.io/feeds/all.rss.xml" rel="alternate">RSS feed</a></li>
</ul>
</div>
<div class="well" style="padding: 8px 0; background-color: #FBFBFB;">
<ul class="nav nav-list">
<li class="nav-header">
Categories
</li>
<li><a href="https://fritzm.github.io/category/arcade-games.html">Arcade Games</a></li>
<li><a href="https://fritzm.github.io/category/math.html">Math</a></li>
<li><a href="https://fritzm.github.io/category/micros.html">Micros</a></li>
<li><a href="https://fritzm.github.io/category/pdp-11.html">PDP-11</a></li>
<li><a href="https://fritzm.github.io/category/programming.html">Programming</a></li>
<li><a href="https://fritzm.github.io/category/radios.html">Radios</a></li>
</ul>
</div>
<div class="social">
<div class="well" style="padding: 8px 0; background-color: #FBFBFB;">
<ul class="nav nav-list">
<li class="nav-header">
Social
</li>
<li><a href="http://facebook.com/fritzmueller">facebook</a></li>
<li><a href="http://instagram.com/infrafritz">Instagram</a></li>
<li><a href="http://www.linkedin.com/pub/fritz-mueller/a/679/62/">LinkedIn</a></li>
<li><a href="http://jsfiddle.net/user/fritzm/fiddles/">JSFiddle</a></li>
<li><a href="https://github.com/fritzm">GitHub</a></li>
</ul>
</div>
</div>
</div>
</div> </div>
<footer>
<br />
<p><a href="https://fritzm.github.io">fritzm.github.io</a> © Fritz Mueller 2023</p>
</footer>
</div> <!-- /container -->
<!-- Photoswipe -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<div class="pswp__bg"></div>
<div class="pswp__scroll-wrap">
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" title="Share"></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://fritzm.github.io/theme/bootstrap-collapse.js"></script>
</body>
</html>