Skip to content

alexaandru/lc3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

About

Followed the www.jmeiners.com/lc3-vm tutorial to implement an LC-3 VM

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published