My implementation of the Jack-->VM compiler had a subtle bug in my WHILE implementation that wasn't detected in either my project #9 or the reference .jack files. I came across two other project #9 programs that triggered the issue which came down to using "while (~int) {}" as opposed to "while (~bool_cond) {}". A slight change to the original Jack, "while ( !(true = (~int)) ) {}", yielded the correct result by the VM.
Attached is a test case that may help others build a more robust Jack-->VM compiler. It should incorrect branching in the WHILE loop and a similar possible inverted branching in the IF condition.
Main.jack