all repos — nand2tetris @ eb1b3a54a8fb4747a28b23ffcd10d872a7521aef

my nand2tetris progress

projects/03/a/PC.hdl

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/03/a/PC.hdl

/**
 * A 16-bit counter with load and reset control bits.
 * if      (reset[t] == 1) out[t+1] = 0
 * else if (load[t] == 1)  out[t+1] = in[t]
 * else if (inc[t] == 1)   out[t+1] = out[t] + 1  (integer addition)
 * else                    out[t+1] = out[t]
 */

CHIP PC {
    IN in[16],load,inc,reset;
    OUT out[16];

    PARTS:
    Mux16(a=out2, b=inc-out, sel=inc, out=mux-inc);
    Mux16(a=mux-inc, b=in, sel=load,  out=mux-load);
    Mux16(a=mux-load, b=false, sel=reset, out=mux-reset);

    Register(in=mux-reset, load=true, out=out2, out=out);

    Inc16(in=out2, out=inc-out);
}