Assignment 6: Basic MIC-1 simulator

All programs in this assignment should output a line giving your name before doing anything else. All output from this assignment goes to standard error. Create a new directory and copy all of your files from assignment 5 to this directory.

Milestone 0:

Make sure your program calls the routine initialize_default_MAC before calling initialize_animator<\tt>. It should then call ani_set_programmer_name.

Modify your next_subcycle routine so that it calls one of the four routines:

    execute_subcycle_1}
    execute_subcycle_2}
    execute_subcycle_3}
    execute_subcycle_4}
depending on the value of the global variable which keeps track of the subcycle. For example, if the current subcycle is 2, subcycle 2 has been completed and you should now call execute_subcycle_3. Each of these routines will update this subcycle variable and call ani_set_subcycle_active. For this milestone, do not have the routines do anything else.

Milestone 1:

Complete the routine execute_subcycle_1. Recall that the only thing the Mic-1 does on this subcycle is move a new value into the MIR. Your routine should decode this new MIR value and call the animator routines to display this new MIR.

Milestone 2:

Complete the routine execute_subcycle_2. Recall that on this subcycle the appropriate values are moved into the A and B latches. Your program can show this by calling

     ani_move_value_from_reg_to_alatch
     ani_move_value_from_reg_to_blatch
On this subcycle you should also show the values moving to and through the ALU and to the Shifter.

Milestone 3:

Complete the routine execute_subcycle_3.

Milestone 4:

Complete the routine execute_subcycle_4. At this point you should have a completely working basic simulator which will step through the subcycles of the Mic-1. It should show register and memory values being updated appropriately.