.: Main Menu :.
|
:: Home ::
|
|
|
|
|
|
Varfar's RedCoder 2
Contents
- What is it?
- Screenshot!
- How does it do it?
- Feature status
- Download
- Which Mars? - if you are interested in programming and specifically in programming Mars emulators, you might be interested in a quick summary I wrote to myself to stop me forgetting what I found when I dug up all the sourcecode I could find..
What is it?
RedCoder 2 is a graphical MARS Emulator, incorporating a powerful debugger. The graphical nature should make it approachable to newcomers, while the graphical debugging might attract serious corewars devotees. Maybe.
The GUI is written in C++, using the wxWidgets (formerly known as wxWindows) framework. The underlying MARS is a heavily modded C Exhaust 1.9.2 by M Joonas Pihlaja, which has been adapted to be interruptable. It will soon integrate the C pMars parser, as packaged by exMars by Martin Ankerl. It ought be runnable anywhere wxWidgets is, which includes Windows, MacOS, most UNIXs and Linux on most desktop and workstation architectures.
^top
Screenshot!
^ a very early screenshot of the core-overview window
^top
How does it do it?
This is the second MARS debugger I have tried to write (Redcoder 1 being the first). I have learnt something about it!
- The MARS is run in-thread, taking cycles away from the GUI display. The MARS pauses when it hits a breakpoint (which include On Writes, On Exec and a stepping mode).
- As the MARS runs, it records an execution log, which can be useful for timescape debugging.
- As an in-thread MARS might lead to a unresponsive UI, the MARS pauses every n cycles to update the GUI and process GUI events (such as STOP; this means that a STOP command may not be honoured immediately, but so what!). The repaint in these interruptions is progressive, based upon the exec-log rather than a full core redraw; this is a major efficiency. The precise number of cycles between repaints can be automatically derived from a "n cycles per second" target in a user interface settings panel, and adjusted automatically to honour this throttling.
- The execution log has a very fine grain; it records precisely the actions being taken, making distinctions possible between:
A_PREDEC_A, A_PREDEC_B, A_POSTINC_A, A_POSTINC_B, B_PREDEC_A, B_PREDEC_B, B_POSTINC_A, B_POSTINC_B, SET_A, SET_B, SET_AB, SET_I and EXEC .
^top
Feature status
Breakpoints |
Feature | In Engine | In GUI |
On Exec Execution is paused before the instruction executes, but after the operands have been evaluated (which might cause On-Write breakpoints). | 2004-02-29 | - |
On Write Execution is paused after the write has occurred. Writes during operand evaluation (pre-decrementss and post-increments) can be caught, and can even be specifically specified in the condition. | 2004-02-29 | - |
On Read hmm, including indirects? | - | - |
Stepping Treated as a special case of On-Exec. | 2004-02-29 | - |
Step thread | n/a | - |
Step warrior | n/a | - |
Timescape debugging | 2004-02-29 | - |
Editable core | n/a | - |
|
Other focuses to follow.. |
^top
Download
Redcoder 2 shall soon be uploaded to CVS, and prebuilt windows binary snapshots will regularly be made available from this very page right here. Redcoder 2 shall be GPLed. Watch this space!
^top
|
|