jb302@39: #LyX 2.0 created this file. For more info see http://www.lyx.org/
jb302@39: \lyxformat 413
jb302@39: \begin_document
jb302@39: \begin_header
jb302@39: \textclass article
jb302@39: \use_default_options true
jb302@39: \maintain_unincluded_children false
jb302@39: \language english
jb302@39: \language_package default
jb302@39: \inputencoding auto
jb302@39: \fontencoding global
jb302@39: \font_roman default
jb302@39: \font_sans default
jb302@39: \font_typewriter default
jb302@39: \font_default_family default
jb302@39: \use_non_tex_fonts false
jb302@39: \font_sc false
jb302@39: \font_osf false
jb302@39: \font_sf_scale 100
jb302@39: \font_tt_scale 100
jb302@39:
jb302@39: \graphics default
jb302@39: \default_output_format default
jb302@39: \output_sync 0
jb302@39: \bibtex_command default
jb302@39: \index_command default
jb302@39: \paperfontsize default
jb302@39: \use_hyperref false
jb302@39: \papersize default
jb302@39: \use_geometry false
jb302@39: \use_amsmath 1
jb302@39: \use_esint 1
jb302@39: \use_mhchem 1
jb302@39: \use_mathdots 1
jb302@39: \cite_engine basic
jb302@39: \use_bibtopic false
jb302@39: \use_indices false
jb302@39: \paperorientation portrait
jb302@39: \suppress_date false
jb302@39: \use_refstyle 1
jb302@39: \index Index
jb302@39: \shortcut idx
jb302@39: \color #008000
jb302@39: \end_index
jb302@39: \secnumdepth 3
jb302@39: \tocdepth 3
jb302@39: \paragraph_separation indent
jb302@39: \paragraph_indentation default
jb302@39: \quotes_language english
jb302@39: \papercolumns 1
jb302@39: \papersides 1
jb302@39: \paperpagestyle default
jb302@39: \tracking_changes false
jb302@39: \output_changes false
jb302@39: \html_math_output 0
jb302@39: \html_css_as_file 0
jb302@39: \html_be_strict false
jb302@39: \end_header
jb302@39:
jb302@39: \begin_body
jb302@39:
jb302@39: \begin_layout Part
jb302@39: The Debugger
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Section
jb302@39: Design
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: The debugger is designed to issue commands to and receive data from an instant
jb302@39: of the emulator running either as a process or on a micro-controller.
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset ERT
jb302@39: status open
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39:
jb302@39: \backslash
jb302@39: bigskip
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset Graphics
jb302@39: filename /home/jmz/qm/ede/docs/img/dbg/debugger_overview.svg
jb302@39: display false
jb302@39:
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset ERT
jb302@39: status open
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39:
jb302@39: \backslash
jb302@39: bigskip
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: The debugger will implement the protocol described under the Emulator Design
jb302@39: section of this report.
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset Newpage pagebreak
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Section
jb302@39: Implementation
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Subsection
jb302@39: dbg.py
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: The debugger has been implemented as a Python class with the following functions
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset ERT
jb302@39: status open
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39:
jb302@39: \backslash
jb302@39: bigskip
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset Tabular
jb302@39:
jb302@39:
jb302@39:
jb302@39:
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Function
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Arguments
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Description
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: snd
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: byte
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: send a byte to the emulator via a serial or file buffer
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: rcv
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: length
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: receive length number of bytes from a serial or file buffer
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: step
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: -
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Execute instruction at PC
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: run
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: -
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Execute instructions from PC until a break point is reached
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: set_reg
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: register address, value
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Set a register (register address between 0 and 16 as described under Memory
jb302@39: Design in the Emulator Design section)
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: get_reg
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: register address
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Get the value of a register
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: set_flag
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: flag bit, 0 or 1
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Turn a flag bit on or off.
jb302@39: LSB = 0, MSB =7
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: get_flag
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: flag bit
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Get the value of a flag bit
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: set_block
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: address high, address low, length high, length low, [byte array]
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Set a block of memory of arbitrary length with the bytes in the byte array
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: get_block
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: address high, address low, length high, length low
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Read a block of memory of arbitrary length
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: get_a
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: -
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Get value of A
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: get_flags
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: -
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Get value of flags
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: get_ir
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: -
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Get Value of IR
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: run_len
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: length high, length low
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Run for length number of instruction
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: free_run
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: -
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Run forever - Bypass controller
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: set_bp
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: break point index, address high, address low
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39: \begin_inset Text
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39: Set 1 of 8 possible break points
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39: |
jb302@39:
jb302@39:
jb302@39:
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@40: The class also has the attribute 'Emu' which can be set to point the debugger
jb302@40: at either an emulator process or a serial port.
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset Newpage pagebreak
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: The rcv function needs to check that the emulator's output buffer is the
jb302@39: correct length before returning the data to the user.
jb302@39: Below is a pseudo-code representation of how this is achieved.
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Standard
jb302@39: \begin_inset listings
jb302@39: lstparams "basicstyle={\ttfamily},captionpos=b,frame=tb,framexbottommargin=1em,framextopmargin=1em,keywordstyle={\color{blue}},tabsize=4"
jb302@39: inline false
jb302@39: status open
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39: rcv ( length ):
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39: while output buffer size != length:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39: wait
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Plain Layout
jb302@39:
jb302@39: return output buffer
jb302@39: \end_layout
jb302@39:
jb302@39: \end_inset
jb302@39:
jb302@39:
jb302@39: \end_layout
jb302@39:
jb302@39: \begin_layout Subsection
jb302@39: cli.py
jb302@39: \end_layout
jb302@39:
jb302@40: \begin_layout Standard
jb302@40: This file offers the user a text based interface to the debug class.
jb302@40: It implements the following commands:
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: \begin_inset ERT
jb302@40: status open
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40:
jb302@40:
jb302@40: \backslash
jb302@40: bigskip
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: \begin_inset Tabular
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Command
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Function
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: step
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: step
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: run
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: run
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: sr
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: set_reg
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: gr
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: get_reg
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: sf
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: set_flag
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: gr
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: get_flag
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: sb
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: set_block
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: gb
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: get_block
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: ga
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: get_a
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: gf
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: get_flags
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: gir
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: get_ir
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: runl
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: run_length
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: frun
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: free_run
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: sbp
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: set_bp
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: exc
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: exc
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: \begin_inset ERT
jb302@40: status open
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40:
jb302@40:
jb302@40: \backslash
jb302@40: bigskip
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: Commands are issued at a terminal followed by any arguments separated by
jb302@40: a space.
jb302@40: The exc function enables the interpreter mode described in the EDE Use
jb302@40: Cases section above.
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: \begin_inset Newpage pagebreak
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: Symbols are defined which map parts of the emulators memory to the encoding
jb302@40: used in the control functions.
jb302@41: Tables are provided below.
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: \begin_inset ERT
jb302@40: status open
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40:
jb302@40:
jb302@40: \backslash
jb302@40: bigskip
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \end_layout
jb302@40:
jb302@40: \begin_layout Standard
jb302@40: \begin_inset Tabular
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Register
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Encoding
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R0_0
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 0
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R1_0
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 1
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R2_0
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 2
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R3_0
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 3
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: DPH
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 4
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: SPH
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 5
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: PCH
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 6
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: TMPH
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 7
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R0_1
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 8
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R1_1
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 9
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R2_1
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 10
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: R3_1
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 11
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: DPL
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 12
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: SPL
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 13
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: PCL
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 14
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: TMPL
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 15
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \begin_inset Tabular
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Flag
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Encoding
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: BS
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 0
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: IE
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 1
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: OV
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 2
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: S
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 3
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: P
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 4
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: AC
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 5
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: Z
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 6
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: C
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40: \begin_inset Text
jb302@40:
jb302@40: \begin_layout Plain Layout
jb302@40: 7
jb302@40: \end_layout
jb302@40:
jb302@40: \end_inset
jb302@40: |
jb302@40:
jb302@40:
jb302@40:
jb302@40: \end_inset
jb302@40:
jb302@40:
jb302@40: \end_layout
jb302@40:
jb302@39: \begin_layout Section
jb302@39: Debugger Testing
jb302@39: \end_layout
jb302@39:
jb302@42: \begin_layout Standard
jb302@42: The debugger was tested with an automated test method using python scripting.
jb302@42: The script uses the debug controller class to fill all of the emulators
jb302@42: memory structures with known values.
jb302@42: It then requests these values back and compares the results, if the values
jb302@42: are not the same the test fails.
jb302@42: The test then steps through the emulators entire memory space, and then
jb302@42: checks the program counter to see if it has reached the end.
jb302@42: The test files and results can be found in the Supporting Material.
jb302@42: \end_layout
jb302@42:
jb302@39: \end_body
jb302@39: \end_document