EXECUTION TRACE

    This window is used to display the trace buffer. Selecting an execution step from this window causes the source listing and disassembler windows to be positioned at the relevent instruction. This window is divided into columns allowing the user to selectively hide unintresting information. This window is also used to show debug information generated by the simulator. Debug information is stored in the trace buffer together with the CPU state change information in strict execution order. The debug information will consequently always correspond to the CPU state after which it apears.
    The fields of the execution trace are:
    1. CPU clock cycle
    2. program counter (location from which opcode was fetched)
    3. hex value of machine code fetched
    4. assembler nmemonic corresponding to machine code fetched
    5. destination register e.g. f21, w (in the case where the machine code does not modify the register, then this is the source register e.g. BTFSS)
    6. the original value of the destination register
    7. the final value of the destination register
    8. condition code register if modified
    9. port A if modified
    10. port B if modified

SOURCE LISTING

This window is used to display the assembler source listing (combined source code and generated relocated hex executable). Selecting a line from this window will cause the same machine code location to be selected from the disassembler window provided the selected line contains a machine code instruction. Selecting a line that is already selected causes a break point to be toggled for that machine code location.

DISASSEMBLER LISTING

This window is used to display the nmemonic representation of the machine code executable that is loaded into the simulator. Loading a hex file that has not corresponding assembler source listing will still provied a disassembler listing but no source listing (the disassembler does not rely on a source listing).  Where breaks exist in the machine code executable (no code is loaded into one or more program locations), these breaks are indicated in the disassembler l.isting by blank lines. Selecting a line in the disassembler listing that contains a valid machine code instruction will cause a break point for that memory location to be toggled. The corressponding assembler source line will also be selected and highlighted.

SPECIAL RESISTERS

This window is used to monitor the special CPU registers (e.g. PC, W, PORTA, TRISA etc). It is also used to monitor some special simulation registers.
These are:

CALL STACK

This window is used to monitor the call stack (which is also used by a real CPU to store interrupt return addresses). Selecting any of the valid return addresses shown in this window will cause the corresponding program location to be selected and displayed in both the disassembler and assembler source listing windows. This feature allows the developer to cenveniently hop around between calling and called sub-routines.

DATA / REG MONITOR

This window is used to monitor all CPU registers (including special registers), but not any of the simulation registers (i.e. IPn, XPn or XPnDDR). Selecting any data value shown in this window will cause it to be displayed in the extry text field. Its value can then be modified (via the keyboard). The value of the original register will be changed when <enter> is pressed.

EEPROM MONITOR

This window is used to monitor the internal EEPROM. Selecting any data value shown in this window will cause it to be displayed in the entry text field. Its value can then be modified (via the keyboard). The value of the original EEPROM location will be changed when <enter> is pressed.

CODE LABELS

This window is used to show code labels and their corresponding values. Selecting any of these labels will cause the corresponding program location to be selected and displayed in both the disassembler and assembler source listing windows.

DATA LABELS AND WATCH WINDOW

This window has two purposes

Window Resizing

The simulator (XCSIM) window can be easily resized be grabbing the window at a corner and dragging the corner until the window atains the desired size. Windows within the XCSIM window (e.g. the trace window) can be easily resized by grabbing the appropriot divider and dragging it until the window atains the required size.