Example #1
0
  public Object getValueAt(int row, int column) {
    Object res = "";
    int memLoc = rowToMemLoc(row);
    switch (column) {
      case C_ADDRESS:
        res = Utils.asHex(memLoc);
        break;

      case C_VALUE:
        res = Utils.asHex(memory.getAt(memLoc));
        break;

      case C_REGPTRS:
        {
          String pc, sp, mp;
          pc = sp = mp = "";
          if (memLoc == registers.getReg(Registers.PC)) pc = " PC";
          if (memLoc == registers.getReg(Registers.SP)) sp = " SP";
          if (memLoc == registers.getReg(Registers.MP)) mp = " MP";
          res = pc + sp + mp;
        }
        break;

      case C_ANNOTE:
        MemoryAnnotation ann = memory.getAnnotationAt(memLoc);
        res = ann == null ? ColoredText.blankDefault : ann;
        break;
    }
    return res;
  }
Example #2
0
 public void reset() {
   if (memory != null) memory.removeMemoryCellListener(this);
   if (registers != null) registers.removeMemoryCellListener(this);
   memory = machineState.getMemory();
   registers = machineState.getRegisters();
   memory.addMemoryCellListener(this);
   registers.addMemoryCellListener(this);
   startAddressOfStack = maxAccessedSP = registers.getReg(Registers.SP);
   fireTableChanged(new TableModelEvent(this));
 }
Example #3
0
  public void cellChanged(MemoryCellEvent e) {
    Object src = e.getSource();
    int v;
    if (src == memory) {
      int row = memLocToRow(e.cellIndex);
      if (isMemLocWithinStackRange(e.cellIndex)) fireTableRowsUpdated(row, row);
    } else if (src == registers && e.event == MemoryCellEvent.CELL) {
      int loc = registers.getReg(e.cellIndex);
      if (e.cellIndex == Registers.SP && maxAccessedSP < loc) {
        int oldSPRow = rowToMemLoc(maxAccessedSP);
        int newSPRow = rowToMemLoc(loc);
        maxAccessedSP = loc;
        isSPChanged = true;
        fireTableRowsInserted(oldSPRow + 1, newSPRow);
      } else isSPChanged = false;

      if (isMemLocWithinStackRange(v = e.getOldCellValue())) {
        int oldrow = memLocToRow(v);
        fireTableCellUpdated(oldrow, C_REGPTRS);
      }
      if (isMemLocWithinStackRange(loc)) {
        int row = memLocToRow(loc);
        fireTableCellUpdated(row, C_REGPTRS);
      }
    }
  }