code: def f16(op):
      
      op = float(op)
  
      negative = op < 0
      if negative:
          op = -op
  
      DE = int(op)
      HL = int((op - DE) * 2**16) & 0xFFFF
      DE &= 0xFFFF
  
      if negative:  # Do C2
          DE ^= 0xFFFF
          HL ^= 0xFFFF
  
          DEHL = ((DE << 16) | HL) + 1
          HL = DEHL & 0xFFFF
          DE = (DEHL >> 16) & 0xFFFF
  
      return (DE, HL)
docs: Returns a floating point operand converted to 32 bits unsigned int.
      Negative numbers are returned in 2 complement.
  
      The result is returned in a tuple (DE, HL) => High16 (Int part), Low16 (Decimal part)