Per questi motivi, il Tribunale federale delle assicurazioni
p r o n u n c i a :
I. Il ricorso di diritto amministrativo è respinto.
II. Non si percepiscono spese giudiziarie.
III. La domanda di assistenza giudiziaria del ricorrente è
accolta. La Cassa del Tribunale rifonderà al patrocinatore
dell'interessato fr. 2'500.- (comprensivi dell'imposta
sul valore aggiunto) a titolo di patrocinio
per la procedura federale.
IV. La presente sentenza sarà intimata alle parti, al Tribunale
cantonale delle assicurazioni, Lugano, e all'Ufficio
federale delle assicurazioni sociali.