[Simh] SIMH can't boot 'root' VMS environment on 7.3 CD
Bob Supnik
bob at supnik.org
Sun Dec 26 13:13:11 EST 2004
A number of people have reported that SIMH can't boot the VMS 'root'
environment from the 7.3 CD (ie, can't boot with /R5:10000000). Booting to
standalone backup works correctly.
The problem is due to a bug in the VMS DU driver. There's a workaround,
but it's clumsy.
Here's the comments from the DU driver:
; RECORD_UNIT_STATUS - copy data from GET UNIT STATUS end message to UCB.
;
; Functional Description:
;
; The supplied MSCP end message is analyzed and appropriate fields in
; the UCB are filled in with information contained in the end message.
;
; If the end message is shorter than MSCP$K_LEN, it is zero filled
; to that length. This compensates for controllers possibly passing
; some fields back as zeros by returning short messages. Then various
; geometry parameters are copied or calculated from the geometry
; information in the end message. If the basic cylinders/tracks/sectors
; information produced by these calulations contains any zeros, a class
; driver bugcheck is declared. Finally, the two write-locked bits are
; tested. If either is set, the DEV$M_SWL bit is set. Otherwise, the
; bit is not set.
and here's the code that allegedly implements the check:
BICL #UCB$M_MSCP_WRTP, - ; Clear class driver write protected
UCB$L_DEVSTS(R3) ; flag.
BITW #<MSCP$M_UF_WRTPD - ; Is the unit data loss,
!MSCP$M_UF_WRTPH - ; hardware, or
!MSCP$M_UF_WRTPS>,- ; software write protected?
MSCP$W_UNT_FLGS(R2)
BEQL 60$ ; Branch if not write protected.
BISL #UCB$M_MSCP_WRTP, - ; Else, set the class driver write
UCB$L_DEVSTS(R3) ; protected flag.
Notice that the driver is setting a flag in the (MSCP dependent) DEVSTS
field, rather than in the device-independent DEVCHR field. Hence the problem.
Based on inspection of the SCSI class driver, I think this code needs to
set the DEVSTS field as indicated, but also the DEVCHR field as well. The
SCSI class driver sets both device-dependent and device-independent flags
during processing of an information packet.
Workaround... set a breakpoint at 822ad77d. This is in the
RECORD_UNIT_STATUS routine. Then, examine virtual location 8209652C
(that's system UCB + 3C), and change the value to have bit <25> set
(software write locked). VMS will come up properly in 'read only' mode,
with $$$ prompt, as documented in the installation guide.
A bug report has been submitted to VMS.
/Bob Supnik
More information about the Simh
mailing list