An LC-3 VM implementation as described at https://www.jmeiners.com/lc3-vm.
Besides the obvious (running LC-3 programs):
- uses alternate buffer to preserve terminal state;
- hides cursor for a more immersive gaming experience :-)
- graceful shutdown by capturing
Ctrl-C; - partial integration testing by running 10 x 1KB, automatically generated images
(using random combinations of
ADD,AND,LD,LDR,NOT,LDIandLEAopcodes) and verifying theCPUregisters at the end (TODO: verify memory too); - loading images at the address specified in the object file, NOT hardcoding PC to
0x3000.
And just for the fun, since I control the VM anyway ¯\_(ツ)_/¯ a bit of hacking:
- allow using arrow keys for input (convert them transparently to
WASM); - output nicer box for 2048 using DEC Line Drawing.
