private void breakpointHit(char pc) { registersModel.fireUpdate(); memoryModel.fireUpdate(0, RAM_SIZE - 1); // TODO optimize Integer srcline = asmMap.bin2src(pc); if (srcline != null) { try { sourceTextarea.requestFocus(); sourceTextarea.setCaretPosition(sourceTextarea.getLineStartOffset(srcline - 1)); } catch (BadLocationException e) { e.printStackTrace(); } } }
private void assemble() { Assembler assembler = new Assembler(); assembler.genMap = true; try { binary = new char[] {}; binary = assembler.assemble(sourceTextarea.getText()); cpu.upload(binary); memoryModel.fireUpdate(0, binary.length); asmMap = assembler.asmmap; for (Character addr : debugger.getBreakpoints()) { debugger.setBreakpoint(addr, false); } for (Integer breakpoint : srcBreakpoints) { Character addr = asmMap.src2bin(breakpoint); if (addr != null) { // TODO if null, mark breakpoint somehow debugger.setBreakpoint(addr, true); } } } catch (Exception ex) { JOptionPane.showMessageDialog( frame, "Compilation error " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(); } }
private void step() { debugger.breakpointsHalt = false; debugger.step(); registersModel.fireUpdate(); memoryModel.fireUpdate(0, RAM_SIZE - 1); // TODO optimize }