PA6H/MT3339 GPS: how to know if time is GPS locked or from internal RTC?

why STATUS_NONE is true with one or more satellites?

This means that the MTK device is using that many satellites to calculate a fix (loc, alt, speed, etc.), but the STATUS_NONE means that it has not successfully calculated a fix yet. I see the same thing with a ublox GPS device. The satellites number goes up just before status becomes STATUS_STD.

The GSV satellites number goes up long before that, which sets the status to STATUS_TIME_ONLY.

Your interpretation of fix.valid.time, fix.satellites and fix.status is acceptable. We don't really know what the MTK is "thinking", but your choices seem reasonable. I think this code is equivalent:

    if(fix.valid.status)
      {
      if(fix.status >= gps_fix::STATUS_STD) lcd.print('F'); // Se ha fatto il punto scrive F
      else if((fix.status==gps_fix::STATUS_NONE) && (fix.satellites==0)) lcd.write(byte(0));
      else lcd.print('t');
      }
    else lcd.print('?');