/projects/05/Jump.hdl

https://github.com/cpatuzzo/nand2tetris · Unknown · 28 lines · 22 code · 6 blank · 0 comment · 0 complexity · 5ce3353f9167611b2f7aded9844ec389 MD5 · raw file

  1. CHIP Jump {
  2. IN zero, // indicates x == 0
  3. neg, // indicates x < 0
  4. code[3]; // One of the eight jump codes:
  5. // 000 : nil : No jump
  6. // 001 : JGT : If out > 0 jump
  7. // 010 : JEQ : If out == 0 jump
  8. // 011 : JGE : If out >= 0 jump
  9. // 100 : JLT : If out < 0 jump
  10. // 101 : JNE : If out != 0 jump
  11. // 110 : JLE : If out <= 0 jump
  12. // 111 : JMP : Jump
  13. OUT out;
  14. PARTS:
  15. Or(a=zero, b=neg, out=le);
  16. Not(in=le, out=pos);
  17. And(a=code[0], b=pos, out=j1);
  18. And(a=code[1], b=zero, out=j2);
  19. And(a=code[2], b=neg, out=j3);
  20. Or(a=j1, b=j2, out=or);
  21. Or(a=or, b=j3, out=out);
  22. }