Hey folks,
I am implementing the zcode op erase_line
for my interpreter. The spec defines it for both v4-5 and v6. It looks like it is only used in v6 games from Infocom. If so, why is it defined for 4-5? Or did I miss something?
Thanks,
–Darren
Hey folks,
I am implementing the zcode op erase_line
for my interpreter. The spec defines it for both v4-5 and v6. It looks like it is only used in v6 games from Infocom. If so, why is it defined for 4-5? Or did I miss something?
Thanks,
–Darren
It just wasn’t used. However, although it is true that no v4 or 5 Infocom game used ERASE, it’s not quite true that no v4/5 ZIL game used ERASE. The only reason it’s defined for v4 & 5 is because it’s possible and it’s a function they could use back in Infocom times. They just didn’t.
The ZIL game (v5) that uses erase_line (it’s my game) is Milliways, the Restaurant at the End of the Universe. But other than that, I don’t know.
That makes sense. I was just trying to figure out how to test it for v4-5 and didn’t see them use it. This also appears to be the same for get_cursor
as well.
Anyway thanks for the confirmation and the pointer to your game. I will check it out.
(get_cursor can be found through the map in Beyond Zork. Beyond Zork doesn’t even work in Parchment, so it would be cool to see it work…)
Grepping the source, I see ERASE was used in (what looks like) an early dev build of Sherlock.
Also a couple of the Solid Gold (v5) sources have the line
;<ERASE 1> ;"This semi by Jeff"
in the INIT-STATUS-LINE routine. That is, the opcode was used but then commented out. Dunno what that implies.
PunyInform used get_cursor
for the statusline by default in v5 until recently, so if you play a game like The Job - Details you will see if it’s not working properly.
We found that some old Infocom interpreters, including Amiga, didn’t return the correct cursor position. The post-Infocom Zip interpreter doesn’t even implement it, and so these games break down in interpreters based on Zip, such as MaxZip for old MacOS.
There are a handful of z-machine details that weren’t used in the first version they were defined for. One example is timed input which is defined for version 4 but the only Infocom game to use it was Border Zone, a version 5 game.
Wellll … Arthur by Bob Bates used the read_char
with timed input at the very beginning inage (acts as if you pressed any key anyway)… but doesn’t use read
. (That’s v6, though.)