It is important to understand right away that ITS is a very open system. While you may not be able to log in without an account, you can still read people's mail after just connecting to the system, and once you are logged in “you can hack anything you want with TECO and DDT”, or indeed shoot yourself in the foot rather severely.
If you write/delete files in some of the system directories, this is logged, but this is about it. Luckily files can exist in more than one generation/version, so if you overwrite a file the old one (may) still be around.
Although processes can't poke eachother by mistake, users can, e.g., take over other users' processes, debug them, etc. This is good, since it lets hackers help others.
For example, anyone (logged in) can take the system down by using the LOCK program. The minimum warning time is five minutes, allowing others to undo the shutdown if necessary, but since all programs can be patched at runtime, the limit can also be circumvented (if you know how).
So some “ethics” are necessary. Try not to break things, but do explore and experiment! And don't forget to have fun!
PWORD
, a replacement for HACTRN which allows only a small number of commands. Try pressing ?. If you want to log in, use the :LOGIN command. Once you have successfully logged in, you're talking to the real HACTRN..INFO.;DDTORD >
- here are some quick basics::PROCEED
or $P (that's ESCAPE P).XXX?
. (And ^U does something entirely different in HACTRN.):DDTDOC ^H
).If your connection is lost and you connect again, your old job (set of processes) is probably still around.
–Attach Your Detached Tree–
when you log in, just press SPACE to say “yes” (or RUBOUT for “no”).:FINGER
you see your old job without the “0”. You can then “reattach” the old job (replace your new job with the old one) by using the command :REATTACH uname/K
where uname is your username (without the “0” etc).Some useful commands (not case sensitive, but traditionally in upper case):
?? :DDTDOC
:: Shows documentation for DDT commands (i.e. not for programs). Try :DDTDOC ^F
to get documentation for the ^F command, or just :DDTDOC for interactive mode. !!
?? :WHAT
:: Answers questions, both silly and useful. Try :WHAT is this
or :WHAT source for NAME
, or :WHAT bus
(for MIT buses in '87 or so). !!
?? :LUSER
:: This command calls for help from more knowledgable hackers, if any are logged in. !!
?? :SEND user message^C
:: sends a message to user (end with CONTROL+Ctrl. If the user is logged in, the message is displayed on his/her terminal. If you get a message and don't see it or want to re-read it, press ^A in HACTRN. (:SEND is similar to write in u*ix, but better.) !!
?? :KILL
:: kills the current “job” (subprocess). To see which jobs you have, use :JOBS
(or $$V); to switch between them, use :JOB
(or $J) (or :JOB jobname
or jobname$J
). !!
?? :EMACS
:: This is the original EMACS! Not really as powerful as the follow-ups (FSF Emacs, XEmacs), but leaner and meaner. Written in the “write-only” language TECO. Try M-x Teach Emacs
to learn (where M-x
means Meta-X or ESCAPEX. !!
?? :PEEK
:: Similar to top in u*ix, but show more kinds of information. Try pressing ?. Pressing Q quits. !!
?? :FINGER, :F, :NAME, :N, :WHEN, :WHOIS
:: These commands show information about who is logged in, and take an optional user name as argument, showing info also about non-logged-in users. !!
?? :PRINT file
:: prints file on your terminal, similar to more in u*ix. Try :PRINT HACK;MD NEWS
!!
?? :LISTF
:: lists the files in the default directory. Also try :LF
, which is different. !!
More commands:
Directories are flat (i.e., no subdirectories). Initially you'll share home directory with other users. Do M-x List Directories in EMACS to list them.
File names have four components. Each can be up to six characters.
:
(colon), e.g. DSK:
or MD:
(an ITS host name);
(semicolon), e.g. USERS1;
, .TEMP.;
, or HACK;
.BIN
) or more often for file version/generation.Example: “MD:.INFO.;DDTORD >”. Sometimes filenames are shown in another order, as DIR; DEV: FN1 FN2.
About file versions:
FOO >
, you create the next version of FOO. If FOO 41
exists, you create FOO 42
.FOO >
, you read the latest version (or largest version number).The program used for (among other things) shutting down the system cleanly.
:LOCK
to start it, and it prompts you with _ (underscore).nDOWN
, where n
is the number of minutes to wait (minimum 5).The system will start shutting down when either the n minutes have passed, or all users have logged out. (Please do not quit KLH10 or shut down the host system until ITS has shut down completely, which is visible on its console or by observing the CPU usage of kn10-ks going up towards 100%.)
To cancel a shutdown, use the REVIVE command of LOCK.
:DSKUSE
shows how full your current directory is.
:DSKUSE hack;
shows how full the HACK; directory is.
:PRUFD
PRints the User File Directories, i.e., lists the directories on disk.
From HUMOR;JARGON 68
[August 1983]:
?? LUSER
:: See USER. !!
?? USER n.
:: A programmer who will believe anything you tell him. One who asks questions. Identified at MIT with “loser” by the spelling “luser”. See REAL USER. !!
[Note by GLS: I don't agree with RF's definition at all. Basically, there are two classes of people who work with a program: there are implementors (hackers) and users (losers). The users are looked down on by hackers to a mild degree because they don't understand the full ramifications of the system in all its glory. (A few users who do are known as real winners.) It is true that users ask questions (of necessity). Very often they are annoying or downright stupid.]
(See Alice's PDP-10.)
You can hack anything you want, with TECO and DDT.
You can hack anything you want, with TECO and DDT.
$U in and begin to hack.
Twiddle bits in a core dump and write 'em back.
You can hack anything you want, with TECO and DDT.
(But be careful typing <RET>)
With TECO and DDT!