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. È riconosciuta l'assistenza giudiziaria gratuita per
la procedura federale, l'onorario dell'avv. P._
essendo fissato a fr. 2500.- e preso a carico dalla
Cassa del Tribunale.
IV. La presente sentenza sarà intimata alle parti, al
Tribunale cantonale delle assicurazioni, Lugano, e
all'Ufficio federale delle assicurazioni sociali.