1
0
mirror of synced 2026-01-13 15:37:38 +00:00
2020-12-13 17:04:48 -07:00

4 lines
70 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Primer from Scan
TABLEOFCONTENTS
~)19 ~`~
1. A Brief Glossary t 1.1
2. The Mouse and the Keyboard / 2.1
2.1. The Mouse 2.1
2.1.1. 2and3ButtonMice 2.1
2.2. _ The _ Keyhoard _ 2.2
2.2.1. _ The _ 1186 _ Keyhoard _ 2.2
2.2.2. _ The _ 1108 _ Keyhoard _ 2.2
3. Turning On Your Lisp Machine / 3.1
3.1. _ Turningonthello8 _ 3.1
3.2. _ Turning on _ the1186 _ 3.2
3.3. _ Loading _ lntertis~D from the _ Hard _ Disk _ 3.3
3.4. _ AfterBooting _ Lisp _ 3.5
3.5. _ Restarting _ Lisp After Logging _ Out _ 3.5
4. If You Have a Fileserver / 4.1
4.1. _ Turning on your 1108 _ 4.1
4.2. _ Turningonyourll86 _ 4.1
4.3. Location of Files 4.2
4.4. The Timeserver 4.2
5. Logging Out And Turning the Machine Off 51
5.1. _ Logging Out _ 5.1
5.2. _ Turning _ The _ MachineOff _ 5.2
6. Typing Shortcuts 6.1
6.1. _ If you _ makea _ Mistake _ 6.3
7. Using Menus 7.1
7.1. _ Making _ a _ Selection from _ a _ Menu _ 7.2
7.2. _ Explanations _ of _ Menu _ Items _ 7.2
7.3. Submenus 7.3
8. How to use Files 8.1
8.1. _ Types of Files _ 8.1
TA8~ OF CONTENtt To'.,
1
- - - -
. - - - - . - - , -
TABLE OF CONTENtr
8.2. _ Directories _ 8.1
8.3. _ Directory Options _ 8.2
8.4. _ Subfile _ Directories _ 8.3
8.5. _ To See What Filri Are _ Loaded _ 8.3
8.6. _ Simple Commands for Manipulating _ Filu _ 8.3
\
8.7. _ to a _ 8.4
- `.~--y Connecting _ Directory
\ s 8.8. _ File Vettion _ Numbers _ 8.4
9. FileBrowser 9.1
9.1. _ Calling the _ FileSrowser _ 9.1
9.2. FileBrowserCommands 9.3
10. ffose Wondertul Windows! 10.1
10.1. _ Windows _ provided _ by lnterlis~D _ 10.1
10.2. _ Creating a _ window _ 10.2
10.3. _ The Right _ Button DefaultWindow _ Menu _ 10.2
10.4. _ An _ explanation of each _ menu _ item _ 10.3
10.5. _ krollable Windows _ 10.3
10.6. Other Window Functions 10.5
10.6.1. PROMPTPRlNT 10.5
10.6.2. _ WHlCHW _ 10.6
11. Editing and Saving 11.1
11.1. _ Defining _ Functions _ 11.1
11.2. Simple Editing in the 1nterlis~D Executive Window 11.2
YA8~ OF cottnritt
iA.3. _ Wùys to Stop Exùcution from thù Kùyboard, called _ 1ùrùùhlng LIzp5 _ 14.3
t4.4. _ Programming _ Brùaks and Dùbugging Codù _ 14.4
14.5. Break Monu 14.4
14.6. _ Returning to Top Lovùl _ `4.5
15. _ On-Line _ Help _ with _ Interlisp-D: _ HELPSYS and _ DlNFO _ ~ _ 15.1
15.1. _ HelpSys _ 15.1
15.2. Dlnfo 15.1
16. Floppy Disks / 16.1
16.1. _ Buying Floppy Disks _ 16.1
16.2. _ Basic Floppy Disk Information _ 16.1
16.3. _ Care of Floppies _ 16.2
16.4. _ Write Enabling and Write Protecting _ Floppies _ 16.3
16.4.1. _ Write Enabling an _ 1108's _ Floppy _ Disk _ 16.3
16.4.2. _ Write Protecting an _ 1186's Floppy Disk _ 16.3
16.5. _ Inserting _ Floppies _ intothe _ Floppy Drive _ 16.3
16.6. _ Functions for Floppy Disks _ 16.4
16.6.1. _ Formatting Floppies _ 16.4
16.6.2. _ Available Space on a Floppy Disk _ 16.4
16.6.3. _ The Name ofa Floppy Disk _ 16.4
16.6.4. _ FLOPPY.MODE _ 16.5
17. Duplicating Floppy Disks 17.1
17.1. _ Supplies _ 17.1
17.2. _ Preparabon _ 17.1
17.2.1. _ Handling _ Floppy _ Disks _ 17.1
17.2.2. _ Setup _ 17.1
17.3. _ Copying _ Floppy Disks _ 17.2
18. Sysout Files 18.1
18.1. _ Loading SYSOUT Filri _ 18.1
18.1.1. _ Loading a _ SYSOUTfile on the _ 1108 _ 18.1
18.1.2. _ Loading a SYSOuTfileonthe _ 1186 _ 18.2
18.2. _ Making _ Your Own SYSOUT File _ 18.3
19. Using the Epson FX80 Printer ~ 19.1
19.1. _ Initializing the RS232 Port _ 19.1
19.2. _ Power upthe Printer _ 19.1
19.3. _ to Align Top of Page _ 19.1
YA8~ OF CONTENTS TOC.3
TABLE OF CONTEND yl
19.4. _ Fundions To Print Filri and _ Bitmapf _ 19.2
19.4.1. _ RS232.Print _ 19.2
19.4.2. _ FXWSTREAM _ 19.2
19.4.3. _ Printing a Portion of the Screen _ 19.3
20. R5232 File Transfer With a VAX 20.1
20.1. _ Prerequisites _ 20.1
20.2. _ Using Chat to Transfer Filri _ 20.1
21. Ethernet File Transfer 21.1
21.1. _ Prerequisites _ 21.1
21.2. File Transfer 21.1
22. WhatToDolf...
22.1
ù;;23. The Text œditor,TEdit 23.1
23.1. _ Using TEdit _ 23.1
23.2. _ Managing the edit Window _ 23.2
23.3. _ Seleding _ Tert _ 23.3
23.4. _ Deleting, Copying, and _ Moving Text with edit _ 23.4
23.4.1. _ Deleting Text From a File _ 23.4
23.4.2. _ Copying _ Text _ 23.4
23.4.3. _ Moving _ Text _ 23.5
23.5. _ rtdit Menus _ 23.6
23.5.1. _ Finding _ and _ Substituting Text with _ edit _ 23.7
23.5.1.1. _ Finding Text _ 23.7
23.5.1.2. _ Substituting Text _ 23.8
23.5.L _ Text Formatting _ 23.10
23.5.2.1. _ Choosing Fonts _ 23.10
23.5.2.2. _ Paragraph _ Formatting _ 23.11
23.5.3. _ Adding _ Bitmaps and Sketches to your TEdit File _ 23.13
23.5.3.t. _ Adding a _ Bitmap to your TEdit file _ 23.13
23.5.3.2. _ Adding a Sketch to your TEdit file _ 23.14
23.5.4. _ Getting and _ Including _ Filri _ 23.14
23.5.4.1. _ Get _ 23.14
23.5.4.2. _ Include _ 23.14
23.5.5. _ Saving and Printing Files _ 23.15
24. _ Records _ May _ BG _ Your _ Favorite _ Data _ Structure! _ 24.1
2&1. _ Interlisp Record ~imitlves _ 24.1
T~.. rAa~0fC0NTENrt
TABLE OF OoNTENfl
24.2. _ Exomplo _ 24.3
24.3. _ AFùwflps _ 24.4
25. Local Variables - Using LET and PR0G 7 25.1
25.1. _ LET _ 25.1
25.2. _ PfloG _ 25.3
25.3. _ Porillol _ vottus _ S~uential _ Vorioblo _ Binding _ 25.6
25.3.1. _ L~ _ 25.6
25.3.2. _ PROGù _ 25.7
26. lterative statements 26.1
26.1. _ General _ Strudurc and _ Use _ 26.1
26.2. _ Local _ Variables _ 26.2
26.3. _ lteration _ On _ Lists _ 26.3
26.4. _ Parallel _ lteration _ 26.4
26.5. _ Conditional _ lteration _ 26.5
26.6. _ More _ lteration _ 26.6
27. Window and Regions 27.1
27.1. _ Windows _ 27.1
27.1.1. _ CREATEW _ 27.1
27.1.2. _ WlNDOWPROP _ 27.2
27.1.3. _ Getting windows to do things _ 27.3
27.1.3.1. _ BUflONEVENTFN _ 27.4
27.1.4. _ Looking at a _ window's properties _ 27.5
27.2. _ Regions _ 27.5
28. What Are Menus? 281
28.1. _ Displaying _ Menus _ 28.1
28.2. _ Getting _ Menus to DO Stuff _ 28.2
28.2.1. The WHENHELDFH and WHENSELE~DFN fields of a
menu 28.4
28.3. _ Looking _ at a _ menu's fields _ 28.5
29. Bitmaps 29.1
30. Displaystreams 30.1
30.1. _ Drawing _ on a _ Displaystream _ 30.1
30.1.1. _ DliWUNE _ 30.1
30.1.2. _ DliWTO _ 30.2
30.1.3. _ DliWaRCLE _ 30.3
TABS OF CONTENff TOC.5
l
TABS OF CON~Nfl
30.1.3.1. _ FlLLGRCLE _ 30.3
30.2. _ Locating and _ Changing _ Your Position _ in _ a _ Displaystream _ 30.4
30.2.1. _ DSPXP0SlflON _ 30.5
30.2.2. _ DSPYPOSlBON _ 30.5
30.2.3. _ MOVETO _ 30.5
31. Fonts 31.1
31.1. _ WhatmakesupaFONn _ 31.1
31.2. _ Fontdescriptors, and _ FONTCREATE _ 31.2
31.3. _ Display Fonts-Theirfiles, and how to find them _ 31.3
31.4. _ Interpress _ Fonts- Their files, and _ how to find them _ 31.4
31.5. _ Functions for Using Fonts _ 31.4
31.5.1. _ FOHTPROP - _ Looking at Font Properties _ 31.4
31.5.2. _ SffllNGWlDTH _ 31.5
31.5.3. _ DSPFONT- Changing the Font in _ One Window _ 31.6
31.5.4. _ GIo~IlyChanging Fonts _ 31.7
31.5.5. _ Pettonalizing _ Your Font Profile _ 31.7
32. The Inspetror 32.1
32.1. _ Calling the Inspector _ 32.1
32.2. _ Using _ the _ Inspector _ 32.2
32.3. _ Inspector _ Example _ 32.2
33. Masterscope 33.1
33.1. _ The SHOW DATA command and GRAPHER _ 33.2
33.2. Databasefns: Automatic Conrtruction and Upkeep of a Mastettcope
Data~se _ 33.3
34. Where Does All the Time Go? SPY 34.1
34.1. _ How to use Spy with the SAY Window _ 34.1
34.2. _ How to use _ SPY from the _ Lisp Top Level _ 34.2
343. _ Interpreting _ SPY's Results _ 34.2
35. SKETCH 35.1
35.1. _ Starting _ Sketch _ 35.1
35.2. _ Selecting _ Sketch elements _ 35.1
35.3. _ Drawing _ with _ Sketch _ 35.2
35.3.1. _ Simplù Shapes: _ Circles, Ellipsriù and _ Boxes _ 35.3
35.3.1.1. _ Drawing _ Circlri _ 35.3
35.3.1.1 _ Elllpsri _ 35.3
TA.G TAlLE0fC0NFENrt `/`
----- Next Message -----
Date: 19 Dec 91 14:18 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.141853pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11640>; Thu, 19 Dec 1991 14:19:05 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 14:18:53 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
TABLE OF CONTENff
42. _ Simple _ Interactions _ with _ the _ Cursor, _ a _ Bitm&p, _ and _ & _ Window _ 42.1
42.1. _ An _ Example Function _ Using _ GETHOUSESTATE _ 42.1
42.2. _ Advising _ GETMOUSESTATE _ 42.2
42.3. _ Changing the Cursor _ 42.2
42.4. _ Functions for _ "Tracing the cursor" _ 42.3
42.5. _ Running the Functions _ 42.6
43. Glossary of Global System Variables 43.1
43.1. _ Directories _ 43.1
43.2. _ Flags _ 43.2
43.3. _ Hirtory _ Lists _ 43.3
43.4. _ Syrtem _ Menus _ 43.3
43.5. _ Windows _ 43.4
43.6. _ Miscellaneous _ 43.4
44. Other References that will be Useful to You 44.1
TA.G TAaU0FC0NTENff
PREFACE
it wos dawn and the locd told him it was down the road a p;ece,
lefl &t the hst fishing bridge in the counvy right at the apple
tree stump, and onto the d;rt roadjust before the hill. At
m;dnight he knew he was lo$t.
-Anonymous
Welcome to the Interlisp-D programming environment! The
Interlis~D environment truly must be one of the most
sophisticated and powerful tools in use by human beings.
Overall, it is flexible, well thought out, and full of pleasant
surprises: "Wow, here are exactly the set of functions l thought
I'd need to write." Unfortunately, along with the power comes
mind-numbing complexity. The Intedisp Refertnce Manual
describes the functions and some of the tools available in the
Interlisp-D environment. To do this takes three large volumes.
Other volumes are needed to document the library packages and
other newly written tools. Needless to say, it is very difficult to
learn such a huge amount of material when there is no way to
determine where to rtart!
We developed this primer to provide a starting point for new
lnterlis~D usert, to enhanceù your excitement and challenge you
with the potential before you. We assume you know a little
about LISP, most likely received from taking a survey courte in
Artificial Intelligence (Al), and have seen a demonrtration of
how lnterlis~D runs on your 1186 or 1108. We further assume
that your machine is not on a network system with a file server -
though this is addressed, and that you will be working from
floppy disks and the hard disk that is part of the machine. If this
describes your situation, you are ready to sit down in front of
your machine and follow the ste~by-step examples provided in
this primer.
The primer is broken into many small chapters, and these
chapters are organized into five parts. You may want to read
Parts 1 through 3 straight through, since they describe the basics
of using the machine. Each chapter in Sections 4 and 5, however,
can be used to learn a specific skill whenever you are ready to for
it
Part one, "Introduction", includes Chapters 1 and 2. Part two,
"Getting Into/Out of Interlisp", includes Chapters 3 through 5.
Part three, "The lnterlis~D language and Programming
Environment", includes Chapters 6 through IS. These chapters
discuss primary elements in lnterIis~D, and orient you in relation
to those elements. Part four, "Important Other Things to Know
to Work Successfully", includes Chapters 16 through 31. Part
five, "More Language and Environment and Packages", includes
Chapters 32 through 44.
PREFAcE v
----- Next Message -----
Date: 19 Dec 91 14:20 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.142054pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11636>; Thu, 19 Dec 1991 14:21:05 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 14:20:54 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
PREFACE
Through out we make reference to the lnterlis~D Reference
Manual by section and page number. The material in the primer
is just an introduction. When you need more depth use the
detailed treatment provided in the manual.
While only you can plot your ultimate destination, you will flnd
this primer indispensable for clearly defining and guiding you to
the first landmarks on your way.
Acknowledgements The early inspiration and model for this primer came from the
Intelligent Tutoring Systems group and the Learning Research
and Development Center at the University of Pittsburgh. We
gratefully acknowledge their pioneering contribution to more
effective artificial intelligence.
This primer was developed by Computer Possibilities, a company
committed to making Al technology available. Primary
development and writing was done by Cynthia Cosic, with
technical writing support provided by Sam Zordich.
At Xerox Artificial Intelligence Systems, John Vittal managed and
directed the project. Substantial assistance was provided by
many members of the AlS staff who provided both editorial and
systems support.
PREFA~ ù1
----- Next Message -----
Date: 19 Dec 91 14:33 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.143340pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11653>; Thu, 19 Dec 1991 14:33:46 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 14:33:40 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
1. ABRlEFGLOSSARY
The following definitions will acquaint you with general terms
used throughout this primer. You will probably want to read
through them now, and use this chapter as a reference while you
read through the rest of the primer.
advising An lnterlis~D facility for specifying function modifications
without necessarily knowing how a particular function works or
even what it does. Even system functions can be changed with
advising.
argument An argument is a piece of information given to an lnterlis~D
function so that it can execute successfully. When a function is
explained in the primer, the arguments that it requires will also
be given. Arguments are also called Parametert.
atom The smallest rtrvcture in Lisp; like a variable in other
programming languages, but can also have a property lirt and a
function definition.
Background Menu The menu that appears when the mouse is not in any window
and the right mouse button is pressed. A typical background
menu is shown in Figure I.I.
Loops Icon
FileB'owser
Figuro 1.1. The Menu that appeort when the mouse is not in any window, and
the right mouse button is pressed. Your background menu may have some
different items in it
binding The value of a variable. It could be either a local or a global
variable. See unbound.
bitmap A rectangular array of `ù pixels, `ù each of which is on or off
representing one point in the bitmap image.
BREAK An Interlisp function that causes a function to stop executing,
open a Break window, and allow the user to find out what is
happening while the function is halted.
Break Window A window that opens when an error is encountered while
running your program (i.e., when your program has broken).
There are tools to help you debug your program from this
window. This is explained further in Chapter 14, Page 14.1.
browse To examine a data strvcture by use of a display that allows the
user to "move" around within the data rtructure.
button
A BRIEF GL0SSARY 1.1
1
A BRIEF GLOssAny
(1) (n.) Akeyonamouse.
(2) (v.t.) To depress one of the mouse keys when making a selection.
EAR A function that returns the head or firrt element of a list. See
CDR.
caret The small blinking arrowhead that marks where tert will appear
when it is typed in from the keyboard. An example of the caret
in the lnterIis~D Executive Window is shown in Figure 1.2.
NIL
B6+(PLus 3A
Figurù lJ. Me caret is to the right of the numher 3. When a characters frped
atthe keylsoard. it will ap~ar at the caret
CDR A function that returns the tail (that is, everything but the first
element) ofa list SeeEAR.
CLlSP A mechanism for augmenting the standard Lisp syntax. One such
augmentation included in Interlisp is the iterative rtatement.
SeeSection 13.1.
cr Please press your carriage return key.
datatype
(1) The kind of a datum. In Interlisp, there are many SystemAefine~
datatypes e.g. Floating Point, Integer, Atom, etc.
(2) A datatype can also be user~efined. In this case it is like a record
made up from system types and other user-defined datatypes.
DWlM D~whatùl-mean. Many errors made by Interlisp users could be
corrected without any information about the purpose of the
program or expression in question (e.g. misspellings, certain
kinds of parenthesis errort). The DWlM facility is called
automatically whenever an error occurt in the evaluation of an
Interlisp expression. If DWlM is able to make a correction, the
computation continues as though no error had occurred;
otherwise, the standard error mechanism is invoked.
error Occasionally, while a program is running, an error may occur
which will stop the computation. Interlisp provides ertensive
facilities for detecting and handling error conditions, to enable
the testing, debugging, and revising of impertect programs.
evaluate or EVAL Means to flnd the value of a form. For example, if the variable X
is bound to 5, we get 5 by evaluating X. Evaluation of a Interlisp
function involves evaluating thù arguments and then applying
thùfunction.
file packagù A set of functions and convùntions that facilitato thù
bookkeùping involved with working in i largù systùm consisting
of many sourcù codù files and thùir compiled countùrparts.
Essentially, thù fllù packagù k:ps track of whùrù things arù and
1,
AùR1EFGLos~y
l
A ùRlœF GLoSSARY
whet things hevo chonged. N 4150 kaps trùck of which files hove
been modifiod end n#d to be updetod end recompiled.
form Another wey of seying ~xpre5sion. An Jntorlisp-D ex~on
tbetcen be evaluated.
function A Lisp function is e piece of l;sp code thet executes end returns e
veiue.
history The progremmerùs essistent is l,uilt eround e memory structure
celled the hirtory Iirt. The hirtory functions (e.g. FIX, UNDO,
REDO) ere part of this essirtant. These operations allow you to
conveniently r~work previously specifiecl operations.
History List As you type on the xreen, you will notice a number followecl by
a prompt attow. Each number, and the information on that line,
is seeluentially rtored as the History List Using the History List,
you can easily reexecute lines typed earlier in a worksession. See
Chapter6.
icon A pictorial representation, usually of shrunken window.
lnterlis~D Executive Window This is your main window, where you will run functions and
develop your programs. See Figure 1.3. This is the window that
the caret is in when you turn on your machine and load
lnterlis~D.
NIL
8~#iPRO*PTPRIHT "HELLO" A
Fqurù tJ. m window
inspector An interactive display program for examining and changing the
parts of a data structure. Jnterlisp-D has inspectors for lists and
other data types.
iterative statement (also called i.s.) A statement in Interlisp that repetitively executes
abody of code. (E.g.(forxfromltosdo(PRlNTx))isani.s.)
iterative variable (also called i.v.) Usually, an iterative statement is controlled by
the value that the i.v. takes on. In the iterative statement
example above,
x
is the iterative variable leecause its value is being changed by
each cycle through the loop. All iterative variables are local to
the iterative rtatement where they are defined.
LISP Family of languages invented for "list processing." These
languages have in common a set of basic primitives for creating
and manipulating symbol rtructures. lnterlis~D is an
implementation of the LISP language together with an
environment (set of tools) for programming, an a set of packages
that ertend the functionality of the system.
list A collection of atoms and lists; a list is denoted by surrounding
its contents with a pair of parentheses.
A BRIEF GLOSSARY lJ
1
A BRIEF GLOSSARY
Loading LJSP This is the process of bringing lnterlis~D from floppy disks, hard
disks, or some other secondary rtorage into your main, or
working, memory. You will need to load (i.e., install, and boot)
lnterlis~D if you have not logged off the machine at the end of a
session. The process of loading lnterlis~D is explained in
Chapter3.
Maintenance Panel Codes Should you have a problem with your equipment, these codes
will indicate the status of your processor. On the 1108, these are
the red LED numbett under the floppy drive door. There is a
cover over these numbers. Pull down the cover located
immediately under the floppy door button. The code numbers
are defined for the 1108 in the 1108 Useri Guide, in the MP
Codeschapter.
If there is a problem with the 1186, the mouse curtor will change
from its normal arrow to the code number that describes the
problem. The code numbert are defined for the 1186 in the 1166
User's Guide in the Curtor Codes subsection of the Diagnostics
Chapter.
Marterscope A program analysis tool. When told to analyze a program,
Masterscope creates a data base of information about the
program. In particular, Marterscope knows which functions call
other functions and which functions use which variables.
Masterscope can then answer questions about the program and
display the information with a browser.
menu A way of graphically presenting the user with a set of options.
There are twO kinds of menus: p0~up menus are created when
needed and disappear after an item has been selected;
permanent menus remain on the screen after use.
mouse The Mouse is the box to the right of your keyboard. It controls
the movement of the cursor on your screen. As you become
familiar with the mouse, you will find it much quicker to use the
mouse than the keyboard. See Figure 1.4. (Note: Some mice
have three buttons; the button in the center is known as the
middle mouse button. If your mouse has only two buttons, you
can simulate a middle button by pressing the left and right
buttons simultaneously.).
Fw- 1.& Mousù
Mouse Curtor The small arrow on the screen that points to the northwest. See
Figure 1.5.
F~m I.L Mousù c~~~
Mousù Curtor Icons
I.A A llEF GLos~Y
l
A IRlEF GLOSSARY
I Wait Tho processor is busy.
The processor is saving a anpashot or your cureent system session.
This is usually donù when tbc procffssor hos ~n idle for a while.
The "Mouse Confirm Cursor". It appeatt when you have to
confirm that the choice you just made was correct. If it was, press
the left button. If the choice was not tight, press the right
button to abort.
F='*x This means "sweep out" the shape of the window. To do this,
move the mouse to a position where you want a corner. Press
the leff mouse button, and hold it down. Move the mouse
diagonally to sketch a rectangle. When the rectangle is the
desired size and shape, release the left button.
r-'l
l
l
l
l
- This is the "move window" prompt. Move the mouse so that the
large "ghost" rectangle is in the position where you want the
window. When you click the left mouse button, the window will
appear at this new location.
NIL NIL is the lnterlis~D symbol for the empty list h can also be
represented by a lefl paren followed by a right paren: (). It is the
only expression in lnterIis~D that is both an atom and a list
pixel Pixel rtands for PIcture Element. The xreen of your Lisp Machine
is made up of a rectangular array of pixels. Each pixel
corresponds to one bit When a bit is turned on, i.e. set to 1, the
pixel on the screen represented by this bit is black.
pretty printing Pretty printing refers to the way lnterIis~D functions are printed
with special indentation, to make them easier to read. Functions
are pretty printed in the structure eclitor, DEdit (See Section 11.3,
Page 11.4). You can pretty print uncompiled functions by calling
the function PP with the function you would like to see as an
argument, i.e. (PP tunction-name). For an example of this, see
Figure 1.6.
96.(PP HEAD)
[LANBDA (LST) <øù6rtùG; `ù~JlinH13;3&ù)
(CAR LsTJ)
(HEAD)
97.'
Fbm 1.6. An oxam~ u~oftho pro printing `unmon FP
A BRIEF GLOSSARY 1.5
I
A BRIEF GLOSSARY
Programmer's Assistant The programmer's assistant accesses the History List to allow you
to FIX, UlOO, and'or REDO your previous expressions typed to
the lnterlis~D executive window. (See Chapter 6.)
Promptwindow The skinny black window at the top of the xreen. It displays
system prompts, or prompts you have developed. (See Figure
1.7.)
Fqurù 1.7. Prompt window
property list A list of the form ( <property-namel> <property-valuel>
<property-name2> <property-value2> ....) associated with
an atom. It accessed by the functions GETPROP and PUTPR0P.
record A record is a data-structure that consists of named "flelds".
Accessing elements of a record can be separated from the details
of how the data structure is actually stored. This eliminates
many programming details. A record definition establishes a
record template, describing the form of a record. A record
instance is an actual record storing data according to a particular
record template. (See datatype, second definition.)
Right Button Default Window Menu This is the menu that appeaff when the mouse is in a window,
and the right mouse button is pressed. It looks like the menu in
Figure 1.8. If this menu does not appear when you depress the
right button of the mouse and the mouse is in the window, move
the mouse so that it is pointing to the title bar of the window,
and press the right button.
Clone
Snap
Paint
Clear
8ury
Redi~play
Hardcopy~
Move
Shapo
Shrink
f~a 1.1. ttù Right Sutton DqfaultWindow Menu
5-expression Short for "symbolic expression." In Lisp, this refers to any
well-formed collection of leff parffns, atoms, and right parens.
stack A pushdown lirt Whenever a function is entered, information
about that specific function call is pushed onto (i.e. added to the
front ofi the stack; this information includes the variable names
and their values associated with the function call. When the
function is exitted, that data is popped off the stack.
storagù devices Information is rtored for your Lisp machine on floppy disks, or on
the hard disk. They are referred to as (FLOPPY) and (DSK)
respectivùly.
sysout A fllù containing G wl'0lù Lisp environmùnt: namely, lnterlis~O,
evùrything thù user' dùfinecl or loaded into the environment, thù
1.6 A ~N:EF GL0SsARY
I
A BRIEF GLOSSARY
windows that ùppeored on tho Kreen, tbù ùmount of memory
used, and 50 on. Evorything ;s rtorùd in thù sysout filù exactly .5 it
was whon tho function SYSWT was called).
TFACE A function that crùates a trace of the execution of another
function. Eich time the traced function is called, it prints out the
values of the arguments it was called with, and prints out the
value it returns upon completion.
Unbound Without value; an atom is unbound if a value has never been
assigned to it
window A rectangular area of the screen that acts as the main display
area for some Interlisp process,
A BRIEF GLOSSARY 1.7
1
----- Next Message -----
Date: 19 Dec 91 14:42 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.144256pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11642>; Thu, 19 Dec 1991 14:43:07 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 14:42:56 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
6. TYPING SHORTCUTS
Once you have logged it, as per Chapters 3 or 4, you are in
lnterlis~D. The functions you type into the Interlisp-D executive
window will now execute, that is, perform the designated task.
Please note that Interlisp-D is case-sensitive; offen it matters
whether text is typed in capital- or lower-case letters. The
shifflock key is above the left shift key; when it is pressed (on the
1186, the red LED will be on; on the 1108, the key will be
depressed), everything typed is in capital letters.
You must type all Interlisp-D functions in parentheses. The
lnterlis~D interpreter wtll read from the leff parenthesis to the
closing right parenthesis to determine both the function you
want to execute, and the arguments to that function. Executing
this function is called evaluation. When the function is
evaluated it returns a value, which is then printed in the
lnterlis~D executive window. This entire process is called the
read-eval-print loop, and is how most Ll5P interpreters, including
the one for lnterlis~D, run.
The prompt in Interlis~D is a number followed by a left pointing
arrow (see Figure 6.3). This number is the function's position on
the History List -- a list that stores your interactions with the
lnterlis~D interpreter. Type the function (PLUS 3 4), and
notice the number the History List assigns to the function (the
number immediately to the leff of the arrow). lnterlis~D reads
in the function and its arguments, evaluates the function, then
prints the number 7.
In addition to this read-eval-print loop, there is also a
programmer's assistantùù. It is the programmer's assistant that
prints the number as part of the prompt in the lnterlis~D
executive window, and uses these numbers to reference the
function calls typed after them.
When you issue commands to the programmer's assistant, you
will not use parentheses as you do with ordinary function calls.
You simply type the command, and some specification that
indicates which item on the history list the command refers to.
Some programmer's assistant commands are FIX, REDO, and
UNDO. They are explained in detail below.
Programmer's assistant commands are useful only at the
lnterlis~D top level, that is, when you are typing into the
lnterlis~D executive window. They will not work in user-defined
functions.
As an example use of the programmer's assistant, use REDO to
redo your function call (PLUS 3 4). Type REDO (Note:
programmer's assistant commands can be typed in either upper
TYPING 5H0RTCUTS 6 1
TYPING SHORTCUTS
or lower case) at the prompt, then specify the previous
expression in one of the following ways:
(1) When you originally typed in tne function you now want to refer
to, there was a History List number to the left of the arrow in the
prompt. Type this number affer the programmer's assistant
command. This is the method illustrated in the following figure:
iPLUe~ 3 4)
Cù'5~REOO `24
7
26-','
, , , . . , . , . . . . . . . , . . . . , , ,
, .
Figure 6.1. Using the programrner's assistant to REDO a function, when you
know the its number on the history list
(2) A negative number will specily the function call typed in that
number of prompts ago. in this example, you would type in-I,
the position immediately before the current position. This is
shown in the following figure:
`2ø~.(PLUS :3 j)
;;;;
`-,7'
ii, ~` F.EDS -i
7
:ù`0~.
,
, , , , ,: , , :, , ,:, , , , , , ;, : , , , ,; , ,
Figurù 6.2. Typing a negative number affer the programmer's assistant
command will cause it use the function found on the History List that many
positions before the current one.
(3) You can also specify the function for the programmer's assistant
with one of the items that was in that function call. The
programmer's assistant will se'rch backwards in the History List,
and use the first function it finds that includes that item. For
example, type REDO PLUS to have the function (PLUS 3 4)
reevaluated.
(4) If you type a Programmer's Assistant command without
specifying a function (i.e., simply typing the command, then a cr)
the Programmer's Assistant executes the command using the
function entered at the previous prompt.
Here are a few more examples of using the programmer's
assistant:
G.a TYPING SHORrCUff
1
TYPING SH0RTCUTS
NIL
54k[PLUS 4 5)
9
55~REDO
9
56#??
54 +(PLUC~ 4 5)
9
56~(SETQ B `80Y)
BOY
5'~B
BOY
59" UNDO cETQ
SETQ undone.
59'.B
UN8OUND nTOM
B
SBkREDO 56
BOY
6IkB
BOY
62#
Fqùurù 6.3. Some Applications of the Programmer's Assistant
6.1 If you make a Mistake
Editing in the Interlisp-D Executive Window is explained in
Section 11.2, Page 11.2. In this section, only a few of the most
useful commands will be repeated.
To move the caret to a new place in the command being typed,
point the mouse cursor at the appropriate position, and press the
leff mouse button.
To move the caret back to the end of the command being typed,
press CONTROL-X. (Hold the CONTROL key down, and type ù.X.'.)
The way you choose to delete an error may depend on the
amount you need to remove. To delete:
The character behind the caret simply press the backspace key
The word behind the caret press CONTROL-W. (Hold the CONTROL key down, and rype
`ùW'ù.)
Any part of the command, first move the caret to the appropriate place in the command.
Hold the right mouse button down and move the mouse cursor
over the ten. All of the blackened tert between the caret and
mouse cursor is deleted when you release the right mouse
button.
TYPING SHORTCUTS 63
IF YOU MAKE A MISTAKE
The entire command press CONTROL-U. (Hold the CONTROL key down, and type in".)
Deletions can be undone. Just press the UNDO key.
To add more text to the line, move the caret to the appropriate
position, and just type. Whatever you type will appear at the
caret.
6.4 TYPING SHORTcUTS
----- Next Message -----
Date: 19 Dec 91 14:48 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.144827pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11544>; Thu, 19 Dec 1991 14:48:38 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 14:48:27 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
7. USING MENUS
The purpose of this chapter is to show you how to use menus.
Many things can be done more easily using menus, and there are
many different menus provided in the Interlisp-D environment.
Some are "po~up" menus, that are only available until a
selection is made, then disappear until they are needed again.
An example of one of these is the "background menu", that
appears when the mouse is not in any window and the right
mouse button is pressed. A background menu is shown in Figure
7.1. Yours may have different items in it.
SkGtL'h
LUop3 Icon
CHAT
F.lle0ro~er
sav"VM
5nap
Figure 7.1. A hackground menu.
Another common pop-up menu is the right button default
window menu. This menu is explained more in Section 10.4,
Page 10.3.
Other menus are more permanent, such as the menu that is
always available for use with the Interlisp-D Filebrowser. This
menu is shown in figure Figure 7.2, and the specifics of its use
with the filebrowser is explained in Chapter 9).
Dnjelsta
Rcname
Hor~'UpJ
-=`ffl.e
Compil'.
E~prnnge
Recrjm Ut.fl,L'
Figure 7.2. The menu that is available when using the Filehrowser
USING MENUS 71
I
MAKING A SELEcTION FROM A MENU
7.1 Making a Selection from a Menu
To make a selection from a menu, point with the inouse to the
item you would like to selert If one of the moU5e buttons is
already pressed, the menu item 5hould blacken. If it is a
permanent menu, you must press the leff mouse button to
blacken the item. When you release the button, the item will be
chosen. Figure 7.3 shows a menu with the item "Undo" chosen.
ù ù1
.lffer
Bpfor',
GeIer~,
Replace
`witch
(
`3 LIt.
Find
`=w~
pcpflnt
Edt
Edfl-Um
0~ik
Eva
E.xit
Figure 73. A menu with the item "Undo" chosen
7.2 Explanations of Men.u Items
Many menu items have explanations associated with them. If
you are not sure what the consequences of choosing a particular
menu item will be, blacken the menu item, and do not release
the leff button. If the menu item has an explanation associated
with it, the explanation will be printed in the prompt window.
Figure 7.4 shows the explanation associated with the item
"Snap" from the background menu.
ile0row~or
Flguvù 7.& The explanation associated with the cliosen item, Snip, is
displayed in the prom pt window.
7.2 USING NENuS
I
SUBMENUS
7.3 Submenus
Some menus items have submenus associated witl, them. This
means that, for these items, you can make even more precise
choices if you would like to.
A submenu can slso be found in one of two ways. One is to point
to the item with the mouse cuttor, and press the middle mouse
button. If there is a submenu associated with that item, it will
appear. (See Figure 7.5.)
ùl
Atter
8e?are
DoloCe
Replace
Yvitch
`ut
l)nda
Find
cap
Repnnt
Edit
EditL'om
Break
Eva OK
TOP
FigurQ 7.5. The submenu associated with the menu item Exit It appeared when
the mouse curtor Pointed to the menu item. and the middle mouse button was
pressed.
A submenu can be indicated by a gray arrow to the right of the
menu item, like the one to the right of the "Hardcopy'ù choice in
Figure 7.1. To see the submenu, blacken the menu item, and
move the mouse to follow the arrow. An example of this is
shown in Figure 7.6. Choosing an item from a submenu is done
in the same way as choosing an item from the menu. Any
submenus that might be associated with the items in the
submenu are indicated in the same way as the submenus
associated with the items in the menu.
Dnclelete .~ .
Copy
Rename
Harjcopv
.=.ee ~~e~;
Loa.d c'.Ee!T.:
E,puni~e
P',com Ll!eù
Figure 7.6. The submenu associated with the menu item Edit - It appeared when
the menu item was blackened, and the mou>e was moved (0 follow the gray
arrow.
In summary, here are a few rules of thumb to rerrember about
the interactions of the mouse, and system menus:
ù Press the leff mouse button to select an item of a menu
ù Press the middle mouse button to get more options - one of the
ways to find a submenu
USING MENUS 73
SUBMENU5
ù Press the right mouse button to see the default right button
window menu, and the background menu
7.4 usiNG MENUS
----- Next Message -----
Date: 19 Dec 91 14:56 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.145658pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11659>; Thu, 19 Dec 1991 14:57:09 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 14:56:58 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
8. MOW TO USE FILES
8.1 Types of Files
A program file, or lisp file, contains a series of expressions that
can be read and evaluated by the lnterlis~D interpreter. These
expressions can include function or macro definitions, variables
and their values, properties of variables, and soon. How to save
Interlisp-D expressions on these files is explained in Section 11.6,
Page 11.7. Loading a file is explained below, in Section 8.6, Page
8.4.
Not all files, however, have lnterlis~D expressions stored on
them. For example, TEdit files (see Chapter 23) store tert;
sketches are stored on files made with the package Sketch (see
Chapter 35), or can be incorporated into TEdit files. These files
are not loaded directly into the environment, but are accessed
with the package used to create them, such as TEdit or Sketch.
When you name a file, there are conventions that you should
follow. These conventions allow you to tell the type of a file by
the extension to its name. If a file contains:
Interlisp-D expressions, it should not have an extension. For example, a file called
"MYCODE" should contain lnterlis~D expressions;
compiled code, it should have the extension" .DCOM'ù. For example, a file called
`ùMYCODE.DCOM" should contain compiled code;
a Sketch, then its extension should be ".SKETCHùù. For example, a file
called ù`MOUNTAlNS.SKETCH" should contain a Sketch;
text, it should have the extension ".TEDlTù'. For example, a file called
`ùREPORT.TEDlT'ù should contain text that can be edited with the
editor TEDlT.
8.2 Directories
This section focuses on how you can find files, and how you can
easily manipulate files. To see all the files listed on a device, use
the function DIR. For example, to see what files are stored on
the Y;ard disk, type
(DIR (DSK))
HOW TO USE FILES B1
DlRœG0R1E5
To see what files are stored on the floppy disk inside of the
floppy drive, type
(DIR (FLOPPY))
Partial directory listings can be gotten by specifying a file name,
rather than just a device name. The wildcard "ù`ù can be used to
match any number of unknown characters. For example, the
command
(DIR (DSK)Tù)
will list the names of all files stored on the hard disk that begin
with the letter T. An example using the wildcard is shown in
Figure 8.1
`DIR `(P\h',(LI'.\PFILœ.'.'PRIMER~T';l
`LPQh/''.LI."'l FILE.C\,'PRIMER\
Tsi'REF.>.TEP[1)2
T6LlClNT.TEDIT,1
FigurG 8.1. Using the function DIR with a wildcard
8.3 Directory Options
Various words can appear as extra arguments to the DIR
command. These words give you extra information about the
files.
(1) SIZE displays the size of each file in the directory. For example,
type
(DIR (DSK) SIZE)
(2) DATE displays the creation date of each file in the directory. An
example of this is shown in Figure 8.2
35~(DIR (DsxJ.<LI$PF1LEs>PRIMER~T* DATE)
CREATIDNOATE
(ùDSK)'LI5PFILES~PRIflER?
TA'1"REF~TEPlT;2 26-lun-R5 19:A,O:R2
TBLnrnNT.TEDIT;1 26-lun'66 ja:4R~ù?
3Lq~
. . . . . . : . . . . . . . . . . . .. . . . . . .. . . . .
Figure 8.2. An eximpie using thù dirùctory option DATE
(3) DEL deletes all tho files found by the directory command
G.a H0W TO USE FILES
SUùFlLE DlREO0RlES
8.4 Subfile Directories
Subfile directories are very helpful for orgonizing files. A set of
files that have a single purpose, for example all the external
documentation files for a system, can be grouped together into a
subfiledirectory.
To associate a subfile directory with a filename, simply include
the desired subfile directory as part of the name of the fileù
Subfile directories are specified after the device name and before
the simple filename. The first sibfile directory should be
between less-than and greater-than signs < >, with nested
subdirectory names only followed by a greater-than sign >ù For
example:
[DSK)<D1rùctory>SubOlmctory>SrnbSubDirùctor-y>.. .>fi1on~
8.5 To See What Files Are Loaded
If you type FILELST<CR>, the names of all the files you loaded
will display.
Type SYSFILES<CR>, to see what files are loaded to create the
SYSOUT.
8.6 Simple Commands for Manipulating Files
The following commands will work with the (FLOPPY) and other
devices, but have been shown with (DSK) for simplicityù
To have the contents of a file displayed in a window:
(SEE `[DSK)f11ùnrn)
To copy a file: (coPYFILE `[~)o1dfi1ùn~ `[DSF)ne,r,,ilonrn)
An example of this is shown in Figure 8.3
(sOPvFILE `T~0r,RœFc.TEDIT `PF;IMEFRùEFOù.TœDITJ
t'Dcxl,(.LIsPFILEs.PRIMœP.;ù.PRIMEP.fiEFs.TEDIT;1
Figure 8.3. An example of the use of the function COPYFILE
To delete a file: (DEl.FILœ `(~)fi1on~)
An example of this is shown in Figure 8.4.
ù ,, OELFILœ `L'AMPLE.TEPITJ
ù . \l.. I'PfILE;'."PRIMER?>AnPLE.TœPIT;1
FigureS.O. The function DELFlLE
To rename a file: (RENlEFILE ù(osK)oldftlùnrn `(rSF)ner,r11ùn~)
HOW TO USE FILES 83
1
SIMPLE COMMANDS FOR MANIPULATING FILES
"LOAD" a file: Files that contain Interlisp-D expressions can be loaded into the
environment. That means that the information on them is read,
evaluated, and incorporated into the Interlisp-D environment.
To load a file, type:
(LUG `[DSff)filenm)
When using these functions, always be sure to specify the full
filename, including subfile directories if appropriate.
8.7 Connecting to a Directory
Offen, each person or project has a subdirectory where their files
are stored. If this is your situation, you will want any files you
create to be put into this directory automatically. This means you
should "connect" to the directory.
CONK is the Interlisp-D form that connects you to a directory. For
example, COilKin the following figure:
- 1 l 11
29#(L'OtJN ``CDv~K1,.LIv"PFILES~\PP,IMER7IM\,!,I
t'OS'Y96)cLIy'PFILœCv;~PRIh1œR.~lM>
30#
Fqrnre 8.5. COflffeaing to the subdiredory "PRIMERs srnbsu~i'edory ,.lM"
connects you to the subsubdirectory iM, in the subdirectory
PRIMER, in the directory LlSPFlLES, on the device D5K. This
information, the device and the directory names down to the
subdirectory you want to be connected to, is called the "path" to
that subdirectory. co:: expects the path to a directory as an
argument.
Once you are connected to a directory, the command DIR will
assume that you want to see the files in that directory, or any of
its subdirectories.
Other commands that require a filename as an argument (e.g.,
SEE, above) will assume, if there is no path specified with the
filename, that the file is in the connected directory. This will
often save you typing.
8.8 File Version Numbers
Whe.n stored, each file name is followed by a semicolon and a
number.
fffILE.TEOIY;1
The number ii the vertion number of the file. This is the system's
way of protecting your files from being overwritten. Each time
the file is written, a new file is created with a vettion number one
8.1 HOW T0 us: FILES
FILE VERSION NUMBERS
greater than the lost. This now fle will hove everything from
your previous file, plus all of your changes.
In most cases, you can exclude the version number when
referencing the file. When the vertion is not specified, and there
is more that one vertion of the file on that particular directory,
the System generally uses your most recent version. An exception
is the function DELFILE, which deletes the oldest version (the
one with the lowest vertion number) if none is specified.
HOW TO USE FILES as
----- Next Message -----
Date: 19 Dec 91 15:03 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.150359pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11664>; Thu, 19 Dec 1991 15:04:10 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 15:03:59 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
tO.THOSE WONDERFUL WINDOWS!
A window is a designated area on the screen. Every rectangular
box on the screen is a window. While Interlisp-D supplies many
of the windows (such as the lnterlis~D executive window), you
may also create your own. Among other things, you will type,
draw pictures, and save portions of your screen with windows.
10.1 Windows provided by Interlisp-D
Two important windows are available as soon as you enter the
lnterlis~D environment. One is the lnterlis~D executive
window, the main window where you will run your functions. It
is the window that the caret is in when you turn on your
machine, and load lnterlis~D. It is shown in Figure 10.1.
Figure 10.1. Interlsp-D Executive Window
The other window that is open when you enter Interlisp-D is the
"Prompt Window". It is the long thin black window at the top of
the screen. It displays system prompts, or prompts you have
associated with your programs. (See Figure 10.2.)
Figure 10.2. Prompt Window
Other programs, such as the editors, also use windows. These
windows appear when the program starts to run, and close (no
longer appear on the screen) when the program is done running.
THOSE WONDERFUL WINDOWS' 101
CREATING A WINDOW
10.2 Creating a window
To create a new window, type: (CREATEil). The mouse cursor
will change, and have a small square attached to it. (See Figure
10.3.)
Figure 10.3. The mouse cursor asking you to sweep out a window
There may be a prompt in the prompt window to create a
window. Press and hold the leff mouse button. Move the mouse
around, and notice that it sweeps out a rectangle. When the
rectangle is the size that you'd like your window to be, release
the leff mouse button. More specific information about the
creation of windows, such as giving them titles and specifying
their size and position on the xreen when they are created, is
given in Section 27.1.2, Page 27.2.
10.3 The Right Button Default Window Menu
Position the cursor inside the window you just created, and press
and hold the right mouse button. A menu of commands should
appear (do not release the right button!), like the one in figure
10.4. To execute one of the commands on this menu, choose the
item. Making a choice from a menu is explained in Section 7.1,
Page 7.2.
clQ1,ù/
Pant
`[oar
Bury
RoJisplay
Hardsopy~
Movc
`5hape
shrink
Figurù 1O.& The Right Button Default Window Menu
As an example, select "Move" from this menu. The mouse cursor
will become a ghost window Oust an outline of a window, the
same size as the one you are moving), with a square attached to
one corner, like the one shown in Figure 10.5.
~l
~l
F~ure 10.1 Thù mousù cunor !or moving & window
Move the mousù around. The ghost window will follow. Click
the left mousù button to placù tho window in a new location.
10.1 TH0Sff w0NKQFUL WlH00~l
f
THE RIGHT 8Uff0N DEFAULT MN00~ MFNU
Choose "Shape", afid notice that you are prompted to sweep out
another window. Your original window will have the shape of
the window you sketch out.
10.4 An explanation of each menu item
The meaning of each right button default window menu item is
explained below:
Close removes the window from the screen;
Snap copies a portion of the screen into a new window;
Paint allows drawing in a window;
Clear cleart the window by erasing everything within the window
boundaries;
Bury puts the window beneath all other windows that overlap it;
Redisplay redisplays the window contents;
Hardcopy sends the contents of the window to a printer or to a flle;
Move allows the wi ndow to be moved toanew spot on the screen;
Shape repositions and/or reshapes the window;
Shrink reduces the window to a small black rectangle callecl an icon.
(See Figure 1O6.)
Figum lO.L An example icon
Expand changes an icon back to iB original window. Position the mouse
cursor on the icon, depress the right button, and select Expand.
Or, just button the icon with the middle mouse button.
These right-button default window menu selections are
available in most windows, including the lnterlis~D Executive
window. When the right button has other functions in a
window (as in an editor window), the right button default
window menu should be accessible by pressing the Right button
in the black border at the top of the window.
10.5 Scrollable Windows
Some windows in Interlisp-D are "scrollable". This means that
you can move the contents of the window up and down, or side
to side, to see anything that doesn't fit in the window.
Point the mouse curtor to the leff or bottom border of a
window. If the window is scrollable, a "scroll bar" will appear.
THOSE WONDERFlJL WINDOWS' 103
SCROLLABLE WINDOWS
The mouse cursor will change to a double headed arrow. (See
Figure 10.7.)
. 1 , 1
Figuro 10.7. The scrolJ bar of a scrollable window. The mouse cursor changes o
a double headed arrow.
The xroll bar represents the full contents of the window. The
example scroll bar is completely white because the window has
nothing in it When a part of the scroll bar is shaded, the amount
shaded represents the amount of the window's contents
currently shown. If everything is showing, the scroll bar will be
fully shaded. (See Figure 10.8.) The position of the shading is
also important. It represents the relationshi'p of the section
currently diplayed to the the full contents of the window. For
example, if the shaded section is at the bottom of the scroll bar,
you are looking at the end of the file.
1 ù .
The amount of :>hadin~ in
A::;:. the scroll bar represents
the amount of the rile
;>hown in the window. Most
of the file is visible.
Because the shading is at
the tap of the scroll bar,
you know you are looking
at the top of the file.
Figurù 10.1 Tho amount of shading in the scroll bar represents the amount of
the file shown in the window. Most of the file is visible. Because the shading sat
the top of the scroll bar. you know you are looking at the top of the file
When the scroll bar is visible, you can control the section of the
window's contents displayecl:
ù To move the contents higher in the window (scroll the contents
up in the window), press the leff button of the mouse, the
mouse cursor changes to look like this:
Fun 10.1. upward icrollinq cuttor.
The contents of the window will scroll up, making the line thit
the cursor is beside the topmost linù in the window.
10.4 THo$a ~HOERFUL~~w51
SCROLLASLE MN00~S
ù To move the contonts lower in the window (scroll the contents
ùùdown" in the window), press the right button of the mouse,
ond the mouse cursor changes to look like this:
Flgrnro 10.10. Oownwùrd scrollinq curtor
The contents of the window scroll down, moving the line that is
the topmost line in the window to beside the curtor.
ù To show a specific section of the window's contents, remember
that the scroll bar represents the full contents of the window.
Move the mouse curtor to the relative position of the section you
want to see (e.g., to the top of the scroll bar if you want to see
the top of the window's contents.). Press the middle button of
the mouse. The mouse cursor will look like this:
f'9ure 10.11. Proportional scrolling crnrtor.
When you release the middle mouse button, the window's
contents at that relative position will be displayed.
10.6 Other Window Functions
10.6.1 PROMPTPRlNT
Prints an expression to the black prompt window.
For example, type
(P~PTPRIKT ùTNIS SILL BE PRIKTED I* THE PAT UIKOoS')
The message will appear in the prompt window. (See Figure
10.12.)
1 . ù1 Il
43 lpROMPTPRINT `THIS WILL BE PRINTED IN THE
PROMPT WINDOW')
Flurf 10.12. PROMPTPRlNTing
THOSE WONDERFUL WINDOWS' 10.5
OTHER WINDOW FUNCTIONS
10.6.2 WHlCNW
Returns as a value the name of the window that the mouse
cursor IS in.
(VHICHW) can be used as an argument to any function
expecting a window, or to reclaim a window that has no name
(that is not attached to some particular part of the program.).
10.6 THOil wONOERFUL~N00vn'
----- Next Message -----
Date: 19 Dec 91 15:18 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.151815pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11655>; Thu, 19 Dec 1991 15:18:21 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 15:18:15 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
tl. œDlTUNG AND SAVING
This chapter explains how to define functions, how to edit them,
and how to save your work.
11.1 Defining Functions
DEFINEQ can be used to define new functions. The syntax for it
is:
(HFIffEQ (<tunctionname> (<parameterlist¯
c~y-offrnnction>j>
New functions can be created with DEFINEQ by ryping directly
into the lnterlis~D executive window. Once defined, a function
is a part of the lnterlis~D environment. For example, the
function EXANPLE-ADDER is defined in Figure 11.1.
-
HIL
46=(OEFINEQ (E.~AMPLE-rt"D&ER (~" B cJ
(PRINT `THE SUM OF THE
THREE NUMBERS Is ")
(IPLUS n" B CJJJ
(EXn~MPLE-~&DERj
47-
F1ure 11.1. Defining the function EXAMPLEùADDER
Now that the function is defined, it can be called from the
lnterlis~D executive window:
ù . -
NIL
49'. cEX~-MPLE-ffD&ER 3 4 `J;
"THE SUM OF THE THREE NljMBERS 15
12
c~g
Fq'rnre IIJ. After EXAMPLϝADDER is defined, it can he executed
The function returns 12, after printing out the message.
Functions can also be defined using the editor DEdit described
above. To do this, simply type
(DF furttiorvnamej
EDITING AND SAVING 111
1
DEFINING FUNCTIONS
You will be asked whether you would like to edit a Dummy
definition. A dummy definition is a standard template for your
function definition. Answer by typing Y for Yes, and you will be
able to define the function in the editor. (See Figure 11.3. The
use of the editor is explained in Section 11.3, Page 11.4.)
ù h.'1,flF PJœ~-HOT'E'['ùTi
ù Ho FH~., dean ;or oil NflT-Eùùù 1:-7, on ùoU Ui `;ùh ro ?dlr a `lu
60A "Flùù;:ùl
Figurn 11.1 Using DEdit to define a function
II _ 2 _ Simple _ Editing _ in _ the _ Interlisp-D _ Executive Window
First, type in an example function to edit:
51~(oEFIxEQ (Y~R-FIRST-fuKTIrn (A B)
(if (GREATERP A B
thùn TNE FIR T IS GREATER
elsù THE SECO*O IS 6REATE ))))
To run the function, type (YOUR-FIR$T-FUflcTIoa 3 5).
52~(Y~R-FIRST-Fu~TI: 3 5)
(TNE SEc~ Is GREATER)
Now, let's alter this. Type:
53~FIZ 51 cr
Notf that your original function is redisplayed, and ready to edit.
(SeeFigure 11.4.)
llJ EO1Y1~ AHO SAVING
r,
SIMPLE EDITING IN TNE INTERLISPùD EXECUTIVE WIND0W
NIL
53~FI~ 51
+(DEFINEQ
[YOUR-FIRST-FUNCTION
(A B) (ù edited;
"~1-Dec-GB 19;"8")
(IF (GREaTERPùA B)
THEN (QUOTE (THE FiRST Is
UREATERj)
ELSE (QUOTE (THE SECOND IS
u'RE~~TER] 1A
f~urù11.& Using FIX to editafundion
Move the tert cursor to the appropriate place in the function by
positioning the mouse cursor and pressing the Jeff mouse
button.
Delete text by moving the caret to the beginning of the section to be
deleted. Hold the right mouse button down and move the
mouse cursor over the text. All of the blackened text between
the caret and mouse cursor is deleted when you release the right
mouse button.
If you make a mistake deletions can be undone. On an 1108, press the OPEN key to.
UNDO the deletion. On an 1108, press the UNDO key on the
keypad to the Jeff of the keyboard.
Now changeGREATERtoBIGGER:
(1) Position the mouse cursor on the G of GREATER, and click the leff
mouse button. The text curtor is now where the mouse cursor 15.
(2) Next, press the right mouse button and hold it down. Notice
that if you move the mouse cursor around, it will blacken the
characters from the text cursor to the mouse cursor. Move the
mouse so that the word "GREATER" is blackened.
(3) Release the right mouse button and GREATER is deleted.
(4) Without moving the cursor, type in BIGGER.
(5) There are two ways to end the editing session and run the
function. One is to type CONTROL-X. (Hold the CONTROL key
down, and type "X".) Another is to move the text cursor to the
end of the line and crù In both cases, the function has been
edited!
Trythe new version of the function bytyping:
58~(Y~-FZRST-F~Tzrn 8 9)
(TNœ sEc~ Is BIKER)
and get the new result, or you can type:
5~RE00 52cr
(TNE SEc~ Is BIKER)
EDITING AND SAVING 11.3
USING THE LIST STRUaURE EDITOR
11.3 Using The List Structure Editor
If the function you want to edit is not readily available (i.e. the
function is not in the Interlisp-D Executive window, and you can't
remember the history list number, or you simply have a lot of
editing), use the List Structure Editor, offen called DEdit. This
editor is evoked with a call to OF:
81~(DF YWR-FIRST-f~TIa)
Your function will be displayed in an edit window, as in Figure
11.5.
If there is no edit window on the screen, you will be prompted to
create a window. As before, hold the leff mouse button down,
move the mouse until it forms a rectangle of an acceptable size
and shape, then release the button. Your function definition
will automatically appear in this edit window.
!L~nb&A IA Bj (* OJtfJ' ùù:ù1ùO:cw `~;`~``ù .~.tr~r
(IF 113'REATEPP A B'i EqV;r~
THEN iOùUUTE "THE ::.pù'.T f ~Ir,GER),l cl,,t'
ELSE 1~UUTE THE .=ùE.u'N& j:. eluh'ER;J)) 4ep~:c
/``tC.h
.
Un~io
Find
Rcorint
cit.
EOlfl/C T7~
Sr:ok
Eù.. y
E..t.
Figurù Il.L An Edit Window
Many changes are easily done with the structure editor. Notice
that by pressing the left mouse button, different expressions are
underlined. Underline BIGGER as in Figure 11.5. Release the left
mouse button.
To add an expression that doesn't appear in the edit window,
(i.e. it can't simply be underlined), just type it in. Doing this will
create an edit buffer below the DEdit window. For example,
type LARGER and hit crù (Remember to cr! You won't be able to
do anything in the editor until you cr - this can fool you at first,
so beware.) A new window opens up at the bottom for the new
expression. (See Figure 11.6.)
LARGER now has the bold line underneath it, while BIGGER has
a dotted line.
A
11.4 EDITING ~O ~VING
USING THE LIST STRUCTURE EDITOR
, LAMDOA VA B\ ~ù ùdltùd `ù3' ùOùc 00 l F;3Q'ù) ArtOr
VV (OREATERP A B) Befom
~ VQUOTE -THE FIRST Is 816OER)) cOIOtO
(15 (QUOTE VTHE SEL'ONO IS BIW~Ry,\.i Ropl&ce
witch
( )
y)out
Unoo
Find
wap
FQum Il.L Edit Window with Edit Buffer
DEdit keeps track of items you have chosen by Using a stack. The
underlines tell you the order of the items on the stack. The solid
underline indicates the item on the top of the stack; the dotted
underline indicates the second to the top. (liIGGER was pushed
on first. When LARGER was pushed on, BIGGER became the
second element in the "stack", and LARGER the first.)
Many commands operate with two items on the stack. Some of
them are listed below:
Atter pops the stack, and adds this top item (in this example, LARGER)
to the edit window affer the second item on the stack(in this
example, BIGGER). The item that was at the top of the stack,
LARGER, will now appear in both the original and the new
position.
Before pops the stack, and adds this top item (in this example, LARGER)
to the edit window before the second item on the stack. (See
Figure 11.7.)
(LAKBDA VA 8' C' oJ'lfG `3,-Oocù~ ~F;l.Oùù ,~rtOr
(IF VGREATERp A 8J E~'inre
~ (QUOTE (THE FIRST IS ~`R ,8ùIUGEP); cOlGte
ELI (QUOTE (THE SECOND IS 8I,ùb'E .j! ,1J F!Gplace
itch
r
tJut
Undo
Find
,=-.i,1r
P.O~rir,t
Eda
fiUre 11.7. The command Before is chosen; the word LARGER appean
Iefore the word BIGGER
Replace pops the stack, and substitutes this top item for the second item
on the stack.
Sat tch changes the position of the first and second items on the stack in
the edit window.
Find pops the stack, and searches this top expression for an occurance
of the second item on the stack. If the item is found, it is
underlined with a solid line, that is, pushed on the stack. To find
the next occurance, simply choose "Find" again. If the
expression is not found, the prompt window will blink, and a
EDITING AND SAVING 115
1
USING ~E LIST STRUCTURE EDITOR
ùspùc1ù11~ asùfa1 If yri ant to &pùcù ~r coùants)
There are other editor commands which can be very UsefUl. To
learn about them, read to the lntertis~D Reffrence Manual,
Volume 2, Section 16, on DEDIT.
it .4 _ File _ Functions and _ Variables - _ How to _ See Them _ and _ Save Them
With lnterlis~D, all work is done inside the "Lisp Environment".
There is no "Operating System" or "Command Level" other than
the lnterlis~D Executive Window. All functions and data
strUctures are defined and edited using normal Interlisp-D
commands. This sertion describes tools in the Interlisp-D
environment that will keep track of any changes that you make
in the environment that you have not yet saved on files, such as
defining new functions, changing the values of variables, or
adding new variables. And it then has you save the changes in a
file you specify.
11.5 File Variables
Certain system-defined global variables are used by the file
package to keep track of the environment as it stands. You can
get system information by checking the values of these variables.
Two important variables follow.
ù FILELST evaluates to a list, all files that yoU have loaded into
the lnteris~D environment.
ù filenameC0liS (Each file loaded into the Lisp environment has
associated with it a global variable, whose name is formed by
appending "COMS" to the end of the filename.) This variable
evaluates to a list of all the functions, variables, bitmaps,
windows, and soon, that are stored on that particular file.
For example, if you type:
~FILEC0*s
the system will respond with something like:
FKS YouR-FZRST-Fu*CTIil )
VARS))
11.6 Saving Interlisp-D on Files
The functions (FILES?) and (NAKEFILE `filename) are
useful when it is time to save function, variables, windows,
bitmaps, records and whatever else to files.
EDITING AND SAVING 117
I
USING THE LIST STRUCTURE EDITOR
message that the item was not found will appear. (See Figure
11.8 for an example of an item, the atom THIRD, not appearing
in the function, YOUR-FIRST-FUKCTION.
ù1
L.flFBo~P~ù~T\P _ B! (,`-.J'l-.J. _ .z' _ P..,n _ 1-
THEN `c1.lcTE _ `THE _ FIPT _ ~I.'i'.EP']
ELSE 1ùtlJlJTE _ HE _ `/E/l)MlD
TrtI,,,v Sr.i
El
ET.
Figwù 11.& The atom THIRD is not in the fundion being edited
Saap changes places, on the stack, of the first and second items on the
stack. The edit window does not change, except that the
expression that had a solid underline now has a dotted
underline, and vice versa.
Delete works on only the top item of the stack. Delete removes the
solid underlined expression from the edit window.
Undo undoes the last editor command.
Completing the example begun earlier, here's how to have the
word LARGER that you typed into the edit buffer appear in place
of the BIGGER that you selected from the DEdit window: select
the SWITCH command. Notice that the two items are switched,
and the stack is popped. Now select EXIT and to leave the
editor, and your function will again be redefined.
11.3.1 Commenting Fundions
Tert can be marked as a comment by nesting it in a set of
parentheses with a star immediately after the left parenthesis.
(ù This ii thù Von of ù c~rtt)
Inside an editor window, the comment will be printed in a
smaller font and may be moved to the far right of the code.
Sometimes, however, centered comments are more appropriate.
To center a comment, type ,, .... after the left parenthesis.
ù This co.oortt ù111 rtot bù rnd to thù ?ùr ri9ht of thù
co5où but ù111 bù cùrttùrd)
It is also possible to insert Iinebreaks within a comment. A dash
should be placed in the comment whcrevùr A carriagù return is
needed. Thii feoturù allows several commùnt1 to bù placed
insidù one S.t of pirùntheses.
(ù This coøoo.t ù111 h t~~ at. tùo 1iùos. -
11.6 FIrING AND LAYING
SAVING INTERLlSP-D ON FILES
(FILES?) displays a list of variables that have values and are not already a
part of any file, and then the functions that are not already part
of any file.
Type:
(FILES?)
the system will respond with something like:
tbù variables: ~.VARIlLE cURREKT.tuRTLE.. to be du;ed.
thù functions: RI6HT LEFT FOIAff liCK*Aa cLEAR-uREEil.. to
be d~~.
srit to s&y ùbere thù abovù go?
If you type Y, the system will prompt with each item. There are
three options:
(1) To save the item, type the filename (unquoted) of the file where
the item should be placed. (This can be a brand new file or an
existing file.)
(2) To skip the item, without removing it from consideration the
next time (FILES?) is called, type crù This will allow you to
postpone the decision about where to save the item.
(3) If the item should not be saved at all, type J. NoilhQ re will
appear afler the item.
Part of an example interaction is shown in the following figure:
HIL
u31~(FILES,)
Che variables: MY-'y'AR. To be di.imped.
the functions: MY-SEcuNO-FUtllJTIJN,
YJUP-FIPùoT'FUNi)TIJN
to be dumped.
want to say where the .ibove 30 ù? `ye'
(variables)
NY-VAR Nowhere
(runctions)
NY-SELrnNO-FUN&'TION File name: E;~AMPL~
F~11.9. Part of an interaction using the function FILES?
(FILES?) assembles the items by adding them to the
appropriate file's COMS variable. (See Section 11.5, Page 11.7.)
(FILES?) does NOT write the file to secondary storage (disks or
floppies). It only upclates the global variables discussed in
SectionIt.S.
(NAKEFILE `Tl lenaùe) actually writes the file to secondary storage. Files should only be
writen when the time is set. If the time is not set, you will run
into problems, such as not being able to copy your file. To check
the time, typù
(riTE)
If the date is correct, yoU can safely use IRE FILE. If it is riot
correct, set the time with the function SETTIKE. To use it, type
(SETTIKE date), where datù isa string such as the one shown
inFiguretl.10.
it.a Eomlflll ANC SAVING
I
SAVING INTERUSP~ ON FILES
NIL
97;k(SETTIME "10-Jul-86 15:08 2<8)
"i6-Jul-86 15;08:22 EDT"
98+
Fqùurn 11.10. Using the SETTIKE function to set the date and time
Once the time is set correctly, use the function MAKEFILE. Type:
(liffEFILE `P.FILE.~)
and the system will create the file. The function returns the full
name of the file created. (i.e. (DSK)MY.FlLE.NAME.; 1).
Note: Files written to (DSK) are permanent files. They can be
removed only by the user deleting them or by reformatting the
disk.
Other file manipulation functions can be found in Section 8.6,
Page 8.3.
EDITING AND SAVING 119
I
----- Next Message -----
Date: 19 Dec 91 15:20 PST
From: sybalsky:PARC:Xerox
To: sybalsky
Message-ID: <<91Dec19.152031pst.43009@origami.parc.xerox.com>.?::>
<----RFC822 headers-----
Received: from origami.parc.xerox.com ([13.1.100.224]) by alpha.xerox.com with SMTP id <11670>; Thu, 19 Dec 1991 15:20:42 PST
Received: by origami.parc.xerox.com id <43009>; Thu, 19 Dec 1991 15:20:31 -0800
From: John Sybalsky <sybalsky.PARC@xerox.com>
-----RFC822 headers---->
t3. FLEXIBILITY AND FORGIVENESS:
CLISP AND DWIM
CLlSP, (Conversational Lisp), and DWlM, (Do What Mean), are
two Interlisp utilities that make life easier.
13.1 CLlSP
CLlSP allows the machine to understand and execute commands
given in a non-standard way. For example, Figure 13.1 contains
an example expressi on (4 + 5).
NIL
b'4-iJ + 5;
9
85'
F9ure 13.1. cLlsP allows the use of infix notation
Without CLlSP, you would need to type this using the notation
(PLUS 4 5). CLlSP allows you to use expressions such as (4 +
5) for all arithmetic expressions.
CLlSP also allows you to use more readable forms inrtead of
standard Lisp control structures. Expressions like IF-THEN-ELSE
statements can replace COND statements. For example, instead
of:
(CIO 1J6RE(APLTUESRPBA B (PLUS A 10))
10
the following can be used:
(if (A ~ B) then (A + 10) else (B + 10))
The system translates this CLlSP code into Interlisp-D code.
Setting flags will allow you to either save the CLlSP code, or save
the translation. One such flag is CLISPIFTRANFLG; if it is set to
ffIL, all the IF statements will be replaced with the equivilent
CORD statements. This means that when you DEdit the function,
the IF will be removed and replaced with the CORD. Typically,
flags such as this one are set in your INlT file. These flags are
dixussed in the Intertlsp-D Reference Manual in Volume 2,
Section 21.
FLEXIBILITY AND FORGIVENESS. cLIsP AND DWIM 13 I
I
OWlM
13.2 DWlM
DWlM tries to match unrecognized variable and function names
to known ones. This allows Lisp to interpret minor typing errors
or misspellings in a function, without causing a break. Line 87 of
Figure 13.2 illustrates how the misspelled 0ANNANNA was
replaced by 8ANANA before the expression was evaluated.
NIL
a7(8ETQù 8~ùN.HA `FRUITj
FRUIT
38'8nNN,,~NNA
=8,,'H,,NA
FRUIT
39'
Figure 13.2. Examples of CLlSP and DWlM features
Sometimes DWlM may alter an expression you didn't want it to.
This may occur if, for example,a hyphenated function name (eg.
(NY-FUNCTION)) is misused. If the system doesn't recognize it,
it may think you are trying to subtract "FUN~lON" from "MY".
DWlM also takes the liberty of updating the function, so it will
have to be fixed. However, this is as much a blessing as a curse,
since it points out the misused expression!
13.2 F~1lUM AND ~ROVENES$: cub AND OWN
I
----- End Forwarded Messages -----
Figure 13.2. Examples of CLlSP and DWlM features
Sometimes DWlM may alter an expression you didn't want it to.
This may occur if, for example,a hyphenated function name (eg.
(NY-FUNCTION)) is misused. If the system doesn't recognize it,
it may think you are trying to subtract "FUN~lON" from "MY".
DWlM also takes the liberty of updating the function, so it will
have to be fixed. However, this is as much a blessing as a curse,
since it points out the misused expression!
13.2 F~1lUM AND ~ROVENES$: cub AND OWN
I
----- End Forwarded Messages -----

TIMESROMAN
VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8)))
E(