code: def condition(i):
      
      I = inst(i)
  
      if I not in {'call', 'jp', 'jr', 'ret'}:
          return None  # This instruction always execute
  
      if I == 'ret':
          i = [x.lower() for x in i.split(' ') if x != '']
          return i[1] if len(i) > 1 else None
  
      i = [x.strip() for x in i.split(',')]
      i = [x.lower() for x in i[0].split(' ') if x != '']
      if len(i) > 1 and i[1] in {'c', 'nc', 'z', 'nz', 'po', 'pe', 'p', 'm'}:
          return i[1]
  
      return None
docs: Returns the flag this instruction uses
      or None. E.g. 'c' for Carry, 'nz' for not-zero, etc.
      That is the condition required for this instruction
      to execute. For example: ADC A, 0 does NOT have a
      condition flag (it always execute) whilst RETC does.