It appears that spaces may be your friend. I'd run a character analysis and place each portion of the string into an array that has a space before or after it. Then work forwards and backwards in order to snip out portions of the string that don't include alpha/numeric data. This would allow you to capture everything, regardless of where they appear in the original string.
That's a thought. Direct to the point. Probably make it a CSV and import it into a spreadsheet and let the spreadsheet do the sorting. And actually, the necessary approach. I've looked at another CAT and the file size, character count and character spacing are different from the first CAT. Those "nonsense" printed characters are no doubt of different lengths in hex.
More complicated, it gets. Look at the PDF below. The program name, "Critical Situation" & "Terra Nova" is in about the same location (well, in the same order) in both PDFs. But the episode names, "Siege Education" & "Occupation Resistance" are in entirely different locations.
I'm finding a little, but not much, online on these file formats so far. I have sent a PM to RandallA, as he has worked to transfer from one EHD to another and may know something about the cat file.
BTW the bm file contains the cat info, plus info on, presumably, programs before and after it.
I'm looking at Free Pascal. But I'm realizing that I might as well just convert an old PC to being a dedicated Linux box, just to work with the Pascal. That might require redoing the downloads of Mint, etc, in 32 bit form rather than 64. More time that I'm short on.
View attachment Linux EHD cat 2.pdf