Most service manuals and schematics are PDF files, so You will need Adobre Acrobat Reader to view : Acrobat Download
Some of the files are DjVu format. Readers and resources available here : DjVu Resources
For the compressed files, most common are zip and rar. Please, extract files with Your favorite compression software ( WinZip, WinRAR ... ) before viewing.
If a document has multiple parts, You should download all, before extracting.
Good luck. Repair on Your own risk. Make sure You know what You are doing.
XEROX
BUSINESS SYSTEMS
Systems Development Division
November 26. 1977
i1 SDD nCBlftS
~o a un~erstood
1 bave read an
To: User Interface Group
pages_------
To_-----
From: Dave Smith / SO at Palo Alto Date~_---
ReViewer-----_-;-ef.. .:::/ 1 '$ !? 12 ;:..32'1
Subject: On Janus Procedures f of pages_ -
Filed on: janus-procedures.press
Disclaimer: This paper has no relationship to the section that wilt go in the Janus Functional
Spec. It is strictly a "think piece" discussing what I think are interesting ideas concerning
procedures. The Functional Spec section will. of course, omit all of the philosophical discourse
(otherwise known as bullshit).
Second Disclaimer: There are various ideas floating around the Janus program as to what
"procedures" should be used for:
- automating repetitive tasks (me, Paul)
- data management (Richard, Peter Bishop, Linda, Ron Johnson?)
- information flow control (OfficeTalk, Richard?, Peter Bishop?, Ron Johnson?)
- others?
I don't think these are necessarily disjoint; in fact I expect the procedure design discussed here to
be applicable to all of the application areas above; certainly by the second or third release of
Janus. However focusing on an application has tended to lead the designers down different
paths. I am concentrating on procedures as recorded sequences 0/ user actions, I.e. as macros.
Therefore, to clarify that this is what I mean by "procedure", I will use the term "user macro" or
simply "macro" instead of "procedure" in this memo. Hopefully this will integrate with whatever
other procedure facilities people implement (e.g. records processing).
Goals
The user macro design described here is intended to accomplish two goals:
1. To permit the average user to "program" his Janus system. The main purpose of the
programming is to automate his repetitive tasks. A user who cannot program his
computer can only exploit a fraction of its power.
2
2. To make the programming no more difficult than the normal operation of the system.
This goal is, of course, not absolutely achievable; however I believe that this design comes
close.
If we can achieve goal #1, then programming will be available -- for the first time -- to a vastly
larger class of users. If we can achieve goal #2, then our users may find themselves doing quite a
lot of programming. Ideally they will come to rely heavily on programs in their everyday work
habits. Only when this happens can we rightly say that we have "automated the office".
Background
There are in existence today several good models for the type of user programming which I
would like to see incorporated into Janus (at least in the first release -- later releases will
probably require more complicated concepts).
The first thing to observe is that goal #2 has already been attained in limited contexts. Consider
Bravo.
Bravo "replay" transcripts
Bravo builds up a "program" in the background during every editing session. A replay
transcript is a "program" under any reasonable definition because it uses one or more
inputs (text files), contains a machine-executable sequence of instructions (the Bravo
commands), and produces one or more outputs (text files). (The fact that it operates only
on text files and only on the specific text files for which it was defined does not alter the
fact that a replay transcript is a program; it is simply a limited-capability program.)
The fact that Bravo builds a replay file in the background does not make Bravo any
harder to use than if it didn't build the file. Secretaries could use Bravo in either case.
(But a question to be investigated is whether generalizing the replay transcript notion will
keep it as easy to use.)
The next thing to observe is that goal #1 also has already been attained by various systems. One
of the earliest was the Unimate "robot". The following description of the Unimate is taken from
my thesis. It illustrates that a person does not have to be a "computer scientist" to program a
computer; in the Unimate case the programmer is a machinist.
Unimate robot
"The Unimate robot consists of a mechanical arm with 6 degrees of freedom mounted
above a large base containing electronics. It is a programmable manipulator designed for
industrial applications.
"The robot may be operated in either of two modes: training mode or production mode.
In training mode, the robot's are is guided through the steps necessary to perform a task
by a human 'trainer', The robot has a digital electronic memory in which it can
'remember' up to 1024 operations and their timing, Typical operations are 'rotate a joint',
3
'move to (x,y)', 'close the hand', etc. After the training phase the robot can operate in
production mode, automatically repeating the operations in its memory. It will repeat the
operations indefinitely, until stopped or until a pathological condition occurs.
"The robot has been particularly successful on assembly lines. General Motors is
presently using 26 Unimate robots to do 80% of the final welding on its Vega assembly
line. The primary practical deficiencies of the robot are the absence of (a) conditional
branching and (b) force or visual feedback. From a conceptual standpoint. the robot is a
relatively uninteresting computer since its only data structures are (x,y) coordinates.
"However the Unimate demonstrates the potential of dynamic, analogical programming.
Rather than writing an algorithm whose form bears no resemblance to the task to be
done, programming occurs by actually doing the task. Advantages:
"(1) The act of programming is analogous to the function of the program being written.
It is learning by doing. Programming is exceptionally clear and easy.
"(2) An untrained operator can program the robot. 'untrained' in the sense that he need
have little knowledge of computer programming -- he need only be familiar with the task
the robot is to perform. This makes the robot accessible to a large class of users.
"(3) Bug-free programs can be written the first time. Since programming involves doing
the task once, successful completion of the task means that a correct program has been
written (modulo mechanical and/or timing inaccuracies)."
These three characteristics are also desireable for programming in Janus. The principal advance
of the Unimate is its "analogical programming," in which the act of programming is analogous to
the purpose of the program. Another example of anological programming is the Hewlett-Packard
HP-65 pocket calculator. (The following description is paraphrased from my thesis.)
H P-65 Pocket Calculator
This was the first (and in my opinion is still the best) of the hand-held programmable
calculators. Programs are written simply by putting the calculator in "program" mode and
then pushing the desired sequence of keys, just as if one were doing the calculation. The
key-pushes are remembered on a magnetic strip. The magnetic strips can be taken out,
stored "off -line", and read back in later. Hewlett-Packard has published a library of
standard programs, and users typically make their own additions. In "run" mode the
programs can be executed or the calculator can be operated manually.
However a major defect in the design is that in "program" mode the display does not
show the current state of the calculation. Rather it shows a numerical representation for
the last key pushed (e.g. the 17th key). So programs normally have to be designed in
"run" mode, written down, and then entered in "program" mode. One cannot construct
anything but simple programs directly in "program" mode because it is too abstract.
4
Ojjicelalk "edit sequences"
Officetalk has also developed analogical programming in the context of forms fill-in. In
the ORG memo "A Forms Editor for Officetalk" (Oct. '76) Newman and Mott identified
three constraints which they felt a forms editor must satisfy:
"I. Officetalk distinguishes between those areas of a document that may be
altered by the user, and those that may not. The editor must take this distinction
into account.
"2. The user needs some way of repeating the sequence of edits involved in forms
entry and editing, in order to simplify the task of filling in the same form next
time.
"3. The user needs a 'calculator' for forms editing."
The last two are particularly relevant to Janus macros. Newman and Mott described a
scheme for capturing user actions in an "edit sequence":
"As the user edits, an edit sequence is built up in a special window. Each edit is
in the form of an 'assignment statement' indicating which field is filled in, and
which fields supply the information; edits that involve only parts of fields are not
added to the edit sequence. The next time the user performs the same task on the
same form, the previous edit sequence is retrieved. He can then either perform a
different sequence of edits. or use the old sequence. To use the old sequence, he
can either pick each edit from the displayed sequence, or use the next-edit
command (ESC key) to step through the sequence."
A typical edit sequence is:
Total +- Total + amount
Due +- Advance - Total
Signature +- input
Date +- OZ.date
Branch +- '580'
This is constructed by remembering the actions as the user does them and by generalizing
from the specific field used to the generic field it represents. Newman and Mott
developed a clever way to enter constants and run-time-needed inputs into edit sequences
(cf. the above mentioned memo). Janus user macros will incorporate something like this.
Note that their edit sequences record only actions that modify or use an entire field's
contents; intra-field edits are ignored. This is in sharp contrast to Bravo, which records
everything. My inclination is towards the Bravo interpretation.
Pygmalion "dynamic programming"
Another example of an articulate method of defining algorithms is the work in my thesis
(ahem): PYGMALION, A Computer Program to Model and Stimulate Creative Thought.
5
(Incidentally, it is now available from Birkhauser Verlag if you're interested.) In
PYGMALION I developed visual. interactive counterparts for the standard programming
concepts: conditionals. iteration. subroutines. etc. Since PYGMALION's emphasis was on
modelling existing computer science concepts, the work is not directly translatable to
Janus. (Janus is not aimed at computer scientists.) However. I think it provides an
existence proof that there are solutions to such problems as finding an analogical way to
do conditionals.
In PYGMALION. as in the systems above. there is a "remember" mode of operation. In
"remember" mode each operation. in addition to executing its internal semantics and
updating the display, adds itself to a list of instructions caJled a "code list". A code list
could be associated with an icon and re-executed on demand. Code lists contain only
generic operations, as in Officetalk; PYGMALION generalizes from the specific icon used
to the generic icon that it represented. This generalization is the core of the problem of
defining algorithms by dynamic interaction.
NLS command sequences
On a slightly different emphasis, the NLS (oN-line System) editor at SRI refined the
notion of user-editable interpretive commands. NLS commands are heavily syntax driven;
a typical command is:
MOVE (at)