private void forward() {
    if (diskModeWrite && (via2CA == 0xff) &&
        currentByte != -1 && sectorPos >= 0) {
      bytesWritten++;
      if (DEBUG) {
        System.out.println("#### Write byte: " +
            Integer.toString(currentByte, 16) + " ("
            + Integer.toString(gcrSector[sectorPos], 16) +
            ")" + (char) currentByte + "  y=" + cpu.y +
            " written: " + bytesWritten +
            " SectorPos: " + sectorPos + " " + cpu.cycles);
      }
      // Should this be written a byte "backwards"??
      gcrWriteSector[sectorPos] = currentByte;
    }
    sectorPos++;
    if (sectorPos == GCR_SECTOR_SIZE) {
      finishWrite();
      sectorPos = -1;
      // Some extra cycles when switching sector?!!
      nextAutoforward += 1000;
      sector = (sector + 1) % currentTrackSize;
      readGCRSector(track, sector);
    }

    update(this, SECTOR_UPDATE);
    // IF not sync now or last time...
    if (diskModeWrite || sync() != 0 || !lastSync) {
      // Only trigger byte ready when not at sync bytes!
      cpu.triggerByteReady();
    }
    lastSync = sync() == 0;
  }