Availability:
     Level 1    , 'D'
     Level F    , 'D'

  Quick Help:
     Memory Block Display, D[AddrHi],[AddrLo],[CompVal],[NumBytes],[Opts],[SizeInBytes]

  Description:
    The Memory Block Display command reads and displays the contents of memory starting
    at the specified address.  Optionally, the memory data being displayed can be compared
    to a specified value, with miscomparing bytes displayed as highlighted text.  This
    command also optionally supports specifying the size of the memory unit to be addressed.
    It can support reading and displaying 8-bit, 16-bit, 32-bit, and 64-bit memory unit
    sizes.

    ************************************** NOTE *********************************************
    This command allows attempts to read addresses without validation.  But reading invalid
    addresses may hang the drive.  This command should be used with great caution if the
    option to override address validation is enabled.
    *****************************************************************************************

  Input Parameters:

    0 - Memory Address or Memory Address High.
    
        If parameter 1 is not entered, this parameter contains the 32-bit address of the
        first memory location to be read and displayed.  If parameter 1 is entered, this
        parameter contains the upper 16-bits of the address of the first memory location
        to be read and displayed.
    
          Type:    Unsigned 32-bit value, if parameter 1 is not entered
                   Unsigned 16-bit value, if parameter 1 is entered
    
          Range:   0 to 0xffff, if parameter 1 is not entered
                   0 to 0xffffffff, if parameter 1 is entered
    
          Default: 0
    
    1 - Memory Address Low.
    
        If entered, this parameter contains the lower 16-bits of the address of the first
        memory location to be read and displayed.
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xffff
    
          Default: None.  If this parameter is not entered, parameter 0 is assumed to
                   specify the entire 32-bit address of the first memory location to be
                   read and displayed.
    
    2 - Data Compare Value.
    
        If entered, this parameter specifies a value that will be compared to the contents
        of the specified memory locations.  If the contents of the memory location are
        different than the specified value, they will be displayed in high-intensity mode,
        If the contents of the memory location are equal to the specified value, they will
        be displayed in low-intensity mode.  The value passed in this parameter must not be
        larger than number of bytes specified in parameter 5.
    
          Type:    Unsigned 8-bit, 16-bit, 32-bit, or 64-bit value
    
          Range:   If parameter 5 is 1: 0 to 0xFF
                   If parameter 5 is 2: 0 to 0xFFFF
                   If parameter 5 is 4: 0 to 0xFFFFFFFF
                   If parameter 5 is 8: 0 to 0xFFFFFFFFFFFFFFFF
    
          Default: None
    
    3 - Number of Bytes to display.
    
        This parameter specifies the number of memory bytes to be displayed.
    
          Type:    Unsigned 32-bit value
    
          Range:   1 to 0xFFFFFFFF
    
          Default: 0x200
    
    4 - Options.
    
        This parameter is a bit-significant value that selects the following options.
    
          Bits 31-2: not used
    
          Bit 1: not used.
    
                 Previously this bit was used to disable validation of the memory address.
                 Address validation is no longer performed by this command so there is no
                 longer a need to disable it.
    
          Bit 0: Disable pause after each block displayed.
    
                 If this bit is cleared, the display will pause after each 512-byte block
                 and wait for the user to enter a character.
    
                 If this bit is set, all of the requested bytes will be displayed without
                 pausing.
    
          Type:    Unsigned 32-bit value
    
          Range:   0 to 0x00000001
    
          Default: 0
    
    5 - Number Of Bytes Per Memory Access.
    
        This parameter indicates to the diagnostic command what memory unit size in bytes to
        use when reading the memory block.  The only valid values for this parameter are
        8, 4, 2, and 1.
    
          Type:    Unsigned 8-bit value
    
          Range:   Valid values are 8, 4, 2, and 1
    
          Default: 1
    
  Output Data:


    If an error occurred, the following information will be displayed.
    
          "DiagError aaaaaaaa"
    
       where
    
          aaaaaaaa is the Diagnostic Error Code
    
    If no error occurred, the following header will be displayed.
    
          "Processor Memory at Addr cccccccc"                         or
          "Processor Memory at Addr cccccccc compared to dd hex"
    
       where
    
          cccccccc is the address of the first Processor Memory byte displayed
    
          dd is the byte to which the displayed data was compared
    
    If the memory data is being displayed as bytes, the following information will be
    displayed following the header.
    
          "  Addr    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F"
          "eeeeeeee  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff"  (repeated)
    
    If the memory data is being displayed as half-words (2 bytes), the following
    information will be displayed following the header.
    
          "  Addr    0    2    4    6    8    A    C    E"
          "eeeeeeee  ffff ffff ffff ffff ffff ffff ffff ffff"  (repeated)
    
    If the memory data is being displayed as words (4 bytes), the following information
    will be displayed following the header.
    
          "  Addr    0        4        8        C"
          "eeeeeeee  ffffffff ffffffff ffffffff ffffffff"  (repeated)
    
    If the memory data is being displayed as double-words (8 bytes), the following
    information will be displayed following the header.
    
          "  Addr    0                8"
          "eeeeeeee  ffffffffffffffff ffffffffffffffff"  (repeated)
    
       where
    
          eeeeeeee is the address of the first byte in the row.
    
          ff..ff   is the memory data.
    
    If a displayed data is being compared to a reference byte, the bytes or symbols that
    are not equal to the reference will be displayed as highlighted text.
    
  Examples:

    Example #1: Display 512 bytes of memory starting at address 0 in 8-bit chunks

       F3 1>D
       F3 1>D0,,,200
       F3 1>D0,0,,200

    Example #2: Display 1024 bytes of memory starting at 04000000 in 16-bit chunks

       F3 1>D04000000,,,400,,2
       F3 1>D0400,0000,,400,,2

    Example #3: Display 512 bytes of memory from address 0 in 64-bit chunks and compare each
                element to the value 0xE580C000E12CC38E

       F3 1>D,,E580C000E12CC38E,,,8

  Revision History:

    0001.0000   Initial revision.
    0011.0000   Combined the PSG Diagnostic Error Codes (PSGDEC) and the Diagnostic External
                Test Service Error Codes (DETSEC) into a single set of Diagnostic Error Codes
                (DiagError).
    0011.0001   Eliminated the Disable Memory Address Validation option (Parameter 4 Bit 1).
                Memory address validation has been eliminated and there is no longer a need
                to disable it.