alexaandru / lc3

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:MIT License


Languages

Language:Go 98.7%Language:Makefile 1.3%