4 ms·
The source code for most Infocom games is public, they did write them in ZIL. https://eblong.com/infocom/ https://eblong.com/infocom/
by ndiddy 1y ago
The source code for most Infocom games is public, they did write them in ZIL. https://eblong.com/infocom/ https://eblong.com/infocom/
- kqr 1y agoThe way I understand it, ZIL at Infocom was a subset of MDL. More specifically, a subset that was easy to compile to the Z-machine. This means that during development, they'd mainly write ZIL code, but they'd do it in MDL, giving them access to the full powers of the Lisp during development. (Since MDL is an early Lisp.) Sometimes during game development they'd make use of MDL macros that were not available in ZIL, and they'd then have to either macroexpand manually, or hard-code those macros as language features into their ZIL compiler (because ZIL is not quite a Lisp and does not have support for custom macros). Again, this is the understanding I've pieced together in my head from various sources. I don't have the full picture! Maybe I should try to get in touch with the people who were there to ask them...
- KerrAvon 1y agoYes. If you look at the ZILF compiler in particular, which is capable of compiling the original sources, there's a lot more MDL in there than you'd expect would be required for ZIL proper.
- taradinoc 1y agoRight - that's because ZIL was more or less a _superset_ of MDL. ZILCH (Infocom's compiler) provided all the functions of MDL, _plus_ a bunch of new ones that manipulated data structures which were then used to generate assembly code for the Z-machine. One of those new functions, ROUTINE, accepted code written in a domain-specific language resembling a stripped-down MDL, which was then translated into Z-machine instructions. But that domain-specific language isn't synonymous with ZIL: other functions that were inarguably part of ZIL, like OBJECT and SYNTAX, are not part of that domain-specific language. IMO, the only reasonable definition of ZIL is "the language accepted by a ZIL compiler", which (depending on whether you look at ZILCH or ZILF) is either a superset of MDL or an overlapping set.
- taradinoc 1y agoAuthor of ZILF here. I wouldn't say that ZIL "does not have support for custom macros", because ZIL never existed in a form independent of MDL. There's no such thing as "MDL macros that were not available in ZIL", because there was never a version of ZIL that didn't have macros.