TODO list:
 [x] boot Windows 7
 [ ] boot Windows 8
     ~ BSOD: KERNEL_DATA_INPAGE_ERROR. most likely a hardware issue (hard drive?)
 [x] boot Windows 10
 [x] boot Ubuntu
 [~] gui (perhaps Imgui?)
     ~ basic win32 gui 
 [ ] swap floppy drives (NT 3.51 install)
 [ ] dynamic recompiler
 [ ] network support
 [x] allow hard disks to be modified via command line option
     ~ now controllable using the configuration file, see wiki
 [ ] more robust savestate support
     ~ savestates work well, but they're only for debugging purposes. 
 [ ] vesa 4bpp
 [ ] svga, cirrus or s3 trio
 [ ] refactor VGA rendering code
 [ ] sound
 [ ] hardware virtualization
     ~ tried this before, kvm did not work well with SDL
 [ ] usb
 [ ] debugger interface
 [ ] better logging

Things to fix:
 [ ] make cpu_get_trace a lot faster (10% execution time is spent there)
 [ ] byte align fields in struct decoded_instruction? (tests indicate byte alignment is 10-15% faster)
 [ ] remove state_hash from trace cache

CPU bugs:
 [ ] mtrr is not properly supported
 [ ] ia32 efer is rather hacky
 [ ] more msr support
 [ ] sse3 support

Hardware bugs:
 [ ] cd-rom boot on seabios doesn't work
     ~ "Error trying to fetch already-fetched ATAPI data"
 [ ] write to end of raw disk image file doesn't work when disk image isn't a multiple of 256K large
     ~ "Unable to read 262144 bytes from image file" 