private void renderDisassembly(final List<DisassembledLine> lines) {
    final Address pc = emulator.getCPU().getPC(); // used to mark the current PC value

    final StringBuilder result = new StringBuilder();
    final Iterator<DisassembledLine> it = lines.iterator();

    boolean first = true;
    while (it.hasNext()) {
      final DisassembledLine line = it.next();

      if (first) {
        first = false;
        addressAtTopOfScreen = line.getAddress();
      }

      if (!it.hasNext()) {
        addressAtBottomOfScreen = line.getAddress();
      }

      // create disassembled line
      result.append(toString(pc, line));
      if (it.hasNext()) {
        result.append("\n");
      }
    }

    SwingUtilities.invokeLater(
        new Runnable() {

          @Override
          public void run() {
            textArea.setText(result.toString());
          }
        });
  }
  @Override
  public void refreshDisplay() {
    if (emulator == null) {
      return;
    }

    setViewStartingAddress(emulator.getCPU().getPC());
  }