Compile and run Joseph Weizenbaum's original 1965 code for ELIZA on CTSS, using the s709 IBM 7094 emulator.
See the Prerequisites and Quickstart section below to begin.
Alternative ways to get ELIZA:
- Automated setup using Docker.
- Add to an existing CTSS installation via a virtual tape file.
Updating from an older version? See UPDATING.md. Note
there is a new step in the Quickstart where you need to login as sysdev.
You will need a Unix like environment that can compile C code and run Python and shell scripts. This has been tested on
- Arch Linux
- Debian
- MacOS
but may work on other Unix/Linux flavours.
You will also need the telnet command line program or a GUI telnet
client. The command line program can be installed by sudo apt install telnet on Debian/Ubuntu or brew install telnet on MacOS.
If you just want to try ELIZA, follow the below steps to bring up CTSS
and get ELIZA compiled and running. If you'd like to find out more
about each step, see HACKING.md.
- Fetch this repo and set up the environment.
$ git clone https://github.com/rupertl/eliza-ctss.git
$ cd eliza-ctss
$ source env.sh
$ make-binaries
$ make-disks
- The next two commands will prompt you to press Enter a number of
times and then
qto quit.
$ format-disks
$ install-disk-loader
- Continue installing CTSS and the ELIZA source.
$ installctss
$ add-eliza-users
$ upload-all
- Start CTSS by typing
runctss - Use another terminal window to start your telnet client and connect to localhost port 7094. For
the command line client you can type
telnet 0 7094. - In the telnet session, type
login sysdevand give the passwordsystem - The screen should now look something like
$ telnet 0 7094
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
s709 2.4.3 COMM tty0 (KSR-37) from 127.0.0.1
MIT8C0: 1 USER AT 02/01/25 921.5, MAX = 30
READY.
login sysdev
W 921.6
Password
M1416 6 LOGGED IN 02/01/25 921.6 FROM 700000
HOME FILE DIRECTORY IS M1416 SYSDEV
THIS IS A RECONSTRUCTED CTSS SYSTEM.
VERSION: 1.0.8
BUILT: 01/25/25 1053.0
CTSS BEING USED IS: MIT8C0
R .033+.000
- Type
runcom mkhugeand wait for it to printMKHUGE HAS BEEN RUN. - Type
login slipand give the passwordslip - Type
runcom makeand wait for it to printMAKE HAS BEEN RUN. - Type
login elizaand give the passwordeliza - Type
runcom makeagain and wait forMAKE HAS BEEN RUN. - Type
r eliza - Give the answer
100to the prompt of which script to use - ELIZA will print a greeting and you can now interact with her. Keep your responses below 72 characters and press Enter twice to submit. This is how your screen could look after a first response.
r eliza
W 1916.6
EXECUTION.
WHICH SCRIPT DO YOU WISH TO PLAY
100
HOW DO YOU DO . I AM THE DOCTOR . PLEASE SIT DOWN AT THE TYPEWRITER AND TELL ME
YOUR PROBLEM .
INPUT
Men are all alike.
DID YOU THINK THEY MIGHT NOT BE ALL ALIKE
INPUT
- When you are finished, press
Control-\(backslash) to interrupt and then typelogout. - Shut down CTSS cleanly. You will need to switch back to the main emulator window you started earlier - this cannot be done from the telnet session.
Execute the following, pressing Enter after each non Control-C line.
- Press Control-C
- Type
ek 40017 - Type
st - Press Control-C
- Type
ek 0 - Type
st - Press Control-C
- Type
ek 40032 - Type
st - Type
qand Enter to exit.
- If you want to run ELIZA again, do
runctssand then telnet in as userelizaandr elizalike before. (You do not need to recompile it).
If you would like to try different personality scripts for ELIZA, read
SCRIPTS.md.
To learn more about compiling ELIZA, and how to make your own changes
to the soruce code, see HACKING.md.
If you would like to read more about the process of reconstructing the
code from the printouts, see
RECONSTRUCTION-CARD.md.
To find out more about CTSS, see my blog post series at timereshared.com.
The goal of this repository is to get ELIZA running in its original
form with as few modifications as possible. There are missing features
and bugs from the original code: see
KNOWN-ISSUES.md for details.
The ELIZA and SLIP library code under eliza/ is from the source code
printout
which was found among Weizenbaum's papers at MIT by Jeff Shrager and
the MIT archivists, and
transcribed
by Anthony Hay and Arthur Schwarz respectively. Weizenbaum's estate
has kindly agreed for this to be open sourced under a Creative
Commons CC0 public domain
license. About 4%
of the SLIP library were missing in the original printout; these were
re-implemented by Anthony, Arthur and Rupert Lane and are found in
eliza/src/SLIP/SLIP-reconstructed with tests in SLIP-tests. This
newer work is also licenses as CC0.
The s709 emulator, ctss-kit and utilities under ctss/ are from Dave
Pitts' IBM 7090/7094 page,
based on previous work on s709 by Paul Pierce, with minor
modifications by Rupert. This uses the MIT license, see
LICENSE.txt.
CTSS environment set up, upload and runcom scripts are by Rupert, licensed as CC0.
The ELIZA script
eliza/src/ELIZA/tape.200 is adapted from
Weizenbaum's article for the Communications of the ACM in 1966.
The Docker automation was contributed by @MarquisdeGeek
Thanks to everyone on Team ELIZA for their help and advice,
Please raise an issue/pull request if you see any problems, or email me at [email protected]