[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