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