1
0
mirror of https://github.com/safiire/n65.git synced 2024-12-12 00:29:03 +00:00
n65/lib/directives/segment.rb
Safiire 2c938f7312 This is s a big rewrite including: A scoped symbol table, segment and
bank management, Use of promises to resolve symbols that are used before
they are defined.  A base class for all instructions and assembler
directives.  Hopefully my scoped symbols can be used to create C like
data structures in the zero page, ie sprite.x   New code to prodce the
final ROM.  Basically everything was rewritten.
2015-03-05 12:33:56 -08:00

46 lines
856 B
Ruby

require_relative '../instruction_base'
module Assembler6502
####
## This directive instruction can include a binary file
class Segment < InstructionBase
####
## Try to parse a dw directive
def self.parse(line)
match_data = line.match(/^.segment (prog|char) (\d+)$/i)
unless match_data.nil?
_, segment, bank = match_data.to_a
return Segment.new(segment, bank.to_i)
end
nil
end
####
## Initialize with filename
def initialize(segment, bank)
@bank = bank
@segment = segment
end
####
## Execute the segment and bank change on the assembler
def exec(assembler)
assembler.current_segment = @segment
assembler.current_bank = @bank
end
####
## Display
def to_s
".segment #{@segment} #{@bank}"
end
end
end