module MicroCisc
Constants
- VERSION
Public Class Methods
load(file_names)
click to toggle source
# File lib/micro_cisc.rb, line 21 def self.load(file_names) text = "" file_names.each do |file_name| text += File.read(file_name) end MicroCisc::Compile::Compiler.new(text) end
logger()
click to toggle source
# File lib/micro_cisc.rb, line 61 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)
click to toggle source
# File lib/micro_cisc.rb, line 29 def self.run(data) blocks = data.size / 256 + 1 rom_blocks = [] (0...blocks).each do |block| rom = Array.new(256).map { 0 } size = data.size - block * 256 size = 256 if size > 256 rom[0...size] = data[(block * 256)...((block + 1) * 256)] rom_blocks << rom end terminal = MicroCisc::Vm::TermDevice.new(5) screen = MicroCisc::Vm::EmptyDevice.new init_screen = ARGV.include?('-s') if(init_screen) screen = MicroCisc::Vm::ColorLcdDisplay.new( 6, # Device ID 40, # 10k words of memory (40 blocks) 128, # screen pixel width 72, # screen pixel height MicroCisc::Vm::ColorLcdDisplay::COLOR_MODE_12BIT ) end devices = Array.new(17).map { MicroCisc::Vm::EmptyDevice.new } devices[15] = terminal # first banked device devices[16] = screen processor = MicroCisc::Vm::Processor.new(1, 256, rom_blocks) processor.devices = devices processor.start(ARGV.include?('-d')) screen.join if(init_screen) processor end