Skip to content

Latest commit

 

History

History
38 lines (26 loc) · 1.39 KB

README.md

File metadata and controls

38 lines (26 loc) · 1.39 KB

LC-3 VM in Go

An LC-3 VM implementation as described at https://www.jmeiners.com/lc3-vm.

2048

Features

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, LDI and LEA opcodes) and verifying the CPU registers 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.

Useful

Resources:

Tools: