code: def _pstore8(ins):
      
      value = ins.quad[2]
      offset = ins.quad[1]
      indirect = offset[0] == '*'
      size = 0
      if indirect:
          offset = offset[1:]
          size = 1
  
      I = int(offset)
      if I >= 0:
          I += 4  # Return Address + "push IX"
          if not indirect:
              I += 1  # F flag ignored
  
      if is_int(value):
          output = []
      else:
          output = _8bit_oper(value)
  
      ix_changed = not (-128 + size <= I <= 127 - size)  # Offset > 127 bytes. Need to change IX
      if ix_changed:  # more than 1 byte
          output.append('push ix')
          output.append('pop hl')
          output.append('ld de, %i' % I)
          output.append('add hl, de')
  
      if indirect:
          if ix_changed:
              output.append('ld c, (hl)')
              output.append('inc hl')
              output.append('ld h, (hl)')
              output.append('ld l, c')
          else:
              output.append('ld h, (ix%+i)' % (I + 1))
              output.append('ld l, (ix%+i)' % I)
  
          if is_int(value):
              output.append('ld (hl), %i' % int8(value))
          else:
              output.append('ld (hl), a')
  
          return output
  
      # direct store
      if ix_changed:
          if is_int(value):
              output.append('ld (hl), %i' % int8(value))
          else:
              output.append('ld (hl), a')
  
          return output
  
      if is_int(value):
          output.append('ld (ix%+i), %i' % (I, int8(value)))
      else:
          output.append('ld (ix%+i), a' % I)
  
      return output
docs: Stores 2nd parameter at stack pointer (SP) + X, being
      X 1st parameter.
  
      1st operand must be a SIGNED integer.