// /**
//
// Copyright (c) 2010 - 2016, 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_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_SIZE_FAIL        #language en-US "Difference # 1: File size mismatch.\r\n"
#string STR_COMP_SPOT_FAIL1       #language en-US ""
                                                  "Difference #% 2d:\r\n"
                                                  "File1: %s\r\n"
                                                  "  %08x: %02x                               *%c*\r\n"
                                                  "File2: %s\r\n"
                                                  "  %08x: %02x                               *%c*\r\n"
#string STR_COMP_SPOT_FAIL2       #language en-US ""
                                                  "Difference #% 2d:\r\n"
                                                  "File1: %s\r\n"
                                                  "  %08x: %02x %02x                            *%c%c*\r\n"
                                                  "File2: %s\r\n"
                                                  "  %08x: %02x %02x                            *%c%c*\r\n"
#string STR_COMP_SPOT_FAIL3       #language en-US ""
                                                  "Difference #% 2d:\r\n"
                                                  "File1: %s\r\n"
                                                  "  %08x: %02x %02x %02x                         *%c%c%c*\r\n"
                                                  "File2: %s\r\n"
                                                  "  %08x: %02x %02x %02x                         *%c%c%c*\r\n"
#string STR_COMP_SPOT_FAIL4       #language en-US ""
                                                  "Difference #% 2d:\r\n"
                                                  "File1: %s\r\n"
                                                  "  %08x: %02x %02x %02x %02x                      *%c%c%c%c*\r\n"
                                                  "File2: %s\r\n"
                                                  "  %08x: %02x %02x %02x %02x                      *%c%c%c%c*\r\n"

#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_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"
                                                  "              -------------- \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"\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_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_GN   #language en-US "%H%s%N: No matching variables found. Guid %g, Name %s\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_G    #language en-US "%H%s%N: No matching variables found. Guid %g\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 - Specifies a starting address.\r\n"
"  Value   - Specifies the value to write.\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: 0x000000ssbbddffrr\r\n"
"              ss   - 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: 0x00000ssbbddffrrr\r\n"
"              ss   - 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 0x000000ssbbddffxx]".\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=00, bb=00, dd=00, ff=00, rr=00:\r\n"
"    Shell> mm 0000000000 -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=00, bb=06, dd=00, ff=00, rrr=000:\r\n"
"    Shell> mm 00060000000 -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 already exists.\r\n"
"  6. If the variable already exists and the attributes cannot be changed,\r\n"
"     then -1 is returned. \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 a PCI device list or PCI function configuration space of a device.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"PCI [Bus Dev [Func] [-s Seg] [-i]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -s   - Specifies optional segment number.\r\n"
"  -i   - Displays interpreted information.\r\n"
"  Bus  - Specifies a bus number.\r\n"
"  Dev  - Specifies a device number.\r\n"
"  Func - Specifies a function 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"
"  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])]\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"
"  -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"

