Fetch/Execute Cycles for MINIJVM Instruction Set (Revised 10/10/03)
----------------------------------------------------

T0. PC=PC+1; fetch; goto (OP) PCout F0 F1 ENB INC PCin CS RD OE Opin


IADD (OP) = 60  
----------------------------------------------------------------
T1. MAR=SP=SP-1        SPout  F0 F1 ENB INVA SPin MARin 
T2. H=TOS; rd          TOSout F1 ENB Hin     CS RD OE inD
T3. MDR=TOS=MDR+H      MDRout F0 F1 ENA ENB  TOSin MDRin 
T4.
wr; End            MARout CS outD  End

ISUB (OP) = 64
---------------------------------------------------------------
T1. MAR=SP=SP-1        SPout  F0 F1 ENB INVA SPin MARin 
T2. H=TOS; rd          TOSout F1 ENB Hin     CS RD OE inD
T3. MDR=TOS=MDR-H      MDRout F0 F1 ENA ENB  INVA INC TOSin MDRin
T4. wr; End            MARout CS outD  End

IAND (OP) = 7E
---------------------------------------------------------------
T1. MAR=SP=SP-1        SPout  F0 F1 ENB INVA SPin MARin 
T2. H=TOS; rd          TOSout F1 ENB Hin     CS RD OE inD
T3. MDR=TOS=MDR&&H     MDRout ENA ENB TOSin  MDRin
T4. wr; End            MARout CS outD  End

IOR (OP) = 80
---------------------------------------------------------------
T1. MAR=SP=SP-1        SPout  F0 F1 ENB INVA SPin MARin 
T2. H=TOS; rd          TOSout F1 ENB Hin  CS RD OE inD
T3. MDR=TOS=MDR||H     MDRout F1 ENA ENB  TOSin MDRin
T4. wr; End            MARout CS outD  End

POP (OP) = 57
---------------------------------------------------------------
T1. MAR=SP=SP-1        MARout CS RD OE inD
T3. TOS=MDR; End       MDRout F1 ENB TOSin  End

IRETURN (OP) = AC  
----------------------------------------------------------------
T1. Pwroff             Pwroff

ILOAD (OP) = 15  
----------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1 ENB INC PCin CS RD OE MBRin
T2. MAR=MBR            MBRout F1 ENB    MARin
T3. rd
                 MARout CS RD OE  inD
T4. TOS=MDR            MDRout F1 ENB    TOSin
T5. MAR=SP=SP+1        SPout  F0 F1 ENB INC SPin MARin
T6. wr; End            MARout
CS outD   End

BIPUSH (OP) = 10
---------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1   ENB INC PCin CS RD OE MBRin
T2. MDR=TOS=MBR        MBRout F1 ENB  MDRin TOSin
T3. MAR=SP=SP+1        SPout  F0 F1   ENB INC SPin MARin  
T4. wr; End            MARout
CS outD End


ISTORE
(OP) = 36
---------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1 ENB INC PCin  CS RD OE MBRin
T2. MAR=MBR            MBRout F1 ENB  MARin
T3. MDR=TOS            TOSout F1 ENB  MDRin 
T4. MAR=SP=SP-1; wr    SPout  F0 F1 ENB INVA SPin MARin MARout CS outD
T5. rd                 MARout
CS RD OE  inD
T6. TOS=MDR; End       MDRout F1 ENB    TOSin  End

GOTO
(OP) = A7
---------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1 ENB INC   PCin  CS RD OE MBRin
T2. PC=MBR; End        MBRout F1 ENB    PCin  End

IFEQ (OP) = 99  
---------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1 ENB INC  PCin   CS RD OE MBRin
T2. TOS=TOS            TOSout F1 ENB    TOSin
T3. if (Z) PC=MBR    * Z -> (MBRout F1  ENB  PCin)
T4. MAR=SP=SP-1        SPout  F0 F1 ENB INVA SPin MARin 
T5. rd                
MARout CS RD OE  inD
T6. TOS=MDR; End       MDRout F1 ENB    TOSin  End

IFLT (OP) = 9B
---------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1 ENB INC  PCin   CS RD OE MBRin
T2. TOS=TOS            TOSout F1 ENB    TOSin
T3. if (N) PC=MBR-1  * N -> (MBRout F1  ENB  PCin)
T4. MAR=SP=SP-1        SPout  F0 F1 ENB INVA SPin MARin 
T5. rd                 MARout
CS RD OE  inD
T6. TOS=MDR; End       MDRout F1 ENB    TOSin  End

IINC (OP) = 84  
---------------------------------------------------------------
T1. PC=PC+1; fetch     PCout  F0 F1 ENB INC PCin    CS RD OE MBRin
T2. MAR=MBR            MBRout F1 ENB MARin         
T3. rd                 MARout
CS RD OE  inD
T4. MDR=MDR+1          MDRout F0 F1 ENB INC MDRin  
T5. wr; End            MARout
CS outD   End


* Note: "y -> x" means "y implies x" which says that y (N or Z) must
  be 1 in step T3 for the switches x to be set.