Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: I/O bus reset to fix CMD MSCP controllers (and probably others)



> I think we're talking about the same manual.
> http://www.bitsavers.org/pdf/dec/disc/uda50/AA-L621A-TK_UnibusPortDescription_1982.pdf

Well, I got it from bitsavers.trailing-edge.org, but I just now fetched
the URL you give and the resulting PDF is identical, so, yes.

>>   * AA-L621A-TK is silent on some important questions.  In particular:

>>   * What does reading IP before the end of the four-step init sequence
>>   *  return?  Are there any side effects of such a read?

> Reading the IP never returns anything relevant/interesting/useful.

As plausible as I find that, I don't see it stated anywhere.  IP is
described (page 3-3) as having semantics on write and having semantics
"[w]hen read while the port is operating".  Its semantics when read
while the port is _not_ operating are not described.  It also does not
describe the return value when read, not even to say it is undefined,
as far as I can see.  This is good enough from the point of view of a
driver author, in that the driver can't depend on anything about the
value read, but it is somewhat difficult from the point of view of an
emulator author.

> As for what you actually return, I would probably respond with 0 at
> any time.

That's what I did.

>>   * What does reading SA during normal operation return?  Are there any
>>   *  side effects of such a read?

> The manual states:

> "When read by the host during normal operation, it communicates
> status information including port- and controller-detected fatal
> errors."

> I would say there are no side effects.

> Chapter 7 shows a list of errors that can appear in SA.

I see nothing about what's in bits 11-14 on error (likely S1-S4 during
init, who knows what after that), nor what the register contains on
non-error (except, by implication, that bit 15 is zero).

>>   * The KA630 boot ROM seems to expect a nonzero value in SA the first
>>   *  time it reads it, which seems to run counter to AA-L621A-TK's
>>   *
>> The host begins the initialization sequence either by  issuing  a  bus
>> INIT  or  by  writing  any  value  to  the IP register.  The port must
>> guarantee that the host will read zeroes in SA on the next bus  cycle.
>> Initialization  then  sequences  through Steps 1-4 as described on the
>> following pages.
> Well, [...].

Yeah, that's what I'd expect.

> But I'm not sure what is meant by "first time" here.

I no longer recall.  Presumably I wrote a naïve implementation based on
the manual ("The host begins the initialization sequence either by
issuing a bus INIT or by writing any value to the IP register.  The
port must guarantee that the host will read zeros in SA on the next bus
cycle.  Initialization then sequences through Steps 1-4...") and found
the boot ROMs didn't work with it.

>>   * The spec is also silent on the question of what order the elements
>>   *  of the command and response rings are supposed to be used in.
>> [...]
> [...]  I wonder if perhaps the MSCP spec means to imply that when the
> controller is kicked, it will actually always scan the whole ring,
> and you would in theory not need to care where you put your packets.

I doubt it.  If the ring is even vaguely large, that would imply
relatively frequent bursts of heavy DMA traffic.  But I do think it
should be stated.

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		mouse%rodents-montreal.org@localhost
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index