Prompt Placement

I’ve noticed when loading some of the Infocom .dats in winfrotz that the prompt is sometimes anchored at the bottom of the window, and that at the start of the game the text scrolls up to meet the status line. I’ve played around, using the 0->32 array and a do-until (taking it for granted that the overture and initial description take up twelve lines):screen_height = 0->32; screen_height = screen_height - 12; do {new_line; screen_height--} until (screen_height == 0)But this simply dumps them at the bottom of the screen, without any scrolling, while moving them further down simply triggers a [MORE] prompt.

Is there any way to emulate the old bottom-to-top scolling in modern inform?

You can turn the whole screen into a status line, which works by being a grid rather than being flowable text. It would take some hacking and possibly some @opcode use. And you’d have to do your own word-wrapping.

Oh, also, I think the Basic Screen Effects extension has a “clear the screen” instruction which happens to place the cursor at the top. IIRC.

I believe the difference you’re seeing is that Frotz scrolls V3 games from the bottom, and V5/8 from the top. I don’t remember if this is something recommended by the spec, or an adaptation to make legacy Infocom games play better.

There’s no perfect way to get the from-the-bottom behavior in all interpreters. You could measure the screen height and print that many blank lines, but the screen height is typically measured in the fixed-width font (because it’s typically used to lay out the status window) and there’s no guarantee that the story window font is the same height.

Yeah, it’s 8.5.2 and 8.6.3 of the standard:[url=http://www.inform-fiction.org/zmachine/standards/z1point0/sect08.html#six]

[/url]While the cursor for V5 and onwards can be anywhere. I don’t know why I didn’t see that before.

I also note that a screen height of 255 lines ought to suppress the [More] prompts, so maybe emulating an infinite screen and then dumping a number of new_line statements equal to the real screen height would do it. Hmm. Edit: No, wait, you can’t write to 0->32, what was I thinking.

Anyhoo, thank you both for the help.