RESPONSE_CODES = {
    b"\x00\x00": "Normal completion",
    b"\x00\x01": "Service was interrupted",
    b"\x01\x01": "Local not not part of Network",
    b"\x01\x02": "Token time-out, node number too large",
    b"\x01\x03": "Number of transmit retries exceeded",
    b"\x01\x04": "Maximum number of frames exceeded",
    b"\x01\x05": "Node number setting error (range)",
    b"\x01\x06": "Node number duplication error",
    b"\x02\x01": "Destination node not part of Network",
    b"\x02\x02": "No node with the specified node number",
    b"\x02\x03": "Third node not part of Network : Broadcasting was specified",
    b"\x02\x04": "Busy error, destination node busy",
    b"\x02\x05": "Response time-out",
    b"\x03\x01": "Error occurred : ERC indicator is lit",
    b"\x03\x02": "CPU error occurred in the PC at the destination node",
    b"\x03\x03": "A controller error has prevented a normal response",
    b"\x03\x04": "Node number setting error",
    b"\x04\x01": "An undefined command has been used",
    b"\x04\x02": "Cannot process command because the specified unit model or version is wrong",
    b"\x05\x01": "Destination node number is not set in the routing table",
    b"\x05\x02": "Routing table isn't registered",
    b"\x05\x03": "Routing table error",
    b"\x05\x04": "Max relay nodes (2) was exceeded",
    b"\x10\x01": "The command is longer than the max permissible length",
    b"\x10\x02": "The command is shorter than the min permissible length",
    b"\x10\x03": "The designated number of data items differs from the actual number",
    b"\x10\x04": "An incorrect command format has been used",
    b"\x10\x05": "An incorrect header has been used",
    b"\x11\x01": "Memory area code invalid or DM is not available",
    b"\x11\x02": "Access size is wrong in command",
    b"\x11\x03": "First address in inaccessible area",
    b"\x11\x04": "The end of specified word range exceeds acceptable range",
    b"\x11\x06": "A non-existent program number",
    b"\x11\x09": "The size of data items in command block are wrong",
    b"\x11\x0A": "The IOM break function cannot be executed",
    b"\x11\x0B": "The response block is longer than the max length",
    b"\x11\x0C": "An incorrect parameter code has been specified",
    b"\x20\x02": "The data is protected",
    b"\x20\x03": "Registered table does not exist",
    b"\x20\x04": "Search data does not exist",
    b"\x20\x05": "Non-existent program number",
    b"\x20\x06": "Non-existent file",
    b"\x20\x07": "Verification error",
    b"\x21\x01": "Specified area is read-only",
    b"\x21\x02": "The data is protected",
    b"\x21\x03": "Too many files open",
    b"\x21\x05": "Non-existent program number",
    b"\x21\x06": "Non-existent file",
    b"\x21\x07": "File already exists",
    b"\x21\x08": "Data cannot be changed",
    b"\x22\x01": "The mode is wrong (executing)",
    b"\x22\x02": "The mode is wrong (stopped)",
    b"\x22\x03": "The PC is in the PROGRAM mode",
    b"\x22\x04": "The PC is in the DEBUG mode",
    b"\x22\x05": "The PC is in the MONITOR mode",
    b"\x22\x06": "The PC is in the RUN mode",
    b"\x22\x07": "The specified node is not the control node",
    b"\x22\x08": "The mode is wrong and the step cannot be executed",
    b"\x23\x01": "The file device does not exist where specified",
    b"\x23\x02": "The specified memory does not exist",
    b"\x23\x03": "No clock exists",
    b"\x24\x01": "Data link table is incorrect",
    b"\x25\x02": "Parity / checksum error occurred",
    b"\x25\x03": "I/O setting error",
    b"\x25\x04": "Too many I/O points",
    b"\x25\x05": "CPU bus error",
    b"\x25\x06": "I/O duplication error",
    b"\x25\x07": "I/O bus error",
    b"\x25\x09": "SYSMAC BUS/2 error",
    b"\x25\x0A": "Special I/O Unit error",
    b"\x25\x0D": "Duplication in SYSMAC BUS word allocation",
    b"\x25\x0F": "A memory error has occurred",
    b"\x25\x10": "Terminator not connected in SYSMAC BUS system",
    b"\x26\x01": "The specified area is not protected",
    b"\x26\x02": "An incorrect password has been specified",
    b"\x26\x04": "The specified area is protected",
    b"\x26\x05": "The service is being executed",
    b"\x26\x06": "The service is not being executed",
    b"\x26\x07": "Service cannot be execute from local node",
    b"\x26\x08": "Service cannot be executed settings are incorrect",
    b"\x26\x09": "Service cannot be executed incorrect settings in command data",
    b"\x26\x0A": "The specified action has already been registered",
    b"\x26\x0B": "Cannot clear error, error still exists",
    b"\x30\x01": "The access right is held by another device",
    b"\x40\x01": "Command aborted with ABORT command",
}
