A Luser's Guide to ITS

     Disclaimer: I write this as friendly advice to new users of ITS,
     and the term "[1]luser" is not meant degeneratively. I'm still
     discovering ITS myself, and while I know PDP-10 assembly language,
     [2]TECO and DDT from my TOPS-20 days, I'm probably still an ITS
     luser myself. I'm working on it, though...

      [2] http://www.hactrn.net/sra/alice/

ITS is an open system

   [3]Alice's PDP-10 [with feelin']
   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!

      [3] http://www.hactrn.net/sra/alice/alices.pdp10

   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.

   There is no file protection.
          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.

   There is little process protection.
          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.

   There is little system protection.
          For example, anyone (logged in) can take the system down by
          using the [4]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 "[5]ethics" are necessary. Try not to break things, but do
   explore and experiment! And don't forget to have fun!

      [5] http://hacks.mit.edu/Hacks/misc/ethics.html

What not to do

     * Don't overwrite files in other directories than your own. If you
       do it anyway, please let someone know so they can perhaps do
       something about it. ([6]Here is a piece of TECO for your EMACS
       init file to help against involuntary disasters.)
     * Please try to shut the system down nicely if you have to,
       instead of crashing it (or its host system). This minimizes the
       risk of filesystem breakage.

      [6] http://victor.se/bjorn/its/emacs.php

What to do

    1. Connect using Telnet, or preferrably [7]Supdup. [8]Supdup (the
       Super-Duper Image Telnet protocol) allows ITS programs (such as
       EMACS and PEEK) to display faster and better on your terminal
       (window) than using Telnet.
    2. If you don't get a * prompt, press 〈CTRL〉-Z (henceforth ^Z) to
       get attention from the ITS system.
    3. You are now talking to 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.
    4. You will notice that what we these days mean by "commands" start
       with : (colon). Once you have logged in, you can also use DDT
       commands such as ^A, $L (where $ means 〈ESCAPE〉), etc. Please
       study the [9]DDT Primer and Reference Manual (see below), and
       for the gory details, the file [10].INFO.;DDTORD > - here are
       some quick basics:
          + ^Z stops the program which is running. To let it continue,
            use :PROCEED or $P (that's 〈ESCAPE〉 P).
          + ^D forgets what you typed so far on the input line.
            Something like ^U in bash, but doesn't erase the line, just
            prints XXX?. (And ^U does something entirely different in
            HACTRN.)
          + ^^ ([11]〈CTRL〉-^) is the escape character for Supdup (at
            least the C version).
          + ^_ is (probably) the Help character in EMACS, but also a
            special [12]escape character in ITS, so you have to type it
            twice!
          + The key marked 〈BACKSPACE〉 or 〈RUBOUT〉 or 〈DELETE〉 is
            different from ^H (〈CTRL〉-H). The first typically removes
            the previous character. The latter (^H) typically moves
            backwards through a file, or in DDT, resumes the current
            program (but for full details, try :DDTDOC ^H).
    5. Some useful commands (not case sensitive, but traditionally in
       upper case):

      [7] http://victor.se/bjorn/its/supdup.tar.gz
      [8] http://victor.se/bjorn/its/supdup.php
      [9] http://victor.se/bjorn/its/ddt.html
     [10] http://victor.se/bjorn/its/ddtord.html
     [11] http://victor.se/bjorn/its/telnet.sng
     [12] http://victor.se/bjorn/its/itstty_a5.text

        :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
                :SEND user message^C
                sends a message to user. 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.

        :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
                :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.

          + For a fun introduction to more commands, read [13]The
            HACTRN by Guy L. Steele.
          + For a gentle introduction to more commands, read
            [14]Getting Started Computing at the AI Lab (PDF new
            101222] ) especially chapter 6.
          + For a serious introduction to DDT/HACTRN, read the [15]DDT
            Primer and Reference Manual, e.g. by using the command
            :INFO DDT.
          + For historical information, read the [16]Wikipedia article.
    6. 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.
    7. File names have four components. Each can be up to six
       characters.
         1. Device, ended by : (colon), e.g. DSK: or MD: (ITS host
            name)
         2. Directory, ended by ; (semicolon), e.g. USERS1;, .TEMP.;,
            or HACK;.
         3. "FN1" (File Name 1), the "main file name".
         4. "FN2" (File Name 2), separated from FN1 by a space. FN2 is
            used for file type (e.g. BIN) or more often for file
            version/generation.
       Example: "MD:.INFO.;DDTORD >".
       Sometimes filenames are shown in another order, as DIR; DEV: FN1
       FN2.
    8. About file versions:
          + If you write a file FOO >, you create the next version of
            FOO. If FOO 41 exists, you create FOO 42.
          + If you read a file FOO >, you read the latest version (or
            largest version number).
          + The FN2 "<" represents the oldest (lowest) version.
          + So you may need to clean up once in a while, e.g. by using
            the H command in DIRED (in EMACS).
    9. If your connection is lost and you connect again, your old job
       (set of processes) is probably still around.
          + Sometimes ITS detects your disconnection, "detaches" your
            old job from its "terminal", and offers you to attach it
            when you log in the next time. If you get prompted --Attach
            Your Detached Tree-- when you log in, just press 〈SPACE〉 to
            say "yes" (or 〈RUBOUT〉 for "no").
          + Sometimes ITS doesn't detect your disconnection. When you
            log in again, your visible username will have a "0" (or
            "1", "2" etc) at the end, and if you try :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).

     [13] http://victor.se/bjorn/its/hactrn.php
     [14] http://victor.se/bjorn/its/AI_WP_235.pdf
     [15] http://victor.se/bjorn/its/ddt.html
     [16] http://en.wikipedia.org/wiki/Incompatible_Timesharing_System

Quick Ref for various commands

   LOCK
          The program used for (among other things) shutting down the
          system cleanly.

         1. Type :LOCK to start it, and it prompts you with _
            (underscore).
         2. To schedule a shutdown, give the command nDOWN, where n is
            the number of minutes to wait (minimum 5).
         3. You are now asked if you really want the system to go down.
            Answer y if you really do.
         4. You are then asked to enter a brief message to users, ended
            by ^C. Please do.

          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.
     _________________________________________________________

   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.]
     _________________________________________________________


    © [17]Björn Victor [18]<Bjorn@Victor.se>

     [17] http://victor.se/bjorn/
     [18] mailto:Bjorn@Victor.se

  [19]Valid HTML 4.01! [20]Valid CSS!
                                      Latest update: December 22, 2010.

     [19] http://validator.w3.org/check?uri=http%3A%2F%2Fvictor.se%2Fbjorn%2Fits%2Fluser.php
     [20] http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fvictor.se%2Fbjorn%2Fits%2Fluser.php