require("csim")
# The circuit here should simulate a level-triggered D flip-flop
D = SwitchBank.new
C = Pulser.new
N = NotGate.new
A1, A2 = AndGate.many(2)
NR1, NR2 = NorGate.many(2)
Q = LED.new(" Q")
Qnot = LED.new(" ~Q")
D.join(N)
N.join(A1)
D.join(A2)
C.join(A1)
C.join(A2)
A1.join(NR1)
A2.join(NR2)
NR1.join(NR2)
NR2.join(NR1)
LED.shush(true)
NR1.join(Q)
NR2.join(Qnot)
LED.shush(false)
vals = [ true, false, false, true, false ]
10.times do
3.times do
dval = vals.shift
vals.push(dval)
print "Input: ", dval, "\n"
D.value = dval
end
print "=== TIC ===\n"
C.pulse
end