Fetch/Execute Cycles for the MINIJVM Instruction Set
----------------------------------------------------

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


IADD (OP)ö= 60 ö
----------------------------------------------------------------
1. MAR=SP=SP-1; rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR+H; wr; End ö MDRout F0 F1 ENA ENB TOSin MDRin öCS /RD öEnd

ISUB (OP)ö= 64
---------------------------------------------------------------
1. MAR=SP=SP-1; rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR-H; wr; End ö MDRout F0 F1 ENA ENB INVA INC TOSin MDRin CS /RD
ö ö ö ö ö ö ö ö ö ö ö ö ö ö End

IAND
(OP)ö= 7E
---------------------------------------------------------------
1. MAR=SP=SP-1; rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR&&H; wr; End öMDRout ENA ENB TOSin MDRin öCS /RD öEnd

IOR
(OP)ö= 80
---------------------------------------------------------------
1. MAR=SP=SP-1; rd ö ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. H=TOS ö ö ö ö ö ö ö ö ö öTOSout F1 ENB Hin
3. MDR=TOS=MDR||H; wr; End öMDRout F1 ENA ENB TOSin MDRin öCS /RD öEnd

POP
(OP)ö= 57
---------------------------------------------------------------
1. MAR=SP=SP-1; rd ö ö ö ö öSPout ö F0 F1 ENB INVA SPin MARin öCS RD OE MDRin
2. TOS=MDR; End ö ö ö ö ö ö MDRout F1 ENB TOSin öEnd

IRETURN (OP)ö= AC ö
----------------------------------------------------------------
1. Pwroff; End ö ö ö ö ö ö öPwroff

ILOAD (OP)ö= 15 ö
----------------------------------------------------------------
1.öPC=PC+1; fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. MAR=MBR; rd ö ö ö ö ö öMBRout F1 ENB öMARin ö ö ö ö ö ö öCS RD OE MDRin
3. TOS=MDR ö ö ö ö ö ö ö öMDRout F1 ENB öTOSin
4. MAR=SP=SP+1; wr; End ö SPout öF0 F1 ENB INC SPin MARin ö CS /RD öEnd ö ö

BIPUSH (OP)ö= 10
---------------------------------------------------------------
1.öPC=PC+1; fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. MDR=TOS=MBRö ö ö ö ö ö MBRout F1 ENB MDRin TOSin
3. MAR=SP=SP+1; wr; End ö SPout öF0 F1 ENB INC SPin MARin ö CS /RD öEnd


ISTORE
(OP)ö= 36
---------------------------------------------------------------
1.öPC=PC+1; fetch ö ö ö ö PCout öF0 F1 ENB INC PCin öCS RD OE MBRin
2. MAR=MBR ö ö ö ö ö ö ö öMBRout F1 ENB öMARin
3. MDR=TOS; wrö ö ö ö ö ö TOSout F1 ENB öMDRin öCS /RD
4. MAR=SP=SP-1; rd ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
5. TOS=MDR; End ö ö ö ö ö MDRout F1 ENB öTOSin öEnd

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

IFEQ (OP)ö= 99 ö
----------------------------------------------------------------
1.öPC=PC+1; fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. TOS=TOS ö ö ö ö ö ö ö öTOSout F1 ENB öTOSin
3. if (Z) PC=MBR-1 ö ö ö* Z -> (MBRout F0 F1 ENB INVA PCin)
4. MAR=SP=SP-1; rd ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
5. TOS=MBR; End ö ö ö ö ö MBRout F1 ENB öTOSin öEnd

IFLT (OP)ö= 9B
---------------------------------------------------------------
1.öPC=PC+1; fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö ö ö ö CS RD OE MBRin
2. TOS=TOS ö ö ö ö ö ö ö öTOSout F1 ENB öTOSin
3. if (N) PC=MBR-1 ö ö ö* N -> (MBRout F0 F1 ENB INVA PCin)
4. MAR=SP=SP-1; rd ö ö ö öSPout öF0 F1 ENB INVA SPin MARin öCS RD OE MDRin
5. TOS=MBR; End ö ö ö ö ö MBRout F1 ENB öTOSin öEnd

IINC (OP)ö= 84 ö
----------------------------------------------------------------
1. PC=PC+1; fetch ö ö ö ö PCout öF0 F1 ENB INC PCin ö öCS RD OE MBRin
2. MAR=MBR; rd ö ö ö ö ö öMBRoutö F1 ENB MARin ö ö ö ö öCS RD OE MDRin
3. MDR=MDR+1; wr; End ö ö MDRout F0 F1 ENB INC MDRin ö CS /RD ö End


* Note: "N -> x" means "N implies x" which is logically equivalent to "/N OR
x." öA circuit can easily be constructed for "/N OR x" using a NOT gate and
an OR gate.