miSim

misim
Class BreakpointManager

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--misim.BreakpointManager
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.event.ActionListener, ChainedClockListener, ClockListener, java.util.EventListener, java.awt.image.ImageObserver, java.awt.event.ItemListener, java.awt.MenuContainer, java.io.Serializable

public class BreakpointManager
extends java.awt.Frame
implements java.awt.event.ActionListener, java.awt.event.ItemListener, ChainedClockListener

The BreakpointManager maintains the list of breakpoints set for the processor, implements those breakpoints as a ChainedClockListener and provides a dialog for viewing and editing breakpoints.

See Also:
Serialized Form

Inner classes inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Inner classes inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
BreakpointManager(Processor processor, ProcessorView view, LogListener logging, java.awt.Color background)
          Constructor for the breakpointManager.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent anEvent)
          Respond to a GUI event.
 boolean breakpointAt(int address)
          Return true if there is a breakpoint at the given address
 void clearAllBreakpoints()
          Confirm that the user wishes to remove all breakpoints and if so, clear all breakpoints, and remove the manager from the processor's list of chainedClockListeners
 void clockEvent(long clocks)
          This method is called after each instruction is executed.
 java.awt.PopupMenu createDebugMenu()
          Create the Debug popup menu which will be displayed by the main miSim window.
 void editBreakpoints()
          Display the dialog to edit the current list of breakpoints
 ClockListener getNext()
          Return the next event handler in the chain.
 void itemStateChanged(java.awt.event.ItemEvent e)
          Respond to a selection event in the breakpoint list view
 void prepare(long clocks)
          Prepare for emulation, beginning at the given clock count
 void reset()
          Respond to any reset event for the processor
 void setNext(ClockListener nextListener)
          Set the next event handler in the chain.
 void setProcessor(Processor processor)
          Set a new processor for the breakpointManager.
 void showBreakpoints()
          Show the current set of breakpoints, by re-adding them to the view.
 void updateBreakpoint(boolean add, boolean prompt)
          Add or remove a breakpoint at a given address.
 void updateButtons()
           
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getAccessibleContext, getCursorType, getFrames, getIconImage, getMenuBar, getState, getTitle, isResizable, paramString, remove, removeNotify, setCursor, setIconImage, setMenuBar, setResizable, setState, setTitle
 
Methods inherited from class java.awt.Window
addWindowListener, applyResourceBundle, applyResourceBundle, dispose, getFocusOwner, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getOwnedWindows, getOwner, getToolkit, getWarningString, hide, isShowing, pack, postEvent, processEvent, processWindowEvent, removeWindowListener, setCursor, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setFont, setLayout, update, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputMethodRequests, getLocation, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isDisplayable, isDoubleBuffered, isEnabled, isFocusTraversable, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Constructor Detail

BreakpointManager

public BreakpointManager(Processor processor,
                         ProcessorView view,
                         LogListener logging,
                         java.awt.Color background)
Constructor for the breakpointManager. This sets the processor, logListener and owner variables and creates an empty breakpoint list and basic dialog.
Method Detail

createDebugMenu

public java.awt.PopupMenu createDebugMenu()
Create the Debug popup menu which will be displayed by the main miSim window. This panel will respond to the menu events.
Returns:
The newly created PopupMenu

setProcessor

public void setProcessor(Processor processor)
Set a new processor for the breakpointManager. This rebuilds the breakpoint array, but does not update the view to show the current breakpoints. This happens when assembly causes the processor type to change.
Parameters:
processor - The new processor

showBreakpoints

public void showBreakpoints()
Show the current set of breakpoints, by re-adding them to the view. This does not remove existing breakpoints from the view, but simply adds all set breakpoints.

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent anEvent)
Respond to a GUI event.
Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
anEvent - The event to be processed.

itemStateChanged

public void itemStateChanged(java.awt.event.ItemEvent e)
Respond to a selection event in the breakpoint list view
Specified by:
itemStateChanged in interface java.awt.event.ItemListener
Parameters:
e - The ItemEvent that has ocurred

updateButtons

public void updateButtons()

breakpointAt

public boolean breakpointAt(int address)
Return true if there is a breakpoint at the given address
Parameters:
address - The address to check for a breakpoint
Returns:
true If there is a breakpoint at this address

updateBreakpoint

public void updateBreakpoint(boolean add,
                             boolean prompt)
Add or remove a breakpoint at a given address. The user is prompted to enter a breakpoint address, which has a default value decided by the selected line in the view window.
Parameters:
add - True if the breakpoint should be added
prompt - True if the user should be prompted to edit the address

editBreakpoints

public void editBreakpoints()
Display the dialog to edit the current list of breakpoints

clearAllBreakpoints

public void clearAllBreakpoints()
Confirm that the user wishes to remove all breakpoints and if so, clear all breakpoints, and remove the manager from the processor's list of chainedClockListeners

prepare

public void prepare(long clocks)
Prepare for emulation, beginning at the given clock count
Specified by:
prepare in interface ClockListener
Parameters:
clocks - The clock count that emulation will start at

reset

public void reset()
Respond to any reset event for the processor

clockEvent

public void clockEvent(long clocks)
This method is called after each instruction is executed. Note that the number of clocks since the last call may be more than 1. This will occur for some branch instructions, and when loops have been optimised - resulting in a sequence of loop instructions being emulated in a single atomic event.
Specified by:
clockEvent in interface ClockListener
Parameters:
clocks - The current clock count for the processor

setNext

public void setNext(ClockListener nextListener)
Set the next event handler in the chain. The implementation of this class MUST call nextEventIF.clockEvent at the end of the clockEvent method - ie. it must honour the chain.
Specified by:
setNext in interface ChainedClockListener
Parameters:
nextListener - The next clock event listener in the chain

getNext

public ClockListener getNext()
Return the next event handler in the chain.
Specified by:
getNext in interface ChainedClockListener
Returns:
The next event handler in the chain

miSim