class MicroCisc::Vm::TermDevice

Public Class Methods

new(device_id) click to toggle source
Calls superclass method MicroCisc::Vm::Device::new
# File lib/micro_cisc/vm/term_device.rb, line 4
def initialize(device_id)
  super(device_id, Device::TYPE_TERMINAL, 1)
  # Init device specific read/write controls
  @privileged_read = @privileged_read | 0x1C0
  @privileged_write = @privileged_write | 0x40
end

Public Instance Methods

handle_control_read(address) click to toggle source
# File lib/micro_cisc/vm/term_device.rb, line 11
def handle_control_read(address)
  case(address)
  when 7
    @control_mem[7] = TTY::Screen.width
  when 8
    @control_mem[8] = TTY::Screen.height
  end
end
handle_control_update(address, value) click to toggle source
# File lib/micro_cisc/vm/term_device.rb, line 20
def handle_control_update(address, value)
  if address == 6
    # value is number of bytes to send
    words = (value + 1) / 2
    string = @local_mem[0][0...words].pack("S>*")[0...value]
    $stdout.write(string)
    $stdout.flush
  end
end