Class: Badline::Memory

Inherits:
Object
  • Object
show all
Includes:
Addressable
Defined in:
lib/badline/memory.rb

Direct Known Subclasses

ColorMemory, ROM

Instance Attribute Summary

Attributes included from Addressable

#end, #length, #start

Instance Method Summary collapse

Methods included from Addressable

#[], #[]=, #addressable_at, #in_range?, #peek16, #poke16, #range

Methods included from IntegerHelper

#bcd, #bcd_to_i, #format16, #format8, #high_byte, #low_byte, #signed_int8, #uint16

Constructor Details

#initialize(initial = [], length: 2**16, start: 0) ⇒ Memory

Returns a new instance of Memory.



7
8
9
10
# File 'lib/badline/memory.rb', line 7

def initialize(initial = [], length: 2**16, start: 0)
  addressable_at(start, length:)
  @storage = zero_fill(initial)
end

Instance Method Details

#peek(addr) ⇒ Object



12
13
14
# File 'lib/badline/memory.rb', line 12

def peek(addr)
  @storage[index(addr)]
end

#poke(addr, value) ⇒ Object



16
17
18
19
# File 'lib/badline/memory.rb', line 16

def poke(addr, value)
  @storage[index(addr)] = value
  value
end

#read(addr, length) ⇒ Object



21
22
23
# File 'lib/badline/memory.rb', line 21

def read(addr, length)
  (addr...(addr + length)).to_a.map { |a| peek(a) }
end

#write(addr, bytes) ⇒ Object



25
26
27
# File 'lib/badline/memory.rb', line 25

def write(addr, bytes)
  Array(bytes).each_with_index { |b, i| poke(addr + i, b) }
end