// /**
//
// Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
// (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
// This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD License
// which accompanies this distribution. The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// Module Name:
//
// UefiShellDebug1CommandsLib.uni
//
// Abstract:
//
// String definitions for UEFI Shell 2.0 Debug1 profile commands
//
//
// **/

/=#

#langdef   en-US "english"

#string STR_GEN_NO_MEM            #language en-US "%H%s%N: Memory is not available.\r\n"
#string STR_GEN_BOOT_ONLY         #language en-US "%H%s%N: Boot must be selected for hot key options.\r\n"
#string STR_GEN_FIND_FAIL         #language en-US "%H%s%N: File not found - '%H%s%N'\r\n"

#string STR_GEN_PROBLEM           #language en-US "%H%s%N: Unknown flag - '%H%s%N'\r\n"
#string STR_GEN_PROBLEM_VAL       #language en-US "%H%s%N: Bad value - '%H%s%N' for flag - '%H%s%N'\r\n"
#string STR_GEN_DUPLICATE         #language en-US "%H%s%N: Duplicate flag - '%H%s%N'\r\n"
#string STR_GEN_NO_VALUE          #language en-US "%H%s%N: Missing argument for flag - '%H%s%N'\r\n"
#string STR_GEN_TOO_FEW           #language en-US "%H%s%N: Too few arguments.\r\n"
#string STR_GEN_TOO_MANY          #language en-US "%H%s%N: Too many arguments.\r\n"
#string STR_GEN_NO_DRIVER_BOOT    #language en-US "%H%s%N: Driver or Boot must be selected.\r\n"
#string STR_GEN_PCIRBIO_NF        #language en-US "%H%s%N: Protocol - PciRootBridgeIo not found.\r\n"
#string STR_GEN_PCIRBIO_ER        #language en-US "%H%s%N: Problem accessing the data using Protocol - PciRootBridgeIo\r\n"
#string STR_GEN_PARAM_INV         #language en-US "%H%s%N: Invalid argument - '%H%s%N'\r\n"
#string STR_GEN_PARAM_INV_HEX     #language en-US "%H%s%N: Invalid parameter - '%H%s%N'. Must be hexadecimal.\r\n"
#string STR_GEN_PARAM_CONFLICT    #language en-US "%H%s%N: Flags conflict with - '%H%s%N' and '%H%s%N'\r\n"
#string STR_GEN_OUT_MEM           #language en-US "%H%s%N: Memory allocation was not successful.\r\n"
#string STR_GEN_MAP_PROTOCOL      #language en-US "%H%s%N: Mapped device '%B%s%N' does not have protocol %B%s%N\r\n"
#string STR_GEN_FILE_OPEN_FAIL    #language en-US "%H%s%N: Cannot open file - '%H%s%N'\r\n"
#string STR_GEN_FILE_DELETE_FAIL  #language en-US "%H%s%N: Cannot delete file - '%H%s%N'\r\n"
#string STR_GEN_NO_CWD            #language en-US "%H%s%N: Current directory not specified.\r\n"
#string STR_GEN_FILE_IS_DIRECTORY #language en-US "%H%s%N: The file '%H%s%N' is a directory.\r\n"
#string STR_GEN_SFO_HEADER        #language en-US "ShellCommand,"%s"\r\n"


#string STR_FILE_OPEN_FAIL        #language en-US "Unable to open file on '%B%s%N' with: %r.\r\n"
#string STR_FILE_FIND_FAIL        #language en-US "%H%s%N: File not found - '%H%s%N'\r\n"
#string STR_FILE_NOT_DIR          #language en-US "%H%s%N: Directories are not permitted - '%H%s%N'\r\n"
#string STR_SIZE_NOT_SPEC         #language en-US "%H%s%N: A valid size must be specified\r\n"
#string STR_FILE_NOT_SPEC         #language en-US "%H%s%N: File not specified\r\n"
#string STR_FILE_WRITE_FAIL       #language en-US "%H%s%N: Write file error - '%H%s%N'\r\n"
#string STR_FILE_READ_FAIL        #language en-US "%H%s%N: Read file error - '%H%s%N'\r\n"
#string STR_VOLUME_FULL           #language en-US "%H%s%N: The volume is full\r\n"

#string STR_SET_SIZE_FAIL         #language en-US "%H%s%N: Unable to change size on '%B%s%N'\r\n"
#string STR_SET_SIZE_DONE         #language en-US "Size changed on '%B%s%N'.\r\n"

#string STR_DBLK_HEADER           #language en-US "LBA %016LX Size %08x bytes BlkIo %0x\r\n"

#string STR_COMP_HEADER           #language en-US "Compare %s to %s.\r\n"
#string STR_COMP_DIFFERENCE_POINT #language en-US "Difference #% 2u:\r\n"
#string STR_COMP_END_OF_FILE      #language en-US " <EOF>"

#string STR_COMP_FOOTER_FAIL      #language en-US "[difference(s) encountered] \r\n"
#string STR_COMP_FOOTER_PASS      #language en-US "[no differences encountered]\r\n"

#string STR_MODE_SET_FAIL         #language en-US "%H%s%N: Unable to change the mode.\r\n"
#string STR_MODE_NO_MATCH         #language en-US "%H%s%N: No matching mode found to set\r\n"
#string STR_MODE_LIST_HEAD        #language en-US "Available modes for console output device.\r\n"
#string STR_MODE_LIST_ITEM        #language en-US "  Col % 5d Row % 5d  %c\r\n"

#string STR_MEMMAP_GET_FAILED     #language en-US "%H%s%N: Unable to get memory map\r\n"
#string STR_MEMMAP_LIST_HEAD      #language en-US "Type       Start            End              # Pages          Attributes\r\n"
#string STR_MEMMAP_LIST_ITEM      #language en-US "% -10s %016LX-%016LX %016LX %016LX\r\n"
#string STR_MEMMAP_LIST_ITEM_OTHER #language en-US "%08x   %016LX-%016LX %016LX %016LX\r\n"
#string STR_MEMMAP_LIST_SUMM      #language en-US " \r\n"
                                                  "  Reserved  : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  LoaderCode: %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  LoaderData: %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  BS_Code   : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  BS_Data   : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  RT_Code   : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  RT_Data   : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  ACPI_Recl : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  ACPI_NVS  : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  MMIO      : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  MMIO_Port : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  PalCode   : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  Available : %,14ld Pages (%,ld Bytes)\r\n"
                                                  "  Persistent: %,14ld Pages (%,ld Bytes)\r\n"
#string STR_MEMMAP_LIST_SUMM_OTHER #language en-US    "  %08x  : %,14ld Pages (%,ld Bytes)\r\n"
#string STR_MEMMAP_LIST_SUMM2     #language en-US "              -------------- \r\n"
                                                  "Total Memory: %,14ld MB (%,ld Bytes)\r\n"
#string STR_MEMMAP_LIST_ITEM_SFO  #language en-US "MemoryMap,"%s","%LX","%LX","%LX","%LX"\r\n"
#string STR_MEMMAP_LIST_SUMM_SFO  #language en-US "MemoryMapSummary,"%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld","%Ld"\r\n"

#string STR_EFI_COMPRESS_FAIL     #language en-US "Unable to compress: %r.\r\n"
#string STR_EFI_DECOMPRESS_FAIL   #language en-US "Unable to decompress: %r.\r\n"
#string STR_EFI_DECOMPRESS_NOPE   #language en-US "The file does not appear to be a compressed file.  Cannot continue. \"%H%s%N\"\r\n"

#string STR_DMEM_HEADER_ROW       #language en-US "Memory Address %016LX %X Bytes\r\n"
#string STR_DMEM_MMIO_HEADER_ROW  #language en-US "Memory Mapped IO Address %016LX %X Bytes\r\n"
#string STR_DMEM_DATA_ROW         #language en-US "%08X: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x *%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c*\r\n"
#string STR_DMEM_SYSTEM_TABLE     #language en-US "\r\nValid EFI Header at Address %016Lx\r\n"
                                                  "---------------------------------------------\r\n"
                                                  "System: Table Structure size %08x revision %08x\r\n"
                                                  "ConIn (%016LX) ConOut (%016LX) StdErr (%016LX)\r\n"
                                                  "Runtime Services %016LX\r\n"
                                                  "Boot Services    %016LX\r\n"
                                                  "SAL System Table %016LX\r\n"
                                                  "ACPI Table       %016LX\r\n"
                                                  "ACPI 2.0 Table   %016LX\r\n"
                                                  "MPS Table        %016LX\r\n"
                                                  "SMBIOS Table     %016LX\r\n"

#string STR_LOAD_PCI_ROM_RES      #language en-US "Image '%B%s%N' load result: %r\r\n"
#string STR_LOADPCIROM_CORRUPT    #language en-US "%H%s%N: File '%B%s%N' Image %d is corrupt.\r\n"
#string STR_LOADPCIROM_LOAD_FAIL  #language en-US "%H%s%N: File '%B%s%N' Image %d unable to load.\r\n"
#string STR_LOADPCIROM_START_FAIL #language en-US "%H%s%N: File '%B%s%N' Image %d unable to start.\r\n"

#string STR_MM_NOT_ALIGNED        #language en-US "%H%s%N: Address parameter %016LX is not aligned.\r\n"
#string STR_MM_PCIE_ADDRESS_RANGE #language en-US "%H%s%N: Address parameter %016LX is not a valid PCI/PCIE address.\r\n"
#string STR_MM_IO_ADDRESS_RANGE   #language en-US "%H%s%N: IO address out of range 0 - 0xFFFF\r\n"
#string STR_MM_MMIO               #language en-US "%HMMIO%N"
#string STR_MM_IO                 #language en-US "%HIO%N"
#string STR_MM_PCI                #language en-US "%HPCI%N"
#string STR_MM_MEM                #language en-US "%HMEM%N"
#string STR_MM_PCIE               #language en-US "%HPCIE%N"
#string STR_MM_ADDRESS            #language en-US "  0x%016lx : "
#string STR_MM_BUF                #language en-US "0x%0*lx"
#string STR_MM_ADDRESS_RANGE2     #language en-US "%H%s%N: IO address out of range\r\n"
#string STR_MM_ERROR              #language en-US "%H%s%N: Input had incorrect format\r\n"

#string STR_SETVAR_PRINT          #language en-US "%g - %s - %04x Bytes\r\n"
#string STR_SETVAR_ERROR_SET      #language en-US "%H%s%N: Unable to set - %H%g%N - %H%s%N\r\n"
#string STR_SETVAR_ERROR_GET      #language en-US "%H%s%N: Unable to get - %H%g%N - %H%s%N\r\n"
#string STR_SETVAR_ERROR_DPFT     #language en-US "%H%s%N: DevicePathFromText conversion was not successful.\r\n"

#string STR_SERMODE_NO_FOUND      #language en-US "%H%s%N: No serial ports found.\r\n"
#string STR_SERMODE_NOT_FOUND     #language en-US "%H%s%N: No serial port or specified serial port found.\r\n"
#string STR_SERMODE_BAD_HANDLE    #language en-US "%H%s%N: Handle %H%02x%N is not a serial device handle.\r\n"
#string STR_SERMODE_SET_HANDLE    #language en-US "Mode set on handle %H%02x%N successfully.\r\n"
#string STR_SERMODE_SET_FAIL      #language en-US "%H%s%N: Mode change on handle %H%02x%N was not successful.\r\n"
#string STR_SERMODE_DISPLAY       #language en-US "%x(%08x) - (%ld, %c, %d, %s)\r\n"
#string STR_SERMODE_SET_UNSUPPORTED #language en-US "%H%s%N: One or more of the new settings is not supported on handle %H%02x%N.\r\n"
#string STR_SERMODE_SET_DEV_ERROR  #language en-US "%H%s%N: The serial device on handle %H%02x%N is not functioning correctly.\r\n"

#string STR_PCI_HANDLE_CFG_ERR    #language en-US "%H%s%N: Handle protocol or configuration error.\r\n"
#string STR_PCI_BUS_RANGE_ERR     #language en-US "%H%s%N: Get next bus range error.\r\n"
#string STR_PCI_NO_FIND           #language en-US "%H%s%N: Cannot find protocol interface for segment %x, bus %x.\r\n"
#string STR_PCI_NO_CFG            #language en-US "%H%s%N: Cannot read configuration data.\r\n"
#string STR_PCI_INFO              #language en-US "%H  PCI Segment %02x Bus %02x Device %02x Func %02x%N [EFI %02x%02x%02x%02x00]\r\n"
#string STR_PCI_TITLE             #language en-US "   Seg  Bus  Dev  Func\r\n"
                                                  "   ---  ---  ---  ----\r\n"
#string STR_PCI_LINE_P1           #language en-US "    %E%02x   %02x   %02x    %02x ==> %N"
#string STR_PCI_LINE_P2           #language en-US "\r\n             Vendor %04x Device %04x Prog Interface %x\r\n"
#string STR_PCIEX_CAPABILITY_CAPID     #language en-US "CapID(%2x):          %E%02x%N"
#string STR_PCIEX_NEXTCAP_PTR          #language en-US "            NextCap Ptr(%2x):    %E%02x%N\r\n"
#string STR_PCIEX_CAP_REGISTER         #language en-US "Cap Register(%2x):             %E%04x%N\r\n"
#string STR_PCIEX_DEVICE_CAP           #language en-US "Device Capabilities(%2x):      %E%08x%N\r\n"
#string STR_PCIEX_DEVICE_CONTROL       #language en-US "Device Control(%2x):           %E%04x%N\r\n"
#string STR_PCIEX_DEVICE_STATUS        #language en-US "Device Status(%2x):            %E%04x%N\r\n"
#string STR_PCIEX_LINK_CAPABILITIES    #language en-US "Link Capabilities(%2x):        %E%08x%N\r\n"
#string STR_PCIEX_LINK_CONTROL         #language en-US "Link Control(%2x):             %E%04x%N\r\n"
#string STR_PCIEX_LINK_STATUS          #language en-US "Link Status(%2x):              %E%04x%N\r\n"
#string STR_PCIEX_SLOT_CAPABILITIES    #language en-US "Slot Capabilities(%2x):        %E%08x%N\r\n"
#string STR_PCIEX_SLOT_CONTROL         #language en-US "Slot Control(%2x):             %E%04x%N\r\n"
#string STR_PCIEX_SLOT_STATUS          #language en-US "Slot Status(%2x):              %E%04x%N\r\n"
#string STR_PCIEX_ROOT_CONTROL         #language en-US "Root Control(%2x):             %E%04x%N\r\n"
#string STR_PCIEX_RSVDP                #language en-US "Root Capabilities(%2x):        %E%04x%N\r\n"
#string STR_PCIEX_ROOT_STATUS          #language en-US "Root Status(%2x):              %E%08x%N\r\n"
#string STR_PCI_LINE_VID_DID      #language en-US "Vendor ID(%x): %E%04x%N     Device ID(%x): %E%04x%N\r\n"
#string STR_PCI_LINE_RID          #language en-US "Revision ID(%x): %E%02x%N "
#string STR_PCI_LINE_BIST         #language en-US "BIST(%02x): "
#string STR_PCI_LINE_CAP          #language en-US "Capable,Return: %E%02x%N\r\n"
#string STR_PCI_LINE_CAP_NO       #language en-US " Incapable\r\n"
#string STR_PCI2_CACHE_LINE_SIZE       #language en-US "Cache Line Size(%x): %E%02x%N                 "
#string STR_PCI2_LATENCY_TIMER         #language en-US "Latency Timer(%x): %E%02x%N\r\n"
#string STR_PCI2_HEADER_TYPE           #language en-US "Header Type(%02x):    %E%02x%N, "
#string STR_PCI2_MULTI_FUNCTION        #language en-US "Multi-function, "
#string STR_PCI2_SINGLE_FUNCTION       #language en-US "Single function, "
#string STR_PCI2_PCI_DEVICE            #language en-US "PCI device\r\n"
#string STR_PCI2_P2P_BRIDGE            #language en-US "P2P bridge\r\n"
#string STR_PCI2_CARDBUS_BRIDGE        #language en-US "CardBus bridge\r\n"
#string STR_PCI2_RESERVED              #language en-US "Reserved\r\n"
#string STR_PCI2_CLASS                 #language en-US "Class: "
#string STR_PCI2_BASE_ADDR             #language en-US "Base Address Registers(%x):\r\n"
#string STR_PCI2_START_TYPE            #language en-US "     Start_Address  Type  Space    Prefetchable?     Size             Limit\r\n"
#string STR_PCI2_NONE                  #language en-US "  (None)"
#string STR_PCI2_EXPANSION_ROM_DISABLED #language en-US "\r\nExpansion ROM Disabled(%x)\r\n\r\n"
#string STR_PCI2_EXPANSION_ROM_BASE    #language en-US "\r\nExpansion ROM Base Address(%x): %E%08x%N\r\n\r\n"
#string STR_PCI2_CARDBUS_CIS           #language en-US "Cardbus CIS ptr(%x):   %E%08x%N\r\n"
#string STR_PCI2_SUB_VENDOR_ID         #language en-US "Sub VendorID(%x):          %E%04x%N      "
#string STR_PCI2_SUBSYSTEM_ID          #language en-US "Subsystem ID(%x):      %E%04x%N\r\n"
#string STR_PCI2_CAPABILITIES_PTR      #language en-US "Capabilities Ptr(%x):        %E%02x%N\r\n"
#string STR_PCI2_INTERRUPT_LINE        #language en-US "Interrupt Line(%x):          %E%02x%N      "
#string STR_PCI2_INTERRUPT_PIN         #language en-US "Interrupt Pin(%x):       %E%02x%N\r\n"
#string STR_PCI2_MIN_GNT               #language en-US "Min_Gnt(%x):                 %E%02x%N      "
#string STR_PCI2_MAX_LAT               #language en-US "Max_Lat(%x):             %E%02x%N\r\n"
#string STR_PCI2_BASE_ADDRESS          #language en-US "Base Address Registers(%x):"
#string STR_PCI2_START_TYPE_2          #language en-US "     Start_Address  Type  Space    Prefetchable?     Size             Limit\r\n"
#string STR_PCI2_NO_EXPANSION_ROM      #language en-US "\r\nNo Expansion ROM(%x)    "
#string STR_PCI2_EXPANSION_ROM_BASE_2  #language en-US "\r\nExpansion ROM Base Address(%x): %E%08x%N\r\n"
#string STR_PCI2_BUS_NUMBERS           #language en-US "\r\n\r\n(Bus Numbers)  Primary(%x)     Secondary(%x)   Subordinate(%x)\r\n"
#string STR_PCI2_BRIDGE                #language en-US "               %E%02x%N"
#string STR_PCI2_SECONDARY_TIMER       #language en-US "\r\nSecondary Latency Timer(%x):       %E%02x%N\n\n"
#string STR_PCI2_CARDBUS_LATENCY       #language en-US "\r\nCardBus Latency Timer(%x):         %E%02x%N\r\n"
#string STR_PCI2_RESOURCE_TYPE_2       #language en-US "\r\nResource Type              Type              Base                Limit\r\n"
#string STR_PCI2_MEM_3                 #language en-US "Mem(%x)      %s          %E%08x%N             %E%08x%N\r\n"
#string STR_PCI2_IO_2                  #language en-US "I/O(%x)      %s          %E%08x%N             %E%08x%N\r\n"
#string STR_PCI2_INTERRUPT_LINE_3      #language en-US "\r\nInterrupt Line(%x):     %E%02x%N             Interrupt Pin(%x):       %E%02x%N\r\n"
#string STR_PCI2_SUB_VENDOR_ID_2       #language en-US "\r\nSub VendorID(%x):     %E%04x%N             Subsystem ID(%x):      %E%04x%N\r\n"
#string STR_PCI2_OPTIONAL              #language en-US "Optional 16-Bit PC Card legacy Mode Base Address(%x): %E%08x%N\r\n"
#string STR_PCI2_STATUS                #language en-US "Status(%x): %E%04x%N\r\n"
#string STR_PCI2_SECONDARY_STATUS      #language en-US "Secondary Status(%2x): %E%4x%N\r\n"
#string STR_PCI2_NEW_CAPABILITIES      #language en-US "  (04)New Capabilities linked list:   %E%d%N"
#string STR_PCI2_66_CAPABLE            #language en-US "  (05)66MHz Capable:                %EN/A%N\r\n"
#string STR_PCI2_66_CAPABLE_2          #language en-US "  (05)66MHz Capable:                  %E%d%N\r\n"
#string STR_PCI2_FAST_BACK             #language en-US "  (07)Fast Back-to-Back Capable:      %E%d%N"
#string STR_PCI2_NO                    #language en-US "No     "
#string STR_PCI2_YES                   #language en-US "YES    "
#string STR_PCI2_ONE_VAR_4             #language en-US "\r\n              %E%04x%N  "
#string STR_PCI2_NEWBAR_32             #language en-US "        %08x  "
#string STR_PCI2_NEWBAR_32_2           #language en-US "        %08x"
#string STR_PCI2_RSHIFT                #language en-US "%08x"
#string STR_PCI2_NEWBAR_32_3           #language en-US "%04x              "
#string STR_PCI2_NEWBAR_32_4           #language en-US "%04x"
#string STR_PCI2_CARDBUS_SOCKET        #language en-US "\r\nCardBus Socket Registers/ExCA Base Address Register(%x): %E%8x%N\r\n\r\n"
#string STR_PCI2_BUS_NUMBERS_2         #language en-US "\r\n(Bus Numbers)  Pci(%x)         CardBus(%x)     Subordinate(%x)\r\n"
#string STR_PCI2_CARDBUS               #language en-US "               %E%02x%N"
#string STR_PCI2_CARDBUS_2             #language en-US "                %E%02x%N"
#string STR_PCI2_CARDBUS_3             #language en-US "                %E%02x%N\r\n"
#string STR_PCI2_MASTER_DATA           #language en-US "  (08)Master Data Parity Error:       %E%d%N\r\n"
#string STR_PCI2_DEVSEL_TIMING         #language en-US "  (09)DEVSEL timing:           "
#string STR_PCI2_FAST                  #language en-US "%E    Fast%N"
#string STR_PCI2_MEDIUM                #language en-US "%E  Medium%N"
#string STR_PCI2_SLOW                  #language en-US "%E    Slow%N"
#string STR_PCI2_RESERVED_2            #language en-US "%EReserved%N"
#string STR_PCI2_SIGNALED_TARGET       #language en-US "  (11)Signaled Target Abort:          %E%d%N\r\n"
#string STR_PCI2_RECEIVED_TARGET       #language en-US "  (12)Received Target Abort:          %E%d%N"
#string STR_PCI2_RECEIVED_MASTER       #language en-US "  (13)Received Master Abort:          %E%d%N\r\n"
#string STR_PCI2_SIGNALED_ERROR        #language en-US "  (14)Signaled System Error:          %E%d%N"
#string STR_PCI2_RECEIVED_ERROR        #language en-US "  (14)Received System Error:          %E%d%N"
#string STR_PCI2_DETECTED_ERROR        #language en-US "  (15)Detected Parity Error:          %E%d%N\r\n"
#string STR_PCI2_COMMAND               #language en-US "Command(%x): %E%04x%N\r\n"
#string STR_PCI2_SPACE_ACCESS_DENIED   #language en-US "  (00)I/O space access enabled:       %E%d%N"
#string STR_PCI2_MEMORY_SPACE          #language en-US "  (01)Memory space access enabled:    %E%d%N\r\n"
#string STR_PCI2_BEHAVE_BUS_MASTER     #language en-US "  (02)Behave as bus master:           %E%d%N"
#string STR_PCI2_MONITOR_SPECIAL_CYCLE #language en-US "  (03)Monitor special cycle enabled:  %E%d%N\r\n"
#string STR_PCI2_MEM_WRITE_INVALIDATE  #language en-US "  (04)Mem Write & Invalidate enabled: %E%d%N"
#string STR_PCI2_PALETTE_SNOOPING      #language en-US "  (05)Palette snooping is enabled:    %E%d%N\r\n"
#string STR_PCI2_ASSERT_PERR           #language en-US "  (06)Assert PERR# when parity error: %E%d%N"
#string STR_PCI2_DO_ADDR_STEPPING      #language en-US "  (07)Do address/data stepping:       %E%d%N\r\n"
#string STR_PCI2_SERR_DRIVER           #language en-US "  (08)SERR# driver enabled:           %E%d%N"
#string STR_PCI2_FAST_BACK_2           #language en-US "  (09)Fast back-to-back transact...:  %E%d%N\r\n\r\n"
#string STR_PCI2_BRIDGE_CONTROL        #language en-US "Bridge Control(%x)     %E%04x%N\r\n"
#string STR_PCI2_PARITY_ERROR          #language en-US "  (00)Parity Error Response:          %E%d%N"
#string STR_PCI2_SERR_ENABLE           #language en-US "  (01)SERR# Enable:                   %E%d%N\r\n"
#string STR_PCI2_ISA_ENABLE            #language en-US "  (02)ISA Enable:                     %E%d%N"
#string STR_PCI2_RESOURCE_TYPE         #language en-US "\r\nResource Type                            Base                    Limit\r\n"
#string STR_PCI2_TWO_VARS              #language en-US "I/O(%x)                            %E%08x%N"
#string STR_PCI2_ONE_VAR               #language en-US "                 %E%08x%N\r\n"
#string STR_PCI2_MEMORY                #language en-US "Memory(%x)                         %E%08x%N"
#string STR_PCI2_PREFETCHABLE          #language en-US "Prefetchable Memory(%x)    %E%08x%08x%N"
#string STR_PCI2_TWO_VARS_2            #language en-US "         %E%08x%08x%N\r\n"
#string STR_PCI2_CAPABILITIES_PTR_2    #language en-US "\r\nCapabilities Ptr(%x):   %E%02x%N             \r\n\r\n"
#string STR_PCI2_INTERRUPT_LINE_2      #language en-US "\r\nInterrupt Line(%x)      %E%02x%N             "
#string STR_PCI2_BAR                   #language en-US "\r\n          %E%08x%N  "
#string STR_PCI2_MEM                   #language en-US "Mem   "
#string STR_PCI2_32_BITS               #language en-US "32 bits  "
#string STR_PCI2_ONE_VAR_2             #language en-US "\r\n  %E%08x"
#string STR_PCI2_ONE_VAR_3             #language en-US "%08x%N  "
#string STR_PCI2_64_BITS               #language en-US "64 bits  "
#string STR_PCI2_MEM_2                 #language en-US "Mem            "
#string STR_PCI2_VGA_ENABLE            #language en-US "  (03)VGA Enable:                     %E%d%N\r\n"
#string STR_PCI2_MASTER_ABORT          #language en-US "  (05)Master Abort Mode:              %E%d%N"
#string STR_PCI2_SECONDARY_BUS_RESET   #language en-US "  (06)Secondary Bus Reset:            %E%d%N\r\n"
#string STR_PCI2_FAST_ENABLE           #language en-US "  (07)Fast Back-to-Back Enable:       %E%d%N"
#string STR_PCI2_PRIMARY_DISCARD_TIMER #language en-US "  (08)Primary Discard Timer:       %E%s%N\r\n"
#string STR_PCI2_SECONDARY_DISCARD_TIMER #language en-US "  (09)Secondary Discard Timer:     %E%s%N"
#string STR_PCI2_DISCARD_TIMER_STATUS  #language en-US "  (10)Discard Timer Status:           %E%d%N\r\n"
#string STR_PCI2_DISCARD_TIMER_SERR    #language en-US "  (11)Discard Timer SERR# Enable:     %E%d%N\r\n"
#string STR_PCI2_CARDBUS_RESET         #language en-US "  (06)CardBus Reset:                  %E%d%N\r\n"
#string STR_PCI2_IREQ_ENABLE           #language en-US "  (07)IREQ/INT Enable:                %E%d%N"
#string STR_PCI2_WRITE_POSTING_ENABLE  #language en-US "  (10)Write Posting Enable:           %E%d%N\r\n"
#string STR_PCI_EXT_CAP_AER            #language en-US "  Advanced Error Reporting\r\n"
                                                       "    UncorrectableErrorStatus       %08x\r\n"
                                                       "    UncorrectableErrorMask         %08x\r\n"
                                                       "    UncorrectableErrorSeverity     %08x\r\n"
                                                       "    CorrectableErrorStatus         %08x\r\n"
                                                       "    CorrectableErrorMask           %08x\r\n"
                                                       "    AdvancedErrorCapAndControl     %08x\r\n"
                                                       "    HeaderLog1                     %08x\r\n"
                                                       "    HeaderLog2                     %08x\r\n"
                                                       "    HeaderLog3                     %08x\r\n"
                                                       "    HeaderLog4                     %08x\r\n"
                                                       "    RootErrorCommand               %08x\r\n"
                                                       "    RootErrorStatus                %08x\r\n"
                                                       "    ErrorSourceIdentification      %04x\r\n"
                                                       "    CorrectableErrorSourceIden     %04x\r\n"
                                                       "    TlpPrefixLog1                  %08x\r\n"
                                                       "    TlpPrefixLog2                  %08x\r\n"
                                                       "    TlpPrefixLog3                  %08x\r\n"
                                                       "    TlpPrefixLog4                  %08x\r\n"
#string STR_PCI_EXT_CAP_LINK_CONTROL   #language en-US "  Link Control\r\n"
                                                       "    RootComplexLinkCapabilities    %08x\r\n"
                                                       "    RootComplexLinkControl         %04x\r\n"
                                                       "    RootComplexLinkStatus          %04x\r\n"
#string STR_PCI_EXT_CAP_LINK_DECLAR    #language en-US "  Link Declaration\r\n"
                                                       "    ElementSelfDescription         %08x\r\n"
#string STR_PCI_EXT_CAP_LINK_DECLAR2   #language en-US "    LinkEntry[%x]                  %08x\r\n"
#string STR_PCI_EXT_CAP_SN             #language en-US "  Serial Number\r\n"
                                                       "    SerialNumber                   %L16x\r\n"
#string STR_PCI_EXT_CAP_POWER          #language en-US "  Power Budgeting\r\n"
                                                       "    DataSelect                     %02x\r\n"
                                                       "    Data                           %08x\r\n"
                                                       "    PowerBudgetCapability          %02x\r\n"
#string STR_PCI_EXT_CAP_ACS            #language en-US "  ACS\r\n"
                                                       "    CapabilityRegister             %04x\r\n"
                                                       "    ControlRegister                %04x\r\n"
#string STR_PCI_EXT_CAP_ACS2           #language en-US "    EgressControlVectorByte[%x]    %02x\r\n"
#string STR_PCI_EXT_CAP_LAT            #language en-US "  Latency Tolerance Reporting\r\n"
                                                       "    MaxSnoopLatency                %04x\r\n"
                                                       "    MaxNoSnoopLatency              %04x\r\n"
#string STR_PCI_EXT_CAP_ARI            #language en-US "  ARI\r\n"
                                                       "    AriCapability                  %04x\r\n"
                                                       "    AriControl                     %04x\r\n"
#string STR_PCI_EXT_CAP_RCRB           #language en-US "  RCRB\r\n"
                                                       "    VendorId                       %04x\r\n"
                                                       "    DeviceId                       %04x\r\n"
                                                       "    RcrbCapabilities               %04x\r\n"
                                                       "    RcrbControl                    %04x\r\n"
#string STR_PCI_EXT_CAP_VEN            #language en-US "  VendorSpecific\r\n"
                                                       "    VendorSpecificHeader           %04x\r\n"
#string STR_PCI_EXT_CAP_DPA            #language en-US "  DPA\r\n"
                                                       "    DpaCapability                  %04x\r\n"
                                                       "    DpaLatencyIndicator            %04x\r\n"
                                                       "    DpaStatus                      %04x\r\n"
                                                       "    DpaControl                     %04x\r\n"
#string STR_PCI_EXT_CAP_DPA2           #language en-US "    DpaPowerAllocationArray[%x]    %02x\r\n"
#string STR_PCI_EXT_CAP_ECEA           #language en-US "  Event Collector Endpoint Association\r\n"
                                                       "    AssociationBitmap              %04x\r\n"
#string STR_PCI_EXT_CAP_VC_BASE        #language en-US "  Virtual (Multi) Channel Capability\r\n"
                                                       "    ExtendedVcCount                %08x\r\n"
                                                       "    PortCapability1                %08x\r\n"
                                                       "    PortCapability2                %08x\r\n"
                                                       "    ArbitrationTableOffset         %08x\r\n"
                                                       "    PortVcControl                  %04x\r\n"
                                                       "    PortVcStatus                   %04x\r\n"
#string STR_PCI_EXT_CAP_VC_ITEM        #language en-US "  Virtual Channel Capability Extended Item[%x]\r\n"
                                                       "    ResourceCapability             %08x\r\n"
                                                       "    ArbitrationTableOffset         %08x\r\n"
                                                       "    ResourceControl                %08x\r\n"
                                                       "    ResourceStatus                 %04x\r\n"
#string STR_PCI_EXT_CAP_MULTICAST      #language en-US "  MultiCast Capability\r\n"
                                                       "    MultiCastCapability            %04x\r\n"
                                                       "    MulticastControl               %04x\r\n"
                                                       "    McBaseAddress                  %L16x\r\n"
                                                       "    McReceiveAddress               %L16x\r\n"
                                                       "    McBlockAll                     %L16x\r\n"
                                                       "    McBlockUntranslated            %L16x\r\n"
                                                       "    McOverlayBar                   %L16x\r\n"
#string STR_PCI_EXT_CAP_RESIZE_BAR     #language en-US "  Resizeable Bar Capability [%x]\r\n"
                                                       "    ResizableBarCapability         %08x\r\n"
                                                       "    ResizableBarControl            %04x\r\n"
#string STR_PCI_EXT_CAP_TPH            #language en-US "  TPH\r\n"
                                                       "    TphRequesterCapability         %08x\r\n"
                                                       "    TphRequesterControl            %04x\r\n"
                                                       "    TphTable (optional):\r\n"
#string STR_PCI_EXT_CAP_SECONDARY      #language en-US "  Secondary PCI Express Extended Capability\r\n"
                                                       "    LinkControl3                   %08x\r\n"
                                                       "    LaneErrorStatus                %08x\r\n"
                                                       "    EqualizationControl:\r\n"

#string STR_DMPSTORE_SAVE              #language en-US "Save variable to file: %H%s%N.\r\n"
#string STR_DMPSTORE_LOAD              #language en-US "Load and set variables from file: %H%s%N.\r\n"
#string STR_DMPSTORE_LOAD_GEN_FAIL     #language en-US "%H%s%N: Failed to set variable %H%s%N: %r.\r\n"
#string STR_DMPSTORE_LOAD_BAD_FILE     #language en-US "%H%s%N: Incorrect file format.\r\n"
#string STR_DMPSTORE_HEADER_LINE       #language en-US "Variable %H%s%N '%H%g%N:%H%s%N' DataSize = 0x%02x\r\n"
#string STR_DMPSTORE_HEADER_LINE2      #language en-US "Variable %H%s%N '%H%s%N:%H%s%N' DataSize = 0x%02x\r\n"
#string STR_DMPSTORE_DELETE_LINE       #language en-US "Delete variable '%H%g%N:%H%s%N': %r\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND      #language en-US "%H%s%N: No matching variables found.\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_SFO  #language en-US "VariableInfo,\"\",\"\",\"\",\"\",\"\"\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_GN   #language en-US "%H%s%N: No matching variables found. Guid %g, Name %s\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_NG_SFO #language en-US "VariableInfo,\"%s\",\"%g\",\"\",\"\",\"\"\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_N    #language en-US "%H%s%N: No matching variables found. Name %s\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_N_SFO #language en-US #language en-US "VariableInfo,\"%s\",\"\",\"\",\"\",\"\"\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_G    #language en-US "%H%s%N: No matching variables found. Guid %g\r\n"
#string STR_DMPSTORE_NO_VAR_FOUND_G_SFO #language en-US "VariableInfo,\"\",\"%g\",\"\",\"\",\"\"\r\n"
#string STR_DMPSTORE_VAR_SFO           #language en-US "VariableInfo,\"%s\",\"%g\",\"0x%x\",\"0x%x\",\"%s\"\r\n"

#string STR_GET_HELP_COMP         #language en-US ""
".TH comp 0 "Compare 2 files"\r\n"
".SH NAME\r\n"
"Compares the contents of two files on a byte-for-byte basis.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"COMP [-b] file1 file2\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b    - Displays one screen at a time.\r\n"
"  file1 - Specifies a first file name  (directory name or wildcards not permitted).\r\n"
"  file2 - Specifies a second file name (directory name or wildcards not permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command compares the contents of two files in binary mode.\r\n"
"  2. It displays up to 10 differences between the two files. For each\r\n"
"     difference, up to 32 bytes from the location where the difference starts\r\n"
"     is dumped.\r\n"
"  3. It will exit immediately if the lengths of the compared files are\r\n"
"     different.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To compare two files with the same length but different contents:\r\n"
"    fs0:\> comp bios.inf bios2.inf\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The function operated as expected.\r\n"
"  SHELL_NOT_EQUAL            The files were not identical.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_NOT_FOUND            The requested file was not found.\r\n"

#string STR_GET_HELP_SETSIZE      #language en-US ""
".TH setsize 0 "Set file size"\r\n"
".SH NAME\r\n"
"Adjusts the size of a file.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"SETSIZE size file [file...]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  size - Specifies the size of the file after it is adjusted.\r\n"
"  file - Specifies the file or files to be adjusted.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. Setting the size smaller than the actual data contained in this file will\r\n"
"     truncate its data.\r\n"
"  2. This command adjusts the size of a particular target file.\r\n"
"  3. This command automatically truncates or extends the size of a file based on the passed-in\r\n"
"     parameters. If the file does not exist, it is created.\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_VOLUME_FULL         The media has insufficient space to complete the\r\n"
"                            request.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_MODE         #language en-US ""
".TH mode 0 "Shows or changes ConOut mode."\r\n"
".SH NAME\r\n"
"Displays or changes the console output device mode.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"MODE [col row]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  col - Specifies the number of columns.\r\n"
"  row - Specifies the number of rows.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command changes the display mode for the console output\r\n"
"     device.\r\n"
"  2. When this command is used without any parameters, it shows the list of\r\n"
"     modes that the standard output device currently supports.\r\n"
"  3. When used with the row and col parameter, this command\r\n"
"     changes the number of rows and columns on the standard output device.\r\n"
"  4. The current selected mode is indicated by a '*'. \r\n"
"  5. The display is cleared every time this command is used to change the\r\n"
"     currently selected display mode.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display all available modes on standard output:\r\n"
"    Shell> mode\r\n"
" \r\n"
"  * To change the current mode setting:\r\n"
"    Shell> mode 80 50\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS              The action was completed as requested.\r\n"
"  SHELL_SECURITY_VIOLATION   This function was not performed due to a security\r\n"
"                             violation.\r\n"
"  SHELL_INVALID_PARAMETER    One of the passed-in parameters was incorrectly\r\n"
"                             formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_MEMMAP       #language en-US ""
".TH memmap 0 "Displays the memory map."\r\n"
".SH NAME\r\n"
"Displays the memory map maintained by the UEFI environment.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"MEMMAP [-b] [-sfo]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b   - Displays one screen at a time\r\n"
"  -sfo - Displays information as described in Standard-Format Output.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. The UEFI environment keeps track of all the physical memory in the system\r\n"
"     and how it is currently being used.\r\n"
"  2. Total Memory is the physical memory size excluding Reserved, Unusable,\r\n"
"     MemoryMappedIO, and MemoryMappedIOPortSpace memory types.\r\n"
"  3. Refer to the UEFI specification for memory type definitions.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the system memory map:\r\n"
"    Shell> memmap\r\n"
" \r\n"

#string STR_GET_HELP_EFICOMPRESS  #language en-US ""
".TH eficompress 0 "compresses a file."\r\n"
".SH NAME\r\n"
"Compresses a file using UEFI Compression Algorithm.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"EFICOMPRESS infile outfile\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  infile  - Specifies the file name of the uncompressed input file.\r\n"
"  outfile - Specifies the file name of the compressed output file.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command compresses a file using UEFI Compression Algorithm\r\n"
"     and writes the compressed form out to a new file.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To compress a file named 'uncompressed' to a file named 'compressed':\r\n"
"    fs0:\> eficompress uncompressed compressed\r\n"

#string STR_GET_HELP_EFIDCOMPRESS #language en-US ""
".TH efidecompress 0 "Decompresses a file."\r\n"
".SH NAME\r\n"
"Decompresses a file using UEFI Decompression Algorithm.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"EFIDECOMPRESS infile outfile\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  infile  - Specifies the file name of the compressed input file.\r\n"
"  outfile - Specifies the file name of the decompressed output file.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This decompresses a file using UEFI Decompression\r\n"
"     Algorithm and writes the decompressed form out to a new file.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To decompress a file named 'compressed' to a file named 'uncompressed':\r\n"
"    fs0:\> efidecompress compressed uncompressed\r\n"

#string STR_GET_HELP_DMEM         #language en-US ""
".TH dmem 0 "Displays memory."\r\n"
".SH NAME\r\n"
"Displays the contents of system or device memory.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DMEM [-b] [address] [size] [-MMIO]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b      - Displays one screen at a time.\r\n"
"  -MMIO   - Forces address cycles to the PCI bus.\r\n"
"  address - Specifies a starting address in hexadecimal format.\r\n"
"  size    - Specifies the number of bytes to display in hexadecimal format.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays the contents of system memory or device memory.\r\n"
"  2. Enter address and size in hexadecimal format.\r\n"
"  3. If address is not specified, the contents of the UEFI System Table\r\n"
"     are displayed. Otherwise, memory starting at the specified address is displayed.\r\n"
"  4. Size specifies the number of bytes to display. If size is not specified,\r\n"
"     512 bytes are displayed.\r\n"
"  5. If MMIO is not specified, main system memory is displayed. Otherwise,\r\n"
"     device memory is displayed through the use of the\r\n"
"     EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the UEFI system table pointer entries:\r\n"
"    fs0:\> dmem\r\n"
" \r\n"
"  * To display memory contents from 1af3088 with size of 16 bytes:\r\n"
"    Shell> dmem 1af3088 16\r\n"
" \r\n"
"  * To display memory mapped IO contents from 1af3088 with a size of 16 bytes:\r\n"
"    Shell> dmem 1af3088 16 -MMIO\r\n"

#string STR_GET_HELP_MM           #language en-US ""
".TH mm 0 "Displays or modifies address space memory."\r\n"
".SH NAME\r\n"
"Displays or modifies MEM/MMIO/IO/PCI/PCIE address space.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"MM Address [Value] [-w 1|2|4|8] [-MEM | -MMIO | -IO | -PCI | -PCIE] [-n]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  Address - Starting address in hexadecimal format.\r\n"
"  Value   - The value to write in hexadecimal format.\r\n"
"  -MEM    - Memory Address type\r\n"
"  -MMIO   - Memory Mapped IO Address type\r\n"
"  -IO     - IO Address type\r\n"
"  -PCI    - PCI Configuration Space Address type:\r\n"
"            Address format: ssssbbddffrr\r\n"
"              ssss - Segment\r\n"
"              bb   - Bus\r\n"
"              dd   - Device\r\n"
"              ff   - Function\r\n"
"              rr   - Register\r\n"
"  -PCIE   - PCIE Configuration Space Address type:\r\n"
"            Address format: ssssbbddffrrr\r\n"
"              ssss - Segment\r\n"
"              bb   - Bus\r\n"
"              dd   - Device\r\n"
"              ff   - Function\r\n"
"              rrr  - Register\r\n"
"  -w      - Unit size accessed in bytes:\r\n"
"              1    - 1 byte\r\n"
"              2    - 2 bytes\r\n"
"              4    - 4 bytes\r\n"
"              8    - 8 bytes\r\n"
"  -n      - Non-interactive mode\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1.  If the address type parameter is not specified, address type defaults\r\n"
"      to the 'MEM' type.\r\n"
"  2.  If the 'Value' parameter is specified, the '-n' option is used and\r\n"
"      the command writes the value to the\r\n"
"      specified address in non-interactive mode. If the 'Value' parameter is\r\n"
"      not specified, only the current contents in the address are displayed.\r\n"
"  3.  If the '-w' option is not specified, unit size defaults to 1 byte.\r\n"
"  4.  If the PCI address type is specified, the 'Address' parameter must\r\n"
"      follow the PCI Configuration Space Address format above. The 'PCI'\r\n"
"      command can be used to determine the address for a specified device.\r\n"
"      It is listed in the PCI configuration space dump information in the\r\n"
"      following format: "[EFI ssbbddffxx]".\r\n"
"  5.  If the PCIE address type is specified, the 'Address' parameter must\r\n"
"      follow the PCIE Configuration Space Address format above.\r\n"
"  6.  In interactive mode, type a hex value to modify, 'q' or '.' to exit.\r\n"
"      If the '-n' option is specified, it runs in non-interactive mode,\r\n"
"      which supports batch file operation without user intervention.\r\n"
"  7.  Not all PCI configuration register locations are writable.\r\n"
"  8.  MM will only write the specified value. Read-modify-write operations\r\n"
"      are not supported.\r\n"
"  9.  The 'Address' parameter must be aligned on a boundary of the\r\n"
"      specified width.\r\n"
"  10. Not all addresses are safe to access. Access to any improper address\r\n"
"      can bring unexpected results.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display or modify memory:\r\n"
"    Address 0x1b07288, default width=1 byte:\r\n"
"    fs0:\> mm 1b07288\r\n"
"    MEM  0x0000000001B07288 : 0x6D >\r\n"
"    MEM  0x0000000001B07289 : 0x6D >\r\n"
"    MEM  0x0000000001B0728A : 0x61 > 80\r\n"
"    MEM  0x0000000001B0728B : 0x70 > q\r\n"
"    fs0:\> mm 1b07288\r\n"
"    MEM  0x0000000001B07288 : 0x6D >\r\n"
"    MEM  0x0000000001B07289 : 0x6D >\r\n"
"    MEM  0x0000000001B0728A : 0x80 >        *Modified\r\n"
"    MEM  0x0000000001B0728B : 0x70 > q\r\n"
" \r\n"
"  * To modify memory: Address 0x1b07288, width = 2 bytes:\r\n"
"    Shell> mm 1b07288 -w 2\r\n"
"    MEM  0x0000000001B07288 : 0x6D6D >\r\n"
"    MEM  0x0000000001B0728A : 0x7061 > 55aa\r\n"
"    MEM  0x0000000001B0728C : 0x358C > q\r\n"
"    Shell> mm 1b07288 -w 2\r\n"
"    MEM  0x0000000001B07288 : 0x6D6D >\r\n"
"    MEM  0x0000000001B0728A : 0x55AA >      *Modified\r\n"
"    MEM  0x0000000001B0728C : 0x358C > q\r\n"
" \r\n"
"  * To display IO space:   Address 80h, width = 4 bytes:\r\n"
"    Shell> mm 80 -w 4 -IO\r\n"
"    IO  0x0000000000000080 : 0x000000FE >\r\n"
"    IO  0x0000000000000084 : 0x00FF5E6D > q\r\n"
" \r\n"
"  * To modify IO space using non-interactive mode:\r\n"
"    Shell> mm 80 52 -w 1 -IO\r\n"
"    Shell> mm 80 -w 1 -IO\r\n"
"    IO  0x0000000000000080 : 0x52 > FE      *Modified\r\n"
"    IO  0x0000000000000081 : 0xFF >\r\n"
"    IO  0x0000000000000082 : 0x00 >\r\n"
"    IO  0x0000000000000083 : 0x00 >\r\n"
"    IO  0x0000000000000084 : 0x6D >\r\n"
"    IO  0x0000000000000085 : 0x5E >\r\n"
"    IO  0x0000000000000086 : 0xFF >\r\n"
"    IO  0x0000000000000087 : 0x00 > q\r\n"
" \r\n"
"  * To display PCI configuration space, ss=0000, bb=00, dd=00, ff=00, rr=00:\r\n"
"    Shell> mm 000000000000 -PCI\r\n"
"    PCI  0x0000000000000000 : 0x86 >\r\n"
"    PCI  0x0000000000000001 : 0x80 >\r\n"
"    PCI  0x0000000000000002 : 0x30 >\r\n"
"    PCI  0x0000000000000003 : 0x11 >\r\n"
"    PCI  0x0000000000000004 : 0x06 >\r\n"
"    PCI  0x0000000000000005 : 0x00 > q\r\n"
"    These contents can also be displayed by 'PCI 00 00 00'.\r\n"
" \r\n"
"  * To display PCIE configuration space, ss=0000, bb=06, dd=00, ff=00, rrr=000:\r\n"
"    Shell> mm 0000060000000 -PCIE\r\n"
"    PCIE  0x0000000060000000 : 0xAB >\r\n"
"    PCIE  0x0000000060000001 : 0x11 >\r\n"
"    PCIE  0x0000000060000002 : 0x61 >\r\n"
"    PCIE  0x0000000060000003 : 0x43 >\r\n"
" \r\n"

#string STR_GET_HELP_LOAD_PCI_ROM #language en-US ""
".TH loadpcirom 0 "Loads a PCI option ROM file."\r\n"
".SH NAME\r\n"
"Loads a PCI Option ROM.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"LoadPciRom [-nc] romfile [romfile...]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -nc     - Loads the ROM image(s) but does not connect drivers.\r\n"
"  romfile - Specifies the PCI option ROM image file (wildcards are permitted).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command loads PCI option ROM images into memory for\r\n"
"     execution.\r\n"
"  2. The file can contain legacy images and multiple PE32 images, in which case\r\n"
"     all PE32 images are loaded.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To load a rom file 'rom.bin':\r\n"
"    fs0:\> LoadPciRom rom.bin\r\n"
" \r\n"
"  * To load '*.bin' files without connecting drivers:\r\n"
"    fs0:\> LoadPciRom -nc *.bin\r\n"

#string STR_GET_HELP_SETVAR       #language en-US ""
".TH setvar 0 "Displays or modifies a UEFI variable."\r\n"
".SH NAME\r\n"
"Displays or modifies a UEFI variable.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"SETVAR variable-name [-guid guid][-bs][-rt][-nv] [=data]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  variable-name - Specifies the name of the UEFI variable to modify or display.\r\n"
"  -guid         - Specifies the GUID of the UEFI variable to modify or display.\r\n"
"                  If not present, GUID EFI_GLOBAL_VARIABLE is assumed.\r\n"
"  -bs           - Indicates that the variable is a boot variable. Applies to a new variable;\r\n"
"                  otherwise, it is ignored. \r\n"
"  -rt           - Indicates that the variable is a runtime variable. Applies to a new variable;\r\n"
"                  otherwise, it is ignored. \r\n"
"  -nv           - Indicates that the variable is non-volatile. If not present,\r\n"
"                  then the variable is assumed to be volatile. Applies to a new variable;\r\n"
"                  otherwise, it is ignored. \r\n"
"  =data         - Specifies there is new data for the variable. If there is nothing after the '='\r\n"
"                  then the variable is deleted. If '=' is not present, then the\r\n"
"                  current value of the variable is dumped as hex bytes.\r\n"
"                  The data can consist of zero or more of the following:\r\n"
"                    xx[xx]         - Hexadecimal bytes\r\n"
"                    ^"ascii-string^" - ASCII-string with no null-terminator\r\n"
"                    L^"UCS2-string^" - UCS-2 encoded string with no\r\n"
"                                     null-terminator\r\n"
"                    --device       - Device path text format\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command changes the UEFI variable specified by name and GUID.\r\n"
"  2. If = is specified, but data is not, the variable is deleted, if it exists.\r\n"
"  3. If = is not specified, then the current variable contents are displayed.\r\n"
"  4. If =data is specified, then the variable's value is changed to the value\r\n"
"     specified by data.\r\n"
"  5. -bs, -rt and -nv are only useful if the variable does not exist.\r\n"
"  6. If the variable already exists, the attributes cannot be changed, and the"
"     flags will be ignored.\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The shell has stored the variable and its data with\r\n"
"                            the defined attributes.\r\n"
"  SHELL_INVALID_PARAMETER   Incorrect attributes were used.\r\n"
"  SHELL_OUT_OF_RESOURCES    Insufficient resources were available for storing\r\n"
"                            the variable and its data.\r\n"
"  SHELL_DEVICE_ERROR The    Variable could not be saved due to a hardware\r\n"
"                            error.\r\n"
"  SHELL_WRITE_PROTECTED     The variable in question is read-only.\r\n"
"  SHELL_WRITE_PROTECTED     The variable in question cannot be deleted.\r\n"
"  SHELL_NOT_FOUND           The variable could not be found.\r\n"

#string STR_GET_HELP_SERMODE      #language en-US ""
".TH sermode 0 "configure serial port"\r\n"
".SH NAME\r\n"
"Sets serial port attributes.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"SERMODE [handle [baudrate parity databits stopbits]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  handle   - Specifies a device handle for a serial port in hexadecimal format.\r\n"
"  baudrate - Specifies a baud rate for specified serial port.\r\n"
"  parity   - Sets parity bit settings for specified serial port. Valid values\r\n"
"             are:\r\n"
"               d   - Default parity\r\n"
"               n   - No parity\r\n"
"               e   - Even parity\r\n"
"               o   - Odd parity\r\n"
"               m   - Mark parity\r\n"
"               s   - Space parity\r\n"
"  databits - Sets the data bits for the specified serial port.\r\n"
"  stopbits - Sets the stop bits for the specified serial port.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. The 'handle' parameter is the device handle of the desired serial port.\r\n"
"     The 'DH' command can be used to retrieve this information.\r\n"
"  2. The 'stopbits' parameter supports the following settings:\r\n"
"       0  (0 stop bits - default setting)\r\n"
"       1  (1 stop bit)\r\n"
"       2  (2 stop bits)\r\n"
"       15 (1.5 stop bits)\r\n"
"     All other settings are invalid.\r\n"
"  3. The 'baudrate' parameter supports the following settings:\r\n"
"     50, 75, 110, 150, 300, 600, 1200, 1800, 2000, 2400, 3600, 4800,\r\n"
"     7200, 9600(default), 19200, 38400, 57600, 115200, 230400, 460800\r\n"
"     All other values will be converted to the next highest setting.\r\n"
"  4. The 'databits' parameter supports the following settings:\r\n"
"       4\r\n"
"       7\r\n"
"       8 (default)\r\n"
"     All other settings are invalid.\r\n"
"  5. Parity attributes are mutually exclusive.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display the settings for all serial port devices:\r\n"
"    Shell> sermode\r\n"
" \r\n"
"  * To display the settings for the serial port device whose handle is 0x6B:\r\n"
"    Shell> sermode 6B\r\n"
" \r\n"
"  * To configure the serial port settings for handle 0x6B to 9600bps, even\r\n"
"    parity, 8 data bits, and 1 stop bit:\r\n"
"    Shell> sermode 6B 9600 e 8 1\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The new attributes were set on the serial device.\r\n"
"  SHELL_INVALID_PARAMETER   One or more of the attributes has an unsupported\r\n"
"                            value.\r\n"
"  SHELL_DEVICE_ERROR        The serial device is not functioning correctly.\r\n"

#string STR_GET_HELP_PCI          #language en-US ""
".TH pci 0 "Displays PCI device information."\r\n"
".SH NAME\r\n"
"Displays PCI device list or PCI function configuration space and PCIe extended\r\n"
"configuration space.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"PCI [Bus Dev [Func] [-s Seg] [-i [-ec ID]]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -s   - Specifies optional segment number (hexadecimal number).\r\n"
"  -i   - Displays interpreted information.\r\n"
"  -ec  - Displays detailed interpretation of specified PCIe extended capability\r\n"
"         ID (hexadecimal number).\r\n"
"  Bus  - Specifies a bus number (hexadecimal number).\r\n"
"  Dev  - Specifies a device number (hexadecimal number).\r\n"
"  Func - Specifies a function number (hexadecimal number).\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays a list of all the PCI devices found in the system. It\r\n"
"     also displays the configuration space of a PCI device according to the\r\n"
"     specified bus (Bus), device (Dev), and function (Func) addresses. If the\r\n"
"     function address is not specified, it defaults to 0.\r\n"
"  2. The -i option displays verbose information for the specified PCI\r\n"
"     device. The PCI configuration space for the device is displayed with\r\n"
"     a detailed interpretation.\r\n"
"  3. If no parameters are specified, all PCI devices are listed.\r\n"
"  4. If the 'Bus' and 'Dev' parameters are specified but the 'Func' or\r\n"
"     'Seg' parameters are not, Function or Seg are set to the default value of 0.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display all PCI devices in the system:\r\n"
"    Shell> pci\r\n"
" \r\n"
"  * To display the configuration space of Bus 0, Device 0, Function 0:\r\n"
"    Shell> pci 00 00 00 -i\r\n"
" \r\n"
"  * To display configuration space of Segment 0, Bus 0, Device 0, Function 0:\r\n"
"    Shell> pci 00 00 00 -s 0\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS        Data was displayed as requested.\r\n"
"  SHELL_DEVICE_ERROR   The specified device parameters did not match a physical\r\n"
"                       device in the system.\r\n"

#string STR_GET_HELP_SMBIOSVIEW   #language en-US ""
".TH smbiosview 0 "Displays SMBIOS information."\r\n"
".SH NAME\r\n"
"Displays SMBIOS information.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"SMBIOSVIEW [-t SmbiosType]|[-h SmbiosHandle]|[-s]|[-a]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -t            - Displays all structures of SmbiosType.\r\n"
"  -h            - Displays structure of SmbiosHandle.\r\n"
"  -s            - Displays a statistics table.\r\n"
"  -a            - Displays all information.\r\n"
"  SmbiosType    - Specifies a SMBIOS structure type.\r\n"
"  SmbiosHandle  - Specifies a SMBIOS structure unique 16-bit handle.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. The SmbiosType parameter supports the following types:\n"
"       0  - BIOS Information\r\n"
"       1  - System Information\r\n"
"       2  - Baseboard Information\r\n"
"       3  - System Enclosure\r\n"
"       4  - Processor Information\r\n"
"       5  - Memory Controller Information\r\n"
"       6  - Memory Module Information\r\n"
"       7  - Cache Information\r\n"
"       8  - Port Connector Information\r\n"
"       9  - System Slots\r\n"
"       10 - On Board Devices Information\r\n"
"       11 - OEM Strings\r\n"
"       12 - System Configuration Options\r\n"
"       13 - BIOS Language Information\r\n"
"       14 - Group Associations\r\n"
"       15 - System Event Log\r\n"
"       16 - Physical Memory Array\r\n"
"       17 - Memory Device\r\n"
"       18 - 32-bit Memory Error Information\r\n"
"       19 - Memory Array Mapped Address\r\n"
"       20 - Memory Device Mapped Address\r\n"
"       21 - Built-in Pointing Device\r\n"
"       22 - Portable Battery\r\n"
"       23 - System Reset\r\n"
"       24 - Hardware Security\r\n"
"       25 - System Power Controls\r\n"
"       26 - Voltage Probe\r\n"
"       27 - Cooling Device\r\n"
"       28 - Temperature Probe\r\n"
"       29 - Electrical Current Probe\r\n"
"       30 - Out-Of-Band Remote Access\r\n"
"       31 - Boot Integrity Services (BIS) Entry Point\r\n"
"       32 - System Boot Information\r\n"
"       33 - 64-Bit Memory Error Information\r\n"
"       34 - Management Device\r\n"
"       35 - Management Device Component\r\n"
"       36 - Management Device Threshold Data\r\n"
"       37 - Memory Channel\r\n"
"       38 - IPMI Device Information\r\n"
"       39 - System Power Supply\r\n"
"       40 - Additional Information\r\n"
"       41 - Onboard Devices Extended Information\r\n"
"       42 - Management Controller Host Interface\r\n"
"       43 - TPM Device\r\n"
"  2. Enter the SmbiosHandle parameter in hexadecimal format.\r\n"
"     Do not use the '0x' prefix format for hexadecimal values.\r\n"
"  3. Internal commands:\r\n"
"       :q --------  quit smbiosview\r\n"
"       :0 --------  Change smbiosview display NONE info\r\n"
"       :1 --------  Change smbiosview display OUTLINE info\r\n"
"       :2 --------  Change smbiosview display NORMAL info\r\n"
"       :3 --------  Change smbiosview display DETAIL info\r\n"
"       /? --------  Show help\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS        Data was displayed as requested.\r\n"
"  SHELL_DEVICE_ERROR   The requested structure was not found.\r\n"

#string STR_GET_HELP_DMPSTORE     #language en-US ""
".TH dmpstore 0 "Manages all UEFI variables."\r\n"
".SH NAME\r\n"
"Manages all UEFI variables.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DMPSTORE [-b] [-d] [-all | ([variable] [-guid guid])] [-sfo]\r\n"
"DMPSTORE [-all | ([variable] [-guid guid])] [-s file]\r\n"
"DMPSTORE [-all | ([variable] [-guid guid])] [-l file]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b       - Displays one screen at a time.\r\n"
"  -guid    - Specifies the GUID of the variables to be displayed in\r\n"
"             standard text format. If not specified and -all is not\r\n"
"             specified, the EFI_GLOBAL_VARIABLE GUID is assumed.\r\n"
"  -sfo     - Displays information as described in Standard-Format Output.\r\n"
"  -all     - Dumps all variables, including those\r\n"
"             with a different GUID than EFI_GLOBAL_VARIABLE.\r\n"
"  -d       - Delete variables.\r\n"
"  -s       - Saves variables to a file.\r\n"
"  -l       - Loads and sets variables from a file.\r\n"
"  variable - Specifies a variable name. This can be a literal name or\r\n"
"             a pattern as specified in the MetaiMatch() function of the\r\n"
"             EFI_UNICODE_COLLATION2_PROCOOL.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command manages the UEFI variables. The variables\r\n"
"     displayed or deleted depend on the command line options, as specified in\r\n"
"     the following table:\r\n"
"     Variable GUID  -all  Description\r\n"
"     ---      ---   ---   All variables with the GUID EFI_GLOBAL_VARIABLE will\r\n"
"                          be operated on.\r\n"
"     ---      ---    X    All variables (regardless of GUID or name) will be\r\n"
"                          operated on.\r\n"
"     ---       X    ---   All variables with the specified GUID will be\r\n"
"                          operated on.\r\n"
"      X       ---   ---   The variable with the GUID EFI_GLOBAL_VARIABLE and\r\n"
"                          the name Variable will be operated on.\r\n"
"      X        X    ---   The variable with the specified GUID and name\r\n"
"                          Variable will be operated on.\r\n"
"  2. The variable value is printed as a hexadecimal dump.\r\n"
"  3. Option -d is used to delete variables. Option -s and -l are used to save\r\n"
"     and load variables to and from a file. The variable name can be specified\r\n"
"     when using these flags so that the operation only takes effect on\r\n" 
"     that variable.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To dump all variables with the GUID EFI_GLOBAL_VARIABLE:\r\n"
"    Shell> dmpstore\r\n"
" \r\n"
"  * To dump all variables (regardless of GUID or name):\r\n"
"    Shell> dmpstore -all\r\n"
" \r\n"
"  * To dump the 'path' variable with the GUID '158DEF5A-F656-419C-B027-\r\n"
"    7A3192C079D2':\r\n"
"    Shell> dmpstore path -guid 158DEF5A-F656-419C-B027-7A3192C079D2\r\n"
" \r\n"
"  * To save all variables (regardless of GUID or name) to a file 'VarDump.txt':\r\n"
"    fs0:\> dmpstore -all -s VarDump.txt\r\n"
" \r\n"
"  * To delete the 'BootOrder' variable with the GUID EFI_GLOBAL_VARIABLE:\r\n"
"    Shell> dmpstore -d BootOrder\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_DBLK         #language en-US ""
".TH dblk 0 "Displays one or more blocks from a block device."\r\n"
".SH NAME\r\n"
"Displays one or more blocks from a block device.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"DBLK device [lba] [blocks] [-b]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -b     - Displays one screen at a time.\r\n"
"  device - Blocks the device name.\r\n"
"  lba    - Specifies the index of the first block to be displayed (a hexadecimal number).\r\n"
"           The default is 0.\r\n"
"  blocks - Specifies the number of blocks to display (a hexadecimal number). The default\r\n"
"           is 1. If larger than 0x10, then only 0x10 are displayed.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command displays the contents of one or more blocks from a block\r\n"
"     device. Enter a hexidecimal value for the lba and blocks variables.  If lba is not\r\n"
"     specified, block #0 is assumed. If blocks is not specified, on1y one\r\n"
"     block is displayed. The maximum number of blocks that can be\r\n"
"     displayed at one time is 0x10.\r\n"
"  2. If an MBR is found on the block, the partition information is displayed\r\n"
"     after all the block contents are displayed.\r\n"
"  3. If the block is a FAT partition, some FAT parameters are displayed\r\n"
"     (label, systemid, oemid, sectorsize, clustersize, media, and so forth) after all the\r\n"
"     blocks are displayed.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To display one block of blk0, beginning from block 0:\r\n"
"    Shell> dblk blk0\r\n"
" \r\n"
"  * To display one block of fs0, beginning from block 0x2:\r\n"
"    Shell> dblk fs0 2\r\n"
" \r\n"
"  * To display 0x5 blocks of fs0, beginning from block 0x12:\r\n"
"    Shell> dblk fs0 12 5\r\n"
" \r\n"
"  * To display 0x10 blocks of fs0, beginning from block 0x12:\r\n"
"    Shell> dblk fs0 12 10\r\n"
" \r\n"
"  * To attempt to display more than 0x10 blocks, resulting in only 0x10\r\n"
"    blocks being displayed:\r\n"
"    Shell> dblk fs0 12 20\r\n"
" \r\n"
"  * To display one block of blk2, beginning from the first block (blk0):\r\n"
"    fs1:\tmps1> dblk blk2 0 1\r\n"
" \r\n"

#string STR_GET_HELP_EDIT         #language en-US ""
".TH edit 0 "Provides a full screen text editor for ASCII or UCS-2 files."\r\n"
".SH NAME\r\n"
"Provides a full screen text editor for ASCII or UCS-2 files.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"EDIT [file]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  file - Specifies the name of file to be edited. If none is specified, an empty file\r\n"
"         is created with a default file name.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command enables full screen file editing.\r\n"
"  2. The editor supports both UCS-2 and ASCII file types.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To edit the 'shell.log' file:\r\n"
"    fs0:\> edit shell.log\r\n"

#string STR_GET_HELP_HEXEDIT      #language en-US ""
".TH hexedit 0 "Provides a full screen hex editor for files, block devices, or memory."\r\n"
".SH NAME\r\n"
"Provides a full screen hex editor for files, block devices, or memory.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"HEXEDIT [[-f] filename| [-d diskname offset size] | [-m address size]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -f - Specifies the name of the file to edit.\r\n"
"  -d - Specifies the disk block to edit:\r\n"
"         DiskName - Name of the disk to edit (for example fs0)\r\n"
"         Offset   - Starting block number (beginning from 0)\r\n"
"         Size     - Number of blocks to edit\r\n"
"  -m - Specifies the memory region to edit:\r\n"
"         Address  - Starting 32-bit memory address (beginning from 0)\r\n"
"         Size     - Size of memory region to edit in bytes\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command enables you to edit a file, block device, or memory region.\r\n"
"  2. The region being edited is displayed as hexadecimal bytes. The\r\n"
"     contents can be modified and saved.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To edit a file in hex mode:\r\n"
"    fs0:\> hexedit test.bin\r\n"
" \r\n"
"  * To edit block device fs0 starting at block 0 with size of 2 blocks:\r\n"
"    fs0:\> hexedit -d fs0 0 2\r\n"
" \r\n"
"  * To edit memory region starting at address 0x00000000 with size of 2 bytes:\r\n"
"    fs0:\> hexedit -m 0 2\r\n"

