Stories
Slash Boxes
Comments

SoylentNews is people

posted by Fnord666 on Friday May 08 2020, @05:32PM   Printer-friendly
from the frobizz dept.

Source code for seminal adventure game Zork on dead mainframe exhumed onto GitHub:

Source code for seminal adventure game has been Zork[sic] recovered and published on GitHub.

While classic adventure games (aka interactive fiction) are well represented in the Internet Archive - there's plenty of playable Zork versions here - this new trove is source code that's been retrieved from the Massachusetts Institute of Technology, Tapes of Tech Square (ToTS) collection at the MIT Libraries Department of Distinctive Collections (DDC).

If you access the repo and its README you're told the source was written "in the MDL programming language written on a PDP-10 timeshare computer running the ITS operating system".

[...] The code in the repo comes from 1977, before the game was commercialised but at a time it was informally distributed.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 2) by hendrikboom on Monday May 11 2020, @01:05PM

    by hendrikboom (1125) on Monday May 11 2020, @01:05PM (#992795) Homepage Journal

    There's a more effective way to do this. Pick *one* other character (I picked '/' decades ago. Some people may prefer ';' to '/')

    Then treat phrases like

          ( a b c / d e f / g / h j . k)

    as equivalent to

        ( a b c ( d e f (g ( h j . k ))))

    This eliminates a *lot* of parentheses.
    And it works well when you redesign a few other Lisp bits of Lisp syntax:

    (let a b c) instead of (let ((a b)) c)

    Then you can write
    ( let a b
    / if (eq a 'foo) e
    / let c d
    / let e f
    / onion soup c e
    )

    The syntactic counterpart of tail recursion.
    An order of magnitude reduction in parentheses.
    Intermingling 'if' and 'let' is easy without deep nesting.
    No significant change in Lisp philosophy.
    Code and data are still as equivalent as before.
    Leads to a coding style in which the (syntactically) largest operand of an operator tends to be the last one.

    There's a Racket #lang module that does this with '#/'. Not nearly as neat in my opinion, but here it is:
    https://docs.racket-lang.org/parendown/index.html [racket-lang.org]

    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2