Module: MicroCisc

Defined in:
lib/micro_cisc.rb,
lib/micro_cisc/version.rb,
lib/micro_cisc/vm/video.rb,
lib/micro_cisc/vm/device.rb,
lib/micro_cisc/vm/processor.rb,
lib/micro_cisc/vm/term_device.rb,
lib/micro_cisc/vm/empty_device.rb,
lib/micro_cisc/compile/compiler.rb,
lib/micro_cisc/compile/statement.rb,
lib/micro_cisc/compile/instruction.rb,
lib/micro_cisc/compile/label_generator.rb

Defined Under Namespace

Modules: Compile, Vm Classes: Error

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.load(file_name) ⇒ Object



20
21
22
23
# File 'lib/micro_cisc.rb', line 20

def self.load(file_name)
  text = File.read(file_name)
  MicroCisc::Compile::Compiler.new(text)
end

.loggerObject



38
39
40
41
42
43
44
45
46
47
# File 'lib/micro_cisc.rb', line 38

def self.logger
  @logger ||=
    begin
      logger = Logger.new(STDOUT)
      logger.formatter = proc do |severity, datetime, progname, msg|
        "#{severity}: #{msg}\n"
      end
      logger
    end
end

.run(data) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/micro_cisc.rb', line 25

def self.run(data)
  rom = Array.new(256).map { 0 }
  rom[0...data.size] = data
  terminal = MicroCisc::Vm::TermDevice.new(5)
  terminal.host_device = 1
  devices = Array.new(16).map { MicroCisc::Vm::EmptyDevice.new }
  devices[15] = terminal # first banked device
  processor = MicroCisc::Vm::Processor.new(1, 256, [rom])
  processor.devices = devices
  processor.start(ARGV.include?('-d'))
  processor
end