Module: Logicuit
- Defined in:
- lib/logicuit/dsl.rb,
lib/logicuit/runner.rb,
lib/logicuit/version.rb,
lib/logicuit/gates/or.rb,
lib/logicuit/gates/and.rb,
lib/logicuit/gates/not.rb,
lib/logicuit/gates/xor.rb,
lib/logicuit/gates/nand.rb,
lib/logicuit/signals/clock.rb,
lib/logicuit/signals/signal.rb,
lib/logicuit/circuits/td4/cpu.rb,
lib/logicuit/circuits/td4/rom.rb,
lib/logicuit/circuits/td4/decoder.rb,
lib/logicuit/signals/signal_group.rb,
lib/logicuit/array_as_signal_group.rb,
lib/logicuit/circuits/sequential/d_flip_flop.rb,
lib/logicuit/circuits/sequential/one_bit_cpu.rb,
lib/logicuit/circuits/combinational/full_adder.rb,
lib/logicuit/circuits/combinational/half_adder.rb,
lib/logicuit/circuits/sequential/register_4bit.rb,
lib/logicuit/circuits/sequential/program_counter.rb,
lib/logicuit/circuits/combinational/full_adder_4bit.rb,
lib/logicuit/circuits/combinational/multiplexer_2to1.rb,
lib/logicuit/circuits/combinational/multiplexer_4to1.rb
Overview
Logicuit module
Defined Under Namespace
Modules: ArrayAsSignalGroup, Circuits, Gates, Signals Classes: DSL
Constant Summary collapse
- VERSION =
"0.3.0"
Class Method Summary collapse
Class Method Details
.run(circuit, hz: 1, noclear: false) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/logicuit/runner.rb', line 5 def self.run(circuit, hz: 1, noclear: false) render = lambda { system("clear") unless noclear puts circuit puts puts "tick: #{Signals::Clock.tick_count}" if circuit.clock puts "input: #{circuit.input_targets.join ","}?" if circuit.input_targets.any? } if circuit.clock && hz.nonzero? Thread.new do loop do render.call sleep 1.0 / hz Signals::Clock.tick end end else render.call end while (input = gets.chomp) key = input.to_sym unless circuit.respond_to? key if circuit.clock && hz.zero? Signals::Clock.tick render.call end next end signal = circuit.send(key) if signal.current signal.off else signal.on end render.call end end |