What's new in EO 1.0a
Here's a quick rundown of the new features.Version 1.0a 28/05/08
Added Memory Browser (SirMorris)
Added Symbols to Debugger (SirMorris)
Fixed bug in OUTD/OUTIR instructions (MW)
Fixed bug with NMI occasionally triggering twice (MW)
Bringing up the debug window from the tools menu reveals a slightly different look and some new options.
Starting with the Z80 view, you can see the flags have now been given labels showing which is which. Clicking on a flag digit will toggle it rather than popping open a dialog.
Clicking a register value will bring up the edit dialog as before. It is now possible to enter data as hex using both the $ and '0x' form. Octal numbers can be entered by prefixing the number with a 0. Decimal entry is preserved. One notable change is the ability to enter a label name here. As long as symbols are loaded, this will be recognised and evaluated. This is true for any 16bit value being entered using this method. Symbol name matching is case-sensitive. Cancel now works without zeroing the target data. Invalid entries do not alter data.
Register values that are highlighted indicate that there is a symbol related to the held address. Hover the mouse over the value and the symbol will be shown in a tool tip.
Right-clicking a register value will pop open a menu allowing a memory window to be opened starting at that address. This function is also available for stack values.
Symbols are loaded automatically when a system is started as long as a file named after the rom with an additional extension of '.sym' is present. At this time only the zx81 ROM has a file. The symbol file follows a format used by the telemark assembler (TASM) which is simply "LABEL whitespace HEX_VALUE"
Additional symbols may also be loaded for an app being debugged. In this case the symbol file should be drag-dropped onto the main window. The file must have an extension of '.sym' and be in the tasm format. The app symbols remain loaded until the machine is reset.
The 'Symbols' button on the main debug form will be active if there are either one of ROM or App symbols available. This will be indicated by the checkboxes to its right. Clicking it will bring up the symbol browse window. Right clicking a symbol will offer the option of opening a memory window or adding the value to the breakpoint list.
The Program window has been gifted with a number of additional lines, in preparation for future work. It also now has labels substituted in for values where appropriate. It may be that the view displays the wrong symbol name when supplying app symbols. This is unavoidable if the symbol map file has a number of equates with duplaicate values. However this should be infrequent as only addresses are resolved.
The memory window has a number of features worth pointing out. Mousing over the hex data will show its address in the status bar. Right clicking on the hex will open a menu offering the option to view in a number of different modes. It's also possible to relocate the view at either a user-supplied address or one de-referenced from the data. This last feature is best tried out in word view mode.
When the debugger pauses the CPU emulation, after stepping or having the Stop button clicked, altered bytes are highlighted in red.
The breakpoint window will display symbolic information if available.
Known issues to be addressed for next build:-
It is not possible to view the addresses of altered bytes - if the memory window is not centered on the changed data, you have to scroll the view to find it.
You can't set breakpoints from register/stack data right-click menu.
only one memory window can be opened at one time.
Known issues that may not make next build unless pressure is applied:-
the zx81 symbol set may be from a different ROM than the one supplied - classic/improved - this needs verifying.
The character map translation of 'traditional' view is only valid for zx81 at present.
It would be great to get some labels defined for the roms of other supported systems.