RQDX3 on an 11/23?
pete at dunnington.u-net.com
Wed Mar 16 02:28:10 CST 2005
On Mar 15 2005, 16:16, Eric Smith wrote:
> Peter wrote:
> > RT-11 V.5.x will recognise an RQDX controller and
> > drive, but it needs to be V.5.03 or higher for an RQDX3 (earlier
> > version of V5 have a bug that causes it to fail to initialise RQDX3
> > controllers properly -- though I wrote a patch if you need it).
> Does the bug affect any other MSCP controllers? I'd be interested in
> looking at the patch to see what the RQDX3 does differently than
> MSCP controllers.
It might. Basically the bug is that the driver assumes the SA register
is zero, except during initialisation (when it returns various data in
confirmation of the initialisation process, and one of four flag bits
indicating which step it is performing) or in case of an error (when
bit 15 is set). That's fine for an RQDX1 or RQDX2, but not for an
RQDX3. On an RQDX3, SA will usually be found to contain a copy of the
interrupt vector as well as the above flags/data. The MSCP docs don't
actually say it should be zero other than the flag bits, just what
certain flag bits mean.
At certain points in the code, the SA register is checked to see if bit
15 is set (the error flag). However, the V5.01 code uses BNE, which of
course branches if *any* bit is set, instead of BMI, which checks only
Here's my original (1994) patch, a file called DU.COR to patch DU.MAC:
; Added (commented) fixes in 4 places, to use with RQDX3.
; Fixes concern use</interpretation of SA register.
; BEQ DISPAT ; OK if RQDX1 or RQDX2 running
; BIT #ISTEP4,R5 ; see if doing</done last step in init
; BNE DISPAT ; OK if so - go to function dispatch
bit #104000,R5 ; error ? or (externally-triggered)
beq dispat ; dispatch function if not, INIT if
; BNE INIT ; old code for RQDX 1 or 2
bit #170000,r5 ; see if in init sequence or error
bne init ; yes if any set
; BNE 4$ ; for RQDX3, check error with BMI...
bmi 4$ ; not BNE... could have vector as well
; BNE 4$ ; likewise, I'm sure !
If you want a bit more of the context, look in
I spent ages working this out. Someone on Compuserve also published a
fix, but it was incomplete and didn't always work.
Pete Peter Turnbull
University of York
More information about the cctalk