code: public static byte[] setVerticalScrollArea(byte fixedRows, byte scrolledRows) {
          if (fixedRows < 0 || fixedRows > 63) {
              throw new IllegalArgumentException("Fixed rows must be between 0 and 63.");
          }
          if (scrolledRows < 0 || scrolledRows > 127) {
              throw new IllegalArgumentException("Scrolled rows must be between 0 and 127.");
          }
          return new byte[]{
              COMMAND_CONTROL_BYTE, SET_VERTICAL_SCROLL_AREA,
              COMMAND_CONTROL_BYTE, fixedRows,
              COMMAND_CONTROL_BYTE, scrolledRows
          };
      }
docs: Sets vertical scroll area.
  <p>
  For 64-row display:
  <ul>
  <li>fixedRows = 0, scrolledRows : whole area scrolls</li>
  <li>fixedRows = 0, scrolledRows &lt; 64 : top area scrolls</li>
  <li>fixedRows + scrolledRows &lt; 64 : central area scrolls</li>
  <li>fixedRows + scrolledRows = 64 : bottom area scrolls</li>
  </ul>
  </p>
  <p>
  Note that:
  <ul>
  <li>fixedRows + scrolledRows &lt;= {@link #setMultiplexRatio}</li>
  <li>scrolledRows &lt;= {@link #setMultiplexRatio}</li>
  <li>verticalOffset from {@link #setVerticalAndHorizontalScroll} &lt;= scrolledRows</li>
  <li>{@link #setDisplayStartLine} &lt;= scrolledRows</li>
  </ul>
  </p>
  
  @param fixedRows No. of rows in top fixed area. It is referenced to the
  top of the GDDRAM.
  @param scrolledRows No. of rows in scroll area. This is the number of
  rows to be used for vertical scrolling. The scroll area starts in the
  first row below the top fixed area.
  @return command sequence