private StringBuffer getShortStringData(int shortSID, int nBytes) {
    StringBuffer data = new StringBuffer();
    byte[] byteBuf = new byte[shortSectorSize];
    int ptShort = 0;
    int thisSID;
    if (rootEntry == null)
      return data;
    try {
      thisSID = rootEntry.SIDfirstSector;
      // point to correct short data sector, 512/64 = 4 per page
      while (thisSID >= 0 && shortSID >= 0 && nBytes > 0) {
        while (shortSID - ptShort >= nShortSectorsPerStandardSector) {
          ptShort += nShortSectorsPerStandardSector;
          thisSID = SAT[thisSID];
        }
        seek(getOffset(thisSID) + (shortSID - ptShort) * shortSectorSize);
        readByteArray(byteBuf);
        for (int i = 0; i < shortSectorSize; i++) {
          if (byteBuf[i] == 0)
            return new StringBuffer();
          data.append((char)byteBuf[i]);
          if (--nBytes == 0)
            break;
        }
        shortSID = SSAT[shortSID];
      }
    } catch (Exception e) {
      Logger.error(null, e);
    }
    return data;
  }