Also, as a variation on the VT-52, there were a lot of Heath/Zenith H19 terminals out there. In addition to the H89 computer which had the H19 built-in.
They seem to also support ANSI sequences... how commonly were they used in ANSI mode vs. Heath mode?
So I have a complete vt100 now. Of course, it doesn't do color, and nearly all programs through telnet do not like 40-character width. [...] It doesn't sound like supporting vt100 is useful for native cp/m applications. And realistically, it's not useful for Telnet either.
Well, a complete VT-100 also includes VT-52 support... and at least LADDER supports both modes.
The screen size is separate from the terminal emulation. Modern systems support dynamic sizes (see SIGWINCH), which Telnet can negotiate as well. However, CP/M 2.2 is completely unaware of the output device and applications are fixed to a specific size. While applications can often be configured/patched to a different size, many still require at least 64 columns.
CP/M 3.0 can report the screen size, but I don't know whether that was commonly used by applications; retrieving the current screen size requires ANSI/VT-100 support unfortunately (it also allows detecting whether the other end renders UTF-8 or not).
Alexandre Montaron made an RSX and some patches to support this in some applications:
http://canal.chez.com/CPM/
If you implement a complete VT-100 emulation, you get VT-52 support as well (no compatibility issues) and a lot more possibilities. Depends on how much memory you got to spare, though.
Although many sources claim vt100 supports the previous vt52 commands, I do not see that.
You use "ESC ? 2 l" (DECANM) to switch the VT-100 into VT-52 mode, and "ESC <" to switch back. Compatibility is not transparent.
I tried using the vt52 with Linux in my telnet client, but the Linux terminfo or shell or what ever still sends vt100 commands.
There are a number of modern applications which forego curses/ncurses and instead hardcode ANSI escape sequences. Nothing you can do about those, especially if they freely use private sequences (such as "set window title") as well. Many shell scripts do that to get color support, including the default .bashrc shipped in many distributions. Make sure to have $TERM set correctly early on and manually override $PS1 afterwards if necessary.
It's curious how telnet has become a pariah of protocols. I had to search pretty hard for a telnet client for Android--SSH, sure, but unvarnished telnet, not so much. I note the Firefox has dropped support for ftp as well, even though there are many sites still using it. (I use PaleMoon as my ftp client).
It fits within the "move fast and break things" thought frameworks. Both Chrome and Firefox have dropped support for Gopher and FTP for years now, and Telnet has been heavily discouraged as a security problem for much longer. Now that most appliances have switched away (and older one been replaced), there is little reason to keep telnet supported anywhere.
NANO is always a good test of emulation
For my VT-52 work, I found vim more annoying. Also, check out "vttest" for a quite good test.
I've built a monochrome-based AVR-based serial TV terminal (80 columns), and included both VT-52 and ADM-3A support; ADM-3A is basically unusable in Linux, which is why I stopped recommending it at all. I am not aware of any CP/M application which knows ADM-3A but not VT-52, so I'll always opt for the latter (or both).