/Computer-Architecture

Computer Architecture

Primary LanguagePython

Computer Architecture

Project

Task List: add this to the first comment of your Pull Request

Day 1: Get print8.ls8 running

  • Inventory what is here Print8 and PrintStr: do exactly what the file name suggests Call: list of operations associated with different binary numbers Mult: multiplies/prints two numbers attached to different registers Stack: pointer to top element, instructions RE: when/what to push and pop Keyboard: addresses associated with what happens upon different key presses Interrupts: alert CPU when events need to be handled, saves work to prevent loss Stack Overflow: overloaded memory with so many variables/calls it can't fit on stack

  • Implement the CPU constructor

  • Add RAM functions ram_read() and ram_write()

  • Implement the core of run()

  • Implement the HLT instruction handler

  • Add the LDI instruction

  • Add the PRN instruction

Day 2: Add the ability to load files dynamically, get mult.ls8 running

  • Un-hardcode the machine code
  • Implement the load() function to load an .ls8 file given the filename passed in as an argument
  • Implement a Multiply instruction (run mult8.ls8)

Day 3: Stack

  • Implement the System Stack and be able to run the stack.ls8 program

Day 4: Get call.ls8 running

  • Implement the CALL and RET instructions
  • Implement Subroutine Calls and be able to run the call.ls8 program

Stretch

  • Add the timer interrupt to the LS-8 emulator
  • Add the keyboard interrupt to the LS-8 emulator
  • Write an LS-8 assembly program to draw a curved histogram on the screen