Class: Badline::Memory
Instance Attribute Summary
Attributes included from Addressable
#end, #length, #start
Instance Method Summary
collapse
#[], #[]=, #addressable_at, #in_range?, #peek16, #poke16, #range
#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
|