slave.func[FuncCode.readInputRegisters] = (m) { auto origStart = slave.backend.unpackT!ushort(m.data[0..2]); auto count = slave.backend.unpackT!ushort(m.data[2..4]); if (count == 0 || count > 125) return slave.illegalDataValue; if (count > dataTable.length) return slave.illegalDataValue; ptrdiff_t start = origStart - START_DATA_REG; if (start >= table.length || start < 0) return slave.illegalDataAddress; return slave.packResult(cast(ubyte)(count*2), dataTable[start..start+count]); };