class N65::Space

This directive gives a symbolic name for memory and creates space for a variable in RAM

Public Class Methods

new(name, size) click to toggle source

Initialize some memory space with a name

# File lib/n65/directives/space.rb, line 23
def initialize(name, size)
  @name = name
  @size = size
end
parse(line) click to toggle source

Try to parse a .space directive

# File lib/n65/directives/space.rb, line 12
def self.parse(line)
  match_data = line.match(/^.space\s+([a-zA-Z]?[a-zA-Z0-9_]+?)\s+([0-9]+)$/)
  return nil if match_data.nil?
  _, name, size = match_data.to_a

  Space.new(name, size.to_i)
end

Public Instance Methods

exec(assembler) click to toggle source

.space creates a symbol at the current PC, and then advances PC by size

# File lib/n65/directives/space.rb, line 31
def exec(assembler)
  program_counter = assembler.program_counter
  assembler.symbol_table.define_symbol(@name, program_counter)
  assembler.program_counter += @size
end
to_s() click to toggle source

Display

# File lib/n65/directives/space.rb, line 40
def to_s
  ".space #{@name} #{@size}"
end