Hi all,
I, like some other folks here, decided to make some improvements to the software suite, put it on github and see what happens.
My goal is to try to improve the tools but without changing the projects from the book. That is, the HAL, HACK and JACK platforms remain exactly the same (but see below).
Currently I did the following:
* Imported the source code and changed it to compile with "modern" versions of JDK (moder >= 1.5). This required to just rename one variable name from "enum".
* Mavenized the project. Maven has it's problems, but is better than ant and more supported than gradle.
* Created a profiler for the VM Emulator. This is the reason I initially started this project. The profiler is accessible from the "Run" menu.
You can find the project here:
https://github.com/itoshkov/nand2tetris-emu. To compile it, run "mvn install" from the base directory. (I haven't updated the bat files. Patches are welcome.)
Things I want to do in no particular order and with no particular schedule:
* Improve the UI. Currently it's with fixed coordinates, mainly to accommodate easier animations. But the whole thing looks like it would require some work and maybe we should look at something other than Swing? JavaFX or SWT probably? (I'm not a UI person, so this is not that high priority for me
* Decouple the UI from the implementation. This seems to be the original idea behind how it's designed but it looks like it could use some improvements
* Figure out how to support extensions or even incompatible changes to Hack and Jack in a "pluggable" manner.
* Improve the VM debugger: support step-over call instructions; Jack-level source debugging, etc.
Have fun,
Ivan