The dictionary can now be modified but that special case $9F is tripping me up... Where is the string located in a non-headered disk image and where is the pointer? The pointer location you gave me is where a file name is...
Well it's the player's name, which they enter themselves when they start a new game, so it's not exactly a string you can locate. Once the name is entered after starting a new game, it gets stored at $44B in RAM for dictionary purposes... and probably elsewhere too, I mean it's a disk-based game so I'm sure it's saved to a more permanent location, but that doesn't really matter much in terms of the dictionary compression itself.
Again, if you want to expand (or shrink) the dictionary table, you'll need to move the location of that player name in RAM (not ROM) to wherever the end of the table is. The pointer for that name is at $4E4 in the ROM (not RAM).
EDIT: I just realized there may be a separate pointer when loading a game (as opposed to starting a new game). I kind of doubt it, but the coding in this game is kind of weird, so who knows. I'll take a closer look later at how the name is saved and loaded.
ANOTHER EDIT: I pulled up the game in a hex editor just now, and I see what you mean about the pointer being where a file name is... I don't think it's a file name ($141-$3C12 is all one file named "OPEN"), but immediately after the pointer is the word "DISK" in ASCII. Still, I'm pretty sure that that's the correct pointer, so I'll double-check and confirm it later on today.