mars.tools
Class KeyboardAndDisplaySimulator
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
mars.tools.AbstractMarsToolAndApplication
mars.tools.KeyboardAndDisplaySimulator
- All Implemented Interfaces:
- ImageObserver, MenuContainer, Serializable, Observer, Accessible, RootPaneContainer, WindowConstants, MarsTool
public class KeyboardAndDisplaySimulator
- extends AbstractMarsToolAndApplication
Keyboard and Display Simulator. It can be run either as a stand-alone Java application having
access to the mars package, or through MARS as an item in its Tools menu. It makes
maximum use of methods inherited from its abstract superclass AbstractMarsToolAndApplication.
Pete Sanderson
Version 1.0, 24 July 2008.
Version 1.1, 24 November 2008 corrects two omissions: (1) the tool failed to register as an observer
of kernel text memory when counting instruction executions for transmitter ready bit
reset delay, and (2) the tool failed to test the Status register's Exception Level bit before
raising the exception that results in the interrupt (if the Exception Level bit is 1, that
means an interrupt is being processed, so disable further interrupts).
Version 1.2, 6 August 2009, soft-codes the MMIO register locations for new memory configuration
feature of MARS 3.7. Previously memory segment addresses were fixed and final. Now they
can be modified dynamically so the tool has to get its values dynamically as well.
- See Also:
- Serialized Form
Fields inherited from class java.awt.Frame |
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, 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 |
Method Summary |
protected void |
addAsObserver()
Override the inherited method, which registers us as an Observer over the static data segment
(starting address 0x10010000) only. |
protected JComponent |
buildMainDisplayArea()
Method that constructs the main display area. |
protected JComponent |
getHelpComponent()
Overrides default method, to provide a Help button for this tool/app. |
String |
getName()
Required MarsTool method to return Tool name. |
protected void |
initializePostGUI()
Initialization code to be executed after the GUI is configured. |
protected void |
initializePreGUI()
Method that will be called once just before the GUI is constructed in the go() and action()
methods. |
static void |
main(String[] args)
Main provided for pure stand-alone use. |
protected void |
processMIPSUpdate(Observable memory,
AccessNotice accessNotice)
Update display when connected MIPS program accesses (data) memory. |
protected void |
reset()
Method to reset counters and display when the Reset button selected. |
Methods inherited from class mars.tools.AbstractMarsToolAndApplication |
action, addAsObserver, addAsObserver, buildButtonAreaMarsTool, buildButtonAreaStandAlone, buildHeadingArea, deleteAsObserver, deleteAsObserver, go, isObserving, performSpecialClosingDuties, update, updateDisplay |
Methods inherited from class javax.swing.JFrame |
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update |
Methods inherited from class java.awt.Frame |
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated |
Methods inherited from class java.awt.Window |
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront |
Methods inherited from class java.awt.Container |
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree |
Methods inherited from class java.awt.Component |
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, 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, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle |
preferredTextAreaDimension
public static Dimension preferredTextAreaDimension
RECEIVER_CONTROL
public static int RECEIVER_CONTROL
RECEIVER_DATA
public static int RECEIVER_DATA
TRANSMITTER_CONTROL
public static int TRANSMITTER_CONTROL
TRANSMITTER_DATA
public static int TRANSMITTER_DATA
KeyboardAndDisplaySimulator
public KeyboardAndDisplaySimulator(String title,
String heading)
- Simple constructor, likely used to run a stand-alone keyboard/display simulator.
- Parameters:
title
- String containing title for title barheading
- String containing text for heading shown in upper part of window.
KeyboardAndDisplaySimulator
public KeyboardAndDisplaySimulator()
- Simple constructor, likely used by the MARS Tools menu mechanism
main
public static void main(String[] args)
- Main provided for pure stand-alone use. Recommended stand-alone use is to write a
driver program that instantiates a KeyboardAndDisplaySimulator object then invokes its go() method.
"stand-alone" means it is not invoked from the MARS Tools menu. "Pure" means there
is no driver program to invoke the application.
getName
public String getName()
- Required MarsTool method to return Tool name.
- Specified by:
getName
in interface MarsTool
- Specified by:
getName
in class AbstractMarsToolAndApplication
- Returns:
- Tool name. MARS will display this in menu item.
initializePreGUI
protected void initializePreGUI()
- Description copied from class:
AbstractMarsToolAndApplication
- Method that will be called once just before the GUI is constructed in the go() and action()
methods. Use it to initialize any data structures needed for the application whose values
will be needed to determine the initial state of GUI components. By default it does nothing.
- Overrides:
initializePreGUI
in class AbstractMarsToolAndApplication
addAsObserver
protected void addAsObserver()
- Override the inherited method, which registers us as an Observer over the static data segment
(starting address 0x10010000) only.
When user enters keystroke, set RECEIVER_CONTROL and RECEIVER_DATA using the action listener.
When user loads word (lw) from RECEIVER_DATA (we are notified of the read), then clear RECEIVER_CONTROL.
When user stores word (sw) to TRANSMITTER_DATA (we are notified of the write), then clear TRANSMITTER_CONTROL, read TRANSMITTER_DATA,
echo the character to display, wait for delay period, then set TRANSMITTER_CONTROL.
If you use the inherited GUI buttons, this method is invoked when you click "Connect" button on MarsTool or the
"Assemble and Run" button on a Mars-based app.
- Overrides:
addAsObserver
in class AbstractMarsToolAndApplication
buildMainDisplayArea
protected JComponent buildMainDisplayArea()
- Method that constructs the main display area. It is organized vertically
into two major components: the display and the keyboard. The display itself
is a JTextArea and it echoes characters placed into the low order byte of
the Transmitter Data location, 0xffff000c. They keyboard is also a JTextArea
places each typed character into the Receive Data location 0xffff0004.
- Specified by:
buildMainDisplayArea
in class AbstractMarsToolAndApplication
- Returns:
- the GUI component containing these two areas
processMIPSUpdate
protected void processMIPSUpdate(Observable memory,
AccessNotice accessNotice)
- Update display when connected MIPS program accesses (data) memory.
- Overrides:
processMIPSUpdate
in class AbstractMarsToolAndApplication
- Parameters:
memory
- the attached memoryaccessNotice
- information provided by memory in MemoryAccessNotice object
initializePostGUI
protected void initializePostGUI()
- Initialization code to be executed after the GUI is configured. Overrides inherited default.
- Overrides:
initializePostGUI
in class AbstractMarsToolAndApplication
reset
protected void reset()
- Method to reset counters and display when the Reset button selected.
Overrides inherited method that does nothing.
- Overrides:
reset
in class AbstractMarsToolAndApplication
getHelpComponent
protected JComponent getHelpComponent()
- Overrides default method, to provide a Help button for this tool/app.
- Overrides:
getHelpComponent
in class AbstractMarsToolAndApplication