We did one for the Army sometime in the 70's. It was all discreet logic and did a timing search for edges and dots/dashes. It worked very well on very sloppy hand sent code, course when the dashes became shorter than the dots, well obviously it screwed up. But from 3 WPM to 15 WPM it did very well. It also decoded 300 WPM, of course this was machine sent from a handheld field recorder.