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('?');