There are not a lot of Atari 2600 games that make use of a large amount of text. There are various reasons for this, including ROM size, as well as the fact that many implementations of a text display on the Atari use up a good deal of the limited RAM on the system. Penult has a large ROM size (128K), and makes use of a text display that builds the text lines on the fly to save on RAM (props to @RevEng for help with the initial design from which the Penult implementation had evolved).
Penult is largely inspired by the early Ultima series, especially Ultima 3. Conversations in those games were a vital part of the feel of immersion in those games. I was pleased to discover as I was creating a new city that I've already exceeded the lines of dialog in Ultima 3, and I still have more cities to add. Additionally, each non-vendor NPC has a unique name, and a unique dialog. Line length is an issue, though, as I only have 24 characters to work with, although many conversations span multiple lines.
Conversation in Ultima 3:
Conversation in Penult:
For vendors, compared to Ultima 3, the interface has been greatly simplified to allow for easy play with a one-button Atari joystick. Rather than a single vendor being able to sell a variety of weapons and armor, I have multiple specialized vendors each offering one item for sale. For example, in the starting city of Arcadia, you can buy a sling, a mace, or leather armor, each sold by a separate vendor:
Penult vendor example:
I have a script (UNIX/Mac) to allow me to convert lines of text into data I can include in my program. I'm including it here along with an example just for posterity, and on the small chance that it or the idea behind it could be useful to other developers.
./strconv what brings you here? 21 status__what_brings_you_here message__what_brings_you_here .byte __W, __H, __A, __T, _sp, __B, __R, __I, __N, __G, __S, _sp, __Y, __O, __U, _sp, __H, __E, __R, __E, _qu, $FF