4b3 now runs at least some of my Zoc scripts without changes

Nice work.
One minor issue:
x = x||"blah ^M^J"
x = x||"blah again^M^J"
in Zoc, the ^J is necessary for a line feed so that when you subsequently go "SAY x" or "ZocWriteln x" it prints 2 lines. In Attac the ^J prints as a "J" character. I'm guessing you've specially taken notice of "^M" rather than more generally ^x = ctrl-x. Attacs ZocWriteln actually issues a line feed just on encountering ^M, so perhaps it should simply ignore ^J's in a string when printing it.
Cheers,
Dr. Bad