Module: Badline::IntegerHelper

Included in:
Addressable, CPU, Computer, KernalTrap::File, Keyboard, TimeOfDay, VIC, VIC::Registers
Defined in:
lib/badline/integer_helper.rb

Instance Method Summary collapse

Instance Method Details

#bcd(number) ⇒ Object



5
6
7
8
# File 'lib/badline/integer_helper.rb', line 5

def bcd(number)
  high, low = number.divmod(10)
  (high << 4) + low
end

#bcd_to_i(number) ⇒ Object



10
11
12
# File 'lib/badline/integer_helper.rb', line 10

def bcd_to_i(number)
  (((number & 0xf0) >> 4) * 10) + (number & 0x0f)
end

#format16(number) ⇒ Object



18
19
20
# File 'lib/badline/integer_helper.rb', line 18

def format16(number)
  "0x#{number.to_s(16).rjust(4, '0')}"
end

#format8(number) ⇒ Object



14
15
16
# File 'lib/badline/integer_helper.rb', line 14

def format8(number)
  "0x#{number.to_s(16).rjust(2, '0')}"
end

#high_byte(number) ⇒ Object



22
23
24
# File 'lib/badline/integer_helper.rb', line 22

def high_byte(number)
  (number >> 8) & 0xff
end

#low_byte(number) ⇒ Object



26
27
28
# File 'lib/badline/integer_helper.rb', line 26

def low_byte(number)
  number & 0xff
end

#signed_int8(number) ⇒ Object



30
31
32
33
# File 'lib/badline/integer_helper.rb', line 30

def signed_int8(number)
  uint = number & 0xff
  uint > 127 ? uint - 256 : uint
end

#uint16(low, high) ⇒ Object



35
36
37
# File 'lib/badline/integer_helper.rb', line 35

def uint16(low, high)
  (high << 8) + low
end