title: Can a holding register in the middle of readable holding registers be an "IllegalDataAddress"?
body: <p>While unit testing a Modbus driver I'm writing I experienced the following:</p>
  
  <ol>
  <li>I can read holding registers 0 to 1022.</li>
  <li>I <strong>can't</strong> read holding registers 1022 to 13000. I get an <code>illegal data address</code> error code.</li>
  <li>I can read holding registers 13000 to 25000.</li>
  </ol>
  
  <p>I would have expected devices supporting Modbus to behave in one of the following two ways:</p>
  
  <ol>
  <li>Every device supports the full range of addresses from 0x0000 to 0xFFFF.</li>
  <li>Every device supports a range of addresses from 0x0000 to N, where N &lt; 0xFFFF.</li>
  </ol>
  
  <p>Do any of you more experienced people know:</p>
  
  <ol>
  <li>Is Assumption 1 or 2 about the expected behavior of Modbus devices correct?</li>
  <li>Are there other reasons beside being out of bounds for an address to be an <code>illegal data address</code>?</li>
  </ol>