From 615885a0faf932e9623a18c5768f200381f4e293 Mon Sep 17 00:00:00 2001 From: Arun Welch Date: Sat, 12 Feb 2022 16:05:10 -0600 Subject: [PATCH] New version of IRM (#665) * New version of IRM New version of the IRM, updated to Medley. * moved to docs/medley-irm as discussed --- docs/medley-irm/001-TITLEPAGE.TEDIT | Bin 0 -> 3802 bytes docs/medley-irm/001-TITLEPAGE.pdf | Bin 0 -> 26855 bytes docs/medley-irm/003-TOC.TEDIT | 6 + docs/medley-irm/003-TOC.pdf | 1822 ++ docs/medley-irm/01-INTRO.TEDIT | Bin 0 -> 23114 bytes docs/medley-irm/01-INTRO.pdf | 1676 ++ docs/medley-irm/02-LITATOM.TEDIT | Bin 0 -> 50774 bytes docs/medley-irm/02-LITATOM.pdf | 6745 +++++ docs/medley-irm/03-lists.pdf | 10439 ++++++++ docs/medley-irm/04-STRINGS.TEDIT | 76 + docs/medley-irm/04-STRINGS.pdf | 3376 +++ docs/medley-irm/05-ARRAY.TEDIT | Bin 0 -> 8020 bytes docs/medley-irm/05-ARRAY.pdf | 1222 + docs/medley-irm/06-HASHARRAYS.TEDIT | 79 + docs/medley-irm/06-HASHARRAYS.pdf | 2330 ++ docs/medley-irm/07-NUMBERS.TEDIT | 569 + docs/medley-irm/07-NUMBERS.pdf | 7850 ++++++ docs/medley-irm/08-RECORDPACKAGE.TEDIT | Bin 0 -> 70502 bytes docs/medley-irm/08-RECORDPACKAGE.pdf | 8883 +++++++ docs/medley-irm/09-conditionals.TEDIT | 105 + docs/medley-irm/09-conditionals.pdf | 10945 ++++++++ docs/medley-irm/10-FUNC-DEF.TEDIT | 1177 + docs/medley-irm/10-FUNC-DEF.pdf | 11995 +++++++++ docs/medley-irm/11-VAR-BINDINGS.TEDIT | 142 + docs/medley-irm/11-VAR-BINDINGS.pdf | 8234 ++++++ docs/medley-irm/12-MISC.TEDIT | Bin 0 -> 81935 bytes docs/medley-irm/12-MISC.pdf | 8726 +++++++ docs/medley-irm/13-EXECUTIVE.TEDIT | Bin 0 -> 143493 bytes docs/medley-irm/13-EXECUTIVE.pdf | 9723 +++++++ docs/medley-irm/14-ERRORS.TEDIT | Bin 0 -> 104096 bytes docs/medley-irm/14-ERRORS.pdf | 11885 +++++++++ docs/medley-irm/15-BREAKING.TEDIT | Bin 0 -> 47488 bytes docs/medley-irm/15-BREAKING.pdf | 7042 +++++ docs/medley-irm/16-SEDIT.TEDIT | Bin 0 -> 244141 bytes docs/medley-irm/16-SEDIT.pdf | 28838 +++++++++++++++++++++ docs/medley-irm/17-FILEPACKAGE.TEDIT | 239 + docs/medley-irm/17-FILEPACKAGE.pdf | 27712 ++++++++++++++++++++ docs/medley-irm/18-COMPILER.TEDIT | 116 + docs/medley-irm/18-COMPILER.pdf | 10517 ++++++++ docs/medley-irm/19-DWIM.TEDIT | 119 + docs/medley-irm/19-DWIM.pdf | 11689 +++++++++ docs/medley-irm/20-CLISP.TEDIT | 107 + docs/medley-irm/20-CLISP.pdf | 13584 ++++++++++ docs/medley-irm/21-PERFORMANCE.TEDIT | 57 + docs/medley-irm/21-PERFORMANCE.pdf | 4698 ++++ docs/medley-irm/22-PERFORMANCE.TEDIT | 64 + docs/medley-irm/22-PERFORMANCE.pdf | 4150 +++ docs/medley-irm/22-PROCESSES.TEDIT | Bin 0 -> 66599 bytes docs/medley-irm/22-PROCESSES.pdf | 6969 +++++ docs/medley-irm/23-PROCESSES.TEDIT | Bin 0 -> 64295 bytes docs/medley-irm/23-PROCESSES.pdf | 5570 ++++ docs/medley-irm/23-SSTREAMS.TEDIT | Bin 0 -> 91563 bytes docs/medley-irm/23-SSTREAMS.pdf | 10232 ++++++++ docs/medley-irm/23-STREAMS.TEDIT | Bin 0 -> 134830 bytes docs/medley-irm/23-STREAMS.pdf | 14529 +++++++++++ docs/medley-irm/24-IO.TEDIT | 141 + docs/medley-irm/24-IO.pdf | 19565 ++++++++++++++ docs/medley-irm/25-USERIO-PACKAGES.TEDIT | Bin 0 -> 159972 bytes docs/medley-irm/25-USERIO-PACKAGES.pdf | 17949 +++++++++++++ docs/medley-irm/26-GRAPHICS.TEDIT | 301 + docs/medley-irm/26-GRAPHICS.pdf | 20133 ++++++++++++++ docs/medley-irm/27-WINDOWS.TEDIT | Bin 0 -> 287664 bytes docs/medley-irm/27-WINDOWS.pdf | 27263 +++++++++++++++++++ docs/medley-irm/28-HARDCOPY.TEDIT | 27 + docs/medley-irm/28-HARDCOPY.pdf | 2396 ++ docs/medley-irm/29-TERMINAL.TEDIT | Bin 0 -> 82191 bytes docs/medley-irm/29-TERMINAL.pdf | 10209 ++++++++ 67 files changed, 352221 insertions(+) create mode 100644 docs/medley-irm/001-TITLEPAGE.TEDIT create mode 100644 docs/medley-irm/001-TITLEPAGE.pdf create mode 100644 docs/medley-irm/003-TOC.TEDIT create mode 100644 docs/medley-irm/003-TOC.pdf create mode 100644 docs/medley-irm/01-INTRO.TEDIT create mode 100644 docs/medley-irm/01-INTRO.pdf create mode 100644 docs/medley-irm/02-LITATOM.TEDIT create mode 100644 docs/medley-irm/02-LITATOM.pdf create mode 100644 docs/medley-irm/03-lists.pdf create mode 100644 docs/medley-irm/04-STRINGS.TEDIT create mode 100644 docs/medley-irm/04-STRINGS.pdf create mode 100644 docs/medley-irm/05-ARRAY.TEDIT create mode 100644 docs/medley-irm/05-ARRAY.pdf create mode 100644 docs/medley-irm/06-HASHARRAYS.TEDIT create mode 100644 docs/medley-irm/06-HASHARRAYS.pdf create mode 100644 docs/medley-irm/07-NUMBERS.TEDIT create mode 100644 docs/medley-irm/07-NUMBERS.pdf create mode 100644 docs/medley-irm/08-RECORDPACKAGE.TEDIT create mode 100644 docs/medley-irm/08-RECORDPACKAGE.pdf create mode 100644 docs/medley-irm/09-conditionals.TEDIT create mode 100644 docs/medley-irm/09-conditionals.pdf create mode 100644 docs/medley-irm/10-FUNC-DEF.TEDIT create mode 100644 docs/medley-irm/10-FUNC-DEF.pdf create mode 100644 docs/medley-irm/11-VAR-BINDINGS.TEDIT create mode 100644 docs/medley-irm/11-VAR-BINDINGS.pdf create mode 100644 docs/medley-irm/12-MISC.TEDIT create mode 100644 docs/medley-irm/12-MISC.pdf create mode 100644 docs/medley-irm/13-EXECUTIVE.TEDIT create mode 100644 docs/medley-irm/13-EXECUTIVE.pdf create mode 100644 docs/medley-irm/14-ERRORS.TEDIT create mode 100644 docs/medley-irm/14-ERRORS.pdf create mode 100644 docs/medley-irm/15-BREAKING.TEDIT create mode 100644 docs/medley-irm/15-BREAKING.pdf create mode 100644 docs/medley-irm/16-SEDIT.TEDIT create mode 100644 docs/medley-irm/16-SEDIT.pdf create mode 100644 docs/medley-irm/17-FILEPACKAGE.TEDIT create mode 100644 docs/medley-irm/17-FILEPACKAGE.pdf create mode 100644 docs/medley-irm/18-COMPILER.TEDIT create mode 100644 docs/medley-irm/18-COMPILER.pdf create mode 100644 docs/medley-irm/19-DWIM.TEDIT create mode 100644 docs/medley-irm/19-DWIM.pdf create mode 100644 docs/medley-irm/20-CLISP.TEDIT create mode 100644 docs/medley-irm/20-CLISP.pdf create mode 100644 docs/medley-irm/21-PERFORMANCE.TEDIT create mode 100644 docs/medley-irm/21-PERFORMANCE.pdf create mode 100644 docs/medley-irm/22-PERFORMANCE.TEDIT create mode 100644 docs/medley-irm/22-PERFORMANCE.pdf create mode 100644 docs/medley-irm/22-PROCESSES.TEDIT create mode 100644 docs/medley-irm/22-PROCESSES.pdf create mode 100644 docs/medley-irm/23-PROCESSES.TEDIT create mode 100644 docs/medley-irm/23-PROCESSES.pdf create mode 100644 docs/medley-irm/23-SSTREAMS.TEDIT create mode 100644 docs/medley-irm/23-SSTREAMS.pdf create mode 100644 docs/medley-irm/23-STREAMS.TEDIT create mode 100644 docs/medley-irm/23-STREAMS.pdf create mode 100644 docs/medley-irm/24-IO.TEDIT create mode 100644 docs/medley-irm/24-IO.pdf create mode 100644 docs/medley-irm/25-USERIO-PACKAGES.TEDIT create mode 100644 docs/medley-irm/25-USERIO-PACKAGES.pdf create mode 100644 docs/medley-irm/26-GRAPHICS.TEDIT create mode 100644 docs/medley-irm/26-GRAPHICS.pdf create mode 100644 docs/medley-irm/27-WINDOWS.TEDIT create mode 100644 docs/medley-irm/27-WINDOWS.pdf create mode 100644 docs/medley-irm/28-HARDCOPY.TEDIT create mode 100644 docs/medley-irm/28-HARDCOPY.pdf create mode 100644 docs/medley-irm/29-TERMINAL.TEDIT create mode 100644 docs/medley-irm/29-TERMINAL.pdf diff --git a/docs/medley-irm/001-TITLEPAGE.TEDIT b/docs/medley-irm/001-TITLEPAGE.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..598f5fb005fb9e3bec33a2c16718368a081db9db GIT binary patch literal 3802 zcmeHJ&2HO95T@k(xdAV25)?fRa*_&1kQ7O=k`pbjEFu)Cl9UtYMw2Ux4NVHmRUGxy z7bwtUpQTTbYta|#%u=c)*$H3+?WHAbYIpXVnQyob?xJq83qXhYYHC=xu+A|*-Kry>*JgYILyL1Ed(;oQoYe` zb-_%dc`ij9B;aO2qIA7#1p zLJ`ko5mWH9IL8n?+6-?**(nEafotbEiWb(^_AwKg`C1cC!Po{0bhMsYq%f(3#whJu8G^K=jLc{qh2hd9hqtVpiRD>x)s z_8zT4ifl1%62IrQqC7rM<8+b<a$o+@Kf9n$`Wx( z$kTj|0ubvU4Cf*U7gWU!j(bH>F;$LTnlTy>G@EpjOYy8rUf_}G1oKS zF|at26wr4p(=qM70~NzH4$K}reTsk8DpcxFhfbpjFS<>fRTOd+#WgI)dF?^vhp}-8 zu6Z=@tI!)5?$YdyDNoNeM?OX|?PJq34=e^wzYiX>SkE6}R$t9WuH&PD9TuxZt_yu* zXj&)Wn?vTg4xV>#j+twj_A-X=ny;BNE+UNW!?iW`c4XL|>DYK}9gQu+1r&{1EK6~pc zt(5BR7A`@nz7OqIy?~Iw|8!X_*8lHTrG8CS2Fy4#?W3ZJmlOX4TZ5E3FnX`CDBX@~ z`gWu9*>W~8Hr2D;`FHF2|1sM>W}hvnl8Vk3R+P>i-DAx<9m5-(&}vm(qj$B3TAN0t zPudQB?vymGtPRSgPdNC(^Gq9PgVN7hg)rqiTgZ~XVc1)Ozf#~Y2W}$fYt6o7Q$jWy z(Y7ar$GaPQOm5`yJ+k`sMjo9TdmP-*V^i1dB5dlk!YcKz6l@bqvpd>d?U8oR8R6HI zfxOg%g?OSp7#S9QVK|zqr&@Td-S1h3=b60~6!Tm)B6iLAZ4q?Y4`po^=Vh&=Jsh}W zi`9;p-?vMjb5LG)RfMwk;MSh^Z|zA0?ooas@f{8504ZAZQiGx-Wre%l&M5fpJSq3> zJn6VS#(#7#-VgCZZFSx7O|f=~xZ?6;8=-!>t;e`?rP|lG*HX@vEA^dfo^``UdO~bu zBSUdl5h>gm8LqfMu~xjPob_$Pt8K$?>jnyX%ROPX(uT&A{+IROWGG6i?fjt~{Pg=@ DS@GwD literal 0 HcmV?d00001 diff --git a/docs/medley-irm/001-TITLEPAGE.pdf b/docs/medley-irm/001-TITLEPAGE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ce2586c2b3c2093d4969c26e9fc3a7f0f95f649c GIT binary patch literal 26855 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 PD22ihv$07jT_XNJQoY+2 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/003-TOC.TEDIT b/docs/medley-irm/003-TOC.TEDIT new file mode 100644 index 00000000..407e8f83 --- /dev/null +++ b/docs/medley-irm/003-TOC.TEDIT @@ -0,0 +1,6 @@ +1 MEDLEY REFERENCE 1 MEDLEY REFERENCE TABLE OF CONTENTS 1 TABLE OF CONTENTS 1 TABLE of CONTENTS 6 Volume 1 - Lanuage Reference 1. Introduction 1 2. Litatoms (Symbols) 2-1 Using Symbols as Variables 2-1 Function Definition Cells 2-3 Property Lists 2-4 Print Names 2-5 Characters and Character Codes 2-9 3. Lists 3-1 Creating Lists 3-3 Building Lists from Left to Right 3-4 Copying Lists 3-6 Extracting Tails of Lists 3-6 Counting List Cells 3-8 Logical Operations 3-9 Searching Lists 3-10 Substitution Functions 3-10 Association Lists and Property Lists 3-11 Sorting Lists 3-13 Other List Functions 3-15 4. Strings 4-1 5. Arrays 5-1 6. Hash Arrays 6-1 Hash Overflow 6-3 User-Specified Hashing Functions 6-3 7. Numbers and Arithmetic Functions 7-1 Generic Arithmetic 7-2 Integer Arithmetic 7-3 Logical Arithmetic Functions 7-6 Floating-Point Arithmetic 7-8 Other Arithmetic Functions 7-10 8. Record Package 8-1 FETCH and REPLACE 8-1 CREATE 8-2 TYPE? 8-3 WITH 8-4 Record Declarations 8-4 Record Types 8-5 Optional Record Specifications 8-10 Defining New Record Types 8-12 Record Manipulation Functions 8-12 Changetran 8-13 Built-in and User Data Types 8-15 9. Conditionals and Iterative Statements 9-1 Data Type Predicates 9-1 Equality Predicates 9-2 Logical Predicates 9-3 COND Conditional Function 9-3 The IF Statement 9-4 Selection Functions 9-5 PROG and Associated Control Functions 9-6 The Iterative Statement 9-7 I.s. Types 9-8 Iterative Variable I.s.oprs 9-9 Condition I.s.oprs 9-12 Other I.s.oprs 9-13 Miscellaneous Hints on I.s.oprs 9-13 Errors in Iterative Statements 9-15 Defining New Iterative Statement Operators 9-15 10. Function Definition, Manipulation, and Evaluation 10-1 Function Types 10-2 Lambda-Spread Functions 10-2 Nlambda-Spread Functions 10-3 Lambda-Nospread Functions 10-4 Nlambda-Nospread Functions 10-4 Compiled Functions 10-5 Function Type Functions 10-5 Defining Functions 10-7 Function Evaluation 10-1 Iterating and Mapping Functions 10-1 Function Arguments 10-1 Macros 10-1 DEFMACRO 10-15 Interpreting Macros 10-15 11. Variable Binds and the Interlisp Stack 11-1 Spaghetti Stack 11-2 Stack Functions 11-3 Searching the Stack 11-4 Variable Binds in Stack Frames 11-5 Evaluating Expressions in Stack Frames 11-6 Altering Flow of Control 11-6 Releasing and Reusing Stack Pointers 11-7 Backtrace Functions 11-8 Other Stack Functions 11-10 The Stack and the Interpreter 11-10 Generators 11-12 Coroutines 11-14 Possibilities Lists 11-15 12. Miscellaneous 12-1 Greeting and Initialization Files 12-1 Idle Mode 12-3 Saving Virtual Memory State 12-5 System Version Information 12-9 Date and Time Functions 12-11 Timers and Duration Functions 12-13 Resources 12-15 A Simple Example 12-16 Trade-offs in More Complicated Cases 12-18 Macros for Accessing Resources 12-18 Saving Resources in a File 12-19 Pattern Matching 12-19 Pattern Elements 12-20 Element Patterns 12-20 Segment Patterns 12-21 Assignments 12-23 Place-Markers 12-23 Replacements 12-24 Reconstruction 12-24 Examples 12-25 Volume 2 - Environment Reference 13. Interlisp Executive 13-1 Input Formats 13-3 Programmer's Assistant Commands 13-4 Event Specification 13-4 Commands 13-6 P.A. Commands Applied to P.A. Commands 13-15 Changing the Programmer's Assistant 13-16 Undoing 13-19 Undoing Out of Order 13-20 SAVESET 13-21 UNDONLSETQ and RESETUNDO 13-22 Format and Use of the History List 13-23 Programmer's Assistant Functions 13-26 The Editor and the Programmer's Assistant 13-32 14. Errors and Breaks 14-1 Breaks 14-1 Break Windows 14-2 Break Commands 14-3 Controlling When to Break 14-10 Break Window Variables 14-11 Creating Breaks with BREAK1 14-12 Signalling Errors 14-14 Catching Errors 14-16 Changing and Restoring System State 14-18 Error List 14-20 15. Breaking, Tracing, and Advising 15-1 Breaking Functions and Debugging 15-1 Advising 15-7 Implementation of Advising 15-7 Advise Functions 15-8 16. List Structure Editor 16-1 SEdit 16-1 Local Attention-Changing Commands 16-10 Commands That Search 16-14 Search Algorithm 16-15 Search Commands 16-16 Location Specification 16-18 Commands That Save and Restore the Edit Chain 16-21 Commands That Modify Structure 16-22 Implementation 16-23 The A, B, and : Commands 16-24 Form Oriented Editing and the Role of UP 16-26 Extract and Embed 16-26 The MOVE Command 16-28 Commands That Move Parentheses 16-30 TO and THRU 16-31 The R Command 16-34 Commands That Print 16-35 Commands for Leaving the Editor 16-37 Nested Calls to Editor 16-39 Manipulating the Characters of an Atom or String 16-39 Manipulating Predicates and Conditional Expressions 16-40 History Commands in the Editor 16-41 Miscellaneous Commands 16-41 Commands That Evaluate 16-43 Commands That Test 16-45 Edit Macros 16-46 Undo 16-48 EDITDEFAULT 16-50 Editor Functions 16-51 Time Stamps 16-57 17. File Package 17-1 Loading Files 17-3 Storing Files 17-8 Remaking a Symbolic File 17-12 Loading Files in a Distributed Environment 17-13 Marking Changes 17-13 Noticing Files 17-15 Distributing Change Information 17-16 File Package Types 17-16 Functions for Manipulating Typed Definitions 17-19 Defining New File Package Types 17-23 File Package Commands 17-25 Functions and Macros 17-26 Variables 17-27 Litatom Properties 17-29 Miscellaneous File Package Commands 17-30 DECLARE: 17-31 Exporting Definitions 17-33 FileVars 17-34 Defining New File Package Commands 17-35 Functions for Manipulating File Command Lists 17-37 Symbolic File Format 17-38 Copyright Notices 17-40 Functions Used Within Source Files 17-42 File Maps 17-42 18. Compiler 18-1 Compiler Printout 18-2 Global Variables 18-3 Local Variables and Special Variables 18-4 Constants 18-5 Compiling Function Calls 18-6 FUNCTION and Functional Arguments 18-7 Open Functions 18-8 COMPILETYPELST 18-8 Compiling CLISP 18-9 Compiler Functions 18-9 Block Compiling 18-12 Block Declarations 18-13 Block Compiling Functions 18-15 Compiler Error Messages 18-16 19. DWIM 20-1 Spelling Correction Protocol 20-3 Parentheses Errors Protocol 20-4 Undefined Function T Errors 20-4 DWIM Operation 20-5 DWIM Correction: Unbound Atoms 20-6 Undefined CAR of Form 20-7 Undefined Function in APPLY 20-8 DWIMUSERFORMS 20-8 DWIM Functions and Variables 20-10 Spelling Correction 20-11 Synonyms 20-12 Spelling Lists 20-12 Generators for Spelling Correction 20-14 Spelling Corrector Algorithm 20-14 Spelling Corrector Functions and Variables 20-15 20. CLISP 21-1 CLISP Interaction with User 21-4 CLISP Character Operators 21-5 Declarations 21-9 CLISP Operation 21-10 CLISP Translations 21-12 DWIMIFY 21-13 CLISPIFY 21-16 Miscellaneous Functions and Variables 21-18 CLISP Internal Conventions 21-20 21. Performance Issues 22-1 Storage Allocation and Garbage Collection 22-1 Variable Bindings 22-4 Performance Measuring 22-5 BREAKDOWN 22-7 GAINSPACE 22-9 Using Data Types Instead of Records 22-9 Using Incomplete File Names 22-10 Using "Fast" and "Destructive" Functions 22-10 22. Processes 23-1 Creating and Destroying Processes 23-1 Process Control Constructs 23-4 Events 23-5 Monitors 23-7 Global Resources 23-8 Typein and the TTY Process 23-9 Switing the TTY Process 23-9 Handling of Interrupts 23-11 Keeping the Mouse Alive 23-12 Process Status Window 23-12 Non-Process Compatibility 23-14 Volume 3 - I/O Reference 23. Streams and Files 24-1 Opening and Closing File Streams 24-1 File Names 24-4 Incomplete File Names 24-7 Version Recognition 24-9 Using File Names Instead of Streams 24-10 File Name Efficiency Considerations 24-11 Obsolete File Opening Functions 24-11 Converting Old Programs 24-11 Using Files with Processes 24-12 File Attributes 24-12 Closing and Reopening Files 24-15 Local Hard Disk Device 24-16 Floppy Disk Device 24-18 I/O Operations To and From Strings 24-22 Temporary Files and the CORE Device 24-23 NULL Device 24-24 Deleting, Copying, and Renaming Files 24-24 Searching File Directories 24-24 Listing File Directories 24-25 File Servers 24-28 PUP File Server Protocols 24-28 Xerox NS File Server Protocols 24-28 Operating System Designations 24-29 Logging In 24-30 Abnormal Conditions 24-31 24. Input/Output Functions 25-1 Specifying Streams for Input/Output Functions 25-1 Input Functions 25-2 Output Functions 25-6 PRINTLEVEL 25-8 Printing Numbers 25-10 User Defined Printing 25-12 Printing Unusual Data Structures 25-13 Random Access File Operations 25-14 Input/Output Operations with Characters and Bytes 25-17 PRINTOUT 25-17 Horizontal Spacing Commands 25-19 Vertical Spacing Commands 25-20 Special Formatting Controls 25-20 Printing Specifications 25-20 Paragraph Format 25-21 Right-Flushing 25-21 Centering 25-22 Numbering 25-22 Escaping to Lisp 25-23 User-Defined Commands 25-23 Special Printing Functions 25-24 READFILE and WRITEFILE 25-25 Read Tables 25-25 Read Table Functions 25-26 Syntax Classes 25-26 Read Macros 25-29 25. User Input/Output Packages 26-1 Inspector 26-1 Calling the Inspector 26-1 Multiple Ways of Inspecting 26-2 Inspect Windows 26-3 Inspect Window Commands 26-3 Interaction with Break Windows 26-4 Controlling the Amount Displayed During Inspection 26-4 Inspect Macros 26-4 INSPECTWs 26-5 PROMPTFORWORD 26-7 ASKUSER 26-9 Format of KEYLST 26-10 Options 26-12 Operation 26-13 Completing a Key 26-14 Special Keys 26-15 Startup Protocol and Typeahead 26-16 TTYIN Typein Editor 26-17 Entering Input with TTYIN 26-17 Mouse Commands (Interlisp-D Only) 26-19 Display Editing Commands 26-19 Using TTYIN for Lisp Input 26-22 Useful Macros 26-23 Programming with TTYIN 26-23 Using TTYIN as a General Editor 26-25 ?= Handler 26-26 Read Macros 26-27 Assorted Flags 26-28 Special Responses 26-29 Display Types 26-30 Prettyprint 26-31 Comment Feature 26-33 Comment Pointers 26-34 Converting Comments to Lowercase 26-35 Special Prettyprint Controls 26-36 26. Graphics Output Operations 27-1 Primitive Graphics Concepts 27-1 Positions 27-1 Regions 27-1 Bitmaps 27-2 Textures 27-5 Opening Image Streams 27-6 Accessing Image Stream Fields 27-8 Current Position of an Image Stream 27-10 Moving Bits Between Bitmaps with BITBLT 27-11 Drawing Lines 27-13 Drawing Curves 27-14 Miscellaneous Drawing and Printing Operations 27-15 Drawing and Shading Grids 27-17 Display Streams 27-18 Fonts 27-19 Font Files and Font Directories 27-24 Font Profiles 27-24 Image Objects 27-27 IMAGEFNS Methods 27-28 Registering Image Objects 27-30 Reading and Writing Image Objects on Files 27-31 Copying Image Objects Between Windows 27-31 Implementation of Image Streams 27-32 27. Windows and Menus 28-1 Using the Window System 28-1 Changing the Window System 28-6 Interactive Display Functions 28-7 Windows 28-9 Window Properties 28-10 Creating Windows 28-10 Opening and Closing Windows 28-11 Redisplaying Windows 28-12 Reshaping Windows 28-13 Moving Windows 28-14 Exposing and Burying Windows 28-16 Shrinking Windows into Icons 28-16 Coordinate Systems, Extents, and Scrolling 28-18 Mouse Activity in Windows 28-21 Terminal I/O and Page Holding 28-22 TTY Process and the Caret 28-23 Miscellaneous Window Functions 28-24 Miscellaneous Window Properties 28-25 Example: A Scrollable Window 28-26 Menus 28-28 Menu Fields 28-29 Miscellaneous Menu Functions 28-32 Examples of Menu Use 28-32 Attached Windows 28-34 Attaching Menus to Windows 28-37 Attached Prompt Windows 28-38 Window Operations and Attached Windows 28-39 Window Properties of Attached Windows 28-41 28. Hardcopy Facilities 29-1 Hardcopy Functions 29-1 Low-Level Hardcopy Variables 29-4 29. Terminal Input/Output 30-1 Interrupt Characters 30-1 Terminal Tables 30-4 Terminal Syntax Classes 30-4 Terminal Control Functions 30-5 Line-Buffering 30-7 Dribble Files 30-10 Cursor and Mouse 30-10 Changing the Cursor Image 30-11 Flashing Bars on the Cursor 30-13 Cursor Position 30-13 Mouse Button Testing 30-14 Low-Level Mouse Functions 30-15 Keyboard Interpretation 30-15 Display Screen 30-18 Miscellaneous Terminal I/O 30-19 30. Ethernet 31-1 Ethernet Protocols 31-1 Protocol Layering 31-1 Level Zero Protocols 31-2 Level One Protocols 31-2 Higher Level Protocols 31-3 Connecting Networks: Routers and Gateways 31-3 Addressing Conflicts with Level Zero Mediums 31-3 References 31-4 Higher-Level PUP Protocol Functions 31-4 Higher-Level NS Protocol Functions 31-5 Name and Address Conventions 31-5 Clearinghouse Functions 31-7 NS Printing 31-9 SPP Stream Interface 31-9 Courier Remote Procedure Call Protocol 31-11 Defining Courier Programs 31-11 Courier Type Definitions 31-12 Pre-defined Types 31-13 Constructed Types 31-13 User Extensions to the Type Language 31-15 Performing Courier Transactions 31-16 Expedited Procedure Call 31-17 Expanding Ring Broadcast 31-18 Using Bulk Data Transfer 31-18 Courier Subfunctions for Data Transfer 31-19 Level One Ether Packet Format 31-20 PUP Level One Functions 31-21 Creating and Managing Pups 31-21 Sockets 31-22 Sending and Receiving Pups 31-23 Pup Routing Information 31-23 Miscellaneous PUP Utilities 31-24 PUP Debugging Aids 31-24 NS Level One Functions 31-28 Creating and Managing XIPs 31-28 NS Sockets 31-28 Sending and Receiving XIPs 31-29 NS Debugging Aids 31-29 Support for Other Level One Protocols 31-29 The SYSQUEUE Mechanism 31-31 Glossary GLOSSARY-1 Index INDEX-1 [This page intentionally left blank](LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))))),,"-T3 T25TTf2 5F PAGEHEADING VERSOHEADF PAGEHEADING RECTOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGR5F PAGEHEADING VERSOHEADF PAGEHEADING RECTOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGRPALATINO  HELVETICA + HELVETICAPALATINO MODERN +MODERN +CLASSIC  HRULE.GETFNPALATINO   HRULE.GETFNPALATINO  + HRULE.GETFNPALATINO   HRULE.GETFNPALATINO   HRULE.GETFNCLASSIC#&*%*!   + %#"/*!&%1= !% 2%-+$'! $,&"!%.* )'0  "*+&!! (4% 0&&7:% 1&4'+*4*+'!"!!&"#*$2!,!/)"/'    &*+'!")*,!!&%"3($8#!#"&"%9 &!) "'($&##*.4  &!2-& # #$$2!%!&'$ $".-"!!!#!!03)(#. +&-$""#"",$4}z \ No newline at end of file diff --git a/docs/medley-irm/003-TOC.pdf b/docs/medley-irm/003-TOC.pdf new file mode 100644 index 00000000..cbd9540a --- /dev/null +++ b/docs/medley-irm/003-TOC.pdf @@ -0,0 +1,1822 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5233 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 475.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(TABLE of CONTENTS)Tj +ET +0 G +0 J 0 j 6 w 10 M []0 d +1 i +54.01 562.99 m +510.01 562.99 l +S +BT +14 0 0 14 204.11 515.08 Tm +(Volume 1 - Lanuage Reference)Tj +/TT6 1 Tf +12 0 0 12 54 492.39 Tm +[(1. Introduction )-223.1(......................................................................................................1)]TJ +0 -1.9167 TD +[(2. Litatoms \(Symbols\) )-85(......................................................................................)-166.7(2-1)]TJ +/TT8 1 Tf +9 0 0 9 138 456.54 Tm +[(Using Symbols as Variables)-178.9(......................................................................................)-83.3(2-1)]TJ +0 -1.3333 TD +[(Function Definition Cells)-47.5(...........................................................................................)-83.3(2-3)]TJ +T* +[(Property Lists)-188.6(..............................................................................................................)-83.3(2-4)]TJ +T* +[(Print Names)-101.7(.................................................................................................................)-83.3(2-5)]TJ +T* +[(Characters and Character Codes)-121.3(..............................................................................)-83.3(2-9)]TJ +/TT6 1 Tf +12 0 0 12 54 386.39 Tm +[(3. Lists )-85.4(.................................................................................................................)-166.7(3-1)]TJ +/TT8 1 Tf +9 0 0 9 138 373.54 Tm +[(Creating Lists...............................................................................................................)-83.3(3-)]TJ +34.833 0 TD +(3)Tj +-34.833 -1.3333 TD +[(Building Lists from Left to Right)-53.9(..............................................................................)-83.3(3-4)]TJ +T* +[(Copying Lists)-249.7(..............................................................................................................)-83.3(3-6)]TJ +T* +[(Extracting Tails of Lists)-46.1(..............................................................................................)-83.3(3-6)]TJ +T* +[(Counting List Cells)-125.7(.....................................................................................................)-83.3(3-8)]TJ +T* +[(Logical Operations)-247.7(.....................................................................................................)-83.3(3-9)]TJ +T* +[(Searching Lists)-237(..........................................................................................................)-83.3(3-10)]TJ +T* +[(Substitution Functions)-166.2(.............................................................................................)-83.3(3-10)]TJ +T* +[(Association Lists and Property Lists)-18.7(......................................................................)-83.3(3-11)]TJ +T* +[(Sorting Lists)-119.8(...............................................................................................................)-83.3(3-1)]TJ +34.833 0 TD +(3)Tj +-34.833 -1.3333 TD +[(Other List Functions)-92.4(.................................................................................................)-83.3(3-15)]TJ +/TT6 1 Tf +12 0 0 12 54 231.39 Tm +[(4. Strings )-223.1(............................................................................................................)-166.7(4-1)]TJ +0 -1.9167 TD +[(5. Arrays )-193.8(.............................................................................................................)-166.7(5-1)]TJ +T* +[(6. Hash Arrays )-56.2(...................................................................................................)-166.7(6-1)]TJ +/TT8 1 Tf +9 0 0 9 138 172.54 Tm +[(Hash Overflow)-99.8(............................................................................................................)-83.3(6-3)]TJ +0 -1.3333 TD +[(User-Specified Hashing Functions)-83.2(...........................................................................)-83.3(6-3)]TJ +/TT6 1 Tf +12 0 0 12 54 138.39 Tm +[(7. Numbers and Arithmetic Functions )-60.1(.........................................................)-166.7(7-1)]TJ +/TT8 1 Tf +9 0 0 9 138 125.54 Tm +[(Generic Arithmetic)-188.6(.....................................................................................................)-83.3(7-2)]TJ +T* +[(Integer Arithmetic)-217.4(......................................................................................................)-83.3(7-3)]TJ +T* +[(Logical Arithmetic Functions)-29(....................................................................................)-83.3(7-6)]TJ +T* +[(Floating-Point Arithmetic)-41.2(..........................................................................................)-83.3(7-8)]TJ +T* +[(Other Arithmetic Functions)-199.4(....................................................................................)-83.3(7-10)]TJ +/TT6 1 Tf +12 0 0 12 54 55.39 Tm +[(8. Record Package )-56.2(.............................................................................................)-166.7(8-1)]TJ +/TT8 1 Tf +9 0 0 9 138 42.54 Tm +[(FETCH and REPLACE)-61.7(...............................................................................................)-83.3(8-1)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +11 0 obj +<< +/Length 6103 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2)Tj +/TT8 1 Tf +9.3333 60.6156 TD +[(CREATE)-94.1(.......................................................................................................................)-166.7(8-)]TJ +34.833 0 TD +(2)Tj +-34.833 -1.3333 TD +[(TYPE?)-144.9(..........................................................................................................................)]TJ +33.5833 0 TD +[(.)-166.7(8-3)]TJ +-33.5833 -1.3333 TD +[(WITH)-51.6(...........................................................................................................................)]TJ +33.5833 0 TD +[(.)-166.7(8-4)]TJ +-33.5833 -1.3333 TD +[(Record Declarations)-139(...................................................................................................)-166.7(8-4)]TJ +2 -1.3333 TD +[(Record Types)-17.9(.......................................................................................................)-166.7(8-5)]TJ +T* +[(Optional Record Specifications)-190.8(......................................................................)-166.7(8-10)]TJ +-2 -1.3333 TD +[(Defining New Record Types)-235.7(..................................................................................)-166.7(8-12)]TJ +T* +[(Record Manipulation Functions)-27.7(.............................................................................)-166.7(8-12)]TJ +T* +[(Changetran)-121.9(................................................................................................................)-166.7(8-13)]TJ +T* +[(Built-in and User Data Types)-213.7(.................................................................................)-166.7(8-15)]TJ +/TT6 1 Tf +12 0 0 12 102 439.39 Tm +[(9. Conditionals and Iterative Statements )-198.2(....................................................)-166.7(9-1)]TJ +/TT8 1 Tf +9 0 0 9 186 426.54 Tm +[(Data Type Predicates)-181.5(.................................................................................................)-166.7(9-1)]TJ +T* +[(Equality Predicates)-42.3(.....................................................................................................)-166.7(9-2)]TJ +T* +[(Logical Predicates)-41.8(.......................................................................................................)-166.7(9-3)]TJ +T* +[(COND Conditional Function)-28.2(....................................................................................)-166.7(9-3)]TJ +T* +[(The IF Statement)-90.2(.........................................................................................................)-166.7(9-4)]TJ +T* +[(Selection Functions)-16.4(.....................................................................................................)-166.7(9-5)]TJ +T* +[(PROG and Associated Control Functions)-247.9(..............................................................)-166.7(9-6)]TJ +T* +[(The Iterative Statement)-35(..............................................................................................)-166.7(9-7)]TJ +2 -1.3333 TD +[(I.s. Types)-149.7(..............................................................................................................)-166.7(9-8)]TJ +T* +[(Iterative Variable I.s.oprs)-177.1(..................................................................................)-166.7(9-9)]TJ +T* +[(Condition I.s.oprs)-122.9(.............................................................................................)-166.7(9-12)]TJ +T* +[(Other I.s.oprs)-38.4(.....................................................................................................)-166.7(9-13)]TJ +T* +[(Miscellaneous Hints on I.s.oprs)-224.4(.....................................................................)-166.7(9-13)]TJ +T* +[(Errors in Iterative Statements)-146.3(.........................................................................)-166.7(9-15)]TJ +T* +[(Defining New Iterative Statement Operators)-224.4(..............................................)-166.7(9-15)]TJ +/TT6 1 Tf +12 0 0 12 102 236.39 Tm +[(10. Function Definition, Manipulation, and Evaluation )-116.2(........................)-166.7(10-1)]TJ +/TT8 1 Tf +9 0 0 9 186 223.54 Tm +[(Function Types)-230.3(.........................................................................................................)-166.7(10-2)]TJ +2 -1.3333 TD +[(Lambda-Spread Functions)-127.8(..............................................................................)-166.7(10-2)]TJ +T* +[(Nlambda-Spread Functions)-116.5(............................................................................)-166.7(10-3)]TJ +T* +[(Lambda-Nospread Functions)-101.9(.........................................................................)-166.7(10-4)]TJ +T* +[(Nlambda-Nospread Functions)-90.7(.......................................................................)-166.7(10-4)]TJ +T* +[(Compiled Functions)-68.7(.........................................................................................)-166.7(10-5)]TJ +T* +[(Function Type Functions)-50.1(.................................................................................)-166.7(10-5)]TJ +-2 -1.3333 TD +[(Defining Functions)-91.1(...................................................................................................)-166.7(10-7)]TJ +T* +[(Function Evaluation)-88.2(.................................................................................................)-166.7(10-1)]TJ +T* +[(Iterating and Mapping Functions)-166.8(..........................................................................)-166.7(10-1)]TJ +T* +[(Function Arguments)-127.3(................................................................................................)-166.7(10-1)]TJ +T* +[(Macros)-78.9(........................................................................................................................)-166.7(1)]TJ +34 0 TD +(0-1)Tj +-32 -1.3333 TD +[(DEFMACRO)-5.7(....................................................................................................)-166.7(10-15)]TJ +T* +[(Interpreting Macros)-229.3(.......................................................................................)-166.7(10-15)]TJ +ET +endstream +endobj +12 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +14 0 obj +<< +/Length 5808 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 475.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3)Tj +/TT6 1 Tf +12 0 0 12 54 567.39 Tm +[(11. Variable Binds and the Interlisp Stack )-33.7(................................................)-166.7(11-1)]TJ +/TT8 1 Tf +9 0 0 9 138 554.54 Tm +[(Spaghetti Stack)-129.1(..........................................................................................................)-83.3(11-2)]TJ +0 -1.3333 TD +[(Stack Functions)-211.6(.........................................................................................................)-83.3(11-3)]TJ +2 -1.3333 TD +[(Searching the Stack)-74.4(...........................................................................................)-83.3(11-4)]TJ +T* +[(Variable Binds in Stack Frames)-205.7(......................................................................)-83.3(11-5)]TJ +T* +[(Evaluating Expressions in Stack Frames)-88.1(.......................................................)-83.3(11-6)]TJ +T* +[(Altering Flow of Control)-217.4(.................................................................................)-83.3(11-6)]TJ +T* +[(Releasing and Reusing Stack Pointers)-102.7(...........................................................)-83.3(11-7)]TJ +T* +[(Backtrace Functions)-57.8(..........................................................................................)-83.3(11-8)]TJ +T* +[(Other Stack Functions)-143.2(....................................................................................)-83.3(11-10)]TJ +-2 -1.3333 TD +[(The Stack and the Interpreter)-17.3(................................................................................)-83.3(11-10)]TJ +T* +[(Generators)-27.5(................................................................................................................)-83.3(11-12)]TJ +T* +[(Coroutines)-15.8(................................................................................................................)-83.3(11-14)]TJ +T* +[(Possibilities Lists)-106.1(.....................................................................................................)-83.3(11-15)]TJ +/TT6 1 Tf +12 0 0 12 54 388.39 Tm +[(12. Miscellaneous )-141.6(...........................................................................................)-166.7(12-1)]TJ +/TT8 1 Tf +9 0 0 9 138 375.54 Tm +[(Greeting and Initialization Files)-156.9(.............................................................................)-83.3(12-1)]TJ +T* +[(Idle Mode)-117.3(...................................................................................................................)-83.3(12-)]TJ +34.833 0 TD +(3)Tj +-34.833 -1.3333 TD +[(Saving Virtual Memory State)-58.3(..................................................................................)-83.3(12-5)]TJ +T* +[(System Version Information)-214(...................................................................................)-83.3(12-9)]TJ +T* +[(Date and Time Functions)-25.1(.......................................................................................)-83.3(12-11)]TJ +T* +[(Timers and Duration Functions)-18.2(............................................................................)-83.3(12-13)]TJ +T* +[(Resources)-205.2(.................................................................................................................)-83.3(12-15)]TJ +2 -1.3333 TD +[(A Simple Example)-188.2(..........................................................................................)-83.3(12-16)]TJ +T* +[(Trade-offs in More Complicated Cases)-145.2(.......................................................)-83.3(12-18)]TJ +T* +[(Macros for Accessing Resources)-255.5(..................................................................)-83.3(12-18)]TJ +T* +[(Saving Resources in a File)-196(.............................................................................)-83.3(12-19)]TJ +-2 -1.3333 TD +[(Pattern Matching)-227.2(....................................................................................................)-83.3(12-19)]TJ +2 -1.3333 TD +[(Pattern Elements)-129.6(.............................................................................................)-83.3(12-20)]TJ +T* +[(Element Patterns)-129.6(.............................................................................................)-83.3(12-20)]TJ +T* +[(Segment Patterns)-200.4(............................................................................................)-83.3(12-21)]TJ +T* +[(Assignments)-168.1(....................................................................................................)-83.3(12-23)]TJ +T* +[(Place-Markers)-71(..................................................................................................)-83.3(12-23)]TJ +T* +[(Replacements)-10.9(...................................................................................................)-83.3(12-24)]TJ +T* +[(Reconstruction)-10.9(.................................................................................................)-83.3(12-24)]TJ +T* +[(Examples)-112(..........................................................................................................)-83.3(12-25)]TJ +/TT4 1 Tf +14 0 0 14 190.11 100.08 Tm +(Volume 2 - Environment Reference)Tj +/TT6 1 Tf +12 0 0 12 54 77.39 Tm +[(13. Interlisp Executive )-169.4(...................................................................................)-166.7(13-1)]TJ +/TT8 1 Tf +9 0 0 9 138 64.54 Tm +[(Input Formats)-87.6(............................................................................................................)-83.3(13-3)]TJ +T* +[(Programmers Assistant Commands)-117.3(.....................................................................)-83.3(13-4)]TJ +2 -1.3333 TD +[(Event Specification)-200.8(...........................................................................................)-83.3(13-4)]TJ +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +17 0 obj +<< +/Length 6160 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4)Tj +/TT8 1 Tf +11.3333 60.6156 TD +[(Commands)-196.1(........................................................................................................)-166.7(13-6)]TJ +0 -1.3333 TD +[(P.A. Commands Applied to P.A. Commands)-21.3(............................................)-166.7(13-15)]TJ +-2 -1.3333 TD +[(Changing the Programmers Assistant)-175.6(...............................................................)-166.7(13-16)]TJ +T* +[(Undoing)-137.5(...................................................................................................................)-166.7(13-19)]TJ +2 -1.3333 TD +[(Undoing Out of Order)-127.3(...................................................................................)-166.7(13-20)]TJ +T* +[(SAVESET)-199.1(.........................................................................................................)-166.7(13-21)]TJ +T* +[(UNDONLSETQ and RESETUNDO)-48.7(.............................................................)-166.7(13-22)]TJ +-2 -1.3333 TD +[(Format and Use of the History List)-215.7(.....................................................................)-166.7(13-23)]TJ +T* +[(Programmers Assistant Functions)-67.2(......................................................................)-166.7(13-26)]TJ +T* +[(The Editor and the Programmers Assistant)-137.5(......................................................)-166.7(13-32)]TJ +/TT6 1 Tf +12 0 0 12 102 439.39 Tm +[(14. Errors and Breaks )-139.2(.....................................................................................)-166.7(14-1)]TJ +/TT8 1 Tf +9 0 0 9 186 426.54 Tm +[(Breaks)-118.5(.........................................................................................................................)]TJ +33.5 0 TD +(14-1)Tj +-33.5 -1.3333 TD +[(Break Windows.........................................................................................................)-166.7(14-2)]TJ +T* +[(Break Commands)-155.1(.....................................................................................................)-166.7(14-3)]TJ +T* +[(Controlling When to Break)-161.9(...................................................................................)-166.7(14-10)]TJ +T* +[(Break Window Variables)-23.3(.......................................................................................)-166.7(14-11)]TJ +T* +[(Creating Breaks with BREAK1)-103.4(.............................................................................)-166.7(14-12)]TJ +T* +[(Signalling Errors)-102.4(.....................................................................................................)-166.7(14-14)]TJ +T* +[(Catching Errors)-77.5(.......................................................................................................)-166.7(14-16)]TJ +T* +[(Changing and Restoring System State)-165.9(................................................................)-166.7(14-18)]TJ +T* +[(Error List)-89.7(..................................................................................................................)-166.7(14-)]TJ +34.333 0 TD +(20)Tj +/TT6 1 Tf +12 0 0 12 102 296.39 Tm +[(15. Breaking, Tracing, and Advising )-139.6(..........................................................)-166.7(15-1)]TJ +/TT8 1 Tf +9 0 0 9 186 283.54 Tm +[(Breaking Functions and Debugging)-115.6(......................................................................)-166.7(15-1)]TJ +0 -1.3333 TD +[(Advising)-235.7(....................................................................................................................)-166.7(15-)]TJ +34.833 0 TD +(7)Tj +-32.833 -1.3333 TD +[(Implementation of Advising...........................................................................)-166.7(15-7)]TJ +T* +[(Advise Functions)-81.9(..............................................................................................)-166.7(15-8)]TJ +/TT6 1 Tf +12 0 0 12 102 225.39 Tm +[(16. List Structure Editor )-225.6(................................................................................)-166.7(16-1)]TJ +/TT8 1 Tf +9 0 0 9 186 212.54 Tm +[(SEdit)-219.6(..........................................................................................................................)]TJ +33.0833 0 TD +[(.)-166.7(16-1)]TJ +-33.0833 -1.3333 TD +[(Local Attention-Changing Commands)-126.8(...............................................................)-166.7(16-10)]TJ +T* +[(Commands That Search)-250.3(........................................................................................)-166.7(16-14)]TJ +2 -1.3333 TD +[(Search Algorithm)-10.6(............................................................................................)-166.7(16-15)]TJ +T* +[(Search Commands)-21.3(..........................................................................................)-166.7(16-16)]TJ +T* +[(Location Specification)-84.8(....................................................................................)-166.7(16-18)]TJ +-2 -1.3333 TD +[(Commands That Save and Restore the Edit Chain)-206.4(...........................................)-166.7(16-21)]TJ +T* +[(Commands That Modify Structure)-46.2(......................................................................)-166.7(16-22)]TJ +2 -1.3333 TD +[(Implementation)-227.4(..............................................................................................)-166.7(16-23)]TJ +T* +[(The A, B, and : Commands)-190.8(...........................................................................)-166.7(16-24)]TJ +T* +[(Form Oriented Editing and the Role of UP)-161.5(................................................)-166.7(16-26)]TJ +T* +[(Extract and Embed)-135.6(.........................................................................................)-166.7(16-26)]TJ +T* +[(The MOVE Command)-131.2(...................................................................................)-166.7(16-28)]TJ +T* +[(Commands That Move Parentheses)-115.6(............................................................)-166.7(16-30)]TJ +T* +[(TO and THRU)-100.9(.................................................................................................)-166.7(16-31)]TJ +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +20 0 obj +<< +/Length 6225 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 475.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(5)Tj +/TT8 1 Tf +-35.5 60.6156 TD +[(The R Command)-111.5(.............................................................................................)-83.3(16-34)]TJ +-2 -1.3333 TD +[(Commands That Print)-60.2(............................................................................................)-83.3(16-35)]TJ +T* +[(Commands for Leaving the Editor.......................................................................)-83.3(16-37)]TJ +T* +[(Nested Calls to Editor)-150.1(............................................................................................)-83.3(16-39)]TJ +T* +[(Manipulating the Characters of an Atom or String)-96.4(...........................................)-83.3(16-39)]TJ +T* +[(Manipulating Predicates and Conditional Expressions)-34.3(....................................)-83.3(16-40)]TJ +T* +[(History Commands in the Editor)-119.3(.........................................................................)-83.3(16-41)]TJ +T* +[(Miscellaneous Commands)-230.1(....................................................................................)-83.3(16-41)]TJ +T* +[(Commands That Evaluate)-133.5(.....................................................................................)-83.3(16-43)]TJ +T* +[(Commands That Test)-166.7(.............................................................................................)-83.3(16-45)]TJ +T* +[(Edit Macros)-73.4(..............................................................................................................)-83.3(16-46)]TJ +T* +[(Undo)-150.1(.........................................................................................................................)-83.3(16)]TJ +34 0 TD +(-48)Tj +-34 -1.3333 TD +[(EDITDEFAULT)-112(.......................................................................................................)-83.3(16-50)]TJ +T* +[(Editor Functions)-32.9(......................................................................................................)-83.3(16-51)]TJ +T* +[(Time Stamps)-142.3(............................................................................................................)-83.3(16-57)]TJ +/TT6 1 Tf +12 0 0 12 54 379.39 Tm +[(17. File Package )-56.2(...............................................................................................)-166.7(17-1)]TJ +/TT8 1 Tf +9 0 0 9 138 366.54 Tm +[(Loading Files)-178.9(.............................................................................................................)-83.3(17-3)]TJ +T* +[(Storing Files)-154.5(...............................................................................................................)-83.3(17-)]TJ +34.833 0 TD +(8)Tj +-34.833 -1.3333 TD +[(Remaking a Symbolic File)-195.5(.....................................................................................)-83.3(17-12)]TJ +T* +[(Loading Files in a Distributed Environment)-140.8(......................................................)-83.3(17-13)]TJ +T* +[(Marking Changes)-8.5(....................................................................................................)-83.3(17-13)]TJ +T* +[(Noticing Files)-8.5(...........................................................................................................)-83.3(17-15)]TJ +T* +[(Distributing Change Information)-25.1(.........................................................................)-83.3(17-16)]TJ +T* +[(File Package Types)-237.5(.................................................................................................)-83.3(17-16)]TJ +2 -1.3333 TD +[(Functions for Manipulating Typed Definitions)-190.6(.........................................)-83.3(17-19)]TJ +T* +[(Defining New File Package Types)-205.2(...............................................................)-83.3(17-23)]TJ +-2 -1.3333 TD +[(File Package Commands)-23.1(........................................................................................)-83.3(17-25)]TJ +2 -1.3333 TD +[(Functions and Macros)-115.4(....................................................................................)-83.3(17-26)]TJ +T* +[(Variables)-11.4(...........................................................................................................)-83.3(17-27)]TJ +T* +[(Litatom Properties)-143.7(..........................................................................................)-83.3(17-29)]TJ +T* +[(Miscellaneous File Package Commands)-223.8(.....................................................)-83.3(17-30)]TJ +T* +[(DECLARE:)-155.4(.......................................................................................................)-83.3(17-31)]TJ +T* +[(Exporting Definitions)-73.4(.....................................................................................)-83.3(17-33)]TJ +T* +[(FileVars)-8.5(.............................................................................................................)-83.3(17-34)]TJ +T* +[(Defining New File Package Commands)-240.9(.....................................................)-83.3(17-35)]TJ +-2 -1.3333 TD +[(Functions for Manipulating File Command Lists)-63.1(..............................................)-83.3(17-37)]TJ +T* +[(Symbolic File Format..............................................................................................)-83.3(17-38)]TJ +2 -1.3333 TD +[(Copyright Notices)-13.3(...........................................................................................)-83.3(17-40)]TJ +T* +[(Functions Used Within Source Files)-166.2(............................................................)-83.3(17-42)]TJ +T* +[(File Maps)-78.8(..........................................................................................................)-83.3(17-42)]TJ +/TT6 1 Tf +12 0 0 12 54 68.39 Tm +[(18. Compiler )-166.5(....................................................................................................)-166.7(18-1)]TJ +/TT8 1 Tf +9 0 0 9 138 55.54 Tm +[(Compiler Printout)-48.5(.....................................................................................................)-83.3(18-2)]TJ +T* +[(Global Variables)-67.1(........................................................................................................)-83.3(18-3)]TJ +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +23 0 obj +<< +/Length 6163 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6)Tj +/TT8 1 Tf +9.3333 60.6156 TD +[(Local Variables and Special Variables)-57.5(...................................................................)-166.7(18-4)]TJ +0 -1.3333 TD +[(Constants)-164.4(...................................................................................................................)-166.7(18-)]TJ +34.833 0 TD +(5)Tj +-34.833 -1.3333 TD +[(Compiling Function Calls)-188.3(.......................................................................................)-166.7(18-6)]TJ +T* +[(FUNCTION and Functional Arguments)-202.5(..............................................................)-166.7(18-7)]TJ +T* +[(Open Functions)-31.1(.........................................................................................................)-166.7(18-8)]TJ +T* +[(COMPILETYPELST)-236.7(.................................................................................................)-166.7(18-8)]TJ +T* +[(Compiling CLISP)-47.7(......................................................................................................)-166.7(18-9)]TJ +T* +[(Compiler Functions)-34.5(..................................................................................................)-166.7(18-9)]TJ +T* +[(Block Compiling)-135.6(.....................................................................................................)-166.7(18-12)]TJ +2 -1.3333 TD +[(Block Declarations)-83.8(..........................................................................................)-166.7(18-13)]TJ +T* +[(Block Compiling Functions)-31.6(...........................................................................)-166.7(18-15)]TJ +-2 -1.3333 TD +[(Compiler Error Messages)-65.3(......................................................................................)-166.7(18-16)]TJ +/F1 1 Tf +14 0 0 14 102 413.17 Tm +[(19. DWIM )30.3(............................................................................)-146.3(20-1)]TJ +/TT8 1 Tf +9 0 0 9 186 400.54 Tm +[(Spelling Correction Protocol)-56.5(...................................................................................)-166.7(20-3)]TJ +T* +[(Parentheses Errors Protocol)-96(....................................................................................)-166.7(20-4)]TJ +T* +[(Undefined Function T Errors)-29.1(..................................................................................)-166.7(20-4)]TJ +T* +[(DWIM Operation)-20.3(......................................................................................................)-166.7(20-5)]TJ +2 -1.3333 TD +[(DWIM Correction: Unbound Atoms)-102.4(............................................................)-166.7(20-6)]TJ +T* +[(Undefined CAR of Form)-174.2(.................................................................................)-166.7(20-7)]TJ +T* +[(Undefined Function in APPLY)-20.8(.......................................................................)-166.7(20-8)]TJ +-2 -1.3333 TD +[(DWIMUSERFORMS)-214.2(................................................................................................)-166.7(20-8)]TJ +T* +[(DWIM Functions and Variables)-74.5(...........................................................................)-166.7(20-10)]TJ +T* +[(Spelling Correction.................................................................................................)-166.7(20-11)]TJ +2 -1.3333 TD +[(Synonyms)-179.5(........................................................................................................)-166.7(20-12)]TJ +T* +[(Spelling Lists)-141.4(...................................................................................................)-166.7(20-12)]TJ +T* +[(Generators for Spelling Correction)-91.1(..............................................................)-166.7(20-14)]TJ +T* +[(Spelling Corrector Algorithm)-84.3(.......................................................................)-166.7(20-14)]TJ +T* +[(Spelling Corrector Functions and Variables)-30.1(...............................................)-166.7(20-15)]TJ +/TT6 1 Tf +12 0 0 12 102 210.39 Tm +[(20. CLISP )-56.2(..........................................................................................................)-166.7(21-1)]TJ +/TT8 1 Tf +9 0 0 9 186 197.54 Tm +[(CLISP Interaction with User)-130.7(...................................................................................)-166.7(21-4)]TJ +T* +[(CLISP Character Operators)-15.5(.....................................................................................)-166.7(21-5)]TJ +T* +[(Declarations)-31.6(...............................................................................................................)-166.7(21-9)]TJ +T* +[(CLISP Operation)-41.3(.....................................................................................................)-166.7(21-10)]TJ +T* +[(CLISP Translations)-74.1(.................................................................................................)-166.7(21-12)]TJ +T* +[(DWIMIFY)-216.6(................................................................................................................)-166.7(21-13)]TJ +T* +[(CLISPIFY)-237.6(.................................................................................................................)-166.7(21-16)]TJ +T* +[(Miscellaneous Functions and Variables)-81.9(..............................................................)-166.7(21-18)]TJ +T* +[(CLISP Internal Conventions)-173.7(.................................................................................)-166.7(21-20)]TJ +/TT6 1 Tf +12 0 0 12 102 79.39 Tm +[(21. Performance Issues )-140.1(..................................................................................)-166.7(22-1)]TJ +/TT8 1 Tf +9 0 0 9 186 66.54 Tm +[(Storage Allocation and Garbage Collection)-217.1(.........................................................)-166.7(22-1)]TJ +T* +[(Variable Bindings)-154.1(.....................................................................................................)-166.7(22-4)]TJ +T* +[(Performance Measuring)-167.8(..........................................................................................)-166.7(22-5)]TJ +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 25 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +27 0 obj +<< +/Length 5816 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 475.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7)Tj +/TT8 1 Tf +-37.5 60.6156 TD +[(BREAKDOWN)-132(..........................................................................................................)-83.3(22-7)]TJ +0 -1.3333 TD +[(GAINSPACE)-231.1(.............................................................................................................)-83.3(22-9)]TJ +T* +[(Using Data Types Instead of Records)-58.8(....................................................................)-83.3(22-9)]TJ +T* +[(Using Incomplete File Names)-84.1(...............................................................................)-83.3(22-10)]TJ +T* +[(Using "Fast" and "Destructive" Functions)-92.4(...........................................................)-83.3(22-10)]TJ +/TT6 1 Tf +12 0 0 12 54 499.39 Tm +[(22. Processes )-168.5(....................................................................................................)-166.7(23-1)]TJ +/TT8 1 Tf +9 0 0 9 138 486.54 Tm +[(Creating and Destroying Processes)-238(.......................................................................)-83.3(23-1)]TJ +T* +[(Process Control Constructs)-177.4(.....................................................................................)-83.3(23-4)]TJ +T* +[(Events)-179.9(.........................................................................................................................)]TJ +33.5 0 TD +(23-5)Tj +-33.5 -1.3333 TD +[(Monitors)-111(.....................................................................................................................)-83.3(23)]TJ +34.5 0 TD +(-7)Tj +-34.5 -1.3333 TD +[(Global Resources)-10.9(.......................................................................................................)-83.3(23-8)]TJ +T* +[(Typein and the TTY Process)-6.5(....................................................................................)-83.3(23-9)]TJ +2 -1.3333 TD +[(Switing the TTY Process)-166.2(..................................................................................)-83.3(23-9)]TJ +T* +[(Handling of Interrupts)-74.4(...................................................................................)-83.3(23-11)]TJ +-2 -1.3333 TD +[(Keeping the Mouse Alive)-163.7(......................................................................................)-83.3(23-12)]TJ +T* +[(Process Status Window)-33.4(..........................................................................................)-83.3(23-12)]TJ +T* +[(Non-Process Compatibility)-144.7(...................................................................................)-83.3(23-14)]TJ +/TT4 1 Tf +14 0 0 14 223.55 323.08 Tm +(Volume 3 - I/O Reference)Tj +/TT6 1 Tf +12 0 0 12 54 300.39 Tm +[(23. Streams and Files )-196.3(.....................................................................................)-166.7(24-1)]TJ +/TT8 1 Tf +9 0 0 9 138 287.54 Tm +[(Opening and Closing File Streams)-48.5(.........................................................................)-83.3(24-1)]TJ +T* +[(File Names)-182.8(.................................................................................................................)-83.3(24-4)]TJ +T* +[(Incomplete File Names)-215(............................................................................................)-83.3(24-7)]TJ +T* +[(Version Recognition)-166.7(.................................................................................................)-83.3(24-9)]TJ +T* +[(Using File Names Instead of Streams)-132.5(..................................................................)-83.3(24-10)]TJ +2 -1.3333 TD +[(File Name Efficiency Considerations)-37.3(...........................................................)-83.3(24-11)]TJ +T* +[(Obsolete File Opening Functions)-183.8(.................................................................)-83.3(24-11)]TJ +T* +[(Converting Old Programs)-144.7(.............................................................................)-83.3(24-11)]TJ +-2 -1.3333 TD +[(Using Files with Processes)-243.3(....................................................................................)-83.3(24-12)]TJ +T* +[(File Attributes)-48(..........................................................................................................)-83.3(24-12)]TJ +T* +[(Closing and Reopening Files)-249.7(................................................................................)-83.3(24-15)]TJ +T* +[(Local Hard Disk Device)-110.5(.........................................................................................)-83.3(24-16)]TJ +T* +[(Floppy Disk Device)-188.6(................................................................................................)-83.3(24-18)]TJ +T* +[(I/O Operations To and From Strings)-176.9(..................................................................)-83.3(24-22)]TJ +T* +[(Temporary Files and the CORE Device)-22.1(...............................................................)-83.3(24-23)]TJ +T* +[(NULL Device)-54.4(...........................................................................................................)-83.3(24-24)]TJ +T* +[(Deleting, Copying, and Renaming Files)-22.1(..............................................................)-83.3(24-24)]TJ +T* +[(Searching File Directories)-101.7(......................................................................................)-83.3(24-24)]TJ +T* +[(Listing File Directories)-124.7(...........................................................................................)-83.3(24-25)]TJ +T* +[(File Servers)-37.8(...............................................................................................................)-83.3(24-2)]TJ +34.833 0 TD +(8)Tj +-32.833 -1.3333 TD +[(PUP File Server Protocols)-104.2(..............................................................................)-83.3(24-28)]TJ +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +30 0 obj +<< +/Length 6123 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8)Tj +/TT8 1 Tf +11.3333 60.6156 TD +[(Xerox NS File Server Protocols)-47.7(.....................................................................)-166.7(24-28)]TJ +0 -1.3333 TD +[(Operating System Designations)-99(...................................................................)-166.7(24-29)]TJ +T* +[(Logging In)-216.1(.......................................................................................................)-166.7(24-30)]TJ +T* +[(Abnormal Conditions)-147.8(....................................................................................)-166.7(24-31)]TJ +/TT6 1 Tf +12 0 0 12 102 511.39 Tm +[(24. Input/Output Functions )-69.3(..........................................................................)-166.7(25-1)]TJ +/TT8 1 Tf +9 0 0 9 186 498.54 Tm +[(Specifying Streams for Input/Output Functions)-214.7(................................................)-166.7(25-1)]TJ +T* +[(Input Functions)-30.1(.........................................................................................................)-166.7(25-2)]TJ +T* +[(Output Functions)-233.7(.....................................................................................................)-166.7(25-6)]TJ +2 -1.3333 TD +[(PRINTLEVEL)-115.1(....................................................................................................)-166.7(25-8)]TJ +T* +[(Printing Numbers)-37.9(...........................................................................................)-166.7(25-10)]TJ +T* +[(User Defined Printing)-81.4(....................................................................................)-166.7(25-12)]TJ +T* +[(Printing Unusual Data Structures)-55(................................................................)-166.7(25-13)]TJ +-2 -1.3333 TD +[(Random Access File Operations...........................................................................)-166.7(25-14)]TJ +T* +[(Input/Output Operations with Characters and Bytes)-226.4(.....................................)-166.7(25-17)]TJ +T* +[(PRINTOUT)-103.8(..............................................................................................................)-166.7(25-17)]TJ +2 -1.3333 TD +[(Horizontal Spacing Commands)-138(...................................................................)-166.7(25-19)]TJ +T* +[(Vertical Spacing Commands)-248.9(........................................................................)-166.7(25-20)]TJ +T* +[(Special Formatting Controls)-172.2(.........................................................................)-166.7(25-20)]TJ +T* +[(Printing Specifications)-129.2(...................................................................................)-166.7(25-20)]TJ +T* +[(Paragraph Format)-244(..........................................................................................)-166.7(25-21)]TJ +T* +[(Right-Flushing)-191.7(................................................................................................)-166.7(25-21)]TJ +T* +[(Centering)-183.9(.........................................................................................................)-166.7(25-22)]TJ +T* +[(Numbering)-160(......................................................................................................)-166.7(25-22)]TJ +T* +[(Escaping to Lisp)-25.7(..............................................................................................)-166.7(25-23)]TJ +T* +[(User-Defined Commands)-238.6(.............................................................................)-166.7(25-23)]TJ +T* +[(Special Printing Functions)-221(............................................................................)-166.7(25-24)]TJ +-2 -1.3333 TD +[(READFILE and WRITEFILE)-101.9(.................................................................................)-166.7(25-25)]TJ +T* +[(Read Tables)-215.7(.............................................................................................................)-166.7(25-25)]TJ +2 -1.3333 TD +[(Read Table Functions)-35.5(.....................................................................................)-166.7(25-26)]TJ +T* +[(Syntax Classes)-77.5(.................................................................................................)-166.7(25-26)]TJ +T* +[(Read Macros)-71.1(....................................................................................................)-166.7(25-29)]TJ +/TT6 1 Tf +12 0 0 12 102 176.39 Tm +[(25. User Input/Output Packages )-41.5(..................................................................)-166.7(26-1)]TJ +/TT8 1 Tf +9 0 0 9 186 163.54 Tm +[(Inspector)-199.5(....................................................................................................................)-166.7(26)]TJ +34.5 0 TD +(-1)Tj +-32.5 -1.3333 TD +[(Calling the Inspector)-92.1(........................................................................................)-166.7(26-1)]TJ +T* +[(Multiple Ways of Inspecting)-24.3(...........................................................................)-166.7(26-2)]TJ +T* +[(Inspect Windows)-102.9(..............................................................................................)-166.7(26-3)]TJ +T* +[(Inspect Window Commands)-139.5(..........................................................................)-166.7(26-3)]TJ +T* +[(Interaction with Break Windows)-163.4(...................................................................)-166.7(26-4)]TJ +T* +[(Controlling the Amount Displayed During Inspection)-23.3(..............................)-166.7(26-4)]TJ +T* +[(Inspect Macros)-136.1(..................................................................................................)-166.7(26-4)]TJ +T* +[(INSPECTWs)-180(......................................................................................................)-166.7(26-5)]TJ +-2 -1.3333 TD +[(PROMPTFORWORD)-124.3(...............................................................................................)-166.7(26-7)]TJ +T* +[(ASKUSER)-223(..................................................................................................................)-166.7(26-9)]TJ +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +33 0 obj +<< +/Length 6307 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 475.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9)Tj +/TT8 1 Tf +-35.5 60.6156 TD +[(Format of KEYLST)-79.3(..........................................................................................)-83.3(26-10)]TJ +0 -1.3333 TD +[(Options)-110.5(.............................................................................................................)-83.3(26-12)]TJ +T* +[(Operation)-160.3(.........................................................................................................)-83.3(26-13)]TJ +T* +[(Completing a Key)-141.3(...........................................................................................)-83.3(26-14)]TJ +T* +[(Special Keys)-100.7(.....................................................................................................)-83.3(26-15)]TJ +T* +[(Startup Protocol and Typeahead)-78.8(..................................................................)-83.3(26-16)]TJ +-2 -1.3333 TD +[(TTYIN Typein Editor)-204.3(.............................................................................................)-83.3(26-17)]TJ +2 -1.3333 TD +[(Entering Input with TTYIN)-51.4(...........................................................................)-83.3(26-17)]TJ +T* +[(Mouse Commands \(Interlisp-D Only\))-67.5(.........................................................)-83.3(26-19)]TJ +T* +[(Display Editing Commands)-74.4(..........................................................................)-83.3(26-19)]TJ +T* +[(Using TTYIN for Lisp Input)-75.4(..........................................................................)-83.3(26-22)]TJ +T* +[(Useful Macros..................................................................................................)-83.3(26-23)]TJ +T* +[(Programming with TTYIN)-132(............................................................................)-83.3(26-23)]TJ +T* +[(Using TTYIN as a General Editor)-32.4(.................................................................)-83.3(26-25)]TJ +T* +[(?= Handler)-176.9(.......................................................................................................)-83.3(26-26)]TJ +T* +[(Read Macros)-154.5(....................................................................................................)-83.3(26-27)]TJ +T* +[(Assorted Flags)-107.1(.................................................................................................)-83.3(26-28)]TJ +T* +[(Special Responses)-159.3(...........................................................................................)-83.3(26-29)]TJ +T* +[(Display Types)-56.8(..................................................................................................)-83.3(26-30)]TJ +-2 -1.3333 TD +[(Prettyprint)-34.8(................................................................................................................)-83.3(26-3)]TJ +34.833 0 TD +(1)Tj +-32.833 -1.3333 TD +[(Comment Feature)-170.6(...........................................................................................)-83.3(26-33)]TJ +T* +[(Comment Pointers)-112(..........................................................................................)-83.3(26-34)]TJ +T* +[(Converting Comments to Lowercase)-220.4(..........................................................)-83.3(26-35)]TJ +T* +[(Special Prettyprint Controls)-85.1(..........................................................................)-83.3(26-36)]TJ +/TT6 1 Tf +12 0 0 12 54 271.39 Tm +[(26. Graphics Output Operations )-144(.................................................................)-166.7(27-1)]TJ +/TT8 1 Tf +9 0 0 9 138 258.54 Tm +[(Primitive Graphics Concepts )-180.8(................................................................................)-83.3(27-1)]TJ +2 -1.3333 TD +[(Positions)-133(.............................................................................................................)-83.3(27-1)]TJ +T* +[(Regions)-120.8(...............................................................................................................)-83.3(27-1)]TJ +T* +[(Bitmaps)-30.9(...............................................................................................................)-83.3(27-2)]TJ +T* +[(Textures)-81.7(..............................................................................................................)-83.3(27-5)]TJ +-2 -1.3333 TD +[(Opening Image Streams...........................................................................................)-83.3(27-6)]TJ +T* +[(Accessing Image Stream Fields)-230.6(..............................................................................)-83.3(27-8)]TJ +T* +[(Current Position of an Image Stream)-243.8(..................................................................)-83.3(27-10)]TJ +T* +[(Moving Bits Between Bitmaps with BITBLT)-175(......................................................)-83.3(27-11)]TJ +T* +[(Drawing Lines)-97.8(.........................................................................................................)-83.3(27-13)]TJ +T* +[(Drawing Curves)-59.7(......................................................................................................)-83.3(27-14)]TJ +T* +[(Miscellaneous Drawing and Printing Operations)-184.7(.............................................)-83.3(27-15)]TJ +T* +[(Drawing and Shading Grids)-160.8(.................................................................................)-83.3(27-17)]TJ +T* +[(Display Streams)-197.9(......................................................................................................)-83.3(27-18)]TJ +T* +[(Fonts)-232.6(.........................................................................................................................)-83.3(2)]TJ +33.5 0 TD +(7-19)Tj +-33.5 -1.3333 TD +[(Font Files and Font Directories)-68.5(.............................................................................)-83.3(27-24)]TJ +T* +[(Font Profiles)-43.6(.............................................................................................................)-83.3(27-24)]TJ +T* +[(Image Objects)-165.7(..........................................................................................................)-83.3(27-27)]TJ +2 -1.3333 TD +[(IMAGEFNS Methods)-156.4(.....................................................................................)-83.3(27-28)]TJ +ET +endstream +endobj +34 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +36 0 obj +<< +/Length 5905 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10)Tj +/TT8 1 Tf +11.3333 60.6156 TD +[(Registering Image Objects)-35(.............................................................................)-166.7(27-30)]TJ +0 -1.3333 TD +[(Reading and Writing Image Objects on Files)-92.1(.............................................)-166.7(27-31)]TJ +T* +[(Copying Image Objects Between Windows)-163.4(...............................................)-166.7(27-31)]TJ +-2 -1.3333 TD +[(Implementation of Image Streams)-61.8(.......................................................................)-166.7(27-32)]TJ +/TT6 1 Tf +12 0 0 12 102 511.39 Tm +[(27. Windows and Menus )-225.1(..............................................................................)-166.7(28-1)]TJ +/TT8 1 Tf +9 0 0 9 186 498.54 Tm +[(Using the Window System)-8.6(......................................................................................)-166.7(28-1)]TJ +T* +[(Changing the Window System)-31.1(...............................................................................)-166.7(28-6)]TJ +T* +[(Interactive Display Functions)-68.2(.................................................................................)-166.7(28-7)]TJ +T* +[(Windows)-45.7(....................................................................................................................)-166.7(28-9)]TJ +2 -1.3333 TD +[(Window Properties)-179.5(........................................................................................)-166.7(28-10)]TJ +T* +[(Creating Windows)-207.4(.........................................................................................)-166.7(28-10)]TJ +T* +[(Opening and Closing Windows)-76.5(...................................................................)-166.7(28-11)]TJ +T* +[(Redisplaying Windows)-195.6(.................................................................................)-166.7(28-12)]TJ +T* +[(Reshaping Windows)-112.6(......................................................................................)-166.7(28-13)]TJ +T* +[(Moving Windows)-59.9(...........................................................................................)-166.7(28-14)]TJ +T* +[(Exposing and Burying Windows)-131.7(.................................................................)-166.7(28-16)]TJ +T* +[(Shrinking Windows into Icons)-107.7(.....................................................................)-166.7(28-16)]TJ +T* +[(Coordinate Systems, Extents, and Scrolling)-103.8(...............................................)-166.7(28-18)]TJ +T* +[(Mouse Activity in Windows)-98(.........................................................................)-166.7(28-21)]TJ +T* +[(Terminal I/O and Page Holding)-29.6(..................................................................)-166.7(28-22)]TJ +T* +[(TTY Process and the Caret)-136.1(............................................................................)-166.7(28-23)]TJ +T* +[(Miscellaneous Window Functions)-66.2(...............................................................)-166.7(28-24)]TJ +T* +[(Miscellaneous Window Properties)-130.2(..............................................................)-166.7(28-25)]TJ +T* +[(Example: A Scrollable Window)-245.9(...................................................................)-166.7(28-26)]TJ +-2 -1.3333 TD +[(Menus)-49.6(.......................................................................................................................)-166.7(28-)]TJ +34.333 0 TD +(28)Tj +-32.333 -1.3333 TD +[(Menu Fields)-71.6(.....................................................................................................)-166.7(28-29)]TJ +T* +[(Miscellaneous Menu Functions)-70.1(....................................................................)-166.7(28-32)]TJ +T* +[(Examples of Menu Use)-109.2(..................................................................................)-166.7(28-32)]TJ +-2 -1.3333 TD +[(Attached Windows)-249.8(................................................................................................)-166.7(28-34)]TJ +2 -1.3333 TD +[(Attaching Menus to Windows......................................................................)-166.7(28-37)]TJ +T* +[(Attached Prompt Windows)-144.9(..........................................................................)-166.7(28-38)]TJ +T* +[(Window Operations and Attached Windows)-13(............................................)-166.7(28-39)]TJ +T* +[(Window Properties of Attached Windows)-217.1(................................................)-166.7(28-41)]TJ +/TT6 1 Tf +12 0 0 12 102 152.39 Tm +[(28. Hardcopy Facilities )-141.1(..................................................................................)-166.7(29-1)]TJ +/TT8 1 Tf +9 0 0 9 186 139.54 Tm +[(Hardcopy Functions)-244.5(................................................................................................)-166.7(29-1)]TJ +T* +[(Low-Level Hardcopy Variables)-194.7(.............................................................................)-166.7(29-4)]TJ +/TT6 1 Tf +12 0 0 12 102 105.39 Tm +[(29. Terminal Input/Output )-95.7(...........................................................................)-166.7(30-1)]TJ +/TT8 1 Tf +9 0 0 9 186 92.54 Tm +[(Interrupt Characters)-35(.................................................................................................)-166.7(30-1)]TJ +T* +[(Terminal Tables)-189.8(........................................................................................................)-166.7(30-4)]TJ +2 -1.3333 TD +[(Terminal Syntax Classes)-43.8(..................................................................................)-166.7(30-4)]TJ +T* +[(Terminal Control Functions)-50.6(............................................................................)-166.7(30-5)]TJ +T* +[(Line-Buffering)-104.3(...................................................................................................)-166.7(30-7)]TJ +ET +endstream +endobj +37 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +39 0 obj +<< +/Length 5982 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 471 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11)Tj +/TT8 1 Tf +-37 60.6156 TD +[(Dribble Files)-39.2(.............................................................................................................)-83.3(30-10)]TJ +0 -1.3333 TD +[(Cursor and Mouse)-154.5(..................................................................................................)-83.3(30-10)]TJ +2 -1.3333 TD +[(Changing the Cursor Image)-94.4(..........................................................................)-83.3(30-11)]TJ +T* +[(Flashing Bars on the Cursor)-117.8(..........................................................................)-83.3(30-13)]TJ +T* +[(Cursor Position)-235(...............................................................................................)-83.3(30-13)]TJ +T* +[(Mouse Button Testing)-154(....................................................................................)-83.3(30-14)]TJ +T* +[(Low-Level Mouse Functions)-66.6(.........................................................................)-83.3(30-15)]TJ +-2 -1.3333 TD +[(Keyboard Interpretation)-134.9(........................................................................................)-83.3(30-15)]TJ +T* +[(Display Screen)-75.8(.........................................................................................................)-83.3(30-18)]TJ +T* +[(Miscellaneous Terminal I/O)-104.7(.................................................................................)-83.3(30-19)]TJ +/TT6 1 Tf +12 0 0 12 54 439.39 Tm +[(30. Ethernet )-112.3(......................................................................................................)-166.7(31-1)]TJ +/TT8 1 Tf +9 0 0 9 138 426.54 Tm +[(Ethernet Protocols)-14.8(.....................................................................................................)-83.3(31-1)]TJ +2 -1.3333 TD +[(Protocol Layering)-248.7(.............................................................................................)-83.3(31-1)]TJ +T* +[(Level Zero Protocols)-33.4(.........................................................................................)-83.3(31-2)]TJ +T* +[(Level One Protocols)-23.1(..........................................................................................)-83.3(31-2)]TJ +T* +[(Higher Level Protocols)-235(....................................................................................)-83.3(31-3)]TJ +T* +[(Connecting Networks: Routers and Gateways)-162.3(............................................)-83.3(31-3)]TJ +T* +[(Addressing Conflicts with Level Zero Mediums)-39.2(.........................................)-83.3(31-3)]TJ +T* +[(References)-154.9(..........................................................................................................)-83.3(31-4)]TJ +-2 -1.3333 TD +[(Higher-Level PUP Protocol Functions)-236(..................................................................)-83.3(31-4)]TJ +T* +[(Higher-Level NS Protocol Functions)-115.9(.....................................................................)-83.3(31-5)]TJ +2 -1.3333 TD +[(Name and Address Conventions)-177.9(...................................................................)-83.3(31-5)]TJ +T* +[(Clearinghouse Functions)-125.6(.................................................................................)-83.3(31-7)]TJ +T* +[(NS Printing)-183.3(........................................................................................................)-83.3(31-9)]TJ +T* +[(SPP Stream Interface)-200.8(........................................................................................)-83.3(31-9)]TJ +T* +[(Courier Remote Procedure Call Protocol)-73.4(....................................................)-83.3(31-11)]TJ +3.3333 -1.3333 TD +[(Defining Courier Programs)-224.4(.............................................................)-83.3(31-11)]TJ +T* +[(Courier Type Definitions)-247.4(.................................................................)-83.3(31-12)]TJ +T* +[(Pre-defined Types)-213.7(.............................................................................)-83.3(31-13)]TJ +T* +[(Constructed Types)-215.7(............................................................................)-83.3(31-13)]TJ +T* +[(User Extensions to the Type Language)-81.4(..........................................)-83.3(31-15)]TJ +T* +[(Performing Courier Transactions)-224.9(...................................................)-83.3(31-16)]TJ +T* +[(Expedited Procedure Call)-211.7(................................................................)-83.3(31-17)]TJ +T* +[(Expanding Ring Broadcast)-29.6(...............................................................)-83.3(31-18)]TJ +T* +[(Using Bulk Data Transfer)-70.6(.................................................................)-83.3(31-18)]TJ +T* +[(Courier Subfunctions for Data Transfer)-8.6(.........................................)-83.3(31-19)]TJ +-5.3333 -1.3333 TD +[(Level One Ether Packet Format)-136.4(............................................................................)-83.3(31-20)]TJ +T* +[(PUP Level One Functions)-54.8(......................................................................................)-83.3(31-21)]TJ +2 -1.3333 TD +[(Creating and Managing Pups)-140.3(.......................................................................)-83.3(31-21)]TJ +T* +[(Sockets)-116.9(..............................................................................................................)-83.3(31-22)]TJ +T* +[(Sending and Receiving Pups)-10.9(.........................................................................)-83.3(31-23)]TJ +T* +[(Pup Routing Information)-215.5(..............................................................................)-83.3(31-23)]TJ +T* +[(Miscellaneous PUP Utilities)-134.4(..........................................................................)-83.3(31-24)]TJ +T* +[(PUP Debugging Aids)-126.6(.....................................................................................)-83.3(31-24)]TJ +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +44 0 obj +<< +/Length 1353 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12)Tj +/TT8 1 Tf +9.3333 60.6156 TD +[(NS Level One Functions)-101.4(........................................................................................)-166.7(31-28)]TJ +2 -1.3333 TD +[(Creating and Managing XIPs)-7.2(........................................................................)-166.7(31-28)]TJ +T* +[(NS Sockets)-177.6(.......................................................................................................)-166.7(31-28)]TJ +T* +[(Sending and Receiving XIPs)-127.8(.........................................................................)-166.7(31-29)]TJ +T* +[(NS Debugging Aids)-173.2(.......................................................................................)-166.7(31-29)]TJ +-2 -1.3333 TD +[(Support for Other Level One Protocols...............................................................)-166.7(31-29)]TJ +T* +[(The SYSQUEUE Mechanism)-248.9(................................................................................)-166.7(31-31)]TJ +/TT6 1 Tf +12 0 0 12 102 475.39 Tm +[(Glossary)-194.8(...........................................................................................GLOSSARY-1)]TJ +0 -1.9167 TD +[(Index)-139.2(..........................................................................................................)-83.3(INDEX-1)]TJ +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +47 0 obj +<< +/Length 129 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 471 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13)Tj +/TT8 1 Tf +-27 52.2833 TD +([This page intentionally left blank])Tj +ET +endstream +endobj +48 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +8 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +49 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +50 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +51 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +52 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +53 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +25 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 87 +/Widths [287 296 333 574 574 833 852 241 389 389 500 606 278 333 278 278 +574 574 574 574 574 574 574 574 574 574 278 278 606 606 606 500 +747 759 778 778 833 759 722 833 870 444 648 815 722 981 833 833 +759 833 815 667 722 833 759 981 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 53 0 R +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 48 +/LastChar 57 +/Widths [500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 49 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 118 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 278 +0 556 556 556 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 0 667 0 0 0 278 0 0 611 0 722 778 +0 0 722 667 611 0 667 0 0 0 0 0 0 0 0 0 +0 556 0 556 0 556 333 611 0 278 0 0 278 889 611 611 +0 0 389 0 333 611 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 50 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 296 +500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 +0 778 667 722 833 611 556 833 833 389 0 0 611 1000 833 833 +611 0 722 611 667 778 778 1000 667 667 0 0 0 0 0 0 +0 500 611 444 611 500 389 556 611 333 0 611 333 889 611 556 +611 0 389 444 333 611 556 833 500 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 51 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 371 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 0 0 606 0 444 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 786 668 525 613 778 722 1000 667 667 667 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 52 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +10 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 12 0 R +/Contents 11 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 34 0 R +/Contents 33 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 37 0 R +/Contents 36 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 42 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 42 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +46 0 obj +<< +/Type /Page +/Parent 42 0 R +/Resources 48 0 R +/Contents 47 0 R +>> +endobj +54 0 obj +<< +/S /D +>> +endobj +55 0 obj +<< +/Nums [0 54 0 R ] +>> +endobj +9 0 obj +<< +/Type /Pages +/Kids [1 0 R 10 0 R 13 0 R 16 0 R 19 0 R 22 0 R 26 0 R 29 0 R 32 0 R 35 0 R] +/Count 10 +/Parent 41 0 R +>> +endobj +42 0 obj +<< +/Type /Pages +/Kids [38 0 R 43 0 R 46 0 R] +/Count 3 +/Parent 41 0 R +>> +endobj +41 0 obj +<< +/Type /Pages +/Kids [9 0 R 42 0 R ] +/Count 13 +/MediaBox [0 0 612 792] +>> +endobj +56 0 obj +<< +/CreationDate (D:20210202102637-06'00') +/ModDate (D:20210202102637-06'00') +/Producer (Apple pstopdf) +>> +endobj +57 0 obj +<< +/Type /Catalog +/Pages 41 0 R +/PageLabels 55 0 R +>> +endobj +xref +0 58 +0000000000 65535 f +0000072779 00000 n +0000000016 00000 n +0000005301 00000 n +0000071134 00000 n +0000071337 00000 n +0000071747 00000 n +0000072224 00000 n +0000069576 00000 n +0000073926 00000 n +0000072859 00000 n +0000005429 00000 n +0000011585 00000 n +0000072942 00000 n +0000011703 00000 n +0000017564 00000 n +0000073025 00000 n +0000017693 00000 n +0000023906 00000 n +0000073108 00000 n +0000024024 00000 n +0000030302 00000 n +0000073191 00000 n +0000030420 00000 n +0000036636 00000 n +0000070736 00000 n +0000073274 00000 n +0000036765 00000 n +0000042634 00000 n +0000073357 00000 n +0000042763 00000 n +0000048939 00000 n +0000073440 00000 n +0000049057 00000 n +0000055417 00000 n +0000073523 00000 n +0000055535 00000 n +0000061493 00000 n +0000073606 00000 n +0000061611 00000 n +0000067646 00000 n +0000074150 00000 n +0000074062 00000 n +0000073690 00000 n +0000067764 00000 n +0000069170 00000 n +0000073774 00000 n +0000069288 00000 n +0000069469 00000 n +0000069716 00000 n +0000069913 00000 n +0000070119 00000 n +0000070324 00000 n +0000070524 00000 n +0000073858 00000 n +0000073886 00000 n +0000074241 00000 n +0000074364 00000 n +trailer +<< +/Size 58 +/Root 57 0 R +/Info 56 0 R +/ID [<262867cb2c4972b47e22e2c65ab73e32><262867cb2c4972b47e22e2c65ab73e32>] +>> +startxref +74434 +%%EOF diff --git a/docs/medley-irm/01-INTRO.TEDIT b/docs/medley-irm/01-INTRO.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..176f6df1ba2b0cf69518ef4e40b103f7781a4cad GIT binary patch literal 23114 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 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/01-INTRO.pdf b/docs/medley-irm/01-INTRO.pdf new file mode 100644 index 00000000..dfac3c11 --- /dev/null +++ b/docs/medley-irm/01-INTRO.pdf @@ -0,0 +1,1676 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 4452 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 468 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(1. INTRODUCTION)Tj +/TT6 1 Tf +9 0 0 9 54 559.54 Tm +( )Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +56.26 560.54 m +510.01 560.54 l +S +BT +9 0 0 9 78 535.54 Tm +0.0022 Tw +(Medley is a )Tj +/TT8 1 Tf +5.3333 0 TD +(programming system)Tj +/TT6 1 Tf +8.5862 0 TD +0.0001 Tc +0.0021 Tw +( that consists of a programming )Tj +/TT8 1 Tf +14.2751 0 TD +0 Tc +0 Tw +(language)Tj +/TT6 1 Tf +3.667 0 TD +0.0022 Tw +(, a large number of predefined)Tj +-31.8616 -1.2222 TD +0.0711 Tw +(programs \(or )Tj +/TT8 1 Tf +6.216 0 TD +0 Tw +(functions)Tj +/TT6 1 Tf +3.7974 0 TD +0.0711 Tw +(\) that you can use directly or as subroutines, and an )Tj +/TT8 1 Tf +23.8452 0 TD +0 Tw +(environment)Tj +/TT6 1 Tf +5.1685 0 TD +0.0711 Tw +[( that supports)]TJ +-39.027 -1.2222 TD +0.0422 Tw +[(you with a variety of specialized programming tools. The language and predefined functions of Lisp)]TJ +T* +0.1322 Tw +[(are rich, but similar to those of other modern programming languages. The Medley programming)]TJ +T* +0.3444 Tw +[(environment, on the other hand, is very distinctive. Its main feature is an integrated set of)]TJ +T* +0.0656 Tw +(programming tools that know enough about Interlisp and Common Lisp to act as semi-autonomous,)Tj +T* +0.2456 Tw +[(intelligent "assistants" to you. This environment provides a completely self-contained world for)]TJ +T* +0 Tw +(creating, debugging and maintaining Lisp programs.)Tj +0 -2.8889 TD +0.15 Tw +[(This manual describes all three parts of Medley. There are discussions of the language, about the)]TJ +0 -1.2222 TD +0.1011 Tw +[(pieces of the system that can be incorporated into your programs, and about the environment. The)]TJ +T* +0.3833 Tw +[(line between your code and the environment is thin and changing. Most users extend the)]TJ +T* +0.1944 Tw +[(environment with some special features of their own. Because Medley is so easily extended, the)]TJ +T* +0.1067 Tw +(system has grown over time to incorporate many different ideas about effective and useful ways to)Tj +T* +0.0333 Tw +[(program. This gradual accumulation over many years has resulted in a rich and diverse system. It is)]TJ +T* +0 Tw +(also the reason this manual is so large. )Tj +0 -2.8889 TD +0.0789 Tw +(The rest of this manual describes the individual pieces of Medley; this chapter describes system as a)Tj +0 -1.2222 TD +0.0233 Tw +[(wholeincluding the otherwise-unstated philosophies that tie it all together. It will give you a global)]TJ +T* +0 Tw +(view of Medley.)Tj +/TT4 1 Tf +10 0 0 10 54 291.2 Tm +(Lisp as a Programming Language)Tj +ET +1 w +54.01 288.49 m +510.01 288.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 266.54 Tm +0.0533 Tw +[(This manual is not an introduction to programming in Lisp. This section highlights a few key points)]TJ +T* +0 Tw +(about lisp that will make the rest of the manual clear. )Tj +0 -2.8889 TD +0.0044 Tw +(In Lisp, large programs \(or functions\) are built up by composing the results of smaller ones. Although)Tj +0 -1.2222 TD +0.0956 Tw +(Medley, like most modern Lisps, lets you program in almost any style you can imagine, the natural)Tj +T* +0.1989 Tw +(style of Lisp is functional and recursiveeach function computes its result by calling lower-level)Tj +T* +0.0433 Tw +(building-block functions, then passing that result back to its caller \(rather than by producing side-)Tj +T* +0 Tw +(effects on external data structures, for example\). )Tj +0 -2.8889 TD +0.2133 Tw +[(Lisp is also a list-manipulation language. Like other languages, Lisp can process characters and)]TJ +0 -1.2222 TD +0.0001 Tc +0.0043 Tw +(numbers. But you get more power if you program at a higher level. The primitive data objects of Lisp)Tj +T* +0 Tc +0.2556 Tw +(are atoms \(symbols or identifiers\) and lists \(sequences of atoms or lists\), which you use to)Tj +T* +0.1 Tw +[(represent information and relationships. Each Lisp dialect has a set of operations that act on atoms)]TJ +T* +0 Tw +(and lists, and these operations comprise the core of the language.)Tj +0 -2.8889 TD +0.1433 Tw +(Invisible in the programs, but essential to the Lisp style of programming, is an automatic memory)Tj +0 -1.2222 TD +0.5056 Tw +[(management system \(an allocator and a garbage collector\). New storage is allocated)]TJ +T* +0.0711 Tw +[(automatically whenever a you create a new data object. And that storage is automatically reclaimed)]TJ +T* +0.12 Tw +[(for reuse when no other object refers to it. Automated memory management is essential for rapid,)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +11 0 obj +<< +/Length 4961 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1-2)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1933 Tw +(large-scale program development because it frees you from the task of maintaining the details of)Tj +0 -1.2222 TD +0 Tw +(memory administration, which change constantly during rapid program evolution.)Tj +0 -2.8889 TD +0.2656 Tw +[(A key property of Lisp is that Lisp function definitions are just pieces of Lisp list data. Each)]TJ +0 -1.2222 TD +0.1478 Tw +(subfunction "call" \(or )Tj +/TT8 1 Tf +10.0224 0 TD +(function application)Tj +/TT6 1 Tf +8.2674 0 TD +(\) is written as a list with the function first, followed by its)Tj +-18.2898 -1.2222 TD +0.0433 Tw +(arguments. Thus, )Tj +/TT12 1 Tf +8.0564 0 TD +0.1033 Tw +(\(PLUS 1 2\))Tj +/TT6 1 Tf +6.2076 0 TD +0.0433 Tw +[( represents the expression )]TJ +/TT12 1 Tf +11.8813 0 TD +0 Tw +(1+2)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[(. A functions definition, then, is just a)]TJ +-27.9457 -1.2889 TD +0.0122 Tw +[(list of such function applications, to be evaluated in order. This representation of program as data lets)]TJ +0 -1.2222 TD +0.1178 Tw +(you use the same operations on programs that you use on datamaking it very easy to write Lisp)Tj +T* +0.2667 Tw +(programs that look at and change )Tj +/TT8 1 Tf +16.7353 0 TD +(other Lisp programs)Tj +/TT6 1 Tf +8.6447 0 TD +[(. This, in turn, makes it easy to develop)]TJ +-25.3799 -1.2222 TD +0.4455 Tw +(programming tools and translators, which was essential to the development of the Medley)Tj +T* +0 Tw +(environment.)Tj +0 -2.8889 TD +0.0756 Tw +[(The most important benefit of this is that you can extend the Lisp programming language itself. Do)]TJ +0 -1.2222 TD +0.2678 Tw +[(you miss some favorite programming idiom? Just define a function that translates the desired)]TJ +T* +0.0711 Tw +[(expression into simpler Lisp. Now your idiom is )]TJ +/TT8 1 Tf +22.5599 0 TD +(part of the language)Tj +/TT6 1 Tf +8.2402 0 TD +[(. Medley has extensive facilities)]TJ +-30.8001 -1.2222 TD +0.3589 Tw +[(for making this type of language extension. Using this ability to extend itself, Interlisp has)]TJ +T* +0.3178 Tw +(incorporated many of the constructs that have been developed in other modern programming)Tj +T* +0 Tw +(languages \(e.g. if-then-else, do loops, etc.\).)Tj +/TT4 1 Tf +10 0 0 10 102 346.6 Tm +(Medley as an Interactive Environment)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 343.89 m +558.01 343.89 l +S +BT +/TT6 1 Tf +9 0 0 9 126 321.94 Tm +0.0633 Tw +[(Medley programs should not be thought of as simple files of source code. All Medley programming)]TJ +T* +0.1933 Tw +(takes place within the Medley environment, which is a completely self-sufficient environment for)Tj +T* +0.1244 Tw +(developing and using Medley programs. Beyond the obvious programming facilities \(e.g., program)Tj +T* +0.0667 Tw +(editors, compilers, debuggers, etc.\), the envionrment also contains a variety of tools that "keep track")Tj +T* +0.0878 Tw +[(of what happens. For example, the Medley File Manager notices when programs or data have been)]TJ +T* +0.0967 Tw +[(changed, so the system will know what needs to be saved at the end of a session. The "residential")]TJ +T* +0.05 Tw +(style, where you stay inside the environment throughout the development, is essential for these tools)Tj +T* +0.0689 Tw +[(to operate. Furthermore, this same environment is available to support the final production version,)]TJ +T* +0.0333 Tw +(some parts providing run time support and other parts being ignored until the need arises for further)Tj +T* +0 Tw +(debugging or development.)Tj +0 -2.8889 TD +0.3244 Tw +(For terminal interaction, Medley provides a top level "Read-Eval-Print" executive, which reads)Tj +0 -1.2222 TD +0.0267 Tw +[(whatever you type in, evaluates it, and prints the result. \(This interaction is also recorded, so you can)]TJ +T* +0.1589 Tw +[(ask to do an action again, or even to undo the effects of a previous action.\) Although Executives)]TJ +T* +0.4267 Tw +(understand some specialized commands, most of the interaction will consist of simple Lisp)Tj +T* +0.1233 Tw +[(expressions. So rather than special commands for operations like manipulating your files, you just)]TJ +T* +0.0656 Tw +[(type the same expressions that you would use to accomplish them in a Lisp program. This creates a)]TJ +T* +0.0278 Tw +(very rich, simple, and uniform set of interactive commands, since any Lisp expression can be typed at)Tj +T* +0 Tw +(an executive and evaluated immediately.)Tj +0 -2.8889 TD +0.1233 Tw +(In normal use, you write a program \(or rather, "define a function"\) by typing in an expression that)Tj +0 -1.2222 TD +0.0256 Tw +(invokes the "function defining" function )Tj +/TT12 1 Tf +18.0892 0 TD +0 Tw +(\(DEFINEQ\))Tj +/TT6 1 Tf +5.4009 0 TD +0.0256 Tw +(, giving it the name of the function being defined)Tj +-23.4901 -1.2889 TD +0.0644 Tw +[(and its new definition. The newly-defined function can be executed immediately, simply by using it)]TJ +0 -1.2222 TD +0 Tw +(in a Lisp expression.)Tj +ET +endstream +endobj +12 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +16 0 obj +<< +/Length 3944 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 468 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1-3)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(INTRODUCTION)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0911 Tw +(In addition to these basic programming tools, Medley also provides a wide variety of programming)Tj +0 -1.2222 TD +0 Tw +(support mechanisms: )Tj +3.87 -2 TD +0.2867 Tw +[(List )286.7(structure )286.7(editor)-668.4(Since Lisp programs are represented as list structure, Medley)]TJ +9.4633 -1.2222 TD +0.01 Tw +(provides an editor which allows one to change the list structure of)Tj +T* +0 Tw +(a functions definition directly. See Chapter 16.)Tj +-6.7556 -2 TD +0.5267 Tw +[(Pretty-printer)-666.7(The pretty printer is a function that prints Lisp function)]TJ +6.7556 -1.2222 TD +0.2311 Tw +(definitions so that their syntactic structure is displayed by the)Tj +T* +0 Tw +(indentation and fonts used. See page Chapter 26.)Tj +-5.0622 -2 TD +0.3833 Tw +[(Debugger)-666.7(When errors occur, the debugger is called, allowing you to)]TJ +5.0622 -1.2222 TD +0.0867 Tw +[(examine and modify the context at the point of the error. Often,)]TJ +T* +0.4889 Tw +(this lets you continue execution without starting from the)Tj +T* +0.0456 Tw +[(beginning. Within a break, the full power of Interlisp is available)]TJ +T* +0.1011 Tw +[(to you. Thus, the broken function can be edited, data structures)]TJ +T* +0.2 Tw +(can be inspected and changed, other computations carried out,)Tj +T* +0.2122 Tw +[(and so on. All of this occurs in the context of the suspended)]TJ +T* +0.4578 Tw +[(computation, which remains available to be resumed. See)]TJ +T* +0 Tw +(Chapter 14.)Tj +-3.7233 -2 TD +0.1344 Tw +[(DWIM)-666.7(The "Do What I Mean" package automatically fixes misspellings)]TJ +3.7233 -1.2222 TD +0 Tw +(and errors in typing. See Chapter 20.)Tj +-11.3322 -2 TD +0.1333 Tw +[(Programmers )133.3(Assistant)-670.1(Medley keeps track of your actions during a session and allows)]TJ +11.3322 -1.2222 TD +0 Tw +(each one to be replayed, undone, or altered. See Chapter 13.)Tj +-6.2311 -2 TD +0.15 Tw +[(Masterscope)-667.6(Masterscope is a program analysis and management tool which)]TJ +6.2311 -1.2222 TD +0.5411 Tw +(can analyze users functions and build \(and automatically)Tj +T* +0.2778 Tw +[(maintain\) a data base of the results. This allows you to ask)]TJ +T* +0.1789 Tw +(questions like ")Tj +/TT12 1 Tf +7.0809 0 TD +0.4278 Tw +(WHO CALLS ARCTAN)Tj +/TT6 1 Tf +10.4571 0 TD +0.1789 Tw +(" or ")Tj +/TT12 1 Tf +2.5409 0 TD +0.4278 Tw +(WHO USES COEF1)Tj +-20.0789 -1.2889 TD +0 Tw +(FREELY)Tj +/TT6 1 Tf +3.6006 0 TD +0.2478 Tw +(" or to request systematic changes like ")Tj +/TT12 1 Tf +19.1427 0 TD +0.5933 Tw +(EDIT WHERE)Tj +-22.7432 -1.2889 TD +0 Tw +(ANY )Tj +/TT6 1 Tf +2.5282 0 TD +([function])Tj +/TT12 1 Tf +4.373 0 TD +0.1278 Tw +[( FETCHES ANY FIELD OF )]TJ +/TT6 1 Tf +13.841 0 TD +0.0533 Tw +([the data structure])Tj +/TT12 1 Tf +-20.7423 -1.2889 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +(". See Chapter 19.)Tj +-14.1659 -2.0667 TD +0.1511 Tw +[(Record/Datatype )151.1(Package)-665.4(Medley allows you to define new data structures. This enables)]TJ +12.3656 -1.2222 TD +0.1067 Tw +(one to separate the issues of data access from the details of how)Tj +T* +0 Tw +(the data is actually stored. See Chapter 8.)Tj +-6.4911 -2 TD +0.0089 Tw +[(File )8.9(Manager)-665.9(Source code files in Medley are managed by the system, removing)]TJ +6.4911 -1.2222 TD +0.1378 Tw +[(the problem of ensuring timely file updates from the user. The)]TJ +T* +0.1522 Tw +(file manager can be modified and extended to accomodate new)Tj +T* +0 Tw +(types of data. See Chapter 17.)Tj +-10.4056 -2 TD +0.1167 Tw +[(Performance )116.7(Analysis)-670.2(These tools allow statistics on program operation to be collected)]TJ +10.4056 -1.2222 TD +0 Tw +(and analyzed. See Chapter 22.)Tj +-8.9656 -2 TD +0.3156 Tw +[(Multiple )315.6(Processes)-669.2(Multiple and independent processes simplify problems which)]TJ +8.9656 -1.2222 TD +0.0078 Tw +[(require logically separate pieces of code to operate in parallel. See)]TJ +T* +0 Tw +(Chapter 23.)Tj +ET +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 13 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +19 0 obj +<< +/Length 5101 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1-4)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 201.4 569.54 Tm +0.0056 Tw +[(Windows)-668(The ability to have multiple, independent windows on the display)]TJ +4.9556 -1.2222 TD +0.1478 Tw +(allows many different processes or activities to be active on the)Tj +T* +0 Tw +(screen at once. See Chapter 28.)Tj +-4.8011 -2 TD +0.3856 Tw +[(Inspector)-667.3(The inspector is a display tool for examining complex data)]TJ +4.8011 -1.2222 TD +0 Tw +(structures encountered during debugging. See Chapter 26.)Tj +-13.3333 -2.8889 TD +0.0344 Tw +(These facilities are tightly integrated, so they know about and use each other, just as they can be used)Tj +0 -1.2222 TD +0.0844 Tw +[(by user programs. For example, Masterscope uses the structural editor to make systematic changes.)]TJ +T* +0.0489 Tw +(By combining the program analysis features of Masterscope with the features of the structural editor,)Tj +T* +0.0456 Tw +[(large scale system changes can be made with a single command. For example, when the lowest-level)]TJ +T* +0.01 Tw +(interface of the Medley I/O system was changed to a new format, the entire edit was made by a single)Tj +0 -1.2278 TD +0.0133 Tw +(call to Masterscope of the form)Tj +/TT12 1 Tf +10 0 0 10 249.3085 437.49 Tm +0 Tw +( )Tj +9 0 0 9 255.6395 437.49 Tm +0.0322 Tw +(EDIT WHERE ANY CALLS \(BIN BOUT ...\))Tj +/TT6 1 Tf +21.7969 0 TD +0.0133 Tw +(. [Burton et al., 1980])Tj +-36.2012 -1.3278 TD +0.0089 Tw +(This caused Masterscope to invoke the editor at each point in the system where any of the functions in)Tj +0 -1.2222 TD +0.0267 Tw +(the list )Tj +/TT12 1 Tf +3.2726 0 TD +0.0633 Tw +(\(BIN BOUT ...\))Tj +/TT6 1 Tf +9.1281 0 TD +0.0267 Tw +[( were called. This ensured that no functions used in input or output were)]TJ +-12.4007 -1.2889 TD +0 Tw +(overlooked during the modification. )Tj +/TT4 1 Tf +10 0 0 10 102 375.6 Tm +(Philosophy)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 372.89 m +558.01 372.89 l +S +BT +/TT6 1 Tf +9 0 0 9 126 350.94 Tm +0.0322 Tw +[(Medleys extensive environmental support has developed over the years to support a particular style)]TJ +0 -1.2222 TD +0.1378 Tw +[(of programming called "exploratory programming" [Sheil, 1983]. For many complex programming)]TJ +T* +0.04 Tw +(problems, the task of program creation is )Tj +/TT8 1 Tf +18.678 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.04 Tw +[( simply one of writing a program to fulfill specifications.)]TJ +-20.011 -1.2222 TD +0.1967 Tw +(Instead, it is a matter of exploring the problem \(trying out various solutions expressed as partial)Tj +T* +0.0544 Tw +[(programs\) until one finds a good solution \(or sometimes, any solution at all!\). Such programs are by)]TJ +T* +0.0722 Tw +(nature evolutionary; they are transformed over time from one realization to another in response to a)Tj +T* +0.1233 Tw +[(growing understanding of the problem. This point of view has lead to an emphasis on having the)]TJ +T* +0.0044 Tw +(tools available to analyze, alter, and test programs easily. One important aspect of this is that the tools)Tj +T* +0.0611 Tw +(be designed to work together in an integrated fashion, so that knowledge about the users programs,)Tj +T* +0 Tw +(once gained, is available throughout the environment. )Tj +0 -2.8889 TD +0.0544 Tw +(The development of programming tools to support exploratory programming is itself an exploration.)Tj +0 -1.2222 TD +0.0567 Tw +(No one knows all the tools that will eventually be found useful, and not all programmers want all of)Tj +T* +0.1678 Tw +[(the tools to behave the same way. In response to this diversity, Interlisp has been shaped, by its)]TJ +T* +0.0478 Tw +[(implementors and by its users, to be easily extensible in several different ways. First, there are many)]TJ +T* +0.0322 Tw +[(places in the system where its behavior can be adjusted by the user. One way that this can be done is)]TJ +T* +0.1078 Tw +(by changing the value of various "flags" or variables whose values are examined by system code to)Tj +T* +0.1989 Tw +[(enable or suppress certain behavior. The other is where the user can provide functions or other)]TJ +T* +0.0978 Tw +[(behavioral specifications of what is to happen in certain contexts. For example, the format used for)]TJ +T* +0.0511 Tw +(each type of list structure when it is printed by the pretty-printer is determined by specifications that)Tj +T* +0.0056 Tw +(are found on the list )Tj +/TT12 1 Tf +9.1738 0 TD +0 Tw +(PRETTYPRINTMACROS)Tj +/TT6 1 Tf +10.2017 0 TD +0.0056 Tw +[(. Thus, this format can be changed for a given type simply)]TJ +-19.3754 -1.2889 TD +0 Tw +(by putting a printing specification for it on that list.)Tj +0 -2.8889 TD +0.2756 Tw +(Another way in which users can affect Medleys behavior is by redefining or changing system)Tj +0 -1.2222 TD +0.2644 Tw +[(functions. The "Advise" capability, for instance, lets you modify the operation of virtually any)]TJ +T* +0.2011 Tw +[(function in the system by wrapping code "around" the selected function. \(This same philosophy)]TJ +T* +0.0378 Tw +[(extends to breaking and tracing, so almost any function in the system can be broken or traced.\) Since)]TJ +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +22 0 obj +<< +/Length 5364 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 468 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1-5)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(INTRODUCTION)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.08 Tw +(the entire system is implemented in Lisp, there are few places where the systems behavior depends)Tj +0 -1.2222 TD +0 Tw +(on anything that you cant modify \(such as a low level system implementation language\). )Tj +0 -2.8889 TD +0.1756 Tw +[(While these techniques provide a fair amount of tailorability, theres a price: Medley is complex.)]TJ +0 -1.2222 TD +0.1156 Tw +[(There are many flags, parameters, and controls that affect its behavior. Because of this complexity,)]TJ +T* +0.23 Tw +[(Interlisp tends to be more comfortable for experts, rather than casual users. Beginning users of)]TJ +T* +0.16 Tw +(Interlisp should depend on the default settings of parameters until they learn what dimensions of)Tj +T* +0 Tw +(flexibility are available. At that point, they can begin to "tune" the system to their preferences.)Tj +0 -2.8889 TD +0.0889 Tw +(Appropriately enough, even Medleys underlying philosophy was itself discovered during Medleys)Tj +0 -1.2222 TD +0.0122 Tw +[(development, rather than laid out beforehand. The Medley environment and its interactive style were)]TJ +T* +0.43 Tw +[(first analyzed in Sandewalls excellent paper [Sandewall, 1978]. The notion of "exploratory)]TJ +T* +0.2622 Tw +(programming" and the genesis of the Interlisp programming tools in terms of the characteristic)Tj +T* +0.0311 Tw +[(demands of this style of programming was developed in [Sheil, 1983]. The evolution and structure of)]TJ +T* +0.2011 Tw +(the Interlisp programming environment are discussed in greater depth in [Teitelman & Masinter,)Tj +T* +0 Tw +(1981]. )Tj +/TT4 1 Tf +10 0 0 10 54 369.2 Tm +(How to Use this Manual)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 366.49 m +510.01 366.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 344.54 Tm +0.2189 Tw +[(This document is a reference manual, not a primer. We have tried to provide a manual that is)]TJ +T* +0.1089 Tw +[(complete, and that lets you find particular items as easily as possible. Sometimes, these goals have)]TJ +T* +0.0056 Tw +[(been achieved at the expense of simplicity. For example, many functions have a number of arguments)]TJ +T* +0.1856 Tw +[(that are rarely used. In the interest of providing a complete reference, these arguments are fully)]TJ +T* +0.2 Tw +[(explained, even though you will normally let them default. There is a lot of information in this)]TJ +T* +0 Tw +(manual that is of interest only to experts.)Tj +0 -2.8889 TD +0.0811 Tw +[(Do not try to read straight through this manual, like a novel. In general, the chapters are organized)]TJ +0 -1.2222 TD +0.2611 Tw +(with overview explanations and the most useful functions at the beginning of the chapter, and)Tj +T* +0.0722 Tw +[(implementation details towards the end. If you are interested in becoming acquainted with Medley,)]TJ +T* +0 Tw +(we urge you to work through )Tj +/TT8 1 Tf +13.3447 0 TD +(An Introduction to Medley)Tj +/TT6 1 Tf +10.9346 0 TD +( before attempting this manual.)Tj +-24.2793 -2.8889 TD +(A few comments about the notational conventions used in this manual:)Tj +3.7089 -2 TD +0.1267 Tw +[(Lisp )126.7(object )126.7(notation:)-666.4(All Interlisp objects in this manual are printed in the same font:)]TJ +9.6244 -1.2278 TD +0 Tw +(Functions )Tj +/TT12 1 Tf +10 0 0 10 242.456 175.49 Tm +(\()Tj +9 0 0 9 248.457 175.49 Tm +(AND)Tj +10 0 0 10 264.6596 175.49 Tm +(, )Tj +9 0 0 9 284.7116 175.49 Tm +(PLUS)Tj +10 0 0 10 306.3151 175.49 Tm +(, )Tj +9 0 0 9 326.3671 175.49 Tm +(DEFINEQ)Tj +10 0 0 10 364.1732 175.49 Tm +(, )Tj +9 0 0 9 384.2252 175.49 Tm +(LOAD)Tj +10 0 0 10 405.8287 175.49 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 411.8297 175.49 Tm +0.3356 Tw +[(; Variables)]TJ +/TT12 1 Tf +10 0 0 10 198 163.49 Tm +0 Tw +(\()Tj +9 0 0 9 204.0009 163.49 Tm +(MAX)Tj +10 0 0 10 220.2036 163.49 Tm +(.)Tj +9 0 0 9 226.2046 163.49 Tm +(INTEGER)Tj +10 0 0 10 264.0107 163.49 Tm +(, )Tj +9 0 0 9 276.7427 163.49 Tm +(FILELST)Tj +10 0 0 10 314.5488 163.49 Tm +(, )Tj +9 0 0 9 327.2808 163.49 Tm +(DFNFLG)Tj +10 0 0 10 359.6861 163.49 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 365.687 163.49 Tm +0.03 Tw +[(; and arbitrary Interlisp)]TJ +-18.6319 -1.3333 TD +0 Tw +(expressions: )Tj +/TT12 1 Tf +5.9106 0 TD +(\(PLUS 2 3\))Tj +10 0 0 10 305.2046 151.49 Tm +(, )Tj +9 0 0 9 317.2065 151.49 Tm +(\(PROG \(\(A 1\)\) ...\))Tj +/TT6 1 Tf +10.8018 0 TD +(, etc.)Tj +-32.9125 -2.1056 TD +(Case is significant:)Tj +/TT8 1 Tf +8.8656 0 TD +0.0911 Tw +(In Interlisp, upper and lower case is significant.)Tj +/TT6 1 Tf +19.8722 0 TD +[( The variable )]TJ +/TT12 1 Tf +6.6125 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0911 Tw +[( is)]TJ +-28.2849 -1.2889 TD +0.3667 Tw +(not the same as the variable )Tj +/TT12 1 Tf +14.7122 0 TD +0 Tw +(foo)Tj +/TT6 1 Tf +1.8003 0 TD +0.3667 Tw +[( or the variable )]TJ +/TT12 1 Tf +8.369 0 TD +0 Tw +(Foo)Tj +/TT6 1 Tf +1.8003 0 TD +0.3667 Tw +[(. By)]TJ +-26.6818 -1.2889 TD +0.1078 Tw +(convention, most Interlisp system functions and variables are all)Tj +0 -1.2222 TD +0.0167 Tw +(uppercase, but users are free to use upper and lower case for their)Tj +T* +0 Tw +(own functions and variables as they wish.)Tj +0 -2 TD +0.2489 Tw +(One exception to the case-significance rule is provided by the)Tj +0 -1.2222 TD +0.0144 Tw +(CLISP facility, which lets you type iterative statements and record)Tj +T* +0.01 Tw +(operations in either all uppercase or all lowercase letters: )Tj +/TT12 1 Tf +25.7079 0 TD +0.0233 Tw +(\(for X)Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +25 0 obj +<< +/Length 3692 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(1-6)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 246 569.54 Tm +0.2133 Tw +(from 1 to 5 ...\))Tj +/TT6 1 Tf +10.4549 0 TD +0.0889 Tw +[( is the same as )]TJ +/TT12 1 Tf +7.006 0 TD +0.2133 Tw +(\(FOR X FROM 1 TO 5)Tj +-17.4609 -1.2889 TD +0 Tw +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +0.2267 Tw +[(. The few situations where this is the case are explicitly)]TJ +-2.4004 -1.2889 TD +0.4711 Tw +[(mentioned in the manual. Generally, assume that case is)]TJ +0 -1.2222 TD +0 Tw +(significant. )Tj +-13.3333 -2.8889 TD +0.0078 Tw +(This manual contains a large number of descriptions of functions, variables, commands, etc, which are)Tj +0 -1.2222 TD +0 Tw +(printed in the following standard format:)Tj +3.3333 -3.2222 TD +(\()Tj +/TT14 1 Tf +0.333 0 TD +(FOO)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(BAR BAZ)Tj +/TT6 1 Tf +4.2007 0 TD +[(\) )-27319.7([Function])]TJ +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +156.01 465.69 m +510.01 465.69 l +S +BT +9 0 0 9 186 451.74 Tm +0.0367 Tw +(This is a description for the function named )Tj +/TT12 1 Tf +19.8304 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0367 Tw +(. )Tj +/TT12 1 Tf +0.8233 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0367 Tw +[( has two arguments,)]TJ +/TT18 1 Tf +-24.2544 -1.2889 TD +0 Tw +(BAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.08 Tw +[( and )]TJ +/TT18 1 Tf +2.3529 0 TD +0 Tw +(BAZ)Tj +/TT6 1 Tf +1.8003 0 TD +0.08 Tw +[(. Some system functions have extra optional arguments that)]TJ +-5.9535 -1.2889 TD +0.1189 Tw +[(are not documented and should not be used. These extra arguments are)]TJ +0 -1.2222 TD +0 Tw +(indicated by "".)Tj +0 -2 TD +0.1955 Tw +(The descriptor [Function] indicates that this is a function, rather than a)Tj +0 -1.2222 TD +0.0056 Tw +[([Variable], [Macro], etc. For function definitions only, this can also indicate)]TJ +T* +0.11 Tw +(whether the function takes a fixed or variable number of arguments, and)Tj +T* +0.0011 Tw +(whether the arguments are evaluated or not. [Function] indicates a lambda)Tj +T* +0.0044 Tw +(spread function \(fixed number of arguments, evaluated\), the most common)Tj +T* +0 Tw +(type.)Tj +/TT4 1 Tf +10 0 0 10 102 317.2 Tm +(References)Tj +ET +102.01 314.49 m +564.01 314.49 l +S +BT +/TT6 1 Tf +9 0 0 9 178.57 293.54 Tm +0.2722 Tw +[([Burton, )272.2(et )272.2(al., )272.2(1980])-2000.4(Burton, R. R., L. M. Masinter, A. Bell, D. G. Bobrow, W. S.)]TJ +10.8256 -1 TD +0.0789 Tw +(Haugeland, R.M. Kaplan and B.A. Sheil, "Interlisp-D: Overview)Tj +T* +0 Tw +(and Status" in [Sheil & Masinter, 1983].)Tj +-9.78 -1.5556 TD +0.0933 Tw +[([Sandewall, )93.3(1978])-2001.2(Sandewall, Erik, "Programming in the Interactive Environmnet:)]TJ +9.78 -1 TD +0.1167 Tw +(The LISP Experience" )Tj +/TT8 1 Tf +11.4652 0 TD +(ACM Computing Surveys)Tj +/TT6 1 Tf +10.9579 0 TD +(, vol 10, no 1,)Tj +-22.4231 -1 TD +0 Tw +(pp 35-72, \(March 1978\).)Tj +-7.3344 -1.5556 TD +0.3089 Tw +[([Sheil, )308.9(1983])-2000.5(Sheil, B.A., "Environments for Exploratory Programming" )]TJ +/TT8 1 Tf +7.3344 -1 TD +0 Tw +(Datamation)Tj +/TT6 1 Tf +4.8311 0 TD +(, \(February, 1983\) also in [Sheil & Masinter, 1983].)Tj +-17.3866 -1.5556 TD +0.1789 Tw +[([Sheil )178.9(& )178.9(Masinter, )178.9(1983])-2000.9(Sheil, B.A. and L. M. Masinter, "Papers on Interlisp-D", Xerox)]TJ +12.5556 -1 TD +0 Tw +(PARC Technical Report CIS-5 \(Revised\), \(January, 1983\).)Tj +-14.8322 -1.5556 TD +0.1022 Tw +[([Teitelman )102.2(& )102.2(Masinter, )102.2(1981])-2001.7(Teitelman, W. and L. M. Masinter, "The Interlisp Programming)]TJ +14.8322 -1 TD +0.0056 Tw +(Environment" )Tj +/TT8 1 Tf +7.724 0 TD +0 Tw +(Computer)Tj +/TT6 1 Tf +4.0562 0 TD +0.0056 Tw +(, vol 14, no 4, pp 25-34, \(April 1981\) )Tj +-11.7802 -1 TD +0 Tw +(also in [Sheil & Masinter, 1983].)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 14 0 R +/TT14 27 0 R +/TT16 28 0 R +/TT18 29 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +8 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +30 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +31 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +32 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +33 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +34 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +35 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +36 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +37 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +38 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 54 +/Widths [333 0 0 0 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 30 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 722 722 667 0 0 722 278 0 0 611 833 722 778 +667 0 722 0 611 722 0 0 0 0 0 0 0 0 0 0 +0 556 0 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 31 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 278 371 0 0 0 778 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 444 +0 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 +604 0 668 525 613 778 722 1000 667 0 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 32 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 667 778 0 0 0 0 333 0 0 556 944 0 0 +0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 0 407 500 389 278 500 500 278 0 0 278 778 556 444 +500 0 389 389 333 556 500 722 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 33 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 34 0 R +>> +endobj +14 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 0 0 0 0 0 600 600 0 600 600 0 600 0 +0 600 600 600 0 600 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 600 600 600 600 600 0 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 600 0 0 0 0 0 0 600 0 600 +0 0 600 0 600 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 35 0 R +>> +endobj +27 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 70 +/LastChar 79 +/Widths [600 0 0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 36 0 R +>> +endobj +28 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [250 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 37 0 R +>> +endobj +29 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 90 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 38 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +10 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 12 0 R +/Contents 11 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +39 0 obj +<< +/S /D +>> +endobj +40 0 obj +<< +/Nums [0 39 0 R ] +>> +endobj +9 0 obj +<< +/Type /Pages +/Kids [1 0 R 10 0 R 15 0 R 18 0 R 21 0 R 24 0 R] +/Count 6 +/MediaBox [0 0 612 792] +>> +endobj +41 0 obj +<< +/CreationDate (D:20210202102637-06'00') +/ModDate (D:20210202102637-06'00') +/Producer (Apple pstopdf) +>> +endobj +42 0 obj +<< +/Type /Catalog +/Pages 9 0 R +/PageLabels 40 0 R +>> +endobj +xref +0 43 +0000000000 65535 f +0000033752 00000 n +0000000016 00000 n +0000004520 00000 n +0000030707 00000 n +0000030904 00000 n +0000031328 00000 n +0000031900 00000 n +0000028767 00000 n +0000034315 00000 n +0000033832 00000 n +0000004648 00000 n +0000009662 00000 n +0000032313 00000 n +0000032620 00000 n +0000033915 00000 n +0000009817 00000 n +0000013814 00000 n +0000033998 00000 n +0000013947 00000 n +0000019101 00000 n +0000034081 00000 n +0000019256 00000 n +0000024673 00000 n +0000034164 00000 n +0000024828 00000 n +0000028573 00000 n +0000033094 00000 n +0000033283 00000 n +0000033453 00000 n +0000028907 00000 n +0000029104 00000 n +0000029310 00000 n +0000029510 00000 n +0000029713 00000 n +0000029908 00000 n +0000030099 00000 n +0000030301 00000 n +0000030506 00000 n +0000034247 00000 n +0000034275 00000 n +0000034431 00000 n +0000034554 00000 n +trailer +<< +/Size 43 +/Root 42 0 R +/Info 41 0 R +/ID [<62e9d3965b181a0ba551a9211a027bdc><62e9d3965b181a0ba551a9211a027bdc>] +>> +startxref +34623 +%%EOF diff --git a/docs/medley-irm/02-LITATOM.TEDIT b/docs/medley-irm/02-LITATOM.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..c683088640530916f18529bd1cac1ccf2c1f537c GIT binary patch literal 50774 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 TwI0$G^hB@m{!e}D2Ved#8t&BN literal 0 HcmV?d00001 diff --git a/docs/medley-irm/02-LITATOM.pdf b/docs/medley-irm/02-LITATOM.pdf new file mode 100644 index 00000000..beba7960 --- /dev/null +++ b/docs/medley-irm/02-LITATOM.pdf @@ -0,0 +1,6745 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 7300 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-1)Tj +/TT4 1 Tf +10 0 0 10 386.1 568.2 Tm +(2. SYMBOLS \(LITATOMS\))Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +0.0122 Tw +(A litatom \(for literal atom\) is an object that conceptually consists of a print name, a value, a function)Tj +0 -1.2222 TD +0.0789 Tw +[(definition, and a property list. Litatoms are also known as symbols in Common Lisp. For clarity,)]TJ +T* +0 Tw +(we will use the term symbol.)Tj +0 -2 TD +0.0978 Tw +(A symbol is read as any string of non-delimiting characters that cannot be interpreted as a number.)Tj +0 -1.2222 TD +0.0044 Tw +(The syntactic characters that delimit symbols are called separator or break characters \(see Chapter)Tj +T* +0.0289 Tw +(25\) and normally are space, end-of-line, line-feed, left parenthesis )Tj +/TT8 1 Tf +29.4016 0 TD +0 Tw +(\()Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +(, right parenthesis )Tj +/TT8 1 Tf +8.3201 0 TD +0 Tw +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +(, double quote)Tj +/TT8 1 Tf +-38.9219 -1.2889 TD +0 Tw +(")Tj +/TT6 1 Tf +0.6001 0 TD +0.1244 Tw +(, left square bracket )Tj +/TT8 1 Tf +9.3913 0 TD +0 Tw +([)Tj +/TT6 1 Tf +0.6001 0 TD +0.1244 Tw +(, and right square bracket )Tj +/TT8 1 Tf +12.1798 0 TD +0 Tw +(])Tj +/TT6 1 Tf +0.6001 0 TD +0.1244 Tw +[(. However, any character may be included in a)]TJ +-23.3715 -1.2889 TD +0 Tw +(symbol by preceding it with the character )Tj +/TT8 1 Tf +18.6528 0 TD +(%)Tj +/TT6 1 Tf +0.6001 0 TD +(. Here are some examples of symbols:)Tj +/TT8 1 Tf +-10.5863 -2 TD +(A wxyz 23SKIDDOO %] )Tj +0 -1.2222 TD +(Long% Litatom% With% Embedded% Spaces)Tj +10 0 0 10 102 409.46 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 409.46 Tm +(LITATOM)Tj +/TT8 1 Tf +10 0 0 10 145.8 409.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 151.801 409.46 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 157.2018 409.46 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 409.46 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a symbol, )Tj +/TT8 1 Tf +5.7178 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise. Note that a number is not a symbol.)Tj +/TT8 1 Tf +-8.236 -1.6667 TD +(\(LITATOM NIL\) = T)Tj +10 0 0 10 102 359.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 359.63 Tm +(ATOM)Tj +/TT8 1 Tf +10 0 0 10 129.6045 359.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 135.6 359.63 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 141.0009 359.63 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 359.63 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.8093 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +[( if )]TJ +/TT12 1 Tf +1.2885 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +[( is an atom \(i.e., a symbol or a number\) or )]TJ +/TT8 1 Tf +19.5221 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0822 Tw +[( \(e.g. )]TJ +/TT8 1 Tf +2.5326 0 TD +0.1978 Tw +(\(ATOM NIL\) = T\))Tj +/TT6 1 Tf +9.5948 0 TD +0 Tw +(;)Tj +-39.7478 -1.2889 TD +(otherwise)Tj +/TT8 1 Tf +4.356 0 TD +( )Tj +/TT6 1 Tf +0.6001 0 TD +(returns)Tj +/TT8 1 Tf +3.2041 0 TD +( NIL.)Tj +/TT14 1 Tf +-8.1602 -2.0667 TD +(Warning:)Tj +/TT6 1 Tf +4.25 0 TD +0.0978 Tc +( )Tj +/TT8 1 Tf +0.6956 0 TD +0 Tc +0.2356 Tw +(\(ATOM X\))Tj +/TT6 1 Tf +5.0363 0 TD +0.0978 Tw +[( is )]TJ +/TT8 1 Tf +1.4104 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0978 Tw +[( if )]TJ +/TT8 1 Tf +1.3196 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0978 Tw +[( is an array, string, etc. In Common Lisp, the function)]TJ +/TT8 1 Tf +-15.1123 -1.2889 TD +0 Tw +(CL:ATOM)Tj +/TT6 1 Tf +4.2007 0 TD +( is defined equivalent to the Interlisp function )Tj +/TT8 1 Tf +20.4692 0 TD +(NLISTP)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-33.6038 -2.0667 TD +0.1822 Tw +[(Each symbol has a print name, a string of characters that uniquely identifies that symbol: Those)]TJ +0 -1.2222 TD +0.0189 Tw +(characters that are output when the symbol is printed using )Tj +/TT8 1 Tf +26.8647 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.0189 Tw +(, e.g., the print name of the symbol)Tj +/TT8 1 Tf +-29.8652 -1.2889 TD +0 Tw +(ABC%\(D)Tj +/TT6 1 Tf +3.6006 0 TD +( consists of the five characters )Tj +/TT8 1 Tf +13.3833 0 TD +(ABC\(D)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-19.9844 -2.0667 TD +0.0311 Tw +[(Symbols are unique: If two symbols print the same, they will always be )]TJ +/TT8 1 Tf +32.4141 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +[(. Note that this is not true)]TJ +-33.6143 -1.2889 TD +0.0589 Tw +[(for strings, large integers, floating-point numbers, etc.; they all can print the same without being )]TJ +/TT8 1 Tf +43.8792 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-45.0794 -1.2889 TD +0.1056 Tw +(Thus, if )Tj +/TT8 1 Tf +3.8068 0 TD +0 Tw +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +0.1056 Tw +[( or )]TJ +/TT8 1 Tf +1.652 0 TD +0 Tw +(MKATOM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1056 Tw +[( is given a list of characters corresponding to a symbol that already exists,)]TJ +-11.4598 -1.2889 TD +0.0144 Tw +[(they return a pointer to that symbol, and do not make a new symbol. Similarly, if the read program is)]TJ +0 -1.2222 TD +0.0644 Tw +(given as input a sequence of characters for which a symbol already exists, it returns a pointer to that)Tj +T* +0 Tw +(symbol.)Tj +0 -2 TD +0.0289 Tw +[(Symbol names are limited to 255 characters. Attempting to create a larger symbol will cause an error:)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(Atom too long)Tj +/TT6 1 Tf +7.8013 0 TD +(. )Tj +-7.8013 -2.0667 TD +0.0889 Tw +(Sometimes well refer to a )Tj +/TT8 1 Tf +12.1559 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.6006 0 TD +0.0889 Tw +[(-name. The )]TJ +/TT8 1 Tf +6.2174 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0889 Tw +(-name of a symbol is those characters output)Tj +-24.9743 -1.2889 TD +0.1822 Tw +(when it is printed using )Tj +/TT8 1 Tf +11.7114 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1822 Tw +[(. So the )]TJ +/TT8 1 Tf +4.4369 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1822 Tw +(-name of the symbol )Tj +/TT8 1 Tf +10.0248 0 TD +0 Tw +(ABC%\(D)Tj +/TT6 1 Tf +3.6006 0 TD +0.1822 Tw +[( is the six characters)]TJ +/TT8 1 Tf +-35.7747 -1.2889 TD +0 Tw +(ABC%\(D)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[(. The )]TJ +/TT8 1 Tf +3.2672 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1978 Tw +(-name depends on what readtable is being used \(see Chapter 25\), since this)Tj +-9.8682 -1.2889 TD +0.2067 Tw +(determines where )Tj +/TT8 1 Tf +8.6311 0 TD +0 Tw +(%)Tj +/TT6 1 Tf +0.6001 0 TD +0.2067 Tw +[(s will be inserted. Many of the functions below allow either print names or)]TJ +/TT8 1 Tf +-9.2312 -1.2889 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0667 Tw +(-names to be used, as specified by )Tj +/TT8 1 Tf +15.6742 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0667 Tw +[( and )]TJ +/TT8 1 Tf +2.3262 0 TD +0 Tw +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0667 Tw +[( arguments. If )]TJ +/TT8 1 Tf +6.9346 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0667 Tw +[( is )]TJ +/TT8 1 Tf +1.3482 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0667 Tw +(, print names are)Tj +-37.6851 -1.2889 TD +0.21 Tw +[(used. Otherwise, )]TJ +/TT8 1 Tf +8.5929 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.21 Tw +(-names are used, computed with respect to the readtable )Tj +/TT8 1 Tf +27.1488 0 TD +0 Tw +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +0.21 Tw +[( \(or the)]TJ +-41.7427 -1.2889 TD +0 Tw +(current readtable, if )Tj +/TT8 1 Tf +8.9824 0 TD +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\).)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 7020 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-2)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +5.4 -4.374 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 568.26 Tm +(MKATOM)Tj +10 0 0 10 188.4 568.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 194.401 568.26 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 199.8018 568.26 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.26 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0378 Tw +(Creates and returns a symbol whose print name is the name as that of the string )Tj +/TT12 1 Tf +36.1147 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0378 Tw +[( or, if )]TJ +/TT12 1 Tf +2.6783 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +-39.3931 -1.2889 TD +(is not a string, the same as that of )Tj +/TT8 1 Tf +14.9531 0 TD +(\(MKSTRING X\))Tj +/TT6 1 Tf +7.2012 0 TD +(. Examples:)Tj +/TT8 1 Tf +-16.821 -1.6667 TD +(\(MKATOM \(A B C\)\) => %\(A% B% C%\))Tj +0 -1 TD +(\(MKATOM "1.5"\) => 1.5)Tj +/TT6 1 Tf +-5.3333 -2.0667 TD +0.2156 Tw +[(Note that the last example returns a number, not a symbol. It is a deeply-ingrained)]TJ +0 -1.2222 TD +0 Tw +(feature of Interlisp that no symbol can have the print name of a number.)Tj +/TT8 1 Tf +10 0 0 10 150 466.83 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 466.83 Tm +(SUBATOM)Tj +/TT12 1 Tf +4.1999 0 TD +( X N M)Tj +/TT8 1 Tf +10 0 0 10 226.2053 466.83 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 466.83 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0033 Tw +(Returns a symbol made from the )Tj +/TT12 1 Tf +14.7666 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0033 Tw +(th through )Tj +/TT12 1 Tf +5.0052 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.0033 Tw +(th characters of the print name of )Tj +/TT12 1 Tf +14.9545 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0006 Tc +0.0027 Tw +(. If )Tj +/TT12 1 Tf +1.6799 0 TD +0 Tc +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0011 Tc +0.0022 Tw +( or)Tj +/TT12 1 Tf +-38.8066 -1.2889 TD +0 Tc +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( are negative, they specify positions counting backwards from the end of the print name.)]TJ +-0.6001 -1.2889 TD +0 Tw +(Equivalent to )Tj +/TT8 1 Tf +6.1802 0 TD +(\(MKATOM \(SUBSTRING X N M\)\))Tj +/TT6 1 Tf +15.6025 0 TD +(. Examples:)Tj +/TT8 1 Tf +-16.4494 -1.6667 TD +(\(SUBATOM "FOO1.5BAR" 4 6\) => 1.5)Tj +0 -1 TD +(\(SUBATOM \(A B C\) 2 -2\) => A% B% C)Tj +10 0 0 10 150 382.8 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 382.8 Tm +(PACK)Tj +10 0 0 10 177.6 382.8 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 183.601 382.8 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 189.0018 382.8 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 382.8 Tm +([Function])Tj +-35.4033 -1.8833 TD +(If )Tj +/TT12 1 Tf +1.281 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.3611 Tw +[( is a list of symbols, )]TJ +/TT8 1 Tf +11.0192 0 TD +0 Tw +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +0.3611 Tw +[( returns a single symbol whose print name is the)]TJ +-15.3007 -1.2889 TD +0.1011 Tw +(concatenation of the print names of the symbols in )Tj +/TT12 1 Tf +23.453 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[(. If the concatenated print name is)]TJ +-24.0531 -1.2889 TD +0 Tw +(the same as that of a number, )Tj +/TT8 1 Tf +13.2051 0 TD +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +( returns that number. For example:)Tj +/TT8 1 Tf +-10.2721 -1.6667 TD +(\(PACK \(A BC DEF G\)\) => ABCDEFG)Tj +0 -1 TD +(\(PACK \(1 3.4\)\) => 13.4)Tj +T* +(\(PACK \(1 E -2\)\) => .01)Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(Although )Tj +/TT8 1 Tf +4.6042 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.09 Tw +[( is usually a list of symbols, it can be a list of arbitrary objects. The value of)]TJ +/TT8 1 Tf +-5.2043 -1.2889 TD +0 Tw +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +0.0578 Tw +[( is still a single symbol whose print name is the concatenation of the print names of)]TJ +-2.4004 -1.2889 TD +0 Tw +(all the elements of )Tj +/TT12 1 Tf +8.291 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, e.g.,)Tj +/TT8 1 Tf +-3.5578 -1.6667 TD +(\(PACK \(\(A B\) "CD"\)\) => %\(A% B%\)CD)Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a list or )Tj +/TT8 1 Tf +6.4419 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +( generates the error )Tj +/TT8 1 Tf +8.8174 0 TD +(Illegal arg)Tj +/TT6 1 Tf +6.6011 0 TD +(. )Tj +/TT8 1 Tf +10 0 0 10 150 218.37 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 218.37 Tm +(PACK*)Tj +/TT12 1 Tf +10 0 0 10 183.0054 218.37 Tm +( )Tj +9 0 0 9 189.0063 218.37 Tm +(X)Tj +0.5993 -0.2222 TD +(1)Tj +10 0 0 10 199.8 218.37 Tm +( )Tj +9 0 0 9 205.801 218.37 Tm +(X)Tj +0.5999 -0.2222 TD +(2)Tj +0.6 0.2222 TD +(... X)Tj +3 -0.2222 TD +(N)Tj +/F2 1 Tf +10 0 0 10 249 218.37 Tm +( )Tj +/TT8 1 Tf +0.287 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 218.37 Tm +([NoSpread Function])Tj +-30.6656 -2.0667 TD +(Version of )Tj +/TT8 1 Tf +4.8179 0 TD +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +( that takes an arbitrary number of arguments, instead of a list. Examples:)Tj +/TT8 1 Tf +-1.8849 -1.6667 TD +(\(PACK* A BC DEF G => ABCDEFG)Tj +0 -1 TD +(\(PACK* 1 3.4\)\) => 13.4)Tj +10 0 0 10 150 157.89 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 157.89 Tm +(GENSYM)Tj +10 0 0 10 188.4 157.89 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 194.401 157.89 Tm +(PREFIX)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +10 0 0 10 275.4142 157.89 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 157.89 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1544 Tw +(Returns a symbol of the form )Tj +/TT8 1 Tf +14.0795 0 TD +0 Tw +(Xnnnn)Tj +/TT6 1 Tf +3.0005 0 TD +0.1544 Tw +(, where )Tj +/TT8 1 Tf +3.8279 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1544 Tw +[( = )]TJ +/TT12 1 Tf +1.4148 0 TD +0 Tw +(PREFIX)Tj +/TT6 1 Tf +3.6006 0 TD +0.1544 Tw +[( \(or )]TJ +/TT8 1 Tf +2.0828 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.1544 Tw +[( if )]TJ +/TT12 1 Tf +1.4329 0 TD +0 Tw +(PREFIX)Tj +/TT6 1 Tf +3.6006 0 TD +0.1544 Tw +[( is )]TJ +/TT8 1 Tf +1.5237 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1544 Tw +(\) and)Tj +/TT8 1 Tf +-37.5639 -1.2889 TD +0 Tw +(nnnn)Tj +/TT6 1 Tf +2.4004 0 TD +0.0989 Tw +[( is an integer. Thus, the first one generated is )]TJ +/TT8 1 Tf +21.35 0 TD +0 Tw +(A0001)Tj +/TT6 1 Tf +3.0005 0 TD +0.0989 Tw +(, the second )Tj +/TT8 1 Tf +5.7693 0 TD +0 Tw +(A0002)Tj +/TT6 1 Tf +3.0005 0 TD +0.0989 Tw +[(, etc. The)]TJ +-35.5207 -1.2889 TD +0.1478 Tw +[(integer suffix is always at least four characters long, but it can grow beyond that. For)]TJ +0 -1.2222 TD +0.0844 Tw +(example, the next symbol produced after )Tj +/TT8 1 Tf +18.8719 0 TD +0 Tw +(A9999)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( would be )]TJ +/TT8 1 Tf +4.9203 0 TD +0 Tw +(A10000)Tj +/TT6 1 Tf +3.6006 0 TD +0.0844 Tw +(. )Tj +/TT8 1 Tf +0.9189 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0844 Tw +[( provides a)]TJ +-34.9128 -1.2889 TD +0 Tw +(way of generating symbols for various uses within the system .)Tj +0 -2 TD +0.1222 Tw +[(Note:)-1567.9(The Common Lisp function )]TJ +/TT8 1 Tf +16.9449 0 TD +0 Tw +(CL:GENSYM)Tj +/TT6 1 Tf +5.4009 0 TD +0.1222 Tw +[( is not the same as Interlisps )]TJ +/TT8 1 Tf +13.7989 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-39.7453 -1.2889 TD +0.4533 Tw +(Interlisp always creates interned symbols whereas )Tj +/TT8 1 Tf +25.2127 0 TD +0 Tw +(CL:GENSYM)Tj +/TT6 1 Tf +5.4009 0 TD +0.4533 Tw +[( creates uninterned)]TJ +-30.6136 -1.2889 TD +0 Tw +(symbols.)Tj +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +20 0 obj +<< +/Length 6498 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-3)Tj +/TT16 1 Tf +10 0 0 10 402.2 612 Tm +(SYMBOLS \(LITATOMS\))Tj +/TT10 1 Tf +9 0 0 9 102 568.26 Tm +(GENNUM)Tj +/F1 1 Tf +10 0 0 10 134.4 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 568.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0333 Tw +(The value of )Tj +/TT8 1 Tf +5.8407 0 TD +0 Tw +(GENNUM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +(, initially )Tj +/TT8 1 Tf +4.2361 0 TD +0 Tw +(0)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +(, determines the next )Tj +/TT8 1 Tf +9.6226 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +(, e.g., if )Tj +/TT8 1 Tf +3.5092 0 TD +0 Tw +(GENNUM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +[( is set to )]TJ +/TT8 1 Tf +3.9493 0 TD +0 Tw +(23)Tj +/TT6 1 Tf +1.2002 0 TD +(,)Tj +/TT8 1 Tf +-39.7599 -1.2889 TD +(\(GENSYM\) )Tj +/TT6 1 Tf +5.4009 0 TD +(= )Tj +/TT8 1 Tf +0.856 0 TD +(A0024)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-9.2573 -2.0667 TD +0.2356 Tw +(The term gensym is used to indicate a symbol that was produced by the function)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1044 Tw +[(. Symbols generated by )]TJ +/TT8 1 Tf +11.3167 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1044 Tw +[( are the same as any other symbols: they have)]TJ +-18.5178 -1.2889 TD +0.0767 Tw +[(property lists, and can be given function definitions. The symbols are not guaranteed to)]TJ +0 -1.2222 TD +0.0689 Tw +[(be new. For example, if the user has previously created )]TJ +/TT8 1 Tf +25.584 0 TD +0 Tw +(A0012)Tj +/TT6 1 Tf +3.0005 0 TD +0.0689 Tw +(, either by typing it in, or)Tj +-28.5844 -1.2889 TD +0 Tw +(via )Tj +/TT8 1 Tf +1.8137 0 TD +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +0.2078 Tw +[( or )]TJ +/TT8 1 Tf +1.8565 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.2078 Tw +[( itself, then if )]TJ +/TT8 1 Tf +6.8184 0 TD +0 Tw +(GENNUM)Tj +/TT6 1 Tf +3.6006 0 TD +0.2078 Tw +[( is set to )]TJ +/TT8 1 Tf +4.647 0 TD +0 Tw +(11)Tj +/TT6 1 Tf +1.2002 0 TD +0.2078 Tw +(, the next symbol returned by)Tj +/TT8 1 Tf +-25.9374 -1.2944 TD +0 Tw +(GENSYM)Tj +10 0 0 10 158.4053 464.61 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 164.4062 464.61 Tm +(will be the )Tj +/TT8 1 Tf +4.8765 0 TD +(A0012)Tj +/TT6 1 Tf +3.0005 0 TD +( already in existence.)Tj +/TT8 1 Tf +10 0 0 10 102 444.38 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 444.38 Tm +(MAPATOMS)Tj +/TT8 1 Tf +10 0 0 10 151.2 444.38 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 157.201 444.38 Tm +(FN)Tj +/TT8 1 Tf +10 0 0 10 168.0027 444.38 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 444.38 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Applies )Tj +/TT12 1 Tf +3.8771 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1622 Tw +[( \(a function or lambda expression\) to every symbol in the system. Returns)]TJ +/TT8 1 Tf +-5.0773 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. For example:)Tj +/TT8 1 Tf +-0.467 -2 TD +(\(MAPATOMS \(FUNCTION \(LAMBDA\(X\) \(if \(GETD X\) then \(PRINTX\)])Tj +/TT6 1 Tf +-1.3333 -2.0667 TD +(will print every symbol with a function definition.)Tj +/TT14 1 Tf +0 -2 TD +(Warning)Tj +/TT6 1 Tf +4 0 TD +0.2389 Tw +[(: Be careful if )]TJ +/TT12 1 Tf +7.4532 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2389 Tw +[( is a lambda expression or an interpreted function: since)]TJ +/TT8 1 Tf +-12.6534 -1.2889 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.1033 Tw +[( is a symbol, it will eventually be passed as an argument. The first reference to)]TJ +-3.6006 -1.2889 TD +0 Tw +(that argument within the function will signal an error.)Tj +0 -2 TD +0.0578 Tw +(A way around this problem is to use a Common Lisp function, so that the Common Lisp)Tj +0 -1.2222 TD +0.11 Tw +[(interpreter will be invoked. It will treat the argument as local, not special and no error)]TJ +T* +0.2489 Tw +[(will be signaled. An alternative solution is to include the argument to the Interlisp)]TJ +T* +0.1044 Tw +(function in a )Tj +/TT8 1 Tf +6.1434 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1044 Tw +[( declaration and then compile the function before passing it to)]TJ +/TT8 1 Tf +-11.5443 -1.2889 TD +0 Tw +(MAPATOMS)Tj +/TT6 1 Tf +4.8008 0 TD +(. This will significantly speed up )Tj +/TT8 1 Tf +14.8818 0 TD +(MAPATOMS)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 255.55 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 255.55 Tm +(APROPOS)Tj +/TT8 1 Tf +10 0 0 10 145.8 255.55 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 151.801 255.55 Tm +(STRING ALLFLG QUITFLG OUTPUT)Tj +/TT8 1 Tf +10 0 0 10 303.0256 255.55 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 255.55 Tm +([Function])Tj +/TT8 1 Tf +-35.4033 -1.8833 TD +(APROPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0133 Tw +[( scans all symbols in the system for those which have )]TJ +/TT12 1 Tf +23.8708 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +[( as a substring and)]TJ +-31.6721 -1.2889 TD +0.1933 Tw +(prints them on the terminal along with a line for each relevant item defined for each)Tj +0 -1.2222 TD +0 Tw +(selected symbol. Relevant items are:)Tj +2.6667 -1.6667 TD +[()-727.4(function definitions, for which only the arglist is printed)]TJ +T* +[()-727.4(dynamic variable values)]TJ +T* +[()-727.4(non-null property lists)]TJ +/TT8 1 Tf +-2.6667 -2 TD +(PRINTLEVEL)Tj +/TT6 1 Tf +6.001 0 TD +( \(see Chapter 25\) is set to)Tj +/TT8 1 Tf +10.9561 0 TD +( \(3 . 5\) )Tj +/TT6 1 Tf +5.4009 0 TD +(when )Tj +/TT8 1 Tf +2.7271 0 TD +(APROPOS)Tj +/TT6 1 Tf +4.2007 0 TD +( is printing.)Tj +-29.2856 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.2044 0 TD +(ALLFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.2844 Tw +[( is )]TJ +/TT8 1 Tf +1.7837 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2844 Tw +(, then symbols with no relevant items and internal symbols are)Tj +-8.389 -1.2889 TD +0.0822 Tw +(omitted \(internal currently means those symbols whose print name begins with a \\ or)Tj +0 -1.2222 TD +0.0333 Tw +(those symbols produced by )Tj +/TT8 1 Tf +12.566 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +[(\). If )]TJ +/TT12 1 Tf +2.1029 0 TD +0 Tw +(ALLFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +[( is a function, it is used as a predicate on)]TJ +-21.8701 -1.2889 TD +0.0522 Tw +(symbols selected by the substring match, with value )Tj +/TT8 1 Tf +23.7342 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( meaning to omit the symbol. If)]TJ +/TT12 1 Tf +-25.5345 -1.2889 TD +0 Tw +(ALLFLG)Tj +/TT6 1 Tf +3.6006 0 TD +( is any other non-)Tj +/TT8 1 Tf +7.7241 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( value, then no symbols are omitted.)Tj +-13.125 -2.0667 TD +0.1844 Tw +[(Note: Unlike )]TJ +/TT8 1 Tf +6.7125 0 TD +0 Tw +(CL:APROPOS)Tj +/TT6 1 Tf +6.001 0 TD +0.1844 Tw +[( which lets you designate the package to search, )]TJ +/TT8 1 Tf +23.0853 0 TD +0 Tw +(APROPOS)Tj +/TT6 1 Tf +-35.7988 -1.2889 TD +(searches )Tj +/TT18 1 Tf +3.9766 0 TD +(all)Tj +/TT6 1 Tf +0.9995 0 TD +( packages.)Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 18 0 R +/TT18 22 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +24 0 obj +<< +/Length 9235 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-4)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Using Symbols as Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 551.54 Tm +0.01 Tw +[(Symbols are commonly used as variable names. Each symbol has a top level value, which can be an)]TJ +0 -1.2222 TD +0.1822 Tw +[(arbitrary object. Symbols may also be given special variable bindings within )]TJ +/TT8 1 Tf +36.3136 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1822 Tw +(s or functions,)Tj +-38.714 -1.2889 TD +0.0411 Tw +[(which only exist for the duration of the function. When a symbol is evaluated, the current variable)]TJ +0 -1.2222 TD +0.1089 Tw +[(binding is returned. This is the most recent special variable binding, or the top-level binding if the)]TJ +T* +0.0933 Tw +(symbol hasnt been rebound. )Tj +/TT8 1 Tf +13.7738 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0933 Tw +[( is used to change the current binding. For more information on)]TJ +-16.1742 -1.2889 TD +0 Tw +(variable bindings in Interlisp, see Chapter 11.)Tj +0 -2 TD +0.0033 Tw +(A symbol whose top-level value is the symbol )Tj +/TT8 1 Tf +20.6263 0 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0001 Tc +0.0032 Tw +( is considered to have no value. If a symbol has)Tj +-24.2269 -1.2889 TD +0 Tc +0.0311 Tw +(no local bindings, and its top-level value is )Tj +/TT8 1 Tf +19.3866 0 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0311 Tw +(, trying to evaluate it will cause an unbound-atom)Tj +-22.9872 -1.2889 TD +0 Tw +(error. In addition, if a symbols local binding is to )Tj +/TT8 1 Tf +22.3403 0 TD +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +(, trying to evaluate it will cause an error.)Tj +-25.9409 -2.0667 TD +0.0711 Tw +(The symbols )Tj +/TT8 1 Tf +5.9928 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0711 Tw +[( and )]TJ +/TT8 1 Tf +2.3351 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0711 Tw +[( always evaluate to themselves. Attempting to change the value of )]TJ +/TT8 1 Tf +30.6229 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0711 Tw +[( or )]TJ +/TT8 1 Tf +1.5831 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +-43.5344 -1.2944 TD +(with the functions below will generate the error; )Tj +/TT8 1 Tf +21.605 0 TD +(Attempt to set T)Tj +/TT6 1 Tf +9.6016 0 TD +( or)Tj +/TT8 1 Tf +10 0 0 10 422.0771 423.89 Tm +( )Tj +9 0 0 9 428.0781 423.89 Tm +(Attempt to set NIL)Tj +/TT6 1 Tf +10.8018 0 TD +(.)Tj +-44.366 -2.1056 TD +0.0133 Tw +(The following functions \(except )Tj +/TT8 1 Tf +14.3063 0 TD +0 Tw +(BOUNDP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +(\) will also generate the error )Tj +/TT8 1 Tf +12.7743 0 TD +0.0311 Tw +(Arg not litatom)Tj +/TT6 1 Tf +9.0637 0 TD +0.0133 Tw +(, if not given)Tj +-39.7449 -1.2889 TD +0 Tw +(a symbol.)Tj +/TT8 1 Tf +10 0 0 10 150 374.06 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 374.06 Tm +(BOUNDP)Tj +/TT8 1 Tf +10 0 0 10 188.4 374.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 194.401 374.06 Tm +(VAR)Tj +/TT8 1 Tf +10 0 0 10 210.6036 374.06 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 374.06 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7793 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0522 Tw +[( if )]TJ +/TT12 1 Tf +1.2285 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( has a special variable binding, or if )]TJ +/TT12 1 Tf +16.3089 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( has a top-level value other than)]TJ +/TT8 1 Tf +-25.5173 -1.2889 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.14 Tw +[(; otherwise )]TJ +/TT8 1 Tf +5.776 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.14 Tw +[(. That is, if )]TJ +/TT8 1 Tf +5.8099 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.14 Tw +[( is a symbol, )]TJ +/TT8 1 Tf +6.2778 0 TD +0.3356 Tw +(\(EVAL X\))Tj +/TT6 1 Tf +5.1363 0 TD +0.14 Tw +[( will cause an )]TJ +/TT8 1 Tf +6.7988 0 TD +0 Tw +(Unbound)Tj +-35.7997 -1.4311 TD +(atom)Tj +/TT6 1 Tf +2.4004 0 TD +( error if and only if )Tj +/TT8 1 Tf +8.626 0 TD +(\(BOUNDP X\))Tj +/F1 1 Tf +10 0 0 10 327.2461 332.63 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 330.0261 332.63 Tm +(returns)Tj +/F1 1 Tf +10 0 0 10 358.863 332.63 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 361.643 332.63 Tm +(NIL)Tj +/F1 1 Tf +10 0 0 10 377.8456 332.63 Tm +(.)Tj +/TT6 1 Tf +9 0 0 9 174 314.03 Tm +0.1544 Tw +[(Note: The Interlisp interpreter has been modified so that it will generate an )]TJ +/TT8 1 Tf +35.7931 0 TD +0 Tw +(Unbound)Tj +-35.7931 -1.2889 TD +(Variable)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +[( error when it encounters any symbol bound to )]TJ +/TT8 1 Tf +21.2823 0 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0233 Tw +[(. This is a change from)]TJ +-29.6836 -1.2889 TD +0.1222 Tw +(previous releases that only signaled an error when a symbol had a top-level binding of)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +( in addition to no dynamic binding.)Tj +/TT8 1 Tf +10 0 0 10 150 259.95 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 259.95 Tm +(SET)Tj +/F2 1 Tf +10 0 0 10 172.2 259.95 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 175.07 259.95 Tm +(VAR VALUE)Tj +/TT8 1 Tf +10 0 0 10 223.6779 259.95 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 259.95 Tm +([NoSpread Function])Tj +-30.6656 -1.8833 TD +(Sets the current value of )Tj +/TT12 1 Tf +11.9321 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( to )Tj +/TT12 1 Tf +1.3721 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +(, and returns )Tj +/TT12 1 Tf +5.897 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +-27.0024 -2.0667 TD +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0021 Tw +( is a normal function, so both )Tj +/TT12 1 Tf +13.1113 0 TD +0 Tc +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0004 Tc +0.0018 Tw +( and )Tj +/TT12 1 Tf +2.1973 0 TD +0 Tc +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0021 Tw +( are evaluated before it is called. Thus, if)Tj +-21.9097 -1.2889 TD +0 Tc +0.0411 Tw +(the value of )Tj +/TT8 1 Tf +5.5774 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +[( is )]TJ +/TT8 1 Tf +1.2971 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +(, and value of )Tj +/TT8 1 Tf +6.4242 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +[( is )]TJ +/TT8 1 Tf +1.2971 0 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +(, then )Tj +/TT8 1 Tf +2.8015 0 TD +0.0978 Tw +(\(SET X Y\))Tj +/TT6 1 Tf +5.5964 0 TD +0.0411 Tw +[( would result in )]TJ +/TT8 1 Tf +7.4403 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +[( being set to )]TJ +/TT8 1 Tf +5.7269 0 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +-39.7615 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +( being returned as the value of )Tj +/TT8 1 Tf +13.7095 0 TD +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 181.32 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 181.32 Tm +(SETQ)Tj +/F2 1 Tf +10 0 0 10 177.6 181.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 180.47 181.32 Tm +(VAR VALUE)Tj +/TT8 1 Tf +10 0 0 10 229.0779 181.32 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 181.32 Tm +([NoSpread Function])Tj +-30.6656 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.217 0 TD +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +(, but )Tj +/TT12 1 Tf +2.2924 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +[( is not evaluated, )]TJ +/TT12 1 Tf +7.893 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( is. Thus, if the value of )]TJ +/TT8 1 Tf +11.0047 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.03 Tw +[( is )]TJ +/TT8 1 Tf +1.2748 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.03 Tw +[( and the value of)]TJ +/TT8 1 Tf +-32.4831 -1.2889 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(SETQ X Y\))Tj +/TT6 1 Tf +6.001 0 TD +( would result in )Tj +/TT8 1 Tf +7.2759 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( \(not )Tj +/TT8 1 Tf +2.2871 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(\) being set to )Tj +/TT8 1 Tf +5.8955 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +( being returned.)Tj +-29.2178 -2.0667 TD +0.0467 Tw +[(Actually, neither argument is evaluated during the calling process. However, )]TJ +/TT8 1 Tf +35.1525 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +[( itself)]TJ +-37.5529 -1.2889 TD +0 Tw +(calls )Tj +/TT8 1 Tf +2.3175 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1178 Tw +[( on its second argument. As a result, typing )]TJ +/TT8 1 Tf +20.8887 0 TD +0.2822 Tw +(\(SETQ VAR FORM\))Tj +/TT6 1 Tf +9.5659 0 TD +0.1178 Tw +[( and )]TJ +/TT8 1 Tf +2.4284 0 TD +0 Tw +(SETQ)Tj +-37.6009 -1.2889 TD +0.7 Tw +(\(VAR FORM\))Tj +/TT6 1 Tf +6.701 0 TD +0.2911 Tw +[( to the Interlisp Executive are equivalent: in both cases )]TJ +/TT8 1 Tf +27.7027 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2911 Tw +[( is not)]TJ +-36.204 -1.2889 TD +0 Tw +(evaluated, and )Tj +/TT8 1 Tf +6.7969 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is.)Tj +/TT8 1 Tf +10 0 0 10 150 79.49 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 79.49 Tm +(SETQQ)Tj +10 0 0 10 183 79.49 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 189.0009 79.49 Tm +(VAR)Tj +10 0 0 10 205.2036 79.49 Tm +( )Tj +9 0 0 9 211.2046 79.49 Tm +(VALUE)Tj +/TT8 1 Tf +10 0 0 10 238.209 79.49 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 79.49 Tm +([NoSpread Function])Tj +-30.6656 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.2137 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0267 Tw +(, but neither argument is evaluated, e.g., )Tj +/TT8 1 Tf +18.2316 0 TD +0.0644 Tw +(\(SETQQ X \(A B C\)\))Tj +/TT6 1 Tf +10.4594 0 TD +0.0267 Tw +[( sets )]TJ +/TT8 1 Tf +2.2062 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[( to )]TJ +/TT8 1 Tf +1.4254 0 TD +0.0644 Tw +(\(A B)Tj +-37.5368 -1.2889 TD +0 Tw +(C\))Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +27 0 obj +<< +/Length 6571 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-5)Tj +/TT16 1 Tf +10 0 0 10 402.2 612 Tm +(SYMBOLS \(LITATOMS\))Tj +/TT8 1 Tf +-30.02 -4.374 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 568.26 Tm +(PSETQ)Tj +10 0 0 10 135 568.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 141.001 568.26 Tm +(VAR)Tj +1.7999 -0.2222 TD +(1)Tj +0.6 0.2222 TD +( VALUE)Tj +3.6 -0.2222 TD +(1)Tj +0.6 0.2222 TD +( ... VAR)Tj +4.8 -0.2222 TD +(N)Tj +0.6 0.2222 TD +( VALUE)Tj +3.6 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 286.8 568.26 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 454.52 568.26 Tm +([Macro])Tj +-36.5022 -2.0667 TD +0.0989 Tw +(Does a )Tj +/TT8 1 Tf +3.4204 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0989 Tw +[( in parallel of )]TJ +/TT12 1 Tf +6.4957 0 TD +0 Tw +(VAR)Tj +1.8013 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0989 Tw +[( \(unevaluated\) to )]TJ +/TT12 1 Tf +8.1238 0 TD +0 Tw +(VALUE)Tj +2.9995 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, )Tj +/TT12 1 Tf +0.5989 0 TD +(VAR)Tj +1.8 -0.2222 TD +(2)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0989 Tw +[( to )]TJ +/TT12 1 Tf +1.5699 0 TD +0 Tw +(VALUE)Tj +2.999 -0.2222 TD +(2)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0989 Tw +[(, etc. All of)]TJ +-34.6089 -1.5111 TD +0 Tw +(the )Tj +/TT12 1 Tf +1.6861 0 TD +(VALUE)Tj +2.9995 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0489 Tw +[( terms are evaluated before any of the assignments. Therefore, )]TJ +/TT8 1 Tf +28.4836 0 TD +0.1167 Tw +(\(PSETQ A B)Tj +-33.7691 -1.5111 TD +0 Tw +(B A\))Tj +/TT6 1 Tf +2.4004 0 TD +( can be used to swap the values of the variables )Tj +/TT8 1 Tf +21.1689 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(. )Tj +/TT8 1 Tf +10 0 0 10 102 502.58 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 502.58 Tm +(GETTOPVAL)Tj +10 0 0 10 156.6 502.58 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 162.601 502.58 Tm +(VAR)Tj +/TT8 1 Tf +10 0 0 10 178.8036 502.58 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 502.58 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1022 Tw +(Returns the top level value of )Tj +/TT12 1 Tf +13.8726 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1022 Tw +[( \(even if )]TJ +/TT8 1 Tf +4.1187 0 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.1022 Tw +(\), regardless of any intervening local)Tj +-23.3922 -1.2889 TD +0 Tw +(bindings.)Tj +/TT8 1 Tf +10 0 0 10 102 454.75 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 454.75 Tm +(SETTOPVAL)Tj +10 0 0 10 156.6 454.75 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 162.601 454.75 Tm +(VAR)Tj +10 0 0 10 178.8036 454.75 Tm +( )Tj +9 0 0 9 184.8046 454.75 Tm +(VALUE)Tj +/TT8 1 Tf +10 0 0 10 211.809 454.75 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 454.75 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1789 Tw +(Sets the top level value of )Tj +/TT12 1 Tf +12.6095 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1789 Tw +[( to )]TJ +/TT12 1 Tf +1.7298 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1789 Tw +(, regardless of any intervening bindings, and)Tj +-19.1401 -1.2889 TD +0 Tw +(returns )Tj +/TT12 1 Tf +3.4541 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 406.32 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 406.32 Tm +(GETATOMVAL)Tj +10 0 0 10 162 406.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 168.001 406.32 Tm +(VAR)Tj +/TT8 1 Tf +10 0 0 10 184.2036 406.32 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 406.32 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(\(GETTOPVAL VAR\))Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 369.49 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 369.49 Tm +(SETATOMVAL)Tj +10 0 0 10 162 369.49 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 168.001 369.49 Tm +(VAR)Tj +10 0 0 10 184.2036 369.49 Tm +( )Tj +9 0 0 9 190.2046 369.49 Tm +(VALUE)Tj +/TT8 1 Tf +10 0 0 10 217.209 369.49 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 369.49 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(SETTOPVAL)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-14.5448 -2.0667 TD +0.0122 Tw +[(Note:)-1567.9(The compiler \(see Chapter 18\) treats variables somewhat differently from the interpreter, and)]TJ +4 -1.2222 TD +0.0367 Tw +[(you need to be aware of these differences when writing functions that will be compiled. For)]TJ +T* +0.0133 Tw +(example, variable references in compiled code are not checked for )Tj +/TT8 1 Tf +29.4903 0 TD +0 Tw +(NOBIND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +(, so compiled code)Tj +-33.0909 -1.2889 TD +0.1433 Tw +[(will not generate unbound-atom errors. In general, it is better to debug interpreted code,)]TJ +0 -1.2222 TD +0.0322 Tw +[(before compiling it for speed. The compiler offers some facilities to increase the efficiency of)]TJ +T* +0.0222 Tw +[(variable use in compiled functions: Global variables can be defined so that the entire stack is)]TJ +T* +0.1344 Tw +[(not searched at each variable reference. Local variables have bindings that are not visible)]TJ +T* +0 Tw +(outside the function, which reduces variable conflicts and makes variable lookup faster.)Tj +/TT4 1 Tf +10 0 0 10 54 234 Tm +(Function Definition Cells)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 231.29 m +510.01 231.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 217.34 Tm +0.0544 Tw +(Each symbol has a function-definition cell, which is accessed when that symbol is used as a function.)Tj +T* +0 Tw +(This is described in detail in Chapter 10.)Tj +/TT4 1 Tf +10 0 0 10 54 184 Tm +(Property Lists)Tj +ET +54.01 181.29 m +510.01 181.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 167.34 Tm +0.0178 Tw +(Each symbol has an associated property list, which allows a set of named objects to be associated with)Tj +T* +0.0822 Tw +[(the symbol. A property list associates a name \(known as a property name or property\) with an)]TJ +T* +0.0311 Tw +[(arbitrary object \(the property value or value\). Sometimes the phrase to store on the property X)]TJ +T* +0 Tw +(is used, meaning to place the indicated information on a property list under the property name X.)Tj +0 -2 TD +0.2656 Tw +[(Property names are usually symbols or numbers, although no checks are made. However, the)]TJ +0 -1.2222 TD +0.0778 Tw +(standard property list functions all use )Tj +/TT8 1 Tf +17.8656 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0778 Tw +[( to search for property names, so they may not work with)]TJ +-19.0658 -1.2889 TD +0.1144 Tw +[(non-atomic property names. The same object can be used as both a property name and a property)]TJ +0 -1.2222 TD +0 Tw +(value.)Tj +0 -2 TD +0.1233 Tw +(Many symbols in the system already have property lists, with properties used by the compiler, the)Tj +0 -1.2222 TD +0.0278 Tw +[(break package, DWIM, etc. Be careful not to clobber such system properties. The variable )]TJ +/TT8 1 Tf +40.5216 0 TD +0 Tw +(SYSPROPS)Tj +/TT6 1 Tf +-40.5216 -1.2889 TD +(is a list of property names used by the system.)Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +30 0 obj +<< +/Length 8682 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-6)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1311 Tw +[(The functions below are used to manipulate the property lists of symbols. Except when indicated,)]TJ +0 -1.2222 TD +0 Tw +(they generate the error )Tj +/TT12 1 Tf +10.3369 0 TD +(ATM)Tj +/TT8 1 Tf +1.8003 0 TD +( is not a SYMBOL)Tj +/TT6 1 Tf +9.6016 0 TD +(, if given an object that is not a symbol.)Tj +/TT8 1 Tf +10 0 0 10 150 538.66 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 538.66 Tm +(GETPROP)Tj +10 0 0 10 193.8 538.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.801 538.66 Tm +(ATM)Tj +10 0 0 10 216.0036 538.66 Tm +( )Tj +9 0 0 9 222.0046 538.66 Tm +(PROP)Tj +/TT8 1 Tf +10 0 0 10 243.6081 538.66 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 538.66 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0444 Tw +(Returns the property value for )Tj +/TT12 1 Tf +13.9478 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( from the property list of )]TJ +/TT12 1 Tf +11.421 0 TD +0 Tw +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +0.0444 Tw +[(. Returns )]TJ +/TT8 1 Tf +4.6104 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0444 Tw +[( if )]TJ +/TT12 1 Tf +1.2129 0 TD +0 Tw +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +0.0444 Tw +[( is)]TJ +-38.9933 -1.2889 TD +0.0144 Tw +(not a symbol, or )Tj +/TT12 1 Tf +7.4557 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0144 Tw +[( is not found. )]TJ +/TT8 1 Tf +6.416 0 TD +0 Tw +(GETPROP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0144 Tw +[( also returns )]TJ +/TT8 1 Tf +5.7582 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0144 Tw +[( if there is an occurrence of)]TJ +/TT12 1 Tf +-28.0312 -1.2889 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1867 Tw +[( but the corresponding property value is )]TJ +/TT8 1 Tf +19.4302 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1867 Tw +[(. This can be a source of program)]TJ +-23.6309 -1.2889 TD +0 Tw +(errors.)Tj +0 -2 TD +(Note: )Tj +/TT8 1 Tf +2.9321 0 TD +(GETPROP)Tj +/TT6 1 Tf +4.2007 0 TD +( used to be called )Tj +/TT8 1 Tf +7.8867 0 TD +(GETP)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 449.03 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 449.03 Tm +(PUTPROP)Tj +10 0 0 10 193.8 449.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.801 449.03 Tm +(ATM)Tj +10 0 0 10 216.0036 449.03 Tm +( )Tj +9 0 0 9 222.0046 449.03 Tm +(PROP)Tj +10 0 0 10 243.6081 449.03 Tm +( )Tj +9 0 0 9 249.6091 449.03 Tm +(VAL)Tj +/TT8 1 Tf +10 0 0 10 265.8117 449.03 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 449.03 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1478 Tw +(Puts the property )Tj +/TT12 1 Tf +8.437 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1478 Tw +[( with value )]TJ +/TT12 1 Tf +5.6645 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1478 Tw +[( on the property list of )]TJ +/TT12 1 Tf +11.0122 0 TD +0 Tw +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +0.1478 Tw +(. )Tj +/TT12 1 Tf +1.0456 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1478 Tw +[( replaces any)]TJ +-33.9605 -1.2889 TD +0 Tw +(previous value for the property )Tj +/TT12 1 Tf +14.1523 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +( on this property list. Returns )Tj +/TT12 1 Tf +13.4595 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 400.6 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 400.6 Tm +(ADDPROP)Tj +10 0 0 10 193.8 400.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.801 400.6 Tm +(ATM)Tj +10 0 0 10 216.0036 400.6 Tm +( )Tj +9 0 0 9 222.0046 400.6 Tm +(PROP)Tj +10 0 0 10 243.6081 400.6 Tm +( )Tj +9 0 0 9 249.6091 400.6 Tm +(NEW FLG)Tj +/TT8 1 Tf +10 0 0 10 287.4152 400.6 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 400.6 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0433 Tw +(Adds the value )Tj +/TT12 1 Tf +7.1285 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[( to the list which is the value of property )]TJ +/TT12 1 Tf +18.5759 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0433 Tw +[( on the property list of)]TJ +-29.9051 -1.2944 TD +0 Tw +(the )Tj +/TT12 1 Tf +1.8739 0 TD +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +0.2367 Tw +[(. If )]TJ +/TT12 1 Tf +2.3799 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.2367 Tw +[( is )]TJ +/TT8 1 Tf +10 0 0 10 259.883 372 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 265.884 372 Tm +(, )Tj +/TT12 1 Tf +0.7367 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.2367 Tw +[( is )]TJ +/TT8 1 Tf +1.6882 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.2367 Tw +(ed onto the front of the property value of )Tj +/TT12 1 Tf +20.5216 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +(;)Tj +-39.7569 -1.3278 TD +0.1144 Tw +(otherweise, it is )Tj +/TT8 1 Tf +7.5103 0 TD +0 Tw +(NCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.1144 Tw +(ed on the end \(using )Tj +/TT8 1 Tf +9.8881 0 TD +0 Tw +(NCONC1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1144 Tw +[(\). If )]TJ +/TT12 1 Tf +2.3463 0 TD +0 Tw +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +0.1144 Tw +[( does not have a property)]TJ +/TT12 1 Tf +-28.1461 -1.2889 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1678 Tw +(, or the value is not a list, then the effect is the same as )Tj +/TT8 1 Tf +26.5958 0 TD +0.4022 Tw +(\(PUTPROP ATM PROP)Tj +-28.9962 -1.2889 TD +0 Tw +(\(LIST NEW\)\))Tj +/TT6 1 Tf +6.6011 0 TD +(. )Tj +/TT8 1 Tf +0.75 0 TD +(ADDPROP)Tj +/TT6 1 Tf +4.2007 0 TD +( returns the \(new\) property value. Example:)Tj +/TT19 1 Tf +-6.2184 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(PUTPROP POCKET CONTENTS NIL\))Tj +-0.3201 -1 TD +(\(NIL\))Tj +/TT19 1 Tf +-0.6667 -1 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(ADDPROP POCKET CONTENTS COMB\))Tj +-0.3201 -1.2222 TD +(\(COMB\))Tj +/TT19 1 Tf +-0.6667 -1 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(ADDPROP POCKET CONTENTS WALLET\))Tj +-0.3201 -1.2222 TD +(\(COMB WALLET\))Tj +10 0 0 10 150 254.97 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 254.97 Tm +(REMPROP)Tj +10 0 0 10 193.8 254.97 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.801 254.97 Tm +(ATM)Tj +10 0 0 10 216.0036 254.97 Tm +( )Tj +9 0 0 9 222.0046 254.97 Tm +(PROP)Tj +/TT8 1 Tf +10 0 0 10 243.6081 254.97 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 254.97 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1489 Tw +(Removes all occurrences of the property )Tj +/TT12 1 Tf +18.9187 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1489 Tw +[( \(and its value\) from the property list of)]TJ +/TT12 1 Tf +-21.3191 -1.2889 TD +0 Tw +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +(. Returns )Tj +/TT12 1 Tf +4.4771 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +( if any were found \()Tj +/TT8 1 Tf +8.707 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\), otherwise )Tj +/TT8 1 Tf +5.439 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 206.54 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 206.54 Tm +(CHANGEPROP)Tj +10 0 0 10 210 206.54 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 216.0009 206.54 Tm +(X PROP1 PROP2)Tj +/TT8 1 Tf +10 0 0 10 286.2124 206.54 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 206.54 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1333 Tw +(Changes the property name of property )Tj +/TT12 1 Tf +18.6408 0 TD +0 Tw +(PROP1)Tj +/TT6 1 Tf +3.0005 0 TD +0.1333 Tw +[( to )]TJ +/TT12 1 Tf +1.6387 0 TD +0 Tw +(PROP2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1333 Tw +[( on the property list of )]TJ +/TT12 1 Tf +10.9255 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1333 Tw +[( \(but)]TJ +-37.8061 -1.2889 TD +0.0244 Tw +[(does not affect the value of the property\). Returns )]TJ +/TT12 1 Tf +22.7239 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0244 Tw +(, unless )Tj +/TT12 1 Tf +3.6016 0 TD +0 Tw +(PROP1)Tj +/TT6 1 Tf +3.0005 0 TD +0.0244 Tw +[( is not found, in which)]TJ +-29.9261 -1.2889 TD +0 Tw +(case it returns )Tj +/TT8 1 Tf +6.418 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 146.51 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 146.51 Tm +(PROPNAMES)Tj +10 0 0 10 204.6 146.51 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 210.601 146.51 Tm +(ATM)Tj +/TT8 1 Tf +10 0 0 10 226.8036 146.51 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 146.51 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns a list of the property names on the property list of )Tj +/TT12 1 Tf +25.9678 0 TD +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 109.68 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 109.68 Tm +(DEFLIST)Tj +/TT12 1 Tf +4.1999 0 TD +( L PROP)Tj +/TT8 1 Tf +10 0 0 10 231.6061 109.68 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 109.68 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.2911 Tw +(Used to put values under the same property name on the property lists of several)Tj +0 -1.2222 TD +0.11 Tw +(symbols. )Tj +/TT12 1 Tf +4.6468 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.11 Tw +[( is a list of two-element lists. The first element of each is a symbol, and the)]TJ +-5.2469 -1.2889 TD +0 Tw +(second element is the property vqalue of the property )Tj +/TT12 1 Tf +24.0195 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +(. Returns )Tj +/TT8 1 Tf +4.4771 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. For example:)Tj +/TT8 1 Tf +-27.3639 -1.6667 TD +(\(DEFLIST \(\(FOO MA\)\(BAR CA\)\(BAZ RI\)\) STATE\))Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +/TT19 32 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +34 0 obj +<< +/Length 7429 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-7)Tj +/TT16 1 Tf +10 0 0 10 402.2 612 Tm +(SYMBOLS \(LITATOMS\))Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +(puts )Tj +/TT8 1 Tf +2.2585 0 TD +(MA)Tj +/TT6 1 Tf +1.2002 0 TD +0.0544 Tw +[( on )]TJ +/TT8 1 Tf +1.7368 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +(s )Tj +/TT8 1 Tf +1.0061 0 TD +(STATE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +[( property, )]TJ +/TT8 1 Tf +4.7583 0 TD +0 Tw +(CA)Tj +/TT6 1 Tf +1.2002 0 TD +0.0544 Tw +[( on )]TJ +/TT8 1 Tf +1.7368 0 TD +0 Tw +(BAR)Tj +/TT6 1 Tf +1.8003 0 TD +(s )Tj +/TT8 1 Tf +1.0061 0 TD +(STATE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +[( property, and )]TJ +/TT8 1 Tf +6.7556 0 TD +0 Tw +(RI)Tj +/TT6 1 Tf +1.2002 0 TD +0.0544 Tw +[( on )]TJ +/TT8 1 Tf +1.7368 0 TD +0 Tw +(BAZ)Tj +/TT6 1 Tf +1.8003 0 TD +(s )Tj +/TT8 1 Tf +1.0061 0 TD +(STATE)Tj +/TT6 1 Tf +-37.0037 -1.2889 TD +(property.)Tj +-5.3333 -2 TD +(Property lists are conventionally implemented as lists of the form)Tj +/TT8 1 Tf +10 0 0 10 174 524.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 180.001 524.89 Tm +(NAME)Tj +2.3999 -0.2222 TD +(1)Tj +0.6 0.2222 TD +( VALUE)Tj +3.6 -0.2222 TD +(1)Tj +0.6 0.2222 TD +( NAME)Tj +3 -0.2222 TD +(2)Tj +0.6 0.2222 TD +( VALUE)Tj +3.6 -0.2222 TD +(2)Tj +0.6 0.2222 TD +(...)Tj +/TT8 1 Tf +10 0 0 10 331.2026 524.89 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 78 506.29 Tm +0.0311 Tw +[(although the user can store anything as the property list of a symbol. However, thge functions which)]TJ +0 -1.2222 TD +0.0422 Tw +(manipulate property lists observe this convention by searching down the property lists two )Tj +/TT8 1 Tf +41.2008 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +(s at a)Tj +-43.001 -1.2889 TD +0.0078 Tw +[(time. Most of these functions also generate the error )]TJ +/TT8 1 Tf +23.5026 0 TD +0.02 Tw +(Arg not litatom)Tj +/TT6 1 Tf +9.0415 0 TD +0.0078 Tw +[( if given an argument which)]TJ +-32.5441 -1.2889 TD +0.2256 Tw +[(is not a symbol, so they cannot be used directly on lists. \()]TJ +/TT8 1 Tf +28.256 0 TD +0 Tw +(LISTPUT)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.7256 0 TD +(LISTPUT1)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.7256 0 TD +(LISTGET)Tj +/TT6 1 Tf +4.2007 0 TD +0.2256 Tw +(, and)Tj +/TT8 1 Tf +-42.9092 -1.2889 TD +0 Tw +(LISTGET1)Tj +/TT6 1 Tf +4.8008 0 TD +0.0156 Tw +[( are functions similar to )]TJ +/TT8 1 Tf +10.7794 0 TD +0 Tw +(PUTPROP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0156 Tw +[( and )]TJ +/TT8 1 Tf +2.224 0 TD +0 Tw +(GETPROP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0156 Tw +[( that work directly on lists \(see Chapter 3\) .)]TJ +-26.2056 -1.2889 TD +0 Tw +(The property lists of symbols can be directly accessed with the following functions.)Tj +/TT8 1 Tf +10 0 0 10 102 429.61 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 429.61 Tm +(GETPROPLIST)Tj +10 0 0 10 167.4 429.61 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 173.401 429.61 Tm +(ATM)Tj +/TT8 1 Tf +10 0 0 10 189.6036 429.61 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 429.61 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns the property list of )Tj +/TT12 1 Tf +12.2246 0 TD +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 392.78 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 392.78 Tm +(SETPROPLIST)Tj +10 0 0 10 167.4 392.78 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 173.401 392.78 Tm +(ATM)Tj +10 0 0 10 189.6036 392.78 Tm +( )Tj +9 0 0 9 195.6046 392.78 Tm +(LST)Tj +/TT8 1 Tf +10 0 0 10 211.8072 392.78 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 392.78 Tm +([Function])Tj +-35.4033 -1.8833 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +( is a symbol, sets the property list of )Tj +/TT12 1 Tf +16.1182 0 TD +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +( to be )Tj +/TT12 1 Tf +2.6543 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(, and returns )Tj +/TT12 1 Tf +5.897 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +( as its value.)Tj +/TT8 1 Tf +10 0 0 10 102 355.95 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 355.95 Tm +(GETLIS)Tj +10 0 0 10 140.4 355.95 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 146.401 355.95 Tm +(X)Tj +10 0 0 10 151.8018 355.95 Tm +( )Tj +9 0 0 9 157.8028 355.95 Tm +(PROPS)Tj +/TT8 1 Tf +10 0 0 10 184.8072 355.95 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 355.95 Tm +([Function])Tj +-35.4033 -1.8889 TD +0.1411 Tw +(Searches the property list of )Tj +/TT12 1 Tf +10 0 0 10 245.5267 338.95 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 251.5277 338.95 Tm +0.1411 Tw +(, and returns the property list as of the first property on)Tj +/TT12 1 Tf +-13.9475 -1.3278 TD +0 Tw +(PROPS)Tj +/TT6 1 Tf +3.0005 0 TD +( that it finds. For example:)Tj +/TT19 1 Tf +2.3328 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GETPROPLIST X\))Tj +-0.3202 -1 TD +(\(PROP1 A PROP3 B A C\))Tj +/TT19 1 Tf +-0.6667 -1 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GETLIS X \(PROP2 PROP3\)\))Tj +-0.3202 -1.2222 TD +(\(PROP3 B A C\))Tj +/TT6 1 Tf +-6 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.7715 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0444 Tw +[( if no element on props is found. )]TJ +/TT12 1 Tf +15.2555 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0444 Tw +[( can also be a list itself, in which case it is)]TJ +-21.4274 -1.2889 TD +0 Tw +(searched as described above. If )Tj +/TT12 1 Tf +14.187 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a symbol or a list, returns )Tj +/TT8 1 Tf +14.3989 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 234.92 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 234.92 Tm +(REMPROPLIST)Tj +10 0 0 10 167.4 234.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 173.401 234.92 Tm +(ATM)Tj +10 0 0 10 189.6036 234.92 Tm +( )Tj +9 0 0 9 195.6046 234.92 Tm +(PROPS)Tj +/TT8 1 Tf +10 0 0 10 222.609 234.92 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 234.92 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.2278 Tw +(Removes all occurrences of all properties on the list )Tj +/TT12 1 Tf +25.0051 0 TD +0 Tw +(PROPS)Tj +/TT6 1 Tf +3.0005 0 TD +0.2278 Tw +[( \(and their corresponding)]TJ +-28.0056 -1.2889 TD +0 Tw +(property values\) from the property list of )Tj +/TT12 1 Tf +18.4985 0 TD +(ATM)Tj +/TT6 1 Tf +1.8003 0 TD +(. Returns )Tj +/TT8 1 Tf +4.4771 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 183.43 Tm +(Print Names)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 180.72 m +510.01 180.72 l +S +BT +/TT6 1 Tf +9 0 0 9 78 166.77 Tm +0.0944 Tw +[(The term print name has an extended meaning: The characters that are output when )]TJ +/TT18 1 Tf +40.11 0 TD +(any object)Tj +/TT6 1 Tf +4.1584 0 TD +[( is)]TJ +-44.2684 -1.2222 TD +0.0633 Tw +[(printed. In Medley, all objects have print names, although only symbols and strings have their print)]TJ +T* +0 Tw +(names explicitly stored. Symbol print names are limited to 255 characters. )Tj +0 -2 TD +0.05 Tw +(This section describes a set of functions that can be used to access and manipulate the print names of)Tj +0 -1.2222 TD +0.2511 Tw +[(any object, though they are primarily used with the print names of symbols. In Medley, print)]TJ +T* +0.1189 Tw +(functions qualify symbol names with a package prefix if the symbol is not accessible in the current)Tj +T* +0 Tw +(package. The exception is Interlisps )Tj +/TT8 1 Tf +16.4668 0 TD +(PRIN1,)Tj +/TT6 1 Tf +3.6006 0 TD +( which does not include a package prefix.)Tj +-20.0674 -2.0667 TD +0.0078 Tw +(The print name of an object is those characters that are output when the object is printed using )Tj +/TT8 1 Tf +42.0726 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +-45.0731 -1.2889 TD +0.1278 Tw +(e.g., the print name of the list )Tj +/TT8 1 Tf +14.0541 0 TD +0.3067 Tw +(\(A B "C"\))Tj +/TT6 1 Tf +6.0142 0 TD +0.1278 Tw +[( consists of the seven characters )]TJ +/TT8 1 Tf +15.0108 0 TD +0.3067 Tw +(\(A B C\))Tj +/TT6 1 Tf +4.814 0 TD +0.1278 Tw +[( \(two of the)]TJ +-39.8932 -1.2889 TD +0 Tw +(characters are spaces\).)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +/TT18 22 0 R +/TT19 32 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +37 0 obj +<< +/Length 8276 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-8)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +(The )Tj +/TT8 1 Tf +1.9327 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0089 Tw +(-name of an object is those characters output when the object is printed using )Tj +/TT8 1 Tf +34.4125 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0089 Tw +[(. Thus)]TJ +-42.3462 -1.2889 TD +0 Tw +(the )Tj +/TT8 1 Tf +1.7239 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0867 Tw +(-name of the list )Tj +/TT8 1 Tf +7.7217 0 TD +0.2078 Tw +(\(A B "C"\))Tj +/TT6 1 Tf +5.8164 0 TD +0.0867 Tw +[( is the 9 characters )]TJ +/TT8 1 Tf +8.7742 0 TD +0.2078 Tw +(\(A B "C"\))Tj +/TT6 1 Tf +5.8164 0 TD +0.0867 Tw +[( \(including the two spaces\).)]TJ +-32.8531 -1.2889 TD +0 Tw +(The )Tj +/TT8 1 Tf +2.0749 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1511 Tw +(-name depends on what readtable is being used \(see Chapter 25\), since this determines)Tj +-5.0754 -1.2889 TD +0.0444 Tw +[(where %s will be inserted. Many of the functions below allow either print names of )]TJ +/TT8 1 Tf +37.9601 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0444 Tw +(-names to)Tj +-40.9606 -1.2889 TD +0.0433 Tw +(be used, as specified by )Tj +/TT8 1 Tf +10.8514 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[( and )]TJ +/TT8 1 Tf +2.2795 0 TD +0 Tw +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( arguments. If )]TJ +/TT8 1 Tf +6.8413 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[( is )]TJ +/TT8 1 Tf +1.3015 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[(, print names are used. Otherwise,)]TJ +/TT8 1 Tf +-29.6752 -1.2889 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1378 Tw +(-names are used, computed with respect to the readtable )Tj +/TT8 1 Tf +26.4988 0 TD +0 Tw +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1378 Tw +[( \(or the current readtable, if)]TJ +/TT8 1 Tf +-32.4998 -1.2889 TD +0 Tw +(RDTBL = NIL)Tj +/TT6 1 Tf +6.6011 0 TD +(\).)Tj +-6.6011 -2.0667 TD +0.2256 Tw +(The print name of an integer depends on the setting of )Tj +/TT8 1 Tf +26.7785 0 TD +0 Tw +(RADIX)Tj +/TT6 1 Tf +3.0005 0 TD +0.2256 Tw +[( \(see Chapter 25\). The functions)]TJ +-29.779 -1.2889 TD +0.1389 Tw +(described in this section \()Tj +/TT8 1 Tf +11.7631 0 TD +0 Tw +(UNPACK)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.6389 0 TD +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1389 Tw +(, etc.\) define the print name of an integer as though the)Tj +-19.6031 -1.2889 TD +0.0278 Tw +(radix was )Tj +/TT8 1 Tf +4.6264 0 TD +0 Tw +(10)Tj +/TT6 1 Tf +1.2002 0 TD +0.0278 Tw +(, so that)Tj +/TT8 1 Tf +3.5097 0 TD +0.0656 Tw +[( \(PACK \(UNPACK X9\)\))]TJ +/TT6 1 Tf +12.1986 0 TD +0.0278 Tw +[( will always be )]TJ +/TT8 1 Tf +6.9553 0 TD +0 Tw +(X9)Tj +/TT6 1 Tf +1.2002 0 TD +0.0278 Tw +[( \(and not )]TJ +/TT8 1 Tf +4.3133 0 TD +0 Tw +(X11)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +(, if )Tj +/TT8 1 Tf +1.4296 0 TD +0 Tw +(RADIX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0278 Tw +[( is set to )]TJ +/TT8 1 Tf +3.927 0 TD +0 Tw +(8)Tj +/TT6 1 Tf +0.6001 0 TD +(\).)Tj +-44.7612 -1.2889 TD +0.1289 Tw +(However, integers will still be printed by )Tj +/TT8 1 Tf +19.3212 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.1289 Tw +[( using the current radix. The user can force these)]TJ +-22.3217 -1.2889 TD +0.0578 Tw +(functions to use print names in the current radix by changing the setting of the variable )Tj +/TT8 1 Tf +39.7081 0 TD +0 Tw +(PRXFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.0578 Tw +[( \(see)]TJ +-43.3087 -1.2889 TD +0 Tw +(Chapter 25\). )Tj +/TT8 1 Tf +10 0 0 10 150 405.29 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 405.29 Tm +(CL:SYMBOL-NAME)Tj +/TT8 1 Tf +10 0 0 10 231.6133 405.29 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 237.6142 405.29 Tm +(SYM)Tj +/TT8 1 Tf +10 0 0 10 253.8169 405.29 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 433.44 405.29 Tm +([Common Lisp Function])Tj +-28.8267 -1.8889 TD +0.1289 Tw +(Returns a string displaced to the )Tj +/TT12 1 Tf +10 0 0 10 312.0181 388.29 Tm +0 Tw +(SYM)Tj +/TT6 1 Tf +9 0 0 9 330.021 388.29 Tm +0.1289 Tw +[( print name. Strings returned from )]TJ +/TT8 1 Tf +16.6674 0 TD +0 Tw +(CL:SYMBOL-)Tj +-34.003 -1.3278 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +( may be destructively modified without affecting )Tj +/TT12 1 Tf +21.9082 0 TD +(SYM)Tj +/TT6 1 Tf +1.8003 0 TD +(s print name.)Tj +/TT8 1 Tf +10 0 0 10 150 356.46 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 356.46 Tm +(NCHARS)Tj +/TT12 1 Tf +10 0 0 10 188.4062 356.46 Tm +( )Tj +9 0 0 9 194.4072 356.46 Tm +(X FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 253.8 356.46 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 356.46 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0744 Tw +(Returns the number of characters in the print name of )Tj +/TT12 1 Tf +24.7498 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0744 Tw +[(. If )]TJ +/TT12 1 Tf +1.8933 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0745 Tw +[( = )]TJ +/TT8 1 Tf +1.2548 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0744 Tw +(, the )Tj +/TT8 1 Tf +2.2861 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0744 Tw +(-name is)Tj +-36.185 -1.2889 TD +0 Tw +(used. Examples:)Tj +/TT8 1 Tf +5.3333 -1.6 TD +(\(NCHARS ABC\) => 3)Tj +0 -1 TD +(\(NCHARS "ABC" T\) => 5)Tj +-5.3333 -2.0667 TD +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +( works most efficiently on symbols and strings, but can be given any object. )Tj +/TT8 1 Tf +10 0 0 10 150 266.03 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 266.03 Tm +(NTHCHAR)Tj +/TT8 1 Tf +10 0 0 10 193.8071 266.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.8081 266.03 Tm +(X N FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 270 266.03 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 266.03 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT12 1 Tf +3.7882 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +(, if )Tj +/TT12 1 Tf +1.4962 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +[( is a tail of the list )]TJ +/TT8 1 Tf +8.399 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +(; otherwise )Tj +/TT8 1 Tf +5.2282 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0611 Tw +(. )Tj +/TT12 1 Tf +0.8722 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +[( is a tail of )]TJ +/TT8 1 Tf +5.0575 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +[( if it is )]TJ +/TT8 1 Tf +3.2005 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0611 Tw +[( to )]TJ +/TT8 1 Tf +1.4943 0 TD +0 Tw +(0)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +[( or more)]TJ +/TT8 1 Tf +-36.1372 -1.2889 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(s of )Tj +/TT8 1 Tf +1.8027 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +1.1302 -1.6667 TD +(\(NTHCHAR ABC 2\) => B)Tj +0 -1 TD +(\(NTHCHAR 15.6 2\) => 5)Tj +T* +(\(NTHCHAR ABC%\(D -3 T\) => %%)Tj +T* +(\(NTHCHAR "ABC" 2\) => B)Tj +T* +(\(NTHCHAR "ABC" 2 T\) => A)Tj +-5.3333 -1.8444 TD +(NTHCAR)Tj +/TT6 1 Tf +3.6006 0 TD +0.3978 Tw +[( and )]TJ +/TT8 1 Tf +2.9884 0 TD +0 Tw +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +0.3978 Tw +[( work much faster on objects that actually have an internal)]TJ +-10.1896 -1.2889 TD +0.02 Tw +(representation of their print name, i.e., symbols and strings, than they do on numbers and)Tj +0 -1.2222 TD +0 Tw +(lists, since they dont have to simulate printing. )Tj +/TT8 1 Tf +10 0 0 10 150 128 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 128 Tm +(L-CASE)Tj +10 0 0 10 188.4 128 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 194.401 128 Tm +(X FLG)Tj +/TT8 1 Tf +10 0 0 10 221.4053 128 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 128 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0367 Tw +(Returns a lowercase version of )Tj +/TT12 1 Tf +13.9626 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[(. If )]TJ +/TT12 1 Tf +1.7799 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0367 Tw +[( is )]TJ +/TT8 1 Tf +1.2882 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[(, the first letter is capitalized. If )]TJ +/TT12 1 Tf +14.4647 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[( is a string,)]TJ +-35.096 -1.2889 TD +0.0589 Tw +(the value of )Tj +/TT8 1 Tf +5.6308 0 TD +0 Tw +(L-CASE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0589 Tw +[( is also a string. If )]TJ +/TT12 1 Tf +8.6319 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0589 Tw +[( is a list, )]TJ +/TT8 1 Tf +4.0324 0 TD +0 Tw +(L-CASE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0589 Tw +[( returns a new list in which )]TJ +/TT8 1 Tf +12.6993 0 TD +0 Tw +(L-)Tj +-38.7958 -1.2889 TD +(CASE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1267 Tw +[( is computed for each corresponding element and non-)]TJ +/TT8 1 Tf +25.2062 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1267 Tw +[( tail of the original list.)]TJ +-29.4069 -1.2889 TD +0 Tw +(Examples:)Tj +/TT8 1 Tf +5.3333 -1.6 TD +(\(L-CASE FOO\) => foo)Tj +0 -1 TD +(\(L-CASE FOO T\) => Foo)Tj +T* +(\(L-CASE "FILE NOT FOUND" T\) => "File not found")Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +40 0 obj +<< +/Length 5753 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-9)Tj +/TT16 1 Tf +10 0 0 10 402.2 612 Tm +(SYMBOLS \(LITATOMS\))Tj +/TT8 1 Tf +9 0 0 9 174 570.14 Tm +(\(L-CASE \(JANUARY FEBRUARY \(MARCH "APRIL"\)\) T\) =>)Tj +2 -1 TD +(\(January February \(March "April"\)\))Tj +10 0 0 10 102 543.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 543.26 Tm +(U-CASE)Tj +10 0 0 10 140.4 543.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 146.401 543.26 Tm +(X)Tj +/F3 1 Tf +10 0 0 10 151.8018 543.26 Tm +( )Tj +/TT8 1 Tf +0.278 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 543.26 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(L-CASE)Tj +/TT6 1 Tf +3.6006 0 TD +(, but returns the uppercase version of )Tj +/TT12 1 Tf +16.7603 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 506.43 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 506.43 Tm +(U-CASEP)Tj +10 0 0 10 145.8 506.43 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 151.801 506.43 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 157.2018 506.43 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 506.43 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( contains no lowercase letters; )Tj +/TT8 1 Tf +13.6846 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT4 1 Tf +10 0 0 10 54 466.54 Tm +(Characters and Character Codes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 463.83 m +510.01 463.83 l +S +BT +/TT6 1 Tf +9 0 0 9 78 449.88 Tm +0.0467 Tw +[(Characters are represented 3 different ways in Medley. In Interlisp they are single-character symbols)]TJ +0 -1.2222 TD +0.21 Tw +[(or integer character codes. In Common Lisp they are instances of the )]TJ +/TT8 1 Tf +33.4771 0 TD +0 Tw +(CHARACTER)Tj +/TT6 1 Tf +5.4009 0 TD +0.21 Tw +[( datatype. In)]TJ +-38.878 -1.2889 TD +0.0844 Tw +[(general Interlisp character functions dont accept Common Lisp characters and vice versa. The only)]TJ +0 -1.2222 TD +0.3778 Tw +(exceptions are Interlisp string-manipulation functions that accept string or symbol types as)Tj +T* +0 Tw +(arguments.)Tj +0 -2 TD +0.1 Tw +(You can convert between Interlisp and Common Lisp characaters by using the functions )Tj +/TT8 1 Tf +40.5275 0 TD +0 Tw +(CL:CODE-)Tj +-40.5275 -1.2889 TD +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(CL:CHAR-CODE)Tj +/TT6 1 Tf +7.2012 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +( \(see below\).)Tj +-17.3452 -2.0667 TD +0.0767 Tw +(Medley uses the 16-bit NS character set, described in the document Character Code Standard \(Xerox)Tj +0 -1.2222 TD +0.0467 Tw +[(System Integration Standards, XSIS 058404, April 1984\). Legal character codes range from 0 to 65535.)]TJ +T* +0.0511 Tw +(The NS \(Network Systems\) character encoding encompasses a much wider set of available characters)Tj +T* +0.2056 Tw +(than the 8-bit character standards \(such as ASCII\), including characters comprising many foreign)Tj +T* +0.2878 Tw +[(alphabets and special symbols. For instance, Medley supports the display and printing of the)]TJ +T* +0 Tw +(following:)Tj +/F1 1 Tf +10 0 0 10 78 285.8 Tm +()Tj +/TT6 1 Tf +9 0 0 9 90 285.8 Tm +(Le systme dinformation Medley est remarqueablement polyglotte)Tj +/F1 1 Tf +10 0 0 10 78 269.52 Tm +()Tj +/TT6 1 Tf +9 0 0 9 90 269.52 Tm +(Das Medley Kommunikationssystem bietet merkwrdige multilinguale Nutzmglichkeiten)Tj +/F1 1 Tf +10 0 0 10 78 253.24 Tm +()Tj +/TT6 1 Tf +9 0 0 9 90 253.24 Tm +(M )Tj +/TT19 1 Tf +1.1958 0 TD +<0085>Tj +/TT6 1 Tf +0.7129 0 TD +( )Tj +/TT20 1 Tf +0.25 0 TD +<0054>Tj +/TT6 1 Tf +0.7588 0 TD +( [w] )Tj +/TT19 1 Tf +2 0 TD +<008b>Tj +/TT6 1 Tf +1.042 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +<0099>Tj +/TT6 1 Tf +0.7129 0 TD +( v with Rwv: M )Tj +/TT19 1 Tf +7.1108 0 TD +<0085>Tj +/TT6 1 Tf +0.7129 0 TD +( [v])Tj +-16.0794 -2 TD +0.1378 Tw +(These characters can be used in strings, symbol print names, symbolic files, or anywhere else 8-bit)Tj +0 -1.2222 TD +0.17 Tw +[(characters could be used. All of the standard string and print name functions \()]TJ +/TT8 1 Tf +37.2072 0 TD +0 Tw +(RPLSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.67 0 TD +(GNC)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +/TT8 1 Tf +-45.0783 -1.2889 TD +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +(, etc.\) accept symbols and strings containing NS characters. For example:)Tj +/TT19 1 Tf +-2.3678 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(STRPOS "char""this is an 8-bit character string"\))Tj +1.0132 -1.2222 TD +(18)Tj +/TT19 1 Tf +-2 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(STRPOS "char""celui-ci comports des characteres NS"\))Tj +1.0132 -1.2222 TD +(23)Tj +/TT6 1 Tf +-7.3333 -1.8444 TD +0.0444 Tw +(In almost all cases, a program does not have to distinguish between NS characters or 8-bit characters.)Tj +0 -1.2222 TD +0 Tw +(The exception to this rule is the handling of input/output operations \(see Chapter 25\).)Tj +0 -2 TD +0.0944 Tw +(The function )Tj +/TT8 1 Tf +6.0697 0 TD +0 Tw +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0944 Tw +[( \(see below\) provides a simple way to create individual NS character codes.)]TJ +-10.8705 -1.2889 TD +0.1711 Tw +(The VirtualKeyboards library module provides a set of virtual keyboards that allows keyboard or)Tj +0 -1.2222 TD +0 Tw +(mouse entry of NS characters.)Tj +/TT8 1 Tf +10 0 0 10 102 75.16 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 75.16 Tm +(PACKC)Tj +/TT8 1 Tf +10 0 0 10 135 75.16 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 141.001 75.16 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 146.4018 75.16 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 75.16 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +( except )Tj +/TT12 1 Tf +3.3452 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a list of character codes. For example,)Tj +/TT8 1 Tf +-3.1994 -1.6667 TD +(\(PACKC \(70 79 79\)\) => FOO)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 42 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +/TT19 32 0 R +/TT20 43 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +45 0 obj +<< +/Length 7376 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-10)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +5.4 -4.374 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 568.26 Tm +(CHCON)Tj +/TT8 1 Tf +10 0 0 10 183 568.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 189.0009 568.26 Tm +(X FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 248.4106 568.26 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.26 Tm +([Function])Tj +-35.4033 -1.8889 TD +(Like )Tj +/TT8 1 Tf +2.2292 0 TD +(UNPACK)Tj +/TT6 1 Tf +3.6006 0 TD +0.0422 Tw +(, but returns the print name o)Tj +/TT12 1 Tf +10 0 0 10 345.8275 551.26 Tm +0 Tw +(f)Tj +/TT6 1 Tf +9 0 0 9 351.8285 551.26 Tm +( )Tj +/TT12 1 Tf +0.2922 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +[( as a list of character codes. If )]TJ +/TT12 1 Tf +13.753 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +[( = )]TJ +/TT8 1 Tf +10 0 0 10 510.553 551.26 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 516.554 551.26 Tm +0.0422 Tw +(, the)Tj +/TT8 1 Tf +-38.0616 -1.3278 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +(-name is used. For example:)Tj +/TT8 1 Tf +2.3328 -1.6667 TD +(\(CHCON FOO\) => \(70 79 79\))Tj +10 0 0 10 150 506.43 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 506.43 Tm +(DCHCON)Tj +/TT8 1 Tf +10 0 0 10 188.4 506.43 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 194.401 506.43 Tm +(X SCRATCHLIST FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 318.6212 506.43 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 506.43 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(DUNPACK)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 469.6 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 469.6 Tm +(NTHCHARCODE)Tj +/TT8 1 Tf +10 0 0 10 215.4 469.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 221.401 469.6 Tm +(X N FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 291.6124 469.6 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 469.6 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.2448 0 TD +(NTHCHAR)Tj +/TT6 1 Tf +4.2007 0 TD +0.0578 Tw +(, but returns the character code of the )Tj +/TT12 1 Tf +17.1966 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0578 Tw +(th character of the print name of )Tj +/TT12 1 Tf +14.9118 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-39.754 -1.2889 TD +(If )Tj +/TT12 1 Tf +0.9977 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +[( is negative, it is interpreted as a count backwards from the end of )]TJ +/TT12 1 Tf +30.4649 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +[(. If the absolute)]TJ +-32.6628 -1.2889 TD +0.3267 Tw +(value of )Tj +/TT12 1 Tf +4.4702 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.3267 Tw +[( is greater than the number of characters in )]TJ +/TT12 1 Tf +22.1485 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.3267 Tw +(, or )Tj +/TT8 1 Tf +2.3442 0 TD +0 Tw +(0)Tj +/TT6 1 Tf +0.6001 0 TD +0.3267 Tw +(, then the value of)Tj +/TT8 1 Tf +-30.7633 -1.2889 TD +0 Tw +(NTHCHARCODE)Tj +/TT6 1 Tf +6.6011 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-9.6162 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, then the )Tj +/TT8 1 Tf +4.3564 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +(-name of )Tj +/TT12 1 Tf +4.1558 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is used, computed with respect to the readtable.)Tj +/TT8 1 Tf +10 0 0 10 150 379.37 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 379.37 Tm +(CHCON1)Tj +/TT8 1 Tf +10 0 0 10 188.4 379.37 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 194.401 379.37 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 199.8018 379.37 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 379.37 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.3089 Tw +(Returns the character code of the first character of the print name of )Tj +/TT12 1 Tf +34.1586 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.3089 Tw +[(; equal to)]TJ +/TT8 1 Tf +-34.7587 -1.2889 TD +0 Tw +(\(NTHCHARCODE X 1\))Tj +/TT6 1 Tf +10.2017 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 330.94 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 330.94 Tm +(CHARACTER)Tj +/TT8 1 Tf +10 0 0 10 204.6 330.94 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 210.601 330.94 Tm +(N)Tj +/TT8 1 Tf +10 0 0 10 216.0018 330.94 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 330.94 Tm +([Function])Tj +/TT12 1 Tf +-35.4033 -1.8833 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0233 Tw +[( is a character code. Returns the symbol having the corresponding single character as its)]TJ +-0.6001 -1.2889 TD +0 Tw +(print name.)Tj +/TT8 1 Tf +5.3333 -1.6 TD +( \(CHARACTER 70\) => F)Tj +10 0 0 10 150 270.11 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 270.11 Tm +(FCHARACTER)Tj +/TT8 1 Tf +10 0 0 10 210 270.11 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 216.0009 270.11 Tm +(N)Tj +/TT8 1 Tf +10 0 0 10 221.4018 270.11 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 270.11 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Fast version of )Tj +/TT8 1 Tf +6.7168 0 TD +(CHARACTER)Tj +/TT6 1 Tf +5.4009 0 TD +( that compiles open.)Tj +-17.451 -2.0667 TD +0.0044 Tw +(The following function makes it possible to gain the efficiency that comes from dealinig with character)Tj +0 -1.2222 TD +0 Tw +(codes without losing the symbolic advantages of character symbols.)Tj +/TT8 1 Tf +10 0 0 10 150 204.28 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 204.28 Tm +(CHARCODE)Tj +/TT8 1 Tf +10 0 0 10 199.2 204.28 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 205.201 204.28 Tm +(CHAR)Tj +/TT8 1 Tf +10 0 0 10 226.8045 204.28 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 204.28 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1178 Tw +(Returns the character code specified by )Tj +/TT12 1 Tf +18.2775 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1178 Tw +[( \(unevaluated\). If )]TJ +/TT12 1 Tf +8.5961 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1178 Tw +[( is a one-character)]TJ +-31.6744 -1.2889 TD +0.02 Tw +[(symbol or string, the corresponding character code is simply returned. Thus, )]TJ +/TT8 1 Tf +34.594 0 TD +0 Tw +(\(CHARCODE)Tj +-34.594 -1.2889 TD +(A\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0006 Tc +0.0016 Tw +( is )Tj +/TT8 1 Tf +1.2193 0 TD +0 Tc +0 Tw +(65)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5022 0 TD +0.0044 Tw +(\(CHARCODE 0\))Tj +/TT6 1 Tf +7.2056 0 TD +0.0006 Tc +0.0016 Tw +( is )Tj +/TT8 1 Tf +1.2193 0 TD +0 Tc +0 Tw +(48)Tj +/TT6 1 Tf +1.2002 0 TD +0.0004 Tc +0.0018 Tw +(. If )Tj +/TT12 1 Tf +1.6766 0 TD +0 Tc +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0022 Tw +( is a multi-character symbol or string, it specifies a)Tj +-17.824 -1.2889 TD +0.2689 Tw +[(character code as described below. If )]TJ +/TT12 1 Tf +18.6103 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.2689 Tw +[( is )]TJ +/TT8 1 Tf +1.7526 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7689 0 TD +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2689 Tw +[( simply returns )]TJ +/TT8 1 Tf +7.8067 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-39.7402 -1.2889 TD +0.0478 Tw +(Finally, if )Tj +/TT12 1 Tf +4.537 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0478 Tw +[( is a list structure, the value is a copy of )]TJ +/TT12 1 Tf +18.1335 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0478 Tw +[( with all the leaves replaced)]TJ +-27.4712 -1.2889 TD +(by the corresponding character codes. For instance, )Tj +/TT8 1 Tf +23.226 0 TD +0.1144 Tw +(\(CHARCODE \(A \(B C\)\)\) => \(65)Tj +-23.226 -1.2889 TD +0 Tw +(\(66 67\)\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-4.8008 -2.0667 TD +0.0378 Tw +(If a character is specified by a multi-character symbol or string, )Tj +/TT8 1 Tf +28.4873 0 TD +0 Tw +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0378 Tw +[( interprets it as)]TJ +-33.2881 -1.2889 TD +0 Tw +(follows:)Tj +/TT8 1 Tf +0 -2 TD +(CR)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(SPACE)Tj +/TT6 1 Tf +3.0005 0 TD +(, etc.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +48 0 obj +<< +/Length 5202 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-11)Tj +/TT16 1 Tf +10 0 0 10 402.2 612 Tm +(SYMBOLS \(LITATOMS\))Tj +/TT6 1 Tf +9 0 0 9 150 569.54 Tm +0.1233 Tw +(The variable )Tj +/TT8 1 Tf +5.9947 0 TD +0 Tw +(CHARACTERNAMES)Tj +/TT6 1 Tf +8.4014 0 TD +0.1233 Tw +[( contains an association list mapping special)]TJ +-14.3961 -1.2889 TD +0.1189 Tw +[(symbols to character codes. Among the characters defined this way are CR)]TJ +0 -1.2278 TD +0 Tw +(\()Tj +/TT8 1 Tf +10 0 0 10 152.9971 546.89 Tm +(13)Tj +/TT6 1 Tf +9 0 0 9 164.999 546.89 Tm +0.0944 Tw +(\), LF \(10\), SPACE or SP \(32\), ESCAPE or ESC \(27\), BELL \(7\), BS \(8\), TAB)Tj +-1.6666 -1.3278 TD +0.1489 Tw +[(\(9\), NULL \(0\), and DEL \(127\). The symbol EOL maps into the appropriate)]TJ +0 -1.2222 TD +0.2111 Tw +(end-of-line character code in the different Interlisp implementations \(31 in)Tj +T* +0 Tw +(Interlisp-10, 13 in Interlisp-D, 10 in Interlisp-VAX\). Examples:)Tj +/TT8 1 Tf +2.6667 -1.6 TD +(\(CHARCODE SPACE\) => 32)Tj +0 -1 TD +(\(CHARCODE CR\) => 13)Tj +-5.3333 -1.85 TD +(CHARSET)Tj +10 0 0 10 163.8061 472.89 Tm +(, )Tj +9 0 0 9 175.8081 472.89 Tm +(CHARNUM)Tj +10 0 0 10 213.6142 472.89 Tm +(, )Tj +9 0 0 9 225.6162 472.89 Tm +(CHARSET-CHARNUM)Tj +/TT6 1 Tf +-8.4018 -2.1056 TD +0.2611 Tw +(If the character specification is a symbol or string of the form )Tj +/TT8 1 Tf +30.2129 0 TD +0 Tw +(CHARSET)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +/TT8 1 Tf +-34.4136 -1.2889 TD +(CHARNUM)Tj +/TT6 1 Tf +4.2007 0 TD +0.0022 Tw +(, or )Tj +/TT8 1 Tf +1.6954 0 TD +0 Tw +(CHARSET-CHARNUM)Tj +/TT6 1 Tf +9.0015 0 TD +0.0022 Tw +(, the character code for the character number)Tj +/TT8 1 Tf +-14.8975 -1.2889 TD +0 Tw +(CHARNUM)Tj +/TT6 1 Tf +4.2007 0 TD +( in the character set )Tj +/TT8 1 Tf +8.8042 0 TD +(CHARSET)Tj +/TT6 1 Tf +4.2007 0 TD +( is returned.)Tj +-17.2056 -2.0667 TD +0.0322 Tw +(The 16-bit NS character encoding is divided into a large number of character)Tj +/F1 1 Tf +10 0 0 10 150 399.86 Tm +0 Tw +(s)Tj +/TT6 1 Tf +9 0 0 9 154.63 399.86 Tm +0.1389 Tw +[(ets. Each 16-bit character can be decoded into a character set \(an integer)]TJ +-0.5144 -1.2222 TD +0.0344 Tw +(from 0 to 254 inclusive\) and a character number \(also an integer from 0 to 254)Tj +T* +0.0489 Tw +(inclusive\). )Tj +/TT8 1 Tf +5.1505 0 TD +0 Tw +(CHARSET)Tj +/TT6 1 Tf +4.2007 0 TD +0.0489 Tw +[( is either an octal number, or a symbol in the association)]TJ +-9.3512 -1.2889 TD +0 Tw +(list )Tj +/TT8 1 Tf +1.9865 0 TD +(CHARACTERSETNAMES)Tj +/TT6 1 Tf +10.2017 0 TD +0.4044 Tw +[( \(which defines the character sets for )]TJ +/TT8 1 Tf +19.2247 0 TD +0 Tw +(GREEK)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +/TT8 1 Tf +-34.4133 -1.2889 TD +(CYRILLIC)Tj +/TT6 1 Tf +4.8008 0 TD +(, etc.\).)Tj +/TT8 1 Tf +-4.8008 -2.0667 TD +(CHARNUM)Tj +/TT6 1 Tf +4.2007 0 TD +0.1633 Tw +[( is either an octal number, a single-character symbol, or a symbol)]TJ +-4.2007 -1.2889 TD +0.2644 Tw +(from the association list )Tj +/TT8 1 Tf +11.8073 0 TD +0 Tw +(CHARACTERNAMES)Tj +/TT6 1 Tf +8.4014 0 TD +0.2644 Tw +[(. If )]TJ +/TT8 1 Tf +2.4633 0 TD +0 Tw +(CHARNUM)Tj +/TT6 1 Tf +4.2007 0 TD +0.2644 Tw +[( is a single-digit)]TJ +-26.8726 -1.2889 TD +0.0511 Tw +(number, it is interpreted as the character 2, rather than as the octal number)Tj +0 -1.2222 TD +0 Tw +(2. Examples:)Tj +/TT8 1 Tf +2.6667 -1.6 TD +(\(CHARCODE 12,6\) => 2566)Tj +0 -1 TD +(\(CHARCODE 12,SPACE\) => 2592)Tj +T* +(\(CHARCODE GREEK,A\) => 9793)Tj +/TT19 1 Tf +-5.3333 -2 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(CHARSPEC \(control chars\))Tj +/TT6 1 Tf +2.0636 -2.0667 TD +0.0911 Tw +(If the character specification is a symbol or string of one of the forms above,)Tj +0 -1.2222 TD +0.0267 Tw +(preceded by the character )Tj +/TT19 1 Tf +11.7668 0 TD +0 Tw +<0042>Tj +/TT6 1 Tf +0.603 0 TD +0.0267 Tw +(, this indicates a control character, derived from)Tj +-12.3699 -1.2222 TD +0.1567 Tw +(the normal character code by clearing the seventh bit of the character code)Tj +T* +0 Tw +(\(normally set\). Examples:)Tj +/TT8 1 Tf +2.6667 -1.6 TD +(\(CHARCODE )Tj +/TT19 1 Tf +6.001 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(A\) => 1)Tj +-6.604 -1 TD +(\(CHARCODE )Tj +/TT19 1 Tf +6.001 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(GREEK,A\) => 9729)Tj +-11.9373 -2.2089 TD +(#CHARSPEC)Tj +/F1 1 Tf +10 0 0 10 174.6079 156.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 177.3879 156.58 Tm +(\(meta chars\))Tj +/TT6 1 Tf +-3.0431 -2.0667 TD +0.0911 Tw +(If the character specification is a symbol or string of one of the forms above,)Tj +0 -1.2222 TD +0.0033 Tw +(preceded by the charactger )Tj +/TT8 1 Tf +12.2296 0 TD +0 Tw +(#)Tj +/TT6 1 Tf +0.6001 0 TD +0.0033 Tw +(, this indicates a meta character, derived from the)Tj +-12.8297 -1.2889 TD +0.0056 Tw +(normal character code by setting the eighth bit of the character code \(normally)Tj +0 -1.2222 TD +0 Tw +(cleared\). )Tj +/TT19 1 Tf +4.0317 0 TD +<0042>Tj +/TT6 1 Tf +0.603 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(#)Tj +/TT6 1 Tf +0.6001 0 TD +( can both be set at once. Examples:)Tj +/TT8 1 Tf +-4.7611 -1.6667 TD +(\(CHARCODE #A\) => 193)Tj +0 -1 TD +(\(CHARCODE #)Tj +/TT19 1 Tf +6.6011 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(GREEK,A\) => 9857)Tj +/TT6 1 Tf +-12.5374 -1.8444 TD +(A )Tj +/TT8 1 Tf +1.3556 0 TD +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3278 Tw +[( form can be used wherever a structure of character codes would be)]TJ +-6.1564 -1.2889 TD +0 Tw +(appropriate. For example:)Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT16 18 0 R +/TT19 32 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +53 0 obj +<< +/Length 4365 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-12)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 570.14 Tm +(\(FMEMB \(NTHCHARCODE X 1\)\(CHARCODE \(CR LF SPACE )Tj +/TT19 1 Tf +28.2046 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(A\)\)\))Tj +-28.8076 -1 TD +(\(EQ \(READCCODE FOO\)\(CHARCODE GREEK,A\)\))Tj +/TT6 1 Tf +-5.3333 -2.0667 TD +0.4178 Tw +(There is a macro for )Tj +/TT8 1 Tf +11.1431 0 TD +0 Tw +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.4178 Tw +[( which causes the character-code structure to be)]TJ +-15.9439 -1.2889 TD +0.1589 Tw +[(constructed at compile-time. Thus, the compiled code for these examples is exactly as)]TJ +0 -1.2222 TD +0 Tw +(efficient as the less readable:)Tj +/TT8 1 Tf +5.3333 -1.6 TD +(\(FMEMB \(NTHCHARCODE X 1\)\(QUOTE \(13 10 32 1\)\)\))Tj +0 -1 TD +(\(EQ \(READCCODE FOO\)9793\))Tj +/TT6 1 Tf +-8 -2.0722 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(CL:CHAR-CODE)Tj +/TT8 1 Tf +10 0 0 10 217.8076 477.89 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 223.8086 477.89 Tm +(CHAR )Tj +/TT6 1 Tf +3.0005 0 TD +[(\))-19958.9([Common Lisp Function])]TJ +-8.5348 -1.8833 TD +0.0389 Tw +(Returns the Interlisp character code of )Tj +/TT12 1 Tf +17.3471 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0389 Tw +[(. Use to convert a Common Lisp character to)]TJ +-19.7475 -1.2889 TD +0 Tw +(an Interlisp character code.)Tj +-2.6667 -2.0056 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(CL:CODE-CHAR)Tj +/TT8 1 Tf +10 0 0 10 217.8076 431.29 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 223.8086 431.29 Tm +(N )Tj +/TT6 1 Tf +1.2002 0 TD +[(\))-21759.2([Common Lisp Function])]TJ +-6.7345 -1.8833 TD +0.2156 Tw +(Returns a character with the given non-negative integer )Tj +/TT12 1 Tf +26.5897 0 TD +0 Tw +(N )Tj +/TT6 1 Tf +1.718 0 TD +0.2156 Tw +[(code. Returns )]TJ +/TT8 1 Tf +7.2033 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2156 Tw +[( if no)]TJ +-37.3113 -1.2889 TD +0.0267 Tw +(character is possible with )Tj +/TT12 1 Tf +11.5285 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[(. Use to convert an Interlisp character code to a Common Lisp)]TJ +-12.1286 -1.2889 TD +0 Tw +(character.)Tj +-2.6667 -2.1422 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(SELCHARQ)Tj +/TT8 1 Tf +10 0 0 10 196.2 371.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 202.201 371.86 Tm +(E CLAUSE)Tj +4.7999 -0.2222 TD +(1)Tj +0.6 0.2222 TD +(... CLAUSE)Tj +6 -0.2222 TD +(N)Tj +10 0 0 10 310.2 371.86 Tm +( )Tj +9 0 0 9 316.201 371.86 Tm +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 357.0042 371.86 Tm +[( )-12329.6([Function])]TJ +/TT6 1 Tf +9 0 0 9 174 353.26 Tm +0.0189 Tw +(Lets you branch one of several ways, based on the character code )Tj +/TT12 1 Tf +29.2369 0 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.0189 Tw +[(. The first item in each)]TJ +/TT12 1 Tf +-29.837 -1.2889 TD +0 Tw +(CLAUSE)Tj +3.6 -0.2222 TD +(N)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0089 Tw +[( is a character code or list of character codes, given in the form )]TJ +/TT8 1 Tf +27.8442 0 TD +0 Tw +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0089 Tw +[( would)]TJ +-36.845 -1.5111 TD +0.0867 Tw +[(accept. If the value of )]TJ +/TT12 1 Tf +10.438 0 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[( is a character code or )]TJ +/TT8 1 Tf +10.3203 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +(, and it is )Tj +/TT8 1 Tf +4.6216 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0867 Tw +[( or )]TJ +/TT8 1 Tf +1.6143 0 TD +0 Tw +(MEMB)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +[( to the result of)]TJ +-32.9951 -1.2889 TD +0 Tw +(applying )Tj +/TT8 1 Tf +4.2485 0 TD +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +0.02 Tw +[( to the first element of a clause, the remaining forms of that clause are)]TJ +-9.0493 -1.2889 TD +0 Tw +(evaluated. Otherwise, the default is evaluated.)Tj +0 -2 TD +(Thus)Tj +/TT8 1 Tf +5.3333 -1.6 TD +(\(SELCHARQ \(BIN FOO\)\))Tj +2.6667 -1 TD +(\(\(SPACE TAB\)\(FUM\)\))Tj +T* +(\(\()Tj +/TT19 1 Tf +1.2002 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(D NIL\)\(BAR\)\))Tj +-1.8032 -1 TD +(\(a \(BAZ\)\))Tj +T* +(\(ZIP\)\)\))Tj +/TT6 1 Tf +-8 -1.8444 TD +(is exactly equivalent to)Tj +/TT8 1 Tf +5.3333 -1.6 TD +(\(SELECTQ \(BIN FOO\)\))Tj +2.6667 -1 TD +(\(\(32 9\)\(FUM\)\))Tj +T* +(\(\(4 NIL\)\(BAR\)\))Tj +T* +(\(97 \(BAZ\)\))Tj +T* +(\(ZIP\)\)\))Tj +/TT6 1 Tf +-8 -1.8444 TD +(If )Tj +/TT8 1 Tf +0.9199 0 TD +(\(BIN FOO\))Tj +/TT6 1 Tf +5.4009 0 TD +( returned )Tj +/TT8 1 Tf +4.3701 0 TD +(32)Tj +/TT6 1 Tf +1.2002 0 TD +( \(the )Tj +/TT8 1 Tf +2.2202 0 TD +(SPACE)Tj +/TT6 1 Tf +3.0005 0 TD +( character\), the function )Tj +/TT8 1 Tf +10.7422 0 TD +(FUM)Tj +/TT6 1 Tf +1.8003 0 TD +( would be called.)Tj +ET +endstream +endobj +54 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT16 18 0 R +/TT19 32 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +56 0 obj +<< +/Length 70 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-13)Tj +ET +endstream +endobj +57 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +59 0 obj +<< +/Length 202 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(2-14)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +60 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +61 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +62 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +63 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +64 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +65 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +66 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +67 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +68 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +69 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +70 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBDPBO+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 71 0 R +>> +endobj +71 0 obj +<< +/Filter /FlateDecode +/Length 20477 +/Length1 39872 +>> +stream +HW}tovgvfwv + `@(XR81 r(ݷّffɆIb +ՔҔRj)Bȇآ"-P)@z&@?ޙ߻ケf[G ;uТ@38nb(h +; 2*gy QOe{ +h 2"t]_X; yS*4c XaX8b&׺K* },aUNkZ,̝u驈G$ׇQV"@U@U"tڄE`r4~1w@J#^x9#Qep8jm+SH} +a>) @o l,}?G9`,n̄H3l|xw@F<LVL=&gb;k ˓{LBZ&&nɥRq1$܀G=&QJDs'{LR'I>7}12# O_zI̸2XIWw.c|=w>~0{13j'pމE2՚3 J!34Xe6.6.۸ƕ6'm\milkm|zl:`6n9wNI豟3↪Ţ_"j4aҟJ5 :?hŐL5FCjT5+ϝ-T0|7J,)+pSJhMnKU<>*ʣ -)h #B1nٵE$4SkWLg6*VOmP-B M6!.P"m Ń.P4 ?x8Α4Ei*2kM![$~/ɝRU)Ck̄LpFkI,ݞrR0u0h?S9*Hܬ0&Qf>(«>&&؍{}: i4$HQ/2v@Nwd5Өyb_hF"JPņzuZ: VÇiDYM>0oE; +̈bvk2ւO;ho-Bk,Yf˗c4Kď{ӲeɉLG8.-FI >%gP;^'{,h`;1p̬20wmm#ey}1x`RF (XiђQPi׉$|j] 4-%`A$!PP)ԡ2VP|J0MRF0;$Et{?ǝ9AoUg.\0YhKJwXEٽMclben+TIrG#cE&K^n%i0˰Z[-h4zRll‚C:~/1 sQ@FOV;uFT#\+| x`ku88,V`~&/茍AFz|p{e.)_L3B%wd/v!dm]_<'|]kC\&UP+_?wg`BƬO^P}ҡ#>)Q X>PK(ċ$F_shH-\,^7}`Wv(Y*t *ɮlU $Cl=3:B@FqEyP5{FҞ{ls8^seske]ħ34}:{=9.]])V +޻vEi:~_)'],;젩2m\ :D<{Yס39MVfdt8!Υr_Mߞ/7'jH|XۥrGVY᪖D,WEG\{m;H`oy%4Cg,Yi:6NO|h]Ȩ$} Цb:DqC¥j(݊_ PKSe~S@F5TLt 2~;@e¼?$]Í8!c+]k$8sQ/O c 1=̷UѨǾd]I+fGv. +aA\ pl]Mq2@'8n7yӌoQ7/>t qĸ> )Gǘ`j0d:zdԬ<#'6yZv +:Ɠ$A]XuΉ̷q>,?+HJ^'vo̫xْڹs@@_3K^7?& @=OMm=$eG J U08|17tmxq92V>Rzv.3jZlEۖ=V,>u\W8 +i=fPoE/uU}DÀ BMkI #:V}%7AK 3BXה"\{kνb-7ٍ In'F9CHMOp +:F]#ʻ=(0xssѨ3`T$#d!SiF[?-HƳ-5VGrr)mؐ,E@N1 irmFdTNu.mÝа6#,QUwv'0s<&$#_31 OX wJXxB `/w}膿)8 2\CX<@ +2'5D4"AAgEiK.K*%BmIs҇Jl:>EN{P+ 4@7-UFGߢ. =C}&eƲl*+b3=yճWX kcow!!;NȮNȇs7')'?ʟKsE^7|;wA0?OO)#̣_|_q5MLN7t L$X3w1StN-D88Z,Ĩƙ(*Ԍ0a;GJ3jnV ^&l5+#ep^dMYn,Loя\4tÊQl$ )nI1)؈Ds|ȁ ;EgOkرyrűDjFol2l 9hqtndzۖܣ=3nxrI +ƿ^wWRf[ԅZ&wP-BZurEI ֯%K(PQ4-0!ܥ,e~o𮴌fRQ9i*SZRFu|p8|5jѵd~/%"l`=ƣ=oz4 +FIu]] 1~]STU"$h#akec{sNR sA6VcK!۲Ǥ:'(YMQr LIF'92Gv+M[8j:شNLH0 zwC(,Y} +kݝBk7ȰÒoo[m]խ/?,y06oe[&Vl*kZgz8怗.E%U`g6[$],iVM\z>z XvBO2 R"pVf:\\'B/Z1ۭ]&[,SlPX/ s~پs"2 @Ԣk'daJv;SO-¬W-K5ֺlί2sBOg7/,Y.]_p)aPW̢4()=6u W"N) 挜KtCd>/#qod~>r]QL-慌(9IqyKOo'K`/TgӷgkSu?ږغ`9dmƺ"J|_Ҩk8Q+ؑr{K1)7?g$lBj/.zt$vn~Ʀ%G~@-5T& "/Px،OesgG:7竂IЦE.WA41 N-vqFFK}U[ka^ifmvȲ:6IKG?.\|Ev"hPJ0r2m:dWz|%,6m^ē@q1Q7*X'v ZZep$$#YC+R"l4+ָD/`Y0t[Ak-,k \V+"Vr>.(oZbe -3aq4/ݴuL2hb gY]T7vqQ YY:2;l,|e1x,,^p߳z&ظ@ь)TgJ~%l~4sG@-| lyD-iXfA5LFoJa\jtl\Js؟ ɪ~u%Em!t\Yq.E%,-*?J$]J~ƣ졖.ru>q)Fe1J9Ky\ʱ)lkge@b< سb"ulp4*#XE?yop|box>wV +4Z@cK}طg\=fY-cDwsA5L$y/J#ro{YnŰxY}V;Өòd $Y_QS8>{{Bcr J}Jn1 pu3dePjtL]:qmz#km5~/ Jܫ`iyhZ OLt^xz`""*_ VRE:TЗn=4t͠{nakp3~?wq/x +O7[8)|_Nj$HOUE>K#v ϑdD49E"%I.yOJ> 7H+rfKܓ\}&r ^5@Q]W{{Bjٷˢ`"" ? +Q;@0b%DԦթ6Q5tԉI[@Q13ΘƤ1v?^Q;=?|ߏ}>ab NQglD].VԐU_Ww[QC_T=^PT/C hin-QK|_M&kӵZVCyTܑ@|*HX8+ب&U+&⋨Tذ '6#`bGs*\ apqY-A-űh/r1E.bV(}>“" +cԍyK'0Q7IⰅ[UDNP-'Zvj'^쀊bq#! E8+(XՖ:2)MQcSkeKݎűYXv?yȦO5B;q#o;ăEO3`CwGs;"!!l3S\uܺ @^ؐt$= .̂r2s~xvy:\;ޤφ̳NqD0$- ݖAC +oIoK`4%7WNGbξts""&=Ѥ&{aa^(2Z@IsD 91մzºtU z4XR^WF.E$I$QO-7Sx8 kjS҂{m z@K` ,l~`^E}k3J[2;#GMeF]fu5IKHՍ@>^0'ķ ,2w K\y9w8{!CEBg͵hh퉿uDJgM%Fۊ@IYxxEǣB4SIiSZv"&ɺWS*V,Dzy[A$>w8%HpY}gIw╾F1O&ٰ/&oŹ+K$S9Alw /g,/NɨwSDrt ɔ;6p0*3'H:0zut]]gY's207Y6fODWiIˏnXM.V1o#oz[ߋ3vP7U Dv6!Ilmٝ3M&H<ܐkRS#M6mbc[hܖg&;|ع(}7I'?mUhƃ:67rj $CŒmɃqGr +OׄkIBB:]H Ȩ&Ad dUx,!*` Xe5u`2}6p$Q&%DdZY$79Y2THy!5URk FZNED!=y&"\#&ʨ1zh2H'tui9*@Vdvazgh?=OB%(IJ@yRdKfVܬ\T!;QJ҄UPP)digi25` ٚ9Y*m\bcRmPds"E6 q *)xf q(3ls$ǂxgBXӢ`d}kyF5hň0ΐǁ2e_(BVeUy퉍/ᶀPg-7d%*+e]j ;򆾶IgGz mQ3!uxG5\~ߜdo ,Ay%|B7O ]ǯ7~|o/,_2 `Al +2;UH!bԇ1Ȭ;thG.4~f;uJRN{sn2% ᎂ_>QTw6\sdG(%$ L&A[Jk' ޑ9j&2-AD8c;Crf2iu"Ոbmo\ZLۿ}wm_S'h7,hb طjwjЗn]WXpiƔвKݙ[${,qW:kZvz̡gUtT ޞ|X]撶3 5*{$fR6 @ܪ+Ol-mmU"ݓ7p|kGA0s9{_+tjZQfHѾʦP$gms4DWxU rڭV47Ήx9=?W/jN"sky. Oxw^qDawͷ4-lnXx/ OwJO]Sŝ=7SngvEK7o&7g|Ĵ +ȏ "_WT7u7Y2݅3P%$(T.~B#Ф"hdMa,OMbj"*=!fJLSw@ڥE//;rnz4*6 gwMVh3Ry,ddLie>ATAT!ljj>*C=&X +p'5-~ +m j㮢: g-TCE$\j"r*:RNj-TWAB}l"[Hi&-ATX}EղwX=5lj&WP}DF- {s%5z|,%EP{j{PH^M8BA]Aq3&"-QYpJQ襴ϒv镔F .ʭlJc)i>4v/>t}2Zݙ<D4 3A=%e]#*Wɠ'I(1 }U-!]+VUg jKRb eEC%p;I|iXDG$ "&< ł01O4ފ,YXɍ'T)'- PlYϿ@ż7I>OSL|A ƥ oB1%_jA=ӂXT&Aq wS7u#y_ +P E ,A fڍva-0;=jg@uCW7&Py'8 n6Ƣ;0c̽ /(ͪVikXrcF>B93g#0H39%S+J,!Q0Hֶ6~wRS#=c95Yf`1%oHa/WrNb8/ZGd1سN15O,ieZ@p[B8=UVC1E& .YU_ըO`z_8s!盒9l zCAsϞۼ6_ Jj)7 4,,b. -#"ٜp/ܺKMg?wcC^Vi, Ycl-}N Ghjz>۰EB"l.&Z:|=n'կΌW¸|Y`JeX[*S KŁz8U(6,,0Ltn-oЇ=EXY0pɺ5z^a,$Τo"vNW%>$#egh6;yZ>U^f[ FA&Α,Z<4,Z%, +f!-Qaj8Kg}T~hGs WN/\ϚW‡oMyeBxM|Ht3Y(5g߼9vZ!`&ǻ \J?͖тSWB=8 ZTђN3gVтO,j"@ L+9YLs^g-ƶeZha ˸+ȫ{m\!}a@^+6Z#-<̓%g]1F |.<,Hte؂ 5s,M߻8N!ܷ]N bעmPh] 0Nb!uBkrEx +8WN-%M!_η4֚M|;- +,[x]R8c:G]a6f C}Cdz0ڔ5Wc}Qfᦣ3І1MGl+ڴG4(eQ,vx'Pa{`kZ2/[ۆ_=yXнKB!m;ߺ1Z .BANߐѽw&6?eu^r`본& 79B#+M&G{EnY!(Sp߄s$0pb-,~/oЀ7- \cc,8{MoX-_߲W{R eDS>W|U9<%'ʿh3>@`waQC0HFmYp1.DI"?E 13?}{ot3Nӓszv0 /Kd)lbc<ճl=Ķ61v߁?_೸Λ&G9oKRoISiT,M*ERIP:"\6 r%;)rH~]^/{? M)GJ2EyIU+wU+GYs_%SeUW /YV3LuRrǯۂCV%&#Lh/ +D!^TQv BH/&bDT hItAذw1hgHa:V(1 bP@30p@ TF 0"u' ?*A^CpuϋH#7c0(b#6u Eכ!\ +'g~$#+kQ?D"a +p0⪅(!}>s &x;?A}oPq'j7smog1v=tM6u2GUޝ =A.U۽:+JY[n]E+*bXtΛ=|ܭ_n`TLΣoYY +˱1|:P<⸤Ss%˯%Ż ~r|iVk?QW\3LyiƅgM=s衴){kgsܨujWU[vb,Z/LZ/施;):1hS%->/*-ՋnμJ#Rk[H~KԹ y%Idyڐk5W'Vykj!KCIn%;ey [PxKUrD嫆F+V_8,˸vEfu?W|9lC `iUmґƁ[MXN,:g]YI:鋵q_Nv}_,gp_p;ڌ0O&Q2B,{˝|NPNw[R}b$hzwcOboc0ReʽS~8{{ I>:_] C>V} @6<oMgy\*7ey͆W5ZXJX oC3Z1cp ס:*j<#I_GII!'d(N2䒱dD&"222M*ڪBRK|@~CV&üJnv5%T3/i4} 3dJ0I4ǜE4:ܱ.*F"7Pmt撇Q=E?ez~Eovzv#a1όdQbYxg((!t[CSiQI"K2cz)‚}P>N&j +uJ1yQ(у{8^ 9˃-vr EuC&HeJ虍+r#/뮉C+裺ߐRKAt(]$0]9J$F !G8>R `Sdت}4)Mpj]TkfT48|?p8yI},I񤄳sMv85?QrA؜b;':*ZhF{=ud=B$Pc[5æ[jZ c#Ċ BHLpi^͛j#S81ID , {Zr C^8^"tNaњ p8'8}{fwZ,Zof\+L:FLp8Pp l>py]z1`z4؂?,)O<I +C%tE6Z\葚:Ԙt+S緛Rv YCrca24#p okP>Z:f +/0ʖ|,\_&Y kĕCٮ;.όЖZi%)d3>EaٖGO{c)%˲%cl?BҴCPXJ{hBB)=/=@B)L²_;L{)/Oq9{)6s|pFN]@g&~;7 GpZ||Aal.w.+ ‚/>}#N]}q~Oܧ侾0 ڳ|_dv:!1Hsl٤XqWN~y5inv756Pt~WZ1׷©bn- ^%lǾl"#ƑT0Lg a/,m-<&c&.d)cT +'=`[Xv,(pGCT-bOE}K^s.N3YpQ1#GL^".yls޶3As(Mha7lyG!ީSSo bݪ مɩ 7Ycv]>/D6vgN]KN"\6DQ<ͤe#1o8>hRLO|-t]Rn<>b}tju{Z -<:iIX,SU#w6M3U}-F1M2yQÄ놝z5+3*$Q'..-tCIqQf~m|k_p檩x߼Uw>o+rߕ>??ܳs&s~dW&s-sKo 'o>^>p>aӼnwX2:2,cviX[urRjJ[dyu s"^~摿r~kSbO=WmJzݘ:(h^ĭW-R=x۲ܺI=V~w]3Vm,_\bZ5<[]T|BRWł-S/jϟ >ł] +JqѪӸ괥`C^ԁLNb R 4ݪ8 +Jo }Jc_roSP7.YLr$ȠÐFj`O'c>_{`=x6[t> ZN%:x W/E3xρgSRΝvm*aWRSN.tRxc?< +p?X>*l5WM 'r\]A a-y[m IY݃z!cE;٣wMI;(s4O;Z{J$7vdY?4зV(e 4EhB_HZo ׃}Lk5(Ua%J (];YEXQ'0-ߺw`K4#gjú|p.p̡C\NiUA"Ƈ=5Dbjj-ΦY5%?Pk&)`2f=#\'&[&RS$FXi(IGXDm*}L=Y՟iD&Nǃc8p 8EᬏB=s$X0F#Ra Kt}9_[!TI>ȏ7_guKJx;⠿ps@䢿mEfm[tG)](mzT7hCʃɛ,v66[A6(XT-HlAVp19رƜ([{v.H4<\qQiM5špaU\ZZcJq> +endobj +73 0 obj +<< +/Filter /FlateDecode +/Length 4500 +/Length1 7408 +>> +stream +Hmlg.MΫ.'5Y+'q7iΟqbgkB>$Nb7Nc4LULUӄL]AgP[@+@P G$@餂6~g;4&!ě{>(0=y9FH6G^X=7o}{uX}ӏXatnէ O Z΋O} kh?ZDƁw`]խ} }.4[nHKemvh˅`1grN:ɕbRԋxx=E/)4aW߽vQw/穞Kͯ_g.!ß` Ws-i%|Nϗ`n@ȴ;!|3UxibV5IZUYzd-ETYl)×zt/9fkfB^{RMLrvAԮ$1'HnY0{3=}a{,AIeBy  #l6sܐEB߉ t:C$o$DӒgii>n}'a7ɮj$5Su[k*P_`K U*z 6,ͫIL5Y"qr-#5$z߫o:`R$+~4c|.զSXRKE?g3N40[$sWi)E ^8 IGI^RS SGD&bYm)[c}LHfLL/ 2vcj/CkhNrAz =NfMoOTIцXH|(NN ۅw"OT>mS[=e~vz 7)p? N߅S@bFb0< +us!d΃}\M¶CA`~[, D BL> 28!p_EذF6/n@@ SW`˂|CP{0f& ʼz`0-1zƜ.2|};@9P<`,!yèC54`#7Nx<PLOCo ki @Q'(Lg.&߀D̯ cN&xH}ŜC曘%`h}x=uFMW |3])nu8U?8oy= ʭH[O{i]pv;w +N;h;Ε "w;CJsqrJjvw ' ?[zݭ/w$bͬm&tV.͹6yjq8r瓅Y^3)5Jˎ\6-YKr%nelY +Xj:pdj4ꈄWzdտXoτd<VRv0R"/%Jr8*N-/:Epu|ٷ8۔eLysőg<^z5cJuUuh@-+prQT +Cɥ}ٰ$WㅡY5){s%# eZGʮT8L#[x%ėgFŭ@e_ ה@*1V"h::J.sύ;rCq)t|6Df-r rںe%l !x0a%޵cْm)z,˶lK~JHiNӒɣi!@)!4!Q(-J[4m̝̽s#0'J@c:&@ +R{b+ +d8Hj&ui704RXe&h(&Jj+|՛k;aǵb'R`f Yۂ!*$xVBx-RȖq]`U(̀(톥4ބh[MdE:by!DYsRq|)IfVT^q' xRQ/81hąpduT$nWd@4QKFLh2G +IJ%q +Y06j14YDpg`7eYE>9΂cq]T#?Du],n/i!*&i[.FYR<Uf.iU{Z3'˒ߓY/)7jFqĮp/B!AVDr^frdtc3A{}RK^:xL2]>`a#틹?yڿpυu}c\++C6qccx;mI>x@{Jnι~džGǷmƒsZۗ! br`UԎĢ{?:?C?u5.1C}JS[BGƧk&_=ho>3n:3Ub7T|[qf.6xۑ'O߶rۜxǽY Û軟<],<̛cߛ wgx<~wK&dN|qa/ΡS/nw]^w;pfb<Zj/֟ސ4OT>y=ƺ,yrzWG^zae 9`61fR22X2! 12&e4X;~ ʠ` Y8Nف]rӏ:[Tp[Oa~;l&7n4mwF5} FGM_]GM:`Met/wfW;@?~h2;9i0X-f L&s i|`ȴ?X>48pq3}'}!j=G +kRa ̀ffX7w6w,_:34!{Ll٘21q02q2s0dཻn:xAccb;1˚>e?,ۮF151(IӠ?fax_ـ,5, 'PDfbcP6 =fwz9iG%d'%',|\P!!\L> +endobj +75 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +76 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 127 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 481 333 606 333 606 606 +] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 74 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 75 0 R +>> +endobj +42 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 76 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 61 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 333 333 0 0 0 0 278 0 +0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 0 611 0 0 278 0 0 611 833 722 778 +667 0 0 667 611 722 667 0 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 0 0 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 62 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 252 +/Widths [250 0 0 0 0 840 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 606 0 0 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 606 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 479 0 0 0 0 0 0 0 +0 0 0 0 0 0 546 0 0 0 0 0 603 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 63 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 600 600 0 600 0 0 600 600 600 0 600 600 600 0 +600 600 600 600 600 600 600 600 600 600 600 0 0 600 600 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 0 600 600 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 64 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 600 0 0 600 0 0 +0 600 0 0 0 0 0 0 0 0 600 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 65 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 105 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 600 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 66 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 58 +/LastChar 114 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0 0 +0 0 0 0 0 0 0 500 0 0 0 0 0 556 0 333 +0 0 0 0 611 0 0 0 389 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 67 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 333 333 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 667 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 68 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 0 389 0 0 0 0 278 0 278 0 556 444 +0 0 0 0 333 0 0 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 69 0 R +>> +endobj +32 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBDPBO+Symbol +/Encoding /Identity-H +/DescendantFonts [ 77 0 R ] +/ToUnicode 78 0 R +>> +endobj +77 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBDPBO+Symbol +/FontDescriptor 70 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +133 [712] +139 [1041] +153 [712] +] +>> +endobj +43 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBDPNN+ZapfDingbats +/Encoding /Identity-H +/DescendantFonts [ 79 0 R ] +/ToUnicode 80 0 R +>> +endobj +79 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBDPNN+ZapfDingbats +/FontDescriptor 72 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +84 [758] +] +>> +endobj +78 0 obj +<< +/Filter /FlateDecode +/Length 246 +>> +stream +HTn > +stream +HTP=O0 +<FwbK>D {.qK$Dn:ߓmO>7'8-GOPipަ۲L:'ZԵy8'^zP _!{3tqBJi 3!_گAo}s4ЈP+u>5GAr:/֏y{ \u3bq;}3R,xwbE`zj +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +52 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 54 0 R +/Contents 53 0 R +>> +endobj +55 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 57 0 R +/Contents 56 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 60 0 R +/Contents 59 0 R +>> +endobj +81 0 obj +<< +/S /D +>> +endobj +82 0 obj +<< +/Nums [0 81 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 19 0 R 23 0 R 26 0 R 29 0 R 33 0 R 36 0 R 39 0 R 44 0 R] +/Count 10 +/Parent 50 0 R +>> +endobj +51 0 obj +<< +/Type /Pages +/Kids [47 0 R 52 0 R 55 0 R 58 0 R] +/Count 4 +/Parent 50 0 R +>> +endobj +50 0 obj +<< +/Type /Pages +/Kids [13 0 R 51 0 R ] +/Count 14 +/MediaBox [0 0 612 792] +>> +endobj +83 0 obj +<< +/CreationDate (D:20210202102638-06'00') +/ModDate (D:20210202102638-06'00') +/Producer (Apple pstopdf) +>> +endobj +84 0 obj +<< +/Type /Catalog +/Pages 50 0 R +/PageLabels 82 0 R +>> +endobj +xref +0 85 +0000000000 65535 f +0000121209 00000 n +0000000016 00000 n +0000007368 00000 n +0000115242 00000 n +0000116156 00000 n +0000116367 00000 n +0000116799 00000 n +0000117582 00000 n +0000118141 00000 n +0000118478 00000 n +0000118857 00000 n +0000087134 00000 n +0000122450 00000 n +0000121290 00000 n +0000007545 00000 n +0000014618 00000 n +0000115804 00000 n +0000119156 00000 n +0000121374 00000 n +0000014796 00000 n +0000021347 00000 n +0000119479 00000 n +0000121458 00000 n +0000021540 00000 n +0000030828 00000 n +0000121542 00000 n +0000031017 00000 n +0000037641 00000 n +0000121626 00000 n +0000037819 00000 n +0000046554 00000 n +0000119855 00000 n +0000121710 00000 n +0000046734 00000 n +0000054216 00000 n +0000121794 00000 n +0000054420 00000 n +0000062749 00000 n +0000121878 00000 n +0000062916 00000 n +0000068722 00000 n +0000115979 00000 n +0000120241 00000 n +0000121962 00000 n +0000068937 00000 n +0000076366 00000 n +0000122046 00000 n +0000076533 00000 n +0000081788 00000 n +0000122682 00000 n +0000122587 00000 n +0000122130 00000 n +0000081943 00000 n +0000086361 00000 n +0000122214 00000 n +0000086541 00000 n +0000086662 00000 n +0000122298 00000 n +0000086759 00000 n +0000087013 00000 n +0000087275 00000 n +0000087472 00000 n +0000087678 00000 n +0000087878 00000 n +0000088069 00000 n +0000088271 00000 n +0000088472 00000 n +0000088677 00000 n +0000088872 00000 n +0000089075 00000 n +0000089265 00000 n +0000109832 00000 n +0000110024 00000 n +0000114612 00000 n +0000114820 00000 n +0000115032 00000 n +0000119998 00000 n +0000120599 00000 n +0000120390 00000 n +0000120918 00000 n +0000122382 00000 n +0000122410 00000 n +0000122774 00000 n +0000122897 00000 n +trailer +<< +/Size 85 +/Root 84 0 R +/Info 83 0 R +/ID [<759059f1c379c0014a40184b4b90425e><759059f1c379c0014a40184b4b90425e>] +>> +startxref +122967 +%%EOF diff --git a/docs/medley-irm/03-lists.pdf b/docs/medley-irm/03-lists.pdf new file mode 100644 index 00000000..517671a8 --- /dev/null +++ b/docs/medley-irm/03-lists.pdf @@ -0,0 +1,10439 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 8533 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-1)Tj +/TT4 1 Tf +10 0 0 10 467.76 568.2 Tm +(3. LISTS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +0.0611 Tw +(One of the most useful datatypes in Lisp is the list cell, a data structure that contains pointers to two)Tj +0 -1.2222 TD +0.0933 Tw +(other objects, called the )Tj +/TT8 1 Tf +10.9602 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0933 Tw +[( and the )]TJ +/TT8 1 Tf +4.1101 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0933 Tw +[( of the list cell. You can build very complicated structures)]TJ +-18.6709 -1.2889 TD +0.0233 Tw +(out of list cells, including lattices and trees, but most often theyre used to represent simple linear lists)Tj +0 -1.2222 TD +0 Tw +(of objects.)Tj +0 -2 TD +(The following functions are used to manipulate individual list cells:)Tj +/TT8 1 Tf +10 0 0 10 102 470.66 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 470.66 Tm +(CONS)Tj +/F1 1 Tf +10 0 0 10 129.6 470.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 132.47 470.66 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 148.6726 470.66 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 470.66 Tm +([Function])Tj +/TT8 1 Tf +-35.4033 -1.8833 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.2322 Tw +[( is the primary list construction function. It creates and returns a new list cell)]TJ +-2.4004 -1.2889 TD +0.2122 Tw +(containing pointers to )Tj +/TT12 1 Tf +10.603 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2122 Tw +[( and )]TJ +/TT12 1 Tf +2.6173 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.2122 Tw +[(. If )]TJ +/TT12 1 Tf +2.3066 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.2122 Tw +[( is a list, this returns a list with )]TJ +/TT12 1 Tf +15.6493 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2122 Tw +[( added at the)]TJ +-33.5765 -1.2889 TD +0 Tw +(beginning of )Tj +/TT12 1 Tf +5.8516 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 410.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 410.63 Tm +(LISTP)Tj +/F1 1 Tf +10 0 0 10 135 410.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 410.63 Tm +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(\) )Tj +33.4844 0 TD +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a list cell, e.g., something created by )Tj +/TT8 1 Tf +17.3491 0 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +(; )Tj +/TT8 1 Tf +0.5 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-24.1011 -1.6667 TD +(\(LISTP NIL\) = NIL)Tj +10 0 0 10 102 360.8 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 360.8 Tm +(NLISTP)Tj +/F1 1 Tf +10 0 0 10 140.4 360.8 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 360.8 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 148.6709 360.8 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 154.6718 360.8 Tm +[( )-31717.6([Function])]TJ +-3.1858 -2.0256 TD +0.2267 Tw +(The same as )Tj +/TT8 1 Tf +6.3133 0 TD +0.5422 Tw +(\(NOT \(LISTP )Tj +/TT12 1 Tf +8.2856 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\)\))Tj +/F2 1 Tf +10 0 0 10 273.5929 342.57 Tm +(. )Tj +/TT6 1 Tf +9 0 0 9 281.6629 342.57 Tm +0.2267 Tw +[( Returns )]TJ +/TT8 1 Tf +4.4304 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2267 Tw +[( if )]TJ +/TT12 1 Tf +1.5774 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2267 Tw +[( is not a list cell, )]TJ +/TT8 1 Tf +8.6159 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2267 Tw +[( otherwise.)]TJ +-34.92 -1.2889 TD +0 Tw +(However, )Tj +/TT8 1 Tf +4.6299 0 TD +(\(NLISTP NIL\) = T)Tj +10 0 0 10 102 311.09 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 311.09 Tm +(CAR)Tj +/F1 1 Tf +10 0 0 10 124.2 311.09 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 127.07 311.09 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 132.4709 311.09 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 311.09 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1011 Tw +(Returns the first element of the list )Tj +/TT12 1 Tf +16.2083 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +(. )Tj +/TT8 1 Tf +0.9522 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1011 Tw +[( of )]TJ +/TT8 1 Tf +1.5811 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1011 Tw +[( is always )]TJ +/TT8 1 Tf +4.8732 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1011 Tw +[(. For all other nonlists)]TJ +-29.6158 -1.2889 TD +0 Tw +(\(e.g., symbols, numbers, etc.\), the value returned is controlled by )Tj +/TT8 1 Tf +28.8262 0 TD +(CAR/CDRERR)Tj +/TT6 1 Tf +6.001 0 TD +( \(below\).)Tj +/TT8 1 Tf +10 0 0 10 102 262.66 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 262.66 Tm +(CDR)Tj +/F1 1 Tf +10 0 0 10 124.2 262.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 127.07 262.66 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 132.4709 262.66 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 262.66 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0211 Tw +(Returns all but the first element of the list )Tj +/TT12 1 Tf +18.7549 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0211 Tw +(. )Tj +/TT8 1 Tf +0.7922 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[( of )]TJ +/TT8 1 Tf +1.4211 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[( is always )]TJ +/TT8 1 Tf +4.6332 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[(. The value of )]TJ +/TT8 1 Tf +6.5963 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +-38.1987 -1.2889 TD +(for other nonlists is controlled by )Tj +/TT8 1 Tf +14.9028 0 TD +(CAR/CDRERR)Tj +/TT6 1 Tf +6.001 0 TD +( \(below\).)Tj +/TT10 1 Tf +-23.5705 -2.2089 TD +(CAR/CDRERR)Tj +/F2 1 Tf +10 0 0 10 156 214.23 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 214.23 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1267 Tw +(The variable )Tj +/TT8 1 Tf +6.0014 0 TD +0 Tw +(CAR/CDRERR)Tj +/TT6 1 Tf +6.001 0 TD +0.1267 Tw +[( controls the behavior of )]TJ +/TT8 1 Tf +11.6143 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1267 Tw +[( and )]TJ +/TT8 1 Tf +2.4462 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1267 Tw +[( when they are passed)]TJ +-29.6634 -1.2889 TD +0 Tw +(non-lists \(other than )Tj +/TT8 1 Tf +9.2002 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\).)Tj +-11.0005 -2.0667 TD +(If )Tj +/TT8 1 Tf +1.0266 0 TD +0.2556 Tw +(CAR/CDRERR = NIL)Tj +/TT6 1 Tf +10.1127 0 TD +0.1067 Tw +[( \(the current default\), then )]TJ +/TT8 1 Tf +12.423 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1067 Tw +[( or )]TJ +/TT8 1 Tf +1.6543 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1067 Tw +[( of a non-list \(other than)]TJ +/TT8 1 Tf +-28.8171 -1.4311 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1722 Tw +(\) return the string)Tj +/F2 1 Tf +10 0 0 10 217.275 154.55 Tm +0 Tw +( )Tj +/TT8 1 Tf +9 0 0 9 221.965 154.55 Tm +0.4122 Tw +("{car of non-list}" )Tj +/TT6 1 Tf +13.2386 0 TD +0 Tw +(or)Tj +/TT8 1 Tf +0.9409 0 TD +0.4122 Tw +[( "{cdr of non-list}")]TJ +/F2 1 Tf +10 0 0 10 468.7284 154.55 Tm +0 Tw +(. )Tj +/TT6 1 Tf +9 0 0 9 476.1984 154.55 Tm +0.1722 Tw +[( If)]TJ +/TT8 1 Tf +-38.9109 -1.2889 TD +0 Tw +(CAR/CDRERR = T)Tj +/TT6 1 Tf +8.4014 0 TD +(, then )Tj +/TT8 1 Tf +2.7192 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( of a non-list \(other than )Tj +/TT8 1 Tf +10.9053 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\) causes an error.)Tj +-29.6196 -2.0667 TD +(If )Tj +/TT8 1 Tf +0.9721 0 TD +0.1267 Tw +(CAR/CDRERR = ONCE)Tj +/TT6 1 Tf +10.455 0 TD +0.0522 Tw +(, then )Tj +/TT8 1 Tf +2.8237 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( or )]TJ +/TT8 1 Tf +1.5454 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( of a string causes an error, but )]TJ +/TT8 1 Tf +14.2689 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( or )]TJ +/TT8 1 Tf +1.5454 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( of)]TJ +-38.8116 -1.4311 TD +0.01 Tw +(anything else returns the string)Tj +/F2 1 Tf +10 0 0 10 250.6857 111.47 Tm +0 Tw +( )Tj +/TT8 1 Tf +9 0 0 9 253.5757 111.47 Tm +0.0233 Tw +("{car of non-list}")Tj +/F2 1 Tf +10 0 0 10 356.6124 111.47 Tm +0.011 Tw +[( or )]TJ +/TT8 1 Tf +9 0 0 9 371.8324 111.47 Tm +0.0233 Tw +("{cdr of non-list}")Tj +/F2 1 Tf +10 0 0 10 474.8691 111.47 Tm +0 Tw +( )Tj +/TT6 1 Tf +9 0 0 9 477.7591 111.47 Tm +(as)Tj +-39.0843 -1.2889 TD +0.1222 Tw +[(above. This catches loops which repeatedly take )]TJ +/TT8 1 Tf +22.6985 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1222 Tw +[( or )]TJ +/TT8 1 Tf +1.6854 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1222 Tw +[( of an object, but it allows)]TJ +-27.9844 -1.2889 TD +0 Tw +(one-time errors to pass undetected.)Tj +0 -2.1422 TD +(If )Tj +/TT8 1 Tf +1.0799 0 TD +0.3844 Tw +(CAR/CDRERR = CDR)Tj +/TT6 1 Tf +10.3705 0 TD +0.16 Tw +(, then )Tj +/TT8 1 Tf +3.0392 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.16 Tw +[( of a non-list returns)]TJ +/F2 1 Tf +10 0 0 10 358.9912 68.99 Tm +0 Tw +( )Tj +/TT8 1 Tf +9 0 0 9 363.5512 68.99 Tm +0.3844 Tw +("{car of non-list}")Tj +/F2 1 Tf +10 0 0 10 473.0879 68.99 Tm +0 Tw +( )Tj +/TT6 1 Tf +9 0 0 9 477.6479 68.99 Tm +(as)Tj +-39.072 -1.2889 TD +0.0456 Tw +(above, but )Tj +/TT8 1 Tf +4.9666 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0456 Tw +[( of a non-list causes an error. This setting is based on the observation that)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 9571 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-2)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.09 Tw +(nearly all infinite loops involving non-lists occur from taking )Tj +/TT8 1 Tf +27.996 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.09 Tw +(s, but a fair amount of)Tj +-29.7963 -1.2889 TD +0 Tw +(careless code takes )Tj +/TT8 1 Tf +8.5503 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( of something it has not tested to be a list.)Tj +/TT8 1 Tf +10 0 0 10 150 538.06 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 538.06 Tm +(CAAR)Tj +/F1 1 Tf +10 0 0 10 177.6 538.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 180.47 538.06 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 185.8708 538.06 Tm +(\) \()Tj +/TT10 1 Tf +9 0 0 9 203.8738 538.06 Tm +(CADR)Tj +/TT8 1 Tf +10 0 0 10 225.47 538.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 231.4709 538.06 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 236.8718 538.06 Tm +(\) \()Tj +/TT10 1 Tf +9 0 0 9 254.87 538.06 Tm +(CDDR)Tj +/TT8 1 Tf +10 0 0 10 276.4735 538.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 282.4745 538.06 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 287.8753 538.06 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( etc. )Tj +/TT6 1 Tf +9 0 0 9 492.6299 538.06 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0978 Tw +(Often, combinations of )Tj +/TT8 1 Tf +10.6464 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0978 Tw +[( and )]TJ +/TT8 1 Tf +2.3884 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0978 Tw +[( are used to extract parts of complex list structures.)]TJ +-16.6354 -1.2889 TD +0 Tw +(Functions of the form )Tj +/TT8 1 Tf +9.7769 0 TD +(C...R)Tj +/TT6 1 Tf +3.0005 0 TD +( may be used for some of these combinations:)Tj +/TT8 1 Tf +-8.7773 -1.6667 TD +(\(CAAR X\) ==> \(CAR \(CAR X\)\))Tj +0 -1 TD +(\(CADR X\) ==> \(CAR \(CDR X\)\))Tj +T* +(\(CDDDDR X\) ==> \(CDR \(CDR \(CDR \(CDR X\)\)\)\))Tj +/TT6 1 Tf +-4 -1.8444 TD +(All 30 combinations of nested )Tj +/TT8 1 Tf +13.3574 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +(s and )Tj +/TT8 1 Tf +2.6167 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(s up to 4 deep are included in the system.)Tj +/TT8 1 Tf +10 0 0 10 150 440.03 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 440.03 Tm +(RPLACD)Tj +/F1 1 Tf +10 0 0 10 188.4 440.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 440.03 Tm +(X)Tj +/F3 1 Tf +10 0 0 10 196.6709 440.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.4509 440.03 Tm +(Y)Tj +/TT8 1 Tf +10 0 0 10 204.8517 440.03 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 440.03 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0211 Tw +(Replaces the )Tj +/TT8 1 Tf +5.8152 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[( of the list cell )]TJ +/TT12 1 Tf +6.4586 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0211 Tw +[( with )]TJ +/TT12 1 Tf +2.5754 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0211 Tw +[(. This physically changes the internal structure of)]TJ +/TT12 1 Tf +-17.8497 -1.2889 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0189 Tw +(, as opposed to )Tj +/TT8 1 Tf +6.9291 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0189 Tw +[(, which creates a new list cell. You can make a circular list by using)]TJ +/TT8 1 Tf +-9.9296 -1.2889 TD +0 Tw +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +( to place a pointer to the beginning of a list at the end of the list.)Tj +-3.6006 -2.0667 TD +0.0578 Tw +(The value of )Tj +/TT8 1 Tf +5.9141 0 TD +0 Tw +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +0.0578 Tw +[( is )]TJ +/TT12 1 Tf +1.3304 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0578 Tw +[(. An attempt to )]TJ +/TT8 1 Tf +7.4622 0 TD +0 Tw +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.3078 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0578 Tw +[( will cause an error, )]TJ +/TT8 1 Tf +9.2376 0 TD +0.14 Tw +(Attempt to)Tj +-33.8536 -1.2889 TD +0.12 Tw +(RPLACD NIL )Tj +/TT6 1 Tf +6.8411 0 TD +0.05 Tw +(\(except for )Tj +/TT8 1 Tf +5.0522 0 TD +0.12 Tw +(\(RPLACD NIL NIL\))Tj +/TT6 1 Tf +9.8416 0 TD +0.05 Tw +[(\). An attempt to )]TJ +/TT8 1 Tf +7.7563 0 TD +0 Tw +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +0.05 Tw +[( any other non-)]TJ +-33.0917 -1.4311 TD +0 Tw +(list will cause an error,)Tj +/F2 1 Tf +10 0 0 10 264.2769 356.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 267.0569 356.8 Tm +(Arg not list)Tj +/F2 1 Tf +10 0 0 10 331.8674 356.8 Tm +(.)Tj +/TT8 1 Tf +-18.1867 -1.988 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 336.92 Tm +(RPLACA)Tj +/F1 1 Tf +10 0 0 10 188.4 336.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 336.92 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 207.4726 336.92 Tm +(\) )Tj +/F2 1 Tf +1.2002 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 336.92 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.2237 0 TD +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +0.0367 Tw +(, but replaces the )Tj +/TT8 1 Tf +7.8791 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0367 Tw +[( of )]TJ +/TT12 1 Tf +1.4522 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[( with )]TJ +/TT12 1 Tf +2.6065 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[(. The value of )]TJ +/TT8 1 Tf +6.6741 0 TD +0 Tw +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +0.0367 Tw +[( is )]TJ +/TT12 1 Tf +1.2882 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[(. An attempt to)]TJ +/TT8 1 Tf +-32.9255 -1.4311 TD +0 Tw +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.2767 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0267 Tw +[( will cause an error)]TJ +/F2 1 Tf +10 0 0 10 302.0965 307.09 Tm +0 Tw +(, )Tj +/TT8 1 Tf +9 0 0 9 307.9565 307.09 Tm +0.0644 Tw +(Attempt to RPLACA NIL)Tj +/F2 1 Tf +10 0 0 10 423.1149 307.09 Tm +0 Tw +(, )Tj +/TT6 1 Tf +9 0 0 9 428.9749 307.09 Tm +0.0267 Tw +(\(except for )Tj +/TT8 1 Tf +5.0055 0 TD +0.0644 Tw +(\(RPLACA NIL)Tj +-33.336 -1.4311 TD +0 Tw +(NIL\))Tj +/TT6 1 Tf +2.4004 0 TD +(\). An attempt to )Tj +/TT8 1 Tf +7.5063 0 TD +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +( any other non-list will cause an error)Tj +/F2 1 Tf +10 0 0 10 444.4263 294.21 Tm +(, )Tj +/TT10 1 Tf +9 0 0 9 449.9863 294.21 Tm +( )Tj +/TT8 1 Tf +0.6001 0 TD +(Arg not list)Tj +/F2 1 Tf +10 0 0 10 520.1977 294.21 Tm +(.)Tj +/TT8 1 Tf +-37.0198 -1.988 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 274.33 Tm +(RPLNODE)Tj +/F1 1 Tf +10 0 0 10 193.8 274.33 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 196.67 274.33 Tm +(X A D)Tj +/TT8 1 Tf +10 0 0 10 223.6744 274.33 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 274.33 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Performs )Tj +/TT8 1 Tf +4.3086 0 TD +(\(RPLACA)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(RPLACD)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(D)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(, and returns )Tj +/TT12 1 Tf +5.897 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 237.5 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 237.5 Tm +(RPLNODE2)Tj +/F1 1 Tf +10 0 0 10 199.2 237.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 202.07 237.5 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 218.2726 237.5 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 237.5 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Performs)Tj +/TT8 1 Tf +4.0586 0 TD +( \(RPLACA )Tj +/TT12 1 Tf +5.4009 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( \(CAR )Tj +/TT12 1 Tf +3.6006 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(RPLACD )Tj +/TT12 1 Tf +4.8008 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( \(CDR )Tj +/TT12 1 Tf +3.6006 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +( and returns )Tj +/TT12 1 Tf +5.647 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 203.67 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 203.67 Tm +(FRPLACD)Tj +/F1 1 Tf +10 0 0 10 193.8 203.67 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 196.67 203.67 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 212.8726 203.67 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 203.67 Tm +([Function])Tj +/TT8 1 Tf +10 0 0 10 150 192.44 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 192.44 Tm +(FRPLACA)Tj +/F1 1 Tf +10 0 0 10 193.8 192.44 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 196.67 192.44 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 212.8726 192.44 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 192.44 Tm +([Function])Tj +/TT8 1 Tf +10 0 0 10 150 181.21 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 181.21 Tm +(FRPLNODE)Tj +/F1 1 Tf +10 0 0 10 199.2 181.21 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 202.07 181.21 Tm +(X A D)Tj +/TT8 1 Tf +10 0 0 10 229.0744 181.21 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 181.21 Tm +([Function])Tj +/TT8 1 Tf +10 0 0 10 150 169.98 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 169.98 Tm +(FRPLNODE2)Tj +/F1 1 Tf +10 0 0 10 204.6 169.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 207.47 169.98 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 223.6726 169.98 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 169.98 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Faster versions of )Tj +/TT8 1 Tf +8.0146 0 TD +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +(, etc.)Tj +-16.9486 -2.0667 TD +0.0122 Tw +[(Usually, you dont use list cells alone, but in structures called lists. A list is represented by a list cell)]TJ +0 -1.2222 TD +0 Tw +(whose )Tj +/TT8 1 Tf +3.1181 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +( is the first element of the list, and whose )Tj +/TT8 1 Tf +18.3292 0 TD +0 Tc +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +( is the rest of the list. Thats normally another)Tj +-25.0479 -1.2889 TD +0 Tc +0 Tw +(list cell \(with another element of the list\) or the empty list, )Tj +/TT8 1 Tf +26.8322 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, marking the lists end. List elements)Tj +-28.6325 -1.2889 TD +(may be any Lisp objects, including other lists.)Tj +0 -2 TD +0.1 Tw +(You type in a list as a sequence of Lisp data objects \(symbols, numbers, other lists, etc.\) enclosed in)Tj +0 -1.2222 TD +0 Tw +(parentheses or brackets. Note that )Tj +/TT8 1 Tf +15.5557 0 TD +(\(\))Tj +/TT6 1 Tf +1.2002 0 TD +( is read as the symbol )Tj +/TT8 1 Tf +9.7637 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 17 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +20 0 obj +<< +/Length 8198 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-3)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0611 Tw +(Sometimes, you wont want your list to end in )Tj +/TT8 1 Tf +21.2478 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0611 Tw +[(, but just with the final element. To indicate that,)]TJ +-23.0481 -1.2889 TD +0.1033 Tw +[(type a period \(with spaces on both sides\) in front of the final element. This makes )]TJ +/TT8 1 Tf +38.1654 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1033 Tw +[( of the lists)]TJ +-39.9657 -1.2889 TD +0.01 Tw +(final cell be the element immediately following the period, e.g. )Tj +/TT8 1 Tf +27.9955 0 TD +0.0233 Tw +(\(A . B\))Tj +/TT6 1 Tf +4.2473 0 TD +0.01 Tw +[( or )]TJ +/TT8 1 Tf +1.4609 0 TD +0.0233 Tw +(\(A B C . D\))Tj +/TT6 1 Tf +6.6944 0 TD +0.01 Tw +[(. Note that)]TJ +-40.3982 -1.2889 TD +0.1689 Tw +(a list neednt end in )Tj +/TT8 1 Tf +9.8083 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1689 Tw +[(. It is simply a structure composed of one or more list cells. The input)]TJ +-11.6086 -1.2889 TD +0 Tw +(sequence )Tj +/TT8 1 Tf +4.3165 0 TD +0.04 Tw +(\(A B C . NIL\))Tj +/TT6 1 Tf +7.9613 0 TD +0.0167 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.3299 0 TD +0.04 Tw +(\(A B C\))Tj +/TT6 1 Tf +4.2807 0 TD +0.0167 Tw +(, and )Tj +/TT8 1 Tf +2.4762 0 TD +0.04 Tw +(\(A B . \(C D\)\))Tj +/TT6 1 Tf +7.9613 0 TD +0.0167 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.3299 0 TD +0.04 Tw +(\(A B C)Tj +-41.6556 -1.2889 TD +0 Tw +(D\))Tj +/TT6 1 Tf +1.2002 0 TD +(. Note, however, that )Tj +/TT8 1 Tf +9.7964 0 TD +(\(A B . C D\))Tj +/TT6 1 Tf +6.6011 0 TD +( will create a list containing the five symbols )Tj +/TT8 1 Tf +19.8442 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(%.)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(D)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-44.9854 -2.0667 TD +0.0611 Tw +(Lists are printed by printing a left parenthesis, and then printing the first element of the list, a space,)Tj +0 -1.2222 TD +0.01 Tw +[(the second element, etc., until the final list cell is reached. The individual elements of a list are printed)]TJ +T* +0 Tw +(by )Tj +/TT8 1 Tf +1.3894 0 TD +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[(, if the list is being printed by )]TJ +/TT8 1 Tf +13.6841 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +(, and by )Tj +/TT8 1 Tf +3.8922 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( if the list is being printed by )]TJ +/TT8 1 Tf +13.1541 0 TD +0 Tw +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( or)]TJ +/TT8 1 Tf +-44.1217 -1.2889 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0333 Tw +[(. Lists are considered to terminate when )]TJ +/TT8 1 Tf +18.4381 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( of some node is not a list. If )]TJ +/TT8 1 Tf +13.1825 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( of this terminal)]TJ +-38.2216 -1.2889 TD +0.0411 Tw +(node is )Tj +/TT8 1 Tf +3.5148 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( \(the usual case\), )]TJ +/TT8 1 Tf +7.7352 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( of the last node is printed followed by a right parenthesis. If )]TJ +/TT8 1 Tf +27.5027 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( of)]TJ +-44.1537 -1.2889 TD +0.0911 Tw +(the terminal node is )Tj +/TT16 1 Tf +9.4313 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +( )Tj +/TT8 1 Tf +0.3411 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5911 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0911 Tw +[( of the last node is printed, followed by a space, a period, another)]TJ +-15.2972 -1.2889 TD +0 Tw +(space, )Tj +/TT8 1 Tf +3 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( of the last node, and the right parenthesis. A list input as )]TJ +/TT8 1 Tf +26.5065 0 TD +0.1244 Tw +(\(A B C . NIL\))Tj +/TT6 1 Tf +8.299 0 TD +0.0522 Tw +[( will print as)]TJ +/TT8 1 Tf +-39.6058 -1.2889 TD +0.1367 Tw +(\(A B C\))Tj +/TT6 1 Tf +4.474 0 TD +0.0567 Tw +(, and a list input as )Tj +/TT8 1 Tf +8.9421 0 TD +0.1367 Tw +(\(A B . \(C D\)\))Tj +/TT6 1 Tf +8.3479 0 TD +0.0567 Tw +[( will print as )]TJ +/TT8 1 Tf +6.0528 0 TD +0.1367 Tw +(\(A B C D\))Tj +/TT6 1 Tf +5.8109 0 TD +0.0567 Tw +(. )Tj +/TT8 1 Tf +0.8633 0 TD +0 Tw +(PRINTLEVEL)Tj +/TT6 1 Tf +6.001 0 TD +0.0567 Tw +[( affects the)]TJ +-40.492 -1.2889 TD +0.0044 Tw +(printing of lists \(see the )Tj +/TT8 1 Tf +10.6336 0 TD +0 Tw +(PRINTLEVEL)Tj +/TT6 1 Tf +6.001 0 TD +0.0001 Tc +0.0043 Tw +( section of Chapter 25\), and that carriage returns may be inserted)Tj +-16.6345 -1.2889 TD +0 Tc +0 Tw +(where dictated by )Tj +/TT8 1 Tf +8.2163 0 TD +(LINELENGTH)Tj +/TT6 1 Tf +6.001 0 TD +( \(see the Output Functions section of Chapter 25\).)Tj +-10.884 -2.0667 TD +[(Note:)-1567.9(Be careful when testing the equality of list structures. )]TJ +/TT8 1 Tf +27.9697 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( will be true only when the)Tj +-25.1699 -1.2889 TD +(two lists are the )Tj +/TT16 1 Tf +7.2231 0 TD +(exact)Tj +/TT6 1 Tf +2.0732 0 TD +( same list. For example,)Tj +/TT17 1 Tf +-7.2964 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(SETQ A \(1 2\)\))Tj +1.0132 -1 TD +(\(1 2\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(SETQ B A\))Tj +1.0132 -1 TD +(\(1 2\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(EQ A B\))Tj +1.0132 -1 TD +(T)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ C \(1 2\)\))Tj +1.0132 -1 TD +(\(1 2\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(EQ A C\))Tj +1.0132 -1 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(EQUAL A C\))Tj +1.0132 -1 TD +(T)Tj +/TT6 1 Tf +-6 -1.8444 TD +0.2167 Tw +(In the example above, the values of )Tj +/TT8 1 Tf +17.3428 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.2167 Tw +[( and )]TJ +/TT8 1 Tf +2.6262 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.2167 Tw +[( are the exact same list, so they are )]TJ +/TT8 1 Tf +17.3812 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-39.7506 -1.2889 TD +0.1133 Tw +(However, the value of )Tj +/TT8 1 Tf +10.5373 0 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.6001 0 TD +0.1133 Tw +[( is a totally different list, although it happens to have the same)]TJ +-11.1374 -1.2889 TD +0.1189 Tw +(elements. )Tj +/TT8 1 Tf +4.9306 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1189 Tw +[( should be used to compare the elements of two lists. In general, one)]TJ +-7.9311 -1.2889 TD +0.1178 Tw +(should notice whether list manipulation functions use )Tj +/TT8 1 Tf +24.9411 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.1178 Tw +[( or )]TJ +/TT8 1 Tf +1.6765 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1178 Tw +[( for comparing lists.)]TJ +-30.8183 -1.2889 TD +0 Tw +(This is a frequent source of errors.)Tj +/TT4 1 Tf +10 0 0 10 54 150.8 Tm +(Creating Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 148.09 m +510.01 148.09 l +S +BT +/TT8 1 Tf +10 0 0 10 102 132.86 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 132.86 Tm +(LIST)Tj +/F1 1 Tf +10 0 0 10 129.6 132.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 132.47 132.86 Tm +(X)Tj +0.6 -0.2222 TD +(1)Tj +/F3 1 Tf +10 0 0 10 143.27 132.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 146.05 132.86 Tm +(X)Tj +0.6 -0.2222 TD +(2)Tj +/F3 1 Tf +10 0 0 10 156.85 132.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 159.63 132.86 Tm +(... X)Tj +3 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 192.03 132.86 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 401.99 132.86 Tm +([NoSpread Function])Tj +-30.6656 -2.0667 TD +(Returns a list of its arguments, e.g.)Tj +/TT8 1 Tf +4 -1.6 TD +(\(LIST A B \(C D\)\) => \(A B \(C D\)\))Tj +10 0 0 10 102 81.98 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 81.98 Tm +(LIST*)Tj +/F1 1 Tf +10 0 0 10 135 81.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 81.98 Tm +(X)Tj +0.6 -0.2222 TD +(1)Tj +/F3 1 Tf +10 0 0 10 148.67 81.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 151.45 81.98 Tm +(X)Tj +0.6 -0.2222 TD +(2)Tj +/F3 1 Tf +10 0 0 10 162.25 81.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 165.03 81.98 Tm +(... X)Tj +3 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 197.43 81.98 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 401.99 81.98 Tm +([NoSpread Function])Tj +-30.6656 -2.0667 TD +0.0611 Tw +[(Returns a list of its arguments, using the last argument for the tail of the list. This is like)]TJ +0 -1.2222 TD +0 Tw +(an iterated )Tj +/TT8 1 Tf +4.9893 0 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +(: )Tj +/TT8 1 Tf +0.75 0 TD +(\(LIST* A B C\) == \(CONS A \(CONS B C\)\))Tj +/TT6 1 Tf +21.6035 0 TD +(. For example,)Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 17 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +25 0 obj +<< +/Length 7429 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-4)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 210 570.14 Tm +(\(LIST* A B C\) => \(A B . C\))Tj +0 -1 TD +(\(LIST* A B \(C D\)\) => \(A B C D\))Tj +10 0 0 10 150 543.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 543.26 Tm +(APPEND)Tj +/F1 1 Tf +10 0 0 10 188.4 543.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 543.26 Tm +(X)Tj +0.6 -0.2222 TD +(1)Tj +/F3 1 Tf +10 0 0 10 202.07 543.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 204.85 543.26 Tm +(X)Tj +0.6 -0.2222 TD +(2)Tj +/F3 1 Tf +10 0 0 10 215.65 543.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 218.43 543.26 Tm +(... X)Tj +3 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 250.83 543.26 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 543.26 Tm +([NoSpread Function])Tj +-30.6656 -2.0667 TD +0.0322 Tw +(Copies the top level of the list )Tj +/TT12 1 Tf +13.5888 0 TD +0 Tw +(X)Tj +0.5978 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0322 Tw +[( and appends this to a copy of the top level of the list )]TJ +/TT12 1 Tf +24.0263 0 TD +0 Tw +(X)Tj +0.5981 -0.2222 TD +(2)Tj +/TT6 1 Tf +-39.4111 -1.2889 TD +(appended to )Tj +/TT8 1 Tf +5.8359 0 TD +(...)Tj +/TT6 1 Tf +1.8003 0 TD +( appended to )Tj +/TT12 1 Tf +6.0859 0 TD +(X)Tj +0.5989 -0.2222 TD +(N)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, e.g.,)Tj +/TT8 1 Tf +-10.9211 -1.8889 TD +(\(APPEND \(A B\) \(C D E\) \(F G\)\) => \(A B C D E F G\))Tj +/TT6 1 Tf +-4 -1.8444 TD +0.1056 Tw +(Only the first )Tj +/TT12 1 Tf +6.4382 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(-1)Tj +/TT6 1 Tf +1.2002 0 TD +0.1056 Tw +[( lists are copied. However )]TJ +/TT12 1 Tf +12.6148 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2533 Tw +[( = 1)]TJ +/TT6 1 Tf +2.9071 0 TD +0.1056 Tw +[( is treated specially; )]TJ +/TT8 1 Tf +9.3802 0 TD +0.2533 Tw +(\(APPEND X\))Tj +/TT6 1 Tf +-33.7407 -1.2889 TD +0 Tw +(copies the top level of a single list. To copy a list to all levels, use )Tj +/TT8 1 Tf +28.9605 0 TD +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-31.3608 -2.0667 TD +(The following examples illustrate the treatment of non-lists:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(APPEND \(A B C\) D\) => \(A B C . D\))Tj +0 -1 TD +(\(APPEND A \(B C D\)\) => \(B C D\))Tj +T* +(\(APPEND \(A B C . D\) \(E F G\)\) => \(A B C E F G\))Tj +T* +(\(APPEND \(A B C . D\)\) => \(A B C . D\))Tj +10 0 0 10 150 387.98 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 387.98 Tm +(NCONC)Tj +/F1 1 Tf +10 0 0 10 183 387.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 387.98 Tm +(X)Tj +0.6 -0.2222 TD +(1)Tj +/F3 1 Tf +10 0 0 10 196.67 387.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.45 387.98 Tm +(X)Tj +0.6 -0.2222 TD +(2)Tj +/F3 1 Tf +10 0 0 10 210.25 387.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 213.03 387.98 Tm +(... X)Tj +3 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 245.43 387.98 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +[( )-18015.9([NoSpread Function])]TJ +/TT6 1 Tf +9 0 0 9 174 368.1 Tm +(Returns the same value as )Tj +/TT8 1 Tf +11.7617 0 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +(, but modifies the list structure of )Tj +/TT12 1 Tf +14.9331 0 TD +(X)Tj +0.6035 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(... )Tj +/TT12 1 Tf +2.4004 0 TD +(X)Tj +0.5996 -0.2222 TD +(n-1)Tj +/F2 1 Tf +10 0 0 10 502.94 368.1 Tm +(. )Tj +/TT8 1 Tf +9 0 0 9 174 347.5 Tm +(NCONC)Tj +/TT6 1 Tf +3.0005 0 TD +( cannot change )Tj +/TT8 1 Tf +6.873 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( to a list:)Tj +/TT17 1 Tf +-7.6738 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO NIL\))Tj +1.0132 -1 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(NCONC FOO \(A B C\)\))Tj +1.0132 -1 TD +(\(A B C\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +(NIL)Tj +/TT6 1 Tf +-6 -1.8444 TD +0.0289 Tw +(Although the value of the )Tj +/TT8 1 Tf +11.7499 0 TD +0 Tw +(NCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0289 Tw +[( is )]TJ +/TT8 1 Tf +1.2726 0 TD +0.0689 Tw +(\(A B C\))Tj +/TT6 1 Tf +4.3385 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5289 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0289 Tw +[( has )]TJ +/TT16 1 Tf +2.0636 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0289 Tw +[( been changed. The problem)]TJ +-26.0873 -1.2889 TD +0.03 Tw +(is that while it is possible to alter list structure with )Tj +/TT8 1 Tf +23.1708 0 TD +0 Tw +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +0.03 Tw +[( and )]TJ +/TT8 1 Tf +2.2529 0 TD +0 Tw +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +0.03 Tw +(, there is no way)Tj +-32.6249 -1.2889 TD +0 Tw +(to change the non-list )Tj +/TT8 1 Tf +9.7773 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( to a list.)Tj +/TT8 1 Tf +10 0 0 10 150 223.82 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 223.82 Tm +(NCONC1)Tj +/F1 1 Tf +10 0 0 10 188.4 223.82 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 223.82 Tm +(LST X)Tj +/TT8 1 Tf +10 0 0 10 218.2744 223.82 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 223.82 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Adds )Tj +/TT12 1 Tf +2.6733 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( to the end of )Tj +/TT12 1 Tf +6.0601 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(: )Tj +/TT8 1 Tf +0.75 0 TD +(\(NCONC)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(LST)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(\(LIST )Tj +/TT12 1 Tf +3.6006 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\)\))Tj +10 0 0 10 150 186.99 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 186.99 Tm +(ATTACH)Tj +/F1 1 Tf +10 0 0 10 188.4 186.99 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 186.99 Tm +(X L)Tj +/TT8 1 Tf +10 0 0 10 207.4726 186.99 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 186.99 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Attaches )Tj +/TT12 1 Tf +5.2244 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1156 Tw +[( to the front of )]TJ +/TT12 1 Tf +7.1481 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.1156 Tw +[( by doing a )]TJ +/TT8 1 Tf +5.6575 0 TD +0 Tw +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +0.1156 Tw +[( and )]TJ +/TT8 1 Tf +2.424 0 TD +0 Tw +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +0.1156 Tw +[(. The value is )]TJ +/TT8 1 Tf +6.9044 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1156 Tw +[( to)]TJ +/TT8 1 Tf +-38.7603 -1.2889 TD +0 Tw +(\(CONS)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.7023 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.7023 0 TD +(L)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +(, but )Tj +/TT8 1 Tf +2.6091 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0422 Tw +[( to )]TJ +/TT12 1 Tf +1.4565 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +(, which it physically changes \(except if )Tj +/TT12 1 Tf +17.5509 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +[( is )]TJ +/TT8 1 Tf +1.2993 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +(\). )Tj +/TT8 1 Tf +1.1674 0 TD +0.1022 Tw +(\(ATTACH X)Tj +-34.4894 -1.4311 TD +0 Tw +(NIL\))Tj +/TT6 1 Tf +2.4004 0 TD +0.07 Tw +[( is the same as )]TJ +/TT8 1 Tf +6.9115 0 TD +0.1678 Tw +(\(CONS X NIL\))Tj +/TT6 1 Tf +7.5367 0 TD +0.07 Tw +[(. Otherwise, if )]TJ +/TT12 1 Tf +7.0002 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.07 Tw +[( is not a list, an error is generated, )]TJ +/TT8 1 Tf +-24.449 -1.4311 TD +0 Tw +(Arg not list)Tj +/F2 1 Tf +10 0 0 10 238.8105 132.68 Tm +(.)Tj +/TT8 1 Tf +-8.8811 -1.988 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 112.8 Tm +(MKLIST)Tj +/F1 1 Tf +10 0 0 10 188.4 112.8 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 112.8 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 196.6709 112.8 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 112.8 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Make List. If )Tj +/TT12 1 Tf +7.0527 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a list or )Tj +/TT8 1 Tf +4.7378 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, returns )Tj +/TT12 1 Tf +3.9541 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(; Otherwise, returns )Tj +/TT8 1 Tf +9.3003 0 TD +(\(LIST )Tj +/TT12 1 Tf +3.6006 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\).)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 17 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +28 0 obj +<< +/Length 6612 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-5)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT4 1 Tf +-42.221 -4.38 TD +(Building Lists From Left to Right)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +10 0 0 10 102 550.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 550.26 Tm +(TCONC)Tj +/F1 1 Tf +10 0 0 10 135 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 550.26 Tm +(PTR X)Tj +/TT8 1 Tf +10 0 0 10 164.8744 550.26 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 173.6553 550.26 Tm +29.8583 Tw +[( [Function])]TJ +/TT8 1 Tf +-5.295 -1.8833 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.1267 Tw +[( is similar to )]TJ +/TT8 1 Tf +6.1683 0 TD +0 Tw +(NCONC1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1267 Tw +(; it is useful for building a list by adding elements one at a)Tj +-12.7694 -1.2889 TD +0.0233 Tw +[(time at the end. Unlike )]TJ +/TT8 1 Tf +10.7313 0 TD +0 Tw +(NCONC1)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5233 0 TD +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0233 Tw +[( does not have to search to the end of the list each)]TJ +-17.8557 -1.2889 TD +0.1311 Tw +[(time it is called. Instead, it keeps a pointer to the end of the list being assembled, and)]TJ +0 -1.2222 TD +0.0167 Tw +[(updates this pointer after each call. This can be considerably faster for long lists. The cost)]TJ +T* +0.09 Tw +(is an extra list cell, )Tj +/TT12 1 Tf +8.8001 0 TD +0 Tw +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +0.09 Tw +(. )Tj +/TT8 1 Tf +0.93 0 TD +0 Tw +(\(CAR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.8179 0 TD +(PTR)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.09 Tw +[( is the list being assembled, )]TJ +/TT8 1 Tf +12.8291 0 TD +0 Tw +(\(CDR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.8179 0 TD +(PTR)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.09 Tw +[( is )]TJ +/TT8 1 Tf +1.3948 0 TD +0 Tw +(\(LAST)Tj +-36.9916 -1.2889 TD +(\(CAR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(PTR)Tj +/TT8 1 Tf +1.8003 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(. )Tj +/TT8 1 Tf +0.75 0 TD +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +( returns )Tj +/TT12 1 Tf +3.7041 0 TD +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +(, with its )Tj +/TT8 1 Tf +4.0742 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( appropriately modified.)Tj +/TT12 1 Tf +-25.1235 -2.0667 TD +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0267 Tw +[( can be initialized in two ways. If )]TJ +/TT12 1 Tf +15.3142 0 TD +0 Tw +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0267 Tw +[( is )]TJ +/TT8 1 Tf +1.2682 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0267 Tw +[( will create and return a )]TJ +/TT12 1 Tf +10.9632 0 TD +0 Tw +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0267 Tw +[(. In)]TJ +-38.2739 -1.2889 TD +0.0256 Tw +(this case, the program must set some variable to the value of the first call to )Tj +/TT8 1 Tf +33.8928 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0256 Tw +[(. After)]TJ +-36.8933 -1.2889 TD +0.21 Tw +(that, it is unnecessary to reset the variable, since )Tj +/TT8 1 Tf +23.3304 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.21 Tw +[( physically changes its value.)]TJ +-26.3309 -1.2889 TD +0 Tw +(Example:)Tj +/TT17 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(TCONC NIL 1\)\))Tj +1.0132 -1.2222 TD +(\(\(1\) 1\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for I from 2 to 5 do \(TCONC FOO I\)\))Tj +1.0132 -1 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +(\(\(1 2 3 4 5\) 5\))Tj +/TT6 1 Tf +-6 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.0033 0 TD +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0833 Tw +[( is initially )]TJ +/TT8 1 Tf +5.1343 0 TD +0 Tw +(\(NIL\))Tj +/TT6 1 Tf +3.0005 0 TD +0.0833 Tw +(, the value of )Tj +/TT8 1 Tf +6.2874 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0833 Tw +[( is the same as for )]TJ +/TT12 1 Tf +8.5855 0 TD +0 Tw +(PTR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1989 Tw +[( = NIL)]TJ +/TT6 1 Tf +3.9984 0 TD +0.0833 Tw +(. but )Tj +/TT8 1 Tf +2.3991 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +-37.0094 -1.2889 TD +(changes )Tj +/TT12 1 Tf +3.9847 0 TD +(PTR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1678 Tw +[(. This method allows the program to initialize the )]TJ +/TT8 1 Tf +24.0147 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.1678 Tw +[( variable before)]TJ +-32.8001 -1.2889 TD +0 Tw +(adding any elements to the list. Example:)Tj +/TT17 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(CONS\)\))Tj +1.0132 -1.2222 TD +(\(NIL\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for I from 1 to 5 do \(TCONC FOO I\)\))Tj +1.0132 -1 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +(\(\(1 2 3 4 5\) 5\))Tj +10 0 0 10 102 234.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 234.63 Tm +(LCONC)Tj +/F1 1 Tf +10 0 0 10 135 234.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 234.63 Tm +(PTR X)Tj +/TT8 1 Tf +10 0 0 10 164.8744 234.63 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 234.63 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Where )Tj +/TT8 1 Tf +3.2284 0 TD +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( is used to add )]TJ +/TT16 1 Tf +6.892 0 TD +0 Tw +(elements)Tj +/TT6 1 Tf +3.5015 0 TD +0.0433 Tw +[( at the end of a list, )]TJ +/TT8 1 Tf +8.8995 0 TD +0 Tw +(LCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( is used for building a list)]TJ +-28.5223 -1.2889 TD +0 Tw +(by adding )Tj +/TT16 1 Tf +4.7603 0 TD +(lists)Tj +/TT6 1 Tf +1.667 0 TD +( at the end, i.e., it is similar to )Tj +/TT8 1 Tf +13.1841 0 TD +(NCONC)Tj +/TT6 1 Tf +3.0005 0 TD +( instead of )Tj +/TT8 1 Tf +4.8418 0 TD +(NCONC1)Tj +/TT6 1 Tf +3.6006 0 TD +(. Example:)Tj +/TT17 1 Tf +-27.0542 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(CONS\)\))Tj +1.0132 -1.2222 TD +(\(NIL\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LCONC FOO \(1 2\)\))Tj +1.0132 -1.2222 TD +(\(\(1 2\) 2\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LCONC FOO \(3 4 5\)\))Tj +1.0132 -1.2222 TD +(\(\(1 2 3 4 5\) 5\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LCONC FOO NIL\))Tj +1.0132 -1.2222 TD +(\(\(1 2 3 4 5\) 5\))Tj +-6 -1.8444 TD +(LCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( uses the same pointer conventions as )]TJ +/TT8 1 Tf +17.4544 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( for eliminating searching to the end)]TJ +-23.4554 -1.2889 TD +0.1233 Tw +(of the list, so that the same pointer can be given to )Tj +/TT8 1 Tf +23.8286 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.1233 Tw +[( and )]TJ +/TT8 1 Tf +2.4395 0 TD +0 Tw +(LCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.1233 Tw +[( interchangeably.)]TJ +-32.2691 -1.2889 TD +0 Tw +(Therefore, continuing from above,)Tj +/TT17 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(TCONC FOO NIL\))Tj +1.0132 -1.2222 TD +(\(\(1 2 3 4 5 NIL\) NIL\))Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +31 0 obj +<< +/Length 7701 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-6)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 210 570.14 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(TCONC FOO \(3 4 5\)\))Tj +1.0132 -1.2222 TD +(\(\(1 2 3 4 5 NIL \(3 4 5\)\) \(3 4 5\)\))Tj +/TT6 1 Tf +-11.3333 -1.8444 TD +0.0456 Tw +(The functions )Tj +/TT8 1 Tf +6.3958 0 TD +0 Tw +(DOCOLLECT)Tj +/TT6 1 Tf +5.4009 0 TD +0.0456 Tw +[( and )]TJ +/TT8 1 Tf +2.284 0 TD +0 Tw +(ENDCOLLECT)Tj +/TT6 1 Tf +6.001 0 TD +0.0456 Tw +[( also let you build lists from left-to-right like )]TJ +/TT8 1 Tf +20.2186 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0456 Tw +(, but)Tj +-43.3007 -1.2889 TD +0.1056 Tw +[(without the overhead of an extra list cell. The listis kept as a circular list. )]TJ +/TT8 1 Tf +34.4126 0 TD +0 Tw +(DOCOLLECT)Tj +/TT6 1 Tf +5.4009 0 TD +0.1056 Tw +[( adds items;)]TJ +/TT8 1 Tf +-39.8135 -1.2889 TD +0 Tw +(ENDCOLLECT)Tj +/TT6 1 Tf +6.001 0 TD +( replaces the tail with its second argument, and returns the full list.)Tj +/TT8 1 Tf +10 0 0 10 150 499.46 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 499.46 Tm +(DOCOLLECT)Tj +/F1 1 Tf +10 0 0 10 204.6 499.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 207.47 499.46 Tm +(ITEM LST)Tj +/TT8 1 Tf +10 0 0 10 250.677 499.46 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 499.46 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Adds )Tj +/TT12 1 Tf +3.6944 0 TD +(ITEM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0211 Tw +[( to the end of )]TJ +/TT12 1 Tf +6.1656 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[(. Returns the new circular list. Note that )]TJ +/TT12 1 Tf +18.5817 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[( is modified,)]TJ +-34.4428 -1.2889 TD +0.0378 Tw +(but it is not )Tj +/TT8 1 Tf +5.4197 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0378 Tw +[( to the new list. The new list should be stored and used as )]TJ +/TT12 1 Tf +26.5569 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0378 Tw +[( to the next)]TJ +-34.9771 -1.2889 TD +0 Tw +(call to )Tj +/TT8 1 Tf +2.8979 0 TD +(DOCOLLECT)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 439.43 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 439.43 Tm +(ENDCOLLECT)Tj +/F1 1 Tf +10 0 0 10 210 439.43 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 212.87 439.43 Tm +(LST TAIL)Tj +/TT8 1 Tf +10 0 0 10 256.077 439.43 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 439.43 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Takes )Tj +/TT12 1 Tf +2.9884 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1667 Tw +(, a list returned by )Tj +/TT8 1 Tf +9.1449 0 TD +0 Tw +(DOCOLLECT)Tj +/TT6 1 Tf +5.4009 0 TD +0.1667 Tw +(, and returns it as a non-circular list, adding)Tj +/TT12 1 Tf +-19.3345 -1.2889 TD +0 Tw +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +( as the terminating )Tj +/TT8 1 Tf +8.5225 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-12.7231 -2.0667 TD +0.1489 Tw +(Here is an example using )Tj +/TT8 1 Tf +12.1815 0 TD +0 Tw +(DOCOLLECT)Tj +/TT6 1 Tf +5.4009 0 TD +0.1489 Tw +[( and )]TJ +/TT8 1 Tf +2.4907 0 TD +0 Tw +(ENDCOLLECT)Tj +/TT6 1 Tf +6.001 0 TD +0.1489 Tw +(. )Tj +/TT8 1 Tf +1.0478 0 TD +0 Tw +(HPRINT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1489 Tw +[( is used to print the)]TJ +-30.7223 -1.2889 TD +0.2333 Tw +[(results because they are circular lists. Notice that )]TJ +/TT8 1 Tf +24.1112 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.2333 Tw +[( has to be set to the value of)]TJ +/TT8 1 Tf +-25.9115 -1.2889 TD +0 Tw +(DOCOLLECT)Tj +/TT6 1 Tf +5.4009 0 TD +( as each element is added.)Tj +/TT17 1 Tf +-1.4009 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO NIL])Tj +1.0132 -1 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(HPRINT \(SETQ FOO \(DOCOLLECT 1 FOO])Tj +/TT17 1 Tf +1.0132 -1 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(\(1 . {1}\))Tj +/TT17 1 Tf +-2.603 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(HPRINT \(SETQ FOO \(DOCOLLECT 2 FOO])Tj +/TT17 1 Tf +1.0132 -1 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(\(2 1 . {1}\))Tj +/TT17 1 Tf +-2.603 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(HPRINT \(SETQ FOO \(DOCOLLECT 3 FOO])Tj +/TT17 1 Tf +1.0132 -1 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(\(3 1 2 . {1}\))Tj +/TT17 1 Tf +-2.603 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(HPRINT \(SETQ FOO \(DOCOLLECT 4 FOO])Tj +/TT17 1 Tf +1.0132 -1 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(\(4 1 2 3 . {1}\))Tj +/TT17 1 Tf +-2.603 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(ENDCOLLECT FOO 5])Tj +1.0132 -1 TD +(\(1 2 3 4 . 5\))Tj +/TT6 1 Tf +-11.3333 -1.8444 TD +0.1922 Tw +(The following two functions are useful when writing programs that reuse a scratch list to collect)Tj +0 -1.2222 TD +0 Tw +(together some result\(s\) \(both of these compile open\):)Tj +/TT8 1 Tf +10 0 0 10 150 198.2 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 198.2 Tm +(SCRATCHLIST)Tj +/F1 1 Tf +10 0 0 10 215.4 198.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 218.27 198.2 Tm +(LST X)Tj +3 -0.2222 TD +(1)Tj +/F3 1 Tf +10 0 0 10 250.67 198.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 253.45 198.2 Tm +(X)Tj +0.6 -0.2222 TD +(2)Tj +/F3 1 Tf +10 0 0 10 264.25 198.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 267.03 198.2 Tm +(...)Tj +/F3 1 Tf +10 0 0 10 283.2326 198.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 286.0126 198.2 Tm +(X)Tj +0.5997 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 296.81 198.2 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 198.2 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +-25.9256 -2.0667 TD +(SCRATCHLIST)Tj +/TT6 1 Tf +6.6011 0 TD +0.0322 Tw +[( sets up a context in which the value of )]TJ +/TT12 1 Tf +17.7085 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0322 Tw +[( is used as a scratch list. The)]TJ +-26.1098 -1.2889 TD +0 Tw +(expressions )Tj +/TT12 1 Tf +5.4806 0 TD +(X)Tj +0.6016 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, )Tj +/TT12 1 Tf +0.57 0 TD +(X)Tj +0.6 -0.2222 TD +(2)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, )Tj +/TT8 1 Tf +0.57 0 TD +(... )Tj +/TT12 1 Tf +2.5682 0 TD +(X)Tj +0.5996 -0.2222 TD +(N)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.07 Tw +[( are evaluated in turn. During the course of evaluation, any)]TJ +-12.79 -1.5111 TD +0.0544 Tw +(value passed to )Tj +/TT8 1 Tf +7.262 0 TD +0 Tw +(ADDTOSCRATCHLIST)Tj +/TT6 1 Tf +9.6016 0 TD +0.0544 Tw +[( will be saved, reusing )]TJ +/TT8 1 Tf +10.4202 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0544 Tw +[( cells from the value of)]TJ +/TT12 1 Tf +-29.6841 -1.2889 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0178 Tw +[(. If the value of )]TJ +/TT12 1 Tf +7.2307 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0178 Tw +[( is not long enough, new )]TJ +/TT8 1 Tf +11.2439 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0178 Tw +[( cells will be added onto its end. If)]TJ +-24.4755 -1.2889 TD +0.1167 Tw +(the value of )Tj +/TT12 1 Tf +5.8041 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1167 Tw +[( is )]TJ +/TT8 1 Tf +1.4482 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1167 Tw +(, the entire value of )Tj +/TT8 1 Tf +9.3397 0 TD +0 Tw +(SCRATCHLIST)Tj +/TT6 1 Tf +6.6011 0 TD +0.1167 Tw +[( will be new \(i.e., no )]TJ +/TT8 1 Tf +10.8152 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +-37.6089 -1.2889 TD +(cells will be reused\).)Tj +/TT8 1 Tf +10 0 0 10 150 100.32 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 100.32 Tm +(ADDTOSCRATCHLIST)Tj +/F1 1 Tf +10 0 0 10 242.4 100.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 245.27 100.32 Tm +(VALUE)Tj +/TT8 1 Tf +10 0 0 10 272.2744 100.32 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 100.32 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0744 Tw +(For use under calls to )Tj +/TT8 1 Tf +10.1168 0 TD +0 Tw +(SCRATCHLIST)Tj +/TT6 1 Tf +6.6011 0 TD +0.0744 Tw +(. )Tj +/TT12 1 Tf +0.8989 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0744 Tw +[( is added on to the end of the list of things)]TJ +-20.6173 -1.2889 TD +0.3289 Tw +(being collected by )Tj +/TT8 1 Tf +9.2181 0 TD +0 Tw +(SCRATCHLIST)Tj +/TT6 1 Tf +6.6011 0 TD +0.3289 Tw +[(. When )]TJ +/TT8 1 Tf +4.6297 0 TD +0 Tw +(SCRATCHLIST)Tj +/TT6 1 Tf +6.6011 0 TD +0.3289 Tw +[( returns, its value is a list)]TJ +-27.05 -1.2889 TD +0 Tw +(containing all of the things added by )Tj +/TT8 1 Tf +16.4805 0 TD +(ADDTOSCRATCHLIST)Tj +/TT6 1 Tf +9.6016 0 TD +(.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 17 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +34 0 obj +<< +/Length 7418 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-7)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT4 1 Tf +-42.221 -4.38 TD +(Copying Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +10 0 0 10 102 550.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 550.26 Tm +(COPY)Tj +/F1 1 Tf +10 0 0 10 129.6 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 132.47 550.26 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 137.8708 550.26 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 550.26 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0933 Tw +(Creates and returns a copy of the list )Tj +/TT12 1 Tf +17.2008 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0933 Tw +[(. All levels of )]TJ +/TT12 1 Tf +6.7342 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0933 Tw +[( are copied down to non-lists, so)]TJ +-25.1352 -1.2889 TD +0 Tw +(that if )Tj +/TT12 1 Tf +2.8584 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( contains arrays and strings, the copy of )Tj +/TT12 1 Tf +17.8189 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( will contain the same arrays and strings,)Tj +-21.8774 -1.2889 TD +(not copies. )Tj +/TT8 1 Tf +5.2388 0 TD +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +( is recursive in the )Tj +/TT8 1 Tf +8.2998 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( direction only, so very long lists can be copied.)Tj +-17.7393 -2.0667 TD +(To copy just the )Tj +/TT16 1 Tf +7.2798 0 TD +(top level)Tj +/TT6 1 Tf +3.3608 0 TD +( of )Tj +/TT12 1 Tf +1.3789 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, do )Tj +/TT8 1 Tf +1.9067 0 TD +(\(APPEND)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 471.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 471.63 Tm +(COPYALL)Tj +/F1 1 Tf +10 0 0 10 145.8 471.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 148.67 471.63 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 154.0708 471.63 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 471.63 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.1992 0 TD +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +0.0122 Tw +[(, but it copies down to atoms. Arrays, hash-arrays, strings, user data types, etc.,)]TJ +-4.5996 -1.2889 TD +0.0233 Tw +[(are all copied. Analagous to )]TJ +/TT8 1 Tf +12.9696 0 TD +0 Tw +(EQUALALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +[( \(see the Equality Predicates section of Chapter 9\).)]TJ +-17.7704 -1.2889 TD +0.2611 Tw +(This will not work if given a data structure with circular pointers; in this case, use)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(HCOPYALL)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 400.6 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 400.6 Tm +(HCOPYALL)Tj +/F1 1 Tf +10 0 0 10 151.2 400.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 154.07 400.6 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 159.4709 400.6 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 165.4718 400.6 Tm +[( )-30517.6([Function])]TJ +-4.3858 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(COPYALL)Tj +/TT6 1 Tf +4.2007 0 TD +(, but it will work even if the data structure contains circular pointers.)Tj +/TT4 1 Tf +10 0 0 10 54 360.71 Tm +(Extracting Tails of Lists)Tj +ET +54.01 358 m +510.01 358 l +S +BT +/TT8 1 Tf +10 0 0 10 102 342.77 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 342.77 Tm +(NTH)Tj +/F1 1 Tf +10 0 0 10 124.2 342.77 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 127.07 342.77 Tm +(X N)Tj +/TT8 1 Tf +10 0 0 10 143.2726 342.77 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 149.2736 342.77 Tm +( )Tj +32.8174 0 TD +([Function])Tj +-35.4033 -1.8833 TD +0.0811 Tw +(Returns the tail of )Tj +/TT12 1 Tf +8.4758 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0811 Tw +[( beginning with the )]TJ +/TT12 1 Tf +9.2175 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0811 Tw +[(th element. Returns )]TJ +/TT8 1 Tf +9.4787 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0811 Tw +[( if )]TJ +/TT12 1 Tf +1.2862 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0811 Tw +[( has fewer than )]TJ +/TT12 1 Tf +7.3406 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +-39.3995 -1.2889 TD +(elements. This is different from Common Lisps )Tj +/TT8 1 Tf +21.5801 0 TD +(NTH)Tj +/TT6 1 Tf +1.8003 0 TD +(. Examples:)Tj +/TT8 1 Tf +-19.3804 -1.6667 TD +(\(NTH \(A B C D\) 1\) => \(A B C D\))Tj +0 -1 TD +(\(NTH \(A B C D\) 3\) => \(C D\))Tj +T* +(\(NTH \(A B C D\) 9\) => NIL)Tj +T* +(\(NTH \(A . B\) 2\) => B)Tj +/TT6 1 Tf +-4 -1.8444 TD +(For consistency, if )Tj +/TT12 1 Tf +8.2188 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( = 0)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(NTH)Tj +/TT6 1 Tf +1.8003 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(\(CONS NIL)Tj +/TT10 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(:)Tj +/TT8 1 Tf +-20.4248 -1.6667 TD +(\(NTH \(A B\) 0\) => \(NIL A B\))Tj +10 0 0 10 102 222.74 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 222.74 Tm +(FNTH)Tj +/F1 1 Tf +10 0 0 10 129.6 222.74 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 132.47 222.74 Tm +(X N)Tj +/TT8 1 Tf +10 0 0 10 148.6726 222.74 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 222.74 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Faster version of )Tj +/TT8 1 Tf +7.5908 0 TD +(NTH)Tj +/TT6 1 Tf +1.8003 0 TD +( that terminates on a null-check.)Tj +/TT8 1 Tf +10 0 0 10 102 185.91 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 185.91 Tm +(LAST)Tj +/F1 1 Tf +10 0 0 10 129.6 185.91 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 132.47 185.91 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 137.8708 185.91 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 185.91 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns the last list cell in the list )Tj +/TT12 1 Tf +14.8345 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. Returns )Tj +/TT8 1 Tf +4.4771 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a list. Examples:)Tj +/TT8 1 Tf +-19.436 -1.6667 TD +(\(LAST \(A B C\)\) => \(C\))Tj +0 -1 TD +(\(LAST \(A B . C\)\) => \(B . C\))Tj +T* +(\(LAST A\) => NIL)Tj +10 0 0 10 102 118.08 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 118.08 Tm +(FLAST)Tj +/F1 1 Tf +10 0 0 10 135 118.08 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 118.08 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 143.2709 118.08 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 149.2718 118.08 Tm +( )Tj +32.8176 0 TD +([Function])Tj +-35.4033 -1.8833 TD +(Faster version of )Tj +/TT8 1 Tf +7.5908 0 TD +(LAST)Tj +/TT6 1 Tf +2.4004 0 TD +( that terminates on a null-check.)Tj +/TT8 1 Tf +10 0 0 10 102 81.25 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 81.25 Tm +(NLEFT)Tj +/F1 1 Tf +10 0 0 10 135 81.25 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 81.25 Tm +(L N TAIL)Tj +/TT8 1 Tf +10 0 0 10 181.077 81.25 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 187.078 81.25 Tm +[( )-28116.9([Function])]TJ +/TT8 1 Tf +-6.7864 -1.8833 TD +(NLEFT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0002 Tc +0.0031 Tw +( returns the tail of )Tj +/TT12 1 Tf +8.1451 0 TD +0 Tc +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( that contains )Tj +/TT12 1 Tf +6.1892 0 TD +0 Tc +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( more elements than )Tj +/TT12 1 Tf +9.2492 0 TD +0 Tc +0 Tw +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0006 Tc +0.0027 Tw +(. If )Tj +/TT12 1 Tf +1.6799 0 TD +0 Tc +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( does not contain)Tj +/TT16 1 Tf +-32.4646 -1.2889 TD +0 Tc +0 Tw +(N)Tj +/TT6 1 Tf +0.7778 0 TD +0.0378 Tw +[( more elements than )]TJ +/TT12 1 Tf +9.387 0 TD +0 Tw +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5378 0 TD +(NLEFT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0378 Tw +[( returns )]TJ +/TT8 1 Tf +3.7797 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0378 Tw +[(. If )]TJ +/TT12 1 Tf +1.7833 0 TD +0 Tw +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0378 Tw +[( is )]TJ +/TT8 1 Tf +1.2904 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0378 Tw +[( or not a tail of )]TJ +/TT12 1 Tf +6.9088 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5378 0 TD +(NLEFT)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +37 0 obj +<< +/Length 6859 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-8)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.1344 Tw +(returns the last )Tj +/TT12 1 Tf +7.2857 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1344 Tw +[( list cells in )]TJ +/TT12 1 Tf +5.6716 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.1344 Tw +(. )Tj +/TT8 1 Tf +1.0189 0 TD +0 Tw +(NLEFT)Tj +/TT6 1 Tf +3.0005 0 TD +0.1344 Tw +[( can be used to work backwards through a list.)]TJ +-18.1768 -1.2889 TD +0 Tw +(Example:)Tj +/TT17 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(A B C D E\)\))Tj +1.0132 -1 TD +(\(A B C D E\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(NLEFT FOO 2\))Tj +1.0132 -1 TD +(\(D E\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(NLEFT FOO 1 \(CDDR FOO\)\))Tj +1.0132 -1 TD +(\(B C D E\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(NLEFT FOO 3 \(CDDR FOO\)\))Tj +1.0132 -1 TD +(NIL)Tj +10 0 0 10 150 456.66 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 456.66 Tm +(LASTN)Tj +/F1 1 Tf +10 0 0 10 183 456.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 456.66 Tm +(L N)Tj +/TT8 1 Tf +10 0 0 10 202.0726 456.66 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 208.0736 456.66 Tm +[( )-31117.4([Function])]TJ +-3.786 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(\(CONS X Y\))Tj +/TT6 1 Tf +6.001 0 TD +(, where )Tj +/TT8 1 Tf +3.519 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( is the last )Tj +/TT12 1 Tf +4.6431 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( elements of )Tj +/TT12 1 Tf +5.5718 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is the initial segment, e.g.,)Tj +/TT8 1 Tf +-24.3052 -1.6667 TD +(\(LASTN \(A B C D E\) 2\) => \(\(A B C\) D E\))Tj +0 -1 TD +(\(LASTN \(A B\) 2\) => \(NIL A B\))Tj +/TT6 1 Tf +-4 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a list containing at least)Tj +/TT16 1 Tf +13.2974 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( elements.)Tj +/TT8 1 Tf +10 0 0 10 150 379.23 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 379.23 Tm +(TAILP)Tj +/F1 1 Tf +10 0 0 10 183 379.23 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 379.23 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 202.0726 379.23 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 379.23 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT12 1 Tf +3.7948 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0678 Tw +(, if )Tj +/TT12 1 Tf +1.5096 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0678 Tw +[( is a )]TJ +/TT16 1 Tf +2.1682 0 TD +0 Tw +(tail)Tj +/TT6 1 Tf +1.3325 0 TD +0.0678 Tw +[( of the list )]TJ +/TT12 1 Tf +4.8693 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0678 Tw +(; otherwise )Tj +/TT8 1 Tf +5.2415 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0678 Tw +(. )Tj +/TT12 1 Tf +0.8856 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0678 Tw +[( is a tail of )]TJ +/TT12 1 Tf +5.0908 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0678 Tw +[( if it is )]TJ +/TT8 1 Tf +3.2272 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0678 Tw +[( to 0 or more)]TJ +/TT8 1 Tf +-34.1204 -1.2889 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(s of )Tj +/TT12 1 Tf +1.8027 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-4.2031 -2.0667 TD +(Note: If )Tj +/TT12 1 Tf +3.8521 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( to 1 or more )Tj +/TT8 1 Tf +5.8657 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(s of )Tj +/TT12 1 Tf +1.8027 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is called a proper tail.)Tj +/TT4 1 Tf +10 0 0 10 102 309.14 Tm +(Counting List Cells)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 306.43 m +558.01 306.43 l +S +BT +/TT8 1 Tf +10 0 0 10 150 291.2 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 291.2 Tm +(LENGTH)Tj +/F1 1 Tf +10 0 0 10 188.4 291.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 291.2 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 196.6709 291.2 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 202.6718 291.2 Tm +[( )-31717.6([Function])]TJ +-3.1858 -1.8833 TD +0.0289 Tw +(Returns the length of the list )Tj +/TT12 1 Tf +12.9521 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +(, where length is defined as the number of )Tj +/TT8 1 Tf +20.1311 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0289 Tw +(s required)Tj +-35.4836 -1.2889 TD +0 Tw +(to reach a non-list. Examples:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(LENGTH \(A B C\)\) => 3)Tj +0 -1 TD +(\(LENGTH \(A B C . D\)\) => 3)Tj +T* +(\(LENGTH A\) => 0)Tj +10 0 0 10 150 212.37 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 212.37 Tm +(FLENGTH)Tj +/F1 1 Tf +10 0 0 10 193.8 212.37 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 196.67 212.37 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 202.0709 212.37 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 208.0718 212.37 Tm +[( )-31117.6([Function])]TJ +-3.7858 -1.8833 TD +(Faster version of )Tj +/TT8 1 Tf +7.5908 0 TD +(LENGTH)Tj +/TT6 1 Tf +3.6006 0 TD +( that terminates on a null-check.)Tj +/TT8 1 Tf +10 0 0 10 150 175.54 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 175.54 Tm +(EQLENGTH)Tj +/F1 1 Tf +10 0 0 10 199.2 175.54 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 202.07 175.54 Tm +(X N)Tj +/TT8 1 Tf +10 0 0 10 218.2726 175.54 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 224.2736 175.54 Tm +[( )-29317.4([Function])]TJ +-5.586 -1.8833 TD +0.0433 Tw +(Equivalent to )Tj +/TT8 1 Tf +6.2668 0 TD +0.1033 Tw +(\(EQUAL \(LENGTH)Tj +/TT10 1 Tf +8.5047 0 TD +0 Tw +( )Tj +/TT12 1 Tf +0.7034 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.7034 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0433 Tw +(, but more efficient, because )Tj +/TT8 1 Tf +12.7919 0 TD +0 Tw +(EQLENGTH)Tj +/TT6 1 Tf +4.8008 0 TD +0.0433 Tw +[( stops as)]TJ +-36.1714 -1.2889 TD +0.0944 Tw +(soon as it knows that )Tj +/TT12 1 Tf +10.0372 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0944 Tw +[( is longer than )]TJ +/TT12 1 Tf +6.932 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0944 Tw +(. )Tj +/TT8 1 Tf +0.9389 0 TD +0 Tw +(EQLENGTH)Tj +/TT6 1 Tf +4.8008 0 TD +0.0944 Tw +[( is safe to use on \(possibly\) circular)]TJ +-23.909 -1.2889 TD +0 Tw +(lists, since it is bounded by )Tj +/TT12 1 Tf +13.1519 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 115.51 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 115.51 Tm +(COUNT)Tj +/F1 1 Tf +10 0 0 10 183 115.51 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 115.51 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 191.2709 115.51 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 197.2718 115.51 Tm +( )Tj +32.8176 0 TD +([Function])Tj +-35.4033 -1.8833 TD +0.0233 Tw +(Returns the number of list cells in the list )Tj +/TT12 1 Tf +18.5513 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0233 Tw +[(. Thus, )]TJ +/TT8 1 Tf +3.5417 0 TD +0 Tw +(COUNT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0233 Tw +[( is like a )]TJ +/TT8 1 Tf +3.9254 0 TD +0 Tw +(LENGTH)Tj +/TT6 1 Tf +3.6006 0 TD +0.0233 Tw +[( that goes to all)]TJ +-33.2195 -1.2889 TD +0 Tw +(levels. )Tj +/TT8 1 Tf +3.2788 0 TD +(COUNT)Tj +/TT6 1 Tf +3.0005 0 TD +( of a non-list is 0. Examples:)Tj +/TT8 1 Tf +-2.2793 -1.6667 TD +(\(COUNT \(A\)\) => 1)Tj +0 -1 TD +(\(COUNT \(A . B\)\) => 1)Tj +T* +(\(COUNT \(A \(B\) C\)\) => 4)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +40 0 obj +<< +/Length 8459 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-9)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0856 Tw +(In this last example, the value is 4 because the list )Tj +/TT8 1 Tf +23.0144 0 TD +0 Tw +(\(A )Tj +/TT12 1 Tf +2.0047 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2044 Tw +[( C\))]TJ +/TT6 1 Tf +2.0047 0 TD +0.0856 Tw +[( uses three list cells for any)]TJ +-27.6239 -1.2889 TD +0 Tw +(object )Tj +/TT12 1 Tf +2.832 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(\(B\))Tj +/TT6 1 Tf +1.8003 0 TD +( uses another list cell.)Tj +/TT8 1 Tf +10 0 0 10 102 538.06 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 538.06 Tm +(COUNTDOWN)Tj +/F1 1 Tf +10 0 0 10 156.6 538.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 159.47 538.06 Tm +(X N)Tj +/TT8 1 Tf +10 0 0 10 175.6726 538.06 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 181.6736 538.06 Tm +[( )-28717.4([Function])]TJ +-6.186 -1.8833 TD +0.12 Tw +(Counts the number of list cells in )Tj +/TT12 1 Tf +15.675 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.12 Tw +(, decrementing )Tj +/TT12 1 Tf +7.0969 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.12 Tw +[( for each one. Stops and returns )]TJ +/TT12 1 Tf +15.4146 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +-39.3867 -1.2889 TD +0.1944 Tw +(when it finishes counting, or when )Tj +/TT12 1 Tf +16.7648 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1944 Tw +[( reaches 0. )]TJ +/TT8 1 Tf +5.8305 0 TD +0 Tw +(COUNTDOWN)Tj +/TT6 1 Tf +5.4009 0 TD +0.1944 Tw +[( can be used on circular)]TJ +-28.5963 -1.2889 TD +0 Tw +(structures since it is bounded by )Tj +/TT12 1 Tf +15.5649 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(. Examples:)Tj +/TT8 1 Tf +-12.165 -1.6667 TD +(\(COUNTDOWN \(A\) 100\) => 99)Tj +0 -1 TD +(\(COUNTDOWN \(A . B\) 100\) => 99)Tj +T* +(\(COUNTDOWN \(A \(B\) C\) 100\) => 96)Tj +T* +(\(COUNTDOWN \(DOCOLLECT 1 NIL\) 100\) => 0)Tj +10 0 0 10 102 438.03 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 438.03 Tm +(EQUALN)Tj +/F1 1 Tf +10 0 0 10 140.4 438.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 438.03 Tm +(X Y DEPTH)Tj +/TT8 1 Tf +10 0 0 10 191.8779 438.03 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 197.8789 438.03 Tm +[( )-26916.8([Function])]TJ +-7.9865 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.4281 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.2411 Tw +[(, for use with \(possibly\) circular structures. Whenever the depth of )]TJ +/TT8 1 Tf +32.7664 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +-38.195 -1.2889 TD +0.0078 Tw +(recursion plus the depth of )Tj +/TT8 1 Tf +12.2318 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +[( recursion exceeds )]TJ +/TT12 1 Tf +8.3637 0 TD +0 Tw +(DEPTH)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5078 0 TD +(EQUALN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0078 Tw +[( does not search further)]TJ +-29.5046 -1.2889 TD +0.1167 Tw +(along that chain, and returns the symbol )Tj +/TT8 1 Tf +18.9622 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.1167 Tw +[(. If recursion never exceeds )]TJ +/TT12 1 Tf +13.2103 0 TD +0 Tw +(DEPTH)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6167 0 TD +(EQUALN)Tj +/TT6 1 Tf +-36.3897 -1.2889 TD +(returns )Tj +/TT8 1 Tf +3.4541 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if the expressions )Tj +/TT12 1 Tf +8.1719 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT12 1 Tf +2.1929 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( are )Tj +/TT8 1 Tf +1.874 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +(; otherwise )Tj +/TT8 1 Tf +5.106 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-23.3999 -1.6667 TD +(\(EQUALN \(\(\(A\)\) B\) \(\(\(Z\)\) B\) 2\) => ?)Tj +0 -1 TD +(\(EQUALN \(\(\(A\)\) B\) \(\(\(Z\)\) B\) 3\) => NIL)Tj +T* +(\(EQUALN \(\(\(A\)\) B\) \(\(\(A\)\) B\) 3\) => T)Tj +/TT4 1 Tf +10 0 0 10 54 332.34 Tm +(Set Operations)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 329.63 m +510.01 329.63 l +S +BT +/TT8 1 Tf +10 0 0 10 102 314.4 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 314.4 Tm +(INTERSECTION)Tj +/F1 1 Tf +10 0 0 10 172.8 314.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 175.67 314.4 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 191.8726 314.4 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 197.8736 314.4 Tm +[( )-26917.4([Function])]TJ +-7.986 -1.8833 TD +0.1911 Tw +(Returns a list whose elements are members of both lists )Tj +/TT12 1 Tf +26.6396 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1911 Tw +[( and )]TJ +/TT12 1 Tf +2.5751 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1911 Tw +[( \(using )]TJ +/TT8 1 Tf +3.6713 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1911 Tw +[( to do)]TJ +-37.0867 -1.2889 TD +0 Tw +(compares\).)Tj +0 -2 TD +(Note that )Tj +/TT8 1 Tf +4.4165 0 TD +(\(INTERSECTION)Tj +/TT6 1 Tf +7.8013 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(X\))Tj +/TT6 1 Tf +1.2002 0 TD +( gives a list of all members of )Tj +/TT8 1 Tf +13.0825 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( without duplicates.)Tj +/TT8 1 Tf +10 0 0 10 102 247.97 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 247.97 Tm +(UNION)Tj +/F1 1 Tf +10 0 0 10 135 247.97 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 247.97 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 154.0726 247.97 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 160.0736 247.97 Tm +[( )-31117.4([Function])]TJ +-3.786 -1.8833 TD +0.0822 Tw +(Returns a \(new\) list consisting of all elements included on either of the two original lists)Tj +0 -1.2222 TD +0 Tw +(\(using )Tj +/TT8 1 Tf +3.0391 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( to compare elements\). It is more efficient for )Tj +/TT12 1 Tf +20.2583 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( to be the shorter list.)Tj +-26.898 -2.0667 TD +0.2389 Tw +(The value of )Tj +/TT8 1 Tf +6.4574 0 TD +0 Tw +(UNION)Tj +/TT6 1 Tf +3.0005 0 TD +0.2389 Tw +[( is )]TJ +/TT12 1 Tf +1.6926 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.2389 Tw +[( with all elements of )]TJ +/TT12 1 Tf +10.3815 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2389 Tw +[( not in )]TJ +/TT12 1 Tf +3.7938 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.4889 0 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.2389 Tw +(ed on the front of it.)Tj +-30.0153 -1.2889 TD +0.0533 Tw +(Therefore, if an element appears twice in )Tj +/TT12 1 Tf +18.6463 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0533 Tw +(, it will appear twice in )Tj +/TT8 1 Tf +10.7175 0 TD +0 Tw +(\(UNION)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.7279 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.7279 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0533 Tw +[(. Since)]TJ +/TT8 1 Tf +-36.8205 -1.2889 TD +0.0878 Tw +(\(UNION \(A\) \(A A\)\) = \(A A\))Tj +/TT6 1 Tf +16.7293 0 TD +0.0367 Tw +(, while )Tj +/TT8 1 Tf +3.3004 0 TD +0.0878 Tw +(\(UNION \(A A\) \(A\)\) = \(A\))Tj +/TT6 1 Tf +15.4413 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5367 0 TD +(UNION)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +[( is)]TJ +-39.0082 -1.2889 TD +0 Tw +(non-commutative.)Tj +/TT8 1 Tf +10 0 0 10 102 147.34 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 147.34 Tm +(LDIFFERENCE)Tj +/F1 1 Tf +10 0 0 10 167.4 147.34 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 170.27 147.34 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 186.4726 147.34 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 192.4736 147.34 Tm +[( )-27517.4([Function])]TJ +-7.386 -1.8833 TD +0.1378 Tw +[(List Difference. Returns a list of the elements in )]TJ +/TT12 1 Tf +23.7596 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1378 Tw +[( that are not members of )]TJ +/TT12 1 Tf +11.8638 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1378 Tw +[( \(using)]TJ +/TT8 1 Tf +-36.8236 -1.2889 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( to compare elements\).)Tj +-3.0005 -2.0667 TD +(Note: If )Tj +/TT12 1 Tf +3.8521 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT12 1 Tf +2.1929 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( share no elements, )Tj +/TT8 1 Tf +8.7007 0 TD +(LDIFFERENCE)Tj +/TT6 1 Tf +6.6011 0 TD +( returns a copy of )Tj +/TT12 1 Tf +7.98 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 80.31 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 80.31 Tm +(LDIFF)Tj +/F1 1 Tf +10 0 0 10 135 80.31 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 80.31 Tm +(LST TAIL ADD)Tj +/TT8 1 Tf +10 0 0 10 202.6805 80.31 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 208.6815 80.31 Tm +[( )-25716.5([Function])]TJ +/TT12 1 Tf +-9.1868 -1.8833 TD +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( must be a tail of )]TJ +/TT12 1 Tf +7.7218 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +(, i.e., )Tj +/TT8 1 Tf +2.3256 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0278 Tw +[( to the result of applying some number of )]TJ +/TT8 1 Tf +18.8403 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +(s to )Tj +/TT12 1 Tf +1.8515 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-39.7407 -1.2889 TD +(\(LDIFF)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(LST)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( returns a list of all elements in )Tj +/TT12 1 Tf +13.813 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +( up to )Tj +/TT12 1 Tf +2.8262 0 TD +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +43 0 obj +<< +/Length 6142 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-10)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(If )Tj +/TT12 1 Tf +0.9455 0 TD +(ADD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0256 Tw +[( is not )]TJ +/TT8 1 Tf +2.9956 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0256 Tw +(, the value of )Tj +/TT8 1 Tf +6.0563 0 TD +0 Tw +(LDIFF)Tj +/TT6 1 Tf +3.0005 0 TD +0.0256 Tw +[( is effectively )]TJ +/TT8 1 Tf +6.1177 0 TD +0 Tw +(\(NCONC)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6601 0 TD +(ADD)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.6601 0 TD +(\(LDIFF)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6601 0 TD +(LST)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.6601 0 TD +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(,)Tj +-39.7589 -1.2889 TD +(i.e., the list difference is added at the end of )Tj +/TT12 1 Tf +19.4556 0 TD +(ADD)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-21.2559 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.0244 0 TD +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1044 Tw +[( is not a tail of )]TJ +/TT12 1 Tf +7.0827 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6044 0 TD +(LDIFF)Tj +/TT6 1 Tf +3.0005 0 TD +0.1044 Tw +[( generates an error, )]TJ +/TT8 1 Tf +9.18 0 TD +0.25 Tw +(LDIFF: not a tail)Tj +/TT6 1 Tf +10.9517 0 TD +0.1044 Tw +(. )Tj +/TT8 1 Tf +0.9589 0 TD +0 Tw +(LDIFF)Tj +/TT6 1 Tf +-37.0032 -1.2889 TD +0.1067 Tw +(terminates on a null-check, so it will go into an infinite loop if )Tj +/TT12 1 Tf +28.811 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1067 Tw +[( is a circular list and)]TJ +/TT12 1 Tf +-30.6113 -1.2889 TD +0 Tw +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +( is not a tail.)Tj +-2.4004 -2.0667 TD +(Example:)Tj +/TT17 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(A B C D E F\)\))Tj +1.0132 -1 TD +(\(A B C D E F\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(CDDR FOO\))Tj +1.0132 -1 TD +(\(C D E F\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LDIFF FOO \(CDDR FOO\)\))Tj +1.0132 -1 TD +(\(A B\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LDIFF FOO \(CDDR FOO\) \(1 2\)\))Tj +1.0132 -1 TD +(\(1 2 A B\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LDIFF FOO \(C D E F\)\))Tj +1.0132 -1 TD +(LDIFF: not a tail)Tj +T* +(\(C D E F\))Tj +/TT6 1 Tf +-6 -1.8444 TD +0.0622 Tw +(Note that the value of )Tj +/TT8 1 Tf +10.1817 0 TD +0 Tw +(LDIFF)Tj +/TT6 1 Tf +3.0005 0 TD +0.0622 Tw +[( is always new list structure unless )]TJ +/TT12 1 Tf +16.0303 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.15 Tw +[( = NIL)]TJ +/TT6 1 Tf +3.9006 0 TD +0.0622 Tw +(, in which)Tj +-35.5135 -1.2889 TD +0 Tw +(case the value is )Tj +/TT12 1 Tf +7.3867 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +( itself.)Tj +/TT4 1 Tf +10 0 0 10 102 334 Tm +(Searching Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 331.29 m +558.01 331.29 l +S +BT +/TT8 1 Tf +10 0 0 10 150 316.06 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 316.06 Tm +(MEMB)Tj +/F1 1 Tf +10 0 0 10 177.6 316.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 180.47 316.06 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 196.6726 316.06 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 202.6736 316.06 Tm +[( )-31717.4([Function])]TJ +-3.186 -1.8833 TD +0.0722 Tw +(Determines if )Tj +/TT12 1 Tf +6.3803 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +[( is a member of the list )]TJ +/TT12 1 Tf +10.7404 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +[(. If there is an element of )]TJ +/TT12 1 Tf +11.9538 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3222 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0722 Tw +[( to )]TJ +/TT12 1 Tf +1.5165 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +(, returns the)Tj +-34.5138 -1.2889 TD +0 Tw +(tail of )Tj +/TT12 1 Tf +2.7871 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( starting with that element. Otherwise, returns )Tj +/TT8 1 Tf +20.9873 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. Examples:)Tj +/TT8 1 Tf +-22.1748 -1.6667 TD +(\(MEMB A \(A \(W\) C D\)\) => \(A \(W\) C D\))Tj +0 -1 TD +(\(MEMB C \(A \(W\) C D\)\) => \(C D\))Tj +T* +(\(MEMB W \(A \(W\) C D\)\) => NIL)Tj +T* +(\(MEMB \(W\) \(A \(W\) C D\)\) => NIL)Tj +10 0 0 10 150 227.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 227.63 Tm +(FMEMB)Tj +/F1 1 Tf +10 0 0 10 183 227.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 227.63 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 202.0726 227.63 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 208.0736 227.63 Tm +[( )-31117.4([Function])]TJ +-3.786 -1.8833 TD +(Faster version of )Tj +/TT8 1 Tf +7.5908 0 TD +(MEMB)Tj +/TT6 1 Tf +2.4004 0 TD +( that terminates on a null-check.)Tj +/TT8 1 Tf +10 0 0 10 150 190.8 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 190.8 Tm +(MEMBER)Tj +/F1 1 Tf +10 0 0 10 188.4 190.8 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 190.8 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 207.4726 190.8 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 213.4736 190.8 Tm +[( )-30517.4([Function])]TJ +-4.386 -1.8833 TD +0.0622 Tw +(Identical to )Tj +/TT8 1 Tf +5.3574 0 TD +0 Tw +(MEMB)Tj +/TT6 1 Tf +2.4004 0 TD +0.0622 Tw +[( except that it uses )]TJ +/TT8 1 Tf +8.6876 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0622 Tw +[( instead of )]TJ +/TT8 1 Tf +5.0285 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0622 Tw +[( to check membership of )]TJ +/TT12 1 Tf +11.3868 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( in )]TJ +/TT12 1 Tf +1.4975 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-39.759 -1.2889 TD +(Examples:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(MEMBER C \(A \(W\) C D\)\) => \(C D\))Tj +0 -1 TD +(\(MEMBER W \(A \(W\) C D\)\) => NIL)Tj +T* +(\(MEMBER \(W\) \(A \(W\) C D\)\) => \(\(W\) C D\))Tj +10 0 0 10 150 111.97 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 111.97 Tm +(EQMEMB)Tj +/F1 1 Tf +10 0 0 10 188.4 111.97 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 191.27 111.97 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 207.4726 111.97 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 213.4736 111.97 Tm +[( )-30517.4([Function])]TJ +-4.386 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if either )Tj +/TT12 1 Tf +3.9263 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( to )Tj +/TT12 1 Tf +1.3721 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(, or else )Tj +/TT12 1 Tf +3.6138 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( is a list and )Tj +/TT12 1 Tf +5.4897 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is an )Tj +/TT8 1 Tf +2.5469 0 TD +(FMEMB)Tj +/TT6 1 Tf +3.0005 0 TD +( of )Tj +/TT12 1 Tf +1.3789 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +46 0 obj +<< +/Length 8017 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-11)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT4 1 Tf +-42.221 -4.38 TD +(Substitution Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +10 0 0 10 102 550.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 550.26 Tm +(SUBST)Tj +/F1 1 Tf +10 0 0 10 135 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.87 550.26 Tm +(NEW OLD EXPR)Tj +/TT8 1 Tf +10 0 0 10 202.6805 550.26 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 208.6815 550.26 Tm +[( )-25716.5([Function])]TJ +-9.1868 -1.8833 TD +0.0867 Tw +(Returns the result of substituting )Tj +/TT12 1 Tf +15.2502 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( for all occurrences of )]TJ +/TT12 1 Tf +10.1526 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( in the expression )]TJ +/TT12 1 Tf +8.3437 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-39.7475 -1.2889 TD +0.1478 Tw +(Substitution occurs whenever )Tj +/TT12 1 Tf +13.8403 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1478 Tw +[( is )]TJ +/TT8 1 Tf +1.5104 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1478 Tw +[( to )]TJ +/TT8 1 Tf +1.6676 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1478 Tw +[( of some subexpression of )]TJ +/TT12 1 Tf +12.3951 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1478 Tw +(, or)Tj +-38.4149 -1.2889 TD +0 Tw +(when )Tj +/TT12 1 Tf +2.9493 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.2222 Tw +[( is atomic and )]TJ +/TT8 1 Tf +7.2864 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.2222 Tw +[( to a non-)]TJ +/TT8 1 Tf +4.8317 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.4722 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2222 Tw +[( of some subexpression of )]TJ +/TT12 1 Tf +12.7674 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.2222 Tw +[(. For)]TJ +-37.3084 -1.2889 TD +0 Tw +(example:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(SUBST A B \(C B \(X . B\)\)\) => \(C A \(X . A\)\))Tj +0 -1 TD +(\(SUBST A \(B C\) \(\(B C\) D B C\)\) => \(A D B C\) )Tj +/TT12 1 Tf +27.6045 0 TD +(not)Tj +/TT8 1 Tf +1.8003 0 TD +( \(A D . A\))Tj +-33.4048 -1.8444 TD +(SUBST)Tj +/TT6 1 Tf +3.0005 0 TD +0.0178 Tw +[( returns a copy of )]TJ +/TT12 1 Tf +8.0689 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0178 Tw +[( with the appropriate changes. Furthermore, if )]TJ +/TT12 1 Tf +21.1281 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.0178 Tw +[( is a list,)]TJ +-36.3981 -1.2889 TD +0 Tw +(it is copied at each substitution.)Tj +/TT8 1 Tf +10 0 0 10 102 427.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 427.63 Tm +(DSUBST)Tj +/F1 1 Tf +10 0 0 10 140.4 427.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 427.63 Tm +(NEW OLD EXPR)Tj +/TT8 1 Tf +10 0 0 10 208.0805 427.63 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 214.0815 427.63 Tm +[( )-25116.5([Function])]TJ +-9.7868 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.3059 0 TD +(SUBST)Tj +/TT6 1 Tf +3.0005 0 TD +0.1189 Tw +(, but it does not copy )Tj +/TT12 1 Tf +10.2236 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1189 Tw +(, but changes the list structure )Tj +/TT12 1 Tf +14.227 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1189 Tw +[( itself. Like)]TJ +/TT8 1 Tf +-34.5578 -1.2889 TD +0 Tw +(SUBST)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(DSUBST)Tj +/TT6 1 Tf +3.6006 0 TD +( substitutes with a copy of )Tj +/TT12 1 Tf +11.8384 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +(. More efficient than )Tj +/TT8 1 Tf +9.4141 0 TD +(SUBST)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 379.2 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 379.2 Tm +(LSUBST)Tj +/F1 1 Tf +10 0 0 10 140.4 379.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 379.2 Tm +(NEW OLD EXPR)Tj +/TT8 1 Tf +10 0 0 10 208.0805 379.2 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 379.2 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.417 0 TD +(SUBST,)Tj +/TT6 1 Tf +3.6006 0 TD +0.23 Tw +[( but )]TJ +/TT12 1 Tf +2.4424 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.23 Tw +[( is substituted as a segment of the list )]TJ +/TT12 1 Tf +18.7521 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.23 Tw +[( rather than as an)]TJ +-31.4128 -1.2889 TD +0 Tw +(element. For instance,)Tj +/TT8 1 Tf +4 -1.6 TD +(\(LSUBST \(A B\) Y \(X Y Z\)\) => \(X A B Z\))Tj +/TT6 1 Tf +-4 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +( is not a list, )Tj +/TT8 1 Tf +5.501 0 TD +(LSUBST)Tj +/TT6 1 Tf +3.6006 0 TD +( returns a copy of )Tj +/TT12 1 Tf +7.98 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +( with all )Tj +/TT12 1 Tf +3.8652 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +(s deleted:)Tj +/TT8 1 Tf +-23.8677 -1.6667 TD +(\(LSUBST NIL Y \(X Y Z\)\) => \(X Z\))Tj +10 0 0 10 102 282.77 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 282.77 Tm +(SUBLIS)Tj +/F1 1 Tf +10 0 0 10 140.4 282.77 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 282.77 Tm +(ALST EXPR FLG)Tj +/TT8 1 Tf +10 0 0 10 213.4814 282.77 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 219.4824 282.77 Tm +[( )-24516.4([Function])]TJ +/TT12 1 Tf +-10.3869 -1.8833 TD +(ALST)Tj +/TT6 1 Tf +2.4004 0 TD +( is a list of pairs:)Tj +/TT8 1 Tf +1.5996 -1.6667 TD +(\(\()Tj +/TT12 1 Tf +1.2002 0 TD +(OLD)Tj +1.7998 -0.2222 TD +(1)Tj +/TT10 1 Tf +0.6 0.2222 TD +( . )Tj +/TT12 1 Tf +1.8003 0 TD +(NEW)Tj +1.7997 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(OLD)Tj +1.7997 -0.2222 TD +(2)Tj +/TT10 1 Tf +0.6 0.2222 TD +( . )Tj +/TT12 1 Tf +1.8003 0 TD +(NEW)Tj +1.7997 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(...)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(OLD)Tj +1.7993 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +( . )Tj +/TT12 1 Tf +1.8003 0 TD +(NEW)Tj +1.7997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\)\))Tj +/TT6 1 Tf +-31 -2.2889 TD +(Each )Tj +/TT12 1 Tf +2.6167 0 TD +(OLD)Tj +1.8011 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.23 Tw +[( is an atom. )]TJ +/TT8 1 Tf +6.7018 0 TD +0 Tw +(SUBLIS)Tj +/TT6 1 Tf +3.6006 0 TD +0.23 Tw +[( returns the result of substituting each )]TJ +/TT12 1 Tf +18.6588 0 TD +0 Tw +(NEW)Tj +1.8022 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.23 Tw +[( for the)]TJ +-36.3811 -1.5111 TD +0 Tw +(corresponding )Tj +/TT12 1 Tf +6.7017 0 TD +(OLD)Tj +1.8017 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +( in )Tj +/TT12 1 Tf +1.373 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +(, e.g.,)Tj +/TT8 1 Tf +-8.8768 -1.8889 TD +(\(SUBLIS \(\(A . X\) \(C . Y\)\) \(A B C D\)\) => \(X B Y D\))Tj +/TT6 1 Tf +-4 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9344 0 TD +(FLG )Tj +/TT8 1 Tf +2.4348 0 TD +0.0344 Tw +(= NIL)Tj +/TT6 1 Tf +3.0349 0 TD +0.0144 Tw +(, new structure is created only if needed, so if there are no substitutions, the)Tj +-6.4041 -1.2889 TD +0 Tw +(value is )Tj +/TT8 1 Tf +3.6528 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( to )Tj +/TT12 1 Tf +1.3721 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +(. If )Tj +/TT12 1 Tf +1.6699 0 TD +(FLG )Tj +/TT8 1 Tf +2.4004 0 TD +(= T)Tj +/TT6 1 Tf +1.8003 0 TD +(, the value is always a copy of )Tj +/TT12 1 Tf +13.4209 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 149.54 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 149.54 Tm +(DSUBLIS)Tj +/F1 1 Tf +10 0 0 10 145.8 149.54 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 148.67 149.54 Tm +(ALST EXPR FLG)Tj +/TT8 1 Tf +10 0 0 10 218.8814 149.54 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 224.8824 149.54 Tm +[( )-23916.4([Function])]TJ +-10.9869 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(SUBLIS)Tj +/TT6 1 Tf +3.6006 0 TD +(, but it changes the list structure )Tj +/TT12 1 Tf +14.3809 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +( itself instead of copying it.)Tj +/TT8 1 Tf +10 0 0 10 102 112.71 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 112.71 Tm +(SUBPAIR)Tj +/F1 1 Tf +10 0 0 10 145.8 112.71 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 148.67 112.71 Tm +(OLD NEW EXPR FLG)Tj +/TT8 1 Tf +10 0 0 10 235.084 112.71 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 241.085 112.71 Tm +[( )-22116.1([Function])]TJ +-12.7872 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.3837 0 TD +(SUBLIS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1967 Tw +(, but elements of )Tj +/TT12 1 Tf +8.3409 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.1967 Tw +[( are substituted for corresponding atoms of )]TJ +/TT12 1 Tf +20.7502 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1967 Tw +[( in)]TJ +/TT12 1 Tf +-38.6759 -1.2889 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +(, e.g.,)Tj +/TT8 1 Tf +1.5996 -1.6667 TD +(\(SUBPAIR \(A C\) \(X Y\) \(A B C D\)\) => \(X B Y D\))Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +51 0 obj +<< +/Length 7577 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-12)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0811 Tw +(As with )Tj +/TT8 1 Tf +3.8971 0 TD +0 Tw +(SUBLIS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0811 Tw +(, new structure is created only if needed, or if )Tj +/TT12 1 Tf +21.0548 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.1956 Tw +[( = T)]TJ +/TT6 1 Tf +2.7915 0 TD +0.0811 Tw +(, e.g., if )Tj +/TT12 1 Tf +3.6525 0 TD +0 Tw +(FLG )Tj +/TT8 1 Tf +2.5959 0 TD +(=)Tj +-39.3927 -1.2889 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( and there are no substitutions, the value is )Tj +/TT8 1 Tf +19.2153 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( to )Tj +/TT12 1 Tf +1.3721 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-25.9883 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9533 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( ends in an atom other than )]TJ +/TT8 1 Tf +12.6074 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +(, the rest of the elements on )Tj +/TT12 1 Tf +12.5815 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( are substituted for)]TJ +-31.543 -1.2889 TD +0.1289 Tw +[(that atom. For example, if )]TJ +/TT12 1 Tf +12.6327 0 TD +0 Tw +(OLD )Tj +/TT8 1 Tf +2.7093 0 TD +0.3089 Tw +(= \(A B . C\))Tj +/TT6 1 Tf +7.8366 0 TD +0.1289 Tw +[( and )]TJ +/TT12 1 Tf +2.4506 0 TD +0 Tw +(NEW)Tj +/TT8 1 Tf +1.8003 0 TD +0.3089 Tw +[( = \(U V X)]TJ +/TT10 1 Tf +6.6364 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.909 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.909 0 TD +(Z\))Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6289 0 TD +(U)Tj +/TT6 1 Tf +0.6001 0 TD +0.1289 Tw +[( is)]TJ +-38.9133 -1.2889 TD +0.0722 Tw +(substituted for )Tj +/TT8 1 Tf +6.8847 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5722 0 TD +(V)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +[( for )]TJ +/TT8 1 Tf +1.9184 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +(, and )Tj +/TT8 1 Tf +2.5873 0 TD +0.1744 Tw +(\(X Y Z\) )Tj +/TT6 1 Tf +5.3241 0 TD +0 Tw +(for )Tj +/TT8 1 Tf +1.5961 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +[(. Similarly, if )]TJ +/TT12 1 Tf +6.4359 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +[( itself is an atom \(other)]TJ +-29.5194 -1.2889 TD +0 Tw +(than )Tj +/TT8 1 Tf +2.2402 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\), the entire list )Tj +/TT12 1 Tf +6.8545 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +( is substituted for it. Examples:)Tj +/TT8 1 Tf +-8.6953 -1.6667 TD +(\(SUBPAIR \(A B . C\) \(W X Y Z\) \(C A B B Y\)\) => \(\(Y Z\) W X X)Tj +0 -1.2222 TD +(Y\))Tj +-9.3333 -2.0667 TD +(SUBST)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.64 0 TD +(DSUBST)Tj +/TT6 1 Tf +3.6006 0 TD +0.14 Tw +(, and )Tj +/TT8 1 Tf +2.7229 0 TD +0 Tw +(LSUBST)Tj +/TT6 1 Tf +3.6006 0 TD +0.14 Tw +[( all substitute copies of the appropriate expression, whereas )]TJ +/TT8 1 Tf +27.9133 0 TD +0 Tw +(SUBLIS)Tj +/TT6 1 Tf +3.6006 0 TD +(,)Tj +-45.0784 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(DSUBLIS)Tj +/TT6 1 Tf +4.2007 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(SUBPAIR)Tj +/TT6 1 Tf +4.2007 0 TD +( substitute the identical structure \(unless )Tj +/TT12 1 Tf +18.1885 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( = T)Tj +/TT6 1 Tf +2.4004 0 TD +(\). For example:)Tj +/TT17 1 Tf +-25.8429 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(SETQ FOO \(A B\)\))Tj +1.0132 -1 TD +(\(A B\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(SETQ BAR \(X Y Z\)\))Tj +1.0132 -1 TD +(\(X Y Z\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DSUBLIS \(LIST \(CONS X FOO\)\) BAR\))Tj +1.0132 -1 TD +(\(\(A B\) Y Z\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DSUBLIS \(LIST \(CONS Y FOO\)\) BAR T\))Tj +1.0132 -1 TD +(\(\(A B\) \(A B\) Z\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(EQ \(CAR BAR\) FOO\))Tj +1.0132 -1 TD +(T)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(EQ \(CADR BAR\) FOO\))Tj +1.0132 -1 TD +(NIL)Tj +/TT4 1 Tf +10 0 0 10 102 303.4 Tm +(Association Lists and Property Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 300.69 m +558.01 300.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 286.74 Tm +0.1567 Tw +(It is often useful to associate a set of property names \()Tj +/TT12 1 Tf +25.364 0 TD +0 Tw +(NAME1)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT12 1 Tf +0.6567 0 TD +(NAME2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1567 Tw +(, etc.\), with a set of property)Tj +-32.0216 -1.2889 TD +0.1778 Tw +(values \()Tj +/TT12 1 Tf +3.6226 0 TD +0 Tw +(VALUE1)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT12 1 Tf +0.6778 0 TD +(VALUE2)Tj +/TT6 1 Tf +3.6006 0 TD +0.1778 Tw +[(, etc.\). Two list structures commonly used to store such associations are)]TJ +-11.5016 -1.2889 TD +0.1022 Tw +[(called property lists and association lists. A list in association list format is a list where each)]TJ +0 -1.2222 TD +0 Tw +(element is a call whose )Tj +/TT8 1 Tf +10.3745 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( is a property name, and whose )Tj +/TT8 1 Tf +14.1157 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( is the value:)Tj +/TT8 1 Tf +-18.7575 -1.6667 TD +(\( \()Tj +/TT12 1 Tf +1.8003 0 TD +(NAME1)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VALUE1)Tj +/TT8 1 Tf +3.6006 0 TD +(\) \()Tj +/TT12 1 Tf +1.8003 0 TD +(NAME2)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VALUE2)Tj +/TT8 1 Tf +3.6006 0 TD +(\) ...\))Tj +/TT6 1 Tf +-29.7367 -1.8444 TD +0.0156 Tw +(A list in property list format is a list where the first, third, etc. elements are the property names, and)Tj +0 -1.2222 TD +0 Tw +(the second, forth, etc. elements are the associated values:)Tj +/TT8 1 Tf +9.3333 -1.6 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(NAME1)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VALUE1)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(NAME2)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VALUE2)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(...\))Tj +/TT6 1 Tf +-26.1361 -1.8444 TD +0.0544 Tw +(Another data structure that offers some of the advantages of association lists and property lists is the)Tj +0 -1.2222 TD +0 Tw +(hash array \(see the first page of Chapter 6\).)Tj +0 -2 TD +0.0833 Tw +(The functions below provide facilities for searching and changing lists in property list or association)Tj +0 -1.2222 TD +0 Tw +(list format. )Tj +/TT19 1 Tf +0 -2 TD +(Note:)Tj +/TT6 1 Tf +2.4722 0 TD +0.0411 Tw +[( Property lists are used in many Medley system datatypes. There are special functions that can)]TJ +-2.4722 -1.2222 TD +0.0456 Tw +(be used to set and retrieve values from the property lists of symbols \(see the Property Lists section of)Tj +T* +0 Tw +(Chapter 2\), from properties of windows \(see the Window Properties section of Chapter 28\), etc.)Tj +/TT8 1 Tf +10 0 0 10 150 79.66 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 79.66 Tm +(ASSOC)Tj +/F1 1 Tf +10 0 0 10 183 79.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 79.66 Tm +(KEY ALST)Tj +/TT8 1 Tf +10 0 0 10 229.077 79.66 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 235.078 79.66 Tm +[( )-28116.9([Function])]TJ +/TT12 1 Tf +-6.7864 -1.8833 TD +(ALST)Tj +/TT6 1 Tf +2.4004 0 TD +0.0567 Tw +[( is a list of lists. )]TJ +/TT8 1 Tf +7.5783 0 TD +0 Tw +(ASSOC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0567 Tw +[( returns the first sublist of )]TJ +/TT12 1 Tf +11.9914 0 TD +0 Tw +(ALST)Tj +/TT6 1 Tf +2.4004 0 TD +0.0567 Tw +[( whose )]TJ +/TT8 1 Tf +3.4781 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0567 Tw +[( is )]TJ +/TT8 1 Tf +1.3282 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0567 Tw +[( to )]TJ +/TT12 1 Tf +1.4854 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +0.0567 Tw +[(. If)]TJ +-38.4634 -1.2889 TD +0 Tw +(such a list is not found, )Tj +/TT8 1 Tf +10.4785 0 TD +(ASSOC)Tj +/TT6 1 Tf +3.0005 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. Example:)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT17 23 0 R +/TT19 53 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +55 0 obj +<< +/Length 8484 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-13)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT8 1 Tf +9 0 0 9 162 570.14 Tm +(\(ASSOC B \(\(A . 1\) \(B . 2\) \(C . 3\)\)\) => \(B . 2\))Tj +10 0 0 10 102 552.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 552.26 Tm +(FASSOC)Tj +/F1 1 Tf +10 0 0 10 140.4 552.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 552.26 Tm +(KEY ALST)Tj +/TT8 1 Tf +10 0 0 10 186.477 552.26 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 192.478 552.26 Tm +[( )-27516.9([Function])]TJ +-7.3864 -1.8833 TD +(Faster version of )Tj +/TT8 1 Tf +7.5908 0 TD +(ASSOC)Tj +/TT6 1 Tf +3.0005 0 TD +( that terminates on a null-check.)Tj +/TT8 1 Tf +10 0 0 10 102 515.43 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 515.43 Tm +(SASSOC)Tj +/F1 1 Tf +10 0 0 10 140.4 515.43 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 515.43 Tm +(KEY ALST)Tj +/TT8 1 Tf +10 0 0 10 186.477 515.43 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 192.478 515.43 Tm +[( )-27516.9([Function])]TJ +-7.3864 -1.8833 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(ASSOC,)Tj +/TT6 1 Tf +3.6006 0 TD +( but uses )Tj +/TT8 1 Tf +4.1621 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( instead of )Tj +/TT8 1 Tf +4.8418 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( when searching for )Tj +/TT12 1 Tf +9.0039 0 TD +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 478.6 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 478.6 Tm +(PUTASSOC)Tj +/F1 1 Tf +10 0 0 10 151.2 478.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 154.07 478.6 Tm +(KEY VAL ALST)Tj +/TT8 1 Tf +10 0 0 10 218.8805 478.6 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 224.8815 478.6 Tm +[( )-23916.5([Function])]TJ +-10.9868 -1.8833 TD +(Searches )Tj +/TT12 1 Tf +4.0887 0 TD +(ALST)Tj +/TT6 1 Tf +2.4004 0 TD +0.0111 Tw +[( for a sublist )]TJ +/TT8 1 Tf +5.7305 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0111 Tw +[( of which is )]TJ +/TT8 1 Tf +5.3711 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0111 Tw +[( to )]TJ +/TT12 1 Tf +1.3943 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +0.0111 Tw +[(. If one is found, the )]TJ +/TT8 1 Tf +9.3815 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0111 Tw +[( is replaced)]TJ +-34.9676 -1.2889 TD +0 Tw +(\(using )Tj +/TT8 1 Tf +3.0846 0 TD +(RPLACD)Tj +/TT6 1 Tf +3.6006 0 TD +0.0456 Tw +(\) with )Tj +/TT12 1 Tf +2.9573 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0456 Tw +[(. If no such sublist is found, )]TJ +/TT8 1 Tf +13.0168 0 TD +0 Tw +(\(CONS)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.709 0 TD +(KEY)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.709 0 TD +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0456 Tw +[( is added at the)]TJ +-33.0788 -1.2889 TD +0 Tw +(end of )Tj +/TT12 1 Tf +3.0508 0 TD +(ALST)Tj +/TT6 1 Tf +2.4004 0 TD +(. Returns )Tj +/TT12 1 Tf +4.4771 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +(. If )Tj +/TT12 1 Tf +1.6699 0 TD +(ALST)Tj +/TT6 1 Tf +2.4004 0 TD +( is not a list, generates an error, )Tj +/TT8 1 Tf +14.0132 0 TD +(Arg not list.)Tj +/TT6 1 Tf +-35.1453 -2.0667 TD +(The argument order for )Tj +/TT8 1 Tf +10.6978 0 TD +(ASSOC)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(PUTASSOC)Tj +/TT6 1 Tf +4.8008 0 TD +(, etc. is different from that of )Tj +/TT8 1 Tf +12.813 0 TD +(LISTGET)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(LISTPUT)Tj +/TT6 1 Tf +4.2007 0 TD +(, etc.)Tj +/TT8 1 Tf +10 0 0 10 102 399.97 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 399.97 Tm +(LISTGET)Tj +/F1 1 Tf +10 0 0 10 145.8 399.97 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 148.67 399.97 Tm +(LST PROP)Tj +/TT8 1 Tf +10 0 0 10 191.877 399.97 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 197.878 399.97 Tm +[( )-26916.9([Function])]TJ +-7.9864 -1.8833 TD +(Searches )Tj +/TT12 1 Tf +4.1143 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0367 Tw +[( two elements at a time, by )]TJ +/TT8 1 Tf +12.3201 0 TD +0 Tw +(CDDR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +(, looking for an element )Tj +/TT8 1 Tf +10.9265 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0367 Tw +[( to )]TJ +/TT12 1 Tf +1.4454 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +[(. If one)]TJ +-36.6076 -1.2889 TD +0.0311 Tw +(is found, returns the next element of )Tj +/TT12 1 Tf +16.5 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +(, otherwise )Tj +/TT8 1 Tf +5.1682 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +[(. Returns )]TJ +/TT8 1 Tf +4.5704 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +[( if )]TJ +/TT12 1 Tf +1.1862 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +[( is not a list.)]TJ +-34.626 -1.2889 TD +0 Tw +(Example:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(LISTGET \(A 1 B 2 C 3\) B\) => 2)Tj +0 -1 TD +(\(LISTGET \(A 1 B 2 C 3\) W\) => NIL)Tj +10 0 0 10 102 318.54 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 318.54 Tm +(LISTPUT)Tj +/F1 1 Tf +10 0 0 10 145.8 318.54 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 148.67 318.54 Tm +(LST PROP VAL)Tj +/TT8 1 Tf +10 0 0 10 213.4805 318.54 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 219.4815 318.54 Tm +[( )-24516.5([Function])]TJ +-10.3868 -1.8833 TD +(Searches )Tj +/TT12 1 Tf +4.2265 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1489 Tw +[( two elements at a time, by )]TJ +/TT8 1 Tf +13.1057 0 TD +0 Tw +(CDDR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1489 Tw +(, looking for an element )Tj +/TT8 1 Tf +11.4876 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.1489 Tw +[( to )]TJ +/TT12 1 Tf +1.6698 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1489 Tw +[(. If)]TJ +/TT12 1 Tf +-38.291 -1.2889 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0411 Tw +[( is found, replaces the next element of )]TJ +/TT12 1 Tf +17.2698 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( with )]TJ +/TT12 1 Tf +2.6154 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[(. Otherwise, )]TJ +/TT12 1 Tf +5.9695 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0411 Tw +[( and )]TJ +/TT12 1 Tf +2.2751 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( are)]TJ +-38.3315 -1.2889 TD +0.1044 Tw +(added to the end of )Tj +/TT12 1 Tf +9.3938 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1044 Tw +[(. If )]TJ +/TT12 1 Tf +1.9833 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1044 Tw +[( is a list with an odd number of elements, or ends in a)]TJ +-14.9776 -1.2889 TD +0.0211 Tw +(non-list other than )Tj +/TT8 1 Tf +8.5067 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT12 1 Tf +0.5211 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0211 Tw +[( and )]TJ +/TT12 1 Tf +2.2351 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[( are added at its beginning. Returns )]TJ +/TT12 1 Tf +16.4213 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[(. If )]TJ +/TT12 1 Tf +1.7333 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0211 Tw +[( is)]TJ +-39.019 -1.4311 TD +0 Tw +(not a list, generates an error,)Tj +/F2 1 Tf +10 0 0 10 238.935 253.91 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 241.715 253.91 Tm +(Arg not list)Tj +/F2 1 Tf +10 0 0 10 306.5256 253.91 Tm +(.)Tj +/TT8 1 Tf +-20.4526 -1.988 TD +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 234.03 Tm +(LISTGET1)Tj +/F1 1 Tf +10 0 0 10 151.2 234.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 154.07 234.03 Tm +(LST PROP)Tj +/TT8 1 Tf +10 0 0 10 197.277 234.03 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 234.03 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.1892 0 TD +(LISTGET)Tj +/TT6 1 Tf +4.2007 0 TD +0.0022 Tw +(, but searches )Tj +/TT12 1 Tf +6.2157 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0004 Tc +0.0018 Tw +( one )Tj +/TT8 1 Tf +2.1114 0 TD +0 Tc +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0021 Tw +( at a time, i.e., looks at each element. Returns the)Tj +-18.3175 -1.2889 TD +0 Tc +0 Tw +(next element after )Tj +/TT12 1 Tf +8.2056 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +(. Examples:)Tj +/TT8 1 Tf +-6.606 -1.6667 TD +(\(LISTGET1 \(A 1 B 2 C 3\) B\) => 2)Tj +0 -1 TD +(\(LISTGET1 \(A 1 B 2 C 3\) 1\) => B)Tj +T* +(\(LISTGET1 \(A 1 B 2 C 3\) W\) => NIL)Tj +10 0 0 10 102 154.6 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 154.6 Tm +(LISTPUT1)Tj +/F1 1 Tf +10 0 0 10 151.2 154.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 154.07 154.6 Tm +(LST PROP VAL)Tj +/TT8 1 Tf +10 0 0 10 218.8805 154.6 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 224.8815 154.6 Tm +[( )-23916.5([Function])]TJ +-10.9868 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(LISTPUT)Tj +/TT6 1 Tf +4.2007 0 TD +(, but searches )Tj +/TT12 1 Tf +6.209 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +( one )Tj +/TT8 1 Tf +2.1069 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( at a time. Returns the modified )Tj +/TT12 1 Tf +14.4639 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(. Example:)Tj +/TT17 1 Tf +-30.5684 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(A 1 B 2\)\))Tj +1.0132 -1.2222 TD +(\(A 1 B 2\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LISTPUT1 FOO B 3\))Tj +1.0132 -1 TD +(\(A 1 B 3\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LISTPUT1 FOO C 4\))Tj +1.0132 -1 TD +(\(A 1 B 3 C 4\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LISTPUT1 FOO 1 W\))Tj +1.0132 -1 TD +(\(A 1 W 3 C 4\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +58 0 obj +<< +/Length 8395 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-14)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 570.14 Tm +(\(A 1 W 3 C 4\))Tj +/TT6 1 Tf +-6 -1.8444 TD +(If )Tj +/TT12 1 Tf +0.9244 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0043 Tw +( is not a list, no error is generated. However, since a non-list cannot be changed into)Tj +-2.7247 -1.2889 TD +0 Tc +0.2867 Tw +(a list, )Tj +/TT12 1 Tf +3.1554 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.2867 Tw +[( is not modified. In this case, the value of )]TJ +/TT8 1 Tf +21.7095 0 TD +0 Tw +(LISTPUT1)Tj +/TT6 1 Tf +4.8008 0 TD +0.2867 Tw +[( should be saved.)]TJ +-31.4659 -1.2889 TD +0 Tw +(Example:)Tj +/TT17 1 Tf +4 -1.9333 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO NIL\))Tj +1.0132 -1.2222 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(LISTPUT1 FOO A 5\))Tj +1.0132 -1 TD +(\(A 5\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +(NIL)Tj +/TT4 1 Tf +10 0 0 10 102 441 Tm +(Sorting Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 438.29 m +558.01 438.29 l +S +BT +/TT8 1 Tf +10 0 0 10 150 423.06 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 423.06 Tm +(SORT)Tj +/F1 1 Tf +10 0 0 10 177.6 423.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 180.47 423.06 Tm +(DATA COMPAREFN)Tj +/TT8 1 Tf +10 0 0 10 256.0823 423.06 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 262.0833 423.06 Tm +[( )-25116.3([Function])]TJ +/TT12 1 Tf +-9.787 -1.8833 TD +(DATA)Tj +/TT6 1 Tf +2.4004 0 TD +0.2878 Tw +[( is a list of items to be sorted using )]TJ +/TT12 1 Tf +18.3475 0 TD +0 Tw +(COMPAREFN)Tj +/TT6 1 Tf +5.4009 0 TD +0.2878 Tw +(, a predicate function of two)Tj +-26.1488 -1.2889 TD +0.2433 Tw +(arguments which can compare any two items on )Tj +/TT12 1 Tf +23.6762 0 TD +0 Tw +(DATA)Tj +/TT6 1 Tf +2.4004 0 TD +0.2433 Tw +[( and return )]TJ +/TT8 1 Tf +5.9531 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2433 Tw +[( if the first one)]TJ +-32.6298 -1.2889 TD +0.2733 Tw +[(belongs before the second. If )]TJ +/TT12 1 Tf +14.7489 0 TD +0 Tw +(COMPAREFN)Tj +/TT6 1 Tf +5.4009 0 TD +0.2733 Tw +[( is )]TJ +/TT8 1 Tf +1.7615 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7733 0 TD +(ALPHORDER)Tj +/TT6 1 Tf +5.4009 0 TD +0.2733 Tw +[( is used; thus )]TJ +/TT8 1 Tf +7.1099 0 TD +0 Tw +(\(SORT)Tj +/TT12 1 Tf +-36.9957 -1.2889 TD +(DATA)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( will alphabetize a list. If )]TJ +/TT12 1 Tf +11.5449 0 TD +0 Tw +(COMPAREFN)Tj +/TT6 1 Tf +5.4009 0 TD +0.0333 Tw +[( is )]TJ +/TT8 1 Tf +1.2815 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5333 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +(s of items that are lists are given to)Tj +/TT8 1 Tf +-24.1615 -1.2889 TD +0 Tw +(ALPHORDER)Tj +/TT6 1 Tf +5.4009 0 TD +0.1 Tw +(, otherwise the items themselves; thus )Tj +/TT8 1 Tf +17.6127 0 TD +0.2389 Tw +(\(SORT A-LIST T\))Tj +/TT6 1 Tf +9.4792 0 TD +0.1 Tw +[( will alphabetize)]TJ +-32.4928 -1.2889 TD +0 Tw +(an assoc list by the )Tj +/TT8 1 Tf +8.498 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( of each item. )Tj +/TT8 1 Tf +6.3628 0 TD +(\(SORT X ILESSP\))Tj +/TT6 1 Tf +9.6016 0 TD +( will sort a list of integers.)Tj +-26.2627 -2.0667 TD +0.0133 Tw +(The value of )Tj +/TT8 1 Tf +5.7807 0 TD +0 Tw +(SORT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( is the sorted list. The sort is destructive and uses no extra storage. The)]TJ +-8.1811 -1.2889 TD +0.0778 Tw +(value returned is )Tj +/TT8 1 Tf +8.0063 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0778 Tw +[( to )]TJ +/TT12 1 Tf +1.5276 0 TD +0 Tw +(DATA)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +[( but elements have been switched around. There is no safe)]TJ +-13.1345 -1.2889 TD +0.0356 Tw +(way to interrupt )Tj +/TT8 1 Tf +7.6174 0 TD +0 Tw +(SORT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +(. If you abort a call to )Tj +/TT8 1 Tf +9.8421 0 TD +0 Tw +(SORT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( by any means, you may loose elements)]TJ +-22.2603 -1.2889 TD +0.2189 Tw +[(from the list beeing sorted. The algorithm used by )]TJ +/TT8 1 Tf +24.8061 0 TD +0 Tw +(SORT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2189 Tw +[( is such that the maximum)]TJ +-27.2065 -1.2889 TD +0 Tw +(number of compares is )Tj +/TT16 1 Tf +10.3604 0 TD +(N)Tj +/TT6 1 Tf +0.7778 0 TD +(*log)Tj +1.7851 -0.3333 TD +(2)Tj +/TT16 1 Tf +0.5 0.3333 TD +(N)Tj +/TT6 1 Tf +0.7778 0 TD +(, where )Tj +/TT16 1 Tf +3.519 0 TD +(N)Tj +/TT6 1 Tf +0.7778 0 TD +( is \()Tj +/TT8 1 Tf +1.5479 0 TD +(LENGTH)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(DATA)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-24.5804 -2.3333 TD +0.0289 Tw +[(Note: If )]TJ +/TT8 1 Tf +3.9387 0 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(COMPAREFN)Tj +/TT10 1 Tf +5.4009 0 TD +( )Tj +/TT8 1 Tf +0.669 0 TD +0.0689 Tw +(A B\) = )Tj +/TT12 1 Tf +4.4074 0 TD +0 Tw +(\(COMPAREFN)Tj +/TT10 1 Tf +6.001 0 TD +( )Tj +/TT8 1 Tf +0.669 0 TD +(B)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.669 0 TD +(A\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0289 Tw +(, then the ordering of )Tj +/TT8 1 Tf +9.7348 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +[( and )]TJ +/TT8 1 Tf +2.2507 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +-34.0741 -1.2889 TD +(may or may not be preserved.)Tj +-5.3333 -2 TD +0.0411 Tw +(For example, if )Tj +/TT8 1 Tf +6.9935 0 TD +0.0978 Tw +(\(FOO . FIE\))Tj +/TT6 1 Tf +6.7966 0 TD +0.0411 Tw +[( appears before )]TJ +/TT8 1 Tf +7.1585 0 TD +0.0978 Tw +(\(FOO . FUM\))Tj +/TT6 1 Tf +6.7966 0 TD +0.0411 Tw +[( in )]TJ +/TT8 1 Tf +1.4553 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5411 0 TD +0.0978 Tw +(\(SORT X T\))Tj +/TT6 1 Tf +6.1965 0 TD +0.0411 Tw +[( may or)]TJ +-36.5382 -1.2889 TD +0 Tw +(may not reverse the order of these two elements. )Tj +/TT8 1 Tf +10 0 0 10 150 201.63 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 201.63 Tm +(MERGE)Tj +/F1 1 Tf +10 0 0 10 183 201.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.87 201.63 Tm +(A B COMPAREFN)Tj +/TT8 1 Tf +10 0 0 10 256.0814 201.63 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 262.0824 201.63 Tm +[( )-25116.4([Function])]TJ +/TT12 1 Tf +-9.7869 -1.8833 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0156 Tw +[( and )]TJ +/TT12 1 Tf +2.224 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0156 Tw +[( are lists which have previously been sorted using)]TJ +/TT19 1 Tf +22.1943 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2656 0 TD +(SORT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0156 Tw +[( and )]TJ +/TT12 1 Tf +2.224 0 TD +0 Tw +(COMPAREFN)Tj +/TT6 1 Tf +5.4009 0 TD +0.0156 Tw +(. Value is)Tj +-35.9093 -1.2889 TD +0.2222 Tw +[(a destructive merging of the two lists. It does not matter which list is longer. After)]TJ +0 -1.2222 TD +0 Tw +(merging both )Tj +/TT12 1 Tf +6.2495 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT12 1 Tf +2.1929 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +( are equal to the merged list. \(In fact, )Tj +/TT8 1 Tf +16.4062 0 TD +(\(CDR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(\(CDR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(\).)Tj +/TT19 1 Tf +0.583 0 TD +( )Tj +/TT8 1 Tf +10 0 0 10 150 142.2 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 142.2 Tm +(ALPHORDER)Tj +/F1 1 Tf +10 0 0 10 204.6 142.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 207.47 142.2 Tm +(A B CASEARRAY)Tj +/TT8 1 Tf +10 0 0 10 277.6814 142.2 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 283.6824 142.2 Tm +[( )-22716.4([Function])]TJ +-12.1869 -1.8833 TD +0.0578 Tw +[(A predicate function of two arguments, for alphabetizing. Returns a non-)]TJ +/TT8 1 Tf +33.1761 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0578 Tw +[( value if its)]TJ +-34.9764 -1.2889 TD +0.0811 Tw +(arguments are in lexicographic order, i.e., if )Tj +/TT12 1 Tf +20.0688 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0811 Tw +[( does not belong before )]TJ +/TT12 1 Tf +10.9617 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0811 Tw +[(. Numbers come)]TJ +-32.2307 -1.2889 TD +0.0389 Tw +(before literal atoms, and are ordered by magnitude \(using )Tj +/TT8 1 Tf +26.1991 0 TD +0 Tw +(GREATERP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0389 Tw +[(\). Literal atoms and)]TJ +-30.9999 -1.2889 TD +0.3467 Tw +[(strings are ordered by comparing the character codes in their print names. Thus)]TJ +/TT8 1 Tf +0 -1.2222 TD +0.1511 Tw +(\(ALPHORDER 23 123\))Tj +/TT6 1 Tf +11.104 0 TD +0.0622 Tw +[( is )]TJ +/TT8 1 Tf +1.3393 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +(, whereas )Tj +/TT8 1 Tf +4.5673 0 TD +0.1511 Tw +(\(ALPHORDER A23 A123\))Tj +/TT6 1 Tf +13.5044 0 TD +0.0622 Tw +[( is )]TJ +/TT8 1 Tf +1.3393 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0622 Tw +(, because the)Tj +-34.2546 -1.2889 TD +0 Tw +(character code for the digit 2 is greater than the code for 1.)Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +/TT19 53 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +61 0 obj +<< +/Length 8122 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-15)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0544 Tw +(Atoms and strings are ordered before all other data types. If neither )Tj +/TT12 1 Tf +30.7632 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0544 Tw +[( nor )]TJ +/TT12 1 Tf +2.1318 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0544 Tw +[( are atoms or)]TJ +-34.0952 -1.2889 TD +0 Tw +(strings, the value of )Tj +/TT8 1 Tf +8.9521 0 TD +(ALPHORDER)Tj +/TT6 1 Tf +5.4009 0 TD +( is always)Tj +/TT8 1 Tf +4.3198 0 TD +( T)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-19.8731 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9244 0 TD +(CASEARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0006 Tc +0.0038 Tw +( is non-)Tj +/TT8 1 Tf +3.2667 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0044 Tw +(, it is a casearray \(see the Random Access File Operations section)Tj +-11.3922 -1.2889 TD +0.3333 Tw +(of Chapter 25\) that the characters of )Tj +/TT12 1 Tf +18.3768 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.3333 Tw +[( and )]TJ +/TT12 1 Tf +2.8595 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.3333 Tw +[( are translated through before being)]TJ +-22.4365 -1.2889 TD +0 Tw +(compared. Numbers are not passed through )Tj +/TT12 1 Tf +20.0835 0 TD +(CASEARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT19 1 Tf +-25.4844 -2.0667 TD +(Note:)Tj +/TT6 1 Tf +2.4722 0 TD +0.0589 Tw +[( If either )]TJ +/TT12 1 Tf +4.4577 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0589 Tw +[( or )]TJ +/TT12 1 Tf +1.5587 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0589 Tw +[( is a number, the value returned in the true case is )]TJ +/TT8 1 Tf +23.9869 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0589 Tw +[(. Otherwise,)]TJ +/TT8 1 Tf +-34.2758 -1.2889 TD +0 Tw +(ALPHORDER)Tj +/TT6 1 Tf +5.4009 0 TD +0.1511 Tw +[( returns either )]TJ +/TT8 1 Tf +6.9597 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1511 Tw +[( or )]TJ +/TT8 1 Tf +1.7431 0 TD +0 Tw +(LESSP)Tj +/TT6 1 Tf +3.0005 0 TD +0.1511 Tw +[( to discriminate the cases of )]TJ +/TT12 1 Tf +13.332 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.1511 Tw +[( and )]TJ +/TT12 1 Tf +2.4951 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.1511 Tw +[( being)]TJ +-37.1319 -1.2889 TD +0 Tw +(equal or unequal strings/atoms.)Tj +/TT19 1 Tf +0 -2 TD +(Note:)Tj +/TT6 1 Tf +2.4722 0 TD +0.1044 Tc +( )Tj +/TT8 1 Tf +0.7089 0 TD +0 Tc +(ALPHORDER)Tj +/TT6 1 Tf +5.4009 0 TD +0.1044 Tw +[( does no )]TJ +/TT8 1 Tf +4.2508 0 TD +0 Tw +(UNPACK)Tj +/TT6 1 Tf +3.6006 0 TD +(s, )Tj +/TT8 1 Tf +1.0283 0 TD +(CHCON)Tj +/TT6 1 Tf +3.0005 0 TD +(s, )Tj +/TT8 1 Tf +1.0283 0 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1044 Tw +(es or )Tj +/TT8 1 Tf +2.5526 0 TD +0 Tw +(NTHCHAR)Tj +/TT6 1 Tf +4.2007 0 TD +0.1044 Tw +[(s. It is several times)]TJ +-30.6441 -1.2889 TD +0 Tw +(faster for alphabetizing than anything that can be written using these other functions.)Tj +/TT8 1 Tf +10 0 0 10 102 425.46 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 425.46 Tm +(UALPHORDER)Tj +/F1 1 Tf +10 0 0 10 162 425.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 164.87 425.46 Tm +(A B)Tj +/TT8 1 Tf +10 0 0 10 181.0726 425.46 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 187.0736 425.46 Tm +[( )-28117.4([Function])]TJ +-6.786 -1.8833 TD +0.1889 Tw +(Defined as )Tj +/TT8 1 Tf +5.3504 0 TD +0 Tw +(\(ALPHORDER)Tj +/TT10 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +1.0534 0 TD +(A)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +1.0534 0 TD +(B)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +1.0534 0 TD +(UPPERCASEARRAY\))Tj +/TT6 1 Tf +9.0015 0 TD +0.1889 Tw +(. )Tj +/TT8 1 Tf +1.1278 0 TD +0 Tw +(UPPERCASEARRAY)Tj +/TT6 1 Tf +8.4014 0 TD +0.1889 Tw +[( maps every)]TJ +-34.2425 -1.2889 TD +0.0144 Tw +[(lowercase character into the corresponding uppercase character. For more information on)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(UPPERCASEARRAY)Tj +/TT6 1 Tf +8.4014 0 TD +( see Chapter 25.)Tj +/TT8 1 Tf +10 0 0 10 102 366.03 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 366.03 Tm +(MERGEINSERT)Tj +/F1 1 Tf +10 0 0 10 167.4 366.03 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 170.27 366.03 Tm +(NEW LST ONEFLG)Tj +/TT8 1 Tf +10 0 0 10 245.8823 366.03 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 251.8833 366.03 Tm +[( )-20916.3([Function])]TJ +/TT12 1 Tf +-13.987 -1.8833 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0006 Tc +0.0016 Tw +( is )Tj +/TT8 1 Tf +1.2193 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0021 Tw +( or a list of partially sorted items.)Tj +/TT19 1 Tf +14.6025 0 TD +0 Tc +0 Tw +( )Tj +/TT8 1 Tf +0.2522 0 TD +(MERGEINSERT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0001 Tc +0.0021 Tw +( tries to find the best place to)Tj +-26.2756 -1.2889 TD +0 Tc +0 Tw +(\(destructively\) insert )Tj +/TT12 1 Tf +9.4531 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +(, e.g.,)Tj +/TT8 1 Tf +-7.2534 -1.6667 TD +(\(MERGEINSERT FIE2 \(FOO FOO1 FIE FUM\)\) => \(FOO FOO1 FIE)Tj +2 -1 TD +(FIE2 FUM\))Tj +/TT6 1 Tf +-6 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(. )Tj +/TT8 1 Tf +0.75 0 TD +(MERGEINSERT)Tj +/TT6 1 Tf +6.6011 0 TD +( is undoable.)Tj +-12.8784 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.011 0 TD +(ONEFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.2178 Tw +[( = T)]TJ +/TT6 1 Tf +2.8359 0 TD +0.0911 Tw +[( and )]TJ +/TT12 1 Tf +2.3751 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.0911 Tw +[( is already a member of )]TJ +/TT12 1 Tf +11.1443 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5911 0 TD +(MERGEINSERT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0911 Tw +[( does nothing and)]TJ +-31.7598 -1.2889 TD +0 Tw +(returns )Tj +/TT12 1 Tf +3.4541 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-10.5877 -2.0667 TD +(MERGEINSERT)Tj +/TT6 1 Tf +6.6011 0 TD +0.2656 Tw +[( is used by )]TJ +/TT8 1 Tf +6.0031 0 TD +0 Tw +(ADDTOFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2656 Tw +[( \(see the Functions for Manipulating File Command Lists)]TJ +-18.0051 -1.2889 TD +0.0833 Tw +[(section of Chapter 17\) to insert the name of a new function into a list of functions. The algorithm is)]TJ +0 -1.2222 TD +0.0711 Tw +(essentially to look for the item with the longest common leading sequence of characters with respect)Tj +T* +0 Tw +(to )Tj +/TT12 1 Tf +1.1221 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +(, and then merge )Tj +/TT12 1 Tf +7.7041 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +( in starting at that point.)Tj +/TT4 1 Tf +10 0 0 10 54 191.54 Tm +(Other List Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 188.83 m +510.01 188.83 l +S +BT +/TT8 1 Tf +10 0 0 10 102 173.6 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 173.6 Tm +(REMOVE)Tj +/F1 1 Tf +10 0 0 10 140.4 173.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 173.6 Tm +(X L)Tj +/TT8 1 Tf +10 0 0 10 159.4726 173.6 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 165.4736 173.6 Tm +[( )-30517.4([Function])]TJ +-4.386 -1.8833 TD +0.0322 Tw +(Removes all top-level occurrences of )Tj +/TT12 1 Tf +16.561 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0322 Tw +[( from list )]TJ +/TT12 1 Tf +4.3354 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0322 Tw +(, returning a copy of )Tj +/TT12 1 Tf +9.3965 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0322 Tw +[( with all elements)]TJ +/TT8 1 Tf +-32.0932 -1.2889 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( to )Tj +/TT12 1 Tf +1.3721 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( removed. Example:)Tj +/TT8 1 Tf +-0.9727 -1.6667 TD +(\(REMOVE A \(A B C \(A\) A\)\) => \(B C \(A\)\))Tj +0 -1 TD +(\(REMOVE \(A\) \(A B C \(A\) A\)\) => \(A B C A\))Tj +10 0 0 10 102 103.17 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 103.17 Tm +(DREMOVE)Tj +/F1 1 Tf +10 0 0 10 145.8 103.17 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 148.67 103.17 Tm +(X L)Tj +/TT8 1 Tf +10 0 0 10 164.8726 103.17 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 170.8736 103.17 Tm +[( )-29917.4([Function])]TJ +-4.986 -1.8833 TD +(Like )Tj +/TT8 1 Tf +2.4659 0 TD +(REMOVE)Tj +/TT6 1 Tf +3.6006 0 TD +0.2789 Tw +(, but uses )Tj +/TT8 1 Tf +5.2488 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.2789 Tw +[( instead of )]TJ +/TT8 1 Tf +5.6785 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.2789 Tw +(, and actually modifies the list )Tj +/TT12 1 Tf +15.2041 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.2789 Tw +[( when)]TJ +-36.9986 -1.2889 TD +0 Tw +(removing )Tj +/TT12 1 Tf +4.5469 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, and thus does not use any additional storage. More efficient than )Tj +/TT8 1 Tf +29.7246 0 TD +(REMOVE)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-38.4722 -2.0667 TD +(DREMOVE)Tj +/TT6 1 Tf +4.2007 0 TD +( cannot )Tj +/TT16 1 Tf +3.48 0 TD +(change)Tj +/TT6 1 Tf +2.7964 0 TD +( a list to )Tj +/TT8 1 Tf +3.7041 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(:)Tj +/TT17 1 Tf +-11.9814 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO \(A\)\))Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +/TT19 53 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +64 0 obj +<< +/Length 6356 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-16)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 570.14 Tm +(\(A\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DREMOVE A FOO\))Tj +1.0132 -1 TD +(NIL)Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +(\(A\))Tj +/TT6 1 Tf +-6 -1.8444 TD +(The )Tj +/TT8 1 Tf +1.9549 0 TD +(DREMOVE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( above returns )]TJ +/TT8 1 Tf +6.6905 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +(, and does not perform any )Tj +/TT8 1 Tf +12.4132 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +(es, but the value of )Tj +/TT8 1 Tf +8.7449 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +-38.2049 -1.2889 TD +(is )Tj +/TT16 1 Tf +0.9648 0 TD +(still)Tj +/TT6 1 Tf +1.5557 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\(A\))Tj +/TT6 1 Tf +1.8003 0 TD +(, because there is no way to change a list to a non-list. See )Tj +/TT8 1 Tf +25.8032 0 TD +(NCONC)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 482.06 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 482.06 Tm +(REVERSE)Tj +/F1 1 Tf +10 0 0 10 193.8 482.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 196.67 482.06 Tm +(L)Tj +/TT8 1 Tf +10 0 0 10 202.0709 482.06 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 208.0718 482.06 Tm +[( )-31117.6([Function])]TJ +-3.7858 -1.8833 TD +(Reverses \(and copies\) the top level of a list, e.g.,)Tj +/TT8 1 Tf +4 -1.6 TD +(\(REVERSE \(A B \(C D\)\)\) => \(\(C D\) B A\))Tj +/TT6 1 Tf +-4 -1.8444 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a list, )Tj +/TT8 1 Tf +5.501 0 TD +(REVERSE)Tj +/TT6 1 Tf +4.2007 0 TD +( just returns )Tj +/TT12 1 Tf +5.541 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 414.23 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 414.23 Tm +(DREVERSE)Tj +/F1 1 Tf +10 0 0 10 199.2 414.23 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 202.07 414.23 Tm +(L)Tj +/TT8 1 Tf +10 0 0 10 207.4709 414.23 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 213.4718 414.23 Tm +[( )-30517.6([Function])]TJ +-4.3858 -1.8833 TD +0.0367 Tw +(Value is the same as that of )Tj +/TT8 1 Tf +12.5267 0 TD +0 Tw +(REVERSE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0367 Tw +(, but )Tj +/TT8 1 Tf +2.3058 0 TD +0 Tw +(DREVERSE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0367 Tw +[( destroys the original list )]TJ +/TT12 1 Tf +11.3655 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[( and thus)]TJ +-35.7995 -1.2889 TD +0 Tw +(does not use any additional storage. More efficient than )Tj +/TT8 1 Tf +25.0967 0 TD +(REVERSE)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 367.03 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 156.001 367.03 Tm +-0.0001 Tc +(COMPARELISTS )Tj +/TT12 1 Tf +7.8 0 TD +0 Tc +(X Y)Tj +/TT8 1 Tf +10 0 0 10 242.4035 367.03 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 248.4045 367.03 Tm +[( )-26636.2([Function])]TJ +-8.2672 -1.8833 TD +0.15 Tw +(Compares the list structures )Tj +/TT12 1 Tf +13.2748 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.15 Tw +[( and )]TJ +/TT12 1 Tf +2.4929 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.15 Tw +[( and prints a description of any differences to the)]TJ +-16.9679 -1.2889 TD +0.1222 Tw +[(terminal. If )]TJ +/TT12 1 Tf +5.7837 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1222 Tw +[( and )]TJ +/TT12 1 Tf +2.4373 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1222 Tw +[( are )]TJ +/TT8 1 Tf +2.1185 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1222 Tw +[( lists, )]TJ +/TT8 1 Tf +2.7503 0 TD +0 Tw +(COMPARELISTS)Tj +/TT6 1 Tf +7.2012 0 TD +0.1222 Tw +[( simply prints out )]TJ +/TT8 1 Tf +8.629 0 TD +0 Tw +(SAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1222 Tw +[(. Returns)]TJ +/TT8 1 Tf +-35.521 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-1.8003 -2.0667 TD +(COMPARELISTS)Tj +/TT6 1 Tf +7.2012 0 TD +0.4144 Tw +[( prints a terse description of the differences between the two list)]TJ +-7.2012 -1.2889 TD +0.05 Tw +[(structures, highlighting the items that have changed. This printout is not a complete and)]TJ +0 -1.2222 TD +0.0578 Tw +[(perfect comparison. If )]TJ +/TT12 1 Tf +10.4196 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0578 Tw +[( and )]TJ +/TT12 1 Tf +2.3084 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0578 Tw +[( are radically different list structures, the printout will not)]TJ +-13.9282 -1.2889 TD +0.2589 Tw +(be very useful. )Tj +/TT8 1 Tf +8.0458 0 TD +0 Tw +(COMPARELISTS)Tj +/TT6 1 Tf +7.2012 0 TD +0.2589 Tw +[( is meant to be used as a tool to help users isolate)]TJ +-15.247 -1.2889 TD +0 Tw +(differences between similar structures.)Tj +0 -2 TD +0.1444 Tw +(When a single element has been changed for another, )Tj +/TT8 1 Tf +25.1223 0 TD +0 Tw +(COMPARELISTS)Tj +/TT6 1 Tf +7.2012 0 TD +0.1444 Tw +[( prints out items)]TJ +-32.3234 -1.2889 TD +0 Tw +(such as )Tj +/TT8 1 Tf +3.4766 0 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(A)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(->)Tj +/TT10 1 Tf +1.2002 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(, for example:)Tj +/TT17 1 Tf +-4.2773 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(COMPARELISTS \(A B C D\) \(X B E D\)\))Tj +1.0132 -1 TD +(\(A -> X\) \(C -> E\))Tj +T* +(NIL)Tj +/TT6 1 Tf +-6 -1.8444 TD +0.0467 Tw +(When there are more complex differences between the two lists, )Tj +/TT8 1 Tf +28.9886 0 TD +0 Tw +(COMPARELISTS)Tj +/TT6 1 Tf +7.2012 0 TD +0.0467 Tw +[( prints )]TJ +/TT12 1 Tf +3.2125 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +-39.4023 -1.2889 TD +(and )Tj +/TT12 1 Tf +2.1106 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1678 Tw +(, highlighting differences and abbreviating similar elements as much as possible.)Tj +/TT8 1 Tf +-2.7107 -1.2889 TD +0 Tw +(&)Tj +/TT6 1 Tf +1.2002 0 TD +0.01 Tw +( is used to signal a single element that is present in the same place in the two lists; )Tj +/TT8 1 Tf +36.9981 0 TD +0 Tw +(--)Tj +/TT6 1 Tf +-38.1983 -1.2889 TD +0.0767 Tw +( signals an arbitrary number of elements in one list but not in the other; )Tj +/TT8 1 Tf +33.3653 0 TD +0 Tw +(-2-)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +1.0767 0 TD +(-3-)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +-39.2428 -1.2889 TD +(etc. signal a sequence of two, three, etc. elements that are the same in both lists. Examples:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(COMPARELISTS \(A B C D\) \(A D\)\))Tj +2 -1 TD +(\(A B C --\))Tj +T* +(\(A D\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(COMPARELISTS \(A B C D E F G H\) \(A B C D X\)\))Tj +1.0132 -1 TD +(\(A -3- E F --\))Tj +T* +(\(A -3- X\))Tj +/TT17 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(COMPARELISTS \(A B C \(D E F \(G\) H\) I\) \(A B \(G\) C \(D E F)Tj +1.0132 -1 TD +(H\) I\)\))Tj +T* +(\(A & & \(D -2- \(G\) &\) &\))Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +/TT16 22 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +67 0 obj +<< +/Length 904 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-17)Tj +/TT14 1 Tf +10 0 0 10 476.21 612 Tm +(LISTS)Tj +/TT8 1 Tf +9 0 0 9 180 570.14 Tm +(\(A & \(G\) & \(D -2- &\) &\))Tj +10 0 0 10 102 552.26 Tm +(\()Tj +/TT10 1 Tf +9 0 0 9 108.001 552.26 Tm +(NEGATE)Tj +/F1 1 Tf +10 0 0 10 140.4 552.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 143.27 552.26 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 148.6709 552.26 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 154.6718 552.26 Tm +[( )-31717.6([Function])]TJ +-3.1858 -1.8833 TD +(For a form )Tj +/TT12 1 Tf +4.9038 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, returns a form which computes the negation of )Tj +/TT12 1 Tf +21.5278 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( . For example:)Tj +/TT8 1 Tf +-23.6318 -2 TD +(\(NEGATE \(MEMBER X Y\)\) => \(NOT \(MEMBER X Y\)\))Tj +0 -1 TD +(\(NEGATE \(EQ X Y\)\) => \(NEQ X Y\))Tj +T* +(\(NEGATE \(AND X \(NLISTP X\)\)\) => \(OR \(NULL X\) \(LISTP X\)\))Tj +T* +(\(NEGATE NIL\) => T)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +70 0 obj +<< +/Length 202 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(3-18)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT14 18 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +74 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +75 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +76 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +77 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +78 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +79 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBEBHD+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 81 0 R +>> +endobj +81 0 obj +<< +/Filter /FlateDecode +/Length 20104 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8"T0bIiԃ4NˡfwfGf?%Z%%Zh +FnRKD>iRi nxj3>yo-rBC}ϙ X;ohQ`r WI`]Y|/714E:cE翳|U^VlZUhu r*;6<݁DžBǭXaX8b&׹˪$aUNkZ, O Oȓ%Jxm(ϏPSy39& n**|A/G#+x)UF#k'[#L#9@IdyJ7˝=|a#dn%y8XM si +E> MЊxs!hn8 !fت8n0u|$lnyfA w6e6luD^#'8p<%j0qR=\ql[ Yn:IpNXaemyq`&I r -i|a8iy Nԟ=!}?Nc1b( wBM +=(|'zd5|)PYЀ>*̵dMK5|+a0% 09#,sGJ+\ U| +145}2 (=3q6H\e2ŵy1WMp?O:&Wdp?ta' 0G>E4l= *aH"G ;q81WVMV aM&ō D-dE,l9nPԃc +WE1 zizNHg>ׂ3dOpgeq`IH 0@*>1d}2JO$g݋q2$}tLGWz +ȌF~ɾ`ꙛ&2Kd;19Ww.cO@<'F/r6]-;HZ~$sT]-Dcf~`bkl|'lKl\j2۸ƕ66qOu6u6Ƨm`ml79$OqCb1 50O%PMbHWLT!5U)!t5sg@K_pU%p7L7_䍸/I*13ܘ.j4denx}UZUFAZSk)% $4FFbRkIhת~+߯tTm8*ZP ~'FBP]EA]h4(q#iIvTTtG4SH^H|Rژ =Ǒf&H#>op`"`b+3#~˭*X v4SVIv9=ڠ_cr,XwgX"~›)[6db i,[Xr +%j5;^+*>BFfl/Ɏ^7qg̣f})M~ЗsFi?,"OEh1ыnKED%wd/g4lo^-]f>&;0oݶ:N_fwZ}Uo/CkW_\78rzɍ9 |',-u9ǩcԱe6OS+ZqRS˗b]﫞ZO\9&RRw]j˽b8Z{5RKg +uR/RF*gZ[Jvwõqk3KtH6yASnc>)!$ uLO睝[l) ޑ.y{>T.doOof\$o};yR3;/frf&ww|v>hnjuE;WwĩKMIαyyۇ6w}ҡ].S`Ps {[Np d3+][dHC}6qqy?l_%>;s+ +Ve8adTu" Z6 AK9jhI%@&uU5T:9%LDTQnk26I !qgxgNw[ d5xLV)ZR]#=rEvgX?z_Xp[ +q:ȘEѽҬF}Ij0:0 2VV z@"#۵>[F*jr \dv?G_(Q~:ʄNo('W2_iB:4l0r1㰺X :ccxvQyt.tV%d,Q=KUQ#^R([^Gb8<_Й*K@@cG xm}f72*IF_3;6='Qp) +j׉]|<<*<^䧇v5< 棾͏IB)xSS[/ɄaQi%`:3>d̍u^\_ţOT㺞K[ѶhϮ'Ofe}8*xpٳ0[g˯~{eUm=0P#qiΩg-lclMD茢65r$s{Xn{yMvB;I@9)ѡAP@Ry.颥,!atȨn2 +ir; \20z4*7"HaH7E$q0lKU\J6d' DlSpq\۟S np'4 hpI!`;0 WLx “3]@^l&h6 ]x/p +y W'  hk+-T԰~Naʔd]=?Nki/_Abct-YKj:f|hiO8/ QR]WWB̳_DG~Hm=6r&;>✓;\~UfBȶli1i +c`nDS\B$CIΠLѭ +e1α6b+L`#nn/m=K}wﳺ{w 2Fۖ7v[WuO,1K c2 1ͱE.lY喉UJ_h֙a9˼bjI%$)5b I,/=dtS'j`"a=6L,\0,YN5, G-Vvk ,Gmi=KzqG$G\̢nxA5P" YznmS 0UR.!/ qƜә KKmg'tX00,( {JMqCUӻ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*i⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^->?t1;iɑPE$ n-ȼH !6#SّٜGw1iU?8*M:k CS]\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` -s]1Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5.0XV<,]*hКc6Oܥ_r&De1#{imcEGAɺdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\W*~[S1?7ꧾuܩE^/5NA# hО%-e Oo]_0hc 2<ytLV,Z1ְZR+Ʈ17 f<6cY1fjh/H2VQOhX,OtV"A_4Y.WYqK}Zf(بHeÏBvFXt2iujd2DuDF@M+i3ubPhL&3f 1iF(빗bԎg{9=cOؿ%vCjjSj:[-Q*5F՝jzTPW?Uϫ/zC#i[KԒ4&ht)mViP/+w$Pco0"J5Vb#N28A +6IU +"*U6lÉ -9Q5㜊Bmc:sA4EG@6pa*mq)ڋ{LQ0KX0m$z:Fjn +vlǚy#Rql<O)#oŃoN}HΥ l ؐݰ~QOC^%Ďgٻvlk;su\y_gn;R# $_+WQ߹.}ڌҖN'cjtcW{,fMfҪeRu#x--1fsa^Adib^H|QY@sm (h{oao,r1:hkYSu$k&bRD =*'bt:^l;^躧;M=meTRڦ蔖hD.aՔA.'Q^yް|k]4G~=t$9\VĥpҝxQ̓w6˹xqIT#mNF,.ˋS28"]z뵁&*fK[qlD>(, +JbbB&^^H0$Dg!] EvR #fO'Qn.y2exƎ,++L^if]|W7Yɜ 9g Bž"$oq/`ce[b=9pU8ț^ČM}*DQ.fß yd|@cGvAbӨ 7H {V22 <_4v4J_MI$ŏ|9(~w[57 noZ8" Ɛ0hxCDܑ\5%FRA<|a2IY0YU. EȬJ9X9!z~ @D5؄ :a0>ɰ>/+AT7xx2Vōky'?#RE^&kH y#BV!o?wH9B'G,'7H"׈I2j{ dt>L'It:!y|ZN+ru4B7-nv{~gzOA:Pdw JPT+ْ"7+W*ejҨ4!GkU:?(.r +YeyڠrEL Cfednϒx6}Mal:dYG,,GR +e>d VNA~1 +5KVexGaYюF0̼D.備07aȐD=aK xP >a~JۢGۢ7aB~~ +F ?ɱ.;ִ(i_a-AQM0Z1"3q*L>E2ʥU7oU@{b~-`7Y&k YJYZx|ÎzoRّc2z @Hѯs?m -W7'c=){B= cPl _ ;C}W_ Ɨ:Xm N?Rk"!yF8u 2Gѡ |d/ ǯَ~ݩoGT$ޜۄLtyjCa kxp&h;‘&v (DIZ Hw$@cLK`нÄhGZiCc5b;x۽$`?q|>o{ߝwT'B -8[hsnlUD\D1%.EwV,ɻ("KU|Ꚗ^:ϰVκ7 |(Tt m©;:_~IeUC>x`+57V7S{8ojAS:paqoقzt%OwZm5i`h{+Y. +CmrCɧ?se%Un'_?V׼ džfx"ɭ'evC9P}8`gj {[i[HM#C{ڑÅ-z|>̜Gz{ޗezyn#n>c+V'; R* wۣ#M3mw>^}@~\vk vEs"^tϕ;Ã*"fܚkޱfC"ޝW5Qo-/?Aw9v^3½g}[(G%Tqg ԯ9{] e[1#>Uͩ{MևLaw! )Tg.+./730*4<%FdnSةHJOiĸR::PviK 5${®] ڌTq784h}htZ;k}OP<%y@-U0栚PO-j -~+`% a ` lBt/18G(<긫Nx 50r&\j>Ť| խ{"wP_'DI y#d&O7~OgPO5 oROs娯 +ԠЯSVJz#t%hFh+}u֓(^zFt v1ZR@u5jkffVb l-[>mFvf3T_:Qu}1fQ=Þ@I!KIߞ%ԨxE1W*cPWPo7vL:ŽnK#"aTy3ܽwz)ų]*lz%%z,Kr+>[pҘGJ2d݋G3]߼Vw&*.7MqLsOIYHJ㕡-|j2$E3JLB_}A@0hy{ tdtEyE|UoZuC kP *;=p_50ő!Bw Bbl3L`A,$"m_<rcDI,4U#vEbKc/a>PC1/MF1_i,ǂq)ț'P?ceLIZmƴ 56>|:/#EfݽMH^0rrBF;ox,HgQ oP8nv@X"NykǙA-G%$%$2T8l;-N~9(so @Ut"ֽ\XOP 0uxqCNzɔ`8,ʵc!KȢi , ].?HyOXmMX}LmInXuչ΋u> calœ"KtZ4{1NOaP `%KeW5X|&\y,d8[m\6W$#Z{ 2 ĭ%. ;سK%Ctˈj6, .RYOf!y.ׁؐoEixqzA+1tl&|6l|&v5{,E #*-D3㕀0._#X,RVTGRq=NU-M(>1K ?#E-F|j2aOim#DL5D.smW. 3&U3zIpsv8dٙ$fe&z DbI',; ,$ϛ:حyP/wBK&%2TE 5{({dWI_΍ ִaULQ>Qj20㸉,$jU`jyC ctqrsjCS"+n Mt%[A.7Q:]`8!*Rs$nA@:P{ FTt>$ +ׂ bZɤ훥A)U6 q}{smyvgg3}T'>. Ž,fI# ?uH tTXYtv'_=;4ZճӋ:׳U!t|[yvSl8d^<;݌@Jj7qεݸmزVF}.H[9mlxYYӼҵySOzxeԕP:>?}̙US"ºӊuG2S84}s45tr)mY:VZx2 +m^ףG<|Hǹ!u׵bfʼm| O` O c^H]9's6'C9KNd'+,ZL*%dsAdấLG7dQ` 6Z<b,^X ߂GL;C!شX׬#zdMK~lo.U`OyR I 8~_JHu&Y,0sLd@),> A=Һ0@badq>`dńB\p,KpA.S=09-vׅiصgq,6Z@9̿XAݱb1ŚzlĕnmD r;^oӺЕYJI*PBbf##" ,Bg2sm @=Vw-mNEDb!u;| "9[Euѱq9E/Zd^ߑC +Lt-egܿh#`EWpuʎDjl+*)) I`@!(;mZd!eGChAu_2aaZQIE+W͇L;WbdΨѺmC +$yqլE|;dD@-.ɢT}jV.2xߺWt#$^ CN/28euq{)ÉA17-L E(^?@q}8u-8JdA += )3=dQ"]b]jϽ. |HG|,zV}0~@ /i2{n/^/41ٱeoyE4 +7ixDV$ ^ DͰLbàmB5-yQW\AKR3SGSnSQoV]a2WכVֺYd_<"\0Zd - /OXN{g _cA7SpZT1kbq^$ ܏Ƀ&L -2f1M73 SX?ݫr|n\`aYZZX,Ovip]۬:uµ +.v="/,zEMb ^lbg9Ԧ%xE XT;^/W[X~pI`-Z,ȶ"u~C>>[gۅ7Ȕ{Ȑ?w#'g^Uf6+h!7N +Twb5TѺ?= B(Q9H }ШWW]0O*?HآLE / ?_=4Mx 7 2cS".?dWaCQƔO+Ǖ/)_U+OuI/ګ* ]Xл< Qh[\kE0&A QO-Yz@aQ15vtm>Z5gxxHpeQésL|3[t=L$^3Y +²Xbn36-dl5[6}.?xw }x,fQ~R[$4B'KS +i(%m>H2r&gy\./_˭O|SaJ2@LQ^Rf+s*]e{rV\rITFդU5KV 5S?U H83(ڋD*Q~U]@ҋj$$U"ioG(j6E<*zRJ cc{ "L4 g(1D1PA FH]I1ȏJa1h7*MBQfI$HAH>j!JA"zO?#: $p;pľ%zPTzx\$e_2=%>xbY~uiϽͶQ+c=1Y6ɦ'x^^}jTX8§߫ +fS5wt手eEt{m!W B:S^kq*1~Y~k\ki=z(dx75>7j]p1uU˲ S֋eNJ_ueA~C^IbuYhޢ6kՉUޚmP~Eg|Y}Ɩ3c1>39R\iv9caф,52]ѷYݺ/n`_<~iZUt$qe39*NYWnVҧwA3ibeܗqs]Kdř\1N65̾myԮ r0qFE33ݖ8}I<ؓۯ,̴&xwYtyrcyN##uNE/|EC,aO`|?' #!A>[Yx /@f^Ux bV Vvn8ag<\uhψhҗđxDRI:JLb'd,@&ɤL#Lf +jԒ%߁4ߐ&k1@| {Ar|BN0/D|M fML1t:fR;ͣ1gt":N31w,1K2ѳ Gt݅az~DOEz^_ޢ4ccp3#YX,,%@ zfPE`TȒ( -ŨĘ^J`TcdݦRLuT1J2W~A`ݱ+0~I1*p%zf#ʃ˺k"."Fa!7+bTR*%]9J*z=(LW=,QxC1ϯYjFMuln%ڣ_xN+|RKR}<)gSNO{6؎ƉNўcOb|.? T|Ͱ)EV3#!łP6F;\W溽HmT7NLz89gsީ\:ׅeA2:Suc N]pc-. +3SΟs9<+.\[\^oW+x^#ö= :"KCwy,`I<]bbspW8z&<5&nDTc/>%@.B-n~'j-\[l8Of棎 %01 "ח8IVqeP~_&m3c'mB b%al}XѓXJeɲlI:%C4!Pi(ڰХPJKh%%P +ӿ',5z?'N1^ʹ/0ݐwn1 < o]_A!=?cr2)#|ļC S?|m~:'[ (9}y&ڗ 0{壀י=Q0a틻 c p<=޿w` o_ʮF0@ +f .sn.<4v؍!?g_/#׆zUx%5C?Evدw x8[;\y{{E7^OKӽo\e^ʁB{;\jЙ?@~ ,_gP2uw?zs_a@x~{jsp4)4}=.|7LC5ߗ./}NDG`L1ܟ q6)jӡ_^M `M ,"_VpX[mD =ñ(ۄH%q9'iCFX$te K[ ɘ,1YJD+뀝" E1$QedkSQߒלL\CnQ#׳Kk\梷%i7JS$$i [ᑫzHwԛDóX*Cvar"5p4Xc`% .cx,YSŒ;<6 QaO3aHn}~8i%_ ]W[)O9kF{cV3E-q ONFZ$V7 Ԥ~;FcȝMLU_QoLL^0ag^ j=ad3,]cj=4EIzb'q +Van*ԕ@Y>>ǝZuJq\OF$V[u/ic)*׊ʩ,*A[L=F3:rxqt<+T! 5 +VW86ޤ; +\9=vM:&F&LZo0kCt÷ +nn]\6(Agze:lM3Y,yn$fR''zt)oUA˥飾r>6\UQESo53̈́FD^,a.YX1+FHҵOXNG,8⼎.0e07ʭeQϕ F$8"jsqɕc Mwrxtc;iE>Fo4VeTD'M)N1'#C3ZwYJĆ UQaō24C[LT]Tk4KVJ,#|p#lPbX7D7-*P^?ƑR/¸m&FI6ݎ:- +4xu>x~ӝ|??oe}?;eՕZY(D{Z@L ,Q0HFPFt$˸/AQ33aDpܒ1 `T:feUʗT{瞻{Ͻ[|C7.M:iBwU[L +h4uYf97J%}7-( jӗ1{W ZaFʭ [OtΛ3:㋔'ouZ? 󵇖;ϯW}J2*4.y壃9WUnK :3gL ;UՁY;isZyӹ~X8K~BTE_;_+ij晙 a{NIѴVeGvkw8_>\3ڼ`6#"WUԬ+ͼ}px[}Iq ;W/kvkqOVGbëAŕ"l*R9^>?1:`׈+ln=6Z;_s6bos$ jNl [5g˓BEU/h8^ƃM1|4]n ޽:>u怔]͟p1oX]U9ckWqz YZɎb 2 W}dOv0kh u^`BBf#DC2wԋ:]6kzZJX\cMhJr뛵RGڭʒ2,A!K*H .7|>;GC=xlVw!ߡR-rB;ȷ` x^^//ч.ΝjjdМ|lOQ=K `=xcq(X k`5XE(UՓnbB#S%U5TrY\RA|uWP"3CXWK} c~NKH歶DP~[>99aiQ"3EQ{Ѧ,?EO ~7_!BN'42@ +e~k"vk[!o7}L5Fh6:\ kPwLP'+XӏP'\Wr2LLKb>KQc)m %(ɦ:.ɢlUA^:Q"3GFDhp-DE=9YZ\Ǭu:l"ezO-F9՟4Oal> d]*V?cfM +8N)d0D '!9r<Ƃc X7q`8*4hDt800 lFA  [˼< a+PphCczȃA6~/v@>70+ӋwLgиA/lA-g t4ӖٱEB@M¢(dۘ@e Mo@KR S_WpF(AbK%?g,} ?;)᧎-IҸeRWѯcs-+XN yj^,q(P--NNjfr+8iὸ3>r x\YGu\n,;AON:޾\ӋIÚ9)8Xʉ8XD,c8UG=>K#竞O iy,M%%e=_ 58&BH"mG\&qSKmKvXxzyx_L2nQ)zF` +endstream +endobj +82 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +84 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +85 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 83 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 117 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 84 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 85 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 72 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 0 667 611 0 0 278 0 0 611 0 0 778 +667 0 722 667 611 0 0 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 0 0 556 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 73 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 0 0 0 333 333 389 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 0 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 74 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 147 +/Widths [600 0 600 0 0 600 600 0 600 600 600 0 600 600 600 600 +600 600 600 600 600 600 600 0 0 600 600 0 0 600 600 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 0 600 0 0 +0 600 0 600 600 600 600 600 0 600 0 0 600 600 600 600 +600 0 600 600 600 0 0 0 0 0 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 75 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 600 0 0 0 600 600 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 76 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [600 0 0 0 0 0 0 0 600 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 600 0 0 0 0 600 600 +0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 77 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 78 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 120 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 0 407 0 389 0 500 500 278 0 0 278 778 556 444 +500 0 0 389 333 0 500 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 79 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBEBHD+Symbol +/Encoding /Identity-H +/DescendantFonts [ 86 0 R ] +/ToUnicode 87 0 R +>> +endobj +86 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBEBHD+Symbol +/FontDescriptor 80 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +53 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 556 +0 0 0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 82 0 R +>> +endobj +87 0 obj +<< +/Filter /FlateDecode +/Length 228 +>> +stream +HTP=O0 +<Rnp=%M#7IrCg?؞7m 2d8R6F;:tk8aH @kp80~> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +88 0 obj +<< +/S /D +>> +endobj +89 0 obj +<< +/Nums [0 88 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 19 0 R 24 0 R 27 0 R 30 0 R 33 0 R 36 0 R 39 0 R 42 0 R] +/Count 10 +/Parent 48 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [45 0 R 50 0 R 54 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R] +/Count 8 +/Parent 48 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [13 0 R 49 0 R ] +/Count 18 +/MediaBox [0 0 612 792] +>> +endobj +90 0 obj +<< +/CreationDate (D:20210202102638-06'00') +/ModDate (D:20210202102638-06'00') +/Producer (Apple pstopdf) +>> +endobj +91 0 obj +<< +/Type /Catalog +/Pages 48 0 R +/PageLabels 89 0 R +>> +endobj +xref +0 92 +0000000000 65535 f +0000157459 00000 n +0000000016 00000 n +0000008601 00000 n +0000152415 00000 n +0000152589 00000 n +0000153287 00000 n +0000153498 00000 n +0000153920 00000 n +0000154471 00000 n +0000155006 00000 n +0000155348 00000 n +0000129460 00000 n +0000159036 00000 n +0000157540 00000 n +0000008776 00000 n +0000018400 00000 n +0000153110 00000 n +0000155758 00000 n +0000157624 00000 n +0000018589 00000 n +0000026840 00000 n +0000156063 00000 n +0000156449 00000 n +0000157708 00000 n +0000027066 00000 n +0000034548 00000 n +0000157792 00000 n +0000034763 00000 n +0000041428 00000 n +0000157876 00000 n +0000041643 00000 n +0000049397 00000 n +0000157960 00000 n +0000049599 00000 n +0000057070 00000 n +0000158044 00000 n +0000057272 00000 n +0000064184 00000 n +0000158128 00000 n +0000064399 00000 n +0000072911 00000 n +0000158212 00000 n +0000073090 00000 n +0000079285 00000 n +0000158296 00000 n +0000079477 00000 n +0000087547 00000 n +0000159296 00000 n +0000159173 00000 n +0000158380 00000 n +0000087736 00000 n +0000095366 00000 n +0000156804 00000 n +0000158464 00000 n +0000095571 00000 n +0000104108 00000 n +0000158548 00000 n +0000104299 00000 n +0000112747 00000 n +0000158632 00000 n +0000112965 00000 n +0000121140 00000 n +0000158716 00000 n +0000121358 00000 n +0000127767 00000 n +0000158800 00000 n +0000127961 00000 n +0000128917 00000 n +0000158884 00000 n +0000129085 00000 n +0000129339 00000 n +0000129601 00000 n +0000129798 00000 n +0000130004 00000 n +0000130204 00000 n +0000130395 00000 n +0000130597 00000 n +0000130798 00000 n +0000130993 00000 n +0000131196 00000 n +0000131386 00000 n +0000151580 00000 n +0000151785 00000 n +0000151997 00000 n +0000152205 00000 n +0000156592 00000 n +0000157158 00000 n +0000158968 00000 n +0000158996 00000 n +0000159388 00000 n +0000159511 00000 n +trailer +<< +/Size 92 +/Root 91 0 R +/Info 90 0 R +/ID [<78f150b51c7d7f76b8dd4f72b26765a5><78f150b51c7d7f76b8dd4f72b26765a5>] +>> +startxref +159581 +%%EOF diff --git a/docs/medley-irm/04-STRINGS.TEDIT b/docs/medley-irm/04-STRINGS.TEDIT new file mode 100644 index 00000000..8bc603c2 --- /dev/null +++ b/docs/medley-irm/04-STRINGS.TEDIT @@ -0,0 +1,76 @@ + INTERLISP-D REFERENCE MANUAL STRINGS 4. STRINGS(4.% % STRINGS (Chapter) NIL NIL NIL NIL) 3 A string represents a sequence of characters. Interlisp strings are a subtype of Common Lisp strings. Medley provides functions for creating strings, concatenating strings, and creating sub-strings of a string; all accepting or producing Common Lisp-acceptable strings. A string is typed as a double quote ("), followed by a sequence of any characters except double quote and %, terminated by a double quote. To include % or " in a string, type % in front of them: "A string" "A string with %" in it, and a %%." "" ; an empty string Strings are printed by PRINT and PRIN2 with initial and final double quotes, and %s inserted where necessary for it to read back in properly. Strings are printed by PRIN1 without the double quotes and extra %s. The null string is printed by PRINT and PRIN2 as "". (PRIN1 "") doesn't print anything. Internally, a string is stored in two parts: a string header and the sequence of characters. Several string headers may refer to the the same character sequence, so a substring can be made by creating a new string header, without copying any characters. Functions that refer to strings actually manipulate string headers. Some functions take an old string argument, and re-use the string pointer. (STRINGP X) [Function] Returns X if X is a string, NIL otherwise. (STREQUAL X Y) [Function] Returns T if X and Y are both strings and they contain the same sequence of characters, otherwise NIL. EQUAL uses STREQUAL. Note that strings may be STREQUAL without being EQ. For instance, (STREQUAL "ABC" "ABC") => T (EQ "ABC" "ABC") => NIL STREQUAL returns T if X and Y are the same string pointer, or two different string pointers which point to the same character sequence, or two string pointers which point to different character sequences which contain the same characters. Only in the first case would X and Y be EQ. (STRING-EQUAL X Y) [Function] Returns T if X and Y are either strings or symbols, and they contain the same sequence of characters, ignoring case. For instance, (STRING-EQUAL "FOO" "Foo") => T (STRING-EQUAL "FOO" 'Foo) => T This is useful for comparing things that might want to be considered equal even though they're not both symbols in a consistent case, such as file names and user names. (STRING.EQUAL X Y) [Function] Returns T if the print names of X and Y contain the same sequence of characters, ignoring case. For instance, (STRING-EQUAL "320" 320) => T (STRING-EQUAL "FOO" 'Foo) => T This is like STRING-EQUAL, but handles numbers, etc., where STRING-EQUAL doesn't. (ALLOCSTRING N INITCHAR OLD FATFLG) [Function] Creates a string of length N characters of INITCHAR (which can be either a character code or something coercible to a character). If INITCHAR is NIL, it defaults to character code 0. if OLD is supplied, it must be a string pointer, which is modified and returned. If FATFLG is non-NIL, the string is allocated using full 16-bit NS characters (see Chapter 2) instead of 8-bit characters. This can speed up some string operations if NS characters are later inserted into the string. This has no other effect on the operation of the string functions. (MKSTRING X FLG RDTBL) [Function] If X is a string, returns X. Otherwise, creates and returns a string containing the print name of X. Examples: (MKSTRING "ABC") => "ABC" (MKSTRING '(A B C)) => "(A B C)" (MKSTRING NIL) => "NIL" Note that the last example returns the string "NIL", not the symbol NIL. If FLG is T, then the PRIN2-name of X is used, computed with respect to the readtable RDTBL. For example, (MKSTRING "ABC" T) => "%"ABC%"" (NCHARS X FLG RDTBL) [Function] Returns the number of characters in the print name of X. If FLG=T, the PRIN2-name is used. For example, (NCHARS 'ABC) => 3 (NCHARS "ABC" T) => 5 Note: NCHARS works most efficiently on symbols and strings, but can be given any object. (SUBSTRING(SUBSTRING (Function) NIL NIL ("4") 3) X N M OLDPTR) [Function] Returns the substring of X consisting of the Nth through Mth characters of X. If M is NIL, the substring contains the Nth character thru the end of X. N and M can be negative numbers, which are interpreted as counts back from the end of the string, as with NTHCHAR (Chapter 2). SUBSTRING returns NIL if the substring is not well defined, (e.g., N or M specify character positions outside of X, or N corresponds to a character in X to the right of the character indicated by M). Examples: (SUBSTRING "ABCDEFG" 4 6) => "DEF" (SUBSTRING "ABCDEFG" 3 3) => "C" (SUBSTRING "ABCDEFG" 3 NIL) => "CDEFG" (SUBSTRING "ABCDEFG" 4 -2) => "DEF" (SUBSTRING "ABCDEFG" 6 4) => NIL (SUBSTRING "ABCDEFG" 4 9) => NIL If X is not a string, it is converted to one. For example, (SUBSTRING '(A B C) 4 6) => "B C" SUBSTRING does not actually copy any characters, but simply creates a new string pointer to the characters in X. If OLDPTR is a string pointer, it is modified and returned. (GNC(GNC (Function) NIL NIL ("4") 3) X) [Function] Get Next Character. Returns the next character of the string X (as a symbol); also removes the character from the string, by changing the string pointer. Returns NIL if X is the null string. If X isn't a string, a string is made. Used for sequential access to characters of a string. Example: (SETQ FOO "ABCDEFG") "ABCDEFG" (GNC FOO) A (GNC FOO) B FOO "CDEFG" Note that if A is a substring of B, (GNC A) does not remove the character from B. (GLC(GLC (Function) NIL NIL ("4") 3) X) [Function] Get Last Character. Returns the last character of the string X (as a symbol); also removes the character from the string. Similar to GNC. Example: (SETQ FOO "ABCDEFG") "ABCDEFG" (GLC FOO) G (GLC FOO) F FOO "ABCDE" (CONCAT(CONCAT (Function) NIL NIL ("4") 4) X1 X2 ... XN) [NoSpread Function] Returns a new string which is the concatenation of (copies of) its arguments. Any arguments which are not strings are transformed to strings. Examples: (CONCAT "ABC" 'DEF "GHI") => "ABCDEFGHI" (CONCAT '(A B C) "ABC") => "(A B C)ABC" (CONCAT) returns the null string, "" (CONCATLIST(CONCATLIST (Function) NIL NIL ("4") 4) L) [Function] L is a list of strings and/or other objects. The objects are transformed to strings if they aren't strings. Returns a new string which is the concatenation of the strings. Example: (CONCATLIST '(A B (C D) "EF")) => "AB(C D)EF" (RPLSTRING(RPLSTRING (Function) NIL NIL ("4") 4) X N Y) [Function] Replaces the characters of string X beginning at character position N with string Y. X and Y are converted to strings if they aren't already. N may be positive or negative, as with SUBSTRING. Characters are smashed into (converted) X. Returns the string X. Examples: (RPLSTRING "ABCDEF" -3 "END") => "ABCEND" (RPLSTRING "ABCDEFGHIJK" 4 '(A B C)) => "ABC(A B C)K" Generates an error if there is not enough room in X for Y, i.e., the new string would be longer than the original. If Y was not a string, X will already have been modified since RPLSTRING does not know whether Y will fit without actually attempting the transfer. Warning: In some implementations of Interlisp, if X is a substring of Z, Z will also be modified by the action of RPLSTRING or RPLCHARCODE. However, this is not guaranteed to be true in all cases, so programmers should not rely on RPLSTRING or RPLCHARCODE altering the characters of any string other than the one directly passed as argument to those functions. (RPLCHARCODE(RPLCHARCODE (Function) NIL NIL ("4") 4) X N CHAR) [Function] Replaces the Nth character of the string X with the character code CHAR. N may be positive or negative. Returns the new X. Similar to RPLSTRING. Example: (RPLCHARCODE "ABCDE" 3 (CHARCODE F)) => "ABFDE" (STRPOS(STRPOS (Function) NIL NIL ("4") 4) PAT STRING START SKIP ANCHOR TAIL CASEARRAY BACKWARDSFLG) [Function] STRPOS is a function for searching one string looking for another. PAT and STRING are both strings (or else they are converted automatically). STRPOS searches STRING beginning at character number START, (or 1 if START is NIL) and looks for a sequence of characters equal to PAT. If a match is found, the character position of the first matching character in STRING is returned, otherwise NIL. Examples: (STRPOS "ABC" "XYZABCDEF") => 4 (STRPOS "ABC" "XYZABCDEF" 5) => NIL (STRPOS "ABC" "XYZABCDEFABC" 5) => 10 SKIP can be used to specify a character in PAT that matches any character in STRING. Examples: (STRPOS "A&C&" "XYZABCDEF" NIL '&) => 4 (STRPOS "DEF&" "XYZABCDEF" NIL '&) => NIL If ANCHOR is T, STRPOS compares PAT with the characters beginning at position START (or 1 if START is NIL). If that comparison fails, STRPOS returns NIL without searching any further down STRING. Thus it can be used to compare one string with some portion of another string. Examples: (STRPOS "ABC" "XYZABCDEF" NIL NIL T) => NIL (STRPOS "ABC" "XYZABCDEF" 4 NIL T) => 4 If TAIL is T, the value returned by STRPOS if successful is not the starting position of the sequence of characters corresponding to PAT, but the position of the first character after that, i.e., the starting position plus (NCHARS PAT). Examples: (STRPOS "ABC" "XYZABCDEFABC" NIL NIL NIL T) => 7 (STRPOS "A" "A" NIL NIL NIL T) => 2 If TAIL = NIL, STRPOS returns NIL, or a character position within STRING which can be passed to SUBSTRING. In particular, (STRPOS "" "") => NIL. However, if TAIL = T, STRPOS may return a character position outside of STRING. For instance, note that the second example above returns 2, even though A has only one character. If CASEARRAY is non-NIL, this should be a casearray like that given to FILEPOS (Chapter 25). The casearray is used to map the string characters before comparing them to the search string. If BACKWARDSFLG is non-NIL, the search is done backwards from the end of the string. (STRPOSL(STRPOSL (Function) NIL NIL ("4") 5) A STRING START NEG BACKWARDSFLG) [Function] STRING is a string (or is converted automatically to a string), A is a list of characters or character codes. STRPOSL searches STRING beginning at character number START (or 1 if START = NIL) for one of the characters in A. If one is found, STRPOSL returns as its value the corresponding character position, otherwise NIL. Example: (STRPOSL '(A B C) "XYZBCD") => 4 If NEG = T, STRPOSL searches for a character not on A. Example: (STRPOSL '(A B C) "ABCDEF" NIL T) => 4 If any element of A is a number, it is assumed to be a character code. Otherwise, it is converted to a character code via CHCON1. Therefore, it is more efficient to call STRPOSL with A a list of character codes. If A is a bit table, it is used to specify the characters (see MAKEBITTABLE below) If BACKWARDSFLG is non-NIL, the search is done backwards from the end of the string. STRPOSL uses a bit table data structure to search efficiently. If A is not a bit table, it is converted to a bit table using MAKEBITTABLE. If STRPOSL is to be called frequently with the same list of characters, a considerable savings can be achieved by converting the list to a bit table once, and then passing the bit table to STRPOSL as its first argument. (MAKEBITTABLE(MAKEBITTABLE (Function) NIL NIL ("4") 6) L NEG A) [Function] Returns a bit table suitable for use by STRPOSL. L is a list of characters or character codes, NEG is the same as described for STRPOSL. If A is a bit table, MAKEBITTABLE modifies and returns it. Otherwise, it will create a new bit table. Note: If NEG = T, STRPOSL must call MAKEBITTABLE whether A is a list or a bit table. To obtain bit table efficiency with NEG=T, MAKEBITTABLE should be called with NEG=T, and the resulting inverted bit table should be given to STRPOSL with NEG=NIL. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "4-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "4-" "")) (222 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "4-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "4-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "4-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "4-" "")) (222 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (48 612 564 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))5,1EVENT-T,l~,~~,l~,,@ PAGEHEADING RIGHTPAGE? PAGEHEADINGLEFTBACK,ll,HH306 +T, +TIMESROMAN +PALATINO PALATINO PALATINO TITAN TITAN TITAN TITAN CLASSIC +TITAN +CLASSIC +MODERN +MODERNMODERN +   +  )IM.INDEX.GETFN  HRULE.GETFNMODERN %D,8 +T%" +  + + +    +  +  N    +  + +  p" !  +  + +  H  !  #  + +  +  + S'K  + +  + H  #  .   1" +  +   6  M + &IM.INDEX.GETFNTITAN + +  +  c  .(,% # ) & # # 8$ e3 + IM.INDEX.GETFNTITAN + + + @ec  +   $ + IM.INDEX.GETFNTITAN + + + @H  +   +#IM.INDEX.GETFNTITAN + +   + + *  + +'IM.INDEX.GETFNTITAN + + + 0 + &IM.INDEX.GETFNTITAN + + + "! 3& + , 8 2>' 6 ,(  ^  i + + (IM.INDEX.GETFNTITAN + + + /  2#IM.INDEX.GETFNMODERN +    >? + 2R " & ( ' * ,  ++ + $7. * [W 3 &  ! ,K  0o  ; +$IM.INDEX.GETFNMODERN +  + :. + +F #  ) h+ ;   ; >: $ + )IM.INDEX.GETFNMODERN +  + (- F     3 < +%.{-z \ No newline at end of file diff --git a/docs/medley-irm/04-STRINGS.pdf b/docs/medley-irm/04-STRINGS.pdf new file mode 100644 index 00000000..71e47cfb --- /dev/null +++ b/docs/medley-irm/04-STRINGS.pdf @@ -0,0 +1,3376 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 6248 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-1)Tj +/TT4 1 Tf +10 0 0 10 451.65 568.2 Tm +(4. STRINGS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +0.0544 Tw +[(A string represents a sequence of characters. Interlisp strings are a subtype of Common Lisp strings.)]TJ +0 -1.2222 TD +0.1556 Tw +(Medley provides functions for creating strings, concatenating strings, and creating sub-strings of a)Tj +T* +0 Tw +(string; all accepting or producing Common Lisp-acceptable strings.)Tj +0 -2 TD +0.0344 Tw +(A string is typed as a double quote \()Tj +/TT8 1 Tf +16.2697 0 TD +0 Tw +(")Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +(\), followed by a sequence of any characters except double quote)Tj +-16.8698 -1.2889 TD +0 Tw +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(%)Tj +/TT6 1 Tf +0.6001 0 TD +(, terminated by a double quote. To include )Tj +/TT8 1 Tf +19.2881 0 TD +(%)Tj +/TT6 1 Tf +0.6001 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(")Tj +/TT6 1 Tf +0.6001 0 TD +( in a string, type )Tj +/TT8 1 Tf +7.4097 0 TD +(%)Tj +/TT6 1 Tf +0.6001 0 TD +( in front of them:)Tj +/TT8 1 Tf +-27.1486 -1.6667 TD +("A string")Tj +0 -1 TD +("A string with %" in it, and a %%.")Tj +0 -1.0667 TD +("")Tj +/TT10 1 Tf +4 0 TD +(; an empty string)Tj +/TT6 1 Tf +-9.3333 -1.8444 TD +0.07 Tw +(Strings are printed by )Tj +/TT8 1 Tf +10.1477 0 TD +0 Tw +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +0.07 Tw +[( and )]TJ +/TT8 1 Tf +2.3329 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.07 Tw +[( with initial and final double quotes, and )]TJ +/TT8 1 Tf +18.8193 0 TD +0 Tw +(%)Tj +/TT6 1 Tf +0.6001 0 TD +0.07 Tw +(s inserted where)Tj +-37.9009 -1.2889 TD +0.0156 Tw +[(necessary for it to read back in properly. Strings are printed by )]TJ +/TT8 1 Tf +28.3912 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.0156 Tw +[( without the double quotes and)]TJ +-31.3917 -1.2889 TD +0 Tw +(extra )Tj +/TT8 1 Tf +2.4663 0 TD +(%)Tj +/TT6 1 Tf +0.6001 0 TD +(s. The null string is printed by )Tj +/TT8 1 Tf +13.7983 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +( as )Tj +/TT8 1 Tf +1.4238 0 TD +("")Tj +/TT6 1 Tf +1.2002 0 TD +(. )Tj +/TT8 1 Tf +0.75 0 TD +(\(PRIN1 ""\))Tj +/TT6 1 Tf +6.001 0 TD +( doesnt print anything.)Tj +-34.4336 -2.0667 TD +0.1022 Tw +[(Internally, a string is stored in two parts: a string header and the sequence of characters. Several)]TJ +0 -1.2222 TD +0.0344 Tw +(string headers may refer to the the same character sequence, so a substring can be made by creating a)Tj +T* +0.3311 Tw +[(new string header, without copying any characters. Functions that refer to strings actually)]TJ +T* +0.2144 Tw +[(manipulate string headers. Some functions take an old string argument, and re-use the string)]TJ +T* +0 Tw +(pointer.)Tj +/TT8 1 Tf +10 0 0 10 102 332.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 332.89 Tm +(STRINGP)Tj +/TT8 1 Tf +10 0 0 10 145.8071 332.89 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 151.8081 332.89 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 157.209 332.89 Tm +(\) )Tj +/TT6 1 Tf +9 0 0 9 444.63 332.89 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT14 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a string, )Tj +/TT8 1 Tf +5.0391 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +10 0 0 10 102 293.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 293.06 Tm +(STREQUAL)Tj +/F1 1 Tf +10 0 0 10 151.208 293.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.988 293.06 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 170.1906 293.06 Tm +(\) )Tj +/TT6 1 Tf +9 0 0 9 444.63 293.06 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.8382 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1111 Tw +[( if )]TJ +/TT14 1 Tf +1.3462 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1111 Tw +[( and )]TJ +/TT14 1 Tf +2.4151 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1111 Tw +[( are both strings and they contain the same sequence of characters,)]TJ +-9.3998 -1.2889 TD +0 Tw +(otherwise )Tj +/TT8 1 Tf +4.7726 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1667 Tw +(. )Tj +/TT8 1 Tf +1.0833 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1667 Tw +[( uses )]TJ +/TT8 1 Tf +2.763 0 TD +0 Tw +(STREQUAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.1667 Tw +[(. Note that strings may be )]TJ +/TT8 1 Tf +13.0524 0 TD +0 Tw +(STREQUAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.1667 Tw +[( without)]TJ +-36.0737 -1.2889 TD +0 Tw +(being )Tj +/TT8 1 Tf +2.7114 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +(. For instance,)Tj +/TT8 1 Tf +0.0884 -1.6667 TD +(\(STREQUAL "ABC" "ABC"\) => T)Tj +0 -1 TD +(\(EQ "ABC" "ABC"\) => NIL)Tj +-4 -1.8444 TD +(STREQUAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0056 Tw +[( returns )]TJ +/TT8 1 Tf +3.7152 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( if )]TJ +/TT14 1 Tf +1.1351 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( and )]TJ +/TT14 1 Tf +2.204 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( are the same string pointer, or two different string pointers)]TJ +-13.6554 -1.2889 TD +0.3033 Tw +(which point to the same character sequence, or two string pointers which point to)Tj +0 -1.2222 TD +0.1433 Tw +[(different character sequences which contain the same characters. Only in the first case)]TJ +T* +0 Tw +(would )Tj +/TT14 1 Tf +3.1348 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( be )Tj +/TT8 1 Tf +1.5322 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 155.77 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 155.77 Tm +(STRING-EQUAL)Tj +/TT8 1 Tf +10 0 0 10 172.8115 155.77 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 178.8125 155.77 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 195.0151 155.77 Tm +(\))Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 155.77 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7771 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +[( if )]TJ +/TT14 1 Tf +1.224 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +[( and )]TJ +/TT14 1 Tf +2.2929 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +[( are either strings or symbols, and they contain the same sequence of)]TJ +-9.0942 -1.2889 TD +0 Tw +(characters, ignoring case. For instance,)Tj +/TT8 1 Tf +4 -1.6 TD +(\(STRING-EQUAL "FOO" "Foo"\) => T)Tj +0 -1 TD +(\(STRING-EQUAL "FOO" Foo\) => T)Tj +/TT6 1 Tf +-4 -1.8444 TD +0.0133 Tw +(This is useful for comparing things that might want to be considered equal even though)Tj +0 -1.2222 TD +0 Tw +(theyre not both symbols in a consistent case, such as file names and user names.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +16 0 obj +<< +/Length 7554 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-2)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +5.4 -4.38 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 568.2 Tm +(STRING.EQUAL)Tj +/TT8 1 Tf +10 0 0 10 220.8115 568.2 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 226.8125 568.2 Tm +(X Y)Tj +/TT8 1 Tf +10 0 0 10 243.0151 568.2 Tm +(\))Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7682 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +[( if the print names of )]TJ +/TT14 1 Tf +9.6998 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +[( and )]TJ +/TT14 1 Tf +2.2751 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0411 Tw +[( contain the same sequence of characters, ignoring)]TJ +-17.5433 -1.2889 TD +0 Tw +(case. For instance,)Tj +/TT8 1 Tf +4 -1.6 TD +(\(STRING-EQUAL "320" 320\) => T)Tj +0 -1 TD +(\(STRING-EQUAL "FOO" Foo\) => T)Tj +/TT6 1 Tf +-4 -1.8444 TD +(This is like )Tj +/TT8 1 Tf +4.9917 0 TD +(STRING-EQUAL)Tj +/TT6 1 Tf +7.2012 0 TD +(, but handles numbers, etc., where )Tj +/TT8 1 Tf +15.3882 0 TD +(STRING-EQUAL)Tj +/TT6 1 Tf +7.2012 0 TD +( doesnt.)Tj +/TT8 1 Tf +10 0 0 10 150 476.77 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 476.77 Tm +(ALLOCSTRING)Tj +/TT8 1 Tf +10 0 0 10 215.4106 476.77 Tm +( )Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +9 0 0 9 224.1916 476.77 Tm +(N INITCHAR OLD FATFLG)Tj +/TT8 1 Tf +10 0 0 10 337.6101 476.77 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 343.6111 476.77 Tm +[( )-16057.7([Function])]TJ +-18.8457 -1.8833 TD +0.0378 Tw +(Creates a string of length )Tj +/TT14 1 Tf +11.5204 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0378 Tw +[( characters of )]TJ +/TT14 1 Tf +6.231 0 TD +0 Tw +(INITCHAR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0378 Tw +[( \(which can be either a character code)]TJ +-23.1523 -1.2889 TD +0.0167 Tw +[(or something coercible to a character\). If )]TJ +/TT14 1 Tf +18.355 0 TD +0 Tw +(INITCHAR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0167 Tw +[( is )]TJ +/TT8 1 Tf +1.2482 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0167 Tw +(, it defaults to character code 0.)Tj +-26.2043 -1.2889 TD +0 Tw +(if )Tj +/TT14 1 Tf +0.874 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +( is supplied, it must be a string pointer, which is modified and returned.)Tj +-2.6743 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9221 0 TD +(FATFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.0003 Tc +0.0019 Tw +( is non-)Tj +/TT8 1 Tf +3.2623 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0022 Tw +(, the string is allocated using full 16-bit NS characters \(see Chapter 2\))Tj +-9.5853 -1.2889 TD +0.0489 Tw +[(instead of 8-bit characters. This can speed up some string operations if NS characters are)]TJ +0 -1.2222 TD +0.2233 Tw +[(later inserted into the string. This has no other effect on the operation of the string)]TJ +T* +0 Tw +(functions.)Tj +/TT8 1 Tf +10 0 0 10 150 362.14 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 362.14 Tm +(MKSTRING)Tj +/F1 1 Tf +10 0 0 10 199.208 362.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.988 362.14 Tm +(X FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 261.3977 362.14 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 267.3987 362.14 Tm +[( )-24525.7([Function])]TJ +-10.3776 -1.8833 TD +(If )Tj +/TT14 1 Tf +1.0755 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1556 Tw +[( is a string, returns )]TJ +/TT14 1 Tf +9.2709 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1556 Tw +[(. Otherwise, creates and returns a string containing the print)]TJ +-11.5466 -1.2889 TD +0 Tw +(name of )Tj +/TT14 1 Tf +3.8228 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. Examples:)Tj +/TT8 1 Tf +-0.4229 -1.6667 TD +(\(MKSTRING "ABC"\) => "ABC")Tj +0 -1 TD +(\(MKSTRING \(A B C\)\) => "\(A B C\)")Tj +T* +(\(MKSTRING NIL\) => "NIL")Tj +/TT6 1 Tf +-4 -1.8444 TD +(Note that the last example returns the string )Tj +/TT8 1 Tf +19.7593 0 TD +("NIL")Tj +/TT6 1 Tf +3.0005 0 TD +(, not the symbol )Tj +/TT8 1 Tf +7.3442 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-31.9043 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.0577 0 TD +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.1378 Tw +[( is )]TJ +/TT8 1 Tf +1.4904 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1378 Tw +(, then the )Tj +/TT8 1 Tf +4.7698 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1378 Tw +(-name of )Tj +/TT14 1 Tf +4.4313 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1378 Tw +[( is used, computed with respect to the readtable)]TJ +/TT14 1 Tf +-17.7502 -1.2889 TD +0 Tw +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +(. For example,)Tj +/TT8 1 Tf +0.9995 -1.6667 TD +(\(MKSTRING "ABC" T\) => "%"ABC%"")Tj +10 0 0 10 150 217.85 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 217.85 Tm +(NCHARS)Tj +/F1 1 Tf +10 0 0 10 188.4062 217.85 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.1862 217.85 Tm +(X FLG RDTBL)Tj +/TT8 1 Tf +10 0 0 10 250.5959 217.85 Tm +(\))Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 217.85 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1144 Tw +(Returns the number of characters in the print name of )Tj +/TT14 1 Tf +25.1498 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1144 Tw +[(. If )]TJ +/TT14 1 Tf +2.0133 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +(=T)Tj +/TT6 1 Tf +1.2002 0 TD +0.1144 Tw +(, the )Tj +/TT8 1 Tf +2.3661 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.1144 Tw +(-name is)Tj +-36.1302 -1.2889 TD +0 Tw +(used. For example,)Tj +/TT8 1 Tf +4 -1.6 TD +(\(NCHARS ABC\) => 3)Tj +0 -1 TD +(\(NCHARS "ABC" T\) => 5)Tj +/TT18 1 Tf +-4 -1.8444 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +(: )Tj +/TT8 1 Tf +0.75 0 TD +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +( works most efficiently on symbols and strings, but can be given any object.)Tj +/TT8 1 Tf +10 0 0 10 150 127.65 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 127.65 Tm +(SUBSTRING)Tj +/TT8 1 Tf +10 0 0 10 204.6 127.65 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.601 127.65 Tm +(X N M OLDPTR)Tj +/TT8 1 Tf +10 0 0 10 275.4115 127.65 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 281.4125 127.65 Tm +[( )-22968.6([Function])]TJ +-11.9347 -1.8833 TD +0.0778 Tw +(Returns the substring of )Tj +/TT14 1 Tf +11.2086 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +[( consisting of the )]TJ +/TT14 1 Tf +8.043 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +(th through )Tj +/TT14 1 Tf +5.1541 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +(th characters of )Tj +/TT14 1 Tf +7.2592 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +[(. If )]TJ +/TT14 1 Tf +1.9033 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +[( is )]TJ +/TT8 1 Tf +1.3704 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +-39.7394 -1.2889 TD +0.2133 Tw +(the substring contains the )Tj +/TT14 1 Tf +12.4769 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.2133 Tw +(th character thru the end of )Tj +/TT14 1 Tf +13.5974 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2133 Tw +(. )Tj +/TT14 1 Tf +1.1767 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.2133 Tw +[( and )]TJ +/TT14 1 Tf +2.6195 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.2133 Tw +[( can be negative)]TJ +-32.2709 -1.2889 TD +0.2922 Tw +(numbers, which are interpreted as counts back from the end of the string, as with)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(NTHCHAR)Tj +/TT6 1 Tf +4.2007 0 TD +0.0002 Tc +0.0031 Tw +( \(Chapter 2\). )Tj +/TT8 1 Tf +6.0216 0 TD +0 Tc +0 Tw +(SUBSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.0004 Tc +0.0029 Tw +( returns )Tj +/TT8 1 Tf +3.7108 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +( if the substring is not well defined, \(e.g., )Tj +/TT14 1 Tf +18.2634 0 TD +0 Tc +0 Tw +(N)Tj +/TT6 1 Tf +-39.3977 -1.2889 TD +(or )Tj +/TT14 1 Tf +1.2976 0 TD +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.1067 Tw +[( specify character positions outside of )]TJ +/TT14 1 Tf +17.5223 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1067 Tw +(, or )Tj +/TT14 1 Tf +1.9043 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1067 Tw +[( corresponds to a character in )]TJ +/TT14 1 Tf +13.8964 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1067 Tw +[( to the)]TJ +-37.0209 -1.2889 TD +0 Tw +(right of the character indicated by )Tj +/TT14 1 Tf +15.2256 0 TD +(M)Tj +/TT6 1 Tf +0.6001 0 TD +(\). Examples:)Tj +ET +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +/TT18 18 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +20 0 obj +<< +/Length 4741 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-3)Tj +/TT16 1 Tf +10 0 0 10 459.55 612 Tm +(STRINGS)Tj +/TT8 1 Tf +9 0 0 9 162 570.14 Tm +(\(SUBSTRING "ABCDEFG" 4 6\) => "DEF")Tj +0 -1 TD +(\(SUBSTRING "ABCDEFG" 3 3\) => "C")Tj +T* +(\(SUBSTRING "ABCDEFG" 3 NIL\) => "CDEFG")Tj +T* +(\(SUBSTRING "ABCDEFG" 4 -2\) => "DEF")Tj +T* +(\(SUBSTRING "ABCDEFG" 6 4\) => NIL)Tj +T* +(\(SUBSTRING "ABCDEFG" 4 9\) => NIL)Tj +/TT6 1 Tf +-4 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a string, it is converted to one. For example,)Tj +/TT8 1 Tf +2.48 -1.6667 TD +(\(SUBSTRING \(A B C\) 4 6\) => "B C")Tj +-4 -1.8444 TD +(SUBSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.0022 Tw +( does not actually copy any characters, but simply creates a new string pointer)Tj +-5.4009 -1.2889 TD +0 Tw +(to the characters in )Tj +/TT14 1 Tf +8.6211 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. If )Tj +/TT14 1 Tf +1.9199 0 TD +(OLDPTR)Tj +/TT6 1 Tf +3.6006 0 TD +( is a string pointer, it is modified and returned.)Tj +/TT8 1 Tf +10 0 0 10 102 443.69 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 443.69 Tm +(GNC)Tj +/TT8 1 Tf +10 0 0 10 124.2 443.69 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 130.201 443.69 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 135.6018 443.69 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 141.6028 443.69 Tm +( )Tj +33.6697 0 TD +([Function])Tj +-35.4033 -1.8833 TD +0.2211 Tw +[(Get Next Character. Returns the next character of the string )]TJ +/TT14 1 Tf +30.1559 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2211 Tw +[( \(as a symbol\); also)]TJ +-30.756 -1.2889 TD +0.0344 Tw +[(removes the character from the string, by changing the string pointer. Returns )]TJ +/TT8 1 Tf +35.3999 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0344 Tw +[( if )]TJ +/TT14 1 Tf +1.1929 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +[( is)]TJ +-38.9932 -1.2889 TD +0.0002 Tc +0.0042 Tw +(the null string. If )Tj +/TT14 1 Tf +7.9207 0 TD +0 Tc +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0001 Tc +0.0043 Tw +( isnt a string, a string is made. Used for sequential access to characters)Tj +-8.5208 -1.2889 TD +0 Tc +0 Tw +(of a string. Example:)Tj +/TT19 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO "ABCDEFG"\))Tj +1.0132 -1 TD +("ABCDEFG")Tj +/TT19 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GNC FOO\))Tj +1.0132 -1 TD +(A)Tj +/TT19 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GNC FOO\))Tj +1.0132 -1 TD +(B)Tj +/TT19 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +("CDEFG")Tj +/TT6 1 Tf +-6 -1.8444 TD +(Note that if )Tj +/TT14 1 Tf +5.2905 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +( is a substring of )Tj +/TT8 1 Tf +7.498 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(GNC A\))Tj +/TT6 1 Tf +4.2007 0 TD +( does not remove the character from )Tj +/TT8 1 Tf +16.2192 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 270.29 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 270.29 Tm +(GLC)Tj +/TT8 1 Tf +10 0 0 10 124.2 270.29 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 130.201 270.29 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 135.6018 270.29 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 141.6028 270.29 Tm +( )Tj +33.6697 0 TD +([Function])Tj +-35.4033 -1.8833 TD +0.2644 Tw +[(Get Last Character. Returns the last character of the string )]TJ +/TT14 1 Tf +29.9787 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2644 Tw +[( \(as a symbol\); also)]TJ +-30.5788 -1.2889 TD +0 Tw +(removes the character from the string. Similar to )Tj +/TT8 1 Tf +21.8887 0 TD +(GNC)Tj +/TT6 1 Tf +1.8003 0 TD +(. Example:)Tj +/TT19 1 Tf +-19.689 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ FOO "ABCDEFG"\))Tj +1.0132 -1 TD +("ABCDEFG")Tj +/TT19 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GLC FOO\))Tj +1.0132 -1 TD +(G)Tj +/TT19 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GLC FOO\))Tj +1.0132 -1 TD +(F)Tj +/TT19 1 Tf +-2 -1.2222 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(FOO)Tj +1.0132 -1 TD +("ABCDE")Tj +10 0 0 10 102 136.86 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 136.86 Tm +(CONCAT)Tj +/TT8 1 Tf +10 0 0 10 140.4 136.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 146.401 136.86 Tm +(X)Tj +0.5999 -0.2222 TD +(1)Tj +/F2 1 Tf +10 0 0 10 157.2 136.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 159.98 136.86 Tm +(X)Tj +0.6 -0.2222 TD +(2)Tj +/F2 1 Tf +10 0 0 10 170.78 136.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 173.56 136.86 Tm +(... X)Tj +3 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 205.96 136.86 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 211.961 136.86 Tm +[( )-20614.3([NoSpread Function])]TJ +-9.5512 -2.0667 TD +0.2789 Tw +[(Returns a new string which is the concatenation of \(copies of\) its arguments. Any)]TJ +0 -1.2222 TD +0 Tw +(arguments which are not strings are transformed to strings. Examples:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(CONCAT "ABC" DEF "GHI"\) => "ABCDEFGHI")Tj +0 -1 TD +(\(CONCAT \(A B C\) "ABC"\) => "\(A B C\)ABC")Tj +0 -1.0667 TD +(\(CONCAT\) )Tj +/TT6 1 Tf +5.4009 0 TD +(returns the null string,)Tj +/TT8 1 Tf +9.9326 0 TD +( "")Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 22 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +/TT19 23 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +25 0 obj +<< +/Length 8491 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-4)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +5.4 -4.251 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 569.49 Tm +(CONCATLIST)Tj +/TT8 1 Tf +10 0 0 10 210 569.49 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 216.0009 569.49 Tm +(L)Tj +/TT8 1 Tf +10 0 0 10 221.4018 569.49 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 227.4028 569.49 Tm +[( )-28969.7([Function])]TJ +/TT14 1 Tf +-5.9336 -1.8833 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.1133 Tw +[( is a list of strings and/or other objects. The objects are transformed to strings if they)]TJ +-0.6001 -1.2889 TD +0 Tw +(arent strings. Returns a new string which is the concatenation of the strings. Example:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(CONCATLIST \(A B \(C D\) "EF"\)\) => "AB\(C D\)EF")Tj +10 0 0 10 150 506.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 506.89 Tm +(RPLSTRING)Tj +/TT8 1 Tf +10 0 0 10 204.6 506.89 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.601 506.89 Tm +(X N Y)Tj +/TT8 1 Tf +10 0 0 10 237.6053 506.89 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 243.6063 506.89 Tm +[( )-27169.3([Function])]TJ +-7.734 -1.8833 TD +(Replaces the characters of string )Tj +/TT14 1 Tf +14.4733 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( beginning at character position )Tj +/TT14 1 Tf +14.2266 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( with string )Tj +/TT14 1 Tf +5.361 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(. )Tj +/TT14 1 Tf +0.7521 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT14 1 Tf +2.1955 0 TD +(Y)Tj +/TT6 1 Tf +-39.4089 -1.2889 TD +0.1622 Tw +(are converted to strings if they arent already. )Tj +/TT14 1 Tf +22.0904 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1622 Tw +[( may be positive or negative, as with)]TJ +/TT8 1 Tf +-22.6905 -1.2889 TD +0 Tw +(SUBSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +(. Characters are smashed into \(converted\) )Tj +/TT14 1 Tf +18.8682 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. Returns the string )Tj +/TT14 1 Tf +8.9385 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. Examples:)Tj +/TT8 1 Tf +-30.4077 -1.6667 TD +(\(RPLSTRING "ABCDEF" -3 "END"\) => "ABCEND")Tj +0 -1 TD +(\(RPLSTRING "ABCDEFGHIJK" 4 \(A B C\)\) => "ABC\(A B C\)K")Tj +/TT6 1 Tf +-4 -1.8444 TD +0.1178 Tw +(Generates an error if there is not enough room in )Tj +/TT14 1 Tf +23.042 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1178 Tw +[( for )]TJ +/TT14 1 Tf +2.0095 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1178 Tw +(, i.e., the new string would be)Tj +-26.2517 -1.2889 TD +0.1111 Tw +[(longer than the original. If )]TJ +/TT14 1 Tf +12.7653 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1111 Tw +[( was not a string, )]TJ +/TT14 1 Tf +8.3417 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1111 Tw +[( will already have been modified since)]TJ +/TT8 1 Tf +-22.3072 -1.2889 TD +0 Tw +(RPLSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +( does not know whether )Tj +/TT14 1 Tf +10.959 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( will fit without actually attempting the transfer.)Tj +/TT18 1 Tf +-16.96 -2.0667 TD +(Warning)Tj +/TT6 1 Tf +4 0 TD +0.1456 Tw +[(: In some implementations of Interlisp, if )]TJ +/TT14 1 Tf +19.6278 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1456 Tw +[( is a substring of )]TJ +/TT8 1 Tf +8.2258 0 TD +0 Tw +(Z)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.6456 0 TD +(Z)Tj +/TT6 1 Tf +0.6001 0 TD +0.1456 Tw +[( will also be)]TJ +-34.2995 -1.2889 TD +0.0189 Tw +(modified by the action of )Tj +/TT8 1 Tf +11.4533 0 TD +0 Tw +(RPLSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.0189 Tw +[( or )]TJ +/TT8 1 Tf +1.4787 0 TD +0 Tw +(RPLCHARCODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.0189 Tw +[(. However, this is not guaranteed)]TJ +-24.934 -1.2889 TD +0.07 Tw +(to be true in all cases, so programmers should not rely on )Tj +/TT8 1 Tf +26.4093 0 TD +0 Tw +(RPLSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.07 Tw +[( or )]TJ +/TT8 1 Tf +1.5809 0 TD +0 Tw +(RPLCHARCODE)Tj +/TT6 1 Tf +-33.3911 -1.2889 TD +0.16 Tw +(altering the characters of any string other than the one directly passed as argument to)Tj +0 -1.2222 TD +0 Tw +(those functions.)Tj +/TT8 1 Tf +10 0 0 10 150 317.49 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 317.49 Tm +(RPLCHARCODE)Tj +/TT8 1 Tf +10 0 0 10 215.4 317.49 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 221.401 317.49 Tm +(X N CHAR)Tj +/TT8 1 Tf +10 0 0 10 264.608 317.49 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 270.6089 317.49 Tm +[( )-24169([Function])]TJ +-10.7343 -1.8833 TD +0.0089 Tw +(Replaces the )Tj +/TT14 1 Tf +5.7907 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0089 Tw +(th character of the string )Tj +/TT14 1 Tf +11.1079 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0089 Tw +[( with the character code )]TJ +/TT14 1 Tf +10.8594 0 TD +0 Tw +(CHAR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +(. )Tj +/TT14 1 Tf +0.7678 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0089 Tw +[( may be positive)]TJ +-32.7265 -1.2889 TD +0 Tw +(or negative. Returns the new )Tj +/TT14 1 Tf +13.2285 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. Similar to )Tj +/TT8 1 Tf +5.2979 0 TD +(RPLSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +(. Example:)Tj +/TT8 1 Tf +-20.5273 -1.6667 TD +(\(RPLCHARCODE "ABCDE" 3 \(CHARCODE F\)\) => "ABFDE")Tj +/TT6 1 Tf +-6.6667 -2.32 TD +(\()Tj +/TT12 1 Tf +0.333 0 TD +(STRPOS)Tj +/F1 1 Tf +10 0 0 10 185.4 253.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 188.18 253.06 Tm +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(START)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SKIP)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ANCHOR)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(CASEARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(BACKWARDSFLG)Tj +/TT6 1 Tf +7.2012 0 TD +[(\) )-1840([Function])]TJ +/TT8 1 Tf +-32.7303 -1.8444 TD +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0833 Tw +[( is a function for searching one string looking for another. )]TJ +/TT14 1 Tf +26.9321 0 TD +0 Tw +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +0.0833 Tw +[( and )]TJ +/TT14 1 Tf +2.3595 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0833 Tw +[( are)]TJ +-38.2931 -1.2889 TD +0.3622 Tw +(both strings \(or else they are converted automatically\). )Tj +/TT8 1 Tf +27.8464 0 TD +0 Tw +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.3622 Tw +[( searches )]TJ +/TT14 1 Tf +4.951 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +-36.398 -1.2889 TD +0.0556 Tw +(beginning at character number )Tj +/TT14 1 Tf +14.0811 0 TD +0 Tw +(START)Tj +/TT6 1 Tf +3.0005 0 TD +0.0556 Tw +(, \(or 1 if )Tj +/TT14 1 Tf +3.8702 0 TD +0 Tw +(START)Tj +/TT6 1 Tf +3.0005 0 TD +0.0556 Tw +[( is )]TJ +/TT8 1 Tf +1.326 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +(\) and looks for a sequence of)Tj +-27.0785 -1.2889 TD +0.0844 Tw +(characters equal to )Tj +/TT14 1 Tf +8.7973 0 TD +0 Tw +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +0.0844 Tw +[(. If a match is found, the character position of the first matching)]TJ +-10.5976 -1.2889 TD +0 Tw +(character in )Tj +/TT14 1 Tf +5.438 0 TD +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +( is returned, otherwise )Tj +/TT8 1 Tf +10.1909 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. Examples:)Tj +/TT8 1 Tf +-17.0298 -1.6667 TD +(\(STRPOS "ABC" "XYZABCDEF"\) => 4)Tj +0 -1 TD +(\(STRPOS "ABC" "XYZABCDEF" 5\) => NIL)Tj +T* +(\(STRPOS "ABC" "XYZABCDEFABC" 5\) => 10)Tj +/TT14 1 Tf +-4 -1.8444 TD +(SKIP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1422 Tw +[( can be used to specify a character in )]TJ +/TT14 1 Tf +17.6428 0 TD +0 Tw +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +0.1422 Tw +[( that matches any character in )]TJ +/TT14 1 Tf +14.3016 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-39.7456 -1.2889 TD +(Examples:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(STRPOS "A&C&" "XYZABCDEF" NIL &\) => 4)Tj +0 -1 TD +(\(STRPOS "DEF&" "XYZABCDEF" NIL &\) => NIL)Tj +/TT6 1 Tf +-4 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.0299 0 TD +(ANCHOR)Tj +/TT6 1 Tf +3.6006 0 TD +0.11 Tw +[( is )]TJ +/TT8 1 Tf +1.4348 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.61 0 TD +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.11 Tw +[( compares )]TJ +/TT14 1 Tf +4.9915 0 TD +0 Tw +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +0.11 Tw +[( with the characters beginning at position )]TJ +/TT14 1 Tf +19.3349 0 TD +0 Tw +(START)Tj +/TT6 1 Tf +-37.0028 -1.2889 TD +0.1122 Tw +(\(or 1 if )Tj +/TT14 1 Tf +3.4846 0 TD +0 Tw +(START)Tj +/TT6 1 Tf +3.0005 0 TD +0.1122 Tw +[( is )]TJ +/TT8 1 Tf +1.4393 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1122 Tw +[(\). If that comparison fails, )]TJ +/TT8 1 Tf +12.4609 0 TD +0 Tw +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1122 Tw +[( returns )]TJ +/TT8 1 Tf +3.9285 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1122 Tw +[( without searching)]TJ +-31.515 -1.2889 TD +0.0689 Tw +(any further down )Tj +/TT14 1 Tf +8.2809 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0689 Tw +[(. Thus it can be used to compare one string with some )]TJ +/TT10 1 Tf +25.1749 0 TD +0 Tw +(portion)Tj +/TT6 1 Tf +-37.0563 -1.2889 TD +(of another string. Examples:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(STRPOS "ABC" "XYZABCDEF" NIL NIL T\) => NIL)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +/TT18 18 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +28 0 obj +<< +/Length 7836 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-5)Tj +/TT16 1 Tf +10 0 0 10 459.55 612 Tm +(STRINGS)Tj +/TT8 1 Tf +9 0 0 9 162 570.14 Tm +(\(STRPOS "ABC" "XYZABCDEF" 4 NIL T\) => 4)Tj +/TT6 1 Tf +-4 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9666 0 TD +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +[( is )]TJ +/TT8 1 Tf +1.3082 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0467 Tw +(, the value returned by )Tj +/TT8 1 Tf +10.538 0 TD +0 Tw +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0467 Tw +[( if successful is not the starting position of the)]TJ +-19.4139 -1.2889 TD +0.1033 Tw +(sequence of characters corresponding to )Tj +/TT14 1 Tf +18.5079 0 TD +0 Tw +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +0.1033 Tw +(, but the position of the first character after)Tj +-20.3082 -1.2889 TD +0 Tw +(that, i.e., the starting position plus )Tj +/TT8 1 Tf +15.3179 0 TD +(\(NCHARS)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(. Examples:)Tj +/TT8 1 Tf +-18.519 -1.6667 TD +(\(STRPOS "ABC" "XYZABCDEFABC" NIL NIL NIL T\) => 7)Tj +0 -1 TD +(\(STRPOS "A" "A" NIL NIL NIL T\) => 2)Tj +/TT6 1 Tf +-4 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9233 0 TD +(TAIL )Tj +/TT8 1 Tf +3.0083 0 TD +0.0078 Tw +(= NIL)Tj +/TT6 1 Tf +3.0083 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5033 0 TD +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0004 Tc +0.0029 Tw +( returns )Tj +/TT8 1 Tf +3.7108 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0033 Tw +(, or a character position within )Tj +/TT14 1 Tf +13.789 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0003 Tc +0.003 Tw +( which can be)Tj +-33.9444 -1.2889 TD +0 Tc +0.04 Tw +(passed to )Tj +/TT8 1 Tf +4.4906 0 TD +0 Tw +(SUBSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.04 Tw +[(. In particular, )]TJ +/TT8 1 Tf +6.9251 0 TD +0.0956 Tw +(\(STRPOS "" ""\))Tj +/TT12 1 Tf +8.5925 0 TD +0.0956 Tc +0 Tw +( )Tj +/TT8 1 Tf +1.3913 0 TD +0 Tc +0.0956 Tw +[(=> NIL)]TJ +/TT6 1 Tf +4.3918 0 TD +0.04 Tw +[(. However, if )]TJ +/TT14 1 Tf +6.4139 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +-37.6062 -1.2889 TD +0.1322 Tw +(= T)Tj +/TT6 1 Tf +1.9325 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5556 0 TD +(STRPOS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0556 Tw +[( may return a character position outside of )]TJ +/TT14 1 Tf +19.4942 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0556 Tw +[(. For instance, note that)]TJ +-29.1835 -1.2889 TD +0 Tw +(the second example above returns 2, even though )Tj +/TT8 1 Tf +22.1191 0 TD +(A)Tj +/TT6 1 Tf +1.2002 0 TD +( has only one character.)Tj +-23.3193 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9477 0 TD +(CASEARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0278 Tw +[( is non-)]TJ +/TT8 1 Tf +3.3134 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +(, this should be a casearray like that given to )Tj +/TT8 1 Tf +20.1293 0 TD +0 Tw +(FILEPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0278 Tw +[( \(Chapter)]TJ +-35.7923 -1.2889 TD +0.17 Tw +[(25\). The casearray is used to map the string characters before comparing them to the)]TJ +0 -1.2222 TD +0 Tw +(search string.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(BACKWARDSFLG)Tj +/TT6 1 Tf +7.2012 0 TD +( is non-)Tj +/TT8 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the search is done backwards from the end of the string.)Tj +/TT8 1 Tf +10 0 0 10 102 372.86 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 372.86 Tm +(STRPOSL)Tj +/F1 1 Tf +10 0 0 10 145.8 372.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.58 372.86 Tm +(A STRING START NEG BACKWARDSFLG)Tj +/TT8 1 Tf +10 0 0 10 316.0072 372.86 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 322.0082 372.86 Tm +[( )-13124.6([Function])]TJ +/TT14 1 Tf +-21.7787 -1.8833 TD +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.1122 Tw +[( is a string \(or is converted automatically to a string\), )]TJ +/TT14 1 Tf +24.7755 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.1122 Tw +[( is a list of characters or)]TJ +-28.9761 -1.2889 TD +0.0111 Tw +(character codes. )Tj +/TT8 1 Tf +7.6017 0 TD +0 Tw +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0111 Tw +[( searches )]TJ +/TT14 1 Tf +4.2488 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0111 Tw +[( beginning at character number )]TJ +/TT14 1 Tf +14.1644 0 TD +0 Tw +(START)Tj +/TT6 1 Tf +3.0005 0 TD +0.0111 Tw +[( \(or 1 if)]TJ +/TT14 1 Tf +-36.8167 -1.2889 TD +0 Tw +(START)Tj +/TT8 1 Tf +3.0005 0 TD +0.2789 Tw +[( = NIL)]TJ +/TT6 1 Tf +4.1584 0 TD +0.1167 Tw +(\) for one of the characters in )Tj +/TT14 1 Tf +13.4085 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.1167 Tw +[(. If one is found, )]TJ +/TT8 1 Tf +8.3665 0 TD +0 Tw +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.1167 Tw +[( returns as its)]TJ +-33.7346 -1.2889 TD +0 Tw +(value the corresponding character position, otherwise )Tj +/TT8 1 Tf +24.0547 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. Example:)Tj +/TT8 1 Tf +-21.855 -1.6667 TD +(\(STRPOSL \(A B C\) "XYZBCD"\) => 4)Tj +/TT6 1 Tf +-4 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(NEG)Tj +/TT8 1 Tf +1.8003 0 TD +( = T)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +( searches for a character )Tj +/TT10 1 Tf +10.8154 0 TD +(not)Tj +/TT6 1 Tf +1.333 0 TD +( on )Tj +/TT14 1 Tf +1.6279 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +(. Example:)Tj +/TT8 1 Tf +-20.1978 -1.6667 TD +(\(STRPOSL \(A B C\) "ABCDEF" NIL T\) => 4)Tj +/TT6 1 Tf +-4 -1.8444 TD +0.1444 Tw +(If any element of )Tj +/TT14 1 Tf +8.2838 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.1444 Tw +[( is a number, it is assumed to be a character code. Otherwise, it is)]TJ +-8.8839 -1.2889 TD +0.05 Tw +(converted to a character code via )Tj +/TT8 1 Tf +15.0993 0 TD +0 Tw +(CHCON1)Tj +/TT6 1 Tf +3.6006 0 TD +0.05 Tw +[(. Therefore, it is more efficient to call )]TJ +/TT8 1 Tf +17.0916 0 TD +0 Tw +(STRPOSL)Tj +/TT6 1 Tf +-35.7915 -1.2889 TD +(with )Tj +/TT10 1 Tf +2.2832 0 TD +(A)Tj +/TT6 1 Tf +0.7222 0 TD +( a list of character )Tj +/TT10 1 Tf +8.0259 0 TD +(codes.)Tj +/TT6 1 Tf +-11.0313 -2 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +( is a bit table, it is used to specify the characters \(see )Tj +/TT8 1 Tf +23.0742 0 TD +(MAKEBITTABLE)Tj +/TT6 1 Tf +7.2012 0 TD +( below\))Tj +-31.7954 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(BACKWARDSFLG)Tj +/TT6 1 Tf +7.2012 0 TD +( is non-)Tj +/TT8 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the search is done backwards from the end of the string.)Tj +/TT8 1 Tf +-13.1792 -2.0667 TD +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0622 Tw +[( uses a bit table data structure to search efficiently. If )]TJ +/TT14 1 Tf +25.4493 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( is not a bit table, it is)]TJ +-30.2501 -1.2889 TD +0.0322 Tw +(converted to a bit table using )Tj +/TT8 1 Tf +13.268 0 TD +0 Tw +(MAKEBITTABLE)Tj +/TT6 1 Tf +7.2012 0 TD +0.0322 Tw +[(. If )]TJ +/TT8 1 Tf +1.7666 0 TD +0 Tw +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0322 Tw +[( is to be called frequently with)]TJ +-26.4365 -1.2889 TD +0.0144 Tw +(the same list of characters, a considerable savings can be achieved by converting the list to)Tj +0 -1.2222 TD +0 Tw +(a bit table )Tj +/TT10 1 Tf +4.5698 0 TD +(once)Tj +/TT6 1 Tf +1.7964 0 TD +(, and then passing the bit table to )Tj +/TT8 1 Tf +14.8691 0 TD +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +( as its first argument.)Tj +/TT8 1 Tf +10 0 0 10 102 122.43 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 122.43 Tm +(MAKEBITTABLE)Tj +/F1 1 Tf +10 0 0 10 172.8 122.43 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 175.58 122.43 Tm +(L NEG A)Tj +/TT8 1 Tf +10 0 0 10 213.3861 122.43 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 219.3871 122.43 Tm +[( )-24527([Function])]TJ +-10.3763 -1.8833 TD +0.0067 Tw +(Returns a bit table suitable for use by )Tj +/TT8 1 Tf +16.7067 0 TD +0 Tw +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0067 Tw +(. )Tj +/TT14 1 Tf +0.7633 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0067 Tw +[( is a list of characters or character codes,)]TJ +/TT14 1 Tf +-22.2708 -1.2889 TD +0 Tw +(NEG)Tj +/TT6 1 Tf +1.8003 0 TD +0.11 Tw +[( is the same as described for )]TJ +/TT8 1 Tf +13.3921 0 TD +0 Tw +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.11 Tw +[(. If )]TJ +/TT14 1 Tf +1.9999 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.11 Tw +[( is a bit table, )]TJ +/TT8 1 Tf +6.5847 0 TD +0 Tw +(MAKEBITTABLE)Tj +/TT6 1 Tf +7.2012 0 TD +0.11 Tw +[( modifies)]TJ +-35.7789 -1.2889 TD +0 Tw +(and returns it. Otherwise, it will create a new bit table.)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +31 0 obj +<< +/Length 1272 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-6)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT18 1 Tf +9 0 0 9 174 569.54 Tm +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0733 Tw +[(: If )]TJ +/TT14 1 Tf +1.8899 0 TD +0 Tw +(NEG )Tj +/TT8 1 Tf +2.5759 0 TD +0.1756 Tw +(= T)Tj +/TT6 1 Tf +1.9758 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5733 0 TD +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0733 Tw +[( must call )]TJ +/TT8 1 Tf +4.7317 0 TD +0 Tw +(MAKEBITTABLE)Tj +/TT6 1 Tf +7.2012 0 TD +0.0733 Tw +[( whether )]TJ +/TT14 1 Tf +4.3239 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0733 Tw +[( is a list )]TJ +/TT10 1 Tf +3.8402 0 TD +0 Tw +(or)Tj +/TT6 1 Tf +0.833 0 TD +0.0733 Tw +[( a bit table.)]TJ +-34.968 -1.2889 TD +0.0844 Tw +(To obtain bit table efficiency with )Tj +/TT14 1 Tf +15.5487 0 TD +0 Tw +(NEG)Tj +/TT8 1 Tf +1.8003 0 TD +(=T)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5844 0 TD +(MAKEBITTABLE)Tj +/TT6 1 Tf +7.2012 0 TD +0.0844 Tw +[( should be called with )]TJ +/TT14 1 Tf +10.41 0 TD +0 Tw +(NEG)Tj +/TT8 1 Tf +1.8003 0 TD +(=T)Tj +/TT6 1 Tf +1.2002 0 TD +(,)Tj +-39.7453 -1.2889 TD +(and the resulting inverted bit table should be given to )Tj +/TT8 1 Tf +25.0093 0 TD +(STRPOSL)Tj +/TT6 1 Tf +4.2007 0 TD +( with )Tj +/TT14 1 Tf +2.5332 0 TD +(NEG)Tj +/TT8 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT14 11 0 R +/TT16 12 0 R +/TT18 18 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +34 0 obj +<< +/Length 69 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-7)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +37 0 obj +<< +/Length 202 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(4-8)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT16 12 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +13 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +39 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +40 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +41 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +42 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +43 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +44 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +45 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +46 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +47 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +48 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBEGBL+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 49 0 R +>> +endobj +49 0 obj +<< +/Filter /FlateDecode +/Length 20017 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($CkA`Bbԃ4NPo#̒ (+iDkiJ54Z +$!HG@TJA(17; ϼwf~}oル7@69!G.7(09(,NA +e +Ţ X|@ŒP,rϛ؊PUj`PJĎM-A>6>YEC3]RG $ʇw\bekph%Jo|AFP\U"t(14~)_+*/X](*8d vp+pU)$>^M(W`V lEאܛ( Le3yϐ0,G MЊ8 s ]p5ۏ#B0p0 JQ8nu|$lznyfAl+@lΥ x Ge-M8:T~6-Yn:HpNa5myp`"Ij=i|;a8)ys`Ϯ߀O'phXk=[9F%ycY_ {)(,G Zm&*0^Ax⼛#,ùpGr\|ƣ8?Id+Qr;Ffl\—d$kr&6g9*<t{/ M +"yN2^ a|#{݋n$tzJLѐE8t}<E0A,lvy 3ĭo2A,n, h!+c9`qnL~W-Sx"iGD&">l|xwBF~0{13ZqމE2՚s J!34XeCXmrWظU6Ƨl\cZkml|:q?m` 6蜒c?g UEG$Dh¤?4jt~B6!] j,3QԨjV4!-џ;Z¿T0|7J")+pcѐKL7W)y0V"iN鯥05F`NIuˮb$j\~b:QѶyhhA5Oh5 Auokuhq%!RMS1 =Y nN"a{!MJZc&ngŇ0ZOb)* SW c/m;ř-" +E?mS"cnboݨϧӐFi_Bߌ*c"c(>FCnT ^i/bUWeaþZke7}MF}rMP#`̌(f+c= M1Kc;t۲dF%NK-2zJ|aO/ y{|@d$"h0F K!e3=&׏;c5S4Qo7{)QzD~.EsRܖ7,-ptˌ_ɴi_߼*[Z#'Mvb~>T[NfW|[7{ fk7M .]vrAlʺKKRƜԱ}Kuƪkq7zj}R˪Fwwz;̬2AdP_6MgLʚs+ +VZe8adTu" Z6 AK%jhI% @&uU5T:9%LDTQnk2L6I !qgsުΨpIVSgdbE/W(bq6.{=$2#BB܂_YG,ݭMff4їSsp/joѨr@9H $2]s cr&ǀEF lrdyb0: שTXv4yG8%TJFhdqp [UR*36F#Ǘ9fܦ|3`{>ߑH@ګۅ-ofyngԇTM UׇL*ߡVV?wgPBO^ˎp}ҡ#>)V X>SK(ċ$F1XsS>:F+;m,zdW*cg!6Yמk) =ni \an-PtܦOgҧfڥs6JB@-Y1GZr/ģ:gI.*;hj|d'ie6)d>|)Fo{>.?? ?{y_y|DMfS) M%݂;(3 *$fΩG83EȤƑCJ4 !VlL2aX)Ccm>菘*$kʢ_uK&z~2NF?rJKLH6R+4b ݒ&c6S+Q'b]vdQEτ1,װc?PcEpՌިd3A> sШ +8eݎg3-G{})f2Ͷ Lym;-ZRe_w3LKP` ji7Zaڭ-BesK-$MY8L]]iFsdj*SZRFu|H$|5jѵdA %*l`=c%=oz4 +GڮągmTc) >U"$|05#ec{sNR sA6VcK!۲Ǥ:'(YMQr LIJ'9 2Gv+M[8j:شVLH0 zwC("E}ϝ{Ck7ȰÒoo[m]խ/Xb@)W4=e.ąF>faru&g N8j_b[LxOfY/#qod~>r]QL-慌(9IqyKOo'K`/TgӷgkSu?ږغ`9dmƺ"J|_Ҩk8Q+ؑr{K1)7?g$lBj/.zt$v[n~Ʀ%G~@-5T& "=/Px،OesgG:7竂IЦE.WA41 .-vqFFK}U[ka^ifmvȲ-,k \V+"Vr>.(oZbe -3aq4/ݴuL2hb gY]T7vyQ YY2;l,|y1x,,^p߳z&ؼ@ь)TgJ~%l~4sG@-| lyD-i__fA5LFoJa^jtl^Jk؟ ɪ~u%Em!t\Yq.E%,-*?J$]J~ƣ졖.ru>q)Fe1J9Ky\ʱ)l`xl>kge@b< سb"ulp4*#XE?yop|box>wW +4^@c[orz̲[Bn+/LkI/^G>aa4"$Өòd)P7~39Sw\`>%8ۺE\z쿲tVw[JL:_.߳{C\*ZD[nfeA)}SR{,-5rRK,Yi Tjnr/Wrݭ`Y'4azwCBU?l`i5_&JOO0]^G8pރop +TQTQ2ڍ8:N_ߢz]BW?-L5x-Vpn_O7p6.xOis:~'O8xd UϒH=i -.$˟KUyHEVũ$+)G*)T%[yZ<)%|A] GH S$Xcb UXb1¿Leۨ ĆG +XqN%̱bslFIChCn,lX9ָ`*6bf(}>< +8ԉyDŷ*rD$;INWA;BQF`ahZ$z*S) ,` W[j,k`5& ~W1Byfc!!-\)|C4vZw`!T?b֥իYѪb-#C <Ƃ +$ɱÎXvn?kmBEnXoki{GZ8-oͯvX.5<6Zs0F>`۝jQptM2է y%CqOG8?0G,yKN{/O{%H~}pRc%-O5y%nN8R"[WQ>{&d4mx,>:l/r4U -cUFG:)oWpt+uD Yzt }V}Q78UGVfyiuه;VM;Z*_j#o{?AVF$QyLH{lϕou~Ru&y>3DC&,n8 +˜<# X5Vϝ&I,lDT{C!L6W('ql&0  sbM}** +U8#T<dI'/SpF*6[ho|y2?<}e.*QQ)Jظiw+ޟ$qvdƿ657|k?ouLCuw@!k+-y+سoK@S?>5wH˿2>7mzhЁa:ԨuB8g3' fpБ1#i(qìL~cӑ;Pi Oキٽۄ xG8D.A%#`d5 P[HK'(ޑ9jP {9 3:zر^$v/%ةt߻~w+M qS +X R,9kUD\D1&4.IV(ɻ("K,+>QuMٰ̽Nsj̭/]2CpzIǫ/ +6| `jM-_`SrXNuwlʎ~;ImsOx"JOUm3m|$HW{Vtćc:ڞ ͼ~׃ci0.ecV!sCu9|=*a7ս}k^W'Mx"v쑲U[F>[Uw`񉍵=t{H]CڑC-z|!̜_7g]2tff7ށ.7^_MuVl7OChOeSAU(u=Os4MDSdU rڭR47.x9]?W/iWi5E\sÝ4nᨉ6ow~ou6nm3?Ň.<o3(GH;_ Swݺ J7S뛳7>`ZGo}tMևLaw&)T'(+.-730*4<%Fd.SةHJOiĸR:8Pviѩ{GNMsFƿ=ajmF*e I>6c<<`}OP<%y@-U0PO͂j ݨ~`1aG`=lvh_>8G(<긫9x50r&ע܄j:Y| =b%d4fBI.49J~ +}9IHL^#o-Pj4i.U!uj +ZI:z7.]D*i/Qg=M('k4N/ҿ,]ƢֺPmMaQmY-Ǿ2VUak:T^Ml3kf?CՆX'X;ZYJjXJ >(F+Jݍ Uqz㼱gM1]Ev[2\! +͝ϳEKi-%Ra+)c\ +[1؂Ue3y Pqif{LʺhG2T mSAO&)Qb3DAcݛC ƻ/M+W &ƇXJPvҰ, I<U3Lxlca b `!iYl#BbS,?OE;y-o2g}LcA=KA<1&*CJՂl{03x)0(]GlwFEӿ22 yc@:'AvMev{^i?8~.z7!)<(Q'oLa9X$'!V4K[E,b5E E<F:@4^nlӿ^2%.X  r+,Xhd3dejw( =`J_b'`,& ^Rö$ I7,4IQ%l:Bz։w!0ƿfI%:-N hn3}ZȽ'Xаc(`%˲,R >Q}<DSӃنm߁,,,lȭ߻E #*;D3㕀0._-X,RTGRq=NU-M >1K9~[ZZ7RӢF,,jd] +r=0]gW`$Yǁk:lvɲsIL4>`DoCwnsYw>@Y\th`\ c ^TMj edkA1|FE\%}!7R,X1E]yO0MwRBUW7D ~9ޗZ^P]%)MF 7J:播 heef5#_qeӵo f\r'D}`ĕR !#PH]'Qj/}ʞ·6'BFׂ bZɤ훥A)U6 qN&nwv7#nTJ+SUk1hgi5?'G3h2JUhh90`˫xӇ5_RܪpgXh߿zJ]>;s_$т g'Yҙ1J B#7͖CmCJN7#H %X&[cn\6ddxwKFSTi‘=J )RV"#j[PR4#io켺J.h1SPSE]Z̞]C 6}0N׸EQ,Еu ^)K 5mYe:8Zxzw9xmGw]|Hǹ!t׵bvJc|Os'T&hmi΋漸͋)%RƓ6 -d_G)E c.-:\IuCP6nEBXp-kuYLg=uvdb:uPZ∞"HǼY8Պ7)nu$?0+ţ5/{!p]h`ʓڀ=ua:²ŅȂH -&5\j".EM߻4!Cɘg.h  +tkׂPh] z}7:b)A󂍍zdFvC+s;^ou+@㠛4-Yft*3m Ԓ {Se¶u;^͓ZO"@ gne2F8qZh\_Fu*-Zt»dv -?aq@J9ђ<'&̞ W /gH !:ZE YwzE!lzd:?" #qhap+h +NBSG^C&+J֬%B;}B +[,p]J&-S}z̢V."XPtG8qP\}첌|^d*ӒAu` +Plq/ɉUg!(c1z FAiֹ[+TO[PfS{E~gd%3vŭw=ƋC'!6 [7_ǜ%{P-U8z[8xrĜSfGA *oVvghd Ve)-X5rұ&-( +fj ZL2UWlA8˓b32mrW摩a9`鬮DMXjkXk],2QDZbZ@)Jky2kƂ +op Ke4e _ZoiྩE,۳{9DoMbٚ^yˏey ˚2p"Ax[_@X_stWkwkeX]F{/xX_ !I2;N0n;K6`-_+0\ǒ:Qǯ/ʺZ2 .ꑅ9L-7%9vL;&[6玎x7Hnl-S6~)77_^jpYA h׫;eu'zaM\H*,pYw =i^ޯ;wLC"YhIE埶Z؁ +#jC ,!4DM DKxSlWr-ͨ z -wJ^VMgMzԨޱU›~ms6?r"Srެ-&9X_~9hac4mwL! +dH, +2Q -v7P=%q-?/TGٯ?RD[C|?Kun|` '>JhINsx} Ӣl'zG@Zoni8_oyx8氖}~ 7{h[6_oa !O/_|_工pIVi4F*H"QIP:"\6 r%;KrH~]^/{? M)J?GJ2YyYQ+wU+GYs_%SeU[/YT3LuTruG#\pf&QQJEKdYA-(WUpA 1 H"I +h=ItA:uVy4WOaPb@7FB!=DpQ>J0"u# >2A\C`PFnF`TQĬGlCIo ]Ojp)D"Tp8D} I%$*`Y QBa:>@Hvu{gK|>D7 s +`6Hxr=tM6u2{U =p燢=kuVZZvݾVTցu'<ֱ7Wz9[;"G_!/гcc:JuxqI #K?%Ż ~b|iVȴ^9Sgf$jǎ +-c_+ jeu[5 G%7ovTӵ0ҽ#3O\,[|,:E~kcD2{™]S U7ϜhS%->/*-KnμJ#Rk[H~KԹ y%Idyڐk5W'Vykj!JCIn%;ey [`xI*Rr"UB Q/jeYwuW_>x0ô6H\c-Ug,'MUcʳܬ|f ˸.fs.Ȋ3 .8cLmk}ۀ'U]W]!hrwD88ɢnKJO$M77vG){u½8Wfx%pZ zwI+>> (z(b!C$ܵV{ @6 <oM*7ey͂`TA-,k%p1yg5Ѥ7#$t2 %Nrh2L IJJIy"d>fmd!%Kj !+HYMb0A8&a^x\%7H;*N4>b2MtͤvGbEt*Fg`XNaXCet]g6 s(ы2F7h;E;i0 egF(֋a,YX:qJM%.`fѤ\6ΩvYRݚQ|Wh@䱒'$Ǔ>Hy6:DɱQ8މUB1s~P# ;'j?؟؂6ժUr}!VXjՆ#|gKj\WMƁOTx]O;cYlػk!pݏׅʂt¬#5psGjqGjlSc햎OʮLk7z-)-* (vr1wD;kiFbC 8XOG~ +99ỳ5_p'[g`7JX#,*ػ.M/8V{Πð: RI> KO6mNsi4m6IoeXQadEaADtXpayA\azz.,_swrNJdoR.>y0JgTrd 奮>-\؏BD=JgtF}e RL)?ڣ􄪔|jۄ>nޢBZ~K]#27Kߦ,IIdSG"~|P +mbZBr!Y>FL~D$c((__tv!kTu~Le7 > x~*>$on>OyDrc?&9+)rz} +Q;{~PI?4AbVz|C|ICx_W>|Q ~M/Ǵ׮Rw/ > qF#TJ$޹Ab9+8DN.zS(b~z}#E۟;P[O}uiz\hڳ|_dz. h0U15~Ͷ)̖ vueƷuF6B/M̖ ,g#Q۞C3q6i>jHf`mCgb;kk0t6S`5Wm[ݘl0 O3Vu,OuQ +XGiFW5hm0n0C0eA+]%91i |4{;GLiuk8 +̂R#˽?6(b.Vd˄,I]Fԥ2 *4R\ {&aF"@m9q +Vm we-lnO8){k",nްDa|kh5HP^gr&al`uZ7j }7MV⶟k7|ւIPs"c;Y:ʓld j;| jj^[[[t:-4QϢƐ<`I3e!و氹3֮VZ&[#5!j6T Je4KRce\NqDt`4 fdOuVtrvǝ+ +{qϹof{/ѷ*.toCqC8Ix(lJ!uJ݀M5E79vmk7:hK66uݔ%Uo:jZ650DŽC*E}|i֪̓W73+x7wMs8:C uS祗wG<~2qJk^GVs[Ξ7-BN86ມ+);#S`ֵ7Oo[6zwug%o_Wrkht>σb˃]icm<}޸qMWwt:Vp}́K4FlӖD 2 ,K>R Q|8Yo ߱2>ajuL qҢG]ϏgZvゔR1).T(n+UzIg|U(rMje(L|s._ծЧ4RQQkhޓ>Y#3t]^VtAO43L2)*T82IPeJf'_#!O#wdH6y .ZNU5*yL^"/ߒ$ϓߐ__g]Jw侤Kz\k9E$YC* dyc;YA$dY*%*m˵֢MJ3,%ґLXZT0"~J_3Y [mhܧ졀c͗р+{d6rNi=YTPku]l2Nw˕iiUbMT7M'7jX6Kzj֑kZBfh] +ɡu9kdKwlc[Bbr},B`UYOkY n 8,<,YdI%,2hQAi xkܡ=(vo;^ #U|Yއ޶}EvfߝXʓHz +<'nр oGw͝Ѩ*괐Z]F35vt"I$a*wc +ǟ'BWن'O%(ʈE9JZ/_毫v +\)p۱Nyh=KT p zqp3c}Ͱ;AoF2P֓WO'$6WgX݌eE\]!_ ɌkAI?$3uwG2`@< r$A@$0< !XېCJdvmhE }.!3> 1\ҊԲ^dM`Ot隐n%I/iwՖ&Gwg{ XLij Š:QN9ԟ2pr4A"MCt/;޿r6747XnVkb + 4X<,Gw[?^T[6$NSSI3IO=M6BҢQ|C> +endobj +51 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 50 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 51 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 56 +/Widths [333 0 0 0 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 39 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 84 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 778 0 278 0 0 0 0 722 0 +0 0 722 667 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 40 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 0 0 500 500 0 500 0 250 250 0 0 0 0 +0 778 0 709 0 611 556 763 832 337 0 0 611 946 831 786 +0 0 668 525 613 778 0 0 0 0 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 41 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 147 +/Widths [600 0 600 0 0 600 600 0 600 600 0 0 600 600 600 0 +600 600 600 600 600 600 600 600 0 600 0 0 0 600 600 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 0 0 600 600 600 0 0 0 0 0 +0 600 0 0 600 0 0 600 600 600 0 0 0 0 600 600 +0 0 600 600 600 0 0 600 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 42 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 +0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 0 407 500 389 0 500 0 278 0 0 0 778 556 444 +500 0 389 389 333 0 0 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 43 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 0 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 44 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 0 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 45 0 R +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 778 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 46 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 78 +/LastChar 116 +/Widths [833 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 0 +0 0 0 500 0 0 0 500 0 556 0 333 0 0 0 0 +611 556 0 0 389 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 47 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBEGBL+Symbol +/Encoding /Identity-H +/DescendantFonts [ 52 0 R ] +/ToUnicode 53 0 R +>> +endobj +52 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBEGBL+Symbol +/FontDescriptor 48 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +53 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPn0 [dld `xI} v+)}$Nс$x᎔!A~7-FYl88Lܺ5Q.SıCU yI)/]W'[dGCOB9_"(k y~CC% k_lA4 TJU$ivYT-g^izj$[pZq`j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +54 0 obj +<< +/S /D +>> +endobj +55 0 obj +<< +/Nums [0 54 0 R ] +>> +endobj +14 0 obj +<< +/Type /Pages +/Kids [1 0 R 15 0 R 19 0 R 24 0 R 27 0 R 30 0 R 33 0 R 36 0 R] +/Count 8 +/MediaBox [0 0 612 792] +>> +endobj +56 0 obj +<< +/CreationDate (D:20210202102640-06'00') +/ModDate (D:20210202102640-06'00') +/Producer (Apple pstopdf) +>> +endobj +57 0 obj +<< +/Type /Catalog +/Pages 14 0 R +/PageLabels 55 0 R +>> +endobj +xref +0 58 +0000000000 65535 f +0000064968 00000 n +0000000016 00000 n +0000006316 00000 n +0000060819 00000 n +0000061171 00000 n +0000061376 00000 n +0000061669 00000 n +0000062197 00000 n +0000062710 00000 n +0000063099 00000 n +0000063419 00000 n +0000063756 00000 n +0000038163 00000 n +0000065705 00000 n +0000065049 00000 n +0000006506 00000 n +0000014113 00000 n +0000064063 00000 n +0000065133 00000 n +0000014294 00000 n +0000019088 00000 n +0000060994 00000 n +0000064331 00000 n +0000065217 00000 n +0000019270 00000 n +0000027814 00000 n +0000065301 00000 n +0000028007 00000 n +0000035896 00000 n +0000065385 00000 n +0000036076 00000 n +0000037401 00000 n +0000065469 00000 n +0000037571 00000 n +0000037691 00000 n +0000065553 00000 n +0000037788 00000 n +0000038042 00000 n +0000038304 00000 n +0000038501 00000 n +0000038707 00000 n +0000038907 00000 n +0000039098 00000 n +0000039301 00000 n +0000039503 00000 n +0000039704 00000 n +0000039899 00000 n +0000040104 00000 n +0000040294 00000 n +0000060401 00000 n +0000060609 00000 n +0000064474 00000 n +0000064677 00000 n +0000065637 00000 n +0000065665 00000 n +0000065836 00000 n +0000065959 00000 n +trailer +<< +/Size 58 +/Root 57 0 R +/Info 56 0 R +/ID [] +>> +startxref +66029 +%%EOF diff --git a/docs/medley-irm/05-ARRAY.TEDIT b/docs/medley-irm/05-ARRAY.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..14afeefa3fad4f38e04f6654df14642f5d8bf208 GIT binary patch literal 8020 zcmeHL-E!N;6<*3tV#i@RZGP&D&g4|7Q*ugaB-v8!WTq`dff8a0WJt)B;_(FtE=8me zzyUzX@-y_NZ_(*huJZ)F=tK0Pm!0V&xaXY3E=iG6th(-Wrj-Lc)e4f~dRU^UBDr(+#;%bTkJ#qxf+{PLv`mWTzs6i%GWGzzm35YZPY z{`%tlCGO#SC^7-~4kAHzDON-uX(zafaVKP|FCyGOMOq+oq@>I};Ac;KQ_wT9iWESz zg$0pSltbV;O|a6`KhJnsS>9Z(!g`hLlkF5WfH-EGlD&)2;yKa+-t*C_M881vn3{_r zOAN#qy(FKMpJcm(zm_->s~8__pF@zudFp3*4eH6sNfJYoknoi=fgeLp!pS(w!xp zrBOIiLs|>rb;PcKf7}yQd zl5kxfYg_!E}T&1}0=i?L3036F$rhZgYnoj(4N;-*qgo7~fRkqkqfQ1Xtx|{ z+Zr^S!!|yfEz85t%C_Tm!L8On<^lS*FZ+=^hqEw32g3m(6v!;YFlrDClO!Wg;ZHIS zq9hCB&BiV$Tw^$G`ywAFET(ctlz0{eo}!xRnnY&d;6@Ntq5 zO6#kjz0mcn@{h`JLgYz`HpX!;c`o}1k2ge_Fb=R~GHe;LoQ-@O0@OS?&LxlotjG|n zfQ#1XqLHfLJx|7P<|Fzz7{*vMtQrPUg5?<>!zc-HPa&Aqm}5H6G_G{Pq9a)@{XXSU z8Cor?+0iaOuACuO#ge&Di>mfnbhTXf5g>)KOw%N-;n{S|-NS6$h002iXYDW|JumA-YA~PXYu1zLW3t(^FnxCiIZ_bY|2ecIf_t|Pev^gUN2HMSK#vsF%mR5 zj|tjoNjHgCuB}rg!yfMWz2p?v*SUe&JsY zi!H>%syO@B_%J{~CthP!Ufbz{-o$aO# ztwsa7cGIqVd@bYmcBkbb!QN53bP0U~4Qt75iid^^cXF^9Bn?pEqJi@5H=sIDHekG z&8MbmH~yD1v$h~Jd$zUXxVx&9ix>VLL0D~D^~ac)M_XL_o9kPbrgR;3Q%*Ox{?j@A zf4j}M+oefmu&B>4tJHrq(Kgno9k0=;)hdtFx5OQ>NvqPI`CZ&t5@JdGMU?(pQiMyM zwQ2g&_wn8pcT3-jcTi?&>E^WL-1@#)6I;mpF74d7DN3c%w~MrwJR`bJE2F+7{#N=s z5^ma0Y}fEiu?zf9loH_GIp1ekh4>9K7w9Y@I{b5o@GmkXZkvo0yVD;Qy=Zh_S$@ii zU(YDeSj;$ZOZWM-;bL7Adt%R^b2a!ip%V22l>NR$k@}lhJ$J>slOs)~jV*sD-rjHF zA?Au7@jF(P_*mR(TTME4TKL}`{=s+_P;u)6@s{U!ma7?2{32-q7pj{W<{F}Mo=6rX zl>A7%Q*T<`u2a`eFOp>+Nd>w46MDOYf1HF{^oBe1`8F-*c8HCL%tEY0py!>v&Oy^& z-L<`jTbgosf>dFH4WS5WK@XM?aUtHrKVIOiNKtNRimxf3pq2NX{Z$9=5r^8)VxWci zN=qR+OB@SArZoRbYbFAjxvvRqlODgWn)gdhFhcLoQ9jcY zEkwhCF*C6=<|u7VF_@U5HBvL4lLH(#C74;LTt2;CxsdEEibOFX=>Ql_V~~t-_=ZA0 z8zBRp34qiXUNXQe@8_`4KE&Ac;0 z_mIkJcxuh?7*ii;o;e&y6)XMezaIyRfN?ervM{wooFr!^kp>xdlO9IjY_dt}Uqa6e zf-BIgY6rQCW)LokB>ADgHKYX1PoR)rijY5Onl5s_C9+fIGA~BaQHFW z;`+Rz2~DHUrR@#7i^u7OA!0J{-{|i8oVzebF>~=%12E%-s|Tx;N{Z`66DXJWv>{3n QCl^1F>%BjgN-w_qCs{tzEdT%j literal 0 HcmV?d00001 diff --git a/docs/medley-irm/05-ARRAY.pdf b/docs/medley-irm/05-ARRAY.pdf new file mode 100644 index 00000000..36329f3f --- /dev/null +++ b/docs/medley-irm/05-ARRAY.pdf @@ -0,0 +1,1222 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 7527 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 468 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(5-1)Tj +/TT4 1 Tf +10 0 0 10 453.88 568.2 Tm +(5. ARRAYS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +0.0244 Tw +[(An Interlisp array is a one-dimensional vector of objects. Arrays are generally created by the function)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +(. By contrast, Common Lisp arrays can be multi-dimensional.)Tj +-3.0005 -2.0667 TD +0.1878 Tw +[(Note: Interlisp arrays and Common Lisp arrays are )]TJ +/TT10 1 Tf +24.7803 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.1878 Tw +[( the same types. Interlisp functions only)]TJ +-26.1133 -1.2222 TD +0 Tw +(accept Interlisp arrays and vice versa. There are no functions to convert between the two types.)Tj +/TT8 1 Tf +10 0 0 10 102 478.6 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 478.6 Tm +(ARRAY)Tj +/F1 1 Tf +10 0 0 10 135 478.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.78 478.6 Tm +(SIZE TYPE INIT ORIG )Tj +/TT8 1 Tf +10 0 0 10 251.1984 478.6 Tm +(\))Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 478.6 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0133 Tw +(Creates and returns a new array that holds )Tj +/TT14 1 Tf +19.2449 0 TD +0 Tw +(SIZE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( objects of type )]TJ +/TT14 1 Tf +6.9005 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[(. If )]TJ +/TT14 1 Tf +1.7099 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( is )]TJ +/TT8 1 Tf +1.2415 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0133 Tw +(, the)Tj +-38.0983 -1.2889 TD +0.0722 Tw +[(array can contain any arbitrary Lisp datum. In general, )]TJ +/TT14 1 Tf +25.4659 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0722 Tw +[( may be any of the various)]TJ +-27.8663 -1.2889 TD +0.1944 Tw +(field specifications that are legal in )Tj +/TT8 1 Tf +16.7458 0 TD +0 Tw +(DATATYPE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1944 Tw +[( declarations \(see Chapter 8\): )]TJ +/TT8 1 Tf +14.001 0 TD +0 Tw +(POINTER)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +/TT8 1 Tf +-39.7483 -1.2889 TD +(FIXP)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5867 0 TD +(FLOATP)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5867 0 TD +(\(BITS )Tj +/TT14 1 Tf +3.8095 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[(, etc. Medley will, if necessary, choose an enclosing type if)]TJ +-12.184 -1.2889 TD +0.0033 Tw +(the given one is not supported; for example, an array of )Tj +/TT8 1 Tf +24.8389 0 TD +0.0089 Tw +(\(BITS 3\))Tj +/TT6 1 Tf +4.8097 0 TD +0.0002 Tc +0.0031 Tw +( may be represented by)Tj +-29.6486 -1.2889 TD +0 Tc +0 Tw +(an array of )Tj +/TT8 1 Tf +5.0571 0 TD +(\(BITS 8\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT14 1 Tf +-9.8579 -2.0667 TD +(INIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1544 Tw +[( is the initial value for each element of the new array. If not specified, the array)]TJ +-2.4004 -1.2889 TD +0 Tw +(elements will be initialized with 0 \(for number arrays\) or )Tj +/TT8 1 Tf +25.3145 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( \(all other types\).)Tj +-27.1147 -2.0667 TD +0.0133 Tw +(Arrays can have either 0-origin or 1-origin indexing, as specified by the )Tj +/TT14 1 Tf +31.8724 0 TD +0 Tw +(ORIG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( argument; if)]TJ +/TT14 1 Tf +-34.2728 -1.2889 TD +0 Tw +(ORIG)Tj +/TT6 1 Tf +2.4004 0 TD +( is not specified, the default is 1. )Tj +-2.4004 -2.0667 TD +0.0744 Tw +(Arrays of type )Tj +/TT8 1 Tf +6.8625 0 TD +0 Tw +(FLOATP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0744 Tw +[( are stored unboxed. This increases the space and time efficiency)]TJ +-10.4631 -1.2889 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.1778 0 TD +(FLOATP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0489 Tw +[( arrays. If you want to use boxed floating point numbers, use an array of type)]TJ +/TT8 1 Tf +-4.7784 -1.2889 TD +0 Tw +(POINTER)Tj +/TT6 1 Tf +4.2007 0 TD +( instead of )Tj +/TT8 1 Tf +4.8418 0 TD +(FLOATP)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 279.8 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 279.8 Tm +(ARRAYP)Tj +/TT8 1 Tf +10 0 0 10 140.4 279.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 146.401 279.8 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 151.8018 279.8 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 157.8028 279.8 Tm +[( )-31369.7([Function])]TJ +-3.5337 -1.8833 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is an array, )Tj +/TT8 1 Tf +5.3931 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +10 0 0 10 102 239.97 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 239.97 Tm +(ELT)Tj +/TT8 1 Tf +10 0 0 10 124.2 239.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 130.201 239.97 Tm +(ARRAY)Tj +/F1 1 Tf +10 0 0 10 157.2054 239.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 159.9854 239.97 Tm +(N)Tj +/TT8 1 Tf +10 0 0 10 165.3862 239.97 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 171.3872 239.97 Tm +[( )-29860.3([Function])]TJ +-5.043 -1.8833 TD +(Returns the )Tj +/TT14 1 Tf +5.3643 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(th element of the array )Tj +/TT14 1 Tf +10.2896 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-19.2544 -2.0667 TD +0.0422 Tw +(Causes the error, )Tj +/TT8 1 Tf +7.8625 0 TD +0.1022 Tw +(Arg not array)Tj +/TT6 1 Tf +8.0057 0 TD +0.0422 Tw +(, if )Tj +/TT14 1 Tf +1.4585 0 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0422 Tw +[( is not an array. Causes the error, )]TJ +/TT8 1 Tf +15.463 0 TD +0 Tw +(Illegal)Tj +-35.7902 -1.2889 TD +(Arg)Tj +/TT6 1 Tf +1.8003 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( is out of bounds.)Tj +/TT8 1 Tf +10 0 0 10 102 169.94 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 169.94 Tm +(SETA)Tj +/TT8 1 Tf +10 0 0 10 129.6 169.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 135.601 169.94 Tm +(ARRAY)Tj +/F1 1 Tf +10 0 0 10 162.6054 169.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 165.3853 169.94 Tm +(N)Tj +/F1 1 Tf +10 0 0 10 170.7862 169.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 173.5662 169.94 Tm +(VAL)Tj +/TT8 1 Tf +10 0 0 10 189.7689 169.94 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 195.7698 169.94 Tm +[( )-27151.1([Function])]TJ +-7.7522 -1.8833 TD +(Sets the )Tj +/TT14 1 Tf +3.6411 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(th element of )Tj +/TT14 1 Tf +6.0562 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +(, and returns )Tj +/TT14 1 Tf +5.897 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-24.1675 -2.0667 TD +0.0189 Tw +(Causes the error, )Tj +/TT8 1 Tf +7.7925 0 TD +0.0456 Tw +(Arg not array)Tj +/TT6 1 Tf +7.8924 0 TD +0.0189 Tw +(, if )Tj +/TT14 1 Tf +1.4118 0 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0189 Tw +[( is not an array. the error, )]TJ +/TT8 1 Tf +12.1143 0 TD +0.0456 Tw +(Illegal Arg)Tj +/TT6 1 Tf +6.6466 0 TD +0.0189 Tw +(, if)Tj +/TT14 1 Tf +-38.8581 -1.2889 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +[( is out of bounds. Can cause the error, )]TJ +/TT8 1 Tf +17.6478 0 TD +0.1022 Tw +(Non-numeric arg)Tj +/TT6 1 Tf +9.1037 0 TD +0.0422 Tw +(, if )Tj +/TT14 1 Tf +1.4585 0 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0422 Tw +[( is an array whose)]TJ +/TT8 1 Tf +-31.8106 -1.2889 TD +0 Tw +(ARRAYTYP)Tj +/TT6 1 Tf +4.8008 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(FIXP)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(FLOATP)Tj +/TT6 1 Tf +3.6006 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +( is non-numeric.)Tj +/TT8 1 Tf +10 0 0 10 102 89.54 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 89.54 Tm +(ARRAYTYP)Tj +/TT8 1 Tf +10 0 0 10 151.2 89.54 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 157.201 89.54 Tm +(ARRAY)Tj +/TT8 1 Tf +10 0 0 10 184.2054 89.54 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 190.2063 89.54 Tm +[( )-27769.3([Function])]TJ +-7.134 -1.8833 TD +0.02 Tw +(Returns the type of the elements in )Tj +/TT14 1 Tf +15.7987 0 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.02 Tw +(, a value corresponding to the second argument)Tj +-18.7992 -1.2889 TD +0 Tw +(to )Tj +/TT8 1 Tf +1.1221 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +16 0 obj +<< +/Length 2608 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(5-2)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(If )Tj +/TT8 1 Tf +0.961 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0411 Tw +[( coerced the array type as described above, )]TJ +/TT8 1 Tf +19.5257 0 TD +0 Tw +(ARRAYTYP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0411 Tw +[( returns the )]TJ +/TT10 1 Tf +5.4646 0 TD +0 Tw +(new)Tj +/TT6 1 Tf +1.6675 0 TD +0.0411 Tw +[( type. For)]TJ +-35.4201 -1.2889 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.249 0 TD +(\(ARRAYTYP \(ARRAY 10 \(BITS 3\)\)\))Tj +/TT6 1 Tf +18.603 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(BYTE)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 536.29 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 536.29 Tm +(ARRAYSIZE)Tj +/TT8 1 Tf +10 0 0 10 204.6 536.29 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.601 536.29 Tm +(ARRAY)Tj +/TT8 1 Tf +10 0 0 10 237.6053 536.29 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 243.6063 536.29 Tm +[( )-27169.3([Function])]TJ +-7.734 -1.8833 TD +(Returns the size of )Tj +/TT14 1 Tf +8.437 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +(. Generates the error, )Tj +/TT8 1 Tf +9.5244 0 TD +(Arg not array)Tj +/TT6 1 Tf +7.8013 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +( is not an array.)Tj +/TT8 1 Tf +10 0 0 10 150 497.69 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 497.69 Tm +(ARRAYORIG)Tj +/TT8 1 Tf +10 0 0 10 204.6 497.69 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.601 497.69 Tm +(ARRAY)Tj +/TT8 1 Tf +10 0 0 10 237.6053 497.69 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 243.6063 497.69 Tm +[( )-27169.3([Function])]TJ +-7.734 -1.8833 TD +0.0344 Tw +(Returns the origin of )Tj +/TT14 1 Tf +9.5421 0 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0344 Tw +[(, which may be 0 or 1. Generates an error, )]TJ +/TT8 1 Tf +19.2431 0 TD +0.0822 Tw +(Arg not array)Tj +/TT6 1 Tf +7.9657 0 TD +0 Tw +(,)Tj +-39.7514 -1.2889 TD +(if )Tj +/TT14 1 Tf +0.874 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +( is not an array.)Tj +/TT8 1 Tf +10 0 0 10 150 447.49 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 447.49 Tm +(COPYARRAY)Tj +/TT8 1 Tf +10 0 0 10 204.6 447.49 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.601 447.49 Tm +(ARRAY)Tj +/TT8 1 Tf +10 0 0 10 237.6053 447.49 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 243.6063 447.49 Tm +[( )-27169.3([Function])]TJ +-7.734 -1.8833 TD +0.0833 Tw +(Returns a new array of the same size and type as )Tj +/TT14 1 Tf +22.7096 0 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0833 Tw +(, and with the same contents as)Tj +/TT14 1 Tf +-25.7101 -1.2889 TD +0 Tw +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +(. Generates an error, )Tj +/TT8 1 Tf +9.7192 0 TD +(Arg not array)Tj +/TT6 1 Tf +7.8013 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +( is not an array.)Tj +ET +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT16 12 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +19 0 obj +<< +/Length 64 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 468 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(5-3)Tj +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +22 0 obj +<< +/Length 201 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(5-4)Tj +/TT16 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT16 12 0 R +>> +/ExtGState << +/GS1 13 0 R +>> +>> +endobj +13 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +24 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +25 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +26 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +27 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +28 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +29 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +30 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +31 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +32 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 32 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 53 +/Widths [333 0 0 0 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 24 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 0 +0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 722 667 0 0 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 25 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 0 +500 500 0 0 0 0 0 0 500 0 250 250 0 0 0 0 +0 778 611 709 0 0 556 763 0 337 0 0 611 946 831 0 +0 0 668 525 613 0 0 0 0 0 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 0 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 26 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 0 0 0 0 0 600 600 0 0 0 600 0 0 +600 600 0 600 0 0 0 0 600 0 0 0 0 0 0 0 +0 600 600 0 600 600 600 0 0 600 0 0 600 0 600 600 +600 0 600 600 600 0 0 0 600 600 0 0 0 0 0 0 +0 600 0 600 0 600 0 600 0 600 0 0 600 600 600 600 +0 0 600 0 600 600 0 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 27 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 101 +/LastChar 119 +/Widths [389 0 0 0 0 0 0 0 0 556 444 0 0 0 0 333 +0 0 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 28 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 65 +/LastChar 90 +/Widths [600 0 600 0 600 0 600 0 600 0 0 600 0 0 600 600 +0 600 600 600 0 0 0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 29 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 0 0 0 600 0 600 0 600 0 0 600 0 600 600 +600 0 600 600 600 0 600 0 600 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 30 0 R +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 31 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 14 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +33 0 obj +<< +/S /D +>> +endobj +34 0 obj +<< +/Nums [0 33 0 R ] +>> +endobj +14 0 obj +<< +/Type /Pages +/Kids [1 0 R 15 0 R 18 0 R 21 0 R] +/Count 4 +/MediaBox [0 0 612 792] +>> +endobj +35 0 obj +<< +/CreationDate (D:20210202102640-06'00') +/ModDate (D:20210202102640-06'00') +/Producer (Apple pstopdf) +>> +endobj +36 0 obj +<< +/Type /Catalog +/Pages 14 0 R +/PageLabels 34 0 R +>> +endobj +xref +0 37 +0000000000 65535 f +0000016016 00000 n +0000000016 00000 n +0000007595 00000 n +0000013148 00000 n +0000013324 00000 n +0000013517 00000 n +0000013816 00000 n +0000014328 00000 n +0000014799 00000 n +0000015017 00000 n +0000015261 00000 n +0000015711 00000 n +0000011202 00000 n +0000016417 00000 n +0000016097 00000 n +0000007785 00000 n +0000010446 00000 n +0000016181 00000 n +0000010616 00000 n +0000010731 00000 n +0000016265 00000 n +0000010828 00000 n +0000011081 00000 n +0000011343 00000 n +0000011540 00000 n +0000011746 00000 n +0000011946 00000 n +0000012137 00000 n +0000012340 00000 n +0000012542 00000 n +0000012743 00000 n +0000012938 00000 n +0000016349 00000 n +0000016377 00000 n +0000016520 00000 n +0000016643 00000 n +trailer +<< +/Size 37 +/Root 36 0 R +/Info 35 0 R +/ID [<8f9f492ba0578b6e24fb42de70991de7><8f9f492ba0578b6e24fb42de70991de7>] +>> +startxref +16713 +%%EOF diff --git a/docs/medley-irm/06-HASHARRAYS.TEDIT b/docs/medley-irm/06-HASHARRAYS.TEDIT new file mode 100644 index 00000000..8529b8e8 --- /dev/null +++ b/docs/medley-irm/06-HASHARRAYS.TEDIT @@ -0,0 +1,79 @@ +INTERLISP-D REFERENCE MANUAL HASHARRAYS 6. HASHARRAYS 3 Hash arrays(HASH% ARRAYS NIL Hash% arrays NIL (NIL) 1) let you associate arbitrary Lisp objects (hash keys) with other objects (hash values), so you can get from key to value quickly. There are functions for creating hash arrays, putting a hash key/value pair in a hash array, and quickly retrieving the hash value associated with a given hash key. By default, the hash array functions use EQ for comparing hash keys. This means that if non-symbols are used as hash keys, the exact same object (not a copy) must be used to retrieve the hash value. However, you can specify the function used to compare hash keys and to hash a hash key to a number. You can, for example, create hash arrays where EQUAL but non-EQ strings will hash to the same value. Specifying alternative hashing algorithms is described below. In the description of the functions below, the argument HARRAY should be a hasharray created by HASHARRAY. For convenience in interactive program development, it may also be NIL, in which case a hash array (SYSHASHARRAY) provided by the system is used; you must watch out for confusions if this form is used to associate more than one kind of value with the same key. Note: For backwards compatibility, the hash array functions will accept a list whose CAR is a hash array, and whose CDR is the overflow method for the hash array (see below). However, hash array functions are guaranteed to perform with maximum efficiency only if a direct value of HASHARRAY is given. Note: Interlisp hash arrays and Common Lisp hash tables are the same data type, so functions from both may be intermixed. The only difference between the functions may be argument order, as in MAPHASH and CL:MAPHASH (see below). (HASHARRAY(HASHARRAY (Function) NIL NIL (NIL) 1) MINKEYS OVERFLOW HASHBITSFN EQUIVFN RECLAIMABLE REHASH-THRESHOLD) [Function] Creates a hash array with space for at least MINKEYS hash keys, with overflow method OVERFLOW. See discussion of overflow behavior below. If HASHBITSFN and EQUIVFN are non-NIL, they specify the hashing function and comparison function used to interpret hash keys. This is described in the section on user-specified hashing functions below. If HASHBITSFN and EQUIVFN are NIL, the default is to hash EQ hash keys to the same value. If RECLAIMABLE is T the entries in the hash table will be removed if the key has a reference count of one and the table is about to be rehashed. This allows the system, in some cases, to reuse keys instead of expanding the table. Note: CL:MAKE-HASH-TABLE does not allow you to specify your own hashing functions but does provide three built-in types specified by Common Lisp, the Language. (HARRAY(HARRAY (Function) NIL NIL (NIL) 1) MINKEYS) [Function] Provided for backward compatibility, this is equivalent to (HASHARRAY MINKEYS 'ERROR), i.e. if the resulting hasarray gets full, an error occurs. (HARRAYP(HARRAYP (Function) NIL NIL (NIL) 2) X) [Function] Returns X if it is a hash array; otherwise NIL. HARRAYP returns NIL if X is a list whose CAR is an HARRAYP, even though this is accepted by the hash array functions (see below). (PUTHASH(PUTHASH (Function) NIL NIL (NIL) 2) KEY VAL HARRAY) [Function] Associates the hash value VAL with the hash key KEY in HARRAY. Replaces the previous hash value, if any. If VAL is NIL, any old association is removed (hence a hash value of NIL is not allowed). If HARRAY is full when PUTHASH is called with a key not already in the hash array, the function HASHOVERFLOW is called, and the PUTHASH is applied to the value returned (see below). Returns VAL. ((GETHASH (Function) NIL NIL (NIL) 2)GETHASH KEY HARRAY) [Function] Returns the hash value associated with the hash key KEY in HARRAY. Returns NIL, if KEY is not found. (CLRHASH(CLRHASH (Function) NIL NIL (NIL) 2) HARRAY) [Function] Clears all hash keys/values from HARRAY. Returns HARRAY. (HARRAYPROP(HARRAYPROP (Function) NIL NIL (NIL) 2) HARRAY PROP NEWVALUE) [NoSpread Function] Returns the property PROP of HARRAY; PROP can have the system-defined values SIZE (the maximum occupancy of HARRAY), NUMKEYS (number of occupied slots), OVERFLOW (overflow method), HASHBITSFN (hashing function) and EQUIVFN (comparison function). Except for SIZE and NUMKEYS, a new value may be specified as NEWVALUE. By using other values for PROP, the user may also set and get arbitrary property values, to associate additional information with a hash array. The HASHBITSFN or EQUIVFN properties can only be changed if the hash array is empty. (HARRAYSIZE(HARRAYSIZE (Function) NIL NIL (NIL) 2) HARRAY) [Function] Returns the number of slots in HARRAY. It's equivalent to (HARRAYPROP HARRAY 'SIZE). (REHASH(REHASH (Function) NIL NIL (NIL) 2) OLDHARRAY NEWHARRAY) [Function] Hashes all hash keys and values in OLDHARRAY into NEWHARRAY. The two hash arrays do not have to be (and usually aren't) the same size. Returns NEWHARRAY. (MAPHASH(MAPHASH (Function) NIL NIL (NIL) 2) HARRAY MAPHFN) [Function] MAPHFN is a function of two arguments. For each hash key in HARRAY, MAPHFN will be applied to the hash value, and the hash key. For example: [MAPHASH A (FUNCTION (LAMBDA (VAL KEY) (if (LISTP KEY) then (PRINT VAL)] will print the hash value for all hash keys that are lists. MAPHASH returns HARRAY. Note: the argument order for CL:MAPHASH is MAPHFN HARRAY. (DMPHASH(DMPHASH (Function) NIL NIL (NIL) 3) HARRAY1 HARRAY2 ... HARRAYN) [NLambda NoSpread Function] Prints on the primary output file LOADable forms which will restore the hash-arrays contained as the values of the atoms HARRAY1, HARRAY2, ... HARRAYN. Example: (DMPHASH SYSHASHARRAY) will dump the system hash-array. All EQ identities except symbols and small integers are lost by dumping and loading because READ will create new structure for each item. Thus if two lists contain an EQ substructure, when they are dumped and loaded back in, the corresponding substructures while EQUAL are no longer EQ. The HORRIBLEVARS file package command (Chapter 17) provides a way of dumping hash tables such that these identities are preserved. Hash Overflow 1 When a hash array(HASH% ARRAY NIL Hash% array NIL (NIL) 3 SUBNAME OVERFLOW SUBTEXT overflow) becomes full, trying to add another hash key will cause the function HASHOVERFLOW to be called. This either enlarges the hash array, or causes the error Hash table full. How hash overflow is handled is determined by the value of the OVERFLOW property of the hash array (which can be accessed by HARRAYPROP). The possibilities for the overflow method are: the symbol ERROR The error Hash array full is generated when the hash array overflows. This is the default overflow behavior for hash arrays returned by HARRAY. NIL The array is automatically enlarged by at least a factor 1.5 every time it overflows. This is the default overflow behavior for hash arrays returned by HASHARRAY. a positive integer N The array is enlarged to include at least N more slots than it currently has. a floating point number F The array is changed to include F times the number of current slots. a function or lambda expression FN Upon hash overflow, FN is called with the hash array as its argument. If FN returns a number, that will become the size of the array. Otherwise, the new size defaults to 1.5 times its previous size. FN could be used to print a message, or perform some monitor function. Note: For backwards compatibility, the hash array functions accept a list whose CAR is the hash array, and whose CDR is the overflow method. In this case, the overflow method specified in the list overrides the overflow method set in the hash array. Hash array functions perform with maximum efficiency only if a direct value of HASHARRAY is given. Specifying Your Own Hashing Functions 1 In general terms, when a key is looked up in a hash array(HASH% ARRAY NIL Hash% array NIL (NIL) 3 SUBNAME USER-SPECIFIED% FUNCTIONS SUBTEXT user-specified% functions), it is converted to an integer, which is used to index into a linear array. If the key is not the same as the one found at that index, other indices are tried until it the desired key is found. The value stored with that key is then returned (from GETHASH) or replaced (from PUTHASH). To customize hash arrays, you'll need to supply the hashing function used to convert a key to an integer and the comparison function used to compare the key found in the array with the key being looked up. For hash arrays to work correctly, any two objects which are equal according to the comparison function must hash to equal integers. By default, Medley uses a hashing function that computes an integer from the internal address of a key, and use EQ for comparing keys. This means that if non-atoms are used as hash keys, the exact same object (not a copy) must be used to retrieve the hash value. There are some applications for which the EQ constraint is too restrictive. For example, it may be useful to use strings as hash keys, without the restriction that EQUAL but not EQ strings are considered to be different hash keys. The user can override this default behavior for any hash array by specifying the functions used to compare keys and to hash a key to a number. This can be done by giving the HASHBITSFN and EQUIVFN arguments to HASHARRAY (see above). The EQUIVFN argument is a function of two arguments that returns non-NIL when its arguments are considered equal. The HASHBITSFN argument is a function of one argument that produces a positive small integer (in the range [0..216 - 1]) with the property that objects that are considered equal by the EQUIVFN produce the same hash bits. For an existing hash array, the function HARRAYPROP (see above) can be used to examine the hashing and equivalence functions as the HASHBITSFN and EQUIVFN hash array properties. These properties are read-only for non-empty hash arrays, as it makes no sense to change the equivalence relationship once some keys have been hashed. The following function is useful for creating hash arrays that take strings as hash keys: (STRINGHASHBITS(STRINGHASHBITS (Function) NIL NIL (NIL) 4) STRING) [Function] Hashes the string STRING into an integer that can be used as a HASHBITSFN for a hash array. Strings which are STREQUAL hash to the same integer. Example: (HASHARRAY MINKEYS OVERFLOW 'STRINGHASHBITS 'STREQUAL) creates a hash array where you can use strings as hash keys. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "6-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "6-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "6-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "6-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (102 612 510 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "6-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "6-" "")) (222 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (48 612 564 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))5,,ZZ1EVENT-T@ PAGEHEADING RIGHTPAGE,xx,xx0 +T30<T,A PAGEHEADING RIGHTPAGET,HH,@ PAGEHEADINGLEFTBACKT +TIMESROMAN +PALATINO PALATINO PALATINOPALATINO TITAN TITAN TITAN TITAN TITAN +CLASSIC +CLASSIC +MODERN +MODERNMODERN + +   HRULE.GETFNMODERN +IM.INDEX.GETFN, ) 4  e 8" F   R      +  + + &IM.INDEX.GETFNMODERN +   + $ +  -!-  +   +      m + +#IM.INDEX.GETFNMODERN +  + ; ;  + +$IM.INDEX.GETFNMODERN +  + "      I + +$IM.INDEX.GETFNTITAN + +   + 1 8  B  8 + +$IM.INDEX.GETFN +  + 4   + +$IM.INDEX.GETFNTITAN + + + !  + + +'IM.INDEX.GETFNMODERN +    + $    +  $  " r  +  < + + +'IM.INDEX.GETFNTITAN + + +   + +#IM.INDEX.GETFNTITAN + +   + #  V  + +$IM.INDEX.GETFNTITAN + +  + 7D  )  =   +   + +$IM.INDEX.GETFNTITAN +   + + " S   "  V H ^   s  HRULE.GETFN KIM.INDEX.GETFNF I B 6 + 3   p   +#!$!4~E M    %  HRULE.GETFN 9mIM.INDEX.GETFN   Yp J7 * y  3  +  : / +bG ) + Q +   Z + ++IM.INDEX.GETFNMODERN +  + ' + &      =%)/ z \ No newline at end of file diff --git a/docs/medley-irm/06-HASHARRAYS.pdf b/docs/medley-irm/06-HASHARRAYS.pdf new file mode 100644 index 00000000..81ab9d87 --- /dev/null +++ b/docs/medley-irm/06-HASHARRAYS.pdf @@ -0,0 +1,2330 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 6507 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 468 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6-1)Tj +/TT4 1 Tf +10 0 0 10 425.55 568.2 Tm +(6. HASHARRAYS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +0.0811 Tw +[(Hash arrays let you associate arbitrary Lisp objects \(hash keys\) with other objects \(hash values\),)]TJ +0 -1.2222 TD +0.0278 Tw +[(so you can get from key to value quickly. There are functions for creating hash arrays, putting a hash)]TJ +T* +0.1211 Tw +(key/value pair in a hash array, and quickly retrieving the hash value associated with a given hash)Tj +T* +0 Tw +(key.)Tj +0 -2 TD +0.0344 Tw +(By default, the hash array functions use )Tj +/TT8 1 Tf +18.0092 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0344 Tw +[( for comparing hash keys. This means that if non-symbols)]TJ +-19.2094 -1.2889 TD +0.1422 Tw +(are used as hash keys, the exact same object \(not a copy\) must be used to retrieve the hash value.)Tj +0 -1.2222 TD +0.1589 Tw +(However, you can specify the function used to compare hash keys and to hash a hash key to a)Tj +T* +0.0844 Tw +[(number. You can, for example, create hash arrays where )]TJ +/TT8 1 Tf +26.2043 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( but non-)]TJ +/TT8 1 Tf +4.1943 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0844 Tw +[( strings will hash to the)]TJ +-34.5993 -1.2889 TD +0 Tw +(same value. Specifying alternative hashing algorithms is described below.)Tj +0 -2 TD +0.15 Tw +(In the description of the functions below, the argument )Tj +/TT10 1 Tf +25.9574 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +0.15 Tw +[( should be a hasharray created by)]TJ +/TT8 1 Tf +-29.558 -1.2889 TD +0 Tw +(HASHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0389 Tw +[(. For convenience in interactive program development, it may also be )]TJ +/TT8 1 Tf +31.5546 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0389 Tw +(, in which case)Tj +-38.7557 -1.2889 TD +0.0278 Tw +(a hash array )Tj +/TT8 1 Tf +5.7674 0 TD +0 Tw +(\(SYSHASHARRAY\))Tj +/TT6 1 Tf +8.4014 0 TD +0.0278 Tw +[( provided by the system is used; you must watch out for confusions if)]TJ +-14.1688 -1.2889 TD +0 Tw +(this form is used to associate more than one kind of value with the same key.)Tj +/TT12 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1111 Tw +[(: For backwards compatibility, the hash array functions will accept a list whose )]TJ +/TT8 1 Tf +36.9188 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1111 Tw +[( is a hash)]TJ +-40.9413 -1.2889 TD +0.0411 Tw +(array, and whose )Tj +/TT8 1 Tf +8.0271 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( is the overflow method for the hash array \(see below\). However, hash array)]TJ +-9.8274 -1.2889 TD +0.0422 Tw +(functions are guaranteed to perform with maximum efficiency only if a direct value of )Tj +/TT8 1 Tf +38.9168 0 TD +0 Tw +(HASHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0422 Tw +[( is)]TJ +-44.3177 -1.2889 TD +0 Tw +(given.)Tj +/TT12 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0667 Tw +[(: Interlisp hash arrays and Common Lisp hash tables are the same data type, so functions from)]TJ +-2.2222 -1.2222 TD +0.1344 Tw +[(both may be intermixed. The only difference between the functions may be argument order, as in)]TJ +/TT8 1 Tf +T* +0 Tw +(MAPHASH)Tj +/TT6 1 Tf +4.2007 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(CL:MAPHASH)Tj +/TT6 1 Tf +6.001 0 TD +( \(see below\).)Tj +/TT8 1 Tf +10 0 0 10 102 279.86 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 108.001 279.86 Tm +(HASHARRAY)Tj +/F1 1 Tf +10 0 0 10 156.6 279.86 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 159.38 279.86 Tm +(MINKEYS)Tj +/F2 1 Tf +10 0 0 10 197.1861 279.86 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 199.9661 279.86 Tm +(OVERFLOW)Tj +/F2 1 Tf +10 0 0 10 243.1732 279.86 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 245.9532 279.86 Tm +(HASHBITSFN)Tj +/F2 1 Tf +10 0 0 10 299.9619 279.86 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 302.7419 279.86 Tm +(EQUIVFN RECLAIMABLE REHASH-)Tj +-20.9713 -1.2544 TD +(THRESHOLD)Tj +/TT8 1 Tf +10 0 0 10 162.6079 268.57 Tm +(\))Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 268.57 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1178 Tw +(Creates a hash array with space for at least )Tj +/TT10 1 Tf +20.1572 0 TD +0 Tw +(MINKEYS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1178 Tw +[( hash keys, with overflow method)]TJ +/TT10 1 Tf +-24.3579 -1.2889 TD +0 Tw +(OVERFLOW)Tj +/TT6 1 Tf +4.8008 0 TD +(. See discussion of overflow behavior below.)Tj +-4.8008 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.2688 0 TD +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.3489 Tw +[( and )]TJ +/TT10 1 Tf +2.8906 0 TD +0 Tw +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.3489 Tw +[( are non-)]TJ +/TT8 1 Tf +4.6148 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3489 Tw +(, they specify the hashing function and)Tj +-20.7762 -1.2889 TD +0.0322 Tw +[(comparison function used to interpret hash keys. This is described in the section on user-)]TJ +0 -1.2222 TD +0.0733 Tw +[(specified hashing functions below. If )]TJ +/TT10 1 Tf +17.1636 0 TD +0 Tw +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.0733 Tw +[( and )]TJ +/TT10 1 Tf +2.3395 0 TD +0 Tw +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0733 Tw +[( are )]TJ +/TT8 1 Tf +2.0207 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0733 Tw +(, the default is)Tj +-33.5258 -1.2889 TD +0 Tw +(to hash )Tj +/TT8 1 Tf +3.46 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( hash keys to the same value.)Tj +-4.6602 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.1555 0 TD +(RECLAIMABLE)Tj +/TT6 1 Tf +6.6011 0 TD +0.2356 Tw +[( is )]TJ +/TT10 1 Tf +1.686 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2356 Tw +[( the entries in the hash table will be removed if the key has a)]TJ +-10.0426 -1.2889 TD +0.1167 Tw +(reference count of one and the table is about to be rehashed. This allows the system, in)Tj +0 -1.2222 TD +0 Tw +(some cases, to reuse keys instead of expanding the table. )Tj +/TT12 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0278 Tw +(: )Tj +/TT8 1 Tf +0.8056 0 TD +0 Tw +(CL:MAKE-HASH-TABLE)Tj +/TT6 1 Tf +10.8018 0 TD +0.0278 Tw +[( does not allow you to specify your own hashing functions)]TJ +-13.8295 -1.2889 TD +0 Tw +(but does provide three built-in types specified by )Tj +/TT18 1 Tf +22.0098 0 TD +(Common Lisp, the Language)Tj +/TT6 1 Tf +11.5571 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 97.14 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 108.001 97.14 Tm +(HARRAY)Tj +/F1 1 Tf +10 0 0 10 140.4 97.14 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 143.18 97.14 Tm +(MINKEYS)Tj +/TT8 1 Tf +10 0 0 10 180.9861 97.14 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 186.9871 97.14 Tm +[( )-28127([Function])]TJ +-6.7763 -1.8833 TD +0.3267 Tw +(Provided for backward compatibility, this is equivalent to )Tj +/TT8 1 Tf +28.4175 0 TD +0.7833 Tw +(\(HASHARRAY MINKEYS)Tj +-28.4175 -1.2889 TD +0 Tw +(ERROR\),)Tj +/TT6 1 Tf +4.8008 0 TD +( i.e. if the resulting hasarray gets full, an error occurs.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 14 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +18 0 obj +<< +/Length 8774 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6-2)Tj +/TT16 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +4.8 -4.374 TD +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 568.26 Tm +(HARRAYP)Tj +/F1 1 Tf +10 0 0 10 193.8 568.26 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 196.58 568.26 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 201.9809 568.26 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 207.9818 568.26 Tm +[( )-31127.6([Function])]TJ +-3.7758 -1.8833 TD +(Returns )Tj +/TT10 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if it is a hash array; otherwise )Tj +/TT8 1 Tf +13.4961 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-19.6235 -2.0667 TD +(HARRAYP)Tj +/TT6 1 Tf +4.2007 0 TD +0.02 Tw +[( returns )]TJ +/TT8 1 Tf +3.7441 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.02 Tw +[( if )]TJ +/TT10 1 Tf +1.164 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( is a list whose )]TJ +/TT8 1 Tf +6.7616 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.02 Tw +[( is an )]TJ +/TT8 1 Tf +2.6069 0 TD +0 Tw +(HARRAYP)Tj +/TT6 1 Tf +4.2007 0 TD +0.02 Tw +(, even though this is accepted)Tj +-26.8787 -1.2889 TD +0 Tw +(by the hash array functions \(see below\). )Tj +/TT8 1 Tf +10 0 0 10 150 501.83 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 501.83 Tm +(PUTHASH)Tj +/TT8 1 Tf +10 0 0 10 193.8 501.83 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 199.801 501.83 Tm +(KEY)Tj +/F2 1 Tf +10 0 0 10 216.0036 501.83 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 218.7836 501.83 Tm +(VAL)Tj +/F2 1 Tf +10 0 0 10 234.9862 501.83 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 237.7662 501.83 Tm +(HARRAY)Tj +/TT8 1 Tf +10 0 0 10 270.1715 501.83 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 276.1725 501.83 Tm +[( )-23550.8([Function])]TJ +-11.3525 -1.8833 TD +0.0733 Tw +(Associates the hash value )Tj +/TT10 1 Tf +11.8417 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0733 Tw +[( with the hash key )]TJ +/TT10 1 Tf +8.7163 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +0.0733 Tw +[( in )]TJ +/TT10 1 Tf +1.5197 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +0.0733 Tw +[(. Replaces the previous)]TJ +-29.2788 -1.2889 TD +0.0856 Tw +[(hash value, if any. If )]TJ +/TT10 1 Tf +9.9713 0 TD +0 Tw +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0856 Tw +[( is )]TJ +/TT8 1 Tf +1.386 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0856 Tw +(, any old association is removed \(hence a hash value of)Tj +/TT8 1 Tf +-14.9579 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0611 Tw +[( is not allowed\). If )]TJ +/TT10 1 Tf +8.8403 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +[( is full when )]TJ +/TT8 1 Tf +5.9544 0 TD +0 Tw +(PUTHASH)Tj +/TT6 1 Tf +4.2007 0 TD +0.0611 Tw +[( is called with a key not already in)]TJ +-24.3963 -1.2889 TD +0.0656 Tw +(the hash array, the function )Tj +/TT8 1 Tf +12.7433 0 TD +0 Tw +(HASHOVERFLOW)Tj +/TT6 1 Tf +7.2012 0 TD +0.0656 Tw +[( is called, and the )]TJ +/TT8 1 Tf +8.2384 0 TD +0 Tw +(PUTHASH)Tj +/TT6 1 Tf +4.2007 0 TD +0.0656 Tw +[( is applied to the)]TJ +-32.3836 -1.2889 TD +0 Tw +(value returned \(see below\). Returns )Tj +/TT10 1 Tf +16.2861 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 418.6 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156 418.6 Tm +(GETHASH)Tj +/TT8 1 Tf +10 0 0 10 193.8061 418.6 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 199.8071 418.6 Tm +(KEY)Tj +/F2 1 Tf +10 0 0 10 216.0097 418.6 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 218.7897 418.6 Tm +(HARRAY)Tj +/TT8 1 Tf +10 0 0 10 251.195 418.6 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 257.196 418.6 Tm +[( )-25659.3([Function])]TJ +-9.244 -1.8833 TD +0.03 Tw +(Returns the hash value associated with the hash key )Tj +/TT10 1 Tf +23.5542 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +[( in )]TJ +/TT10 1 Tf +1.433 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +0.03 Tw +[(. Returns )]TJ +/TT8 1 Tf +4.5671 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +(, if )Tj +/TT10 1 Tf +1.434 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +-38.1895 -1.2889 TD +(is not found.)Tj +/TT8 1 Tf +10 0 0 10 150 372 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 372 Tm +(CLRHASH)Tj +/TT8 1 Tf +10 0 0 10 193.8 372 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 199.801 372 Tm +(HARRAY)Tj +/TT8 1 Tf +10 0 0 10 232.2062 372 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 238.2072 372 Tm +[( )-27769.2([Function])]TJ +-7.1341 -1.8833 TD +(Clears all hash keys/values from )Tj +/TT10 1 Tf +14.8574 0 TD +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(. Returns )Tj +/TT10 1 Tf +4.4771 0 TD +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 335.17 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 335.17 Tm +(HARRAYPROP)Tj +/F1 1 Tf +10 0 0 10 210 335.17 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 212.78 335.17 Tm +(HARRAY)Tj +/F2 1 Tf +10 0 0 10 245.1853 335.17 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 247.9653 335.17 Tm +(PROP)Tj +/F2 1 Tf +10 0 0 10 269.5688 335.17 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 272.3488 335.17 Tm +(NEWVALUE)Tj +/TT8 1 Tf +10 0 0 10 315.5558 335.17 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 321.5568 335.17 Tm +[( )-13770.4([NoSpread Function])]TJ +-16.3952 -1.8833 TD +0.1333 Tw +(Returns the property )Tj +/TT10 1 Tf +9.9137 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1333 Tw +[( of )]TJ +/TT10 1 Tf +1.6456 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(; )Tj +/TT10 1 Tf +0.6333 0 TD +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1333 Tw +[( can have the system-defined values )]TJ +/TT8 1 Tf +17.0114 0 TD +0 Tw +(SIZE)Tj +/TT6 1 Tf +-37.6054 -1.2889 TD +0.1111 Tw +(\(the maximum occupancy of )Tj +/TT10 1 Tf +13.3219 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(\), )Tj +/TT8 1 Tf +0.9441 0 TD +(NUMKEYS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1111 Tw +[( \(number of occupied slots\), )]TJ +/TT8 1 Tf +13.1249 0 TD +0 Tw +(OVERFLOW)Tj +/TT6 1 Tf +-35.1922 -1.2889 TD +0.0056 Tw +(\(overflow method\), )Tj +/TT8 1 Tf +8.8427 0 TD +0 Tw +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.0056 Tw +[( \(hashing function\) and )]TJ +/TT8 1 Tf +10.6052 0 TD +0 Tw +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0056 Tw +[( \(comparison function\).)]TJ +-29.6495 -1.2889 TD +0 Tw +(Except for )Tj +/TT8 1 Tf +4.751 0 TD +(SIZE)Tj +/TT6 1 Tf +2.4004 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(NUMKEYS)Tj +/TT6 1 Tf +4.2007 0 TD +(, a new value may be specified as )Tj +/TT10 1 Tf +14.9307 0 TD +(NEWVALUE)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-33.2764 -2.0667 TD +0.0122 Tw +(By using other values for )Tj +/TT10 1 Tf +11.398 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0122 Tw +(, the user may also set and get arbitrary property values, to)Tj +-13.7984 -1.2889 TD +0 Tw +(associate additional information with a hash array.)Tj +0 -2 TD +(The )Tj +/TT8 1 Tf +1.9238 0 TD +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +( properties can only be changed if the hash array is empty.)Tj +/TT8 1 Tf +10 0 0 10 150 216.57 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 216.57 Tm +(HARRAYSIZE)Tj +/TT8 1 Tf +10 0 0 10 210 216.57 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 216.0009 216.57 Tm +(HARRAY)Tj +/TT8 1 Tf +10 0 0 10 248.4062 216.57 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 254.4072 216.57 Tm +[( )-25969.2([Function])]TJ +-8.9341 -1.8833 TD +0.3078 Tw +(Returns the number of slots in )Tj +/TT10 1 Tf +15.4687 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +0.3078 Tw +(. Its equivalent to )Tj +/TT8 1 Tf +9.3942 0 TD +0.7378 Tw +(\(HARRAYPROP HARRAY)Tj +-28.4635 -1.2889 TD +0 Tw +(SIZE\))Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 168.14 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 168.14 Tm +(REHASH)Tj +/TT8 1 Tf +10 0 0 10 188.4 168.14 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 194.401 168.14 Tm +(OLDHARRAY)Tj +/F2 1 Tf +10 0 0 10 243.0089 168.14 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 245.7889 168.14 Tm +(NEWHARRAY)Tj +/TT8 1 Tf +10 0 0 10 294.3968 168.14 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 300.3978 168.14 Tm +[( )-20859.1([Function])]TJ +-14.0442 -1.8833 TD +0.0133 Tw +(Hashes all hash keys and values in )Tj +/TT10 1 Tf +15.6969 0 TD +0 Tw +(OLDHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +[( into )]TJ +/TT10 1 Tf +2.2718 0 TD +0 Tw +(NEWHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +[(. The two hash arrays do)]TJ +-28.7704 -1.2889 TD +0 Tw +(not have to be \(and usually arent\) the same size. Returns )Tj +/TT10 1 Tf +25.7651 0 TD +(NEWHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 119.71 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 119.71 Tm +(MAPHASH)Tj +/TT8 1 Tf +10 0 0 10 193.8 119.71 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 199.801 119.71 Tm +(HARRAY)Tj +/F2 1 Tf +10 0 0 10 232.2062 119.71 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 234.9862 119.71 Tm +(MAPHFN)Tj +/TT8 1 Tf +10 0 0 10 267.3915 119.71 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 273.3925 119.71 Tm +[( )-23859.7([Function])]TJ +/TT10 1 Tf +-11.0436 -1.8833 TD +(MAPHFN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1033 Tw +[( is a function of two arguments. For each hash key in )]TJ +/TT10 1 Tf +25.1524 0 TD +0 Tw +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6033 0 TD +(MAPHFN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1033 Tw +[( will be)]TJ +-36.5575 -1.2889 TD +0 Tw +(applied to the hash value, and the hash key. For example:)Tj +/TT8 1 Tf +5.3333 -1.6 TD +([MAPHASH A)Tj +0 -1 TD +( \(FUNCTION \(LAMBDA \(VAL KEY\))Tj +T* +( \(if \(LISTP KEY\) then \(PRINT VAL\)])Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(will print the hash value for all hash keys that are lists. )Tj +/TT8 1 Tf +24.6387 0 TD +(MAPHASH)Tj +/TT6 1 Tf +4.2007 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +21 0 obj +<< +/Length 6609 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6-3)Tj +/TT16 1 Tf +10 0 0 10 435.1 612 Tm +(HASHARRAYS)Tj +/TT12 1 Tf +9 0 0 9 126 569.54 Tm +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +(: the argument order for )Tj +/TT8 1 Tf +11.1611 0 TD +(CL:MAPHASH)Tj +/TT6 1 Tf +6.001 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(MAPHFN HARRAY)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 549.66 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 108.001 549.66 Tm +(DMPHASH)Tj +/F1 1 Tf +10 0 0 10 145.8 549.66 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 148.58 549.66 Tm +(HARRAY)Tj +3.6 -0.2222 TD +(1)Tj +/F2 1 Tf +10 0 0 10 186.38 549.66 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 189.16 549.66 Tm +(HARRAY)Tj +3.6 -0.2222 TD +(2)Tj +/F2 1 Tf +10 0 0 10 226.96 549.66 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 229.74 549.66 Tm +(... HARRAY)Tj +6 -0.2222 TD +(N)Tj +/TT8 1 Tf +10 0 0 10 289.14 549.66 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 295.141 549.66 Tm +[( )-6632.1([NLambda NoSpread Function])]TJ +-18.7934 -2.0667 TD +0.2478 Tw +(Prints on the primary output file )Tj +/TT8 1 Tf +16.1444 0 TD +0 Tw +(LOAD)Tj +/TT6 1 Tf +2.4004 0 TD +0.2478 Tw +(able forms which will restore the hash-arrays)Tj +-18.5448 -1.2889 TD +0.27 Tw +(contained as the values of the atoms )Tj +/TT10 1 Tf +18.1185 0 TD +0 Tw +(HARRAY)Tj +3.6004 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, )Tj +/TT10 1 Tf +0.77 0 TD +(HARRAY)Tj +3.6 -0.2222 TD +(2)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, )Tj +/TT8 1 Tf +0.77 0 TD +(...)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.52 0 TD +(HARRAY)Tj +3.5997 -0.2222 TD +(N)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.27 Tw +[(. Example:)]TJ +/TT8 1 Tf +-34.5789 -1.5111 TD +0 Tw +(\(DMPHASH SYSHASHARRAY\))Tj +/TT6 1 Tf +13.2021 0 TD +( will dump the system hash-array.)Tj +-13.2021 -2.0667 TD +(All )Tj +/TT8 1 Tf +1.8165 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.2067 Tw +[( identities except symbols and small integers are lost by dumping and loading)]TJ +-3.0167 -1.2889 TD +0 Tw +(because )Tj +/TT8 1 Tf +3.8897 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1578 Tw +[( will create new structure for each item. Thus if two lists contain an )]TJ +/TT8 1 Tf +32.5053 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +-38.7954 -1.2889 TD +0.0078 Tw +(substructure, when they are dumped and loaded back in, the corresponding substructures)Tj +0 -1.2222 TD +0 Tw +(while )Tj +/TT8 1 Tf +2.7926 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0656 Tw +[( are no longer )]TJ +/TT8 1 Tf +6.6133 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0656 Tw +[(. The )]TJ +/TT8 1 Tf +2.8705 0 TD +0 Tw +(HORRIBLEVARS)Tj +/TT6 1 Tf +7.2012 0 TD +0.0656 Tw +[( file package command \(Chapter 17\))]TJ +-23.6783 -1.2889 TD +0 Tw +(provides a way of dumping hash tables such that these identities are preserved.)Tj +/TT4 1 Tf +10 0 0 10 54 419.12 Tm +(Hash Overflow)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 416.41 m +510.01 416.41 l +S +BT +/TT6 1 Tf +9 0 0 9 78 402.46 Tm +0.4522 Tw +[(When a hash array becomes full, trying to add another hash key will cause the function)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(HASHOVERFLOW)Tj +/TT6 1 Tf +7.2012 0 TD +0.1122 Tw +[( to be called. This either enlarges the hash array, or causes the error )]TJ +/TT8 1 Tf +31.8542 0 TD +0.27 Tw +(Hash table)Tj +-39.0554 -1.2889 TD +0 Tw +(full)Tj +/TT6 1 Tf +2.4004 0 TD +0.1033 Tw +[(. How hash overflow is handled is determined by the value of the )]TJ +/TT8 1 Tf +30.9071 0 TD +0 Tw +(OVERFLOW)Tj +/TT6 1 Tf +4.8008 0 TD +0.1033 Tw +[( property of the)]TJ +-38.1083 -1.2889 TD +0 Tw +(hash array \(which can be accessed by )Tj +/TT8 1 Tf +16.7217 0 TD +(HARRAYPROP)Tj +/TT6 1 Tf +6.001 0 TD +(\). The possibilities for the overflow method are:)Tj +-14.196 -2.0667 TD +(the symbol )Tj +/TT8 1 Tf +5.1401 0 TD +(ERROR)Tj +/TT6 1 Tf +4.3332 0 TD +0.1378 Tw +(The error )Tj +/TT8 1 Tf +4.6593 0 TD +0.33 Tw +(Hash array full)Tj +/TT6 1 Tf +9.6615 0 TD +0.1378 Tw +[( is generated when the hash)]TJ +-14.3208 -1.2889 TD +0.1933 Tw +[(array overflows. This is the default overflow behavior for)]TJ +0 -1.2222 TD +0 Tw +(hash arrays returned by )Tj +/TT8 1 Tf +10.8374 0 TD +(HARRAY)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-17.5713 -2.0667 TD +(NIL)Tj +/TT6 1 Tf +3.1333 0 TD +0.19 Tw +(The array is automatically enlarged by at least a factor 1.5)Tj +0 -1.2889 TD +0.0322 Tw +(every time it overflows. This is the default overflow behavior)Tj +0 -1.2222 TD +0 Tw +(for hash arrays returned by )Tj +/TT8 1 Tf +12.3613 0 TD +(HASHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-27.5755 -2.0667 TD +(a positive integer )Tj +/TT10 1 Tf +7.8813 0 TD +(N)Tj +/TT6 1 Tf +1.932 0 TD +0.0967 Tw +(The array is enlarged to include at least )Tj +/TT10 1 Tf +18.4203 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[( more slots than it)]TJ +-19.0204 -1.2889 TD +0 Tw +(currently has.)Tj +-12.7 -2 TD +(a floating point number )Tj +/TT10 1 Tf +10.7666 0 TD +(F)Tj +/TT6 1 Tf +1.9334 0 TD +0.34 Tw +(The array is changed to include )Tj +/TT10 1 Tf +16.2016 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.34 Tw +[( times the number of)]TJ +-16.8017 -1.2889 TD +0 Tw +(current slots.)Tj +-17.0089 -2 TD +(a function or lambda expression )Tj +/TT10 1 Tf +14.4727 0 TD +(FN)Tj +/TT6 1 Tf +2.5362 0 TD +0.1267 Tw +(Upon hash overflow, )Tj +/TT10 1 Tf +9.9635 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1267 Tw +[( is called with the hash array as its)]TJ +-11.1637 -1.2889 TD +0.0711 Tw +[(argument. If )]TJ +/TT10 1 Tf +6.2075 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0711 Tw +[( returns a number, that will become the size)]TJ +-7.4077 -1.2889 TD +0.0433 Tw +[(of the array. Otherwise, the new size defaults to 1.5 times its)]TJ +0 -1.2222 TD +0.3078 Tw +(previous size. )Tj +/TT10 1 Tf +7.521 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.3078 Tw +[( could be used to print a message, or)]TJ +-8.7212 -1.2889 TD +0 Tw +(perform some monitor function.)Tj +/TT12 1 Tf +-18 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0067 Tw +[(: For backwards compatibility, the hash array functions accept a list whose )]TJ +/TT8 1 Tf +33.4929 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0067 Tw +[( is the hash array,)]TJ +-37.5154 -1.2889 TD +0.2333 Tw +(and whose )Tj +/TT8 1 Tf +5.5243 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2333 Tw +[( is the overflow method. In this case, the overflow method specified in the list)]TJ +-7.3246 -1.2889 TD +0.0922 Tw +[(overrides the overflow method set in the hash array. Hash array functions perform with maximum)]TJ +0 -1.2222 TD +0 Tw +(efficiency only if a direct value of )Tj +/TT8 1 Tf +14.9438 0 TD +(HASHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +( is given.)Tj +/TT4 1 Tf +10 0 0 10 54 87.12 Tm +(Specifying Your Own Hashing Functions)Tj +ET +54.01 84.41 m +510.01 84.41 l +S +BT +/TT6 1 Tf +9 0 0 9 78 70.46 Tm +0.0433 Tw +(In general terms, when a key is looked up in a hash array, it is converted to an integer, which is used)Tj +0 -1.2222 TD +0.0289 Tw +[(to index into a linear array. If the key is not the same as the one found at that index, other indices are)]TJ +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +24 0 obj +<< +/Length 4930 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6-4)Tj +/TT16 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0022 Tw +(tried until it the desired key is found. The value stored with that key is then returned \(from )Tj +/TT8 1 Tf +40.8079 0 TD +0 Tw +(GETHASH)Tj +/TT6 1 Tf +4.2007 0 TD +(\))Tj +-45.0085 -1.2889 TD +(or replaced \(from )Tj +/TT8 1 Tf +7.9805 0 TD +(PUTHASH)Tj +/TT6 1 Tf +4.2007 0 TD +(\).)Tj +-12.1812 -2.0667 TD +0.0789 Tw +[(To customize hash arrays, youll need to supply the hashing function used to convert a key to an)]TJ +0 -1.2222 TD +0.0822 Tw +(integer and the comparison function used to compare the key found in the array with the key being)Tj +T* +0.2 Tw +[(looked up. For hash arrays to work correctly, any two objects which are equal according to the)]TJ +T* +0 Tw +(comparison function must hash to equal integers.)Tj +0 -2.8889 TD +0.1067 Tw +(By default, Medley uses a hashing function that computes an integer from the internal address of a)Tj +0 -1.2222 TD +0.11 Tw +(key, and use )Tj +/TT8 1 Tf +6.12 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.11 Tw +[( for comparing keys. This means that if non-atoms are used as hash keys, )]TJ +/TT18 1 Tf +34.3619 0 TD +(the exact)Tj +-41.6822 -1.2889 TD +0 Tw +(same object)Tj +/TT6 1 Tf +4.564 0 TD +( \(not a copy\) must be used to retrieve the hash value.)Tj +-4.564 -2 TD +0.1489 Tw +(There are some applications for which the )Tj +/TT8 1 Tf +19.8367 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.1489 Tw +[( constraint is too restrictive. For example, it may be)]TJ +-21.0369 -1.2889 TD +0.0111 Tw +(useful to use strings as hash keys, without the restriction that )Tj +/TT8 1 Tf +27.3869 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0111 Tw +[( but not )]TJ +/TT8 1 Tf +3.7199 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0111 Tw +[( strings are considered)]TJ +-35.3074 -1.2889 TD +0 Tw +(to be different hash keys.)Tj +0 -2 TD +0.1422 Tw +(The user can override this default behavior for any hash array by specifying the functions used to)Tj +0 -1.2222 TD +0.1122 Tw +[(compare keys and to hash a key to a number. This can be done by giving the )]TJ +/TT10 1 Tf +37.2676 0 TD +0 Tw +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.1122 Tw +[( and)]TJ +/TT10 1 Tf +-43.2685 -1.2889 TD +0 Tw +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +( arguments to )Tj +/TT8 1 Tf +6.3701 0 TD +(HASHARRAY)Tj +/TT6 1 Tf +5.4009 0 TD +( \(see above\).)Tj +-15.9717 -2.0667 TD +(The )Tj +/TT10 1 Tf +1.9705 0 TD +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0467 Tw +[( argument is a function of two arguments that returns non-)]TJ +/TT8 1 Tf +26.5272 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0467 Tw +[( when its arguments are)]TJ +-34.4987 -1.2889 TD +0.03 Tw +[(considered equal. The )]TJ +/TT10 1 Tf +10.3383 0 TD +0 Tw +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.03 Tw +[( argument is a function of one argument that produces a positive)]TJ +-16.3392 -1.2889 TD +0.0711 Tw +(small integer \(in the range [0..2)Tj +6 0 0 6 252.38 336.14 Tm +0 Tw +(16)Tj +9 0 0 9 258.38 334.14 Tm +0.0711 Tw +[( - 1]\) with the property that objects that are considered equal by the)]TJ +/TT10 1 Tf +-14.7089 -1.2222 TD +0 Tw +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +( produce the same hash bits.)Tj +-4.2007 -2.0667 TD +0.04 Tw +(For an existing hash array, the function )Tj +/TT8 1 Tf +17.8528 0 TD +0 Tw +(HARRAYPROP)Tj +/TT6 1 Tf +6.001 0 TD +0.04 Tw +[( \(see above\) can be used to examine the hashing)]TJ +-23.8537 -1.2889 TD +0.0344 Tw +(and equivalence functions as the )Tj +/TT8 1 Tf +14.8299 0 TD +0 Tw +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.0344 Tw +[( and )]TJ +/TT8 1 Tf +2.2618 0 TD +0 Tw +(EQUIVFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0344 Tw +[( hash array properties. These properties)]TJ +-27.2934 -1.2889 TD +0.0511 Tw +(are read-only for non-empty hash arrays, as it makes no sense to change the equivalence relationship)Tj +0 -1.2222 TD +0 Tw +(once some keys have been hashed.)Tj +0 -2 TD +(The following function is useful for creating hash arrays that take strings as hash keys:)Tj +/TT8 1 Tf +10 0 0 10 150 233 Tm +(\()Tj +/TT14 1 Tf +9 0 0 9 156.001 233 Tm +(STRINGHASHBITS)Tj +/TT4 1 Tf +10 0 0 10 231.6 233 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 234.3783 233 Tm +(STRING)Tj +/TT8 1 Tf +10 0 0 10 266.7836 233 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 272.7845 233 Tm +[( )-23927.3([Function])]TJ +-10.9761 -1.8833 TD +0.0978 Tw +(Hashes the string )Tj +/TT10 1 Tf +8.2455 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0978 Tw +[( into an integer that can be used as a )]TJ +/TT8 1 Tf +17.2463 0 TD +0 Tw +(HASHBITSFN)Tj +/TT6 1 Tf +6.001 0 TD +0.0978 Tw +[( for a hash)]TJ +-35.0934 -1.2889 TD +0 Tw +(array. Strings which are )Tj +/TT8 1 Tf +11.0522 0 TD +(STREQUAL)Tj +/TT6 1 Tf +4.8008 0 TD +( hash to the same integer.)Tj +-15.853 -2.0667 TD +(Example:)Tj +/TT8 1 Tf +2 -1.6 TD +(\(HASHARRAY )Tj +/TT10 1 Tf +6.6011 0 TD +(MINKEYS)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(OVERFLOW)Tj +/TT8 1 Tf +4.8008 0 TD +( STRINGHASHBITS STREQUAL\))Tj +/TT6 1 Tf +-18.2026 -1.8444 TD +(creates a hash array where you can use strings as hash keys.)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 14 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +27 0 obj +<< +/Length 69 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6-5)Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +30 0 obj +<< +/Length 202 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(6-6)Tj +/TT16 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +15 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +32 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +33 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +34 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +35 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +36 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +37 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +38 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +39 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +40 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +41 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +42 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 41 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 42 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 54 +/Widths [333 0 0 0 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 32 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 0 +0 722 0 0 0 0 611 0 722 0 0 0 0 0 0 778 +0 0 722 667 0 0 0 0 0 667 0 0 0 0 0 0 +0 556 0 556 0 556 333 611 611 278 0 0 278 0 611 611 +611 0 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 33 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 0 0 500 500 500 0 0 250 250 0 0 0 0 +0 778 611 709 0 611 556 0 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 0 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 34 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 0 0 0 0 0 600 600 0 0 600 600 600 0 +0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 0 600 600 600 0 600 0 0 +0 600 600 0 0 600 600 0 600 600 0 0 600 0 600 0 +0 0 600 600 600 600 0 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 35 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 36 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 78 +/LastChar 116 +/Widths [833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 +0 556 0 0 0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 37 0 R +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 65 +/LastChar 90 +/Widths [600 600 600 600 600 0 600 600 600 0 0 600 600 600 600 600 +0 600 600 600 600 0 0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 38 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 722 278 0 0 556 833 722 0 +667 0 722 667 611 722 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 39 0 R +>> +endobj +14 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 120 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 667 0 0 0 0 0 0 0 0 556 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 0 389 0 500 500 278 278 0 0 778 556 444 +500 0 0 389 333 556 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 40 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +43 0 obj +<< +/S /D +>> +endobj +44 0 obj +<< +/Nums [0 43 0 R ] +>> +endobj +16 0 obj +<< +/Type /Pages +/Kids [1 0 R 17 0 R 20 0 R 23 0 R 26 0 R 29 0 R] +/Count 6 +/MediaBox [0 0 612 792] +>> +endobj +45 0 obj +<< +/CreationDate (D:20210202102640-06'00') +/ModDate (D:20210202102640-06'00') +/Producer (Apple pstopdf) +>> +endobj +46 0 obj +<< +/Type /Catalog +/Pages 16 0 R +/PageLabels 44 0 R +>> +endobj +xref +0 47 +0000000000 65535 f +0000034323 00000 n +0000000016 00000 n +0000006575 00000 n +0000030774 00000 n +0000030949 00000 n +0000031125 00000 n +0000031322 00000 n +0000031730 00000 n +0000032267 00000 n +0000032758 00000 n +0000033103 00000 n +0000033358 00000 n +0000033614 00000 n +0000033931 00000 n +0000028415 00000 n +0000034892 00000 n +0000034404 00000 n +0000006789 00000 n +0000015616 00000 n +0000034488 00000 n +0000015794 00000 n +0000022456 00000 n +0000034572 00000 n +0000022658 00000 n +0000027641 00000 n +0000034656 00000 n +0000027823 00000 n +0000027943 00000 n +0000034740 00000 n +0000028040 00000 n +0000028294 00000 n +0000028556 00000 n +0000028753 00000 n +0000028959 00000 n +0000029159 00000 n +0000029350 00000 n +0000029551 00000 n +0000029756 00000 n +0000029958 00000 n +0000030153 00000 n +0000030356 00000 n +0000030564 00000 n +0000034824 00000 n +0000034852 00000 n +0000035009 00000 n +0000035132 00000 n +trailer +<< +/Size 47 +/Root 46 0 R +/Info 45 0 R +/ID [<5c9f11def804fd73f1cd92396bd47e26><5c9f11def804fd73f1cd92396bd47e26>] +>> +startxref +35202 +%%EOF diff --git a/docs/medley-irm/07-NUMBERS.TEDIT b/docs/medley-irm/07-NUMBERS.TEDIT new file mode 100644 index 00000000..5ebcc055 --- /dev/null +++ b/docs/medley-irm/07-NUMBERS.TEDIT @@ -0,0 +1,569 @@ +INTERLISP-D REFERENCE MANUAL NUMBERS AND ARITHMETIC FUNCTIONS "7"7. NUMBERS AND ARITHMETIC FUNCTIONS 3 There are four different types of numbers(NUMBERS NIL Numbers NIL ("7") 1) in Interlisp: small integers(NUMBERS NIL Numbers NIL ("7") 1 SUBNAME SMALL% INTEGERS SUBTEXT small% integers), large integers(NUMBERS NIL Numbers NIL ("7") 1 SUBNAME LARGE% INTEGERS SUBTEXT large% integers), bignums (arbitrary-size integers)(NUMBERS NIL Numbers NIL ("7") 1 SUBNAME BIGNUMS SUBTEXT bignums), and floating-point numbers(NUMBERS NIL Numbers NIL ("7") 1 SUBNAME FLOATING-POINT SUBTEXT floating-point). Small integers are in the range -65536 to 65535. Large integers and floating-point numbers are 32-bit quantities that are stored by boxing the number (see below). Bignums are boxed as a series of words. Large integers and floating-point numbers can be any full word quantity. To distinguish among the various kinds of numbers, and other Interlisp pointers, these numbers are boxed When a large integer or floating-point number is created (by an arithmetic operation or by READ), Interlisp gets a new word from number storage and puts the number into that word. Interlisp then passes around the pointer to that word, i.e., the boxed number(BOXED% NUMBERS NIL Boxed% numbers NIL ("7") 1), rather than the actual quantity itself. When a numeric function needs the actual numeric quantity, it performs the extra level of addressing to obtain the value of the number. This latter process is called unboxing. Unboxing does not use any storage, but each boxing operation uses one new word of number storage. If a computation creates many large integers or floating-point numbers, i.e., does lots of boxes, it may cause a garbage collection of large integer space, or of floating-point number space. The following functions can be used to distinguish the different types of numbers: (SMALLP(SMALLP (Function) NIL NIL ("7") 1) X) [Function] Returns X, if X is a small integer; NIL otherwise. Does not generate an error if X is not a number. (FIXP(FIXP (Function) NIL NIL ("7") 1) X) [Function] Returns X, if X is an integer; NIL otherwise. Note that FIXP is true for small integers, large integers, and bignums. Does not generate an error if X is not a number. (FLOATP(FLOATP (Function) NIL NIL ("7") 1) X) [Function] Returns X if X is a floating-point number; NIL otherwise. Does not give an error if X is not a number. (NUMBERP(NUMBERP (Function) NIL NIL ("7") 1) X) [Function] Returns X, if X is a number of any type; NIL otherwise. Does not generate an error if X is not a number. Note: In previous releases, NUMBERP was true only if (FLOATP X) or (FIXP X) were true. With the additon of Common Lisp ratios and complex numbers, NUMBERP now returns T for all number types . Code relying on the "old" behavior should be modified. Each small integer has a unique representation, so EQ may be used to check equality. EQ should not be used for large integers, bignums, or floating-point numbers, EQP, IEQP, or EQUAL must be used instead. (EQP(EQP (Function) NIL NIL ("7") 1) X Y) [Function] Returns T, if X and Y are equal numbers; NIL otherwise. EQ may be used if X and Y are known to be small integers. EQP does not convert X and Y to integers, e.g., (EQP 2000 2000.3) => NIL, but it can be used to compare an integer and a floating-point number, e.g., (EQP 2000 2000.0) => T. EQP does not generate an error if X or Y are not numbers. EQP can also be used to compare stack pointers (see Chapter 11) and compiled code objects (see Chapter 10). The action taken on division by zero and floating-point overflow is determined with the following function: (OVERFLOW(OVERFLOW (Function) NIL NIL ("7") 2) FLG) [Function] Sets a flag that determines the system response to arithmetic overflow (for floating-point arithmetic) and division by zero; returns the previous setting. For integer arithmetic: If FLG = T, an error occurs on division by zero. If FLG = NIL or 0, integer division by zero returns zero. Integer overflow cannot occur, because small integers are converted to bignums (see the beginning of this chapter). For floating-point arithmetic: If FLG = T, an error occurs on floating overflow or floating division by zero. If FLG = NIL or 0, the largest (or smallest) floating-point number is returned as the result of the overflowed computation or floating division by zero. The default value for OVERFLOW is T, meaning an error is generated on division by zero or floating overflow. Generic Arithmetic(GENERIC% ARITHMETIC NIL Generic% arithmetic NIL ("7") 2)(ARITHMETIC NIL Arithmetic NIL ("7") 2 SUBNAME GENERIC SUBTEXT generic) 1 The functions in this section are generic arithmetic functions. If any of the arguments are floating-point numbers (see the Floating-Point Arithmetic section below), they act exactly like floating-point functions, floating all arguments and returning a floating-point number as their value. Otherwise, they act like the integer functions (see the Integer Arithmetic section below). If given a non-numeric argument, they generate an error, Non-numeric arg. The results of division by zero and floating-point overflow is determined by the function OVERFLOW (see the section above). (PLUS(PLUS (Function) NIL NIL ("7") 2) X1 X2 ... XN) [NoSpread Function] X1 + X2 + ... + XN. (MINUS(MINUS (Function) NIL NIL ("7") 2) X) [Function] - X (DIFFERENCE(DIFFERENCE (Function) NIL NIL ("7") 2) X Y) [Function] X - Y ((TIMES (Function) NIL NIL ("7") 2)TIMES X1 X2 ... XN) [NoSpread Function] X1 * X2 * ... * XN (QUOTIENT(QUOTIENT (Function) NIL NIL ("7") 2) X Y) [Function] If X and Y are both integers, returns the integer division of X and Y. Otherwise, converts both X and Y to floating-point numbers, and does a floating-point division. (REMAINDER(REMAINDER (Function) NIL NIL ("7") 3) X Y) [Function] If X and Y are both integers, returns (IREMAINDER X Y), otherwise (FREMAINDER X Y). (GREATERP (GREATERP% (Function) NIL NIL ("7") 3)X Y) [Function] T, if X > Y, NIL otherwise. (LESSP(LESSP (Function) NIL NIL ("7") 3) X Y) [Function] T if X < Y, NIL otherwise. (GEQ(GEQ (Function) NIL NIL ("7") 3) X Y) [Function] T, if X >= Y, NIL otherwise. (LEQ(LEQ (Function) NIL NIL ("7") 3) X Y) [Function] T, if X <= Y, NIL otherwise. (ZEROP(ZEROP (Function) NIL NIL ("7") 3) X) [Function] The same as (EQP X 0). (MINUSP(MINUSP (Function) NIL NIL ("7") 3) X) [Function] T, if X is negative; NIL otherwise. Works for both integers and floating-point numbers. (MIN(MIN (Function) NIL NIL ("7") 3) X1 X2 ... XN) [NoSpread Function] Returns the minimum of X1, X2, ..., XN. (MIN) returns the value of MAX.INTEGER (see the Integer Arithmetic section below). (MAX(MAX (Function) NIL NIL ("7") 3) X1 X2 ... XN) [NoSpread Function] Returns the maximum of X1, X2, ..., XN. (MAX) returns the value of MIN.INTEGER (see the Integer Arithmetic section below). (ABS(ABS (Function) NIL NIL ("7") 3) X) [Function] X if X > 0, otherwise -X. ABS uses GREATERP and MINUS (not IGREATERP and IMINUS). Integer Arithmetic(ARITHMETIC NIL Arithmetic NIL ("7") 3 SUBNAME INTEGER SUBTEXT integer)(INTEGER% ARITHMETIC NIL Integer% arithmetic NIL ("7") 3) 1 The input syntax for an integer is an optional sign (+ or -) followed by a sequence of decimal digits, and terminated by a delimiting character. Integers entered with this syntax are interpreted as decimal integers. Integers in other radices can be entered as follows: 123Q #o123 If an integer is followed by the letter Q, or preceeded by a pound sign and the letter o, the digits are interpreted as an octal (base 8) integer. #b10101 If an integer is preceeded by a pound sign and the letter b, the digits are interpreted as a binary (base 2) integer. #x1A90 If an integer is preceeded by a pound sign and the letter x, the digits are interpreted as a hexadecimal (base 16) integer. #5r1243 If an integer is preceeded by a pound sign, a positive decimal integer BASE, and the letter r, the digits are interpreted as an integer in the base BASE. For example, #8r123 = 123Q, and #16r12A3 = #x12A3. When typing a number in a radix above ten, the uppercase letters A through Z can be used as the digits after 9 (but there is no digit above Z, so it is not possible to type all base-99 digits). Medley keeps no record of how you typed a number, so 77Q and 63 both correspond to the same integer, and are indistinguishable internally. The function RADIX (see Chapter 25), sets the radix used to print integers. PACK and MKATOM create numbers when given a sequence of characters observing the above syntax, e.g. (PACK '(1 2 Q)) => 10. Integers are also created as a result of arithmetic operations. The range of integers of various types is implementation-dependent. This information is accessible to you through the following variables: MIN.SMALLP(MIN.SMALLP (Variable) NIL NIL ("7") 4) [Variable] MAX.SMALLP(MAX.SMALLP (Variable) NIL NIL ("7") 4) [Variable] The smallest/largest possible small integer. MIN.FIXP(MIN.FIXP (Variable) NIL NIL ("7") 4) [Variable] MAX.FIXP(MAX.FIXP (Variable) NIL NIL ("7") 4) [Variable] The smallest/largest possible large integer. MIN.INTEGER(MIN.INTEGER (Variable) NIL NIL ("7") 4) [Variable] MAX.INTEGER(MAX.INTEGER (Variable) NIL NIL ("7") 4) [Variable] The value of MAX.INTEGER and MIN.INTEGER are two special system datatypes. For some algorithms, it is useful to have an integer that is larger than any other integer. Therefore, the values of MAX.INTEGER and MIN.INTEGER are two special data types; the value of MAX.INTEGER is GREATERP than any other integer, and the value of MIN.INTEGER is LESSP than any other integer. Trying to do arithmetic using these special bignums, other than comparison, will cause an error. All of the functions described below work on integers. Unless specified otherwise, if given a floating-point number, they first convert the number to an integer by truncating the fractional bits, e.g., (IPLUS 2.3 3.8) = 5; if given a non-numeric argument, they generate an error, Non-numeric arg. (IPLUS X1 X2 ... XN) [NoSpread Function] Returns the sum X1 + X2 + ... + XN. (IPLUS) = 0. (IMINUS X) [Function] -X (IDIFFERENCE X Y) [Function] X - Y (ADD1(ADD1 (Function) NIL NIL ("7") 5) X) [Function] X + 1 (SUB1(SUB1 (Function) NIL NIL ("7") 5) X) [Function] X - 1 (ITIMES(ITIMES (Function) NIL NIL ("7") 5) X1 X2 ... XN) [NoSpread Function] Returns the product X1 * X2 * ... * XN. (ITIMES) = 1. (IQUOTIENT(IQUOTIENT (Function) NIL NIL ("7") 5) X Y) [Function] X / Y truncated. Examples: (IQUOTIENT 3 2) => 1 (IQUOTIENT -3 2) => -1 If Y is zero, the result is determined by the function OVERFLOW . (IREMAINDER(IREMAINDER (Function) NIL NIL ("7") 5) X Y) [Function] Returns the remainder when X is divided by Y. Example: (IREMAINDER 5 2) => 1 (IMOD(IMOD (Function) NIL NIL ("7") 5) X N) [Function] Computes the integer modulus of X mod N; this differs from IREMAINDER in that the result is always a non-negative integer in the range [0,N). (IGREATERP(IGREATERP (Function) NIL NIL ("7") 5) X Y) [Function] T, if X > Y; NIL otherwise. (ILESSP(ILESSP (Function) NIL NIL ("7") 5) X Y) [Function] T, if X < Y; NIL otherwise. (IGEQ(IGEQ (Function) NIL NIL ("7") 5) X Y) [Function] T, if X >= Y; NIL otherwise. (ILEQ(ILEQ (Function) NIL NIL ("7") 5) X Y) [Function] T, if X <= Y; NIL otherwise. (IMIN(IMIN (Function) NIL NIL ("7") 5) X1 X2 ... XN) [NoSpread Function] Returns the minimum of X1, X2, ..., XN. (IMIN) returns the largest possible large integer, the value of MAX.INTEGER. (IMAX(IMAX (Function) NIL NIL ("7") 5) X1 X2 ... XN) [NoSpread Function] Returns the maximum of X1, X2, ..., XN. (IMAX) returns the smallest possible large integer, the value of MIN.INTEGER. (IEQP(EQP (Function) NIL NIL ("7") 6) X Y) [Function] Returns T if X and Y are equal integers; NIL otherwise. Note that EQ may be used if X and Y are known to be small integers. IEQP converts X and Y to integers, e.g., (IEQP 2000 2000.3) => T. (FIX(FIX (Function) NIL NIL ("7") 6) N) [Function] If N is an integer, returns N. Otherwise, converts N to an integer by truncating fractional bits For example, (FIX 2.3) => 2, (FIX -1.7) => -1. Since FIX is also a programmer's assistant command (see Chapter 13), typing FIX directly to a Medley executive will not cause the function FIX to be called. (FIXR(FIXR (Function) NIL NIL ("7") 6) N) [Function] If N is an integer, returns N. Otherwise, converts N to an integer by rounding. FIXR will round towards the even number if N is exactly half way between two integers. For example, (FIXR 2.3) => 2, (FIXR -1.7) => -2, (FIXR 3.5) => 4). (GCD(GCD (Function) NIL NIL ("7") 6) N1 N2) [Function] Returns the greatest common divisor of N1 and N2, (GCD 72 64)=8. Logical Arithmetic(ARITHMETIC NIL Arithmetic NIL ("7") 6 SUBNAME LOGICAL% FUNCTIONS SUBTEXT logical% functions) Functions(LOGICAL% ARITHMETIC% FUNCTIONS NIL Logical% arithmetic% functions NIL ("7") 6) 1 (LOGAND(LOGAND (Function) NIL NIL ("7") 6) X1 X2 ... XN) [NoSpread Function] Returns the logical AND of all its arguments, as an integer. Example: (LOGAND 7 5 6) => 4 (LOGOR(LOGOR (Function) NIL NIL ("7") 6) X1 X2 ... XN) [NoSpread Function] Returns the logical OR of all its arguments, as an integer. Example: (LOGOR 1 3 9) => 11 (LOGXOR(LOGXOR (Function) NIL NIL ("7") 6) X1 X2 ... XN) [NoSpread Function] Returns the logical exclusive OR of its arguments, as an integer. Example: (LOGXOR 11 5) => 14 (LOGXOR 11 5 9) = (LOGXOR 14 9) => 7 (LSH(LSH (Function) NIL NIL ("7") 6) X N) [Function] (Arithmetic) Left Shift. Returns X shifted left N places, with the sign bit unaffected. X can be positive or negative. If N is negative, X is shifted right -N places. (RSH(RSH (Function) NIL NIL ("7") 6) X N) [Function] (Arithmetic) Right Shift. Returns X shifted right N places, with the sign bit unaffected, and copies of the sign bit shifted into the leftmost bit. X can be positive or negative. If N is negative, X is shifted left -N places. Warning: Be careful if using RSH to simulate division; RSHing a negative number isn't the same as dividing by a power of two. (LLSH(LLSH (Function) NIL NIL ("7") 7) X N) [Function] (LRSH(LLSH (Function) NIL NIL ("7") 7) X N) [Function] Logical Left Shift and Logical Right Shift. The difference between a logical and arithmetic right shift lies in the treatment of the sign bit. Logical shifting treats it just like any other bit; arithmetic shifting will not change it, and will propagate rightward when actually shifting rightwards. Note that shifting (arithmetic) a negative number all the way to the right yields -1, not 0. Note: LLSH and LRSH always operate mod-232 arithmetic. Passing a bignum to either of these will cause an error. LRSH of negative numbers will shift 0s into the high bits. (INTEGERLENGTH(LLSH (Function) NIL NIL ("7") 7) X) [Function] Returns the number of bits needed to represent X. This is equivalent to: 1+floor[log2[abs[X]]]. (INTEGERLENGTH 0) = 0. (POWEROFTWOP(POWEROFTWOP (Function) NIL NIL ("7") 7) X) [Function] Returns non-NIL if X (coerced to an integer) is a power of two. (EVENP(EVENP (Function) NIL NIL ("7") 7) X Y) [NoSpread Function] If Y is not given, equivalent to (ZEROP (IMOD X 2)); otherwise equivalent to (ZEROP (IMOD X Y)). (ODDP(ODDP (Function) NIL NIL ("7") 7) N MODULUS) [NoSpread Function] Equivalent to (NOT (EVENP N MODULUS)). MODULUS defaults to 2. (LOGNOT (LOGNOT% (Macro) NIL NIL ("7") 7)N) [Macro] Logical negation of the bits in N. Equivalent to (LOGXOR N -1). (BITTEST(BITTEST (Macro) NIL NIL ("7") 7) N MASK) [Macro] Returns T if any of the bits in MASK are on in the number N. Equivalent to (NOT (ZEROP (LOGAND N MASK))). (BITCLEAR(BITCLEAR (Macro) NIL NIL ("7") 7) N MASK) [Macro] Turns off bits from MASK in N. Equivalent to (LOGAND N (LOGNOT MASK)). (BITSET(BITSET (Macro) NIL NIL ("7") 7) N MASK) [Macro] Turns on the bits from MASK in N. Equivalent to (LOGOR N MASK). (MASK.1'S(MASK.1'S (Macro) NIL NIL ("7") 7) POSITION SIZE) [Macro] Returns a bit-mask with SIZE one-bits starting with the bit at POSITION. Equivalent to (LLSH (SUB1 (EXPT 2 SIZE)) POSITION). (MASK.0'S(MASK.0'S (Macro) NIL NIL ("7") 8) POSITION SIZE) [Macro] Returns a bit-mask with all one bits, except for SIZE bits starting at POSITION. Equivalent to (LOGNOT (MASK.1'S POSITION SIZE)). (LOADBYTE(LOADBYTE (Function) NIL NIL ("7") 8) N POS SIZE) [Function] Extracts SIZE bits from N, starting at position POS. Equivalent to (LOGAND (RSH N POS) (MASK.1'S 0 SIZE)). (DEPOSITBYTE(DEPOSITBYTE (Function) NIL NIL ("7") 8) N POS SIZE VAL) [Function] Insert SIZE bits of VAL at position POS into N, returning the result. Equivalent to (LOGOR (BITCLEAR N (MASK.1'S POS SIZE)) (LSH (LOGAND VAL (MASK.1'S 0 SIZE)) POS)) (ROT(ROT (Function) NIL NIL ("7") 8) X N FIELDSIZE) [Function] Rotate bits in field. It performs a bitwise left-rotation of the integer X, by N places, within a field of FIELDSIZE bits wide. Bits being shifted out of the position selected by (EXPT 2 (SUB1 FIELDSIZE)) will flow into the units position. The notions of position and size can be combined to make up a byte specifier, which is constructed by the macro BYTE [note reversal of arguments as compared with the above functions]: (BYTE(BYTE (Macro) NIL NIL ("7") 8) SIZE POSITION) [Macro] Constructs and returns a byte specifier containing SIZE and POSITION. (BYTESIZE(BYTESIZE (Macro) NIL NIL ("7") 8) BYTESPEC) [Macro] Returns the SIZE componant of the byte specifier BYTESPEC. (BYTEPOSITION(BYTEPOSITION (Macro) NIL NIL ("7") 8) BYTESPEC) [Macro] Returns the POSITION componant of the byte specifier BYTESPEC. (LDB(LDB (Macro) NIL NIL ("7") 8) BYTESPEC VAL) [Macro] Equivalent to (LOADBYTE VAL (BYTEPOSITION BYTESPEC)(BYTESIZE BYTESPEC)) (DPB(DPB (Macro) NIL NIL ("7") 8) N BYTESPEC VAL) [Macro] Equivalent to (DEPOSITBYTE VAL (BYTEPOSITION BYTESPEC)(BYTESIZE BYTESPEC) N) Floating-Point Arithmetic(ARITHMETIC NIL Arithmetic NIL ("7") 8 SUBNAME FLOATING% POINT SUBTEXT floating% point)(FLOATING% POINT% ARITHMETIC NIL Floating% point% arithmetic NIL ("7") 8) 1 A floating-point number is input as a signed integer, followed by a decimal point, and another sequence of digits called the fraction, followed by an exponent (represented by E followed by a signed integer) and terminated by a delimiter. Both signs are optional, and either the fraction following the decimal point, or the integer preceding the decimal point may be omitted. One or the other of the decimal point or exponent may also be omitted, but at least one of them must be present to distinguish a floating-point number from an integer. For example, the following will be recognized as floating-point numbers: 5. 5.00 5.01 .3 5E2 5.1E2 5E-3 -5.2E+6 Floating-point numbers are printed using the format control specified by the function FLTFMT (see Chapter 25). FLTFMT is initialized to T, or free format. For example, the above floating-point numbers would be printed free format as: 5.0 5.0 5.01 .3 500.0 510.0 .005 -5.2E6 Floating-point numbers are created by the reader when a . or an E appears in a number, e.g., 1000 is an integer, 1000. a floating-point number, as are 1E3 and 1.E3. Note that 1000D, 1000F, and 1E3D are perfectly legal literal atoms. Floating-point numbers are also created by PACK and MKATOM, and as a result of arithmetic operations. PRINTNUM (see Chapter 25) permits greater control over the printed appearance of floating-point numbers, allowing such things as left-justification, suppression of trailing decimals, etc. The floating-point number range is stored in the following variables: MIN.FLOAT(MIN.FLOAT (Variable) NIL NIL ("7") 9) [Variable] The smallest possible floating-point number. MAX.FLOAT(MAX.FLOAT (Variable) NIL NIL ("7") 9) [Variable] The largest possible floating-point number. All of the functions described below work on floating-point numbers. Unless specified otherwise, if given an integer, they first convert the number to a floating-point number, e.g., (FPLUS 1 2.3) <=> (FPLUS 1.0 2.3) => 3.3; if given a non-numeric argument, they generate an error, Non-numeric arg. (FPLUS(FPLUS (Function) NIL NIL ("7") 9) X1 X2 ... XN) [NoSpread Function] X1 + X2 + ... + XN (FMINUS(FMINUS (Function) NIL NIL ("7") 9) X) [Function] - X (FDIFFERENCE(FDIFFERENCE (Function) NIL NIL ("7") 9) X Y) [Function] X - Y (FTIMES(FTIMES (Function) NIL NIL ("7") 9) X1 X2 ... XN) [NoSpread Function] X1 * X2 * ... * XN (FQUOTIENT(FQUOTIENT (Function) NIL NIL ("7") 10) X Y) [Function] X / Y. The results of division by zero and floating-point overflow is determined by the function OVERFLOW. (FREMAINDER(FREMAINDER (Function) NIL NIL ("7") 10) X Y) [Function] Returns the remainder when X is divided by Y. Equivalent to: (FDIFFERENCE X (FTIMES Y (FIX (FQUOTIENT X Y)))) Example: (FREMAINDER 7.5 2.3) => 0.6 (FGREATERP(FGREATERP (Function) NIL NIL ("7") 10) X Y) [Function] T, if X > Y, NIL otherwise. (FLESSP(FLESSP (Function) NIL NIL ("7") 10) X Y) [Function] T, if X < Y, NIL otherwise. (FEQP(FEQP (Function) NIL NIL ("7") 10) X Y) [Function] Returns T if X and Y are equal floating-point numbers; NIL otherwise. FEQP converts X and Y to floating-point numbers. (FMIN(FMIN (Function) NIL NIL ("7") 10) X1 X2 ... XN) [NoSpread Function] Returns the minimum of X1, X2, ..., XN. (FMIN) returns the largest possible floating-point number, the value of MAX.FLOAT. (FMAX(FMAX (Function) NIL NIL ("7") 10) X1 X2 ... XN) [NoSpread Function] Returns the maximum of X1, X2, ..., XN. (FMAX) returns the smallest possible floating-point number, the value of MIN.FLOAT. (FLOAT(FLOAT (Function) NIL NIL ("7") 10) X) [Function] Converts X to a floating-point number. Example: (FLOAT 0) => 0.0 Transcendental Arithmetic Functions 1 (EXPT(EXPT (Function) NIL NIL ("7") 10) A N) [Function] Returns AN. If A is an integer and N is a positive integer, returns an integer, e.g, (EXPT 3 4) => 81, otherwise returns a floating-point number. If A is negative and N fractional, generates the error, Illegal exponentiation. If N is floating and either too large or too small, generates the error, Value out of range expt. (SQRT(SQRT (Function) NIL NIL ("7") 11) N) [Function] Returns the square root of N as a floating-point number. N may be fixed or floating-point. Generates an error if N is negative. (LOG(LOG (Function) NIL NIL ("7") 11) X) [Function] Returns the natural logarithm of X as a floating-point number. X can be integer or floating-point. (ANTILOG(ANTILOG (Function) NIL NIL ("7") 11) X) [Function] Returns the floating-point number whose logarithm is X. X can be integer or floating-point. Example: (ANTILOG 1) = e => 2.71828... (SIN(SIN (Function) NIL NIL ("7") 11) X RADIANSFLG) [Function] Returns the sine of X as a floating-point number. X is in degrees unless RADIANSFLG = T. (COS(COS (Function) NIL NIL ("7") 11) X RADIANSFLG) [Function] Similar to SIN. ((TAN (Function) NIL NIL ("7") 11)TAN X RADIANSFLG) [Function] Similar to SIN. (ARCSIN (ARCSIN% (Function) NIL NIL ("7") 11)X RADIANSFLG) [Function] The value of ARCSIN is a floating-point number, and is in degrees unless RADIANSFLG = T. In other words, if (ARCSIN X RADIANSFLG) = Z then (SIN Z RADIANSFLG) = X. The range of the value of ARCSIN is -90 to +90 for degrees, -&s/2 to &s/2 for radians. X must be a number between -1 and 1. (ARCCOS(ARCCOS (Function) NIL NIL ("7") 11) X RADIANSFLG) [Function] Similar to ARCSIN. Range is 0 to 180, 0 to &s. (ARCTAN(ARCTAN (Function) NIL NIL ("7") 11) X RADIANSFLG) [Function] Similar to ARCSIN. Range is 0 to 180, 0 to &s. (ARCTAN2(ARCTAN2 (Function) NIL NIL ("7") 11) Y X RADIANSFLG) [Function] Computes (ARCTAN (FQUOTIENT Y X) RADIANSFLG), and returns a corresponding value in the range -180 to 180 (or -&s to &s), i.e. the result is in the proper quadrant as determined by the signs of X and Y. Generating Random Numbers 1 (RAND(RAND (Function) NIL NIL ("7") 11) LOWER UPPER) [Function] Returns a pseudo-random number between LOWER and UPPER inclusive, i.e., RAND can be used to generate a sequence of random numbers. If both limits are integers, the value of RAND is an integer, otherwise it is a floating-point number. The algorithm is completely deterministic, i.e., given the same initial state, RAND produces the same sequence of values. The internal state of RAND is initialized using the function RANDSET. (RANDSET(RANDSET (Function) NIL NIL ("7") 12) X) [Function] Returns the internal state of RAND. If X = NIL, just returns the current state. If X = T, RAND is initialized using the clocks, and RANDSET returns the new state. Otherwise, X is interpreted as a previous internal state, i.e., a value of RANDSET, and is used to reset RAND. For example, (SETQ OLDSTATE (RANDSET)) ... (for X from 1 to 10 do (PRIN1 (RAND 1 10))) 2847592748NIL (RANDSET OLDSTATE) ... (for X from 1 to 10 do (PRIN1 (RAND 1 10))) 2847592748NIL [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "7-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "7-" "")) (222 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "7-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "7-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "7-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "7-" "")) (222 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (48 612 564 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))))),l~,rr30`T30`T,HH1EVENT-T@ PAGEHEADING RIGHTPAGE0 +T,l~,ll,l~60``T5HBH5HBH5HBH,/A PAGEHEADING RIGHTPAGET,@ PAGEHEADINGLEFTBACKT,HHTITANTITAN +TIMESROMAN +PALATINO PALATINO PALATINOPALATINO  HELVETICA TITAN TITAN TITAN CLASSIC +CLASSIC +CLASSIC +MODERN +MODERNMODERN +! IM.CHAP.GETFNMODERN +% HRULE.GETFNMODERN)!IM.INDEX.GETFNQIM.INDEX.GETFNQIM.INDEX.GETFN#AIM.INDEX.GETFNOIM.INDEX.GETFN +/IM.INDEX.GETFNS + #IM.INDEX.GETFNTITAN   +   ++  + !IM.INDEX.GETFNTITAN   +    + +Y  + #IM.INDEX.GETFNTITAN   +   +'  + $IM.INDEX.GETFNTITAN   +   ++  + +  + J +  +I3 +! +L + + + + IM.INDEX.GETFNTITAN     + +   +  +  " +   +N + +   +il + %IM.INDEX.GETFNTITAN   +  ++  + +#  +I  + + + +J 9IM.INDEX.GETFNGIM.INDEX.GETFN HRULE.GETFN +] + + !IM.INDEX.GETFNTITAN  +    +  +  +  + "IM.INDEX.GETFNTITAN  +  + +  + + 'IM.INDEX.GETFNTITAN  +  +   +"IM.INDEX.GETFN  +    +  +  +  +  + %IM.INDEX.GETFNTITAN  +  +  4    @ + &IM.INDEX.GETFNTITAN     +   +  +  +  +     + + 'IM.INDEX.GETFN    + +  +  +  + "IM.INDEX.GETFNMODERN +    + +  +  +  + IM.INDEX.GETFNMODERN +    + +  +  +  + IM.INDEX.GETFNCLASSIC +    + +  +  +  + "IM.INDEX.GETFNMODERN +  +  +    + + #IM.INDEX.GETFNMODERN +  + +  +? + IM.INDEX.GETFNMODERN +     +   +   +  + +- + IM.INDEX.GETFNMODERN +     +   +    + +- + IM.INDEX.GETFNCLASSIC +  +    +  +  + + + + + GIM.INDEX.GETFN9IM.INDEX.GETFN HRULE.GETFN + +) +/ +< +< +< +< +B +H + +8 + + +5 + +Z +: + +U +C + 'IM.INDEX.GETFNTITAN  + 'IM.INDEX.GETFNTITAN - %IM.INDEX.GETFNTITAN  %IM.INDEX.GETFNTITAN - (IM.INDEX.GETFNTITAN  (IM.INDEX.GETFNTITAN   + + + +* + +* + +z +; + +      +   +  +  +  + +    + +  +      +  +  + !IM.INDEX.GETFNTITAN    +   + + !IM.INDEX.GETFNTITAN    +   + + #IM.INDEX.GETFNTITAN       +   +  +  +  + + &IM.INDEX.GETFNTITAN     +  +   + + + 3 + + + 'IM.INDEX.GETFNTITAN     +    + + !IM.INDEX.GETFNTITAN     +    + +E  + &IM.INDEX.GETFNTITAN     + +  +  +  + #IM.INDEX.GETFNTITAN     + +  +  +  + !IM.INDEX.GETFNCLASSIC +    + +  +  +  + !IM.INDEX.GETFNTITAN     + +  +  +  + !IM.INDEX.GETFNTITAN      +   +   +  +: + + !IM.INDEX.GETFNTITAN      +   +   +  +; + + IM.INDEX.GETFNTITAN     + +   + +  " + +   + + + IM.INDEX.GETFNTITAN   +    ; + + +C +< + + !IM.INDEX.GETFNTITAN   +     +' 9 + + + + IM.INDEX.GETFNTITAN     +'   + ]IM.INDEX.GETFN +OIM.INDEX.GETFN HRULE.GETFN + #IM.INDEX.GETFNTITAN      +   + +0  + + "IM.INDEX.GETFNTITAN      +   + +0  + + #IM.INDEX.GETFNTITAN      +   + +,  + +' + + IM.INDEX.GETFNTITAN     +$  ( "   +  + IM.INDEX.GETFNTITAN     +%  b "    + +D + !IM.INDEX.GETFNTITAN     + + !IM.INDEX.GETFNTITAN     + + + + +G +7 + !IM.INDEX.GETFNTITAN   +/  +  + + + + (IM.INDEX.GETFNTITAN   +  + , + "IM.INDEX.GETFNTITAN     +  +  + + + !IM.INDEX.GETFNTITAN     + +  + "IM.INDEX.GETFN  +    +  + + !IM.INDEX.GETFNTITAN     +  +   +   + + "IM.INDEX.GETFNTITAN     +    +  +  + + IM.INDEX.GETFNTITAN     +    +  +  + + "IM.INDEX.GETFNTITAN     +  #  +  +  + + "IM.INDEX.GETFNTITAN     + 1   +   + + %IM.INDEX.GETFNTITAN       +     +    +   + + (IM.INDEX.GETFNTITAN         +    '  + +  +  + + + +  + +  + + IM.INDEX.GETFNTITAN      +K   @ +  +&r +D + IM.INDEX.GETFNTITAN     + 5   + "IM.INDEX.GETFNTITAN   +   +#  + &IM.INDEX.GETFNTITAN   +   +#  + IM.INDEX.GETFNTITAN     +  +  + + +  + + IM.INDEX.GETFNTITAN       +  +  + + +  +  + WIM.INDEX.GETFNIIM.INDEX.GETFN HRULE.GETFN +>|  + +V + + +b  +  +8 + + + +! + +  + + +P + +, +F &IM.INDEX.GETFNTITAN - &IM.INDEX.GETFNTITAN ,) +; + + "IM.INDEX.GETFNTITAN      +   +  +  +  + #IM.INDEX.GETFNTITAN   +  +  + (IM.INDEX.GETFNTITAN     +  +  + #IM.INDEX.GETFNTITAN      +   +  +  +  + 'IM.INDEX.GETFNTITAN     +  + Z + + + (IM.INDEX.GETFNTITAN     +   + +  +  +  +   + + 'IM.INDEX.GETFNTITAN     + +  +  +  + $IM.INDEX.GETFNTITAN     + +  +  +  + "IM.INDEX.GETFNTITAN     + +  # +  + +   + "IM.INDEX.GETFNTITAN      +   +   +  +B + + "IM.INDEX.GETFNTITAN      +   +   +  +C + + #IM.INDEX.GETFNTITAN   +  '  + # HRULE.GETFN + "IM.INDEX.GETFNTITAN     +   1 +1  " + E + + "IM.INDEX.GETFNTITAN   +   8  + !IM.INDEX.GETFNTITAN   + !  # + %IM.INDEX.GETFNTITAN   +5  -  + + !IM.INDEX.GETFNMODERN +  +  +   +  + + !IM.INDEX.GETFNMODERN +  +  +  + +!IM.INDEX.GETFN   +  +  + + &IM.INDEX.GETFN  +  +  +6 +  + +  + + +  +  + + + + & + $IM.INDEX.GETFNTITAN   +  +  +  + + + + $IM.INDEX.GETFNTITAN   +  +  +  + + + + %IM.INDEX.GETFNTITAN     +  +  +   + +  +1 + + + + + +M    HRULE.GETFN + "IM.INDEX.GETFNTITAN      +'   +b + +> +# + + %IM.INDEX.GETFNTITAN   + +  +&  + +& +$ ? + +  + +- + + + +- + +%b cz \ No newline at end of file diff --git a/docs/medley-irm/07-NUMBERS.pdf b/docs/medley-irm/07-NUMBERS.pdf new file mode 100644 index 00000000..10c024ef --- /dev/null +++ b/docs/medley-irm/07-NUMBERS.pdf @@ -0,0 +1,7850 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 7638 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-1)Tj +/TT4 1 Tf +10 0 0 10 295.56 568.2 Tm +(7. NUMBERS AND ARITHMETIC FUNCTIONS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 555.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 531.54 Tm +0.0001 Tc +0.3343 Tw +[(There are four different types of numbers in Interlisp: small integers, large integers, bignums)]TJ +0 -1.2222 TD +0 Tc +0.0611 Tw +[(\(arbitrary-size integers\), and floating-point numbers. Small integers are in the range -65536 to 65535.)]TJ +T* +0.2778 Tw +(Large integers and floating-point numbers are 32-bit quantities that are stored by boxing the)Tj +T* +0 Tw +(number \(see below\). Bignums are boxed as a series of words.)Tj +0 -2 TD +0.0733 Tw +[(Large integers and floating-point numbers can be any full word quantity. To distinguish among the)]TJ +0 -1.2222 TD +0.1633 Tw +[(various kinds of numbers, and other Interlisp pointers, these numbers are boxed When a large)]TJ +T* +0.1089 Tw +(integer or floating-point number is created \(by an arithmetic operation or by )Tj +/TT10 1 Tf +35.2622 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.1089 Tw +(\), Interlisp gets a)Tj +-37.6626 -1.2889 TD +0.0467 Tw +[(new word from number storage and puts the number into that word. Interlisp then passes around)]TJ +0 -1.2222 TD +0.1689 Tw +[(the pointer to that word, i.e., the boxed number, rather than the actual quantity itself. When a)]TJ +T* +0.0067 Tw +(numeric function needs the actual numeric quantity, it performs the extra level of addressing to obtain)Tj +T* +0.1667 Tw +[(the value of the number. This latter process is called unboxing. Unboxing does not use any)]TJ +T* +0.0744 Tw +[(storage, but each boxing operation uses one new word of number storage. If a computation creates)]TJ +T* +0.2822 Tw +(many large integers or floating-point numbers, i.e., does lots of boxes, it may cause a garbage)Tj +T* +0 Tw +(collection of large integer space, or of floating-point number space.)Tj +0 -2 TD +(The following functions can be used to distinguish the different types of numbers:)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SMALLP)Tj +/F1 1 Tf +10 0 0 10 139.8 343.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 343.66 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31860.9([Function])]TJ +-3.0424 -1.8444 TD +(Returns )Tj +/TT14 1 Tf +3.7826 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +(, if )Tj +/TT14 1 Tf +1.4851 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +[( is a small integer; )]TJ +/TT10 1 Tf +8.7953 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( otherwise. Does not generate an error if )]TJ +/TT14 1 Tf +18.7451 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +[( is not a)]TJ +-36.4087 -1.2889 TD +0 Tw +(number.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FIXP)Tj +/F1 1 Tf +10 0 0 10 129 296.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 296.18 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.161 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT14 1 Tf +3.8659 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +(, if )Tj +/TT14 1 Tf +1.6518 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( is an integer; )]TJ +/TT10 1 Tf +6.7108 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +[( otherwise. Note that )]TJ +/TT10 1 Tf +10.4669 0 TD +0 Tw +(FIXP)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( is true for small integers,)]TJ +-28.0964 -1.2889 TD +0 Tw +(large integers, and bignums. Does not generate an error if )Tj +/TT14 1 Tf +25.9775 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is not a number.)Tj +/TT10 1 Tf +-29.2443 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FLOATP)Tj +/F1 1 Tf +10 0 0 10 139.8 248.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 248.1 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31860.9([Function])]TJ +-3.0424 -1.8444 TD +(Returns )Tj +/TT14 1 Tf +3.8148 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( if )]TJ +/TT14 1 Tf +1.2996 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( is a floating-point number; )]TJ +/TT10 1 Tf +13.0911 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0878 Tw +[( otherwise. Does not give an error if )]TJ +/TT14 1 Tf +17.1298 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( is)]TJ +-38.936 -1.2889 TD +0 Tw +(not a number.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(NUMBERP)Tj +/F1 1 Tf +10 0 0 10 145.2 200.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 147.98 200.62 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31260.9([Function])]TJ +-3.6424 -1.8444 TD +(Returns )Tj +/TT14 1 Tf +3.7582 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +(, if )Tj +/TT14 1 Tf +1.4362 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( is a number of any type; )]TJ +/TT10 1 Tf +11.6883 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +[( otherwise. Does not generate an error if )]TJ +/TT14 1 Tf +18.5251 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( is)]TJ +-39.0085 -1.2889 TD +0 Tw +(not a number.)Tj +/TT16 1 Tf +0 -2 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0111 Tw +[(: In previous releases, )]TJ +/TT10 1 Tf +10.099 0 TD +0 Tw +(NUMBERP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0111 Tw +[( was true only if \()]TJ +/TT10 1 Tf +7.7987 0 TD +0 Tw +(FLOATP )Tj +/TT14 1 Tf +4.2274 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +(\) or \()Tj +/TT10 1 Tf +2.1292 0 TD +0 Tw +(FIXP )Tj +/TT14 1 Tf +3.0272 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +(\) were true.)Tj +-34.9044 -1.2889 TD +0.0511 Tw +(With the additon of Common Lisp ratios and complex numbers, )Tj +/TT10 1 Tf +29.122 0 TD +0 Tw +(NUMBERP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0511 Tw +[( now returns )]TJ +/TT10 1 Tf +6.0693 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +-39.392 -1.2889 TD +(for )Tj +/TT18 1 Tf +1.5239 0 TD +(all)Tj +/TT8 1 Tf +0.9995 0 TD +( number types . Code relying on the "old" behavior should be modified.)Tj +-7.8568 -2 TD +0.0678 Tw +(Each small integer has a unique representation, so )Tj +/TT10 1 Tf +22.925 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0678 Tw +[( may be used to check equality. )]TJ +/TT10 1 Tf +14.8635 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0678 Tw +[( should not)]TJ +-40.1889 -1.2889 TD +0.1178 Tw +(be used for large integers, bignums, or floating-point numbers, )Tj +/TT10 1 Tf +29.0927 0 TD +0 Tw +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6178 0 TD +(IEQP)Tj +/TT8 1 Tf +2.4004 0 TD +0.1178 Tw +(, or )Tj +/TT10 1 Tf +1.9265 0 TD +0 Tw +(EQUAL)Tj +/TT8 1 Tf +3.0005 0 TD +0.1178 Tw +[( must be used)]TJ +-38.8381 -1.2889 TD +0 Tw +(instead.)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(EQP)Tj +/F1 1 Tf +10 0 0 10 123.6 70.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 70.74 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7809 70.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5609 70.74 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +33.2519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.8059 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +(, if )Tj +/TT14 1 Tf +1.5318 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( and )]TJ +/TT14 1 Tf +2.3507 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( are equal numbers; )]TJ +/TT10 1 Tf +9.2916 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0789 Tw +[( otherwise. )]TJ +/TT10 1 Tf +5.5926 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0789 Tw +[( may be used if )]TJ +/TT14 1 Tf +7.3564 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( and )]TJ +/TT14 1 Tf +2.3506 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( are)]TJ +-38.2806 -1.2889 TD +(known to be small integers. )Tj +/TT10 1 Tf +13.1486 0 TD +0 Tw +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +0.0789 Tw +[( does not convert )]TJ +/TT14 1 Tf +8.1661 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( and )]TJ +/TT14 1 Tf +2.3506 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( to integers, e.g., )]TJ +/TT10 1 Tf +7.755 0 TD +0.1878 Tw +(\(EQP 2000)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 14 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +18 0 obj +<< +/Length 6590 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +0.05 Tw +(2000.3\) => NIL)Tj +/TT8 1 Tf +8.5014 0 TD +0.0211 Tw +(, but it can be used to compare an integer and a floating-point number,)Tj +-8.5014 -1.2889 TD +0 Tw +(e.g., )Tj +/TT10 1 Tf +2.174 0 TD +0.3322 Tw +(\(EQP 2000 2000.0\) => T)Tj +/TT8 1 Tf +14.531 0 TD +0.1389 Tw +(. )Tj +/TT10 1 Tf +1.0278 0 TD +0 Tw +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +[( does not generate an error if )]TJ +/TT14 1 Tf +13.9483 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( or )]TJ +/TT14 1 Tf +1.7187 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( are not)]TJ +-36.4003 -1.2889 TD +0 Tw +(numbers.)Tj +/TT10 1 Tf +0 -2 TD +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +0.22 Tw +[( can also be used to compare stack pointers \(see Chapter 11\) and compiled code)]TJ +-1.8003 -1.2889 TD +0 Tw +(objects \(see Chapter 10\).)Tj +-5.3333 -2 TD +0.1389 Tw +(The action taken on division by zero and floating-point overflow is determined with the following)Tj +0 -1.2222 TD +0 Tw +(function:)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(OVERFLOW)Tj +/F1 1 Tf +10 0 0 10 198.6 468.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.38 468.46 Tm +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29460.7([Function])]TJ +-5.4426 -1.8444 TD +0.0733 Tw +(Sets a flag that determines the system response to arithmetic overflow \(for floating-point)Tj +0 -1.2222 TD +0 Tw +(arithmetic\) and division by zero; returns the previous setting.)Tj +0 -2 TD +0.0622 Tw +[(For integer arithmetic: If )]TJ +/TT14 1 Tf +11.6036 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +0.1489 Tw +[( = T)]TJ +/TT8 1 Tf +2.6982 0 TD +0.0622 Tw +[(, an error occurs on division by zero. If )]TJ +/TT14 1 Tf +18.1974 0 TD +0 Tw +(FLG )Tj +/TT10 1 Tf +2.5493 0 TD +0.1489 Tw +(= NIL)Tj +/TT8 1 Tf +-36.8488 -1.2889 TD +0 Tw +(or )Tj +/TT10 1 Tf +1.2565 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0656 Tw +[(, integer division by zero returns zero. Integer overflow cannot occur, because small)]TJ +-1.8566 -1.2889 TD +0 Tw +(integers are converted to bignums \(see the beginning of this chapter\).)Tj +0 -2 TD +0.0111 Tw +[(For floating-point arithmetic: If )]TJ +/TT14 1 Tf +14.3441 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +0.0278 Tw +[( = T)]TJ +/TT8 1 Tf +2.4559 0 TD +0.0111 Tw +(, an error occurs on floating overflow or floating)Tj +-18.6004 -1.2889 TD +0.0989 Tw +[(division by zero. If )]TJ +/TT14 1 Tf +9.2942 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +0.2378 Tw +[( = NIL)]TJ +/TT8 1 Tf +4.0761 0 TD +0.0989 Tw +[( or )]TJ +/TT10 1 Tf +1.6387 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0989 Tw +(, the largest \(or smallest\) floating-point number is)Tj +-17.4095 -1.2889 TD +0 Tw +(returned as the result of the overflowed computation or floating division by zero.)Tj +0 -2 TD +0.0078 Tw +(The default value for )Tj +/TT10 1 Tf +9.5599 0 TD +0 Tw +(OVERFLOW)Tj +/TT8 1 Tf +4.8008 0 TD +0.0078 Tw +[( is )]TJ +/TT10 1 Tf +1.2304 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0078 Tw +(, meaning an error is generated on division by zero or)Tj +-16.1912 -1.2889 TD +0 Tw +(floating overflow.)Tj +/TT4 1 Tf +10 0 0 10 102 306.52 Tm +(Generic Arithmetic)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 303.81 m +558.01 303.81 l +S +BT +/TT8 1 Tf +9 0 0 9 126 289.86 Tm +0.0611 Tw +[(The functions in this section are generic arithmetic functions. If any of the arguments are floating-)]TJ +0 -1.2222 TD +0.1178 Tw +(point numbers \(see the Floating-Point Arithmetic section below\), they act exactly like floating-point)Tj +T* +0.1467 Tw +[(functions, floating all arguments and returning a floating-point number as their value. Otherwise,)]TJ +T* +0.0678 Tw +[(they act like the integer functions \(see the Integer Arithmetic section below\). If given a non-numeric)]TJ +T* +0.07 Tw +(argument, they generate an error, )Tj +/TT10 1 Tf +15.456 0 TD +0.1678 Tw +(Non-numeric arg)Tj +/TT8 1 Tf +9.1692 0 TD +0.07 Tw +[(. The results of division by zero and floating-)]TJ +-24.6252 -1.2889 TD +0 Tw +(point overflow is determined by the function )Tj +/TT10 1 Tf +20.1392 0 TD +(OVERFLOW)Tj +/TT8 1 Tf +4.8008 0 TD +( \(see the section above\).)Tj +/TT10 1 Tf +-22.2733 -2.0667 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PLUS)Tj +/TT10 1 Tf +2.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +6 0 0 6 187.8 213.66 Tm +(1)Tj +9 0 0 9 191.4 215.66 Tm +( X)Tj +6 0 0 6 202.2 213.66 Tm +(2)Tj +9 0 0 9 205.8 215.66 Tm +( ... X)Tj +6 0 0 6 238.2 213.66 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 241.8 215.66 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22032.1([NoSpread Function])]TJ +/TT14 1 Tf +-8.1334 -2.0922 TD +(X)Tj +6 0 0 6 179.4 194.83 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 183 196.83 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 185.78 196.83 Tm +(+)Tj +/F1 1 Tf +10 0 0 10 191.1809 196.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 193.9609 196.83 Tm +(X)Tj +6 0 0 6 199.36 194.83 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 202.96 196.83 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 205.74 196.83 Tm +(+ ... +)Tj +/F1 1 Tf +10 0 0 10 243.5461 196.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 246.3261 196.83 Tm +(X)Tj +6 0 0 6 251.72 194.83 Tm +(N)Tj +/F1 1 Tf +10 0 0 10 255.32 196.83 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 150 177.28 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MINUS)Tj +/TT10 1 Tf +2.9999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6697 0 TD +([Function])Tj +/TT10 1 Tf +-35.4033 -1.9867 TD +(-)Tj +/F1 1 Tf +10 0 0 10 179.4008 159.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 182.1808 159.4 Tm +(X)Tj +/TT10 1 Tf +-3.5757 -2.0667 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(DIFFERENCE)Tj +/TT10 1 Tf +5.9999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X Y)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27969.5([Function])]TJ +/TT14 1 Tf +-6.9338 -1.9867 TD +(X)Tj +/F1 1 Tf +10 0 0 10 179.4008 122.92 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 182.1808 122.92 Tm +( - Y)Tj +/TT10 1 Tf +-3.5757 -2.0667 TD +(\()Tj +/TT12 1 Tf +0.6 0 TD +(TIMES)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +6 0 0 6 193.2 102.32 Tm +(1)Tj +9 0 0 9 196.8 104.32 Tm +( X)Tj +6 0 0 6 207.6 102.32 Tm +(2)Tj +9 0 0 9 211.2 104.32 Tm +( )Tj +/TT10 1 Tf +0.6001 0 TD +(...)Tj +/TT14 1 Tf +1.8003 0 TD +( X)Tj +6 0 0 6 243.6 102.32 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 247.2 104.32 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21432.1([NoSpread Function])]TJ +/TT14 1 Tf +-8.7334 -2.0922 TD +(X)Tj +6 0 0 6 179.4 83.49 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 183 85.49 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 185.78 85.49 Tm +(*)Tj +/F1 1 Tf +10 0 0 10 191.1809 85.49 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 193.9609 85.49 Tm +(X)Tj +6 0 0 6 199.36 83.49 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 202.96 85.49 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 205.74 85.49 Tm +(* ... *)Tj +/F1 1 Tf +10 0 0 10 243.5461 85.49 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 246.3261 85.49 Tm +(X)Tj +6 0 0 6 251.72 83.49 Tm +(N)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +21 0 obj +<< +/Length 9821 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-3)Tj +/TT6 1 Tf +10 0 0 10 305.11 612 Tm +(NUMBERS AND ARITHMETIC FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 569.54 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(QUOTIENT)Tj +/TT10 1 Tf +4.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X Y)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29169.5([Function])]TJ +-5.7338 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9844 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[( and )]TJ +/TT14 1 Tf +2.3218 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[( are both integers, returns the integer division of )]TJ +/TT14 1 Tf +22.1728 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[( and )]TJ +/TT14 1 Tf +2.3218 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[(. Otherwise, converts)]TJ +-30.2011 -1.2889 TD +0 Tw +(both )Tj +/TT14 1 Tf +2.2573 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( to floating-point numbers, and does a floating-point division.)Tj +/TT10 1 Tf +-8.3171 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(REMAINDER)Tj +/F1 1 Tf +10 0 0 10 156 521.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.78 521.46 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 164.1808 521.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 166.9608 521.46 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29151.9([Function])]TJ +-5.7514 -1.9867 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( are both integers, returns )Tj +/TT10 1 Tf +11.6177 0 TD +(\(IREMAINDER )Tj +/TT14 1 Tf +7.2012 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, otherwise )Tj +/TT10 1 Tf +5.106 0 TD +(\(FREMAINDER)Tj +/F3 1 Tf +10 0 0 10 461.1533 503.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 464.0233 503.58 Tm +(X)Tj +/F3 1 Tf +10 0 0 10 469.4242 503.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 472.2942 503.58 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 483.0959 503.58 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 102 483.64 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GREATERP)Tj +/TT4 1 Tf +10 0 0 10 150.6079 483.64 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.38 483.64 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 158.7809 483.64 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 161.5609 483.64 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29751.9([Function])]TJ +/TT10 1 Tf +-5.1514 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(>)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.2414 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LESSP)Tj +/F1 1 Tf +10 0 0 10 134.4 447.16 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.18 447.16 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 142.5809 447.16 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 145.3609 447.16 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31551.9([Function])]TJ +/TT10 1 Tf +-3.3514 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(<)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-8.9914 -2.2156 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GEQ)Tj +/TT4 1 Tf +10 0 0 10 123.6 410.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.3783 410.62 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7792 410.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5592 410.62 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +33.2521 0 TD +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(>=)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.8415 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LEQ)Tj +/F1 1 Tf +10 0 0 10 123.6 374.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 374.14 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7809 374.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5609 374.14 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +33.2519 0 TD +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(<=)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.8415 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ZEROP)Tj +/F1 1 Tf +10 0 0 10 134.4 337.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.18 337.66 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.9609 0 TD +([Function])Tj +-35.4033 -1.9867 TD +(The same as )Tj +/TT10 1 Tf +5.6333 0 TD +(\(EQP)Tj +/F3 1 Tf +10 0 0 10 198.3032 319.78 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.1732 319.78 Tm +(X)Tj +/F3 1 Tf +10 0 0 10 206.5741 319.78 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 209.4441 319.78 Tm +(0\))Tj +/F1 1 Tf +10 0 0 10 220.2458 319.78 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 102 299.9 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MINUSP)Tj +/F1 1 Tf +10 0 0 10 139.8 299.9 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 299.9 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31860.9([Function])]TJ +/TT10 1 Tf +-3.0424 -1.9867 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is negative; )Tj +/TT10 1 Tf +5.4932 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise. Works for both integers and floating-point numbers)Tj +/F1 1 Tf +10 0 0 10 469.5688 282.02 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 102 262.14 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MIN)Tj +/F1 1 Tf +10 0 0 10 123.6 262.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 262.14 Tm +(X)Tj +6 0 0 6 131.78 260.14 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 135.38 262.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 138.16 262.14 Tm +(X)Tj +6 0 0 6 143.56 260.14 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 147.16 262.14 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 149.94 262.14 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 166.1426 262.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 168.9226 262.14 Tm +(X)Tj +6 0 0 6 174.32 260.14 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 177.92 262.14 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23796.6([NoSpread Function])]TJ +-6.369 -1.95 TD +0.0478 Tw +(Returns the minimum of )Tj +/TT14 1 Tf +11.3498 0 TD +0 Tw +(X)Tj +6 0 0 6 233.57 242.59 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 237.17 244.59 Tm +(, )Tj +/TT14 1 Tf +0.5478 0 TD +(X)Tj +6 0 0 6 247.5 242.59 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 251.1 244.59 Tm +(, )Tj +/TT10 1 Tf +0.5478 0 TD +(...,)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2978 0 TD +(X)Tj +6 0 0 6 285.71 242.59 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 289.31 244.59 Tm +0.0478 Tw +(. )Tj +/TT10 1 Tf +0.8456 0 TD +0 Tw +(\(MIN\))Tj +/TT8 1 Tf +3.0005 0 TD +0.0478 Tw +[( returns the value of )]TJ +/TT10 1 Tf +9.3971 0 TD +0 Tw +(MAX.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.0478 Tw +[( \(see)]TJ +-37.9898 -1.3944 TD +0 Tw +(the Integer Arithmetic section below\).)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MAX)Tj +/F1 1 Tf +10 0 0 10 123.6 212.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 212.76 Tm +(X)Tj +6 0 0 6 131.78 210.76 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 135.38 212.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 138.16 212.76 Tm +(X)Tj +6 0 0 6 143.56 210.76 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 147.16 212.76 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 149.94 212.76 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 166.1426 212.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 168.9226 212.76 Tm +(X)Tj +6 0 0 6 174.32 210.76 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 177.92 212.76 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23796.6([NoSpread Function])]TJ +-6.369 -1.95 TD +0.0211 Tw +(Returns the maximum of )Tj +/TT14 1 Tf +11.3862 0 TD +0 Tw +(X)Tj +6 0 0 6 233.89 193.21 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 237.49 195.21 Tm +(, )Tj +/TT14 1 Tf +0.5211 0 TD +(X)Tj +6 0 0 6 247.58 193.21 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 251.18 195.21 Tm +0.0211 Tw +(, ..., )Tj +/TT14 1 Tf +1.7922 0 TD +0 Tw +(X)Tj +6 0 0 6 272.71 193.21 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 276.31 195.21 Tm +0.0211 Tw +(. )Tj +/TT10 1 Tf +0.7922 0 TD +0 Tw +(\(MAX\))Tj +/TT8 1 Tf +3.0005 0 TD +0.0211 Tw +[( returns the value of )]TJ +/TT10 1 Tf +9.2638 0 TD +0 Tw +(MIN.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.0211 Tw +[( \(see the)]TJ +-36.3587 -1.3944 TD +0 Tw +(Integer Arithmetic section below\).)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ABS)Tj +/F1 1 Tf +10 0 0 10 123.6 163.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 163.38 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.761 0 TD +([Function])Tj +/TT14 1 Tf +-35.4033 -1.8444 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(> 0)Tj +/TT8 1 Tf +1.8003 0 TD +(, otherwise )Tj +/TT10 1 Tf +5.106 0 TD +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(ABS)Tj +/TT8 1 Tf +1.8003 0 TD +( uses )Tj +/TT10 1 Tf +2.4297 0 TD +(GREATERP)Tj +/TT8 1 Tf +4.8008 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(MINUS)Tj +/TT8 1 Tf +3.0005 0 TD +( \(not )Tj +/TT10 1 Tf +2.2871 0 TD +(IGREATERP)Tj +/TT8 1 Tf +5.4009 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(IMINUS)Tj +/TT8 1 Tf +3.6006 0 TD +(\).)Tj +/TT4 1 Tf +10 0 0 10 54 123.84 Tm +(Integer Arithmetic)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 121.13 m +510.01 121.13 l +S +BT +/TT8 1 Tf +9 0 0 9 78 107.18 Tm +0.0811 Tw +(The input syntax for an integer is an optional sign \(+ or -\) followed by a sequence of decimal digits,)Tj +0 -1.2222 TD +0.0156 Tw +[(and terminated by a delimiting character. Integers entered with this syntax are interpreted as decimal)]TJ +T* +0 Tw +(integers. Integers in other radices can be entered as follows:)Tj +/TT10 1 Tf +2.2667 -2.1422 TD +(123Q)Tj +-0.6 -1.2089 TD +(#o123)Tj +/TT8 1 Tf +3.6667 0 TD +0.0667 Tw +(If an integer is followed by the letter )Tj +/TT10 1 Tf +16.8322 0 TD +0 Tw +(Q)Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +(, or preceeded by a pound sign and the letter )Tj +/TT10 1 Tf +21.217 0 TD +0 Tw +(o)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-39.2493 -1.2889 TD +(the digits are interpreted as an octal \(base 8\) integer.)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 23 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +25 0 obj +<< +/Length 6601 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 130.2 569.54 Tm +(#b10101)Tj +/TT8 1 Tf +4.8667 0 TD +0.0033 Tw +(If an integer is preceeded by a pound sign and the letter )Tj +/TT10 1 Tf +25.4746 0 TD +0 Tw +(b)Tj +/TT8 1 Tf +0.6001 0 TD +0.0033 Tw +(, the digits are interpreted as a)Tj +-26.0747 -1.2889 TD +0 Tw +(binary \(base 2\) integer.)Tj +/TT10 1 Tf +-4.2667 -2 TD +(#x1A90)Tj +/TT8 1 Tf +4.2667 0 TD +0.0033 Tw +(If an integer is preceeded by a pound sign and the letter )Tj +/TT10 1 Tf +25.4746 0 TD +0 Tw +(x)Tj +/TT8 1 Tf +0.6001 0 TD +0.0033 Tw +(, the digits are interpreted as a)Tj +-26.0747 -1.2889 TD +0 Tw +(hexadecimal \(base 16\) integer.)Tj +/TT10 1 Tf +-4.8667 -2 TD +(#5r1243)Tj +/TT8 1 Tf +4.8667 0 TD +0.0333 Tw +(If an integer is preceeded by a pound sign, a positive decimal integer )Tj +/TT10 1 Tf +31.1213 0 TD +0 Tw +(BASE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0333 Tw +(, and the letter)Tj +-33.5217 -1.2889 TD +0 Tw +()Tj +/TT10 1 Tf +0.5 0 TD +(r)Tj +/TT8 1 Tf +0.6001 0 TD +0.1089 Tw +(, the digits are interpreted as an integer in the base )Tj +/TT10 1 Tf +24.253 0 TD +0 Tw +(BASE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1089 Tw +[(. For example, )]TJ +/TT10 1 Tf +7.1817 0 TD +0.2622 Tw +(#8r123 =)Tj +-34.9351 -1.2889 TD +0 Tw +(123Q)Tj +/TT8 1 Tf +2.4004 0 TD +0.1711 Tw +(, and )Tj +/TT10 1 Tf +2.7851 0 TD +0.4122 Tw +(#16r12A3 = #x12A3)Tj +/TT8 1 Tf +11.0261 0 TD +0.1711 Tw +[(. When typing a number in a radix above ten, the)]TJ +-16.2116 -1.2889 TD +0.0311 Tw +(uppercase letters A through Z can be used as the digits after 9 \(but there is no digit above)Tj +0 -1.2222 TD +0 Tw +(Z, so it is not possible to type all base-99 digits\).)Tj +-5.3333 -2 TD +0.13 Tw +(Medley keeps no record of how you typed a number, so )Tj +/TT10 1 Tf +26.4124 0 TD +0 Tw +(77Q)Tj +/TT8 1 Tf +1.8003 0 TD +0.13 Tw +[( and )]TJ +/TT10 1 Tf +2.4529 0 TD +0 Tw +(63)Tj +/TT8 1 Tf +1.2002 0 TD +0.13 Tw +[( both correspond to the same)]TJ +-31.8658 -1.2889 TD +0.0122 Tw +[(integer, and are indistinguishable internally. The function )]TJ +/TT10 1 Tf +26.1246 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[( \(see Chapter 25\), sets the radix used)]TJ +-29.1251 -1.2889 TD +0 Tw +(to print integers.)Tj +/TT10 1 Tf +0 -2 TD +(PACK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[( and )]TJ +/TT10 1 Tf +2.3573 0 TD +0 Tw +(MKATOM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +[( create numbers when given a sequence of characters observing the above syntax,)]TJ +-8.3583 -1.2889 TD +0 Tw +(e.g. )Tj +/TT10 1 Tf +1.7852 0 TD +(\(PACK \(1 2 Q\)\) => 10)Tj +/TT8 1 Tf +12.6021 0 TD +(. Integers are also created as a result of arithmetic operations.)Tj +-14.3872 -2.0667 TD +0.0311 Tw +[(The range of integers of various types is implementation-dependent. This information is accessible to)]TJ +0 -1.2222 TD +0 Tw +(you through the following variables:)Tj +/TT12 1 Tf +2.6667 -2 TD +(MIN.SMALLP)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +/TT12 1 Tf +-6 -1.0667 TD +(MAX.SMALLP)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.8444 TD +(The smallest/largest possible small integer.)Tj +/TT12 1 Tf +-2.6667 -2 TD +(MIN.FIXP)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +/TT12 1 Tf +-38.2678 -1.0667 TD +(MAX.FIXP)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +(The smallest/largest possible large integer.)Tj +/TT12 1 Tf +-2.6667 -2 TD +(MIN.INTEGER)Tj +/TT8 1 Tf +6.6 0 TD +[( )-31167.8([Variable])]TJ +/TT12 1 Tf +-6.6 -1.0667 TD +(MAX.INTEGER)Tj +/TT8 1 Tf +6.6 0 TD +[( )-31167.8([Variable])]TJ +-3.9333 -1.8444 TD +0.1533 Tw +(The value of )Tj +/TT10 1 Tf +6.2007 0 TD +0 Tw +(MAX.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.1533 Tw +[( and )]TJ +/TT10 1 Tf +2.4995 0 TD +0 Tw +(MIN.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.1533 Tw +[( are two special system datatypes. For)]TJ +-21.9024 -1.2889 TD +0.2156 Tw +(some algorithms, it is useful to have an integer that is larger than any other integer.)Tj +0 -1.2222 TD +0.03 Tw +(Therefore, the values of )Tj +/TT10 1 Tf +10.7987 0 TD +0 Tw +(MAX.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.03 Tw +[( and )]TJ +/TT10 1 Tf +2.2529 0 TD +0 Tw +(MIN.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.03 Tw +[( are two special data types; the)]TJ +-26.2537 -1.2889 TD +0.4878 Tw +(value of )Tj +/TT10 1 Tf +4.7924 0 TD +0 Tw +(MAX.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.4878 Tw +[( is )]TJ +/TT10 1 Tf +2.1904 0 TD +0 Tw +(GREATERP)Tj +/TT8 1 Tf +4.8008 0 TD +0.4878 Tw +[( than any other integer, and the value of)]TJ +/TT10 1 Tf +-18.3847 -1.2889 TD +0 Tw +(MIN.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +0.2567 Tw +[( is )]TJ +/TT10 1 Tf +1.7282 0 TD +0 Tw +(LESSP)Tj +/TT8 1 Tf +3.0005 0 TD +0.2567 Tw +[( than any other integer. Trying to do arithmetic using these)]TJ +-11.3297 -1.2889 TD +0 Tw +(special bignums, other than comparison, will cause an error.)Tj +-5.3333 -2 TD +0.0278 Tw +[(All of the functions described below work on integers. Unless specified otherwise, if given a floating-)]TJ +0 -1.2222 TD +0.2378 Tw +(point number, they first convert the number to an integer by truncating the fractional bits, e.g.,)Tj +/TT10 1 Tf +T* +0.1722 Tw +(\(IPLUS 2.3 3.8\) = 5)Tj +/TT8 1 Tf +12.0907 0 TD +0.0722 Tw +(; if given a non-numeric argument, they generate an error, )Tj +/TT10 1 Tf +26.6451 0 TD +0 Tw +(Non-numeric)Tj +-38.7358 -1.2889 TD +(arg)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +0.8664 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IPLUS)Tj +/F1 1 Tf +10 0 0 10 182.4052 102.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 187.9653 102.66 Tm +(X)Tj +6 0 0 6 193.36 100.66 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 196.96 102.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 199.74 102.66 Tm +(X)Tj +6 0 0 6 205.14 100.66 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 208.74 102.66 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 211.52 102.66 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 227.7226 102.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 230.5026 102.66 Tm +(X)Tj +6 0 0 6 235.9 100.66 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 239.5 102.66 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22287.7([NoSpread Function])]TJ +-7.8779 -1.95 TD +(Returns the sum )Tj +/TT14 1 Tf +7.5239 0 TD +(X)Tj +6 0 0 6 247.13 83.11 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 250.73 85.11 Tm +( )Tj +/TT10 1 Tf +0.25 0 TD +(+)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +6 0 0 6 266.03 83.11 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 269.63 85.11 Tm +( )Tj +/TT10 1 Tf +0.25 0 TD +(+ ... +)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +6 0 0 6 317.33 83.11 Tm +(N.)Tj +/TT8 1 Tf +9 0 0 9 324.53 85.11 Tm +( )Tj +/TT10 1 Tf +0.5 0 TD +(\(IPLUS\) = 0)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-26.4933 -2.3144 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IMINUS)Tj +/F2 1 Tf +10 0 0 10 187.8061 64.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.5861 64.28 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31860.2([Function])]TJ +/TT10 1 Tf +-3.0431 -1.7778 TD +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +28 0 obj +<< +/Length 8342 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-5)Tj +/TT6 1 Tf +10 0 0 10 305.11 612 Tm +(NUMBERS AND ARITHMETIC FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IDIFFERENCE)Tj +/F2 1 Tf +10 0 0 10 166.8105 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 169.5905 568.26 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 174.9914 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 177.7714 568.26 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27950.8([Function])]TJ +/TT14 1 Tf +-6.9526 -1.9867 TD +(X)Tj +/F1 1 Tf +10 0 0 10 131.4009 550.38 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 134.1808 550.38 Tm +( -)Tj +/F1 1 Tf +10 0 0 10 144.9826 550.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.5426 550.38 Tm +(Y)Tj +/TT10 1 Tf +-5.3936 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ADD1)Tj +/F2 1 Tf +10 0 0 10 129 530.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 530.5 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.161 0 TD +([Function])Tj +/TT14 1 Tf +-35.4033 -1.9867 TD +(X)Tj +/F1 1 Tf +10 0 0 10 131.4009 512.62 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 134.1808 512.62 Tm +( + 1)Tj +-3.5757 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SUB1)Tj +/F2 1 Tf +10 0 0 10 129 492.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 492.74 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.161 0 TD +([Function])Tj +/TT14 1 Tf +-35.4033 -1.7778 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( - 1)Tj +-3.2668 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ITIMES)Tj +/F2 1 Tf +10 0 0 10 139.8 456.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 456.86 Tm +(X)Tj +6 0 0 6 147.98 454.86 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 151.58 456.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 154.36 456.86 Tm +(X)Tj +6 0 0 6 159.76 454.86 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 163.36 456.86 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 166.14 456.86 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 182.3426 456.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.1226 456.86 Tm +(X)Tj +6 0 0 6 190.52 454.86 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 194.12 456.86 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21996.6([NoSpread Function])]TJ +-8.169 -1.95 TD +(Returns the product )Tj +/TT14 1 Tf +9.1401 0 TD +(X)Tj +6 0 0 6 213.67 437.31 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 217.27 439.31 Tm +( )Tj +/TT10 1 Tf +0.25 0 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +6 0 0 6 232.57 437.31 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 236.17 439.31 Tm +( )Tj +/TT10 1 Tf +0.25 0 TD +(* ... * )Tj +/TT14 1 Tf +4.8008 0 TD +(X)Tj +6 0 0 6 287.02 437.31 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 290.62 439.31 Tm +(. )Tj +/TT10 1 Tf +0.75 0 TD +(\(ITIMES\) = 1)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-28.909 -2.3144 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IQUOTIENT)Tj +/F1 1 Tf +10 0 0 10 156 418.48 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.78 418.48 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 164.1808 418.48 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 166.9608 418.48 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29151.9([Function])]TJ +/TT14 1 Tf +-5.7514 -1.8444 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(/)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( truncated. Examples:)Tj +/TT10 1 Tf +1.6997 -1.6667 TD +(\(IQUOTIENT 3 2\) => 1)Tj +0 -1 TD +(\(IQUOTIENT -3 2\) => -1)Tj +/TT8 1 Tf +-4 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( is zero, the result is determined by the function )Tj +/TT10 1 Tf +21.3442 0 TD +(OVERFLOW)Tj +/TT8 1 Tf +4.8008 0 TD +( .)Tj +/TT10 1 Tf +-30.3317 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IREMAINDER)Tj +/F1 1 Tf +10 0 0 10 161.4 341.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.18 341.4 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 169.5809 341.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 172.3609 341.4 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28551.9([Function])]TJ +-6.3514 -1.8444 TD +(Returns the remainder when )Tj +/TT14 1 Tf +12.9561 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is divided by )Tj +/TT14 1 Tf +6.2827 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(. Example:)Tj +/TT10 1 Tf +-16.439 -1.6667 TD +(\(IREMAINDER 5 2\) => 1)Tj +-6.6667 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IMOD)Tj +/F1 1 Tf +10 0 0 10 129 291.92 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 291.92 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 137.1808 291.92 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 139.9608 291.92 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.1756 Tw +(Computes the integer modulus of )Tj +/TT14 1 Tf +16.0335 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1756 Tw +[( mod )]TJ +/TT14 1 Tf +2.8907 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1756 Tw +(; this differs from )Tj +/TT10 1 Tf +8.5977 0 TD +0 Tw +(IREMAINDER)Tj +/TT8 1 Tf +6.001 0 TD +0.1756 Tw +[( in that the)]TJ +-34.7231 -1.2889 TD +0 Tw +(result is always a non-negative integer in the range [0,)Tj +/TT14 1 Tf +23.8731 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(\).)Tj +/TT10 1 Tf +-27.1398 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IGREATERP)Tj +/F1 1 Tf +10 0 0 10 156 243.84 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.78 243.84 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 164.1808 243.84 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 166.9608 243.84 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29151.9([Function])]TJ +/TT10 1 Tf +-5.7514 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(>)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.2414 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ILESSP)Tj +/F1 1 Tf +10 0 0 10 139.8 207.36 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 207.36 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 147.9809 207.36 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.7608 207.36 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30951.9([Function])]TJ +/TT10 1 Tf +-3.9514 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(<)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.2414 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IGEQ)Tj +/F1 1 Tf +10 0 0 10 129 170.88 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 170.88 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 137.1808 170.88 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 139.9608 170.88 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(>=)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.8415 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ILEQ)Tj +/F1 1 Tf +10 0 0 10 129 134.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 134.4 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 137.1808 134.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 139.9608 134.4 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(<=)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.8415 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IMIN)Tj +/F1 1 Tf +10 0 0 10 129 97.92 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 97.92 Tm +(X)Tj +6 0 0 6 137.18 95.92 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 140.78 97.92 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 143.56 97.92 Tm +(X)Tj +6 0 0 6 148.96 95.92 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 152.56 97.92 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 155.34 97.92 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 171.5426 97.92 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.3226 97.92 Tm +(X)Tj +6 0 0 6 179.72 95.92 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 183.32 97.92 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23196.6([NoSpread Function])]TJ +-6.969 -1.95 TD +0.2278 Tw +(Returns the minimum of )Tj +/TT14 1 Tf +12.0698 0 TD +0 Tw +(X)Tj +6 0 0 6 240.05 78.37 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 243.65 80.37 Tm +(, )Tj +/TT14 1 Tf +0.7278 0 TD +(X)Tj +6 0 0 6 255.6 78.37 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 259.2 80.37 Tm +(, )Tj +/TT10 1 Tf +0.7278 0 TD +(...,)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.4778 0 TD +(X)Tj +6 0 0 6 297.05 78.37 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 300.65 80.37 Tm +0.2278 Tw +(. )Tj +/TT10 1 Tf +1.2056 0 TD +0 Tw +(\(IMIN\))Tj +/TT8 1 Tf +3.6006 0 TD +0.2278 Tw +[( returns the largest possible large)]TJ +-24.2117 -1.3944 TD +0 Tw +(integer, the value of )Tj +/TT10 1 Tf +9.0625 0 TD +(MAX.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +31 0 obj +<< +/Length 9227 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IMAX)Tj +/F1 1 Tf +10 0 0 10 177 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 568.26 Tm +(X)Tj +6 0 0 6 185.18 566.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 188.78 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.56 568.26 Tm +(X)Tj +6 0 0 6 196.96 566.26 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 200.56 568.26 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 203.34 568.26 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 219.5426 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 222.3226 568.26 Tm +(X)Tj +6 0 0 6 227.72 566.26 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 231.32 568.26 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23196.6([NoSpread Function])]TJ +-6.969 -1.95 TD +0.2044 Tw +(Returns the maximum of )Tj +/TT14 1 Tf +12.1195 0 TD +0 Tw +(X)Tj +6 0 0 6 288.49 548.71 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 292.09 550.71 Tm +(, )Tj +/TT14 1 Tf +0.7044 0 TD +(X)Tj +6 0 0 6 303.83 548.71 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 307.43 550.71 Tm +(, )Tj +/TT10 1 Tf +0.7044 0 TD +(...,)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.4544 0 TD +(X)Tj +6 0 0 6 344.86 548.71 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 348.46 550.71 Tm +(. )Tj +/TT10 1 Tf +0.7044 0 TD +(\(IMAX\))Tj +/TT8 1 Tf +3.6006 0 TD +0.2044 Tw +[( returns the smallest possible large)]TJ +-23.6895 -1.3944 TD +0 Tw +(integer, the value of )Tj +/TT10 1 Tf +9.0625 0 TD +(MIN.INTEGER)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-18.3302 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(IEQP)Tj +/F1 1 Tf +10 0 0 10 177 518.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 518.28 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 185.1808 518.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 187.9608 518.28 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.7415 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0144 Tw +[( if )]TJ +/TT14 1 Tf +1.1529 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0144 Tw +[( and )]TJ +/TT14 1 Tf +2.2218 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0144 Tw +[( are equal integers; )]TJ +/TT10 1 Tf +8.6471 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0144 Tw +[( otherwise. Note that )]TJ +/TT10 1 Tf +9.8447 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0144 Tw +[( may be used if )]TJ +/TT14 1 Tf +7.0341 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0144 Tw +[( and)]TJ +/TT14 1 Tf +-38.043 -1.2889 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0733 Tw +[( are known to be small integers. )]TJ +/TT10 1 Tf +15.136 0 TD +0 Tw +(IEQP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0733 Tw +[( converts )]TJ +/TT14 1 Tf +4.4074 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0733 Tw +[( and )]TJ +/TT14 1 Tf +2.3395 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0733 Tw +[( to integers, e.g., )]TJ +/TT10 1 Tf +7.7328 0 TD +0.1767 Tw +(\(IEQP 2000)Tj +-33.8164 -1.2889 TD +0 Tw +(2000.3\) => T)Tj +/TT8 1 Tf +7.2012 0 TD +(. )Tj +/TT10 1 Tf +-9.8678 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FIX)Tj +/F1 1 Tf +10 0 0 10 171.6 458.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.38 458.6 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.761 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.0033 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[( is an integer, returns )]TJ +/TT14 1 Tf +10.026 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[(. Otherwise, converts )]TJ +/TT14 1 Tf +10.1903 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[( to an integer by truncating fractional)]TJ +-23.0199 -1.2889 TD +0 Tw +(bits For example, )Tj +/TT10 1 Tf +8.0903 0 TD +(\(FIX 2.3\) => 2)Tj +/TT8 1 Tf +8.4014 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(FIX -1.7\) => -1)Tj +/TT8 1 Tf +10.8018 0 TD +(.)Tj +-27.7935 -2.0667 TD +(Since )Tj +/TT10 1 Tf +2.5764 0 TD +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[( is also a programmers assistant command \(see Chapter 13\), typing )]TJ +/TT10 1 Tf +30.169 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[( directly)]TJ +-36.346 -1.2889 TD +0 Tw +(to a Medley executive will not cause the function )Tj +/TT10 1 Tf +21.8711 0 TD +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +( to be called.)Tj +/TT10 1 Tf +-26.3381 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FIXR)Tj +/F1 1 Tf +10 0 0 10 177 380.32 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 380.32 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.161 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9821 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[( is an integer, returns )]TJ +/TT14 1 Tf +9.9205 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[(. Otherwise, converts )]TJ +/TT14 1 Tf +10.1058 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[( to an integer by rounding. )]TJ +/TT10 1 Tf +12.7735 0 TD +0 Tw +(FIXR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0622 Tw +[( will)]TJ +-37.9826 -1.2889 TD +0.2344 Tw +(round towards the even number if )Tj +/TT14 1 Tf +16.8906 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2344 Tw +[( is exactly half way between two integers. For)]TJ +-17.4906 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.249 0 TD +(\(FIXR 2.3\) => 2)Tj +/TT8 1 Tf +9.0015 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(FIXR -1.7\) => -2)Tj +/TT8 1 Tf +10.2017 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(FIXR 3.5\) => 4\))Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +/TT10 1 Tf +-36.7204 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GCD)Tj +/F1 1 Tf +10 0 0 10 171.6 320.64 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.38 320.64 Tm +(N)Tj +6 0 0 6 179.78 318.64 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 183.38 320.64 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 186.16 320.64 Tm +(N)Tj +6 0 0 6 191.56 318.64 Tm +(2)Tj +/TT10 1 Tf +9 0 0 9 195.16 320.64 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31952.1([Function])]TJ +-2.9512 -1.95 TD +(Returns the greatest common divisor of )Tj +/TT14 1 Tf +17.7344 0 TD +(N)Tj +6 0 0 6 339.02 301.09 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 342.62 303.09 Tm +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(N)Tj +6 0 0 6 367.76 301.09 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 371.36 303.09 Tm +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(GCD 72 64\)=8)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 279.2 Tm +(Logical Arithmetic Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 276.49 m +558.01 276.49 l +S +BT +/TT10 1 Tf +9 0 0 9 150 261.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LOGAND)Tj +/F1 1 Tf +10 0 0 10 187.8 261.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.58 261.26 Tm +(X)Tj +6 0 0 6 195.98 259.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 199.58 261.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 202.36 261.26 Tm +(X)Tj +6 0 0 6 207.76 259.26 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 211.36 261.26 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 214.14 261.26 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 230.3426 261.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 233.1226 261.26 Tm +(X)Tj +6 0 0 6 238.52 259.26 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 242.12 261.26 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21996.6([NoSpread Function])]TJ +-8.169 -1.95 TD +(Returns the logical )Tj +/TT10 1 Tf +8.5332 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +( of all its arguments, as an integer. Example:)Tj +/TT10 1 Tf +-6.3335 -1.6667 TD +(\(LOGAND 7 5 6\) => 4)Tj +-6.6667 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LOGOR)Tj +/F1 1 Tf +10 0 0 10 182.4 210.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.18 210.83 Tm +(X)Tj +6 0 0 6 190.58 208.83 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 194.18 210.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.96 210.83 Tm +(X)Tj +6 0 0 6 202.36 208.83 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 205.96 210.83 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 208.74 210.83 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 224.9426 210.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 227.7226 210.83 Tm +(X)Tj +6 0 0 6 233.12 208.83 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 236.72 210.83 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22596.6([NoSpread Function])]TJ +-7.569 -1.95 TD +(Returns the logical )Tj +/TT10 1 Tf +8.5332 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +( of all its arguments, as an integer. Example:)Tj +/TT10 1 Tf +-5.7334 -1.6667 TD +(\(LOGOR 1 3 9\) => 11)Tj +-6.6667 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LOGXOR)Tj +/F1 1 Tf +10 0 0 10 187.8 160.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.58 160.4 Tm +(X)Tj +6 0 0 6 195.98 158.4 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 199.58 160.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 202.36 160.4 Tm +(X)Tj +6 0 0 6 207.76 158.4 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 211.36 160.4 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 214.14 160.4 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 230.3426 160.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 233.1226 160.4 Tm +(X)Tj +6 0 0 6 238.52 158.4 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 242.12 160.4 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21996.6([NoSpread Function])]TJ +-8.169 -1.95 TD +(Returns the logical exclusive )Tj +/TT10 1 Tf +12.875 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +( of its arguments, as an integer. Example:)Tj +/TT10 1 Tf +-10.0752 -1.6667 TD +(\(LOGXOR 11 5\) => 14)Tj +0 -1 TD +(\(LOGXOR 11 5 9\) = \(LOGXOR 14 9\) => 7)Tj +-6.6667 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LSH)Tj +/F1 1 Tf +10 0 0 10 171.6 100.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.38 100.97 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 179.7809 100.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 182.5609 100.97 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +33.2519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0844 Tw +[(\(Arithmetic\) Left Shift. Returns )]TJ +/TT14 1 Tf +15.6664 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0844 Tw +[( shifted left )]TJ +/TT14 1 Tf +5.4784 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0844 Tw +[( places, with the sign bit unaffected. )]TJ +/TT14 1 Tf +17.0481 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +-39.3931 -1.2889 TD +(can be positive or negative. If )Tj +/TT14 1 Tf +13.4702 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is negative, )Tj +/TT14 1 Tf +5.4932 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is shifted right )Tj +/TT10 1 Tf +6.9111 0 TD +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( places.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +34 0 obj +<< +/Length 8660 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-7)Tj +/TT6 1 Tf +10 0 0 10 305.11 612 Tm +(NUMBERS AND ARITHMETIC FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RSH)Tj +/F1 1 Tf +10 0 0 10 123.6 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 568.26 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7809 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5609 568.26 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +33.2519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0756 Tw +[(\(Arithmetic\) Right Shift. Returns )]TJ +/TT14 1 Tf +16.2962 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0756 Tw +[( shifted right )]TJ +/TT14 1 Tf +6.173 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0756 Tw +[( places, with the sign bit unaffected,)]TJ +-23.6694 -1.2889 TD +0.0067 Tw +(and copies of the sign bit shifted into the leftmost bit. )Tj +/TT14 1 Tf +24.0536 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( can be positive or negative. If )]TJ +/TT14 1 Tf +13.7736 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( is)]TJ +-39.0274 -1.2889 TD +0 Tw +(negative, )Tj +/TT14 1 Tf +4.2783 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is shifted left -)Tj +/TT14 1 Tf +6.5229 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( places.)Tj +/TT16 1 Tf +-12.0015 -2.0667 TD +(Warning:)Tj +/TT8 1 Tf +4.25 0 TD +0.0111 Tw +[( Be careful if using )]TJ +/TT10 1 Tf +8.7815 0 TD +0 Tw +(RSH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0111 Tw +[( to simulate division; )]TJ +/TT10 1 Tf +9.564 0 TD +0 Tw +(RSH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0111 Tw +(ing a negative number isnt the)Tj +-26.1961 -1.2889 TD +0 Tw +(same as dividing by a power of two.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LLSH)Tj +/F1 1 Tf +10 0 0 10 129 478.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 478.98 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 137.1808 478.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 139.9608 478.98 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +/TT10 1 Tf +-38.07 -1.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LRSH)Tj +/F1 1 Tf +10 0 0 10 129 468.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 468.1 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 137.1808 468.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 139.9608 468.1 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.2378 Tw +[(Logical Left Shift and Logical Right Shift. The difference between a logical and)]TJ +0 -1.2222 TD +0.0378 Tw +[(arithmetic right shift lies in the treatment of the sign bit. Logical shifting treats it just like)]TJ +T* +0.0322 Tw +(any other bit; arithmetic shifting will not change it, and will propagate rightward when)Tj +T* +0.1422 Tw +[(actually shifting rightwards. Note that shifting \(arithmetic\) a negative number all the)]TJ +T* +0 Tw +(way to the right yields )Tj +/TT10 1 Tf +10.7017 0 TD +(-1)Tj +/TT8 1 Tf +1.2002 0 TD +(, not )Tj +/TT10 1 Tf +2.2041 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT16 1 Tf +-14.7061 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0811 Tw +(: )Tj +/TT10 1 Tf +0.9122 0 TD +0 Tw +(LLSH)Tj +/TT8 1 Tf +2.4004 0 TD +0.0811 Tw +[( and )]TJ +/TT10 1 Tf +2.3551 0 TD +0 Tw +(LRSH)Tj +/TT8 1 Tf +2.4004 0 TD +0.0811 Tw +[( always operate mod-2)]TJ +6 0 0 6 311.29 390.9 Tm +0 Tw +(32)Tj +9 0 0 9 317.29 388.9 Tm +0.0811 Tw +[( arithmetic. Passing a bignum to either of)]TJ +-21.2544 -1.2889 TD +0 Tw +(these will cause an error. )Tj +/TT10 1 Tf +11.4888 0 TD +(LRSH)Tj +/TT8 1 Tf +2.4004 0 TD +( of negative numbers will shift 0s into the high bits.)Tj +/TT10 1 Tf +-16.5558 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(INTEGERLENGTH)Tj +/F1 1 Tf +10 0 0 10 177.6 357.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 180.38 357.42 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27660.9([Function])]TJ +-7.2424 -1.8444 TD +0.6433 Tw +(Returns the number of bits needed to represent )Tj +/TT14 1 Tf +26.2521 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.6433 Tw +[(. This is equivalent to:)]TJ +/TT10 1 Tf +-26.8522 -1.2889 TD +0 Tw +(1+floor[log2[abs[)Tj +/TT14 1 Tf +10.2017 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(]]])Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(\(INTEGERLENGTH 0\) = 0)Tj +/TT8 1 Tf +12.6021 0 TD +(. )Tj +/TT10 1 Tf +0.5 0 TD +( )Tj +-29.1208 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(POWEROFTWOP)Tj +/F1 1 Tf +10 0 0 10 166.8 309.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 169.58 309.34 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28860.9([Function])]TJ +-6.0424 -1.8444 TD +(Returns non-)Tj +/TT10 1 Tf +5.77 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( \(coerced to an integer\) is a power of two.)Tj +/TT10 1 Tf +-11.9611 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(EVENP)Tj +/F1 1 Tf +10 0 0 10 134.4 272.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.18 272.86 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 142.5809 272.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 145.3609 272.86 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-26814.2([NoSpread Function])]TJ +-3.3514 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9744 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0544 Tw +[( is not given, equivalent to )]TJ +/TT10 1 Tf +12.2671 0 TD +0.13 Tw +(\(ZEROP \(IMOD )Tj +/TT14 1 Tf +8.0613 0 TD +0 Tw +(X)Tj +/TT10 1 Tf +0.6001 0 TD +0.13 Tw +[( 2\)\))]TJ +/TT8 1 Tf +2.5304 0 TD +0.0544 Tw +(; otherwise equivalent to )Tj +/TT10 1 Tf +11.3721 0 TD +0 Tw +(\(ZEROP)Tj +-36.4054 -1.4311 TD +(\(IMOD X Y\)\))Tj +/F1 1 Tf +10 0 0 10 185.4096 243.38 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 102 223.5 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ODDP)Tj +/F1 1 Tf +10 0 0 10 129 223.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 223.5 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 137.1808 223.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 139.9608 223.5 Tm +(MODULUS)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23813.6([NoSpread Function])]TJ +-6.352 -1.8444 TD +(Equivalent to )Tj +/TT10 1 Tf +6.1802 0 TD +(\(NOT \(EVENP N MODULUS\)\))Tj +/TT8 1 Tf +13.8023 0 TD +(. )Tj +/TT14 1 Tf +0.75 0 TD +(MODULUS)Tj +/TT8 1 Tf +4.2007 0 TD +( defaults to 2.)Tj +/TT10 1 Tf +-27.5998 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LOGNOT)Tj +/F1 1 Tf +10 0 0 10 139.8062 187.02 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 187.02 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +33.4598 0 TD +([Macro])Tj +-36.5022 -1.8444 TD +(Logical negation of the bits in )Tj +/TT14 1 Tf +13.3345 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(. Equivalent to )Tj +/TT10 1 Tf +6.9302 0 TD +(\(LOGXOR )Tj +/TT14 1 Tf +4.8008 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +( -1\))Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-31.3327 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BITTEST)Tj +/F1 1 Tf +10 0 0 10 145.2 150.54 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 147.98 150.54 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 153.3809 150.54 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 156.1608 150.54 Tm +(MASK)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29650.5([Macro])]TJ +-6.3517 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.7582 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( if any of the bits in )]TJ +/TT14 1 Tf +8.9634 0 TD +0 Tw +(MASK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0311 Tw +[( are on in the number )]TJ +/TT14 1 Tf +9.944 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[(. Equivalent to )]TJ +/TT10 1 Tf +7.0546 0 TD +0.0756 Tw +(\(NOT \(ZEROP)Tj +-33.3207 -1.2889 TD +0 Tw +(\(LOGAND)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MASK)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\)\))Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-12.1681 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BITCLEAR)Tj +/F1 1 Tf +10 0 0 10 150.6 102.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.38 102.46 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 158.7809 102.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 161.5609 102.46 Tm +(MASK)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29050.5([Macro])]TJ +-6.9517 -1.8444 TD +(Turns off bits from )Tj +/TT14 1 Tf +8.5796 0 TD +(MASK)Tj +/TT8 1 Tf +2.4004 0 TD +( in )Tj +/TT14 1 Tf +1.373 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(. Equivalent to )Tj +/TT10 1 Tf +6.9302 0 TD +(\(LOGAND)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(LOGNOT)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MASK)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-35.902 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BITSET)Tj +/F1 1 Tf +10 0 0 10 139.8 65.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 65.98 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 147.9809 65.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.7608 65.98 Tm +(MASK)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30250.5([Macro])]TJ +-5.7517 -1.8444 TD +(Turns on the bits from )Tj +/TT14 1 Tf +10.1328 0 TD +(MASK)Tj +/TT8 1 Tf +2.4004 0 TD +( in )Tj +/TT14 1 Tf +1.373 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(. Equivalent to )Tj +/TT10 1 Tf +6.9302 0 TD +(\(LOGOR )Tj +/TT14 1 Tf +4.2007 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(MASK)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +37 0 obj +<< +/Length 8772 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MASK.1S)Tj +/F1 1 Tf +10 0 0 10 198.6 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.38 568.26 Tm +(POSITION)Tj +/F2 1 Tf +10 0 0 10 244.587 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 247.367 568.26 Tm +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24849.8([Macro])]TJ +-11.1524 -1.8444 TD +0.0811 Tw +(Returns a bit-mask with )Tj +/TT14 1 Tf +11.2009 0 TD +0 Tw +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0811 Tw +[( one-bits starting with the bit at )]TJ +/TT14 1 Tf +14.6693 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0811 Tw +[(. Equivalent to)]TJ +/TT10 1 Tf +-33.0714 -1.2889 TD +0 Tw +(\(LLSH \(SUB1 \(EXPT 2)Tj +/TT8 1 Tf +11.4019 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(POSITION)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-23.57 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MASK.0S)Tj +/F1 1 Tf +10 0 0 10 198.6 520.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.38 520.18 Tm +(POSITION)Tj +/F2 1 Tf +10 0 0 10 244.587 520.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 247.367 520.18 Tm +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24849.8([Macro])]TJ +-11.1524 -1.8445 TD +0.3811 Tw +(Returns a bit-mask with all one bits, except for )Tj +/TT14 1 Tf +24.2088 0 TD +0 Tw +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +0.3811 Tw +[( bits starting at )]TJ +/TT14 1 Tf +8.3452 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-39.7552 -1.2889 TD +(Equivalent to )Tj +/TT10 1 Tf +6.1802 0 TD +(\(LOGNOT \(MASK.1S)Tj +/TT8 1 Tf +10.2017 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-27.9499 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LOADBYTE)Tj +/F1 1 Tf +10 0 0 10 198.6 472.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.38 472.1 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 206.7809 472.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 209.5609 472.1 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 225.7635 472.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.5435 472.1 Tm +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25842.4([Function])]TJ +-9.0609 -1.9867 TD +(Extracts )Tj +/TT14 1 Tf +3.8109 0 TD +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( bits from )]TJ +/TT14 1 Tf +4.5576 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +(, starting at position )Tj +/TT14 1 Tf +9.1591 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +[(. Equivalent to \()]TJ +/TT10 1 Tf +7.3387 0 TD +0.0456 Tw +(LOGAND \(RSH)Tj +/F3 1 Tf +10 0 0 10 500.8235 454.22 Tm +0 Tw +( )Tj +/TT14 1 Tf +9 0 0 9 503.9136 454.22 Tm +(N)Tj +/F3 1 Tf +10 0 0 10 509.3145 454.22 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 512.4044 454.22 Tm +(POS)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +-39.4008 -1.4311 TD +(\(MASK.1S 0)Tj +/F3 1 Tf +10 0 0 10 233.4097 441.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 236.2797 441.34 Tm +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-13.1872 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(DEPOSITBYTE)Tj +/F1 1 Tf +10 0 0 10 214.8 421.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 217.58 421.46 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 222.9809 421.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 225.7609 421.46 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 241.9635 421.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 244.7435 421.46 Tm +(SIZE)Tj +/F2 1 Tf +10 0 0 10 266.347 421.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 269.127 421.46 Tm +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21933.3([Function])]TJ +-12.9701 -1.8444 TD +(Insert )Tj +/TT14 1 Tf +2.793 0 TD +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +( bits of )Tj +/TT14 1 Tf +3.2231 0 TD +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +( at position )Tj +/TT14 1 Tf +5.1831 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +( into )Tj +/TT14 1 Tf +2.2451 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(, returning the result. Equivalent to)Tj +/TT10 1 Tf +-16.0454 -1.6667 TD +(\(LOGOR \(BITCLEAR )Tj +/TT14 1 Tf +10.2017 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +( \(MASK.1S )Tj +/TT14 1 Tf +6.6011 0 TD +(POS)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +-22.2036 -1 TD +( \(LSH \(LOGAND )Tj +/TT14 1 Tf +9.0015 0 TD +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +( \(MASK.1S 0 )Tj +/TT14 1 Tf +7.8013 0 TD +(SIZE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT14 1 Tf +-21.0034 -1 TD +( POS)Tj +/TT10 1 Tf +4.2007 0 TD +(\)\))Tj +-10.8674 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ROT)Tj +/F1 1 Tf +10 0 0 10 171.6 353.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.38 353.98 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 179.7809 353.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 182.5609 353.98 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 187.9617 353.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.7417 353.98 Tm +(FIELDSIZE)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27042.2([Function])]TJ +-7.8612 -1.8444 TD +0.2044 Tw +(Rotate bits in field. It performs a bitwise left-rotation of the integer )Tj +/TT14 1 Tf +33.0866 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2044 Tw +(, by )Tj +/TT14 1 Tf +2.2683 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2044 Tw +[( places,)]TJ +-36.5551 -1.2889 TD +0.0689 Tw +(within a field of )Tj +/TT14 1 Tf +7.5656 0 TD +0 Tw +(FIELDSIZE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0689 Tw +[( bits wide. Bits being shifted out of the position selected by)]TJ +/TT10 1 Tf +-12.9665 -1.2889 TD +0 Tw +(\(EXPT 2 \(SUB1 )Tj +/TT14 1 Tf +8.4014 0 TD +(FIELDSIZE)Tj +/TT10 1 Tf +5.4009 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +( will flow into the units position.)Tj +-20.3358 -2.0667 TD +0.0444 Tw +(The notions of position and size can be combined to make up a byte specifier, which is constructed)Tj +0 -1.2222 TD +0 Tw +(by the macro )Tj +/TT10 1 Tf +6.0142 0 TD +(BYTE)Tj +/TT8 1 Tf +2.4004 0 TD +( [note reversal of arguments as compared with the above functions]:)Tj +/TT10 1 Tf +-5.7479 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BYTE)Tj +/F1 1 Tf +10 0 0 10 177 264.7 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 264.7 Tm +(SIZE)Tj +/F2 1 Tf +10 0 0 10 201.3835 264.7 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 204.1635 264.7 Tm +(POSITION)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27249.8([Macro])]TJ +-8.7524 -1.8444 TD +(Constructs and returns a byte specifier containing )Tj +/TT14 1 Tf +23.2773 0 TD +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-35.3381 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BYTESIZE)Tj +/F1 1 Tf +10 0 0 10 198.6 228.22 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.38 228.22 Tm +(BYTESPEC)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27559.1([Macro])]TJ +-8.4431 -1.8444 TD +(Returns the )Tj +/TT10 1 Tf +5.3643 0 TD +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +( componant of the byte specifier )Tj +/TT14 1 Tf +15.4272 0 TD +(BYTESPEC)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-30.6593 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BYTEPOSITION)Tj +/F1 1 Tf +10 0 0 10 220.2 191.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 222.98 191.74 Tm +(BYTESPEC)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25159.1([Macro])]TJ +-10.8431 -1.8444 TD +(Returns the )Tj +/TT10 1 Tf +5.3643 0 TD +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +( componant of the byte specifier )Tj +/TT14 1 Tf +15.4272 0 TD +(BYTESPEC)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-33.0597 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LDB)Tj +/F1 1 Tf +10 0 0 10 171.6 155.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.38 155.26 Tm +(BYTESPEC)Tj +/F2 1 Tf +10 0 0 10 217.587 155.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 220.367 155.26 Tm +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28449.9([Macro])]TJ +-7.5523 -1.8444 TD +(Equivalent to)Tj +/TT10 1 Tf +0 -1.8089 TD +(\(LOADBYTE)Tj +/F1 1 Tf +10 0 0 10 222.6079 122.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 225.3879 122.38 Tm +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +( \(BYTEPOSITION )Tj +/TT14 1 Tf +9.0015 0 TD +(BYTESPEC)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\(BYTESIZE)Tj +/F1 1 Tf +10 0 0 10 419.8195 122.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 422.5995 122.38 Tm +(BYTESPEC)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\))Tj +-35.0896 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(DPB)Tj +/F1 1 Tf +10 0 0 10 171.6 104.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 174.38 104.5 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 179.7809 104.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 182.5609 104.5 Tm +(BYTESPEC)Tj +/F2 1 Tf +10 0 0 10 225.7679 104.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.5479 104.5 Tm +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27541([Macro])]TJ +-8.4613 -1.8444 TD +(Equivalent to)Tj +/TT10 1 Tf +0 -1.8089 TD +(\(DEPOSITBYTE)Tj +/F1 1 Tf +10 0 0 10 238.8105 71.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 241.5905 71.62 Tm +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +( \(BYTEPOSITION)Tj +/F1 1 Tf +10 0 0 10 333.4055 71.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 336.1855 71.62 Tm +(BYTESPEC)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\(BYTESIZE)Tj +/F1 1 Tf +10 0 0 10 433.4013 71.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 436.1813 71.62 Tm +(BYTESPEC)Tj +/TT10 1 Tf +4.8008 0 TD +(\) )Tj +/TT14 1 Tf +1.2002 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 23 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6254 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-9)Tj +/TT6 1 Tf +10 0 0 10 305.11 612 Tm +(NUMBERS AND ARITHMETIC FUNCTIONS)Tj +/TT4 1 Tf +-25.111 -4.38 TD +(Floating-Point Arithmetic)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 551.54 Tm +0.2411 Tw +(A floating-point number is input as a signed integer, followed by a decimal point, and another)Tj +0 -1.2222 TD +0.0144 Tw +(sequence of digits called the fraction, followed by an exponent \(represented by )Tj +/TT10 1 Tf +35.1968 0 TD +0 Tw +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.0144 Tw +[( followed by a signed)]TJ +-35.7969 -1.2889 TD +0 Tw +(integer\) and terminated by a delimiter.)Tj +0 -2 TD +0.0833 Tw +(Both signs are optional, and either the fraction following the decimal point, or the integer preceding)Tj +0 -1.2222 TD +0.12 Tw +[(the decimal point may be omitted. One or the other of the decimal point or exponent may also be)]TJ +T* +0.1744 Tw +(omitted, but at least one of them must be present to distinguish a floating-point number from an)Tj +T* +0 Tw +(integer. For example, the following will be recognized as floating-point numbers:)Tj +/TT10 1 Tf +9.3333 -1.6 TD +(5. 5.00 5.01 .3)Tj +0 -1.4444 TD +(5E2 5.1E2 5E-3 -5.2E+6)Tj +/TT8 1 Tf +-9.3333 -1.8444 TD +0.1344 Tw +(Floating-point numbers are printed using the format control specified by the function )Tj +/TT10 1 Tf +39.6314 0 TD +0 Tw +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1344 Tw +[( \(see)]TJ +-43.232 -1.2889 TD +0 Tw +(Chapter 25\). )Tj +/TT10 1 Tf +5.9253 0 TD +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +( is initialized to )Tj +/TT10 1 Tf +7.04 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, or free format. For example, the above floating-point numbers)Tj +-17.166 -1.2889 TD +(would be printed free format as:)Tj +/TT10 1 Tf +9.3333 -1.6 TD +(5.0 5.0 5.01 .3)Tj +0 -1.4445 TD +(500.0 510.0 .005 -5.2E6)Tj +/TT8 1 Tf +-9.3333 -1.8444 TD +0.0289 Tw +(Floating-point numbers are created by the reader when a )Tj +/TT10 1 Tf +25.697 0 TD +0 Tw +(.)Tj +/TT8 1 Tf +1.2002 0 TD +0.0289 Tw +( or an )Tj +/TT10 1 Tf +3.3596 0 TD +0 Tw +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +[( appears in a number, e.g., )]TJ +/TT10 1 Tf +12.0767 0 TD +0 Tw +(1000)Tj +/TT8 1 Tf +-42.9336 -1.2889 TD +0.1189 Tw +(is an integer, )Tj +/TT10 1 Tf +6.2619 0 TD +0 Tw +(1000.)Tj +/TT8 1 Tf +3.0005 0 TD +0.1189 Tw +[( a floating-point number, as are )]TJ +/TT10 1 Tf +14.8608 0 TD +0 Tw +(1E3)Tj +/TT8 1 Tf +1.8003 0 TD +0.1189 Tw +[( and )]TJ +/TT10 1 Tf +2.4306 0 TD +0 Tw +(1.E3)Tj +/TT8 1 Tf +2.4004 0 TD +0.1189 Tw +[(. Note that )]TJ +/TT10 1 Tf +5.6421 0 TD +0 Tw +(1000D)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6189 0 TD +(1000F)Tj +/TT8 1 Tf +3.0005 0 TD +0.1189 Tw +(, and)Tj +/TT10 1 Tf +-43.0165 -1.2889 TD +0 Tw +(1E3D)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( are perfectly legal literal atoms. Floating-point numbers are also created by )]TJ +/TT10 1 Tf +34.4065 0 TD +0 Tw +(PACK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( and )]TJ +/TT10 1 Tf +2.2751 0 TD +0 Tw +(MKATOM)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-45.083 -1.2889 TD +(and as a result of arithmetic operations.)Tj +/TT10 1 Tf +0 -2 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.2089 Tw +[( \(see Chapter 25\) permits greater control over the printed appearance of floating-point)]TJ +-4.8008 -1.2889 TD +0 Tw +(numbers, allowing such things as left-justification, suppression of trailing decimals, etc.)Tj +0 -2 TD +(The floating-point number range is stored in the following variables:)Tj +/TT12 1 Tf +2.6667 -2 TD +(MIN.FLOAT)Tj +/TT8 1 Tf +5.4 0 TD +( )Tj +32.8678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +(The smallest possible floating-point number.)Tj +/TT12 1 Tf +-2.6667 -2 TD +(MAX.FLOAT)Tj +/TT8 1 Tf +5.4 0 TD +( )Tj +32.8678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +(The largest possible floating-point number.)Tj +-5.3333 -2 TD +0.0844 Tw +[(All of the functions described below work on floating-point numbers. Unless specified otherwise, if)]TJ +0 -1.2222 TD +0.1089 Tw +(given an integer, they first convert the number to a floating-point number, e.g.,)Tj +/TT10 1 Tf +36.1587 0 TD +0.26 Tw +[( \(FPLUS 1 2.3\))]TJ +-36.1587 -1.2889 TD +0.1533 Tw +(<=> \(FPLUS 1.0 2.3\) => 3.3)Tj +/TT8 1 Tf +16.3692 0 TD +0.0644 Tw +(; if given a non-numeric argument, they generate an error, )Tj +/TT10 1 Tf +26.5673 0 TD +0 Tw +(Non-)Tj +-42.9365 -1.2889 TD +(numeric arg)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-3.9344 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FPLUS)Tj +/F1 1 Tf +10 0 0 10 134.4 143.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.18 143.06 Tm +(X)Tj +6 0 0 6 142.58 141.06 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 146.18 143.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.96 143.06 Tm +(X)Tj +6 0 0 6 154.36 141.06 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 157.96 143.06 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 160.74 143.06 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 176.9426 143.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.7226 143.06 Tm +(X)Tj +6 0 0 6 185.12 141.06 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 188.72 143.06 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22596.6([NoSpread Function])]TJ +/TT14 1 Tf +-7.569 -2.0922 TD +(X)Tj +6 0 0 6 131.4 122.23 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 135 124.23 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 137.78 124.23 Tm +(+)Tj +/F1 1 Tf +10 0 0 10 143.1808 124.23 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 145.9608 124.23 Tm +(X)Tj +6 0 0 6 151.36 122.23 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 154.96 124.23 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 157.74 124.23 Tm +(+ ... +)Tj +/F1 1 Tf +10 0 0 10 195.5461 124.23 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 198.3261 124.23 Tm +(X)Tj +6 0 0 6 203.72 122.23 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 102 103.4 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FMINUS)Tj +/F1 1 Tf +10 0 0 10 139.8 103.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 103.4 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31860.9([Function])]TJ +/TT10 1 Tf +-3.0424 -1.9867 TD +(-)Tj +/F1 1 Tf +10 0 0 10 131.4009 85.52 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.1808 85.52 Tm +(X)Tj +/TT10 1 Tf +-3.5757 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FDIFFERENCE)Tj +/F1 1 Tf +10 0 0 10 166.8 65.64 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 169.58 65.64 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 174.9809 65.64 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 177.7608 65.64 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27951.9([Function])]TJ +/TT14 1 Tf +-6.9514 -1.9867 TD +(X)Tj +/F1 1 Tf +10 0 0 10 131.4009 47.76 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 134.1808 47.76 Tm +(-)Tj +/F1 1 Tf +10 0 0 10 139.5817 47.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.3617 47.76 Tm +(Y)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +43 0 obj +<< +/Length 9152 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FTIMES)Tj +/F1 1 Tf +10 0 0 10 187.8 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.58 568.26 Tm +(X)Tj +6 0 0 6 195.98 566.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 199.58 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 202.36 568.26 Tm +(X)Tj +6 0 0 6 207.76 566.26 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 211.36 568.26 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 214.14 568.26 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 230.3426 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 233.1226 568.26 Tm +(X)Tj +6 0 0 6 238.52 566.26 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 242.12 568.26 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21996.6([NoSpread Function])]TJ +/TT14 1 Tf +-8.169 -2.0922 TD +(X)Tj +6 0 0 6 179.4 547.43 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 183 549.43 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 185.78 549.43 Tm +(*)Tj +/F1 1 Tf +10 0 0 10 191.1809 549.43 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 193.9609 549.43 Tm +(X)Tj +6 0 0 6 199.36 547.43 Tm +(2)Tj +/TT10 1 Tf +9 0 0 9 202.96 549.43 Tm +( * ... *)Tj +/F1 1 Tf +10 0 0 10 246.167 549.43 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 248.947 549.43 Tm +(X)Tj +6 0 0 6 254.34 547.43 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 150 528.6 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FQUOTIENT)Tj +/F1 1 Tf +10 0 0 10 204 528.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.78 528.6 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 212.1809 528.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 214.9609 528.6 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29151.9([Function])]TJ +/TT14 1 Tf +-5.7514 -1.9867 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( /)Tj +/F1 1 Tf +10 0 0 10 190.2026 510.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 195.7626 510.72 Tm +(Y)Tj +/F1 1 Tf +10 0 0 10 201.1635 510.72 Tm +(.)Tj +/TT8 1 Tf +9 0 0 9 174 492.12 Tm +0.06 Tw +(The results of division by zero and floating-point overflow is determined by the function)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(OVERFLOW)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-7.4674 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FREMAINDER)Tj +/F1 1 Tf +10 0 0 10 209.4 461.24 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.18 461.24 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 217.5809 461.24 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 220.3609 461.24 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28551.9([Function])]TJ +-6.3514 -1.8444 TD +(Returns the remainder when )Tj +/TT14 1 Tf +12.9561 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is divided by )Tj +/TT14 1 Tf +6.2827 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(. Equivalent to:)Tj +/TT10 1 Tf +-16.439 -1.6667 TD +(\(FDIFFERENCE )Tj +/TT14 1 Tf +7.8013 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( \(FTIMES )Tj +/TT14 1 Tf +5.4009 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +( \(FIX \(FQUOTIENT )Tj +/TT14 1 Tf +10.2017 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\)\)\)\))Tj +/TT8 1 Tf +-30.4043 -1.8444 TD +(Example:)Tj +/TT10 1 Tf +4 -1.6 TD +(\(FREMAINDER 7.5 2.3\) => 0.6)Tj +-6.6667 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FGREATERP)Tj +/F1 1 Tf +10 0 0 10 204 380.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.78 380.76 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 212.1809 380.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 214.9609 380.76 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29151.9([Function])]TJ +/TT10 1 Tf +-5.7514 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(>)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.2414 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FLESSP)Tj +/F1 1 Tf +10 0 0 10 187.8 344.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.58 344.28 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 195.9809 344.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 198.7609 344.28 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30951.9([Function])]TJ +/TT10 1 Tf +-3.9514 -1.8444 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(<)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-9.2414 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FEQP)Tj +/F1 1 Tf +10 0 0 10 177 307.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 307.8 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 185.1808 307.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 187.9608 307.8 Tm +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.8204 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( if )]TJ +/TT14 1 Tf +1.3107 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( and )]TJ +/TT14 1 Tf +2.3795 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( are equal floating-point numbers; )]TJ +/TT10 1 Tf +15.7972 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0933 Tw +[( otherwise. )]TJ +/TT10 1 Tf +5.636 0 TD +0 Tw +(FEQP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0933 Tw +[( converts )]TJ +/TT14 1 Tf +4.4474 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +-39.3922 -1.2889 TD +(and )Tj +/TT14 1 Tf +1.9429 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( to floating-point numbers.)Tj +/TT10 1 Tf +-5.2096 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FMIN)Tj +/F1 1 Tf +10 0 0 10 177 259.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 259.72 Tm +(X)Tj +6 0 0 6 185.18 257.72 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 188.78 259.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.56 259.72 Tm +(X)Tj +6 0 0 6 196.96 257.72 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 200.56 259.72 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 203.34 259.72 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 219.5426 259.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 222.3226 259.72 Tm +(X)Tj +6 0 0 6 227.72 257.72 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 231.32 259.72 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23196.6([NoSpread Function])]TJ +-6.969 -1.95 TD +0.1467 Tw +(Returns the minimum of )Tj +/TT14 1 Tf +11.7454 0 TD +0 Tw +(X)Tj +6 0 0 6 285.13 240.17 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 288.73 242.17 Tm +(, )Tj +/TT14 1 Tf +0.6467 0 TD +(X)Tj +6 0 0 6 299.95 240.17 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 303.55 242.17 Tm +(, )Tj +/TT10 1 Tf +0.6467 0 TD +(...,)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3967 0 TD +(X)Tj +6 0 0 6 339.94 240.17 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 343.54 242.17 Tm +(. )Tj +/TT10 1 Tf +0.6467 0 TD +(\(FMIN\))Tj +/TT8 1 Tf +3.6006 0 TD +0.1467 Tw +[( returns the largest possible floating-)]TJ +-23.085 -1.3944 TD +0 Tw +(point number, the value of )Tj +/TT10 1 Tf +12.0454 0 TD +(MAX.FLOAT)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-20.113 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FMAX)Tj +/F1 1 Tf +10 0 0 10 177 209.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 209.74 Tm +(X)Tj +6 0 0 6 185.18 207.74 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 188.78 209.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.56 209.74 Tm +(X)Tj +6 0 0 6 196.96 207.74 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 200.56 209.74 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 203.34 209.74 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 219.5426 209.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 222.3226 209.74 Tm +(X)Tj +6 0 0 6 227.72 207.74 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 231.32 209.74 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23196.6([NoSpread Function])]TJ +-6.969 -1.95 TD +0.0856 Tw +(Returns the maximum of )Tj +/TT14 1 Tf +11.644 0 TD +0 Tw +(X)Tj +6 0 0 6 284.21 190.19 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 287.81 192.19 Tm +(, )Tj +/TT14 1 Tf +0.5856 0 TD +(X)Tj +6 0 0 6 298.48 190.19 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 302.08 192.19 Tm +(, )Tj +/TT10 1 Tf +0.5856 0 TD +(...,)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3356 0 TD +(X)Tj +6 0 0 6 337.37 190.19 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 340.97 192.19 Tm +(. )Tj +/TT10 1 Tf +0.5856 0 TD +(\(FMAX\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0855 Tw +[( returns the smallest possible floating-)]TJ +-22.7384 -1.3944 TD +0 Tw +(point number, the value of )Tj +/TT10 1 Tf +12.0454 0 TD +(MIN.FLOAT)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-20.113 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FLOAT)Tj +/F1 1 Tf +10 0 0 10 182.4 159.76 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.18 159.76 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.9609 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Converts )Tj +/TT14 1 Tf +4.2759 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to a floating-point number. Example:)Tj +/TT10 1 Tf +-0.876 -1.6667 TD +(\(FLOAT 0\) => 0.0)Tj +/TT4 1 Tf +10 0 0 10 102 107.22 Tm +(Transcendental Arithmetic Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 104.51 m +558.01 104.51 l +S +BT +/TT10 1 Tf +9 0 0 9 150 89.28 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(EXPT)Tj +/F1 1 Tf +10 0 0 10 177 89.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 89.28 Tm +(A)Tj +/F2 1 Tf +10 0 0 10 185.1808 89.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 187.9608 89.28 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +32.6519 0 TD +([Function])Tj +-35.4033 -1.8945 TD +(Returns )Tj +/TT14 1 Tf +3.7682 0 TD +(A)Tj +6 0 0 6 213.32 75.23 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 216.92 72.23 Tm +0.0411 Tw +[(. If )]TJ +/TT14 1 Tf +1.7933 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( is an integer and )]TJ +/TT14 1 Tf +8.0537 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( is a positive integer, returns an integer, e.g, )]TJ +/TT10 1 Tf +19.8959 0 TD +0.0978 Tw +(\(EXPT 3)Tj +-35.7119 -1.2889 TD +0.1722 Tw +(4\) => 81)Tj +/TT8 1 Tf +5.1452 0 TD +0.0711 Tw +[(, otherwise returns a floating-point number. If )]TJ +/TT14 1 Tf +21.3985 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( is negative and )]TJ +/TT14 1 Tf +7.4705 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( fractional,)]TJ +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +46 0 obj +<< +/Length 8111 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-11)Tj +/TT6 1 Tf +10 0 0 10 305.11 612 Tm +(NUMBERS AND ARITHMETIC FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0644 Tw +(generates the error, )Tj +/TT10 1 Tf +9.0107 0 TD +0.1556 Tw +(Illegal exponentiation)Tj +/TT8 1 Tf +13.3577 0 TD +0.0644 Tw +[(. If )]TJ +/TT14 1 Tf +1.8633 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[( is floating and either too large or)]TJ +-24.8318 -1.2889 TD +0 Tw +(too small, generates the error, )Tj +/TT10 1 Tf +13.374 0 TD +(Value out of range expt)Tj +/TT8 1 Tf +13.8022 0 TD +(.)Tj +/TT10 1 Tf +-29.8429 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SQRT)Tj +/F1 1 Tf +10 0 0 10 129 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.78 538.06 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.161 0 TD +([Function])Tj +-35.4033 -1.8445 TD +0.0322 Tw +(Returns the square root of )Tj +/TT14 1 Tf +11.9282 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +[( as a floating-point number. )]TJ +/TT14 1 Tf +12.9668 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +[( may be fixed or floating-point.)]TJ +-26.0952 -1.2889 TD +0 Tw +(Generates an error if )Tj +/TT14 1 Tf +9.3433 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is negative.)Tj +/TT10 1 Tf +-12.61 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(LOG)Tj +/F1 1 Tf +10 0 0 10 123.6 489.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 489.98 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +34.761 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.2567 Tw +(Returns the natural logarithm of )Tj +/TT14 1 Tf +15.8439 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2567 Tw +[( as a floating-point number. )]TJ +/TT14 1 Tf +14.3134 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2567 Tw +[( can be integer or)]TJ +-31.3575 -1.2889 TD +0 Tw +(floating-point.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ANTILOG)Tj +/F1 1 Tf +10 0 0 10 145.2 442.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 147.98 442.5 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31260.9([Function])]TJ +-3.6424 -1.8444 TD +0.1622 Tw +(Returns the floating-point number whose logarithm is )Tj +/TT14 1 Tf +25.2991 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1622 Tw +(. )Tj +/TT14 1 Tf +1.0744 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1622 Tw +[( can be integer or floating-)]TJ +-27.5738 -1.2889 TD +0 Tw +(point. Example:)Tj +/TT10 1 Tf +4 -1.6 TD +(\(ANTILOG 1\) = e => 2.71828...)Tj +-6.6667 -1.9867 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SIN)Tj +/F1 1 Tf +10 0 0 10 123.6 382.02 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 382.02 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7809 382.02 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5609 382.02 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27351.1([Function])]TJ +-7.5523 -1.8444 TD +0.0711 Tw +(Returns the sine of )Tj +/TT14 1 Tf +8.8035 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( as a floating-point number. )]TJ +/TT14 1 Tf +13.2001 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( is in degrees unless )]TJ +/TT14 1 Tf +9.419 0 TD +0 Tw +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +0.1711 Tc +( =)Tj +-38.6238 -1.2889 TD +0 Tc +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-3.2668 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(COS)Tj +/F1 1 Tf +10 0 0 10 123.6 333.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.38 333.94 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7809 333.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5609 333.94 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27351.1([Function])]TJ +-7.5523 -1.8444 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(SIN)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-9.0148 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6 0 TD +(TAN)Tj +/F1 1 Tf +10 0 0 10 123.6026 297.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.3826 297.46 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 131.7835 297.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 134.5635 297.46 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27350.8([Function])]TJ +-7.5526 -1.8444 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(SIN)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-9.0148 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ARCSIN)Tj +/F1 1 Tf +10 0 0 10 139.8062 260.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 260.98 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 147.9809 260.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.7609 260.98 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25551.1([Function])]TJ +-9.3523 -1.8444 TD +0.0522 Tw +(The value of )Tj +/TT10 1 Tf +5.8974 0 TD +0 Tw +(ARCSIN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0522 Tw +[( is a floating-point number, and is in degrees unless )]TJ +/TT14 1 Tf +23.593 0 TD +0 Tw +(RADIANSFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(=)Tj +-39.3942 -1.2889 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[(. In other words, if )]TJ +/TT10 1 Tf +8.9807 0 TD +0 Tw +(\(ARCSIN )Tj +/TT14 1 Tf +4.9219 0 TD +0.1211 Tw +(X RADIANSFLG)Tj +/TT10 1 Tf +7.3223 0 TD +(\) = Z)Tj +/TT8 1 Tf +3.2427 0 TD +0.05 Tw +[( then )]TJ +/TT10 1 Tf +2.5692 0 TD +0.1211 Tw +(\(SIN Z )Tj +/TT14 1 Tf +4.4429 0 TD +0 Tw +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +0.1211 Tw +(\) =)Tj +/TT14 1 Tf +-38.0808 -1.3511 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0356 Tw +[(. The range of the value of )]TJ +/TT10 1 Tf +12.3035 0 TD +0 Tw +(ARCSIN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0356 Tw +[( is -90 to +90 for degrees, )]TJ +/TT10 1 Tf +11.4715 0 TD +0 Tw +(-)Tj +/TT19 1 Tf +0.6001 0 TD +<002f>Tj +/TT8 1 Tf +0.5488 0 TD +0.0356 Tw +(/2 to )Tj +/TT19 1 Tf +2.5491 0 TD +0 Tw +<002f>Tj +/TT10 1 Tf +0.5488 0 TD +(/2)Tj +/TT8 1 Tf +1.2002 0 TD +0.0356 Tw +[( for radians. )]TJ +/TT14 1 Tf +5.9689 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +-39.3917 -1.2889 TD +(must be a number between -1 and 1. )Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ARCCOS)Tj +/F1 1 Tf +10 0 0 10 139.8 189.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 189.74 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 147.9809 189.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.7608 189.74 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25551.1([Function])]TJ +-9.3523 -1.8444 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(ARCSIN)Tj +/TT8 1 Tf +3.6006 0 TD +(. Range is )Tj +/TT10 1 Tf +4.75 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(180)Tj +/TT8 1 Tf +1.8003 0 TD +(, 0 to )Tj +/TT19 1 Tf +2.3721 0 TD +<002f>Tj +/TT8 1 Tf +0.5488 0 TD +(.)Tj +/TT10 1 Tf +-22.2585 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ARCTAN)Tj +/F1 1 Tf +10 0 0 10 139.8 153.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.58 153.26 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 147.9809 153.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.7608 153.26 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25551.1([Function])]TJ +-9.3523 -1.8444 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(ARCSIN)Tj +/TT8 1 Tf +3.6006 0 TD +(. Range is )Tj +/TT10 1 Tf +4.75 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(180)Tj +/TT8 1 Tf +1.8003 0 TD +(, 0 to )Tj +/TT19 1 Tf +2.3721 0 TD +<002f>Tj +/TT8 1 Tf +0.5488 0 TD +(.)Tj +/TT10 1 Tf +-22.2585 -2.2156 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ARCTAN2)Tj +/TT4 1 Tf +10 0 0 10 145.2 116.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 147.9783 116.72 Tm +(Y)Tj +/F2 1 Tf +10 0 0 10 153.3792 116.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 156.1592 116.72 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 161.5601 116.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.3401 116.72 Tm +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24042.3([Function])]TJ +-10.8611 -1.8444 TD +(Computes )Tj +/TT10 1 Tf +5.0252 0 TD +0.4911 Tw +(\(ARCTAN \(FQUOTIENT)Tj +/TT8 1 Tf +11.2929 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.4544 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.4544 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.4544 0 TD +(RADIANSFLG)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.2044 Tw +(, and returns a corresponding)Tj +-26.0828 -1.2889 TD +0.0989 Tw +(value in the range )Tj +/TT10 1 Tf +8.606 0 TD +0 Tw +(-180)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +[( to )]TJ +/TT10 1 Tf +1.5698 0 TD +0 Tw +(180)Tj +/TT8 1 Tf +1.8003 0 TD +0.0989 Tw +[( \(or )]TJ +/TT10 1 Tf +1.9717 0 TD +0 Tw +(-)Tj +/TT19 1 Tf +0.6001 0 TD +<002f>Tj +/TT10 1 Tf +0.5488 0 TD +( )Tj +/TT8 1 Tf +0.8379 0 TD +(to )Tj +/TT19 1 Tf +1.221 0 TD +<002f>Tj +/TT8 1 Tf +0.5488 0 TD +0.0989 Tw +(\), i.e. the result is in the proper quadrant as)Tj +-20.1048 -1.2889 TD +0 Tw +(determined by the signs of )Tj +/TT14 1 Tf +12.0381 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT19 48 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +52 0 obj +<< +/Length 3387 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Generating Random Numbers)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT10 1 Tf +9 0 0 9 150 550.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RAND)Tj +/F2 1 Tf +10 0 0 10 177 550.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 550.26 Tm +(LOWER)Tj +/F2 1 Tf +10 0 0 10 206.7844 550.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 209.5644 550.26 Tm +(UPPER)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27351.1([Function])]TJ +-7.5522 -1.8444 TD +0.0233 Tw +(Returns a pseudo-random number between )Tj +/TT14 1 Tf +19.6845 0 TD +0 Tw +(LOWER)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[( and )]TJ +/TT14 1 Tf +2.2395 0 TD +0 Tw +(UPPER)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[( inclusive, i.e., )]TJ +/TT10 1 Tf +6.5597 0 TD +0 Tw +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( can be)]TJ +-36.8852 -1.2889 TD +0.0656 Tw +[(used to generate a sequence of random numbers. If both limits are integers, the value of)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0889 Tw +[( is an integer, otherwise it is a floating-point number. The algorithm is completely)]TJ +-2.4004 -1.2889 TD +0.2733 Tw +(deterministic, i.e., given the same initial state, )Tj +/TT10 1 Tf +22.2786 0 TD +0 Tw +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +0.2733 Tw +[( produces the same sequence of)]TJ +-24.679 -1.2889 TD +0 Tw +(values. The internal state of )Tj +/TT10 1 Tf +12.666 0 TD +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +( is initialized using the function )Tj +/TT10 1 Tf +14.2183 0 TD +(RANDSET)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-36.152 -2.2089 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RANDSET)Tj +/F1 1 Tf +10 0 0 10 193.2 467.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 195.98 467.98 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31260.9([Function])]TJ +-3.6424 -1.8444 TD +0.0533 Tw +(Returns the internal state of )Tj +/TT10 1 Tf +12.7613 0 TD +0 Tw +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +[(. If )]TJ +/TT14 1 Tf +1.8299 0 TD +0 Tw +(X)Tj +/TT10 1 Tf +0.6001 0 TD +0.1267 Tw +[( = NIL)]TJ +/TT8 1 Tf +3.8539 0 TD +0.0533 Tw +[(, just returns the current state. If )]TJ +/TT14 1 Tf +15.0541 0 TD +0 Tw +(X)Tj +/TT10 1 Tf +0.6001 0 TD +0.1267 Tw +[( = T)]TJ +/TT8 1 Tf +2.6537 0 TD +0 Tw +(,)Tj +/TT10 1 Tf +-39.7536 -1.2889 TD +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +[( is initialized using the clocks, and )]TJ +/TT10 1 Tf +15.8909 0 TD +0 Tw +(RANDSET)Tj +/TT8 1 Tf +4.2007 0 TD +0.0689 Tw +[( returns the new state. Otherwise, )]TJ +/TT14 1 Tf +15.8699 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0689 Tw +[( is)]TJ +-38.962 -1.2889 TD +0.0011 Tw +(interpreted as a previous internal state, i.e., a value of )Tj +/TT10 1 Tf +23.8915 0 TD +0 Tw +(RANDSET)Tj +/TT8 1 Tf +4.2007 0 TD +0.0011 Tw +(, and is used to reset )Tj +/TT10 1 Tf +9.2562 0 TD +0 Tw +(RAND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-39.7487 -1.2889 TD +(For example,)Tj +/TT19 1 Tf +4 -1.6 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(SETQ OLDSTATE \(RANDSET\)\))Tj +-0.3202 -1 TD +(...)Tj +/TT19 1 Tf +-0.6667 -1.2222 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(for X from 1 to 10 do \(PRIN1 \(RAND 1 10\)\)\))Tj +-0.3202 -1 TD +(2847592748NIL)Tj +/TT19 1 Tf +-0.6667 -1.2222 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(RANDSET OLDSTATE\))Tj +-0.3202 -1 TD +(...)Tj +/TT19 1 Tf +-0.6667 -1.2222 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(for X from 1 to 10 do \(PRIN1 \(RAND 1 10\)\)\))Tj +-0.3202 -1 TD +(2847592748NIL)Tj +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT19 48 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +55 0 obj +<< +/Length 70 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-13)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +58 0 obj +<< +/Length 201 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(7-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 15 0 R +>> +>> +endobj +15 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +60 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +61 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +62 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +63 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +64 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +65 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +66 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +67 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +68 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +69 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBEMHB+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 70 0 R +>> +endobj +70 0 obj +<< +/Filter /FlateDecode +/Length 20291 +/Length1 39656 +>> +stream +HW}tovgvfwvr<pՊP%ŀ1 RavmvdYUR"A#_h-MRKD>iJ)4fg7z<޽ͽ7܄7'y{N) @nC!ފͼx1,wH6˰p<:ŋ|2(6up3Pʵpb)pm]v#y7 +`.àHLtV!X0!y(״xPypÃ}V!'DTB<,-Gy^/!q}L!O}`Rw$tק`)z.̰d$[| a|O an*.s&r>$P/ApEr_ +ll^Os27AYi'w _I;\54Imd"Fp~ѱT%!phMǁa|Eyd튐a[dx˜2@LVrx L%,]Z?he4נϱlD|~|xAF>ILfLq=&fc;k˓{{LZ6&nqeRIo1 <|kVG) YbL1I$b_?c(=dOL=s$@&_}Lf|,$Ofk+;1 _@;rӂ8"`9 YKU!lI l\h"۸ƥ6.Ƨm\n +Ykm|ƕ6qkl\kmy/:'O C/ Q54O%TbXWLTca5BXjΠ +J~on %D_]Wf!hj&VCW<mB\RBKQ0hŤe&1L5UVf_q٨h= AUN$5[:[ ߋ55:[h,HQ8GʒlˬT7ijl=HU1zl3%"MC'nTPꆩ+TF3ٝfFfAY6O^177niX #oF2ͽrF}rF7\Oc~7E&5\WB*vիrհ_pAzQEi\P2hb+7yǭY>pBv\{:ƒH|9ΰd7Ӷ,9Udsh,_r %fv{n/(>R ft73$`~ ΘIʹ=)M}ԓ̳FiZrDйnQ"4uǜe"K \";2mW0/˖H3IFS=X6ԧٙ6־f€ZMyKk{VC.]+G:/DD[e21u9ulP:q7xjRQDpq'.O$1Frmm2 o~a{x@~UslξfM_ w̬2жwm<~ؾK|v<0)#gVqh(D>ms0 J(MP]jtr>Jmi%&]@d{ϝm":@BB{_݇?;sު\$)3`JѢ*$q7.{='2#Bł܂WYG,ݭMf6 +KTѩ9`aZhK/,ٮق0R9u^Vc@"#92F1xQ&|w4xCG$8WJFhdqpXխL)_Ãi3\nSܙfJ0=^$ cUBFږ.vyNȧTM ԇLءVZ?~,nRCFŅYV8WnCG}~S@P}@-! +PI`:b|OZѹXnPɳT9T]٪4IFd]{fuKKj\=?p u˺Ogit7){r]X:gSݭjwU9Ҫu~);?SOryTYvAS%dtډy\/wo Cg,sJGp9 CbK徚=_oTC-[1O9ՐK +ϣvU-!cRYگ@w*@:Ki9TYl;tvmh? 7QI2Mtܱ9fK)Pp2ʡ|H1_/k驘d wka`Knr]%@Dg)E ֈ{#r[4˃o77N*)6H rmʛvH-u` GFw{QH;a1ѣQQg,IF2Cb)Ҍ~ [g[j*R.!%K?Y bTb$6Ȩ>\p0;amFXElN ++axLI0F>/gc02`4A+^ Spe8y)%dOj3d%yh$D^!-d'y#oϤ#Ӥ\ UJڨP7CQt}V%>GWhn[諴Eߣ]z~AAh?M03dc0eTVf0?{-`Kl5gdCCvfv]arn>OSOx?ŗov?;a~SG%~G?&j22LX'n*|?A!HPg0bZ@qpXQ3CQT Xa482RwZf8݊2 cLj"VG}X#& +ɚW2 Yt?X~' +oP%%i0HR+4b ݒ&c6S+Q'b]vdQEτ1,װc?`cEpՌިd3A> sШd +8eݎg3-G{})f2Ͷ L乑m;-ΡZRU_w3DKP)ji7Zraڭ-BesK-$IY8Dp]]i>s ȭU'npZK;~jkɒ^_RKD>4{GK{yѥhk꺺bR%8>:D/lI'F`׌Pl{bpqIs.?HƪsBP3| !d[UQ0k7)J.!q!I$gA&nikTM֊IS TOT7v嗶Uڞ%>{>s_hVqtxBwXrmmKȘ C`sl{Q [aebU(u{lx2/*XZRE!qA +~Mo8yfEe^Eԗ2jb)KGr50K.Z^&ABJ\ac.Z,W'ښkr ℣YVvk ,Gmi=KzqG$G\̢nxA5P" Yzuݶtgꩅި0UR.!/ qƜә KKmg'tX00,( {JMqCUӫ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*i⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^)>?t1;ֱiɑPE$ n-ȼH !6#SّٜGw1iU?8*M:k CS\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` )s]Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5.O`yY@UY-Р5lKI:96֩%&De1#{imcEGAdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\+~[S1?7ꧾuܩE^/5NA# hО%-e Oo]_0hc 2%y &XZ p#td9YPcxۭa3"W]c9/`xl>kge@b< سb"ulp4*#XE?yop|box>wV +4Z@cK}طg\=fY-cDwsA5L$y/J#ro{YnŰxY}ViaYx?IWGbuV[?~LA'XO-f9ζnf,,C-ݖ^צG9 +і[:?{YPJߔ?ZKCoRK,Yiܻ@*zC \`ώVUR lW޻!ZR 6y Z0 GӴCl;'i. /@ B^p^k Y7h*E^(C }} FChA'/o z .&؎K+7/'S a<49~m'WuHJD^U1ROH i'ϐ9@FHLSM;$wrd"n-k=}!n13Wͽ/ګ( +{}o]HY-3vYlTDBY@!jFS;#Cd:ڴ:5Fww(jZLFcDg21iI;6bD^Ͻ,v={w]f7eUNuy+VS 〫sXGEҐ5Тl2 [*y5( +0m?{#8:Nh"ub*Q +1Q'6NGNP-;XZVj%^TqJ &. D8K(XՖ$24)X ckCށYXv?lȦG 5FhcΥ ql3tؘ޸aQpKXmšoO3vP3ի DT>cm޼<(@${94;ggsFT]IO P o%0&H=Vx"sIo,O /}4$A*פM̩ 07JuP?Ǻ[% tJOcIBB:]HIȨ@LdU<JYsc39,Gn + +^V :a?>>/+Id7;D2V. 5zGz tI]"'l)O0rfRYfhmRLtPNH JWԀ1dkffcvd,Md4ɲYe?b~Vfv =(y0!K0#wB ]B$z,[= 3"Po +̋窼33& ?plO'c_6o +L~ \JEۼ7aDl~~rFl ? .?+4Ia_amAP3Z>"Le@Dx2ׯiK!2nq*Ɨp[o(˳Hזr/;rIgGf mQ3AyxGV44]~ƻҢ'= aPl ] ;C}WM_k ӦX Nz^I)AqFj`;}rjG8>7@t7V<팷5#S"?YX<d??8fknl4HE#DIZ Hw$@cLK`нÄhGZi=!ر^$v/%ةt߻~wS!h7,hb طjOjЗa2.[[,4cRhQ}˥n˭QUw_QD=x=7/::Z^7,,mn^ڜwwk}pZWjo,oh<ԂE &xm΁@w2gh᫏,*)B3tޱ䯍ǡ>D-7gUGY!aۿmo~ mߞy`W\都2/C oعZq, DxduMQ027h;[çLJ|gUvT Nޑ|h}ˆ3 1.z,vR6 ó}]Ko+k"ݓs|kGA0s;]9^;륛sq< UաHhuw>=<^~ϓ5V'UhG`{_8/@w\I~oJe# rͻvlhxJĻ#& +ۼb{a8C/mGI^qQdO\(GPIE,1"hNDUyBL$ƕґ&orK^Sw|)8'iRlvmFfYD#eSi9#,})ȃjB(0 \(E=Uzj>nG=XKX+PO=a ڡ~O>8G9T\Eu +އ8KH6U4UETVs '5[ #܋j5YG6fBZè#Iy!A{r>z $&7y+͠~KD}UHCNMZI-NKХ>amQKYO#w4J 'wzeKdZk\T[7Vnca ^VUdT^l+ka?CՁ X7͞`Ova,EJjXJ >(F+Jݍ Pqz㼱#gMI]Ev[2\! +͝ϳEKi-%Ra+)c\ +[I؂F=R|i&^|>Ue3y Pqif{RʺhG2T mSAO&)Qb3DAc.ݛC /-+W &ǮYJPvҰ, I<%;Lxlc[` b `!i Yl#BN`S,>OQ;y-o2g}LcA=KA21&-JՂl{$hT&Aq wS+u#yȱ_ +P E-F ݦMv#a1;=jg@uC7%QyNlt mEw`ƨ{k^Pem"|rfφa0g8M:L <\K=,GX ¼ Y٦%JN'2t) 2԰-|C N:s{y:$۠Gud}=mxRdNK<r/ 4,20dpɲ&}OaT !?J)H >sv|E(9ԧg0l^*@Zರ=T2tKhfs}pn5ED"5yF\tZP'dM}CȖYigl6*nBDas>B6q ]Ģi+Q*x% W +T%2QTGQUl,>"nRNJPKZ }pZuۈS 7+\a[畦ALq,b%p>@20̜?Y~&YG,8Xoͭ}.b`0vG7+RImb 1c,b͜9"(Us#ł5YSԕwF/{$덳u-5.TuuY1YHp⃩ %ѥq,NWRep hnc.٪VvyfVKſɯ82nwڷ3G."E0GJJny@(( `DeNCr]!QWB !륾V2if}8cPC*E7|ǵ ${۝})pduJteju-6-L2-@h-YF * ->fQlyvo^[9 {WOǾ\{{.$Zs3K:3UiaCr䦸2q҂M|H1fikĺycLۍk, q)h* X8Gi8%ZjUYdDMs JO|d^u?͖тWW=C)-<}zKٳkhº3u<2?<}<=:cVv)1-LgG o@ mp\讋87C[.Z-oi.TDq6*d-p2yќ7y8]xҦŞKB@f%xT}ֺf%{<x -LyBG.L2[XYiŤBM_E{&d\0,vM@.u-:Zp–j-kA|XZ,%Hy^Q,_9npenm.t`Bv>xt桅C1lPNetmb}ZdBs*Zضny2] ?x[hӭl}]Fuظ"^ -;˨N] uNxSnEU`:8N]![)'Z҂`@c;,i!DGCh!N(DRÂM,Tǣr]a$"n%|aEIhkp]pȴa0~@ 7iN0N?^x/21ّE0hgЂ›]Yx$ڥ8h1YUYwJ VyͰtlI JgLU+[z87d،b̩kkܕ'ydtGe:+DQ`F#Z0nG؅;G +'Z̹گ›)8\R9 -|Y1b -p?&|FZD5ojh6 i1,~pj'G+Xf~WeޅcF²& 5H13]Z:~dk2V Cb,ELa nd[RlaM-XK"3WN닲{_zdayecE{3?F {8dI<οƦMz# RGԟͥ_͗\nV#N,e݉^pS%On|c +$ \֝<;l.hOZhW] /쐴HF%i!ZbQxvˆ75585iZn:; mh~D.7R=~DLnC]{ -p:T5|O lm>BOƋ%UmQǏԿ+疻{i;!>\;;//-l%ʖF,طPWnN=ZvڎqƝ\`79'"-CWm4wm6`aY>[XJ_\}[9Wmh|ئ񇾅wHp?1T7:ZQ>Y(Ңb5[7A Eȥ!~xo^kO{??,‰ZhbiӜh;^6ۉibۇpp<9e/E &W!d|d#i r| e+[ +Y'[)ʧʗ*pZU~j8<vE1.di)ږ#Z̮IBDGPXiTL11x"]>V14k#+sYp;37̽wn~z~Nƙe, aYl,s17zgv>fU<;><''y |y3w(?ǿWm)\-iUzJ!RHj~'m>H2r&gy\./_˭O|SaJ2@LQ^Rf+s*e{rV\rITFդU5KV 5S?U H83(ڋD*Q~U]@ҋj$$U"ioG(j6E<*zRJ cc{ "L4 g(1D1PA FH]I1ȏJa1h7*MBQfI$HAH>j!JA"zO?#: $p;pľ%zPTzx\$e_2=%>xbY~uiϽͶQ+c=1Y6ɦ'x^^}jTX8§߫ +f]5wt手eEt{m!W B:S^kq*1~Y~k\ki=z(dx75o>7j]p1uU˲ S֋eLJ_ueA~C^IbuYhޢ6kՉUޚmP~Eg|Y}Ɩ3c1>39R\iv9caф,52]ѷYݺ/n`_<~iZUt$qe39*NYWnVҧwA3ibeܗqs]Kdř\1N65̾myԮ r0qFE33ݖ8}I<ؓۯ,̴&xwYtyrcyN##uNE/|EC,aO`|?' #!A>[Yx /@f^Ux bV[ Vvn8ag<\uhψhҗđxDRI:JLb'd,@&ɤL#Lf +jԒ%߁4ߐ&k1@| {Ar|BN0/D|M fML1t:fR;ͣ1gt":N31w,1K2ѳ Gt݅az~DOEz^_ޢ4ccp3#YX,,%@ zfPE`TȒ( -ŨĘ^J`TcdݦRLuT1J2W~A`ݱ+0~I1*p%zf#ʃ˺k"."Fa!7+bTR*%]9J*z=(LW=,QxC1ϯYjFMuln%ڣ_xN+|RKR}<)gSNO{6؎ƉNўcOb|.? T|Ͱ)EV3#!łP6F;\W溽HmT7NLz89gsީ\:ׅeA2:Suc N]pc-. +3SΟs9<+.\[\^oW+x^#ö= :"KCwy,`I<]bbspW8z&<5&nDTc/>%@.B-n~'j-\[l8Of棎 %01 "ח8IVqePޅwv:Πð: RI> KO69II&M&^ePaAIDA\|D|^}aD~s¯9;9'N1^ʹ/0ݐwn1 < o]_/@!=?cr2)#|ļC S?|m~:'[ (9}y&ڗ 0{壀י=Q2a틻 c p<=޿w` o_ʮF0@ +f .sn.<4v؍!?g_ /#׆zUx%5C?Evدw x8[;\y{{E7^OKӽo\e^ʁB{;\jЙ?@~ ,_gP2uw?zs_a@x~{jsp4)4}=.|7LC5ߗ./}NDG`L1ܟ q6)jӡ_^M `M ,"_VpX[mD =ñ(ۄH%q9'iCFX$te K[ ɘ,1YJD+뀝" E1$QedkSQߒלL\CnQ#׳Kk\梷%i7JS$$i [ᑫzHwԛDóX*Cvar"5p4Xc`% .cx,YSŒ;<6 QaO3aHn}~8i%_ ]W[)O9kF{cV3E-q ONFZ$V7 Ԥ~;FcȝMLU_QoLL^0ag^ j=ad3,]cj=4EIzb'q +Van*ԕ@Y>>ǝZuJq\OF$V[u/ic)*׊ʩ,*A[L=F3:rxqt<+T! 5 +VW86ޤ; +\9=vM:&F&LZo0kCt÷ +nn]\6(Agze:lM3Y,yn$fR''zt)oUA˥飾r>6\UQESo53̈́FD^,a.YX1+FHҵOXNG,8⼎.0e07ʭeQϕ F$8"jsqɕc Mwrxtc;iE>Fo4VeTD'M)N1'#C3ZwYJĆ UQaō24C[LT]Tk4KVJ,#|p#lPbX7D7-*P^?ƑR/¸m&FI6ݎ:- +4xu>x~ӝ|??oe}?; eՕZeA,Q4dA\PQq4%ࠃwMTD1S +1" +*Q1k;`ܢ`eVjj&o9}뒡=]خ!=X-SR)xJG'_A+>;R<<Ϊ:r$0˖Vl u;5gLVʘp? K7΋+sAp*҂Gusz=dd߂k*6gy[Y˒ +GM2 /'o9Up.rᦡK>Iه|.zow.ׇ|j gT)/q\ [?-Lg-.WmUbUQ33ˎ7hudm8<6∖y5_?9ݤNO*~( ,xЯhP.ӵÒCzf8`f\7 +kHvٕI#%Mk[>?n^ NVGV8}|̄m7NHIqb1j>%.|Cӗ.jJT/.2DJR dP2RWW{}@(JXiiS _r%D,T-hC9W}s,[ZES)_Yh{FZ*g+tfE$\ QP@ $3h_/s'|>?lyݥ?rL"݁  :O*=x-x>$7.2pؾa-z eys`xN1> O'PCׂ`5x< J:H\ʶ˗-"UcO9#VTWw%<"3mW4X3O<'}H%J(C]Ki/lK{(cM% {Dz7)w;ԛطm[+>DO&cp04p( +L`C &`h5߆/Vtxr4<}8/%O}?tӕu%: c0{>x"Pζ֨ღ|irr >$dgi4A%Z"`THTw'iu^:?/ZNLv/OWu%I +Orf1"<Go'1%#*F0)+gJ77==7_OA5Ae>ˆ}FOrtR< \2|! +Q02Ynn +դQWق:[fUV6*IW>ml A[ZNn/Exr"-4Ru(Ӵɔ;s*c{x- v [Drh*V%Yŕ6'֢.٢%֓,ZzހAq!y:#4 |H䷞oyd +9&5zƃV⫭ +>ZI} 1\7>ꙠBⳋ +ꗦ/?QmFo[_H +endstream +endobj +71 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 46 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 71 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 72 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 73 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 60 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 117 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 0 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 0 611 611 278 0 0 278 889 611 611 +0 0 389 556 333 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 61 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 667 722 722 667 611 0 722 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 62 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 371 0 0 0 0 0 333 333 0 606 250 333 250 606 +500 500 500 500 0 500 500 0 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 763 0 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 0 667 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 63 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 147 +/Widths [600 0 0 600 0 0 0 0 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 600 600 600 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 600 0 600 0 0 600 600 600 600 +600 0 600 600 600 600 0 0 600 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 64 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 46 +/LastChar 146 +/Widths [600 0 600 600 600 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 65 0 R +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 90 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 66 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 58 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 833 0 0 0 0 0 0 0 0 1000 0 0 +0 0 0 0 0 0 0 500 0 0 0 500 0 556 0 333 +0 0 0 0 611 556 0 0 389 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 67 0 R +>> +endobj +14 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 97 +/LastChar 108 +/Widths [444 0 0 0 0 0 0 0 0 0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 68 0 R +>> +endobj +48 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBEMHB+Symbol +/Encoding /Identity-H +/DescendantFonts [ 74 0 R ] +/ToUnicode 75 0 R +>> +endobj +74 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBEMHB+Symbol +/FontDescriptor 69 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +47 [548] +64 [986] +] +>> +endobj +75 0 obj +<< +/Filter /FlateDecode +/Length 227 +>> +stream +HTPn +:@-'EYrKVMڝ"52 (U޳lvλ1ua!py$ӎ'gq uGNΉVx"Ar~I~~e_b }M-UśCkDFR~D)I43PݭVĎV4lղ:g{URv> +endobj +17 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 16 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +76 0 obj +<< +/S /D +>> +endobj +77 0 obj +<< +/Nums [0 76 0 R ] +>> +endobj +16 0 obj +<< +/Type /Pages +/Kids [1 0 R 17 0 R 20 0 R 24 0 R 27 0 R 30 0 R 33 0 R 36 0 R 39 0 R 42 0 R] +/Count 10 +/Parent 49 0 R +>> +endobj +50 0 obj +<< +/Type /Pages +/Kids [45 0 R 51 0 R 54 0 R 57 0 R] +/Count 4 +/Parent 49 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [16 0 R 50 0 R ] +/Count 14 +/MediaBox [0 0 612 792] +>> +endobj +78 0 obj +<< +/CreationDate (D:20210202102641-06'00') +/ModDate (D:20210202102641-06'00') +/Producer (Apple pstopdf) +>> +endobj +79 0 obj +<< +/Type /Catalog +/Pages 49 0 R +/PageLabels 77 0 R +>> +endobj +xref +0 80 +0000000000 65535 f +0000123792 00000 n +0000000016 00000 n +0000007706 00000 n +0000119238 00000 n +0000119469 00000 n +0000119820 00000 n +0000120031 00000 n +0000120451 00000 n +0000120761 00000 n +0000121310 00000 n +0000121850 00000 n +0000122284 00000 n +0000122629 00000 n +0000122940 00000 n +0000096096 00000 n +0000125033 00000 n +0000123873 00000 n +0000007920 00000 n +0000014563 00000 n +0000123957 00000 n +0000014742 00000 n +0000024616 00000 n +0000119645 00000 n +0000124041 00000 n +0000024816 00000 n +0000031470 00000 n +0000124125 00000 n +0000031648 00000 n +0000040043 00000 n +0000124209 00000 n +0000040221 00000 n +0000049501 00000 n +0000124293 00000 n +0000049690 00000 n +0000058403 00000 n +0000124377 00000 n +0000058594 00000 n +0000067419 00000 n +0000124461 00000 n +0000067608 00000 n +0000073915 00000 n +0000124545 00000 n +0000074104 00000 n +0000083309 00000 n +0000124629 00000 n +0000083498 00000 n +0000091662 00000 n +0000123137 00000 n +0000125265 00000 n +0000125170 00000 n +0000124713 00000 n +0000091864 00000 n +0000095304 00000 n +0000124797 00000 n +0000095506 00000 n +0000095627 00000 n +0000124881 00000 n +0000095724 00000 n +0000095977 00000 n +0000096237 00000 n +0000096434 00000 n +0000096640 00000 n +0000096835 00000 n +0000097035 00000 n +0000097226 00000 n +0000097428 00000 n +0000097629 00000 n +0000097834 00000 n +0000098037 00000 n +0000098227 00000 n +0000118608 00000 n +0000118816 00000 n +0000119026 00000 n +0000123280 00000 n +0000123492 00000 n +0000124965 00000 n +0000124993 00000 n +0000125357 00000 n +0000125480 00000 n +trailer +<< +/Size 80 +/Root 79 0 R +/Info 78 0 R +/ID [] +>> +startxref +125550 +%%EOF diff --git a/docs/medley-irm/08-RECORDPACKAGE.TEDIT b/docs/medley-irm/08-RECORDPACKAGE.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..cfb215b3d1fce0e55c6c423dbca0926bb4724ded GIT binary patch literal 70502 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 E0~h@S&;S4c literal 0 HcmV?d00001 diff --git a/docs/medley-irm/08-RECORDPACKAGE.pdf b/docs/medley-irm/08-RECORDPACKAGE.pdf new file mode 100644 index 00000000..1f981a84 --- /dev/null +++ b/docs/medley-irm/08-RECORDPACKAGE.pdf @@ -0,0 +1,8883 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 9690 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-1)Tj +/TT4 1 Tf +10 0 0 10 333.9 568.2 Tm +(RECORDS AND DATA STRUCTURES)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 555.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 531.54 Tm +0.0511 Tw +[(Hiding the details of your code makes it more readable, and lets you program more efficiently. Data)]TJ +0 -1.2222 TD +0.1333 Tw +[(structures are a good example: Youre better off if you can say Fetch me the )]TJ +/TT10 1 Tf +6 0 0 6 405.5423 520.54 Tm +0 Tw +(SPEED)Tj +/TT8 1 Tf +9 0 0 9 423.5452 520.54 Tm +0.1333 Tw +[( field from this)]TJ +/TT10 1 Tf +6 0 0 6 78 509.54 Tm +0 Tw +(AIRPLANE)Tj +/TT8 1 Tf +9 0 0 9 106.8047 509.54 Tm +0.0178 Tw +( rather than having to say )Tj +/TT10 1 Tf +6 0 0 6 216.626 509.54 Tm +0.0417 Tw +(\(CAR \(CDDDR \(CADR AIRPLANE\)\)\))Tj +/TT8 1 Tf +9 0 0 9 321.793 509.54 Tm +0.0178 Tw +(. You can declare data structures used by)Tj +-27.0881 -1.2222 TD +0.01 Tw +[(your programs, then work with field names rather than access details. Using the declarations, Medley)]TJ +T* +0.1778 Tw +[(performs the access/storage operations you request. If you change a data structures declaration,)]TJ +T* +0 Tw +(your programs automatically adjust.)Tj +0 -2 TD +0.0355 Tw +(You describe the format of a data structure \(record\) by making a record declaration \(see the Record)Tj +0 -1.2222 TD +0.0744 Tw +[(Declarations section below\). The record declaration is a description of the record, associating names)]TJ +T* +0 Tw +(with its various parts, or fields. For example, the record declaration)Tj +/TT10 1 Tf +6 0 0 6 114 422.14 Tm +(\(RECORD MSG)Tj +/TT12 1 Tf +9 0 0 9 153.6064 422.14 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 159.0073 422.14 Tm +(\(FROM TO TEXT\)\))Tj +/TT8 1 Tf +9 0 0 9 78 405.54 Tm +0.0044 Tw +(describes a data structure called )Tj +/TT10 1 Tf +6 0 0 6 207.7771 405.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 218.5789 405.54 Tm +0.0044 Tw +(, that has three fields: )Tj +/TT10 1 Tf +6 0 0 6 305.9005 405.54 Tm +0 Tw +(FROM)Tj +/TT8 1 Tf +9 0 0 9 320.3028 405.54 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 324.8428 405.54 Tm +(TO)Tj +/TT8 1 Tf +9 0 0 9 332.044 405.54 Tm +0.0044 Tw +(, and )Tj +/TT10 1 Tf +6 0 0 6 354.1098 405.54 Tm +0 Tw +(TEXT)Tj +/TT8 1 Tf +9 0 0 9 368.5122 405.54 Tm +0.0001 Tc +0.0043 Tw +(. You can refer to these fields)Tj +-32.2791 -1.2222 TD +0 Tc +0 Tw +(by name, to get their values or to store new values into them, by using )Tj +/TT10 1 Tf +6 0 0 6 359.6279 394.54 Tm +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 377.6309 394.54 Tm +( and )Tj +/TT10 1 Tf +6 0 0 6 397.3667 394.54 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 422.5708 394.54 Tm +(:)Tj +/TT10 1 Tf +6 0 0 6 114 382.09 Tm +(\(fetch \(MSG FROM\)of MYMSG\))Tj +0 -1 TD +(\(replace \(MSG TO\) of MYMSG with John Doe\))Tj +/TT8 1 Tf +9 0 0 9 78 360.54 Tm +( You create new )Tj +/TT10 1 Tf +6 0 0 6 144.0059 360.54 Tm +(MSG)Tj +/TT8 1 Tf +9 0 0 9 154.8076 360.54 Tm +(s with )Tj +/TT10 1 Tf +6 0 0 6 181.4209 360.54 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 203.0244 360.54 Tm +(:)Tj +/TT10 1 Tf +6 0 0 6 114 348.09 Tm +(\(SETQ MYMSG \(create MSG\)\))Tj +/TT8 1 Tf +9 0 0 9 78 332.54 Tm +( and )Tj +/TT10 1 Tf +6 0 0 6 97.7358 332.54 Tm +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 115.7388 332.54 Tm +( tells you whether some object is a )Tj +/TT10 1 Tf +6 0 0 6 253.6348 332.54 Tm +(MSG)Tj +/TT8 1 Tf +9 0 0 9 264.4365 332.54 Tm +(:)Tj +/TT10 1 Tf +6 0 0 6 114 320.09 Tm +(\(IF \(TYPE? MSG THIS-THING\) then \(SEND-MSG THIS-THING\)\))Tj +/TT8 1 Tf +9 0 0 9 78 304.54 Tm +0.0044 Tw +(So far weve said nothing about )Tj +/TT14 1 Tf +14.2796 0 TD +0 Tw +(how)Tj +/TT8 1 Tf +1.666 0 TD +0.0007 Tc +0.0037 Tw +( your )Tj +/TT10 1 Tf +6 0 0 6 244.9914 304.54 Tm +0 Tc +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 255.7931 304.54 Tm +0.0001 Tc +0.0043 Tw +( is representedwhen youre writing)Tj +/TT10 1 Tf +6 0 0 6 405.1211 304.54 Tm +0 Tc +0.01 Tw +[( FETCH)]TJ +/TT8 1 Tf +9 0 0 9 426.7846 304.54 Tm +0.0044 Tw +(es and )Tj +/TT10 1 Tf +6 0 0 6 454.726 304.54 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 479.9301 304.54 Tm +(s,)Tj +-44.6589 -1.2222 TD +0.0611 Tw +[(it doesnt matter. But you )]TJ +/TT14 1 Tf +12.1338 0 TD +0 Tw +(can)Tj +/TT8 1 Tf +1.4072 0 TD +0.0611 Tw +[( control the representation: The symbol )]TJ +/TT10 1 Tf +6 0 0 6 364.3609 293.54 Tm +0 Tw +(RECORD)Tj +/TT8 1 Tf +9 0 0 9 385.9644 293.54 Tm +0.0611 Tw +[( in the declaration above)]TJ +-34.2183 -1.2222 TD +0.0489 Tw +(causes each )Tj +/TT10 1 Tf +6 0 0 6 127.2858 282.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 138.0875 282.54 Tm +0.0489 Tw +[( to be represented as a list. There are a number of options, up to creating a completely)]TJ +-6.6764 -1.2222 TD +0 Tw +(new Lisp data type; each has its own specifier symbol, and theyre described in detail below.)Tj +0 -2 TD +0.0467 Tw +(The record package is implemented using DWIM and CLISP, so it will do spelling correction on field)Tj +0 -1.2222 TD +0.22 Tw +[(names, record types, etc. Record operations are translated using all CLISP declarations in effect)]TJ +T* +0 Tw +(\(standard/fast/undoable\).)Tj +0 -2 TD +0.0411 Tw +(The file managers )Tj +/TT10 1 Tf +6 0 0 6 154.841 213.54 Tm +0 Tw +(RECORDS)Tj +/TT8 1 Tf +9 0 0 9 180.045 213.54 Tm +0.0411 Tw +[( command lets you give record declarations \(see Chapter 17\), and )]TJ +/TT10 1 Tf +6 0 0 6 446.5169 213.54 Tm +0 Tw +(FILES?)Tj +/TT8 1 Tf +9 0 0 9 468.1204 213.54 Tm +0.0411 Tw +[( and)]TJ +/TT10 1 Tf +6 0 0 6 78 202.54 Tm +0 Tw +(CLEANUP)Tj +/TT8 1 Tf +9 0 0 9 103.2041 202.54 Tm +( will tell you about record declarations that need to be dumped.)Tj +/TT4 1 Tf +10 0 0 10 54 180.2 Tm +(FETCH and REPLACE)Tj +ET +1 w +54.01 177.49 m +510.01 177.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 163.54 Tm +0.0122 Tw +(The fields of a record are accessed and changed with )Tj +/TT10 1 Tf +6 0 0 6 290.6835 163.54 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 308.6864 163.54 Tm +0.0122 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 328.6423 163.54 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 353.8464 163.54 Tm +0.0122 Tw +[(. If )]TJ +/TT10 1 Tf +6 0 0 6 369.2057 163.54 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 372.8063 163.54 Tm +0.0122 Tw +[( is a )]TJ +/TT10 1 Tf +6 0 0 6 390.8199 163.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 401.6216 163.54 Tm +0.0122 Tw +[( data structure, )]TJ +/TT10 1 Tf +6 0 0 6 464.3408 163.54 Tm +0 Tw +(\(fetch)Tj +-64.3901 -1.8333 TD +0.0733 Tw +(FROM of X\) )Tj +/TT8 1 Tf +9 0 0 9 118.9264 152.54 Tm +0.0311 Tw +(will return the value of the )Tj +/TT10 1 Tf +6 0 0 6 229.314 152.54 Tm +0 Tw +(FROM)Tj +/TT8 1 Tf +9 0 0 9 243.7163 152.54 Tm +0.0311 Tw +[( field of )]TJ +/TT10 1 Tf +6 0 0 6 277.2604 152.54 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 280.861 152.54 Tm +0.0311 Tw +(, and )Tj +/TT10 1 Tf +6 0 0 6 303.4068 152.54 Tm +0.0733 Tw +(\(replace FROM of X with Y\))Tj +/TT8 1 Tf +9 0 0 9 399.2221 152.54 Tm +0.0311 Tw +[( will replace this field)]TJ +-35.6913 -1.2222 TD +(with the value of )Tj +/TT10 1 Tf +6 0 0 6 148.7557 141.54 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 152.3563 141.54 Tm +0.0311 Tw +[(. In general, the value of a )]TJ +/TT10 1 Tf +6 0 0 6 261.7438 141.54 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 286.9479 141.54 Tm +0.0311 Tw +[( operation is the same as the value stored into the)]TJ +-23.2164 -1.2222 TD +0 Tw +(field.)Tj +0 -2 TD +0.0733 Tw +(Note that )Tj +/TT10 1 Tf +6 0 0 6 119.0685 112.54 Tm +0.175 Tw +(\(fetch FROM of X\))Tj +/TT8 1 Tf +9 0 0 9 183.4285 112.54 Tm +0.0733 Tw +[( assumes that )]TJ +/TT10 1 Tf +6 0 0 6 241.3948 112.54 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 244.9954 112.54 Tm +0.0733 Tw +[( is an instance of the record )]TJ +/TT10 1 Tf +6 0 0 6 360.4103 112.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 371.2121 112.54 Tm +0.0733 Tw +(the interpretation of )Tj +/TT10 1 Tf +6 0 0 6 464.4138 112.54 Tm +0 Tw +(\(fetch)Tj +-64.4023 -1.8333 TD +(FROM of X\))Tj +/TT8 1 Tf +9 0 0 9 114.0059 101.54 Tm +( never depends on the )Tj +/TT14 1 Tf +10.0518 0 TD +(value)Tj +/TT8 1 Tf +2.167 0 TD +( of )Tj +/TT10 1 Tf +6 0 0 6 236.3848 101.54 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 239.9854 101.54 Tm +(. If )Tj +/TT10 1 Tf +6 0 0 6 255.0146 101.54 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 258.6152 101.54 Tm +( is not a )Tj +/TT10 1 Tf +6 0 0 6 291.6357 101.54 Tm +(MSG)Tj +/TT8 1 Tf +9 0 0 9 302.4375 101.54 Tm +(, this may produce incorrect results.)Tj +-24.9375 -2 TD +0.0378 Tw +(If there is another record declaration, )Tj +/TT10 1 Tf +6 0 0 6 229.8056 83.54 Tm +0.0917 Tw +(\(RECORD REPLY \(TEXT RESPONSE\)\))Tj +/TT8 1 Tf +9 0 0 9 339.4732 83.54 Tm +0.0378 Tw +(, then )Tj +/TT10 1 Tf +6 0 0 6 364.6263 83.54 Tm +0.0917 Tw +(\(fetch TEXT of X\))Tj +/TT8 1 Tf +9 0 0 9 427.4863 83.54 Tm +0.0378 Tw +[( is ambiguous,)]TJ +-38.8318 -1.2222 TD +0 Tw +(because )Tj +/TT10 1 Tf +6 0 0 6 111.9874 72.54 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 115.588 72.54 Tm +0.0444 Tw +[( could be either a )]TJ +/TT10 1 Tf +6 0 0 6 188.0499 72.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 198.8516 72.54 Tm +0.0444 Tw +[( or a )]TJ +/TT10 1 Tf +6 0 0 6 219.7699 72.54 Tm +0 Tw +(REPLY)Tj +/TT8 1 Tf +9 0 0 9 237.7728 72.54 Tm +0.0444 Tw +[( record. In this case, an error will occur, )]TJ +/TT10 1 Tf +6 0 0 6 403.2235 72.54 Tm +0.1067 Tw +(Ambiguous record field)Tj +/TT8 1 Tf +9 0 0 9 483.7164 72.54 Tm +0 Tw +(.)Tj +-45.0796 -1.2222 TD +0.0567 Tw +(To clarify this, give )Tj +/TT10 1 Tf +6 0 0 6 158.6362 61.54 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 176.6391 61.54 Tm +0.0567 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 197.395 61.54 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 222.5991 61.54 Tm +0.0567 Tw +[( a list for their field argument: )]TJ +/TT10 1 Tf +6 0 0 6 359.5038 61.54 Tm +0.1367 Tw +(\(fetch \(MSG TEXT\) of X\))Tj +/TT8 1 Tf +9 0 0 9 445.5972 61.54 Tm +0.0567 Tw +[( will fetch)]TJ +-40.8441 -1.2222 TD +0 Tw +(the )Tj +/TT10 1 Tf +6 0 0 6 92.7449 50.54 Tm +(TEXT)Tj +/TT8 1 Tf +9 0 0 9 107.1472 50.54 Tm +0.0001 Tc +0.001 Tw +( field of a )Tj +/TT10 1 Tf +6 0 0 6 146.6413 50.54 Tm +0 Tc +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 157.4431 50.54 Tm +0.0001 Tc +0.001 Tw +( record. If a field has an )Tj +/TT14 1 Tf +10.8912 0 TD +0 Tc +0 Tw +(identical)Tj +/TT8 1 Tf +3.4629 0 TD +0.0011 Tw +( interpretation in two declarations, e.g., if the field)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +14 0 obj +<< +/Length 8690 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +6 0 0 6 126 569.54 Tm +(TEXT)Tj +/TT8 1 Tf +9 0 0 9 140.4023 569.54 Tm +0.0322 Tw +[( occurred in the same location within the declarations of )]TJ +/TT10 1 Tf +6 0 0 6 368.7462 569.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 379.5479 569.54 Tm +0.0322 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 399.8638 569.54 Tm +0 Tw +(REPLY)Tj +/TT8 1 Tf +9 0 0 9 417.8667 569.54 Tm +0.0322 Tw +(, then )Tj +/TT10 1 Tf +6 0 0 6 442.9199 569.54 Tm +0.0767 Tw +(\(fetch TEXT of X\))Tj +/TT8 1 Tf +9 0 0 9 505.5098 569.54 Tm +0.0322 Tw +[( would)]TJ +/TT14 1 Tf +-42.1678 -1.2222 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +( be ambiguous.)Tj +-1.333 -2 TD +0.1744 Tw +(If theres a conflict, user record declarations take precedence over system record declarations.)Tj +0 -1.2222 TD +0.2178 Tw +(System records are declared by including )Tj +/TT10 1 Tf +6 0 0 6 304.5324 529.54 Tm +0 Tw +(\(SYSTEM\))Tj +/TT8 1 Tf +9 0 0 9 333.3371 529.54 Tm +0.2178 Tw +[( in the declaration \(see the Record Declarations)]TJ +-23.0375 -1.2222 TD +0 Tw +(section below\). All of the records defined in the standard Medley system are system records.)Tj +0 -2 TD +0.03 Tw +[(Another complication can occur if the fields of a record are themselves records. The fields of a record)]TJ +0 -1.2222 TD +0.0733 Tw +[(can be further broken down into sub-fields by a subdeclaration within the record declaration. For)]TJ +T* +0 Tw +(example,)Tj +/TT10 1 Tf +6 0 0 6 214.8 466.09 Tm +(\(RECORD NODE \(POSITION . LABEL\) \(RECORD POSITION \(XLOC . YLOC\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 450.54 Tm +(lets you access the )Tj +/TT10 1 Tf +6 0 0 6 200.9399 450.54 Tm +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 229.7446 450.54 Tm +( field with )Tj +/TT10 1 Tf +6 0 0 6 272.8374 450.54 Tm +(\(fetch POSITION of X\))Tj +/TT8 1 Tf +9 0 0 9 348.4497 450.54 Tm +(, or its subfield )Tj +/TT10 1 Tf +6 0 0 6 409.8018 450.54 Tm +(XLOC)Tj +/TT8 1 Tf +9 0 0 9 424.2041 450.54 Tm +( with )Tj +/TT10 1 Tf +6 0 0 6 447.0029 450.54 Tm +(\(fetch XLOC of X\))Tj +/TT8 1 Tf +9 0 0 9 508.2129 450.54 Tm +(.)Tj +-42.4681 -2 TD +0.0167 Tw +(You may also declare that field name in a )Tj +/TT14 1 Tf +18.6705 0 TD +0 Tw +(separate)Tj +/TT8 1 Tf +3.2773 0 TD +0.0167 Tw +[( record declaration. For instance, the )]TJ +/TT10 1 Tf +6 0 0 6 473.9508 432.54 Tm +0 Tw +(TEXT)Tj +/TT8 1 Tf +9 0 0 9 488.3531 432.54 Tm +0.0167 Tw +[( field in the)]TJ +/TT10 1 Tf +6 0 0 6 126 421.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 136.8017 421.54 Tm +0.0189 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 156.8776 421.54 Tm +0 Tw +(REPLY)Tj +/TT8 1 Tf +9 0 0 9 174.8805 421.54 Tm +0.0189 Tw +[( records above may be subdivided with the seperate record declaration )]TJ +/TT10 1 Tf +6 0 0 6 461.459 421.54 Tm +0.045 Tw +(\(RECORD TEXT \(HEADER)Tj +-55.9098 -1.8333 TD +0 Tw +(TXT\)\))Tj +/TT8 1 Tf +9 0 0 9 144.0029 410.54 Tm +0.0678 Tw +[(. You get to fields of subfields \(to any level of nesting\) by specifying the data path as a list of)]TJ +-2.0003 -1.2222 TD +0 Tw +(record/field names, where there is some path from each record to the next in the list. For instance,)Tj +/TT10 1 Tf +6 0 0 6 138 387.09 Tm +(\(fetch \(MSG TEXT HEADER\) of X\))Tj +/TT8 1 Tf +9 0 0 9 126 371.54 Tm +(treats )Tj +/TT10 1 Tf +6 0 0 6 150.7517 371.54 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 154.3523 371.54 Tm +0.05 Tw +[( as a )]TJ +/TT10 1 Tf +6 0 0 6 175.2668 371.54 Tm +0 Tw +(MSG)Tj +/TT8 1 Tf +9 0 0 9 186.0685 371.54 Tm +0.05 Tw +[( record, fetches its )]TJ +/TT10 1 Tf +6 0 0 6 261.9164 371.54 Tm +0 Tw +(TEXT)Tj +/TT8 1 Tf +9 0 0 9 276.3187 371.54 Tm +0.05 Tw +[( field, and fetches )]TJ +/TT14 1 Tf +8.2146 0 TD +0 Tw +(its)Tj +/TT8 1 Tf +1 0 TD +( )Tj +/TT10 1 Tf +6 0 0 6 361.9506 371.54 Tm +(HEADER)Tj +/TT8 1 Tf +9 0 0 9 383.5541 371.54 Tm +0.05 Tw +[( field. You only need to give enough)]TJ +-28.6171 -1.2222 TD +0.0156 Tw +[(of the data path to disambiguate it. In this case, )]TJ +/TT10 1 Tf +6 0 0 6 319.7568 360.54 Tm +0 Tw +(\(fetch)Tj +/TT12 1 Tf +9 0 0 9 341.3603 360.54 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 347.1012 360.54 Tm +0.0383 Tw +(\(MSG HEADER\) of X\))Tj +/TT8 1 Tf +9 0 0 9 412.6017 360.54 Tm +0.0156 Tw +[( is sufficient: Medley searches)]TJ +-31.8446 -1.2889 TD +0.1156 Tw +(among all current record declarations for a path from each name to the next, considering first local)Tj +0 -1.2222 TD +0.1567 Tw +[(declarations \(see Chapter 21\) and then global ones. Of course, if you had two records with )]TJ +/TT10 1 Tf +6 0 0 6 512.4309 337.94 Tm +0 Tw +(HEADER)Tj +/TT8 1 Tf +9 0 0 9 126 326.94 Tm +(fields, you get an )Tj +/TT10 1 Tf +6 0 0 6 196.4443 326.94 Tm +(Ambiguous data path)Tj +/TT8 1 Tf +9 0 0 9 264.8555 326.94 Tm +( error.)Tj +/TT10 1 Tf +6 0 0 6 126 308.94 Tm +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 144.0029 308.94 Tm +0.1722 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 166.8388 308.94 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 192.0428 308.94 Tm +0.1722 Tw +[( are translated using the CLISP declarations in effect \(see Chapter 21\). )]TJ +/TT10 1 Tf +6 0 0 6 493.2891 308.94 Tm +0 Tw +(FFETCH)Tj +/TT8 1 Tf +9 0 0 9 514.8926 308.94 Tm +0.1722 Tw +[( and)]TJ +/TT10 1 Tf +6 0 0 6 126 297.94 Tm +0 Tw +(FREPLACE)Tj +/TT8 1 Tf +9 0 0 9 154.8047 297.94 Tm +( are fast versions that dont do any type checking. )Tj +/TT10 1 Tf +6 0 0 6 356.6851 297.94 Tm +(/REPLACE)Tj +/TT8 1 Tf +9 0 0 9 385.4897 297.94 Tm +( insures undoable declarations.)Tj +/TT4 1 Tf +10 0 0 10 102 275.6 Tm +(Record Declarations)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 272.89 m +558.01 272.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 258.94 Tm +(You define records by evaluating declarations of the form:)Tj +/TT10 1 Tf +6 0 0 6 138 244.54 Tm +(\()Tj +/TT16 1 Tf +9 0 0 9 141.6006 244.54 Tm +(RECORD-TYPE)Tj +/TT10 1 Tf +6 0 0 6 201.0102 244.54 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 204.6108 244.54 Tm +(RECORD-NAME)Tj +/TT10 1 Tf +6 0 0 6 264.0205 244.54 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 267.6211 244.54 Tm +(RECORD-FIELDS)Tj +/TT10 1 Tf +6 0 0 6 337.8325 244.54 Tm +( . )Tj +/TT16 1 Tf +9 0 0 9 348.6343 244.54 Tm +(RECORD-TAIL)Tj +/TT10 1 Tf +6 0 0 6 408.0439 244.54 Tm +(\))Tj +/TT16 1 Tf +9 0 0 9 126 227.94 Tm +(RECORD-TYPE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0189 Tw +[( specifies the type of data youre declaring, and controls how instances will be stored)]TJ +-6.6011 -1.2889 TD +0 Tw +(internally. The different record types are described below.)Tj +/TT16 1 Tf +0 -2 TD +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.1278 Tw +[( is a symbol used to identify the record declaration for )]TJ +/TT10 1 Tf +6 0 0 6 415.6021 198.34 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 437.2056 198.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 442.8557 198.34 Tm +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 460.8586 198.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 466.5086 198.34 Tm +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 484.5115 198.34 Tm +0.1278 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 506.5474 198.34 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 531.7515 198.34 Tm +(,)Tj +-45.0835 -1.2889 TD +0.0778 Tw +(and dumping to files \(see Chapter 17\). )Tj +/TT10 1 Tf +6 0 0 6 288.1991 186.74 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 317.0038 186.74 Tm +0.0778 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 338.1396 186.74 Tm +0 Tw +(TYPERECORD)Tj +/TT8 1 Tf +9 0 0 9 374.1455 186.74 Tm +0.0778 Tw +[( declarations also use )]TJ +/TT16 1 Tf +9.9664 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.0778 Tw +[( to)]TJ +-44.1392 -1.2889 TD +0 Tw +(identify the data structure \(as described below\).)Tj +/TT16 1 Tf +0 -2 TD +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0467 Tw +[( describes the structure of the record. Its exact interpretation varies with )]TJ +/TT10 1 Tf +6 0 0 6 492.1588 157.14 Tm +0 Tw +(RECORD-TYPE)Tj +/TT8 1 Tf +9 0 0 9 531.7652 157.14 Tm +(.)Tj +-45.085 -1.2889 TD +(Generally, it names the fields within the record that can be accessed with )Tj +/TT10 1 Tf +6 0 0 6 417.8716 145.54 Tm +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 435.8745 145.54 Tm +( and )Tj +/TT10 1 Tf +6 0 0 6 455.6104 145.54 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 480.8145 145.54 Tm +(.)Tj +/TT16 1 Tf +-39.4238 -2 TD +(RECORD-TAIL)Tj +/TT8 1 Tf +6.6011 0 TD +0.0522 Tw +[( is an optional list where you can specify default values for record fields, special )]TJ +/TT10 1 Tf +6 0 0 6 512.3815 127.54 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 126 115.94 Tm +(and )Tj +/TT10 1 Tf +6 0 0 6 143.4858 115.94 Tm +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 161.4888 115.94 Tm +( forms, and subdeclarations \(described below\).)Tj +-3.9432 -2 TD +0.2956 Tw +(Record declarations are Lisp programs, and could be included in functions, changing a record)Tj +0 -1.2222 TD +0.0567 Tw +(declaration at run-time. )Tj +/TT14 1 Tf +11.1598 0 TD +(Dont do it.)Tj +/TT8 1 Tf +4.8067 0 TD +[( You risk creating a structure with one declaration, and trying to)]TJ +-15.9665 -1.2222 TD +0.2789 Tw +[(fetch from it with anothercomplete chaos results. If you need to change record declarations)]TJ +T* +0 Tw +(dynamically, consider using association lists or property lists. )Tj +/TT4 1 Tf +10 0 0 10 126 42.6 Tm +(Record Types)Tj +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +18 0 obj +<< +/Length 7403 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-3)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(The )Tj +/TT16 1 Tf +1.9283 0 TD +(RECORD-TYPE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0001 Tc +0.0043 Tw +( field of the record declaration specifies how the data object is created, and how the)Tj +-8.5293 -1.2889 TD +0 Tc +0.0233 Tw +[(various record fields are accessed. Depending on the record type, the record fields may be stored in a)]TJ +0 -1.2222 TD +0 Tw +(list, or in an array, or on a symbols property list. The following record types are defined:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(RECORD)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +32.7578 0 TD +([Record Type])Tj +-33.6911 -1.8444 TD +0.04 Tw +(The fields of a )Tj +/TT10 1 Tf +6 0 0 6 185.773 509.34 Tm +0 Tw +(RECORD)Tj +/TT8 1 Tf +9 0 0 9 207.3765 509.34 Tm +0.04 Tw +[( are kept in a list. )]TJ +/TT16 1 Tf +8.3215 0 TD +0 Tw +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.04 Tw +[( is a list; each non-)]TJ +/TT10 1 Tf +6 0 0 6 427.134 509.34 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 437.9358 509.34 Tm +0.04 Tw +[( symbol is a)]TJ +-34.6595 -1.2889 TD +0.0544 Tw +[(field-name to be associated with the corresponding element or tail of a list structure. For)]TJ +0 -1.2222 TD +0.0089 Tw +(example, with the declaration )Tj +/TT10 1 Tf +6 0 0 6 246.7785 486.74 Tm +0.0217 Tw +(\(RECORD MSG \(FROM TO . TEXT\)\))Tj +/TT8 1 Tf +9 0 0 9 351.8455 486.74 Tm +0 Tw +(, )Tj +/TT10 1 Tf +6 0 0 6 356.4255 486.74 Tm +0.0217 Tw +(\(fetch FROM of X\))Tj +/TT8 1 Tf +9 0 0 9 418.0255 486.74 Tm +0.0089 Tw +[( translates as )]TJ +/TT10 1 Tf +6 0 0 6 471.5535 486.74 Tm +0 Tw +(\(CAR)Tj +-57.5923 -1.8333 TD +(X\))Tj +/TT8 1 Tf +9 0 0 9 133.2012 475.74 Tm +(. )Tj +/TT10 1 Tf +6 0 0 6 126 457.74 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 136.8017 457.74 Tm +0.1078 Tw +[( can be used as a place marker for an unnamed field, e.g., )]TJ +/TT10 1 Tf +6 0 0 6 378.9777 457.74 Tm +0.26 Tw +(\(A NIL B\))Tj +/TT8 1 Tf +9 0 0 9 414.5029 457.74 Tm +0.1078 Tw +[( describes a three)]TJ +-32.0559 -1.2222 TD +0.0011 Tw +(element list, with )Tj +/TT10 1 Tf +6 0 0 6 196.9885 446.74 Tm +0 Tw +(B)Tj +/TT8 1 Tf +9 0 0 9 200.5891 446.74 Tm +0.0011 Tw +( corresponding to the third element. A number may be used to indicate)Tj +-8.2877 -1.2222 TD +0 Tw +(a sequence of )Tj +/TT10 1 Tf +6 0 0 6 181.6084 435.74 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 192.4101 435.74 Tm +(s, e.g. )Tj +/TT10 1 Tf +6 0 0 6 216.791 435.74 Tm +(\(A 4 B\))Tj +/TT8 1 Tf +9 0 0 9 241.9951 435.74 Tm +( is interpreted as )Tj +/TT10 1 Tf +6 0 0 6 310.4224 435.74 Tm +(\(A NIL NIL NIL NIL B\))Tj +/TT8 1 Tf +9 0 0 9 386.0347 435.74 Tm +(.)Tj +/TT12 1 Tf +-31.5594 -2.3333 TD +(DATATYPE)Tj +/TT8 1 Tf +4.8 0 TD +[( )-31057.8([Record Type])]TJ +-2.1333 -1.8444 TD +0.06 Tw +(Defines a new user data type with type name )Tj +/TT16 1 Tf +20.7866 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.06 Tw +[(. Unlike other record types,)]TJ +-27.3877 -1.2889 TD +0.1411 Tw +(the instances of a )Tj +/TT10 1 Tf +6 0 0 6 201.4408 386.54 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 230.2455 386.54 Tm +0.1411 Tw +[( are represented with a completely new Lisp type, and not in)]TJ +-11.5828 -1.2222 TD +0 Tw +(terms of other existing types. )Tj +/TT16 1 Tf +0 -2 TD +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1433 Tw +[( is a list of field specifications, where each specification is either a list)]TJ +/TT10 1 Tf +6 0 0 6 126 345.94 Tm +0 Tw +(\()Tj +/TT16 1 Tf +9 0 0 9 129.6006 345.94 Tm +(FIELDNAME)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT16 1 Tf +1.1823 0 TD +(FIELDTYPE)Tj +/TT10 1 Tf +6 0 0 6 237.4573 345.94 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 241.0579 345.94 Tm +0.2422 Tw +(, or an symbol )Tj +/TT16 1 Tf +7.4948 0 TD +0 Tw +(FIELDNAME)Tj +/TT8 1 Tf +5.4009 0 TD +0.2422 Tw +[(. If )]TJ +/TT16 1 Tf +2.3966 0 TD +0 Tw +(FIELDTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.2422 Tw +[( is omitted, it)]TJ +-33.4773 -1.2889 TD +0 Tw +(defaults to )Tj +/TT10 1 Tf +6 0 0 6 170.4507 334.34 Tm +(POINTER)Tj +/TT8 1 Tf +9 0 0 9 195.6548 334.34 Tm +(. Possible values for )Tj +/TT16 1 Tf +9.2476 0 TD +(FIELDTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +( are:)Tj +/TT10 1 Tf +6 0 0 6 160.8 315.74 Tm +(POINTER)Tj +/TT8 1 Tf +9 0 0 9 192 315.74 Tm +(Field contains a pointer to any arbitrary Interlisp object.)Tj +/TT10 1 Tf +6 0 0 6 160.8 297.74 Tm +(INTEGER)Tj +1.8 -1.5 TD +(FIXP)Tj +/TT8 1 Tf +9 0 0 9 192 288.74 Tm +0.0001 Tc +0.0032 Tw +(Field contains a signed integer. Caution: An )Tj +/TT10 1 Tf +6 0 0 6 373.54 288.74 Tm +0 Tc +0 Tw +(INTEGER)Tj +/TT8 1 Tf +9 0 0 9 398.7441 288.74 Tm +0.0001 Tc +0.0032 Tw +( field is not capable of)Tj +-22.9716 -1.2222 TD +0 Tc +0 Tw +(holding everything that satisfies )Tj +/TT10 1 Tf +6 0 0 6 322.4692 277.74 Tm +(FIXP)Tj +/TT8 1 Tf +9 0 0 9 336.8716 277.74 Tm +(, such as bignums.)Tj +/TT10 1 Tf +6 0 0 6 157.2 259.74 Tm +(FLOATING)Tj +1.2 -1.5 TD +(FLOATP)Tj +/TT8 1 Tf +9 0 0 9 192 250.74 Tm +(Field contains a floating point number.)Tj +/TT10 1 Tf +6 0 0 6 150 232.74 Tm +(SIGNEDWORD)Tj +/TT8 1 Tf +9 0 0 9 192 232.74 Tm +(Field contains a 16-bit signed integer.)Tj +/TT10 1 Tf +6 0 0 6 171.6 214.74 Tm +(FLAG)Tj +/TT8 1 Tf +9 0 0 9 192 214.74 Tm +(Field is a one bit field that contains )Tj +/TT10 1 Tf +6 0 0 6 341.8887 214.74 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 345.4893 214.74 Tm +( or )Tj +/TT10 1 Tf +6 0 0 6 358.4575 214.74 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 369.2593 214.74 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 163.95 196.74 Tm +(BITS)Tj +/TT18 1 Tf +9 0 0 9 178.3523 196.74 Tm +( )Tj +/TT16 1 Tf +0.25 0 TD +(N)Tj +/TT8 1 Tf +1.2664 0 TD +(Field contains an )Tj +/TT16 1 Tf +7.7549 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(-bit unsigned integer.)Tj +/TT10 1 Tf +6 0 0 6 171.6 178.14 Tm +(BYTE)Tj +/TT8 1 Tf +9 0 0 9 192 178.14 Tm +(Equivalent to )Tj +/TT10 1 Tf +6 0 0 6 247.6216 178.14 Tm +(BITS)Tj +/TT8 1 Tf +9 0 0 9 262.0239 178.14 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 264.2739 178.14 Tm +(8)Tj +/TT8 1 Tf +9 0 0 9 267.8745 178.14 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 171.6 160.14 Tm +(WORD)Tj +/TT8 1 Tf +9 0 0 9 192 160.14 Tm +(Equivalent to )Tj +/TT10 1 Tf +6 0 0 6 247.6216 160.14 Tm +(BITS)Tj +/TT8 1 Tf +9 0 0 9 262.0239 160.14 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 264.2739 160.14 Tm +(16)Tj +/TT8 1 Tf +9 0 0 9 271.4751 160.14 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 157.2 142.14 Tm +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 192 142.14 Tm +0.0644 Tw +(Field contains a pointer like )Tj +/TT10 1 Tf +6 0 0 6 307.4923 142.14 Tm +0 Tw +(POINTER)Tj +/TT8 1 Tf +9 0 0 9 332.6964 142.14 Tm +0.0644 Tw +(, but the field is )Tj +/TT14 1 Tf +7.4116 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0644 Tw +[( reference counted)]TJ +-24.3775 -1.2222 TD +0.02 Tw +(by the garbage collector. )Tj +/TT10 1 Tf +6 0 0 6 294.5807 131.14 Tm +0 Tw +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 323.3853 131.14 Tm +0.02 Tw +[( fields are useful for implementing back-)]TJ +-14.5984 -1.2222 TD +0.08 Tw +(pointers in structures that would be circular and not otherwise collected)Tj +T* +0 Tw +(by the reference-counting garbage collector.)Tj +/TT18 1 Tf +0 -2 TD +(Warning)Tj +/TT8 1 Tf +4 0 TD +0.2911 Tw +[(: Use )]TJ +/TT10 1 Tf +6 0 0 6 259.986 91.14 Tm +0 Tw +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 288.7906 91.14 Tm +0.2911 Tw +[( fields with great care. You can damage the)]TJ +-10.7545 -1.2222 TD +0.0356 Tw +(integrity of the storage allocation system by using pointers to objects that)Tj +T* +0.01 Tw +[(have been garbage collected. Code that uses )]TJ +/TT10 1 Tf +6 0 0 6 372.074 69.14 Tm +0 Tw +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 400.8787 69.14 Tm +0.01 Tw +[( fields should be sure)]TJ +-23.2087 -1.2222 TD +0.0878 Tw +[(that the objects pointed to have not been garbage collected. This can be)]TJ +T* +0.0167 Tw +[(done in two ways: The first is to maintain the object in a global structure,)]TJ +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT18 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +22 0 obj +<< +/Length 7668 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 240 569.54 Tm +0.2667 Tw +(so that it is never garbage collected until explicitly deleted from the)Tj +0 -1.2222 TD +0.2411 Tw +(structure, at which point the program must invalidate all the )Tj +/TT10 1 Tf +6 0 0 6 505.1922 558.54 Tm +0 Tw +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 240 547.54 Tm +0.0244 Tw +[(fields of other objects pointing at it. The second is to declare the object as)]TJ +T* +0 Tw +(a )Tj +/TT10 1 Tf +6 0 0 6 247.77 536.54 Tm +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 276.5747 536.54 Tm +0.1133 Tw +[( beginning with a )]TJ +/TT10 1 Tf +6 0 0 6 352.7074 536.54 Tm +0 Tw +(POINTER)Tj +/TT8 1 Tf +9 0 0 9 377.9115 536.54 Tm +0.1133 Tw +[( field that the program maintains as a)]TJ +-15.3235 -1.2222 TD +0.0244 Tw +(pointer to an object of another type \(e.g., the object containing the )Tj +/TT10 1 Tf +6 0 0 6 505.2835 525.54 Tm +0 Tw +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 240 514.54 Tm +0.0267 Tw +(pointing back at it\), and test that field for reasonableness whenever using)Tj +T* +0 Tw +(the contents of the )Tj +/TT10 1 Tf +6 0 0 6 315.2607 503.54 Tm +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 344.0654 503.54 Tm +( field.)Tj +-18.8962 -2 TD +(For example, the declaration)Tj +/TT10 1 Tf +6 0 0 6 210 473.09 Tm +(\(DATATYPE FOO)Tj +3 -1 TD +(\(\(FLG BITS 12\) TEXT HEAD \(DATE BITS 18\))Tj +-3 -1 TD +[( )-1199.7(\(PRIO FLOATP\) \(READ? FLAG\)\)\))]TJ +/TT8 1 Tf +9 0 0 9 174 445.54 Tm +0.0811 Tw +(would define a data type )Tj +/TT10 1 Tf +6 0 0 6 279.4317 445.54 Tm +0 Tw +(FOO)Tj +/TT8 1 Tf +9 0 0 9 290.2335 445.54 Tm +0.0811 Tw +[( with two pointer fields, a floating point number, and fields)]TJ +-12.9148 -1.2222 TD +0.11 Tw +(for a )Tj +/TT10 1 Tf +6 0 0 6 196.4453 434.54 Tm +0 Tw +(12)Tj +/TT8 1 Tf +9 0 0 9 203.6465 434.54 Tm +0.11 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 225.3623 434.54 Tm +0 Tw +(18)Tj +/TT8 1 Tf +9 0 0 9 232.5635 434.54 Tm +0.11 Tw +[( bit unsigned integers, and a flag \(one bit\). Fields are allocated in such a)]TJ +-6.5071 -1.2222 TD +0.0478 Tw +(way as to optimize the storage used and not necessarily in the order specified. Generally,)Tj +T* +0 Tw +(a )Tj +/TT10 1 Tf +6 0 0 6 182.02 412.54 Tm +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 210.8247 412.54 Tm +0.1411 Tw +[( record is much more storage compact than the corresponding )]TJ +/TT10 1 Tf +6 0 0 6 472.8044 412.54 Tm +0 Tw +(RECORD)Tj +/TT8 1 Tf +9 0 0 9 494.408 412.54 Tm +0.1411 Tw +[( structure)]TJ +-35.6009 -1.2222 TD +0 Tw +(would be; in addition, access is faster.)Tj +0 -2 TD +0.0333 Tw +(Since the user data type must be set up at )Tj +/TT14 1 Tf +18.869 0 TD +0 Tw +(run)Tj +/TT8 1 Tf +1.5015 0 TD +0.0333 Tw +(-time, the )Tj +/TT10 1 Tf +6 0 0 6 397.9769 383.54 Tm +0 Tw +(RECORDS)Tj +/TT8 1 Tf +9 0 0 9 423.181 383.54 Tm +0.0333 Tw +[( file package command will)]TJ +-27.6868 -1.2222 TD +0.1389 Tw +(dump a )Tj +/TT10 1 Tf +6 0 0 6 209.7798 372.54 Tm +0 Tw +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 263.7886 372.54 Tm +0.1389 Tw +[( expression as well as the )]TJ +/TT10 1 Tf +6 0 0 6 373.5889 372.54 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 402.3936 372.54 Tm +0.1389 Tw +[( declaration itself. If the record)]TJ +-25.3771 -1.2222 TD +0.0689 Tw +(declaration is otherwise not needed at runtime, it can be kept out of the compiled file by)Tj +T* +0.0389 Tw +(using a)Tj +/TT10 1 Tf +6 0 0 6 203.2045 350.54 Tm +0.0933 Tw +[( \(DECLARE: DONTCOPY --\))]TJ +/TT8 1 Tf +9 0 0 9 287.698 350.54 Tm +0.0389 Tw +[( expression \(see Chapter 17\), but it is still necessary to ensure)]TJ +-12.6331 -1.2222 TD +0.0744 Tw +[(that the datatype is properly initialized. For this, one can use the )]TJ +/TT10 1 Tf +6 0 0 6 443.253 339.54 Tm +0 Tw +(INITRECORDS)Tj +/TT8 1 Tf +9 0 0 9 482.8594 339.54 Tm +0.0744 Tw +[( file package)]TJ +-34.3177 -1.2222 TD +0 Tw +(command \(see Chapter 17\), which will dump only the )Tj +/TT10 1 Tf +6 0 0 6 390.7954 328.54 Tm +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 444.8042 328.54 Tm +( expression.)Tj +/TT18 1 Tf +-30.0894 -2 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.07 Tw +[(: When defining a new data type, it is sometimes useful to call the function )]TJ +/TT10 1 Tf +6 0 0 6 505.1664 310.54 Tm +0 Tw +(DEFPRINT)Tj +/TT8 1 Tf +9 0 0 9 174 299.54 Tm +0.1089 Tw +[(\(see Chapter 25\) to specify how instances of the new data type should be printed. This)]TJ +0 -1.2222 TD +0.0233 Tw +(can be specified in the record declaration by including an )Tj +/TT10 1 Tf +6 0 0 6 406.0306 288.54 Tm +0 Tw +(INIT)Tj +/TT8 1 Tf +9 0 0 9 420.433 288.54 Tm +0.0233 Tw +[( record specification \(see the)]TJ +-27.3814 -1.2222 TD +0.2133 Tw +(Optional Record Specifications section below\), e.g. )Tj +/TT10 1 Tf +6 0 0 6 388.521 277.54 Tm +0.5117 Tw +(\(DATATYPE QV.TYPE ... \(INIT \(DEFPRINT)Tj +-35.7535 -1.8333 TD +0 Tw +(QV.TYPE \(FUNCTION PRINT.QV.TYPE\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 303.6211 266.54 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 174 248.54 Tm +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 202.8047 248.54 Tm +( declarations cannot be used within local record declarations \(see Chapter 21\).)Tj +/TT12 1 Tf +-5.8672 -2.4822 TD +(TYPERECORD)Tj +/TT6 1 Tf +10 0 0 10 204.0088 226.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 477.22 226.2 Tm +([Record Type])Tj +-33.6911 -1.8444 TD +0.0822 Tw +(Similar to )Tj +/TT10 1 Tf +6 0 0 6 216.4106 209.6 Tm +0 Tw +(RECORD)Tj +/TT8 1 Tf +9 0 0 9 238.0142 209.6 Tm +0.0822 Tw +(, but the record name is added to the front of the list structure to signify)Tj +-7.1127 -1.2222 TD +0.07 Tw +[(what type of record it is. This type field is used in the translation of )]TJ +/TT10 1 Tf +6 0 0 6 464.394 198.6 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 482.3969 198.6 Tm +0.07 Tw +[( expressions.)]TJ +/TT10 1 Tf +6 0 0 6 174 187.6 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 195.6035 187.6 Tm +0.0267 Tw +[( will insert an extra field containing )]TJ +/TT16 1 Tf +16.1442 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.0267 Tw +[( at the beginning of the structure,)]TJ +-25.1457 -1.2889 TD +0.2478 Tw +(and the translation of the access and storage functions will take this extra field into)Tj +0 -1.2222 TD +0.0756 Tw +[(account. For example, for )]TJ +/TT10 1 Tf +6 0 0 6 282.8336 165 Tm +0.1817 Tw +(\(TYPERECORD MSG \(FROM TO . TEXT\)\), \(fetch FROM of X\) )Tj +/TT8 1 Tf +9 0 0 9 484.5646 165 Tm +0.0756 Tw +(translates as)Tj +/TT10 1 Tf +6 0 0 6 174 154 Tm +0 Tw +(\(CADR X\))Tj +/TT8 1 Tf +9 0 0 9 202.8047 154 Tm +(, not )Tj +/TT10 1 Tf +6 0 0 6 222.6416 154 Tm +(\(CAR X\))Tj +/TT8 1 Tf +9 0 0 9 247.8457 154 Tm +(.)Tj +/TT12 1 Tf +-10.8717 -2.3333 TD +(ASSOCRECORD)Tj +/TT8 1 Tf +6.6 0 TD +[( )-29257.8([Record Type])]TJ +-3.9333 -1.8444 TD +(Describes lists where the fields are stored in association list format:)Tj +/TT10 1 Tf +6 0 0 6 210 102 Tm +(\(\()Tj +/TT16 1 Tf +9 0 0 9 217.2012 102 Tm +(FIELDNAME)Tj +6 0 0 6 265.8 99 Tm +(1)Tj +/TT10 1 Tf +0.6 0.5 TD +( . )Tj +/TT16 1 Tf +9 0 0 9 280.2017 102 Tm +(VALUE)Tj +6 0 0 6 307.2 99 Tm +(1)Tj +/TT10 1 Tf +0.6 0.5 TD +(\) \()Tj +/TT16 1 Tf +9 0 0 9 321.6017 102 Tm +(FIELDNAME)Tj +6 0 0 6 370.2 99 Tm +(2)Tj +/TT10 1 Tf +0.6 0.5 TD +( . )Tj +/TT16 1 Tf +9 0 0 9 384.6017 102 Tm +(VALUE)Tj +6 0 0 6 411.6 99 Tm +(2)Tj +/TT10 1 Tf +0.6 0.5 TD +(\) ...\))Tj +/TT16 1 Tf +9 0 0 9 174 83.45 Tm +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1 Tw +[( is a list of symbols, the permissable field names in the association list.)]TJ +-7.8013 -1.2889 TD +0.05 Tw +(Access is done with )Tj +/TT10 1 Tf +6 0 0 6 256.4221 71.85 Tm +0 Tw +(ASSOC)Tj +/TT8 1 Tf +9 0 0 9 274.425 71.85 Tm +0.05 Tw +[( \(or )]TJ +/TT10 1 Tf +6 0 0 6 291.2903 71.85 Tm +0 Tw +(FASSOC)Tj +/TT8 1 Tf +9 0 0 9 312.8938 71.85 Tm +0.05 Tw +(, if the current CLISP declarations are )Tj +/TT10 1 Tf +6 0 0 6 467.097 71.85 Tm +0 Tw +(FAST)Tj +/TT8 1 Tf +9 0 0 9 481.4994 71.85 Tm +0.05 Tw +(, see Chapter)Tj +-34.1666 -1.2222 TD +0 Tw +(21\), storing with )Tj +/TT10 1 Tf +6 0 0 6 241.3769 60.85 Tm +(PUTASSOC)Tj +/TT8 1 Tf +9 0 0 9 270.1816 60.85 Tm +(.)Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT18 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +25 0 obj +<< +/Length 9054 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-5)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT12 1 Tf +9 0 0 9 102 569.54 Tm +(PROPRECORD)Tj +/TT8 1 Tf +6 0 TD +[( )-29857.8([Record Type])]TJ +-3.3333 -1.8444 TD +(Describes lists where the fields are stored in property list format:)Tj +/TT10 1 Tf +6 0 0 6 162 536.66 Tm +(\()Tj +/TT16 1 Tf +9 0 0 9 165.6006 536.66 Tm +(FIELDNAME)Tj +6 0 0 6 214.2 533.66 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 217.8 536.66 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 220.67 536.66 Tm +(VALUE)Tj +6 0 0 6 247.67 533.66 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 251.27 536.66 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 254.14 536.66 Tm +(FIELDNAME)Tj +6 0 0 6 302.74 533.66 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 306.34 536.66 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 309.21 536.66 Tm +(VALUE)Tj +6 0 0 6 336.21 533.66 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 339.81 536.66 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 342.68 536.66 Tm +(...\))Tj +/TT16 1 Tf +9 0 0 9 126 518.11 Tm +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1744 Tw +[( is a list of symbols, the permissable field names in the property list.)]TJ +-7.8013 -1.2889 TD +0 Tw +(Access is done with )Tj +/TT10 1 Tf +6 0 0 6 206.6221 506.51 Tm +(LISTGET)Tj +/TT8 1 Tf +9 0 0 9 231.8262 506.51 Tm +(, storing with )Tj +/TT10 1 Tf +6 0 0 6 287.2061 506.51 Tm +(LISTPUT)Tj +/TT8 1 Tf +9 0 0 9 312.4102 506.51 Tm +(.)Tj +-20.7122 -2 TD +(Both )Tj +/TT10 1 Tf +6 0 0 6 147.9245 488.51 Tm +(ASSOCRECORD)Tj +/TT8 1 Tf +9 0 0 9 187.5309 488.51 Tm +0.1211 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 209.4467 488.51 Tm +0 Tw +(PROPRECORD)Tj +/TT8 1 Tf +9 0 0 9 245.4526 488.51 Tm +0.1211 Tw +[( are useful for defining data structures where many of the)]TJ +-13.2725 -1.2222 TD +0.1367 Tw +(fields are )Tj +/TT10 1 Tf +6 0 0 6 167.1846 477.51 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 177.9863 477.51 Tm +0.1367 Tw +(. )Tj +/TT10 1 Tf +6 0 0 6 187.1964 477.51 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 208.7999 477.51 Tm +0.1367 Tw +(ing one these record types only stores those fields that are non-)Tj +/TT10 1 Tf +6 0 0 6 472.8709 477.51 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 483.6727 477.51 Tm +(.)Tj +-39.7414 -1.2222 TD +0.1456 Tw +(Note, however, that with the record declaration )Tj +/TT10 1 Tf +6 0 0 6 326.8814 466.51 Tm +0.3483 Tw +(\(PROPRECORD FIE \(H I J\)\) )Tj +/TT8 1 Tf +9 0 0 9 427.3461 466.51 Tm +0.1456 Tw +(the expression)Tj +/TT10 1 Tf +6 0 0 6 126 455.51 Tm +0.225 Tw +(\(create FIE\))Tj +/TT8 1 Tf +9 0 0 9 170.557 455.51 Tm +0.0944 Tw +[( would still construct )]TJ +/TT10 1 Tf +6 0 0 6 260.3359 455.51 Tm +0.225 Tw +(\(H NIL\))Tj +/TT8 1 Tf +9 0 0 9 286.89 455.51 Tm +0.0944 Tw +(, since a later operation of )Tj +/TT10 1 Tf +6 0 0 6 396.4436 455.51 Tm +0.225 Tw +(\(replace J of X with Y\))Tj +/TT8 1 Tf +9 0 0 9 126 444.51 Tm +0 Tw +(could not possibly change the instance of the record if it were )Tj +/TT10 1 Tf +6 0 0 6 372.2124 444.51 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 383.0142 444.51 Tm +(.)Tj +/TT12 1 Tf +-31.2238 -2.3333 TD +(ARRAYRECORD)Tj +/TT8 1 Tf +6.6 0 TD +[( )-29257.8([Record Type])]TJ +/TT10 1 Tf +6 0 0 6 126 406.91 Tm +(ARRAYRECORDs)Tj +/TT8 1 Tf +9 0 0 9 169.207 406.91 Tm +0.3133 Tw +[( are stored as arrays. )]TJ +/TT16 1 Tf +11.4786 0 TD +0 Tw +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.3133 Tw +[( is a list of field names that are)]TJ +-24.0807 -1.2889 TD +0.0156 Tw +(associated with the corresponding elements of an array. )Tj +/TT10 1 Tf +6 0 0 6 353.7585 395.31 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 364.5603 395.31 Tm +0.0156 Tw +[( can be used as a place marker)]TJ +-26.5067 -1.2222 TD +0.1833 Tw +[(for an unnamed field \(element\). Positive integers can be used as abbreviation for the)]TJ +T* +0.0378 Tw +(corresponding number of )Tj +/TT10 1 Tf +6 0 0 6 231.2011 373.31 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 242.0029 373.31 Tm +0.0378 Tw +[(s. For example, )]TJ +/TT10 1 Tf +6 0 0 6 307.8922 373.31 Tm +0 Tw +(\(ARRAYRECORD)Tj +/TT8 1 Tf +9 0 0 9 351.0992 373.31 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 353.6892 373.31 Tm +0.0917 Tw +(\(ORG DEST NIL ID 3 TEXT\)\))Tj +/TT8 1 Tf +9 0 0 9 446.4539 373.31 Tm +0.0378 Tw +[( describes)]TJ +-35.606 -1.2222 TD +0.1044 Tw +(an eight-element array, with )Tj +/TT10 1 Tf +6 0 0 6 244.9406 362.31 Tm +0 Tw +(ORG)Tj +/TT8 1 Tf +9 0 0 9 255.7424 362.31 Tm +0.1044 Tw +[( corresponding to the first element, )]TJ +/TT10 1 Tf +6 0 0 6 403.1236 362.31 Tm +0 Tw +(ID)Tj +/TT8 1 Tf +9 0 0 9 410.3248 362.31 Tm +0.1044 Tw +[( to the fourth, and)]TJ +/TT10 1 Tf +6 0 0 6 126 351.31 Tm +0 Tw +(TEXT)Tj +/TT8 1 Tf +9 0 0 9 140.4023 351.31 Tm +( to the eighth.)Tj +/TT10 1 Tf +6 0 0 6 126 333.31 Tm +(ARRAYRECORD)Tj +/TT8 1 Tf +9 0 0 9 165.6064 333.31 Tm +0.1478 Tw +[( only creates arrays of pointers. Other kinds of arrays must be implemented)]TJ +-4.4007 -1.2222 TD +0 Tw +(with )Tj +/TT10 1 Tf +6 0 0 6 146.5488 322.31 Tm +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 178.9541 322.31 Tm +( \(see below\).)Tj +/TT12 1 Tf +-8.5505 -2.3333 TD +(HASHLINK)Tj +/TT8 1 Tf +4.8 0 TD +[( )-31057.8([Record Type])]TJ +-2.1333 -1.8444 TD +(The )Tj +/TT10 1 Tf +6 0 0 6 143.3944 284.71 Tm +(HASHLINK)Tj +/TT8 1 Tf +9 0 0 9 172.1991 284.71 Tm +0.0089 Tw +[( record type can be used with any type of data object: it specifies that the value)]TJ +-5.1332 -1.2222 TD +0.0056 Tw +[(of a single field can be accessed by hashing the data object in a given hash array. Since the)]TJ +/TT10 1 Tf +6 0 0 6 126 262.71 Tm +0 Tw +(HASHLINK)Tj +/TT8 1 Tf +9 0 0 9 154.8047 262.71 Tm +0.2056 Tw +[( record type describes an access method, rather than a data structure, )]TJ +/TT10 1 Tf +6 0 0 6 453.7943 262.71 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 475.3978 262.71 Tm +0.2056 Tw +[( is)]TJ +-38.822 -1.2222 TD +0 Tw +(meaningless for )Tj +/TT10 1 Tf +6 0 0 6 191.3818 251.71 Tm +(HASHLINK)Tj +/TT8 1 Tf +9 0 0 9 220.1865 251.71 Tm +( records.)Tj +/TT16 1 Tf +-10.4652 -2 TD +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0789 Tw +[( is either a symbol )]TJ +/TT16 1 Tf +8.6645 0 TD +0 Tw +(FIELD-NAME)Tj +/TT8 1 Tf +6.001 0 TD +0.0789 Tw +(, or a list )Tj +/TT10 1 Tf +6 0 0 6 367.2469 233.71 Tm +0 Tw +(\()Tj +/TT16 1 Tf +9 0 0 9 370.8475 233.71 Tm +(FIELD-NAME)Tj +/TT12 1 Tf +6.001 0 TD +( )Tj +/TT16 1 Tf +0.7912 0 TD +(HARRAYNAME)Tj +-33.9975 -1.2889 TD +(HARRAYSIZE)Tj +/TT10 1 Tf +6 0 0 6 180.0088 222.11 Tm +0.24 Tw +(\). )Tj +/TT16 1 Tf +9 0 0 9 197.2911 222.11 Tm +0 Tw +(HARRAYNAME)Tj +/TT8 1 Tf +6.001 0 TD +0.1 Tw +[( is a variable whose value is the hash array to be used; if)]TJ +-13.9222 -1.2889 TD +0.0144 Tw +(not given, )Tj +/TT10 1 Tf +6 0 0 6 168.3552 210.51 Tm +0 Tw +(SYSHASHARRAY)Tj +/TT8 1 Tf +9 0 0 9 211.5622 210.51 Tm +0.0144 Tw +[( is used. If the value of the variable )]TJ +/TT16 1 Tf +16.0614 0 TD +0 Tw +(HARRAYNAME)Tj +/TT8 1 Tf +6.001 0 TD +0.0144 Tw +[( is not a hash array)]TJ +-31.5693 -1.2889 TD +0.1389 Tw +(\(at the time of the record declaration\), it will be set to a new hash array with a size of)Tj +/TT16 1 Tf +0 -1.2222 TD +0 Tw +(HARRAYSIZE)Tj +/TT8 1 Tf +6.001 0 TD +(. )Tj +/TT16 1 Tf +0.75 0 TD +(HARRAYSIZE)Tj +/TT8 1 Tf +6.001 0 TD +( defaults to 100.)Tj +-12.752 -2.0667 TD +(The )Tj +/TT10 1 Tf +6 0 0 6 144.4344 169.31 Tm +(HASHLINK)Tj +/TT8 1 Tf +9 0 0 9 173.2391 169.31 Tm +0.1244 Tw +[( record type is useful as a subdeclaration to other records to add additional)]TJ +-5.2488 -1.2222 TD +0.1322 Tw +(fields to already existing data structures \(see the Optional Record Specifications section)Tj +T* +0.0767 Tw +[(below\). For example, suppose that )]TJ +/TT10 1 Tf +6 0 0 6 271.389 147.31 Tm +0 Tw +(FOO)Tj +/TT8 1 Tf +9 0 0 9 282.1908 147.31 Tm +0.0767 Tw +[( is a record declared with)]TJ +/TT10 1 Tf +6 0 0 6 386.236 147.31 Tm +0.185 Tw +[( \(RECORD FOO \(A B C\)\))]TJ +/TT8 1 Tf +9 0 0 9 467.3983 147.31 Tm +0.0767 Tw +[(. To)]TJ +-37.9332 -1.2222 TD +0 Tw +(add a new field )Tj +/TT10 1 Tf +6 0 0 6 190.0942 136.31 Tm +(BAR)Tj +/TT8 1 Tf +9 0 0 9 200.896 136.31 Tm +(, without modifying the existing data strutures, redeclare )Tj +/TT10 1 Tf +6 0 0 6 430.3477 136.31 Tm +(FOO)Tj +/TT8 1 Tf +9 0 0 9 441.1494 136.31 Tm +( with:)Tj +/TT10 1 Tf +6 0 0 6 162 123.86 Tm +(\(RECORD FOO \(A B C\) \(HASHLINK FOO \(BAR BARHARRAY\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 108.31 Tm +(Now, )Tj +/TT10 1 Tf +6 0 0 6 150.3984 108.31 Tm +(\(fetch BAR of X\))Tj +/TT8 1 Tf +9 0 0 9 208.0078 108.31 Tm +( will translate into )Tj +/TT10 1 Tf +6 0 0 6 282.4863 108.31 Tm +(\(GETHASH X BARHARRAY\))Tj +/TT8 1 Tf +9 0 0 9 358.0986 108.31 Tm +(, hashing off the existing list )Tj +/TT10 1 Tf +6 0 0 6 472.0708 108.31 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 475.6714 108.31 Tm +(.)Tj +/TT12 1 Tf +-41.519 -2.3333 TD +(ATOMRECORD)Tj +/TT8 1 Tf +6 0 TD +[( )-29857.8([Record Type])]TJ +/TT10 1 Tf +6 0 0 6 126 70.71 Tm +(ATOMRECORD)Tj +/TT8 1 Tf +9 0 0 9 162.0058 70.71 Tm +0.2656 Tw +(s are stored on the property lists of symbols. )Tj +/TT16 1 Tf +22.7102 0 TD +0 Tw +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.2656 Tw +[( is a list of)]TJ +-34.5122 -1.2889 TD +0.1933 Tw +[(property names. Accessing is performed with )]TJ +/TT10 1 Tf +6 0 0 6 324.1038 59.11 Tm +0 Tw +(GETPROP)Tj +/TT8 1 Tf +9 0 0 9 349.3079 59.11 Tm +0.1933 Tw +(, storing with )Tj +/TT10 1 Tf +6 0 0 6 409.9078 59.11 Tm +0 Tw +(PUTPROP)Tj +/TT8 1 Tf +9 0 0 9 435.1119 59.11 Tm +0.1933 Tw +[(. The )]TJ +/TT10 1 Tf +6 0 0 6 464.3964 59.11 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 126 48.11 Tm +(expression is not initially defined for )Tj +/TT10 1 Tf +6 0 0 6 274.3638 48.11 Tm +(ATOMRECORD)Tj +/TT8 1 Tf +9 0 0 9 310.3696 48.11 Tm +( records.)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +29 0 obj +<< +/Length 8258 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 569.54 Tm +(BLOCKRECORD)Tj +/TT8 1 Tf +6.6 0 TD +[( )-29257.8([Record Type])]TJ +/TT10 1 Tf +6 0 0 6 174 552.94 Tm +(BLOCKRECORD )Tj +/TT8 1 Tf +9 0 0 9 218.277 552.94 Tm +0.0744 Tw +(is used in low-level system programming to overlay an organized structure)Tj +-4.9197 -1.2222 TD +0.0567 Tw +[(over an arbitrary piece of raw storage. )]TJ +/TT16 1 Tf +18.1164 0 TD +0 Tw +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0567 Tw +[( is interpreted exactly as with a)]TJ +/TT10 1 Tf +6 0 0 6 174 530.34 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 202.8047 530.34 Tm +0.32 Tw +[( declaration, except that fields are )]TJ +/TT14 1 Tf +17.0172 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.32 Tw +[( automatically rearranged to maximize)]TJ +-21.5507 -1.2222 TD +0.0589 Tw +[(storage efficiency. Like an )]TJ +/TT10 1 Tf +6 0 0 6 284.4435 519.34 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 316.8487 519.34 Tm +0.0589 Tw +[( record, a )]TJ +/TT10 1 Tf +6 0 0 6 357.7654 519.34 Tm +0 Tw +(BLOCKRECORD)Tj +/TT8 1 Tf +9 0 0 9 397.3718 519.34 Tm +0.0589 Tw +[( does not have concrete instances;)]TJ +-24.8191 -1.2222 TD +0.1744 Tw +[(it merely provides a way of interpreting some existing block of storage. So you cant)]TJ +T* +0.3289 Tw +(create an instance of a )Tj +/TT10 1 Tf +6 0 0 6 278.4572 497.34 Tm +0 Tw +(BLOCKRECORD)Tj +/TT8 1 Tf +9 0 0 9 318.0637 497.34 Tm +0.3289 Tw +[( \(unless the declaration includes an explicit )]TJ +/TT10 1 Tf +6 0 0 6 512.3369 497.34 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 174 486.34 Tm +(expression\), nor is there a default )Tj +/TT10 1 Tf +6 0 0 6 308.6572 486.34 Tm +(type?)Tj +/TT8 1 Tf +9 0 0 9 326.6602 486.34 Tm +( expression for a )Tj +/TT10 1 Tf +6 0 0 6 394.2568 486.34 Tm +(BLOCKRECORD)Tj +/TT8 1 Tf +9 0 0 9 433.8633 486.34 Tm +(.)Tj +/TT18 1 Tf +-28.8737 -2 TD +(Warning:)Tj +/TT8 1 Tf +4.25 0 TD +0.0178 Tw +[( Exercise caution in using )]TJ +/TT10 1 Tf +6 0 0 6 319.0479 468.34 Tm +0 Tw +(BLOCKRECORD)Tj +/TT8 1 Tf +9 0 0 9 358.6543 468.34 Tm +0.0178 Tw +[( declarations, as they let you fetch and store)]TJ +-20.5171 -1.2222 TD +0.3144 Tw +(arbitrary data in arbitrary locations, thereby evading Medleys normal type system.)Tj +T* +0.0844 Tw +(Except in very specialized situations, a )Tj +/TT10 1 Tf +6 0 0 6 334.4296 446.34 Tm +0 Tw +(BLOCKRECORD)Tj +/TT8 1 Tf +9 0 0 9 374.0361 446.34 Tm +0.0844 Tw +[( should never contain )]TJ +/TT10 1 Tf +6 0 0 6 465.5248 446.34 Tm +0 Tw +(POINTER)Tj +/TT8 1 Tf +9 0 0 9 490.7289 446.34 Tm +0.0844 Tw +[( or )]TJ +/TT10 1 Tf +6 0 0 6 505.2172 446.34 Tm +0 Tw +(XPOINTER)Tj +/TT8 1 Tf +9 0 0 9 174 435.34 Tm +0.1189 Tw +[(fields, nor be used to overlay an area of storage that contains pointers. Such use could)]TJ +T* +0.0589 Tw +[(compromise the garbage collector and storage allocation system. You are responsible for)]TJ +T* +0.01 Tw +(ensuring that all )Tj +/TT10 1 Tf +6 0 0 6 241.5766 413.34 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 259.5796 413.34 Tm +0.01 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 279.4954 413.34 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 304.6995 413.34 Tm +0.01 Tw +[( expressions are performed only on suitable objects, as no)]TJ +-14.5222 -1.2222 TD +0 Tw +(type testing is performed.)Tj +0 -2 TD +0.0022 Tw +(A typical use for a )Tj +/TT10 1 Tf +6 0 0 6 248.952 384.34 Tm +0 Tw +(BLOCKRECORD)Tj +/TT8 1 Tf +9 0 0 9 288.5585 384.34 Tm +0.0022 Tw +( in user code is to overlay a non-pointer portion of an existing)Tj +/TT10 1 Tf +6 0 0 6 174 373.34 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 202.8047 373.34 Tm +0.0889 Tw +[(. For this use, the )]TJ +/TT10 1 Tf +6 0 0 6 279.7233 373.34 Tm +0 Tw +(LOCF)Tj +/TT8 1 Tf +9 0 0 9 294.1257 373.34 Tm +0.0889 Tw +[( macro is useful. )]TJ +/TT10 1 Tf +6 0 0 6 367.5637 373.34 Tm +0 Tw +(\(LOCF)Tj +/TT12 1 Tf +9 0 0 9 385.5666 373.34 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 392.8875 373.34 Tm +(\(fetch)Tj +/TT12 1 Tf +9 0 0 9 414.491 373.34 Tm +( )Tj +/TT16 1 Tf +0.8134 0 TD +(FIELD)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +6 0 0 6 456.1371 373.34 Tm +(of)Tj +/TT12 1 Tf +9 0 0 9 463.3383 373.34 Tm +( )Tj +/TT16 1 Tf +0.8134 0 TD +(DATUM)Tj +/TT10 1 Tf +6 0 0 6 497.6636 373.34 Tm +(\)\))Tj +/TT8 1 Tf +9 0 0 9 504.8647 373.34 Tm +0.0889 Tw +[( can be)]TJ +-36.7628 -1.2889 TD +0.1189 Tw +(used to refer to the storage that begins at the first word that contains )Tj +/TT16 1 Tf +32.1366 0 TD +0 Tw +(FIELD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1189 Tw +[( of )]TJ +/TT16 1 Tf +1.6167 0 TD +0 Tw +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-39.7543 -1.2889 TD +0.2089 Tw +(For example, to define a new kind of Ethernet packet, you could overlay the body)Tj +0 -1.2222 TD +0 Tw +(portion of the )Tj +/TT10 1 Tf +6 0 0 6 230.729 339.14 Tm +(ETHERPACKET)Tj +/TT8 1 Tf +9 0 0 9 270.3354 339.14 Tm +( datatype declaration as follows:)Tj +/TT10 1 Tf +6 0 0 6 198 326.69 Tm +(\(ACCESSFNS MYPACKET)Tj +0 -1 TD +(\(\(MYBASE \(LOCF \(fetch \(ETHERPACKET EPBODY\) of DATUM\)\)\)\))Tj +T* +( \(BLOCKRECORD MYBASE)Tj +T* +( \(\(MYTYPE WORD\) \(MYLENGTH WORD\) \(MYSTATUS BYTE\))Tj +T* +( \(MYERRORCODE BYTE\) \(MYDATA INTEGER\)\)\))Tj +T* +( \(TYPE? \(type? ETHERPACKET DATUM\)\)\))Tj +/TT8 1 Tf +9 0 0 9 174 281.14 Tm +0.0667 Tw +(With this declaration in effect, the expression )Tj +/TT10 1 Tf +6 0 0 6 359.804 281.14 Tm +0.16 Tw +(\(fetch MYLENGTH of PACKET\))Tj +/TT8 1 Tf +9 0 0 9 456.2992 281.14 Tm +0.0667 Tw +[( would retrieve the)]TJ +-31.3666 -1.2222 TD +0 Tw +(second 16-bit field beyond the place inside )Tj +/TT10 1 Tf +6 0 0 6 345.457 270.14 Tm +(PACKET)Tj +/TT8 1 Tf +9 0 0 9 367.0605 270.14 Tm +( where the )Tj +/TT10 1 Tf +6 0 0 6 411.2168 270.14 Tm +(EPBODY)Tj +/TT8 1 Tf +9 0 0 9 432.8203 270.14 Tm +( field starts.)Tj +/TT12 1 Tf +-31.4245 -2.3333 TD +(ACCESSFNS)Tj +/TT8 1 Tf +5.4 0 TD +[( )-30457.8([Record Type])]TJ +/TT10 1 Tf +6 0 0 6 174 232.54 Tm +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 206.4053 232.54 Tm +0.0644 Tw +[( lets you specify arbitrary functions to fetch and store data. For each field name,)]TJ +-3.6006 -1.2222 TD +0.0933 Tw +[(you specify how it is to be accessed and set. This lets you use arbitrary data structures,)]TJ +T* +0.0167 Tw +[(with complex access methods. Most often, )]TJ +/TT10 1 Tf +6 0 0 6 347.0915 210.54 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 379.4968 210.54 Tm +0.0167 Tw +[( are useful when you can compute one)]TJ +-22.833 -1.2222 TD +0.24 Tw +[(fields value from other fields. If youre representing a time period by its start and)]TJ +T* +0.1111 Tw +(duration, you could add an )Tj +/TT10 1 Tf +6 0 0 6 290.2168 188.54 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 322.622 188.54 Tm +0.1111 Tw +[( definition for the ending time that did the obvious)]TJ +-16.5136 -1.2222 TD +0 Tw +(addition.)Tj +/TT16 1 Tf +0 -2 TD +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0656 Tw +[( is a list of elements of the form )]TJ +/TT10 1 Tf +6 0 0 6 375.895 159.54 Tm +0 Tw +(\()Tj +/TT16 1 Tf +9 0 0 9 379.4955 159.54 Tm +(FIELD-NAME)Tj +/TT12 1 Tf +6.001 0 TD +( )Tj +/TT16 1 Tf +0.7579 0 TD +(ACCESSDEF)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT16 1 Tf +0.7579 0 TD +(SETDEF)Tj +/TT10 1 Tf +6 0 0 6 528.1593 159.54 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 531.7599 159.54 Tm +(.)Tj +/TT16 1 Tf +-39.7511 -1.2889 TD +(ACCESSDEF)Tj +/TT8 1 Tf +5.4009 0 TD +0.24 Tw +[( should be a function of one argument, the datum, and will be used for)]TJ +-5.4009 -1.2889 TD +0.1922 Tw +(accessing the value of the field. )Tj +/TT16 1 Tf +15.5853 0 TD +0 Tw +(SETDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.1922 Tw +[( should be a function of two arguments, the)]TJ +-19.1859 -1.2889 TD +0.1056 Tw +(datum and the new value, and will be used for storing a new value in a field. )Tj +/TT16 1 Tf +36.3897 0 TD +0 Tw +(SETDEF)Tj +/TT8 1 Tf +-36.3897 -1.2889 TD +(may be omitted, in which case, no storing operations are allowed.)Tj +/TT16 1 Tf +0 -2 TD +(ACCESSDEF)Tj +/TT8 1 Tf +5.4009 0 TD +0.0156 Tw +[( and/or )]TJ +/TT16 1 Tf +3.7709 0 TD +0 Tw +(SETDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0156 Tw +[( may also be a form written in terms of variables )]TJ +/TT10 1 Tf +6 0 0 6 485.1511 95.14 Tm +0 Tw +(DATUM)Tj +/TT8 1 Tf +9 0 0 9 503.154 95.14 Tm +0.0156 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 523.1698 95.14 Tm +0 Tw +(\(in)Tj +/TT16 1 Tf +9 0 0 9 174 83.54 Tm +(SETDEF)Tj +/TT10 1 Tf +6 0 0 6 206.4053 83.54 Tm +(\) NEWVALUE)Tj +/TT8 1 Tf +9 0 0 9 242.4111 83.54 Tm +(. For example, given the declaration)Tj +/TT10 1 Tf +6 0 0 6 210 70.49 Tm +([ACCESSFNS FOO)Tj +0 -1 TD +(\(\(FIRSTCHAR \(NTHCHAR DATUM 1\) \(RPLSTRING DATUM 1 NEWVALUE\)\) \(RESTCHARS \(SUBSTRING DATUM 2])Tj +ET +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT18 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +32 0 obj +<< +/Length 8776 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-7)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT10 1 Tf +6 0 0 6 126 569.54 Tm +0.0567 Tw +(\(replace \(FOO FIRSTCHAR\) of X with Y\))Tj +/TT8 1 Tf +9 0 0 9 261.2617 569.54 Tm +0.0233 Tw +[( would translate to )]TJ +/TT10 1 Tf +6 0 0 6 339.3224 569.54 Tm +0.0567 Tw +(\(RPLSTRING X 1 Y\))Tj +/TT8 1 Tf +9 0 0 9 401.5523 569.54 Tm +0.0233 Tw +[(. Since no )]TJ +/TT16 1 Tf +4.7921 0 TD +0 Tw +(SETDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0233 Tw +[( is)]TJ +-39.0096 -1.2889 TD +0.1611 Tw +(given for the )Tj +/TT10 1 Tf +6 0 0 6 183.3085 557.9399 Tm +0 Tw +(RESTCHARS)Tj +/TT8 1 Tf +9 0 0 9 215.7137 557.9399 Tm +0.1611 Tw +[( field, attempting to perform )]TJ +/TT10 1 Tf +6 0 0 6 338.8783 557.9399 Tm +0.3867 Tw +(\(replace \(FOO RESTCHARS\) of X with Y\))Tj +/TT8 1 Tf +9 0 0 9 126 546.94 Tm +0.0178 Tw +(would generate an error, )Tj +/TT10 1 Tf +6 0 0 6 227.6483 546.94 Tm +0.0433 Tw +(Replace undefined for field)Tj +/TT8 1 Tf +9 0 0 9 325.6441 546.94 Tm +0.0178 Tw +[(. Note that )]TJ +/TT10 1 Tf +6 0 0 6 372.7827 546.94 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 405.1879 546.94 Tm +0.0178 Tw +[( do not have a )]TJ +/TT10 1 Tf +6 0 0 6 464.3693 546.94 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 126 535.94 Tm +0.2656 Tw +[(definition. However, you may supply one in the defaults or subdeclarations of the)]TJ +0 -1.2222 TD +0.3989 Tw +[(declaration, as described below. Attempting to )]TJ +/TT10 1 Tf +6 0 0 6 341.4703 524.9399 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 363.0739 524.9399 Tm +0.3989 Tw +[( an )]TJ +/TT10 1 Tf +6 0 0 6 384.4921 524.9399 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 416.8974 524.9399 Tm +0.3989 Tw +[( record without)]TJ +-32.3219 -1.2222 TD +0 Tw +(specifying a create definition will cause an error )Tj +/TT10 1 Tf +6 0 0 6 319.1484 513.94 Tm +(Create not defined for this record.)Tj +/TT16 1 Tf +9 0 0 9 126 495.94 Tm +(ACCESSDEF)Tj +/TT8 1 Tf +5.4009 0 TD +0.2611 Tw +[( and )]TJ +/TT16 1 Tf +2.7151 0 TD +0 Tw +(SETDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.2611 Tw +[( can also be a property list which specify )]TJ +/TT10 1 Tf +6 0 0 6 416.0492 495.94 Tm +0 Tw +(FAST)Tj +/TT8 1 Tf +9 0 0 9 430.4515 495.94 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 437.3016 495.94 Tm +(STANDARD)Tj +/TT8 1 Tf +9 0 0 9 466.1063 495.94 Tm +0.2611 Tw +[( and)]TJ +/TT10 1 Tf +6 0 0 6 126 484.34 Tm +0 Tw +(UNDOABLE)Tj +/TT8 1 Tf +9 0 0 9 154.8047 484.34 Tm +( versions of the )Tj +/TT10 1 Tf +6 0 0 6 217.5498 484.34 Tm +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 249.9551 484.34 Tm +( forms, e.g.)Tj +/TT10 1 Tf +6 0 0 6 162 471.89 Tm +([ACCESSFNS LITATOM)Tj +2 -1 TD +( \(\(DEF \(STANDARD GETD FAST FGETD\))Tj +T* +( \(STANDARD PUTD UNDOABLE /PUTD])Tj +/TT8 1 Tf +9 0 0 9 126 444.34 Tm +0.0822 Tw +(means if )Tj +/TT10 1 Tf +6 0 0 6 163.4053 444.34 Tm +0 Tw +(FAST)Tj +/TT8 1 Tf +9 0 0 9 177.8076 444.34 Tm +0.0822 Tw +[( declaration is in effect, use )]TJ +/TT10 1 Tf +6 0 0 6 292.0714 444.34 Tm +0 Tw +(FGETD)Tj +/TT8 1 Tf +9 0 0 9 310.0743 444.34 Tm +0.0822 Tw +[( for fetching, if )]TJ +/TT10 1 Tf +6 0 0 6 373.7052 444.34 Tm +0 Tw +(UNDOABLE)Tj +/TT8 1 Tf +9 0 0 9 402.5099 444.34 Tm +0.0822 Tw +(, use )Tj +/TT10 1 Tf +6 0 0 6 424.2926 444.34 Tm +0 Tw +(/PUTD)Tj +/TT8 1 Tf +9 0 0 9 442.2955 444.34 Tm +0.0822 Tw +[( for saving)]TJ +-35.144 -1.2222 TD +0 Tw +(\(see CLISP declarations, see Chapter 21\).)Tj +/TT16 1 Tf +0 -2 TD +(SETDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0644 Tw +[( forms should be written so that they return the new value, to be consistant with)]TJ +/TT10 1 Tf +6 0 0 6 126 403.74 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 151.2041 403.74 Tm +( operations for other record types. The )Tj +/TT10 1 Tf +6 0 0 6 308.4492 403.74 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 333.6533 403.74 Tm +( does not enforce this, though.)Tj +/TT10 1 Tf +6 0 0 6 126 385.74 Tm +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 158.4053 385.74 Tm +0.0667 Tw +[( let you use data structures not specified by one of the built-in record types. For)]TJ +-3.6006 -1.2222 TD +0.1511 Tw +(example, one possible representation of a data structure is to store the fields in )Tj +/TT14 1 Tf +36.9925 0 TD +0 Tw +(parallel)Tj +/TT8 1 Tf +-36.9925 -1.2222 TD +0.2344 Tw +(arrays, especially if the number of instances required is known, and they neednt be)Tj +T* +0.0844 Tw +[(garbage collected. To implement )]TJ +/TT10 1 Tf +6 0 0 6 264.1144 352.74 Tm +0 Tw +(LINK)Tj +/TT8 1 Tf +9 0 0 9 278.5168 352.74 Tm +0.0844 Tw +[( with two fields )]TJ +/TT10 1 Tf +6 0 0 6 346.0685 352.74 Tm +0 Tw +(FROM)Tj +/TT8 1 Tf +9 0 0 9 360.4708 352.74 Tm +0.0844 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 381.7267 352.74 Tm +0 Tw +(TO)Tj +/TT8 1 Tf +9 0 0 9 388.9279 352.74 Tm +0.0844 Tw +(, youd have two arrays)Tj +/TT10 1 Tf +6 0 0 6 126 341.74 Tm +0 Tw +(FROMARRAY)Tj +/TT8 1 Tf +9 0 0 9 158.4053 341.74 Tm +0.0189 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 178.4811 341.74 Tm +0 Tw +(TOARRAY)Tj +/TT8 1 Tf +9 0 0 9 203.6852 341.74 Tm +0.0189 Tw +[(. The representation of an instance of )]TJ +/TT10 1 Tf +6 0 0 6 365.2171 341.74 Tm +0 Tw +(LINK)Tj +/TT8 1 Tf +9 0 0 9 379.6194 341.74 Tm +0.0189 Tw +[( would be an integer, used)]TJ +-28.1799 -1.2222 TD +0 Tw +(to index into the arrays. This can be accomplished with the declaration:)Tj +/TT10 1 Tf +6 0 0 6 162 318.29 Tm +([ACCESSFNS LINK)Tj +0 -1 TD +( \(\(FROM \(ELT FROMARRAY DATUM\))Tj +T* +( \(SETA FROMARRAY DATUM NEWVALUE\)\))Tj +T* +( \(TO \(ELT TOARRAY DATUM\))Tj +T* +( \(SETA TOARRAY DATUM NEWVALUE\)\)\))Tj +T* +( \(CREATE \(PROG1 \(SETQ LINKCNT \(ADD1 LINKCNT\)\))Tj +T* +( \(SETA FROMARRAY LINKCNT FROM\))Tj +T* +( \(SETA TOARRAY LINKCNT TO\)\)\))Tj +T* +( \(INIT \(PROGN)Tj +T* +( \(SETQ FROMARRAY \(ARRAY 100\)\))Tj +T* +( \(SETQ TOARRAY \(ARRAY 100\)\))Tj +T* +( \(SETQ LINKCNT 0\)])Tj +/TT8 1 Tf +9 0 0 9 126 236.74 Tm +0.09 Tw +(To create a new )Tj +/TT10 1 Tf +6 0 0 6 193.8308 236.74 Tm +0 Tw +(LINK)Tj +/TT8 1 Tf +9 0 0 9 208.2332 236.74 Tm +0.09 Tw +[(, a counter is incremented and the new elements stored. \(Note: The)]TJ +/TT10 1 Tf +6 0 0 6 126 225.74 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 147.6035 225.74 Tm +( form given the declaration probably should include a test for overflow.\))Tj +/TT4 1 Tf +10 0 0 10 78 203.4 Tm +(Optional Record Specifications)Tj +/TT8 1 Tf +9 0 0 9 78 187.74 Tm +0.0789 Tw +(After the )Tj +/TT16 1 Tf +4.356 0 TD +0 Tw +(RECORD-FIELDS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0789 Tw +[( item in a record declaration expression there can be an arbitrary number)]TJ +-12.1573 -1.2889 TD +(of additional expressions in )Tj +/TT16 1 Tf +12.777 0 TD +0 Tw +(RECORD-TAIL)Tj +/TT8 1 Tf +6.6011 0 TD +0.0789 Tw +[(. These expressions can be used to specify default values)]TJ +-19.3781 -1.2889 TD +0.1178 Tw +(for record fields, special )Tj +/TT10 1 Tf +6 0 0 6 179.9084 164.54 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 201.512 164.54 Tm +0.1178 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 223.3678 164.54 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 241.3707 164.54 Tm +0.1178 Tw +[( forms, and subdeclarations. The following expressions are)]TJ +-18.1523 -1.2222 TD +0 Tw +(permitted: )Tj +/TT16 1 Tf +3.4756 -2 TD +(FIELD-NAME)Tj +/TT10 1 Tf +6 0 0 6 163.2888 135.54 Tm +( )Tj +/TT19 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( )Tj +/TT16 1 Tf +9 0 0 9 176.4108 135.54 Tm +(FORM)Tj +/TT8 1 Tf +3.0655 0 TD +0.0867 Tw +(Allows you to specify within the record declaration the default value)Tj +0 -1.2889 TD +0.0189 Tw +(to be stored in )Tj +/TT16 1 Tf +6.6337 0 TD +0 Tw +(FIELD-NAME)Tj +/TT8 1 Tf +6.001 0 TD +0.0189 Tw +[( by a )]TJ +/TT10 1 Tf +6 0 0 6 339.4561 123.94 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 361.0596 123.94 Tm +0.0189 Tw +[( \(if no value is given within the)]TJ +/TT10 1 Tf +6 0 0 6 204 112.34 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 225.6035 112.34 Tm +0.0144 Tw +[( expression itself\). Note that )]TJ +/TT16 1 Tf +12.967 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0144 Tw +[( is evaluated at )]TJ +/TT10 1 Tf +6 0 0 6 426.4855 112.34 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 448.0891 112.34 Tm +0.0144 Tw +[( time, not)]TJ +-27.121 -1.2889 TD +0 Tw +(when the declaration is made.)Tj +/TT10 1 Tf +6 0 0 6 144 82.74 Tm +(\(CREATE )Tj +/TT16 1 Tf +9 0 0 9 172.8047 82.74 Tm +(FORM)Tj +/TT10 1 Tf +6 0 0 6 194.4082 82.74 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 204 82.74 Tm +0.5189 Tw +(Defines the manner in which )Tj +/TT10 1 Tf +6 0 0 6 344.5829 82.74 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 366.1864 82.74 Tm +0.5189 Tw +[( of this record should be)]TJ +-18.0207 -1.2889 TD +0.0278 Tw +[(performed. This provides a way of specifying how )]TJ +/TT10 1 Tf +6 0 0 6 411.7295 71.14 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 444.1348 71.14 Tm +0.0278 Tw +[( should be)]TJ +-26.6816 -1.2222 TD +0.1144 Tw +(created or overriding the usual definition of )Tj +/TT10 1 Tf +6 0 0 6 388.103 60.14 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 409.7065 60.14 Tm +0.1144 Tw +[(. If )]TJ +/TT16 1 Tf +2.0133 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1144 Tw +[( contains)]TJ +-27.2699 -1.2889 TD +0.08 Tw +(the field-names of the declaration as variables, the forms given in the)Tj +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT19 34 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +36 0 obj +<< +/Length 6815 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +6 0 0 6 252 569.54 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 273.6035 569.54 Tm +0.03 Tw +[( operation will be substituted in. If the word )]TJ +/TT10 1 Tf +6 0 0 6 456.6419 569.54 Tm +0 Tw +(DATUM)Tj +/TT8 1 Tf +9 0 0 9 474.6448 569.54 Tm +0.03 Tw +[( appears in the)]TJ +-24.7383 -1.2222 TD +0.1478 Tw +(create form, the )Tj +/TT14 1 Tf +7.6103 0 TD +0 Tw +(original)Tj +/TT8 1 Tf +3.1665 0 TD +( )Tj +/TT10 1 Tf +6 0 0 6 352.5714 558.54 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 374.175 558.54 Tm +0.1478 Tw +[( definition is inserted. This effectively)]TJ +-13.575 -1.2222 TD +0 Tw +(allows you to advise the create.)Tj +/TT10 1 Tf +6 0 0 6 199.2 529.54 Tm +(\(INIT )Tj +/TT16 1 Tf +9 0 0 9 220.8035 529.54 Tm +(FORM)Tj +/TT10 1 Tf +6 0 0 6 242.407 529.54 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 252 529.54 Tm +0.0878 Tw +(Specifies that )Tj +/TT16 1 Tf +6.2766 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +[( should be evaluated when the record is declared.)]TJ +/TT16 1 Tf +-8.677 -1.2889 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1767 Tw +[( will also be dumped by the )]TJ +/TT10 1 Tf +6 0 0 6 397.5411 517.94 Tm +0 Tw +(INITRECORDS)Tj +/TT8 1 Tf +9 0 0 9 437.1476 517.94 Tm +0.1767 Tw +[( file package command)]TJ +-20.572 -1.2889 TD +0 Tw +(\(see Chapter 17\).)Tj +0 -2 TD +0.0533 Tw +(For example, see the example of an )Tj +/TT10 1 Tf +6 0 0 6 396.8859 488.34 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 429.2911 488.34 Tm +0.0533 Tw +[( record declaration above.)]TJ +-19.699 -1.2222 TD +0 Tw +(In this example, )Tj +/TT10 1 Tf +6 0 0 6 317.6191 477.34 Tm +(FROMARRAY)Tj +/TT8 1 Tf +9 0 0 9 350.0244 477.34 Tm +( and )Tj +/TT10 1 Tf +6 0 0 6 369.7602 477.34 Tm +(TOARRAY)Tj +/TT8 1 Tf +9 0 0 9 394.9643 477.34 Tm +( are initialized with an )Tj +/TT10 1 Tf +6 0 0 6 486.6958 477.34 Tm +(INIT)Tj +/TT8 1 Tf +9 0 0 9 501.0981 477.34 Tm +( form.)Tj +/TT10 1 Tf +6 0 0 6 195.6 459.34 Tm +(\(TYPE? )Tj +/TT16 1 Tf +9 0 0 9 220.8041 459.34 Tm +(FORM)Tj +/TT10 1 Tf +6 0 0 6 242.4076 459.34 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 252 459.34 Tm +0.1933 Tw +(Defines the manner in which )Tj +/TT10 1 Tf +6 0 0 6 377.9329 459.34 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 395.9358 459.34 Tm +0.1933 Tw +[( expressions are to be translated.)]TJ +/TT16 1 Tf +-15.9929 -1.2889 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0144 Tw +[( may either be an expression in terms of )]TJ +/TT10 1 Tf +6 0 0 6 435.4332 447.74 Tm +0 Tw +(DATUM)Tj +/TT8 1 Tf +9 0 0 9 453.4361 447.74 Tm +0.0144 Tw +[( or a function of one)]TJ +-22.3818 -1.2889 TD +0 Tw +(argument.)Tj +/TT10 1 Tf +6 0 0 6 177.6 418.14 Tm +(\(SUBRECORD )Tj +/TT16 1 Tf +9 0 0 9 217.2064 418.14 Tm +(NAME)Tj +/TT10 1 Tf +6 0 0 6 238.8099 418.14 Tm +( .)Tj +-7.2017 -1.6 TD +( )Tj +/TT16 1 Tf +9 0 0 9 199.2006 408.54 Tm +(DEFAULTS)Tj +/TT10 1 Tf +6 0 0 6 242.4076 408.54 Tm +(\))Tj +/TT16 1 Tf +9 0 0 9 252 408.54 Tm +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.1167 Tw +[( must be a field that appears in the current declaration and the)]TJ +-2.4004 -1.2889 TD +0.0244 Tw +[(name of another record. This says that, for the purposes of translating)]TJ +/TT10 1 Tf +6 0 0 6 252 385.94 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 273.6035 385.94 Tm +0.0789 Tw +[( expressions, substitute the top-level declaration of )]TJ +/TT16 1 Tf +23.2104 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0789 Tw +[( for the)]TJ +/TT10 1 Tf +6 0 0 6 252 374.34 Tm +0 Tw +(SUBRECORD)Tj +/TT8 1 Tf +9 0 0 9 284.4052 374.34 Tm +( form, adding on any defaults specified.)Tj +-3.6006 -2 TD +0.0633 Tw +[(For example: Given )]TJ +/TT10 1 Tf +6 0 0 6 336.8664 356.34 Tm +0.1517 Tw +(\(RECORD B \(E F G\)\), \(RECORD A \(B C D\) \(SUBRECORD B\)\))Tj +/TT8 1 Tf +9 0 0 9 252 345.34 Tm +0.1822 Tw +(would be treated like )Tj +/TT10 1 Tf +6 0 0 6 345.4135 345.34 Tm +0.4383 Tw +(\(RECORD A \(B C D\) \(RECORD B \(E F G\)\)\))Tj +/TT8 1 Tf +9 0 0 9 502.3052 345.34 Tm +0.1822 Tw +[( for the)]TJ +-27.8117 -1.2222 TD +0 Tw +(purposes of translating )Tj +/TT10 1 Tf +6 0 0 6 346.2758 334.34 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 367.8794 334.34 Tm +( expressions.)Tj +-20.8388 -2 TD +0.6755 Tw +[(a )675.5(subdeclaration)-668.4(If a record declaration expression occurs among the record)]TJ +7.9633 -1.2222 TD +0.5411 Tw +(specifications of another record declaration, it is known as a)Tj +T* +0.0856 Tw +[(subdeclaration. Subdeclarations are used to declare that fields of a)]TJ +T* +0.2389 Tw +(record are to be interpreted as another type of record, or that the)Tj +T* +0 Tw +(record data object is to be interpreted in more than one way.)Tj +0 -2 TD +(The )Tj +/TT16 1 Tf +2.0883 0 TD +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.1644 Tw +[( of a subdeclaration must be either the )]TJ +/TT16 1 Tf +18.4469 0 TD +0 Tw +(RECORD-)Tj +-27.1363 -1.2889 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0967 Tw +[( of its immediately superior declaration or one of the superiors)]TJ +-2.4004 -1.2889 TD +0.1456 Tw +[(field-names. Instead of identifying the declaration as with top level)]TJ +0 -1.2222 TD +0.0444 Tw +(declarations, the record-name of a subdeclaration identifies the parent)Tj +T* +0.53 Tw +(field or record that is being described by the subdeclaration.)Tj +T* +0 Tw +(Subdeclarations can be nested to an arbitrary depth.)Tj +0 -2 TD +0.24 Tw +(Giving a subdeclaration )Tj +/TT10 1 Tf +6 0 0 6 356.0693 180.14 Tm +0 Tw +(\(RECORD )Tj +/TT16 1 Tf +9 0 0 9 388.324 180.14 Tm +(NAME)Tj +6 0 0 6 409.93 177.14 Tm +(1)Tj +/TT10 1 Tf +0.6 0.5 TD +( )Tj +/TT16 1 Tf +9 0 0 9 420.5806 180.14 Tm +(NAME)Tj +6 0 0 6 442.18 177.14 Tm +(2)Tj +/TT10 1 Tf +0.6 0.5 TD +(\))Tj +/TT8 1 Tf +9 0 0 9 449.3806 180.14 Tm +0.24 Tw +[( is a simple way of)]TJ +-21.9312 -1.5056 TD +0 Tw +(defining a )Tj +/TT14 1 Tf +4.7251 0 TD +(synonym)Tj +/TT8 1 Tf +3.7231 0 TD +( for the field )Tj +/TT16 1 Tf +5.666 0 TD +(NAME)Tj +6 0 0 6 400.63 163.59 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 404.23 166.59 Tm +(.)Tj +-16.9144 -2.2833 TD +0.1167 Tw +(It is possible for a given field to have more than one subdeclaration.)Tj +0 -1.2222 TD +0 Tw +(For example, in)Tj +/TT10 1 Tf +6 0 0 6 252 117.04 Tm +(\(RECORD FOO \(A B\) \(RECORD A \(C D\)\) \(RECORD A \(Q R\)\)\))Tj +0 -3 TD +0.255 Tw +(\(Q R\) )Tj +/TT8 1 Tf +9 0 0 9 276.6635 99.04 Tm +0 Tw +(and )Tj +/TT10 1 Tf +6 0 0 6 295.1093 99.04 Tm +0.255 Tw +(\(C D\))Tj +/TT8 1 Tf +9 0 0 9 314.6422 99.04 Tm +0.1067 Tw +[( are overlayed, i.e. )]TJ +/TT10 1 Tf +6 0 0 6 402.3255 99.04 Tm +0.255 Tw +(\(fetch Q of X\))Tj +/TT8 1 Tf +9 0 0 9 457.3237 99.04 Tm +0.1067 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 478.9796 99.04 Tm +0.255 Tw +(\(fetch C of X\))Tj +/TT8 1 Tf +9 0 0 9 252 88.04 Tm +0.0567 Tw +[(would be equivalent. In such cases, the )]TJ +/TT14 1 Tf +18.176 0 TD +0 Tw +(first)Tj +/TT8 1 Tf +1.667 0 TD +0.0567 Tw +[( subdeclaration is the one)]TJ +-19.843 -1.2222 TD +0 Tw +(used by )Tj +/TT10 1 Tf +6 0 0 6 285.5346 77.04 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 307.1382 77.04 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 183 59.04 Tm +(\(SYNONYM )Tj +/TT16 1 Tf +9 0 0 9 215.4053 59.04 Tm +(FIELD)Tj +/TT10 1 Tf +6 0 0 6 242.4097 59.04 Tm +( )Tj +ET +endstream +endobj +37 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +39 0 obj +<< +/Length 10202 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-9)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT10 1 Tf +6 0 0 6 124.2 569.54 Tm +(\()Tj +/TT16 1 Tf +9 0 0 9 127.8006 569.54 Tm +(SYN)Tj +6 0 0 6 144 566.54 Tm +(1)Tj +/TT10 1 Tf +0.6 0.5 TD +( ... )Tj +/TT16 1 Tf +9 0 0 9 165.6029 569.54 Tm +(SYN)Tj +6 0 0 6 181.8 566.54 Tm +(N)Tj +9 0 0 9 185.4 566.54 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 190.8 569.54 Tm +(\)\))Tj +/TT16 1 Tf +9 0 0 9 204 569.54 Tm +(FIELD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1422 Tw +[( must be a field that appears in the current declaration. This)]TJ +-3.0005 -1.6222 TD +0 Tw +(defines )Tj +/TT16 1 Tf +3.5021 0 TD +(SYN)Tj +6 0 0 6 251.73 551.9399 Tm +(1)Tj +/TT10 1 Tf +0.6 0.5 TD +0.1283 Tw +[( ... )]TJ +/TT16 1 Tf +9 0 0 9 274.8729 554.9399 Tm +0 Tw +(SYN)Tj +6 0 0 6 291.07 551.9399 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 294.67 554.9399 Tm +0.0533 Tw +[( all as synonyms of )]TJ +/TT16 1 Tf +8.9542 0 TD +0 Tw +(FIELD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0533 Tw +[(. If there is only one)]TJ +-22.0291 -1.5056 TD +0 Tw +(synonym, this can be written as \()Tj +/TT10 1 Tf +6 0 0 6 334.9526 541.39 Tm +(SYNONYM )Tj +/TT16 1 Tf +9 0 0 9 363.7573 541.39 Tm +(FIELD)Tj +/TT10 1 Tf +6 0 0 6 390.7617 541.39 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 394.3623 541.39 Tm +(SYN)Tj +/TT10 1 Tf +6 0 0 6 410.5649 541.39 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 414.1655 541.39 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 169.2 522.79 Tm +(\(SYSTEM\))Tj +/TT8 1 Tf +9 0 0 9 204 522.79 Tm +(If )Tj +/TT10 1 Tf +6 0 0 6 213.8593 522.79 Tm +(\(SYSTEM\))Tj +/TT8 1 Tf +9 0 0 9 242.664 522.79 Tm +0.1756 Tw +[( is included in a record declaration, this indicates that the)]TJ +-4.296 -1.2222 TD +0.2033 Tw +[(record is a system record rather than a user record. The only)]TJ +T* +0.2511 Tw +(distinction between the two types of records is that user record)Tj +T* +0.2678 Tw +(declarations take precedence over system record declarations, in)Tj +T* +0.6044 Tw +(cases where an unqualified field name would be considered)Tj +T* +0.0367 Tw +[(ambiguous. All of the records defined in the standard Medley system)]TJ +T* +0 Tw +(are defined as system records.)Tj +/TT4 1 Tf +10 0 0 10 54 434.45 Tm +(CREATE)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 431.74 m +510.01 431.74 l +S +BT +/TT8 1 Tf +9 0 0 9 78 417.79 Tm +0.1267 Tw +(You can create )Tj +/TT10 1 Tf +6 0 0 6 141.8536 417.79 Tm +0 Tw +(RECORD)Tj +/TT8 1 Tf +9 0 0 9 163.4571 417.79 Tm +0.1267 Tw +(s by hand if you like, using )Tj +/TT10 1 Tf +6 0 0 6 281.3311 417.79 Tm +0 Tw +(CONS)Tj +/TT8 1 Tf +9 0 0 9 295.7335 417.79 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 301.3735 417.79 Tm +(LIST)Tj +/TT8 1 Tf +9 0 0 9 315.7758 417.79 Tm +0.1267 Tw +[(, etc. But that defeats the whole point of)]TJ +-26.4195 -1.2222 TD +0 Tw +(hiding implementation details. So much easier to use:)Tj +/TT10 1 Tf +6 0 0 6 114 392.39 Tm +(\(create )Tj +/TT16 1 Tf +9 0 0 9 142.8047 392.39 Tm +(RECORD-NAME)Tj +/TT10 1 Tf +6 0 0 6 202.2144 392.39 Tm +( . )Tj +/TT16 1 Tf +9 0 0 9 213.0161 392.39 Tm +(ASSIGNMENTS)Tj +/TT10 1 Tf +6 0 0 6 272.4258 392.39 Tm +(\))Tj +-32.4043 -2.7667 TD +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 99.6035 375.79 Tm +0.09 Tw +[( translates into an appropriate Interlisp form that uses )]TJ +/TT10 1 Tf +6 0 0 6 323.8515 375.79 Tm +0 Tw +(CONS)Tj +/TT8 1 Tf +9 0 0 9 338.2539 375.79 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 343.5639 375.79 Tm +(LIST)Tj +/TT8 1 Tf +9 0 0 9 357.9662 375.79 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 363.2762 375.79 Tm +(PUTHASH)Tj +/TT8 1 Tf +9 0 0 9 388.4803 375.79 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 393.7903 375.79 Tm +(ARRAY)Tj +/TT8 1 Tf +9 0 0 9 411.7932 375.79 Tm +0.09 Tw +(, etc., to create the)Tj +-37.0881 -1.2222 TD +0.0056 Tw +(new datum with the its fields initialized to the values you specify. )Tj +/TT16 1 Tf +29.6875 0 TD +0 Tw +(ASSIGNMENTS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0056 Tw +[( is optional and may)]TJ +-36.2885 -1.2889 TD +0 Tw +(contain expressions of the following form:)Tj +/TT16 1 Tf +0.8089 -2 TD +(FIELD-NAME)Tj +/TT10 1 Tf +6 0 0 6 139.2888 335.19 Tm +( )Tj +/TT19 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( )Tj +/TT16 1 Tf +9 0 0 9 152.4108 335.19 Tm +(FORM)Tj +/TT8 1 Tf +3.0655 0 TD +(Specifies initial value for )Tj +/TT16 1 Tf +11.1509 0 TD +(FIELD-NAME)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +6 0 0 6 130.8 316.59 Tm +(USING )Tj +/TT16 1 Tf +9 0 0 9 152.4035 316.59 Tm +[(FORM)-665.9(FORM)]TJ +/TT8 1 Tf +5.4667 0 TD +0.0733 Tw +[( is an existing instance of )]TJ +/TT16 1 Tf +11.709 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.0733 Tw +[(. If you dont specify a value)]TJ +-20.7105 -1.2889 TD +0 Tw +(for some field, the value of the corresponding field in )Tj +/TT16 1 Tf +23.7813 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +( is to be used.)Tj +/TT10 1 Tf +6 0 0 6 123.6 286.39 Tm +(COPYING )Tj +/TT16 1 Tf +9 0 0 9 152.4047 286.39 Tm +(FORM)Tj +/TT8 1 Tf +3.0661 0 TD +(Like )Tj +/TT10 1 Tf +6 0 0 6 199.6831 286.39 Tm +(USING)Tj +/TT8 1 Tf +9 0 0 9 217.686 286.39 Tm +(, but the corresponding values are copied \(with )Tj +/TT10 1 Tf +6 0 0 6 407.9912 286.39 Tm +(COPYALL)Tj +/TT8 1 Tf +9 0 0 9 433.1953 286.39 Tm +(\).)Tj +/TT10 1 Tf +6 0 0 6 123.6 267.79 Tm +(REUSING )Tj +/TT16 1 Tf +9 0 0 9 152.4047 267.79 Tm +(FORM)Tj +/TT8 1 Tf +3.0661 0 TD +(Like )Tj +/TT10 1 Tf +6 0 0 6 201.6531 267.79 Tm +(USING)Tj +/TT8 1 Tf +9 0 0 9 219.656 267.79 Tm +0.2189 Tw +(, but wherever possible, the corresponding )Tj +/TT14 1 Tf +20.4515 0 TD +0 Tw +(structure)Tj +/TT8 1 Tf +3.7422 0 TD +0.2189 Tw +[( in )]TJ +/TT16 1 Tf +1.8108 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2189 Tw +[( is)]TJ +-32.8111 -1.2889 TD +0 Tw +(used.)Tj +/TT10 1 Tf +6 0 0 6 120 238.19 Tm +(SMASHING )Tj +/TT16 1 Tf +9 0 0 9 152.4053 238.19 Tm +(FORM)Tj +/TT8 1 Tf +3.0661 0 TD +0.0122 Tw +(A new instance of the record is not created at all; rather, new field values are)Tj +0 -1.2889 TD +0 Tw +(smashed into )Tj +/TT16 1 Tf +6.1475 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(, which )Tj +/TT10 1 Tf +6 0 0 6 288.2769 226.59 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 309.8804 226.59 Tm +( then returns.)Tj +-25.7645 -2.0667 TD +0.0611 Tw +(When it makes a difference, Medley goes to great pains to make its translation do things in the same)Tj +0 -1.2222 TD +0.0278 Tw +(order as the original )Tj +/TT10 1 Tf +6 0 0 6 161.7007 196.99 Tm +0 Tw +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 183.3042 196.99 Tm +0.0278 Tw +[( expression. For example, given the declaration )]TJ +/TT10 1 Tf +6 0 0 6 377.0771 196.99 Tm +0.0683 Tw +(\(RECORD CONS \(CAR . CDR\)\))Tj +/TT8 1 Tf +9 0 0 9 468.7318 196.99 Tm +0.0278 Tw +(, the)Tj +-43.4146 -1.2222 TD +0 Tw +(expression )Tj +/TT10 1 Tf +6 0 0 6 123.1113 185.99 Tm +0.06 Tw +(\(create CONS CDR)Tj +/TT19 1 Tf +9.7216 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.06 Tw +(X CAR)Tj +/TT19 1 Tf +3.0605 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y\))Tj +/TT8 1 Tf +9 0 0 9 218.8466 185.99 Tm +0.0256 Tw +[( will translate to )]TJ +/TT10 1 Tf +6 0 0 6 286.3877 185.99 Tm +0.06 Tw +(\(CONS Y X\))Tj +/TT8 1 Tf +9 0 0 9 323.1136 185.99 Tm +0.0256 Tw +(, but )Tj +/TT10 1 Tf +6 0 0 6 343.6654 185.99 Tm +0.06 Tw +(\(create CONS CDR)Tj +/TT19 1 Tf +9.7216 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.06 Tw +(\(FOO\) CAR)Tj +/TT19 1 Tf +5.4609 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(FIE\)\))Tj +/TT8 1 Tf +9 0 0 9 468.2054 185.99 Tm +0.0256 Tw +[( will)]TJ +-43.3562 -1.2222 TD +0.0189 Tw +(translate to )Tj +/TT10 1 Tf +6 0 0 6 125.0978 174.99 Tm +0.045 Tw +(\(\(LAMBDA \($$1\) \(CONS \(PROGN \(SETQ $$1 \(FOO\)\) \(FIE\)\) $$1\)\)\) )Tj +/TT8 1 Tf +9 0 0 9 339.9624 174.99 Tm +0 Tw +(because )Tj +/TT10 1 Tf +6 0 0 6 373.7198 174.99 Tm +(FOO)Tj +/TT8 1 Tf +9 0 0 9 384.5215 174.99 Tm +0.0189 Tw +[( might set some variables)]TJ +-34.058 -1.2222 TD +0 Tw +(used by )Tj +/TT10 1 Tf +6 0 0 6 111.5347 163.99 Tm +(FIE)Tj +/TT8 1 Tf +9 0 0 9 122.3364 163.99 Tm +(.)Tj +-4.9263 -2 TD +0.14 Tw +(How are )Tj +/TT10 1 Tf +6 0 0 6 117.2934 145.99 Tm +0 Tw +(USING)Tj +/TT8 1 Tf +9 0 0 9 135.2964 145.99 Tm +0.14 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 157.5522 145.99 Tm +0 Tw +(REUSING)Tj +/TT8 1 Tf +9 0 0 9 182.7563 145.99 Tm +0.14 Tw +[( different? )]TJ +/TT10 1 Tf +6 0 0 6 231.7429 145.99 Tm +0 Tw +(\(create )Tj +/TT16 1 Tf +9 0 0 9 262.5675 145.99 Tm +(RECORD)Tj +/TT10 1 Tf +6 0 0 6 294.9728 145.99 Tm +0.3367 Tw +[( reusing )]TJ +/TT16 1 Tf +9 0 0 9 331.4181 145.99 Tm +0 Tw +(FORM)Tj +/TT10 1 Tf +6 0 0 6 353.0216 145.99 Tm +0.3367 Tw +[( ...\))]TJ +/TT8 1 Tf +9 0 0 9 373.0445 145.99 Tm +0.14 Tw +[( doesnt do any destructive)]TJ +-32.7827 -1.2889 TD +0.0089 Tw +(operations on the value of )Tj +/TT16 1 Tf +11.8164 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +(, but )Tj +/TT14 1 Tf +2.2502 0 TD +0 Tw +(will)Tj +/TT8 1 Tf +1.5557 0 TD +0.0089 Tw +[( incorporate as much as possible of the old data structure into)]TJ +-18.0227 -1.2889 TD +0.0744 Tw +[(the new one. On the other hand, )]TJ +/TT10 1 Tf +6 0 0 6 216.088 122.79 Tm +0 Tw +(\(create )Tj +/TT16 1 Tf +9 0 0 9 245.9727 122.79 Tm +(RECORD)Tj +/TT10 1 Tf +6 0 0 6 278.378 122.79 Tm +0.18 Tw +[( using )]TJ +/TT16 1 Tf +9 0 0 9 305.7421 122.79 Tm +0 Tw +(FORM)Tj +/TT10 1 Tf +6 0 0 6 327.3456 122.79 Tm +0.18 Tw +[( ...\))]TJ +/TT8 1 Tf +9 0 0 9 346.4285 122.79 Tm +0.0744 Tw +[( will create a completely new data)]TJ +-29.8254 -1.2889 TD +0.0878 Tw +(structure, with only the )Tj +/TT14 1 Tf +10.9917 0 TD +0 Tw +(contents)Tj +/TT8 1 Tf +3.4077 0 TD +0.0878 Tw +[( of the fields re-used. For example, )]TJ +/TT10 1 Tf +6 0 0 6 355.7969 111.19 Tm +0 Tw +(REUSING)Tj +/TT8 1 Tf +9 0 0 9 381.001 111.19 Tm +0.0878 Tw +[( a )]TJ +/TT10 1 Tf +6 0 0 6 391.581 111.19 Tm +0 Tw +(PROPRECORD)Tj +/TT8 1 Tf +9 0 0 9 427.5869 111.19 Tm +0.0878 Tw +[( just )]TJ +/TT10 1 Tf +6 0 0 6 447.9491 111.19 Tm +0 Tw +(CONS)Tj +/TT8 1 Tf +9 0 0 9 462.3514 111.19 Tm +0.0878 Tw +(es the)Tj +-42.7057 -1.2222 TD +0.16 Tw +(new property names and values onto the list, while )Tj +/TT10 1 Tf +6 0 0 6 297.1778 100.19 Tm +0 Tw +(USING)Tj +/TT8 1 Tf +9 0 0 9 315.1807 100.19 Tm +0.16 Tw +[( copies the top level of the list. Another)]TJ +-26.3534 -1.2222 TD +0.1189 Tw +(example of this distinction occurs when a field is elaborated by a subdeclaration: )Tj +/TT10 1 Tf +6 0 0 6 414.5741 89.19 Tm +0 Tw +(USING)Tj +/TT8 1 Tf +9 0 0 9 432.577 89.19 Tm +0.1189 Tw +[( will create a)]TJ +-39.3974 -1.2222 TD +0.0189 Tw +(new instance of the sub-record, while )Tj +/TT10 1 Tf +6 0 0 6 230.2094 78.19 Tm +0 Tw +(REUSING)Tj +/TT8 1 Tf +9 0 0 9 255.4135 78.19 Tm +0.0189 Tw +[( will use the old contents of the field \(unless some field of)]TJ +-19.7126 -1.2222 TD +0 Tw +(the subdeclaration is assigned in the )Tj +/TT10 1 Tf +6 0 0 6 224.4653 67.19 Tm +(CREATE)Tj +/TT8 1 Tf +9 0 0 9 246.0688 67.19 Tm +( expression.\))Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT19 34 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +42 0 obj +<< +/Length 9510 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0544 Tw +(If the value of a field is neither explicitly specified, nor implicitly specified via )Tj +/TT10 1 Tf +6 0 0 6 444.3839 569.54 Tm +0 Tw +(USING)Tj +/TT8 1 Tf +9 0 0 9 462.3868 569.54 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 467.3768 569.54 Tm +(COPYING)Tj +/TT8 1 Tf +9 0 0 9 492.5809 569.54 Tm +0.0544 Tw +[( or )]TJ +/TT10 1 Tf +6 0 0 6 506.5292 569.54 Tm +0 Tw +(REUSING)Tj +/TT8 1 Tf +9 0 0 9 531.7333 569.54 Tm +(,)Tj +-45.0815 -1.2222 TD +0.0311 Tw +(the default value in the declaration is used, if any, otherwise )Tj +/TT10 1 Tf +6 0 0 6 371.1176 558.54 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 381.9193 558.54 Tm +0.0311 Tw +[(. \(For )]TJ +/TT10 1 Tf +6 0 0 6 408.23 558.54 Tm +0 Tw +(BETWEEN)Tj +/TT8 1 Tf +9 0 0 9 433.4341 558.54 Tm +0.0311 Tw +[( fields in )]TJ +/TT10 1 Tf +6 0 0 6 470.74 558.54 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 499.5447 558.54 Tm +0.0311 Tw +[( records,)]TJ +/TT16 1 Tf +-41.505 -1.2222 TD +0 Tw +(N)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( is used; for other non-pointer fields zero is used.\) For example, following )Tj +/TT10 1 Tf +6 0 0 6 433.5847 547.54 Tm +(\(RECORD A \(B C D\) D )Tj +/TT19 1 Tf +12.002 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 3\))Tj +-58.2529 -2.675 TD +(\(create A B )Tj +/TT19 1 Tf +7.2012 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T\) ==> \(LIST T NIL 3\))Tj +-8.188 -1.6667 TD +(\(create A B )Tj +/TT19 1 Tf +7.2012 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T using X\) ==> \(LIST T \(CADR X\) \(CADDR X\)\))Tj +-8.188 -1.6667 TD +(\(create A B )Tj +/TT19 1 Tf +7.2012 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T copying X\)\) ==> [LIST T \(COPYALL \(CADR X\)\) \(COPYALL \(CADDR X])Tj +-8.188 -1.6667 TD +(\(create A B )Tj +/TT19 1 Tf +7.2012 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T reusing X\) ==> \(CONS T \(CDR X\)\))Tj +/TT4 1 Tf +10 0 0 10 102 481.6 Tm +(TYPE?)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 478.89 m +558.01 478.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 464.94 Tm +0.0489 Tw +[(The record package allows you to test if a given datum looks like an instance of a record. This can)]TJ +0 -1.2222 TD +0 Tw +(be done via an expression of the for)Tj +/TT10 1 Tf +6 0 0 6 267.4336 453.94 Tm +(m \(type? )Tj +/TT16 1 Tf +9 0 0 9 299.8389 453.94 Tm +(RECORD-NAME)Tj +/TT10 1 Tf +6 0 0 6 359.2485 453.94 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 362.8491 453.94 Tm +(FORM)Tj +/TT10 1 Tf +6 0 0 6 384.4526 453.94 Tm +(\).)Tj +-43.0754 -3.1 TD +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 144.0029 435.34 Tm +0.0611 Tw +[( is mainly intended for records with a record type of )]TJ +/TT10 1 Tf +6 0 0 6 360.1159 435.34 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 388.9206 435.34 Tm +0.0611 Tw +[( or )]TJ +/TT10 1 Tf +6 0 0 6 402.9888 435.34 Tm +0 Tw +(TYPERECORD)Tj +/TT8 1 Tf +9 0 0 9 438.9947 435.34 Tm +0.0611 Tw +[(. For )]TJ +/TT10 1 Tf +6 0 0 6 463.1183 435.34 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 491.923 435.34 Tm +0.0611 Tw +(s, the )Tj +/TT10 1 Tf +6 0 0 6 516.0723 435.34 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 126 424.34 Tm +0.0033 Tw +(check is exact; i.e. the )Tj +/TT10 1 Tf +6 0 0 6 212.9288 424.34 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 230.9317 424.34 Tm +0.0001 Tc +0.0032 Tw +( expression will return non-)Tj +/TT10 1 Tf +6 0 0 6 341.4555 424.34 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 352.2573 424.34 Tm +0.0002 Tc +0.0031 Tw +( only if the value of )Tj +/TT16 1 Tf +8.8232 0 TD +0 Tc +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0002 Tc +0.0031 Tw +( is an instance of the)Tj +-36.3633 -1.2889 TD +0 Tc +0.0067 Tw +(record named by )Tj +/TT16 1 Tf +7.8037 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.0067 Tw +[(. For )]TJ +/TT10 1 Tf +6 0 0 6 278.2965 412.74 Tm +0 Tw +(TYPERECORD)Tj +/TT8 1 Tf +9 0 0 9 314.3024 412.74 Tm +0.0067 Tw +(s, the )Tj +/TT10 1 Tf +6 0 0 6 337.4717 412.74 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 355.4746 412.74 Tm +0.0067 Tw +[( expression will check that the value of )]TJ +/TT16 1 Tf +17.4405 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +-42.9377 -1.2889 TD +0.1578 Tw +(is a list beginning with )Tj +/TT16 1 Tf +11.0916 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.1578 Tw +[(. For )]TJ +/TT10 1 Tf +6 0 0 6 311.9679 401.14 Tm +0 Tw +(ARRAYRECORD)Tj +/TT8 1 Tf +9 0 0 9 351.5743 401.14 Tm +0.1578 Tw +(s, it checks that the value is an array of the)Tj +-25.0638 -1.2889 TD +0.02 Tw +[(correct size. For )]TJ +/TT10 1 Tf +6 0 0 6 193.9475 389.54 Tm +0 Tw +(PROPRECORD)Tj +/TT8 1 Tf +9 0 0 9 229.9534 389.54 Tm +0.02 Tw +(s and )Tj +/TT10 1 Tf +6 0 0 6 253.8637 389.54 Tm +0 Tw +(ASSOCRECORD)Tj +/TT8 1 Tf +9 0 0 9 293.4701 389.54 Tm +0.02 Tw +(s, a )Tj +/TT10 1 Tf +6 0 0 6 308.8946 389.54 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 326.8975 389.54 Tm +0.02 Tw +[( expression will make sure that the value of )]TJ +/TT16 1 Tf +19.6312 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.02 Tw +[( is)]TJ +-44.3535 -1.2889 TD +0 Tw +(a property/association list with property names among the field-names of the declaration.)Tj +0 -2 TD +0.0622 Tw +(There is no built-in type test for records of type )Tj +/TT10 1 Tf +6 0 0 6 321.3866 359.94 Tm +0 Tw +(ACCESSFNS)Tj +/TT8 1 Tf +9 0 0 9 353.7919 359.94 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 358.8519 359.94 Tm +(HASHLINK)Tj +/TT8 1 Tf +9 0 0 9 387.6566 359.94 Tm +0.0622 Tw +[( or )]TJ +/TT10 1 Tf +6 0 0 6 401.7448 359.94 Tm +0 Tw +(RECORD)Tj +/TT8 1 Tf +9 0 0 9 423.3484 359.94 Tm +0.0622 Tw +[(. Type tests can be defined)]TJ +-33.0387 -1.2222 TD +0.1244 Tw +(for these kinds of records, or redefined for the other kinds, by including an expression of the form)Tj +/TT10 1 Tf +6 0 0 6 126 337.94 Tm +0 Tw +(\(TYPE? )Tj +/TT16 1 Tf +9 0 0 9 153.9541 337.94 Tm +(COM)Tj +/TT10 1 Tf +6 0 0 6 170.1567 337.94 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 173.7573 337.94 Tm +0.1911 Tw +[( in the record declaration \(see the Record Declarations section below\). Attempting to)]TJ +-5.3064 -1.2889 TD +0.0033 Tw +(execute a )Tj +/TT10 1 Tf +6 0 0 6 164.9955 326.34 Tm +0 Tw +(TYPE?)Tj +/TT8 1 Tf +9 0 0 9 182.9985 326.34 Tm +0.0001 Tc +0.0032 Tw +( expression for a record that has no type test causes an error, )Tj +/TT10 1 Tf +6 0 0 6 425.7732 326.34 Tm +0 Tc +0.0083 Tw +(Type? not implemented for this)Tj +-49.9622 -1.4083 TD +0 Tw +(record.)Tj +/TT4 1 Tf +10 0 0 10 102 296 Tm +(WITH)Tj +ET +102.01 293.29 m +558.01 293.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 279.34 Tm +0.0311 Tw +[(Often one wants to write a complex expression that manipulates several fields of a single record. The)]TJ +/TT10 1 Tf +6 0 0 6 126 268.34 Tm +0 Tw +(WITH)Tj +/TT8 1 Tf +9 0 0 9 140.4023 268.34 Tm +0.0911 Tw +[( construct can make it easier to write such expressions by allowing one to refer to the fields of a)]TJ +-1.6003 -1.2222 TD +0 Tw +(record as if they were variables within a lexical scope:)Tj +/TT10 1 Tf +6 0 0 6 162 242.94 Tm +(\(with )Tj +/TT16 1 Tf +9 0 0 9 183.6035 242.94 Tm +(RECORD-NAME)Tj +/TT10 1 Tf +6 0 0 6 243.0132 242.94 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 246.6138 242.94 Tm +(RECORD-INSTANCE)Tj +/TT10 1 Tf +6 0 0 6 327.627 242.94 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 331.2275 242.94 Tm +(FORM)Tj +6 0 0 6 352.8 239.94 Tm +(1)Tj +/TT10 1 Tf +0.6 0.5 TD +( ... )Tj +/TT16 1 Tf +9 0 0 9 374.4029 242.94 Tm +(FORM)Tj +6 0 0 6 396 239.94 Tm +(N)Tj +/TT10 1 Tf +0.6 0.5 TD +(\))Tj +/TT16 1 Tf +9 0 0 9 126 224.39 Tm +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.0844 Tw +[( is the name of a record, and )]TJ +/TT16 1 Tf +13.4129 0 TD +0 Tw +(RECORD-INSTANCE)Tj +/TT8 1 Tf +9.0015 0 TD +0.0844 Tw +[( is an expression which evaluates to)]TJ +-29.0154 -1.2889 TD +0.1911 Tw +[(an instance of that record. The expressions )]TJ +/TT16 1 Tf +20.8062 0 TD +0 Tw +(FORM)Tj +2.4038 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +6 0 0 6 344.26 212.79 Tm +(...)Tj +/TT8 1 Tf +9 0 0 9 355.0617 212.79 Tm +( )Tj +/TT16 1 Tf +0.4411 0 TD +(FORM)Tj +2.3998 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1911 Tw +[( are evaluated so that references to)]TJ +-28.8922 -1.6222 TD +0.2844 Tw +(variables which are field-names of )Tj +/TT16 1 Tf +16.8617 0 TD +0 Tw +(RECORD-NAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.2844 Tw +[( are implemented via )]TJ +/TT10 1 Tf +6 0 0 6 434.1176 198.19 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 452.1205 198.19 Tm +0.2844 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 476.9764 198.19 Tm +0 Tw +(SETQ)Tj +/TT8 1 Tf +9 0 0 9 491.3787 198.19 Tm +0.2844 Tw +(s of those)Tj +-40.5976 -1.2889 TD +0 Tw +(variables are implemented via )Tj +/TT10 1 Tf +6 0 0 6 248.6953 186.59 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 273.8994 186.59 Tm +(. )Tj +-16.4333 -2 TD +(For example, given)Tj +/TT10 1 Tf +6 0 0 6 162 156.14 Tm +(\(RECORD RECN \(FLD1 FLD2\)\))Tj +0 -1 TD +(\(SETQ INST \(create RECN FLD1 )Tj +/TT19 1 Tf +17.4028 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 10 FLD2 )Tj +/TT19 1 Tf +5.4009 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 20\)\))Tj +/TT8 1 Tf +9 0 0 9 126 134.59 Tm +(Then the construct)Tj +/TT10 1 Tf +6 0 0 6 162 122.14 Tm +(\(with RECN INST \(SETQ FLD2 \(PLUS FLD1 FLD2])Tj +/F2 1 Tf +10 0 0 10 126 105.31 Tm +(is equivalent to)Tj +/TT10 1 Tf +6 0 0 6 126 93.14 Tm +(\(replace FLD2 of INST with \(PLUS \(fetch FLD1 of INST\) \(fetch FLD2 of INST])Tj +/TT18 1 Tf +9 0 0 9 126 77.59 Tm +(Warning)Tj +/TT8 1 Tf +4 0 TD +(: )Tj +/TT10 1 Tf +6 0 0 6 168.09 77.59 Tm +0.425 Tw +[( WITH)]TJ +/TT8 1 Tf +9 0 0 9 194.7935 77.59 Tm +0.1767 Tw +[( is implemented by doing simple substitutions in the body of the forms, without)]TJ +-7.6437 -1.2222 TD +0.1256 Tw +[(regard for how the record fields are used. This means, for example, if the record )]TJ +/TT10 1 Tf +6 0 0 6 466.0937 66.59 Tm +0 Tw +(FOO)Tj +/TT8 1 Tf +9 0 0 9 476.8954 66.59 Tm +0.1256 Tw +[( is defined by)]TJ +/TT10 1 Tf +6 0 0 6 126 55.59 Tm +0 Tw +(\(RECORD FOO \(POINTER1 POINTER2\)\))Tj +/TT8 1 Tf +9 0 0 9 241.2187 55.59 Tm +(, then the form)Tj +/TT10 1 Tf +6 0 0 6 162 43.14 Tm +(\(with FOO X \(SELECTQ Y \(POINTER1 POINTER1\) NIL])Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 44 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 16 0 R +/TT18 20 0 R +/TT19 34 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +46 0 obj +<< +/Length 7946 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-11)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(will be translated as)Tj +/TT10 1 Tf +6 0 0 6 114 557.09 Tm +(\(SELECTQ Y \(\(CAR X\) \(CAR X\)\) NIL])Tj +/TT8 1 Tf +9 0 0 9 78 541.54 Tm +(Be careful that record field names are not used except as variables in the )Tj +/TT10 1 Tf +6 0 0 6 366.7515 541.54 Tm +(WITH)Tj +/TT8 1 Tf +9 0 0 9 381.1538 541.54 Tm +( forms.)Tj +/TT4 1 Tf +10 0 0 10 54 519.2 Tm +(Defining New Record Types)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 516.49 m +510.01 516.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 502.54 Tm +0.1444 Tw +(In addition to the built-in record types, you can declare your own record types by performing the)Tj +0 -1.2222 TD +0 Tw +(following steps:)Tj +2 -2 TD +[(1.)-583.3(Add)]TJ +/TT10 1 Tf +6 0 0 6 125.9956 473.54 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 129.5962 473.54 Tm +(the new record-type to the value of )Tj +/TT10 1 Tf +6 0 0 6 271.5571 473.54 Tm +(CLISPRECORDTYPES)Tj +/TT8 1 Tf +9 0 0 9 329.1665 473.54 Tm +(.)Tj +-25.9074 -1.7778 TD +[(2.)-583.3(Perform )]TJ +/TT10 1 Tf +6 0 0 6 142.9629 457.54 Tm +(\(MOVD RECORD )Tj +/TT16 1 Tf +9 0 0 9 193.3711 457.54 Tm +(RECORD-TYPE)Tj +/TT10 1 Tf +6 0 0 6 252.7808 457.54 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 256.3813 457.54 Tm +(.)Tj +-17.8202 -1.8444 TD +0.0844 Tw +[(3.)-583.3(Put the name of a function which will return the translation on the property list of )]TJ +/TT16 1 Tf +39.1307 0 TD +0 Tw +(RECORD-)Tj +-37.7974 -1.2889 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2389 Tw +(, as the value of the property )Tj +/TT10 1 Tf +6 0 0 6 260.8845 429.34 Tm +0 Tw +(USERRECORDTYPE)Tj +/TT8 1 Tf +9 0 0 9 311.2927 429.34 Tm +0.2389 Tw +[(. Whenever a record declaration of type)]TJ +/TT16 1 Tf +-22.5881 -1.2889 TD +0 Tw +(RECORD-TYPE)Tj +/TT8 1 Tf +6.6011 0 TD +0.3011 Tw +[( is encountered, this function will be passed the record declaration as its)]TJ +-6.6011 -1.2889 TD +0.0411 Tw +(argument, and should return a )Tj +/TT14 1 Tf +14.0596 0 TD +0 Tw +(new)Tj +/TT8 1 Tf +1.6675 0 TD +0.0411 Tw +[( record declaration which the record package will then use)]TJ +-15.727 -1.2222 TD +0 Tw +(in its place.)Tj +/TT4 1 Tf +10 0 0 10 54 372.8 Tm +(Manipulating Record Declarations)Tj +ET +54.01 370.09 m +510.01 370.09 l +S +BT +/TT10 1 Tf +6 0 0 6 102 351.86 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 351.86 Tm +(EDITREC)Tj +/F1 1 Tf +10 0 0 10 143.4 351.86 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 146.27 351.86 Tm +(NAME)Tj +/F3 1 Tf +10 0 0 10 167.8735 351.86 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 170.6535 351.86 Tm +(COM)Tj +6 0 0 6 186.85 348.86 Tm +(1)Tj +/F3 1 Tf +10 0 0 10 190.45 351.86 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 193.23 351.86 Tm +(...)Tj +/F3 1 Tf +10 0 0 10 209.4326 351.86 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 212.2126 351.86 Tm +(COM)Tj +6 0 0 6 228.41 348.86 Tm +(N)Tj +/TT10 1 Tf +0.6 0.5 TD +(\))Tj +/TT8 1 Tf +9 0 0 9 235.6106 351.86 Tm +[( )-13246.6([NLambda NoSpread Function])]TJ +/TT10 1 Tf +6 0 0 6 126 333.31 Tm +(EDITREC)Tj +/TT8 1 Tf +9 0 0 9 151.2041 333.31 Tm +0.04 Tw +[( calls the editor on a copy of all declarations in which )]TJ +/TT16 1 Tf +24.1953 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.04 Tw +[( is the record name or a)]TJ +-29.3962 -1.2889 TD +0.0822 Tw +[(field name. On exit, it redeclares those that have changed and undeclares any that have)]TJ +0 -1.2222 TD +0 Tw +(been deleted. If )Tj +/TT16 1 Tf +7.2891 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +6 0 0 6 224.1387 310.71 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 234.9404 310.71 Tm +(, )Tj +/TT14 1 Tf +0.5 0 TD +(all)Tj +/TT8 1 Tf +0.9995 0 TD +( declarations are edited.)Tj +/TT16 1 Tf +-13.604 -2.0667 TD +(COM)Tj +6 0 0 6 142.2 289.11 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 145.8 292.11 Tm +( )Tj +/TT10 1 Tf +6 0 0 6 148.05 292.11 Tm +(...)Tj +/TT8 1 Tf +9 0 0 9 158.8517 292.11 Tm +( )Tj +/TT16 1 Tf +0.25 0 TD +(COM)Tj +6 0 0 6 177.3 289.11 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 180.9 292.11 Tm +( are \(optional\) edit commands.)Tj +-11.4333 -2.2833 TD +0.0333 Tw +(When you redeclare a global record, the translations of all expressions involving that record or any of)Tj +0 -1.2222 TD +0.27 Tw +(its fields are automatically deleted from )Tj +/TT10 1 Tf +6 0 0 6 253.0815 260.56 Tm +0 Tw +(CLISPARRAY)Tj +/TT8 1 Tf +9 0 0 9 289.0873 260.56 Tm +0.27 Tw +(, and thus will be recomputed using the new)Tj +-23.4541 -1.2222 TD +0.1056 Tw +[(information. If you change a )]TJ +/TT14 1 Tf +13.6763 0 TD +0 Tw +(local)Tj +/TT8 1 Tf +1.8506 0 TD +0.1056 Tw +[( record declaration \(see Chapter 21\), or change some other CLISP)]TJ +-15.5269 -1.2222 TD +0.2322 Tw +(declaration \(see Chapter 21\), e.g., )Tj +/TT10 1 Tf +6 0 0 6 222.4612 238.56 Tm +0 Tw +(STANDARD)Tj +/TT8 1 Tf +9 0 0 9 251.2659 238.56 Tm +0.2322 Tw +[( to )]TJ +/TT10 1 Tf +6 0 0 6 267.7946 238.56 Tm +0 Tw +(FAST)Tj +/TT8 1 Tf +9 0 0 9 282.1969 238.56 Tm +0.2322 Tw +(, and wish the new information to affect record)Tj +-22.6885 -1.2222 TD +0.23 Tw +(expressions already translated, you must make sure the corresponding translations are removed,)Tj +T* +0 Tw +(usually either by )Tj +/TT10 1 Tf +6 0 0 6 147.1172 216.56 Tm +(CLISPIFY)Tj +/TT8 1 Tf +9 0 0 9 175.9219 216.56 Tm +(ing or using the )Tj +/TT10 1 Tf +6 0 0 6 240.8423 216.56 Tm +(DW)Tj +/TT8 1 Tf +9 0 0 9 248.0435 216.56 Tm +( edit macro.)Tj +/TT10 1 Tf +6 0 0 6 102 194.28 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 194.28 Tm +(RECLOOK)Tj +/F1 1 Tf +10 0 0 10 143.4 194.28 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 146.27 194.28 Tm +(RECNAME)Tj +/F3 1 Tf +10 0 0 10 184.0761 194.28 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 186.8561 194.28 Tm +()Tj +/F3 1 Tf +10 0 0 10 192.257 194.28 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 195.037 194.28 Tm +()Tj +/F3 1 Tf +10 0 0 10 200.4379 194.28 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 203.2179 194.28 Tm +()Tj +/F3 1 Tf +10 0 0 10 208.6188 194.28 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 211.3988 194.28 Tm +()Tj +/TT10 1 Tf +6 0 0 6 216.7997 194.28 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 220.4002 194.28 Tm +[( )-24414.4([Function])]TJ +-10.4889 -1.8444 TD +0.1633 Tw +(Returns the entire declaration for the record named )Tj +/TT16 1 Tf +24.2735 0 TD +0 Tw +(RECNAME)Tj +/TT8 1 Tf +4.2007 0 TD +(; )Tj +/TT10 1 Tf +6 0 0 6 388.2373 177.68 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 399.0391 177.68 Tm +0.1633 Tw +[( if there is no record)]TJ +-30.3377 -1.2889 TD +0.1178 Tw +(declaration with name )Tj +/TT16 1 Tf +10.5452 0 TD +0 Tw +(RECNAME)Tj +/TT8 1 Tf +4.2007 0 TD +0.1178 Tw +[(. Note that the record package maintains internal state)]TJ +-14.7459 -1.2889 TD +0.0544 Tw +(about current record declarations, so performing destructive operations \(e.g. )Tj +/TT10 1 Tf +6 0 0 6 436.7923 154.48 Tm +0 Tw +(NCONC)Tj +/TT8 1 Tf +9 0 0 9 454.7952 154.48 Tm +0.0544 Tw +(\) on the)Tj +-36.5328 -1.2222 TD +0.0322 Tw +(value of )Tj +/TT10 1 Tf +6 0 0 6 160.932 143.48 Tm +0 Tw +(RECLOOK)Tj +/TT8 1 Tf +9 0 0 9 186.1361 143.48 Tm +0.0322 Tw +[( may leave the record package in an inconsistent state. To change a record)]TJ +-6.6818 -1.2222 TD +0 Tw +(declaration, use )Tj +/TT10 1 Tf +6 0 0 6 190.9863 132.48 Tm +(EDITREC)Tj +/TT8 1 Tf +9 0 0 9 216.1904 132.48 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 102 110.2 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 110.2 Tm +(FIELDLOOK)Tj +/F1 1 Tf +10 0 0 10 154.2 110.2 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 157.07 110.2 Tm +(FIELDNAME)Tj +/TT10 1 Tf +6 0 0 6 205.6779 110.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 209.2785 110.2 Tm +[( )-25650.2([Function])]TJ +-9.2532 -1.8444 TD +(Returns the list of declarations in which )Tj +/TT16 1 Tf +17.8198 0 TD +(FIELDNAME)Tj +/TT8 1 Tf +5.4009 0 TD +( is the name of a field.)Tj +/TT10 1 Tf +6 0 0 6 102 70.72 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 70.72 Tm +(RECORDFIELDNAMES)Tj +/F1 1 Tf +10 0 0 10 192 70.72 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 194.87 70.72 Tm +(RECORDNAME)Tj +/F3 1 Tf +10 0 0 10 248.8788 70.72 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 251.6588 70.72 Tm +()Tj +/TT10 1 Tf +6 0 0 6 257.0597 70.72 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 260.6602 70.72 Tm +[( )-19941.1([Function])]TJ +-14.9623 -1.8444 TD +0.0833 Tw +(Returns the list of fields declared in record )Tj +/TT16 1 Tf +19.7228 0 TD +0 Tw +(RECORDNAME)Tj +/TT8 1 Tf +6.001 0 TD +0.0833 Tw +(. )Tj +/TT16 1 Tf +0.9167 0 TD +0 Tw +(RECORDNAME)Tj +/TT8 1 Tf +6.001 0 TD +0.0833 Tw +[( may either be a)]TJ +-32.6414 -1.2889 TD +0 Tw +(name or an entire declaration.)Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/F3 48 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +52 0 obj +<< +/Length 9319 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +6 0 0 6 150 568.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 568.26 Tm +(RECORDACCESS)Tj +/F1 1 Tf +10 0 0 10 218.4 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 221.27 568.26 Tm +(FIELD)Tj +/F3 1 Tf +10 0 0 10 248.2744 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 251.0544 568.26 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 278.0588 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 280.8388 568.26 Tm +(DEC)Tj +/F3 1 Tf +10 0 0 10 297.0414 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 299.8214 568.26 Tm +(TYPE)Tj +/F3 1 Tf +10 0 0 10 321.4249 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 324.2049 568.26 Tm +(NEWVALUE)Tj +/TT10 1 Tf +6 0 0 6 367.412 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 371.0125 568.26 Tm +[( )-13013([Function])]TJ +/TT16 1 Tf +-21.8903 -1.8444 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.3367 Tw +[( is one of )]TJ +/TT10 1 Tf +6 0 0 6 245.5296 551.66 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 263.5326 551.66 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 271.0626 551.66 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 296.2667 551.66 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 303.7967 551.66 Tm +(FFETCH)Tj +/TT8 1 Tf +9 0 0 9 325.4002 551.66 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 332.9302 551.66 Tm +(FREPLACE)Tj +/TT8 1 Tf +9 0 0 9 361.7349 551.66 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 369.2649 551.66 Tm +(/REPLACE)Tj +/TT8 1 Tf +9 0 0 9 398.0696 551.66 Tm +0.3367 Tw +[( or their lowercase equivalents.)]TJ +/TT16 1 Tf +-24.8966 -1.2889 TD +0 Tw +(TYPE)Tj +/TT10 1 Tf +6 0 0 6 195.6035 540.06 Tm +(=NIL)Tj +/TT8 1 Tf +9 0 0 9 210.0058 540.06 Tm +0.1822 Tw +[( means )]TJ +/TT10 1 Tf +6 0 0 6 243.5949 540.06 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 261.5979 540.06 Tm +0.1822 Tw +[(. If )]TJ +/TT16 1 Tf +2.2166 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1822 Tw +[( corresponds to a fetch operation, i.e. is )]TJ +/TT10 1 Tf +6 0 0 6 473.6213 540.06 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 491.6242 540.06 Tm +0.1822 Tw +(, or )Tj +/TT10 1 Tf +6 0 0 6 510.1225 540.06 Tm +0 Tw +(FFETCH)Tj +/TT8 1 Tf +9 0 0 9 531.726 540.06 Tm +(,)Tj +/TT10 1 Tf +6 0 0 6 174 528.46 Tm +(RECORDACCESS)Tj +/TT8 1 Tf +9 0 0 9 217.207 528.46 Tm +0.2978 Tw +[( performs )]TJ +/TT10 1 Tf +6 0 0 6 263.568 528.46 Tm +0 Tw +(\()Tj +/TT16 1 Tf +9 0 0 9 267.1686 528.46 Tm +(TYPE)Tj +/TT10 1 Tf +6 0 0 6 288.7721 528.46 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 296.6627 528.46 Tm +(FIELD)Tj +/TT10 1 Tf +6 0 0 6 323.6671 528.46 Tm +0.715 Tw +[( of )]TJ +/TT16 1 Tf +9 0 0 9 346.6494 528.46 Tm +0 Tw +(DATUM)Tj +/TT10 1 Tf +6 0 0 6 373.6538 528.46 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 377.2544 528.46 Tm +0.2978 Tw +[(. If )]TJ +/TT16 1 Tf +2.5633 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2978 Tw +[( corresponds to a replace,)]TJ +/TT10 1 Tf +6 0 0 6 174 516.86 Tm +0 Tw +(RECORDACCESS)Tj +/TT8 1 Tf +9 0 0 9 217.207 516.86 Tm +0.2311 Tw +[( performs )]TJ +/TT10 1 Tf +6 0 0 6 262.368 516.86 Tm +0 Tw +(\()Tj +/TT16 1 Tf +9 0 0 9 265.9686 516.86 Tm +(TYPE)Tj +/TT10 1 Tf +6 0 0 6 287.5721 516.86 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 294.4927 516.86 Tm +(FIELD)Tj +/TT10 1 Tf +6 0 0 6 321.4971 516.86 Tm +0.5533 Tw +[( of )]TJ +/TT16 1 Tf +9 0 0 9 342.5394 516.86 Tm +0 Tw +(DATUM)Tj +/TT10 1 Tf +6 0 0 6 369.5438 516.86 Tm +0.5533 Tw +[( with )]TJ +/TT16 1 Tf +9 0 0 9 397.7873 516.86 Tm +0 Tw +(NEWVALUE)Tj +/TT10 1 Tf +6 0 0 6 440.9944 516.86 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 444.595 516.86 Tm +0.2311 Tw +(. )Tj +/TT16 1 Tf +1.2122 0 TD +0 Tw +(DEC)Tj +/TT8 1 Tf +1.8003 0 TD +0.2311 Tw +[( is an optional)]TJ +-33.0786 -1.2889 TD +0 Tw +(declaration; if given, )Tj +/TT16 1 Tf +9.312 0 TD +(FIELD)Tj +/TT8 1 Tf +3.0005 0 TD +( is interpreted as a field name of that declaration.)Tj +-12.3125 -2.0667 TD +0.1622 Tw +(Note that )Tj +/TT10 1 Tf +6 0 0 6 216.6685 486.66 Tm +0 Tw +(RECORDACCESS)Tj +/TT8 1 Tf +9 0 0 9 259.8755 486.66 Tm +0.1622 Tw +[( is relatively inefficient, although it is better than constructing the)]TJ +-9.5417 -1.2222 TD +0 Tw +(equivalent form and performing an )Tj +/TT10 1 Tf +6 0 0 6 317.2705 475.66 Tm +(EVAL)Tj +/TT8 1 Tf +9 0 0 9 331.6729 475.66 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 150 453.38 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 453.38 Tm +(RECORDACCESSFORM)Tj +/F1 1 Tf +10 0 0 10 240 453.38 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 242.87 453.38 Tm +(FIELD)Tj +/F3 1 Tf +10 0 0 10 269.8744 453.38 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 272.6544 453.38 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 299.6588 453.38 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 302.4388 453.38 Tm +(TYPE)Tj +/F3 1 Tf +10 0 0 10 324.0423 453.38 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 326.8223 453.38 Tm +(NEWVALUE)Tj +/TT10 1 Tf +6 0 0 6 370.0293 453.38 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 373.6299 453.38 Tm +[( )-12722.2([Function])]TJ +-22.1811 -1.8444 TD +0.1067 Tw +(Returns the form that would be compiled as a result of a record access. )Tj +/TT16 1 Tf +33.3227 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +[( is one of)]TJ +/TT10 1 Tf +6 0 0 6 174 425.18 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 192.0029 425.18 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 196.5029 425.18 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 221.707 425.18 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 226.207 425.18 Tm +(FFETCH)Tj +/TT8 1 Tf +9 0 0 9 247.8105 425.18 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 252.3105 425.18 Tm +(FREPLACE)Tj +/TT8 1 Tf +9 0 0 9 281.1152 425.18 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 285.6152 425.18 Tm +(/REPLACE)Tj +/TT8 1 Tf +9 0 0 9 314.4199 425.18 Tm +( or their lowercase equivalents. )Tj +/TT16 1 Tf +14.2559 0 TD +(TYPE)Tj +/TT10 1 Tf +6 0 0 6 464.3262 425.18 Tm +(=NIL)Tj +/TT8 1 Tf +9 0 0 9 478.7285 425.18 Tm +( means )Tj +/TT10 1 Tf +6 0 0 6 509.0376 425.18 Tm +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 527.0405 425.18 Tm +(. )Tj +/TT4 1 Tf +10 0 0 10 102 402.24 Tm +(Changetran)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 399.53 m +558.01 399.53 l +S +BT +/TT8 1 Tf +9 0 0 9 126 385.58 Tm +(Often, youll want to assign a new value to some datum that is a function of its current value:)Tj +0 -2 TD +(Incrementing a counter:)Tj +/TT10 1 Tf +6 0 0 6 221.0493 367.58 Tm +( \(SETQ X \(IPLUS X 1\)\))Tj +/TT8 1 Tf +9 0 0 9 126 349.58 Tm +(Pushing an item on the front of a list:)Tj +/TT10 1 Tf +6 0 0 6 273.252 349.58 Tm +( \(SETQ X \(CONS Y X\)\))Tj +/TT8 1 Tf +9 0 0 9 126 331.58 Tm +(Popping an item off a list:)Tj +/TT10 1 Tf +6 0 0 6 228.4761 331.58 Tm +( \(PROG1 \(CAR X\) \(SETQ X \(CDR X\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 313.58 Tm +0.0133 Tw +(Those are simple when youre working with a variable; it gets complicated when youre working with)Tj +0 -1.2222 TD +0 Tw +(structured data. For example, if you want to modify )Tj +/TT10 1 Tf +6 0 0 6 337.0693 302.58 Tm +(\(CAR X\))Tj +/TT8 1 Tf +9 0 0 9 362.2734 302.58 Tm +(, the above examples would be:)Tj +/TT10 1 Tf +6 0 0 6 162 290.13 Tm +(\(CAR \(RPLACA X \(IPLUS \(CAR X\) 1\)\)\))Tj +0 -1 TD +(\(CAR \(RPLACA X \(CONS Y \(CAR X\)\)\))Tj +T* +(\(PROG1 \(CAAR X\) \(RPLACA X \(CDAR X\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 262.58 Tm +(and if youre changing an element in an array, )Tj +/TT10 1 Tf +6 0 0 6 312.0249 262.58 Tm +(\(ELT A N\))Tj +/TT8 1 Tf +9 0 0 9 344.4302 262.58 Tm +(, the examples would be:)Tj +/TT10 1 Tf +6 0 0 6 162 250.13 Tm +(\(SETA A N \(IPLUS \(ELT A N\) 1\)\)\))Tj +T* +(\(SETA A N \(CONS Y \(ELT A N\)\)\)\))Tj +T* +(\(PROG1 \(CAR \(ELT A N\)\) \(SETA A N \(CDR \(ELT A N\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 222.58 Tm +0.2189 Tw +(Changetran is designed to provide a simpler way to express these common \(but user-extensible\))Tj +0 -1.2222 TD +0.4089 Tw +[(structure modifications. Changetran defines a set of CLISP words that encode the kind of)]TJ +T* +0.1422 Tw +[(modification to take placepushing on a list, adding to a number, etc. More important, you only)]TJ +T* +0.0544 Tw +[(indicate the item to be modified once. Thus, the change word )]TJ +/TT10 1 Tf +6 0 0 6 388.6261 189.58 Tm +0 Tw +(ADD)Tj +/TT8 1 Tf +9 0 0 9 399.4278 189.58 Tm +0.0544 Tw +[( is used to increase the value of a)]TJ +-30.3809 -1.2222 TD +0.0067 Tw +[(datum by the sum of a set of numbers. Its arguments are the datum, and a set of numbers to be added)]TJ +T* +0.0467 Tw +[(to it. The datum must be a variable or an accessing expression \(envolving )]TJ +/TT10 1 Tf +6 0 0 6 427.7242 167.58 Tm +0 Tw +(FETCH)Tj +/TT8 1 Tf +9 0 0 9 445.7272 167.58 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 450.6472 167.58 Tm +(CAR)Tj +/TT8 1 Tf +9 0 0 9 461.4489 167.58 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 466.3689 167.58 Tm +(LAST)Tj +/TT8 1 Tf +9 0 0 9 480.7713 167.58 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 485.6913 167.58 Tm +(ELT)Tj +/TT8 1 Tf +9 0 0 9 496.493 167.58 Tm +0.0467 Tw +(, etc\) that)Tj +-41.1659 -1.2222 TD +0 Tw +(can be translated to the appropriate setting expression.)Tj +0 -2 TD +(For example,)Tj +/TT10 1 Tf +6 0 0 6 177.7148 138.58 Tm +( \(ADD X 1\))Tj +/TT8 1 Tf +9 0 0 9 213.7207 138.58 Tm +( is equivalent to:)Tj +/TT10 1 Tf +6 0 0 6 162 126.13 Tm +(\(SETQ X \(PLUS X 1\)\))Tj +/TT8 1 Tf +9 0 0 9 126 110.58 Tm +(and )Tj +/TT10 1 Tf +6 0 0 6 143.4858 110.58 Tm +(\(ADD \(CADDR X\) \(FOO\)\))Tj +/TT8 1 Tf +9 0 0 9 219.0981 110.58 Tm +( is equivalent to:)Tj +/TT10 1 Tf +6 0 0 6 162 98.13 Tm +(\(CAR \(RPLACA \(CDDR X\) \(PLUS \(FOO\) \(CADDR X\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 82.58 Tm +0.0467 Tw +(If the datum is a complicated form involving function calls, such as )Tj +/TT10 1 Tf +6 0 0 6 400.3149 82.58 Tm +0.1117 Tw +(\(ELT \(FOO X\) \(FIE Y\)\)\))Tj +/TT8 1 Tf +9 0 0 9 482.2078 82.58 Tm +0.0467 Tw +(, Changetran)Tj +-39.5786 -1.2222 TD +0.1978 Tw +(goes to some lengths to make sure that those subsidiary functions are evaluated only once, even)Tj +T* +0.0922 Tw +[(though they are used in both the setting and accessing parts of the translation. You can rely on the)]TJ +T* +0 Tw +(fact that the forms will be evaluated only as often as they appear in your expression. )Tj +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/F3 48 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +55 0 obj +<< +/Length 8849 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-13)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(For )Tj +/TT10 1 Tf +6 0 0 6 94.3636 569.54 Tm +(ADD)Tj +/TT8 1 Tf +9 0 0 9 105.1654 569.54 Tm +0.0711 Tw +[( and all other changewords, the lowercase version \()]TJ +/TT10 1 Tf +6 0 0 6 314.5784 569.54 Tm +0 Tw +(add)Tj +/TT8 1 Tf +9 0 0 9 325.3801 569.54 Tm +0.0711 Tw +[(, etc.\) may also be specified. Like other)]TJ +-27.4867 -1.2222 TD +0 Tw +(CLISP words, change words are translated using all CLISP declarations in effect \(see Chapter 21\).)Tj +0 -2 TD +0.0278 Tw +[(The following is a list of those change words recognized by Changetran. Except for POP, the value of)]TJ +0 -1.2222 TD +0 Tw +(all built-in changeword forms is defined to be the new value of the datum.)Tj +/TT10 1 Tf +6 0 0 6 102 507.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 507.26 Tm +(ADD)Tj +/F1 1 Tf +10 0 0 10 121.8 507.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 124.67 507.26 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 151.6744 507.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 154.4544 507.26 Tm +(ITEM)Tj +6 0 0 6 176.05 504.26 Tm +(1)Tj +/F3 1 Tf +10 0 0 10 179.65 507.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 182.43 507.26 Tm +(ITEM)Tj +6 0 0 6 204.03 504.26 Tm +(2)Tj +/F3 1 Tf +10 0 0 10 207.63 507.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 210.41 507.26 Tm +(...)Tj +/TT10 1 Tf +6 0 0 6 226.6126 507.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 230.2132 507.26 Tm +[( )-21044.1([Change Word])]TJ +-11.5792 -2.0611 TD +0.1033 Tw +(Adds the specified items to the current value of the datum, stores the result back in the)Tj +0 -1.2222 TD +0.2633 Tw +[(datum location. The translation will use )]TJ +/TT10 1 Tf +6 0 0 6 305.4777 477.71 Tm +0 Tw +(IPLUS)Tj +/TT8 1 Tf +9 0 0 9 323.4806 477.71 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 330.3506 477.71 Tm +(PLUS)Tj +/TT8 1 Tf +9 0 0 9 344.753 477.71 Tm +0.2633 Tw +(, or )Tj +/TT10 1 Tf +6 0 0 6 364.7112 477.71 Tm +0 Tw +(FPLUS)Tj +/TT8 1 Tf +9 0 0 9 382.7141 477.71 Tm +0.2633 Tw +[( according to the CLISP)]TJ +-28.5238 -1.2222 TD +0 Tw +(declarations in effect \(see Chapter 21\).)Tj +/TT10 1 Tf +6 0 0 6 102 444.43 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 444.43 Tm +(PUSH)Tj +/F1 1 Tf +10 0 0 10 127.2 444.43 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 130.07 444.43 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 157.0744 444.43 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 159.8544 444.43 Tm +(ITEM)Tj +6 0 0 6 181.45 441.43 Tm +(1)Tj +/F3 1 Tf +10 0 0 10 185.05 444.43 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 187.83 444.43 Tm +(ITEM)Tj +6 0 0 6 209.43 441.43 Tm +(2)Tj +/F3 1 Tf +10 0 0 10 213.03 444.43 Tm +( ...)Tj +/TT10 1 Tf +6 0 0 6 224.15 444.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 227.7506 444.43 Tm +[( )-21317.7([Change Word])]TJ +/TT10 1 Tf +6 0 0 6 126 425.88 Tm +(CONS)Tj +/TT8 1 Tf +9 0 0 9 140.4023 425.88 Tm +0.0167 Tw +(es the items onto the front of the current value of the datum, and stores the result back)Tj +-1.6003 -1.2222 TD +0.0489 Tw +[(in the datum location. For example, )]TJ +/TT10 1 Tf +6 0 0 6 274.9257 414.88 Tm +0.1167 Tw +(\(PUSH X A B\))Tj +/TT8 1 Tf +9 0 0 9 320.2327 414.88 Tm +0.0489 Tw +[( would translate as )]TJ +/TT10 1 Tf +6 0 0 6 399.6793 414.88 Tm +0.1167 Tw +(\(SETQ X \(CONS A \(CONS B)Tj +-45.6132 -1.8333 TD +0 Tw +(X\)\)\))Tj +/TT8 1 Tf +9 0 0 9 140.4023 403.88 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 102 381.6 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 381.6 Tm +(PUSHNEW)Tj +/F1 1 Tf +10 0 0 10 143.4 381.6 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 146.27 381.6 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 173.2744 381.6 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 176.0544 381.6 Tm +(ITEM)Tj +/TT10 1 Tf +6 0 0 6 197.6579 381.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 201.2585 381.6 Tm +[( )-24261.3([Change Word])]TJ +-8.3621 -1.8444 TD +(Like )Tj +/TT10 1 Tf +6 0 0 6 146.1431 365 Tm +(PUSH)Tj +/TT8 1 Tf +9 0 0 9 160.5454 365 Tm +0.0511 Tw +[( \(with only one item\) except that the item is not added if it is already )]TJ +/TT10 1 Tf +6 0 0 6 442.1769 365 Tm +0 Tw +(FMEMB)Tj +/TT8 1 Tf +9 0 0 9 460.1799 365 Tm +0.0511 Tw +[( of the)]TJ +-37.1311 -1.2222 TD +0 Tw +(datums value.)Tj +0 -2 TD +0.1156 Tw +(Note that, whereas )Tj +/TT10 1 Tf +6 0 0 6 206.6044 336 Tm +0.2783 Tw +(\(CAR \(PUSH X FOO\)\))Tj +/TT8 1 Tf +9 0 0 9 280.0255 336 Tm +0.1156 Tw +[( will always be )]TJ +/TT10 1 Tf +6 0 0 6 345.7836 336 Tm +0 Tw +(FOO)Tj +/TT8 1 Tf +9 0 0 9 356.5854 336 Tm +(,)Tj +/TT18 1 Tf +0.25 0 TD +( )Tj +/TT10 1 Tf +6 0 0 6 362.1254 336 Tm +0.2783 Tw +(\(CAR \(PUSHNEW X FOO\)\))Tj +/TT8 1 Tf +9 0 0 9 446.3483 336 Tm +0.1156 Tw +[( might be)]TJ +-35.5943 -1.2222 TD +0 Tw +(something else if )Tj +/TT10 1 Tf +6 0 0 6 195.4424 325 Tm +(FOO)Tj +/TT8 1 Tf +9 0 0 9 206.2441 325 Tm +( already existed in the middle of the list.)Tj +/TT10 1 Tf +6 0 0 6 102 302.72 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 302.72 Tm +(PUSHLIST)Tj +/F1 1 Tf +10 0 0 10 148.8 302.72 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 151.67 302.72 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 178.6744 302.72 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 181.4544 302.72 Tm +(ITEM)Tj +6 0 0 6 203.05 299.72 Tm +(1)Tj +/F3 1 Tf +10 0 0 10 206.65 302.72 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 209.43 302.72 Tm +(ITEM)Tj +6 0 0 6 231.03 299.72 Tm +(2)Tj +/F3 1 Tf +10 0 0 10 234.63 302.72 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 237.41 302.72 Tm +(...)Tj +/TT10 1 Tf +6 0 0 6 253.6126 302.72 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 257.2132 302.72 Tm +[( )-18044.1([Change Word])]TJ +-14.5792 -2.0611 TD +0.0111 Tw +(Similar to )Tj +/TT10 1 Tf +6 0 0 6 167.1306 284.17 Tm +0 Tw +(PUSH)Tj +/TT8 1 Tf +9 0 0 9 181.533 284.17 Tm +0.0111 Tw +(, except that the items are )Tj +/TT10 1 Tf +6 0 0 6 285.5759 284.17 Tm +0 Tw +(APPEND)Tj +/TT8 1 Tf +9 0 0 9 307.1794 284.17 Tm +0.0111 Tw +(ed in front of the current value of the datum.)Tj +-20.131 -1.2222 TD +0 Tw +(For example, )Tj +/TT10 1 Tf +6 0 0 6 179.9648 273.17 Tm +(\(PUSHLIST X A B\))Tj +/TT8 1 Tf +9 0 0 9 237.5742 273.17 Tm +( translates as \()Tj +/TT10 1 Tf +6 0 0 6 293.8594 273.17 Tm +(SETQ X \(APPEND A B X\)\))Tj +/TT8 1 Tf +9 0 0 9 373.0723 273.17 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 102 250.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 250.89 Tm +(POP)Tj +/F1 1 Tf +10 0 0 10 121.8 250.89 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 124.67 250.89 Tm +(DATUM)Tj +/TT10 1 Tf +6 0 0 6 151.6744 250.89 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 155.275 250.89 Tm +[( )-29370.6([Change Word])]TJ +-3.2528 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +6 0 0 6 160.9134 234.29 Tm +(CAR)Tj +/TT8 1 Tf +9 0 0 9 171.7152 234.29 Tm +0.1522 Tw +[( of the current value of the datum after storing its )]TJ +/TT10 1 Tf +6 0 0 6 385.3389 234.29 Tm +0 Tw +(CDR)Tj +/TT8 1 Tf +9 0 0 9 396.1407 234.29 Tm +0.1522 Tw +[( into the datum. The)]TJ +-30.0156 -1.2222 TD +0.0567 Tw +[(current value is computed only once even though it is referenced twice. Note that this is)]TJ +T* +0.0689 Tw +(the only built-in changeword for which the value of the form is not the new value of the)Tj +T* +0 Tw +(datum.)Tj +/TT10 1 Tf +6 0 0 6 102 179.01 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 179.01 Tm +(SWAP)Tj +/F1 1 Tf +10 0 0 10 127.2 179.01 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 130.07 179.01 Tm +(DATUM)Tj +6 0 0 6 157.07 176.01 Tm +(1)Tj +/F3 1 Tf +10 0 0 10 160.67 179.01 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 163.45 179.01 Tm +(DATUM)Tj +6 0 0 6 190.45 176.01 Tm +(2)Tj +/TT10 1 Tf +0.6 0.5 TD +(\))Tj +/TT8 1 Tf +9 0 0 9 197.6506 179.01 Tm +[( )-24662.2([Change Word])]TJ +-7.9612 -2.0611 TD +(Sets )Tj +/TT16 1 Tf +2.0039 0 TD +(DATUM)Tj +6 0 0 6 171.03 157.46 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 174.63 160.46 Tm +( to )Tj +/TT16 1 Tf +1.3721 0 TD +(DATUM)Tj +6 0 0 6 213.97 157.46 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 217.57 160.46 Tm +( and vice versa.)Tj +/TT10 1 Tf +6 0 0 6 102 135.63 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 135.63 Tm +(CHANGE)Tj +/F1 1 Tf +10 0 0 10 138 135.63 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 140.87 135.63 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 167.8744 135.63 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 170.6544 135.63 Tm +(FORM)Tj +/TT10 1 Tf +6 0 0 6 192.2579 135.63 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 195.8585 135.63 Tm +[( )-24861.3([Change Word])]TJ +-7.7621 -1.8444 TD +0.0422 Tw +[(This is the most flexible of all change words: You give an arbitrary form describing what)]TJ +0 -1.2222 TD +0.19 Tw +[(the new value should be. But it still highlights the fact that structure modification is)]TJ +T* +0.1156 Tw +(happening, and still lets the datum appear only once. )Tj +/TT10 1 Tf +6 0 0 6 352.6021 97.03 Tm +0 Tw +(CHANGE)Tj +/TT8 1 Tf +9 0 0 9 374.2057 97.03 Tm +0.1156 Tw +[( sets )]TJ +/TT16 1 Tf +2.3839 0 TD +0 Tw +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +0.1156 Tw +[( to the value of)]TJ +/TT16 1 Tf +-32.9628 -1.2889 TD +0 Tw +(FORM)Tj +/TT10 1 Tf +6 0 0 6 147.6035 85.43 Tm +(*)Tj +/TT8 1 Tf +9 0 0 9 151.2041 85.43 Tm +0.0989 Tw +(, where )Tj +/TT16 1 Tf +3.7168 0 TD +0 Tw +(FORM)Tj +/TT10 1 Tf +6 0 0 6 206.259 85.43 Tm +(*)Tj +/TT8 1 Tf +9 0 0 9 209.8596 85.43 Tm +0.0989 Tw +[( is constructed from )]TJ +/TT16 1 Tf +9.4468 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +[( by substituting the datum expression for)]TJ +-21.165 -1.2889 TD +0 Tw +(every occurrence of the symbol )Tj +/TT10 1 Tf +6 0 0 6 252.4834 73.83 Tm +(DATUM)Tj +/TT8 1 Tf +9 0 0 9 270.4863 73.83 Tm +(. For example,)Tj +/TT10 1 Tf +6 0 0 6 162 61.38 Tm +(\(CHANGE \(CAR X\) \(ITIMES DATUM 5\)\))Tj +/TT8 1 Tf +9 0 0 9 126 45.83 Tm +(translates as)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/F3 48 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 16 0 R +/TT18 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +58 0 obj +<< +/Length 7886 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +6 0 0 6 210 569.54 Tm +(\(CAR \(RPLACA X \(ITIMES \(CAR X\) 5\)\)\))Tj +/TT8 1 Tf +9 0 0 9 336.0205 569.54 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 174 553.54 Tm +(CHANGE)Tj +/TT8 1 Tf +9 0 0 9 195.6035 553.54 Tm +0.1978 Tw +[( is useful for expressing modifications that are not built-in and are not common)]TJ +-2.4004 -1.2222 TD +0 Tw +(enough to justify defining a user-changeword. )Tj +-5.3333 -2 TD +0.1 Tw +[(You can define new change words. To define a change word, say )]TJ +/TT10 1 Tf +6 0 0 6 400.1107 524.54 Tm +0 Tw +(sub)Tj +/TT8 1 Tf +9 0 0 9 410.9124 524.54 Tm +0.1 Tw +(, that subtracts items from the)Tj +-31.6569 -1.2222 TD +0.0944 Tw +(current value of the datum, you must put the property )Tj +/TT10 1 Tf +6 0 0 6 353.7299 513.54 Tm +0 Tw +(CLISPWORD)Tj +/TT8 1 Tf +9 0 0 9 386.1352 513.54 Tm +0.0944 Tw +(, value )Tj +/TT10 1 Tf +6 0 0 6 416.5271 513.54 Tm +0.2267 Tw +(\(CHANGETRAN . sub\))Tj +/TT8 1 Tf +9 0 0 9 484.0577 513.54 Tm +0.0944 Tw +[( on both the)]TJ +-39.7842 -1.2222 TD +0 Tw +(upper- and lower-case versions of sub:)Tj +/TT10 1 Tf +6 0 0 6 162 490.09 Tm +(\(PUTPROP SUB CLISPWORD \(CHANGETRAN . sub\)\))Tj +0 -1 TD +(\(PUTPROP sub CLISPWORD \(CHANGETRAN . sub\)\))Tj +/TT8 1 Tf +9 0 0 9 126 468.54 Tm +0.0167 Tw +(Then, you must put \(on the )Tj +/TT14 1 Tf +12.4252 0 TD +0 Tw +(lower)Tj +/TT8 1 Tf +2.2222 0 TD +0.0167 Tw +(-case version of )Tj +/TT10 1 Tf +6 0 0 6 322.0892 468.54 Tm +0 Tw +(sub)Tj +/TT8 1 Tf +9 0 0 9 332.891 468.54 Tm +0.0167 Tw +[( only\) the property )]TJ +/TT10 1 Tf +6 0 0 6 410.8435 468.54 Tm +0 Tw +(CHANGEWORD)Tj +/TT8 1 Tf +9 0 0 9 446.8494 468.54 Tm +0.0167 Tw +(, with value )Tj +/TT16 1 Tf +5.5212 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0167 Tw +(. )Tj +/TT16 1 Tf +0.7833 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0167 Tw +[( is)]TJ +-44.3549 -1.2889 TD +0.06 Tw +(a function that will be applied to a single argument, the whole )Tj +/TT10 1 Tf +6 0 0 6 382.1685 456.94 Tm +0 Tw +(sub)Tj +/TT8 1 Tf +9 0 0 9 392.9702 456.94 Tm +0.06 Tw +[( form, and must return a form that)]TJ +-29.6634 -1.2222 TD +0.02 Tw +[(Changetran can translate into an appropriate expression. This form should be a list structure with the)]TJ +T* +0 Tw +(symbol )Tj +/TT10 1 Tf +6 0 0 6 158.2363 434.94 Tm +(DATUM)Tj +/TT8 1 Tf +9 0 0 9 176.2393 434.94 Tm +0.0789 Tw +[( used whenever you want an accessing expression for the current value of the datum to)]TJ +-5.5821 -1.2222 TD +0.2289 Tw +[(appear. The form )]TJ +/TT10 1 Tf +6 0 0 6 207.6506 423.94 Tm +0 Tw +(\(DATUM)Tj +/TT19 1 Tf +3.6006 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( )Tj +/TT16 1 Tf +9 0 0 9 242.0756 423.94 Tm +(FORM)Tj +/TT10 1 Tf +6 0 0 6 263.6791 423.94 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 267.2797 423.94 Tm +0.2289 Tw +[( \(note that )]TJ +/TT10 1 Tf +6 0 0 6 316.2141 423.94 Tm +0 Tw +(DATUM)Tj +/TT19 1 Tf +3.0005 0 TD +<0040>Tj +/TT8 1 Tf +9 0 0 9 340.138 423.94 Tm +0.2289 Tw +[( is a single symbol\) should occur once in the)]TJ +-23.7931 -1.2889 TD +0.1033 Tw +(expression; this specifies that an appropriate storing expression into the datum should occur at that)Tj +0 -1.2222 TD +0 Tw +(point. For example, )Tj +/TT10 1 Tf +6 0 0 6 207.8306 401.34 Tm +(sub)Tj +/TT8 1 Tf +9 0 0 9 218.6323 401.34 Tm +( could be defined as:)Tj +/TT10 1 Tf +6 0 0 6 162 388.89 Tm +(\(PUTPROP sub CHANGEWORD)Tj +0 -1 TD +( \(LAMBDA \(FORM\))Tj +T* +( \(LIST DATUM)Tj +/TT19 1 Tf +14.4023 0 TD +<0040>Tj +/TT10 1 Tf +-14.4023 -1 TD +( \(LIST IDIFFERENCE)Tj +T* +( DATUM)Tj +T* +( \(CONS IPLUS \(CDDR FORM\)\)\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 343.34 Tm +0.0533 Tw +(If the expression )Tj +/TT10 1 Tf +6 0 0 6 195.3355 343.34 Tm +0.1283 Tw +(\(sub \(CAR X\) A B\))Tj +/TT8 1 Tf +9 0 0 9 259.6255 343.34 Tm +0.0533 Tw +[( were encountered, the arguments to SUB would first be dwimified,)]TJ +-14.8473 -1.2222 TD +0.2611 Tw +(and then the )Tj +/TT10 1 Tf +6 0 0 6 185.2438 332.34 Tm +0 Tw +(CHANGEWORD)Tj +/TT8 1 Tf +9 0 0 9 221.2497 332.34 Tm +0.2611 Tw +[( function would be passed the list )]TJ +/TT10 1 Tf +6 0 0 6 373.8862 332.34 Tm +0.6267 Tw +(\(sub \(CAR X\) A B\))Tj +/TT8 1 Tf +9 0 0 9 450.1362 332.34 Tm +0.2611 Tw +(, and return )Tj +/TT10 1 Tf +6 0 0 6 506.4445 332.34 Tm +0 Tw +(\(DATUM)Tj +/TT19 1 Tf +3.6006 0 TD +<0040>Tj +/TT10 1 Tf +-67.008 -1.8333 TD +0.205 Tw +(\(IDIFFERENCE DATUM \(IPLUS A B\)\)\))Tj +/TT8 1 Tf +9 0 0 9 246.1387 321.34 Tm +0.0856 Tw +(, which Changetran would convert to )Tj +/TT10 1 Tf +6 0 0 6 401.8515 321.34 Tm +0.205 Tw +(\(CAR \(RPLACA X \(IDIFFERENCE \(CAR X\))Tj +-45.9753 -1.8333 TD +0 Tw +(\(IPLUS A B\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 176.4082 310.34 Tm +(.)Tj +/TT18 1 Tf +-5.6009 -2 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0611 Tw +[(: The )]TJ +/TT10 1 Tf +6 0 0 6 171.7139 292.34 Tm +0 Tw +(sub)Tj +/TT8 1 Tf +9 0 0 9 182.5157 292.34 Tm +0.0611 Tw +[( changeword as defined above will always use )]TJ +/TT10 1 Tf +6 0 0 6 374.1096 292.34 Tm +0 Tw +(IDIFFERENCE)Tj +/TT8 1 Tf +9 0 0 9 413.716 292.34 Tm +0.0611 Tw +[( and )]TJ +/TT10 1 Tf +6 0 0 6 434.5518 292.34 Tm +0 Tw +(IPLUS)Tj +/TT8 1 Tf +9 0 0 9 452.5547 292.34 Tm +(; )Tj +/TT10 1 Tf +6 0 0 6 457.6048 292.34 Tm +(add)Tj +/TT8 1 Tf +9 0 0 9 468.4065 292.34 Tm +0.0611 Tw +[( uses the correct)]TJ +-38.0452 -1.2222 TD +0 Tw +(addition operation depending on the current CLISP declarations \(see Chapter 21\).)Tj +/TT4 1 Tf +10 0 0 10 102 259 Tm +(Built-In and User Data Types)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 256.29 m +558.01 256.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 242.34 Tm +0.0867 Tw +(Medley is a system for manipulating various kinds of data; it comes with a large set of built-in data)Tj +T* +0 Tw +(types, which you can use to represent a variety of abstract objects; you can also define additional user)Tj +T* +(data types that you can manipulate exactly like built-in data types.)Tj +0 -2 TD +0.0378 Tw +[(Each data type in Medley has an associated type name, a symbol. Some of the type names of built-)]TJ +0 -1.2222 TD +0.1011 Tw +(in data types are: )Tj +/TT10 1 Tf +6 0 0 6 203.1828 191.34 Tm +0 Tw +(LITATOM)Tj +/TT8 1 Tf +9 0 0 9 228.3869 191.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 233.7969 191.34 Tm +(LISTP)Tj +/TT8 1 Tf +9 0 0 9 251.7998 191.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 257.2098 191.34 Tm +(STRINGP)Tj +/TT8 1 Tf +9 0 0 9 282.4139 191.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 287.8239 191.34 Tm +(ARRAYP)Tj +/TT8 1 Tf +9 0 0 9 309.4274 191.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 314.8374 191.34 Tm +(STACKP)Tj +/TT8 1 Tf +9 0 0 9 336.4409 191.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 341.851 191.34 Tm +(SMALLP)Tj +/TT8 1 Tf +9 0 0 9 363.4545 191.34 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 368.8645 191.34 Tm +(FIXP)Tj +/TT8 1 Tf +9 0 0 9 383.2668 191.34 Tm +0.1011 Tw +(, and )Tj +/TT10 1 Tf +6 0 0 6 407.0727 191.34 Tm +0 Tw +(FLOATP)Tj +/TT8 1 Tf +9 0 0 9 428.6762 191.34 Tm +0.1011 Tw +[(. For user data types, the)]TJ +-33.6307 -1.2222 TD +0 Tw +(type name is specified when the data type is created.)Tj +/TT10 1 Tf +6 0 0 6 150 159.34 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 159.34 Tm +(DATATYPES)Tj +/TT10 1 Tf +6 0 0 6 202.2 159.34 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 205.8006 159.34 Tm +()Tj +/TT10 1 Tf +6 0 0 6 211.2014 159.34 Tm +( \))Tj +/TT8 1 Tf +9 0 0 9 218.4026 159.34 Tm +[( )-29969.7([Function])]TJ +-4.9336 -1.8444 TD +(Returns a list of all type names currently defined.)Tj +/TT10 1 Tf +6 0 0 6 150 121.74 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 121.74 Tm +(USERDATATYPES)Tj +/TT10 1 Tf +6 0 0 6 223.8 121.74 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 227.4006 121.74 Tm +[( )-28969.9([Function])]TJ +-5.9334 -1.8444 TD +(Returns list of names of currently declared user data types.)Tj +/TT10 1 Tf +6 0 0 6 150 82.86 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 82.86 Tm +(TYPENAME)Tj +/F1 1 Tf +10 0 0 10 196.8 82.86 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 199.67 82.86 Tm +(DATUM)Tj +/TT10 1 Tf +6 0 0 6 226.6744 82.86 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 230.275 82.86 Tm +[( )-28650.6([Function])]TJ +-6.2528 -1.8444 TD +(Returns the type name for the data type of )Tj +/TT16 1 Tf +18.96 0 TD +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT18 20 0 R +/TT19 34 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +61 0 obj +<< +/Length 7808 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-15)Tj +/TT6 1 Tf +10 0 0 10 329.55 612 Tm +(RECORDS AND DATA STRUCTURES)Tj +/TT10 1 Tf +6 0 0 6 102 568.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 568.26 Tm +(TYPENAMEP)Tj +/F1 1 Tf +10 0 0 10 154.2 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 157.07 568.26 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 184.0744 568.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 186.8544 568.26 Tm +(TYPE)Tj +/TT10 1 Tf +6 0 0 6 208.4579 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 212.0585 568.26 Tm +[( )-25341.3([Function])]TJ +-9.5621 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +6 0 0 6 159.5434 551.66 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 163.144 551.66 Tm +( if )Tj +/TT16 1 Tf +1.124 0 TD +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +( is an object with type name equal to )Tj +/TT16 1 Tf +16.3735 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +(, otherwise )Tj +/TT10 1 Tf +6 0 0 6 415.1836 551.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 425.9854 551.66 Tm +(.)Tj +-38.665 -2.0667 TD +0.1656 Tw +(In addition to built-in data-types like symbols, lists, arrays, etc., Medley provides a way to define)Tj +0 -1.2222 TD +0 Tw +(completely )Tj +/TT14 1 Tf +5.2616 0 TD +(new)Tj +/TT8 1 Tf +1.6675 0 TD +0.1156 Tw +[( classes of objects, with a fixed number of fields determined by the definition of the)]TJ +-6.929 -1.2222 TD +0.1767 Tw +[(data type. To define a new class of objects, you must supply a name for the new data type and)]TJ +T* +0.0278 Tw +[(specifications for each of its fields. Each field may contain either a pointer \(i.e., any arbitrary Interlisp)]TJ +T* +0 Tw +(datum\), an integer, a floating point number, or an )Tj +/TT14 1 Tf +22.2358 0 TD +(N)Tj +/TT8 1 Tf +0.7778 0 TD +(-bit integer.)Tj +/TT18 1 Tf +-23.0137 -2 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0578 Tw +[(: The most convenient way to define new user data types is via )]TJ +/TT10 1 Tf +6 0 0 6 359.1296 471.06 Tm +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +9 0 0 9 387.9343 471.06 Tm +0.0578 Tw +[( record declarations \(see)]TJ +-34.4371 -1.2222 TD +0 Tw +(Chapter 8\) which call the following functions.)Tj +/TT10 1 Tf +6 0 0 6 102 437.78 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 437.78 Tm +(DECLAREDATATYPE)Tj +/F1 1 Tf +10 0 0 10 186.6 437.78 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 189.47 437.78 Tm +(TYPENAME)Tj +/F3 1 Tf +10 0 0 10 232.677 437.78 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 235.457 437.78 Tm +(FIELDSPECS)Tj +/F3 1 Tf +10 0 0 10 289.4658 437.78 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 292.2458 437.78 Tm +()Tj +/F3 1 Tf +10 0 0 10 297.6467 437.78 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 300.4267 437.78 Tm +()Tj +/TT10 1 Tf +6 0 0 6 305.8276 437.78 Tm +( \))Tj +/TT8 1 Tf +9 0 0 9 313.0287 437.78 Tm +[( )-14122.4([Function])]TJ +-20.781 -1.8444 TD +0.0844 Tw +(Defines a new user data type, with the name )Tj +/TT16 1 Tf +20.6814 0 TD +0 Tw +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.0844 Tw +(. )Tj +/TT16 1 Tf +0.9189 0 TD +0 Tw +(FIELDSPECS)Tj +/TT8 1 Tf +6.001 0 TD +0.0844 Tw +[( is a list of field)]TJ +-32.402 -1.2889 TD +0 Tw +(specifications. Each field specification may be one of the following:)Tj +/TT10 1 Tf +6 0 0 6 166.8 391.58 Tm +(POINTER)Tj +/TT8 1 Tf +9 0 0 9 198 391.58 Tm +(Field may contain any Interlisp datum.)Tj +/TT10 1 Tf +6 0 0 6 177.6 373.58 Tm +(FIXP)Tj +/TT8 1 Tf +9 0 0 9 198 373.58 Tm +(Field contains an integer.)Tj +/TT10 1 Tf +6 0 0 6 170.4 355.58 Tm +(FLOATP)Tj +/TT8 1 Tf +9 0 0 9 198 355.58 Tm +(Field contains a floating point number.)Tj +/TT10 1 Tf +6 0 0 6 161.4 335.18 Tm +(\(BITS )Tj +/TT16 1 Tf +9 0 0 9 183.0035 335.18 Tm +(N)Tj +/TT10 1 Tf +6 0 0 6 188.4044 335.18 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 198 335.18 Tm +(Field contains a non-negative integer less than 2)Tj +/TT16 1 Tf +21.21 0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 -0.3333 TD +(.)Tj +/TT10 1 Tf +6 0 0 6 177.6 316.58 Tm +(BYTE)Tj +/TT8 1 Tf +9 0 0 9 198 316.58 Tm +(Equivalent to )Tj +/TT10 1 Tf +6 0 0 6 253.6216 316.58 Tm +(\(BITS 8\))Tj +/TT8 1 Tf +9 0 0 9 282.4263 316.58 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 177.6 298.58 Tm +(WORD)Tj +/TT8 1 Tf +9 0 0 9 198 298.58 Tm +(Equivalent to )Tj +/TT10 1 Tf +6 0 0 6 253.6216 298.58 Tm +(\(BITS 16\))Tj +/TT8 1 Tf +9 0 0 9 286.0269 298.58 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 156 280.58 Tm +(SIGNEDWORD)Tj +/TT8 1 Tf +9 0 0 9 198 280.58 Tm +(Field contains a 16 bit signed integer.)Tj +/TT10 1 Tf +6 0 0 6 198 262.58 Tm +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 252.0088 262.58 Tm +0.0989 Tw +[( returns a list of field descriptors, one for each element)]TJ +-6.001 -1.2222 TD +0 Tw +(of )Tj +/TT16 1 Tf +1.2467 0 TD +(FIELDSPECS)Tj +/TT8 1 Tf +6.001 0 TD +0.1178 Tw +[(. A field descriptor contains information about where)]TJ +-7.2477 -1.2889 TD +0 Tw +(within the datum the field is actually stored.)Tj +0 -2 TD +(If )Tj +/TT16 1 Tf +1.191 0 TD +(FIELDSPECS)Tj +/TT8 1 Tf +6.001 0 TD +0.2711 Tw +[( is )]TJ +/TT10 1 Tf +6 0 0 6 278.5417 221.98 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 289.3434 221.98 Tm +(, )Tj +/TT16 1 Tf +0.7711 0 TD +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.2711 Tw +[( is undeclared. If )]TJ +/TT16 1 Tf +10.2349 0 TD +0 Tw +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.2711 Tw +[( is)]TJ +-30.7569 -1.2889 TD +0.1156 Tw +(already declared as a data type, it is undeclared, and then re-declared)Tj +0 -1.2222 TD +0.1222 Tw +(with the new )Tj +/TT16 1 Tf +6.4321 0 TD +0 Tw +(FIELDSPECS)Tj +/TT8 1 Tf +6.001 0 TD +0.1222 Tw +[(. An instance of a data type that has been)]TJ +-12.4331 -1.2889 TD +0 Tw +(undeclared has a type name of )Tj +/TT10 1 Tf +6 0 0 6 322.0708 187.78 Tm +(**DEALLOC**)Tj +/TT8 1 Tf +9 0 0 9 361.6772 187.78 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 102 165.5 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 165.5 Tm +(FETCHFIELD)Tj +/F1 1 Tf +10 0 0 10 159.6 165.5 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 162.47 165.5 Tm +(DESCRIPTOR)Tj +/F3 1 Tf +10 0 0 10 216.4788 165.5 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 219.2588 165.5 Tm +(DATUM)Tj +/TT10 1 Tf +6 0 0 6 246.2632 165.5 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 249.8638 165.5 Tm +[( )-21140.7([Function])]TJ +-13.7626 -1.8444 TD +0.1122 Tw +(Returns the contents of the field described by )Tj +/TT16 1 Tf +21.138 0 TD +0 Tw +(DESCRIPTOR)Tj +/TT8 1 Tf +6.001 0 TD +0.1122 Tw +[( from )]TJ +/TT16 1 Tf +2.8812 0 TD +0 Tw +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +0.1122 Tw +(. )Tj +/TT16 1 Tf +0.9744 0 TD +0 Tw +(DESCRIPTOR)Tj +/TT8 1 Tf +-33.9951 -1.2889 TD +0.0289 Tw +(must be a field descriptor as returned by )Tj +/TT10 1 Tf +6 0 0 6 300.7719 137.3 Tm +0 Tw +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 354.7807 137.3 Tm +0.0289 Tw +[( or )]TJ +/TT10 1 Tf +6 0 0 6 368.269 137.3 Tm +0 Tw +(GETDESCRIPTORS)Tj +/TT8 1 Tf +9 0 0 9 418.6772 137.3 Tm +0.0289 Tw +[(. If )]TJ +/TT16 1 Tf +1.7566 0 TD +0 Tw +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0289 Tw +[( is not)]TJ +-37.2768 -1.2889 TD +0.1367 Tw +(an instance of the datatype of which )Tj +/TT16 1 Tf +17.194 0 TD +0 Tw +(DESCRIPTOR)Tj +/TT8 1 Tf +6.001 0 TD +0.1367 Tw +[( is a descriptor, causes error )]TJ +/TT10 1 Tf +6 0 0 6 455.175 125.7 Tm +0.3283 Tw +(Datum of)Tj +-54.8625 -1.9333 TD +0 Tw +(incorrect type)Tj +/TT8 1 Tf +9 0 0 9 176.4082 114.1 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 102 91.82 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.6006 91.82 Tm +(REPLACEFIELD)Tj +/F1 1 Tf +10 0 0 10 170.4 91.82 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 173.27 91.82 Tm +(DESCRIPTOR)Tj +/F3 1 Tf +10 0 0 10 227.2788 91.82 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 230.0588 91.82 Tm +(DATUM)Tj +/F3 1 Tf +10 0 0 10 257.0632 91.82 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 259.8432 91.82 Tm +(NEWVALUE)Tj +/TT10 1 Tf +6 0 0 6 303.0502 91.82 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 306.6508 91.82 Tm +[( )-14831([Function])]TJ +-20.0723 -1.8444 TD +(Store )Tj +/TT16 1 Tf +2.6066 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0856 Tw +[( into the field of )]TJ +/TT16 1 Tf +7.6939 0 TD +0 Tw +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0856 Tw +[( described by )]TJ +/TT16 1 Tf +6.4027 0 TD +0 Tw +(DESCRIPTOR)Tj +/TT8 1 Tf +6.001 0 TD +0.0856 Tw +(. )Tj +/TT16 1 Tf +0.9211 0 TD +0 Tw +(DESCRIPTOR)Tj +/TT8 1 Tf +6.001 0 TD +0.0856 Tw +[( must)]TJ +-37.4274 -1.2889 TD +0.1867 Tw +(be a field descriptor as returned by )Tj +/TT10 1 Tf +6 0 0 6 279.0793 63.62 Tm +0 Tw +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 333.0881 63.62 Tm +0.1867 Tw +[(. If )]TJ +/TT16 1 Tf +2.2299 0 TD +0 Tw +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +0.1867 Tw +[( is not an instance of the)]TJ +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/F3 48 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +/TT18 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +64 0 obj +<< +/Length 4780 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.04 Tw +(datatype of which )Tj +/TT16 1 Tf +8.3812 0 TD +0 Tw +(DESCRIPTOR)Tj +/TT8 1 Tf +6.001 0 TD +0.04 Tw +[( is a descriptor, causes error )]TJ +/TT10 1 Tf +6 0 0 6 418.6404 569.54 Tm +0.095 Tw +(Datum of incorrect type)Tj +/TT8 1 Tf +9 0 0 9 503.1639 569.54 Tm +0.04 Tw +[(. Value)]TJ +-36.5738 -1.2889 TD +0 Tw +(is )Tj +/TT16 1 Tf +0.9648 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +6 0 0 6 150 535.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 535.06 Tm +(NCREATE)Tj +/F1 1 Tf +10 0 0 10 191.4 535.06 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 194.27 535.06 Tm +(TYPE)Tj +/F3 1 Tf +10 0 0 10 215.8735 535.06 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 218.6535 535.06 Tm +(OLDOBJ)Tj +/TT10 1 Tf +6 0 0 6 251.0588 535.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 254.6594 535.06 Tm +[( )-25941.2([Function])]TJ +-8.9622 -1.8444 TD +(Creates and returns a new instance of datatype )Tj +/TT16 1 Tf +21.0103 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-23.4106 -2.0667 TD +(If )Tj +/TT16 1 Tf +0.9721 0 TD +(OLDOBJ)Tj +/TT8 1 Tf +3.6006 0 TD +0.0522 Tw +[( is also a datum of datatype )]TJ +/TT16 1 Tf +12.7923 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0522 Tw +(, the fields of the new object are initialized to)Tj +-19.7654 -1.2889 TD +0 Tw +(the values of the corresponding fields in )Tj +/TT16 1 Tf +18.0186 0 TD +(OLDOBJ)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +6 0 0 6 174 469.66 Tm +(NCREATE)Tj +/TT8 1 Tf +9 0 0 9 199.2041 469.66 Tm +0.09 Tw +[( will not work for built-in datatypes, such as )]TJ +/TT10 1 Tf +6 0 0 6 385.0219 469.66 Tm +0 Tw +(ARRAYP)Tj +/TT8 1 Tf +9 0 0 9 406.6254 469.66 Tm +(, )Tj +/TT10 1 Tf +6 0 0 6 411.9354 469.66 Tm +(STRINGP)Tj +/TT8 1 Tf +9 0 0 9 437.1395 469.66 Tm +0.09 Tw +[(, etc. If )]TJ +/TT16 1 Tf +3.7789 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +[( is not the)]TJ +-35.4171 -1.2889 TD +0 Tw +(type name of a previously declared )Tj +/TT14 1 Tf +15.8457 0 TD +(user)Tj +/TT8 1 Tf +1.7236 0 TD +( data type, generates an error, )Tj +/TT10 1 Tf +6 0 0 6 452.8286 458.06 Tm +(Illegal data type)Tj +/TT8 1 Tf +9 0 0 9 514.0386 458.06 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 150 435.78 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 435.78 Tm +(GETFIELDSPECS)Tj +/F1 1 Tf +10 0 0 10 223.8 435.78 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 226.67 435.78 Tm +(TYPENAME)Tj +/TT10 1 Tf +6 0 0 6 269.877 435.78 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 273.4776 435.78 Tm +[( )-23850.3([Function])]TJ +-11.0531 -1.8444 TD +0.2144 Tw +(Returns a list which is )Tj +/TT10 1 Tf +6 0 0 6 273.7115 419.18 Tm +0 Tw +(EQUAL)Tj +/TT8 1 Tf +9 0 0 9 291.7144 419.18 Tm +0.2144 Tw +[( to the )]TJ +/TT16 1 Tf +3.6526 0 TD +0 Tw +(FIELDSPECS)Tj +/TT8 1 Tf +6.001 0 TD +0.2144 Tw +[( argument given to )]TJ +/TT10 1 Tf +6 0 0 6 464.3416 419.18 Tm +0 Tw +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 518.3504 419.18 Tm +0.2144 Tw +[( for)]TJ +/TT16 1 Tf +-38.2612 -1.2889 TD +0 Tw +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +(; if )Tj +/TT16 1 Tf +1.374 0 TD +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +( is not a currently declared data-type, returns )Tj +/TT10 1 Tf +6 0 0 6 454.9072 407.58 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 465.709 407.58 Tm +(.)Tj +/TT10 1 Tf +6 0 0 6 150 384.7 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 153.6006 384.7 Tm +(GETDESCRIPTORS)Tj +/F1 1 Tf +10 0 0 10 229.2 384.7 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 232.07 384.7 Tm +(TYPENAME)Tj +/TT10 1 Tf +6 0 0 6 275.277 384.7 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 278.8776 384.7 Tm +[( )-23250.3([Function])]TJ +-11.6531 -1.8444 TD +0.1711 Tw +(Returns a list of field descriptors, )Tj +/TT10 1 Tf +6 0 0 6 317.1458 368.1 Tm +0 Tw +(EQUAL)Tj +/TT8 1 Tf +9 0 0 9 335.1487 368.1 Tm +0.1711 Tw +[( to the )]TJ +/TT14 1 Tf +3.5226 0 TD +0 Tw +(value)Tj +/TT8 1 Tf +2.167 0 TD +0.1711 Tw +[( of )]TJ +/TT10 1 Tf +6 0 0 6 401.8453 368.1 Tm +0 Tw +(DECLAREDATATYPE)Tj +/TT8 1 Tf +9 0 0 9 455.8541 368.1 Tm +0.1711 Tw +[( for )]TJ +/TT16 1 Tf +2.1161 0 TD +0 Tw +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.1711 Tw +[(. If)]TJ +/TT16 1 Tf +-38.2341 -1.2889 TD +0 Tw +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +( is not an atom, )Tj +/TT10 1 Tf +6 0 0 6 280.2598 356.5 Tm +(\(TYPENAME )Tj +/TT16 1 Tf +9 0 0 9 316.2656 356.5 Tm +(TYPENAME)Tj +/TT10 1 Tf +6 0 0 6 359.4727 356.5 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 363.0732 356.5 Tm +( is used.)Tj +-26.3415 -2.0667 TD +0.2144 Tw +(You can define how a user data type prints, using )Tj +/TT10 1 Tf +6 0 0 6 345.1369 337.9 Tm +0 Tw +(DEFPRINT)Tj +/TT8 1 Tf +9 0 0 9 373.9416 337.9 Tm +0.2144 Tw +[( \(see Chapter 25\), how they are to be)]TJ +-27.5491 -1.2222 TD +0.1722 Tw +(evaluated by the interpreter via )Tj +/TT10 1 Tf +6 0 0 6 261.5957 326.9 Tm +0 Tw +(DEFEVAL)Tj +/TT8 1 Tf +9 0 0 9 286.7998 326.9 Tm +0.1722 Tw +[( \(see Chapter 10\), and how they are to be compiled by the)]TJ +-17.8666 -1.2222 TD +0 Tw +(compiler via )Tj +/TT10 1 Tf +6 0 0 6 178.0708 315.9 Tm +(COMPILETYPELST)Tj +/TT8 1 Tf +9 0 0 9 228.479 315.9 Tm +( \(see Chapter 18\).)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 27 0 R +/F3 48 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +67 0 obj +<< +/Length 70 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-17)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +70 0 obj +<< +/Length 201 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(8-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +11 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +74 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +75 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +76 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +77 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +78 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +79 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +81 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBEPCA+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 82 0 R +>> +endobj +82 0 obj +<< +/Filter /FlateDecode +/Length 20016 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($C"(P4pb c93dCJ)FZRM)M))4|-*PRi nxj3{ߛ{o oN~?p>{ - +Lx+ +7s+&F`=c`,#Chw/C>bq(^i筭OnA}(*Bj v(o S%x|&#y/Bԇሙ\.D.#aWC:Pi2p8~陈G7q s#TI|EB.n*:栾#~+QGcvkp֒-Wz4|2[ R<^nj=c^Cro_02n"̀f H~=?Q`uPoFVPnuȪb OC gB=Z0ǒmu4Z<3d;Żl4R%LLa`L1?YY \N7~{|`b.god5,@g ,B4fi6.6.6.e6.q+m\ecO۸56>c6#u6>o:lc/ظm|99~"NzYфI*i0輄mC0Xg QլhBZLW?w+*a +oĕ }URt=VTS!.or[ ]R`ExQsO!&| ?6iUiEpQ|<,-_2] WNT2BWC|oЛ (\ h]Qn-VziGm%dcS 5,G31w%ǽeɉ"Kv[@ed3^(Q=oHHD`iB4f0gzM!~Cw\j?Mio0JS3$?] ˪wwz;̬2 [0wmm#=[l`88/%>;5gVqh(D>mK0 JMP]jtr>Jmi%&]@dxϝm":@BB{_݇tUQwᒬπ*Ŋ^Pm(]dz61HesG +P'Yۻ[,hp/IS F^ +j!Q/sHddH{YMj`t2*ASGiHHqrE{K0(&NѮ#AV3T|Agl 1G[/s pMrg*d|#gW %k[:o02QϨu6qTCh;~,nVáFŅٟV8nCG}~S@H}@-!PI`:c|QH}t.>X;}`Wv(Y*t *ɮlU $Cl=3:R@FqEY%P9{F;9~;ZnY 茹M;OʹKWlʷ:Z`]U?cj-d弿_ʉGu/ϔœ\.UvF 6yv"`[=Kܒ&+r32:BnICXRy:lJje+ִ>vQyl.t$d,V=KUQ-\胠R([VK8<'X:UD:Ye:;6I > 7QI2M>:܄!R +7yn%,\ru +Ȉt晞!ƺpP0kp#' |Ib'bAF`űߘ1تhc_2.!Cϣl; +1 .Bf6&}H8'8n7ӌoQ7p<x㐏Ĺ> )Gǘ`j0ɚEGQxއn p.7  qH>!B%~RN69HL119Mzr\%Z:i.u1!0UiMѧh%]rt%} t }ѷ{~B/?h ffY{&l"ʊ dOl){fU؛v}N,.+lS.'| +1/R<|3}]'~;x'?̏~(;/'̦ SV'ቛJwPg&A,TIS (3 1*qf( ++5I3##uXi[CЭj!KeV=R ڌ}1UH֔ELf`ez(~BT +FlCWh %Ml b#V&QfO>a*6.= ?cXPa~1NJ6fQɰg6|Q_ p˺fl[rR̸)v%9$F{nex_AKݛm1jwZõ2jɥ'-[Fgl@E-poô[[rZH"p 2`KEȭU'nHZK;~jkɖ@RKT>4{Jz"hkFK]] q~[S|0D/bI| A#akF(Z|6q.眤<m:(5×Be+HI[uNPv#'NrdnV(q Nti4[`HAus{lP~i[Eݽ};na5G't%W߶߶lۺ[_ޱ,y0l `/Jpa",L +TZE״pv/]E%?VK(9$1.Hpݯ #lHleYD}!Ӭ&28|S&`iz-B =>6c$\H ?|RZD[sMrAp2 hlvnͲxNAٖcQ7xgD2m>(pd%, +-&T R Y*YwmKwZ@UZjuٜ_5 ye3V,go^X\Xo;8S>*!gEiPSzl L pkAEz^  ,ώtnW>ΡM ]QiYc*]Z*덌n¼ҴۚEeyhrWMeuCmaŌ=R[,gv4ūh-˝~mtlt \NEb;aVd1;tɮJX'lF<('7.&cj3BnTefUO(- +n392HIGD/ ڣWͥ4D"iWye"Ȋo!5f]Jɱ)N-Lf7qU'-!xTKkE,8O%3}堋_Ġ`=F2.]LedbY!:/I"[,Wvˤ=Y_@d|ZXY@Vo47 PK9tev|i+ Y4]c4; Y2`YX gLyB%ASJ؊hݏ?XZ,ZҖ%8 ̂jԍRK¼2ټט?%UJ9C':g..?/ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStWRKAİX{== x^.ww\9 ߚq?W?NhN-:zTDO!WhG,h)cxz}GGVWAhSdcE{%`нdA"mψԒn^1vt,y}4|ˊ^ox6g@EV4 @3h UFF;b|thƶGcߞreQc6*W_09K_0(,f}"ei:XEHQ e6|'Y_QSO==Znlgr J}Jn1 pu3dePjtL]gB6E= +UеA~%˂R*XZ:j12O-}XX5C-^:p>'[NV-K1h2=\yhJ--'h4Oj>Ma`/=0x xNï7pf,yѣգ&e5} qt@DE3-.[`;.kZ܌Oo.m]܋u&Np +_")"+*""%z@ZH;yt2Bd"oߑ$yK'%$qpk\3%I. q܏q m=./ګ( +{}o]HY-3vYlTDBY@!jFS;#Cd:ڴ:5Fww(ҙF;S'&mEƈdZ;cvl؉2{Y5F1yo9~_ +%rr(K7>[}wߑWUY < |ZGZx\Hcv1~`ۄݰޒp-剏 +r q$[(_\۱r]VykVeybmؕxa8}; &.'eusI+dO-(,5|K=FK㞎2q~adYRɝ^H)JBlJ&[kHK*pxOE|tM hRh1)!YXq]%|t^n?YriXZƪtRޮW3@>i钙An#^n-qx"dy phE3rCWIw򵾮&>O&x 6gygs3dUŞVpp$_ X4-AE$.puh^ϽX<&Z  +K!@4کT]k'=I}!fkx4qɴ;>SWL]r` #OsO8dl?|̙|7uw8v:cUF/9m~b^H kA"ˑئ;+4ĥbM|gMXp|+_1yFj;M`yI}7CR9a{rMtxc|mtٻ^H~!yX"p@L]{8=.$ ߅Tj +dA.DVcU<1?rV/5haŠ;ȯ) [D{L$in\ssd "/*YK$k+N.M@%=%!?ɿe%A +Qc'u!T:Ntu h%+j60H6dv{Qzh?HD%I)OzRʖ3+GnV)UKˑIIjF&ŤI.tY9iyڠtML Cff6fgNRyD6}Mc,\Cgl6&d fNA|1GVexGaY*\ay\sf܄!C=U۸ } Y-TrߏKh"C9,mدPO3؈M2aagA#8;bŚ& # U0^#,U#cpFG yȒ(O^5r)dUm[m 5e~~yIr]TRV5qWV?IȌm=j (o~ꘆBxWZtDWg4 ʓ˗t~|j?~˗e|nѠctߩQ?)p4(H lgN@Nء#;cGPYי.J#w^32%šXA {Eu{o{5 A6p"]JG$j2NFQ +#r4Ԁ&0-A@8c;Crf2"iuc5j;H^KS8w~V'B{ -8Yhsn<\嫈,4cLh~]˥nɭQQwQD=XV|柙{a-t ;[_*d6fW_RY}S̵#Ň +[B9;zod:un]n^clo(nlHўʦP${eivl[ӥh5o\r~$_{?<0"Җk 撇;i6?%rQmZo}>5-lfXx/N]x'~gۥgPޑw>PjuQKo&7go| +ȏ "VLcw뛬L\ ROQW\[of*?J!aThR4y2KȦ]0&S}5fD3qtp ҢS{ 5${®] ڌTa785h}lxZy6vKxJ* Za2LE55JQOp̅QOb +Sz?}pQx5qWQs&j!a*MEU5uU tr)'H5{"K2W5d=i"ͤlC!]ir1 rF []h\z=Bz#5-ԤΡun].Ut m_zQCO?h^YEu- ښ¦ںUZ6}ճedPs=ְuf~ W*NcO.vس9ϓ+A|QBW#x51uycDcܻ^d:B(F;g=݋*yGZ?ڥWRB2+c7* y(L&ڽ|4ͫ`ugq71uюd4\§& +LR$1$gV\7A@v9w_D>WXUM&/I _7 'aQ#Y x.xgؾ/ )6>Bx+ea#'7F:BS5bX4~,'@?d=v?[d$88T)`L3RcCgR[=RaQ,+Nԍ#.)dd@ Bt50+Njvh7 %?6Iq]nBRx PNߘ,C:s6IO<'t!ށCxQhNC_#Xĺk4)ʹx6t^9h.dJ\AxVX챐%d4ȢfV.Q +>z6HyOXmMXLmInXiأKu> Calœ"KtZ8f{1LOaP `%KeW5#X|"4y,y^2Y\ ARo6h.ӚW+Dɑ-=aRlEɥ[eD[d5s ;tYH~8VcqiyZ@!bp5f "@| (YhYYdِ[=c/wnKFT }KkW g+a\[X2,-Dr@=zZe`A }Zcr/ltnoJEXY0pɺz^a,$Τ"vIW!u>$e璘+Gn-,-ćÝnFJfM뙷1ƴݸmɲ덦ʩҀ#{S6>ZeEF4t-h.GU.l-yu53]cާ=l`hQq-0XYh+cٽS:fejc۲tfq0 + +rm~ǕsC0$k좕~bA-16BOt g2+M&W.ӜyqSSJڥ,'mZCSEqi\Zxun (pL/秡lF' Z(IܳaS%{ĺu꠴p={EyyE/ȵqJoS82It S ~ $:`VbGgk=.^Chg'- .{t*CeK ZLj.E:`1\wiBp1"jw]tRע'linlujR4"8 3Nm@ WvޖBW +f1!djcA7iZ8 TFg&N %A(-4nmv.'c ޵П9E>1eTq -xA¹#TZ(޵Pw:5.->Z$(^Êr%-HAy@OL +=4A^#n‘Bt4؋B$5,Bu~2*EFxъ-xVrVT8,& LMVH9#6YK΅(vfXMZ6Eh]Ehu2p0x6e;V k!U%i+8 b=hL_ = }BhQǀc:< "/(s6l9G9WB ޷4ZHJ;g[V{ эNCRmiяZ oϿ9K-ZfOpٷp{吉9̎,>)A 8Uތ-B#.AʺSZkc MZPh= `eZ҃q'f;eNM% ^[l<#S`ѯ/d +Kw`p#2vb Km:hZbWaD%u__u'˵e\# /s%+ڛ6Z$o'KrvM66mo"rWw`)N†*. xrK}T Ya9,gpA{B:_wyTeE2(I ђ?mFԆXYC+h ';Z+jZQk%A9Zb\-.v06ϚQ7c7l$D½Y[fMsrѯ |HspihC`%#BpY#erZ%nhӡB{J`k1Z<2^D(m _=~X< K)'~xWTߡyyi1d, P 7eaǾ*rwp[v0D039QLoͷlk \ I"5ǴRΖ/2軄pl-uhC;65?-Ej>ҍBm;޺1Z4.B.- y; L~#F]}J(!6`q?N|B+MGEN􎀴N C>(p߂1pa- ~ /oЀm \!$CyLoK{X,oɫdKn)2+QN(_V\PkU+E_W T (0HFmYp1X$'Z$PXiTL11x"]>V14k#+YT93޹ܙf'*`XoR F3sl!gzmgmcv]ea,Cy"a| _3Λ&G9oKROI30iT,M*ER;itD:/]l49Kvȓry^n' +S"~ʏ\e2K,VV)((;0ݫV('ʿKJTU5&^:@f05@OGV%&#Lh +D!ZdQvH&bDd H{b=DRu1h3 +t_Āo,u Bz0%|~5P$a4EGA|d4T3.#܌r3Yt( R8D<!10q#BA1JHU7)uAԉ} &Ζ:?A}n@q'j7smoG1<й(z(me~+ +7@zE{(l(RG9n}w'Ox`ٳc;oЭsvD|3Q18B*_ge)0&t%@NGPD+./HsJw++ }Ҭi-yK[~m^ɲ̟,N6||QoQ4BIk0?ly01ߚ 8Unx0ZXJX oA3Z1cp ס:*j<#IoGII!'d0J2d@&"22 +E*|ڪBRK|@~CV&üJnv5%T3/i4}3dJI4ŜET:ܱ.*F"7Pmt撇Q=E?ez~Eovzv#a1όdQbYxĞdSH(!ܑGʧ(0DD9e(-F%R݈mO"&j +uJ1yԽ^‚-dvƒ˃-vWr?)؋G #/SHldyqٝ=QXޫ XA[J\ +JIg5K^әs}M$Kb}D)t"K\VInmSZ55 c%OcI'%}luéc)pbSXGAv8#dO~??3lrULH16B(H`-Ԫ Gռn6\6ōӟ(!wNDzi\w%.C ==A'YGj>y>kh9mo=rUݑs#p)X1ty9v,>8m?l& ]` +{dI9~q*O%V, KLQ}JGلƄ-]}nJ-(k+O%;oF ><"(0‚> 2 ]X ~'|䜔S]|H=8|A%jS_9`Ε-* s-}"7Ϩ +9+#2@PK]}Z~_/#G{@^S+~HG U)='9$ + }B.E- DGFdnMY~_ȗDJƵb'C}:IQQ"52FCרrn|@"U|H c}ܟ䦽~LsVjSO %(H=|n^~ww +~ iۃ~%q޿ĭ=<+}^i%Ӄ]^|@j=ʍGr7HsrVzq]PQya/!G?9.oOwp1?I M4 }gp|i ]X".y9@&dQi;S^tvi/RXܜHe\R#dƆJi7C |t`Z.B,I]I9 ێ6N)N|Y%,2渇l$iJ/գ4_mm<:x(yǭ#W#!n2 GP%:&7'|a 3ck"jmS-;oTW;Hˌo), m\_F>MK-AYF6$=f(m((0#| +pgy4چ.v`8tlj'۶1`fX"?ꢂGsy2akD]aZMa``.4V*JFs%b^ӈf=iv->"1zq&4G {#~mQ\ml Y,2Ke%eU^Ȟ ^ L8n|%rt &3W&;OW +Wy̾$T })olO{c8FշX-$Μ@B,taϩd,( +Zz1mq九So8!p v@ ) ]k$~XPuc7z>#܈qNG -C/1iF$MݎY:q>zH8:SM e{*kИt Gb"郤!VIXjblTneY #)h-v`rkbP[РM+K&-aV=Ύ@#*v_9ͼJszտ?x>_?wwd??CcL8o(F(JbRAFLJ#*jURM@R*hsFLB >FԤ80N4?o/]]闾9wiVsޕ5֗MR>:6:ཌྷu]mQ(r۵1!yTA[LUi&,+~bӱǕe~No\(rƾAT;!s_^&?+^~~8?طu)a]~ncG:[rOl:oUye?>Ao,OM5k#?tPS^=yNF!fwΓ'VmQ0;?zmp`K_N9SO*82'%m1 \||Mm[}o>δ}vʅUSlCcۭ;.}r;s^ڥTV32.l{^BN\P `$tE/g2_T[36IIcOCǚ/{ѣoMWL4zhA' y7䑻ȏ_/`۩u+4le-b?Ěkofo(OnlWԬ#ײ5\>WѺ;Y,eR{,C.{m15ȅRVeCxL(C.W҃~27VJS؎7:cKw'w3 f$ +eyE2asG|q\Ҍ3i~a'7w^A^+_ʳ!m&1]mxiɵtc?SZFv0FN3Ng\zEo(SUkz{[ncmca(o!.]bpSJNJ榔\.L̤Qqhi"!hѨw{E!lY;[yਘѶoO{.e4 @{t"K'βkFV;#q]4̍HqwbSKdO>p:dBoxM-Ϣ +endstream +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +84 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +85 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +27 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 83 0 R +>> +endobj +44 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 118 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 84 0 R +>> +endobj +48 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 46 +/Widths [278 333 400 556 556 833 852 278 333 333 500 606 278 333 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 85 0 R +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 72 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611 +0 722 722 722 722 667 611 0 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 0 944 0 667 0 0 0 0 0 0 +0 556 0 556 611 556 333 611 611 278 0 0 278 0 611 611 +611 0 389 556 333 611 0 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 73 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 74 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 0 500 500 500 500 0 250 250 0 0 0 444 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 75 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [600 0 0 0 600 0 0 0 600 600 600 0 600 600 600 600 +600 600 600 600 600 600 600 0 600 0 600 0 0 600 600 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 600 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 0 600 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 76 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 77 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 778 0 0 0 0 0 0 0 0 0 778 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 0 407 500 389 278 500 500 278 0 0 278 778 556 444 +500 0 389 389 333 556 500 722 0 500 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 78 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 +600 0 600 600 600 600 600 600 0 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 79 0 R +>> +endobj +20 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 +0 500 0 0 0 500 0 556 0 333 0 0 0 0 611 556 +0 0 389 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 80 0 R +>> +endobj +34 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBEPCA+Symbol +/Encoding /Identity-H +/DescendantFonts [ 86 0 R ] +/ToUnicode 87 0 R +>> +endobj +86 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBEPCA+Symbol +/FontDescriptor 81 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +87 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPn0 [dld `xI} v+)}$Nс$x᎔!A~7-FYl88Lܺ5Q.SıCU yI)/]W'[dGCOB9_"(k y~CC% k_lA4 TJU$ivYT-g^izj$[pZq`j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 37 0 R +/Contents 36 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +88 0 obj +<< +/S /D +>> +endobj +89 0 obj +<< +/Nums [0 88 0 R ] +>> +endobj +12 0 obj +<< +/Type /Pages +/Kids [1 0 R 13 0 R 17 0 R 21 0 R 24 0 R 28 0 R 31 0 R 35 0 R 38 0 R 41 0 R] +/Count 10 +/Parent 49 0 R +>> +endobj +50 0 obj +<< +/Type /Pages +/Kids [45 0 R 51 0 R 54 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R] +/Count 8 +/Parent 49 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [12 0 R 50 0 R ] +/Count 18 +/MediaBox [0 0 612 792] +>> +endobj +90 0 obj +<< +/CreationDate (D:20210202102641-06'00') +/ModDate (D:20210202102641-06'00') +/Producer (Apple pstopdf) +>> +endobj +91 0 obj +<< +/Type /Catalog +/Pages 49 0 R +/PageLabels 89 0 R +>> +endobj +xref +0 92 +0000000000 65535 f +0000165184 00000 n +0000000016 00000 n +0000009758 00000 n +0000160873 00000 n +0000161084 00000 n +0000161516 00000 n +0000161822 00000 n +0000162380 00000 n +0000162923 00000 n +0000163250 00000 n +0000137072 00000 n +0000166761 00000 n +0000165265 00000 n +0000009924 00000 n +0000018667 00000 n +0000163706 00000 n +0000165349 00000 n +0000018847 00000 n +0000026303 00000 n +0000164180 00000 n +0000165433 00000 n +0000026485 00000 n +0000034206 00000 n +0000165517 00000 n +0000034388 00000 n +0000043495 00000 n +0000159939 00000 n +0000165601 00000 n +0000043662 00000 n +0000051973 00000 n +0000165685 00000 n +0000052155 00000 n +0000060984 00000 n +0000164547 00000 n +0000165769 00000 n +0000061165 00000 n +0000068033 00000 n +0000165853 00000 n +0000068190 00000 n +0000078446 00000 n +0000165937 00000 n +0000078627 00000 n +0000088190 00000 n +0000160114 00000 n +0000166021 00000 n +0000088382 00000 n +0000096381 00000 n +0000160640 00000 n +0000167021 00000 n +0000166898 00000 n +0000166105 00000 n +0000096583 00000 n +0000105955 00000 n +0000166189 00000 n +0000106144 00000 n +0000115046 00000 n +0000166273 00000 n +0000115237 00000 n +0000123176 00000 n +0000166357 00000 n +0000123393 00000 n +0000131254 00000 n +0000166441 00000 n +0000131458 00000 n +0000136291 00000 n +0000166525 00000 n +0000136482 00000 n +0000136603 00000 n +0000166609 00000 n +0000136700 00000 n +0000136953 00000 n +0000137213 00000 n +0000137410 00000 n +0000137616 00000 n +0000137811 00000 n +0000138011 00000 n +0000138202 00000 n +0000138404 00000 n +0000138607 00000 n +0000138808 00000 n +0000139013 00000 n +0000139203 00000 n +0000159309 00000 n +0000159521 00000 n +0000159729 00000 n +0000164690 00000 n +0000164893 00000 n +0000166693 00000 n +0000166721 00000 n +0000167113 00000 n +0000167236 00000 n +trailer +<< +/Size 92 +/Root 91 0 R +/Info 90 0 R +/ID [<1569f0a925445bbd67f845bbda7038dc><1569f0a925445bbd67f845bbda7038dc>] +>> +startxref +167306 +%%EOF diff --git a/docs/medley-irm/09-conditionals.TEDIT b/docs/medley-irm/09-conditionals.TEDIT new file mode 100644 index 00000000..c998b695 --- /dev/null +++ b/docs/medley-irm/09-conditionals.TEDIT @@ -0,0 +1,105 @@ + INTERLISP-D REFERENCE MANUAL CONDITIONALS AND ITERATIVE STATEMENTS "9"9. LISTS AND ITERATIVE STATEMENTS 3 Medley gives you a large number of predicates, conditional functions, and control functions. Also, there is a complex iterative statement facility which allows you to easily create complex loops and iterative constructs. Data Type Predicates 1 Medley provides separate functions for testing whether objects are of certain commonly-used types: (LITATOM(LITATOM (Function) NIL NIL ("9") 1) X) [Function] Returns T if X is a symbol; NIL otherwise. Note that a number is not a symbol. (SMALLP(SMALLP (Function) NIL NIL ("9") 1) X) [Function] Returns X if X is a small integer; NIL otherwise. (The range of small integers is -65536 to +65535. (FIXP(FIXP (Function) NIL NIL ("9") 1) X) [Function] Returns X if X is a small or large integer; NIL otherwise. (FLOATP(FLOATP (Function) NIL NIL ("9") 1) X) [Function] Returns X if X is a floating point number; NIL otherwise. (NUMBERP(NUMBERP (Function) NIL NIL ("9") 1) X) [Function] Returns X if X is a number of any type, NIL otherwise. (ATOM(ATOM (Function) NIL NIL ("9") 1) X) [Function] Returns T if X is an atom (i.e. a symbol or a number); NIL otherwise. (ATOM X) is NIL if X is an array, string, etc. In Common Lisp, CL:ATOM is defined equivalent to the Interlisp function NLISTP. (LISTP(LISTP (Function) NIL NIL ("9") 1) X) [Function] Returns X if X is a list cell (something created by CONS); NIL otherwise. (NLISTP(NLISTP (Function) NIL NIL ("9") 1) X) [Function] (NOT (LISTP X)). Returns T if X is not a list cell, NIL otherwise. (STRINGP(STRINGP (Function) NIL NIL ("9") 1) X) [Function] Returns X if X is a string, NIL otherwise. (ARRAYP X) [Function] Returns X if X is an array, NIL otherwise. (HARRAYP X) [Function] Returns X if it is a hash array object; otherwise NIL. HARRAYP(HARRAYP (Function) NIL NIL ("9") 2) returns NIL if X is a list whose CAR is an HARRAYP, even though this is accepted by the hash array functions. Note: The empty list, () or NIL, is considered to be a symbol, rather than a list. Therefore, (LITATOM NIL) = (ATOM NIL) = T and (LISTP NIL) = NIL. Take care when using these functions if the object may be the empty list NIL. Equality Predicates 1 Sometimes, there is more than one type of equality. For instance, given two lists, you can ask whether they are exactly the same object, or whether they are two distinct lists that contain the same elements. Confusion between these two types of equality is often the source of program errors. (EQ(EQ (Function) NIL NIL ("9") 2) X Y) [Function] Returns T if X and Y are identical pointers; NIL otherwise. EQ should not be used to compare two numbers, unless they are small integers; use EQP instead. (NEQ(NEQ (Function) NIL NIL ("9") 2) X Y) [Function] The same as (NOT (EQ X Y)) (NULL(NULL (Function) NIL NIL ("9") 2) X) [Function] (NOT(NOT (Function) NIL NIL ("9") 2) X) [Function] The same as (EQ X NIL) (EQP(EQP (Function) NIL NIL ("9") 2) X Y) [Function] Returns T if X and Y are EQ, or if X and Y are numbers and are equal in value; NIL otherwise. For more discussion of EQP and other number functions, see Chapter 7. EQP also can be used to compare stack pointers (Section 11) and compiled code (Chapter 10). (EQUAL(EQUAL (Function) NIL NIL ("9") 2) X Y) [Function] EQUAL returns T if X and Y are one of the following: 1. EQ 2. EQP, i.e., numbers with equal value 3. STREQUAL, i.e., strings containing the same sequence of characters 4. Lists and CAR of X is EQUAL to CAR of Y, and CDR of X is EQUAL to CDR of Y EQUAL returns NIL otherwise. Note that EQUAL can be significantly slower than EQ. A loose description of EQUAL might be to say that X and Y are EQUAL if they print out the same way. (EQUALALL(EQUALALL (Function) NIL NIL ("9") 2) X Y) [Function] Like EQUAL, except it descends into the contents of arrays, hash arrays, user data types, etc. Two non-EQ arrays may be EQUALALL if their respective componants are EQUALALL. Note: In general, EQUALALL descends all the way into all datatypes, both those you've defined and those built into the system. If you have a data structure with fonts and pointers to windows, EQUALALL will descend those also. If the data structures are circular, as windows are, EQUALALL can cause stack overflow. Logical Predicates 1 (AND X1 X2 ... XN)(AND% X1% X2% ...% XN%) (Function) %(AND% X1% X2% ...% XN%) NIL ("9") 3) [NLambda NoSpread Function] Takes an indefinite number of arguments (including zero), that are evaluated in order. If any argument evaluates to NIL, AND immediately returns NIL, without evaluating the remaining arguments. If all of the arguments evaluate to non-NIL, the value of the last argument is returned. (AND) => T. (OR X1 X2 ... XN)(OR% X1% X2% ...% XN%) (Function) %(OR% X1% X2% ...% XN%) NIL ("9") 3) [NLambda NoSpread Function] Takes an indefinite number of arguments (including zero), that are evaluated in order. If any argument is non-NIL, the value of that argument is returned by OR (without evaluating the remaining arguments). If all of the arguments evaluate to NIL, NIL is returned. (OR) => NIL. AND and OR can be used as simple logical connectives, but note that they may not evaluate all of their arguments. This makes a difference if some of the arguments cause side-effects. This also means you can use AND and OR as simple conditional statements. For example: (AND (LISTP X) (CDR X)) returns the value of (CDR X) if X is a list cell; otherwise it returns NIL without evaluating (CDR X). In general, you should avoid this use of AND and OR in favor of more explicit conditional statements in order to make programs more readable. COND Conditional Function 1 (COND CLAUSE1 CLAUSE2 ... CLAUSEK)(COND% CLAUSE1% CLAUSE2% ...% CLAUSEK%) (Function) %(COND% CLAUSE1% CLAUSE2% ...% CLAUSEK%) NIL ("9") 3) [NLambda NoSpread Function] COND takes an indefinite number of arguments, called clauses. Each CLAUSEi is a list of the form (Pi Ci1 ... CiN), where Pi is the predicate, and Ci1 ... CiN are the consequents. The operation of COND can be paraphrased as: IF P1 THEN C11 ... C1N ELSEIF P2 THEN C21 ... C2N ELSEIF P3 ... The clauses are considered in sequence as follows: The predicate P1 of the clause CLAUSEi is evaluated. If the value of P1 is true (non-NIL), the consequents Ci1 ... CiN are evaluated in order, and the value of the COND is the value of the last expression in the clause. If P1 is false (EQ to NIL), then the remainder of CLAUSEi is ignored, and the next clause, CLAUSEi+1, is considered. If no Pi is true for any clause, the value of the COND is NIL. If a clause has no consequents, and has the form (Pi), then if Pi evaluates to non-NIL, it is returned as the value of the COND. It is only evaluated once. Example: (DEFINEQ (DOUBLE (X) (COND ((NUMBERP X) (PLUS X X)) ((STRINGP X) (CONCAT X X)) ((ATOM X) (PACK* X X)) (T (PRINT "unknown") X) ((HORRIBLE-ERROR))] (DOUBLE) (DOUBLE 5) 10 (DOUBLE "FOO") "FOOFOO" (DOUBLE 'BAR) BARBAR (DOUBLE '(A B C)) "unknown" (A B C) A few points about this example: Notice that 5 is both a number and an atom, but it is caught by the NUMBERP clause before the ATOM clause. Also notice the predicate T, which is always true. This is the normal way to indicate a COND clause which will always be executed (if none of the preceeding clauses are true). (HORRIBLE-ERROR) will never be executed. The IF Statement 1 The IF statement(IF% STATEMENT NIL IF% statement NIL ("9") 4) lets you write conditional expressions that are easier to read than using COND directly. CLISP translates expressions using IF, THEN, ELSEIF, or ELSE (or their lowercase versions) into equivalent CONDs. In general, statements of the form: (if AAA then BBB elseif CCC then DDD else EEE) are translated to: (COND (AAA BBB) (CCC DDD) (T EEE)) The segment between IF or ELSEIF and the next THEN corresponds to the predicate of a COND clause, and the segment between THEN and the next ELSE or ELSEIF as the consequent(s). ELSE is the same as ELSEIF T THEN. These words are spelling corrected using the spelling list CLISPIFWORDSPLST. You may also use lower-case versions (if, then, elseif, else). If there is nothing following a THEN, or THEN is omitted entirely, the resulting COND clause has a predicate but no consequent. For example, (if X then elseif ...) and (if X elseif ...) both translate to (COND (X) ...)%if X is not NIL, it is returned as the value of the COND. Each predicate must be a single expression, but multiple expressions are allowed as the consequents after THEN or ELSE. Multiple consequent expressions are implicitely wrapped in a PROGN, and the value of the last one is returned as the value of the consequent. For example: (if X then (PRINT "FOO") (PRINT "BAR") elseif Y then (PRINT "BAZ")) Selection Functions 1 (SELECTQ X CLAUSE1 CLAUSE2 ... CLAUSEK DEFAULT) [NLambda NoSpread Function] Selects a form or sequence of forms based on the value of X. Each clause CLAUSEi is a list of the form (Si Ci1 ... CiN) where Si is the selection key. Think of SELECTQ as: IF X = S1 THEN C11 ... C1N ELSEIF X = S2 THEN ... ELSE DEFAULT If Si is a symbol, the value of X is tested to see if it is EQ to Si (which is not evaluated). If so, the expressions Ci1 ... CiN are evaluated in sequence, and the value of the SELECTQ is the value of the last expression. If Si is a list, the value of X is compared with each element (not evaluated) of Si, and if X is EQ to any one of them, then Ci1 ... CiN are evaluated as above. If CLAUSEi is not selected in one of the two ways described, CLAUSEi+1 is tested, etc., until all the clauses have been tested. If none is selected, DEFAULT is evaluated, and its value is returned as the value of the SELECTQ. DEFAULT must be present. An example of the form of a SELECTQ is: [SELECTQ MONTH (FEBRUARY (if (LEAPYEARP) then 29 else 28)) ((SEPTEMBER APRIL JUNE NOVEMBER) 30) 31] If the value of MONTH is the symbol FEBRUARY, the SELECTQ returns 28 or 29 (depending on (LEAPYEARP)); otherwise if MONTH is APRIL, JUNE, SEPTEMBER, or NOVEMBER, the SELECTQ returns 30; otherwise it returns 31. SELECTQ compiles open, and is therefore very fast; however, it will not work if the value of X is a list, a large integer, or floating point number, since SELECTQ uses EQ for all comparisons. SELCHARQ (Chapter 2) is a version of SELECTQ that recognizes CHARCODE symbols. (SELECTC X CLAUSE1 CLAUSE2 ... CLAUSEK DEFAULT) [NLambda NoSpread Function] SELECTQ-on-Constant. Like SELECTQ, but the selection keys are evaluated, and the result used as a SELECTQ-style selection key. SELECTC is compiled as a SELECTQ, with the selection keys evaluated at compile-time. Therefore, the selection keys act like compile-time constants (see Chapter 18). For example: [SELECTC NUM ((for X from 1 to 9 collect (TIMES X X)) "SQUARE") "HIP"] compiles as: (SELECTQ NUM ((1 4 9 16 25 36 49 64 81) "SQUARE") "HIP") PROG and Associated Control Functions 1 (PROG1 X1 X2 ... XN) [NLambda NoSpread Function] Evaluates its arguments in order, and returns the value of its first argument X1. For example, (PROG1 X (SETQ X Y)) sets X to Y, and returns X's original value. (PROG2 X1 X2 ... XN) [NoSpread Function] Like PROG1. Evaluates its arguments in order, and returns the value of its second argument X2. (PROGN X1 X2 ... XN) [NLambda NoSpread Function] PROGN evaluates each of its arguments in order, and returns the value of its last argument. PROGN is used to specify more than one computation where the syntax allows only one, e.g., (SELECTQ ... (PROGN ...)) allows evaluation of several expressions as the default condition for a SELECTQ. (PROG VARLST E1 E2 ... EN) [NLambda NoSpread Function] Lets you bind some variables while you execute a series of expressions. VARLST is a list of local variables (must be NIL if no variables are used). Each symbol in VARLST is treated as the name of a local variable and bound to NIL. VARLST can also contain lists of the form (NAME FORM). In this case, NAME is the name of the variable and is bound to the value of FORM. The evaluation takes place before any of the bindings are performed, e.g., (PROG ((X Y) (Y X)) ...) will bind local variable X to the value of Y (evaluated outside the PROG) and local variable Y to the value of X (outside the PROG). An attempt to use anything other than a symbol as a PROG variable will cause an error, Arg not symbol. An attempt to use NIL or T as a PROG variable will cause an error, Attempt to bind NIL or T. The rest of the PROG is a sequence of forms and symbols (labels). The forms are evaluated sequentially; the labels serve only as markers. The two special functions, GO and RETURN, alter this flow of control as described below. The value of the PROG is usually specified by the function RETURN. If no RETURN is executed before the PROG falls off the end, the value of the PROG is NIL. (GO L) [NLambda NoSpread Function] GO is used to cause a transfer in a PROG. (GO L) will cause the PROG to evaluate forms starting at the label L (GO does not evaluate its argument). A GO can be used at any level in a PROG. If the label is not found, GO will search higher progs within the same function, e.g., (PROG ... A ... (PROG ... (GO A))). If the label is not found in the function in which the PROG appears, an error is generated, Undefined or illegal GO. (RETURN X) [Function] A RETURN is the normal exit for a PROG. Its argument is evaluated and is immediately returned the value of the PROG in which it appears. Note: If a GO or RETURN is executed in an interpreted function which is not a PROG, the GO or RETURN will be executed in the last interpreted PROG entered if any, otherwise cause an error. GO or RETURN inside of a compiled function that is not a PROG is not allowed, and will cause an error at compile time. As a corollary, GO or RETURN in a functional argument, e.g., to SORT, will not work compiled. Also, since NLSETQ's and ERSETQ's compile as separate functions, a GO or RETURN cannot be used inside of a compiled NLSETQ or ERSETQ if the corresponding PROG is outside, i.e., above, the NLSETQ or ERSETQ. (LET VARLST E1 E2 ... EN) [Macro] LET is essentially a PROG that can't contain GO's or RETURN's, and whose last form is the returned value. (LET* VARLST E1 E2 ... EN) [Macro] (PROG* VARLST E1 E2 ... EN) [Macro] LET* and PROG* differ from LET and PROG only in that the binding of the bound variables is done sequentially. Thus (LET* ((A (LIST 5)) (B (LIST A A))) (EQ A (CADR B))) would evaluate to T; whereas the same form with LET might find A an unbound variable when evaluating (LIST A A). The Iterative Statement 1 The various forms of the iterative statement(ITERATIVE% STATEMENT NIL Iterative% statement NIL ("9") 7) (i.s.) let you write complex loops easily. Rather than writing PROG, MAPC, MAPCAR, etc., let Medley do it for you. An iterative statement is a form consisting of a number of special words (known as i.s. operators or i.s.oprs), followed by operands. Many i.s.oprs (FOR, DO, WHILE, etc.) act like loops in other programming languages; others (COLLECT, JOIN, IN, etc.) do things useful in Lisp. You can also use lower-case versions of i.s.oprs (do, collect, etc.). (for X from 1 to 5 do (PRINT 'FOO)) FOO FOO FOO FOO FOO NIL (for X from 2 to 10 by 2 collect (TIMES X X)) (4 16 36 64 100) (for X in '(A B 1 C 6.5 NIL (45)) count (NUMBERP X)) 2 Iterative statements are implemented using CLISP, which translates them into the appropriate PROGs, MAPCARs, etc. They're are translated using all CLISP declarations in effect (standard/fast/undoable/ etc.); see Chapter 21. Misspelled i.s.oprs are recognized and corrected using the spelling list CLISPFORWORDSPLST. Operators can appear in any order; CLISP scans the entire statement before it begins to translate. If you define a function with the same name as an i.s.opr (WHILE, TO, etc.), that i.s.opr will no longer cause looping when it appears as CAR of a form, although it will continue to be treated as an i.s.opr if it appears in the interior of an iterative statement. To alert you, a warning message is printed, e.g., (While defined, therefore disabled in CLISP). I.S. Types(I.S.% TYPES NIL I.S.% Types NIL ("9") 8) Every iterative statement must have exactly one of the following operators in it (its is.stype), to specify what happens on each iteration. Its operand is called the body of the iterative statement. DO FORMS(DO% FORM (I.S. Operator) NIL NIL ("9") 8) [I.S. Operator] Evaluate FORMS at each iteration. DO with no other operator specifies an infinite loop. If some explicit or implicit terminating condition is specified, the value of the loop is NIL. Translates to MAPC or MAP whenever possible. COLLECT FORM(COLLECT% FORM (I.S. Operator) NIL NIL ("9") 8) [I.S. Operator] The value of FORM at each iteration is collected in a list, which is returned as the value of the loop when it terminates. Translates to MAPCAR, MAPLIST or SUBSET whenever possible. When COLLECT translates to a PROG (if UNTIL, WHILE, etc. appear in the loop), the translation employs an open TCONC using two pointers similar to that used by the compiler for compiling MAPCAR. To disable this translation, perform (CLDISABLE 'FCOLLECT). JOIN FORM (JOIN% FORM% (I.S. Operator) NIL NIL ("9") 8) [I.S. Operator] FORM returns a list; the lists from each iteration are concatenated using NCONC, forming one long list. Translates to MAPCONC or MAPCON whenever possible. /NCONC, /MAPCONC, and /MAPCON are used when the CLISP declaration UNDOABLE is in effect. SUM FORM(SUM% FORM (I.S. Operator) NIL NIL ("9") 8) [I.S. Operator] The values of FORM from each iteration are added together and returned as the value of the loop, e.g., (for I from 1 to 5 sum (TIMES I I)) returns 1+4+9+16+25 = 55. IPLUS, FPLUS, or PLUS will be used in the translation depending on the CLISP declarations in effect. COUNT FORM(COUNT% FORM (I.S. Operator) NIL NIL ("9") 8) [I.S. Operator] Counts the number of times that FORM is true, and returns that count as the loop's value. ALWAYS FORM(ALWAYS% FORM (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] Returns T if the value of FORM is non-NIL for all iterations. Note: Returns NIL as soon as the value of FORM is NIL). NEVER FORM(NEVER% FORM (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] Like ALWAYS, but returns T if the value of FORM is never true. Note: Returns NIL as soon as the value of FORM is non-NIL. Often, you'll want to set a variable each time through the loop; that's called the iteration variable, or i.v. for short. The following i.s.types explicitly refer to the i.v. This is explained below under FOR. THEREIS FORM(THEREIS% FORM (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] Returns the first value of the i.v. for which FORM is non-NIL, e.g., (for X in Y thereis (NUMBERP X)) returns the first number in Y. Note: Returns the value of the i.v. as soon as the value of FORM is non-NIL. LARGEST FORM(LARGEST% FORM (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] SMALLEST FORM(SMALLEST% FORM (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] Returns the value of the i.v. that provides the largest/smallest value of FORM. $$EXTREME is always bound to the current greatest/smallest value, $$VAL to the value of the i.v. from which it came. Iteration Variable I.s.oprs You'll want to bind variables to use during the loop. Rather than putting the loop inside a PROG or LET, you can specify bindings like so: BIND VAR(BIND% VAR (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] BIND VARS(BIND% VARS (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] Used to specify dummy variables, which are bound locally within the i.s. Note: You can initialize a variable VAR by saying VARFORM: (bind HEIGHT 0 WEIGHT 0 for SOLDIER in ...) To specify iteration variables, use these operators: FOR VAR(FOR% VAR (I.S. Operator) NIL NIL ("9") 9) [I.S. Operator] Specifies the iteration variable (i.v.) that is used in conjunction with IN, ON, FROM, TO, and BY. The variable is rebound within the loop, so the value of the variable outside the loop is not affected. Example: (SETQ X 55) 55 (for X from 1 to 5 collect (TIMES X X)) (1 4 9 16 25) X 55 FOR OLD VAR(FOR% OLD% VAR (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] Like FOR, but VAR is not rebound, so its value outside the loop is changed. Example: (SETQ X 55) 55 (for old X from 1 to 5 collect (TIMES X X)) (1 4 9 16 25) X 6 FOR VARS(FOR% VARS (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] VARS a list of variables, e.g., (for (X Y Z) in ...). The first variable is the i.v., the rest are dummy variables. See BIND above. IN FORM(IN% FORM (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] FORM must evaluate to a list. The i.v. is set to successive elements of the list, one per iteration. For example, (for X in Y do ...) corresponds to (MAPC Y (FUNCTION (LAMBDA (X) ...))). If no i.v. has been specified, a dummy is supplied, e.g., (in Y collect CADR) is equivalent to (MAPCAR Y (FUNCTION CADR)). ON FORM(ON% FORM (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] Same as IN, but the i.v. is reset to the corresponding tail at each iteration. Thus IN corresponds to MAPC, MAPCAR, and MAPCONC, while ON corresponds to MAP, MAPLIST, and MAPCON. (for X on '(A B C) do (PRINT X)) (A B C) (B C) (C) NIL Note: For both IN and ON, FORM is evaluated before the main part of the i.s. is entered, i.e. outside of the scope of any of the bound variables of the i.s. For example, (for X bind (Y'(1 2 3)) in Y ...) will map down the list which is the value of Y evaluated outside of the i.s., not (1 2 3). IN OLD VAR(IN% OLD% VAR (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] Specifies that the i.s. is to iterate down VAR, with VAR itself being reset to the corresponding tail at each iteration, e.g., after (for X in old L do ... until ...) finishes, L will be some tail of its original value. IN OLD (VARFORM)(IN% OLD% %(VAR_FORM%) (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] Same as IN OLD VAR, except VAR is first set to value of FORM. ON OLD VAR(ON% OLD% VAR (I.S. Operator) NIL NIL ("9") 10) [I.S. Operator] Same as IN OLD VAR except the i.v. is reset to the current value of VAR at each iteration, instead of to (CAR VAR). ON OLD (VARFORM)(ON% OLD% %(VAR_FORM%) (I.S. Operator) NIL NIL ("9") 11) [I.S. Operator] Same as ON OLD VAR, except VAR is first set to value of FORM. INSIDE FORM(INSIDE% FORM (I.S. Operator) NIL NIL ("9") 11) [I.S. Operator] Like IN, but treats first non-list, non-NIL tail as the last element of the iteration, e.g., INSIDE '(A B C D . E) iterates five times with the i.v. set to E on the last iteration. INSIDE 'A is equivalent to INSIDE '(A), which will iterate once. FROM FORM(FROM% FORM (I.S. Operator) NIL NIL ("9") 11) [I.S. Operator] Specifies the initial value for a numerical i.v. The i.v. is automatically incremented by 1 after each iteration (unless BY is specified). If no i.v. has been specified, a dummy i.v. is supplied and initialized, e.g., (from 2 to 5 collect SQRT) returns (1.414 1.732 2.0 2.236). TO FORM(TO% FORM (I.S. Operator) NIL NIL ("9") 11) [I.S. Operator] Specifies the final value for a numerical i.v. If FROM is not specified, the i.v. is initialized to 1. If no i.v. has been specified, a dummy i.v. is supplied and initialized. If BY is not specified, the i.v. is automatically incremented by 1 after each iteration. When the i.v. is definitely being incremented, i.e., either BY is not specified, or its operand is a positive number, the i.s. terminates when the i.v. exceeds the value of FORM. Similarly, when the i.v. is definitely being decremented the i.s. terminates when the i.v. becomes less than the value of FORM (see description of BY). FORM is evaluated only once, when the i.s. is first entered, and its value bound to a temporary variable against which the i.v. is checked each interation. If the user wishes to specify an i.s. in which the value of the boundary condition is recomputed each iteration, he should use WHILE or UNTIL instead of TO. When both the operands to TO and FROM are numbers, and TO's operand is less than FROM's operand, the i.v. is decremented by 1 after each iteration. In this case, the i.s. terminates when the i.v. becomes less than the value of FORM. For example, (from 10 to 1 do PRINT) prints the numbers from 10 down to 1. BY FORM (without IN or ON) (BY% FORM% %(WITHOUT% IN/ON%)% (I.S. Operator) BY% FORM% %(without% IN/ON%)% NIL ("9") 11) [I.S. Operator] If you aren't using IN or ON, BY specifies how the i.v. itself is reset at each iteration. If you're using FROM or TO, the i.v. is known to be numerical, so the new i.v. is computed by adding the value of FORM (which is reevaluated each iteration) to the current value of the i.v., e.g., (for N from 1 to 10 by 2 collect N) makes a list of the first five odd numbers. If FORM is a positive number (FORM itself, not its value, which in general CLISP would have no way of knowing in advance), the loop stops when the value of the i.v. exceeds the value of TO's operand. If FORM is a negative number, the loop stops when the value of the i.v. becomes less than TO's operand, e.g., (for I from N to M by -2 until (LESSP I M) ...). Otherwise, the terminating condition for each iteration depends on the value of FORM for that iteration: if FORM<0, the test is whether the i.v. is less than TO's operand, if FORM>0 the test is whether the i.v. exceeds TO's operand; if FORM = 0, the loop terminates unconditionally. If you didn't use FROM or TO and FORM is not a number, the i.v. is simply reset to the value of FORM after each iteration, e.g., (for I from N by (FOO) ...) sets I to the value of (FOO) on each loop after the first. BY FORM (with IN or ON) (BY% FORM% %(WITH% IN/ON%)% (I.S. Operator) BY% FORM% %(with% IN/ON%)% NIL ("9") 12) [I.S. Operator] If you did use IN or ON, FORM's value determines the tail for the next iteration, which in turn determines the value for the i.v. as described earlier, i.e., the new i.v. is CAR of the tail for IN, the tail itself for ON. In conjunction with IN, you can refer to the current tail within FORM by using the i.v. or the operand for IN/ON, e.g., (for Z in L by (CDDR Z) ...) or (for Z in L by (CDDR L) ...). At translation time, the name of the internal variable which holds the value of the current tail is substituted for the i.v. throughout FORM. For example, (for X in Y by (CDR (MEMB 'FOO (CDR X))) collect X) specifies that after each iteration, CDR of the current tail is to be searched for the atom FOO, and (CDR of) this latter tail to be used for the next iteration. AS VAR(AS% VAR (I.S. Operator) NIL NIL ("9") 12) [I.S. Operator] Lets you have more than one i.v. for a single loop, e.g., (for X in Y as U in V do ...) moves through the lisps Y and V in parallel (see MAP2C). The loop ends when any of the terminating conditions is met, e.g., (for X in Y as I from 1 to 10 collect X) makes a list of the first ten elements of Y, or however many elements there are on Y if less than 10. The operand to AS, VAR, specifies the new i.v. For the remainder of the i.s., or until another AS is encountered, all operators refer to the new i.v. For example, (for I from 1 to N1 as J from 1 to N2 by 2 as K from N3 to 1 by -1 ...) terminates when I exceeds N1, or J exceeds N2, or K becomes less than 1. After each iteration, I is incremented by 1, J by 2, and K by -1. OUTOF FORM(OUTOF% FORM (I.S. Operator) NIL NIL ("9") 12) [I.S. Operator] For use with generators. On each iteration, the i.v. is set to successive values returned by the generator. The loop ends when the generator runs out. Condition I.S. Oprs What if you want to do things only on certain times through the loop? You could make the loop body a big COND, but it's much more readable to use one of these: WHEN FORM(WHEN% FORM (I.S. Operator) NIL NIL ("9") 12) [I.S. Operator] Only run the loop body when FORM's value is non-NIL. For example, (for X in Y collect X when (NUMBERP X)) collects only the elements of Y that are numbers. UNLESS FORM(UNLESS% FORM (I.S. Operator) NIL NIL ("9") 12) [I.S. Operator] Opposite of WHEN: WHEN Z is the same as UNLESS (NOT Z). WHILE FORM(WHILE% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] WHILE FORM evaluates FORM before each iteration, and if the value is NIL, exits. UNTIL FORM(UNTIL% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] Opposite of WHILE: Evaluates FORM before each iteration, and if the value is not NIL, exits. REPEATWHILE FORM(REPEATWHILE% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] Same as WHILE except the test is performed after the loop body, but before the i.v. is reset for the next iteration. REPEATUNTIL FORM(REPEATUNTIL% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] Same as UNTIL, except the test is performed after the loop body. Other I.S. Operators FIRST FORM(FIRST% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] FORM is evaluated once before the first iteration, e.g., (for X Y Z in L first (FOO Y Z) ...), and FOO could be used to initialize Y and Z. FINALLY FORM(FINALLY% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] FORM is evaluated after the loop terminates. For example, (for X in L bind Y_0 do (if (ATOM X) then (SETQ Y (PLUS Y 1))) finally (RETURN Y)) will return the number of atoms in L. EACHTIME FORM(EACHTIME% FORM (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] FORM is evaluated at the beginning of each iteration before, and regardless of, any testing. For example, consider, (for I from 1 to N do (... (FOO I) ...) unless (... (FOO I) ...) until (... (FOO I) ...)) You might want to set a temporary variable to the value of (FOO I) in order to avoid computing it three times each iteration. However, without knowing the translation, you can't know whether to put the assignment in the operand to DO, UNLESS, or UNTIL. You can avoid this problem by simply writing EACHTIME (SETQ J (FOO I)). DECLARE: DECL(DECLARE:% DECL (I.S. Operator) NIL NIL ("9") 13) [I.S. Operator] Inserts the form (DECLARE DECL) immediately following the PROG variable list in the translation, or, in the case that the translation is a mapping function rather than a PROG, immediately following the argument list of the lambda expression in the translation. This can be used to declare variables bound in the iterative statement to be compiled as local or special variables. For example (for X in Y declare: (LOCALVARS X) ...). Several DECLARE:s can apppear in the same i.s.; the declarations are inserted in the order they appear. DECLARE DECL(DECLARE% DECL (I.S. Operator) NIL NIL ("9") 14) [I.S. Operator] Same as DECLARE:. Since DECLARE is also the name of a function, DECLARE cannot be used as an i.s. operator when it appears as CAR of a form, i.e. as the first i.s. operator in an iterative statement. However, declare (lowercase version) can be the first i.s. operator. ORIGINAL I.S.OPR OPERAND(ORIGINAL% I.S.OPR% OPERAND (I.S. Operator) NIL NIL ("9") 14) [I.S. Operator] I.S.OPR will be translated using its original, built-in interpretation, independent of any user defined i.s. operators. There are also a number of i.s.oprs that make it easier to create iterative statements that use the clock, looping for a given period of time. See timers, Chapter 12. Miscellaneous Hints For Using I.S.Oprs Lowercase versions of all i.s. operators are equivalent to the uppercase, e.g., (for X in Y ...) is equivalent to (FOR X IN Y ...). Each i.s. operator is of lower precedence than all Interlisp forms, so parentheses around the operands can be omitted, and will be supplied where necessary, e.g., BIND (X Y Z) can be written BIND X Y Z, OLD (X_FORM) as OLD X_FORM, etc. RETURN or GO may be used in any operand. (In this case, the translation of the iterative statement will always be in the form of a PROG, never a mapping function.) RETURN means return from the loop (with the indicated value), not from the function in which the loop appears. GO refers to a label elsewhere in the function in which the loop. appears, except for the labels $$LP, $$ITERATE, and $$OUT which are reserved, as described below. In the case of FIRST, FINALLY, EACHTIME, DECLARE: or one of the i.s.types, e.g., DO, COLLECT, SUM, etc., the operand can consist of more than one form, e.g., COLLECT (PRINT (CAR X)) (CDR X), in which case a PROGN is supplied. Each operand can be the name of a function, in which case it is applied to the (last) i.v., e.g., (for X in Y do PRINT when NUMBERP) is the same as (for X in Y do (PRINT X) when (NUMBERP X)). Note that the i.v. need not be explicitly specified, e.g., (in Y do PRINT when NUMBERP) will work. For i.s.types, e.g., DO, COLLECT, JOIN, the function is always applied to the first i.v. in the i.s., whether explicity named or not. For example, (in Y as I from 1 to 10 do PRINT) prints elements on Y, not integers between 1 and 10. Note that this feature does not make much sense for FOR, OLD, BIND, IN, or ON, since they operate before the loop starts, when the i.v. may not even be bound. In the case of BY in conjunction with IN, the function is applied to the current tail e.g., (for X in Y by CDDR ...) is the same as (for X in Y by (CDDR X) ...). While the exact translation of a loop depends on which operators are present, a PROG will always be used whenever the loop specifies dummy variables%if BIND appears, or there is more than one variable specified by a FOR, or a GO, RETURN, or a reference to the variable $$VAL appears in any of the operands. When PROG is used, the form of the translation is: (PROG VARIABLES {initialize} $$LP {eachtime} {test} {body} $$ITERATE {aftertest} {update} (GO $$LP) $$OUT {finalize} (RETURN $$VAL)) where {test} corresponds to that part of the loop that tests for termination and also for those iterations for which {body} is not going to be executed, (as indicated by a WHEN or UNLESS); {body} corresponds to the operand of the i.s.type, e.g., DO, COLLECT, etc.; {aftertest} corresponds to those tests for termination specified by REPEATWHILE or REPEATUNTIL; and {update} corresponds to that part that resets the tail, increments the counter, etc. in preparation for the next iteration. {initialize}, {finalize}, and {eachtime} correspond to the operands of FIRST, FINALLY, and EACHTIME, if any. Since {body} always appears at the top level of the PROG, you can insert labels in {body}, and GO to them from within {body} or from other i.s. operands, e.g., (for X in Y first (GO A) do (FOO) A (FIE)). However, since {body} is dwimified as a list of forms, the label(s) should be added to the dummy variables for the iterative statement in order to prevent their being dwimified and possibly corrected, e.g., (for X in Y bind A first (GO A) do (FOO) A (FIE)). You can also GO to $$LP, $$ITERATE, or $$OUT, or explicitly set $$VAL. Errors in Iterative Statements An error will be generated and an appropriate diagnostic printed if any of the following conditions hold: 1. Operator with null operand, i.e., two adjacent operators, as in (for X in Y until do ...) 2. Operand consisting of more than one form (except as operand to FIRST, FINALLY, or one of the i.s.types), e.g., (for X in Y (PRINT X) collect ...). 3. IN, ON, FROM, TO, or BY appear twice in same i.s. 4. Both IN and ON used on same i.v. 5. FROM or TO used with IN or ON on same i.v. 6. More than one i.s.type, e.g., a DO and a SUM. In 3, 4, or 5, an error is not generated if an intervening AS occurs. If an error occurs, the i.s. is left unchanged. If no DO, COLLECT, JOIN or any of the other i.s.types are specified, CLISP will first attempt to find an operand consisting of more than one form, e.g., (for X in Y (PRINT X) when ATOM X ...), and in this case will insert a DO after the first form. (In this case, condition 2 is not considered to be met, and an error is not generated.) If CLISP cannot find such an operand, and no WHILE or UNTIL appears in the i.s., a warning message is printed: NO DO, COLLECT, OR JOIN: followed by the i.s. Similarly, if no terminating condition is detected, i.e., no IN, ON, WHILE, UNTIL, TO, or a RETURN or GO, a warning message is printed: Possible non-terminating iterative statement: followed by the iterative statement. However, since the user may be planning to terminate the i.s. via an error, Control-E, or a RETFROM from a lower function, the i.s. is still translated. Note: The error message is not printed if the value of CLISPI.S.GAG is T (initially NIL). Defining New Iterative Statement Operators The following function is available for defining new or redefining existing iterative statement operators: (I.S.OPR NAME FORM OTHERS EVALFLG)(I.S.OPR% NAME% FORM% OTHERS% EVALFLG%) (Function) %(I.S.OPR% NAME% FORM% OTHERS% EVALFLG%) NIL ("9") 16) [Function] NAME is the name of the new i.s.opr. If FORM is a list, NAME will be a new i.s.type, and FORM its body. OTHERS is an (optional) list of additional i.s. operators and operands which will be added to the i.s. at the place where NAME appears. If FORM is NIL, NAME is a new i.s.opr defined entirely by OTHERS. In both FORM and OTHERS, the atom $$VAL can be used to reference the value to be returned by the i.s., I.V. to reference the current i.v., and BODY to reference NAME's operand. In other words, the current i.v. will be substituted for all instances of I.V. and NAME's operand will be substituted for all instances of BODY throughout FORM and OTHERS. If EVALFLG is T, FORM and OTHERS are evaluated at translation time, and their values used as described above. A dummy variable for use in translation that does not clash with a dummy variable already used by some other i.s. operators can be obtained by calling (GETDUMMYVAR). (GETDUMMYVAR T) will return a dummy variable and also insure that it is bound as a PROG variable in the translation. If NAME was previously an i.s.opr and is being redefined, the message (NAME REDEFINED) will be printed (unless DFNFLG=T), and all expressions using the i.s.opr NAME that have been translated will have their translations discarded. The following are some examples of how I.S.OPR could be called to define some existing i.s.oprs, and create some new ones: COLLECT (I.S.OPR 'COLLECT '(SETQ $$VAL (NCONC1 $$VAL BODY))) SUM (I.S.OPR 'SUM '(SETQ $$VAL_(PLUS $$VAL BODY) '(FIRST (SETQ $$VAL0)) NEVER (I.S.OPR 'NEVER '(if BODY then (SETQ $$VAL NIL) (GO $$OUT)) Note: (if BODY then (RETURN NIL)) would exit from the i.s. immediately and therefore not execute the operations specified via a FINALLY (if any). THEREIS (I.S.OPR 'THEREIS '(if BODY then (SETQ $$VAL I.V.) (GO $$OUT))) RCOLLECT To define RCOLLECT, a version of COLLECT which uses CONS instead of NCONC1 and then reverses the list of values: (I.S.OPR 'RCOLLECT '(FINALLY (RETURN (DREVERSE $$VAL)))] TCOLLECT To define TCOLLECT, a version of COLLECT which uses TCONC: (I.S.OPR 'TCOLLECT '(TCONC $$VAL BODY) '(FIRST (SETQ $$VAL (CONS)) FINALLY (RETURN (CAR $$VAL)))] PRODUCT (I.S.OPR 'PRODUCT '(SETQ $$VAL $$VAL*BODY) '(FIRST ($$VAL 1))] UPTO To define UPTO, a version of TO whose operand is evaluated only once: (I.S.OPR 'UPTO NIL '(BIND $$FOOBODY TO $$FOO)] TO To redefine TO so that instead of recomputing FORM each iteration, a variable is bound to the value of FORM, and then that variable is used: (I.S.OPR 'TO NIL '(BIND $$END FIRST (SETQ $$END BODY) ORIGINALTO $$END)] Note the use of ORIGINAL to redefine TO in terms of its original definition. ORIGINAL is intended for use in redefining built-in operators, since their definitions are not accessible, and hence not directly modifiable. Thus if the operator had been defined by the user via I.S.OPR, ORIGINAL would not obtain its original definition. In this case, one presumably would simply modify the i.s.opr definition. I.S.OPR can also be used to define synonyms for already defined i.s. operators by calling I.S.OPR with FORM an atom, e.g., (I.S.OPR 'WHERE 'WHEN) makes WHERE be the same as WHEN. Similarly, following (I.S.OPR 'ISTHERE 'THEREIS), one can write (ISTHERE ATOM IN Y), and following (I.S.OPR 'FIND 'FOR) and (I.S.OPR 'SUCHTHAT 'THEREIS), one can write (find X in Y suchthat X member Z) . In the current system, WHERE is synonymous with WHEN, SUCHTHAT and ISTHERE with THEREIS, FIND with FOR, and THRU with TO. If FORM is the atom MODIFIER, then NAME is defined as an i.s.opr which can immediately follow another i.s. operator (i.e., an error will not be generated, as described previously). NAME will not terminate the scope of the previous operator, and will be stripped off when DWIMIFY is called on its operand. OLD is an example of a MODIFIER type of operator. The MODIFIER feature allows the user to define i.s. operators similar to OLD, for use in conjunction with some other user defined i.s.opr which will produce the appropriate translation. The file package command I.S.OPRS (Chapter 17) will dump the definition of i.s.oprs. (I.S.OPRS PRODUCT UPTO) as a file package command will print suitable expressions so that these iterative statement operators will be (re)defined when the file is loaded. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "9-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "9-" "")) (222 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "9-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "9-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "9-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "9-" "")) (222 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (48 612 564 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))),ll2$$,ll,<<,r~2HTT2HTT,555,Zl,<<,~~,l~,l~,HH,HH,~~,ZZ,l~306T,l~,~~,l~1EVENT-T@ PAGEHEADING RIGHTPAGE//HH0 +T,3 +(T/F PAGEHEADING RIGHTPAGE/HH,HH306T,,@ PAGEHEADINGLEFTBACKTTITANTITAN +TIMESROMAN +PALATINO PALATINO PALATINO TITAN TITAN TITAN CLASSIC + HELVETICACLASSIC +MODERN +MODERN +MODERNMODERN +) #%" IM.CHAP.GETFNMODERN +# HRULE.GETFNMODERN"'!( HRULE.GETFNMODERN + c$IM.INDEX.GETFNTITAN  % 2#IM.INDEX.GETFNTITAN  %  ?!IM.INDEX.GETFNTITAN  %   #IM.INDEX.GETFNTITAN  %   $IM.INDEX.GETFNTITAN  %   !IM.INDEX.GETFNTITAN  % ) %  ,1"IM.INDEX.GETFNTITAN  %  & #IM.INDEX.GETFNTITAN  %   $IM.INDEX.GETFNTITAN  %    %    % )%$IM.INDEX.GETFNPALATINO  <%@L! HRULE.GETFN 'IM.INDEX.GETFNTITAN   + %   P + IM.INDEX.GETFNTITAN   + %   !IM.INDEX.GETFNTITAN  & IM.INDEX.GETFNTITAN  %   IM.INDEX.GETFNTITAN   + %    %$,%Y"IM.INDEX.GETFNTITAN   + %   ";     % "%  !%IM.INDEX.GETFNTITAN   + %^$%O! HRULE.GETFN   HIM.INDEX.GETFN%uW.    FIM.INDEX.GETFN%o,T 1     & ,[! HRULE.GETFN  +  +  + hIM.INDEX.GETFN%@       (       %B      .8   "   %2   %%     +%.9$>U! HRULE.GETFN  +-IM.INDEX.GETFNK//(             #!>) $9% j@ZD! HRULE.GETFN  +  +  +  +  + %:      !        %    %  1&%  2     % 3 P = %,*%    %V =% +  +  +  +  +  + %A%%  <%  .!% HRULE.GETFN  +  +  + %N   +  +  + %R    +  +  + %XVI  +  +  +  + %I ', 9 %   : N 8%C& ' %" ) %"9! %I%7*+%-:%$'         %/         &         % O% % +! HRULE.GETFN ,;IM.INDEX.GETFNA" @U  & / 6 ]f ;A* +)IM.INDEX.GETFN   *IM.INDEX.GETFNCLASSIC +%    /IM.INDEX.GETFNCLASSIC +%  y%<G(   .IM.INDEX.GETFN% F(%  +IM.INDEX.GETFNCLASSIC +% U# P  -IM.INDEX.GETFNCLASSIC +%  6 + .IM.INDEX.GETFNCLASSIC +%    + -IM.INDEX.GETFNCLASSIC +%     + /IM.INDEX.GETFNCLASSIC +%.  %9   /IM.INDEX.GETFNCLASSIC +&  0IM.INDEX.GETFNCLASSIC +%J  9. ]$ +IM.INDEX.GETFNCLASSIC +& ,IM.INDEX.GETFNCLASSIC +%I%!    0 5  *IM.INDEX.GETFNCLASSIC +%Iu )  0IM.INDEX.GETFNCLASSIC +% ( -  ,IM.INDEX.GETFNCLASSIC +% F +IM.INDEX.GETFNMODERN +% o$=  +IM.INDEX.GETFNCLASSIC +%-"  @F".  /IM.INDEX.GETFNCLASSIC +%+  M! *  8IM.INDEX.GETFN%    /IM.INDEX.GETFNCLASSIC +% 2 "    8IM.INDEX.GETFN%    /IM.INDEX.GETFNCLASSIC +%!2*   -IM.INDEX.GETFNCLASSIC +%z`  +IM.INDEX.GETFNCLASSIC +%3w o f %  %x    \IM.INDEX.GETFN%LX O$,%   I(S  , & '% ;  VIM.INDEX.GETFN% u+ &   3&49 *IM.INDEX.GETFNCLASSIC +%:F(+(% IB   .IM.INDEX.GETFNCLASSIC +%  j3 -IM.INDEX.GETFNCLASSIC +%' /IM.INDEX.GETFNCLASSIC +%  .IM.INDEX.GETFNCLASSIC +%  %  .IM.INDEX.GETFNCLASSIC +%   %   4IM.INDEX.GETFNCLASSIC +%E  4IM.INDEX.GETFNCLASSIC +% .IM.INDEX.GETFNCLASSIC +% 5$ 0IM.INDEX.GETFNCLASSIC +% 6R$ 1IM.INDEX.GETFNCLASSIC +% q%<0 1IM.INDEX.GETFNCLASSIC +% l' X 0IM.INDEX.GETFNCLASSIC +%%!7Q  =IM.INDEX.GETFNCLASSIC +% r &P  +  x8/_ ) =b"*> n!!4T)P@<!&*   +   +i03 9  u  + + +($*1 jCB"" #; 0&!4= ,64  +k  +  +  + iIM.INDEX.GETFN$ %   $ t   & $  @% W 4   $    D$ ?  +) C$'M + & + "  +  ! _  +  #    ' +      +     +    ' +      5 "       'uS !   V=n5%" z \ No newline at end of file diff --git a/docs/medley-irm/09-conditionals.pdf b/docs/medley-irm/09-conditionals.pdf new file mode 100644 index 00000000..387805a5 --- /dev/null +++ b/docs/medley-irm/09-conditionals.pdf @@ -0,0 +1,10945 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 6512 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-1)Tj +/TT4 1 Tf +10 0 0 10 317.75 568.2 Tm +(9. LISTS AND ITERATIVE STATEMENTS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +10 0 0 10 509.9999 555.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 78 531.54 Tm +0.1189 Tw +[(Medley gives you a large number of predicates, conditional functions, and control functions. Also,)]TJ +0 -1.2222 TD +0.0744 Tw +(there is a complex iterative statement facility which allows you to easily create complex loops and)Tj +T* +0 Tw +(iterative constructs.)Tj +/TT4 1 Tf +10 0 0 10 54 487.2 Tm +(Data Type Predicates)Tj +ET +1 w +54.01 484.49 m +510.01 484.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 470.54 Tm +(Medley provides separate functions for testing whether objects are of certain commonly-used types:)Tj +/TT8 1 Tf +2.6667 -2 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(LITATOM)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-30969.7([Function])]TJ +-3.9336 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a symbol; )Tj +/TT8 1 Tf +5.9678 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise. Note that a number is not a symbol. )Tj +/TT8 1 Tf +-16.486 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(SMALLP)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-31569.7([Function])]TJ +-3.3336 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7871 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.06 Tw +[( if )]TJ +/TT12 1 Tf +1.244 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.06 Tw +[( is a small integer; )]TJ +/TT8 1 Tf +8.5119 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.06 Tw +[( otherwise. \(The range of small integers is -65536 to)]TJ +-16.5435 -1.2889 TD +0 Tw +(+65535.)Tj +/TT8 1 Tf +-2.6667 -2 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FIXP)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +33.2697 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a small or large integer; )Tj +/TT8 1 Tf +11.874 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-22.3923 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FLOATP)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-31569.7([Function])]TJ +-3.3336 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a floating point number; )Tj +/TT8 1 Tf +12.2315 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-22.7497 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(NUMBERP)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-30969.7([Function])]TJ +-3.9336 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a number of any type, )Tj +/TT8 1 Tf +11.1895 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-21.7077 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(ATOM)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +33.2697 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.7271 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is an atom \(i.e. a symbol or a number\); )Tj +/TT8 1 Tf +17.4268 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-25.2783 -2.0667 TD +(\(ATOM )Tj +/TT12 1 Tf +4.0173 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1733 Tw +[( is )]TJ +/TT8 1 Tf +1.5615 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1733 Tw +[( if )]TJ +/TT12 1 Tf +1.4707 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1733 Tw +[( is an array, string, etc. In Common Lisp, )]TJ +/TT8 1 Tf +20.1938 0 TD +0 Tw +(CL:ATOM)Tj +/TT6 1 Tf +4.2007 0 TD +0.1733 Tw +[( is defined)]TJ +-35.0445 -1.2889 TD +0 Tw +(equivalent to the Interlisp function )Tj +/TT8 1 Tf +15.6187 0 TD +(NLISTP)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-21.8859 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(LISTP)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +32.6697 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a list cell \(something created by )Tj +/TT8 1 Tf +15.397 0 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +(\); )Tj +/TT8 1 Tf +0.833 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-29.1486 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(NLISTP)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-31569.7([Function])]TJ +/TT8 1 Tf +-3.3336 -1.8444 TD +(\(NOT \(LISTP X\)\))Tj +/TT6 1 Tf +9.0015 0 TD +(. Returns )Tj +/TT8 1 Tf +4.4771 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is not a list cell, )Tj +/TT8 1 Tf +7.2559 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-27.5256 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(STRINGP)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-30969.7([Function])]TJ +-3.9336 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a string, )Tj +/TT8 1 Tf +5.0391 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-15.5573 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(ARRAYP)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-31569([Function])]TJ +-3.3343 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is an array, )Tj +/TT8 1 Tf +5.3931 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-15.9113 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(HARRAYP)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-30968.9([Function])]TJ +-3.9344 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( if it is a hash array object; otherwise )Tj +/TT8 1 Tf +16.3281 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 7999 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-2)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +(HARRAYP)Tj +/TT6 1 Tf +4.2 0 TD +0.02 Tw +[( returns )]TJ +/TT8 1 Tf +3.7441 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.02 Tw +[( if )]TJ +/TT12 1 Tf +1.164 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( is a list whose )]TJ +/TT8 1 Tf +6.7616 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.02 Tw +[( is an )]TJ +/TT8 1 Tf +2.6069 0 TD +0 Tw +(HARRAYP)Tj +/TT6 1 Tf +4.2007 0 TD +0.02 Tw +(, even though this is accepted)Tj +-26.878 -1.2889 TD +0 Tw +(by the hash array functions.)Tj +/TT16 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.2789 Tw +[(: The empty list, )]TJ +/TT8 1 Tf +8.9955 0 TD +0 Tw +(\(\))Tj +/TT6 1 Tf +1.2002 0 TD +0.2789 Tw +[( or )]TJ +/TT8 1 Tf +1.9987 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2789 Tw +(, is considered to be a symbol, rather than a list.)Tj +-16.2169 -1.2889 TD +0 Tw +(Therefore, )Tj +/TT8 1 Tf +4.873 0 TD +0.1722 Tw +(\(LITATOM NIL\) = \(ATOM NIL\) = T)Tj +/TT6 1 Tf +19.0363 0 TD +0.0722 Tw +[( and )]TJ +/TT8 1 Tf +2.3373 0 TD +0.1722 Tw +(\(LISTP NIL\) = NIL)Tj +/TT6 1 Tf +10.7183 0 TD +0.0722 Tw +[(. Take)]TJ +-36.9649 -1.2889 TD +0 Tw +(care when using these functions if the object may be the empty list )Tj +/TT8 1 Tf +29.5508 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 493.8 Tm +(Equality Predicates)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 491.09 m +558.01 491.09 l +S +BT +/TT6 1 Tf +9 0 0 9 126 477.14 Tm +0.0122 Tw +[(Sometimes, there is more than one type of equality. For instance, given two lists, you can ask whether)]TJ +0 -1.2222 TD +0.0344 Tw +(they are exactly the same object, or whether they are two distinct lists that contain the same elements.)Tj +T* +0 Tw +(Confusion between these two types of equality is often the source of program errors.)Tj +/TT8 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(EQ)Tj +/TT8 1 Tf +1.1999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 177.0017 435.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 179.7817 435.86 Tm +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +33.5607 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.8993 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1722 Tw +[( if )]TJ +/TT12 1 Tf +1.4685 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1722 Tw +[( and )]TJ +/TT12 1 Tf +2.5373 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1722 Tw +[( are identical pointers; )]TJ +/TT8 1 Tf +10.7719 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1722 Tw +[( otherwise. )]TJ +/TT8 1 Tf +5.8726 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.1722 Tw +[( should not be used to)]TJ +-29.3504 -1.2889 TD +0 Tw +(compare two numbers, unless they are small integers; use )Tj +/TT8 1 Tf +25.7695 0 TD +(EQP)Tj +/TT6 1 Tf +1.8003 0 TD +( instead.)Tj +/TT8 1 Tf +-30.2365 -2.2089 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(NEQ)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 182.4017 387.78 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1817 387.78 Tm +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +32.9607 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(The same as )Tj +/TT8 1 Tf +5.6333 0 TD +(\(NOT \(EQ )Tj +/TT12 1 Tf +5.4009 0 TD +(X Y)Tj +/TT8 1 Tf +1.8003 0 TD +(\)\))Tj +-15.5011 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(NULL)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +33.2697 0 TD +([Function])Tj +/TT8 1 Tf +-38.07 -1.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(NOT)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +33.8697 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(The same as )Tj +/TT8 1 Tf +5.6333 0 TD +(\(EQ )Tj +/TT12 1 Tf +2.4004 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( NIL\))Tj +-11.3005 -2.2089 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(EQP)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 182.4017 306.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1817 306.5 Tm +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +32.9607 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.9248 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1978 Tw +[( if )]TJ +/TT12 1 Tf +1.5196 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1978 Tw +[( and )]TJ +/TT12 1 Tf +2.5884 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1978 Tw +[( are )]TJ +/TT8 1 Tf +2.2696 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.1978 Tw +(, or if )Tj +/TT12 1 Tf +3.1583 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1978 Tw +[( and )]TJ +/TT12 1 Tf +2.5884 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1978 Tw +[( are numbers and are equal in value; )]TJ +/TT8 1 Tf +17.9362 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +-38.186 -1.2889 TD +(otherwise. For more discussion of )Tj +/TT8 1 Tf +15.4238 0 TD +(EQP)Tj +/TT6 1 Tf +1.8003 0 TD +( and other number functions, see Chapter 7.)Tj +/TT8 1 Tf +-17.2241 -2.0667 TD +(EQP)Tj +/TT6 1 Tf +1.8003 0 TD +0.0678 Tw +[( also can be used to compare stack pointers \(Section 11\) and compiled code \(Chapter)]TJ +-1.8003 -1.2889 TD +0 Tw +(10\).)Tj +/TT8 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(EQUAL)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 193.2017 228.82 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 195.9818 228.82 Tm +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-31260.7([Function])]TJ +/TT8 1 Tf +-3.6426 -1.8444 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT12 1 Tf +2.1929 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( are one of the following:)Tj +-11.8218 -1.7333 TD +(1.)Tj +/TT8 1 Tf +1.3333 0 TD +(EQ)Tj +/TT6 1 Tf +-1.3333 -1.1778 TD +(2.)Tj +/TT8 1 Tf +1.3333 0 TD +(EQP)Tj +/TT6 1 Tf +1.8003 0 TD +(, i.e., numbers with equal value )Tj +-3.1336 -1.1778 TD +(3.)Tj +/TT8 1 Tf +1.3333 0 TD +(STREQUAL)Tj +/TT6 1 Tf +4.8008 0 TD +(, i.e., strings containing the same sequence of characters)Tj +-6.1341 -1.1778 TD +[(4.)-583.3(Lists and )]TJ +/TT8 1 Tf +5.6019 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( of )Tj +/TT12 1 Tf +1.3789 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( of )Tj +/TT12 1 Tf +1.3789 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( of )Tj +/TT12 1 Tf +1.3789 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( of )Tj +/TT12 1 Tf +1.3789 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +-34.3368 -1.8444 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise. Note that )Tj +/TT8 1 Tf +9.7725 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +( can be significantly slower than )Tj +/TT8 1 Tf +14.4844 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-36.9624 -2.0667 TD +0.0356 Tw +(A loose description of )Tj +/TT8 1 Tf +10.0744 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0356 Tw +[( might be to say that )]TJ +/TT12 1 Tf +9.4702 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0356 Tw +[( and )]TJ +/TT12 1 Tf +2.264 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0356 Tw +[( are )]TJ +/TT8 1 Tf +1.9451 0 TD +0 Tw +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0356 Tw +[( if they print out the)]TJ +-30.9548 -1.2889 TD +0 Tw +(same way.)Tj +/TT8 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(EQUALALL)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 209.4017 98.74 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 212.1817 98.74 Tm +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-29460.7([Function])]TJ +-5.4426 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.2926 0 TD +(EQUAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1056 Tw +(, except it descends into the contents of arrays, hash arrays, user data types,)Tj +-5.2931 -1.2889 TD +0 Tw +(etc. Two non-)Tj +/TT8 1 Tf +6.2847 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( arrays may be )Tj +/TT8 1 Tf +6.7412 0 TD +(EQUALALL)Tj +/TT6 1 Tf +4.8008 0 TD +( if their respective componants are )Tj +/TT8 1 Tf +15.4878 0 TD +(EQUALALL)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +19 0 obj +<< +/Length 10632 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-3)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT16 1 Tf +9 0 0 9 126 569.54 Tm +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1122 Tw +[(: In general, )]TJ +/TT8 1 Tf +6.1501 0 TD +0 Tw +(EQUALALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.1122 Tw +[( descends all the way into all datatypes, both those youve)]TJ +-13.173 -1.2889 TD +0.2267 Tw +(defined and those built into the system. If you have a data structure with fonts and)Tj +0 -1.2222 TD +0.3178 Tw +(pointers to windows, )Tj +/TT8 1 Tf +10.591 0 TD +0 Tw +(EQUALALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.3178 Tw +[( will descend those also. If the data structures are)]TJ +-15.3918 -1.2889 TD +0 Tw +(circular, as windows are, )Tj +/TT8 1 Tf +11.2822 0 TD +(EQUALALL)Tj +/TT6 1 Tf +4.8008 0 TD +( can cause stack overflow.)Tj +/TT4 1 Tf +10 0 0 10 54 512.4 Tm +(Logical Predicates)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 509.69 m +510.01 509.69 l +S +BT +/TT8 1 Tf +9 0 0 9 102 495.74 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +6 0 0 6 134.4 493.74 Tm +(1)Tj +9 0 0 9 138 495.74 Tm +( X)Tj +6 0 0 6 148.8 493.74 Tm +(2)Tj +9 0 0 9 152.4 495.74 Tm +( ... X)Tj +6 0 0 6 184.8 493.74 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 188.4 495.74 Tm +(\))Tj +/TT6 1 Tf +0.6 0 TD +[( )-17892.2([NLambda NoSpread Function])]TJ +-7.5333 -1.95 TD +0.0489 Tw +[(Takes an indefinite number of arguments \(including zero\), that are evaluated in order. If)]TJ +0 -1.2222 TD +0.1789 Tw +(any argument evaluates to )Tj +/TT8 1 Tf +12.717 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6789 0 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.1789 Tw +[( immediately returns )]TJ +/TT8 1 Tf +10.0806 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1789 Tw +(, without evaluating the)Tj +-28.8774 -1.2889 TD +0.1056 Tw +[(remaining arguments. If all of the arguments evaluate to non-)]TJ +/TT8 1 Tf +28.537 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1056 Tw +(, the value of the last)Tj +-30.3373 -1.2889 TD +0 Tw +(argument is returned. )Tj +/TT8 1 Tf +9.9092 0 TD +( \(AND\) => T)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT8 1 Tf +-19.1769 -2.0667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +6 0 0 6 129 423.39 Tm +(1)Tj +9 0 0 9 132.6 425.39 Tm +( X)Tj +6 0 0 6 143.4 423.39 Tm +(2)Tj +9 0 0 9 147 425.39 Tm +( ... X)Tj +6 0 0 6 179.4 423.39 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 183 425.39 Tm +(\))Tj +/TT6 1 Tf +0.6 0 TD +[( )-18492.2([NLambda NoSpread Function])]TJ +-6.9333 -1.95 TD +0.0489 Tw +[(Takes an indefinite number of arguments \(including zero\), that are evaluated in order. If)]TJ +0 -1.2222 TD +0.3444 Tw +(any argument is non-)Tj +/TT8 1 Tf +10.5036 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3444 Tw +(, the value of that argument is returned by )Tj +/TT8 1 Tf +22.057 0 TD +0 Tw +(OR)Tj +/TT6 1 Tf +1.2002 0 TD +0.3444 Tw +[( \(without)]TJ +-35.5611 -1.2889 TD +0.1844 Tw +[(evaluating the remaining arguments\). If all of the arguments evaluate to )]TJ +/TT8 1 Tf +34.5654 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6844 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1844 Tw +[( is)]TJ +-38.8504 -1.2889 TD +0 Tw +(returned. )Tj +/TT8 1 Tf +4.3701 0 TD +( \(OR\))Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +1.2002 0 TD +(=>)Tj +/TT10 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +1.2002 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-18.1048 -2.0667 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.0389 Tw +[( and )]TJ +/TT8 1 Tf +2.2706 0 TD +0 Tw +(OR)Tj +/TT6 1 Tf +1.2002 0 TD +0.0389 Tw +[( can be used as simple logical connectives, but note that they may not evaluate all of their)]TJ +-5.2711 -1.2889 TD +0.0311 Tw +[(arguments. This makes a difference if some of the arguments cause side-effects. This also means you)]TJ +0 -1.2222 TD +0.0656 Tw +(can use )Tj +/TT8 1 Tf +3.6629 0 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.0656 Tw +[( and )]TJ +/TT8 1 Tf +2.324 0 TD +0 Tw +(OR)Tj +/TT6 1 Tf +1.2002 0 TD +0.0656 Tw +[( as simple conditional statements. For example: )]TJ +/TT8 1 Tf +21.9219 0 TD +0.1567 Tw +(\(AND \(LISTP)Tj +/TT10 1 Tf +6.7577 0 TD +0 Tw +( )Tj +/TT12 1 Tf +0.7568 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1567 Tw +(\) \(CDR)Tj +/TT10 1 Tf +3.7573 0 TD +0 Tw +( )Tj +/TT12 1 Tf +0.7568 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\)\))Tj +/TT6 1 Tf +-44.1379 -1.2889 TD +0.0378 Tw +(returns the value of )Tj +/TT8 1 Tf +9.0593 0 TD +0 Tw +(\(CDR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6901 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0378 Tw +[( if )]TJ +/TT12 1 Tf +1.1996 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0378 Tw +[( is a list cell; otherwise it returns )]TJ +/TT8 1 Tf +14.7812 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0378 Tw +[( without evaluating )]TJ +/TT8 1 Tf +9.065 0 TD +0 Tw +(\(CDR)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6901 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-45.0869 -1.2889 TD +0.0078 Tw +(In general, you should avoid this use of )Tj +/TT8 1 Tf +17.7956 0 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +[( and )]TJ +/TT8 1 Tf +2.2084 0 TD +0 Tw +(OR)Tj +/TT6 1 Tf +1.2002 0 TD +0.0078 Tw +[( in favor of more explicit conditional statements in)]TJ +-23.0045 -1.2889 TD +0 Tw +(order to make programs more readable.)Tj +/TT4 1 Tf +10 0 0 10 54 275.3 Tm +(COND Conditional Function)Tj +ET +54.01 272.59 m +510.01 272.59 l +S +BT +/TT8 1 Tf +9 0 0 9 102 257.36 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(CLAUSE)Tj +6 0 0 6 166.8 255.36 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 170.4 257.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 173.18 257.36 Tm +(CLAUSE)Tj +6 0 0 6 205.58 255.36 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 209.18 257.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 211.96 257.36 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 228.1626 257.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 230.9426 257.36 Tm +(CLAUSE)Tj +6 0 0 6 263.34 255.36 Tm +(K)Tj +/TT8 1 Tf +9 0 0 9 266.94 257.36 Tm +(\))Tj +/TT6 1 Tf +0.6 0 TD +[( )-9165.6([NLambda NoSpread Function])]TJ +/TT8 1 Tf +-16.26 -1.95 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.0833 Tw +[( takes an indefinite number of arguments, called clauses. Each )]TJ +/TT12 1 Tf +28.8381 0 TD +0 Tw +(CLAUSE)Tj +6 0 0 6 439.6 237.81 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 443.2 239.81 Tm +0.0833 Tw +[( is a list of)]TJ +-35.2444 -1.3944 TD +0.1889 Tw +(the form )Tj +/TT8 1 Tf +4.4217 0 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(P)Tj +6 0 0 6 176.6 225.26 Tm +(i)Tj +/TT10 1 Tf +9 0 0 9 180.2 227.26 Tm +( )Tj +/TT12 1 Tf +1.0545 0 TD +(C)Tj +6 0 0 6 195.09 225.26 Tm +(i1)Tj +/TT10 1 Tf +9 0 0 9 202.29 227.26 Tm +0.4544 Tw +[( ... )]TJ +/TT12 1 Tf +3.9094 0 TD +0 Tw +(C)Tj +6 0 0 6 242.87 225.26 Tm +(iN)Tj +/TT8 1 Tf +9 0 0 9 250.07 227.26 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1889 Tw +(, where )Tj +/TT12 1 Tf +3.8968 0 TD +0 Tw +(P)Tj +6 0 0 6 295.95 225.26 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 299.55 227.26 Tm +0.1889 Tw +[( is the predicate, and )]TJ +/TT12 1 Tf +10.3653 0 TD +0 Tw +(C)Tj +6 0 0 6 398.25 225.26 Tm +(i1)Tj +/TT8 1 Tf +9 0 0 9 405.45 227.26 Tm +0.4544 Tw +[( ... )]TJ +/TT12 1 Tf +3.9094 0 TD +0 Tw +(C)Tj +6 0 0 6 446.03 225.26 Tm +(iN)Tj +/TT6 1 Tf +9 0 0 9 453.23 227.26 Tm +0.1889 Tw +[( are the)]TJ +-36.3589 -1.3944 TD +0 Tw +(consequents. The operation of )Tj +/TT8 1 Tf +13.7676 0 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +( can be paraphrased as:)Tj +/TT8 1 Tf +-14.168 -1.6667 TD +(IF)Tj +/TT12 1 Tf +1.2002 0 TD +( P)Tj +6 0 0 6 165.6 197.71 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 169.2 199.71 Tm +( THEN)Tj +/TT12 1 Tf +3.0005 0 TD +( C)Tj +6 0 0 6 207 197.71 Tm +(11)Tj +/TT8 1 Tf +9 0 0 9 214.2 199.71 Tm +( ... )Tj +/TT12 1 Tf +3.0005 0 TD +(C)Tj +6 0 0 6 246.6 197.71 Tm +(1N)Tj +/TT8 1 Tf +9 0 0 9 253.8 199.71 Tm +( ELSEIF)Tj +/TT12 1 Tf +4.2007 0 TD +( P)Tj +6 0 0 6 302.4 197.71 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 306 199.71 Tm +( THEN)Tj +/TT12 1 Tf +3.0005 0 TD +( C)Tj +6 0 0 6 343.8 197.71 Tm +(21)Tj +/TT8 1 Tf +9 0 0 9 351 199.71 Tm +( ... )Tj +/TT12 1 Tf +3.0005 0 TD +(C)Tj +6 0 0 6 383.4 197.71 Tm +(2N)Tj +/TT8 1 Tf +9 0 0 9 390.6 199.71 Tm +( ELSEIF)Tj +/TT12 1 Tf +4.2007 0 TD +( P)Tj +6 0 0 6 439.2 197.71 Tm +(3)Tj +/TT8 1 Tf +9 0 0 9 442.8 199.71 Tm +( ...)Tj +/TT6 1 Tf +-35.2 -1.95 TD +0.3033 Tw +[(The clauses are considered in sequence as follows: The predicate )]TJ +/TT12 1 Tf +32.3215 0 TD +0 Tw +(P)Tj +6 0 0 6 422.38 180.16 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 425.98 182.16 Tm +0.3033 Tw +[( of the clause)]TJ +/TT12 1 Tf +-33.3311 -1.3944 TD +0 Tw +(CLAUSE)Tj +6 0 0 6 158.4 167.61 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 162 169.61 Tm +0.1156 Tw +[( is evaluated. If the value of )]TJ +/TT12 1 Tf +13.6173 0 TD +0 Tw +(P)Tj +6 0 0 6 289.95 167.61 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 293.55 169.61 Tm +0.1156 Tw +[( is true \(non-)]TJ +/TT8 1 Tf +6.9907 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1156 Tw +(\), the consequents )Tj +/TT12 1 Tf +8.5156 0 TD +0 Tw +(C)Tj +6 0 0 6 454.73 167.61 Tm +(i1)Tj +9 0 0 9 461.93 169.61 Tm +0.2767 Tw +[( ...)]TJ +-37.3256 -1.3944 TD +0 Tw +(C)Tj +6 0 0 6 131.4 155.06 Tm +(iN)Tj +/TT6 1 Tf +9 0 0 9 138.6 157.06 Tm +0.0378 Tw +[( are evaluated in order, and the value of the )]TJ +/TT8 1 Tf +19.9388 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.0378 Tw +[( is the value of the last expression in)]TJ +-23.7392 -1.3944 TD +0.0311 Tw +[(the clause. If )]TJ +/TT12 1 Tf +6.1723 0 TD +0 Tw +(P)Tj +6 0 0 6 186.96 142.51 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 190.56 144.51 Tm +0.0311 Tw +[( is false \()]TJ +/TT8 1 Tf +4.918 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +[( to )]TJ +/TT8 1 Tf +1.4343 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +(\), then the remainder of )Tj +/TT12 1 Tf +10.8387 0 TD +0 Tw +(CLAUSE)Tj +6 0 0 6 404.7 142.51 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 408.3 144.51 Tm +0.0311 Tw +[( is ignored, and the)]TJ +-31.3667 -1.3944 TD +0.0089 Tw +(next clause, )Tj +/TT12 1 Tf +5.4118 0 TD +0 Tw +(CLAUSE)Tj +6 0 0 6 207.11 129.96 Tm +(i+1)Tj +/TT6 1 Tf +9 0 0 9 217.91 131.96 Tm +0.0089 Tw +[(, is considered. If no )]TJ +/TT12 1 Tf +9.4274 0 TD +0 Tw +(P)Tj +6 0 0 6 308.18 129.96 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 311.78 131.96 Tm +0.0089 Tw +[( is true for )]TJ +/TT18 1 Tf +4.8275 0 TD +0 Tw +(any)Tj +/TT6 1 Tf +1.5 0 TD +0.0089 Tw +[( clause, the value of the )]TJ +/TT8 1 Tf +10.6354 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +-37.6051 -1.3944 TD +(is )Tj +/TT8 1 Tf +0.9648 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-2.7651 -2.0667 TD +0.03 Tw +(If a clause has no consequents, and has the form \()Tj +/TT12 1 Tf +22.1188 0 TD +0 Tw +(P)Tj +6 0 0 6 330.52 98.81 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 334.12 100.81 Tm +0.03 Tw +(\), then if )Tj +/TT12 1 Tf +4.0163 0 TD +0 Tw +(P)Tj +6 0 0 6 375.67 98.81 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 379.27 100.81 Tm +0.03 Tw +[( evaluates to non-)]TJ +/TT8 1 Tf +7.922 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +(, it is)Tj +-37.8634 -1.3944 TD +0 Tw +(returned as the value of the )Tj +/TT8 1 Tf +12.3853 0 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +(. It is only evaluated once.)Tj +-14.7856 -2.0667 TD +(Example:)Tj +/TT19 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DEFINEQ \(DOUBLE \(X\))Tj +1.0132 -1 TD +(\(COND \(\(NUMBERP X\) \(PLUS X X\)\))Tj +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +24 0 obj +<< +/Length 6533 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-4)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 570.14 Tm +(\(\(STRINGP X\) \(CONCAT X X\)\))Tj +0 -1 TD +(\(\(ATOM X\) \(PACK* X X\)\))Tj +T* +(\(T \(PRINT "unknown"\) X\))Tj +T* +(\(\(HORRIBLE-ERROR\)\)])Tj +-1.3333 -1 TD +(\(DOUBLE\))Tj +/TT19 1 Tf +-0.6667 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DOUBLE 5\))Tj +1.0132 -1 TD +(10)Tj +/TT19 1 Tf +-2 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DOUBLE "FOO"\))Tj +1.0132 -1 TD +("FOOFOO")Tj +/TT19 1 Tf +-2 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DOUBLE BAR\))Tj +1.0132 -1 TD +(BARBAR)Tj +/TT19 1 Tf +-2 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DOUBLE \(A B C\)\))Tj +1.0132 -1 TD +("unknown")Tj +T* +(\(A B C\))Tj +/TT6 1 Tf +-6 -1.8444 TD +0.0967 Tw +[(A few points about this example: Notice that )]TJ +/TT8 1 Tf +21.1156 0 TD +0 Tw +(5)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[( is both a number and an atom, but it is)]TJ +-21.7157 -1.2889 TD +0.1722 Tw +(caught by the )Tj +/TT8 1 Tf +7.7745 0 TD +0 Tw +(NUMBERP)Tj +/TT6 1 Tf +4.2007 0 TD +0.1722 Tw +[( clause before the )]TJ +/TT8 1 Tf +8.602 0 TD +0 Tw +(ATOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1722 Tw +[( clause. Also notice the predicate )]TJ +/TT8 1 Tf +16.166 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +-39.7436 -1.2889 TD +0.0267 Tw +[(which is always true. This is the normal way to indicate a )]TJ +/TT8 1 Tf +26.1973 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.0267 Tw +[( clause which will always)]TJ +-28.5976 -1.2889 TD +0.0556 Tw +(be executed \(if none of the preceeding clauses are true\). )Tj +/TT8 1 Tf +25.5843 0 TD +0 Tw +(\(HORRIBLE-ERROR\))Tj +/TT6 1 Tf +9.6016 0 TD +0.0556 Tw +[( will never)]TJ +-35.1858 -1.2889 TD +0 Tw +(be executed.)Tj +/TT4 1 Tf +10 0 0 10 102 351.8 Tm +(The IF Statement)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 349.09 m +558.01 349.09 l +S +BT +/TT6 1 Tf +9 0 0 9 126 335.14 Tm +(The )Tj +/TT8 1 Tf +2.1427 0 TD +(IF)Tj +/TT6 1 Tf +1.2002 0 TD +0.2189 Tw +[( statement lets you write conditional expressions that are easier to read than using )]TJ +/TT8 1 Tf +39.5895 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +-42.9324 -1.2889 TD +0.0333 Tw +[(directly. CLISP translates expressions using )]TJ +/TT8 1 Tf +19.9925 0 TD +0 Tw +(IF)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5333 0 TD +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5333 0 TD +(ELSEIF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +(, or )Tj +/TT8 1 Tf +1.7576 0 TD +0 Tw +(ELSE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0333 Tw +[( \(or their lowercase versions\))]TJ +-32.4183 -1.2889 TD +0 Tw +(into equivalent )Tj +/TT8 1 Tf +6.9214 0 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +(s. In general, statements of the form:)Tj +/TT8 1 Tf +-3.9884 -1.6667 TD +(\(if )Tj +/TT12 1 Tf +2.4004 0 TD +(AAA)Tj +/TT8 1 Tf +1.8003 0 TD +( then )Tj +/TT12 1 Tf +3.6006 0 TD +(BBB)Tj +/TT8 1 Tf +1.8003 0 TD +( elseif )Tj +/TT12 1 Tf +4.8008 0 TD +(CCC)Tj +/TT8 1 Tf +1.8003 0 TD +( then )Tj +/TT12 1 Tf +3.6006 0 TD +(DDD)Tj +/TT8 1 Tf +1.8003 0 TD +( else )Tj +/TT12 1 Tf +3.6006 0 TD +(EEE)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +-32.3377 -1.8444 TD +(are translated to:)Tj +/TT8 1 Tf +5.3333 -1.6 TD +(\(COND \()Tj +/TT12 1 Tf +4.2007 0 TD +(AAA)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(BBB)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +-8.4014 -1 TD +( \()Tj +/TT12 1 Tf +4.2007 0 TD +(CCC)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(DDD)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +-8.4014 -1 TD +( \(T )Tj +/TT12 1 Tf +5.4009 0 TD +(EEE)Tj +/TT8 1 Tf +1.8003 0 TD +(\)\))Tj +/TT6 1 Tf +-12.5345 -1.8444 TD +0.0133 Tw +(The segment between )Tj +/TT8 1 Tf +9.9253 0 TD +0 Tw +(IF)Tj +/TT6 1 Tf +1.2002 0 TD +0.0133 Tw +[( or )]TJ +/TT8 1 Tf +1.4676 0 TD +0 Tw +(ELSEIF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +[( and the next )]TJ +/TT8 1 Tf +6.0367 0 TD +0 Tw +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( corresponds to the predicate of a )]TJ +/TT8 1 Tf +15.0538 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( clause,)]TJ +-42.0849 -1.2889 TD +0.0278 Tw +(and the segment between )Tj +/TT8 1 Tf +11.6526 0 TD +0 Tw +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( and the next )]TJ +/TT8 1 Tf +6.0945 0 TD +0 Tw +(ELSE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( or )]TJ +/TT8 1 Tf +1.4965 0 TD +0 Tw +(ELSEIF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0278 Tw +[( as the consequent\(s\). )]TJ +/TT8 1 Tf +10.0647 0 TD +0 Tw +(ELSE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( is the same)]TJ +-40.11 -1.2889 TD +0 Tw +(as)Tj +/TT8 1 Tf +0.9238 0 TD +0.12 Tw +[( ELSEIF)]TJ +/TT6 1 Tf +4.3207 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.3 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3 0 TD +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.05 Tw +[(. These words are spelling corrected using the spelling list )]TJ +/TT8 1 Tf +26.6345 0 TD +0 Tw +(CLISPIFWORDSPLST)Tj +/TT6 1 Tf +9.6016 0 TD +(.)Tj +-45.081 -1.2889 TD +(You may also use lower-case versions \()Tj +/TT8 1 Tf +17.2847 0 TD +(if)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(then)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(elseif)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(else)Tj +/TT6 1 Tf +2.4004 0 TD +(\).)Tj +-28.3862 -2.0667 TD +0.1711 Tw +(If there is nothing following a )Tj +/TT8 1 Tf +14.408 0 TD +0 Tw +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1711 Tw +(, or )Tj +/TT8 1 Tf +2.0331 0 TD +0 Tw +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1711 Tw +[( is omitted entirely, the resulting )]TJ +/TT8 1 Tf +15.6873 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.1711 Tw +[( clause has a)]TJ +-39.3296 -1.2889 TD +0.0189 Tw +[(predicate but no consequent. For example, )]TJ +/TT8 1 Tf +19.3895 0 TD +0.0444 Tw +(\(if X then elseif ...\))Tj +/TT6 1 Tf +13.3799 0 TD +0.0189 Tw +[( and )]TJ +/TT8 1 Tf +2.2306 0 TD +0.0444 Tw +(\(if X elseif ...\))Tj +/TT6 1 Tf +-35.0001 -1.2889 TD +0 Tw +(both translate to )Tj +/TT8 1 Tf +7.4526 0 TD +(\(COND \(X\) ...\))Tj +/TT6 1 Tf +8.4014 0 TD +(if )Tj +/TT8 1 Tf +1.874 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is not )Tj +/TT8 1 Tf +2.9189 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, it is returned as the value of the )Tj +/TT8 1 Tf +14.7173 0 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-40.165 -2.0667 TD +0.0778 Tw +(Each predicate must be a single expression, but multiple expressions are allowed as the consequents)Tj +0 -1.2222 TD +0 Tw +(after )Tj +/TT8 1 Tf +2.3965 0 TD +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[( or )]TJ +/TT8 1 Tf +1.6676 0 TD +0 Tw +(ELSE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[(. Multiple consequent expressions are implicitely wrapped in a )]TJ +/TT8 1 Tf +29.4092 0 TD +0 Tw +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1133 Tw +(, and the)Tj +-41.2746 -1.2889 TD +0 Tw +(value of the last one is returned as the value of the consequent. For example:)Tj +/TT8 1 Tf +0 -1.6 TD +(\(if X then \(PRINT "FOO"\) \(PRINT "BAR"\) elseif Y then \(PRINT "BAZ"\)\))Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +27 0 obj +<< +/Length 9106 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-5)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT4 1 Tf +-22.663 -4.38 TD +(Selection Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 102 550.26 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(SELECTQ)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 156.0088 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 158.7888 550.26 Tm +(CLAUSE)Tj +6 0 0 6 191.18 548.26 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 194.78 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 197.56 550.26 Tm +(CLAUSE)Tj +6 0 0 6 229.96 548.26 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 233.56 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 236.34 550.26 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 252.5426 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 255.3226 550.26 Tm +(CLAUSE)Tj +6 0 0 6 287.72 548.26 Tm +(K)Tj +/F1 1 Tf +10 0 0 10 291.32 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 108 539.71 Tm +(DEFAULT)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-22624.8([NLambda NoSpread Function])]TJ +-2.8008 -1.8444 TD +0.0256 Tw +(Selects a form or sequence of forms based on the value of )Tj +/TT12 1 Tf +25.7803 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0256 Tw +[(. Each clause )]TJ +/TT12 1 Tf +6.2297 0 TD +0 Tw +(CLAUSE)Tj +6 0 0 6 451.95 521.11 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 455.55 523.11 Tm +0.0256 Tw +[( is a list)]TJ +-36.6167 -1.3944 TD +0 Tw +(of the form )Tj +/TT8 1 Tf +5.1729 0 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(S)Tj +6 0 0 6 183.36 508.56 Tm +(i)Tj +/TT10 1 Tf +9 0 0 9 186.96 510.56 Tm +( )Tj +/TT12 1 Tf +0.6001 0 TD +(C)Tj +6 0 0 6 197.76 508.56 Tm +(i1)Tj +/TT10 1 Tf +9 0 0 9 204.96 510.56 Tm +( ... )Tj +/TT12 1 Tf +3.0005 0 TD +(C)Tj +6 0 0 6 237.36 508.56 Tm +(iN)Tj +/TT8 1 Tf +9 0 0 9 244.56 510.56 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( where )Tj +/TT12 1 Tf +3.269 0 TD +(S)Tj +6 0 0 6 284.79 508.56 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 288.39 510.56 Tm +( is the selection key. Think of )Tj +/TT8 1 Tf +13.3081 0 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +( as:)Tj +/TT8 1 Tf +-31.5521 -1.7722 TD +(IF)Tj +/TT12 1 Tf +1.2002 0 TD +( X)Tj +/TT8 1 Tf +1.2002 0 TD +( = )Tj +/TT12 1 Tf +1.8003 0 TD +(S)Tj +6 0 0 6 205.2 492.61 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 208.8 494.61 Tm +( THEN)Tj +/TT12 1 Tf +3.0005 0 TD +( C)Tj +6 0 0 6 246.6 492.61 Tm +(11)Tj +/TT8 1 Tf +9 0 0 9 253.8 494.61 Tm +( ... )Tj +/TT12 1 Tf +3.0005 0 TD +(C)Tj +6 0 0 6 286.2 492.61 Tm +(1N)Tj +/TT8 1 Tf +9 0 0 9 293.4 494.61 Tm +( ELSEIF)Tj +/TT12 1 Tf +4.2007 0 TD +( X)Tj +/TT8 1 Tf +1.2002 0 TD +( = )Tj +/TT12 1 Tf +1.8003 0 TD +(S)Tj +6 0 0 6 363.6 492.61 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 198 484.66 Tm +(THEN ... ELSE)Tj +/TT12 1 Tf +7.8013 0 TD +( DEFAULT)Tj +/TT6 1 Tf +-15.8013 -1.8444 TD +(If )Tj +/TT12 1 Tf +0.9588 0 TD +(S)Tj +6 0 0 6 140.03 466.06 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 143.63 468.06 Tm +0.0389 Tw +[( is a symbol, the value of )]TJ +/TT12 1 Tf +11.4441 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0389 Tw +[( is tested to see if it is )]TJ +/TT8 1 Tf +9.8809 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0389 Tw +[( to )]TJ +/TT12 1 Tf +1.4499 0 TD +0 Tw +(S)Tj +6 0 0 6 370.2 466.06 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 373.8 468.06 Tm +0.0389 Tw +[( \(which is )]TJ +/TT18 1 Tf +4.6474 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0389 Tw +[( evaluated\). If)]TJ +-33.5138 -1.3944 TD +0.0167 Tw +(so, the expressions )Tj +/TT12 1 Tf +8.5676 0 TD +0 Tw +(C)Tj +6 0 0 6 208.52 453.51 Tm +(i1)Tj +/TT8 1 Tf +9 0 0 9 215.72 455.51 Tm +0.04 Tw +[( ... )]TJ +/TT12 1 Tf +3.0805 0 TD +0 Tw +(C)Tj +6 0 0 6 248.84 453.51 Tm +(iN)Tj +/TT6 1 Tf +9 0 0 9 256.04 455.51 Tm +0.0167 Tw +[( are evaluated in sequence, and the value of the )]TJ +/TT8 1 Tf +21.3517 0 TD +0 Tw +(SELECTQ)Tj +/TT6 1 Tf +-35.8006 -1.3944 TD +(is the value of the last expression.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(S)Tj +6 0 0 6 139.68 422.96 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 143.28 424.96 Tm +( is a list, the value of )Tj +/TT12 1 Tf +9.251 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is compared with each element \(not evaluated\) of )Tj +/TT12 1 Tf +22.3335 0 TD +(S)Tj +6 0 0 6 438.36 422.96 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 441.96 424.96 Tm +(, and if )Tj +/TT12 1 Tf +3.3169 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is)Tj +/TT8 1 Tf +-39.0237 -1.3944 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +( to any one of them, then )Tj +/TT12 1 Tf +11.2354 0 TD +(C)Tj +6 0 0 6 243.3 410.41 Tm +(i1)Tj +/TT8 1 Tf +9 0 0 9 250.5 412.41 Tm +( ... )Tj +/TT12 1 Tf +3.0005 0 TD +(C)Tj +6 0 0 6 282.9 410.41 Tm +(iN)Tj +/TT6 1 Tf +9 0 0 9 290.1 412.41 Tm +( are evaluated as above.)Tj +-18.2333 -2.1722 TD +(If )Tj +/TT12 1 Tf +0.9244 0 TD +(CLAUSE)Tj +6 0 0 6 166.72 390.86 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 170.32 392.86 Tm +0.0001 Tc +0.0043 Tw +( is not selected in one of the two ways described, )Tj +/TT12 1 Tf +21.8033 0 TD +0 Tc +0 Tw +(CLAUSE)Tj +6 0 0 6 398.97 390.86 Tm +(i+1)Tj +/TT6 1 Tf +9 0 0 9 409.77 392.86 Tm +0.0002 Tc +0.0042 Tw +( is tested, etc., until)Tj +-31.53 -1.3944 TD +0 Tc +0.0144 Tw +[(all the clauses have been tested. If none is selected, )]TJ +/TT12 1 Tf +23.0134 0 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0144 Tw +[( is evaluated, and its value is)]TJ +-27.2141 -1.2889 TD +0 Tw +(returned as the value of the )Tj +/TT8 1 Tf +12.3853 0 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +(. )Tj +/TT12 1 Tf +0.75 0 TD +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +( must be present.)Tj +-21.5366 -2.0667 TD +(An example of the form of a )Tj +/TT8 1 Tf +12.6606 0 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +( is:)Tj +/TT8 1 Tf +-12.8613 -1.6667 TD +([SELECTQ MONTH)Tj +2 -1 TD +(\(FEBRUARY \(if \(LEAPYEARP\) then 29 else 28\)\))Tj +2 -1 TD +(\(\(SEPTEMBER APRIL JUNE NOVEMBER\) 30\) 31])Tj +/TT6 1 Tf +-8 -1.8444 TD +0.0144 Tw +(If the value of )Tj +/TT8 1 Tf +6.4318 0 TD +0 Tw +(MONTH)Tj +/TT6 1 Tf +3.0005 0 TD +0.0144 Tw +[( is the symbol )]TJ +/TT8 1 Tf +6.4128 0 TD +0 Tw +(FEBRUARY)Tj +/TT6 1 Tf +4.8008 0 TD +0.0144 Tw +(, the )Tj +/TT8 1 Tf +2.1661 0 TD +0 Tw +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.0144 Tw +[( returns )]TJ +/TT8 1 Tf +3.733 0 TD +0 Tw +(28)Tj +/TT6 1 Tf +1.2002 0 TD +0.0144 Tw +[( or )]TJ +/TT8 1 Tf +1.4698 0 TD +0 Tw +(29)Tj +/TT6 1 Tf +1.2002 0 TD +0.0144 Tw +[( \(depending)]TJ +-34.6158 -1.2889 TD +0 Tw +(on )Tj +/TT8 1 Tf +1.4668 0 TD +(\(LEAPYEARP\))Tj +/TT6 1 Tf +6.6011 0 TD +0.0889 Tw +[(\); otherwise if )]TJ +/TT8 1 Tf +6.9185 0 TD +0 Tw +(MONTH)Tj +/TT6 1 Tf +3.0005 0 TD +0.0889 Tw +[( is )]TJ +/TT8 1 Tf +1.3926 0 TD +0 Tw +(APRIL)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5889 0 TD +(JUNE)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5889 0 TD +(SEPTEMBER)Tj +/TT6 1 Tf +5.4009 0 TD +0.0889 Tw +(, or )Tj +/TT8 1 Tf +1.8687 0 TD +0 Tw +(NOVEMBER)Tj +/TT6 1 Tf +4.8008 0 TD +0.0889 Tw +(, the)Tj +/TT8 1 Tf +-38.0286 -1.2889 TD +0 Tw +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(30)Tj +/TT6 1 Tf +1.2002 0 TD +(; otherwise it returns )Tj +/TT8 1 Tf +9.6772 0 TD +(31)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +-19.9824 -2.0667 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.0467 Tw +[( compiles open, and is therefore very fast; however, it will not work if the value)]TJ +-4.2007 -1.2889 TD +0 Tw +(of )Tj +/TT12 1 Tf +1.3067 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1778 Tw +[( is a list, a large integer, or floating point number, since )]TJ +/TT8 1 Tf +26.687 0 TD +0 Tw +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.1778 Tw +[( uses )]TJ +/TT8 1 Tf +2.7852 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.1778 Tw +[( for all)]TJ +-36.78 -1.2889 TD +0 Tw +(comparisons.)Tj +/TT8 1 Tf +0 -2 TD +(SELCHARQ)Tj +/TT6 1 Tf +4.8008 0 TD +( \(Chapter 2\) is a version of )Tj +/TT8 1 Tf +11.8838 0 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +( that recognizes )Tj +/TT8 1 Tf +7.1802 0 TD +(CHARCODE)Tj +/TT6 1 Tf +4.8008 0 TD +( symbols.)Tj +/TT8 1 Tf +-35.5329 -2.2089 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(SELECTC)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/F1 1 Tf +10 0 0 10 156.0088 197.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 158.7888 197.63 Tm +(CLAUSE)Tj +6 0 0 6 191.18 195.63 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 194.78 197.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 197.56 197.63 Tm +(CLAUSE)Tj +6 0 0 6 229.96 195.63 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 233.56 197.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 236.34 197.63 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 252.5426 197.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 255.3226 197.63 Tm +(CLAUSE)Tj +6 0 0 6 287.72 195.63 Tm +(K)Tj +/F1 1 Tf +10 0 0 10 291.32 197.63 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 108 187.08 Tm +(DEFAULT)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-22624.8([NLambda NoSpread Function])]TJ +/TT8 1 Tf +-2.8008 -1.8444 TD +(SELECTQ)Tj +/TT6 1 Tf +4.8008 0 TD +0.1567 Tw +[(-on-Constant. Like )]TJ +/TT8 1 Tf +9.6961 0 TD +0 Tw +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.1567 Tw +(, but the selection keys are evaluated, and the)Tj +-18.6975 -1.2889 TD +0 Tw +(result used as a )Tj +/TT8 1 Tf +7.0586 0 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +(-style selection key.)Tj +/TT8 1 Tf +-11.2593 -2.0667 TD +(SELECTC)Tj +/TT6 1 Tf +4.2007 0 TD +0.1244 Tw +[( is compiled as a )]TJ +/TT8 1 Tf +8.1564 0 TD +0 Tw +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.1244 Tw +(, with the selection keys evaluated at compile-time.)Tj +-16.5578 -1.2889 TD +0 Tw +(Therefore, the selection keys act like compile-time constants \(see Chapter 18\). )Tj +0 -2 TD +(For example:)Tj +/TT8 1 Tf +0 -1.6 TD +([SELECTC NUM)Tj +0 -1 TD +( \(\(for X from 1 to 9 collect \(TIMES X X\)\) "SQUARE"\) "HIP"])Tj +/TT6 1 Tf +0 -1.8444 TD +(compiles as:)Tj +/TT8 1 Tf +0 -1.6 TD +(\(SELECTQ NUM)Tj +0 -1 TD +( \(\(1 4 9 16 25 36 49 64 81\) "SQUARE"\) "HIP"\))Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +30 0 obj +<< +/Length 10416 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-6)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(PROG and Associated Control Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 150 550.26 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PROG1)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +6 0 0 6 193.2 548.26 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 196.8 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.58 550.26 Tm +(X)Tj +6 0 0 6 204.98 548.26 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 208.58 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 211.36 550.26 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 227.5626 550.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 230.3426 550.26 Tm +(X)Tj +6 0 0 6 235.74 548.26 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 239.34 550.26 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-17565.5([NLambda NoSpread Function])]TJ +-7.8601 -1.95 TD +0.2089 Tw +(Evaluates its arguments in order, and returns the value of its first argument )Tj +/TT12 1 Tf +36.3376 0 TD +0 Tw +(X)Tj +6 0 0 6 506.48 530.71 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 510.08 532.71 Tm +0.2089 Tw +[(. For)]TJ +-37.3422 -1.3944 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.249 0 TD +(\(PROG1 X \(SETQ X Y\)\))Tj +/TT6 1 Tf +12.002 0 TD +( sets )Tj +/TT8 1 Tf +2.1528 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(, and returns )Tj +/TT8 1 Tf +5.897 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(s original value.)Tj +/TT8 1 Tf +-30.1398 -2.2089 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PROG2)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +6 0 0 6 193.2 498.28 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 196.8 500.28 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 199.58 500.28 Tm +(X)Tj +6 0 0 6 204.98 498.28 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 208.58 500.28 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 211.36 500.28 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 227.5626 500.28 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 230.3426 500.28 Tm +(X)Tj +6 0 0 6 235.74 498.28 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 239.34 500.28 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-22305.5([NoSpread Function])]TJ +-7.8601 -1.95 TD +(Like )Tj +/TT8 1 Tf +2.4692 0 TD +(PROG1)Tj +/TT6 1 Tf +3.0005 0 TD +0.2822 Tw +[(. Evaluates its arguments in order, and returns the value of its second)]TJ +-5.4697 -1.2889 TD +0 Tw +(argument )Tj +/TT12 1 Tf +4.5742 0 TD +(X)Tj +6 0 0 6 220.57 469.13 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 224.17 471.13 Tm +(.)Tj +/TT8 1 Tf +-8.2411 -2.3144 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PROGN)Tj +/F2 1 Tf +10 0 0 10 182.4052 450.3 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1853 450.3 Tm +(X)Tj +6 0 0 6 190.58 448.3 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 194.18 450.3 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 196.96 450.3 Tm +(X)Tj +6 0 0 6 202.36 448.3 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 205.96 450.3 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 208.74 450.3 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 224.9426 450.3 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 227.7226 450.3 Tm +(X)Tj +6 0 0 6 233.12 448.3 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 236.72 450.3 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-17856.6([NLambda NoSpread Function])]TJ +/TT8 1 Tf +-7.569 -1.95 TD +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0067 Tw +[( evaluates each of its arguments in order, and returns the value of its last argument.)]TJ +/TT8 1 Tf +-3.0005 -1.2889 TD +0 Tw +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0956 Tw +[( is used to specify more than one computation where the syntax allows only one,)]TJ +-3.0005 -1.2889 TD +0 Tw +(e.g., )Tj +/TT8 1 Tf +2.1774 0 TD +0.3411 Tw +(\(SELECTQ ... \(PROGN ...\)\))Tj +/TT6 1 Tf +16.0258 0 TD +0.1422 Tw +[( allows evaluation of several expressions as the)]TJ +-18.2032 -1.2889 TD +0 Tw +(default condition for a )Tj +/TT8 1 Tf +10.1357 0 TD +(SELECTQ)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +-17.0031 -2.2089 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VARLST)Tj +/F1 1 Tf +10 0 0 10 214.8105 378.07 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 217.5905 378.07 Tm +(E)Tj +6 0 0 6 222.98 376.07 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 226.58 378.07 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 229.36 378.07 Tm +(E)Tj +6 0 0 6 234.76 376.07 Tm +(2)Tj +/F1 1 Tf +10 0 0 10 238.36 378.07 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 241.14 378.07 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 257.3426 378.07 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 260.1226 378.07 Tm +(E)Tj +6 0 0 6 265.52 376.07 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 269.12 378.07 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-14256.6([NLambda NoSpread Function])]TJ +-11.169 -1.95 TD +(Lets you bind some variables while you execute a series of expressions. )Tj +/TT12 1 Tf +31.97 0 TD +(VARLST)Tj +/TT6 1 Tf +3.6006 0 TD +( is a list of)Tj +-35.5706 -1.2889 TD +0.0633 Tw +(local variables \(must be )Tj +/TT8 1 Tf +10.9242 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0633 Tw +[( if no variables are used\). Each symbol in )]TJ +/TT12 1 Tf +19.2198 0 TD +0 Tw +(VARLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0633 Tw +[( is treated)]TJ +-35.5449 -1.2889 TD +0.0933 Tw +(as the name of a local variable and bound to )Tj +/TT8 1 Tf +20.6731 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0933 Tw +(. )Tj +/TT12 1 Tf +0.9367 0 TD +0 Tw +(VARLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0933 Tw +[( can also contain lists of the)]TJ +-27.0106 -1.2889 TD +0 Tw +(form )Tj +/TT8 1 Tf +2.4967 0 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.8168 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.09 Tw +[(. In this case, )]TJ +/TT12 1 Tf +6.5887 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +[( is the name of the variable and is bound to the)]TJ +-18.3035 -1.2889 TD +0.0411 Tw +(value of )Tj +/TT12 1 Tf +3.8991 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0411 Tw +[(. The evaluation takes place before any of the bindings are performed, e.g.,)]TJ +/TT8 1 Tf +-6.2995 -1.2889 TD +0.2089 Tw +(\(PROG \(\(X Y\) \(Y X\)\) ...\))Tj +/TT6 1 Tf +15.4468 0 TD +0.0867 Tw +[( will bind local variable )]TJ +/TT8 1 Tf +11.0735 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[( to the value of )]TJ +/TT8 1 Tf +7.2595 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[( \(evaluated)]TJ +/TT18 1 Tf +-34.98 -1.2889 TD +0 Tw +(outside)Tj +/TT6 1 Tf +2.8892 0 TD +0.04 Tw +[( the )]TJ +/TT8 1 Tf +1.9672 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.04 Tw +(\) and local variable )Tj +/TT8 1 Tf +8.8319 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +[( to the value of )]TJ +/TT8 1 Tf +7.0262 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +[( \(outside the )]TJ +/TT8 1 Tf +5.87 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.04 Tw +[(\). An attempt to)]TJ +-32.5854 -1.2889 TD +0.2222 Tw +(use anything other than a symbol as a )Tj +/TT8 1 Tf +18.7543 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.2222 Tw +[( variable will cause an error, )]TJ +/TT8 1 Tf +14.1063 0 TD +0.5333 Tw +(Arg not)Tj +/TT6 1 Tf +-35.261 -1.2889 TD +0.0322 Tw +[(symbol. An attempt to use )]TJ +/TT8 1 Tf +12.3755 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0322 Tw +[( or )]TJ +/TT8 1 Tf +1.5054 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0322 Tw +[( as a )]TJ +/TT8 1 Tf +2.2705 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0322 Tw +[( variable will cause an error, )]TJ +/TT8 1 Tf +12.9663 0 TD +0.0778 Tw +(Attempt to)Tj +-33.9184 -1.2889 TD +0 Tw +(bind NIL or T)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +-7.8013 -2.0667 TD +0.0144 Tw +(The rest of the )Tj +/TT8 1 Tf +6.6217 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0144 Tw +[( is a sequence of forms and symbols \(labels\). The forms are evaluated)]TJ +-9.0221 -1.2889 TD +0.02 Tw +[(sequentially; the labels serve only as markers. The two special functions, )]TJ +/TT8 1 Tf +32.7107 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.02 Tw +[( and )]TJ +/TT8 1 Tf +2.2329 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +(,)Tj +-39.7444 -1.2889 TD +0.0078 Tw +[(alter this flow of control as described below. The value of the )]TJ +/TT8 1 Tf +27.5196 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[( is usually specified by)]TJ +-29.92 -1.2889 TD +0.1056 Tw +(the function )Tj +/TT8 1 Tf +5.8053 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1056 Tw +[(. If no )]TJ +/TT8 1 Tf +3.4701 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1056 Tw +[( is executed before the )]TJ +/TT8 1 Tf +10.602 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1056 Tw +[( falls off the end, the)]TJ +-29.479 -1.2889 TD +0 Tw +(value of the )Tj +/TT8 1 Tf +5.4541 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-13.5363 -2.2156 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(GO)Tj +/TT4 1 Tf +10 0 0 10 166.2026 171.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 168.9809 171.18 Tm +(L)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-24783([NLambda NoSpread Function])]TJ +/TT8 1 Tf +-0.6425 -1.8444 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0711 Tw +[( is used to cause a transfer in a )]TJ +/TT8 1 Tf +14.3505 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0711 Tw +(. )Tj +/TT8 1 Tf +0.8922 0 TD +0 Tw +(\(GO )Tj +/TT12 1 Tf +2.5704 0 TD +(L)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0711 Tw +[( will cause the )]TJ +/TT8 1 Tf +6.8284 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0711 Tw +[( to evaluate forms)]TJ +-31.8426 -1.2889 TD +0.0511 Tw +(starting at the label )Tj +/TT12 1 Tf +8.9325 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0511 Tc +( \()Tj +/TT8 1 Tf +0.6341 0 TD +0 Tc +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0511 Tw +[( does not evaluate its argument\). A )]TJ +/TT8 1 Tf +16.3918 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0511 Tw +[( can be used at any level)]TJ +-28.9589 -1.2889 TD +0.0844 Tw +(in a )Tj +/TT8 1 Tf +2.0419 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0844 Tw +[(. If the label is not found, )]TJ +/TT8 1 Tf +12.1907 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0844 Tw +[( will search higher progs )]TJ +/TT18 1 Tf +11.6102 0 TD +(within the same function,)Tj +/TT6 1 Tf +-29.4434 -1.2889 TD +0 Tw +(e.g., )Tj +/TT8 1 Tf +2.0385 0 TD +0.0078 Tw +(\(PROG ... A ... \(PROG ... \(GO A\)\)\))Tj +/TT6 1 Tf +20.4578 0 TD +0.0033 Tw +(. If the label is not found in the function)Tj +-22.4963 -1.2889 TD +0 Tw +(in which the )Tj +/TT8 1 Tf +5.7432 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( appears, an error is generated, )Tj +/TT8 1 Tf +13.9141 0 TD +(Undefined or illegal GO)Tj +/TT6 1 Tf +13.8022 0 TD +(.)Tj +/TT8 1 Tf +-38.5265 -2.2156 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(RETURN)Tj +/TT4 1 Tf +10 0 0 10 187.8061 88.24 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 190.5844 88.24 Tm +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-31860.4([Function])]TJ +-3.0429 -1.8444 TD +(A )Tj +/TT8 1 Tf +1.1645 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1367 Tw +[( is the normal exit for a )]TJ +/TT8 1 Tf +11.3917 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1367 Tw +(. Its argument is evaluated and is immediately)Tj +-18.5572 -1.2889 TD +0 Tw +(returned the value of the )Tj +/TT8 1 Tf +11.2114 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( in which it appears.)Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F2 32 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +34 0 obj +<< +/Length 8263 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-7)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT16 1 Tf +9 0 0 9 126 569.54 Tm +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0778 Tw +[(: If a )]TJ +/TT8 1 Tf +2.731 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0778 Tw +[( or )]TJ +/TT8 1 Tf +1.5965 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0778 Tw +[( is executed in an interpreted function which is not a )]TJ +/TT8 1 Tf +24.2857 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +(, the)Tj +/TT8 1 Tf +-38.0366 -1.2889 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1922 Tw +[( or )]TJ +/TT8 1 Tf +1.8254 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1922 Tw +[( will be executed in the last interpreted )]TJ +/TT8 1 Tf +18.9797 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1922 Tw +[( entered if any, otherwise)]TJ +-28.0062 -1.2889 TD +0 Tw +(cause an error.)Tj +/TT8 1 Tf +0 -2 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1133 Tw +[( or )]TJ +/TT8 1 Tf +1.6676 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1133 Tw +[( inside of a compiled function that is not a )]TJ +/TT8 1 Tf +19.9458 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[( is not allowed, and will)]TJ +-28.8146 -1.2889 TD +0 Tw +(cause an error at compile time.)Tj +0 -2 TD +0.2233 Tw +(As a corollary, )Tj +/TT8 1 Tf +7.3355 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.2233 Tw +[( or )]TJ +/TT8 1 Tf +1.8876 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.2233 Tw +[( in a functional argument, e.g., to )]TJ +/TT8 1 Tf +16.4159 0 TD +0 Tw +(SORT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2233 Tw +(, will not work)Tj +-32.8402 -1.2889 TD +0.2144 Tw +[(compiled. Also, since )]TJ +/TT8 1 Tf +10.7616 0 TD +0 Tw +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.2144 Tw +(s and )Tj +/TT8 1 Tf +3.3234 0 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.2144 Tw +(s compile as )Tj +/TT18 1 Tf +6.5535 0 TD +0 Tw +(separate)Tj +/TT6 1 Tf +3.2773 0 TD +0.2144 Tw +[( functions, a )]TJ +/TT8 1 Tf +6.2742 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.2144 Tw +[( or)]TJ +/TT8 1 Tf +-38.5914 -1.2889 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT18 1 Tf +0.4389 0 TD +(cannot)Tj +/TT6 1 Tf +2.7402 0 TD +0.1889 Tw +[( be used inside of a compiled )]TJ +/TT8 1 Tf +14.4233 0 TD +0 Tw +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.1889 Tw +[( or )]TJ +/TT8 1 Tf +1.8187 0 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.1889 Tw +[( if the corresponding)]TJ +/TT8 1 Tf +-30.2229 -1.2889 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( is outside, i.e., above, the )Tj +/TT8 1 Tf +11.5449 0 TD +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-25.2541 -2.2089 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(LET)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VARLST)Tj +/F2 1 Tf +10 0 0 10 161.4097 444.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 164.1897 444.06 Tm +(E)Tj +6 0 0 6 169.58 442.06 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 173.18 444.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 175.96 444.06 Tm +(E)Tj +6 0 0 6 181.36 442.06 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 184.96 444.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 187.74 444.06 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 203.9426 444.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 206.7226 444.06 Tm +(E)Tj +6 0 0 6 212.12 442.06 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 215.72 444.06 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-25433.2([Macro])]TJ +/TT8 1 Tf +-10.569 -1.95 TD +(LET)Tj +/TT6 1 Tf +1.8003 0 TD +0.0656 Tw +[( is essentially a )]TJ +/TT8 1 Tf +7.1201 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0656 Tw +[( that cant contain )]TJ +/TT8 1 Tf +8.3975 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0656 Tw +(s or )Tj +/TT8 1 Tf +2.2737 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0656 Tw +(s, and whose last form is the)Tj +-26.7928 -1.2889 TD +0 Tw +(returned value.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(LET*)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VARLST)Tj +/F2 1 Tf +10 0 0 10 166.8105 395.57 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 169.5905 395.57 Tm +(E)Tj +6 0 0 6 174.98 393.57 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 178.58 395.57 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 181.36 395.57 Tm +(E)Tj +6 0 0 6 186.76 393.57 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 190.36 395.57 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 193.14 395.57 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 209.3426 395.57 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 212.1226 395.57 Tm +(E)Tj +6 0 0 6 217.52 393.57 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 221.12 395.57 Tm +(\))Tj +/TT14 1 Tf +10 0 0 10 226.5209 395.57 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 454.52 395.57 Tm +([Macro])Tj +/TT8 1 Tf +-39.1689 -1.3144 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PROG*)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(VARLST)Tj +/F2 1 Tf +10 0 0 10 172.2114 383.74 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 174.9914 383.74 Tm +(E)Tj +6 0 0 6 180.38 381.74 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 183.98 383.74 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 186.76 383.74 Tm +(E)Tj +6 0 0 6 192.16 381.74 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 195.76 383.74 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 198.54 383.74 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 214.7426 383.74 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 217.5226 383.74 Tm +(E)Tj +6 0 0 6 222.92 381.74 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 226.52 383.74 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-24233.2([Macro])]TJ +/TT8 1 Tf +-11.769 -1.95 TD +(LET*)Tj +/TT6 1 Tf +2.4004 0 TD +0.2711 Tw +[( and )]TJ +/TT8 1 Tf +2.7351 0 TD +0 Tw +(PROG*)Tj +/TT6 1 Tf +3.0005 0 TD +0.2711 Tw +[( differ from )]TJ +/TT8 1 Tf +6.162 0 TD +0 Tw +(LET)Tj +/TT6 1 Tf +1.8003 0 TD +0.2711 Tw +[( and )]TJ +/TT8 1 Tf +2.7351 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.2711 Tw +[( only in that the binding of the bound)]TJ +-21.2337 -1.2889 TD +0 Tw +(variables is done sequentially. Thus)Tj +/TT8 1 Tf +4 -1.6 TD +(\(LET* \(\(A \(LIST 5\)\))Tj +4 -1 TD +(\(B \(LIST A A\)\)\))Tj +-2 -1 TD +( \(EQ A \(CADR B\)\)\))Tj +/TT6 1 Tf +-6 -1.8444 TD +0.05 Tw +(would evaluate to )Tj +/TT8 1 Tf +8.4 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +(; whereas the same form with )Tj +/TT8 1 Tf +13.6057 0 TD +0 Tw +(LET)Tj +/TT6 1 Tf +1.8003 0 TD +0.05 Tw +[( might find )]TJ +/TT8 1 Tf +5.3551 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +[( an unbound variable)]TJ +-30.3612 -1.2889 TD +0 Tw +(when evaluating )Tj +/TT8 1 Tf +7.6704 0 TD +(\(LIST A A\))Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 271.05 Tm +(The Iterative Statement)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 268.34 m +510.01 268.34 l +S +BT +/TT6 1 Tf +9 0 0 9 78 254.39 Tm +0.1633 Tw +[(The various forms of the iterative statement \(i.s.\) let you write complex loops easily. Rather than)]TJ +0 -1.2222 TD +0 Tw +(writing )Tj +/TT8 1 Tf +3.5254 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(MAPC)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(MAPCAR)Tj +/TT6 1 Tf +3.6006 0 TD +(, etc., let Medley do it for you.)Tj +-12.9268 -2.0667 TD +0.0933 Tw +(An iterative statement is a form consisting of a number of special words \(known as i.s. operators or)Tj +0 -1.2222 TD +0.3478 Tw +[(i.s.oprs\), followed by operands. Many i.s.oprs \()]TJ +/TT8 1 Tf +23.4735 0 TD +0 Tw +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.8478 0 TD +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.8478 0 TD +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.3478 Tw +(, etc.\) act like loops in other)Tj +-31.17 -1.2889 TD +0.0222 Tw +[(programming languages; others \()]TJ +/TT8 1 Tf +15.1031 0 TD +0 Tw +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(JOIN)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0222 Tw +[(, etc.\) do things useful in Lisp. You can also use)]TJ +-23.9488 -1.2889 TD +0 Tw +(lower-case versions of i.s.oprs \()Tj +/TT8 1 Tf +13.8228 0 TD +(do)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(collect)Tj +/TT6 1 Tf +4.2007 0 TD +(, etc.\).)Tj +/TT19 1 Tf +-15.7236 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(for X from 1 to 5 do \(PRINT FOO\)\))Tj +-0.9868 -1 TD +(FOO)Tj +T* +(FOO)Tj +T* +(FOO)Tj +T* +(FOO)Tj +T* +(FOO)Tj +T* +(NIL)Tj +/TT19 1 Tf +0 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for X from 2 to 10 by 2 collect \(TIMES X X\)\))Tj +-0.9868 -1 TD +(\(4 16 36 64 100\))Tj +/TT19 1 Tf +0 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for X in \(A B 1 C 6.5 NIL \(45\)\) count \(NUMBERP X\)\))Tj +-0.9868 -1 TD +(2)Tj +/TT6 1 Tf +-4 -1.8444 TD +0.0356 Tw +(Iterative statements are implemented using CLISP, which translates them into the appropriate )Tj +/TT8 1 Tf +42.2621 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(s,)Tj +/TT8 1 Tf +-44.6625 -1.2889 TD +(MAPCAR)Tj +/TT6 1 Tf +3.6006 0 TD +0.0444 Tw +[(s, etc. Theyre are translated using all CLISP declarations in effect \(standard/fast/undoable/)]TJ +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 32 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +37 0 obj +<< +/Length 7241 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-8)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.3389 Tw +[(etc.\); see Chapter 21. Misspelled i.s.oprs are recognized and corrected using the spelling list)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(CLISPFORWORDSPLST)Tj +/TT6 1 Tf +10.2017 0 TD +0.0222 Tw +[(. Operators can appear in any order; CLISP scans the entire statement before it)]TJ +-10.2017 -1.2889 TD +0 Tw +(begins to translate.)Tj +0 -2 TD +0.0244 Tw +(If you define a function with the same name as an i.s.opr \()Tj +/TT8 1 Tf +25.8959 0 TD +0 Tw +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5244 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5244 0 TD +(etc)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +(.\), that i.s.opr will no longer)Tj +-32.9457 -1.2889 TD +0.04 Tw +(cause looping when it appears as )Tj +/TT8 1 Tf +15.1209 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +[( of a form, although it will continue to be treated as an i.s.opr if)]TJ +-16.9212 -1.2889 TD +0.1022 Tw +[(it appears in the interior of an iterative statement. To alert you, a warning message is printed, e.g.,)]TJ +0 -1.2222 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.333 0 TD +(While defined, therefore disabled in CLISP)Tj +/TT6 1 Tf +25.2041 0 TD +(\).)Tj +/TT4 1 Tf +10 0 0 10 126 471.8 Tm +(I.S. Types)Tj +/TT6 1 Tf +9 0 0 9 126 456.14 Tm +0.1667 Tw +(Every iterative statement must have exactly one of the following operators in it \(its is.stype\), to)Tj +0 -1.2222 TD +0 Tw +(specify what happens on each iteration. Its operand is called the body of the iterative statement.)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(DO)Tj +/F2 1 Tf +10 0 0 10 160.8017 425.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 163.5817 425.86 Tm +(FORMS)Tj +/TT6 1 Tf +2.9998 0 TD +[( )-31352.2([I.S. Operator])]TJ +-1.8422 -1.8444 TD +(Evaluate )Tj +/TT12 1 Tf +4.1817 0 TD +(FORMS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0567 Tw +[( at each iteration. )]TJ +/TT8 1 Tf +8.3507 0 TD +0 Tw +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0567 Tw +[( with no other operator specifies an infinite loop. If)]TJ +-16.7331 -1.2889 TD +0.0989 Tw +(some explicit or implicit terminating condition is specified, the value of the loop is )Tj +/TT8 1 Tf +37.9518 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-39.7521 -1.2889 TD +(Translates to )Tj +/TT8 1 Tf +5.9058 0 TD +(MAPC)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(MAP)Tj +/TT6 1 Tf +1.8003 0 TD +( whenever possible.)Tj +/TT10 1 Tf +-14.214 -2.2089 TD +(COLLECT)Tj +/F2 1 Tf +10 0 0 10 187.8061 366.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 190.5861 366.18 Tm +(FORM)Tj +/TT6 1 Tf +2.3993 0 TD +[( )-28952.2([I.S. Operator])]TJ +-4.2422 -1.8444 TD +0.0567 Tw +(The value of )Tj +/TT12 1 Tf +5.9107 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0567 Tw +[( at each iteration is collected in a list, which is returned as the value of)]TJ +-8.3111 -1.2889 TD +0.2678 Tw +[(the loop when it terminates. Translates to )]TJ +/TT8 1 Tf +20.9484 0 TD +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.7678 0 TD +(MAPLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.2678 Tw +[( or )]TJ +/TT8 1 Tf +1.9765 0 TD +0 Tw +(SUBSET)Tj +/TT6 1 Tf +3.6006 0 TD +0.2678 Tw +[( whenever)]TJ +-35.0945 -1.2889 TD +0 Tw +(possible.)Tj +0 -2 TD +(When )Tj +/TT8 1 Tf +3.1353 0 TD +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +0.2422 Tw +[( translates to a )]TJ +/TT8 1 Tf +7.588 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.2422 Tw +[( \(if )]TJ +/TT8 1 Tf +1.9415 0 TD +0 Tw +(UNTIL)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.7422 0 TD +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.2422 Tw +(, etc. appear in the loop\), the)Tj +-26.0091 -1.2889 TD +0.2933 Tw +(translation employs an open )Tj +/TT8 1 Tf +14.0063 0 TD +0 Tw +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.2933 Tw +[( using two pointers similar to that used by the)]TJ +-17.0068 -1.2889 TD +0.3378 Tw +(compiler for compiling )Tj +/TT8 1 Tf +11.4518 0 TD +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +3.6006 0 TD +0.3378 Tw +[(. To disable this translation, perform )]TJ +/TT8 1 Tf +18.9401 0 TD +0 Tw +(\(CLDISABLE)Tj +-33.9925 -1.2889 TD +(FCOLLECT\))Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-8.6676 -2.2089 TD +(JOIN)Tj +/F2 1 Tf +10 0 0 10 171.6035 253.7 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 174.3835 253.7 Tm +(FORM)Tj +/F2 1 Tf +10 0 0 10 195.987 253.7 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 198.76 253.7 Tm +30.6933 Tw +[( [I.S. )30693.3(Operator])]TJ +/TT12 1 Tf +-2.7511 -1.8444 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1178 Tw +[( returns a list; the lists from each iteration are concatenated using )]TJ +/TT8 1 Tf +30.3894 0 TD +0 Tw +(NCONC)Tj +/TT6 1 Tf +3.0005 0 TD +0.1178 Tw +(, forming)Tj +-35.7903 -1.2889 TD +0.0222 Tw +[(one long list. Translates to )]TJ +/TT8 1 Tf +12.2032 0 TD +0 Tw +(MAPCONC)Tj +/TT6 1 Tf +4.2007 0 TD +0.0222 Tw +[( or )]TJ +/TT8 1 Tf +1.4854 0 TD +0 Tw +(MAPCON)Tj +/TT6 1 Tf +3.6006 0 TD +0.0222 Tw +[( whenever possible. )]TJ +/TT8 1 Tf +9.3428 0 TD +0 Tw +(/NCONC)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(/MAPCONC)Tj +/TT6 1 Tf +4.8008 0 TD +(,)Tj +-39.7562 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(/MAPCON)Tj +/TT6 1 Tf +4.2007 0 TD +( are used when the CLISP declaration )Tj +/TT8 1 Tf +16.8555 0 TD +(UNDOABLE)Tj +/TT6 1 Tf +4.8008 0 TD +( is in effect.)Tj +/TT10 1 Tf +-30.4665 -2.2089 TD +(SUM)Tj +/F2 1 Tf +10 0 0 10 166.2026 194.02 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 168.9826 194.02 Tm +(FORM)Tj +/TT6 1 Tf +2.3997 0 TD +[( )-31352.2([I.S. Operator])]TJ +-1.8422 -1.8444 TD +0.0978 Tw +(The values of )Tj +/TT12 1 Tf +6.4579 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0978 Tw +[( from each iteration are added together and returned as the value of)]TJ +-8.8583 -1.2889 TD +0.0467 Tw +(the loop, e.g., )Tj +/TT8 1 Tf +6.2962 0 TD +0.1111 Tw +(\(for I from 1 to 5 sum \(TIMES I I\)\))Tj +/TT6 1 Tf +22.0034 0 TD +0.0467 Tw +[( returns )]TJ +/TT8 1 Tf +3.7974 0 TD +0.1111 Tw +(1+4+9+16+25 =)Tj +-32.0971 -1.2889 TD +0 Tw +(55)Tj +/TT6 1 Tf +1.2002 0 TD +0.1989 Tw +(. )Tj +/TT8 1 Tf +1.1478 0 TD +0 Tw +(IPLUS)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6989 0 TD +(FPLUS)Tj +/TT6 1 Tf +3.0005 0 TD +0.1989 Tw +(, or )Tj +/TT8 1 Tf +2.0887 0 TD +0 Tw +(PLUS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1989 Tw +[( will be used in the translation depending on the CLISP)]TJ +-13.5369 -1.2889 TD +0 Tw +(declarations in effect.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(COUNT)Tj +/F2 1 Tf +10 0 0 10 177.0044 123.34 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 179.7844 123.34 Tm +(FORM)Tj +/TT6 1 Tf +2.3995 0 TD +[( )-30152.2([I.S. Operator])]TJ +-3.0422 -1.8444 TD +(Counts the number of times that )Tj +/TT12 1 Tf +14.5884 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is true, and returns that count as the loops value.)Tj +/TT10 1 Tf +-19.6554 -2.2089 TD +(ALWAYS)Tj +/F1 1 Tf +10 0 0 10 182.4052 86.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1853 86.86 Tm +(FORM)Tj +/TT18 1 Tf +2.3994 0 TD +( )Tj +/TT6 1 Tf +0.25 0 TD +29.5522 Tw +[( [I.S. )29552.2(Operator])]TJ +-3.8922 -1.8444 TD +0 Tw +(Returns )Tj +/TT8 1 Tf +3.7493 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0222 Tw +[( if the value of )]TJ +/TT12 1 Tf +6.6892 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0222 Tw +[( is non-)]TJ +/TT8 1 Tf +3.3023 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0222 Tw +[( for all iterations. )]TJ +/TT16 1 Tf +8.1272 0 TD +0 Tw +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0222 Tw +[(: Returns )]TJ +/TT8 1 Tf +4.5437 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0222 Tw +[( as soon as)]TJ +-35.235 -1.2889 TD +0 Tw +(the value of )Tj +/TT12 1 Tf +5.4541 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\).)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F2 32 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6231 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 497.9999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-9)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT10 1 Tf +9 0 0 9 102 568.26 Tm +(NEVER)Tj +/F1 1 Tf +10 0 0 10 129.0044 568.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 131.7844 568.26 Tm +(FORM)Tj +/TT6 1 Tf +2.3995 0 TD +[( )-30152.2([I.S. Operator])]TJ +-3.0422 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.2226 0 TD +(ALWAYS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0356 Tw +(, but returns )Tj +/TT8 1 Tf +5.7932 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0356 Tw +[( if the value of )]TJ +/TT12 1 Tf +6.7559 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( is )]TJ +/TT18 1 Tf +1.286 0 TD +0 Tw +(never)Tj +/TT6 1 Tf +2.2236 0 TD +0.0356 Tw +[( true. )]TJ +/TT16 1 Tf +2.9099 0 TD +0 Tw +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0356 Tw +[(: Returns )]TJ +/TT8 1 Tf +4.5837 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0356 Tw +[( as soon)]TJ +-36.3984 -1.2889 TD +0 Tw +(as the value of )Tj +/TT12 1 Tf +6.6279 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is non-)Tj +/TT8 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-19.4198 -2.0667 TD +0.0122 Tw +(Often, youll want to set a variable each time through the loop; thats called the iteration variable, or)Tj +0 -1.2222 TD +0 Tw +(i.v. for short. The following i.s.types explicitly refer to the i.v. This is explained below under )Tj +/TT8 1 Tf +41.3281 0 TD +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-40.4618 -2.2089 TD +(THEREIS)Tj +/F1 1 Tf +10 0 0 10 139.8062 490.58 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 142.5861 490.58 Tm +(FORM)Tj +/TT6 1 Tf +2.3993 0 TD +[( )-28952.2([I.S. Operator])]TJ +-4.2422 -1.8444 TD +0.22 Tw +(Returns the first value of the i.v. for which )Tj +/TT12 1 Tf +20.9302 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.22 Tw +[( is non-)]TJ +/TT8 1 Tf +3.6978 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.22 Tw +(, e.g., )Tj +/TT8 1 Tf +2.9752 0 TD +0.5289 Tw +(\(for X in Y)Tj +-31.8038 -1.2889 TD +0 Tw +(thereis \(NUMBERP X\)\))Tj +/TT6 1 Tf +12.002 0 TD +( returns the first number in )Tj +/TT8 1 Tf +12.2285 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(. )Tj +/TT16 1 Tf +-24.8306 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +(: Returns the value of the i.v. as soon as the value of )Tj +/TT12 1 Tf +23.3237 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is non-)Tj +/TT8 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-35.6711 -2.2089 TD +(LARGEST)Tj +/F2 1 Tf +10 0 0 10 139.8062 423.9 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 142.5861 423.9 Tm +(FORM)Tj +/TT6 1 Tf +2.3993 0 TD +[( )-28952.2([I.S. Operator])]TJ +/TT10 1 Tf +-6.9089 -1.2089 TD +(SMALLEST)Tj +/F2 1 Tf +10 0 0 10 145.207 413.02 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 147.987 413.02 Tm +(FORM)Tj +/TT6 1 Tf +2.3992 0 TD +[( )-28352.2([I.S. Operator])]TJ +-4.8422 -1.8444 TD +0.49 Tw +(Returns the value of the i.v. that provides the largest/smallest value of )Tj +/TT12 1 Tf +37.3492 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-39.7496 -1.2889 TD +($$EXTREME)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +[( is always bound to the current greatest/smallest value, )]TJ +/TT8 1 Tf +24.9652 0 TD +0 Tw +($$VAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0133 Tw +[( to the value of)]TJ +-33.3666 -1.2889 TD +0 Tw +(the i.v. from which it came.)Tj +/TT4 1 Tf +10 0 0 10 78 350.88 Tm +(Iteration Variable I.s.oprs)Tj +/TT6 1 Tf +9 0 0 9 78 335.22 Tm +0.0844 Tw +[(Youll want to bind variables to use during the loop. Rather than putting the loop inside a )]TJ +/TT8 1 Tf +41.6572 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0844 Tw +[( or)]TJ +/TT8 1 Tf +-44.0576 -1.2889 TD +0 Tw +(LET)Tj +/TT6 1 Tf +1.8003 0 TD +(, you can specify bindings like so:)Tj +/TT10 1 Tf +0.8664 -2.2156 TD +(BIND)Tj +/TT4 1 Tf +10 0 0 10 123.6035 303.68 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 126.3818 303.68 Tm +(VAR)Tj +/TT6 1 Tf +1.7998 0 TD +[( )-31352.2([I.S. Operator])]TJ +/TT10 1 Tf +-4.5089 -1.2156 TD +(BIND)Tj +/TT4 1 Tf +10 0 0 10 123.6035 292.74 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 126.3818 292.74 Tm +(VARS)Tj +/TT6 1 Tf +2.3998 0 TD +[( )-30752.2([I.S. Operator])]TJ +-2.4422 -1.8444 TD +(Used to specify dummy variables, which are bound locally within the i.s.)Tj +/TT16 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +[(: )-1277.8(You can initialize a variable )]TJ +/TT12 1 Tf +14.2861 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( by saying )Tj +/TT12 1 Tf +4.7686 0 TD +(VAR)Tj +/TT19 1 Tf +1.8003 0 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +(:)Tj +/TT8 1 Tf +-26.2647 -1.6667 TD +(\(bind HEIGHT )Tj +/TT19 1 Tf +7.8013 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( 0 WEIGHT )Tj +/TT19 1 Tf +6.001 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( 0 for SOLDIER in ...\))Tj +/TT6 1 Tf +-23.1092 -1.8444 TD +(To specify iteration variables, use these operators:)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(FOR)Tj +/F2 1 Tf +10 0 0 10 118.2026 207.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 120.9826 207.26 Tm +(VAR)Tj +/TT6 1 Tf +1.7997 0 TD +[( )-31952.2([I.S. Operator])]TJ +-1.2422 -1.8444 TD +0.0211 Tw +(Specifies the iteration variable \(i.v.\) that is used in conjunction with )Tj +/TT8 1 Tf +30.2205 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5211 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5211 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5211 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0211 Tw +(, and)Tj +/TT8 1 Tf +-37.7848 -1.2889 TD +0 Tw +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +0.0444 Tw +[(. The variable is rebound within the loop, so the value of the variable outside the loop)]TJ +-1.2002 -1.2889 TD +0 Tw +(is not affected. Example:)Tj +/TT19 1 Tf +4 -1.6 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ X 55\))Tj +-0.9868 -1 TD +(55)Tj +/TT19 1 Tf +0 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for X from 1 to 5 collect \(TIMES X X\)\))Tj +-0.9868 -1 TD +(\(1 4 9 16 25\))Tj +/TT19 1 Tf +0 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(X)Tj +-0.9868 -1 TD +(55)Tj +/TT10 1 Tf +-6.6667 -1.9867 TD +(FOR OLD)Tj +/F2 1 Tf +10 0 0 10 139.8062 82.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 142.5861 82.18 Tm +(VAR)Tj +/TT6 1 Tf +1.7993 0 TD +[( )-29552.2([I.S. Operator])]TJ +-3.6422 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +(, but )Tj +/TT12 1 Tf +2.2324 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( is )Tj +/TT18 1 Tf +1.2148 0 TD +(not)Tj +/TT6 1 Tf +1.333 0 TD +( rebound, so its value outside the loop )Tj +/TT18 1 Tf +17.1187 0 TD +(is)Tj +/TT6 1 Tf +0.667 0 TD +( changed. Example:)Tj +/TT19 1 Tf +-24.3535 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ X 55\))Tj +-0.9868 -1 TD +(55)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F2 32 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +43 0 obj +<< +/Length 6888 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-10)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT19 1 Tf +9 0 0 9 210 570.14 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for old X from 1 to 5 collect \(TIMES X X\)\))Tj +-0.9868 -1 TD +(\(1 4 9 16 25\))Tj +/TT19 1 Tf +0 -1.4444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(X)Tj +-0.9868 -1 TD +(6)Tj +/TT10 1 Tf +-6.6667 -1.9867 TD +(FOR)Tj +/F2 1 Tf +10 0 0 10 166.2026 521.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 168.9826 521.26 Tm +(VARS)Tj +/TT6 1 Tf +2.3997 0 TD +[( )-31352.2([I.S. Operator])]TJ +/TT12 1 Tf +-1.8422 -1.8444 TD +(VARS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0378 Tw +[( a list of variables, e.g., )]TJ +/TT8 1 Tf +10.4708 0 TD +0.0911 Tw +(\(for \(X Y Z\) in ...\))Tj +/TT6 1 Tf +12.4575 0 TD +0.0378 Tw +[(. The first variable is the i.v., the)]TJ +-25.3287 -1.2889 TD +0 Tw +(rest are dummy variables. See )Tj +/TT8 1 Tf +13.7647 0 TD +(BIND)Tj +/TT6 1 Tf +2.4004 0 TD +( above.)Tj +/TT10 1 Tf +-18.8317 -2.2156 TD +(IN)Tj +/TT4 1 Tf +10 0 0 10 160.8017 473.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 163.5801 473.12 Tm +(FORM)Tj +/TT6 1 Tf +2.4 0 TD +[( )-31952.2([I.S. Operator])]TJ +/TT12 1 Tf +-1.2422 -1.8444 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1833 Tw +[( must evaluate to a list. The i.v. is set to successive elements of the list, one per)]TJ +-2.4004 -1.2889 TD +0.0356 Tw +[(iteration. For example, )]TJ +/TT8 1 Tf +10.6246 0 TD +0.0856 Tw +(\(for X in Y do ...\))Tj +/TT6 1 Tf +11.8296 0 TD +0.0356 Tw +[( corresponds to )]TJ +/TT8 1 Tf +7.175 0 TD +0.0856 Tw +(\(MAPC Y \(FUNCTION)Tj +-29.6293 -1.2889 TD +0.1256 Tw +(\(LAMBDA \(X\) ...\)\)\))Tj +/TT6 1 Tf +11.0529 0 TD +0.0522 Tw +[(. If no i.v. has been specified, a dummy is supplied, e.g., )]TJ +/TT8 1 Tf +25.821 0 TD +0.1256 Tw +(\(in Y)Tj +-36.8738 -1.2889 TD +0 Tw +(collect CADR\))Tj +/TT6 1 Tf +7.8013 0 TD +( is equivalent to )Tj +/TT8 1 Tf +7.2632 0 TD +(\(MAPCAR Y \(FUNCTION CADR\)\))Tj +/TT6 1 Tf +15.6025 0 TD +(.)Tj +/TT10 1 Tf +-33.3337 -2.2156 TD +(ON)Tj +/TT4 1 Tf +10 0 0 10 160.8017 401.78 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 163.5801 401.78 Tm +(FORM)Tj +/TT6 1 Tf +2.4 0 TD +[( )-31952.2([I.S. Operator])]TJ +-1.2422 -1.8444 TD +0.2156 Tw +(Same as )Tj +/TT8 1 Tf +4.2417 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2156 Tw +(, but the i.v. is reset to the corresponding )Tj +/TT18 1 Tf +20.1944 0 TD +0 Tw +(tail)Tj +/TT6 1 Tf +1.3325 0 TD +0.2156 Tw +[( at each iteration. Thus )]TJ +/TT8 1 Tf +11.8324 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +-38.8012 -1.2889 TD +0.1622 Tw +(corresponds to )Tj +/TT8 1 Tf +7.1428 0 TD +0 Tw +(MAPC)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6622 0 TD +(MAPCAR)Tj +/TT6 1 Tf +3.6006 0 TD +0.1622 Tw +(, and )Tj +/TT8 1 Tf +2.7673 0 TD +0 Tw +(MAPCONC)Tj +/TT6 1 Tf +4.2007 0 TD +0.1622 Tw +(, while )Tj +/TT8 1 Tf +3.5515 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +0.1622 Tw +[( corresponds to )]TJ +/TT8 1 Tf +7.555 0 TD +0 Tw +(MAP)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6622 0 TD +(MAPLIST)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +-39.7439 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(MAPCON)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT19 1 Tf +-1.5435 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(for X on \(A B C\) do \(PRINT X\)\))Tj +-0.9868 -1 TD +(\(A B C\))Tj +T* +(\(B C\))Tj +T* +(\(C\))Tj +T* +(NIL)Tj +/TT16 1 Tf +-4 -1.8444 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0078 Tw +[(: For both )]TJ +/TT8 1 Tf +4.7855 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0078 Tw +[( and )]TJ +/TT8 1 Tf +2.2084 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.5078 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[( is evaluated before the main part of the i.s. is entered, i.e.)]TJ +/TT18 1 Tf +-14.5247 -1.2889 TD +0 Tw +(outside)Tj +/TT6 1 Tf +2.8892 0 TD +0.0522 Tw +[( of the scope of any of the bound variables of the i.s. For example, )]TJ +/TT8 1 Tf +30.2486 0 TD +0.1267 Tw +(\(for X bind)Tj +-33.1378 -1.2889 TD +0 Tw +(\(Y)Tj +/TT19 1 Tf +1.2002 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.1322 Tw +(\(1 2 3\)\) in Y ...\))Tj +/TT6 1 Tf +12.063 0 TD +0.0556 Tw +[( will map down the list which is the value of )]TJ +/TT8 1 Tf +20.4959 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[( evaluated)]TJ +/TT18 1 Tf +-35.346 -1.2889 TD +0 Tw +(outside)Tj +/TT6 1 Tf +2.8892 0 TD +( of the i.s., )Tj +/TT18 1 Tf +4.731 0 TD +(not)Tj +/TT6 1 Tf +1.333 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\(1 2 3\))Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-16.0705 -2.2156 TD +(IN OLD)Tj +/TT4 1 Tf +10 0 0 10 182.4052 239.64 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1836 239.64 Tm +(VAR)Tj +/TT6 1 Tf +1.7996 0 TD +[( )-30152.2([I.S. Operator])]TJ +-3.0422 -1.8444 TD +0.4156 Tw +(Specifies that the i.s. is to iterate down )Tj +/TT12 1 Tf +20.4836 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.4156 Tw +(, with )Tj +/TT12 1 Tf +3.6143 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.4156 Tw +[( itself being reset to the)]TJ +-27.6985 -1.2889 TD +0.1244 Tw +(corresponding tail at each iteration, e.g., after )Tj +/TT8 1 Tf +21.1167 0 TD +0.2978 Tw +(\(for X in old L do ... until)Tj +-21.1167 -1.2889 TD +0 Tw +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +( finishes, )Tj +/TT8 1 Tf +4.1558 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +( will be some tail of its original value.)Tj +/TT10 1 Tf +-9.8229 -2.0667 TD +(IN OLD)Tj +/TT8 1 Tf +3.6006 0 TD +( \()Tj +/TT12 1 Tf +1.2002 0 TD +(VAR)Tj +/TT19 1 Tf +1.8003 0 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.5984 0 TD +[( )-25274.4([I.S. Operator])]TJ +-7.92 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(OLD)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +(, except )Tj +/TT12 1 Tf +3.5952 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( is first set to value of )Tj +/TT12 1 Tf +9.6519 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-29.2258 -2.2156 TD +(ON OLD)Tj +/TT4 1 Tf +10 0 0 10 182.4052 144.7 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1836 144.7 Tm +(VAR)Tj +/TT6 1 Tf +1.7996 0 TD +[( )-30152.2([I.S. Operator])]TJ +-3.0422 -1.8444 TD +0.0867 Tw +(Same as )Tj +/TT8 1 Tf +3.9839 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.3367 0 TD +(OLD)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.3367 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( except the i.v. is reset to the current value of )]TJ +/TT12 1 Tf +20.9099 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( at each iteration,)]TJ +-32.1682 -1.2889 TD +0 Tw +(instead of to )Tj +/TT8 1 Tf +5.7139 0 TD +(\(CAR )Tj +/TT12 1 Tf +3.0005 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-13.7814 -2.0667 TD +(ON OLD)Tj +/TT8 1 Tf +3.6006 0 TD +( \()Tj +/TT12 1 Tf +1.2002 0 TD +(VAR)Tj +/TT19 1 Tf +1.8003 0 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.5984 0 TD +[( )-25274.4([I.S. Operator])]TJ +-7.92 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(OLD)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +(, except )Tj +/TT12 1 Tf +3.5952 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( is first set to value of )Tj +/TT12 1 Tf +9.6519 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 32 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +46 0 obj +<< +/Length 8498 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-11)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(INSIDE)Tj +/TT4 1 Tf +10 0 0 10 134.4053 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 137.1836 568.2 Tm +(FORM)Tj +/TT6 1 Tf +2.3996 0 TD +[( )-29552.2([I.S. Operator])]TJ +-3.6422 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.3792 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1922 Tw +(, but treats first non-list, non-)Tj +/TT8 1 Tf +13.8307 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1922 Tw +[( tail as the last element of the iteration, e.g.,)]TJ +/TT8 1 Tf +-19.2105 -1.2889 TD +0.1178 Tw +(INSIDE \(A B C D . E\))Tj +/TT6 1 Tf +13.3087 0 TD +0.0489 Tw +[( iterates five times with the i.v. set to )]TJ +/TT8 1 Tf +16.8585 0 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.0489 Tw +[( on the last iteration.)]TJ +/TT8 1 Tf +-30.7673 -1.2889 TD +0 Tw +(INSIDE A)Tj +/TT6 1 Tf +5.4009 0 TD +( is equivalent to )Tj +/TT8 1 Tf +7.2632 0 TD +(INSIDE \(A\))Tj +/TT6 1 Tf +6.6011 0 TD +(, which will iterate once.)Tj +/TT10 1 Tf +-21.9318 -2.2156 TD +(FROM)Tj +/TT4 1 Tf +10 0 0 10 123.6035 508.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 126.3818 508.46 Tm +(FORM)Tj +/TT6 1 Tf +2.3998 0 TD +[( )-30752.2([I.S. Operator])]TJ +-2.4422 -1.8444 TD +0.0944 Tw +[(Specifies the initial value for a numerical i.v. The i.v. is automatically incremented by 1)]TJ +0 -1.2222 TD +0.0778 Tw +(after each iteration \(unless )Tj +/TT8 1 Tf +12.2213 0 TD +0 Tw +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +0.0778 Tw +[( is specified\). If no i.v. has been specified, a dummy i.v. is)]TJ +-13.4215 -1.2889 TD +0.02 Tw +(supplied and initialized, e.g., )Tj +/TT8 1 Tf +13.162 0 TD +0.0489 Tw +(\(from 2 to 5 collect SQRT\))Tj +/TT6 1 Tf +15.847 0 TD +0.02 Tw +[( returns )]TJ +/TT8 1 Tf +3.7441 0 TD +0.0489 Tw +(\(1.414 1.732)Tj +-32.7531 -1.2889 TD +0 Tw +(2.0 2.236\))Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-8.6676 -2.2156 TD +(TO)Tj +/TT4 1 Tf +10 0 0 10 112.8017 437.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 115.5801 437.72 Tm +(FORM)Tj +/TT6 1 Tf +2.4 0 TD +[( )-31952.2([I.S. Operator])]TJ +-1.2422 -1.8444 TD +0.0656 Tw +[(Specifies the final value for a numerical i.v. If )]TJ +/TT8 1 Tf +21.1121 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0656 Tw +[( is not specified, the i.v. is initialized)]TJ +-23.5125 -1.2889 TD +0.0989 Tw +[(to 1. If no i.v. has been specified, a dummy i.v. is supplied and initialized. If )]TJ +/TT8 1 Tf +35.9309 0 TD +0 Tw +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +0.0989 Tw +[( is not)]TJ +-37.1311 -1.2889 TD +0.0833 Tw +[(specified, the i.v. is automatically incremented by 1 after each iteration. When the i.v. is)]TJ +0 -1.2222 TD +0.1789 Tw +(definitely being )Tj +/TT18 1 Tf +7.5585 0 TD +0 Tw +(incremented)Tj +/TT6 1 Tf +4.9648 0 TD +0.1789 Tw +(, i.e., either )Tj +/TT8 1 Tf +5.6089 0 TD +0 Tw +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +0.1789 Tw +[( is not specified, or its operand is a positive)]TJ +-19.3324 -1.2889 TD +0.0711 Tw +(number, the i.s. terminates when the i.v. exceeds the value of )Tj +/TT12 1 Tf +27.9204 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0711 Tw +[(. Similarly, when the)]TJ +-30.3208 -1.2889 TD +0.0589 Tw +(i.v. is definitely being decremented the i.s. terminates when the i.v. becomes )Tj +/TT18 1 Tf +34.5607 0 TD +0 Tw +(less)Tj +/TT6 1 Tf +1.4453 0 TD +0.0589 Tw +[( than the)]TJ +-36.006 -1.2222 TD +0 Tw +(value of )Tj +/TT12 1 Tf +3.8169 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( \(see description of )Tj +/TT8 1 Tf +8.5835 0 TD +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +(\).)Tj +/TT12 1 Tf +-16.001 -2.0667 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2278 Tw +[( is evaluated only once, when the i.s. is first entered, and its value bound to a)]TJ +-2.4004 -1.2889 TD +0.0389 Tw +[(temporary variable against which the i.v. is checked each interation. If the user wishes to)]TJ +0 -1.2222 TD +0.0522 Tw +(specify an i.s. in which the value of the boundary condition is recomputed each iteration,)Tj +T* +0 Tw +(he should use )Tj +/TT8 1 Tf +6.3735 0 TD +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(UNTIL)Tj +/TT6 1 Tf +3.0005 0 TD +( instead of )Tj +/TT8 1 Tf +4.8418 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-19.8574 -2.0667 TD +0.1822 Tw +(When both the operands to )Tj +/TT8 1 Tf +13.2085 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1822 Tw +[( and )]TJ +/TT8 1 Tf +2.5573 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1822 Tw +[( are numbers, and )]TJ +/TT8 1 Tf +8.9647 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1822 Tw +(s operand is less than)Tj +/TT8 1 Tf +-29.5313 -1.2889 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +[(s operand, the i.v. is decremented by 1 after each iteration. In this case, the i.s.)]TJ +-2.4004 -1.2889 TD +0.1033 Tw +(terminates when the i.v. becomes )Tj +/TT18 1 Tf +15.4796 0 TD +0 Tw +(less)Tj +/TT6 1 Tf +1.4453 0 TD +0.1033 Tw +[( than the value of )]TJ +/TT12 1 Tf +8.461 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1033 Tw +[(. For example, )]TJ +/TT8 1 Tf +7.1594 0 TD +0.2489 Tw +(\(from 10)Tj +-34.9457 -1.2889 TD +0 Tw +(to 1 do PRINT\))Tj +/TT6 1 Tf +8.4014 0 TD +( prints the numbers from )Tj +/TT8 1 Tf +11.332 0 TD +(10)Tj +/TT6 1 Tf +1.2002 0 TD +( down to )Tj +/TT8 1 Tf +4.1948 0 TD +(1)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-28.3952 -2.2156 TD +(BY)Tj +/TT4 1 Tf +10 0 0 10 112.8017 227.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 115.5801 227.18 Tm +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT6 1 Tf +0.6001 0 TD +(\(without )Tj +/TT8 1 Tf +4.0913 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 216.9751 227.18 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 219.75 227.18 Tm +23.0278 Tw +[( [I.S. )23027.8(Operator])]TJ +-10.4167 -1.8444 TD +0.1133 Tw +(If you arent using )Tj +/TT8 1 Tf +8.8444 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1133 Tw +[( or )]TJ +/TT8 1 Tf +1.6676 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6133 0 TD +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +0.1133 Tw +[( specifies how the i.v. itself is reset at each iteration. If)]TJ +-14.726 -1.2889 TD +0.0156 Tw +(youre using )Tj +/TT8 1 Tf +5.8441 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0156 Tw +[( or )]TJ +/TT8 1 Tf +1.472 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0156 Tw +(, the i.v. is known to be numerical, so the new i.v. is computed by)Tj +-10.9167 -1.2889 TD +0.0478 Tw +(adding the value of )Tj +/TT12 1 Tf +9.0461 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0478 Tw +[( \(which is reevaluated each iteration\) to the current value of the)]TJ +-11.4465 -1.2889 TD +0.0189 Tw +(i.v., e.g., )Tj +/TT8 1 Tf +3.9289 0 TD +0.0444 Tw +(\(for N from 1 to 10 by 2 collect N\) )Tj +/TT6 1 Tf +22.048 0 TD +0.0189 Tw +(makes a list of the first five odd)Tj +-25.9768 -1.2889 TD +0 Tw +(numbers.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +1.0577 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +[( is a positive number \()]TJ +/TT12 1 Tf +10.5048 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +[( itself, not its value, which in general CLISP would)]TJ +-16.3633 -1.2889 TD +0.04 Tw +(have no way of knowing in advance\), the loop stops when the value of the i.v. )Tj +/TT18 1 Tf +35.3631 0 TD +0 Tw +(exceeds)Tj +/TT6 1 Tf +2.9639 0 TD +0.04 Tw +[( the)]TJ +-38.327 -1.2222 TD +0.0133 Tw +(value of )Tj +/TT8 1 Tf +3.8436 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0133 Tw +[(s operand. If )]TJ +/TT12 1 Tf +6.3888 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( is a negative number, the loop stops when the value of the)]TJ +-13.8329 -1.2889 TD +0.1522 Tw +(i.v. becomes )Tj +/TT18 1 Tf +5.968 0 TD +0 Tw +(less)Tj +/TT6 1 Tf +1.4453 0 TD +0.1522 Tw +[( than )]TJ +/TT8 1 Tf +2.7947 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1522 Tw +(s operand, e.g., )Tj +/TT8 1 Tf +7.6574 0 TD +0.3667 Tw +(\(for I)Tj +/TT10 1 Tf +3.9673 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.9668 0 TD +0.3667 Tw +(from N to M by -2 until)Tj +-23.9996 -1.2889 TD +0.0078 Tw +(\(LESSP I M\) ...\))Tj +/TT6 1 Tf +9.6249 0 TD +0.0033 Tw +(. Otherwise, the terminating condition for each iteration depends on)Tj +-9.6249 -1.2889 TD +0.0344 Tw +(the value of )Tj +/TT12 1 Tf +5.5574 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0344 Tw +[( for that iteration: if )]TJ +/TT12 1 Tf +9.0409 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(<0)Tj +/TT6 1 Tf +1.2002 0 TD +0.0344 Tw +(, the test is whether the i.v. is less than )Tj +/TT8 1 Tf +17.4948 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(s)Tj +-39.2943 -1.2889 TD +0.1 Tw +(operand, if )Tj +/TT12 1 Tf +5.2879 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(>0)Tj +/TT6 1 Tf +1.2002 0 TD +0.1 Tw +[( the test is whether the i.v. exceeds )]TJ +/TT8 1 Tf +16.3093 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1 Tw +(s operand; if )Tj +/TT12 1 Tf +6.3396 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2389 Tw +[( = 0)]TJ +/TT6 1 Tf +2.8782 0 TD +0.1 Tw +(, the)Tj +-38.0161 -1.2889 TD +0 Tw +(loop terminates unconditionally.)Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +51 0 obj +<< +/Length 9432 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-12)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0033 Tw +(If you didnt use )Tj +/TT8 1 Tf +7.5929 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0008 Tc +0.0025 Tw +( or )Tj +/TT8 1 Tf +1.4476 0 TD +0 Tc +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0007 Tc +0.0026 Tw +( and )Tj +/TT12 1 Tf +2.1995 0 TD +0 Tc +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( is not a number, the i.v. is simply reset to the value)Tj +-17.241 -1.2889 TD +0 Tc +0 Tw +(of )Tj +/TT12 1 Tf +1.1689 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.04 Tw +[( after each iteration, e.g., )]TJ +/TT8 1 Tf +11.2596 0 TD +0.0956 Tw +(\(for I from N by \(FOO\) ...\))Tj +/TT6 1 Tf +16.776 0 TD +0.04 Tw +[( sets )]TJ +/TT8 1 Tf +2.2328 0 TD +0 Tw +(I)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +[( to the value)]TJ +-34.4378 -1.2889 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.1289 0 TD +(\(FOO\))Tj +/TT6 1 Tf +3.0005 0 TD +( on each loop after the first.)Tj +/TT10 1 Tf +-6.7961 -2.2155 TD +(BY)Tj +/TT4 1 Tf +10 0 0 10 160.8017 526.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 163.5801 526.4 Tm +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT6 1 Tf +0.6001 0 TD +(\(with )Tj +/TT8 1 Tf +2.6162 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 251.6992 526.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 254.48 526.4 Tm +24.5022 Tw +[( [I.S. )24502.2(Operator])]TJ +-8.9422 -1.8444 TD +0.0822 Tw +(If you did use )Tj +/TT8 1 Tf +6.7224 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0822 Tw +[( or )]TJ +/TT8 1 Tf +1.6054 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.5822 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0822 Tw +(s value determines the )Tj +/TT18 1 Tf +10.8045 0 TD +0 Tw +(tail)Tj +/TT6 1 Tf +1.3325 0 TD +0.0822 Tw +[( for the next iteration, which in)]TJ +-25.8478 -1.2889 TD +0.0089 Tw +(turn determines the value for the i.v. as described earlier, i.e., the new i.v. is )Tj +/TT8 1 Tf +33.7442 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0089 Tw +[( of the tail)]TJ +-35.5445 -1.2889 TD +0 Tw +(for )Tj +/TT8 1 Tf +1.5328 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0089 Tw +(, the tail itself for )Tj +/TT8 1 Tf +7.7578 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +0.0089 Tw +[(. In conjunction with )]TJ +/TT8 1 Tf +9.6763 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0089 Tw +(, you can refer to the current tail within)Tj +/TT12 1 Tf +-22.5675 -1.2889 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0944 Tw +[( by using the i.v. or the operand for )]TJ +/TT8 1 Tf +16.7245 0 TD +0 Tw +(IN/ON)Tj +/TT6 1 Tf +3.0005 0 TD +0.0944 Tw +(, e.g., )Tj +/TT8 1 Tf +2.724 0 TD +0.2256 Tw +(\(for Z in L by \(CDDR )Tj +/TT12 1 Tf +13.9554 0 TD +0 Tw +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +-39.4049 -1.2889 TD +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +0.1222 Tw +[( or)]TJ +/TT16 1 Tf +1.3131 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.3722 0 TD +0.2944 Tw +(\(for Z in L by \(CDDR )Tj +/TT12 1 Tf +14.3687 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.2944 Tw +(\) ...\))Tj +/TT6 1 Tf +3.895 0 TD +0.1222 Tw +(. At translation time, the name of the)Tj +-22.9496 -1.2889 TD +0.2767 Tw +(internal variable which holds the value of the current tail is substituted for the i.v.)Tj +0 -1.2222 TD +0 Tw +(throughout )Tj +/TT12 1 Tf +5.3854 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.07 Tw +(. For example, )Tj +/TT8 1 Tf +6.7061 0 TD +0.1678 Tw +(\(for X in Y by \(CDR \(MEMB FOO \(CDR X\)\)\))Tj +-14.4919 -1.2889 TD +0.03 Tw +(collect X\))Tj +/TT6 1 Tf +6.031 0 TD +0.0122 Tw +[( specifies that after each iteration, )]TJ +/TT8 1 Tf +15.0977 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0122 Tw +[( of the current tail is to be searched for)]TJ +-22.929 -1.2889 TD +0 Tw +(the atom )Tj +/TT8 1 Tf +4.1421 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +(, and \()Tj +/TT8 1 Tf +2.7759 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( of\) this latter tail to be used for the next iteration.)Tj +/TT10 1 Tf +-13.1852 -2.2156 TD +(AS)Tj +/TT4 1 Tf +10 0 0 10 160.8017 397.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 163.5801 397.66 Tm +(VAR)Tj +/TT6 1 Tf +1.8 0 TD +( )Tj +33.0522 0 TD +([I.S. Operator])Tj +-33.6944 -1.8444 TD +0.04 Tw +(Lets you have more than one i.v. for a single loop, e.g., )Tj +/TT8 1 Tf +24.8228 0 TD +0.0967 Tw +(\(for X in Y as U in V do)Tj +-24.8228 -1.2889 TD +0 Tw +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +( moves through the lisps )Tj +/TT8 1 Tf +11.1659 0 TD +0 Tc +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0004 Tc +0.0018 Tw +( and )Tj +/TT8 1 Tf +2.1973 0 TD +0 Tc +0 Tw +(V)Tj +/TT6 1 Tf +0.6001 0 TD +0.0001 Tc +0.0021 Tw +( in parallel \(see )Tj +/TT8 1 Tf +6.9449 0 TD +0 Tc +0 Tw +(MAP2C)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0021 Tw +(\). The loop ends when any of)Tj +-26.9092 -1.2889 TD +0 Tc +0.0211 Tw +(the terminating conditions is met, e.g.,)Tj +/TT16 1 Tf +17.0348 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2711 0 TD +0.05 Tw +(\(for X in Y as I from 1 to 10 collect)Tj +-17.3059 -1.2889 TD +0 Tw +(X\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0533 Tw +[( makes a list of the first ten elements of )]TJ +/TT8 1 Tf +17.9513 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0533 Tw +(, or however many elements there are on )Tj +/TT8 1 Tf +18.7245 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0533 Tw +[( if)]TJ +-39.0762 -1.2889 TD +0 Tw +(less than )Tj +/TT8 1 Tf +4.1079 0 TD +(10)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-5.3081 -2.0667 TD +0.2233 Tw +(The operand to )Tj +/TT8 1 Tf +7.6798 0 TD +0 Tw +(AS)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.7233 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2233 Tw +(, specifies the new i.v. For the remainder of the i.s., or until)Tj +-11.4036 -1.2889 TD +0 Tw +(another )Tj +/TT8 1 Tf +3.6824 0 TD +(AS)Tj +/TT6 1 Tf +1.2002 0 TD +0.0222 Tw +[( is encountered, all operators refer to the new i.v. For example,)]TJ +/TT16 1 Tf +28.1387 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2722 0 TD +0.0533 Tw +(\(for I from)Tj +-33.2935 -1.2889 TD +0.0133 Tw +(1 to N)Tj +6 0 0 6 206.64 290.86 Tm +0 Tw +(1)Tj +9 0 0 9 210.24 292.86 Tm +0.0133 Tw +[( as J from 1 to N)]TJ +6 0 0 6 302.76 290.86 Tm +0 Tw +(2)Tj +9 0 0 9 306.36 292.86 Tm +0.0133 Tw +[( by 2 as K from N)]TJ +6 0 0 6 398.88 290.86 Tm +0 Tw +(3)Tj +9 0 0 9 402.48 292.86 Tm +0.0133 Tw +[( to 1 by -1 ...\))]TJ +/TT6 1 Tf +9.6682 0 TD +0.0056 Tw +[( terminates)]TJ +-35.0549 -1.3944 TD +0 Tw +(when )Tj +/TT8 1 Tf +2.8237 0 TD +(I)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[( exceeds )]TJ +/TT8 1 Tf +4.125 0 TD +0 Tw +(N)Tj +6 0 0 6 247.35 278.31 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 250.95 280.31 Tm +0.0967 Tw +(, or )Tj +/TT8 1 Tf +1.8843 0 TD +0 Tw +(J)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[( exceeds )]TJ +/TT8 1 Tf +4.125 0 TD +0 Tw +(N)Tj +6 0 0 6 315.84 278.31 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 319.44 280.31 Tm +0.0967 Tw +(, or )Tj +/TT8 1 Tf +1.8843 0 TD +0 Tw +(K)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[( becomes less than )]TJ +/TT8 1 Tf +8.8022 0 TD +0 Tw +(1)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[(. After each iteration, )]TJ +/TT8 1 Tf +10.2856 0 TD +0 Tw +(I)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +[( is)]TJ +-38.9323 -1.3944 TD +0 Tw +(incremented by )Tj +/TT8 1 Tf +7.1602 0 TD +(1)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(J)Tj +/TT6 1 Tf +0.6001 0 TD +( by )Tj +/TT8 1 Tf +1.6094 0 TD +(2)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(K)Tj +/TT6 1 Tf +0.6001 0 TD +( by )Tj +/TT8 1 Tf +1.6094 0 TD +(-1)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-19.589 -2.2156 TD +(OUTOF)Tj +/TT4 1 Tf +10 0 0 10 177.0044 247.82 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 179.7827 247.82 Tm +(FORM)Tj +/TT6 1 Tf +2.3997 0 TD +[( )-30152.2([I.S. Operator])]TJ +-3.0422 -1.8444 TD +0.0433 Tw +[(For use with generators. On each iteration, the i.v. is set to successive values returned by)]TJ +0 -1.2222 TD +0 Tw +(the generator. The loop ends when the generator runs out.)Tj +/TT4 1 Tf +10 0 0 10 126 197.88 Tm +(Condition I.S. Oprs)Tj +/TT6 1 Tf +9 0 0 9 126 182.22 Tm +0.0133 Tw +[(What if you want to do things only on certain times through the loop? You could make the loop body)]TJ +T* +0 Tw +(a big )Tj +/TT8 1 Tf +2.4004 0 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +(, but its much more readable to use one of these:)Tj +/TT10 1 Tf +-2.1341 -2.2156 TD +(WHEN)Tj +/TT4 1 Tf +10 0 0 10 171.6035 151.28 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 174.3818 151.28 Tm +(FORM)Tj +/TT6 1 Tf +2.3998 0 TD +[( )-30752.2([I.S. Operator])]TJ +-2.4422 -1.8444 TD +0.1189 Tw +(Only run the loop body when )Tj +/TT8 1 Tf +14.123 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1189 Tw +(s value is non-)Tj +/TT8 1 Tf +7.0041 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1189 Tw +[(. For example, )]TJ +/TT8 1 Tf +7.2216 0 TD +0.2844 Tw +(\(for X in Y)Tj +-32.5495 -1.2889 TD +0 Tw +(collect X when \(NUMBERP X\)\))Tj +/TT6 1 Tf +16.2026 0 TD +( collects only the elements of )Tj +/TT8 1 Tf +12.9287 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( that are numbers.)Tj +/TT10 1 Tf +-32.3981 -2.2156 TD +(UNLESS)Tj +/TT4 1 Tf +10 0 0 10 182.4052 103.14 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1836 103.14 Tm +(FORM)Tj +/TT6 1 Tf +2.3996 0 TD +[( )-29552.2([I.S. Operator])]TJ +-3.6422 -1.8444 TD +(Opposite of )Tj +/TT8 1 Tf +5.4331 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +(: )Tj +/TT8 1 Tf +0.75 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(Z)Tj +/TT6 1 Tf +0.6001 0 TD +( is the same as )Tj +/TT8 1 Tf +6.5615 0 TD +(UNLESS \(NOT Z\))Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-29.4635 -2.2156 TD +(WHILE)Tj +/TT4 1 Tf +10 0 0 10 177.0044 66.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 179.7827 66.6 Tm +(FORM)Tj +/TT6 1 Tf +2.3997 0 TD +[( )-30152.2([I.S. Operator])]TJ +/TT8 1 Tf +-3.0422 -1.8444 TD +(WHILE)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( evaluates )Tj +/TT12 1 Tf +4.667 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(before)Tj +/TT6 1 Tf +2.3521 0 TD +( each iteration, and if the value is )Tj +/TT8 1 Tf +14.8481 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, exits.)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +54 0 obj +<< +/Length 6018 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-13)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(UNTIL)Tj +/TT4 1 Tf +10 0 0 10 129.0044 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 131.7827 568.2 Tm +(FORM)Tj +/TT6 1 Tf +2.3997 0 TD +[( )-30152.2([I.S. Operator])]TJ +-3.0422 -1.8444 TD +(Opposite of )Tj +/TT8 1 Tf +5.4331 0 TD +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +(: Evaluates )Tj +/TT12 1 Tf +5.2988 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(before)Tj +/TT6 1 Tf +2.3521 0 TD +( each iteration, and if the value is )Tj +/TT18 1 Tf +14.8481 0 TD +(not)Tj +/TT6 1 Tf +1.333 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, exits.)Tj +/TT10 1 Tf +-39.633 -2.2156 TD +(REPEATWHILE)Tj +/TT4 1 Tf +10 0 0 10 161.4097 531.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 164.188 531.66 Tm +(FORM)Tj +/TT6 1 Tf +2.3991 0 TD +[( )-26552.2([I.S. Operator])]TJ +-6.6422 -1.8444 TD +0.0389 Tw +(Same as )Tj +/TT8 1 Tf +3.8883 0 TD +0 Tw +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0389 Tw +[( except the test is performed )]TJ +/TT18 1 Tf +12.9575 0 TD +0 Tw +(after)Tj +/TT6 1 Tf +1.833 0 TD +0.0389 Tw +[( the loop body, but before the i.v. is reset)]TJ +-21.6793 -1.2889 TD +0 Tw +(for the next iteration.)Tj +/TT10 1 Tf +-2.6667 -2.1489 TD +(REPEATUNTIL)Tj +/TT4 1 Tf +10 0 0 10 161.4097 484.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 164.188 484.12 Tm +(FORM)Tj +/TT6 1 Tf +2.3991 0 TD +[( )-26552.2([I.S. Operator])]TJ +-6.6422 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(UNTIL)Tj +/TT6 1 Tf +3.0005 0 TD +(, except the test is performed )Tj +/TT18 1 Tf +12.9741 0 TD +(after)Tj +/TT6 1 Tf +1.833 0 TD +( the loop body.)Tj +/TT4 1 Tf +10 0 0 10 78 444.58 Tm +(Other I.S. Operators)Tj +/TT10 1 Tf +9 0 0 9 102 427.58 Tm +(FIRST)Tj +/TT4 1 Tf +10 0 0 10 129.0044 427.58 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 131.7827 427.58 Tm +(FORM)Tj +/TT6 1 Tf +2.3997 0 TD +[( )-30152.2([I.S. Operator])]TJ +/TT12 1 Tf +-3.0422 -1.8445 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( is evaluated once before the first iteration, e.g., )]TJ +/TT8 1 Tf +21.4025 0 TD +0.0856 Tw +(\(for X Y Z in L first \(FOO)Tj +-23.8029 -1.2889 TD +0 Tw +(Y Z\) ...\))Tj +/TT6 1 Tf +5.4009 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +( could be used to initialize )Tj +/TT8 1 Tf +11.8579 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(Z)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-27.5617 -2.2156 TD +(FINALLY)Tj +/TT4 1 Tf +10 0 0 10 139.8062 379.44 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 142.5845 379.44 Tm +(FORM)Tj +/TT6 1 Tf +2.3995 0 TD +[( )-28952.2([I.S. Operator])]TJ +/TT12 1 Tf +-4.2422 -1.8444 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0167 Tw +[( is evaluated after the loop terminates. For example,)]TJ +/TT16 1 Tf +23.3043 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2667 0 TD +0.0389 Tw +(\(for X in L bind Y_0 do)Tj +-25.9714 -1.2889 TD +0.0178 Tw +(\(if \(ATOM X\) then \(SETQ Y \(PLUS Y 1\)\)\) finally \(RETURN Y\)\))Tj +/TT6 1 Tf +35.0012 0 TD +0.0078 Tw +[( will return)]TJ +-35.0012 -1.2889 TD +0 Tw +(the number of atoms in )Tj +/TT8 1 Tf +10.563 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-13.8298 -2.2156 TD +(EACHTIME)Tj +/TT4 1 Tf +10 0 0 10 145.207 319.7 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 147.9854 319.7 Tm +(FORM)Tj +/TT6 1 Tf +2.3994 0 TD +[( )-28352.2([I.S. Operator])]TJ +/TT12 1 Tf +-4.8422 -1.8444 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +[( is evaluated at the beginning of each iteration before, and regardless of, any testing.)]TJ +-2.4004 -1.2889 TD +0 Tw +(For example, consider,)Tj +/TT8 1 Tf +4 -1.6 TD +(\(for I from 1 to N)Tj +2 -1 TD +(do \(... \(FOO I\) ...\))Tj +T* +(unless \(... \(FOO I\) ...\))Tj +T* +(until \(... \(FOO I\) ...\)\))Tj +/TT6 1 Tf +-6 -1.8444 TD +0.1222 Tw +(You might want to set a temporary variable to the value of \()Tj +/TT8 1 Tf +27.9286 0 TD +0.2944 Tw +(FOO I\))Tj +/TT6 1 Tf +3.895 0 TD +0.1222 Tw +[( in order to avoid)]TJ +-31.8236 -1.2889 TD +0.08 Tw +[(computing it three times each iteration. However, without knowing the translation, you)]TJ +0 -1.2222 TD +0.0433 Tw +(cant know whether to put the assignment in the operand to )Tj +/TT8 1 Tf +27.2345 0 TD +0 Tw +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5433 0 TD +(UNLESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0433 Tw +(, or )Tj +/TT8 1 Tf +1.7776 0 TD +0 Tw +(UNTIL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[(. You)]TJ +-37.3567 -1.2889 TD +0 Tw +(can avoid this problem by simply writing )Tj +/TT8 1 Tf +18.5903 0 TD +(EACHTIME \(SETQ J \(FOO I\)\))Tj +/TT6 1 Tf +15.0024 0 TD +(.)Tj +/TT10 1 Tf +-36.2594 -2.2156 TD +(DECLARE:)Tj +/TT4 1 Tf +10 0 0 10 145.207 179.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 147.9854 179.36 Tm +(DECL)Tj +/TT6 1 Tf +2.3994 0 TD +[( )-28352.2([I.S. Operator])]TJ +-4.8422 -1.8444 TD +0.1133 Tw +(Inserts the form )Tj +/TT8 1 Tf +7.6007 0 TD +0 Tw +(\(DECLARE)Tj +/TT10 1 Tf +4.8008 0 TD +( )Tj +/TT12 1 Tf +0.8734 0 TD +(DECL)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1133 Tw +[( immediately following the )]TJ +/TT8 1 Tf +12.7004 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[( variable list in the)]TJ +-31.3762 -1.2889 TD +0.0867 Tw +(translation, or, in the case that the translation is a mapping function rather than a )Tj +/TT8 1 Tf +37.3493 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +-39.7497 -1.2889 TD +0.0244 Tw +[(immediately following the argument list of the lambda expression in the translation. This)]TJ +0 -1.2222 TD +0.0089 Tw +(can be used to declare variables bound in the iterative statement to be compiled as local or)Tj +T* +0.1178 Tw +[(special variables. For example )]TJ +/TT8 1 Tf +14.3628 0 TD +0.2833 Tw +(\(for X in Y declare: \(LOCALVARS X\) ...\))Tj +/TT6 1 Tf +25.3871 0 TD +0 Tw +(.)Tj +-39.75 -1.2889 TD +(Several )Tj +/TT8 1 Tf +3.5128 0 TD +(DECLARE:)Tj +/TT6 1 Tf +4.8008 0 TD +0.0289 Tw +(s can apppear in the same i.s.; the declarations are inserted in the order)Tj +-8.3136 -1.2889 TD +0 Tw +(they appear.)Tj +/TT10 1 Tf +-2.6667 -2.1489 TD +(DECLARE)Tj +/TT4 1 Tf +10 0 0 10 139.8062 75.02 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 142.5845 75.02 Tm +(DECL)Tj +/TT6 1 Tf +2.3995 0 TD +[( )-28952.2([I.S. Operator])]TJ +-4.2422 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(DECLARE:)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +57 0 obj +<< +/Length 8048 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-14)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(Since )Tj +/TT8 1 Tf +2.6019 0 TD +(DECLARE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( is also the name of a function, )]TJ +/TT8 1 Tf +13.8915 0 TD +0 Tw +(DECLARE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( cannot be used as an i.s. operator)]TJ +-24.8947 -1.2889 TD +0.1244 Tw +(when it appears as )Tj +/TT8 1 Tf +9.0158 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1244 Tw +[( of a form, i.e. as the first i.s. operator in an iterative statement.)]TJ +-10.8161 -1.2889 TD +0 Tw +(However, )Tj +/TT8 1 Tf +4.6299 0 TD +(declare)Tj +/TT6 1 Tf +4.2007 0 TD +( \(lowercase version\) )Tj +/TT18 1 Tf +9.0894 0 TD +(can)Tj +/TT6 1 Tf +1.4072 0 TD +( be the first i.s. operator.)Tj +/TT10 1 Tf +-21.9938 -2.0667 TD +(ORIGINAL )Tj +/TT12 1 Tf +5.4009 0 TD +(I.S.OPR OPERAND)Tj +/TT6 1 Tf +8.9991 0 TD +[( )-21461.1([I.S. Operator])]TJ +/TT12 1 Tf +-11.7333 -1.8444 TD +(I.S.OPR)Tj +/TT6 1 Tf +4.2007 0 TD +0.0811 Tw +[( will be translated using its original, built-in interpretation, independent of any)]TJ +-4.2007 -1.2889 TD +0 Tw +(user defined i.s. operators. )Tj +-5.3333 -2 TD +0.0389 Tw +(There are also a number of i.s.oprs that make it easier to create iterative statements that use the clock,)Tj +0 -1.2222 TD +0 Tw +(looping for a given period of time. See timers, Chapter 12.)Tj +/TT4 1 Tf +10 0 0 10 126 448.2 Tm +(Miscellaneous Hints For Using I.S.Oprs)Tj +/TT6 1 Tf +9 0 0 9 126 432.54 Tm +0.0478 Tw +(Lowercase versions of all i.s. operators are equivalent to the uppercase, e.g., )Tj +/TT8 1 Tf +34.2486 0 TD +0.1156 Tw +(\(for X in Y ...\))Tj +/TT6 1 Tf +10.0638 0 TD +0.0478 Tw +[( is)]TJ +-44.3124 -1.2889 TD +0 Tw +(equivalent to )Tj +/TT8 1 Tf +6.0483 0 TD +(\(FOR X IN Y ...\))Tj +/TT6 1 Tf +9.6016 0 TD +(.)Tj +-15.6499 -2.0667 TD +0.0444 Tw +(Each i.s. operator is of lower precedence than all Interlisp forms, so parentheses around the operands)Tj +0 -1.2222 TD +0.0133 Tw +(can be omitted, and will be supplied where necessary, e.g., )Tj +/TT8 1 Tf +26.3233 0 TD +0.0322 Tw +(BIND \(X Y Z\))Tj +/TT6 1 Tf +7.2978 0 TD +0.0133 Tw +[( can be written )]TJ +/TT8 1 Tf +6.8448 0 TD +0.0322 Tw +(BIND X Y)Tj +-40.466 -1.2889 TD +0 Tw +(Z)Tj +/TT10 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +1.2002 0 TD +(OLD \(X_)Tj +/TT12 1 Tf +4.2007 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( as )Tj +/TT8 1 Tf +1.4238 0 TD +(OLD X_)Tj +/TT12 1 Tf +3.6006 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +/TT6 1 Tf +0.6001 0 TD +( etc.)Tj +/TT8 1 Tf +-17.0264 -2.0667 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0111 Tw +[( or )]TJ +/TT8 1 Tf +1.4631 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0111 Tw +[( may be used in any operand. \(In this case, the translation of the iterative statement will)]TJ +-6.2639 -1.2889 TD +0.12 Tw +(always be in the form of a )Tj +/TT8 1 Tf +12.5231 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.12 Tw +(, never a mapping function.\) )Tj +/TT8 1 Tf +13.7742 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.12 Tw +[( means return from the loop)]TJ +-32.2983 -1.2889 TD +0.19 Tw +(\(with the indicated value\), )Tj +/TT18 1 Tf +12.6692 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.19 Tw +[( from the function in which the loop appears. )]TJ +/TT8 1 Tf +22.378 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.19 Tw +[( refers to a label)]TJ +-37.5804 -1.2889 TD +0.1433 Tw +(elsewhere in the function in which the loop. appears, except for the labels )Tj +/TT8 1 Tf +34.544 0 TD +0 Tw +($$LP)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6433 0 TD +($$ITERATE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1433 Tw +(, and)Tj +/TT8 1 Tf +-42.9886 -1.2889 TD +0 Tw +($$OUT)Tj +/TT6 1 Tf +3.0005 0 TD +( which are reserved, as described below.)Tj +-3.0005 -2.0667 TD +0.0222 Tw +(In the case of )Tj +/TT8 1 Tf +6.1206 0 TD +0 Tw +(FIRST)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(FINALLY)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(EACHTIME)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(DECLARE:)Tj +/TT6 1 Tf +4.8008 0 TD +0.0222 Tw +[( or one of the i.s.types, e.g., )]TJ +/TT8 1 Tf +12.3558 0 TD +0 Tw +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5222 0 TD +(SUM)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +-45.0914 -1.2889 TD +0.0433 Tw +(etc., the operand can consist of more than one form, e.g., )Tj +/TT8 1 Tf +25.61 0 TD +0 Tw +(COLLECT)Tj +/TT16 1 Tf +4.2007 0 TD +( )Tj +/TT8 1 Tf +0.2933 0 TD +0.1044 Tw +(\(PRINT \(CAR X\)\))Tj +/TT6 1 Tf +9.2104 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2933 0 TD +0.1044 Tw +(\(CDR X\))Tj +/TT6 1 Tf +4.3051 0 TD +0.0433 Tw +(, in)Tj +-43.9128 -1.2889 TD +0 Tw +(which case a )Tj +/TT8 1 Tf +5.8296 0 TD +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +( is supplied.)Tj +-8.8301 -2.0667 TD +0.0511 Tw +(Each operand can be the name of a function, in which case it is applied to the \(last\) i.v., e.g., )Tj +/TT8 1 Tf +41.614 0 TD +0.1222 Tw +(\(for X)Tj +-41.614 -1.2889 TD +0.3667 Tw +(in Y do PRINT when NUMBERP\))Tj +/TT6 1 Tf +18.036 0 TD +0.1533 Tw +[( is the same as )]TJ +/TT8 1 Tf +7.3282 0 TD +0.3667 Tw +(\(for X in Y do \(PRINT X\) when)Tj +-25.3642 -1.2889 TD +0.2111 Tw +(\(NUMBERP X\)\))Tj +/TT6 1 Tf +7.4123 0 TD +0.0878 Tw +[(. Note that the i.v. need not be explicitly specified, e.g., )]TJ +/TT8 1 Tf +25.6744 0 TD +0.2111 Tw +(\(in Y do PRINT when)Tj +-33.0867 -1.2889 TD +0 Tw +(NUMBERP\))Tj +/TT6 1 Tf +4.8008 0 TD +( will work.)Tj +-4.8008 -2.0667 TD +0.0044 Tw +(For i.s.types, e.g., )Tj +/TT8 1 Tf +7.8966 0 TD +0 Tw +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5044 0 TD +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5044 0 TD +(JOIN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0044 Tw +(, the function is always applied to the first i.v. in the i.s., whether)Tj +-16.7068 -1.2889 TD +0.0111 Tw +[(explicity named or not. For example, )]TJ +/TT8 1 Tf +16.819 0 TD +0.0267 Tw +(\(in Y as I from 1 to 10 do PRINT\))Tj +/TT6 1 Tf +20.0432 0 TD +0.0111 Tw +[( prints elements on)]TJ +/TT8 1 Tf +-36.8622 -1.2889 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(, not integers between 1 and 10.)Tj +-0.6001 -2.0667 TD +0.0556 Tw +(Note that this feature does not make much sense for )Tj +/TT8 1 Tf +23.8153 0 TD +0 Tw +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5556 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5556 0 TD +(BIND)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5556 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0556 Tw +(, or )Tj +/TT8 1 Tf +1.802 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +0.0556 Tw +(, since they operate)Tj +-35.6854 -1.2889 TD +0 Tw +(before the loop starts, when the i.v. may not even be bound.)Tj +0 -2 TD +0.0267 Tw +(In the case of )Tj +/TT8 1 Tf +6.1384 0 TD +0 Tw +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +0.0267 Tw +[( in conjunction with )]TJ +/TT8 1 Tf +9.1926 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0267 Tw +(, the function is applied to the current )Tj +/TT18 1 Tf +17.1298 0 TD +0 Tw +(tail)Tj +/TT6 1 Tf +1.3325 0 TD +0.0267 Tw +[( e.g., )]TJ +/TT8 1 Tf +2.3385 0 TD +0.0644 Tw +(\(for X in Y)Tj +-38.5322 -1.2889 TD +0 Tw +(by CDDR ...\))Tj +/TT6 1 Tf +7.2012 0 TD +( is the same as )Tj +/TT8 1 Tf +6.5615 0 TD +(\(for X in Y by \(CDDR X\) ...\))Tj +/TT6 1 Tf +16.8027 0 TD +(.)Tj +-30.5654 -2.0667 TD +0.0678 Tw +(While the exact translation of a loop depends on which operators are present, a )Tj +/TT8 1 Tf +36.1398 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0678 Tw +[( will always be)]TJ +-38.5402 -1.2889 TD +0.2178 Tw +(used whenever the loop specifies dummy variablesif )Tj +/TT8 1 Tf +26.0806 0 TD +0 Tw +(BIND)Tj +/TT6 1 Tf +2.4004 0 TD +0.2178 Tw +[( appears, or there is more than one)]TJ +-28.481 -1.2889 TD +0.0744 Tw +(variable specified by a )Tj +/TT8 1 Tf +10.434 0 TD +0 Tw +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0744 Tw +(, or a )Tj +/TT8 1 Tf +2.6643 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5744 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0744 Tw +(, or a reference to the variable )Tj +/TT8 1 Tf +13.8605 0 TD +0 Tw +($$VAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0744 Tw +[( appears in any of)]TJ +-37.1347 -1.2889 TD +0 Tw +(the operands. When )Tj +/TT8 1 Tf +9.168 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( is used, the form of the translation is:)Tj +/TT8 1 Tf +-2.235 -1.6667 TD +(\(PROG )Tj +/TT12 1 Tf +3.6006 0 TD +(VARIABLES)Tj +/TT8 1 Tf +-1.6006 -1 TD +({initialize})Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +60 0 obj +<< +/Length 7167 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-15)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT8 1 Tf +9 0 0 9 162 570.14 Tm +($$LP {eachtime})Tj +2 -1 TD +({test})Tj +T* +({body})Tj +-2 -1.4444 TD +($$ITERATE)Tj +2 -1 TD +({aftertest})Tj +T* +({update})Tj +T* +(\(GO $$LP\))Tj +-2 -1.4444 TD +($$OUT {finalize})Tj +2 -1 TD +(\(RETURN $$VAL\)\))Tj +/TT6 1 Tf +-11.3333 -1.8444 TD +(where )Tj +/TT8 1 Tf +3.2424 0 TD +({test})Tj +/TT6 1 Tf +3.6006 0 TD +0.2233 Tw +[( corresponds to that part of the loop that tests for termination and also for those)]TJ +-6.843 -1.2889 TD +0.0022 Tw +(iterations for which )Tj +/TT8 1 Tf +8.9237 0 TD +0 Tw +({body} )Tj +/TT6 1 Tf +4.2073 0 TD +0.0022 Tw +(is not going to be executed, \(as indicated by a )Tj +/TT8 1 Tf +20.3147 0 TD +0 Tw +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0006 Tc +0.0016 Tw +( or )Tj +/TT8 1 Tf +1.4454 0 TD +0 Tc +0 Tw +(UNLESS)Tj +/TT6 1 Tf +3.6006 0 TD +(\);)Tj +/TT16 1 Tf +0.583 0 TD +( )Tj +/TT8 1 Tf +0.2522 0 TD +({body})Tj +/TT6 1 Tf +-41.7273 -1.2889 TD +(corresponds to the operand of the i.s.type, e.g., )Tj +/TT8 1 Tf +20.9067 0 TD +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5009 0 TD +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +(, etc.; )Tj +/TT8 1 Tf +2.5004 0 TD +({aftertest})Tj +/TT6 1 Tf +6.6011 0 TD +( corresponds to those)Tj +-35.91 -1.2889 TD +0.1689 Tw +(tests for termination specified by )Tj +/TT8 1 Tf +15.6106 0 TD +0 Tw +(REPEATWHILE)Tj +/TT6 1 Tf +6.6011 0 TD +0.1689 Tw +[( or )]TJ +/TT8 1 Tf +1.7787 0 TD +0 Tw +(REPEATUNTIL)Tj +/TT6 1 Tf +6.6011 0 TD +0.1689 Tw +(; and )Tj +/TT8 1 Tf +2.7806 0 TD +0 Tw +({update})Tj +/TT6 1 Tf +4.8008 0 TD +0.1689 Tw +[( corresponds to)]TJ +-38.1728 -1.2889 TD +0.3122 Tw +(that part that resets the tail, increments the counter, etc. in preparation for the next iteration.)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +({initialize})Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT8 1 Tf +0.6444 0 TD +({finalize})Tj +/TT6 1 Tf +6.001 0 TD +0.1444 Tw +(, and )Tj +/TT8 1 Tf +2.7318 0 TD +0 Tw +({eachtime})Tj +/TT6 1 Tf +6.001 0 TD +0.1444 Tw +[( correspond to the operands of )]TJ +/TT8 1 Tf +14.665 0 TD +0 Tw +(FIRST)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6444 0 TD +(FINALLY)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +-45.09 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(EACHTIME)Tj +/TT6 1 Tf +4.8008 0 TD +(, if any.)Tj +-6.7437 -2.0667 TD +(Since )Tj +/TT8 1 Tf +2.6019 0 TD +({body})Tj +/TT6 1 Tf +3.6006 0 TD +0.0311 Tw +[( always appears at the top level of the )]TJ +/TT8 1 Tf +17.1926 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +(, you can insert labels in )Tj +/TT8 1 Tf +11.0758 0 TD +0 Tw +({body})Tj +/TT6 1 Tf +3.6006 0 TD +0.0311 Tw +(, and )Tj +/TT8 1 Tf +2.5051 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +[( to)]TJ +-44.1772 -1.2889 TD +0.1078 Tw +(them from within )Tj +/TT8 1 Tf +8.4063 0 TD +0 Tw +({body})Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( or from other i.s. operands, e.g., )]TJ +/TT8 1 Tf +15.3179 0 TD +0.2578 Tw +(\(for X in Y first \(GO A\) do)Tj +-27.3249 -1.2889 TD +0.2711 Tw +(\(FOO\) A \(FIE\)\))Tj +/TT6 1 Tf +8.9436 0 TD +0.1133 Tw +[(. However, since )]TJ +/TT8 1 Tf +8.3029 0 TD +0 Tw +({body})Tj +/TT6 1 Tf +3.6006 0 TD +0.1133 Tw +[( is dwimified as a list of forms, the label\(s\) should be)]TJ +-20.8471 -1.2889 TD +0.1056 Tw +(added to the dummy variables for the iterative statement in order to prevent their being dwimified)Tj +0 -1.2222 TD +0.0022 Tw +(and possibly corrected, e.g., )Tj +/TT8 1 Tf +13.5416 0 TD +0.0056 Tw +(\(for X in Y bind A first \(GO A\) do \(FOO\) A \(FIE\)\))Tj +/TT6 1 Tf +29.4715 0 TD +0.0022 Tw +(. You)Tj +-43.0131 -1.2889 TD +0 Tw +(can also )Tj +/TT8 1 Tf +3.7866 0 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +($$LP)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +($$ITERATE)Tj +/TT6 1 Tf +5.4009 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +($$OUT)Tj +/TT6 1 Tf +3.0005 0 TD +(, or explicitly set )Tj +/TT8 1 Tf +7.5063 0 TD +($$VAL)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 305.6 Tm +(Errors in Iterative Statements)Tj +/TT6 1 Tf +9 0 0 9 78 289.94 Tm +0.1033 Tw +(An error will be generated and an appropriate diagnostic printed if any of the following conditions)Tj +0 -1.2222 TD +0 Tw +(hold:)Tj +0 -2 TD +[(1.)-583.3(Operator with null operand, i.e., two adjacent operators, as in )]TJ +/TT8 1 Tf +28.7865 0 TD +(\(for X in Y until do ...\))Tj +/TT6 1 Tf +-28.7865 -2.0667 TD +0.09 Tw +[(2.)-583.3(Operand consisting of more than one form \(except as operand to )]TJ +/TT8 1 Tf +31.1168 0 TD +0 Tw +(FIRST)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.59 0 TD +(FINALLY)Tj +/TT6 1 Tf +4.2007 0 TD +0.09 Tw +(, or one of the)Tj +-37.5746 -1.2889 TD +0 Tw +(i.s.types\), e.g., )Tj +/TT8 1 Tf +6.4692 0 TD +(\(for X in Y \(PRINT X\) collect ...\))Tj +/TT6 1 Tf +20.4033 0 TD +(.)Tj +-28.2059 -2.0667 TD +(3.)Tj +/TT8 1 Tf +1.3333 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +(BY)Tj +/TT6 1 Tf +1.2002 0 TD +( appear twice in same i.s.)Tj +-11.7254 -2.0667 TD +[(4.)-583.3(Both )]TJ +/TT8 1 Tf +3.6483 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +( used on same i.v.)Tj +-8.2415 -2.0667 TD +(5.)Tj +/TT8 1 Tf +1.3333 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +( used with )Tj +/TT8 1 Tf +4.8999 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +( on same i.v.)Tj +-15.1161 -2.0667 TD +[(6.)-583.3(More than one i.s.type, e.g., a )]TJ +/TT8 1 Tf +14.5086 0 TD +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +( and a )Tj +/TT8 1 Tf +2.9429 0 TD +(SUM)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-20.452 -2.0667 TD +(In 3, 4, or 5, an error is not generated if an intervening )Tj +/TT8 1 Tf +24.0625 0 TD +(AS)Tj +/TT6 1 Tf +1.2002 0 TD +( occurs.)Tj +-25.2627 -2.0667 TD +(If an error occurs, the i.s. is left unchanged.)Tj +0 -2 TD +0.0344 Tw +(If no )Tj +/TT8 1 Tf +2.3667 0 TD +0 Tw +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5344 0 TD +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5344 0 TD +(JOIN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0344 Tw +[( or any of the other i.s.types are specified, CLISP will first attempt to find an)]TJ +-11.2369 -1.2889 TD +0.0378 Tw +(operand consisting of more than one form, e.g., )Tj +/TT8 1 Tf +21.4526 0 TD +0.0922 Tw +(\(for X in Y \(PRINT X\) when ATOM X ...\))Tj +/TT6 1 Tf +23.6337 0 TD +0 Tw +(,)Tj +-45.0863 -1.2889 TD +0.0756 Tw +(and in this case will insert a )Tj +/TT8 1 Tf +13.0186 0 TD +0 Tw +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0756 Tw +[( after the first form. \(In this case, condition 2 is not considered to be)]TJ +-14.2188 -1.2889 TD +0.0733 Tw +[(met, and an error is not generated.\) If CLISP cannot find such an operand, and no )]TJ +/TT8 1 Tf +37.7506 0 TD +0 Tw +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0733 Tw +[( or )]TJ +/TT8 1 Tf +1.5876 0 TD +0 Tw +(UNTIL)Tj +/TT6 1 Tf +-42.3387 -1.2889 TD +(appears in the i.s., a warning message is printed: )Tj +/TT8 1 Tf +21.71 0 TD +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(DO)Tj +/TT16 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(COLLECT)Tj +/TT16 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(OR)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(JOIN)Tj +/TT6 1 Tf +2.4004 0 TD +(: followed by the i.s.)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT14 16 0 R +/TT16 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +63 0 obj +<< +/Length 7167 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-16)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0633 Tw +(Similarly, if no terminating condition is detected, i.e., no )Tj +/TT8 1 Tf +25.6428 0 TD +0 Tw +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5633 0 TD +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5633 0 TD +(WHILE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5633 0 TD +(UNTIL,)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.3133 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0633 Tw +(, or a )Tj +/TT8 1 Tf +2.6309 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0633 Tw +[( or)]TJ +/TT8 1 Tf +-44.0793 -1.2889 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.2644 Tw +(, a warning message is printed: )Tj +/TT8 1 Tf +15.5715 0 TD +0.6356 Tw +(Possible non-terminating iterative statement)Tj +/TT6 1 Tf +28.311 0 TD +0 Tw +(:)Tj +-45.0827 -1.2889 TD +0.0289 Tw +[(followed by the iterative statement. However, since the user may be planning to terminate the i.s. via)]TJ +0 -1.2222 TD +0 Tw +(an error, Control-E, or a )Tj +/TT8 1 Tf +10.8218 0 TD +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +( from a lower function, the i.s. is still translated.)Tj +/TT16 1 Tf +-15.0225 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +(: The error message is not printed if the value of )Tj +/TT8 1 Tf +21.6606 0 TD +(CLISPI.S.GAG)Tj +/TT6 1 Tf +7.2012 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( \(initially )Tj +/TT8 1 Tf +4.2524 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\).)Tj +/TT4 1 Tf +10 0 0 10 126 493.8 Tm +(Defining New Iterative Statement Operators)Tj +/TT6 1 Tf +9 0 0 9 126 478.14 Tm +0.3433 Tw +(The following function is available for defining new or redefining existing iterative statement)Tj +0 -1.2222 TD +0 Tw +(operators:)Tj +/TT8 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(I.S.OPR )Tj +/TT12 1 Tf +4.8008 0 TD +(NAME)Tj +/F1 1 Tf +10 0 0 10 220.2114 447.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 222.9914 447.86 Tm +(FORM)Tj +/F1 1 Tf +10 0 0 10 244.5949 447.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 247.3749 447.86 Tm +(OTHERS)Tj +/F1 1 Tf +10 0 0 10 279.7802 447.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 282.5602 447.86 Tm +(EVALFLG)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +0.5971 0 TD +[( )-18043.3([Function])]TJ +/TT12 1 Tf +-16.86 -1.8444 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1322 Tw +[( is the name of the new i.s.opr. If )]TJ +/TT12 1 Tf +16.206 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1322 Tw +[( is a list, )]TJ +/TT12 1 Tf +4.3258 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1322 Tw +[( will be a new )]TJ +/TT18 1 Tf +7.0454 0 TD +0 Tw +(i.s.type)Tj +/TT6 1 Tf +2.8892 0 TD +0.1322 Tw +(, and)Tj +/TT12 1 Tf +-37.6675 -1.2889 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( its body.)Tj +/TT12 1 Tf +-2.4004 -2.0667 TD +(OTHERS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0322 Tw +[( is an \(optional\) list of additional i.s. operators and operands which will be added)]TJ +-3.6006 -1.2889 TD +0.0444 Tw +(to the i.s. at the place where )Tj +/TT12 1 Tf +12.8326 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( appears. If )]TJ +/TT12 1 Tf +5.5977 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( is )]TJ +/TT8 1 Tf +1.3037 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT12 1 Tf +0.5444 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( is a new i.s.opr defined)]TJ +-29.2799 -1.2889 TD +0 Tw +(entirely by )Tj +/TT12 1 Tf +5.0088 0 TD +(OTHERS)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-8.6094 -2.0667 TD +0.1967 Tw +(In both )Tj +/TT12 1 Tf +3.8196 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1967 Tw +[( and )]TJ +/TT12 1 Tf +2.5862 0 TD +0 Tw +(OTHERS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1967 Tw +(, the atom )Tj +/TT8 1 Tf +5.2321 0 TD +0 Tw +($$VAL)Tj +/TT6 1 Tf +3.0005 0 TD +0.1967 Tw +[( can be used to reference the value to be)]TJ +-20.6394 -1.2889 TD +0.2378 Tw +(returned by the i.s., )Tj +/TT8 1 Tf +9.7827 0 TD +0 Tw +(I.V)Tj +/TT6 1 Tf +1.8003 0 TD +0.2378 Tw +(. to reference the current i.v., and )Tj +/TT8 1 Tf +16.5116 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.2378 Tw +[( to reference )]TJ +/TT12 1 Tf +6.4003 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(s)Tj +-39.2957 -1.2889 TD +0.0633 Tw +[(operand. In other words, the current i.v. will be substituted for all instances of )]TJ +/TT8 1 Tf +35.93 0 TD +0 Tw +(I.V)Tj +/TT6 1 Tf +1.8003 0 TD +0.0633 Tw +(. and)Tj +/TT12 1 Tf +-37.7303 -1.2889 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.3022 Tw +(s operand will be substituted for all instances of )Tj +/TT8 1 Tf +24.3777 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.3022 Tw +[( throughout )]TJ +/TT12 1 Tf +6.1699 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.3022 Tw +[( and)]TJ +/TT12 1 Tf +-37.7488 -1.2889 TD +0 Tw +(OTHERS)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-3.6006 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.0766 0 TD +(EVALFLG)Tj +/TT6 1 Tf +4.2007 0 TD +0.1567 Tw +[( is )]TJ +/TT8 1 Tf +1.5282 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.6567 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1567 Tw +[( and )]TJ +/TT12 1 Tf +2.5062 0 TD +0 Tw +(OTHERS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1567 Tw +[( are evaluated at translation time, and their values)]TJ +-16.5694 -1.2889 TD +0.1489 Tw +[(used as described above. A dummy variable for use in translation that does not clash)]TJ +0 -1.2222 TD +0.19 Tw +(with a dummy variable already used by some other i.s. operators can be obtained by)Tj +T* +0 Tw +(calling )Tj +/TT8 1 Tf +3.3973 0 TD +(\(GETDUMMYVAR\))Tj +/TT6 1 Tf +7.8013 0 TD +(. )Tj +/TT8 1 Tf +0.6922 0 TD +0.4611 Tw +(\(GETDUMMYVAR T\))Tj +/TT6 1 Tf +9.4626 0 TD +0.1922 Tw +[( will return a dummy variable and also)]TJ +-21.3534 -1.2889 TD +0 Tw +(insure that it is bound as a )Tj +/TT8 1 Tf +11.9092 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( variable in the translation.)Tj +-14.3096 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.4255 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.5056 Tw +[( was previously an i.s.opr and is being redefined, the message )]TJ +/TT8 1 Tf +33.1695 0 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(NAME)Tj +/TT8 1 Tf +-37.5955 -1.2889 TD +(REDEFINED\))Tj +/TT6 1 Tf +6.001 0 TD +0.1967 Tw +[( will be printed \(unless )]TJ +/TT8 1 Tf +11.3935 0 TD +0 Tw +(DFNFLG=T)Tj +/TT6 1 Tf +4.8008 0 TD +0.1967 Tw +(\), and all expressions using the i.s.opr)Tj +/TT12 1 Tf +-22.1952 -1.2889 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +( that have been translated will have their translations discarded.)Tj +-2.4004 -2.0667 TD +0.0033 Tw +(The following are some examples of how )Tj +/TT8 1 Tf +18.4364 0 TD +0 Tw +(I.S.OPR)Tj +/TT6 1 Tf +4.2007 0 TD +0.0001 Tc +0.0032 Tw +( could be called to define some existing)Tj +-22.6371 -1.2889 TD +0 Tc +0 Tw +(i.s.oprs, and create some new ones:)Tj +/TT8 1 Tf +5.1333 -2.1489 TD +[(COLLECT)-1332.6(\(I.S.OPR COLLECT)]TJ +6.8667 -1 TD +(\(SETQ $$VAL \(NCONC1 $$VAL BODY\)\)\))Tj +-4.4667 -1.7778 TD +[(SUM)-1333(\(I.S.OPR SUM)]TJ +4.4667 -1 TD +(\(SETQ $$VAL_\(PLUS $$VAL BODY\))Tj +2 -1 TD +(\(FIRST \(SETQ $$VAL0\)\))Tj +-7.6667 -1.7778 TD +[(NEVER)-1332.8(\(I.S.OPR NEVER)]TJ +5.6667 -1 TD +(\(if BODY then)Tj +2 -1 TD +(\(SETQ $$VAL NIL\) \(GO $$OUT\)\))Tj +/TT6 1 Tf +-3.3333 -1.8444 TD +0.0744 Tw +(Note: )Tj +/TT8 1 Tf +3.081 0 TD +0.1789 Tw +(\(if BODY then \(RETURN NIL\)\))Tj +/TT6 1 Tf +16.9182 0 TD +0.0744 Tw +[( would exit from the)]TJ +-19.9992 -1.2889 TD +0.0011 Tw +(i.s. immediately and therefore not execute the operations specified)Tj +0 -1.2222 TD +0 Tw +(via a )Tj +/TT8 1 Tf +2.356 0 TD +(FINALLY)Tj +/TT6 1 Tf +4.2007 0 TD +( \(if any\).)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT16 17 0 R +/TT18 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +66 0 obj +<< +/Length 5504 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-17)Tj +/TT14 1 Tf +10 0 0 10 280.63 612 Tm +(CONDITIONALS AND ITERATIVE STATEMENTS)Tj +/TT8 1 Tf +9 0 0 9 172.2 570.14 Tm +[(THEREIS)-1332.6(\(I.S.OPR THEREIS)]TJ +6.8667 -1 TD +(\(if BODY then)Tj +2 -1 TD +(\(SETQ $$VAL I.V.\) \(GO $$OUT\)\)\))Tj +-9.4667 -1.8444 TD +(RCOLLECT)Tj +/TT6 1 Tf +6.1333 0 TD +0.2411 Tw +(To define )Tj +/TT8 1 Tf +4.9158 0 TD +0 Tw +(RCOLLECT)Tj +/TT6 1 Tf +4.8008 0 TD +0.2411 Tw +(, a version of )Tj +/TT8 1 Tf +6.8751 0 TD +0 Tw +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +0.2411 Tw +[( which uses )]TJ +/TT8 1 Tf +6.1359 0 TD +0 Tw +(CONS)Tj +/TT6 1 Tf +-26.9283 -1.2889 TD +(instead of )Tj +/TT8 1 Tf +4.5918 0 TD +(NCONC1)Tj +/TT6 1 Tf +3.6006 0 TD +( and then reverses the list of values:)Tj +/TT8 1 Tf +-8.1924 -2 TD +(\(I.S.OPR RCOLLECT)Tj +-18.6667 -1 TD +[( )-17599.6(\(FINALLY \(RETURN)]TJ +22 -1 TD +(\(DREVERSE $$VAL\)\)\)])Tj +-9.4667 -1.9933 TD +(TCOLLECT)Tj +/TT6 1 Tf +6.1333 0 TD +(To define )Tj +/TT8 1 Tf +4.4336 0 TD +(TCOLLECT)Tj +/TT6 1 Tf +4.8008 0 TD +(, a version of )Tj +/TT8 1 Tf +5.9106 0 TD +(COLLECT)Tj +/TT6 1 Tf +4.2007 0 TD +( which uses )Tj +/TT8 1 Tf +5.4126 0 TD +(TCONC)Tj +/TT6 1 Tf +3.0005 0 TD +(:)Tj +/TT8 1 Tf +-27.7588 -2 TD +(\(I.S.OPR TCOLLECT)Tj +1.3333 -1 TD +(\(TCONC $$VAL BODY\))Tj +2 -1 TD +(\(FIRST \(SETQ $$VAL \(CONS\)\))Tj +2 -1 TD +(FINALLY \(RETURN)Tj +2 -1 TD +(\(CAR $$VAL\)\)\)])Tj +-12.8667 -1.7778 TD +[(PRODUCT)-1332.6(\(I.S.OPR PRODUCT)]TJ +6.8667 -1 TD +(\(SETQ $$VAL $$VAL*BODY\))Tj +-20 -1 TD +[( )-19599.6(\(FIRST \($$VAL 1\)\)])]TJ +14.9333 -1.8444 TD +(UPTO)Tj +/TT6 1 Tf +3.7333 0 TD +0.0467 Tw +(To define )Tj +/TT8 1 Tf +4.5269 0 TD +0 Tw +(UPTO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +(, a version of )Tj +/TT8 1 Tf +6.0973 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0467 Tw +[( whose operand is evaluated only)]TJ +-14.2248 -1.2889 TD +0 Tw +(once:)Tj +/TT8 1 Tf +0 -1.9333 TD +(\(I.S.OPR UPTO)Tj +1.3333 -1 TD +(NIL)Tj +T* +(\(BIND $$FOO)Tj +/TT19 1 Tf +7.2012 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(BODY TO $$FOO\)])Tj +-12.0547 -1.9933 TD +(TO)Tj +/TT6 1 Tf +2.5333 0 TD +0.4633 Tw +(To redefine )Tj +/TT8 1 Tf +6.2343 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.4633 Tw +[( so that instead of recomputing )]TJ +/TT12 1 Tf +16.782 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.4633 Tw +[( each)]TJ +-26.6168 -1.2889 TD +0.0867 Tw +(iteration, a variable is bound to the value of )Tj +/TT12 1 Tf +20.2766 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +(, and then that)Tj +-22.677 -1.2889 TD +0 Tw +(variable is used:)Tj +/TT8 1 Tf +0 -1.9333 TD +(\(I.S.OPR TO)Tj +0 -1.2222 TD +( NIL)Tj +-18.6667 -1 TD +[( )-19399.9(\(BIND $$END FIRST)]TJ +22 -1 TD +(\(SETQ $$END BODY\))Tj +2 -1 TD +(ORIGINALTO $$END\)])Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +0.0922 Tw +(Note the use of )Tj +/TT8 1 Tf +7.323 0 TD +0 Tw +(ORIGINAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0922 Tw +[( to redefine )]TJ +/TT8 1 Tf +5.5477 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0922 Tw +[( in terms of its original)]TJ +-18.8716 -1.2889 TD +0.1667 Tw +(definition. )Tj +/TT8 1 Tf +5.4154 0 TD +0 Tw +(ORIGINAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.1667 Tw +[( is intended for use in redefining built-in)]TJ +-10.2162 -1.2889 TD +0.05 Tw +(operators, since their definitions are not accessible, and hence not)Tj +0 -1.2222 TD +0.0422 Tw +[(directly modifiable. Thus if the operator had been defined by the)]TJ +T* +0.3989 Tw +(user via )Tj +/TT8 1 Tf +4.5546 0 TD +0 Tw +(I.S.OPR)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.8989 0 TD +(ORIGINAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.3989 Tw +[( would not obtain its original)]TJ +-14.455 -1.2889 TD +0.0178 Tw +[(definition. In this case, one presumably would simply modify the)]TJ +0 -1.2222 TD +0 Tw +(i.s.opr definition.)Tj +/TT8 1 Tf +-16 -2 TD +(I.S.OPR)Tj +/TT6 1 Tf +4.2007 0 TD +0.0711 Tw +[( can also be used to define synonyms for already defined i.s. operators by calling )]TJ +/TT8 1 Tf +36.9348 0 TD +0 Tw +(I.S.OPR)Tj +/TT6 1 Tf +-41.1355 -1.2889 TD +(with )Tj +/TT12 1 Tf +2.3065 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0233 Tw +[( an atom, e.g., )]TJ +/TT8 1 Tf +6.4654 0 TD +0.0556 Tw +(\(I.S.OPR WHERE WHEN\))Tj +/TT6 1 Tf +13.3133 0 TD +0.0233 Tw +[( makes )]TJ +/TT8 1 Tf +3.3885 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0233 Tw +[( be the same as )]TJ +/TT8 1 Tf +6.9956 0 TD +0 Tw +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0233 Tw +[(. Similarly,)]TJ +-40.2705 -1.2889 TD +0 Tw +(following )Tj +/TT8 1 Tf +4.76 0 TD +0.5744 Tw +(\(I.S.OPR ISTHERE THEREIS\))Tj +/TT6 1 Tf +17.3515 0 TD +0.24 Tw +(, one can write )Tj +/TT8 1 Tf +7.668 0 TD +0.5744 Tw +(\(ISTHERE ATOM IN Y\))Tj +/TT6 1 Tf +13.1252 0 TD +0.24 Tw +(, and)Tj +-42.9047 -1.2889 TD +0 Tw +(following )Tj +/TT8 1 Tf +4.5267 0 TD +0.0156 Tw +(\(I.S.OPR FIND FOR\))Tj +/TT6 1 Tf +12.0331 0 TD +0.0067 Tw +[( and )]TJ +/TT8 1 Tf +2.2062 0 TD +0.0156 Tw +(\(I.S.OPR SUCHTHAT THEREIS\))Tj +/TT6 1 Tf +16.8338 0 TD +0.0067 Tw +(, one can write )Tj +/TT8 1 Tf +6.7347 0 TD +0 Tw +(\(find)Tj +-42.3345 -1.2889 TD +0.2989 Tw +(X in Y suchthat X member Z\))Tj +/TT6 1 Tf +17.996 0 TD +0.1244 Tw +[( . In the current system, )]TJ +/TT8 1 Tf +11.7432 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1244 Tw +[( is synonymous with )]TJ +/TT8 1 Tf +9.9475 0 TD +0 Tw +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +/TT8 1 Tf +-45.0875 -1.2889 TD +(SUCHTHAT)Tj +/TT6 1 Tf +4.8008 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(ISTHERE)Tj +/TT6 1 Tf +4.2007 0 TD +( with)Tj +/TT8 1 Tf +2.2832 0 TD +( THEREIS)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(FIND)Tj +/TT6 1 Tf +2.4004 0 TD +( with )Tj +/TT8 1 Tf +2.5332 0 TD +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(THRU)Tj +/TT6 1 Tf +2.4004 0 TD +( with )Tj +/TT8 1 Tf +2.5332 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 16 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +69 0 obj +<< +/Length 2004 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-18)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +(If )Tj +/TT12 1 Tf +1.1033 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1833 Tw +[( is the atom )]TJ +/TT8 1 Tf +6.0903 0 TD +0 Tw +(MODIFIER)Tj +/TT6 1 Tf +4.8008 0 TD +0.1833 Tw +(, then )Tj +/TT12 1 Tf +3.0859 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1833 Tw +[( is defined as an i.s.opr which can immediately follow)]TJ +-19.881 -1.2889 TD +0.1755 Tw +(another i.s. operator \(i.e., an error will not be generated, as described previously\). )Tj +/TT12 1 Tf +38.9109 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1756 Tw +[( will not)]TJ +-41.3113 -1.2889 TD +0.0689 Tw +(terminate the scope of the previous operator, and will be stripped off when )Tj +/TT8 1 Tf +34.3448 0 TD +0 Tw +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +0.0689 Tw +[( is called on its)]TJ +-38.5455 -1.2889 TD +0.0389 Tw +(operand. )Tj +/TT8 1 Tf +4.5416 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0389 Tw +[( is an example of a )]TJ +/TT8 1 Tf +8.6581 0 TD +0 Tw +(MODIFIER)Tj +/TT6 1 Tf +4.8008 0 TD +0.0389 Tw +[( type of operator. The )]TJ +/TT8 1 Tf +10.2866 0 TD +0 Tw +(MODIFIER)Tj +/TT6 1 Tf +4.8008 0 TD +0.0389 Tw +[( feature allows the user)]TJ +-34.8882 -1.2889 TD +0.1678 Tw +(to define i.s. operators similar to )Tj +/TT8 1 Tf +15.5272 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1678 Tw +(, for use in conjunction with some other user defined i.s.opr)Tj +-17.3275 -1.2889 TD +0 Tw +(which will produce the appropriate translation.)Tj +0 -2 TD +0.0556 Tw +(The file package command )Tj +/TT8 1 Tf +12.3746 0 TD +0 Tw +(I.S.OPRS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0556 Tw +[( \(Chapter 17\) will dump the definition of i.s.oprs. )]TJ +/TT8 1 Tf +22.7475 0 TD +0 Tw +(\(I.S.OPRS)Tj +-39.9228 -1.2889 TD +0.3433 Tw +(PRODUCT UPTO\))Tj +/TT6 1 Tf +8.1446 0 TD +0.1433 Tw +[( as a file package command will print suitable expressions so that these iterative)]TJ +-8.1446 -1.2889 TD +0 Tw +(statement operators will be \(re\)defined when the file is loaded.)Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +72 0 obj +<< +/Length 70 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-19)Tj +ET +endstream +endobj +73 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +75 0 obj +<< +/Length 203 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(9-20)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +76 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +77 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +78 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +79 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +81 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +82 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +84 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +85 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +86 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBFCPD+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 87 0 R +>> +endobj +87 0 obj +<< +/Filter /FlateDecode +/Length 20018 +/Length1 39356 +>> +stream +HW}tovgvfwv9ʇp֊P%S8-fwfGf?%Z%%PWM1҈ҔjJiJ)HIClQ +PLc ovvSy{}3omxsB#w ȝ;ohQ`r [Q`]Y|/714cEb9QKBH˽olx|+CVRNuPS*;6<0vg> G:wI%% *X܁rMkMOEd\<*QV "@rqcTAw}n.;:_ + +uq=80g@mʿg-Y<8 +qU +q:WA?'s? 8f5$&98`,&Lh9p4d%$Q:6C5F\hp4Cx\3LRԪ%i7k$^Yw; +| :"9s).^Q@ &s8Nq0 ;` 4@q*0S0q~X ~n9d9B!%!CARij@Om0R0&ӑ<AB a-"~ :H$އb CVxJ0? Džlao%9{d0:p-*Wo%'a5߀G*OR1%J܎8W$% +eڼͫYN +A8_ >.tUA3#<]$OI >!c~{b7NςrX11pt89ȗM.aM&ō D-de,l9Tҍc +VD1 hDNH21釩ׂ3dLLpgayp_IH 0@*11dbH?JHxzdz_I$fo:ғUBfd7SO4 _&37: Z}4|/f/r\+$6;HZ~$}RY)Dcf~`bl\bRh2m\n +Wڸ6kl\kS6>mc?qXg66l|Sz'⌸jMF O(F1+SE&ѐU͊!t5sg@K7?_/F\ җ%EcnL552鲚fU<>*%ʣ[ -)h #@1nٵU$4SkWLg6*6OmP-B Mv!.P"m Ń.P4 ?x8Α$;Di*2kM)[$~/]RU)Ck̄LpFkI,[{]BHlj0>wvo-lpW{G;Yb;=ޕqyUQOXj]B&k=aaXOgYU:NVoqu,<8\,J೗ҙ{K(0S榁gP@AۀS]zD,YsWAorm2cgX^Jv[mcxg6b齊O*\=ˣ5x"csZs:m8Cv]-= Pa@?[Cu8vU|-m${&`?ԗ lǟŹgBV8Np-vH§ֵ@CRr DB 5I*kU NG 0-d+hԡۚ ﹳMRDHHh<~ٜ3.\0YXJwX e^& LH}2*$u֑1b{wkY n%i0˰Z[-d4 ~RlB;~/1 sۃ^@F%HV:# )p)8Nho e҄ti05`c6V`~&/茍!Fz|{e.)_L3Bw,v!dm[YFF>.UFzB?.wUxϝj8Ԩ1Ӫ'#mtȶ/z"2ָ! +" Qg 9ke\VÚ.59=څrWJgi*:k}A{jI<9>S_ʒ P'Lgw<9'f72*I@3G5;$\J0ϾحːQ4UxNc0^1X*!qnD#o0Z#I 2ubQ "!8 3c yO[yK%Z2jV{<-;qAzTtM.,\:D8UAY)Q y{(]C_;w 5棾͏K%B 󧦶_"c%*u}Ag}>ɘ9k7=Rzv63zZ|Eۖ=V:q+勁xHٳ0[g˯~{eUM=Q_pAu ֒AiuSZ>ؒ\׵.3BXה˱"\{ŲνQb-7ٍ In'F9CHMOp +:D]#ʻ=(0tssѨ3`T$#baSiF[?-HƳ-VGs2)m|ذ,EAJ1 irMFbTNu.mÝа6#"ѶÕwv'0s<&$ _3q OX wJXu +a4A+^ SpeAb!'?$SȣO2TgJ2HJZNG&ɟI9F>&I/@.?P Q'ͥn:>D*-<4KA}/:n6;}vO4,}=d6MdSYI-e/լZX{IvEEv pE>>O?14_ʟ/zox1~O^e:4Qٔa$@ņEԢG3az 5✓;\~UfBȶli1i +c`nDS\B$CI`Lѭ +e1α6b+L`#nn/mHws 2Fۖ7v[Wu;%1E.lY喉UJ_h֙a9˼bjI%$)5b I,/=dP'~,MEhǧf{lx )qᇑY`XjC+\hkY.Zf.ӭY)6(z,H9el߹d`EadjDj50K%nmS UR.!/ qƜә KKmg'tX00,( {JMqCUӻ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*zh⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^)>?t1;ֱiɑPE$ n-ȼH !6#SّٜGw9iU?8*M:k CK]\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` )s]Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5/O`yY@UY-РlKI:96֩%&De1#{imcEGAdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLZc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\+~[S1?7ꧾuܩE^/5IA# +hО%-e Oo_0hc 2~=ytLW,Z1ְZR+Ʈ17f<6cY1fjh/H2VQOhX,OtW"Ah۳\,jxf{[ + &gi Ƽe9,bXxX>M4d,<Ɵ$+j +#ǺG+ԍLοAXO-f9ζnf,,C-ݖΗ^צG9 +і[:?{YPJߔ?^KCGͷܠ0A橥/Kw=_B Zb衅KUDww+Xɪe)MXf_+PxcE-#iZ 4=t@!/Q8i5,\}܀E"/zաzԄv4hEUt lǥx ^܀) ܅{0Sx 6N:^$Ed%YED"}U1ROH i'ϐ9@FHLSM;$wrd"n-k=}!n13WͽǥE{Eu]sܷ )ef.HZT6 (DhjgdL'QVFQ@%֟V:hgĤ-љLkg@[cҎ;QƟs/ h:=?|ߏ]adUNuy+VS 〫sXGEҐ5Тl2 [*y5( +0m?{#8:Nh"ub*Q +1Q'6NGNP-;XZVj%^TqJ &. D8K(XՖ$24)X ckUCށYXv?lȦG 5AhcΥ ql3tؘ޸axʿ] YKCő4-izA GSF<6,4aVPj<ɭo8s:ZN/j,cIrKA@z5}g;ӡ.~T;B$a kHu_烢-LmIo+7%WAGb˻r{;"Qc<&=Yfzk +_a!N%u > ]-kw$4hH[uV"9>a*47JC/") I⟯gE^pwi.JC% `_ԒT T/@$KWO̺*S֝8XHd'ϧeug27;r~V*kX P Ir#֮;lP}Q.ccm޼<(@${94;=`gsFT]IO P o%0&H=Vx"sIz`,O /fH*?wUISRo/0Džu Ố +QM,ȅȪx, *a13XU% 7`32txQ8}a}×pxovqd22\k.y, ?!U%RC^%kIyDym%IEȻ#/<'7L$7A2jy .dtJ')4nt]MVچnr #=Jѳ ($)EIOJR`f*ji9:)"5Iڤ;% K;' OI7cY +s3/&i,e~F}@F\J, !/&T›0_ o78TcBe + 3/r`0dH +yW>a~! ۼ*0Q1p)mPds"E6 yfI&3,sǂ{xg\X$aD} +kwyBh0!Ye\Q.ʸy_ޣm/"i_YJTTʽҪ&6|ʪ'I/7J Duoוl?I1ުȪ5{lՖnV(X|bcmaO+^%=y~vPa4_3'cWr YٍwˍWSkl%͓)STPv|#M=Y}p~܀vk FK"^tϕK{UDrp!\p'͆D[n8j[oݧ[[  ~| ;pWm}].j2VAj)]q~nw}!S؝;A +U ;J"{ LG)$> +M*&Ofٴ $v&Ҭbh&14v3]ZtjoޑSv}QoOص=+D#>lwf'fO+.XaOI@PKB1LC)2Sp7"X rXzXৰ8 +ϣ:*3pDM>$!\Eɵ&*"7Nn#d&Bu|Xd YA'Mmv="(=5=JQRwc$FU!Ơ8ohu{kݖ WGE¨Bqsg{Q%(RZgGTJJh#XzV} F!4eDfyULT\"n↙ .ڑ +C[dPI$fx у`*؁kq&.hg3C%)A놲>֢Tv$4,j`$#ACυ| b?fA'XHoE,yƈPXhFϓ(6_N}b^y˛$Yc& XPR7d~ɇʐ/E iFjl|L*^bkG 8Jב{)۝bp/ HcwX(΢f~_pnFDGs}Z :ߡMH +JIeB9w`+0g L < +=,Y Y٪%JG&t)  2԰-|C v:s{y:"۠Їud}=񯙭xRdNLr/ 4,20dpɲF}OaT!?K0K!H >yZ|E(9ңg0l^*@ܚ=T2tKhfs=`a"4 pvL#.:-O (X ٌ[d6}aw m49l"rkb`mvˆAoi-Q*x% u  TE2QTGSUl,>"OkR. #-T; " n"Y׃¶\+Lę#X.Iq*=$d`9\2q="Xpd1;Н[c\ņA$/:؂FW'G8{ImeJdSQC͠ẩd>ZeY_lGovts# Q"#%qTvCˆ< RIK_0|!͉ !륾V2if}8cPC*E7|ǵ ${۝}Aۡ,8hZl ZdZdO}lj- Z<@UZ|-̢&-*&a׽j5sR}\I`c٥ʼnftg̫‡oMqe␥wcB ֬u=5Ƙע >Y6ޝRrT9UpdqJvG,Ȉş%ȼ~ś-;zR" ZxTQgЂM -5uf -te6xx]yz,1tJǬRBcl[Vά5&ހ^]AN-o]3qnu-]X,h9\.lwY8B{B֝^QYOFH/ZE/J. Š?瑅di +)y5kɹNPl \ҢITf1h->.]F/Wyc,c'j`-ʴ$-pEg@]-0i?[ dgarbչY- +pLxQ6qPZDuֆ-(Jh!Yi"Y c]qjϿ!I|HM= -V>1~ @ 7iN0N?^x21ّ'E0hgЂʛ]Yx$ڥ8h1YUYwJ VyͰtlI JgLU+[z87d،b̩kkܕ'ydtGe:+DQ`F#Z0nG؅;G +'Z̹گ›)8\R9 -|Y1b -p?&|FZD5ojh6 i1,~tj'G쫴Xf~WeޅcF²& 5H13]Z:~dk2V Cb,ELa nd[RlaM-XK"3WN닲{_zdayecE{3?F {8dI<οƦMz# RGԟͥ_͗\nV#N,e݉^pS%On|c +$ \֝<;l.hOZhW] /쐴HF%i!ZbQxvˆ75585iZn:; mh~D.7R=~DLnC] -p:T5|O lm>FOƋ%UmQǏԿ+疻{i;!>\;;//-l%ʖF,طPWnN=ZvڎqƝ\`79'"-CWm4wm6`aY>[XJ_\}[9Wmh|Ԧ񇾅wHp?1T7:ׇZQ>Y(Ңb5[7A Eȥ!~xo^kO{??,‰ZhbiӜh;^6ۉibۇp[p<9e/%  W!d|d#iMr| e"-yw-PƔq3 ה S{*?U~jwvE1_(TS- .F"]cBD +k<450OkGqTԪ1&>cm|cE;?#j<;;?L$^3Y +IJhbn36-dl5[6}.?xw@x|&y3w(?ǿWm)\)iUzF&)RHj~'m>H2r&gy\./_˭O|SaJOLV^Vf)s*e{rV\rITFդV5KV 5S"vݑa$IATRR(VP,.UU \AD`5H=iOG(]j2"FUvF5S+?BdP@&30p/b*# FHH1LawEc$ԃQn1U1EBד!\ +'g>$#3sQh"t0F u +qB:EXN?#:b_< (n\B=Xz (:=EO5etݾoE^H{aV(֭]o஢u`] ,{ulcUu֎{f70*WHr7,ؘRd(q\Ré9h}iCI}~>e_2-%>xbY~uiϽͶ+c=1Y6ɦ'd/{ը0ӅOWqy)#aa4eW +H_YvVBQUt}(ytokNQǴ+уprTBGUb3'B]ki=z(dx75so>7b]p1uU˲ +S֋eLH<Ta ~J B~-D[t;{<3㈸>_ueA~C^IbuYhޢ6kՉUޚmP~EG#|Y}Ɩ3c1>3|@JTq|հhB}dw֮ݬn@՗O7~0/o?xh>0M:KղIlcX+7+;ߠ5}2ܮ%L Θ&Sf6D"ohfے=G͍Q~FCap/#ߕ)s}I?aǾ#uʇ{?-XP! w@?C' !@>[yx /Bf^5XUP K1Z -h?@+f`;`7p 3p.:CBYgD4MHDv 9N>!g^"W NJxS3O`LSi:B3ѱ3hJ;y?Хt]EY~\0=J?g"Lѯ NoN`11CY8晑,b}X,cϒؓ?{ +ie3;HE`TȒ( %ŨĘ^J 2]DM>.S)&WKX𠅌UNx~yJ'!{Q]H1>4~b$TeJ降3b#.SpaW4 + {uA]+hRKA/̑fIAb:s dIB(qܿR `Sdت}4)sj]TkfT48|?p8yI}},I񤄳RMt85?QrA9vwbUP{H?{,uI'gM.Bjմv)F)Z5<ߙҼ7ՆkӦq`%^8X8->+n~z?\u2:D0H9>=gb--ǷmZ\. +;R|Λs9<+./8XޮVzcGm lAt,)O<]I +A%tI6Z\葚:Ԙp+SC^,>h |!pKnJ9]\0NZP5?ӑB.@@GE3` r>ɖs_X /,ź^;$s_H'.>8?'ir_si5>5./cs6+@ą37(8s4d,*vGx֋n2EjKPIykZjS0fh"A ]KEH@4cu=~8=I;aѦ 5‰o1VͰ$ Z TEvzt櫭GgOs%˨Çii%1HԆĶ c F`zOnܤ*qBJ2Od"`/qo (`bK%1]$syٙhV.9,#Rזaq5PAKO>f-(e=F6ȱ՗ɱ13u;W6^T] GG|z*w):lOeͳ8ޘZ.HV@X$}4]! KM JM ,a02-sLt]nMjkT)peɤձ9̪Q86v{zUE2W wKm7vMj5os>&ue;xyԘɕ_$-k.-&xz]oԽoeEu 5{6g{oe7&:㦥{gQs yʧv%o:a ̚q޷boآ֟:5=3zgc'o^b ;_?nq;osgU3->p1u䑉[juiXy{o<ʰufEa<-۳+9w\.Vݿ``߇eG .puDidˇc6] jqZs7|*~ ۔9\~PIhb#c2a:mE\BqI>1$)Kb;.3д0)bROV$F^NqVKLHL~ "}[Ѫqg4RQQk(iCdYhU^VIʠ{y9Lz{GF*W|+vmZuYAZDUaBFi%['d33/1|H> Ȼl$Eܐߋo-ɪ|O:yJ^!/o?oȯstAor_Qd\o9IYGZKGZwʇCOVJBJ4UіkGFr){Xŕ,XʤZT0R~ԗH?sY jX+VIaC1Z$ѣoM[v4zemA§y';O_e 1oc[˗iiUf ?š!kobo)@nWuԬ%װմ\>WҺ;Y,G2r)}% +ƖCbru,B`UYOkY n 8l,ٴdK ,Y2hQA!i xk9_О}Hoq{'#U|WjPLzwRn+b#8Gޚ8Û6gF&Bju]Դ'ۑfҎ%mHFQ:Ɩ-+fmZ_g+"<5xL(#)i~O~n.u+pFl8 慎X,R1&mɌEfz3 onz:":.f,ҹrWvI7Ɍ뉒^Hfl(dE$H IACxGm| w l$3C8ۊь&j\Bf]$e}#?'e>Ѱ-V/FƠKߺ u/㙺3u<|<<Ҝz4_kYg|oi)M-C;T^'IvF7H)B7ի,hbqrXOS]KOܤM-I;Ӹn^LLӨjo8AGjܵhB=&OaVY;[Vyx{Jʌ_sCqg4214ٳ!MƗ/O,e->׌v )Yb$ _&T?iCfzkoaM +endstream +endobj +88 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +89 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 88 0 R +>> +endobj +32 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 89 0 R +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 77 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 +0 722 0 722 722 667 611 778 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 611 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 78 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 0 0 0 0 0 0 333 333 0 606 250 333 250 606 +500 500 500 500 500 500 500 500 500 0 250 250 0 0 0 444 +0 778 611 709 0 611 556 0 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 0 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 79 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 147 +/Widths [600 0 600 0 600 0 0 0 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 0 600 600 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 80 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 600 0 600 0 600 0 +0 600 600 0 0 0 0 0 0 0 600 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 81 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 105 +/Widths [600 0 0 0 0 0 0 0 0 0 0 600 0 0 600 0 +0 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 0 600 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 82 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 86 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 83 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 556 +0 0 0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 84 0 R +>> +endobj +21 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 0 500 278 0 0 278 778 556 444 +500 0 389 389 333 556 500 722 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 85 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBFCPD+Symbol +/Encoding /Identity-H +/DescendantFonts [ 90 0 R ] +/ToUnicode 91 0 R +>> +endobj +90 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBFCPD+Symbol +/FontDescriptor 86 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +91 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPn0 [dld `xI} v+)}$Nс$x᎔!A~7-FYl88Lܺ5Q.SıCU yI)/]W'[dGCOB9_"(k y~CC% k_lA4 TJU$ivYT-g^izj$[pZq`j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 73 0 R +/Contents 72 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 76 0 R +/Contents 75 0 R +>> +endobj +92 0 obj +<< +/S /D +>> +endobj +93 0 obj +<< +/Nums [0 92 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 18 0 R 23 0 R 26 0 R 29 0 R 33 0 R 36 0 R 39 0 R 42 0 R] +/Count 10 +/Parent 48 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [45 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R 74 0 R] +/Count 10 +/Parent 48 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [11 0 R 49 0 R ] +/Count 20 +/MediaBox [0 0 612 792] +>> +endobj +94 0 obj +<< +/CreationDate (D:20210202102643-06'00') +/ModDate (D:20210202102643-06'00') +/Producer (Apple pstopdf) +>> +endobj +95 0 obj +<< +/Type /Catalog +/Pages 48 0 R +/PageLabels 93 0 R +>> +endobj +xref +0 96 +0000000000 65535 f +0000165848 00000 n +0000000016 00000 n +0000006580 00000 n +0000161653 00000 n +0000161864 00000 n +0000162302 00000 n +0000162858 00000 n +0000163419 00000 n +0000163764 00000 n +0000138643 00000 n +0000167593 00000 n +0000165929 00000 n +0000006733 00000 n +0000014785 00000 n +0000161300 00000 n +0000164144 00000 n +0000164455 00000 n +0000166013 00000 n +0000014976 00000 n +0000025662 00000 n +0000164809 00000 n +0000165211 00000 n +0000166097 00000 n +0000025879 00000 n +0000032465 00000 n +0000166181 00000 n +0000032633 00000 n +0000041792 00000 n +0000166265 00000 n +0000041983 00000 n +0000052453 00000 n +0000161477 00000 n +0000166349 00000 n +0000052655 00000 n +0000060971 00000 n +0000166433 00000 n +0000061188 00000 n +0000068482 00000 n +0000166517 00000 n +0000068697 00000 n +0000074981 00000 n +0000166601 00000 n +0000075209 00000 n +0000082150 00000 n +0000166685 00000 n +0000082367 00000 n +0000090918 00000 n +0000167868 00000 n +0000167730 00000 n +0000166769 00000 n +0000091098 00000 n +0000100583 00000 n +0000166853 00000 n +0000100776 00000 n +0000106847 00000 n +0000166937 00000 n +0000107040 00000 n +0000115141 00000 n +0000167021 00000 n +0000115334 00000 n +0000122554 00000 n +0000167105 00000 n +0000122710 00000 n +0000129930 00000 n +0000167189 00000 n +0000130134 00000 n +0000135691 00000 n +0000167273 00000 n +0000135848 00000 n +0000137905 00000 n +0000167357 00000 n +0000138049 00000 n +0000138170 00000 n +0000167441 00000 n +0000138267 00000 n +0000138522 00000 n +0000138784 00000 n +0000138981 00000 n +0000139187 00000 n +0000139387 00000 n +0000139578 00000 n +0000139780 00000 n +0000139981 00000 n +0000140176 00000 n +0000140381 00000 n +0000140584 00000 n +0000140774 00000 n +0000160882 00000 n +0000161092 00000 n +0000165354 00000 n +0000165557 00000 n +0000167525 00000 n +0000167553 00000 n +0000167960 00000 n +0000168083 00000 n +trailer +<< +/Size 96 +/Root 95 0 R +/Info 94 0 R +/ID [] +>> +startxref +168153 +%%EOF diff --git a/docs/medley-irm/10-FUNC-DEF.TEDIT b/docs/medley-irm/10-FUNC-DEF.TEDIT new file mode 100644 index 00000000..141f28e3 --- /dev/null +++ b/docs/medley-irm/10-FUNC-DEF.TEDIT @@ -0,0 +1,1177 @@ +INTERLISP-D REFERENCE MANUAL FUNCTION DEFINITION, MANIPULATION AND EVALUATION "10"FUNCTION DEFINITION, MANIPULATION AND EVALUATION 3 Medley is designed to help you define and debug functions. Developing an applications program with Medley involves defining a number of functions in terms of the system primitives and other user-defined functions. Once defined, your functions may be used exactly like Interlisp primitive functions, so the programming process can be viewed as extending the Interlisp language to include the required functionality. A function's definition specifies if the function has a fixed or variable number of arguments, whether these arguments are evaluated or not, the function argument names, and a series of forms which define the behavior of the function. For example: (LAMBDA (X Y) (PRINT X) (PRINT Y)) This function has two evaluated arguments, X and Y, and it will execute (PRINT X) and (PRINT Y) when evaluated. Other types of function definitions are described below. A function is defined by putting an expr definition in the function definition cell of a symbol. There are a number of functions for accessing and setting function definition cells, but one usually defines a function with DEFINEQ (see the Defining Functions section below). For example: (DEFINEQ (FOO (LAMBDA (X Y) (PRINT X) (PRINT Y))))(FOO) The expression above will define the function FOO to have the expr definition (LAMBDA (X Y) (PRINT X) (PRINT Y)). After being defined, this function may be evaluated just like any system function: (FOO 3 (IPLUS 3 4)) 3 7 7 Not all function definition cells contain expr definitions. The compiler (see the first page of Chapter 18) translates expr definitions into compiled code objects, which execute much faster. Interlisp provides a number of function type functions which determine how a given function is defined, the number and names of function arguments, etc. See the Function Type Functions section below. Usually, functions are evaluated automatically when they appear within another function or when typed into Interlisp. However, sometimes it is useful to envoke the Interlisp interpreter explicitly to apply a given functional argument to some data. There are a number of functions which will apply a given function repeatedly. For example, MAPCAR will apply a function (or an expr definition) to all of the elements of a list, and return the values returned by the function: (MAPCAR '(1 2 3 4 5) '(LAMBDA (X) (ITIMES X X)) (1 4 9 16 25) When using functional arguments, there are a number of problems which can arise, related to accessing free variables from within a function argument. Many times these problems can be solved using the function FUNCTION to create a FUNARG object. The macro facility provides another way of specifying the behavior of a function (see the Macros section below). Macros are very useful when developing code which should run very quickly, which should be compiled differently than when it is interpreted, or which should run differently in different implementations of Interlisp. Function Types 1 Interlisp functions are defined using list expressions called expr definitions. An expr definition is a list of the form (LAMBDA-WORD ARG-LIST FORM1 ... FORMN). LAMBDA-WORD determines whether the arguments to this function will be evaluated or not. ARG-LIST determines the number and names of arguments. FORM1 ... FORMN are a series of forms to be evaluated after the arguments are bound to the local variables in ARG-LIST. If LAMBDA-WORD is the symbol LAMBDA, then the arguments to the function are evaluated. If LAMBDA-WORD is the symbol NLAMBDA, then the arguments to the function are not evaluated. Functions which evaluate or don't evaluate their arguments are therefore known as lambda or nlambda functions, respectively. If ARG-LIST is NIL or a list of symbols, this indicates a function with a fixed number of arguments. Each symbol is the name of an argument for the function defined by this expression. The process of binding these symbols to the individual arguments is called spreading the arguments, and the function is called a spread function. If the argument list is any symbol other than NIL, this indicates a function with a variable number of arguments, known as a nospread function. If ARG-LIST is anything other than a symbol or a list of symbols, such as (LAMBDA "FOO" ...), attempting to use this expr definition will generate an Arg not symbol error. In addition, if NIL or T is used as an argument name, the error Attempt to bind NIL or T is generated. These two parameters (lambda/nlambda and spread/nospread) may be specified independently, so there are four nain function types, known as lambda-spread, nlanbda-spread, lanbda-nospread, and nlambda-nospread functions. Each one has a different form and is used for a different purpose. These four function types are described more fully below. For lambda-spread, lanbda-nospread, or nlambda-spread functions, there is an upper limit to the number of arguments that a function can have, based on the number of arguments that can be stored on the stack on any one function call. Currently, the limit is 80 arguments. If a function is called with more than that many arguments, the error Too many arguments occurs. However, nlambda-nospread functions can be called with an arbitrary number of arguments, since the arguments are not individually saved on the stack. Lambda-Spread Functions(LAMBDA-SPREAD% FUNCTIONS NIL Lambda-Spread% Functions NIL ("10") 2) Lambda-spread functions take a fixed number of evaluated arguments. This is the most common function type. A lambda-spread expr definition has the form: (LAMBDA (ARG1 ... ARGM) FORM1 ... FORMN) The argument list (ARG1 ... ARGM) is a list of symbols that gives the number and names of the formal arguments to the function. If the argument list is ( ) or NIL, this indicates that the function takes no arguments. When a lambda-spread function is applied to some arguments, the arguments are evaluated, and bound to the local variables ARG1 ... ARGM. Then, FORM1 ... FORMN are evaluated in order, and the value of the function is the value of FORMN. (DEFINEQ (FOO (LAMBDA (X Y) (LIST X Y)))) (FOO) (FOO 99 (PLUS 3 4)) (99 7) In the above example, the function FOO defined by (LAMBDA (X Y) (LIST X Y)) is applied to the arguments 99 and (PLUS 3 4). These arguments are evaluated (giving 99 and 7), the local variable X is bound to 99 and Y to 7, (LIST X Y) is evaluated, returning (99 7), and this is returned as the value of the function. A standard feature of the Interlisp system is that no error occurs if a spread function is called with too many or too few arguments. If a function is called with too many argumnents, the extra arguments are evaluated but ignored. If a function is called with too few arguments, the unsupplied ones will be delivered as NIL. In fact, a spread function cannot distinguish between being given NIL as an argument, and not being given that argument, e.g., (FOO) and (FOO NIL) are exactly the same for spread functions. If it is necessary to distinguish between these two cases, use an nlambda function and explicitly evaluate the arguments with the EVAL function. Nlambda-Spread Functions(NLAMBDA-SPREAD% FUNCTIONS NIL Nlambda-Spread% Functions NIL ("10") 3) Nlambda-spread functions take a fixed number of unevaluated arguments. An nlambda-spread expr definition has the form: (NLAMBDA (ARG1 ... ARGM) FORM1 ... FORMN) Nlambda-spread functions are evaluated similarly to lanbda-spread functions, except that the arguments are not evaluated before being bound to the variables ARG1 ... ARGM. (DEFINEQ (FOO (NLAMBDA (X Y) (LIST X Y)))) (FOO) (FOO 99 (PLUS 3 4)) (99 (PLUS 3 4)) In the above example, the function FOO defined by (NLAMBDA (X Y) (LIST X Y)) is applied to the arguments 99 and (PLUS 3 4). These arguments are unevaluated to X and Y. (LIST X Y) is evaluated, returning (99 (PLUS 3 4)), and this is returned as the value of the function. Functions can be defined so that all of their arguments are evaluated (lambda functions) or none are evaluated (nlambda functions). If it is desirable to write a function which only evaluates some of its arguments (e.g., SETQ), the functions should be defined as an nlambda, with some arguments explicitly evaluated using the function EVAL. If this is done, the user should put the symbol EVAL on the property list of the function under the property INFO. This informs various system packages, such as DWIM, CLISP, and Masterscope, that this function in fact does evaluate its arguments, even though it is an nlambda. Warning: A frequent problem that occurs when evaluating arguments to nlambda functions with EVAL is that the form being evaluated may reference variables that are not accessible within the nlambda function. This is usually not a problem when interpreting code, but when the code is compiled, the values of local variables may not be accessible on the stack (see Chapter 18). The system nlambda functions that evaluate their arguments (such as SETQ) are expanded in-line by the compiler, so this is not a problem. Using the macro facility is recommended in cases where it is necessary to evaluate some arguments to an nlambda function. Lambda-Nospread Functions(LAMBDA-NOSPREAD% FUNCTIONS NIL Lambda-Nospread% Functions NIL ("10") 3) Lambda-nospread functions take a variable number of evaluated arguments. A lambda-nospread expr definition has the form: (LAMBDA VAR FORM1 ... FORMN) VAR may be any symbol, except NIL and T. When a lambda-nospread function is applied to some arguments, each of these arguments is evaluated and the values stored on the stack. VAR is then bound to the number of arguments which have been evaluated. For example, if FOO is defined by (LAMBDA X ...), when (FOO A B C) is evaluated, A, B, and C are evaluated and X is bound to 3. VAR should never be reset The following functions are used for accessing the arguments of lambda-nospread functions. (ARG(ARG (Function) NIL NIL ("10") 4) VAR M) [NLambda Function] Returns the Mth argument for the lambda-nospread function whose argument list is VAR. VAR is the name of the atomic argument list to a lambda-nospread function, and is not evaluated. M is the number of the desired argument, and is evaluated. The value of ARG is undefined for M less than or equal to 0 or greater than the value of VAR. (SETARG(SETARG (Function) NIL NIL ("10") 4) VAR M X) [NLambda Function] Sets the Mth argument for the lambda-nospread function whose argument list is VAR to X. VAR is not evaluated; M and X are evaluated. M should be between 1 and the value of VAR. In the example below, the function FOO is defined to collect and return a list of all of the evaluated arguments it is given (the value of the for statement). (DEFINEQ (FOO (LAMBDA X (for ARGNUM from 1 to X collect (ARG X ARGNUM)] (FOO) (FOO 99 (PLUS 3 4)) (99 7) (FOO 99 (PLUS 3 4)(TIMES 3 4))) (99 7 12) NLambda-Nospread Functions(NLAMBDA-NOSPREAD% FUNCTIONS NIL NLambda-Nospread% Functions NIL ("10") 4) Nlambda-nospread functions take a variable number of unevaluated arguments. An nlambda-nospread expr definition has the form: (NLAMBDA VAR FORM1 ... FORMN) VAR may be any symbol, except NIL and T. Though similar in form to lambda-nospread expr definitions, an nlambda-nospread is evaluated quite differently. When an nlambda-nospread function is applied to some arguments, VAR is simply bound to a list of the unevaluated arguments. The user may pick apart this list, and evaluate different arguments. In the example below, FOO is defined to return the reverse of the list of arguments it is given (unevaluated): (DEFINEQ (FOO (NLAMBDA X (REVERSE X)))) (FOO) (FOO 99 (PLUS 3 4)) ((PLUS 3 4) 99) (FOO 99 (PLUS 3 4)(TIMES 3 4)) (TIMES 3 4)(PLUS 3 4) 99) The warning about evaluating arguments to nlambda functions also applies to nlambda-nospread function. Compiled Functions(COMPILED% FUNCTIONS NIL Compiled% Functions NIL ("10") 5) Functions defined by expr definitions can be compiled by the Interlisp compiler (see Chapter 18). The compiler produces compiled code objects (of data type CCODEP) which execute more quickly than the corresponding expr definition code. Functions defined by compiled code objects may have the same four types as expr definitions (lambda/nlambda, spread/nospread). Functions created by the compiler are referred to as compiled functions. Function Type Functions There are a variety of functions used for examining the type, argument list, etc. of functions. These functions may be given either a symbol (in which case they obtain the function definition from the definition cell), or a function definition itself. (FNTYP(FNTYP (Function) NIL NIL ("10") 5) FN) [Function] Returns NIL if FN is not a function definition or the name of a defined function. Otherwise, FNTYP returns one of the following symbols, depending on the type of function definition. EXPR Lambda-spread expr definition CEXPR Lambda-spread compiled definition FEXPR Nlambda-spread expr definition CFEXPR Nlambda-spread compiled definition EXPR* Lambda-nospread expr definition CEXPR* Lambda-nospread compiled definition FEXPR* Nlambda-nospread expr definition CFEXPR* Nlambda-nospread compiled definition FUNARG FNTYP returns the symbol FUNARG if FN is a FUNARG expression. EXP, FEXPR, EXPR*, and FEXPR* indicate that FN is defined by an expr definition. CEXPR, CFEXPR, CEXPR*, and CFEXPR* indicate that FN is defined by a compiled definition, as indicated by the prefix C. The suffix * indicates that FN has an indefinite number of arguments, i.e., is a nospread function. The prefix F indicates unevaluated arguments. Thus, for example, a CFEXPR* is a compiled nospread nlambda function. (EXPRP(EXPRP (Function) NIL NIL ("10") 5) FN) [Function] Returns T if (FNTYP FN) is EXPR, FEXPR, EXPR*, or FEXPR*; NIL otherwise. However, (EXPRP FN) is also true if FN is (has) a list definition, even if it does not begin with LAMBDA or NLAMBDA. In other words, EXPRP is not quite as selective as FNTYP. (CCODEP(CCODEP (Function) NIL NIL ("10") 5) FN) [Function] Returns T if (FNTYP FN) is either CEXPR, CFEXPR, CEXPR*, or CFEXPR*; NIL otherwise. (ARGTYPE(ARGTYPE (Function) NIL NIL ("10") 6) FN) [Function] FN is the name of a function or its definition. ARGTYPE returns 0, 1, 2, or 3, or NIL if FN is not a function. ARGTYPE corresponds to the rows of FNTYPs. The interpretation of this value is as follows: 0 Lambda-spread function (EXPR, CEXPR) 1 Nlambda-spread function (FEXPR, CFEXPR) 2 Lambda-nospread function (EXPR*, CEXPR*) 3 Nlambda-nospread function (FEXPR*, CFEXPR*) (NARGS(NARGS (Function) NIL NIL ("10") 6) FN) [Function] Returns the number of arguments of FN, or NIL if FN is not a function. If FN is a nospread function, the value of NARGS is 1. (ARGLIST(ARGLIST (Function) NIL NIL ("10") 6) FN) [Function] Returns the argument list for FN. Note that the argument list is a symbol for nospread functions. Since NIL is a possible value for ARGLIST, the error Args not available is generated if FN is not a function. If FN is a compiled function, the argument list is constructed, i.e., each call to ARGLIST requires making a new list. For functions defined by expr definitions, lists beginning with LAMBDA or NLAMBDA, the argument list is simply CADR of GETD. If FN has an expr definition, and CAR of the definition is not LAMBDA or NLAMBDA, ARGLIST will check to see if CAR of the definition is a member of LAMBDASPLST (see Chapter 20). If it is, ARGLIST presumes this is a function object the user is defining via DWIMUSERFORMS, and simply returns CADR of the definition as its argument list. Otherwise ARGLIST generates an error as described above. (SMARTARGLIST(SMARTARGLIST (Function) NIL NIL ("10") 6) FN EXPLAINFLG TAIL) [Function] A smart version of ARGLIST that tries various strategies to get the arglist of FN. First SMARTARGLIST checks the property list of FN under the property ARGNAMES. For spread functions, the argument list itself is stored. For nospread functions, the form is (NIL ARGLIST1 . ARGLIST2), where ARGLIST1 is the value SMARTARGLIST should return when EXPLAINFLG = T, and ARGLIST2 the value when EXPLAINFLG = NIL. For example, (GETPROP 'DEFINEQ 'ARGNAMES) = (NIL (X1 Xl ... XN) . X). This allows the user to specify special argument lists. Second, if FN is not defined as a function, SMARTARGLIST attempts spelling correction on FN by calling FNCHECK (see Chapter 20), passing TAIL to be used for the call to FIXSPELL. If unsuccessful, the FN Not a function error will be generated. Third, if FN is known to the file package (see Chapter 17) but not loaded in, SMARTARGLIST will obtain the arglist information from the file. Otherwise, SMARTARGLIST simply returns (ARGLIST FN). SMARTARGLIST is used by BREAK (see Chapter 15) and ADVISE with EXPLAINFLG = NIL for constructing equivalent expr definitions, and by the TTYIN in-line command ?= (see Chapter 26), with EXPLAINFLG = T. Defining Functions 1 Function definitions are stored in a function definition cell associated with each symbol. This cell is directly accessible via the two functions PUTD and GETD (see below), but it is usually easier to define functions with DEFINEQ: (DEFINEQ(DEFINEQ (Function) NIL NIL ("10") 7) X1 X2 ... XN) [NLambda NoSpread Function] DEFINEQ is the function normally used for defining functions. It takes an indefinite number of arguments which are not evaluated. Each Xi must be a list defining one function, of the form (NAME DEFINITION). For example: (DEFINEQ (DOUBLE (LAMBDA (X) (IPLUS X X)))) The above expression will define the function DOUBLE with the expr definition (LAMBDA (X) (IPLUS X X)). Xi may also have the form (NAME ARGS . DEF-BODY), in which case an appropriate lambda expr definition will be constructed. Therefore, the above expression is exactly the same as: (DEFINEQ (DOUBLE (X) (IPLUS X X))) Note that this alternate form can only be used for lambda functions. The first form must be used to define an nlambda function. DEFINEQ returns a list of the names of the functions defined. (DEFINE(DEFINE (Function) NIL NIL ("10") 7) X %) [Function] Lambda-spread version of DEFINEQ. Each element of the list X is itself a list either of the form (NAME DEFINITION) or (NAME ARGS . DEF-BODY). DEFINE will generate an error, Incorrect defining form on encountering an atom where a defining list is expected. DEFINE and DEFINEQ operate correctly if the function is already defined and BROKEN, ADVISED, or BROKEN-IN. For expressions involving type-in only, if the time stamp facility is enabled (see the Time Stamps section of Chapter 16), both DEFINE and DEFINEQ stamp the definition with your initials and date. UNSAFE.TO.MODIFY.FNS(UNSAFE.TO.MODIFY.FNS (Variable) NIL NIL ("10") 7) [Variable] Value is a list of functions that should not be redefined, because doing so may cause unusual bugs (or crash the system!). If you try to modify a function on this list (using DEFINEQ, TRACE, etc), the system prints Warning: XXX may be unsafe to modify -- continue? If you type Yes, the function is modified, otherwise an error occurs. This provides a measure of safety for novices who may accidently redefine important system functions. You can add your own functions onto this list. By convention, all functions starting with the character backslash (\) are system internal functions, which you should never redefine or modify. Backslash functions are not on UNSAFE.TO.MODIFY.FNS, so trying to redefine them will not cause a warning. DFNFLG(DFNFLG (Variable) NIL NIL ("10") 8) [Variable] DFNFLG is a global variable that affects the operation of DEFINEQ and DEFINE. If DFNFLG=NIL, an attempt to redefine a function FN will cause DEFINE to print the message (FN REDEFINED) and to save the old definition of FN using SAVEDEF (see the Functions for Manipulating Typed Definitions section of Chapter 17) before redefining it (except if the old and new definitions are EQUAL, in which case the effect is simply a no-op). If DFNFLG=T, the function is simply redefined. If DFNFLG=PROP or ALLPROP, the new definition is stored on the property list under the property EXPR. ALLPROP also affects the operation of RPAQQ and RPAQ (see the Functions Used Within Source Files section of Chapter 17). DFNFLG is initially NIL. DFNFLG is reset by LOAD (see the Loading Files section of Chapter 17) to enable various ways of handling the defining of functions and setting of variables when loading a file. For most applications, the user will not reset DFNFLG directly. Note: The compiler does not respect the value of DFNFLG when it redefines functions to their compiled definitions (see the first page of Chapter 18). Therefore, if you set DFNFLG to PROP to completely avoid inadvertantly redefining something in your running system, you must use compile mode F, not ST. Note that the functions SAVEDEF and UNSAVEDEF (see the Functions for Manipulating Typed Definitions section of Chapter 17) can be useful for saving and restoring function definitions from property lists. (GETD(GETD (Function) NIL NIL ("10") 8) FN) [Function] Returns the function definition of FN. Returns NIL if FN is not a symbol, or has no definition. GETD of a compiled function constructs a pointer to the definition, with the result that two successive calls do not necessarily produce EQ results. EQP or EQUAL must be used to compare compiled definitions. (PUTD(PUTD (Function) NIL NIL ("10") 8) FN DEF %) [Function] Puts DEF into FN's function cell, and returns DEF. Generates an error, Arg not symbol, if FN is not a symbol. Generates an error, Illegal arg, if DEF is a string, number, or a symbol other than NIL. (MOVD(MOVD (Function) NIL NIL ("10") 8) FROM TO COPYFLG %) [Function] Moves the definition of FROM to TO, i.e., redefines TO. If COPYFLG = T, a COPY of the definition of FROM is used. COPYFLG =T is only meaningful for expr definitions, although MOVD works for compiled functions as well. MOVD returns TO. COPYDEF (see the Functions for Manipulating Typed Definitions section of Chapter 17) is a higher-level function that not only moves expr definitions, but works also for variables, records, etc. (MOVD?(MOVD? (Function) NIL NIL ("10") 9) FROM TO COPYFLG %) [Function] If TO is not defined, same as (MOVD FROM TO COPYFLG). Otherwise, does nothing and returns NIL. Function Evaluation 1 Usually, function application is done automatically by the Interlisp interpreter. If a form is typed into Interlisp whose CAR is a function, this function is applied to the arguments in the CDR of the form. These arguments are evaluated or not, and bound to the funcion parameters, as determined by the type of the function, and the body of the function is evaluated. This sequence is repeated as each form in the body of the function is evaluated. There are some situations where it is necessary to explicitly call the evaluator, and Interlisp supplies a number of functions that will do this. These functions take functional arguments, which may either be symbols with function definitions, or expr definition forms such as (LAMBDA (X)...), or FUNARG expressions. (APPLY(APPLY (Function) NIL NIL ("10") 9) FN ARGLIST %) [Function] Applies the function FN to the arguments in the list ARGLIST, and returns its value. APPLY is a lambda function, so its arguments are evaluated, but the individual elements of ARGLIST are not evaluated. Therefore, lambda and nlambda functions are treated the same by APPLY%lambda functions take their arguments from ARGLIST without evaluating them. For example: (APPLY 'APPEND '((PLUS 1 2 3)(4 5 6))) (PLUS 1 2 3 4 5 6) Note that FN may explicitly evaluate one or more of its arguments itself. For example, the system function SETQ is an nlambda function that explicitly evaluates its second argument. Therefore, (APPLY 'SETQ '(FOO (ADD1 3)))will set FOO to 4, instead of setting it to the expression (ADD1 3). APPLY can be used for manipulating expr definitions. For example: (APPLY '(LAMBDA (X Y)(ITIMES X Y)) '(3 4))) 12 (APPLY*(APPLY* (Function) NIL NIL ("10") 9) FN ARG1 ARG2 ... ARGN ) [NoSpread Function] Nospread version of APPLY. Applies the function FN to the arguments ARG1 ARG2 ... ARGN. For example: (APPLY 'APPEND '(PLUS 1 2 3)(4 5 6)) (PLUS 1 2 3 4 5 6) (EVAL(EVAL (Function) NIL NIL ("10") 10) X%) [Function] EVAL evaluates the expression X and returns this value, i.e., EVAL provides a way of calling the Interlisp interpreter. Note that EVAL is itself a lambda function, so its argument is first evaluated, e.g.: (SETQ FOO 'ADD1 3))) (ADD1 3) (EVAL FOO) 4 (EVAL 'FOO) (ADD1 3) (QUOTE(QUOTE (Function) NIL NIL ("10") 10) X) [Nlambda NoSpread Function] QUOTE prevents its arguments from being evaluated. Its value is X itself, e.g., (QUOTE FOO) is FOO. Interlisp functions can either evaluate or not evaluate their arguments. QUOTE can be used in those cases where it is desirable to specify arguments unevaluated. The single-quote character (') is defined with a read macro so it returns the next expression, wrapped in a call to QUOTE (see Chapter 25). For example, 'FOO reads as (QUOTE FOO). This is the form used for examples in this manual. Since giving QUOTE more than one argument is almost always a parenthese error, and one that would otherewise go undetected, QUOTE itself generates an error in this case, Parenthesis error. (KWOTE(KWOTE (Function) NIL NIL ("10") 10) X) [Function] Value is an expression which, when evaluated, yields X. If X is NIL or a number, this is X itself. Otherwise (LIST (QUOTE QUOTE) X). For example: (KWOTE 5) => 5 (KWOTE (CONS 'A 'B)) => (QUOTE (A.B)) (NLAMBDA.ARGS(NLAMBDA.ARGS (Function) NIL NIL ("10") 10) X) [Function] This function interprets its argument as a list of unevaluated nlambda arguments. If any of the elements in this list are of the form (QUOTE...), the enclosing QUOTE is stripped off. Actually, NLAMBDA.ARGS stops processing the list after the first non-quoted argument. Therefore, whereas (NLAMBDA.ARGS '((QUOTE FOO) BAR)) -> (FOO BAR), (NLAMBDA.ARGS '(FOO (QUOTE BAR))) -> (FOO (QUOTE BAR)). NLAMBDA.ARGS is alled by a number of nlambda functions in the system, to interpret their arguments. For instance, the function BREAK calls NLAMBDA.ARGS so that (BREAK 'FOO) will break the function FOO, rather than the function QUOTE. (EVALA(EVALA (Function) NIL NIL ("10") 10) X A) [Function] Simulates association list variable lookup. X is a form, A is a list of the form: ((NAME1 . VAL1) (NAME2 . VAL2)... (NAMEN . VALN)) The variable names and values in A are spread on the stack, and then X is evaluated. Therefore, any variables appearing free in X that also appears as CAR of an element of A will be given the value on the CDR of that element. (DEFEVAL(DEFEVAL (Function) NIL NIL ("10") 11) TYPE FN) [Function] Specifies how a datum of a particular type is to be evaluated. Intended primarily for user-defined data types, but works for all data types except lists, literal atoms, and numbers. TYPE is a type name. FN is a function object, i.e., name of a function or a lambda expression. Whenever the interpreter encounters a datum of the indicated type, FN is applied to the datum and its value returned as the result of the evaluation. DEFEVAL returns the previous evaling function for this type. If FN = NIL, DEFEVAL returns the current evaling function without changing it. If FN = T, the evaling functions is set back to the system default (which for all data types except lists is to return the datum itself). COMPILETYPELST (see Chapter 18) permits the user to specify how a datum of a particular type is to be compiled. (EVALHOOK(EVALHOOK (Function) NIL NIL ("10") 11) FORM EVALHOOKFN) [Function] EVALHOOK evaluates the expression FORM, and returns its value. While evaluating FORM, the function EVAL behaves in a special way. Whenever a list other than FORM itself is to be evaluated, whether implicitly or via an explicit call to EVAL, EVALHOOKFN is invoked (it should be a function), with the form to be evaluated as its argument. EVALHOOKFN is then responsible for evaluating the form. Whatever is returned is assume to be the result of evaluating the form. During the execution of EVALHOOKFN, this special evaluation is turned off. (Note that EVALHOOK does not affect the evaluations of variables, only of lists). Here is an example of a simple tracing routine that uses the EVALHOOK feature: (DEFINEQ (PRINTHOOK (FORM) (printout T "eval: "FORM T) (EVALHOOK FORM (FUNCTION PRINTHOOK (PRINTHOOK) Using PRINTHOOK, one might see the following interaction: (EVALHOOK '(LIST (CONS 1 2)(CONS 3 4)) 'PRINTHOOK) eval: (CONS 1 2) eval: (CONS 3 4) ((1.2)(3.4)) Iterating and Mapping Functions 1 The functions below are used to evaluate a form or apply a function repeatedly. RPT, RPTQ, and FRPTQ evaluate an expression a specified number of time. MAP, MAPCAR, MAPLIST, etc., apply a given function repeatedly to different elements of a list, possibly constructing another list. These functions allow efficient iterative computations, but they are difficult to use. For programming iterative computations, it is usually better to use the CLISP Iterative Statement facility (see Chapter 9), which provides a more general and complete facility for expressing iterative statements. Whenever possible, CLISP transltes iterative statements into expressions using the functions below, so there is no efficiency loss. (RPT(RPT (Function) NIL NIL ("10") 12) N FORM) [Function] Evaluates the expression FORM, N times. Returns the value of the last evaluation. If N is less than or equal to 0, FORM is not evaluated, and RPT returns NIL. Before each evaluation, the local variable RPTN is bound to the number of evaluations yet to take place. This variable can be referenced within FORM. For example, (RPT 10 '(PRINT RPTN)) will print the numbers 10, 9...1, and return 1. (RPTQ(RPTQ (Function) NIL NIL ("10") 12) N FORM1 FORM2... FORMN) [NLambda NoSpread Function] Nlambda-nospread version of RPT: N is evaluated, FORMi are not. Returns the value of the last evaluation of FORMN. (FRPTQ(FRPTQ (NLambda NoSpread Function) NIL NIL ("10") 12) N FORM1 FORM2... FORMN) [NLambda NoSpread Function] Faster version of RPTQ. Does not bind RPTN. (MAP(MAP (Function) NIL NIL ("10") 12) MAPX MAPFN1 MAPFN2) [Function] If MAPFN2 is NIL, MAP applies the function MAPFN1 to successive tails of the list MAPX. That is, first it computes (MAPFN1 MAPX), and then (MAPFN1 (CDR MAPX)), etc., until MAPX becomes a non-list. If MAPFN2 is provided, (MAPFN2 MAPX) is used instead of (CDR MAPX) for the next call for MAPFN1, e.g., if MAPFN2 were CDDR, alternate elements of the list would be skipped. MAP returns NIL. (MAPC(MAPC (Function) NIL NIL ("10") 12) MAPX MAPFN1 MAPFN2) [Function] Identical to MAP, except that (MAPFN1 (CAR MAPX)) is computed at each iteration instead of (MAPFN1 MAPX), i.e., MAPC works on elements, MAP on tails. MAPC returns NIL. (MAPLIST(MAPLIST (Function) NIL NIL ("10") 12) MAPX MAPFN1 MAPFN2) [Function] Successively computes the same values that MAP would compute, and returns a list consisting of those values. (MAPCAR(MAPCAR (Function) NIL NIL ("10") 12) MAPX MAPFN1 MAPFN2) [Function] Computes the same values that MAPC would compute, and returns a list consisting of those values, e.g., (MAPCAR X 'FNTYP) is a list of FNTYPs for each element on X. (MAPCON(MAPCON (Function) NIL NIL ("10") 12) MAPX MAPFN1 MAPFN2) [Function] Computes the same values that MAP and MAPLIST but NCONCs these values to form a list which it returns. (MAPCONC(MAPCONC (Function) NIL NIL ("10") 12) MAPX MAPFN1 MAPFN2) [Function] Computes the same values that MAPC and MAPCAR, but NCONCs the values to form a list which it returns. Note that MAPCAR creates a new list which is a mapping of the old list in that each element of the new list is the result of applying a function to the corresponding element on the original list. MAPCONC is used when there are a variable number of elements (including none) to be inserted at each iteration. Examples: (MAPCONC '(A B C NIL D NIL) '(LAMBDA (Y)(if (NULL Y) then NIL else (LIST Y)))) = > (A B C D) This MAPCONC returns a list consisting of MAPX with all NILs removed. (MAPCONC '((A B) C (D E F)(G) H I) '(LAMBDA (Y)(if (LISP Y) then Y else NIL))) = > (A B D E F G) This MAPCONC returns a linear list consisting of all the lists on MAPX. Since MAPCONC uses NCONC to string the corresponding lists together, in this example the original list will be altered to be ((A B C D E F G) C (D E F G)(G) H I). If this is an undesirable side effect, the functional argument to MAPCONC should return instead a top level copy of the lists, i.e., (LAMBDA (Y) (if (LISTP Y) then (APPERND Y) else NIL))). (MAP2C(MAP2C (Function) NIL NIL ("10") 13) MAPX MAPY MAPFN1 MAPFN2) [Function] Identical to MAPC except MAPFN1 is a function of two arguments, and (MAPFN1 (CAR MAPX)(CAR MAPY)) is computed at each iteration. Terminates when either MAPX or MAPY is a non-list. MAPFN2 is still a function of one argument, and is applied twice on each iteration; (MAPFN2 MAPX) gives the new MAPX, (MAPFN2 MAPY) the new MAPY. CDR is used if MAPFN2 is not supplied, i.e., is NIL. (MAP2CAR(MAP2CAR (Function) NIL NIL ("10") 13) MAPX MAPY MAPFN1 MAPFN2) [Function] Identical to MAPCAR except MAPFN1 is a function of two arguments, and (MAPFN1 (CAR MAPX)(CAR MAPY)) is used to assemble the new list. Terminates when either MAPX or MAPY is a non-list. (SUBSET(SUBSET (Function) NIL NIL ("10") 13) MAPX MAPFN1 MAPFN2) [Function] Applies MAPFN1 to elements of MAPX and returns a list of those elements for which this application is non-NIL, e.g.: (SUBSET '(A B 3 C 4) 'NUMBERP) = (3 4) MAPFN2 plays the same role as with MAP, MAPC, et al. (EVERY(EVERY (Function) NIL NIL ("10") 13) EVERYX EVERYFN1 EVERYFN2) [Function] Returns T if the result of applying EVERYFN1 to each element in EVERYX is true, otherwise NIL. For example, (EVERY '(X Y Z) 'ATOM) => T. EVERY operates by evaluating (EVERYFN1 (CAR EVERYX) EVERYX). The second argument is passed to EVERYFN1 so that it can look at the next element on EVERYX if necessary. If EVERYFN1 yields NIL, EVERY immediately returns NIL. Otherwise, EVERY computes (EVERYFN2 EVERYX), or (CDR EVERYX) if EVERYFN2 = NIL, and uses this as the new EVERYX, and the process continues. For example (EVERY X 'ATOM 'CDDR) is true if every other element of X is atomic. (SOME(SOME (Function) NIL NIL ("10") 14) SOMEX SOMEFN1 SOMEFN2) [Function] Returns the tail of SOMEX beginning with the first element that satisfies SOMEFN1, i.e., for which SOMEFN1 applied to that element is true. Value is NIL if no such element exists. (SOME X '(LAMBDA (Z) (EQUAL Z Y))) is equivalent to (MEMBER Y X). SOME operates analogously to EVERY. At each stage, (SOMEFN1 (CAR SOMEX) SOMEX) is computed, and if this not NIL, SOMEX is returned as the value of SOME. Otherwise, (SOMEFN2 SOMEX) is computed, or (CDR SOMEX) if SOMEFN2 = NIL, and used for the next SOMEX. (NOTANY(NOTANY (Function) NIL NIL ("10") 14) SOMEX SOMEFN1 SOMEFN2) [Function] (NOT (SOME SOMEX SOMEFN1 SOMEFN2)). (NOTEVERY(NOTEVERY (Function) NIL NIL ("10") 14) EVERYX EVERYFN1 EVERYFN2) [Function] (NOT (EVERY EVERYX EVERYFN1 EVERYFN2)). (MAPRINT(MAPRINT (Function) NIL NIL ("10") 14) LST FILE LEFT RIGHT SEP PFN LISPXPRINTFLG) [Function] A general printing function. For each element of the list LST, applies PFN to the element, and FILE. If PFN is NIL, PRIN1 is used. Between each application MAPRINT performs PRIN1 of SEP (or "" if SEP = NIL). If LEFT is given, it is printed (using PRIN1) initially; if RIGHT is given, it is printed (using PRIN1) at the end. For example, (MAPRINT X NIL '%( '%)) is equivalent to PRIN1 for lists. To print a list with commas between each element and a final . one could use (MAPRINT X T NIL '%. '%,). If LISPXPRINTFLG = T, LISPXPRIN1 (see Chapter 13) is used instead of PRIN1. Functional Arguments 1 The functions that call the Interlisp-D evaluator take functional arguments, which may be symbols with function definitions, or expr definition forms such as (LAMBDA (X) ...). The following functions are useful when one wants to supply a functional argument which will always return NIL, T, or 0. Note that the arguments X1 ... XN to these functions are evaluated, though they are not used. (NILL(NILL (NoSpread Function) NIL NIL ("10") 14) X1 ... XN ) [NoSpread Function] Returns NIL. (TRUE(TRUE (NoSpread Function) NIL NIL ("10") 14) X1 ... XN ) [NoSpread Function] Returns T. (ZERO(ZERO (NoSpread Function) NIL NIL ("10") 15) X1 ... XN ) [NoSpread Function] Returns 0. When using expr definitions as function arguments, they should be enclosed within the function FUNCTION rather than QUOTE, so that they will be compiled as separate functions. (FUNCTION(FUNCTION (NLambda Function) NIL NIL ("10") 15) FN ENV ) [NLambda Function] If ENV = NIL, FUNCTION is the same as QUOTE, except that it is treated differently when compiled. Consider the function definition: (DEFINEQ (FOO (LST)(FIE LST (FUNCTION (LAMBDA (Z)(ITIMES Z Z))] FOO calls the function FIE with the value of LST and the expr definition (LAMBDA (Z)(LIST (CAR Z))). If FOO is run interpreted, it does not make any difference whether FUNCTION or QUOTE is used. However, when FOO is compiled, if FUNCTION is used the compiler will define and compile the expr definition as an auxiliary function (see Chapter 18). The compiled expr definition will run considerably faster, which can make a big difference if it is applied repeatedly. Compiling FUNCTION will not create an auxiliary function if it is a functional argument to a function that compiles open, such as most of the mapping functions (MAPCAR, MAPLIST, etc.). If ENV is not NIL, it can be a list of variables that are (presumably) used freely by FN. ENV can also be an atom, in which case it is evaluated, and the value interpreted as described above. Macros 1 Macros provide an alternative way of specifying the action of a function. Whereas function definitions are evaluated with a function call, which involves binding variables and other housekeeping tasks, macros are evaluated by translating one Interlisp form into another, which is then evaluated. A symbol may have both a function definition and a macro definition. When a form is evaluated by the interpreter, if the CAR has a function definition, it is used (with a function call), otherwise if it has a macro definition, then that is used. However, when a form is compiled, the CAR is checked for a macro definition first, and only if there isn't one is the function definition compiled. This allows functions that behave differently when compiled and interpreted. For example, it is possible to define a function that, when interpreted, has a function definition that is slow and has a lot of error checks, for use when debugging a system. This function could also have a macro definition that defines a fast version of the function, which is used when the debugged system is compiled. Macro definitions are represented by lists that are stored on the property list of a symbol. Macros are often used for functions that should be compiled differently in different Interlisp implementations, and the exact property name a macro definition is stored under determines whether it should be used in a particular implementation. The global variable MACROPROPS contains a list of all possible macro property names which should be saved by the MACROS file package command. Typical macro property names are DMACRO for Interlisp-D, 10MACRO for Interlisp-10, VAXMACRO for Interlisp-VAX, JMACRO for Interlisp-Jerico, and MACRO for implementation independent macros. The global variable COMPILERMACROPROPS is a list of macro property names. Interlisp determines whether a symbol has a macro definition by checking these property names, in order, and using the first non-NIL property value as the macro definition. In Interlisp-D this list contains DMACRO and MACRO in that order so that DMACROs will override the implementation-independent MACRO properties. In general, use a DMACRO property for macros that are to be used only in Interlisp-D, use 10MACRO for macros that are to be used only in Interlisp-10, and use MACRO for macros that are to affect both systems. Macro definitions can take the following forms: (LAMBDA ...) (NLAMBDA ...) A function can be made to compile open by giving it a macro definition of the form (LAMBDA ...) or (NLAMBDA ...), e.g., (LAMBDA (X) (COND ((GREATERP X 0) X) (T (MINUS X)))) for ABS. The effect is as if the macro definition were written in place of the function wherever it appears in a function being compiled, i.e., it compiles as a lambda or nlambda expression. This saves the time necessary to call the function at the price of more compiled code generated in-line. (NIL EXPRESSION) (LIST EXPRESSION) Substitution macro. Each argument in the form being evaluated or compiled is substituted for the corresponding atom in LIST, and the result of the substitution is used instead of the form. For example, if the macro definition of ADD1 is ((X) (IPLUS X 1)), then, (ADD1 (CAR Y)) is compiled as (IPLUS (CAR Y) 1). Note that ABS could be defined by the substitution macro ((X) (COND ((GREATERP X 0) X) (T (MINUS X)))). In this case, however, (ABS (FOO X)) would compile as (COND ((GREATERP (FOO X) 0) (FOO X)) (T (MINUS (FOO X)))) and (FOO X) would be evaluated two times. (Code to evaluate (FOO X) would be generated three times.) (OPENLAMBDA ARGS BODY) This is a cross between substitution and LAMBDA macros. When the compiler processes an OPENLAMBDA, it attempts to substitute the actual arguments for the formals wherever this preserves the frequency and order of evaluation that would have resulted from a LAMBDA expression, and produces a LAMBDA binding only for those that require it. Note: OPENLAMBDA assumes that it can substitute literally the actual arguments for the formal arguments in the body of the macro if the actual is side-effect free or a constant. Thus, you should be careful to use names in ARGS which don't occur in BODY (except as variable references). For example, if FOO has a macro definition of (OPENLAMBDA (ENV) (FETCH (MY-RECORD-TYPE ENV) OF BAR)) then (FOO NIL) will expand to (FETCH (MY-RECORD-TYPE NIL) OF BAR) T When a macro definition is the atom T, it means that the compiler should ignore the macro, and compile the function definition; this is a simple way of turning off other macros. For example, the user may have a function that runs in both Interlisp-D and Interlisp-10, but has a macro definition that should only be used when compiling in Interlisp-10. If the MACRO property has the macro specification, a DMACRO of T will cause it to be ignored by the Interlisp-D compiler. This DMACRO would not be necessary if the macro were specified by a 10MACRO instead of a MACRO. (= . OTHER-FUNCTION) A simple way to tell the compiler to compile one function exactly as it would compile another. For example, when compiling in Interlisp-D, FRPLACAs are treated as RPLACAs. This is achieved by having FRPLACA have a DMACRO of (= . RPLACA). (LITATOM EXPRESSION) If a macro definition begins with a symbol other than those given above, this allows computation of the Interlisp expression to be evaluated or compiled in place of the form. LITATOM is bound to the CDR of the calling form, EXPRESSION is evaluated, and the result of this evaluation is evaluated or compiled in place of the form. For example, LIST could be compiled using the computed macro: [X (LIST 'CONS (CAR X)(AND (CDR X)(CONS 'LIST (CDR X] This would cause (LIST X Y Z) to compile as (CONS X (CONS Y (CONS Z NIL))). Note the recursion in the macro expansion. If the result of the evaluation is the symbol IGNOREMACRO, the macro is ignored and the compilation of the expression proceeds as if there were no macro definition. If the symbol in question is normally treated specially by the compiler (CAR, CDR, COND, AND, etc.), and also has a macro, if the macro expansion returns IGNOREMACRO, the symbol will still be treated specially. In Interlisp-10, if the result of the evaluation is the atom INSTRUCTIONS, no code will be generated by the compiler. It is then assumed the evaluation was done for effect and the necessary code, if any, has been added. This is a way of giving direct instructions to the compiler if you understand it. It is often useful, when constructing complex macro expressions, to use the BQUOTE facility (see the Read Macros section of Chapter 25). The following function is quite useful for debugging macro definitions: (EXPANDMACRO(EXPANDMACRO (Function) NIL NIL ("10") 18) EXP QUIETFLG % %) [Function] Takes a form whose CAR has a macro definition and expands the form as it would be compiled. The result is prettyprinted, unless QUIETFLG=T, in which case the result is simply returned. Note: EXPANDMACRO only works on Interlisp macros. Use CL:MACROEXPAND-1 to expand Interlisp macros visible to the Common Lisp interpreter and compliler. DEFMACRO Macros defined with the function DEFMACRO are much like computed macros (see the above section), in that they are defined with a form that is evaluated, and the result of the evaluation is used (evaluated or compiled) in place of the macro call. However, DEFMACRO macros support complex argument lists with optional arguments, default values, and keyword arguments as well as argument list destructuring. (DEFMACRO(DEFMACRO (Function) NIL NIL ("10") 18) NAME ARGS FORM) [NLambda NoSpread Function] Defines NAME as a macro with the arguments ARGS and the definition form FORM (NAME, ARGS, and FORM are unevaluated). If an expression starting with NAME is evaluated or compiled, arguments are bound according to ARGS, FORM is evaluated, and the value of FORM is evaluated or compiled instead. The interpretation of ARGS is described below. Note: Like the function DEFMACRO in Common Lisp, this function currently removes any function definition for NAME. ARGS is a list that defines how the argument list passed to the macro NAME is interpreted. Specifically, ARGS defines a set of variables that are set to various arguments in the macro call (unevaluated), that FORM can reference to construct the macro form. In the simplest case, ARGS is a simple list of variable names that are set to the corresponding elements of the macro call (unevaluated). For example, given: (DEFMACRO FOO (A B) (LIST 'PLUS A B B)) The macro call (FOO X (BAR Y Z)) will expand to (PLUS X (BAR Y Z) (BAR Y Z)). &-keywords (beginning with the character &) that are used to set variables to particular items from the macro call form, as follows: &OPTIONAL Used to define optional arguments, possibly with default values. Each element on ARGS after &OPTIONAL until the next &-keyword or the end of the list defines an optional argument, which can either be a symbol or a list, interpreted as follows: VAR If an optional argument is specified as a symbol, that variable is set to the corresponding element of the macro call (unevaluated). (VAR DEFAULT) If an optional argument is specified as a two element list, VAR is the variable to be set, and DEFAULT is a form that is evaluated and used as the default if there is no corresponding element in the macro call. (VAR DEFAULT VARSETP) If an optional argument is specified as a three element list, VAR and DEFAULT are the variable to be set and the default form, and VARSETP is a variable that is set to T if the optional argument is given in the macro call, NIL otherwise. This can be used to determine whether the argument was not given, or whether it was specified with the default value. For example, after (DEFMACRO FOO (&OPTIONAL A (B 5) (C 6 CSET)) FORM) expanding the macro call (FOO) would cause FORM to be evaluated with A set to NIL, B set to 5, C set to 6, and CSET set to NIL. (FOO 4 5 6) would be the same, except that A would be set to 4 and CSET would be set to T. &REST &BODY Used to get a list of all additional arguments from the macro call. Either &REST or &BODY should be followed by a single symbol, which is set to a list of all arguments to the macro after the position of the &-keyword. For example, given (DEFMACRO FOO (A B &REST C) FORM) expanding the macro call (FOO 1 2 3 4 5) would cause FORM to be evaluated with A set to 1, B set to 2, and C set to (3 4 5). If the macro calling form contains keyword arguments (see &KEY below), these are included in the &REST list. &KEY Used to define keyword arguments, that are specified in the macro call by including a keyword (a symbol starting with the character :) followed by a value. Each element on ARGS after &KEY until the next &-keyword or the end of the list defines a keyword argument, which can either be a symbol or a list, interpreted as follows: VAR (VAR) ((KEYWORD VAR)) If a keyword argument is specified by a single symbol VAR, or a one-element list containing VAR, it is set to the value of a keyword argument, where the keyword used is created by adding the character : to the front of VAR. If a keyword argument is specified by a single-element list containing a two-element list, KEYWORD is interpreted as the keyword (which should start with the letter :), and VAR is the variable to set. (VAR DEFAULT) ((KEYWORD VAR) DEFAULT) (VAR DEFAULT VARSETP) ((KEYWORD VAR) DEFAULT VARSETP) If a keyword argument is specified by a two- or three-element list, the first element of the list specifies the keyword and variable to set as above. Similar to &OPTIONAL (above), the second element DEFAULT is a form that is evaluated and used as the default if there is no corresponding element in the macro call, and the third element VARSETP is a variable that is set to T if the optional argument is given in the macro call, NIL otherwise. For example, the form (DEFMACRO FOO (&KEY A (B 5 BSET) ((:BAR C) 6 CSET)) FORM) Defines a macro with keys :A, :B (defaulting to 5), and :BAR. Expanding the macro call (FOO :BAR 2 :A 1) would cause FORM to be evaluated with A set to 1, B set to 5, BSET set to NIL, C set to 2, and CSET set to T. &ALLOW-OTHER-KEYS It is an error for any keywords to be supplied in a macro call that are not defined as keywords in the macro argument list, unless either the &-keyword &ALLOW-OTHER-KEYS appears in ARGS, or the keyword :ALLOW-OTHER-KEYS (with a non-NIL value) appears in the macro call. &AUX Used to bind and initialize auxiliary varables, using a syntax similar to PROG (see the PROG and Associated Control Functions section of Chapter 9). Any elements after &AUX should be either symbols or lists, interpreted as follows: VAR Single symbols are interpreted as auxiliary variables that are initially bound to NIL. (VAR EXP) If an auxiliary variable is specified as a two element list, VAR is a variable initially bound to the result of evaluating the form EXP. For example, given (DEFMACRO FOO (A B &AUX C (D 5)) FORM) C will be bound to NIL and D to 5 when FORM is evaluated. &WHOLE Used to get the whole macro calling form. Should be the first element of ARGS, and should be followed by a single symbol, which is set to the entire macro calling form. Other &-keywords or arguments can follow. For example, given (DEFMACRO FOO (&WHOLE X A B) FORM) Expanding the macro call (FOO 1 2) would cause FORM to be evaluated with X set to (FOO 1 2), A set to 1, and B set to 2. DEFMACRO macros also support argument list destructuring, a facility for accessing the structure of individual arguments to a macro. Any place in an argument list where a symbol is expected, an argument list (in the form described above) can appear instead. Such an embedded argument list is used to match the corresponding parts of that particular argument, which should be a list structure in the same form. In the simplest case, where the embedded argument list does not include &-keywords, this provides a simple way of picking apart list structures passed as arguments to a macro. For example, given (DEFMACRO FOO (A (B (C . D)) E) FORM) Expanding the macro call (FOO 1 (2 (3 4 5)) 6) would cause FORM to be evaluated with with A set to 1, B set to 2, C set to 3, D set to (4 5), and E set to 6. Note that the embedded argument list (B (C . D)) has an embedded argument list (C . D). Also notice that if an argument list ends in a dotted pair, that the final symbol matches the rest of the arguments in the macro call. An embedded argument list can also include &-keywords, for interpreting parts of embedded list structures as if they appeared in a top-level macro call. For example, given (DEFMACRO FOO (A (B &OPTIONAL (C 6)) D) FORM) Expanding the macro call (FOO 1 (2) 3) would cause FORM to be evaluated with with A set to 1, B set to 2, C set to 6 (because of the default value), and D set to 3. Warning: Embedded argument lists can only appear in positions in an argument list where a list is otherwise not accepted. In the above example, it would not be possible to specify an embedded argument list after the &OPTIONAL keyword, because it would be interpreted as an optional argument specification (with variable name, default value, set variable). However, it would be possible to specify an embedded argument list as the first element of an optional argument specification list, as so: (DEFMACRO FOO (A (B &OPTIONAL ((X (Y) Z) '(1 (2) 3))) D) FORM) In this case, X, Y, and Z default to 1, 2, and 3, respectively. Note that the default value has to be an appropriate list structure. Also, in this case either the whole structure (X (Y) Z) can be supplied, or it can be defaulted (i.e., is not possible to specify X while letting Y default). Interpreting Macros When the interpreter encounters a form CAR of which is an undefined function, it tries interpreting it as a macro. If CAR of the form has a macro definition, the macro is expanded, and the result of this expansion is evaluated in place of the original form. CLISPTRAN (see the Miscellaneous Functions and Variables section of Chapter 21) is used to save the result of this expansion so that the expansion only has to be done once. On subsequent occasions, the translation (expansion) is retrieved from CLISPARRAY the same as for other CLISP constructs. Note: Because of the way that the evaluator processes macros, if you have a macro on FOO, then typing (FOO 'A 'B) will work, but FOO(A B) will not work. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "10-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "10-" "")) (222 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "10-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "10-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (102 612 510 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "10-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "10-" "")) (222 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (48 612 564 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))(5~5/HH306T,-l~T0<NT0<<T55555,HH,,xx,Zl,l~,~~,l~/<N/NN/<<1EVENT-T@ PAGEHEADING RIGHTPAGE0 +T0 +T,NN,<</,-TA PAGEHEADING RIGHTPAGET,<</HH,5@ PAGEHEADINGLEFTBACKT/HHTITAN TITANTITANTITAN +TIMESROMAN +MODERNPALATINO PALATINO PALATINO PALATINO PALATINO TITAN CLASSIC +MODERN +CLASSIC +CLASSIC +CLASSIC + HELVETICACLASSIC +MODERN +'"1! IM.CHAP.GETFNPALATINO 1 HRULE.GETFNMODERN! +% + +# + + + +  + +J + +; +: . + +"V +  + X + +2 + + + H + + HRULE.GETFN + | +  + M + 0 + _ + +  +  +8 +  + +  + +P +  +a +  +? +: +  + +( + + Y + W + + DIM.INDEX.GETFN +  +w + + + + F + +,# + + + + +) + + + + + + + + +5 +B +E +: + +  + +FIM.INDEX.GETFNx + + +-# + + + + +& + + +  +5 + +n +3 +9 + + V +_ + +HIM.INDEX.GETFNz +  + + +V + + +  + + + + + + +[ + !IM.INDEX.GETFNTITAN +$ +D + +_ +H + +6 + + $IM.INDEX.GETFNTITAN +$ +D + + + + + +& + +# +y +#<" +JIM.INDEX.GETFN +   + + + + +V ++!i +:IM.INDEX.GETFN + + + #IM.INDEX.GETFNTITAN +$ + +M +U +   +  " +   + $ +   +  $ + +   $ +     +   +   +  +$ + + + +$ + + + + +A + + +Q +8 +* + #IM.INDEX.GETFNTITAN$ + + +  + + + + + +  +< + + + + + $IM.INDEX.GETFNTITAN$ + + + + + + + + %IM.INDEX.GETFNTITAN +$/ + + + + + + + + +5 + +  + + + + + #IM.INDEX.GETFNTITAN +$# + + + +& + + + %IM.INDEX.GETFNTITAN +$ +L + + + + +$ +N +^ + + + + + + + + + +" +  += +  +4 +( + *IM.INDEX.GETFNTITAN +$ +5 + +$ +  + +c +  + +  + + + + + + + +7; +$ + + ! + + + + + +$ + +B + 4 +$ +  +  +$  + + + + +: + + + + + + + HRULE.GETFN + + +@ + + %IM.INDEX.GETFNCLASSIC + +$ +3 + +,$. + + + + +#$ +$6 + +  $IM.INDEX.GETFNCLASSIC + +$ + +% + + + +< +  +: + + +  + + +3 + 2IM.INDEX.GETFNCLASSIC + +$ + + +2 + +$ +7 + $IM.INDEX.GETFNCLASSIC + +$4 + + + + + + + +# + + +3 +( +  +G + + + +F + + +$ + + +$  + +v + +T + + + +$ + +  + "IM.INDEX.GETFNCLASSIC + +$# + + +( +$ + + +. + + "IM.INDEX.GETFNCLASSIC +  +$ + + + +  +' +  +- + + + "IM.INDEX.GETFNCLASSIC +  +$ + + + + + + + + +3 +( + + +$ + + + #IM.INDEX.GETFNCLASSIC +  + +$ + +& + + + HRULE.GETFN + { +A + +  + + + #IM.INDEX.GETFNTITAN + +$ + + +V +U +[ +P +,$ + +` +S + + +* + +$> +/ $IM.INDEX.GETFNTITAN + + + +$ + + + +( #IM.INDEX.GETFNTITAN +$ + +A +H +     $IM.INDEX.GETFNTITAN + + + +$< + +  + +$J +T +$ +5 +! + + 6 +$ +j +) + + $IM.INDEX.GETFNTITAN + +$5 + + + + + +& +IM.INDEX.GETFNTITAN +$ + + + + S +/ +8$ t + +  +  + + + $IM.INDEX.GETFNTITAN +$- + + +$! +% +; + + + + + &IM.INDEX.GETFNTITAN +$ + + +R +: + + +? + + +$b + + 'IM.INDEX.GETFNTITAN + +$ ++ + +7 +J + + +W + + + +5 +? +$= + + +# $ + + +4  + HRULE.GETFN + Q + + +5 + + +o +  + "IM.INDEX.GETFNTITAN +$ + +7 + + + + +$+ +b + + + + + + + #IM.INDEX.GETFNTITAN + + +$ + + +6 + + 5IM.INDEX.GETFNTITAN + + + +$ + + + "IM.INDEX.GETFNTITAN +$ + + + +! + + + + + + + + + +4 + + + #IM.INDEX.GETFNTITAN  +$ + + +* + + + + + + &IM.INDEX.GETFNTITAN + +$+ +@ + %IM.INDEX.GETFNTITAN  + +$ +D + + + + %IM.INDEX.GETFNTITAN +  +$ + + +/ + &IM.INDEX.GETFNTITAN +  + +$ + + +- + + + +t +>   + + + + + +C  +6 + +  + +d +%E +< +6 + $IM.INDEX.GETFNTITAN  + +$ + +% + + +8 + + +(O + + + + + + + + &IM.INDEX.GETFNTITAN +  + +$ + +% +; + + + %IM.INDEX.GETFNTITAN +  + +$ + +H + +'$ + + + $IM.INDEX.GETFNTITAN + +$ + + + + + +$ +$ +, + + + + + + + + + + + +* +# + + #IM.INDEX.GETFNTITAN +  +$ +0 + +, + +# +  + + + + + + + + + + %IM.INDEX.GETFNTITAN + +$  + + 'IM.INDEX.GETFNTITAN + + +$  + &IM.INDEX.GETFNTITAN* +  +$; + + + + + + +$ + + + + + + + + + + + + +$ + +J + + +$ +  + + +% + + + HRULE.GETFN + + + k + + + +< + ,IM.INDEX.GETFNTITAN + + + + +( ,IM.INDEX.GETFNTITAN + + + +( ,IM.INDEX.GETFNTITAN + + + + +( _ + +7 + + /IM.INDEX.GETFNTITAN + + + + + +$ + + + +Z +@$ + + + +$ += + + + + +$ + + + + + +$ + +E + +c + + HRULE.GETFN + + ; + z + + + g + +S +9 + + + + +? + +L + + +/ + +B +> +- + 0 +  +  + S +  +  +5 +# +   + +  +{ +k + + + + ++ +. + +     +1 +" +  +  * +) + + + +) +  +  + + + +3 + + 9  + + + &  $ +D +) + +@ +9 + + +   + + + + +  +   +V + P + + + +n +, + 8  +  +. + 0 +  + + + +> + . + ? +  + +  + +  +' +  +  + + *IM.INDEX.GETFNTITAN + +$ +k + +/ +$  + & +R + ! + + + 'IM.INDEX.GETFNTITAN +$ + + + + + +3 +< + + +: + +$  +M + +$B + +d +, +$ + +($ + + +$) +\ +  S + +  +~ +  + +   > + +m +  @ + +6 + +6 + +  +3 + + + + + + + + + + +  + + + + +   + L + +v + + $  + + + + + + + + < +# + +   +  + + +| +    7 +# +~ +^ +M + +         +  + + +6 + +  + ;   + + + + + + + + + + + + + + + +  + + + + +! +  J + + +M +< +  + T + +  ? +D + +  + )  + + + + + +  J +c +6 + %  +  + + +  + + + + +  +[ + (  + + + + + + + + + + + +( +  + + - + + 0  + + + + + + + +% + + +  + +  + +&  + + + + + + + +K + + + ' +M + +  + + + + R + +  +  + + +% + +۩ z \ No newline at end of file diff --git a/docs/medley-irm/10-FUNC-DEF.pdf b/docs/medley-irm/10-FUNC-DEF.pdf new file mode 100644 index 00000000..df2f7764 --- /dev/null +++ b/docs/medley-irm/10-FUNC-DEF.pdf @@ -0,0 +1,11995 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5337 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-1)Tj +/TT4 1 Tf +10 0 0 10 224.45 568.2 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 509.9999 556.54 Tm +( )Tj +-48 -2.6667 TD +0.1444 Tw +[(Medley is designed to help you define and debug functions. Developing an applications program)]TJ +0 -1.2222 TD +0.16 Tw +(with Medley involves defining a number of functions in terms of the system primitives and other)Tj +T* +0.1733 Tw +[(user-defined functions. Once defined, your functions may be used exactly like Interlisp primitive)]TJ +T* +0.0767 Tw +(functions, so the programming process can be viewed as extending the Interlisp language to include)Tj +T* +0 Tw +(the required functionality.)Tj +0 -2 TD +0.0511 Tw +(A functions definition specifies if the function has a fixed or variable number of arguments, whether)Tj +0 -1.2222 TD +0.1833 Tw +(these arguments are evaluated or not, the function argument names, and a series of forms which)Tj +T* +0 Tw +(define the behavior of the function. For example:)Tj +/TT8 1 Tf +6 0 0 6 114 436.09 Tm +(\(LAMBDA \(X Y\) \(PRINT X\) \(PRINT Y\)\))Tj +/TT6 1 Tf +9 0 0 9 78 420.54 Tm +0.0778 Tw +(This function has two evaluated arguments, )Tj +/TT8 1 Tf +6 0 0 6 259.326 420.54 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 262.9266 420.54 Tm +0.0778 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 284.0624 420.54 Tm +0 Tw +(Y)Tj +/TT6 1 Tf +9 0 0 9 287.663 420.54 Tm +0.0778 Tw +(, and it will execute )Tj +/TT8 1 Tf +6 0 0 6 370.7523 420.54 Tm +0.1867 Tw +(\(PRINT X\))Tj +/TT6 1 Tf +9 0 0 9 404.2776 420.54 Tm +0.0778 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 425.4135 420.54 Tm +0.1867 Tw +(\(PRINT Y\) )Tj +/TT6 1 Tf +9 0 0 9 463.6593 420.54 Tm +0 Tw +(when)Tj +-42.851 -1.2222 TD +(evaluated. Other types of function definitions are described below.)Tj +0 -2 TD +0.0678 Tw +[(A function is defined by putting an expr definition in the function definition cell of a symbol. There)]TJ +0 -1.2222 TD +0.0355 Tw +(are a number of functions for accessing and setting function definition cells, but one usually defines a)Tj +T* +0 Tw +(function with )Tj +/TT8 1 Tf +6 0 0 6 134.1621 369.54 Tm +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 159.3662 369.54 Tm +( \(see the Defining Functions section below\). For example:)Tj +/TT9 1 Tf +6 0 0 6 114 357.09 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DEFINEQ \(FOO \(LAMBDA \(X Y\) \(PRINT X\) \(PRINT Y\)\)\)\)\(FOO\))Tj +/TT6 1 Tf +9 0 0 9 78 341.54 Tm +0.1211 Tw +(The expression above will define the function )Tj +/TT8 1 Tf +6 0 0 6 269.049 341.54 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 279.8507 341.54 Tm +0.1211 Tw +[( to have the expr definition )]TJ +/TT8 1 Tf +6 0 0 6 396.2672 341.54 Tm +0.29 Tw +(\(LAMBDA \(X Y\) \(PRINT X\))Tj +-53.0445 -1.8333 TD +0 Tw +(\(PRINT Y\)\))Tj +/TT6 1 Tf +9 0 0 9 114.0059 330.54 Tm +(. After being defined, this function may be evaluated just like any system function:)Tj +/TT9 1 Tf +6 0 0 6 114 318.09 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 3 \(IPLUS 3 4\)\))Tj +2.0132 -1 TD +(3)Tj +T* +(7)Tj +T* +(7)Tj +/TT6 1 Tf +9 0 0 9 78 284.54 Tm +0.0767 Tw +[(Not all function definition cells contain expr definitions. The compiler \(see the first page of Chapter)]TJ +0 -1.2222 TD +0.2711 Tw +[(18\) translates expr definitions into compiled code objects, which execute much faster. Interlisp)]TJ +T* +0.0233 Tw +(provides a number of function type functions which determine how a given function is defined, the)Tj +T* +0 Tw +(number and names of function arguments, etc. See the Function Type Functions section below.)Tj +0 -2 TD +0.1489 Tw +(Usually, functions are evaluated automatically when they appear within another function or when)Tj +0 -1.2222 TD +0.0811 Tw +[(typed into Interlisp. However, sometimes it is useful to envoke the Interlisp interpreter explicitly to)]TJ +T* +0.0256 Tw +[(apply a given functional argument to some data. There are a number of functions which will apply)]TJ +T* +0.0544 Tw +[(a given function repeatedly. For example, )]TJ +/TT8 1 Tf +6 0 0 6 251.472 200.54 Tm +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +9 0 0 9 273.0755 200.54 Tm +0.0544 Tw +[( will apply a function \(or an expr definition\) to all of)]TJ +-21.6751 -1.2222 TD +0 Tw +(the elements of a list, and return the values returned by the function:)Tj +/TT9 1 Tf +6 0 0 6 114 177.09 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(MAPCAR \(1 2 3 4 5\) \(LAMBDA \(X\) \(ITIMES X X\)\))Tj +2.0132 -1 TD +(\(1 4 9 16 25\))Tj +/TT6 1 Tf +9 0 0 9 78 155.54 Tm +0.2856 Tw +(When using functional arguments, there are a number of problems which can arise, related to)Tj +0 -1.2222 TD +0.0656 Tw +[(accessing free variables from within a function argument. Many times these problems can be solved)]TJ +T* +0 Tw +(using the function )Tj +/TT8 1 Tf +6 0 0 6 152.7026 133.54 Tm +(FUNCTION)Tj +/TT6 1 Tf +9 0 0 9 181.5073 133.54 Tm +( to create a )Tj +/TT8 1 Tf +6 0 0 6 226.4634 133.54 Tm +(FUNARG)Tj +/TT6 1 Tf +9 0 0 9 248.0669 133.54 Tm +( object.)Tj +-18.8963 -2 TD +0.1811 Tw +(The macro facility provides another way of specifying the behavior of a function \(see the Macros)Tj +0 -1.2222 TD +0.0422 Tw +[(section below\). Macros are very useful when developing code which should run very quickly, which)]TJ +T* +0.2889 Tw +(should be compiled differently than when it is interpreted, or which should run differently in)Tj +0 -1.3644 TD +0 Tw +(different implementations of Interlisp)Tj +/F1 1 Tf +10 0 0 10 228.0117 81.26 Tm +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT9 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 8088 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-2)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0 -4.38 TD +(Function Types)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 551.54 Tm +0.0333 Tw +[(Interlisp functions are defined using list expressions called expr definitions. An expr definition is a)]TJ +0 -1.2222 TD +0.0056 Tw +(list of the form )Tj +/TT8 1 Tf +6 0 0 6 186.9939 540.54 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 190.5945 540.54 Tm +0.0133 Tw +(LAMBDA-WORD ARG-LIST FORM)Tj +6 0 0 6 325.84 538.54 Tm +0 Tw +(1)Tj +9 0 0 9 329.44 540.54 Tm +0.0133 Tw +[( ... FORM)]TJ +6 0 0 6 378.28 538.54 Tm +0 Tw +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 385.4806 540.54 Tm +0.0056 Tw +(. )Tj +/TT13 1 Tf +0.7611 0 TD +0 Tw +(LAMBDA-WORD)Tj +/TT6 1 Tf +6.6011 0 TD +0.0056 Tw +[( determines whether)]TJ +-36.1934 -1.3944 TD +0.1722 Tw +(the arguments to this function will be evaluated or not. )Tj +/TT13 1 Tf +26.2979 0 TD +0.4144 Tw +[( ARG-LIST)]TJ +/TT6 1 Tf +5.8153 0 TD +0.1722 Tw +[( determines the number and)]TJ +-32.1132 -1.2889 TD +0.0167 Tw +(names of arguments. )Tj +/TT13 1 Tf +9.8113 0 TD +0 Tw +(FORM)Tj +6 0 0 6 235.92 514.39 Tm +(1)Tj +9 0 0 9 239.52 516.39 Tm +0.0411 Tw +[( ... FORM)]TJ +6 0 0 6 288.86 514.39 Tm +0 Tw +(N)Tj +/TT6 1 Tf +9 0 0 9 292.46 516.39 Tm +0.0167 Tw +[( are a series of forms to be evaluated after the arguments are)]TJ +-18.4956 -1.3944 TD +0 Tw +(bound to the local variables in )Tj +/TT13 1 Tf +13.5972 0 TD +(ARG-LIST)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-18.398 -2.0667 TD +(If)Tj +/TT8 1 Tf +6 0 0 6 132.0293 485.24 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 136.4899 485.24 Tm +(LAMBDA-WORD)Tj +/TT6 1 Tf +6.6011 0 TD +0.06 Tw +[( is the symbol )]TJ +/TT8 1 Tf +6 0 0 6 255.2543 485.24 Tm +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 276.8579 485.24 Tm +0.06 Tw +[(, then the arguments to the function are evaluated. If )]TJ +/TT13 1 Tf +24.3787 0 TD +0 Tw +(LAMBDA-)Tj +-41.1407 -1.2889 TD +(WORD)Tj +/TT6 1 Tf +2.4004 0 TD +0.1211 Tw +[( is the symbol )]TJ +/TT8 1 Tf +6 0 0 6 209.1583 473.64 Tm +0 Tw +(NLAMBDA)Tj +/TT6 1 Tf +9 0 0 9 234.3624 473.64 Tm +0.1211 Tw +[(, then the arguments to the function are not evaluated. Functions which)]TJ +-12.0403 -1.2889 TD +0.0378 Tw +(evaluate or dont evaluate their arguments are therefore known as lambda or nlambda functions,)Tj +0 -1.2222 TD +0 Tw +(respectively.)Tj +0 -2 TD +(If )Tj +/TT13 1 Tf +1.0277 0 TD +(ARG-LIST)Tj +/TT6 1 Tf +4.8008 0 TD +0.1078 Tw +[( is )]TJ +/TT8 1 Tf +6 0 0 6 191.3299 433.04 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 202.1317 433.04 Tm +0.1078 Tw +[( or a list of symbols, this indicates a function with a fixed number of arguments.)]TJ +-8.4591 -1.2889 TD +0.07 Tw +[(Each symbol is the name of an argument for the function defined by this expression. The process of)]TJ +0 -1.2222 TD +0.2133 Tw +(binding these symbols to the individual arguments is called spreading the arguments, and the)Tj +0 -1.3644 TD +0.2244 Tw +[(function is called a spread function. If the argument )]TJ +/F1 1 Tf +10 0 0 10 365.6717 398.16 Tm +0.249 Tw +(list is any )Tj +/TT6 1 Tf +9 0 0 9 421.1217 398.16 Tm +0.2244 Tw +(symbol other than )Tj +/TT8 1 Tf +6 0 0 6 502.0733 398.16 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 512.875 398.16 Tm +0.2244 Tw +(, this)Tj +-42.9861 -1.2222 TD +0 Tw +(indicates a function with a variable number of arguments, known as a nospread function.)Tj +0 -2 TD +(If )Tj +/TT13 1 Tf +0.9321 0 TD +(ARG-LIST)Tj +/TT6 1 Tf +4.8008 0 TD +0.0122 Tw +[( is anything other than a symbol or a list of symbols, such as )]TJ +/TT8 1 Tf +6 0 0 6 420.4884 369.16 Tm +0.0283 Tw +(\(LAMBDA "FOO" ...\))Tj +/TT6 1 Tf +9 0 0 9 485.6389 369.16 Tm +0.0122 Tw +(, attempting)Tj +-39.9599 -1.2889 TD +0.0844 Tw +(to use this expr definition will generate an )Tj +/TT8 1 Tf +6 0 0 6 302.267 357.56 Tm +0.2033 Tw +(Arg not symbol)Tj +/TT15 1 Tf +9 0 0 9 355.1152 357.56 Tm +0 Tw +( )Tj +/TT6 1 Tf +0.8034 0 TD +0.0844 Tw +[(error. In addition, if )]TJ +/TT8 1 Tf +6 0 0 6 449.4927 357.56 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 460.2945 357.56 Tm +0.0844 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 474.7828 357.56 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 478.3834 357.56 Tm +0.0844 Tw +[( is used as an)]TJ +-39.1537 -1.2889 TD +0 Tw +(argument name, the error )Tj +/TT8 1 Tf +6 0 0 6 230.5371 345.96 Tm +(Attempt to bind NIL or T)Tj +/TT6 1 Tf +9 0 0 9 316.9512 345.96 Tm +( is generated.)Tj +-21.2168 -2 TD +0.0967 Tw +(These two parameters \(lambda/nlambda and spread/nospread\) may be specified independently, so)Tj +0 -1.2222 TD +0.1044 Tw +(there are four nain function types, known as lambda-spread, nlanbda-spread, lanbda-nospread, and)Tj +T* +0.2022 Tw +[(nlambda-nospread functions. Each one has a different form and is used for a different purpose.)]TJ +T* +0 Tw +(These four function types are described more fully below.)Tj +0 -2 TD +0.2067 Tw +(For lambda-spread, lanbda-nospread, or nlambda-spread functions, there is an upper limit to the)Tj +0 -1.2222 TD +0.0489 Tw +(number of arguments that a function can have, based on the number of arguments that can be stored)Tj +T* +0.0211 Tw +[(on the stack on any one function call. Currently, the limit is 80 arguments. If a function is called with)]TJ +T* +0.18 Tw +(more than that many arguments, the error )Tj +/TT8 1 Tf +6 0 0 6 307.382 243.96 Tm +0.4317 Tw +(Too many arguments occurs)Tj +/TT6 1 Tf +9 0 0 9 405.1666 243.96 Tm +0.18 Tw +[(. However, nlambda-nospread)]TJ +-31.0185 -1.2222 TD +0.3522 Tw +(functions can be called with an arbitrary number of arguments, since the arguments are not)Tj +0 -1.3644 TD +0 Tw +(individually saved on the )Tj +/F1 1 Tf +10 0 0 10 230.1899 220.68 Tm +(stack. )Tj +/TT4 1 Tf +-10.419 -2.234 TD +(Lambda-Spread Functions)Tj +/TT6 1 Tf +9 0 0 9 126 182.68 Tm +0.1644 Tw +[(Lambda-spread functions take a fixed number of evaluated arguments. This is the most common)]TJ +0 -1.2222 TD +0 Tw +(function type. A lambda-spread expr definition has the form:)Tj +/TT8 1 Tf +6 0 0 6 162 157.28 Tm +(\(LAMBDA)Tj +/TT13 1 Tf +9 0 0 9 187.2041 157.28 Tm +( \(ARG)Tj +6 0 0 6 214.2 155.28 Tm +(1)Tj +9 0 0 9 217.8 157.28 Tm +( ... ARG)Tj +6 0 0 6 261 155.28 Tm +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT13 1 Tf +9 0 0 9 271.8011 157.28 Tm +(FORM)Tj +6 0 0 6 293.4 155.28 Tm +(1)Tj +9 0 0 9 297 157.28 Tm +( ... FORM)Tj +6 0 0 6 345.6 155.28 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 126 139.73 Tm +0.12 Tw +(The argument list)Tj +/TT8 1 Tf +6 0 0 6 198.6307 139.73 Tm +0.2883 Tc +0 Tw +( \()Tj +/TT13 1 Tf +9 0 0 9 207.5619 139.73 Tm +0 Tc +(ARG)Tj +6 0 0 6 223.77 137.73 Tm +(1)Tj +9 0 0 9 227.37 139.73 Tm +0.2878 Tw +[( ... ARG)]TJ +6 0 0 6 275.75 137.73 Tm +0 Tw +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT6 1 Tf +9 0 0 9 288.2812 139.73 Tm +0.12 Tw +(is a list of symbols that gives the number and names of the)Tj +-18.0312 -1.3944 TD +0.1167 Tw +[(formal arguments to the function. If the argument list is )]TJ +/TT8 1 Tf +6 0 0 6 363.363 127.18 Tm +0.28 Tw +(\( \) )Tj +/TT6 1 Tf +9 0 0 9 381.1253 127.18 Tm +0 Tw +(or )Tj +/TT8 1 Tf +6 0 0 6 392.8936 127.18 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 403.6953 127.18 Tm +0.1167 Tw +(, this indicates that the function)Tj +-30.855 -1.2222 TD +0.1044 Tw +[(takes no arguments. When a lambda-spread function is applied to some arguments, the arguments)]TJ +T* +0.1533 Tw +(are evaluated, and bound to the local variables )Tj +/TT13 1 Tf +22.1217 0 TD +0 Tw +(ARG)Tj +6 0 0 6 341.3 103.18 Tm +(1)Tj +9 0 0 9 344.9 105.18 Tm +0.3678 Tw +[( ... ARG)]TJ +6 0 0 6 394.72 103.18 Tm +0 Tw +(M)Tj +/TT6 1 Tf +9 0 0 9 398.32 105.18 Tm +0.1533 Tw +[(. Then, )]TJ +/TT13 1 Tf +3.9659 0 TD +0 Tw +(FORM)Tj +6 0 0 6 455.62 103.18 Tm +(1)Tj +9 0 0 9 459.22 105.18 Tm +0.3678 Tw +[( ... FORM)]TJ +6 0 0 6 514.4399 103.18 Tm +0 Tw +(N)Tj +/TT6 1 Tf +9 0 0 9 518.0399 105.18 Tm +0.1533 Tw +[( are)]TJ +-43.56 -1.3944 TD +0 Tw +(evaluated in order, and the value of the function is the value of)Tj +/TT8 1 Tf +6 0 0 6 376.3169 92.63 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 379.9175 92.63 Tm +(FORM)Tj +6 0 0 6 401.52 90.63 Tm +(N)Tj +/TT6 1 Tf +9 0 0 9 405.12 92.63 Tm +(.)Tj +/TT9 1 Tf +6 0 0 6 162 78.63 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DEFINEQ \(FOO \(LAMBDA \(X Y\) \(LIST X Y\)\)\)\))Tj +2.0132 -1 TD +(\(FOO\))Tj +/TT9 1 Tf +-3 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 99 \(PLUS 3 4\)\))Tj +2.0132 -1 TD +(\(99 7\))Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT9 9 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +19 0 obj +<< +/Length 8210 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-3)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0456 Tw +(In the above example, the function )Tj +/TT8 1 Tf +6 0 0 6 220.3423 569.54 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 231.1441 569.54 Tm +0.0456 Tw +[( defined by )]TJ +/TT8 1 Tf +6 0 0 6 279.5801 569.54 Tm +0.1083 Tw +(\(LAMBDA \(X Y\) \(LIST X Y\)\))Tj +/TT6 1 Tf +9 0 0 9 372.8448 569.54 Tm +0.0456 Tw +[( is applied to the arguments)]TJ +/TT8 1 Tf +6 0 0 6 78 558.54 Tm +0 Tw +(99)Tj +/TT6 1 Tf +9 0 0 9 85.2012 558.54 Tm +0.0644 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 106.097 558.54 Tm +0.1533 Tw +(\(PLUS 3 4\))Tj +/TT6 1 Tf +9 0 0 9 143.9429 558.54 Tm +0.0644 Tw +[(. These arguments are evaluated \(giving )]TJ +/TT8 1 Tf +6 0 0 6 312.0463 558.54 Tm +0 Tw +(99)Tj +/TT6 1 Tf +9 0 0 9 319.2475 558.54 Tm +0.0644 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 340.1433 558.54 Tm +0 Tw +(7)Tj +/TT6 1 Tf +9 0 0 9 343.7439 558.54 Tm +0.0644 Tw +(\), the local variable )Tj +/TT8 1 Tf +6 0 0 6 423.6098 558.54 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 427.2104 558.54 Tm +0.0644 Tw +[( is bound to )]TJ +/TT8 1 Tf +6 0 0 6 478.8678 558.54 Tm +0 Tw +(99)Tj +/TT6 1 Tf +9 0 0 9 78 547.54 Tm +(and )Tj +/TT8 1 Tf +6 0 0 6 95.4858 547.54 Tm +(Y)Tj +/TT6 1 Tf +9 0 0 9 99.0864 547.54 Tm +( to )Tj +/TT8 1 Tf +6 0 0 6 111.435 547.54 Tm +(7)Tj +/TT6 1 Tf +9 0 0 9 115.0356 547.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 119.5356 547.54 Tm +(\(LIST X Y\))Tj +/TT6 1 Tf +9 0 0 9 155.5415 547.54 Tm +( is evaluated, returning )Tj +/TT8 1 Tf +6 0 0 6 250.2964 547.54 Tm +(\(99 7\))Tj +/TT6 1 Tf +9 0 0 9 271.8999 547.54 Tm +(, and this is returned as the value of the function.)Tj +-21.5444 -2 TD +0.02 Tw +(A standard feature of the Interlisp system is that no error occurs if a spread function is called with too)Tj +0 -1.2222 TD +0.0855 Tw +[(many or too few arguments. If a function is called with too many argumnents, the extra arguments)]TJ +T* +0.02 Tw +[(are evaluated but ignored. If a function is called with too few arguments, the unsupplied ones will be)]TJ +T* +0.0067 Tw +(delivered as )Tj +/TT8 1 Tf +6 0 0 6 128.7406 496.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 139.5424 496.54 Tm +0.0067 Tw +[(. In fact, a spread function cannot distinguish between being given )]TJ +/TT8 1 Tf +6 0 0 6 409.0627 496.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 419.8644 496.54 Tm +0.0067 Tw +[( as an argument,)]TJ +-37.9849 -1.2222 TD +0.0489 Tw +(and not being given that argument, e.g., )Tj +/TT8 1 Tf +6 0 0 6 242.4076 485.54 Tm +0 Tw +(\(FOO\) )Tj +/TT6 1 Tf +9 0 0 9 264.7212 485.54 Tm +(and )Tj +/TT8 1 Tf +6 0 0 6 282.647 485.54 Tm +0.1183 Tw +(\(FOO NIL\))Tj +/TT6 1 Tf +9 0 0 9 315.7623 485.54 Tm +0.0489 Tw +[( are exactly the same for spread functions.)]TJ +-26.418 -1.2222 TD +0.2133 Tw +(If it is necessary to distinguish between these two cases, use an nlambda function and explicitly)Tj +T* +0 Tw +(evaluate the arguments with the )Tj +/TT8 1 Tf +6 0 0 6 208.9395 463.54 Tm +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 223.3418 463.54 Tm +( function.)Tj +/TT4 1 Tf +10 0 0 10 78 441.2 Tm +(Nlambda-Spread Functions)Tj +/TT6 1 Tf +9 0 0 9 78 425.54 Tm +0.0478 Tw +[(Nlambda-spread functions take a fixed number of unevaluated arguments. An nlambda-spread expr)]TJ +T* +0 Tw +(definition has the form:)Tj +/TT8 1 Tf +6 0 0 6 114 398.26 Tm +(\(NLAMBDA)Tj +/TT13 1 Tf +9 0 0 9 142.8047 398.26 Tm +( \(ARG)Tj +6 0 0 6 169.8 396.26 Tm +(1)Tj +9 0 0 9 173.4 398.26 Tm +( ... ARG)Tj +6 0 0 6 216.6 396.26 Tm +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT13 1 Tf +9 0 0 9 223.8006 398.26 Tm +( FORM)Tj +6 0 0 6 250.8 396.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 254.4 398.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 257.18 398.26 Tm +(... FORM)Tj +6 0 0 6 300.38 396.26 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 78 380.71 Tm +0.3933 Tw +(Nlambda-spread functions are evaluated similarly to lanbda-spread functions, except that the)Tj +0 -1.2222 TD +0 Tw +(arguments are not evaluated before being bound to the variables)Tj +/TT13 1 Tf +28.5791 0 TD +( ARG)Tj +6 0 0 6 356.81 367.71 Tm +(1)Tj +9 0 0 9 360.41 369.71 Tm +( ... ARG)Tj +6 0 0 6 403.61 367.71 Tm +(M)Tj +/TT6 1 Tf +9 0 0 9 407.21 369.71 Tm +(.)Tj +/TT9 1 Tf +6 0 0 6 114 355.71 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DEFINEQ \(FOO \(NLAMBDA \(X Y\) \(LIST X Y\)\)\)\))Tj +1.0132 -1 TD +(\(FOO\))Tj +/TT9 1 Tf +-2 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 99 \(PLUS 3 4\)\))Tj +1.0132 -1 TD +(\(99 \(PLUS 3 4\)\))Tj +/TT6 1 Tf +9 0 0 9 78 318.16 Tm +0.02 Tw +(In the above example, the function )Tj +/TT8 1 Tf +6 0 0 6 218.9623 318.16 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 229.7641 318.16 Tm +0.02 Tw +[( defined by)]TJ +/TT8 1 Tf +6 0 0 6 275.0801 318.16 Tm +0.0483 Tw +[( \(NLAMBDA \(X Y\) \(LIST X Y\)\))]TJ +/TT6 1 Tf +9 0 0 9 374.0359 318.16 Tm +0.02 Tw +[( is applied to the arguments)]TJ +/TT8 1 Tf +6 0 0 6 78 307.16 Tm +0 Tw +(99)Tj +/TT6 1 Tf +9 0 0 9 85.2012 307.16 Tm +0.0544 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 105.917 307.16 Tm +0.13 Tw +(\(PLUS 3 4\))Tj +/TT6 1 Tf +9 0 0 9 143.4829 307.16 Tm +0.0544 Tw +[(. These arguments are unevaluated to )]TJ +/TT8 1 Tf +6 0 0 6 300.9016 307.16 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 304.5022 307.16 Tm +0.0544 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 325.218 307.16 Tm +0 Tw +(Y)Tj +/TT6 1 Tf +9 0 0 9 328.8186 307.16 Tm +0.0544 Tw +(. )Tj +/TT8 1 Tf +6 0 0 6 336.5486 307.16 Tm +0.13 Tw +[( \(LIST X Y\))]TJ +/TT6 1 Tf +9 0 0 9 378.4951 307.16 Tm +0.0544 Tw +[( is evaluated, returning )]TJ +/TT8 1 Tf +6 0 0 6 475.21 307.16 Tm +0 Tw +(\(99)Tj +-66.2017 -1.8333 TD +(\(PLUS 3 4\)\))Tj +/TT6 1 Tf +9 0 0 9 117.6064 296.16 Tm +(, and this is returned as the value of the function.)Tj +-4.4007 -2 TD +0.0733 Tw +(Functions can be defined so that all of their arguments are evaluated \(lambda functions\) or none are)Tj +0 -1.2222 TD +0.0711 Tw +[(evaluated \(nlambda functions\). If it is desirable to write a function which only evaluates some of its)]TJ +T* +0.0289 Tw +(arguments \(e.g., )Tj +/TT8 1 Tf +6 0 0 6 144.8159 256.16 Tm +0 Tw +(SETQ)Tj +/TT6 1 Tf +9 0 0 9 159.2182 256.16 Tm +0.0289 Tw +(\), the functions should be defined as an nlambda, with some arguments explicitly)Tj +-9.0243 -1.2222 TD +0.0433 Tw +(evaluated using the function )Tj +/TT8 1 Tf +6 0 0 6 195.6987 245.16 Tm +0 Tw +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 210.101 245.16 Tm +0.0433 Tw +[(. If this is done, the user should put the symbol )]TJ +/TT8 1 Tf +6 0 0 6 405.9475 245.16 Tm +0 Tw +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 420.3499 245.16 Tm +0.0433 Tw +[( on the property)]TJ +-38.0389 -1.2222 TD +0.1156 Tw +(list of the function under the property )Tj +/TT8 1 Tf +6 0 0 6 238.3855 234.16 Tm +0 Tw +(INFO)Tj +/TT6 1 Tf +9 0 0 9 252.7878 234.16 Tm +0.1156 Tw +[(. This informs various system packages, such as DWIM,)]TJ +-19.4209 -1.2222 TD +0.1056 Tw +(CLISP, and Masterscope, that this function in fact does evaluate its arguments, even though it is an)Tj +T* +0 Tw +(nlambda.)Tj +/TT17 1 Tf +0 -2 TD +(Warning)Tj +/TT6 1 Tf +4 0 TD +0.0167 Tw +[(: A frequent problem that occurs when evaluating arguments to nlambda functions with )]TJ +/TT8 1 Tf +6 0 0 6 471.578 194.16 Tm +0 Tw +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 78 183.16 Tm +0.1111 Tw +(is that the form being evaluated may reference variables that are not accessible within the nlambda)Tj +0 -1.2222 TD +0.0878 Tw +[(function. This is usually not a problem when interpreting code, but when the code is compiled, the)]TJ +T* +0.0689 Tw +[(values of local variables may not be accessible on the stack \(see Chapter 18\). The system nlambda)]TJ +T* +0.0667 Tw +(functions that evaluate their arguments \(such as )Tj +/TT8 1 Tf +6 0 0 6 275.6033 150.16 Tm +0 Tw +(SETQ)Tj +/TT6 1 Tf +9 0 0 9 290.0057 150.16 Tm +0.0667 Tw +(\) are expanded in-line by the compiler, so this is)Tj +-23.5562 -1.2222 TD +0.1211 Tw +[(not a problem. Using the macro facility is recommended in cases where it is necessary to evaluate)]TJ +T* +0 Tw +(some arguments to an nlambda function.)Tj +/TT4 1 Tf +10 0 0 10 78 105.82 Tm +(Lambda-Nospread Functions)Tj +/TT6 1 Tf +9 0 0 9 78 90.16 Tm +0.1878 Tw +[(Lambda-nospread functions take a variable number of evaluated arguments. A lambda-nospread)]TJ +T* +0 Tw +(expr definition has the form:)Tj +/TT8 1 Tf +6 0 0 6 114 62.88 Tm +(\(LAMBDA)Tj +/TT13 1 Tf +9 0 0 9 139.2041 62.88 Tm +( VAR FORM)Tj +6 0 0 6 187.8 60.88 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 191.4 62.88 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 194.18 62.88 Tm +(... FORM)Tj +6 0 0 6 237.38 60.88 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT9 9 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT17 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +24 0 obj +<< +/Length 7078 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-4)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT13 1 Tf +9 0 0 9 126 569.54 Tm +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1667 Tw +[( may be any symbol, except )]TJ +/TT8 1 Tf +6 0 0 6 263.3203 569.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 274.1221 569.54 Tm +0.1667 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 296.8579 569.54 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 300.4585 569.54 Tm +0.1667 Tw +[(. When a lambda-nospread function is applied to some)]TJ +-19.3843 -1.2889 TD +0.1689 Tw +(arguments, each of these arguments is evaluated and the values stored on the stack. )Tj +/TT13 1 Tf +40.0099 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1689 Tw +[( is then)]TJ +-41.8102 -1.2889 TD +0.16 Tw +[(bound to the number of arguments which have been evaluated. For example, if )]TJ +/TT8 1 Tf +6 0 0 6 465.2337 546.34 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 476.0355 546.34 Tm +0.16 Tw +[( is defined by)]TJ +/TT8 1 Tf +6 0 0 6 126 535.34 Tm +0.1033 Tw +(\(LAMBDA X ...\))Tj +/TT6 1 Tf +9 0 0 9 177.6482 535.34 Tm +0.0433 Tw +(, when)Tj +/TT8 1 Tf +6 0 0 6 204.8316 535.34 Tm +0.1033 Tw +[( \(FOO A B C\))]TJ +/TT6 1 Tf +9 0 0 9 250.5187 535.34 Tm +0.0433 Tw +[( is evaluated, )]TJ +/TT8 1 Tf +6 0 0 6 306.3083 535.34 Tm +0 Tw +(A)Tj +/TT6 1 Tf +9 0 0 9 309.9089 535.34 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 314.7989 535.34 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 318.3995 535.34 Tm +0.0433 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 341.1653 535.34 Tm +0 Tw +(C)Tj +/TT6 1 Tf +9 0 0 9 344.7659 535.34 Tm +0.0433 Tw +[( are evaluated and )]TJ +/TT8 1 Tf +6 0 0 6 422.114 535.34 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 425.7146 535.34 Tm +0.0433 Tw +[( is bound to )]TJ +/TT8 1 Tf +6 0 0 6 476.612 535.34 Tm +0 Tw +(3)Tj +/TT6 1 Tf +9 0 0 9 480.2126 535.34 Tm +0.0433 Tw +(. )Tj +/TT13 1 Tf +0.8367 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[( should)]TJ +-41.9939 -1.2889 TD +0 Tw +(never be reset)Tj +0 -2 TD +(The following functions are used for accessing the arguments of lambda-nospread functions.)Tj +/TT8 1 Tf +6 0 0 6 150 486.46 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 486.46 Tm +(ARG)Tj +/F3 1 Tf +10 0 0 10 169.8 486.46 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 172.67 486.46 Tm +(VAR M)Tj +/TT8 1 Tf +6 0 0 6 199.6744 486.46 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 203.275 486.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.97 486.46 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.07 Tw +(Returns the )Tj +/TT13 1 Tf +5.5043 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.07 Tw +(th argument for the lambda-nospread function whose argument list is )Tj +/TT13 1 Tf +31.845 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT13 1 Tf +-39.7497 -1.2889 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1322 Tw +[( is the name of the atomic argument list to a lambda-nospread function, and is not)]TJ +-1.8003 -1.2889 TD +0.0356 Tw +(evaluated. )Tj +/TT13 1 Tf +5.1751 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.0356 Tw +[( is the number of the desired argument, and is evaluated. The value of )]TJ +/TT8 1 Tf +6 0 0 6 514.0923 446.66 Tm +0 Tw +(ARG)Tj +/TT6 1 Tf +9 0 0 9 524.8941 446.66 Tm +0.0356 Tw +[( is)]TJ +-38.9882 -1.2889 TD +0 Tw +(undefined for )Tj +/TT13 1 Tf +6.3447 0 TD +(M)Tj +/TT6 1 Tf +0.6001 0 TD +( less than or equal to 0 or greater than the value of )Tj +/TT13 1 Tf +22.3696 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +6 0 0 6 150 415.18 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 415.18 Tm +(SETARG)Tj +/F3 1 Tf +10 0 0 10 186 415.18 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 188.87 415.18 Tm +(VAR M X)Tj +/TT8 1 Tf +6 0 0 6 226.6761 415.18 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 230.2767 415.18 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.97 415.18 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.0422 Tw +(Sets the )Tj +/TT13 1 Tf +3.7256 0 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +(th argument for the lambda-nospread function whose argument list is )Tj +/TT13 1 Tf +31.5672 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +[( to )]TJ +/TT13 1 Tf +1.4565 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT13 1 Tf +-39.7498 -1.2889 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( is not evaluated; )Tj +/TT13 1 Tf +8.023 0 TD +(M)Tj +/TT6 1 Tf +0.6001 0 TD +( and )Tj +/TT13 1 Tf +2.1929 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( are evaluated. )Tj +/TT13 1 Tf +6.978 0 TD +(M)Tj +/TT6 1 Tf +0.6001 0 TD +( should be between 1 and the value of )Tj +/TT13 1 Tf +16.9683 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-44.8963 -2.0667 TD +0.1367 Tw +(In the example below, the function )Tj +/TT8 1 Tf +6 0 0 6 273.8028 368.38 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 284.6046 368.38 Tm +0.1367 Tw +[( is defined to collect and return a list of all of the evaluated)]TJ +-17.6227 -1.2222 TD +0 Tw +(arguments it is given \(the value of the for statement\).)Tj +/TT9 1 Tf +6 0 0 6 162 344.93 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DEFINEQ \(FOO )Tj +-0.9868 -1 TD +( \(LAMBDA X \(for ARGNUM from 1 to X collect \(ARG X ARGNUM\)])Tj +2 -1 TD +(\(FOO\))Tj +/TT9 1 Tf +-2 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 99 \(PLUS 3 4\)\))Tj +1.0132 -1 TD +(\(99 7\))Tj +/TT9 1 Tf +-2 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 99 \(PLUS 3 4\)\(TIMES 3 4\)\)\))Tj +1.0132 -1 TD +(\(99 7 12\))Tj +/TT4 1 Tf +10 0 0 10 126 281.04 Tm +(NLambda-Nospread Functions)Tj +/TT6 1 Tf +9 0 0 9 126 265.38 Tm +0.3044 Tw +[(Nlambda-nospread functions take a variable number of unevaluated arguments. An nlambda-)]TJ +0 -1.2222 TD +0 Tw +(nospread expr definition has the form:)Tj +/TT8 1 Tf +6 0 0 6 162 239.98 Tm +(\(NLAMBDA)Tj +/TT13 1 Tf +9 0 0 9 190.8047 239.98 Tm +( VAR FORM)Tj +6 0 0 6 239.4 237.98 Tm +(1)Tj +9 0 0 9 243 239.98 Tm +( ... FORM)Tj +6 0 0 6 291.6 237.98 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT13 1 Tf +9 0 0 9 126 222.43 Tm +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2978 Tw +[( may be any symbol, except )]TJ +/TT8 1 Tf +6 0 0 6 270.4003 222.43 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 281.2021 222.43 Tm +0.2978 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 306.2979 222.43 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 309.8985 222.43 Tm +0.2978 Tw +[(. Though similar in form to lambda-nospread expr)]TJ +-20.4332 -1.2889 TD +0.0022 Tw +(definitions, an nlambda-nospread is evaluated quite differently. When an nlambda-nospread function)Tj +0 -1.2222 TD +0.0556 Tw +(is applied to some arguments, )Tj +/TT13 1 Tf +13.8183 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +[( is simply bound to a list of the unevaluated arguments. The user)]TJ +-15.6186 -1.2889 TD +0 Tw +(may pick apart this list, and evaluate different arguments.)Tj +0 -2 TD +0.2911 Tw +(In the example below, )Tj +/TT8 1 Tf +6 0 0 6 226.5547 170.23 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 237.3564 170.23 Tm +0.2911 Tw +[( is defined to return the reverse of the list of arguments it is given)]TJ +-12.3729 -1.2222 TD +0 Tw +(\(unevaluated\):)Tj +/TT9 1 Tf +6 0 0 6 162 146.78 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(DEFINEQ \(FOO \(NLAMBDA X \(REVERSE X\)\)\)\) )Tj +1.0132 -1 TD +(\(FOO\))Tj +/TT9 1 Tf +-2 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 99 \(PLUS 3 4\)\))Tj +1.0132 -1 TD +(\(\(PLUS 3 4\) 99\))Tj +/TT9 1 Tf +-2 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(FOO 99 \(PLUS 3 4\)\(TIMES 3 4\)\))Tj +1.0132 -1 TD +(\(TIMES 3 4\)\(PLUS 3 4\) 99\))Tj +/TT6 1 Tf +9 0 0 9 126 93.23 Tm +0.1878 Tw +(The warning about evaluating arguments to nlambda functions also applies to nlambda-nospread)Tj +0 -1.2222 TD +0 Tw +(function. )Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 26 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT9 9 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +28 0 obj +<< +/Length 10310 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-5)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT4 1 Tf +-14.43 -4.38 TD +(Compiled Functions)Tj +/TT6 1 Tf +9 0 0 9 78 552.54 Tm +0.0189 Tw +[(Functions defined by expr definitions can be compiled by the Interlisp compiler \(see Chapter 18\). The)]TJ +0 -1.2222 TD +0.12 Tw +(compiler produces compiled code objects \(of data type )Tj +/TT8 1 Tf +6 0 0 6 306.0106 541.54 Tm +0 Tw +(CCODEP)Tj +/TT6 1 Tf +9 0 0 9 327.6141 541.54 Tm +0.12 Tw +(\) which execute more quickly than the)Tj +-27.7349 -1.2222 TD +0.0644 Tw +[(corresponding expr definition code. Functions defined by compiled code objects may have the same)]TJ +T* +0.3433 Tw +[(four types as expr definitions \(lambda/nlambda, spread/nospread\). Functions created by the)]TJ +T* +0 Tw +(compiler are referred to as compiled functions.)Tj +/TT4 1 Tf +10 0 0 10 78 486.2 Tm +(Function Type Functions)Tj +/TT6 1 Tf +9 0 0 9 78 470.54 Tm +0.0956 Tw +[(There are a variety of functions used for examining the type, argument list, etc. of functions. These)]TJ +T* +0.1 Tw +[(functions may be given either a symbol \(in which case they obtain the function definition from the)]TJ +T* +0 Tw +(definition cell\), or a function definition itself.)Tj +/TT8 1 Tf +6 0 0 6 102 429.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 429.26 Tm +(FNTYP)Tj +/F3 1 Tf +10 0 0 10 132.6 429.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 135.47 429.26 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 146.2717 429.26 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 149.8723 429.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 429.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +6 0 0 6 159.6434 412.66 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 170.4452 412.66 Tm +0.0111 Tw +[( if )]TJ +/TT13 1 Tf +1.1462 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0111 Tw +[( is not a function definition or the name of a defined function. Otherwise,)]TJ +/TT8 1 Tf +6 0 0 6 126 401.06 Tm +0 Tw +(FNTYP)Tj +/TT6 1 Tf +9 0 0 9 144.0029 401.06 Tm +( returns one of the following symbols, depending on the type of function definition.)Tj +/TT8 1 Tf +6 0 0 6 183.6 388.06 Tm +(EXPR)Tj +/TT6 1 Tf +9 0 0 9 204 388.06 Tm +(Lambda-spread expr definition)Tj +/TT8 1 Tf +6 0 0 6 180 375.34 Tm +(CEXPR)Tj +/TT6 1 Tf +9 0 0 9 204 375.34 Tm +(Lambda-spread compiled definition)Tj +/TT8 1 Tf +6 0 0 6 180 362.34 Tm +(FEXPR)Tj +/TT6 1 Tf +9 0 0 9 204 362.34 Tm +(Nlambda-spread expr definition)Tj +/TT8 1 Tf +6 0 0 6 176.4 349.34 Tm +(CFEXPR)Tj +/TT6 1 Tf +9 0 0 9 204 349.34 Tm +(Nlambda-spread compiled definition)Tj +/TT8 1 Tf +6 0 0 6 180 336.62 Tm +(EXPR*)Tj +/TT6 1 Tf +9 0 0 9 204 336.62 Tm +(Lambda-nospread expr definition)Tj +/TT8 1 Tf +6 0 0 6 176.4 323.9 Tm +(CEXPR*)Tj +/TT6 1 Tf +9 0 0 9 204 323.9 Tm +(Lambda-nospread compiled definition)Tj +/TT8 1 Tf +6 0 0 6 176.4 311.18 Tm +(FEXPR*)Tj +/TT6 1 Tf +9 0 0 9 204 311.18 Tm +(Nlambda-nospread expr definition)Tj +/TT8 1 Tf +6 0 0 6 172.8 298.46 Tm +(CFEXPR*)Tj +/TT6 1 Tf +9 0 0 9 204 298.46 Tm +(Nlambda-nospread compiled definition)Tj +/TT8 1 Tf +6 0 0 6 176.4 285.74 Tm +[(FUNARG)-999.4(FNTYP)]TJ +/TT6 1 Tf +9 0 0 9 222 283.74 Tm +( )Tj +0.25 0.2222 TD +(returns the symbol)Tj +8.3456 -0.2222 TD +( )Tj +/TT8 1 Tf +6 0 0 6 301.61 285.74 Tm +(FUNARG)Tj +/TT6 1 Tf +9 0 0 9 323.21 283.74 Tm +( )Tj +0.25 0.2222 TD +(if)Tj +0.6244 -0.2222 TD +( )Tj +/TT13 1 Tf +0.25 0.2222 TD +(FN)Tj +/TT6 1 Tf +1.2 -0.2222 TD +( )Tj +0.25 0.2222 TD +(is a)Tj +1.4656 -0.2222 TD +( )Tj +/TT8 1 Tf +6 0 0 6 361.82 285.74 Tm +(FUNARG)Tj +/TT6 1 Tf +9 0 0 9 383.42 283.74 Tm +( )Tj +0.25 0.2222 TD +(expression.)Tj +/TT8 1 Tf +6 0 0 6 126 267.74 Tm +(EXP)Tj +/TT6 1 Tf +9 0 0 9 136.8017 267.74 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 142.1917 267.74 Tm +(FEXPR)Tj +/TT6 1 Tf +9 0 0 9 160.1947 267.74 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 165.5847 267.74 Tm +(EXPR*,)Tj +/TT6 1 Tf +9 0 0 9 187.1882 267.74 Tm +0.0989 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 208.704 267.74 Tm +0 Tw +(FEXPR*)Tj +/TT6 1 Tf +9 0 0 9 230.3075 267.74 Tm +0.0989 Tw +[( indicate that )]TJ +/TT13 1 Tf +6.305 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0989 Tw +[( is defined by an expr definition. )]TJ +/TT8 1 Tf +6 0 0 6 438.7611 267.74 Tm +0 Tw +(CEXPR)Tj +/TT6 1 Tf +9 0 0 9 456.764 267.74 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 462.1541 267.74 Tm +(CFEXPR)Tj +/TT6 1 Tf +9 0 0 9 483.7576 267.74 Tm +(,)Tj +/TT8 1 Tf +6 0 0 6 126 256.14 Tm +(CEXPR*)Tj +/TT6 1 Tf +9 0 0 9 147.6035 256.14 Tm +0.0433 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 170.3693 256.14 Tm +0 Tw +(CFEXPR*)Tj +/TT6 1 Tf +9 0 0 9 195.5734 256.14 Tm +0.0433 Tw +[( indicate that )]TJ +/TT13 1 Tf +6.1383 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0433 Tw +[( is defined by a compiled definition, as indicated by the)]TJ +-15.0689 -1.2889 TD +0 Tw +(prefix )Tj +/TT8 1 Tf +6 0 0 6 152.8771 244.54 Tm +(C)Tj +/TT6 1 Tf +9 0 0 9 156.4777 244.54 Tm +0.1211 Tw +[(. The suffix )]TJ +/TT8 1 Tf +6 0 0 6 209.6521 244.54 Tm +0 Tw +(*)Tj +/TT6 1 Tf +9 0 0 9 213.2527 244.54 Tm +0.1211 Tw +[( indicates that )]TJ +/TT13 1 Tf +6.7955 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1211 Tw +[( has an indefinite number of arguments, i.e., is a)]TJ +-17.6904 -1.2889 TD +0.0789 Tw +[(nospread function. The prefix)]TJ +/TT8 1 Tf +6 0 0 6 249.2941 232.94 Tm +0.19 Tc +0 Tw +( F)Tj +/TT6 1 Tf +9 0 0 9 257.6353 232.94 Tm +0 Tc +0.0789 Tw +[( indicates unevaluated arguments. Thus, for example, a)]TJ +/TT8 1 Tf +6 0 0 6 126 221.94 Tm +0 Tw +(CFEXPR*)Tj +/TT6 1 Tf +9 0 0 9 151.2041 221.94 Tm +( is a compiled nospread nlambda function.)Tj +/TT8 1 Tf +6 0 0 6 102 202.66 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 202.66 Tm +(EXPRP)Tj +/F3 1 Tf +10 0 0 10 132.6 202.66 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 135.47 202.66 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 146.2717 202.66 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 149.8723 202.66 Tm +[( )-28242.8([Function])]TJ +/TT6 1 Tf +9 0 0 9 126 186.06 Tm +(Returns )Tj +/TT8 1 Tf +6 0 0 6 159.7034 186.06 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 163.304 186.06 Tm +0.0178 Tc +( i)Tj +/TT8 1 Tf +6 0 0 6 168.3332 186.06 Tm +0 Tc +(f)Tj +/TT6 1 Tf +9 0 0 9 171.9338 186.06 Tm +( )Tj +/TT8 1 Tf +6 0 0 6 174.3438 186.06 Tm +(\(FNTYP)Tj +/TT15 1 Tf +9 0 0 9 195.9473 186.06 Tm +( )Tj +/TT13 1 Tf +0.6423 0 TD +(FN)Tj +/TT8 1 Tf +6 0 0 6 212.5299 186.06 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 216.1305 186.06 Tm +0.0178 Tw +[( is )]TJ +/TT8 1 Tf +6 0 0 6 227.3841 186.06 Tm +0 Tw +(EXPR)Tj +/TT6 1 Tf +9 0 0 9 241.7864 186.06 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 246.4464 186.06 Tm +(FEXPR)Tj +/TT6 1 Tf +9 0 0 9 264.4494 186.06 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 269.1094 186.06 Tm +(EXPR*,)Tj +/TT6 1 Tf +9 0 0 9 290.7129 186.06 Tm +0.0178 Tw +[( or)]TJ +/TT8 1 Tf +6 0 0 6 301.5912 186.06 Tm +0.0417 Tw +[( FEXPR*)]TJ +/TT6 1 Tf +9 0 0 9 327.0453 186.06 Tm +0.0178 Tw +(; )Tj +/TT8 1 Tf +6 0 0 6 334.1153 186.06 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 344.917 186.06 Tm +0.0178 Tw +[( otherwise. However, )]TJ +/TT8 1 Tf +6 0 0 6 435.4296 186.06 Tm +0 Tw +(\(EXPRP)Tj +/TT15 1 Tf +9 0 0 9 457.0331 186.06 Tm +( )Tj +/TT13 1 Tf +0.6423 0 TD +(FN)Tj +/TT8 1 Tf +6 0 0 6 473.6157 186.06 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 477.2163 186.06 Tm +0.0178 Tw +[( is)]TJ +-39.024 -1.2889 TD +0.0822 Tw +(also true if )Tj +/TT13 1 Tf +5.1847 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0822 Tw +[( is \(has\) a list definition, even if it does not begin with )]TJ +/TT8 1 Tf +6 0 0 6 408.2311 174.46 Tm +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 429.8346 174.46 Tm +0.0822 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 444.2829 174.46 Tm +0 Tw +(NLAMBDA)Tj +/TT6 1 Tf +9 0 0 9 469.487 174.46 Tm +0.0822 Tw +[(. In)]TJ +-38.1652 -1.2889 TD +0 Tw +(other words, )Tj +/TT8 1 Tf +6 0 0 6 178.9892 162.86 Tm +(EXPRP)Tj +/TT6 1 Tf +9 0 0 9 196.9922 162.86 Tm +( is not quite as selective as )Tj +/TT8 1 Tf +6 0 0 6 303.2256 162.86 Tm +(FNTYP)Tj +/TT6 1 Tf +9 0 0 9 321.2285 162.86 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 143.58 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 143.58 Tm +(CCODEP)Tj +/F3 1 Tf +10 0 0 10 138 143.58 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 140.87 143.58 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 151.6717 143.58 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 155.2723 143.58 Tm +[( )-27702.8([Function])]TJ +/TT6 1 Tf +9 0 0 9 126 126.98 Tm +(Returns )Tj +/TT8 1 Tf +6 0 0 6 159.5434 126.98 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 163.144 126.98 Tm +( if )Tj +/TT8 1 Tf +6 0 0 6 173.2602 126.98 Tm +(\(FNTYP )Tj +/TT13 1 Tf +9 0 0 9 198.4643 126.98 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 209.2661 126.98 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 212.8667 126.98 Tm +( is either )Tj +/TT8 1 Tf +6 0 0 6 249.0205 126.98 Tm +(CEXPR)Tj +/TT6 1 Tf +9 0 0 9 267.0234 126.98 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 271.5234 126.98 Tm +(CFEXPR)Tj +/TT6 1 Tf +9 0 0 9 293.127 126.98 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 297.627 126.98 Tm +(CEXPR*)Tj +/TT6 1 Tf +9 0 0 9 319.2305 126.98 Tm +(, or )Tj +/TT8 1 Tf +6 0 0 6 334.4487 126.98 Tm +(CFEXPR*)Tj +/TT6 1 Tf +9 0 0 9 359.6528 126.98 Tm +(; )Tj +/TT8 1 Tf +6 0 0 6 366.4028 126.98 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 377.2046 126.98 Tm +( otherwise. )Tj +/TT8 1 Tf +6 0 0 6 102 107.1 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 107.1 Tm +(ARGTYPE)Tj +/F3 1 Tf +10 0 0 10 143.4 107.1 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 146.27 107.1 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 157.0717 107.1 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 160.6723 107.1 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 107.1 Tm +([Function])Tj +/TT13 1 Tf +-35.4033 -1.8444 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0178 Tw +[( is the name of a function or its definition. )]TJ +/TT8 1 Tf +6 0 0 6 309.0739 90.5 Tm +0 Tw +(ARGTYPE)Tj +/TT6 1 Tf +9 0 0 9 334.278 90.5 Tm +0.0178 Tw +[( returns )]TJ +/TT8 1 Tf +6 0 0 6 367.935 90.5 Tm +0 Tw +(0)Tj +/TT6 1 Tf +9 0 0 9 371.5356 90.5 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 376.1956 90.5 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 379.7961 90.5 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 384.4561 90.5 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 388.0567 90.5 Tm +0.0178 Tw +(, or )Tj +/TT8 1 Tf +6 0 0 6 403.595 90.5 Tm +0 Tw +(3)Tj +/TT6 1 Tf +9 0 0 9 407.1956 90.5 Tm +0.0178 Tw +(, or )Tj +/TT8 1 Tf +6 0 0 6 422.7338 90.5 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 433.5356 90.5 Tm +0.0178 Tw +[( if )]TJ +/TT13 1 Tf +1.1596 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0178 Tw +[( is not a)]TJ +-36.5304 -1.2889 TD +0.05 Tw +[(function. )]TJ +/TT8 1 Tf +6 0 0 6 169.7133 78.9 Tm +0 Tw +(ARGTYPE)Tj +/TT6 1 Tf +9 0 0 9 194.9174 78.9 Tm +0.05 Tw +[( corresponds to the rows of )]TJ +/TT8 1 Tf +6 0 0 6 308.1662 78.9 Tm +0 Tw +(FNTYP)Tj +/TT6 1 Tf +9 0 0 9 326.1691 78.9 Tm +0.05 Tw +[(s. The interpretation of this value is as)]TJ +-22.241 -1.2222 TD +0 Tw +(follows:)Tj +/TT8 1 Tf +6 0 0 6 176.4 53.62 Tm +(0)Tj +/TT6 1 Tf +9 0 0 9 186 53.62 Tm +(Lambda-spread function )Tj +/TT8 1 Tf +6 0 0 6 286.8677 53.62 Tm +(\(EXPR, CEXPR\))Tj +-18.4113 -2.0467 TD +(1)Tj +/TT6 1 Tf +9 0 0 9 186 41.34 Tm +(Nlambda-spread function \()Tj +/TT8 1 Tf +6 0 0 6 294.4658 41.34 Tm +(FEXPR, CFEXPR\))Tj +/TT6 1 Tf +9 0 0 9 344.874 41.34 Tm +( )Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 26 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +31 0 obj +<< +/Length 10618 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-6)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +6 0 0 6 224.4 568.26 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 234 568.26 Tm +(Lambda-nospread function )Tj +/TT8 1 Tf +6 0 0 6 345.019 568.26 Tm +(\(EXPR*, CEXPR*\))Tj +-20.1032 -2.0467 TD +(3)Tj +/TT6 1 Tf +9 0 0 9 234 555.98 Tm +(Nlambda-nospread function )Tj +/TT8 1 Tf +6 0 0 6 349.6201 555.98 Tm +(\(FEXPR*, CFEXPR*\))Tj +-33.27 -2.88 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 538.7 Tm +(NARGS)Tj +/F3 1 Tf +10 0 0 10 180.6 538.7 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 183.47 538.7 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 194.2717 538.7 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 197.8723 538.7 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 538.7 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0433 Tw +(Returns the number of arguments of )Tj +/TT13 1 Tf +16.6252 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0433 Tw +(, or )Tj +/TT8 1 Tf +6 0 0 6 350.4271 522.1 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 361.2289 522.1 Tm +0.0433 Tw +[( if )]TJ +/TT13 1 Tf +1.2107 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0433 Tw +[( is not a function. If )]TJ +/TT13 1 Tf +9.3492 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0433 Tw +[( is a nospread)]TJ +-33.7635 -1.2889 TD +0 Tw +(function, the value of )Tj +/TT8 1 Tf +6 0 0 6 260.9502 510.5 Tm +(NARGS)Tj +/TT6 1 Tf +9 0 0 9 278.9531 510.5 Tm +( is )Tj +/TT8 1 Tf +6 0 0 6 289.8867 510.5 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 293.4873 510.5 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 491.22 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 491.22 Tm +(ARGLIST)Tj +/F3 1 Tf +10 0 0 10 191.4 491.22 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 194.27 491.22 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 205.0717 491.22 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 208.6723 491.22 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 491.22 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2867 Tw +(Returns the argument list for )Tj +/TT13 1 Tf +15.4778 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2867 Tw +[(. Note that the argument list is a symbol for)]TJ +-16.678 -1.2889 TD +0.0789 Tw +[(nospread functions. Since )]TJ +/TT8 1 Tf +6 0 0 6 283.3942 463.02 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 294.196 463.02 Tm +0.0789 Tw +[( is a possible value for )]TJ +/TT8 1 Tf +6 0 0 6 388.7768 463.02 Tm +0 Tw +(ARGLIST)Tj +/TT6 1 Tf +9 0 0 9 413.9809 463.02 Tm +0.0789 Tw +(, the error )Tj +/TT8 1 Tf +6 0 0 6 457.4854 463.02 Tm +0.19 Tw +(Args not available)Tj +/TT6 1 Tf +9 0 0 9 524.5759 463.02 Tm +0.0789 Tw +[( is)]TJ +-38.9529 -1.2222 TD +0 Tw +(generated if )Tj +/TT13 1 Tf +5.5312 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( is not a function.)Tj +-6.7314 -2.0667 TD +(If )Tj +/TT13 1 Tf +1.1299 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.21 Tw +[( is a compiled function, the argument list is constructed, i.e., each call to )]TJ +/TT8 1 Tf +6 0 0 6 508.7851 433.42 Tm +0 Tw +(ARGLIST)Tj +/TT6 1 Tf +9 0 0 9 174 421.82 Tm +0.01 Tw +[(requires making a new list. For functions defined by expr definitions, lists beginning with)]TJ +/TT8 1 Tf +6 0 0 6 174 410.82 Tm +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 195.6035 410.82 Tm +0.0689 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 209.8118 410.82 Tm +0 Tw +(NLAMBDA)Tj +/TT6 1 Tf +9 0 0 9 235.0159 410.82 Tm +0.0689 Tw +(, the argument list is simply )Tj +/TT8 1 Tf +6 0 0 6 351.7237 410.82 Tm +0 Tw +(CADR)Tj +/TT6 1 Tf +9 0 0 9 366.126 410.82 Tm +0.0689 Tw +[( of )]TJ +/TT8 1 Tf +6 0 0 6 379.7762 410.82 Tm +0 Tw +(GETD)Tj +/TT6 1 Tf +9 0 0 9 394.1785 410.82 Tm +0.0689 Tw +[(. If )]TJ +/TT13 1 Tf +1.8766 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0689 Tw +[( has an expr definition, and)]TJ +/TT8 1 Tf +6 0 0 6 174 399.22 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 184.8017 399.22 Tm +0.0256 Tw +[( of the definition is not )]TJ +/TT8 1 Tf +6 0 0 6 278.5855 399.22 Tm +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 300.1891 399.22 Tm +0.0256 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 313.6173 399.22 Tm +0 Tw +(NLAMBDA)Tj +/TT6 1 Tf +9 0 0 9 338.8214 399.22 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 343.5514 399.22 Tm +(ARGLIST)Tj +/TT6 1 Tf +9 0 0 9 368.7555 399.22 Tm +0.0256 Tw +[( will check to see if )]TJ +/TT8 1 Tf +6 0 0 6 447.4442 399.22 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 458.2459 399.22 Tm +0.0256 Tw +[( of the definition is)]TJ +-31.5829 -1.2222 TD +0.0556 Tw +(a member of )Tj +/TT8 1 Tf +6 0 0 6 227.707 388.22 Tm +0 Tw +(LAMBDASPLST)Tj +/TT6 1 Tf +9 0 0 9 267.3135 388.22 Tm +0.0556 Tw +[( \(see Chapter 20\). If it is, )]TJ +/TT8 1 Tf +6 0 0 6 371.5923 388.22 Tm +0 Tw +(ARGLIST)Tj +/TT6 1 Tf +9 0 0 9 396.7964 388.22 Tm +0.0556 Tw +[( presumes this is a function object)]TJ +-24.7552 -1.2222 TD +0.2756 Tw +(the user is defining via )Tj +/TT8 1 Tf +6 0 0 6 279.4059 377.22 Tm +0 Tw +(DWIMUSERFORMS)Tj +/TT6 1 Tf +9 0 0 9 326.2135 377.22 Tm +0.2756 Tw +(, and simply returns )Tj +/TT8 1 Tf +6 0 0 6 418.8693 377.22 Tm +0 Tw +(CADR)Tj +/TT6 1 Tf +9 0 0 9 433.2717 377.22 Tm +0.2756 Tw +[( of the definition as its)]TJ +-28.808 -1.2222 TD +0 Tw +(argument list. Otherwise )Tj +/TT8 1 Tf +6 0 0 6 277.522 366.22 Tm +(ARGLIST)Tj +/TT6 1 Tf +9 0 0 9 302.7261 366.22 Tm +( generates an error as described above.)Tj +/TT8 1 Tf +6 0 0 6 150 346.94 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 346.94 Tm +(SMARTARGLIST)Tj +/F3 1 Tf +10 0 0 10 218.4 346.94 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 221.27 346.94 Tm +(FN EXPLAINFLG TAIL)Tj +/TT8 1 Tf +6 0 0 6 318.4858 346.94 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 322.0864 346.94 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 346.94 Tm +([Function])Tj +-35.4033 -1.8444 TD +(A smart version of )Tj +/TT8 1 Tf +6 0 0 6 259.1968 330.34 Tm +(ARGLIST)Tj +/TT6 1 Tf +9 0 0 9 284.4009 330.34 Tm +( that tries various strategies to get the arglist of )Tj +/TT13 1 Tf +20.9561 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-34.423 -2.0667 TD +(First )Tj +/TT8 1 Tf +6 0 0 6 195.5697 311.74 Tm +(SMARTARGLIST)Tj +/TT6 1 Tf +9 0 0 9 238.7767 311.74 Tm +0.1544 Tw +[( checks the property list of )]TJ +/TT13 1 Tf +12.8529 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1544 Tw +[( under the property )]TJ +/TT8 1 Tf +6 0 0 6 451.4238 311.74 Tm +0 Tw +(ARGNAMES)Tj +/TT6 1 Tf +9 0 0 9 480.2285 311.74 Tm +0.1544 Tw +[(. For spread)]TJ +-34.0254 -1.2889 TD +0.2411 Tw +[(functions, the argument list itself is stored. For nospread functions, the form is \()]TJ +/TT8 1 Tf +6 0 0 6 523.1725 300.14 Tm +0 Tw +(NIL)Tj +-58.1954 -1.8333 TD +(ARGLIST)Tj +4.2 -0.3333 TD +(1)Tj +/TT19 1 Tf +9 0 0 9 202.8 286.14 Tm +( )Tj +0.2611 0.3333 TD +(. )Tj +/TT8 1 Tf +6 0 0 6 209.75 289.14 Tm +(ARGLIST)Tj +4.2 -0.3333 TD +(2)Tj +/TT6 1 Tf +9 0 0 9 238.55 289.14 Tm +0.0111 Tw +(\), where )Tj +/TT8 1 Tf +6 0 0 6 273.4184 289.14 Tm +0 Tw +(ARGLIST)Tj +4.2019 -0.3333 TD +(1)Tj +/TT6 1 Tf +9 0 0 9 302.23 289.14 Tm +0.0111 Tw +[( is the value )]TJ +/TT8 1 Tf +6 0 0 6 352.4904 289.14 Tm +0 Tw +(SMARTARGLIST)Tj +/TT6 1 Tf +9 0 0 9 395.6974 289.14 Tm +0.0111 Tw +[( should return when )]TJ +/TT13 1 Tf +9.3584 0 TD +0 Tw +(EXPLAINFLG)Tj +/TT6 1 Tf +-33.9915 -1.5556 TD +(= )Tj +/TT8 1 Tf +6 0 0 6 184.1336 275.14 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 187.7342 275.14 Tm +0.27 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 214.58 275.14 Tm +0 Tw +(ARGLIST)Tj +4.2 -0.3333 TD +(2)Tj +/TT6 1 Tf +9 0 0 9 243.38 275.14 Tm +0.27 Tw +[( the value when )]TJ +/TT13 1 Tf +8.3822 0 TD +0 Tw +(EXPLAINFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.27 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 387.6426 275.14 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 398.4444 275.14 Tm +0.27 Tw +[(. For example, )]TJ +/TT8 1 Tf +6 0 0 6 468.8792 275.14 Tm +0.6483 Tw +(\(GETPROP DEFINEQ)Tj +-49.1465 -2.0917 TD +0 Tw +(ARGNAMES\) = \(NIL \(X1 Xl ... XN\) . X\))Tj +/TT6 1 Tf +9 0 0 9 307.2217 262.59 Tm +(. This allows the user to specify special argument lists.)Tj +-14.8024 -2 TD +0.0956 Tw +(Second, if )Tj +/TT13 1 Tf +4.7517 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0956 Tw +[( is not defined as a function, )]TJ +/TT8 1 Tf +6 0 0 6 347.7566 244.59 Tm +0 Tw +(SMARTARGLIST)Tj +/TT6 1 Tf +9 0 0 9 390.9636 244.59 Tm +0.0956 Tw +[( attempts spelling correction on )]TJ +/TT13 1 Tf +14.6838 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +-38.7909 -1.2889 TD +0.1778 Tw +(by calling )Tj +/TT8 1 Tf +6 0 0 6 218.2801 232.99 Tm +0 Tw +(FNCHECK)Tj +/TT6 1 Tf +9 0 0 9 243.4842 232.99 Tm +0.1778 Tw +[( \(see Chapter 20\), passing )]TJ +/TT13 1 Tf +12.407 0 TD +0 Tw +(TAIL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1778 Tw +[( to be used for the call to )]TJ +/TT8 1 Tf +6 0 0 6 489.271 232.99 Tm +0 Tw +(FIXSPELL)Tj +/TT6 1 Tf +9 0 0 9 518.0757 232.99 Tm +0.1778 Tw +[(. If)]TJ +-38.2306 -1.2889 TD +0 Tw +(unsuccessful, the )Tj +/TT8 1 Tf +6 0 0 6 244.1147 221.39 Tm +(FN Not a function)Tj +/TT6 1 Tf +9 0 0 9 305.3247 221.39 Tm +( error will be generated.)Tj +-14.5916 -2 TD +0.1122 Tw +(Third, if )Tj +/TT13 1 Tf +4.0902 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1122 Tw +[( is known to the file package \(see Chapter 17\) but not loaded in, )]TJ +/TT8 1 Tf +6 0 0 6 490.8295 203.39 Tm +0 Tw +(SMARTARGLIST)Tj +/TT6 1 Tf +9 0 0 9 174 191.79 Tm +(will obtain the arglist information from the file.)Tj +0 -2 TD +(Otherwise, )Tj +/TT8 1 Tf +6 0 0 6 219.8657 173.79 Tm +(SMARTARGLIST)Tj +/TT6 1 Tf +9 0 0 9 263.0728 173.79 Tm +( simply returns )Tj +/TT8 1 Tf +6 0 0 6 326.0728 173.79 Tm +(\(ARGLIST )Tj +/TT13 1 Tf +9 0 0 9 358.478 173.79 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 369.2798 173.79 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 372.8804 173.79 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 174 155.19 Tm +(SMARTARGLIST)Tj +/TT6 1 Tf +9 0 0 9 217.207 155.19 Tm +0.2789 Tw +[( is used by )]TJ +/TT8 1 Tf +6 0 0 6 271.7153 155.19 Tm +0 Tw +(BREAK)Tj +/TT6 1 Tf +9 0 0 9 289.7182 155.19 Tm +0.2789 Tw +[( \(see Chapter 15\) and )]TJ +/TT8 1 Tf +6 0 0 6 388.5153 155.19 Tm +0 Tw +(ADVISE)Tj +/TT6 1 Tf +9 0 0 9 410.1188 155.19 Tm +0.2789 Tw +[( with )]TJ +/TT13 1 Tf +3.091 0 TD +0 Tw +(EXPLAINFLG)Tj +/TT19 1 Tf +6.001 0 TD +( )Tj +/TT6 1 Tf +0.5289 0 TD +(= )Tj +/TT8 1 Tf +6 0 0 6 506.92 155.19 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 517.7218 155.19 Tm +0.2789 Tw +[( for)]TJ +-38.1913 -1.2889 TD +0.0178 Tw +(constructing equivalent expr definitions, and by the )Tj +/TT8 1 Tf +6 0 0 6 383.3065 143.59 Tm +0 Tw +(TTYIN)Tj +/TT6 1 Tf +9 0 0 9 401.3094 143.59 Tm +0.0178 Tw +[( in-line command )]TJ +/TT8 1 Tf +6 0 0 6 474.2157 143.59 Tm +0 Tw +(?=)Tj +/TT6 1 Tf +9 0 0 9 481.4169 143.59 Tm +0.0178 Tw +[( \(see Chapter)]TJ +-34.1574 -1.2222 TD +0 Tw +(26\), with )Tj +/TT13 1 Tf +4.1162 0 TD +(EXPLAINFLG)Tj +/TT6 1 Tf +6.001 0 TD +( = )Tj +/TT8 1 Tf +6 0 0 6 275.0083 132.59 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 278.6089 132.59 Tm +(. )Tj +/TT4 1 Tf +10 0 0 10 102 109.65 Tm +(Defining Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 106.94 m +558.01 106.94 l +S +BT +/TT6 1 Tf +9 0 0 9 126 92.99 Tm +0.0222 Tw +[(Function definitions are stored in a function definition cell associated with each symbol. This cell is)]TJ +0 -1.2222 TD +0.1522 Tw +(directly accessible via the two functions )Tj +/TT8 1 Tf +6 0 0 6 294.4358 81.99 Tm +0 Tw +(PUTD)Tj +/TT6 1 Tf +9 0 0 9 308.8381 81.99 Tm +0.1522 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 331.314 81.99 Tm +0 Tw +(GETD)Tj +/TT6 1 Tf +9 0 0 9 345.7163 81.99 Tm +0.1522 Tw +[( \(see below\), but it is usually easier to define)]TJ +-24.4129 -1.2222 TD +0 Tw +(functions with )Tj +/TT8 1 Tf +6 0 0 6 185.9765 70.99 Tm +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 211.1806 70.99 Tm +(:)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 26 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +35 0 obj +<< +/Length 9361 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-7)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT8 1 Tf +6 0 0 6 102 568.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 568.26 Tm +(DEFINEQ)Tj +/F3 1 Tf +10 0 0 10 143.4 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 146.27 568.26 Tm +(X)Tj +6 0 0 6 151.67 566.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 155.27 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 158.05 568.26 Tm +(X)Tj +6 0 0 6 163.45 566.26 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 167.05 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 169.83 568.26 Tm +(... X)Tj +6 0 0 6 196.83 566.26 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/F1 1 Tf +10 0 0 10 204.0306 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 568.26 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +6 0 0 6 126 550.71 Tm +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 151.2041 550.71 Tm +0.04 Tw +[( is the function normally used for defining functions. It takes an indefinite number)]TJ +-2.8005 -1.2222 TD +0.01 Tw +[(of arguments which are not evaluated. Each )]TJ +/TT13 1 Tf +20.0087 0 TD +0 Tw +(X)Tj +6 0 0 6 311.5 537.71 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 315.1 539.71 Tm +0.01 Tw +[( must be a list defining one function, of the)]TJ +-21.0111 -1.3944 TD +0 Tw +(form )Tj +/TT8 1 Tf +6 0 0 6 147.6606 527.16 Tm +(\(NAME DEFINITION\))Tj +/TT6 1 Tf +9 0 0 9 208.8706 527.16 Tm +(. For example:)Tj +/TT8 1 Tf +6 0 0 6 162 514.71 Tm +(\(DEFINEQ \(DOUBLE \(LAMBDA \(X\) \(IPLUS X X\)\)\)\))Tj +/TT6 1 Tf +9 0 0 9 126 499.16 Tm +0.1344 Tw +(The above expression will define the function )Tj +/TT8 1 Tf +6 0 0 6 317.8889 499.16 Tm +0 Tw +(DOUBLE)Tj +/TT6 1 Tf +9 0 0 9 339.4924 499.16 Tm +0.1344 Tw +[( with the expr definition )]TJ +/TT8 1 Tf +6 0 0 6 444.4853 499.16 Tm +0.3217 Tw +(\(LAMBDA \(X\))Tj +-53.0809 -1.8333 TD +0.0733 Tw +(\(IPLUS X X\)\))Tj +/TT6 1 Tf +9 0 0 9 170.087 488.16 Tm +0.03 Tw +(. )Tj +/TT13 1 Tf +0.81 0 TD +0 Tw +(X)Tj +6 0 0 6 182.77 486.16 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 186.37 488.16 Tm +0.03 Tw +[( may also have the form \()]TJ +/TT8 1 Tf +6 0 0 6 288.8137 488.16 Tm +0.0733 Tw +(NAME ARGS . DEF-BODY)Tj +/TT6 1 Tf +9 0 0 9 362.1454 488.16 Tm +0.03 Tw +(\), in which case an appropriate)Tj +-26.2384 -1.3944 TD +[(lambda expr definition will be constructed. Therefore, the above expression is exactly the)]TJ +0 -1.2222 TD +0 Tw +(same as:)Tj +/TT8 1 Tf +6 0 0 6 162 452.16 Tm +(\(DEFINEQ \(DOUBLE \(X\) \(IPLUS X X\)\)\))Tj +/TT6 1 Tf +9 0 0 9 126 436.61 Tm +0.0589 Tw +[(Note that this alternate form can only be used for lambda functions. The first form must)]TJ +T* +0 Tw +(be used to define an nlambda function.)Tj +/TT8 1 Tf +6 0 0 6 126 407.61 Tm +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 151.2041 407.61 Tm +( returns a list of the names of the functions defined.)Tj +/TT8 1 Tf +6 0 0 6 102 388.33 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 388.33 Tm +(DEFINE)Tj +/F3 1 Tf +10 0 0 10 138 388.33 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 140.87 388.33 Tm +(X )Tj +/TT8 1 Tf +6 0 0 6 157.0726 388.33 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 160.6732 388.33 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 388.33 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.12 Tw +(Lambda-spread version of )Tj +/TT8 1 Tf +6 0 0 6 236.4402 371.73 Tm +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 261.6443 371.73 Tm +0.12 Tw +[(. Each element of the list )]TJ +/TT19 1 Tf +12.0939 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.7222 0 TD +0.12 Tw +[( is itself a list either of the)]TJ +-27.8877 -1.2222 TD +0 Tw +(form )Tj +/TT8 1 Tf +6 0 0 6 149.4406 360.73 Tm +0.4733 Tw +(\(NAME DEFINITION\))Tj +/TT6 1 Tf +9 0 0 9 213.4906 360.73 Tm +0.1978 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 230.0189 360.73 Tm +0.4733 Tw +(\(NAME ARGS . DEF-BODY\))Tj +/TT6 1 Tf +9 0 0 9 317.7517 360.73 Tm +0.1978 Tw +(. )Tj +/TT8 1 Tf +6 0 0 6 328.0618 360.73 Tm +0 Tw +(DEFINE)Tj +/TT6 1 Tf +9 0 0 9 349.6653 360.73 Tm +0.1978 Tw +[( will generate an error,)]TJ +/TT8 1 Tf +6 0 0 6 447.194 360.73 Tm +0.4733 Tw +[( Incorrect)]TJ +-53.5323 -1.8333 TD +0 Tw +(defining form)Tj +/TT6 1 Tf +9 0 0 9 172.8076 349.73 Tm +( on encountering an atom where a defining list is expected.)Tj +/TT8 1 Tf +6 0 0 6 78 331.73 Tm +(DEFINE)Tj +/TT6 1 Tf +9 0 0 9 99.6035 331.73 Tm +( and )Tj +/TT8 1 Tf +6 0 0 6 119.3394 331.73 Tm +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 144.5435 331.73 Tm +( operate correctly if the function is already defined and )Tj +/TT8 1 Tf +6 0 0 6 365.4565 331.73 Tm +(BROKEN)Tj +/TT6 1 Tf +9 0 0 9 387.0601 331.73 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 391.5601 331.73 Tm +(ADVISED)Tj +/TT6 1 Tf +9 0 0 9 416.7642 331.73 Tm +(, or )Tj +/TT8 1 Tf +6 0 0 6 431.9824 331.73 Tm +(BROKEN-IN)Tj +/TT6 1 Tf +9 0 0 9 464.3877 331.73 Tm +(.)Tj +-42.932 -2 TD +0.1778 Tw +(For expressions involving type-in only, if the time stamp facility is enabled \(see the Time Stamps)Tj +0 -1.2222 TD +0 Tw +(section of Chapter 16\), both )Tj +/TT8 1 Tf +6 0 0 6 189.6299 302.73 Tm +(DEFINE)Tj +/TT6 1 Tf +9 0 0 9 211.2334 302.73 Tm +( and )Tj +/TT8 1 Tf +6 0 0 6 230.9692 302.73 Tm +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 256.1733 302.73 Tm +( stamp the definition with your initials and date.)Tj +/TT15 1 Tf +-17.1304 -2.1422 TD +(UNSAFE.TO.MODIFY.FNS)Tj +/F1 1 Tf +10 0 0 10 210 283.45 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 283.45 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1922 Tw +(Value is a list of functions that should not be redefined, because doing so may cause)Tj +0 -1.2222 TD +0.1311 Tw +[(unusual bugs \(or crash the system!\). If you try to modify a function on this list \(using)]TJ +/TT8 1 Tf +6 0 0 6 126 244.85 Tm +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 151.2041 244.85 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 156.2641 244.85 Tm +(TRACE)Tj +/TT6 1 Tf +9 0 0 9 174.267 244.85 Tm +0.0622 Tw +(, etc\), the system prints )Tj +/TT8 1 Tf +6 0 0 6 270.9386 244.85 Tm +0.15 Tw +(Warning: XXX may be unsafe to modify -- continue? )Tj +/TT6 1 Tf +9 0 0 9 459.0679 244.85 Tm +0.0622 Tw +[( If you)]TJ +-37.0075 -1.2222 TD +0 Tw +(type )Tj +/TT8 1 Tf +6 0 0 6 146.5216 233.85 Tm +(Yes)Tj +/TT6 1 Tf +9 0 0 9 157.3234 233.85 Tm +0.0678 Tw +[(, the function is modified, otherwise an error occurs. This provides a measure of)]TJ +-3.4804 -1.2222 TD +0.0355 Tw +[(safety for novices who may accidently redefine important system functions. You can add)]TJ +T* +0 Tw +(your own functions onto this list.)Tj +0 -2 TD +0.0067 Tw +(By convention, all functions starting with the character backslash \(\\\) are system internal)Tj +0 -1.2222 TD +0.1455 Tw +[(functions, which you should never redefine or modify. Backslash functions are not on)]TJ +/TT8 1 Tf +6 0 0 6 126 171.85 Tm +0 Tw +(UNSAFE.TO.MODIFY.FNS)Tj +/TT6 1 Tf +9 0 0 9 198.0117 171.85 Tm +(, so trying to redefine them will not cause a warning.)Tj +/TT15 1 Tf +-10.668 -2.1422 TD +(DFNFLG)Tj +/F1 1 Tf +10 0 0 10 134.4 152.57 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 152.57 Tm +([Variable])Tj +/TT8 1 Tf +6 0 0 6 126 135.97 Tm +(DFNFLG)Tj +/TT6 1 Tf +9 0 0 9 147.6035 135.97 Tm +0.1144 Tw +[( is a global variable that affects the operation of )]TJ +/TT8 1 Tf +6 0 0 6 348.09 135.97 Tm +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +9 0 0 9 373.2941 135.97 Tm +0.1144 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 395.09 135.97 Tm +0 Tw +(DEFINE)Tj +/TT6 1 Tf +9 0 0 9 416.6935 135.97 Tm +0.1144 Tw +[(. If )]TJ +/TT8 1 Tf +6 0 0 6 434.8128 135.97 Tm +0 Tw +(DFNFLG=NIL)Tj +/TT6 1 Tf +9 0 0 9 470.8186 135.97 Tm +0.1144 Tw +(, an)Tj +-38.3132 -1.2222 TD +0.0511 Tw +(attempt to )Tj +/TT19 1 Tf +4.9157 0 TD +0 Tw +(redefine)Tj +/TT6 1 Tf +3.1685 0 TD +0.0511 Tw +[( a function )]TJ +/TT8 1 Tf +6 0 0 6 244.7507 124.97 Tm +0 Tw +(FN)Tj +/TT6 1 Tf +9 0 0 9 251.9518 124.97 Tm +0.0511 Tw +[( will cause )]TJ +/TT8 1 Tf +6 0 0 6 297.4925 124.97 Tm +0 Tw +(DEFINE)Tj +/TT6 1 Tf +9 0 0 9 319.096 124.97 Tm +0.0511 Tw +[( to print the message )]TJ +/TT8 1 Tf +6 0 0 6 406.439 124.97 Tm +0.1217 Tw +(\(FN REDEFINED\))Tj +/TT6 1 Tf +9 0 0 9 457.5772 124.97 Tm +0.0511 Tw +[( and to)]TJ +-36.8419 -1.2222 TD +0.2322 Tw +(save the old definition of )Tj +/TT8 1 Tf +6 0 0 6 237.823 113.97 Tm +0 Tw +(FN)Tj +/TT6 1 Tf +9 0 0 9 245.0242 113.97 Tm +0.2322 Tw +[( using )]TJ +/TT8 1 Tf +6 0 0 6 275.8087 113.97 Tm +0 Tw +(SAVEDEF)Tj +/TT6 1 Tf +9 0 0 9 301.0128 113.97 Tm +0.2322 Tw +[( \(see the Functions for Manipulating Typed)]TJ +-19.4459 -1.2222 TD +0.3622 Tw +(Definitions section of Chapter 17\) before redefining it \(except if the old and new)Tj +T* +0.0444 Tw +(definitions are )Tj +/TT8 1 Tf +6 0 0 6 186.4689 91.97 Tm +0 Tw +(EQUAL)Tj +/TT6 1 Tf +9 0 0 9 204.4719 91.97 Tm +0.0444 Tw +[(, in which case the effect is simply a no-op\). If )]TJ +/TT8 1 Tf +6 0 0 6 394.7211 91.97 Tm +0 Tw +(DFNFLG=T)Tj +/TT6 1 Tf +9 0 0 9 423.5258 91.97 Tm +0.0444 Tw +(, the function is)Tj +-33.0584 -1.2222 TD +0.0511 Tw +[(simply redefined. If )]TJ +/TT8 1 Tf +6 0 0 6 210.8703 80.97 Tm +0 Tw +(DFNFLG=PROP)Tj +/TT6 1 Tf +9 0 0 9 250.4767 80.97 Tm +0.0511 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 264.365 80.97 Tm +0 Tw +(ALLPROP)Tj +/TT6 1 Tf +9 0 0 9 289.5691 80.97 Tm +0.0511 Tw +(, the new definition is stored on the property list)Tj +-18.1743 -1.2222 TD +0.2744 Tw +(under the property )Tj +/TT8 1 Tf +6 0 0 6 211.7689 69.97 Tm +0 Tw +(EXPR)Tj +/TT6 1 Tf +9 0 0 9 226.1712 69.97 Tm +0.2744 Tw +(. )Tj +/TT8 1 Tf +6 0 0 6 237.8612 69.97 Tm +0 Tw +(ALLPROP)Tj +/TT6 1 Tf +9 0 0 9 263.0653 69.97 Tm +0.2744 Tw +[( also affects the operation of )]TJ +/TT8 1 Tf +6 0 0 6 391.5718 69.97 Tm +0 Tw +(RPAQQ)Tj +/TT6 1 Tf +9 0 0 9 409.5748 69.97 Tm +0.2744 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 434.2506 69.97 Tm +0 Tw +(RPAQ)Tj +/TT6 1 Tf +9 0 0 9 448.653 69.97 Tm +0.2744 Tw +[( \(see the)]TJ +-35.8503 -1.2222 TD +0 Tw +(Functions Used Within Source Files section of Chapter 17\). )Tj +/TT8 1 Tf +6 0 0 6 363.5684 58.97 Tm +(DFNFLG)Tj +/TT6 1 Tf +9 0 0 9 385.1719 58.97 Tm +( is initially )Tj +/TT8 1 Tf +6 0 0 6 429.1304 58.97 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 439.9321 58.97 Tm +(.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/F3 26 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +38 0 obj +<< +/Length 8872 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-8)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +6 0 0 6 174 569.54 Tm +(DFNFLG)Tj +/TT6 1 Tf +9 0 0 9 195.6035 569.54 Tm +0.0589 Tw +[( is reset by )]TJ +/TT8 1 Tf +6 0 0 6 242.0687 569.54 Tm +0 Tw +(LOAD)Tj +/TT6 1 Tf +9 0 0 9 256.4711 569.54 Tm +0.0589 Tw +[( \(see the Loading Files section of Chapter 17\) to enable various ways)]TJ +-9.1635 -1.2222 TD +0.1467 Tw +[(of handling the defining of functions and setting of variables when loading a file. For)]TJ +T* +0 Tw +(most applications, the user will not reset )Tj +/TT8 1 Tf +6 0 0 6 337.1514 547.54 Tm +(DFNFLG)Tj +/TT6 1 Tf +9 0 0 9 358.7549 547.54 Tm +( directly.)Tj +/TT17 1 Tf +-20.5283 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0001 Tc +0.0021 Tw +(: The compiler does )Tj +/TT19 1 Tf +9.1742 0 TD +0 Tc +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0001 Tc +0.0021 Tw +( respect the value of )Tj +/TT8 1 Tf +6 0 0 6 370.5828 529.54 Tm +0 Tc +0 Tw +(DFNFLG)Tj +/TT6 1 Tf +9 0 0 9 392.1863 529.54 Tm +0.0001 Tc +0.0021 Tw +( when it redefines functions to their)Tj +-24.2429 -1.2222 TD +0 Tc +0.0656 Tw +[(compiled definitions \(see the first page of Chapter 18\). Therefore, if you set )]TJ +/TT8 1 Tf +6 0 0 6 484.406 518.54 Tm +0 Tw +(DFNFLG)Tj +/TT6 1 Tf +9 0 0 9 506.0095 518.54 Tm +0.0656 Tw +[( to )]TJ +/TT8 1 Tf +6 0 0 6 519.5381 518.54 Tm +0 Tw +(PROP)Tj +/TT6 1 Tf +9 0 0 9 174 507.54 Tm +0.0033 Tw +(to completely avoid inadvertantly redefining something in your running system, you )Tj +/TT19 1 Tf +37.9512 0 TD +0 Tw +(must)Tj +/TT6 1 Tf +-37.9512 -1.2222 TD +(use compile mode )Tj +/TT8 1 Tf +6 0 0 6 248.7817 496.54 Tm +(F)Tj +/TT6 1 Tf +9 0 0 9 252.3823 496.54 Tm +(, not )Tj +/TT8 1 Tf +6 0 0 6 272.2192 496.54 Tm +(ST)Tj +/TT6 1 Tf +9 0 0 9 279.4204 496.54 Tm +(.)Tj +-11.7134 -2 TD +0.1511 Tw +(Note that the functions )Tj +/TT8 1 Tf +6 0 0 6 273.3511 478.54 Tm +0 Tw +(SAVEDEF)Tj +/TT6 1 Tf +9 0 0 9 298.5552 478.54 Tm +0.1511 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 321.011 478.54 Tm +0 Tw +(UNSAVEDEF)Tj +/TT6 1 Tf +9 0 0 9 353.4163 478.54 Tm +0.1511 Tw +[( \(see the Functions for Manipulating Typed)]TJ +-19.9351 -1.2222 TD +0.2756 Tw +(Definitions section of Chapter 17\) can be useful for saving and restoring function)Tj +T* +0 Tw +(definitions from property lists.)Tj +/TT8 1 Tf +6 0 0 6 150 437.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 437.26 Tm +(GETD)Tj +/F3 1 Tf +10 0 0 10 175.2 437.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 178.07 437.26 Tm +(FN)Tj +/TT8 1 Tf +6 0 0 6 188.8717 437.26 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 192.4723 437.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 437.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2511 Tw +(Returns the function definition of )Tj +/TT13 1 Tf +16.2878 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2511 Tw +[(. Returns )]TJ +/TT8 1 Tf +6 0 0 6 378.4652 420.66 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 389.267 420.66 Tm +0.2511 Tw +[( if )]TJ +/TT13 1 Tf +1.6262 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2511 Tw +[( is not a symbol, or has no)]TJ +-26.745 -1.2889 TD +0 Tw +(definition.)Tj +/TT8 1 Tf +6 0 0 6 174 391.06 Tm +(GETD)Tj +/TT6 1 Tf +9 0 0 9 188.4023 391.06 Tm +0.0644 Tw +[( of a compiled function constructs a pointer to the definition, with the result that two)]TJ +-1.6003 -1.2222 TD +0.0044 Tw +(successive calls do not necessarily produce )Tj +/TT8 1 Tf +6 0 0 6 346.8616 380.06 Tm +0 Tw +(EQ)Tj +/TT6 1 Tf +9 0 0 9 354.0627 380.06 Tm +0.0004 Tc +0.004 Tw +( results. )Tj +/TT8 1 Tf +6 0 0 6 389.6598 380.06 Tm +0 Tc +0 Tw +(EQP)Tj +/TT6 1 Tf +9 0 0 9 400.4615 380.06 Tm +0.0011 Tc +0.0033 Tw +( or )Tj +/TT8 1 Tf +6 0 0 6 413.5098 380.06 Tm +0 Tc +0 Tw +(EQUAL)Tj +/TT6 1 Tf +9 0 0 9 431.5128 380.06 Tm +0.0002 Tc +0.0042 Tw +( must be used to compare)Tj +-28.6125 -1.2222 TD +0 Tc +0 Tw +(compiled definitions.)Tj +/TT8 1 Tf +6 0 0 6 150 349.78 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 349.78 Tm +(PUTD)Tj +/F3 1 Tf +10 0 0 10 175.2 349.78 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 178.07 349.78 Tm +(FN DEF)Tj +/F2 1 Tf +10 0 0 10 210.4753 349.78 Tm +( )Tj +/TT8 1 Tf +6 0 0 6 213.2552 349.78 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 220.4564 349.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 349.78 Tm +([Function])Tj +-35.4033 -1.8445 TD +(Puts )Tj +/TT13 1 Tf +2.2326 0 TD +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0256 Tw +[( into )]TJ +/TT13 1 Tf +2.2962 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0256 Tw +(s function cell, and returns )Tj +/TT13 1 Tf +12.4383 0 TD +0 Tw +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0256 Tw +(. Generates an error, )Tj +/TT8 1 Tf +6 0 0 6 453.8044 333.18 Tm +0.0617 Tw +(Arg not symbol)Tj +/TT17 1 Tf +9 0 0 9 504.9526 333.18 Tm +0 Tw +(,)Tj +/TT6 1 Tf +0.25 0 TD +0.0256 Tw +[( if )]TJ +/TT8 1 Tf +6 0 0 6 517.7789 333.18 Tm +0 Tw +(FN)Tj +/TT6 1 Tf +9 0 0 9 524.98 333.18 Tm +0.0256 Tw +[( is)]TJ +-38.9978 -1.2889 TD +0.0233 Tw +[(not a symbol. Generates an error, )]TJ +/TT8 1 Tf +6 0 0 6 312.0564 321.58 Tm +0.0567 Tw +(Illegal arg)Tj +/TT6 1 Tf +9 0 0 9 352.0029 321.58 Tm +0.0233 Tw +(, if )Tj +/TT13 1 Tf +1.4207 0 TD +0 Tw +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0233 Tw +[( is a string, number, or a symbol other)]TJ +-22.9991 -1.2889 TD +0 Tw +(than )Tj +/TT8 1 Tf +6 0 0 6 194.1621 309.98 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 204.9639 309.98 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 290.7 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 290.7 Tm +(MOVD)Tj +/F3 1 Tf +10 0 0 10 175.2 290.7 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 178.07 290.7 Tm +(FROM TO COPYFLG )Tj +/TT8 1 Tf +6 0 0 6 264.484 290.7 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 271.6852 290.7 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 290.7 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2044 Tw +(Moves the definition of )Tj +/TT13 1 Tf +11.3754 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2044 Tw +[( to )]TJ +/TT13 1 Tf +1.781 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.2044 Tw +(, i.e., redefines )Tj +/TT13 1 Tf +7.2061 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.2044 Tw +[(. If )]TJ +/TT13 1 Tf +2.2833 0 TD +0 Tw +(COPYFLG)Tj +/TT6 1 Tf +4.2007 0 TD +0.2044 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 472.4582 274.1 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 476.0588 274.1 Tm +0.2044 Tw +(, a )Tj +/TT8 1 Tf +6 0 0 6 490.9888 274.1 Tm +0 Tw +(COPY)Tj +/TT6 1 Tf +9 0 0 9 505.3911 274.1 Tm +0.2044 Tw +[( of the)]TJ +-36.8212 -1.2889 TD +0.0389 Tw +(definition of )Tj +/TT13 1 Tf +5.7887 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0389 Tw +[( is used. )]TJ +/TT13 1 Tf +4.2371 0 TD +0 Tw +(COPYFLG)Tj +/TT6 1 Tf +4.2007 0 TD +0.0389 Tc +( =)Tj +/TT8 1 Tf +6 0 0 6 331.6956 262.5 Tm +0 Tc +(T)Tj +/TT6 1 Tf +9 0 0 9 335.2962 262.5 Tm +0.0389 Tw +[( is only meaningful for expr definitions, although)]TJ +/TT8 1 Tf +6 0 0 6 174 250.9 Tm +0 Tw +(MOVD)Tj +/TT6 1 Tf +9 0 0 9 188.4023 250.9 Tm +( works for compiled functions as well. )Tj +/TT8 1 Tf +6 0 0 6 344.7686 250.9 Tm +(MOVD)Tj +/TT6 1 Tf +9 0 0 9 359.1709 250.9 Tm +( returns )Tj +/TT13 1 Tf +3.7041 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +6 0 0 6 174 232.3 Tm +(COPYDEF)Tj +/TT6 1 Tf +9 0 0 9 199.2041 232.3 Tm +0.0967 Tw +[( \(see the Functions for Manipulating Typed Definitions section of Chapter 17\) is a)]TJ +-2.8005 -1.2222 TD +0.1156 Tw +(higher-level function that not only moves expr definitions, but works also for variables,)Tj +T* +0 Tw +(records, etc.)Tj +/TT8 1 Tf +6 0 0 6 150 191.02 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 191.02 Tm +-0.0001 Tc +(MOVD? )Tj +/TT13 1 Tf +3.6 0 TD +0 Tc +(FROM TO COPYFLG )Tj +/TT8 1 Tf +6 0 0 6 272.4149 191.02 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 279.6161 191.02 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 191.02 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT13 1 Tf +1.0055 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0856 Tw +[( is not defined, same as )]TJ +/TT8 1 Tf +6 0 0 6 293.0985 174.42 Tm +0 Tw +(\(MOVD)Tj +/TT13 1 Tf +9 0 0 9 311.1014 174.42 Tm +0.2067 Tw +[( FROM TO COPYFLG)]TJ +/TT8 1 Tf +6 0 0 6 403.0955 174.42 Tm +0 Tw +(\).)Tj +/TT6 1 Tf +9 0 0 9 410.2966 174.42 Tm +0.0856 Tw +[( Otherwise, does nothing and)]TJ +-26.2552 -1.2889 TD +0 Tw +(returns )Tj +/TT8 1 Tf +6 0 0 6 205.0869 162.82 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 215.8887 162.82 Tm +(.)Tj +/TT4 1 Tf +10 0 0 10 102 140.48 Tm +(Function Evaluation)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 137.77 m +558.01 137.77 l +S +BT +/TT6 1 Tf +9 0 0 9 126 123.82 Tm +0.0244 Tw +[(Usually, function application is done automatically by the Interlisp interpreter. If a form is typed into)]TJ +0 -1.2222 TD +0.0111 Tw +(Interlisp whose )Tj +/TT8 1 Tf +6 0 0 6 190.0174 112.82 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 200.8191 112.82 Tm +0.0111 Tw +[( is a function, this function is applied to the arguments in the )]TJ +/TT8 1 Tf +6 0 0 6 446.0947 112.82 Tm +0 Tw +(CDR)Tj +/TT6 1 Tf +9 0 0 9 456.8965 112.82 Tm +0.0111 Tw +[( of the form. These)]TJ +-36.7663 -1.2222 TD +0.0844 Tw +(arguments are evaluated or not, and bound to the funcion parameters, as determined by the type of)Tj +T* +0.0367 Tw +[(the function, and the body of the function is evaluated. This sequence is repeated as each form in the)]TJ +T* +0 Tw +(body of the function is evaluated.)Tj +0 -2 TD +0.0267 Tw +(There are some situations where it is necessary to explicitly call the evaluator, and Interlisp supplies a)Tj +0 -1.2222 TD +0.0211 Tw +[(number of functions that will do this. These functions take functional arguments, which may either)]TJ +ET +endstream +endobj +39 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/F3 26 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT17 22 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +41 0 obj +<< +/Length 8138 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-9)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.2667 Tw +(be symbols with function definitions, or expr definition forms such as)Tj +/TT8 1 Tf +6 0 0 6 378.9873 569.54 Tm +0.6417 Tw +[( \(LAMBDA \(X\)...\))]TJ +/TT6 1 Tf +9 0 0 9 444.2967 569.54 Tm +0.2667 Tw +(, or )Tj +/TT8 1 Tf +6 0 0 6 464.3149 569.54 Tm +0 Tw +(FUNARG)Tj +/TT6 1 Tf +9 0 0 9 78 558.54 Tm +(expressions. )Tj +/TT8 1 Tf +6 0 0 6 102 539.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 539.26 Tm +(APPLY)Tj +/F3 1 Tf +10 0 0 10 132.6 539.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 135.47 539.26 Tm +(FN ARGLIST )Tj +/TT8 1 Tf +6 0 0 6 200.2805 539.26 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 203.8811 539.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 539.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0356 Tw +(Applies the function )Tj +/TT13 1 Tf +9.4157 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0356 Tw +[( to the arguments in the list )]TJ +/TT13 1 Tf +12.5985 0 TD +0 Tw +(ARGLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.0356 Tw +(, and returns its value. )Tj +/TT8 1 Tf +6 0 0 6 468.0399 522.66 Tm +0 Tw +(APPLY)Tj +/TT6 1 Tf +9 0 0 9 126 511.06 Tm +0.2444 Tw +(is a lambda function, so its arguments are evaluated, but the individual elements of)Tj +/TT13 1 Tf +0 -1.2222 TD +0 Tw +(ARGLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.1544 Tw +[( are not evaluated. Therefore, lambda and nlambda functions are treated the)]TJ +-4.2007 -1.2889 TD +0.0389 Tw +(same by )Tj +/TT8 1 Tf +6 0 0 6 161.7552 488.46 Tm +0 Tw +(APPLY)Tj +/TT6 1 Tf +9 0 0 9 179.7581 488.46 Tm +0.0389 Tw +(lambda functions take their arguments from )Tj +/TT13 1 Tf +21.0414 0 TD +0 Tw +(ARGLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.0389 Tw +[( without evaluating)]TJ +-31.2152 -1.2889 TD +0 Tw +(them. For example:)Tj +/TT9 1 Tf +6 0 0 6 162 464.41 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(APPLY APPEND \(\(PLUS 1 2 3\)\(4 5 6\)\)\) )Tj +2.0132 -1 TD +(\(PLUS 1 2 3 4 5 6\))Tj +/TT6 1 Tf +9 0 0 9 126 442.86 Tm +0.02 Tw +(Note that )Tj +/TT13 1 Tf +4.4565 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.02 Tw +[( may explicitly evaluate one or more of its arguments itself. For example, the)]TJ +-5.6567 -1.2889 TD +0.04 Tw +(system function )Tj +/TT8 1 Tf +6 0 0 6 192.4094 431.26 Tm +0 Tw +(SETQ)Tj +/TT6 1 Tf +9 0 0 9 206.8118 431.26 Tm +0.04 Tw +[( is an nlambda function that explicitly evaluates its second argument.)]TJ +-8.9791 -1.2222 TD +0 Tw +(Therefore, )Tj +/TT8 1 Tf +6 0 0 6 169.457 420.26 Tm +0.065 Tw +(\(APPLY SETQ \(FOO \(ADD1 3\)\)\))Tj +/TT6 1 Tf +9 0 0 9 275.434 420.26 Tm +0.0278 Tw +(will set )Tj +/TT8 1 Tf +6 0 0 6 306.8583 420.26 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 317.6601 420.26 Tm +0.0278 Tw +[( to )]TJ +/TT8 1 Tf +6 0 0 6 330.5087 420.26 Tm +0 Tw +(4)Tj +/TT6 1 Tf +9 0 0 9 334.1093 420.26 Tm +0.0278 Tw +(, instead of setting it to the expression)Tj +/TT8 1 Tf +6 0 0 6 126 409.26 Tm +0 Tw +(\(ADD1 3\))Tj +/TT6 1 Tf +9 0 0 9 154.8047 409.26 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 126 391.26 Tm +(APPLY)Tj +/TT6 1 Tf +9 0 0 9 144.0029 391.26 Tm +( can be used for manipulating expr definitions. For example:)Tj +/TT9 1 Tf +6 0 0 6 162 378.81 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(APPLY \(LAMBDA \(X Y\)\(ITIMES X Y\)\) \(3 4\)\)\) )Tj +2.0132 -1 TD +(12)Tj +-13 -2.805 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 355.98 Tm +(APPLY*)Tj +/F3 1 Tf +10 0 0 10 138 355.98 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 140.87 355.98 Tm +(FN ARG)Tj +6 0 0 6 173.27 353.98 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 176.87 355.98 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 179.65 355.98 Tm +(ARG)Tj +6 0 0 6 195.85 353.98 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 199.45 355.98 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 202.23 355.98 Tm +(... ARG)Tj +6 0 0 6 240.03 353.98 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 243.63 355.98 Tm +( )Tj +/TT8 1 Tf +6 0 0 6 246.41 355.98 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 250.0106 355.98 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 401.99 355.98 Tm +([NoSpread Function])Tj +-30.6656 -1.95 TD +0.1767 Tw +(Nospread version of )Tj +/TT8 1 Tf +6 0 0 6 214.4463 338.43 Tm +0 Tw +(APPLY)Tj +/TT6 1 Tf +9 0 0 9 232.4492 338.43 Tm +0.1767 Tw +[(. Applies the function )]TJ +/TT13 1 Tf +10.9424 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1767 Tw +[( to the arguments )]TJ +/TT13 1 Tf +8.714 0 TD +0 Tw +(ARG)Tj +6 0 0 6 436.37 336.43 Tm +(1)Tj +/TT19 1 Tf +9 0 0 9 439.97 338.43 Tm +( )Tj +/TT13 1 Tf +0.4267 0 TD +(ARG)Tj +6 0 0 6 460.01 336.43 Tm +(2 )Tj +9 0 0 9 469.76 338.43 Tm +(...)Tj +-38.1956 -1.3944 TD +(ARG)Tj +6 0 0 6 142.2 323.88 Tm +(N)Tj +/TT6 1 Tf +9 0 0 9 145.8 325.88 Tm +(. For example: )Tj +/TT9 1 Tf +6 0 0 6 162 311.88 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(APPLY APPEND \(PLUS 1 2 3\)\(4 5 6\)\) )Tj +2.0132 -1 TD +(\(PLUS 1 2 3 4 5 6\))Tj +-13 -2.805 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 289.05 Tm +(EVAL)Tj +/TT8 1 Tf +6 0 0 6 127.2 289.05 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 130.8006 289.05 Tm +(X)Tj +/TT8 1 Tf +6 0 0 6 141.6023 289.05 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 145.2029 289.05 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 289.05 Tm +([Function])Tj +/TT8 1 Tf +6 0 0 6 126 272.45 Tm +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 140.4023 272.45 Tm +0.0867 Tw +[( evaluates the expression )]TJ +/TT13 1 Tf +11.6377 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[( and returns this value, i.e., )]TJ +/TT8 1 Tf +6 0 0 6 365.2746 272.45 Tm +0 Tw +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 379.6769 272.45 Tm +0.0867 Tw +[( provides a way of calling)]TJ +-28.1863 -1.2889 TD +0.0556 Tw +[(the Interlisp interpreter. Note that )]TJ +/TT8 1 Tf +6 0 0 6 268.7549 260.85 Tm +0 Tw +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 283.1572 260.85 Tm +0.0556 Tw +[( is itself a lambda function, so its argument is first)]TJ +-17.4619 -1.2222 TD +0 Tw +(evaluated, e.g.:)Tj +/TT9 1 Tf +6 0 0 6 162 237.4 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( \(SETQ FOO ADD1 3\)\)\))Tj +2.0132 -1 TD +(\(ADD1 3\))Tj +/TT9 1 Tf +-3 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(EVAL FOO\))Tj +2.0132 -1 TD +(4)Tj +/TT9 1 Tf +-3 -1.6667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(EVAL FOO\))Tj +2.0132 -1 TD +(\(ADD1 3\))Tj +-13 -2.805 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 182.57 Tm +(QUOTE)Tj +/TT8 1 Tf +6 0 0 6 132.6 182.57 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 136.2006 182.57 Tm +(X)Tj +/TT8 1 Tf +6 0 0 6 141.6014 182.57 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 145.202 182.57 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 362.21 182.57 Tm +([Nlambda NoSpread Function])Tj +/TT8 1 Tf +6 0 0 6 126 165.97 Tm +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 144.0029 165.97 Tm +0.0756 Tw +[( prevents its arguments from being evaluated. Its value is )]TJ +/TT13 1 Tf +26.6832 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0756 Tw +[( itself, e.g., )]TJ +/TT8 1 Tf +6 0 0 6 435.955 165.97 Tm +0.1817 Tw +(\(QUOTE FOO\))Tj +/TT6 1 Tf +9 0 0 9 476.6515 165.97 Tm +0.0756 Tw +[( is)]TJ +/TT8 1 Tf +6 0 0 6 126 154.37 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 136.8017 154.37 Tm +(.)Tj +-1.2002 -2 TD +0.0667 Tw +(Interlisp functions can either evaluate or not evaluate their arguments. )Tj +/TT8 1 Tf +6 0 0 6 417.3393 136.37 Tm +0 Tw +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 435.3422 136.37 Tm +0.0667 Tw +[( can be used)]TJ +-34.3714 -1.2222 TD +0 Tw +(in those cases where it is desirable to specify arguments unevaluated.)Tj +0 -2 TD +0.33 Tw +(The single-quote character )Tj +/TT8 1 Tf +6 0 0 6 242.5408 107.37 Tm +0 Tw +(\(\))Tj +/TT6 1 Tf +9 0 0 9 253.3426 107.37 Tm +0.33 Tw +[( is defined with a read macro so it returns the next)]TJ +/F1 1 Tf +10 0 0 10 126 95.09 Tm +0.006 Tw +(expression, wrapped in a call to )Tj +/TT8 1 Tf +6 0 0 6 274.9 95.09 Tm +0 Tw +(QUOTE)Tj +/F1 1 Tf +10 0 0 10 292.9029 95.09 Tm +0.006 Tw +[( \(see Chapter 25\). )]TJ +/TT6 1 Tf +9 0 0 9 380.2529 95.09 Tm +0.0044 Tw +(For example,)Tj +/TT8 1 Tf +6 0 0 6 432.0078 95.09 Tm +0.0117 Tw +[( FOO )]TJ +/TT6 1 Tf +9 0 0 9 453.7513 95.09 Tm +0.0044 Tw +(reads as)Tj +/TT8 1 Tf +6 0 0 6 126 84.09 Tm +0 Tw +(\(QUOTE FOO\))Tj +/TT6 1 Tf +9 0 0 9 165.6064 84.09 Tm +(. This is the form used for examples in this manual.)Tj +-4.4007 -2 TD +0.0867 Tw +(Since giving )Tj +/TT8 1 Tf +6 0 0 6 178.519 66.09 Tm +0 Tw +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 196.5219 66.09 Tm +0.0867 Tw +[( more than one argument is almost always a parenthese error, and one)]TJ +-7.8358 -1.2222 TD +0.0267 Tw +(that would otherewise go undetected, )Tj +/TT8 1 Tf +6 0 0 6 280.1648 55.09 Tm +0 Tw +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 298.1678 55.09 Tm +0.0267 Tw +[( itself generates an error in this case, )]TJ +/TT8 1 Tf +6 0 0 6 446.329 55.09 Tm +0 Tw +(Parenthesis)Tj +-53.3882 -1.8333 TD +(error)Tj +/TT6 1 Tf +9 0 0 9 144.0029 44.09 Tm +(.)Tj +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/F3 26 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT9 9 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +44 0 obj +<< +/Length 9629 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-10)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +6 0 0 6 150 568.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 568.26 Tm +(KWOTE)Tj +/TT8 1 Tf +6 0 0 6 180.6 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 184.2006 568.26 Tm +(X)Tj +/TT8 1 Tf +6 0 0 6 189.6014 568.26 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 193.202 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0656 Tw +(Value is an expression which, when evaluated, yields )Tj +/TT13 1 Tf +24.3692 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0656 Tw +[(. If )]TJ +/TT13 1 Tf +1.8666 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0656 Tw +[( is )]TJ +/TT8 1 Tf +6 0 0 6 433.0372 551.66 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 443.8389 551.66 Tm +0.0656 Tw +[( or a number, this is )]TJ +/TT13 1 Tf +9.4173 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +-39.3994 -1.2889 TD +(itself. Otherwise)Tj +/TT8 1 Tf +6 0 0 6 241.4121 540.06 Tm +( \(LIST \(QUOTE QUOTE\) X\))Tj +/TT6 1 Tf +9 0 0 9 324.2256 540.06 Tm +(. For example:)Tj +/TT8 1 Tf +6 0 0 6 210 527.61 Tm +(\(KWOTE 5\) => 5)Tj +0 -1 TD +(\(KWOTE \(CONS A B\)\) => \(QUOTE \(A.B\)\))Tj +-10 -2.805 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 504.78 Tm +(NLAMBDA.ARGS)Tj +/TT8 1 Tf +6 0 0 6 218.4 504.78 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 222.0006 504.78 Tm +(X)Tj +/TT8 1 Tf +6 0 0 6 227.4014 504.78 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 231.002 504.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 504.78 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0578 Tw +[(This function interprets its argument as a list of unevaluated nlambda arguments. If any)]TJ +0 -1.2222 TD +0.1511 Tw +(of the elements in this list are of the form )Tj +/TT8 1 Tf +6 0 0 6 352.6058 477.18 Tm +0 Tw +(\(QUOTE...\))Tj +/TT6 1 Tf +9 0 0 9 388.6117 477.18 Tm +0.1511 Tw +(, the enclosing )Tj +/TT8 1 Tf +6 0 0 6 451.93 477.18 Tm +0 Tw +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 469.9329 477.18 Tm +0.1511 Tw +[( is stripped off.)]TJ +-32.8814 -1.2222 TD +0 Tw +(Actually, )Tj +/TT8 1 Tf +6 0 0 6 216.1516 466.18 Tm +(NLAMBDA.ARGS)Tj +/TT6 1 Tf +9 0 0 9 259.3586 466.18 Tm +0.3944 Tw +[( stops processing the list after the first non-quoted argument.)]TJ +-9.4843 -1.2222 TD +0.0889 Tw +(Therefore, whereas)Tj +/TT8 1 Tf +6 0 0 6 251.2429 455.18 Tm +0.215 Tw +[( \(NLAMBDA.ARGS \(\(QUOTE FOO\) BAR\)\) -> \(FOO BAR\))]TJ +/TT6 1 Tf +9 0 0 9 429.5004 455.18 Tm +0.0889 Tw +(, )Tj +/TT8 1 Tf +6 0 0 6 437.8504 455.18 Tm +0.215 Tw +(\(NLAMBDA.ARGS \(FOO \(QUOTE)Tj +-43.9751 -1.4083 TD +0 Tw +(BAR\)\)\) -> \(FOO \(QUOTE BAR\)\).)Tj +0 -2.925 TD +(NLAMBDA.ARGS)Tj +/TT6 1 Tf +9 0 0 9 217.207 429.18 Tm +0.1678 Tw +[( is alled by a number of nlambda functions in the system, to interpret their)]TJ +-4.8008 -1.2222 TD +0.0578 Tw +[(arguments. For instance, the function )]TJ +/TT8 1 Tf +6 0 0 6 329.8256 418.18 Tm +0 Tw +(BREAK)Tj +/TT6 1 Tf +9 0 0 9 347.8285 418.18 Tm +0.0578 Tw +[( calls )]TJ +/TT8 1 Tf +6 0 0 6 370.9158 418.18 Tm +0 Tw +(NLAMBDA.ARGS)Tj +/TT6 1 Tf +9 0 0 9 414.1229 418.18 Tm +0.0578 Tw +[( so that )]TJ +/TT8 1 Tf +6 0 0 6 446.7698 418.18 Tm +0.1367 Tw +(\(BREAK FOO\))Tj +/TT6 1 Tf +9 0 0 9 490.7968 418.18 Tm +0.0578 Tw +[( will break)]TJ +-35.1996 -1.2222 TD +0 Tw +(the function )Tj +/TT8 1 Tf +6 0 0 6 224.3481 407.18 Tm +(FOO)Tj +/TT6 1 Tf +9 0 0 9 235.1499 407.18 Tm +(, rather than the function )Tj +/TT8 1 Tf +6 0 0 6 336.5054 407.18 Tm +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 354.5083 407.18 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 387.9 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 387.9 Tm +(EVALA)Tj +/F2 1 Tf +10 0 0 10 180.6 387.9 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 183.38 387.9 Tm +(X A)Tj +/TT8 1 Tf +6 0 0 6 199.5826 387.9 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 203.1832 387.9 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 387.9 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Simulates association list variable lookup. )Tj +/TT13 1 Tf +18.9946 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is a form, )Tj +/TT13 1 Tf +4.6216 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +( is a list of the form:)Tj +/TT8 1 Tf +6 0 0 6 192 356.3 Tm +(\(\()Tj +/TT13 1 Tf +9 0 0 9 199.2012 356.3 Tm +(NAME)Tj +6 0 0 6 220.8 354.3 Tm +(1)Tj +9 0 0 9 224.4 356.3 Tm +( . VAL)Tj +6 0 0 6 256.8 354.3 Tm +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT13 1 Tf +9 0 0 9 264.0005 356.3 Tm +( \(NAME)Tj +6 0 0 6 296.4 354.3 Tm +(2)Tj +9 0 0 9 300 356.3 Tm +( . VAL)Tj +6 0 0 6 332.4 354.3 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT13 1 Tf +9 0 0 9 339.6006 356.3 Tm +(... )Tj +/TT8 1 Tf +6 0 0 6 361.2041 356.3 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 364.8047 356.3 Tm +(NAME)Tj +6 0 0 6 386.4 354.3 Tm +(N)Tj +9 0 0 9 390 356.3 Tm +( . VAL)Tj +6 0 0 6 422.4 354.3 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 174 338.75 Tm +0.1167 Tw +(The variable names and values in )Tj +/TT13 1 Tf +15.7435 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.1167 Tw +[( are spread on the stack, and then )]TJ +/TT13 1 Tf +16.9944 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1167 Tw +[( is evaluated.)]TJ +-33.938 -1.2889 TD +0.0067 Tw +(Therefore, any variables appearing free in )Tj +/TT13 1 Tf +18.7915 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0067 Tw +[( that also appears as )]TJ +/TT8 1 Tf +6 0 0 6 431.3445 327.15 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 442.1463 327.15 Tm +0.0067 Tw +[( of an element of )]TJ +/TT13 1 Tf +7.6422 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0067 Tw +[( will)]TJ +-38.0364 -1.2889 TD +0 Tw +(be given the value on the )Tj +/TT8 1 Tf +6 0 0 6 276.1113 315.55 Tm +(CDR)Tj +/TT6 1 Tf +9 0 0 9 286.9131 315.55 Tm +( of that element.)Tj +/TT8 1 Tf +6 0 0 6 150 296.27 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 296.27 Tm +(DEFEVAL)Tj +/F1 1 Tf +10 0 0 10 191.4 296.27 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 194.18 296.27 Tm +(TYPE FN)Tj +/TT8 1 Tf +6 0 0 6 231.9861 296.27 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 235.5867 296.27 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 296.27 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0078 Tw +[(Specifies how a datum of a particular type is to be evaluated. Intended primarily for user-)]TJ +0 -1.2222 TD +0.1 Tw +(defined data types, but works for all data types except lists, literal atoms, and numbers.)Tj +/TT13 1 Tf +T* +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2467 Tw +[( is a type name. )]TJ +/TT13 1 Tf +8.8511 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2467 Tw +[( is a function object, i.e., name of a function or a lambda)]TJ +-12.4517 -1.2889 TD +0.1733 Tw +[(expression. Whenever the interpreter encounters a datum of the indicated type, )]TJ +/TT13 1 Tf +37.6596 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1733 Tw +[( is)]TJ +-38.8598 -1.2889 TD +0.0233 Tw +(applied to the datum and its value returned as the result of the evaluation. )Tj +/TT8 1 Tf +6 0 0 6 477.5382 234.47 Tm +0 Tw +(DEFEVAL)Tj +/TT6 1 Tf +9 0 0 9 502.7423 234.47 Tm +0.0233 Tw +[( returns)]TJ +-36.5269 -1.2222 TD +0.0511 Tw +[(the previous evaling function for this type. If )]TJ +/TT13 1 Tf +20.7515 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0511 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 382.4389 223.47 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 393.2407 223.47 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 398.2007 223.47 Tm +(DEFEVAL)Tj +/TT6 1 Tf +9 0 0 9 423.4048 223.47 Tm +0.0511 Tw +[( returns the current evaling)]TJ +-27.7116 -1.2889 TD +0.1367 Tw +[(function without changing it. If )]TJ +/TT13 1 Tf +15.1657 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1367 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 333.7067 211.87 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 337.3073 211.87 Tm +0.1367 Tw +(, the evaling functions is set back to the system)Tj +-18.1453 -1.2889 TD +0 Tw +(default \(which for all data types except lists is to return the datum itself\).)Tj +/TT8 1 Tf +6 0 0 6 174 182.27 Tm +(COMPILETYPELST)Tj +/TT6 1 Tf +9 0 0 9 224.4082 182.27 Tm +0.0167 Tw +[( \(see Chapter 18\) permits the user to specify how a datum of a particular type)]TJ +-5.6009 -1.2222 TD +0 Tw +(is to be compiled.)Tj +/TT8 1 Tf +6 0 0 6 150 151.99 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 151.99 Tm +(EVALHOOK)Tj +/F1 1 Tf +10 0 0 10 196.8 151.99 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 199.58 151.99 Tm +(FORM EVALHOOKFN)Tj +/TT8 1 Tf +6 0 0 6 280.5932 151.99 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 284.1938 151.99 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 151.99 Tm +([Function])Tj +/TT8 1 Tf +6 0 0 6 174 135.39 Tm +(EVALHOOK)Tj +/TT6 1 Tf +9 0 0 9 202.8047 135.39 Tm +0.0467 Tw +[( evaluates the expression )]TJ +/TT13 1 Tf +11.4777 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +[(, and returns its value. While evaluating )]TJ +/TT13 1 Tf +18.5857 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +(, the)Tj +-38.0647 -1.2889 TD +0 Tw +(function )Tj +/TT8 1 Tf +6 0 0 6 210.9033 123.79 Tm +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 225.3056 123.79 Tm +0.1433 Tw +[( behaves in a special way. Whenever a list other than )]TJ +/TT13 1 Tf +25.5564 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1433 Tw +[( itself is to be)]TJ +-33.6574 -1.2889 TD +0.1567 Tw +(evaluated, whether implicitly or via an explicit call to )Tj +/TT8 1 Tf +6 0 0 6 401.0025 112.19 Tm +0 Tw +(EVAL)Tj +/TT6 1 Tf +9 0 0 9 415.4048 112.19 Tm +(, )Tj +/TT13 1 Tf +0.6567 0 TD +(EVALHOOKFN)Tj +/TT6 1 Tf +6.001 0 TD +0.1567 Tw +[( is invoked \(it)]TJ +-33.4804 -1.2889 TD +0.0033 Tw +(should be a function\), with the form to be evaluated as its argument. )Tj +/TT13 1 Tf +30.8001 0 TD +0 Tw +(EVALHOOKFN)Tj +/TT6 1 Tf +6.001 0 TD +0.0004 Tc +0.0029 Tw +( is then)Tj +-36.8011 -1.2889 TD +0 Tc +0.12 Tw +[(responsible for evaluating the form. Whatever is returned is assume to be the result of)]TJ +0 -1.2222 TD +0.2067 Tw +[(evaluating the form. During the execution of )]TJ +/TT13 1 Tf +21.874 0 TD +0 Tw +(EVALHOOKFN)Tj +/TT6 1 Tf +6.001 0 TD +0.2067 Tw +(, this special evaluation is)Tj +-27.875 -1.2889 TD +0 Tw +(turned off. \(Note that )Tj +/TT8 1 Tf +6 0 0 6 263.6177 66.39 Tm +(EVALHOOK)Tj +/TT6 1 Tf +9 0 0 9 292.4224 66.39 Tm +( does not affect the evaluations of variables, only of lists\).)Tj +-13.158 -2 TD +(Here is an example of a simple tracing routine that uses the )Tj +/TT8 1 Tf +6 0 0 6 412.0166 48.39 Tm +(EVALHOOK)Tj +/TT6 1 Tf +9 0 0 9 440.8213 48.39 Tm +( feature:)Tj +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +47 0 obj +<< +/Length 11293 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-11)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT9 1 Tf +6 0 0 6 162 572.09 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(DEFINEQ \(PRINTHOOK \(FORM\))Tj +1.0132 -1 TD +(\(printout T "eval: "FORM T\))Tj +T* +(\(EVALHOOK FORM \(FUNCTION PRINTHOOK)Tj +T* +(\(PRINTHOOK\))Tj +/TT6 1 Tf +9 0 0 9 126 538.54 Tm +(Using )Tj +/TT8 1 Tf +6 0 0 6 151.9277 538.54 Tm +(PRINTHOOK)Tj +/TT6 1 Tf +9 0 0 9 184.333 538.54 Tm +(, one might see the following interaction:)Tj +/TT9 1 Tf +6 0 0 6 162 526.09 Tm +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(EVALHOOK \(LIST \(CONS 1 2\)\(CONS 3 4\)\) PRINTHOOK\))Tj +1.0132 -1 TD +(eval: \(CONS 1 2\))Tj +T* +(eval: \(CONS 3 4\))Tj +T* +(\(\(1.2\)\(3.4\)\))Tj +/TT4 1 Tf +10 0 0 10 54 488.2 Tm +(Iterating and Mapping Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 485.49 m +510.01 485.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 471.54 Tm +0.1056 Tw +(The functions below are used to evaluate a form or apply a function repeatedly. )Tj +/TT8 1 Tf +6 0 0 6 413.4155 471.54 Tm +0 Tw +(RPT)Tj +/TT6 1 Tf +9 0 0 9 424.2173 471.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 429.6673 471.54 Tm +(RPTQ)Tj +/TT6 1 Tf +9 0 0 9 444.0696 471.54 Tm +0.1056 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 467.9555 471.54 Tm +0 Tw +(FRPTQ)Tj +/TT6 1 Tf +9 0 0 9 78 460.54 Tm +0.1611 Tw +(evaluate an expression a specified number of time. )Tj +/TT8 1 Tf +6 0 0 6 296.8591 460.54 Tm +0 Tw +(MAP)Tj +/TT6 1 Tf +9 0 0 9 307.6608 460.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 313.6108 460.54 Tm +(MAPCAR)Tj +/TT6 1 Tf +9 0 0 9 335.2144 460.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 341.1644 460.54 Tm +(MAPLIST)Tj +/TT6 1 Tf +9 0 0 9 366.3685 460.54 Tm +0.1611 Tw +(, etc., apply a given function)Tj +-32.0409 -1.2222 TD +0 Tw +(repeatedly to different elements of a list, possibly constructing another list.)Tj +0 -2 TD +0.0356 Tw +[(These functions allow efficient iterative computations, but they are difficult to use. For programming)]TJ +0 -1.2222 TD +0.0233 Tw +(iterative computations, it is usually better to use the CLISP Iterative Statement facility \(see Chapter 9\),)Tj +T* +0.1033 Tw +[(which provides a more general and complete facility for expressing iterative statements. Whenever)]TJ +T* +0.0089 Tw +(possible, CLISP transltes iterative statements into expressions using the functions below, so there is no)Tj +T* +0 Tw +(efficiency loss.)Tj +/TT8 1 Tf +6 0 0 6 102 368.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 368.26 Tm +(RPT)Tj +/TT8 1 Tf +6 0 0 6 121.8 368.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 125.4006 368.26 Tm +(N FORM)Tj +/TT8 1 Tf +6 0 0 6 157.8058 368.26 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 161.4064 368.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 368.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0822 Tw +(Evaluates the expression )Tj +/TT13 1 Tf +11.4195 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT13 1 Tf +0.5822 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +[( times. Returns the value of the last evaluation. If )]TJ +/TT13 1 Tf +23.3519 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +[( is)]TJ +-38.9542 -1.2889 TD +0 Tw +(less than or equal to 0, )Tj +/TT13 1 Tf +10.104 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is not evaluated, and )Tj +/TT8 1 Tf +6 0 0 6 325.9819 340.06 Tm +(RPT)Tj +/TT6 1 Tf +9 0 0 9 336.7837 340.06 Tm +( returns )Tj +/TT8 1 Tf +6 0 0 6 370.1206 340.06 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 380.9224 340.06 Tm +(.)Tj +-28.3247 -2.0667 TD +0.0167 Tw +(Before each evaluation, the local variable )Tj +/TT8 1 Tf +6 0 0 6 291.7257 321.46 Tm +0 Tw +(RPTN)Tj +/TT6 1 Tf +9 0 0 9 306.128 321.46 Tm +0.0167 Tw +[( is bound to the number of evaluations yet to)]TJ +-20.0142 -1.2222 TD +0.1578 Tw +[(take place. This variable can be referenced within )]TJ +/TT13 1 Tf +23.7203 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1578 Tw +[(. For example, )]TJ +/TT8 1 Tf +6 0 0 6 427.481 310.46 Tm +0.3783 Tw +(\(RPT 10 \(PRINT)Tj +-50.2468 -1.9333 TD +0 Tw +(RPTN\)\))Tj +/TT6 1 Tf +9 0 0 9 147.6035 298.86 Tm +( will print the numbers )Tj +/TT8 1 Tf +6 0 0 6 241.73 298.86 Tm +(10)Tj +/TT6 1 Tf +9 0 0 9 248.9311 298.86 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 253.4311 298.86 Tm +(9)Tj +/TT6 1 Tf +9 0 0 9 257.0317 298.86 Tm +(...)Tj +/TT8 1 Tf +6 0 0 6 263.7817 298.86 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 267.3823 298.86 Tm +(, and return )Tj +/TT8 1 Tf +6 0 0 6 316.6406 298.86 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 320.2412 298.86 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 279.58 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 279.58 Tm +(RPTQ)Tj +/TT13 1 Tf +2.3999 0 TD +( N FORM)Tj +6 0 0 6 165 277.58 Tm +(1)Tj +9 0 0 9 168.6 279.58 Tm +( FORM)Tj +6 0 0 6 195.6 277.58 Tm +(2)Tj +9 0 0 9 199.2 279.58 Tm +(... FORM)Tj +6 0 0 6 242.4 277.58 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/F1 1 Tf +10 0 0 10 249.6006 279.58 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 279.58 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.95 TD +0.0233 Tw +(Nlambda-nospread version of )Tj +/TT8 1 Tf +6 0 0 6 248.5826 262.03 Tm +0 Tw +(RPT)Tj +/TT6 1 Tf +9 0 0 9 259.3844 262.03 Tm +0.0233 Tw +(: )Tj +/TT13 1 Tf +0.7967 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0233 Tw +[( is evaluated, )]TJ +/TT13 1 Tf +6.1388 0 TD +0 Tw +(FORM)Tj +6 0 0 6 348.83 260.03 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 352.43 262.03 Tm +0.0233 Tw +[( are not. Returns the value of the)]TJ +-25.1589 -1.3944 TD +0 Tw +(last evaluation of)Tj +/TT13 1 Tf +7.603 0 TD +( FORM)Tj +6 0 0 6 221.42 247.48 Tm +(N)Tj +/TT6 1 Tf +9 0 0 9 225.02 249.48 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 228.65 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 228.65 Tm +(FRPTQ)Tj +/TT8 1 Tf +6 0 0 6 132.6 228.65 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 136.2006 228.65 Tm +(N FORM)Tj +6 0 0 6 168.6 226.65 Tm +(1)Tj +9 0 0 9 172.2 228.65 Tm +( FORM)Tj +6 0 0 6 199.2 226.65 Tm +(2)Tj +9 0 0 9 202.8 228.65 Tm +(... FORM)Tj +6 0 0 6 246 226.65 Tm +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/F1 1 Tf +10 0 0 10 253.2006 228.65 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 228.65 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.95 TD +(Faster version of )Tj +/TT8 1 Tf +6 0 0 6 194.3174 211.1 Tm +(RPTQ)Tj +/TT6 1 Tf +9 0 0 9 208.7197 211.1 Tm +(. Does not bind )Tj +/TT8 1 Tf +6 0 0 6 273.6445 211.1 Tm +(RPTN)Tj +/TT6 1 Tf +9 0 0 9 288.0469 211.1 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 191.82 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 191.82 Tm +(MAP)Tj +/F1 1 Tf +10 0 0 10 121.8 191.82 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 124.58 191.82 Tm +(MAP)Tj +6 0 0 6 140.78 189.82 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 144.38 191.82 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 147.16 191.82 Tm +(MAPFN)Tj +6 0 0 6 174.16 189.82 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 177.76 191.82 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 180.54 191.82 Tm +(MAPFN)Tj +6 0 0 6 207.54 189.82 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 211.14 191.82 Tm +(\))Tj +0.333 -0.3 TD +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 191.82 Tm +([Function])Tj +-35.4033 -2.08 TD +(If )Tj +/TT13 1 Tf +0.9233 0 TD +(MAPFN)Tj +6 0 0 6 161.31 171.1 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 164.91 173.1 Tm +0.0008 Tc +0.0025 Tw +( is )Tj +/TT8 1 Tf +6 0 0 6 175.9036 173.1 Tm +0 Tc +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 186.7053 173.1 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 191.2353 173.1 Tm +(MAP)Tj +/TT6 1 Tf +9 0 0 9 202.0371 173.1 Tm +0.0002 Tc +0.0031 Tw +( applies the function )Tj +/TT13 1 Tf +9.2946 0 TD +0 Tc +0 Tw +(MAPFN)Tj +6 0 0 6 312.7 171.1 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 316.3 173.1 Tm +0.0001 Tc +0.0032 Tw +( to successive tails of the list )Tj +/TT13 1 Tf +12.6518 0 TD +0 Tc +0 Tw +(MAP)Tj +6 0 0 6 446.3799 171.1 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 449.98 173.1 Tm +0.0003 Tc +0.003 Tw +(. That is,)Tj +-35.9978 -1.3944 TD +0 Tc +0.0378 Tw +(first it computes )Tj +/TT8 1 Tf +6 0 0 6 193.997 160.55 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 197.5976 160.55 Tm +(MAPFN)Tj +6 0 0 6 224.61 158.55 Tm +(1)Tj +9 0 0 9 228.21 160.55 Tm +0.0911 Tw +[( MAP)]TJ +6 0 0 6 250.63 158.55 Tm +0 Tw +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 257.8306 160.55 Tm +0.0378 Tw +(, and then )Tj +/TT8 1 Tf +6 0 0 6 300.8096 160.55 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 304.4102 160.55 Tm +(MAPFN)Tj +6 0 0 6 331.41 158.55 Tm +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0917 Tw +[( \(CDR )]TJ +/TT13 1 Tf +9 0 0 9 357.7135 160.55 Tm +0 Tw +(MAP)Tj +6 0 0 6 373.91 158.55 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 384.7112 160.55 Tm +0.0378 Tw +(, etc., until )Tj +/TT13 1 Tf +4.9556 0 TD +0 Tw +(MAP)Tj +6 0 0 6 445.5099 158.55 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 449.11 160.55 Tm +0.0378 Tw +[( becomes)]TJ +-35.9011 -1.3944 TD +0.1067 Tw +[(a non-list. If )]TJ +/TT13 1 Tf +6.2216 0 TD +0 Tw +(MAPFN)Tj +6 0 0 6 209 146 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT6 1 Tf +9 0 0 9 217.7306 148 Tm +0.1067 Tw +(is provided, )Tj +/TT8 1 Tf +6 0 0 6 269.7219 148 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 273.3224 148 Tm +(MAPFN)Tj +6 0 0 6 300.33 146 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT13 1 Tf +9 0 0 9 309.0605 148 Tm +(MAP)Tj +6 0 0 6 325.26 146 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 332.4606 148 Tm +0.1067 Tw +[( is used instead of)]TJ +/TT8 1 Tf +6 0 0 6 407.6106 148 Tm +0.255 Tw +[( \(CDR )]TJ +/TT13 1 Tf +9 0 0 9 432.2741 148 Tm +0 Tw +(MAP)Tj +6 0 0 6 448.49 146 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 455.6906 148 Tm +0.1067 Tw +[( for the)]TJ +-36.6323 -1.3944 TD +0.1811 Tw +(next call for )Tj +/TT13 1 Tf +5.9965 0 TD +0 Tw +(MAPFN)Tj +6 0 0 6 206.97 133.45 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 210.57 135.45 Tm +0.1811 Tw +(, e.g., if )Tj +/TT13 1 Tf +3.9525 0 TD +0 Tw +(MAPFN)Tj +6 0 0 6 273.14 133.45 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 276.74 135.45 Tm +0.1811 Tw +[( were )]TJ +/TT8 1 Tf +6 0 0 6 304.1831 135.45 Tm +0 Tw +(CDDR)Tj +/TT6 1 Tf +9 0 0 9 318.5854 135.45 Tm +0.1811 Tw +(, alternate elements of the list would be)Tj +-21.3984 -1.3944 TD +0 Tw +(skipped. )Tj +/TT8 1 Tf +6 0 0 6 164.8169 122.9 Tm +(MAP)Tj +/TT6 1 Tf +9 0 0 9 175.6186 122.9 Tm +( returns )Tj +/TT8 1 Tf +6 0 0 6 208.9556 122.9 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 219.7573 122.9 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 103.62 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 103.62 Tm +(MAPC)Tj +/F1 1 Tf +10 0 0 10 127.2 103.62 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 129.98 103.62 Tm +(MAP)Tj +6 0 0 6 146.18 101.62 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 149.78 103.62 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 152.56 103.62 Tm +(MAPFN)Tj +6 0 0 6 179.56 101.62 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 183.16 103.62 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 185.94 103.62 Tm +(MAPFN)Tj +6 0 0 6 212.94 101.62 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 216.54 103.62 Tm +(\))Tj +0.333 -0.3 TD +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 103.62 Tm +([Function])Tj +-35.4033 -2.08 TD +0.0733 Tw +(Identical to )Tj +/TT8 1 Tf +6 0 0 6 174.4162 84.9 Tm +0 Tw +(MAP)Tj +/TT6 1 Tf +9 0 0 9 185.2179 84.9 Tm +0.0733 Tw +(, except that )Tj +/TT8 1 Tf +6 0 0 6 237.4142 84.9 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 241.0148 84.9 Tm +(MAPFN)Tj +6 0 0 6 267.99 82.9 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 271.59 84.9 Tm +( )Tj +/TT8 1 Tf +6 0 0 6 274.5 84.9 Tm +(\(CAR)Tj +/TT13 1 Tf +9 0 0 9 288.9023 84.9 Tm +0.1744 Tw +[( MAP)]TJ +6 0 0 6 312.07 82.9 Tm +0 Tw +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 322.8712 84.9 Tm +0.0733 Tw +[( is computed at each iteration instead of)]TJ +/TT8 1 Tf +6 0 0 6 126 72.35 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 129.6006 72.35 Tm +(MAPFN)Tj +6 0 0 6 156.6 70.35 Tm +(1)Tj +/TT19 1 Tf +9 0 0 9 160.2 72.35 Tm +( )Tj +/TT13 1 Tf +0.25 0 TD +(MAP)Tj +6 0 0 6 178.65 70.35 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 185.8506 72.35 Tm +(, i.e., )Tj +/TT8 1 Tf +6 0 0 6 206.2807 72.35 Tm +(MAPC)Tj +/TT6 1 Tf +9 0 0 9 220.6831 72.35 Tm +( works on elements, )Tj +/TT8 1 Tf +6 0 0 6 302.3643 72.35 Tm +(MAP)Tj +/TT6 1 Tf +9 0 0 9 313.166 72.35 Tm +( on tails. )Tj +/TT8 1 Tf +6 0 0 6 348.8057 72.35 Tm +(MAPC)Tj +/TT6 1 Tf +9 0 0 9 363.208 72.35 Tm +( returns )Tj +/TT8 1 Tf +6 0 0 6 396.5449 72.35 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 407.3467 72.35 Tm +(.)Tj +ET +endstream +endobj +48 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT9 9 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +52 0 obj +<< +/Length 11103 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-12)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +6 0 0 6 150 568.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 568.26 Tm +(MAPLIST)Tj +/F1 1 Tf +10 0 0 10 191.4 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 194.18 568.26 Tm +(MAP)Tj +6 0 0 6 210.38 566.26 Tm +(X)Tj +/F2 1 Tf +10 0 0 10 213.98 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 216.76 568.26 Tm +(MAPFN)Tj +6 0 0 6 243.76 566.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 247.36 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 250.14 568.26 Tm +(MAPFN)Tj +6 0 0 6 277.14 566.26 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 280.74 568.26 Tm +(\))Tj +0.333 -0.3 TD +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.26 Tm +([Function])Tj +-35.4033 -2.08 TD +0.3289 Tw +(Successively computes the same values that )Tj +/TT8 1 Tf +6 0 0 6 368.1521 549.54 Tm +0 Tw +(MAP)Tj +/TT6 1 Tf +9 0 0 9 378.9538 549.54 Tm +0.3289 Tw +[( would compute, and returns a list)]TJ +-22.7726 -1.2222 TD +0 Tw +(consisting of those values. )Tj +/TT8 1 Tf +6 0 0 6 150 519.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 519.26 Tm +(MAPCAR)Tj +/F1 1 Tf +10 0 0 10 186 519.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 188.78 519.26 Tm +(MAP)Tj +6 0 0 6 204.98 517.2599 Tm +(X)Tj +9 0 0 9 208.58 519.26 Tm +( MAPFN)Tj +6 0 0 6 240.98 517.2599 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 244.58 519.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 247.36 519.26 Tm +(MAPFN)Tj +6 0 0 6 274.36 517.2599 Tm +(2\))Tj +/F2 1 Tf +10 0 0 10 281.56 516.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 519.26 Tm +([Function])Tj +-35.4033 -2.08 TD +0.0433 Tw +(Computes the same values that )Tj +/TT8 1 Tf +6 0 0 6 302.7586 500.54 Tm +0 Tw +(MAPC)Tj +/TT6 1 Tf +9 0 0 9 317.1609 500.54 Tm +0.0433 Tw +[( would compute, and returns a list consisting of those)]TJ +-15.9068 -1.2222 TD +0 Tw +(values, e.g.,)Tj +/TT8 1 Tf +6 0 0 6 220.3227 489.54 Tm +( \(MAPCAR X FNTYP\))Tj +/TT6 1 Tf +9 0 0 9 285.1333 489.54 Tm +( is a list of)Tj +/TT8 1 Tf +6 0 0 6 324.9653 489.54 Tm +( FNTYP)Tj +/TT6 1 Tf +9 0 0 9 346.5688 489.54 Tm +(s for each element on )Tj +/TT8 1 Tf +6 0 0 6 432.9653 489.54 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 436.5659 489.54 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 470.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 470.26 Tm +(MAPCON)Tj +/TT13 1 Tf +3.5999 0 TD +( MAP)Tj +6 0 0 6 207.6 468.26 Tm +(X)Tj +9 0 0 9 211.2 470.26 Tm +( MAPFN)Tj +6 0 0 6 243.6 468.26 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 247.2 470.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 249.98 470.26 Tm +(MAPFN)Tj +6 0 0 6 276.98 468.26 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 280.58 470.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 283.58 467.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 470.26 Tm +([Function])Tj +-35.4033 -2.08 TD +0.0522 Tw +(Computes the same values that )Tj +/TT8 1 Tf +6 0 0 6 303.1586 451.54 Tm +0 Tw +(MAP)Tj +/TT6 1 Tf +9 0 0 9 313.9603 451.54 Tm +0.0522 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 334.6362 451.54 Tm +0 Tw +(MAPLIST)Tj +/TT6 1 Tf +9 0 0 9 359.8403 451.54 Tm +0.0522 Tw +[( but )]TJ +/TT8 1 Tf +6 0 0 6 378.6221 451.54 Tm +0 Tw +(NCONCs)Tj +/TT6 1 Tf +9 0 0 9 400.2256 451.54 Tm +0.0522 Tw +[( these values to form a list which)]TJ +-25.1362 -1.2222 TD +0 Tw +(it returns.)Tj +/TT8 1 Tf +6 0 0 6 150 421.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 421.26 Tm +(MAPCONC)Tj +/F1 1 Tf +10 0 0 10 191.4 421.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 194.18 421.26 Tm +(MAP)Tj +6 0 0 6 210.38 419.26 Tm +(X)Tj +9 0 0 9 213.98 421.26 Tm +( MAPFN)Tj +6 0 0 6 246.38 419.26 Tm +(1)Tj +9 0 0 9 249.98 421.26 Tm +( MAPFN)Tj +6 0 0 6 282.38 419.26 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 285.98 421.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 288.98 418.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 421.26 Tm +([Function])Tj +-35.4033 -2.08 TD +0.0367 Tw +(Computes the same values that )Tj +/TT8 1 Tf +6 0 0 6 302.4586 402.54 Tm +0 Tw +(MAPC)Tj +/TT6 1 Tf +9 0 0 9 316.8609 402.54 Tm +0.0367 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 337.2568 402.54 Tm +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +9 0 0 9 358.8603 402.54 Tm +0.0367 Tw +(, but )Tj +/TT8 1 Tf +6 0 0 6 379.6121 402.54 Tm +0 Tw +(NCONCs)Tj +/TT6 1 Tf +9 0 0 9 401.2156 402.54 Tm +0.0367 Tw +[( the values to form a list which it)]TJ +-25.2462 -1.2222 TD +0 Tw +(returns.)Tj +-5.3333 -2 TD +0.0044 Tw +(Note that )Tj +/TT8 1 Tf +6 0 0 6 165.8285 373.54 Tm +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +9 0 0 9 187.432 373.54 Tm +0.0044 Tw +( creates a new list which is a mapping of the old list in that each element of the new list)Tj +-6.8258 -1.2222 TD +0.0967 Tw +(is the result of applying a function to the corresponding element on the original list. )Tj +/TT8 1 Tf +6 0 0 6 477.0948 362.54 Tm +0 Tw +(MAPCONC)Tj +/TT6 1 Tf +9 0 0 9 502.2989 362.54 Tm +0.0967 Tw +[( is used)]TJ +-41.811 -1.2222 TD +0.2444 Tw +(when there are a variable number of elements \(including none\) to be inserted at each iteration.)Tj +T* +0 Tw +(Examples:)Tj +/TT8 1 Tf +6 0 0 6 126 328.09 Tm +(\(MAPCONC \(A B C NIL D NIL\) \(LAMBDA \(Y\)\(if \(NULL Y\) then NIL)Tj +2 -1 TD +(else \(LIST Y\)\)\)\) = > \(A B C D\))Tj +/TT6 1 Tf +9 0 0 9 126 306.54 Tm +(This )Tj +/TT8 1 Tf +6 0 0 6 145.437 306.54 Tm +(MAPCONC)Tj +/TT6 1 Tf +9 0 0 9 170.6411 306.54 Tm +( returns a list consisting of)Tj +/TT8 1 Tf +6 0 0 6 275.3188 306.54 Tm +( MAP)Tj +/TT13 1 Tf +2.4052 -0.3333 TD +(X)Tj +/TT6 1 Tf +9 0 0 9 293.35 306.54 Tm +( with all )Tj +/TT8 1 Tf +6 0 0 6 328.1371 306.54 Tm +(NILs)Tj +/TT6 1 Tf +9 0 0 9 342.5394 306.54 Tm +( removed.)Tj +/TT8 1 Tf +6 0 0 6 126 292.54 Tm +(\(MAPCONC \(\(A B\) C \(D E F\)\(G\) H I\) \(LAMBDA \(Y\)\(if \(LISP Y\) then Y)Tj +2 -1 TD +(else NIL\)\)\) = > \(A B D E F G\))Tj +/TT6 1 Tf +9 0 0 9 126 270.99 Tm +(This )Tj +/TT8 1 Tf +6 0 0 6 145.437 270.99 Tm +(MAPCONC)Tj +/TT6 1 Tf +9 0 0 9 170.6411 270.99 Tm +( returns a linear list consisting of all the lists on )Tj +/TT13 1 Tf +21.022 0 TD +(MAP)Tj +6 0 0 6 376.08 268.99 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 379.68 270.99 Tm +(.)Tj +-28.1867 -2.1722 TD +(Since )Tj +/TT8 1 Tf +6 0 0 6 149.7972 251.44 Tm +(MAPCONC)Tj +/TT6 1 Tf +9 0 0 9 175.0013 251.44 Tm +0.0733 Tw +[( uses )]TJ +/TT8 1 Tf +6 0 0 6 198.1885 251.44 Tm +0 Tw +(NCONC)Tj +/TT6 1 Tf +9 0 0 9 216.1914 251.44 Tm +0.0733 Tw +[( to string the corresponding lists together, in this example the original list will)]TJ +-10.0213 -1.2222 TD +0.0389 Tw +(be altered to be)Tj +/TT8 1 Tf +6 0 0 6 187.9582 240.44 Tm +0.0933 Tw +[( \(\(A B C D E F G\) C \(D E F G\)\(G\) H I\))]TJ +/TT6 1 Tf +9 0 0 9 329.0199 240.44 Tm +0.0389 Tw +[(. If this is an undesirable side effect, the functional)]TJ +-22.5578 -1.2222 TD +0.0344 Tw +(argument to )Tj +/TT8 1 Tf +6 0 0 6 177.8866 229.44 Tm +0 Tw +(MAPCONC)Tj +/TT6 1 Tf +9 0 0 9 203.0907 229.44 Tm +0.0344 Tw +[( should return instead a top level copy of the lists, i.e., )]TJ +/TT8 1 Tf +6 0 0 6 423.4128 229.44 Tm +0.0833 Tw +(\(LAMBDA \(Y\) \(if \(LISTP Y\) then)Tj +-49.5688 -1.8333 TD +0 Tw +(\(APPERND Y\) else NIL\)\)\))Tj +/TT6 1 Tf +9 0 0 9 208.8135 218.44 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 199.16 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 199.16 Tm +(MAP2C)Tj +/TT8 1 Tf +6 0 0 6 180.6 199.16 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 184.2006 199.16 Tm +(MAP)Tj +6 0 0 6 200.4 197.16 Tm +(X)Tj +9 0 0 9 204 199.16 Tm +( MAP)Tj +6 0 0 6 225.6 197.16 Tm +(Y)Tj +9 0 0 9 229.2 199.16 Tm +( MAPFN)Tj +6 0 0 6 261.6 197.16 Tm +(1)Tj +9 0 0 9 265.2 199.16 Tm +( MAPFN)Tj +6 0 0 6 297.6 197.16 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/F2 1 Tf +10 0 0 10 304.8 196.16 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 199.16 Tm +([Function])Tj +-35.4033 -2.08 TD +0.3256 Tw +(Identical to )Tj +/TT8 1 Tf +6 0 0 6 226.9562 180.44 Tm +0 Tw +(MAPC)Tj +/TT6 1 Tf +9 0 0 9 241.3585 180.44 Tm +0.3256 Tw +[( except )]TJ +/TT13 1 Tf +3.9963 0 TD +0 Tw +(MAPFN)Tj +6 0 0 6 304.31 178.44 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 307.91 180.44 Tm +0.3256 Tw +[( is a function of two arguments, and )]TJ +/TT8 1 Tf +6 0 0 6 477.1298 180.44 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 480.7303 180.44 Tm +(MAPFN)Tj +6 0 0 6 507.7499 178.44 Tm +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.78 Tw +[( \(CAR)]TJ +/TT13 1 Tf +9 0 0 9 174 167.89 Tm +0 Tw +(MAP)Tj +6 0 0 6 190.2 165.89 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\(CAR)Tj +/TT6 1 Tf +9 0 0 9 211.8029 167.89 Tm +( )Tj +/TT13 1 Tf +0.2811 0 TD +(MAP)Tj +6 0 0 6 230.53 165.89 Tm +(Y)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 241.3312 167.89 Tm +0.0311 Tw +[( is computed at each iteration. Terminates when either )]TJ +/TT13 1 Tf +24.837 0 TD +0 Tw +(MAP)Tj +6 0 0 6 481.09 165.89 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 484.69 167.89 Tm +0.0311 Tw +[( or )]TJ +/TT13 1 Tf +1.5031 0 TD +0 Tw +(MAP)Tj +6 0 0 6 514.42 165.89 Tm +(Y)Tj +/TT6 1 Tf +9 0 0 9 518.02 167.89 Tm +0.0311 Tw +[( is a)]TJ +-38.2244 -1.3944 TD +0 Tw +(non-list.)Tj +/TT13 1 Tf +0 -2 TD +(MAPFN)Tj +6 0 0 6 201 135.34 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 204.6 137.34 Tm +( is still a function of one argument, and is applied twice on each iteration;)Tj +/TT8 1 Tf +6 0 0 6 174 124.79 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 177.6006 124.79 Tm +(MAPFN)Tj +6 0 0 6 204.6 122.79 Tm +(2)Tj +9 0 0 9 208.2 124.79 Tm +( MAP)Tj +6 0 0 6 229.8 122.79 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 237.0006 124.79 Tm +( gives the new )Tj +/TT13 1 Tf +6.5972 0 TD +(MAP)Tj +6 0 0 6 312.57 122.79 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 316.17 124.79 Tm +(,)Tj +/TT8 1 Tf +6 0 0 6 318.42 124.79 Tm +( \()Tj +/TT13 1 Tf +9 0 0 9 325.6212 124.79 Tm +(MAPFN)Tj +6 0 0 6 352.62 122.79 Tm +(2)Tj +9 0 0 9 356.22 124.79 Tm +( MAP)Tj +6 0 0 6 377.82 122.79 Tm +(Y)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 385.0206 124.79 Tm +( the new )Tj +/TT13 1 Tf +4.0322 0 TD +(MAP)Tj +6 0 0 6 437.51 122.79 Tm +(Y)Tj +/TT6 1 Tf +9 0 0 9 441.11 124.79 Tm +(. )Tj +/TT8 1 Tf +6 0 0 6 447.86 124.79 Tm +(CDR)Tj +/TT6 1 Tf +9 0 0 9 458.6617 124.79 Tm +( is used if )Tj +/TT13 1 Tf +4.4556 0 TD +(MAPFN)Tj +6 0 0 6 525.78 122.79 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 174 112.24 Tm +(is not supplied, i.e., is )Tj +/TT8 1 Tf +6 0 0 6 262.2422 112.24 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 273.0439 112.24 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 92.96 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 92.96 Tm +(MAP2CAR)Tj +/TT13 1 Tf +4.1999 0 TD +( MAP)Tj +6 0 0 6 213 90.96 Tm +(X)Tj +9 0 0 9 216.6 92.96 Tm +( MAP)Tj +6 0 0 6 238.2 90.96 Tm +(Y)Tj +9 0 0 9 241.8 92.96 Tm +( MAPFN)Tj +6 0 0 6 274.2 90.96 Tm +(1)Tj +9 0 0 9 277.8 92.96 Tm +( MAPFN)Tj +6 0 0 6 310.2 90.96 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 313.8 92.96 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 316.8 89.96 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 92.96 Tm +([Function])Tj +-35.4033 -2.08 TD +0.2667 Tw +(Identical to )Tj +/TT8 1 Tf +6 0 0 6 225.8962 74.24 Tm +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +9 0 0 9 247.4997 74.24 Tm +0.2667 Tw +[( except )]TJ +/TT13 1 Tf +3.8785 0 TD +0 Tw +(MAPFN)Tj +6 0 0 6 309.39 72.24 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 312.99 74.24 Tm +0.2667 Tw +[( is a function of two arguments, and )]TJ +/TT8 1 Tf +6 0 0 6 477.9698 74.24 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 481.5703 74.24 Tm +(MAPFN)Tj +6 0 0 6 508.59 72.24 Tm +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.64 Tw +[( \(CAR)]TJ +/TT13 1 Tf +9 0 0 9 174 61.69 Tm +0 Tw +(MAP)Tj +6 0 0 6 190.2 59.69 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\(CAR )Tj +/TT13 1 Tf +9 0 0 9 216.2835 61.69 Tm +(MAP)Tj +6 0 0 6 232.48 59.69 Tm +(Y)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 243.2812 61.69 Tm +0.0611 Tw +[( is used to assemble the new list. Terminates when either )]TJ +/TT13 1 Tf +26.3349 0 TD +0 Tw +(MAP)Tj +6 0 0 6 496.54 59.69 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 500.14 61.69 Tm +0.0611 Tw +[( or )]TJ +/TT13 1 Tf +1.5631 0 TD +0 Tw +(MAP)Tj +6 0 0 6 530.41 59.69 Tm +(Y)Tj +/TT6 1 Tf +9 0 0 9 174 49.14 Tm +(is a non-list.)Tj +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +55 0 obj +<< +/Length 13643 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-13)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT8 1 Tf +6 0 0 6 102 568.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 568.26 Tm +(SUBSET)Tj +/TT8 1 Tf +6 0 0 6 138 568.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 141.6006 568.26 Tm +(MAP)Tj +6 0 0 6 157.8 566.26 Tm +(X)Tj +9 0 0 9 161.4 568.26 Tm +( MAPFN)Tj +6 0 0 6 193.8 566.26 Tm +(1)Tj +9 0 0 9 197.4 568.26 Tm +( MAPFN)Tj +6 0 0 6 229.8 566.26 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 233.4 568.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 236.4 565.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.26 Tm +([Function])Tj +-35.4033 -2.08 TD +0.1067 Tw +(Applies )Tj +/TT13 1 Tf +4.1782 0 TD +0 Tw +(MAPFN)Tj +6 0 0 6 190.61 547.54 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 194.21 549.54 Tm +0.1067 Tw +[( to elements of )]TJ +/TT13 1 Tf +7.1205 0 TD +0 Tw +(MAP)Tj +6 0 0 6 274.49 547.54 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 278.09 549.54 Tm +0.1067 Tw +[( and returns a list of those elements for which this)]TJ +-16.8989 -1.3944 TD +0 Tw +(application is non-)Tj +/TT8 1 Tf +6 0 0 6 200.0786 536.99 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 210.8804 536.99 Tm +(, e.g.:)Tj +/TT8 1 Tf +6 0 0 6 162 524.54 Tm +(\(SUBSET \(A B 3 C 4\) NUMBERP\) = \(3 4\))Tj +/TT13 1 Tf +9 0 0 9 126 508.99 Tm +(MAPFN)Tj +6 0 0 6 153 506.99 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 156.6 508.99 Tm +( plays the same role as with )Tj +/TT8 1 Tf +6 0 0 6 268.766 508.99 Tm +(MAP)Tj +/TT6 1 Tf +9 0 0 9 279.5677 508.99 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 284.0677 508.99 Tm +(MAPC)Tj +/TT6 1 Tf +9 0 0 9 298.4701 508.99 Tm +(, et al.)Tj +/TT8 1 Tf +6 0 0 6 102 488.16 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 488.16 Tm +(EVERY)Tj +/TT8 1 Tf +6 0 0 6 132.6 488.16 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 136.2006 488.16 Tm +(EVERY)Tj +6 0 0 6 163.2 486.16 Tm +(X)Tj +9 0 0 9 166.8 488.16 Tm +( EVERYFN)Tj +6 0 0 6 210 486.16 Tm +(1)Tj +9 0 0 9 213.6 488.16 Tm +( EVERYFN)Tj +6 0 0 6 256.8 486.16 Tm +(2)Tj +/F2 1 Tf +10 0 0 10 260.4 488.16 Tm +(\))Tj +0.333 -0.3 TD +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 488.16 Tm +([Function])Tj +-35.4033 -2.08 TD +(Returns )Tj +/TT8 1 Tf +6 0 0 6 159.8934 469.44 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 163.494 469.44 Tm +0.0389 Tw +[( if the result of applying )]TJ +/TT13 1 Tf +11.1201 0 TD +0 Tw +(EVERYFN)Tj +6 0 0 6 301.38 467.44 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 304.98 469.44 Tm +0.0389 Tw +[( to each element in )]TJ +/TT13 1 Tf +8.7135 0 TD +0 Tw +(EVERY)Tj +6 0 0 6 410.4 467.44 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 414 469.44 Tm +0.0389 Tw +[( is true, otherwise)]TJ +/TT8 1 Tf +6 0 0 6 126 456.89 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 136.8017 456.89 Tm +(. For example, )Tj +/TT8 1 Tf +6 0 0 6 197.5166 456.89 Tm +(\(EVERY \(X Y Z\) ATOM\) => T)Tj +/TT6 1 Tf +9 0 0 9 294.7324 456.89 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 126 438.89 Tm +(EVERY)Tj +/TT6 1 Tf +9 0 0 9 144.0029 438.89 Tm +0.0411 Tw +[( operates by evaluating)]TJ +/TT8 1 Tf +6 0 0 6 237.8375 438.89 Tm +0.1 Tc +0 Tw +( \()Tj +/TT13 1 Tf +9 0 0 9 245.6387 438.89 Tm +0 Tc +(EVERYFN)Tj +6 0 0 6 283.42 436.89 Tm +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1 Tw +[( \(CAR )]TJ +/TT13 1 Tf +9 0 0 9 309.8235 438.89 Tm +0 Tw +(EVERY)Tj +6 0 0 6 336.82 436.89 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT13 1 Tf +9 0 0 9 348.2212 438.89 Tm +(EVERY)Tj +6 0 0 6 375.22 436.89 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 382.4206 438.89 Tm +0.0411 Tw +[(. The second argument is)]TJ +-28.4912 -1.3944 TD +0.1444 Tw +(passed to )Tj +/TT13 1 Tf +4.6995 0 TD +0 Tw +(EVERYFN)Tj +6 0 0 6 206.1 424.34 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 209.7 426.34 Tm +0.1444 Tw +[( so that it can look at the next element on )]TJ +/TT13 1 Tf +19.8887 0 TD +0 Tw +(EVERY)Tj +6 0 0 6 415.66 424.34 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 419.2599 426.34 Tm +0.1444 Tw +[( if necessary. If)]TJ +/TT13 1 Tf +-32.5844 -1.3944 TD +0 Tw +(EVERYFN)Tj +6 0 0 6 163.8 411.79 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 167.4 413.79 Tm +0.0133 Tw +[( yields )]TJ +/TT8 1 Tf +6 0 0 6 196.0067 413.79 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 206.8084 413.79 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 211.4284 413.79 Tm +(EVERY)Tj +/TT6 1 Tf +9 0 0 9 229.4314 413.79 Tm +0.0133 Tw +[( immediately returns )]TJ +/TT8 1 Tf +6 0 0 6 315.6869 413.79 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 326.4886 413.79 Tm +0.0133 Tw +[(. Otherwise, )]TJ +/TT8 1 Tf +6 0 0 6 379.4644 413.79 Tm +0 Tw +(EVERY)Tj +/TT6 1 Tf +9 0 0 9 397.4673 413.79 Tm +0.0133 Tw +[( computes )]TJ +/TT8 1 Tf +6 0 0 6 440.9583 413.79 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 444.5588 413.79 Tm +(EVERYFN)Tj +6 0 0 6 482.38 411.79 Tm +(2)Tj +9 0 0 9 126 401.24 Tm +(EVERY)Tj +6 0 0 6 153 399.24 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 160.2006 401.24 Tm +0.0644 Tw +(, or \()Tj +/TT8 1 Tf +6 0 0 6 179.5759 401.24 Tm +0 Tw +(CDR )Tj +/TT13 1 Tf +9 0 0 9 194.8982 401.24 Tm +(EVERY)Tj +6 0 0 6 221.9 399.24 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 229.1006 401.24 Tm +0.0644 Tw +[( if )]TJ +/TT13 1 Tf +1.2529 0 TD +0 Tw +(EVERYFN)Tj +6 0 0 6 278.18 399.24 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 281.78 401.24 Tm +0.0644 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 292.8936 401.24 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 303.6953 401.24 Tm +0.0644 Tw +(, and uses this as the new )Tj +/TT13 1 Tf +12.9028 0 TD +0 Tw +(EVERY)Tj +6 0 0 6 446.84 399.24 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 450.44 401.24 Tm +0.0644 Tw +(, and the)Tj +-36.0489 -1.3944 TD +0.0722 Tw +[(process continues. For example )]TJ +/TT8 1 Tf +6 0 0 6 258.269 388.69 Tm +0.1733 Tw +(\(EVERY X ATOM CDDR\))Tj +/TT6 1 Tf +9 0 0 9 337.0013 388.69 Tm +0.0722 Tw +[( is true if every other element of )]TJ +/TT13 1 Tf +14.9201 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +[( is)]TJ +-38.9648 -1.2889 TD +0 Tw +(atomic.)Tj +/TT8 1 Tf +6 0 0 6 102 357.81 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 357.81 Tm +(SOME)Tj +/TT8 1 Tf +6 0 0 6 127.2 357.81 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 130.8006 357.81 Tm +(SOME)Tj +6 0 0 6 152.4 355.81 Tm +(X)Tj +9 0 0 9 156 357.81 Tm +( SOMEFN)Tj +6 0 0 6 193.8 355.81 Tm +(1)Tj +9 0 0 9 197.4 357.81 Tm +( SOMEFN)Tj +6 0 0 6 235.2 355.81 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 238.8 357.81 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 241.8 354.81 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 357.81 Tm +([Function])Tj +-35.4033 -2.08 TD +0.0233 Tw +(Returns the tail of)Tj +/TT13 1 Tf +7.9714 0 TD +0.0567 Tw +[( SOME)]TJ +6 0 0 6 225.25 337.09 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 228.85 339.09 Tm +0.0233 Tw +[( beginning with the first element that satisfies)]TJ +/TT13 1 Tf +20.3206 0 TD +0.0567 Tw +[( SOMEFN)]TJ +6 0 0 6 450.05 337.09 Tm +0 Tw +(1)Tj +/TT6 1 Tf +9 0 0 9 453.65 339.09 Tm +0.0233 Tw +(, i.e., for)Tj +-36.4056 -1.3944 TD +0 Tw +(which )Tj +/TT13 1 Tf +3.1274 0 TD +(SOMEFN)Tj +6 0 0 6 186.56 324.54 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 190.16 326.54 Tm +0.1444 Tw +[( applied to that element is true. Value is )]TJ +/TT8 1 Tf +6 0 0 6 365.8587 326.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 376.6605 326.54 Tm +0.1444 Tw +[( if no such element exists. )]TJ +/TT8 1 Tf +6 0 0 6 126 313.99 Tm +0.115 Tw +(\(SOME X \(LAMBDA \(Z\) \(EQUAL Z Y\)\)\))Tj +/TT6 1 Tf +9 0 0 9 252.5599 313.99 Tm +0.0478 Tw +[( is equivalent to)]TJ +/TT8 1 Tf +6 0 0 6 316.9686 313.99 Tm +0.115 Tw +[( \(MEMBER Y X\))]TJ +/TT6 1 Tf +9 0 0 9 365.8462 313.99 Tm +0.0478 Tw +(. )Tj +/TT8 1 Tf +6 0 0 6 373.4562 313.99 Tm +0 Tw +(SOME)Tj +/TT6 1 Tf +9 0 0 9 387.8585 313.99 Tm +0.0478 Tw +[( operates analogously to)]TJ +/TT8 1 Tf +6 0 0 6 126 302.99 Tm +0 Tw +(EVERY)Tj +/TT6 1 Tf +9 0 0 9 144.0029 302.99 Tm +0.0089 Tw +[(. At each stage, )]TJ +/TT8 1 Tf +6 0 0 6 208.6993 302.99 Tm +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 212.2999 302.99 Tm +(SOMEFN)Tj +6 0 0 6 244.69 300.99 Tm +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.02 Tw +[( \(CAR )]TJ +/TT13 1 Tf +9 0 0 9 270.1335 302.99 Tm +0 Tw +(SOME)Tj +6 0 0 6 291.73 300.99 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT13 1 Tf +9 0 0 9 302.6512 302.99 Tm +(SOME)Tj +6 0 0 6 324.25 300.99 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 331.4506 302.99 Tm +0.0089 Tw +[( is computed, and if this not )]TJ +/TT8 1 Tf +6 0 0 6 445.4247 302.99 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 456.2264 302.99 Tm +(, )Tj +/TT13 1 Tf +0.5089 0 TD +(SOME)Tj +6 0 0 6 482.42 300.99 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 126 290.44 Tm +0.0022 Tw +(is returned as the value of )Tj +/TT8 1 Tf +6 0 0 6 231.536 290.44 Tm +0 Tw +(SOME)Tj +/TT6 1 Tf +9 0 0 9 245.9383 290.44 Tm +0.0002 Tc +0.002 Tw +(. Otherwise, )Tj +/TT8 1 Tf +6 0 0 6 298.6141 290.44 Tm +0 Tc +0 Tw +(\()Tj +/TT13 1 Tf +9 0 0 9 302.2147 290.44 Tm +(SOMEFN)Tj +6 0 0 6 334.63 288.44 Tm +(2)Tj +9 0 0 9 338.23 290.44 Tm +0.0056 Tw +[( SOME)]TJ +6 0 0 6 365.28 288.44 Tm +0 Tw +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +9 0 0 9 372.4806 290.44 Tm +0.0001 Tc +0.0021 Tw +( is computed, or )Tj +/TT8 1 Tf +6 0 0 6 439.1465 290.44 Tm +0 Tc +0 Tw +(\(CDR )Tj +/TT13 1 Tf +9 0 0 9 457.1794 290.44 Tm +(SOME)Tj +6 0 0 6 478.79 288.44 Tm +(X)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +-59.3983 -2.0917 TD +(if )Tj +/TT13 1 Tf +9 0 0 9 136.8017 277.89 Tm +(SOMEFN)Tj +6 0 0 6 169.2 275.89 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +( = NIL)Tj +/TT6 1 Tf +9 0 0 9 194.4035 277.89 Tm +(, and used for the next )Tj +/TT13 1 Tf +10.124 0 TD +(SOME)Tj +6 0 0 6 307.12 275.89 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 310.72 277.89 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 257.06 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 257.06 Tm +(NOTANY)Tj +/TT8 1 Tf +6 0 0 6 138 257.06 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 141.6006 257.06 Tm +(SOME)Tj +6 0 0 6 163.2 255.06 Tm +(X)Tj +9 0 0 9 166.8 257.06 Tm +( SOMEFN)Tj +6 0 0 6 204.6 255.06 Tm +(1)Tj +9 0 0 9 208.2 257.06 Tm +( SOMEFN)Tj +6 0 0 6 246 255.06 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 249.6 257.06 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 252.6 254.06 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 257.06 Tm +([Function])Tj +/TT8 1 Tf +6 0 0 6 126 238.34 Tm +(\(NOT \(SOME )Tj +/TT13 1 Tf +9 0 0 9 165.6064 238.34 Tm +(SOME)Tj +6 0 0 6 187.2 236.34 Tm +(X)Tj +9 0 0 9 190.8 238.34 Tm +( SOMEFN)Tj +6 0 0 6 228.6 236.34 Tm +(1)Tj +9 0 0 9 232.2 238.34 Tm +( SOMEFN)Tj +6 0 0 6 270 236.34 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 280.8011 238.34 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 217.51 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 217.51 Tm +(NOTEVERY)Tj +/TT8 1 Tf +6 0 0 6 148.8 217.51 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 152.4006 217.51 Tm +(EVERY)Tj +6 0 0 6 179.4 215.51 Tm +(X)Tj +9 0 0 9 183 217.51 Tm +( EVERYFN)Tj +6 0 0 6 226.2 215.51 Tm +(1)Tj +9 0 0 9 229.8 217.51 Tm +( EVERYFN)Tj +6 0 0 6 273 215.51 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 276.6 217.51 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 279.6 214.51 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 217.51 Tm +([Function])Tj +/TT8 1 Tf +6 0 0 6 126 198.79 Tm +(\(NOT \(EVERY )Tj +/TT13 1 Tf +9 0 0 9 169.207 198.79 Tm +(EVERY)Tj +6 0 0 6 196.2 196.79 Tm +(X)Tj +9 0 0 9 199.8 198.79 Tm +( EVERYFN)Tj +6 0 0 6 243 196.79 Tm +(1)Tj +9 0 0 9 246.6 198.79 Tm +( EVERYFN)Tj +6 0 0 6 289.8 196.79 Tm +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +9 0 0 9 300.6011 198.79 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 102 177.96 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 177.96 Tm +(MAPRINT)Tj +/TT13 1 Tf +4.1999 0 TD +( LST FILE LEFT RIGHT SEP PFN LISPXPRINTFLG)Tj +/TT6 1 Tf +25.2041 0 TD +(\))Tj +/F2 1 Tf +10 0 0 10 373.2 174.96 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 177.96 Tm +([Function])Tj +-35.4033 -2.08 TD +0.0422 Tw +[(A general printing function. For each element of the list )]TJ +/TT13 1 Tf +25.4752 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +(, applies )Tj +/TT13 1 Tf +4.0215 0 TD +0 Tw +(PFN)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +[( to the element,)]TJ +-33.0972 -1.2889 TD +0 Tw +(and )Tj +/TT13 1 Tf +2.0129 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.07 Tw +[(. If )]TJ +/TT13 1 Tf +1.8799 0 TD +0 Tw +(PFN)Tj +/TT6 1 Tf +1.8003 0 TD +0.07 Tw +[( is )]TJ +/TT8 1 Tf +6 0 0 6 211.0349 147.64 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 221.8366 147.64 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 226.9666 147.64 Tm +(PRIN1)Tj +/TT6 1 Tf +9 0 0 9 244.9696 147.64 Tm +0.07 Tw +[( is used. Between each application )]TJ +/TT8 1 Tf +6 0 0 6 389.7761 147.64 Tm +0 Tw +(MAPRINT)Tj +/TT6 1 Tf +9 0 0 9 414.9802 147.64 Tm +0.07 Tw +[( performs )]TJ +/TT8 1 Tf +6 0 0 6 457.2411 147.64 Tm +0 Tw +(PRIN1)Tj +/TT6 1 Tf +9 0 0 9 475.244 147.64 Tm +0.07 Tw +[( of)]TJ +/TT13 1 Tf +-38.8049 -1.2889 TD +0 Tw +(SEP)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +6 0 0 6 145.1926 136.04 Tm +(\()Tj +/TT6 1 Tf +9 0 0 9 148.7932 136.04 Tm +(or )Tj +/TT8 1 Tf +6 0 0 6 160.2514 136.04 Tm +("")Tj +/TT6 1 Tf +9 0 0 9 167.4526 136.04 Tm +0.0822 Tw +[( if )]TJ +/TT13 1 Tf +1.2885 0 TD +0 Tw +(SEP)Tj +/TT6 1 Tf +1.8003 0 TD +0.0822 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 206.6851 136.04 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 217.4868 136.04 Tm +0.0822 Tw +[(\). If )]TJ +/TT13 1 Tf +2.2496 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0822 Tw +[( is given, it is printed \(using )]TJ +/TT8 1 Tf +6 0 0 6 377.8649 136.04 Tm +0 Tw +(PRIN1)Tj +/TT6 1 Tf +9 0 0 9 395.8678 136.04 Tm +0.0822 Tw +[(\) initially; if )]TJ +/TT13 1 Tf +5.9554 0 TD +0 Tw +(RIGHT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0822 Tw +[( is)]TJ +-38.9412 -1.2889 TD +0 Tw +(given, it is printed \(using )Tj +/TT8 1 Tf +6 0 0 6 228.4145 124.44 Tm +(PRIN1)Tj +/TT6 1 Tf +9 0 0 9 246.4175 124.44 Tm +(\) at the end.)Tj +-13.3797 -2 TD +0.1489 Tw +(For example, )Tj +/TT8 1 Tf +6 0 0 6 182.6448 106.44 Tm +0.3583 Tw +(\(MAPRINT X NIL %\( %\)\))Tj +/TT6 1 Tf +9 0 0 9 274.0583 106.44 Tm +0.1489 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +6 0 0 6 344.787 106.44 Tm +0 Tw +(PRIN1)Tj +/TT6 1 Tf +9 0 0 9 362.7899 106.44 Tm +0.1489 Tw +[( for lists. To print a list with)]TJ +-26.31 -1.2222 TD +0 Tw +(commas between each element and a final )Tj +/TT8 1 Tf +6 0 0 6 295.8794 95.44 Tm +(.)Tj +/TT6 1 Tf +9 0 0 9 303.0806 95.44 Tm +( one could use )Tj +/TT8 1 Tf +6 0 0 6 367.0474 95.44 Tm +(\(MAPRINT X T NIL %. %,\))Tj +/TT6 1 Tf +9 0 0 9 457.062 95.44 Tm +(.)Tj +-36.7847 -2 TD +(If )Tj +/TT13 1 Tf +0.9199 0 TD +(LISPXPRINTFLG)Tj +/TT6 1 Tf +7.8013 0 TD +( = )Tj +/TT8 1 Tf +6 0 0 6 214.4443 77.44 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 218.0449 77.44 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 222.5449 77.44 Tm +(LISPXPRIN1)Tj +/TT6 1 Tf +9 0 0 9 258.5508 77.44 Tm +( \(see Chapter 13\) is used instead of )Tj +/TT8 1 Tf +6 0 0 6 398.6221 77.44 Tm +(PRIN1)Tj +/TT6 1 Tf +9 0 0 9 416.625 77.44 Tm +(.)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +58 0 obj +<< +/Length 8223 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-14)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0 -4.38 TD +(Functional Arguments)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 551.54 Tm +0.0433 Tw +[(The functions that call the Interlisp-D evaluator take functional arguments, which may be symbols)]TJ +0 -1.2222 TD +0 Tw +(with function definitions, or expr definition forms such as)Tj +/TT8 1 Tf +6 0 0 6 356.1064 540.54 Tm +( \(LAMBDA \(X\) ...\))Tj +/TT6 1 Tf +9 0 0 9 417.3164 540.54 Tm +(.)Tj +-32.3685 -2 TD +0.2278 Tw +(The following functions are useful when one wants to supply a functional argument which will)Tj +0 -1.2222 TD +0.1656 Tw +(always return )Tj +/TT8 1 Tf +6 0 0 6 186.4473 511.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 197.249 511.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 203.239 511.54 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 206.8396 511.54 Tm +0.1656 Tw +(, or )Tj +/TT8 1 Tf +6 0 0 6 225.0379 511.54 Tm +0 Tw +(0)Tj +/TT6 1 Tf +9 0 0 9 228.6385 511.54 Tm +0.1656 Tw +[(. Note that the arguments )]TJ +/TT13 1 Tf +12.7951 0 TD +0 Tw +(X)Tj +6 0 0 6 349.19 509.54 Tm +(1)Tj +9 0 0 9 352.79 511.54 Tm +0.3967 Tw +[( ... X)]TJ +6 0 0 6 392.33 509.54 Tm +0 Tw +(N)Tj +/TT19 1 Tf +9 0 0 9 395.93 508.54 Tm +( )Tj +/TT6 1 Tf +0.4156 0.3333 TD +0.1656 Tw +(to these functions are evaluated,)Tj +-30.4078 -1.5556 TD +0 Tw +(though they are not used.)Tj +/TT8 1 Tf +6 0 0 6 150 478.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 478.26 Tm +(NILL)Tj +/TT8 1 Tf +6 0 0 6 175.2 478.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 178.8006 478.26 Tm +(X)Tj +6 0 0 6 184.2 476.26 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 187.8 478.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 190.58 478.26 Tm +(... X)Tj +6 0 0 6 217.58 476.26 Tm +(N)Tj +/F1 1 Tf +10 0 0 10 221.18 478.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 223.96 478.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 226.96 475.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 478.26 Tm +([NoSpread Function])Tj +/F1 1 Tf +10 0 0 10 174 458.26 Tm +(Returns )Tj +/TT8 1 Tf +6 0 0 6 214.18 458.26 Tm +(NIL)Tj +/F1 1 Tf +10 0 0 10 224.9818 458.26 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 439.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 439.26 Tm +(TRUE)Tj +/TT8 1 Tf +6 0 0 6 175.2 439.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 178.8006 439.26 Tm +(X)Tj +6 0 0 6 184.2 437.26 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 187.8 439.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 190.58 439.26 Tm +(... X)Tj +6 0 0 6 217.58 437.26 Tm +(N)Tj +/F1 1 Tf +10 0 0 10 221.18 439.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 223.96 439.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 226.96 436.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 439.26 Tm +([NoSpread Function])Tj +/F1 1 Tf +10 0 0 10 174 419.26 Tm +(Returns )Tj +/TT8 1 Tf +6 0 0 6 214.18 419.26 Tm +(T)Tj +/F1 1 Tf +10 0 0 10 217.7806 419.26 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 150 400.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 400.26 Tm +(ZERO)Tj +/TT8 1 Tf +6 0 0 6 175.2 400.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 178.8006 400.26 Tm +(X)Tj +6 0 0 6 184.2 398.26 Tm +(1)Tj +9 0 0 9 187.8 400.26 Tm +( ... X)Tj +6 0 0 6 220.2 398.26 Tm +(N)Tj +/F1 1 Tf +10 0 0 10 223.8 400.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 226.58 400.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 229.58 397.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 400.26 Tm +([NoSpread Function])Tj +/F1 1 Tf +10 0 0 10 174 380.26 Tm +(Returns )Tj +/TT8 1 Tf +6 0 0 6 214.18 380.26 Tm +(0)Tj +/F1 1 Tf +10 0 0 10 217.7806 380.26 Tm +(.)Tj +/TT6 1 Tf +9 0 0 9 126 362.54 Tm +0.2089 Tw +(When using expr definitions as function arguments, they should be enclosed within the function)Tj +/TT8 1 Tf +6 0 0 6 126 351.54 Tm +0 Tw +(FUNCTION)Tj +/TT6 1 Tf +9 0 0 9 154.8047 351.54 Tm +( rather than )Tj +/TT8 1 Tf +6 0 0 6 203.562 351.54 Tm +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 221.5649 351.54 Tm +(, so that they will be compiled as separate functions.)Tj +/TT8 1 Tf +6 0 0 6 150 332.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 153.6006 332.26 Tm +(FUNCTION)Tj +/TT8 1 Tf +6 0 0 6 196.8 332.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 200.4006 332.26 Tm +(FN ENV)Tj +/F1 1 Tf +10 0 0 10 232.8058 332.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 235.5858 332.26 Tm +(\))Tj +/F2 1 Tf +10 0 0 10 238.58 329.26 Tm +( )Tj +/F1 1 Tf +0.278 0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 449.97 332.26 Tm +([NLambda Function])Tj +-30.6633 -2.08 TD +(If )Tj +/TT13 1 Tf +1.2033 0 TD +(ENV)Tj +/TT6 1 Tf +1.8003 0 TD +0.2833 Tw +[( = )]TJ +/TT8 1 Tf +6 0 0 6 216.0855 313.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 226.8873 313.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 233.9373 313.54 Tm +(FUNCTION)Tj +/TT6 1 Tf +9 0 0 9 262.742 313.54 Tm +0.2833 Tw +[( is the same as )]TJ +/TT8 1 Tf +6 0 0 6 334.5457 313.54 Tm +0 Tw +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 352.5486 313.54 Tm +0.2833 Tw +(, except that it is treated differently when)Tj +-19.8387 -1.2889 TD +0 Tw +(compiled. Consider the function definition:)Tj +/TT8 1 Tf +6 0 0 6 174 289.49 Tm +(\(DEFINEQ \(FOO \(LST\)\(FIE LST \(FUNCTION \(LAMBDA \(Z\)\(ITIMES Z Z\)\)])Tj +0 -2.5917 TD +(FOO)Tj +/TT6 1 Tf +9 0 0 9 184.8017 273.94 Tm +0.0767 Tw +[( calls the function )]TJ +/TT8 1 Tf +6 0 0 6 259.9572 273.94 Tm +0 Tw +(FIE)Tj +/TT6 1 Tf +9 0 0 9 270.759 273.94 Tm +0.0767 Tw +[( with the value of )]TJ +/TT8 1 Tf +6 0 0 6 346.0948 273.94 Tm +0 Tw +(LST)Tj +/TT6 1 Tf +9 0 0 9 356.8965 273.94 Tm +0.0767 Tw +[( and the expr definition )]TJ +/TT8 1 Tf +6 0 0 6 456.2264 273.94 Tm +0.1833 Tw +(\(LAMBDA \(Z\)\(LIST \(CAR)Tj +-47.0377 -1.8333 TD +0 Tw +(Z\)\)\))Tj +/TT6 1 Tf +9 0 0 9 188.4023 262.94 Tm +(.)Tj +-1.6003 -2 TD +(If )Tj +/TT8 1 Tf +6 0 0 6 182.8993 244.94 Tm +(FOO)Tj +/TT6 1 Tf +9 0 0 9 193.701 244.94 Tm +0.0689 Tw +[( is run interpreted, it does not make any difference whether )]TJ +/TT8 1 Tf +6 0 0 6 439.4649 244.94 Tm +0 Tw +(FUNCTION)Tj +/TT6 1 Tf +9 0 0 9 468.2696 244.94 Tm +0.0689 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 482.4778 244.94 Tm +0 Tw +(QUOTE)Tj +/TT6 1 Tf +9 0 0 9 500.4808 244.94 Tm +0.0689 Tw +[( is used.)]TJ +-36.2756 -1.2222 TD +0 Tw +(However, when )Tj +/TT8 1 Tf +6 0 0 6 240.2124 233.94 Tm +(FOO)Tj +/TT6 1 Tf +9 0 0 9 251.0141 233.94 Tm +( is compiled, if )Tj +/TT8 1 Tf +6 0 0 6 311.6235 233.94 Tm +(FUNCTION)Tj +/TT6 1 Tf +9 0 0 9 340.4282 233.94 Tm +( is used the compiler will define and compile the)Tj +-18.492 -1.2222 TD +0.1333 Tw +[(expr definition as an auxiliary function \(see Chapter 18\). The compiled expr definition)]TJ +T* +0 Tw +(will run considerably faster, which can make a big difference if it is applied repeatedly.)Tj +0 -2 TD +(Compiling )Tj +/TT8 1 Tf +6 0 0 6 219.75 193.94 Tm +(FUNCTION)Tj +/TT6 1 Tf +9 0 0 9 248.5547 193.94 Tm +0.0833 Tw +[( will )]TJ +/TT19 1 Tf +2.3737 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0833 Tw +[( create an auxiliary function if it is a functional argument to a)]TJ +-11.9906 -1.2222 TD +0 Tw +(function that compiles open, such as most of the mapping functions \()Tj +/TT8 1 Tf +6 0 0 6 448.5659 182.94 Tm +(MAPCAR)Tj +/TT6 1 Tf +9 0 0 9 470.1694 182.94 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 474.6694 182.94 Tm +(MAPLIST)Tj +/TT6 1 Tf +9 0 0 9 499.8735 182.94 Tm +(, etc.\).)Tj +-36.2082 -2 TD +(If )Tj +/TT13 1 Tf +0.9677 0 TD +(ENV)Tj +/TT6 1 Tf +1.8003 0 TD +0.0478 Tw +[( is not )]TJ +/TT8 1 Tf +6 0 0 6 226.4724 164.94 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 237.2742 164.94 Tm +0.0478 Tw +(, it can be a list of variables that are \(presumably\) used freely by )Tj +/TT13 1 Tf +29.122 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0478 Tw +(. )Tj +/TT13 1 Tf +0.8456 0 TD +0 Tw +(ENV)Tj +/TT6 1 Tf +-38.1982 -1.2889 TD +0.0633 Tw +(can also be an atom, in which case it is evaluated, and the value interpreted as described)Tj +0 -1.2222 TD +0 Tw +(above.)Tj +/TT4 1 Tf +10 0 0 10 102 120 Tm +(Macros)Tj +ET +102.01 117.29 m +558.01 117.29 l +S +BT +/TT6 1 Tf +9 0 0 9 126 103.34 Tm +0.3544 Tw +[(Macros provide an alternative way of specifying the action of a function. Whereas function)]TJ +T* +0.4056 Tw +(definitions are evaluated with a function call, which involves binding variables and other)Tj +T* +0.0233 Tw +(housekeeping tasks, macros are evaluated by )Tj +/TT19 1 Tf +20.327 0 TD +0 Tw +(translating)Tj +/TT6 1 Tf +4.5 0 TD +0.0233 Tw +[( one Interlisp form into another, which is then)]TJ +-24.827 -1.2222 TD +0 Tw +(evaluated.)Tj +0 -2 TD +0.0644 Tw +[(A symbol may have both a function definition and a macro definition. When a form is evaluated by)]TJ +0 -1.2222 TD +0.0356 Tw +(the interpreter, if the )Tj +/TT8 1 Tf +6 0 0 6 211.8527 41.34 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 222.6545 41.34 Tm +0.0356 Tw +[( has a function definition, it is used \(with a function call\), otherwise if it has a)]TJ +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +61 0 obj +<< +/Length 8722 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-15)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.02 Tw +[(macro definition, then that is used. However, when a form is compiled, the )]TJ +/TT8 1 Tf +6 0 0 6 383.334 569.54 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 394.1357 569.54 Tm +0.02 Tw +[( is checked for a macro)]TJ +-35.1262 -1.2222 TD +0.0911 Tw +[(definition first, and only if there isnt one is the function definition compiled. This allows functions)]TJ +T* +0.26 Tw +[(that behave differently when compiled and interpreted. For example, it is possible to define a)]TJ +T* +0.0256 Tw +(function that, when interpreted, has a function definition that is slow and has a lot of error checks, for)Tj +T* +0.1089 Tw +[(use when debugging a system. This function could also have a macro definition that defines a fast)]TJ +T* +0 Tw +(version of the function, which is used when the debugged system is compiled.)Tj +0 -2 TD +0.0333 Tw +[(Macro definitions are represented by lists that are stored on the property list of a symbol. Macros are)]TJ +0 -1.2222 TD +0.1444 Tw +(often used for functions that should be compiled differently in different Interlisp implementations,)Tj +T* +0.0267 Tw +(and the exact property name a macro definition is stored under determines whether it should be used)Tj +T* +0.18 Tw +[(in a particular implementation. The global variable )]TJ +/TT8 1 Tf +6 0 0 6 298.0918 463.54 Tm +0 Tw +(MACROPROPS)Tj +/TT6 1 Tf +9 0 0 9 334.0977 463.54 Tm +0.18 Tw +[( contains a list of all possible macro)]TJ +-28.4553 -1.2222 TD +0.0544 Tw +(property names which should be saved by the )Tj +/TT8 1 Tf +6 0 0 6 267.8965 452.54 Tm +0 Tw +(MACROS)Tj +/TT6 1 Tf +9 0 0 9 289.5001 452.54 Tm +0.0544 Tw +[( file package command. Typical macro property)]TJ +-23.5 -1.2222 TD +0.0778 Tw +(names are )Tj +/TT8 1 Tf +6 0 0 6 122.0753 441.54 Tm +0 Tw +(DMACRO)Tj +/TT6 1 Tf +9 0 0 9 143.6788 441.54 Tm +0.0778 Tw +[( for Interlisp-D, )]TJ +/TT8 1 Tf +6 0 0 6 209.7412 441.54 Tm +0 Tw +(10MACRO)Tj +/TT6 1 Tf +9 0 0 9 234.9453 441.54 Tm +0.0778 Tw +[( for Interlisp-10, )]TJ +/TT8 1 Tf +6 0 0 6 303.0424 441.54 Tm +0 Tw +(VAXMACRO)Tj +/TT6 1 Tf +9 0 0 9 331.8471 441.54 Tm +0.0778 Tw +[( for Interlisp-VAX, )]TJ +/TT8 1 Tf +6 0 0 6 410.4471 441.54 Tm +0 Tw +(JMACRO)Tj +/TT6 1 Tf +9 0 0 9 432.0506 441.54 Tm +0.0778 Tw +[( for Interlisp-)]TJ +-39.339 -1.2222 TD +0.0656 Tw +(Jerico, and )Tj +/TT8 1 Tf +6 0 0 6 123.556 430.54 Tm +0 Tw +(MACRO)Tj +/TT6 1 Tf +9 0 0 9 141.5589 430.54 Tm +0.0656 Tw +[( for implementation independent macros. The global variable )]TJ +/TT8 1 Tf +6 0 0 6 404.573 430.54 Tm +0 Tw +(COMPILERMACROPROPS)Tj +/TT6 1 Tf +9 0 0 9 469.3836 430.54 Tm +0.0656 Tw +[( is a)]TJ +-43.4871 -1.2222 TD +0.2178 Tw +[(list of macro property names. Interlisp determines whether a symbol has a macro definition by)]TJ +T* +0.1878 Tw +(checking these property names, in order, and using the first non-)Tj +/TT8 1 Tf +6 0 0 6 352.6436 408.54 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 363.4454 408.54 Tm +0.1878 Tw +[( property value as the macro)]TJ +-31.7162 -1.2222 TD +0.01 Tw +[(definition. In Interlisp-D this list contains )]TJ +/TT8 1 Tf +6 0 0 6 247.235 397.54 Tm +0 Tw +(DMACRO)Tj +/TT6 1 Tf +9 0 0 9 268.8385 397.54 Tm +0.01 Tw +[( and )]TJ +/TT8 1 Tf +6 0 0 6 288.7543 397.54 Tm +0 Tw +(MACRO)Tj +/TT6 1 Tf +9 0 0 9 306.7573 397.54 Tm +0.01 Tw +[( in that order so that)]TJ +/TT8 1 Tf +6 0 0 6 388.093 397.54 Tm +0.0233 Tw +[( DMACRO)]TJ +/TT6 1 Tf +9 0 0 9 413.4371 397.54 Tm +0.01 Tw +(s will override the)Tj +-37.2708 -1.2222 TD +0 Tw +(implementation-independent )Tj +/TT8 1 Tf +6 0 0 6 197.925 386.54 Tm +(MACRO)Tj +/TT6 1 Tf +9 0 0 9 215.9279 386.54 Tm +0.0589 Tw +[( properties. In general, use a )]TJ +/TT8 1 Tf +6 0 0 6 336.5852 386.54 Tm +0 Tw +(DMACRO)Tj +/TT6 1 Tf +9 0 0 9 358.1887 386.54 Tm +0.0589 Tw +[( property for macros that are to)]TJ +-31.1321 -1.2222 TD +0.0122 Tw +(be used only in Interlisp-D, use )Tj +/TT8 1 Tf +6 0 0 6 205.4334 375.54 Tm +0 Tw +(10MACRO)Tj +/TT6 1 Tf +9 0 0 9 230.6375 375.54 Tm +0.0122 Tw +[( for macros that are to be used only in Interlisp-10, and use )]TJ +/TT8 1 Tf +6 0 0 6 467.8737 375.54 Tm +0 Tw +(MACRO)Tj +/TT6 1 Tf +9 0 0 9 78 364.54 Tm +(for macros that are to affect both systems.)Tj +0 -2 TD +(Macro definitions can take the following forms:)Tj +/TT8 1 Tf +6 0 0 6 124.8 329.14 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 128.4006 329.14 Tm +(LAMBDA ...)Tj +/TT8 1 Tf +6 0 0 6 182.4094 329.14 Tm +(\))Tj +-10.5016 -1.8133 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 123.0006 318.26 Tm +(NLAMBDA ...)Tj +/TT8 1 Tf +6 0 0 6 182.4102 318.26 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 198 318.26 Tm +0.0344 Tw +(A function can be made to compile open by giving it a macro definition)Tj +0 -1.2889 TD +0.0411 Tw +(of the form )Tj +/TT8 1 Tf +6 0 0 6 245.6656 306.66 Tm +0.0983 Tw +(\(LAMBDA ...\))Tj +/TT6 1 Tf +9 0 0 9 289.4627 306.66 Tm +0.0411 Tw +[( or )]TJ +/TT8 1 Tf +6 0 0 6 303.1709 306.66 Tm +0.0983 Tw +(\(NLAMBDA ...\))Tj +/TT6 1 Tf +9 0 0 9 350.5686 306.66 Tm +0.0411 Tw +(, e.g.,)Tj +/TT8 1 Tf +6 0 0 6 371.505 306.66 Tm +0.0983 Tw +[( \(LAMBDA \(X\) \(COND \(\(GREATERP X)]TJ +-28.9175 -1.8333 TD +0.1133 Tw +(0\) X\) \(T \(MINUS X\)\)\)\))Tj +/TT6 1 Tf +9 0 0 9 276.3323 295.66 Tm +0.0467 Tw +[( for )]TJ +/TT8 1 Tf +6 0 0 6 293.1376 295.66 Tm +0 Tw +(ABS)Tj +/TT6 1 Tf +9 0 0 9 303.9394 295.66 Tm +0.0467 Tw +[(. The effect is as if the macro definition were)]TJ +-11.771 -1.2222 TD +0.0611 Tw +(written in place of the function wherever it appears in a function being)Tj +T* +0.2033 Tw +[(compiled, i.e., it compiles as a lambda or nlambda expression. This)]TJ +T* +0.3211 Tw +(saves the time necessary to call the function at the price of more)Tj +T* +0 Tw +(compiled code generated in-line.)Tj +/TT8 1 Tf +6 0 0 6 105.73 232.38 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 109.3306 232.38 Tm +(NIL)Tj +/F3 1 Tf +10 0 0 10 125.5332 232.38 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 128.4032 232.38 Tm +(EXPRESSION)Tj +/TT8 1 Tf +6 0 0 6 182.412 232.38 Tm +(\))Tj +-13.6803 -1.8133 TD +(\()Tj +/TT15 1 Tf +9 0 0 9 103.9306 221.5 Tm +(LIST)Tj +/F3 1 Tf +10 0 0 10 125.5341 221.5 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 128.4041 221.5 Tm +(EXPRESSION)Tj +/TT8 1 Tf +6 0 0 6 182.4129 221.5 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 198 221.5 Tm +0.1455 Tw +[(Substitution macro. Each argument in the form being evaluated or)]TJ +0 -1.2889 TD +0.25 Tw +(compiled is substituted for the corresponding atom in )Tj +/TT8 1 Tf +6 0 0 6 432.6064 209.9 Tm +0 Tw +(LIST)Tj +/TT6 1 Tf +9 0 0 9 447.0088 209.9 Tm +0.25 Tw +(, and the)Tj +-27.6676 -1.2222 TD +0.0133 Tw +[(result of the substitution is used instead of the form. For example, if the)]TJ +T* +0.2389 Tw +(macro definition of )Tj +/TT8 1 Tf +6 0 0 6 283.0066 187.9 Tm +0 Tw +(ADD1)Tj +/TT6 1 Tf +9 0 0 9 297.409 187.9 Tm +0.2389 Tw +[( is)]TJ +/TT8 1 Tf +6 0 0 6 308.2426 187.9 Tm +0.5733 Tw +[( \(\(X\) \(IPLUS X 1\)\))]TJ +/TT6 1 Tf +9 0 0 9 386.8131 187.9 Tm +0.2389 Tw +(, then, )Tj +/TT8 1 Tf +6 0 0 6 417.8363 187.9 Tm +0.5733 Tw +(\(ADD1 \(CAR Y\)\))Tj +/TT6 1 Tf +9 0 0 9 475.1245 187.9 Tm +0.2389 Tw +[( is)]TJ +-30.7916 -1.2222 TD +0 Tw +(compiled as )Tj +/TT8 1 Tf +6 0 0 6 248.124 176.9 Tm +(\(IPLUS \(CAR Y\) 1\).)Tj +/TT6 1 Tf +9 0 0 9 198 158.9 Tm +0.2267 Tw +(Note that )Tj +/TT8 1 Tf +6 0 0 6 241.8285 158.9 Tm +0 Tw +(ABS)Tj +/TT6 1 Tf +9 0 0 9 252.6303 158.9 Tm +0.2267 Tw +[( could be defined by the substitution macro)]TJ +/TT8 1 Tf +6 0 0 6 439.9098 158.9 Tm +0.5433 Tw +[( \(\(X\) \(COND)]TJ +-40.3183 -1.8333 TD +0.3417 Tw +(\(\(GREATERP X 0\) X\) \(T \(MINUS X\)\)\)\))Tj +/TT6 1 Tf +9 0 0 9 332.7199 147.9 Tm +0.1422 Tw +[(. In this case, however, )]TJ +/TT8 1 Tf +6 0 0 6 435.0669 147.9 Tm +0.3417 Tw +(\(ABS \(FOO X\)\))Tj +/TT6 1 Tf +9 0 0 9 198 136.9 Tm +0 Tw +(would compile as)Tj +/TT8 1 Tf +6 0 0 6 198 124.45 Tm +(\(COND \(\(GREATERP \(FOO X\) 0\))Tj +0 -1 TD +[( )-5399.9( \(FOO X\)\))]TJ +T* +( \(T \(MINUS \(FOO X\)\)\)\))Tj +/TT6 1 Tf +9 0 0 9 198 96.9 Tm +(and )Tj +/TT8 1 Tf +6 0 0 6 216.6358 96.9 Tm +0.305 Tw +(\(FOO X\) )Tj +/TT6 1 Tf +9 0 0 9 249.1005 96.9 Tm +0.1278 Tw +[(would be evaluated two times. \(Code to evaluate )]TJ +/TT8 1 Tf +6 0 0 6 459.0062 96.9 Tm +0.305 Tw +(\(FOO X\))Tj +/TT6 1 Tf +9 0 0 9 198 85.9 Tm +0 Tw +(would be generated three times.\))Tj +/TT8 1 Tf +6 0 0 6 73.33 66.62 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 76.9306 66.62 Tm +(OPENLAMBDA)Tj +/F3 1 Tf +10 0 0 10 130.9394 66.62 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 133.8094 66.62 Tm +(ARGS BODY)Tj +/TT8 1 Tf +6 0 0 6 182.4173 66.62 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 198 66.62 Tm +0.3 Tw +(This is a cross between substitution and )Tj +/TT8 1 Tf +6 0 0 6 377.3487 66.62 Tm +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 398.9522 66.62 Tm +0.3 Tw +[( macros. When the)]TJ +-22.328 -1.2889 TD +0.2789 Tw +(compiler processes an )Tj +/TT8 1 Tf +6 0 0 6 295.3235 55.02 Tm +0 Tw +(OPENLAMBDA)Tj +/TT6 1 Tf +9 0 0 9 331.3293 55.02 Tm +0.2789 Tw +(, it attempts to substitute the actual)Tj +-14.8144 -1.2222 TD +0.1533 Tw +(arguments for the formals wherever this preserves the frequency and)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 26 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +64 0 obj +<< +/Length 7450 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-16)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 246 569.54 Tm +0.1111 Tw +(order of evaluation that would have resulted from a )Tj +/TT8 1 Tf +6 0 0 6 464.228 569.54 Tm +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 485.8315 569.54 Tm +0.1111 Tw +[( expression,)]TJ +-26.648 -1.2222 TD +0 Tw +(and produces a )Tj +/TT8 1 Tf +6 0 0 6 309.4087 558.54 Tm +(LAMBDA)Tj +/TT6 1 Tf +9 0 0 9 331.0122 558.54 Tm +( binding only for those that require it.)Tj +/TT17 1 Tf +-9.4458 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.3589 Tw +(: )Tj +/TT8 1 Tf +6 0 0 6 279.2095 540.54 Tm +0 Tw +(OPENLAMBDA)Tj +/TT6 1 Tf +9 0 0 9 315.2153 540.54 Tm +0.3589 Tw +[( assumes that it can substitute literally the actual)]TJ +-7.6906 -1.2222 TD +0.1933 Tw +(arguments for the formal arguments in the body of the macro if the)Tj +T* +0.0033 Tw +(actual is side-effect free or a constant. Thus, you should be careful to use)Tj +T* +0.49 Tw +(names in )Tj +/TT13 1 Tf +5.2207 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.49 Tw +[( which dont occur in )]TJ +/TT13 1 Tf +12.0804 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.49 Tw +[( \(except as variable)]TJ +-22.1019 -1.2889 TD +0 Tw +(references\). For example, if )Tj +/TT8 1 Tf +6 0 0 6 357.977 495.94 Tm +(FOO)Tj +/TT6 1 Tf +9 0 0 9 368.7788 495.94 Tm +( has a macro definition of)Tj +/TT8 1 Tf +6 0 0 6 246 483.49 Tm +(\(OPENLAMBDA \(ENV\) \(FETCH \(MY-RECORD-TYPE ENV\) OF BAR\)\))Tj +/TT6 1 Tf +9 0 0 9 246 466.66 Tm +(then )Tj +/TT8 1 Tf +6 0 0 6 265.9731 466.66 Tm +(\(FOO NIL\) )Tj +/TT6 1 Tf +9 0 0 9 301.979 466.66 Tm +(will expand to)Tj +/TT8 1 Tf +6 0 0 6 246 454.21 Tm +(\(FETCH \(MY-RECORD-TYPE NIL\) OF BAR\))Tj +/TT15 1 Tf +9 0 0 9 228.6 437.38 Tm +(T)Tj +/TT6 1 Tf +1.9333 0 TD +0.2678 Tw +(When a macro definition is the atom )Tj +/TT8 1 Tf +6 0 0 6 410.0164 437.38 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 413.617 437.38 Tm +0.2678 Tw +(, it means that the compiler)Tj +-18.6241 -1.2889 TD +0.1089 Tw +(should ignore the macro, and compile the function definition; this is a)Tj +0 -1.2222 TD +0.1844 Tw +[(simple way of turning off other macros. For example, the user may)]TJ +T* +0.06 Tw +(have a function that runs in both Interlisp-D and Interlisp-10, but has a)Tj +T* +0.0589 Tw +(macro definition that should only be used when compiling in Interlisp-)Tj +T* +0.1389 Tw +[(10. If the )]TJ +/TT8 1 Tf +6 0 0 6 289.7641 381.78 Tm +0 Tw +(MACRO)Tj +/TT6 1 Tf +9 0 0 9 307.7671 381.78 Tm +0.1389 Tw +[( property has the macro specification, a )]TJ +/TT8 1 Tf +6 0 0 6 475.0234 381.78 Tm +0 Tw +(DMACRO)Tj +/TT6 1 Tf +9 0 0 9 496.627 381.78 Tm +0.1389 Tw +[( of )]TJ +/TT8 1 Tf +6 0 0 6 511.5371 381.78 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 515.1377 381.78 Tm +0.1389 Tw +[( will)]TJ +-29.9042 -1.2222 TD +0.0122 Tw +[(cause it to be ignored by the Interlisp-D compiler. This )]TJ +/TT8 1 Tf +6 0 0 6 468.6108 370.78 Tm +0 Tw +(DMACRO)Tj +/TT6 1 Tf +9 0 0 9 490.2144 370.78 Tm +0.0122 Tw +[( would not)]TJ +-27.1349 -1.2222 TD +0 Tw +(be necessary if the macro were specified by a )Tj +/TT8 1 Tf +6 0 0 6 426.8349 359.78 Tm +(10MACRO)Tj +/TT6 1 Tf +9 0 0 9 452.039 359.78 Tm +( instead of a )Tj +/TT8 1 Tf +6 0 0 6 502.3652 359.78 Tm +(MACRO)Tj +/TT6 1 Tf +9 0 0 9 520.3682 359.78 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 129.6 340.5 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 133.2006 340.5 Tm +(= . )Tj +/TT13 1 Tf +2.4004 0 TD +(OTHER-FUNCTION)Tj +/TT8 1 Tf +6 0 0 6 230.4164 340.5 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 246 340.5 Tm +0.09 Tw +(A simple way to tell the compiler to compile one function exactly as it)Tj +0 -1.2889 TD +0.1389 Tw +[(would compile another. For example, when compiling in Interlisp-D,)]TJ +/TT8 1 Tf +6 0 0 6 246 317.9 Tm +0 Tw +(FRPLACA)Tj +/TT6 1 Tf +9 0 0 9 271.2041 317.9 Tm +0.0656 Tw +(s are treated as )Tj +/TT8 1 Tf +6 0 0 6 335.1051 317.9 Tm +0 Tw +(RPLACA)Tj +/TT6 1 Tf +9 0 0 9 356.7086 317.9 Tm +0.0656 Tw +[(s. This is achieved by having )]TJ +/TT8 1 Tf +6 0 0 6 479.4998 317.9 Tm +0 Tw +(FRPLACA)Tj +/TT6 1 Tf +9 0 0 9 504.7039 317.9 Tm +0.0656 Tw +[( have a)]TJ +/TT8 1 Tf +6 0 0 6 246 306.9 Tm +0 Tw +(DMACRO)Tj +/TT6 1 Tf +9 0 0 9 267.6035 306.9 Tm +( of )Tj +/TT8 1 Tf +6 0 0 6 280.0136 306.9 Tm +(\(= . RPLACA\))Tj +/TT6 1 Tf +9 0 0 9 323.2207 306.9 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 132.13 287.62 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 135.7306 287.62 Tm +(LITATOM)Tj +/F3 1 Tf +10 0 0 10 173.5367 287.62 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 176.4067 287.62 Tm +(EXPRESSION)Tj +/TT8 1 Tf +6 0 0 6 230.4155 287.62 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 246 287.62 Tm +0.0011 Tw +(If a macro definition begins with a symbol other than those given above,)Tj +T* +0.1989 Tw +(this allows )Tj +/TT19 1 Tf +5.4066 0 TD +0 Tw +(computation)Tj +/TT6 1 Tf +5.0728 0 TD +0.1989 Tw +[( of the Interlisp expression to be evaluated or)]TJ +-10.4793 -1.2222 TD +0.0767 Tw +(compiled in place of the form. )Tj +/TT8 1 Tf +6 0 0 6 374.6371 265.02 Tm +0 Tw +(LITATOM)Tj +/TT6 1 Tf +9 0 0 9 399.8412 265.02 Tm +0.0767 Tw +[( is bound to the )]TJ +/TT8 1 Tf +6 0 0 6 467.3635 265.02 Tm +0 Tw +(CDR)Tj +/TT6 1 Tf +9 0 0 9 478.1652 265.02 Tm +0.0767 Tw +[( of the calling)]TJ +-25.7961 -1.2222 TD +0 Tw +(form, )Tj +/TT13 1 Tf +2.8845 0 TD +(EXPRESSION)Tj +/TT6 1 Tf +6.001 0 TD +0.2278 Tw +[( is evaluated, and the result of this evaluation is)]TJ +-8.8855 -1.2889 TD +0.0633 Tw +[(evaluated or compiled in place of the form. For example, )]TJ +/TT8 1 Tf +6 0 0 6 482.1962 242.42 Tm +0 Tw +(LIST)Tj +/TT6 1 Tf +9 0 0 9 496.5986 242.42 Tm +0.0633 Tw +[( could be)]TJ +-27.8443 -1.2222 TD +0 Tw +(compiled using the computed macro:)Tj +/TT8 1 Tf +6 0 0 6 246 218.97 Tm +([X \(LIST CONS \(CAR X\)\(AND \(CDR X\)\(CONS LIST \(CDR X])Tj +/TT6 1 Tf +9 0 0 9 246 202.14 Tm +0.0211 Tw +(This would cause)Tj +/TT8 1 Tf +6 0 0 6 316.0772 202.14 Tm +0.0517 Tw +[( \(LIST X Y Z\))]TJ +/TT6 1 Tf +9 0 0 9 364.1248 202.14 Tm +0.0211 Tw +[( to compile as )]TJ +/TT8 1 Tf +6 0 0 6 421.86 202.14 Tm +0.0517 Tw +(\(CONS X \(CONS Y \(CONS Z NIL\)\)\))Tj +/TT6 1 Tf +9 0 0 9 531.7375 202.14 Tm +0 Tw +(.)Tj +-31.7486 -1.2222 TD +(Note the recursion in the macro expansion.)Tj +0 -2 TD +0.2167 Tw +(If the result of the evaluation is the symbol )Tj +/TT8 1 Tf +6 0 0 6 435.7145 173.14 Tm +0 Tw +(IGNOREMACRO)Tj +/TT6 1 Tf +9 0 0 9 475.321 173.14 Tm +0.2167 Tw +(, the macro is)Tj +-25.4801 -1.2222 TD +0.0389 Tw +(ignored and the compilation of the expression proceeds as if there were)Tj +T* +0.2633 Tw +[(no macro definition. If the symbol in question is normally treated)]TJ +T* +0.0344 Tw +(specially by the compiler \()Tj +/TT8 1 Tf +6 0 0 6 351.966 140.14 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 362.7678 140.14 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 367.5778 140.14 Tm +(CDR)Tj +/TT6 1 Tf +9 0 0 9 378.3795 140.14 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 383.1896 140.14 Tm +(COND)Tj +/TT6 1 Tf +9 0 0 9 397.5919 140.14 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 402.4019 140.14 Tm +(AND)Tj +/TT6 1 Tf +9 0 0 9 413.2037 140.14 Tm +0.0344 Tw +(, etc.\), and also has a macro, if)Tj +-18.5782 -1.2222 TD +0.0844 Tw +(the macro expansion returns )Tj +/TT8 1 Tf +6 0 0 6 364.9589 129.14 Tm +0 Tw +(IGNOREMACRO)Tj +/TT6 1 Tf +9 0 0 9 404.5654 129.14 Tm +0.0844 Tw +(, the symbol will still be treated)Tj +-17.6184 -1.2222 TD +0 Tw +(specially.)Tj +0 -2 TD +0.0633 Tw +(In Interlisp-10, if the result of the evaluation is the atom )Tj +/TT8 1 Tf +6 0 0 6 475.5912 100.14 Tm +0 Tw +(INSTRUCTIONS)Tj +/TT6 1 Tf +9 0 0 9 518.7983 100.14 Tm +0.0633 Tw +(, no)Tj +-30.3109 -1.2222 TD +0.37 Tw +[(code will be generated by the compiler. It is then assumed the)]TJ +T* +0.0722 Tw +(evaluation was done for effect and the necessary code, if any, has been)Tj +T* +0.0289 Tw +[(added. This is a way of giving direct instructions to the compiler if you)]TJ +T* +0 Tw +(understand it.)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 26 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT17 22 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +67 0 obj +<< +/Length 7071 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-17)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT6 1 Tf +9 0 0 9 198 569.54 Tm +0.0556 Tw +(It is often useful, when constructing complex macro expressions, to use)Tj +0 -1.2222 TD +0 Tw +(the )Tj +/TT8 1 Tf +6 0 0 6 212.7348 558.54 Tm +(BQUOTE)Tj +/TT6 1 Tf +9 0 0 9 234.3384 558.54 Tm +( facility \(see the Read Macros section of Chapter 25\).)Tj +-4.0376 -2 TD +(The following function is quite useful for debugging macro definitions:)Tj +/TT8 1 Tf +6 0 0 6 102 521.26 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 521.26 Tm +(EXPANDMACRO)Tj +/F3 1 Tf +10 0 0 10 165 521.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 167.87 521.26 Tm +(EXP QUIETFLG)Tj +/F2 1 Tf +10 0 0 10 232.6805 521.26 Tm +( )Tj +/TT8 1 Tf +6 0 0 6 235.4605 521.26 Tm +( \))Tj +/F1 1 Tf +10 0 0 10 249.8629 521.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 521.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1989 Tw +(Takes a form whose )Tj +/TT8 1 Tf +6 0 0 6 214.9993 504.66 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 225.8011 504.66 Tm +0.1989 Tw +[( has a macro definition and expands the form as it would be)]TJ +-11.089 -1.2222 TD +0.1767 Tw +[(compiled. The result is prettyprinted, unless )]TJ +/TT13 1 Tf +21.3104 0 TD +0 Tw +(QUIETFLG)Tj +/TT6 1 Tf +4.8008 0 TD +(=)Tj +/TT8 1 Tf +6 0 0 6 366.4542 493.66 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 370.0548 493.66 Tm +0.1767 Tw +(, in which case the result is)Tj +-27.1172 -1.2889 TD +0 Tw +(simply returned.)Tj +/TT17 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0678 Tw +(: )Tj +/TT8 1 Tf +6 0 0 6 153.9695 464.06 Tm +0 Tw +(EXPANDMACRO)Tj +/TT6 1 Tf +9 0 0 9 193.5759 464.06 Tm +0.0678 Tw +[( only works on Interlisp macros. Use )]TJ +/TT8 1 Tf +6 0 0 6 348.8104 464.06 Tm +0 Tw +(CL:MACROEXPAND-1)Tj +/TT6 1 Tf +9 0 0 9 406.4198 464.06 Tm +0.0678 Tw +[( to expand Interlisp)]TJ +-31.1578 -1.2222 TD +0 Tw +(macros visible to the Common Lisp interpreter and compliler.)Tj +/TT4 1 Tf +10 0 0 10 78 430.72 Tm +(DEFMACRO)Tj +/TT6 1 Tf +9 0 0 9 78 415.06 Tm +0.0089 Tw +(Macros defined with the function )Tj +/TT8 1 Tf +6 0 0 6 213.5582 415.06 Tm +0 Tw +(DEFMACRO)Tj +/TT6 1 Tf +9 0 0 9 242.3629 415.06 Tm +0.0089 Tw +[( are much like computed macros \(see the above section\), in)]TJ +-18.2625 -1.2222 TD +0.0322 Tw +(that they are defined with a form that is evaluated, and the result of the evaluation is used \(evaluated)Tj +T* +0.1367 Tw +[(or compiled\) in place of the macro call. However, )]TJ +/TT8 1 Tf +6 0 0 6 290.9719 393.06 Tm +0 Tw +(DEFMACRO)Tj +/TT6 1 Tf +9 0 0 9 319.7766 393.06 Tm +0.1367 Tw +[( macros support complex argument lists)]TJ +-26.8641 -1.2222 TD +0.4622 Tw +(with optional arguments, default values, and keyword arguments as well as argument list)Tj +T* +0 Tw +(destructuring.)Tj +/TT8 1 Tf +6 0 0 6 102 351.78 Tm +(\()Tj +/TT15 1 Tf +9 0 0 9 105.6006 351.78 Tm +(DEFMACRO)Tj +/F3 1 Tf +10 0 0 10 148.8 351.78 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 151.67 351.78 Tm +(NAME ARGS FORM)Tj +/TT8 1 Tf +6 0 0 6 227.2823 351.78 Tm +(\))Tj +/F1 1 Tf +10 0 0 10 230.8829 351.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 351.78 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +(Defines )Tj +/TT13 1 Tf +3.6851 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0733 Tw +[( as a macro with the arguments )]TJ +/TT13 1 Tf +14.6232 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0733 Tw +[( and the definition form )]TJ +/TT13 1 Tf +11.1855 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0733 Tc +( \()Tj +/TT13 1 Tf +0.6563 0 TD +0 Tc +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +/TT13 1 Tf +-39.7518 -1.2889 TD +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +(, and )Tj +/TT13 1 Tf +2.7184 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +[( are unevaluated\). If an expression starting with )]TJ +/TT13 1 Tf +22.9085 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +[( is evaluated or)]TJ +-32.8281 -1.2889 TD +0.1022 Tw +(compiled, arguments are bound according to )Tj +/TT13 1 Tf +20.7667 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT13 1 Tf +0.6022 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1022 Tw +[( is evaluated, and the value of)]TJ +/TT13 1 Tf +-26.1697 -1.2889 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is evaluated or compiled instead. The interpretation of )Tj +/TT13 1 Tf +24.7905 0 TD +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +( is described below.)Tj +/TT17 1 Tf +-29.5913 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0911 Tw +[(:)-1527.8(Like the function )]TJ +/TT8 1 Tf +6 0 0 6 234.4912 281.78 Tm +0 Tw +(DEFMACRO)Tj +/TT6 1 Tf +9 0 0 9 263.2959 281.78 Tm +0.0911 Tw +[( in Common Lisp, this function currently removes any)]TJ +-15.2551 -1.2222 TD +0 Tw +(function definition for )Tj +/TT13 1 Tf +10.063 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT13 1 Tf +-12.4634 -2.0667 TD +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( is a list that defines how the argument list passed to the macro )]TJ +/TT13 1 Tf +28.673 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( is interpreted.)]TJ +-33.4738 -1.2889 TD +0 Tw +(Specifically, )Tj +/TT13 1 Tf +5.5748 0 TD +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0289 Tw +[( defines a set of variables that are set to various arguments in the macro)]TJ +-7.9752 -1.2889 TD +0 Tw +(call \(unevaluated\), that )Tj +/TT13 1 Tf +10.4653 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( can reference to construct the macro form.)Tj +-12.8657 -2.0667 TD +0.3778 Tw +(In the simplest case, )Tj +/TT13 1 Tf +10.6327 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.3778 Tw +[( is a simple list of variable names that are set to the)]TJ +-13.0331 -1.2889 TD +0 Tw +(corresponding elements of the macro call \(unevaluated\). For example, given:)Tj +/TT8 1 Tf +6 0 0 6 162 186.33 Tm +(\(DEFMACRO FOO \(A B\) \(LIST PLUS A B B\)\))Tj +/TT6 1 Tf +9 0 0 9 126 170.78 Tm +(The macro call )Tj +/TT8 1 Tf +6 0 0 6 186.4555 170.78 Tm +(\(FOO X \(BAR Y Z\)\))Tj +/TT6 1 Tf +9 0 0 9 247.6655 170.78 Tm +( will expand to )Tj +/TT8 1 Tf +6 0 0 6 309.479 170.78 Tm +(\(PLUS X \(BAR Y Z\) \(BAR Y Z\)\))Tj +/TT6 1 Tf +9 0 0 9 410.2954 170.78 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 126 152.78 Tm +(&)Tj +/TT6 1 Tf +9 0 0 9 133.2012 152.78 Tm +0.0189 Tw +(-keywords \(beginning with the character )Tj +/TT8 1 Tf +6 0 0 6 303.0253 152.78 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 310.2264 152.78 Tm +0.0189 Tw +(\) that are used to set variables to particular)Tj +-20.4696 -1.2222 TD +0 Tw +(items from the macro call form, as follows:)Tj +/TT15 1 Tf +1.2667 -2.1422 TD +(&OPTIONAL)Tj +/TT6 1 Tf +6.7333 0 TD +0.0767 Tw +[(Used to define optional arguments, possibly with default values. Each)]TJ +0 -1.2889 TD +0.1122 Tw +(element on )Tj +/TT13 1 Tf +5.3714 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1122 Tw +[( after )]TJ +/TT8 1 Tf +6 0 0 6 292.7651 110.9 Tm +0 Tw +(&OPTIONAL)Tj +/TT6 1 Tf +9 0 0 9 325.1703 110.9 Tm +0.1122 Tw +[( until the next )]TJ +/TT8 1 Tf +6 0 0 6 386.6645 110.9 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 390.265 110.9 Tm +0.1122 Tw +(-keyword or the end of)Tj +-21.3628 -1.2889 TD +0.0344 Tw +(the list defines an optional argument, which can either be a symbol or a)Tj +0 -1.2222 TD +0 Tw +(list, interpreted as follows:)Tj +/TT13 1 Tf +0 -1.6667 TD +(VAR)Tj +/TT6 1 Tf +0 -1.8444 TD +0.0978 Tw +(If an optional argument is specified as a symbol, that variable is set to)Tj +0 -1.2222 TD +0 Tw +(the corresponding element of the macro call \(unevaluated\).)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 21 0 R +/F3 26 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT17 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +70 0 obj +<< +/Length 8274 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-18)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +6 0 0 6 246 570.14 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 249.6006 570.14 Tm +(VAR DEFAULT)Tj +/TT8 1 Tf +6 0 0 6 309.0102 570.14 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 246 553.54 Tm +0.1678 Tw +(If an optional argument is specified as a two element list, )Tj +/TT13 1 Tf +27.2533 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1678 Tw +[( is the)]TJ +-29.0536 -1.2889 TD +0.0522 Tw +(variable to be set, and )Tj +/TT13 1 Tf +10.1615 0 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0522 Tw +[( is a form that is evaluated and used as)]TJ +-14.3622 -1.2889 TD +0 Tw +(the default if there is no corresponding element in the macro call.)Tj +/TT8 1 Tf +6 0 0 6 246 515.9399 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 249.6006 515.9399 Tm +(VAR DEFAULT VARSETP)Tj +/TT8 1 Tf +6 0 0 6 352.2173 515.9399 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 246 499.34 Tm +0.1911 Tw +(If an optional argument is specified as a three element list, )Tj +/TT13 1 Tf +28.0651 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1911 Tw +[( and)]TJ +/TT13 1 Tf +-29.8654 -1.2889 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0678 Tw +[( are the variable to be set and the default form, and )]TJ +/TT13 1 Tf +23.6048 0 TD +0 Tw +(VARSETP)Tj +/TT6 1 Tf +-27.8055 -1.2889 TD +0.0011 Tw +(is a variable that is set to )Tj +/TT8 1 Tf +6 0 0 6 345.8742 476.14 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 349.4748 476.14 Tm +0.0011 Tw +( if the optional argument is given in the macro)Tj +-11.4972 -1.2222 TD +0 Tw +(call, )Tj +/TT8 1 Tf +6 0 0 6 264.2629 465.14 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 275.0646 465.14 Tm +0.0001 Tc +0.0032 Tw +( otherwise. This can be used to determine whether the argument)Tj +-3.2294 -1.2222 TD +0 Tc +0 Tw +(was not given, or whether it was specified with the default value.)Tj +0 -2 TD +0.1989 Tw +(For example, after)Tj +/TT8 1 Tf +6 0 0 6 321.8437 436.14 Tm +0.4767 Tw +[( \(DEFMACRO FOO \(&OPTIONAL A \(B 5\) \(C 6 CSET\)\) FORM\))]TJ +/TT6 1 Tf +9 0 0 9 246 425.14 Tm +0.0811 Tw +(expanding the macro call )Tj +/TT8 1 Tf +6 0 0 6 351.5103 425.14 Tm +0 Tw +(\(FOO\))Tj +/TT6 1 Tf +9 0 0 9 369.5132 425.14 Tm +0.0811 Tw +[( would cause )]TJ +/TT8 1 Tf +6 0 0 6 426.4635 425.14 Tm +0 Tw +(FORM)Tj +/TT6 1 Tf +9 0 0 9 440.8658 425.14 Tm +0.0811 Tw +[( to be evaluated with )]TJ +/TT8 1 Tf +6 0 0 6 530.3893 425.14 Tm +0 Tw +(A)Tj +/TT6 1 Tf +9 0 0 9 246 414.14 Tm +0.0244 Tw +(set to )Tj +/TT8 1 Tf +6 0 0 6 269.8496 414.14 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 280.6514 414.14 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 285.3714 414.14 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 288.972 414.14 Tm +0.0244 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 315.2917 414.14 Tm +0 Tw +(5)Tj +/TT6 1 Tf +9 0 0 9 318.8922 414.14 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 323.6122 414.14 Tm +(C)Tj +/TT6 1 Tf +9 0 0 9 327.2128 414.14 Tm +0.0244 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 353.5325 414.14 Tm +0 Tw +(6)Tj +/TT6 1 Tf +9 0 0 9 357.1331 414.14 Tm +0.0244 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 379.5589 414.14 Tm +0 Tw +(CSET)Tj +/TT6 1 Tf +9 0 0 9 393.9612 414.14 Tm +0.0244 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 420.2809 414.14 Tm +0 Tw +(NIL)Tj +/TT6 1 Tf +9 0 0 9 431.0827 414.14 Tm +0.0244 Tw +(. )Tj +/TT8 1 Tf +6 0 0 6 438.2727 414.14 Tm +0.0583 Tw +(\(FOO 4 5 6\))Tj +/TT6 1 Tf +9 0 0 9 478.9291 414.14 Tm +0.0244 Tw +[( would be the)]TJ +-25.881 -1.2222 TD +0 Tw +(same, except that )Tj +/TT8 1 Tf +6 0 0 6 316.7871 403.14 Tm +(A)Tj +/TT6 1 Tf +9 0 0 9 320.3877 403.14 Tm +( would be set to )Tj +/TT8 1 Tf +6 0 0 6 385.8003 403.14 Tm +(4)Tj +/TT6 1 Tf +9 0 0 9 389.4008 403.14 Tm +( and )Tj +/TT8 1 Tf +6 0 0 6 409.1367 403.14 Tm +(CSET)Tj +/TT6 1 Tf +9 0 0 9 423.539 403.14 Tm +( would be set to )Tj +/TT8 1 Tf +6 0 0 6 488.9517 403.14 Tm +(T)Tj +/TT6 1 Tf +9 0 0 9 492.5522 403.14 Tm +(.)Tj +/TT15 1 Tf +-31.728 -2.1422 TD +(&REST)Tj +0 -1.2089 TD +(&BODY)Tj +/TT6 1 Tf +4.3333 0 TD +0.0078 Tw +[(Used to get a list of all additional arguments from the macro call. Either)]TJ +/TT8 1 Tf +6 0 0 6 246 361.38 Tm +0 Tw +(&REST)Tj +/TT6 1 Tf +9 0 0 9 264.0029 361.38 Tm +0.0003 Tc +0.0008 Tw +( or )Tj +/TT8 1 Tf +6 0 0 6 276.9911 361.38 Tm +0 Tc +0 Tw +(&BODY )Tj +/TT6 1 Tf +9 0 0 9 298.6147 361.38 Tm +0.0011 Tw +(should be followed by a single symbol, which is set to a list)Tj +-5.8461 -1.2222 TD +0.0978 Tw +(of all arguments to the macro after the position of the )Tj +/TT8 1 Tf +6 0 0 6 469.6937 350.38 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 473.2943 350.38 Tm +0.0978 Tw +[(-keyword. For)]TJ +-25.2549 -1.2222 TD +0 Tw +(example, given)Tj +/TT8 1 Tf +6 0 0 6 246 326.93 Tm +(\(DEFMACRO FOO \(A B &REST C\) FORM\))Tj +/TT6 1 Tf +9 0 0 9 246 310.1 Tm +0.2311 Tw +(expanding the macro call)Tj +/TT8 1 Tf +6 0 0 6 352.5803 310.1 Tm +0.555 Tw +[( \(FOO 1 2 3 4 5\) )]TJ +/TT6 1 Tf +9 0 0 9 437.1003 310.1 Tm +0.2311 Tw +(would cause )Tj +/TT8 1 Tf +6 0 0 6 493.7705 310.1 Tm +0 Tw +(FORM)Tj +/TT6 1 Tf +9 0 0 9 508.1729 310.1 Tm +0.2311 Tw +[( to be)]TJ +-29.1303 -1.3644 TD +0 Tw +(evaluated with )Tj +/TT8 1 Tf +6 0 0 6 307.9848 297.82 Tm +(A)Tj +/TT6 1 Tf +9 0 0 9 311.5854 297.82 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 337.2451 297.82 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 340.8457 297.82 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 345.3457 297.82 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 348.9463 297.82 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 374.6059 297.82 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 378.2065 297.82 Tm +(, and )Tj +/TT8 1 Tf +6 0 0 6 400.1924 297.82 Tm +(C)Tj +/TT6 1 Tf +9 0 0 9 403.7929 297.82 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 429.4526 297.82 Tm +(\(3 4 5\))Tj +/F1 1 Tf +10 0 0 10 454.6567 297.82 Tm +(.)Tj +/TT6 1 Tf +9 0 0 9 246 279.82 Tm +0.0533 Tw +(If the macro calling form contains keyword arguments \(see )Tj +/TT8 1 Tf +6 0 0 6 487.2116 279.82 Tm +0 Tw +(&KEY)Tj +/TT6 1 Tf +9 0 0 9 501.6139 279.82 Tm +0.0533 Tw +[( below\),)]TJ +-28.4016 -1.2222 TD +0 Tw +(these are included in the )Tj +/TT8 1 Tf +6 0 0 6 345.7734 268.82 Tm +(&REST)Tj +/TT6 1 Tf +9 0 0 9 363.7763 268.82 Tm +( list. )Tj +/TT15 1 Tf +-16.8196 -2.1422 TD +(&KEY)Tj +/TT6 1 Tf +3.7333 0 TD +0.0656 Tw +(Used to define keyword arguments, that are specified in the macro call)Tj +0 -1.2889 TD +0.21 Tw +(by including a keyword \(a symbol starting with the character :\))Tj +0 -1.2222 TD +0 Tw +(followed by a value.)Tj +0 -2 TD +0.0089 Tw +(Each element on )Tj +/TT8 1 Tf +6 0 0 6 314.0432 208.94 Tm +0 Tw +(ARGS)Tj +/TT6 1 Tf +9 0 0 9 328.4455 208.94 Tm +0.0089 Tw +[( after )]TJ +/TT8 1 Tf +6 0 0 6 351.4044 208.94 Tm +0 Tw +(&KEY)Tj +/TT6 1 Tf +9 0 0 9 365.8067 208.94 Tm +0.0089 Tw +[( until the next )]TJ +/TT8 1 Tf +6 0 0 6 423.5808 208.94 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 427.1814 208.94 Tm +0.0089 Tw +(-keyword or the end of the)Tj +-20.1313 -1.2222 TD +0.0422 Tw +(list defines a keyword argument, which can either be a symbol or a list,)Tj +T* +0 Tw +(interpreted as follows:)Tj +/TT13 1 Tf +0 -1.6 TD +(VAR)Tj +/TT8 1 Tf +6 0 0 6 246 163.54 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 249.6006 163.54 Tm +(VAR)Tj +/TT8 1 Tf +6 0 0 6 265.8032 163.54 Tm +(\))Tj +-3.3005 -1.5 TD +(\(\()Tj +/TT13 1 Tf +9 0 0 9 253.2011 154.54 Tm +(KEYWORD)Tj +/TT8 1 Tf +6 0 0 6 291.0073 154.54 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 294.6079 154.54 Tm +(VAR)Tj +/TT8 1 Tf +6 0 0 6 310.8105 154.54 Tm +(\)\))Tj +/TT6 1 Tf +9 0 0 9 246 136.66 Tm +0.13 Tw +(If a keyword argument is specified by a single symbol )Tj +/TT13 1 Tf +25.424 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.13 Tw +(, or a one-)Tj +-27.2243 -1.2889 TD +0.3989 Tw +(element list containing )Tj +/TT13 1 Tf +11.4979 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.3989 Tw +(, it is set to the value of a keyword)Tj +-13.2982 -1.2889 TD +0.1011 Tw +(argument, where the keyword used is created by adding the character)Tj +0 -1.2222 TD +0.0611 Tw +(: to the front of )Tj +/TT13 1 Tf +8.1259 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0611 Tw +[(. If a keyword argument is specified by a single-)]TJ +-9.9262 -1.2889 TD +0.0122 Tw +(element list containing a two-element list, )Tj +/TT13 1 Tf +18.7647 0 TD +0 Tw +(KEYWORD)Tj +/TT6 1 Tf +4.2007 0 TD +0.0122 Tw +[( is interpreted as the)]TJ +-22.9654 -1.2889 TD +0.0178 Tw +(keyword \(which should start with the letter :\), and )Tj +/TT13 1 Tf +23.7235 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0178 Tw +[( is the variable)]TJ +-25.5238 -1.2889 TD +0 Tw +(to set.)Tj +/TT8 1 Tf +6 0 0 6 246 53.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 249.6006 53.26 Tm +(VAR DEFAULT)Tj +/TT8 1 Tf +6 0 0 6 309.0102 53.26 Tm +(\))Tj +-10.5017 -1.5 TD +(\(\()Tj +/TT13 1 Tf +9 0 0 9 253.2011 44.26 Tm +(KEYWORD VAR)Tj +/TT8 1 Tf +6 0 0 6 312.6108 44.26 Tm +(\) )Tj +/TT13 1 Tf +9 0 0 9 319.812 44.26 Tm +(DEFAULT)Tj +/TT8 1 Tf +6 0 0 6 357.6181 44.26 Tm +(\))Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +73 0 obj +<< +/Length 8128 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-19)Tj +/TT11 1 Tf +10 0 0 10 222.3 612 Tm +(FUNCTION DEFINITION, MANIPULATION AND EVALUATION)Tj +/TT8 1 Tf +6 0 0 6 198 570.14 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 201.6006 570.14 Tm +(VAR DEFAULT VARSETP)Tj +/TT8 1 Tf +6 0 0 6 304.2173 570.14 Tm +(\))Tj +-17.7029 -1.5 TD +(\(\()Tj +/TT13 1 Tf +9 0 0 9 205.2012 561.14 Tm +(KEYWORD VAR)Tj +/TT8 1 Tf +6 0 0 6 264.6108 561.14 Tm +(\))Tj +/TT13 1 Tf +9 0 0 9 268.2114 561.14 Tm +( DEFAULT VARSETP)Tj +/TT8 1 Tf +6 0 0 6 354.6255 561.14 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 198 543.26 Tm +0.0989 Tw +(If a keyword argument is specified by a two- or three-element list, the)Tj +0 -1.2222 TD +0.2244 Tw +(first element of the list specifies the keyword and variable to set as)Tj +T* +0.1178 Tw +[(above. Similar to)]TJ +/TT8 1 Tf +6 0 0 6 270.3983 521.26 Tm +0.2833 Tw +[( &OPTIONAL )]TJ +/TT6 1 Tf +9 0 0 9 313.4047 521.26 Tm +0.1178 Tw +(\(above\), the second element )Tj +/TT13 1 Tf +13.0219 0 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.1178 Tw +[( is a)]TJ +-30.0453 -1.2889 TD +0.5033 Tw +(form that is evaluated and used as the default if there is no)Tj +0 -1.2222 TD +0.4633 Tw +(corresponding element in the macro call, and the third element)Tj +/TT13 1 Tf +T* +0 Tw +(VARSETP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0156 Tw +[( is a variable that is set to )]TJ +/TT8 1 Tf +6 0 0 6 338.9803 487.66 Tm +0 Tw +(T)Tj +/TT6 1 Tf +9 0 0 9 342.5809 487.66 Tm +0.0156 Tw +[( if the optional argument is given in)]TJ +-16.0646 -1.2889 TD +0 Tw +(the macro call, )Tj +/TT8 1 Tf +6 0 0 6 258.126 476.06 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 268.9277 476.06 Tm +( otherwise.)Tj +-7.8809 -2 TD +(For example, the form)Tj +/TT8 1 Tf +6 0 0 6 198 445.61 Tm +(\(DEFMACRO FOO \(&KEY A \(B 5 BSET\) \(\(:BAR C\) 6 CSET\)\) FORM\))Tj +/TT6 1 Tf +9 0 0 9 198 428.78 Tm +0.0822 Tw +(Defines a macro with keys )Tj +/TT8 1 Tf +6 0 0 6 309.0496 428.78 Tm +0 Tw +(:A)Tj +/TT6 1 Tf +9 0 0 9 316.2508 428.78 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 321.4908 428.78 Tm +(:B)Tj +/TT6 1 Tf +9 0 0 9 328.692 428.78 Tm +0.0822 Tw +[( \(defaulting to )]TJ +/TT8 1 Tf +6 0 0 6 389.6581 428.78 Tm +0 Tw +(5)Tj +/TT6 1 Tf +9 0 0 9 393.2586 428.78 Tm +0.0822 Tw +(\), and )Tj +/TT8 1 Tf +6 0 0 6 419.7215 428.78 Tm +0 Tw +(:BAR)Tj +/TT6 1 Tf +9 0 0 9 434.1239 428.78 Tm +0.0822 Tw +[(. Expanding)]TJ +-26.236 -1.2222 TD +0.0556 Tw +(the macro call)Tj +/TT8 1 Tf +6 0 0 6 254.626 417.78 Tm +0.1317 Tw +[( \(FOO :BAR 2 :A 1\))]TJ +/TT6 1 Tf +9 0 0 9 323.3865 417.78 Tm +0.0556 Tw +[( would cause )]TJ +/TT8 1 Tf +6 0 0 6 379.6468 417.78 Tm +0 Tw +(FORM)Tj +/TT6 1 Tf +9 0 0 9 394.0491 417.78 Tm +0.0555 Tw +[( to be evaluated with )]TJ +/TT8 1 Tf +6 0 0 6 482.4227 417.78 Tm +0 Tw +(A)Tj +/TT6 1 Tf +9 0 0 9 198 405.5 Tm +(set to )Tj +/TT8 1 Tf +6 0 0 6 221.4097 405.5 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 225.0102 405.5 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 229.5102 405.5 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 233.1108 405.5 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 258.7705 405.5 Tm +(5)Tj +/TT6 1 Tf +9 0 0 9 262.3711 405.5 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 266.8711 405.5 Tm +(BSET)Tj +/TT6 1 Tf +9 0 0 9 281.2734 405.5 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 306.9331 405.5 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 317.7349 405.5 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 322.2349 405.5 Tm +(C)Tj +/TT6 1 Tf +9 0 0 9 325.8354 405.5 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 351.4951 405.5 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 355.0957 405.5 Tm +(, and )Tj +/TT8 1 Tf +6 0 0 6 377.0815 405.5 Tm +(CSET)Tj +/TT6 1 Tf +9 0 0 9 391.4839 405.5 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 417.1436 405.5 Tm +(T)Tj +/F1 1 Tf +10 0 0 10 420.7441 405.5 Tm +(.)Tj +/TT15 1 Tf +9 0 0 9 94.2 386.22 Tm +(&ALLOW-OTHER-KEYS)Tj +/TT6 1 Tf +11.5333 0 TD +0.1122 Tw +(It is an error for any keywords to be supplied in a macro call that are)Tj +0 -1.2889 TD +0.0356 Tw +(not defined as keywords in the macro argument list, unless either the )Tj +/TT8 1 Tf +6 0 0 6 479.4074 374.62 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 483.008 374.62 Tm +(-)Tj +-31.6676 -1.2222 TD +(keyword )Tj +/TT8 1 Tf +6 0 0 6 236.8234 363.62 Tm +(&ALLOW-OTHER-KEYS)Tj +/TT17 1 Tf +9 0 0 9 298.0334 363.62 Tm +( )Tj +/TT6 1 Tf +0.3367 0 TD +0.0867 Tw +(appears in )Tj +/TT13 1 Tf +5.0464 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +(, or the keyword )Tj +/TT8 1 Tf +6 0 0 6 439.2009 363.62 Tm +0 Tw +(:ALLOW-OTHER-)Tj +-40.2002 -2.1467 TD +(KEYS)Tj +/TT6 1 Tf +9 0 0 9 212.4023 350.74 Tm +( \(with a non-)Tj +/TT8 1 Tf +6 0 0 6 263.335 350.74 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 274.1367 350.74 Tm +( value\) appears in the macro call)Tj +/F1 1 Tf +10 0 0 10 403.0591 350.74 Tm +(.)Tj +/TT15 1 Tf +9 0 0 9 164.4 331.46 Tm +(&AUX)Tj +/TT6 1 Tf +3.7333 0 TD +0.0733 Tw +(Used to bind and initialize auxiliary varables, using a syntax similar to)Tj +/TT8 1 Tf +6 0 0 6 198 319.86 Tm +0 Tw +(PROG)Tj +/TT6 1 Tf +9 0 0 9 212.4023 319.86 Tm +0.0003 Tc +0.003 Tw +( \(see the )Tj +/TT8 1 Tf +6 0 0 6 247.1608 319.86 Tm +0 Tc +0 Tw +(PROG)Tj +/TT6 1 Tf +9 0 0 9 261.5631 319.86 Tm +0.0001 Tc +0.0032 Tw +( and Associated Control Functions section of Chapter 9\).)Tj +-7.0626 -1.2222 TD +0 Tc +0.0544 Tw +(Any elements after )Tj +/TT8 1 Tf +6 0 0 6 277.2488 308.86 Tm +0 Tw +(&AUX)Tj +/TT6 1 Tf +9 0 0 9 291.6511 308.86 Tm +0.0544 Tw +[( should be either symbols or lists, interpreted as)]TJ +-10.4057 -1.2222 TD +0 Tw +(follows:)Tj +/TT13 1 Tf +0 -1.6667 TD +(VAR)Tj +/TT6 1 Tf +0 -1.8444 TD +0.18 Tw +(Single symbols are interpreted as auxiliary variables that are initially)Tj +0 -1.2222 TD +0 Tw +(bound to )Tj +/TT8 1 Tf +6 0 0 6 236.4038 255.26 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 247.2056 255.26 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 198 240.86 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 201.6006 240.86 Tm +(VAR EXP)Tj +/TT8 1 Tf +6 0 0 6 239.4067 240.86 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 198 224.26 Tm +0.2744 Tw +(If an auxiliary variable is specified as a two element list, )Tj +/TT13 1 Tf +27.9369 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2744 Tw +[( is a)]TJ +-29.7372 -1.2889 TD +0 Tw +(variable initially bound to the result of evaluating the form )Tj +/TT13 1 Tf +26.2822 0 TD +(EXP)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-28.0825 -2.0667 TD +(For example, given)Tj +/TT8 1 Tf +6 0 0 6 198 181.61 Tm +(\(DEFMACRO FOO \(A B &AUX C \(D 5\)\) FORM\))Tj +0 -2.5917 TD +(C)Tj +/TT6 1 Tf +9 0 0 9 201.6006 166.06 Tm +( will be bound to )Tj +/TT8 1 Tf +6 0 0 6 271.4077 166.06 Tm +(NIL)Tj +/TT6 1 Tf +9 0 0 9 282.2095 166.06 Tm +( and )Tj +/TT8 1 Tf +6 0 0 6 301.9453 166.06 Tm +(D)Tj +/TT6 1 Tf +9 0 0 9 305.5459 166.06 Tm +( to )Tj +/TT8 1 Tf +6 0 0 6 317.8945 166.06 Tm +(5)Tj +/TT6 1 Tf +9 0 0 9 321.4951 166.06 Tm +( when )Tj +/TT13 1 Tf +2.9771 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is evaluated.)Tj +/TT15 1 Tf +-24.0325 -2.2089 TD +(&WHOLE)Tj +/TT6 1 Tf +4.9333 0 TD +0.0856 Tw +[(Used to get the whole macro calling form. Should be the first element)]TJ +0 -1.2889 TD +0 Tw +(of )Tj +/TT13 1 Tf +1.1711 0 TD +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0422 Tw +(, and should be followed by a single symbol, which is set to the)Tj +-3.5715 -1.2889 TD +0.0811 Tw +[(entire macro calling form. Other )]TJ +/TT8 1 Tf +6 0 0 6 335.13 122.98 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 338.7306 122.98 Tm +0.0811 Tw +(-keywords or arguments can follow.)Tj +-15.6367 -1.2222 TD +0 Tw +(For example, given)Tj +/TT8 1 Tf +6 0 0 6 198 99.53 Tm +(\(DEFMACRO FOO \(&WHOLE X A B\) FORM\))Tj +/TT6 1 Tf +9 0 0 9 198 82.7 Tm +0.1644 Tw +(Expanding the macro call )Tj +/TT8 1 Tf +6 0 0 6 307.6968 82.7 Tm +0.395 Tw +(\(FOO 1 2\))Tj +/TT6 1 Tf +9 0 0 9 344.8421 82.7 Tm +0.1644 Tw +[( would cause )]TJ +/TT8 1 Tf +6 0 0 6 404.0424 82.7 Tm +0 Tw +(FORM)Tj +/TT6 1 Tf +9 0 0 9 418.4447 82.7 Tm +0.1644 Tw +[( to be evaluated)]TJ +-24.4939 -1.2222 TD +0 Tw +(with )Tj +/TT8 1 Tf +6 0 0 6 218.5488 71.7 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 222.1494 71.7 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 247.8091 71.7 Tm +(\(FOO 1 2\))Tj +/TT6 1 Tf +9 0 0 9 280.2144 71.7 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 284.7144 71.7 Tm +(A)Tj +/TT6 1 Tf +9 0 0 9 288.3149 71.7 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 313.9746 71.7 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 317.5752 71.7 Tm +(, and )Tj +/TT8 1 Tf +6 0 0 6 339.561 71.7 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 343.1616 71.7 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 368.8213 71.7 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 372.4219 71.7 Tm +(.)Tj +/TT8 1 Tf +6 0 0 6 198 53.7 Tm +(DEFMACRO)Tj +/TT6 1 Tf +9 0 0 9 226.8047 53.7 Tm +0.0389 Tw +[( macros also support argument list destructuring, a facility for)]TJ +-3.2005 -1.2222 TD +0.0756 Tw +[(accessing the structure of individual arguments to a macro. Any place)]TJ +ET +endstream +endobj +74 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT13 16 0 R +/TT15 17 0 R +/TT17 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +76 0 obj +<< +/Length 8462 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-20)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 246 569.54 Tm +0.0289 Tw +(in an argument list where a symbol is expected, an argument list \(in the)Tj +0 -1.2222 TD +0.48 Tw +[(form described above\) can appear instead. Such an embedded)]TJ +T* +0.01 Tw +(argument list is used to match the corresponding parts of that particular)Tj +T* +0.1744 Tw +[(argument, which should be a list structure in the same form. In the)]TJ +T* +0.1233 Tw +(simplest case, where the embedded argument list does not include &-)Tj +T* +0.1678 Tw +(keywords, this provides a simple way of picking apart list structures)Tj +T* +0 Tw +(passed as arguments to a macro. For example, given)Tj +/TT8 1 Tf +6 0 0 6 246 491.09 Tm +(\(DEFMACRO FOO \(A \(B \(C . D\)\) E\) FORM\))Tj +/TT6 1 Tf +9 0 0 9 246 475.54 Tm +0.0956 Tw +(Expanding the macro call )Tj +/TT8 1 Tf +6 0 0 6 353.2168 475.54 Tm +0.2283 Tw +(\(FOO 1 \(2 \(3 4 5\)\) 6\) )Tj +/TT6 1 Tf +9 0 0 9 442.0197 475.54 Tm +0.0956 Tw +(would cause )Tj +/TT8 1 Tf +6 0 0 6 496.25 475.54 Tm +0 Tw +(FORM)Tj +/TT6 1 Tf +9 0 0 9 510.6523 475.54 Tm +0.0956 Tw +[( to be)]TJ +-29.4058 -1.2222 TD +0.0356 Tw +(evaluated with with )Tj +/TT8 1 Tf +6 0 0 6 329.4937 464.54 Tm +0 Tw +(A)Tj +/TT6 1 Tf +9 0 0 9 333.0942 464.54 Tm +0.0356 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 359.7139 464.54 Tm +0 Tw +(1)Tj +/TT6 1 Tf +9 0 0 9 363.3145 464.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 368.1345 464.54 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 371.7351 464.54 Tm +0.0356 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 398.3548 464.54 Tm +0 Tw +(2)Tj +/TT6 1 Tf +9 0 0 9 401.9554 464.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 406.7754 464.54 Tm +(C)Tj +/TT6 1 Tf +9 0 0 9 410.3759 464.54 Tm +0.0356 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 436.9956 464.54 Tm +0 Tw +(3)Tj +/TT6 1 Tf +9 0 0 9 440.5962 464.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 445.4162 464.54 Tm +(D)Tj +/TT6 1 Tf +9 0 0 9 449.0168 464.54 Tm +0.0356 Tw +[( set to )]TJ +/TT8 1 Tf +6 0 0 6 475.6364 464.54 Tm +0.085 Tw +(\(4 5\))Tj +/TT6 1 Tf +9 0 0 9 494.1494 464.54 Tm +0.0356 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 516.7752 464.54 Tm +0 Tw +(E)Tj +/TT6 1 Tf +9 0 0 9 520.3758 464.54 Tm +0.0356 Tw +[( set)]TJ +-30.4862 -1.2222 TD +0 Tw +(to )Tj +/TT8 1 Tf +6 0 0 6 256.1586 453.54 Tm +(6)Tj +/TT6 1 Tf +9 0 0 9 259.7592 453.54 Tm +0.0067 Tw +[(. Note that the embedded argument list )]TJ +/TT8 1 Tf +6 0 0 6 421.4789 453.54 Tm +0.0167 Tw +(\(B \(C . D\)\))Tj +/TT6 1 Tf +9 0 0 9 461.3854 453.54 Tm +0.0067 Tw +[( has an embedded)]TJ +-23.9317 -1.2222 TD +0.1556 Tw +(argument list)Tj +/TT8 1 Tf +6 0 0 6 300.5562 442.54 Tm +0.375 Tw +[( \(C . D\))]TJ +/TT6 1 Tf +9 0 0 9 336.1109 442.54 Tm +0.1556 Tw +[(. Also notice that if an argument list ends in a)]TJ +-10.0123 -1.2222 TD +0.0967 Tw +(dotted pair, that the final symbol matches the rest of the arguments in)Tj +T* +0 Tw +(the macro call.)Tj +0 -2 TD +0.6289 Tw +(An embedded argument list can also include )Tj +/TT8 1 Tf +6 0 0 6 466.1517 402.54 Tm +0 Tw +(&)Tj +/TT6 1 Tf +9 0 0 9 469.7523 402.54 Tm +0.6289 Tw +(-keywords, for)Tj +-24.8614 -1.2222 TD +0.1211 Tw +(interpreting parts of embedded list structures as if they appeared in a)Tj +T* +0 Tw +(top-level macro call. For example, given)Tj +/TT8 1 Tf +6 0 0 6 246 368.09 Tm +(\(DEFMACRO FOO \(A \(B &OPTIONAL \(C 6\)\) D\) FORM\))Tj +/TT6 1 Tf +9 0 0 9 246 352.54 Tm +0.0278 Tw +(Expanding the macro call)Tj +/TT8 1 Tf +6 0 0 6 348.2768 352.54 Tm +0.0667 Tw +[( \(FOO 1 \(2\) 3\))]TJ +/TT6 1 Tf +9 0 0 9 400.285 352.54 Tm +0.0278 Tw +[( would cause )]TJ +/TT8 1 Tf +6 0 0 6 455.7953 352.54 Tm +0 Tw +(FORM)Tj +/TT6 1 Tf +9 0 0 9 470.1976 352.54 Tm +0.0278 Tw +[( to be evaluated)]TJ +-24.9109 -1.2222 TD +0.0022 Tw +(with with )Tj +/TT8 1 Tf +6 0 0 6 287.1376 341.54 Tm +0 Tw +(A)Tj +/TT6 1 Tf +9 0 0 9 290.7382 341.54 Tm +0.0003 Tc +0.0019 Tw +( set to )Tj +/TT8 1 Tf +6 0 0 6 316.4579 341.54 Tm +0 Tc +0 Tw +(1)Tj +/TT6 1 Tf +9 0 0 9 320.0585 341.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 324.5785 341.54 Tm +(B)Tj +/TT6 1 Tf +9 0 0 9 328.179 341.54 Tm +0.0003 Tc +0.0019 Tw +( set to )Tj +/TT8 1 Tf +6 0 0 6 353.8987 341.54 Tm +0 Tc +0 Tw +(2)Tj +/TT6 1 Tf +9 0 0 9 357.4993 341.54 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 362.0193 341.54 Tm +(C)Tj +/TT6 1 Tf +9 0 0 9 365.6199 341.54 Tm +0.0003 Tc +0.0019 Tw +( set to )Tj +/TT8 1 Tf +6 0 0 6 391.3396 341.54 Tm +0 Tc +0 Tw +(6)Tj +/TT6 1 Tf +9 0 0 9 394.9402 341.54 Tm +0.0001 Tc +0.0021 Tw +( \(because of the default value\), and)Tj +/TT8 1 Tf +6 0 0 6 246 330.54 Tm +0 Tc +0 Tw +(D)Tj +/TT6 1 Tf +9 0 0 9 249.6006 330.54 Tm +( set to )Tj +/TT8 1 Tf +6 0 0 6 275.2602 330.54 Tm +(3)Tj +/TT6 1 Tf +9 0 0 9 278.8608 330.54 Tm +(.)Tj +/TT17 1 Tf +-3.6512 -2 TD +(Warning)Tj +/TT6 1 Tf +4 0 TD +0.0889 Tw +(: Embedded argument lists can only appear in positions in an)Tj +-4 -1.2222 TD +0.2611 Tw +[(argument list where a list is otherwise not accepted. In the above)]TJ +T* +0.0189 Tw +(example, it would not be possible to specify an embedded argument list)Tj +T* +0.3267 Tw +(after the )Tj +/TT8 1 Tf +6 0 0 6 287.1637 279.54 Tm +0 Tw +(&OPTIONAL)Tj +/TT6 1 Tf +9 0 0 9 319.5689 279.54 Tm +0.3267 Tw +[( keyword, because it would be interpreted as an)]TJ +-8.1743 -1.2222 TD +0.0933 Tw +(optional argument specification \(with variable name, default value, set)Tj +T* +0.3033 Tw +[(variable\). However, it would be possible to specify an embedded)]TJ +T* +0.0722 Tw +(argument list as the first element of an optional argument specification)Tj +0 -1.3644 TD +0 Tw +(list, as so)Tj +/F1 1 Tf +10 0 0 10 281.7802 234.26 Tm +(:)Tj +/TT8 1 Tf +6 0 0 6 246 221.81 Tm +(\(DEFMACRO FOO \(A \(B &OPTIONAL \(\(X \(Y\) Z\))Tj +3 -1 TD +(\(1 \(2\) 3\)\)\) D\) FORM\))Tj +/TT6 1 Tf +9 0 0 9 246 200.26 Tm +0.0689 Tw +(In this case, )Tj +/TT8 1 Tf +6 0 0 6 296.358 200.26 Tm +0 Tw +(X)Tj +/TT6 1 Tf +9 0 0 9 299.9586 200.26 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 305.0786 200.26 Tm +(Y)Tj +/TT6 1 Tf +9 0 0 9 308.6792 200.26 Tm +0.0689 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 331.905 200.26 Tm +0 Tw +(Z)Tj +/TT6 1 Tf +9 0 0 9 335.5056 200.26 Tm +0.0689 Tw +[( default to )]TJ +/TT8 1 Tf +6 0 0 6 380.2519 200.26 Tm +0 Tw +(1)Tj +/TT6 1 Tf +9 0 0 9 383.8524 200.26 Tm +(, )Tj +/TT8 1 Tf +6 0 0 6 388.9724 200.26 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 392.573 200.26 Tm +0.0689 Tw +(, and )Tj +/TT8 1 Tf +6 0 0 6 415.7989 200.26 Tm +0 Tw +(3)Tj +/TT6 1 Tf +9 0 0 9 419.3995 200.26 Tm +0.0689 Tw +[(, respectively. Note that the)]TJ +-19.2666 -1.2222 TD +0.0178 Tw +[(default value has to be an appropriate list structure. Also, in this case)]TJ +T* +0.2711 Tw +(either the whole structure)Tj +/TT8 1 Tf +6 0 0 6 356.0685 178.26 Tm +0.65 Tw +[( \(X \(Y\) Z\))]TJ +/TT6 1 Tf +9 0 0 9 403.7744 178.26 Tm +0.2711 Tw +[( can be supplied, or it can be)]TJ +-17.5305 -1.2222 TD +0 Tw +(defaulted \(i.e., is not possible to specify )Tj +/TT8 1 Tf +6 0 0 6 404.5239 167.26 Tm +(X)Tj +/TT6 1 Tf +9 0 0 9 408.1245 167.26 Tm +( while letting )Tj +/TT8 1 Tf +6 0 0 6 462.832 167.26 Tm +(Y)Tj +/TT6 1 Tf +9 0 0 9 466.4326 167.26 Tm +( default\).)Tj +/TT4 1 Tf +10 0 0 10 126 144.92 Tm +(Interpreting Macros)Tj +/TT6 1 Tf +9 0 0 9 126 129.26 Tm +0.0156 Tw +(When the interpreter encounters a form )Tj +/TT8 1 Tf +6 0 0 6 286.9987 129.26 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 297.8004 129.26 Tm +0.0156 Tw +[( of which is an undefined function, it tries interpreting it as)]TJ +-19.0889 -1.2222 TD +0.1778 Tw +[(a macro. If )]TJ +/TT8 1 Tf +6 0 0 6 179.0875 118.26 Tm +0 Tw +(CAR)Tj +/TT6 1 Tf +9 0 0 9 189.8893 118.26 Tm +0.1778 Tw +[( of the form has a macro definition, the macro is expanded, and the result of this)]TJ +-7.0988 -1.2222 TD +0.1089 Tw +(expansion is evaluated in place of the original form. )Tj +/TT8 1 Tf +6 0 0 6 346.4255 107.26 Tm +0 Tw +(CLISPTRAN)Tj +/TT6 1 Tf +9 0 0 9 378.8307 107.26 Tm +0.1089 Tw +[( \(see the Miscellaneous Functions and)]TJ +-28.0923 -1.2222 TD +0.0333 Tw +(Variables section of Chapter 21\) is used to save the result of this expansion so that the expansion only)Tj +T* +0.0378 Tw +[(has to be done once. On subsequent occasions, the translation \(expansion\) is retrieved from )]TJ +/TT8 1 Tf +6 0 0 6 497.9335 85.26 Tm +0 Tw +(CLISPARRAY)Tj +/TT6 1 Tf +9 0 0 9 126 74.26 Tm +(the same as for other )Tj +/TT8 1 Tf +6 0 0 6 211.0386 74.26 Tm +(CLISP)Tj +/TT6 1 Tf +9 0 0 9 229.0415 74.26 Tm +( constructs.)Tj +/TT17 1 Tf +-11.4491 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0133 Tw +[(: Because of the way that the evaluator processes macros, if you have a macro on )]TJ +/TT8 1 Tf +6 0 0 6 472.3076 56.26 Tm +0 Tw +(FOO)Tj +/TT6 1 Tf +9 0 0 9 483.1093 56.26 Tm +0.0133 Tw +(, then typing)Tj +/TT8 1 Tf +6 0 0 6 126 45.26 Tm +0 Tw +(\(FOO A B\) )Tj +/TT6 1 Tf +9 0 0 9 169.207 45.26 Tm +(will work, )Tj +/TT8 1 Tf +6 0 0 6 212.2998 45.26 Tm +(but FOO\(A B\))Tj +/TT6 1 Tf +9 0 0 9 255.5068 45.26 Tm +( will not work.)Tj +ET +endstream +endobj +77 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT11 15 0 R +/TT17 22 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +79 0 obj +<< +/Length 66 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(10-21)Tj +ET +endstream +endobj +80 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +82 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +84 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +85 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +86 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBFHNG+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 87 0 R +>> +endobj +87 0 obj +<< +/Filter /FlateDecode +/Length 20019 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($CkE@Bi C9͎~03K6JJb)ՔҔRj)Bȇآ"-P)@z&@?ޙ߻f;G{`م =;ohQ`r [Q`]Y|714cEb9KBHolxbCVRNuCQs*;6<0vg> G:wI%' *X܁rMkMOGd\<&QV "@rqST#6(usQirnVU#^x9jPep8kVRHNh^M0΂W`^ lEא[(Le3ϐ0,GMЊ8s ]pv5;#B0 +p0 JQ8nu|$lznyfAlm@lΥ xGe-M89T~6섭9n:HpNa5 (ypa/"Hj =i|a8)ys>]!N.Qbz("s@K}(z:dU|1셧-|Bkɶ;HVxG a^n ?ʡ +qU6r +V ~$iP¯Dɝ!qEr*_\6Kؼʟdn EA(4*h&c x'~u/Z cYP+19FAnЍN`;A3d-]JX1]L᱊?Aw-}6!~z-8zLw'LLKcp&&DzL𣔎1ONo}o6c(=y]%dFv#Zd0Iqe2}8> \N7~{|`b.gOd5g,@g ,B4fi6.%6.6.6ql\mcOٸƵ6>m36#u6>gzlclh6c?g UEG(Dh¤?4jt~B6!] j,3QԨjV4!-џ;Z¿T0|7J,)+pcѐKLķW)y0V*iN鯥05F`NIuˮmb$j\~b:QѶ{hhA5Oh5wAuok+uhq%)RMS1 =Y n."a{!MJZc&gŇ1ZOb)* SW c/m;ř-" +E?mS"cnboݨߧӐFi~@Bߌ*c"c(>FnTu^i/bUWea#Zke7|MF}tMP`̌(fm+c=c M1K;t۲TF%NK-2zZ|a/ z{|@d$"h0F,K!e3s=&׏;c5S4ao7/x)Q{D~.%sRݖ7,-p+tˌ_ʹi_߼&[Z#ǽMvb~>T[&NfW|[77z f+7M .]vz֚AlʺKKRƜԱ}[uƪkq7zjR˪&wwz;̬2 0wmm#;[l`88/%>;5gVqh(D>mK0 JMP]jtr>Jmi%&]@dxϝm":@BB{_݇tUQwᒬπ*Ŋ^Pm(]dz61HesG +P'Yۻ[,hp/IS F^ +j!Q/sHddH{YMj`t2*ASGiHHqrE{K0(&NѮ#AV3T|Agl 1G[/s pMrg*d|#gW %k[:o02QϨu6qTCh;~,nVáFŅٟV8nCG}~S@H}@-!PI`:c|QH}t.>X;}`Wv(Y*t *ɮlU $Cl=3:R@FqEY%P9{F;9~;ZnY 茹M;OʹKWlʷ:Z`]U?cj-d弿_ʉGu/ϔœ\.UvF 6yv"`[=Kܒ&+r32:BnICXRy:lJje+ִ>vQyl.t$d,V=KUQ-\胠R([VK8<'X:UD:Ye:;6I > 7QI2M>:܄!R +7yn%,\ru +Ȉt晞!ƺpP0kp#' |Ib'bAF`űߘ1تhc_2.!Cϣl; +1 .Bf6&}H8'8n7ӌoQ7p<x㐏Ĺ> )Gǘ`j0ɚEGQxއn p.7  qH>!B%~RN69HL119Mzr\%Z:i.u1!0UiMѧh%]rt%} t }ѷ{~B/?h ffY{&l"ʊ dOl){fU؛v}N,.+lS.'| +1/R<|3}]'~;x'?̏~(;/'̦ SV'ቛJwPg&A,TIS (3 1*qf( ++5I3##uXi[CЭj!KeV=R ڌ}1UH֔ELf`ez(~BT +FlCWh %Ml b#V&QfO>a*6.= ?cXPa~1NJ6fQɰg6|Q_ p˺fl[rR̸)v%9$F{nex_AKݛm1jwZõ2jɥ'-[Fgl@E-poô[[rZH"p 2`KEȭU'nHZK;~jkɖ@RKT>4{Jz"hkFK]] q~[S|0D/bI| A#akF(Z|6q.眤<m:(5×Be+HI[uNPv#'NrdnV(q Nti4[`HAus{lP~i[Eݽ};na5G't%W߶߶lۺ[_ޱ,y0l `/Jpa",L +TZE״pv/]E%?VK(9$1.Hpݯ #lHleYD}!Ӭ&28|S&`iz-B =>6c$\H ?|RZD[sMrAp2 hlvnͲxNAٖcQ7xgD2m>(pd%, +-&T R Y*YwmKwZ@UZjuٜ_5 ye3V,go^X\Xo;8S>*!gEiPSzl L pkAEz^  ,ώtnW>ΡM ]QiYc*]Z*덌n¼ҴۚEeyhrWMeuCmaŌ=R[,gv4ūh-˝~mtlt \NEb;aVd1;tɮJX'lF<('7.&cj3BnTefUO(- +n392HIGD/ ڣWͥ4D"iWye"Ȋo!5f]Jɱ)N-Lf7qU'-!xTKkE,8O%3}堋_Ġ`=F2.]LedbY!:/I"[,Wvˤ=Y_@d|ZXY@Vo47 PK9tev|i+ Y4]c4; Y2`YX gLyB%ASJ؊hݏ?XZ,ZҖ%8 ̂jԍRK¼2ټט?%UJ9C':g..?/ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStWRKAİX{== x^.ww\9 ߚq?W?NhN-:zTDO!WhG,h)cxz}GGVWAhSdcE{%`нdA"mψԒn^1vt,y}4|ˊ^ox6g@EV4 @3h UFF;b|thƶGcߞreQc6*W_09K_0(,f}"ei:XEHQ e6|'Y_QSO==Znlgr J}Jn1 pu3dePjtL]gB6E= +UеA~%˂R*XZ:j12O-}XX5C-^:p>'[NV-K1h2=\yhJ--'h4Oj>Ma`/=0x xNï7pf,yѣգ&e5} qt@DE3-.[`;.kZ܌Oo.m]܋u&Np +_")"+*""%z@ZH;yt2Bd"oߑ$yK'%$qpk\3%I. q܏q m=./ګ( +{}o]HY-3vYlTDBY@!jFS;#Cd:ڴ:5Fww(ҙF;S'&mEƈdZ;cvl؉2{Y5F1yo9~_ +%rr(K7>[}wߑWUY < |ZGZx\Hcv1~`ۄݰޒp-剏 +r q$[(_\۱r]VykVeybmؕxa8}; &.'eusI+dO-(,5|K=FK㞎2q~adYRɝ^H)JBlJ&[kHK*pxOE|tM hRh1)!YXq]%|t^n?YriXZƪtRޮW3@>i钙An#^n-qx"dy phE3rCWIw򵾮&>O&x 6gygs3dUŞVpp$_ X4-AE$.puh^ϽX<&Z  +K!@4کT]k'=I}!fkx4qɴ;>SWL]r` #OsO8dl?|̙|7uw8v:cUF/9m~b^H kA"ˑئ;+4ĥbM|gMXp|+_1yFj;M`yI}7CR9a{rMtxc|mtٻ^H~!yX"p@L]{8=.$ ߅Tj +dA.DVcU<1?rV/5haŠ;ȯ) [D{L$in\ssd "/*YK$k+N.M@%=%!?ɿe%A +Qc'u!T:Ntu h%+j60H6dv{Qzh?HD%I)OzRʖ3+GnV)UKˑIIjF&ŤI.tY9iyڠtML Cff6fgNRyD6}Mc,\Cgl6&d fNA|1GVexGaY*\ay\sf܄!C=U۸ } Y-TrߏKh"C9,mدPO3؈M2aagA#8;bŚ& # U0^#,U#cpFG yȒ(O^5r)dUm[m 5e~~yIr]TRV5qWV?IȌm=j (o~ꘆBxWZtDWg4 ʓ˗t~|j?~˗e|nѠctߩQ?)p4(H lgN@Nء#;cGPYי.J#w^32%šXA {Eu{o{5 A6p"]JG$j2NFQ +#r4Ԁ&0-A@8c;Crf2"iuc5j;H^KS8w~V'B{ -8Yhsn<\嫈,4cLh~]˥nɭQQwQD=XV|柙{a-t ;[_*d6fW_RY}S̵#Ň +[B9;zod:un]n^clo(nlHўʦP${eivl[ӥh5o\r~$_{?<0"Җk 撇;i6?%rQmZo}>5-lfXx/N]x'~gۥgPޑw>PjuQKo&7go| +ȏ "VLcw뛬L\ ROQW\[of*?J!aThR4y2KȦ]0&S}5fD3qtp ҢS{ 5${®] ڌTa785h}lxZy6vKxJ* Za2LE55JQOp̅QOb +Sz?}pQx5qWQs&j!a*MEU5uU tr)'H5{"K2W5d=i"ͤlC!]ir1 rF []h\z=Bz#5-ԤΡun].Ut m_zQCO?h^YEu- ښ¦ںUZ6}ճedPs=ְuf~ W*NcO.vس9ϓ+A|QBW#x51uycDcܻ^d:B(F;g=݋*yGZ?ڥWRB2+c7* y(L&ڽ|4ͫ`ugq71uюd4\§& +LR$1$gV\7A@v9w_D>WXUM&/I _7 'aQ#Y x.xgؾ/ )6>Bx+ea#'7F:BS5bX4~,'@?d=v?[d$88T)`L3RcCgR[=RaQ,+Nԍ#.)dd@ Bt50+Njvh7 %?6Iq]nBRx PNߘ,C:s6IO<'t!ށCxQhNC_#Xĺk4)ʹx6t^9h.dJ\AxVX챐%d4ȢfV.Q +>z6HyOXmMXLmInXiأKu> Calœ"KtZ8f{1LOaP `%KeW5#X|"4y,y^2Y\ ARo6h.ӚW+Dɑ-=aRlEɥ[eD[d5s ;tYH~8VcqiyZ@!bp5f "@| (YhYYdِ[=c/wnKFT }KkW g+a\[X2,-Dr@=zZe`A }Zcr/ltnoJEXY0pɺz^a,$Τ"vIW!u>$e璘+Gn-,-ćÝnFJfM뙷1ƴݸmɲ덦ʩҀ#{S6>ZeEF4t-h.GU.l-yu53]cާ=l`hQq-0XYh+cٽS:fejc۲tfq0 + +rm~ǕsC0$k좕~bA-16BOt g2+M&W.ӜyqSSJڥ,'mZCSEqi\Zxun (pL/秡lF' Z(IܳaS%{ĺu꠴p={EyyE/ȵqJoS82It S ~ $:`VbGgk=.^Chg'- .{t*CeK ZLj.E:`1\wiBp1"jw]tRע'linlujR4"8 3Nm@ WvޖBW +f1!djcA7iZ8 TFg&N %A(-4nmv.'c ޵П9E>1eTq -xA¹#TZ(޵Pw:5.->Z$(^Êr%-HAy@OL +=4A^#n‘Bt4؋B$5,Bu~2*EFxъ-xVrVT8,& LMVH9#6YK΅(vfXMZ6Eh]Ehu2p0x6e;V k!U%i+8 b=hL_ = }BhQǀc:< "/(s6l9G9WB ޷4ZHJ;g[V{ эNCRmiяZ oϿ9K-ZfOpٷp{吉9̎,>)A 8Uތ-B#.AʺSZkc MZPh= `eZ҃q'f;eNM% ^[l<#S`ѯ/d +Kw`p#2vb Km:hZbWaD%u__u'˵e\# /s%+ڛ6Z$o'KrvM66mo"rWw`)N†*. xrK}T Ya9,gpA{B:_wyTeE2(I ђ?mFԆXYC+h ';Z+jZQk%A9Zb\-.v06ϚQ7c7l$D½Y[fMsrѯ |HspihC`%#BpY#erZ%nhӡB{J`k1Z<2^D(m _=~X< K)'~xWTߡyyi1d, P 7eaǾ*rwp[v0D039QLoͷlk \ I"5ǴRΖ/2軄pl-uhC;65?-Ej>ҍBm;޺1Z4.B.- y; L~#F]}J(!6`q?N|B+MGEN􎀴N C>(p߂1pa- ~ /oЀm \!$CyLoK{X,oɫdKn)2+QN(_V\PkU+E_W T (0HFmYp1X$'Z$PXiTL11x"]>V14k#+YT93޹ܙf'*`XoR F3sl!gzmgmcv]ea,Cy"a| _3Λ&G9oKROI30iT,M*ER;itD:/]l49Kvȓry^n' +S"~ʏ\e2K,VV)((;0ݫV('ʿKJTU5&^:@f05@OGV%&#Lh +D!ZdQvH&bDd H{b=DRu1h3 +t_Āo,u Bz0%|~5P$a4EGA|d4T3.#܌r3Yt( R8D<!10q#BA1JHU7)uAԉ} &Ζ:?A}n@q'j7smoG1<й(z(me~+ +7@zE{(l(RG9n}w'Ox`ٳc;oЭsvD|3Q18B*_ge)0&t%@NGPD+./HsJw++ }Ҭi-yK[~m^ɲ̟,N6||QoQ4BIk0?ly01ߚ 8Unx0ZXJX oA3Z1cp ס:*j<#IoGII!'d0J2d@&"22 +E*|ڪBRK|@~CV&üJnv5%T3/i4}3dJI4ŜET:ܱ.*F"7Pmt撇Q=E?ez~Eovzv#a1όdQbYxĞdSH(!ܑGʧ(0DD9e(-F%R݈mO"&j +uJ1yԽ^‚-dvƒ˃-vWr?)؋G #/SHldyqٝ=QXޫ XA[J\ +JIg5K^әs}M$Kb}D)t"K\VInmSZ55 c%OcI'%}luéc)pbSXGAv8#dO~??3lrULH16B(H`-Ԫ Gռn6\6ōӟ(!wNDzi\w%.C ==A'YGj>y>kh9mo=rUݑs#p)X1ty9v,>8m?l& ]` +{dI9~q*O%V, KLQ}JGلƄ-]}nJ-(k+O%;oF ><"(0‚> 2 ]X ~'|䜔S]|H=8|A%jS_9`Ε-* s-}"7Ϩ +9+#2@PK]}Z~_/#G{@^S+~HG U)='9$ + }B.E- DGFdnMY~_ȗDJƵb'C}:IQQ"52FCרrn|@"U|H c}ܟ䦽~LsVjSO %(H=|n^~ww +~ iۃ~%q޿ĭ=<+}^i%Ӄ]^|@j=ʍGr7HsrVzq]PQya/!G?9.oOwp1?I M4 }gp|i ]X".y9@&dQi;S^tvi/RXܜHe\R#dƆJi7C |t`Z.B,I]I9 ێ6N)N|Y%,2渇l$iJ/գ4_mm<:x(yǭ#W#!n2 GP%:&7'|a 3ck"jmS-;oTW;Hˌo), m\_F>MK-AYF6$=f(m((0#| +pgy4چ.v`8tlj'۶1`fX"?ꢂGsy2akD]aZMa``.4V*JFs%b^ӈf=iv->"1zq&4G {#~mQ\ml Y,2Ke%eU^Ȟ ^ L8n|%rt &3W&;OW +Wy̾$T })olO{c8FշX-$Μ@B,taϩd,( +Zz1mq九So8!p v@ ) ]k$~XPuc7z>#܈qNG -C/1iF$MݎY:q>zH8:SM e{*kИt Gb"郤!VIXjblTneY #)h-v`rkbP[РM+K&-aV=Ύ@#*v_9ͼJszտ?x>_?wwd??Cc܃8~~‚\UBFJ#*jERL@RD(G}F4B A\|4BD&5L;>+e?NO;<{{ =^=?q։uToK\;5&-3GRϧF5{G;3+"=kCxO +iK8lUІ;HQyߓ<7]orr0/h_w^UUuqNCCv,Vn{Jѵu;p_Tݑ +O?MQs:lmm$Uϟ{ݢy> co.ҤҎ76άQ[F>y:ivӖvr_3R¡홆 +&\Tv4;>}܉i7^mQvDem#WO}Qm̆cWnD%|E,y)|ך9RJ?;<\mU˗M(Ѭ<jHd Y$'WD8X$gNMTL(ڦE3+`!w4.,+6ԃzM4=iQl&ݠ?"'d|^KVOk+2s4 ha=סϵ,j)uk+ +{[>4eS,S{Z'%nK1\_+[raɥ:U^:a#B#U YRYb qM4Ρ4ұ`I#G~:V?cKi ҰiȔ:)p68 Nz>70ɐI`<{0u0c1]y(h^ADGA`f3`8M\[='a` CY'S !`0 ɏP[CB}ȑ9<޼e2@ߟ}${Br_ܽ>7Jz =-tșfsF4 +Y:VPuDt9@@{Ԃ +et w"T hYxI򳓟R~ѐ$[V(e*?uoؕNUvcGh{vK\**vZ:xtlgރ˺IÛ[Yr_Dz'yr;^kޜtpIN*ygC8X !C2pc8XuKo'>pa(|4)b/!]'(kNM]ɪؤnvJRKZBIC[l^N'_!YIG5&{Ճ~ΐ W% +hO+ϨO۩RE(+Wζ6d +4n*Ad"hMT{xI*HnyS33O-∣'nY͒Fkyw +'MvMVMV76rԘ&f53m/gh,s8D=7hL|;{K3K'̲?Ԙ8# }I3JNZ,:"G%YX>@[ou{- +endstream +endobj +88 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +89 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +90 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +91 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +92 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +93 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +94 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +95 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 93 0 R +>> +endobj +21 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 41 +/Widths [278 333 400 556 556 833 852 278 333 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 94 0 R +>> +endobj +26 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 95 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 82 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 611 0 0 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 0 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 0 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 83 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 278 0 0 0 0 778 0 333 333 0 0 250 333 250 606 +500 500 500 500 0 500 500 500 500 500 250 250 0 606 0 0 +0 778 611 709 774 611 556 763 832 337 333 0 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 84 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 600 0 0 600 600 0 600 600 600 0 600 600 600 0 +600 600 600 600 600 600 600 600 0 600 600 0 0 600 600 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 600 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 85 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBFHNG+Symbol +/Encoding /Identity-H +/DescendantFonts [ 96 0 R ] +/ToUnicode 97 0 R +>> +endobj +96 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBFHNG+Symbol +/FontDescriptor 86 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 86 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 88 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 600 600 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 89 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 90 +/Widths [600 0 0 0 0 0 600 0 0 0 600 0 0 600 600 0 +0 0 600 0 0 0 0 0 0 0 0 0 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 90 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 1000 0 0 0 0 0 0 0 0 +0 500 0 0 0 500 0 556 0 333 0 0 0 0 611 556 +0 0 389 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 91 0 R +>> +endobj +33 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 117 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 +0 444 0 407 500 389 278 500 0 278 0 0 278 778 556 444 +500 0 389 389 333 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 92 0 R +>> +endobj +97 0 obj +<< +/Filter /FlateDecode +/Length 217 +>> +stream +HTPn0 {ꐀn9 \BC#'2aDpU޳{EMFGq+;N:d32m8w4zh!?p0\ -)!+!H-XgYծ-.AdMBYGA>oخjE7=|9Y,#ق#|&r_j} +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 39 0 R +/Contents 38 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +46 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 48 0 R +/Contents 47 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +72 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 74 0 R +/Contents 73 0 R +>> +endobj +75 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 77 0 R +/Contents 76 0 R +>> +endobj +78 0 obj +<< +/Type /Page +/Parent 81 0 R +/Resources 80 0 R +/Contents 79 0 R +>> +endobj +98 0 obj +<< +/S /D +>> +endobj +99 0 obj +<< +/Nums [0 98 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 18 0 R 23 0 R 27 0 R 30 0 R 34 0 R 37 0 R 40 0 R 43 0 R] +/Count 10 +/Parent 49 0 R +>> +endobj +50 0 obj +<< +/Type /Pages +/Kids [46 0 R 51 0 R 54 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R 72 0 R 75 0 R] +/Count 10 +/Parent 49 0 R +>> +endobj +81 0 obj +<< +/Type /Pages +/Kids [78 0 R] +/Count 1 +/Parent 49 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [11 0 R 50 0 R 81 0 R ] +/Count 21 +/MediaBox [0 0 612 792] +>> +endobj +100 0 obj +<< +/CreationDate (D:20210202102644-06'00') +/ModDate (D:20210202102644-06'00') +/Producer (Apple pstopdf) +>> +endobj +101 0 obj +<< +/Type /Catalog +/Pages 49 0 R +/PageLabels 99 0 R +>> +endobj +xref +0 102 +0000000000 65535 f +0000211212 00000 n +0000000016 00000 n +0000005405 00000 n +0000205990 00000 n +0000206915 00000 n +0000207126 00000 n +0000207554 00000 n +0000208124 00000 n +0000208679 00000 n +0000183120 00000 n +0000213041 00000 n +0000211293 00000 n +0000005555 00000 n +0000013696 00000 n +0000209024 00000 n +0000209337 00000 n +0000209819 00000 n +0000211377 00000 n +0000013886 00000 n +0000022149 00000 n +0000206527 00000 n +0000210171 00000 n +0000211461 00000 n +0000022340 00000 n +0000029471 00000 n +0000206740 00000 n +0000211545 00000 n +0000029672 00000 n +0000040036 00000 n +0000211629 00000 n +0000040226 00000 n +0000050898 00000 n +0000210538 00000 n +0000211713 00000 n +0000051101 00000 n +0000060515 00000 n +0000211797 00000 n +0000060718 00000 n +0000069643 00000 n +0000211881 00000 n +0000069870 00000 n +0000078061 00000 n +0000211965 00000 n +0000078275 00000 n +0000087957 00000 n +0000212049 00000 n +0000088136 00000 n +0000099483 00000 n +0000213390 00000 n +0000213178 00000 n +0000212133 00000 n +0000099697 00000 n +0000110854 00000 n +0000212217 00000 n +0000111033 00000 n +0000124730 00000 n +0000212301 00000 n +0000124909 00000 n +0000133185 00000 n +0000212385 00000 n +0000133388 00000 n +0000142163 00000 n +0000212469 00000 n +0000142332 00000 n +0000149835 00000 n +0000212553 00000 n +0000150030 00000 n +0000157154 00000 n +0000212637 00000 n +0000157368 00000 n +0000165695 00000 n +0000212721 00000 n +0000165863 00000 n +0000174044 00000 n +0000212805 00000 n +0000174225 00000 n +0000182740 00000 n +0000212889 00000 n +0000182906 00000 n +0000183023 00000 n +0000213316 00000 n +0000183261 00000 n +0000183458 00000 n +0000183664 00000 n +0000183864 00000 n +0000184055 00000 n +0000184245 00000 n +0000204354 00000 n +0000204549 00000 n +0000204750 00000 n +0000204952 00000 n +0000205157 00000 n +0000205360 00000 n +0000205568 00000 n +0000205778 00000 n +0000208821 00000 n +0000210922 00000 n +0000212973 00000 n +0000213001 00000 n +0000213489 00000 n +0000213613 00000 n +trailer +<< +/Size 102 +/Root 101 0 R +/Info 100 0 R +/ID [<1c62175a03e8df2eaffbcff9bf2476b3><1c62175a03e8df2eaffbcff9bf2476b3>] +>> +startxref +213684 +%%EOF diff --git a/docs/medley-irm/11-VAR-BINDINGS.TEDIT b/docs/medley-irm/11-VAR-BINDINGS.TEDIT new file mode 100644 index 00000000..f3d913eb --- /dev/null +++ b/docs/medley-irm/11-VAR-BINDINGS.TEDIT @@ -0,0 +1,142 @@ +INTERLISP-D REFERENCE MANUAL VARIABLE BINDINGS AND THE STACK "11"11. VARIABLE BINDINGS AND THE STACK 3 Medley uses deep binding. Every time a function is entered, a basic frame containing the new variables is put on top of the stack. Therefore, any variable reference requires searching the stack for the first instance of that variable, which makes free variable use somewhat more expensive than in a shallow binding scheme. On the other hand, spaghetti stack operations are considerably faster. Some other tricks involving copying freely-referenced variables to higher frames on the stack are also used to speed up the search. The basic frames are allocated on a stack; for most user purposes, these frames should be thought of as containing the variable names associated with the function call, and the current values for that frame. The descriptions of the stack functions in below are presented from this viewpoint. Both interpreted and compiled functions store both the names and values of variables so that interpreted and compiled functions are compatible and can be freely intermixed, i.e., free variables can be used with no SPECVAR declarations necessary. However, it is possible to suppress storing of names in compiled functions, either for efficiency or to avoid a clash, via a LOCALVAR declaration (see the Local Variables and Special Variables section of Chapter 18). The names are also very useful in debugging, for they make possible a complete symbolic backtrace in case of error. In addition to the binding information, additional information is associated with each function call: access information indicating the path to search the basic frames for variable bindings, control information, and temporary results are also stored on the stack in a block called the frame extension. The interpreter also stores information about partially evaluated expressions as described in the Stack and Interpreter section of Chapter 11. Spaghetti Stack 1 The Bobrow/Wegbreit paper, A Model and Stack Implementation for Multiple Environments (Communications of the ACM, Vol. 16, 10, October 1973.), describes an access and control mechanism more general than a simple linear stack. The access and control mechanism used by Interlisp is a slightly modified version of the one proposed by Bobrow and Wegbreit. This mechanism is called the spaghetti stack. The spaghetti system presents the access and control stack as a data structure composed of frames. The functions described below operate on this structure. These primitives allow user functions to manipulate the stack in a machine independent way. Backtracking, coroutines, and more sophisticated control schemes can be easily implemented with these primitives. The evaluation of a function requires the allocation of storage to hold the values of its local variables during the computation. In addition to variable bindings, an activation of a function requires a return link (indicating where control is to go after the completion of the computation) and room for temporaries needed during the computation. In the spaghetti system, one stack is used for storing all this information, but it is best to view this stack as a tree of linked objects called frame extensions (or simply frames). A frame extension is a variable sized block of storage containing a frame name, a pointer to some variable bindings (the BLINK), and two pointers to other frame extensions (the ALINK and CLINK). In addition to these components, a frame extension contains other information (such as temporaries and reference counts) that does not interest us here. The block of storage holding the variable bindings is called a basic frame. A basic frame is essentially an array of pairs, each of which contains a variable name and its value. The reason frame extensions point to basic frames (rather than just having them built in) is so that two frame extensions can share a common basic frame. This allows two processes to communicate via shared variable bindings. The chain of frame extensions which can be reached via the successive ALINKs from a given frame is called the access chain of the frame. The first frame in the access chain is the starting frame. The chain through successive CLINKs is called the control chain. A frame extension completely specifies the variable bindings and control information necessary for the evaluation of a function. Whenever a function (or in fact, any form which generally binds local variables) is evaluated, it is associated with some frame extension. In the beginning there is precisely one frame extension in existence. This is the frame in which the top-level call to the interpreter is being run. This frame is called the top-level frame. Since precisely one function is being executed at any instant, exactly one frame is distinguished as having the control bubble in it. This frame is called the active frame. Initially, the top-level frame is the active frame. If the computation in the active frame invokes another function, a new basic frame and frame extension are built. The frame name of this basic frame will be the name of the function being called. The ALINK, BLINK, and CLINK of the new frame all depend on precisely how the function is invoked. The new function is then run in this new frame by passing control to that frame, i.e., it is made the active frame. Once the active computation has been completed, control normally returns to the frame pointed to by the CLINK of the active frame. That is, the frame in the CLINK becomes the active frame. In most cases, the storage associated with the basic frame and frame extension just abandoned can be reclaimed. However, it is possible to obtain a pointer to a frame extension and to hold on to this frame even after it has been exited. This pointer can be used later to run another computation in that environment, or even continue the exited computation. A separate data type, called a stack pointer, is used for this purpose. A stack pointer is just a cell that literally points to a frame extension. Stack pointers print as #ADR/FRAMENAME, e.g., #1,13636/COND. Stack pointers are returned by many of the stack manipulating functions described below. Except for certain abbreviations (such as the frame with such-and-such a name), stack pointers are the only way you can reference a frame extension. As long as you have a stack pointer which references a frame extension, that frame extension (and all those that can be reached from it) will not be garbage collected. Two stack pointers referencing the same frame extension are not necessarily EQ, i.e., (EQ (STKPOS 'FOO) (STKPOS 'FOO)) = NIL. However, EQP can be used to test if two different stack pointers reference the same frame extension (see the Equality Predicates section of Chapter 9). It is possible to evaluate a form with respect to an access chain other than the current one by using a stack pointer to refer to the head of the access chain desired. Note, however, that this can be very expensive when using a shallow binding scheme such as that in Interlisp-10. When evaluating the form, since all references to variables under the shallow binding scheme go through the variable's value cell, the values in the value cells must be adjusted to reflect the values appropriate to the desired access chain. This is done by changing all the bindings on the current access chain (all the name-value pairs) so that they contain the value current at the time of the call. Then along the new access path, all bindings are made to contain the previous value of the variable, and the current value is placed in the value cell. For that part of the access path which is shared by the old and new chain, no work has to be done. The context switching time, i.e. the overhead in switching from the current, active, access chain to another one, is directly proportional to the size of the two branches that are not shared between the access contexts. This cost should be remembered in using generators and coroutines (see the Generators section below). Stack Functions 1 In the descriptions of the stack functions below, when we refer to an argument as a stack descriptor, we mean that it is one of the following: A stack pointer An object that points to a frame on the stack. Stack pointers are returned by many of the stack manipulating functions described below. NIL Specifies the active frame; that is, the frame of the stack function itself. T Specifies the top-level frame. A symbol Specifies the first frame (along the control chain from the active frame) that has the frame name LITATOM. Equivalent to (STKPOS LITATOM -1). A list of symbols Specifies the first frame (along the control chain from the active frame) whose frame name is included in the list. A number N Specifies the Nth frame back from the active frame. If N is negative, the control chain is followed, otherwise the access chain is followed. Equivalent to (STKNTH N). In the stack functions described below, the following errors can occur: The error Illegal stack arg occurs when a stack descriptor is expected and the supplied argument is either not a legal stack descriptor (i.e., not a stack pointer, symbol, or number), or is a symbol or number for which there is no corresponding stack frame, e.g., (STKNTH -1 'FOO) where there is no frame named FOO in the active control chain or (STKNTH -10 'EVALQT). The error Stack pointer has been released occurs whenever a released stack pointer is supplied as a stack descriptor argument for any purpose other than as a stack pointer to re-use. Note: The creation of a single stack pointer can result in the retention of a large amount of stack space. Therefore, one should try to release stack pointers when they are no longer needed (see the Releasing and Reusing Stack Pointers section below). In Lisp there is a fixed ammount of space allocated for the stack. When most of this space is exhausted, the STACK OVERFLOW error occurs and the debugger will be invoked. You will still have a little room on the stack to use inside the debugger. If you use up this last little bit of stack you will encounter a hard stack overflow. A hard stack overflow will put you into URaid (see the documentation on URaid). Searching the Stack 1 (STKPOS(STKPOS (Function) NIL NIL ("11") 4) FRAMENAME N POS OLDPOS) [Function] Returns a stack pointer to the Nth frame with frame name FRAMENAME. The search begins with (and includes) the frame specified by the stack descriptor POS. The search proceeds along the control chain from POS if N is negative, or along the access chain if N is positive. If N is NIL, -1 is used. Returns a stack pointer to the frame if such a frame exists, otherwise returns NIL. If OLDPOS is supplied and is a stack pointer, it is reused. If OLDPOS is supplied and is a stack pointer and STKPOS returns NIL, OLDPOS is released. If OLDPOS is not a stack pointer it is ignored. (STKNTH(STKNTH (Function) NIL NIL ("11") 4) N POS OLDPOS) [Function] Returns a stack pointer to the Nth frame back from the frame specified by the stack descriptor POS. If N is negative, the control chain from POS is followed. If N is positive the access chain is followed. If N equals 0, STKNTH returns a stack pointer to POS (this provides a way to copy a stack pointer). Returns NIL if there are fewer than N frames in the appropriate chain. If OLDPOS is supplied and is a stack pointer, it is reused. If OLDPOS is not a stack pointer it is ignored. Note: (STKNTH 0) causes an error, Illegal stack arg; it is not possible to create a stack pointer to the active frame. (STKNAME(STKNAME (Function) NIL NIL ("11") 4) POS) [Function] Returns the frame name of the frame specified by the stack descriptor POS. (SETSTKNAME(SETSTKNAME (Function) NIL NIL ("11") 4) POS NAME) [Function] Changes the frame name of the frame specified by POS to be NAME. Returns NAME. (STKNTHNAME(STKNTHNAME (Function) NIL NIL ("11") 4) N POS) [Function] Returns the frame name of the Nth frame back from POS. Equivalent to (STKNAME (STKNTH N POS)) but avoids creation of a stack pointer. In summary, STKPOS converts function names to stack pointers, STKNTH converts numbers to stack pointers, STKNAME converts stack pointers to function names, and STKNTHNAME converts numbers to function names. Variable Bindings in Stack Frames 1 The following functions are used for accessing and changing bindings. Some of functions take an argument, N, which specifies a particular binding in the basic frame. If N is a literal atom, it is assumed to be the name of a variable bound in the basic frame. If N is a number, it is assumed to reference the Nth binding in the basic frame. The first binding is 1. If the basic frame contains no binding with the given name or if the number is too large or too small, the error Illegal arg occurs. (STKSCAN(STKSCAN (Function) NIL NIL ("11") 5) VAR IPOS OPOS) [Function] Searches beginning at IPOS for a frame in which a variable named VAR is bound. The search follows the access chain. Returns a stack pointer to the frame if found, otherwise returns NIL. If OPOS is a stack pointer it is reused, otherwise it is ignored. (FRAMESCAN(FRAMESCAN (Function) NIL NIL ("11") 5) ATOM POS) [Function] Returns the relative position of the binding of ATOM in the basic frame of POS. Returns NIL if ATOM is not found. (STKARG(STKARG (Function) NIL NIL ("11") 5) N POS %) [Function] Returns the value of the binding specified by N in the basic frame of the frame specified by the stack descriptor POS. N can be a literal atom or number. (STKARGNAME(STKARGNAME (Function) NIL NIL ("11") 5) N POS) [Function] Returns the name of the binding specified by N, in the basic frame of the frame specified by the stack descriptor POS. N can be a literal atom or number. (SETSTKARG(SETSTKARG (Function) NIL NIL ("11") 5) N POS VAL) [Function] Sets the value of the binding specified by N in the basic frame of the frame specified by the stack descriptor POS. N can be a literal atom or a number. Returns VAL. (SETSTKARGNAME(SETSTKARGNAME (Function) NIL NIL ("11") 5) N POS NAME) [Function] Sets the variable name to NAME of the binding specified by N in the basic frame of the frame specified by the stack descriptor POS. N can be a literal atom or a number. Returns NAME. This function does not work for interpreted frames. (STKNARGS(STKNARGS (Function) NIL NIL ("11") 5) POS %) [Function] Returns the number of arguments bound in the basic frame of the frame specified by the stack descriptor POS. (VARIABLES(VARIABLES (Function) NIL NIL ("11") 5) POS) [Function] Returns a list of the variables bound at POS. (STKARGS(STKARGS (Function) NIL NIL ("11") 5) POS %) [Function] Returns a list of the values of the variables bound at POS. Evaluating Expressions in Stack Frames 1 The following functions are used to evaluate an expression in a different environment: (ENVEVAL(ENVEVAL (Function) NIL NIL ("11") 5) FORM APOS CPOS AFLG CFLG) [Function] Evaluates FORM in the environment specified by APOS and CPOS. That is, a new active frame is created with the frame specified by the stack descriptor APOS as its ALINK, and the frame specified by the stack descriptor CPOS as its CLINK. Then FORM is evaluated. If AFLG is not NIL, and APOS is a stack pointer, then APOS will be released. Similarly, if CFLG is not NIL, and CPOS is a stack pointer, then CPOS will be released. (ENVAPPLY(ENVAPPLY (Function) NIL NIL ("11") 6) FN ARGS APOS CPOS AFLG CFLG) [Function] APPLYs FN to ARGS in the environment specified by APOS and CPOS. AFLG and CFLG have the same interpretation as with ENVEVAL. (EVALV(EVALV (Function) NIL NIL ("11") 6) VAR POS RELFLG) [Function] Evaluates VAR, where VAR is assumed to be a symbol, in the access environment specifed by the stack descriptor POS. If VAR is unbound, EVALV returns NOBIND and does not generate an error. If RELFLG is non-NIL and POS is a stack pointer, it will be released after the variable is looked up. While EVALV could be defined as (ENVEVAL VAR POS NIL RELFLG) it is in fact somewhat faster. (STKEVAL(STKEVAL (Function) NIL NIL ("11") 6) POS FORM FLG %) [Function] Evaluates FORM in the access environment of the frame specified by the stack descriptor POS. If FLG is not NIL and POS is a stack pointer, releases POS. The definition of STKEVAL is (ENVEVAL FORM POS NIL FLG). (STKAPPLY(STKAPPLY (Function) NIL NIL ("11") 6) POS FN ARGS FLG) [Function] Like STKEVAL but applies FN to ARGS. Altering Flow of Control 1 The following functions are used to alter the normal flow of control, possibly jumping to a different frame on the stack. RETEVAL and RETAPPLY allow evaluating an expression in the specified environment first. (RETFROM(RETFROM (Function) NIL NIL ("11") 6) POS VAL FLG) [Function] Return from the frame specified by the stack descriptor POS, with the value VAL. If FLG is not NIL, and POS is a stack pointer, then POS is released. An attempt to RETFROM the top level (e.g., (RETFROM T)) causes an error, Illegal stack arg. RETFROM can be written in terms of ENVEVAL as follows: (RETFROM (LAMBDA (POS VAL FLG) (ENVEVAL (LIST 'QUOTE VAL) NIL (if (STKNTH -1 POS (if FLG then POS)) else (ERRORX (LIST 19 POS))) NIL T))) (RETTO(RETTO (Function) NIL NIL ("11") 6) POS VAL FLG) [Function] Like RETFROM, but returns to the frame specified by POS. (RETEVAL(RETEVAL (Function) NIL NIL ("11") 7) POS FORM FLG %) [Function] Evaluates FORM in the access environment of the frame specified by the stack descriptor POS, and then returns from POS with that value. If FLG is not NIL and POS is a stack pointer, then POS is released. The definition of RETEVAL is equivalent to (ENVEVAL FORM POS (STKNTH -1 POS) FLG T), but RETEVAL does not create a stack pointer. (RETAPPLY(RETAPPLY (Function) NIL NIL ("11") 7) POS FN ARGS FLG) [Function] Like RETEVAL but applies FN to ARGS. Releasing and Reusing Stack Pointers 1 The following functions and variables are used for manipulating stack pointers: (STACKP(STACKP (Function) NIL NIL ("11") 7) X) [Function] Returns X if X is a stack pointer, otherwise returns NIL. (RELSTK(RELSTK (Function) NIL NIL ("11") 7) POS) [Function] Release the stack pointer POS (see below). If POS is not a stack pointer, does nothing. Returns POS. (RELSTKP(RELSTKP (Function) NIL NIL ("11") 7) X) [Function] Returns T is X is a released stack pointer, NIL otherwise. (CLEARSTK(CLEARSTK (Function) NIL NIL ("11") 7) FLG) [Function] If FLG is T, returns a list of all the active (unreleased) stack pointers. If FLG is NIL, this call is a no-op. The abillity to clear all stack pointers is inconsistent with the modularity implicit in a multi processing environment. CLEARSTKLST(CLEARSTKLST (Variable) NIL NIL ("11") 7) [Variable] A variable used by the top-level executive. Every time the top-level executive is re-entered (e.g., following errors, or Control-D), CLEARSTKLST is checked. If its value is T, all active stack pointers are released using CLEARSTK. If its value is a list, then all stack pointers on that list are released. If its value is NIL, nothing is released. CLEARSTKLST is initially T. NOCLEARSTKLST(NOCLEARSTKLST (Variable) NIL NIL ("11") 7) [Variable] A variable used by the top-level executive. If CLEARSTKLST is T (see above) all active stack pointers except those on NOCLEARSTKLST are released. NOCLEARSTKLST is initially NIL. Creating a single stack pointer can cause the retention of a large amount of stack space. Furthermore, this space will not be freed until the next garbage collection, even if the stack pointer is no longer being used, unless the stack pointer is explicitly released or reused. If there is sufficient amount of stack space tied up in this fashion, a STACK OVERFLOW condition can occur, even in the simplest of computations. For this reason, you should consider releasing a stack pointer when the environment referenced by the stack pointer is no longer needed. The effects of releasing a stack pointer are: 1. The link between the stack pointer and the stack is broken by setting the contents of the stack pointer to the released mark. A released stack pointer prints as #ADR/#0. 2. If this stack pointer was the last remaining reference to a frame extension; that is, if no other stack pointer references the frame extension and the extension is not contained in the active control or access chain, then the extension may be reclaimed, and is reclaimed immediately. The process repeats for the access and control chains of the reclaimed extension so that all stack space that was reachable only from the released stack pointer is reclaimed. A stack pointer may be released using the function RELSTK, but there are some cases for which RELSTK is not sufficient. For example, if a function contains a call to RETFROM in which a stack pointer was used to specify where to return to, it would not be possible to simultaneously release the stack pointer. (A RELSTK appearing in the function following the call to RETFROM would not be executed!) To permit release of a stack pointer in this situation, the stack functions that relinquish control have optional flag arguments to denote whether or not a stack pointer is to be released (AFLG and CFLG). Note that in this case releasing the stack pointer will not cause the stack space to be reclaimed immediately because the frame referenced by the stack pointer will have become part of the active environment. Another way to avoid creating new stack pointers is to reuse stack pointers that are no longer needed. The stack functions that create stack pointers (STKPOS, STKNTH, and STKSCAN) have an optional argument that is a stack pointer to reuse. When a stack pointer is reused, two things happen. First the stack pointer is released (see above). Then the pointer to the new frame extension is deposited in the stack pointer. The old stack pointer (with its new contents) is returned as the value of the function. Note that the reused stack pointer will be released even if the function does not find the specified frame. Even if stack pointers are explicitly being released, creating many stack pointers can cause a garbage collection of stack pointer space. Thus, if your application requires creating many stack pointers, you definitely should take advantage of reusing stack pointers. Backtrace Functions 1 The following functions perform a backtrace, printing information about every frame on the stack. Arguments allow only backtracing a selected range of the stack, skipping selected frames, and printing different amounts of information about each frame. (BACKTRACE(BACKTRACE (Function) NIL NIL ("11") 8) IPOS EPOS FLAGS FILE PRINTFN) [Function] Performs a backtrace beginning at the frame specified by the stack descriptor IPOS, and ending with the frame specified by the stack descriptor EPOS. FLAGS is a number in which the options of the BACKTRACE are encoded. If a bit is set, the corresponding information is included in the backtrace. 1Q - print arguments of non-SUBRs 2Q - print temporaries of the interpreter 4Q - print SUBR arguments and local variables 10Q - omit printing of UNTRACE: and function names 20Q - follow access chain instead of control chain 40Q - print temporaries, i.e. the blips (see the stack and interpreter section below) For example: If FLAGS = 47Q, everything is printed. If FLAGS = 21Q, follows the access chain, prints arguments. FILE is the file that the backtrace is printed to. FILE must be open. PRINTFN is used when printing the values of variables, temporaries, blips, etc. PRINTFN = NIL defaults to PRINT. (BAKTRACE(BAKTRACE (Function) NIL NIL ("11") 9) IPOS EPOS SKIPFNS FLAGS FILE) [Function] Prints a backtrace from IPOS to EPOS onto FILE. FLAGS specifies the options of the backtrace, e.g., do/don't print arguments, do/don't print temporaries of the interpreter, etc., and is the same as for BACKTRACE. SKIPFNS is a list of functions. As BAKTRACE scans down the stack, the stack name of each frame is passed to each function in SKIPFNS, and if any of them returnS non-NIL, POS is skipped (including all variables). BAKTRACE collapses the sequence of several function calls corresponding to a call to a system package into a single function using BAKTRACELST as described below. For example, any call to the editor is printed as **EDITOR**, a break is printed as **BREAK**, etc. BAKTRACE is used by the BT, BTV, BTV+, BTV*, and BTV! break commands, with FLAGS = 0, 1, 5, 7, and 47Q respectively. If SYSPRETTYFLG = T, the values arguments and local variables will be prettyprinted. BAKTRACELST(BAKTRACELST (Variable) NIL NIL ("11") 9) [Variable] Used to tell BAKTRACE (therefore, the BT, BTV, etc. commands) to abbreviate various sequences of function calls on the stack by a single key, e.g. **BREAK**, **EDITOR**, etc. Each entry on BAKTRACELST is a list of the form (FRAMENAME KEY . PATTERN) or (FRAMENAME (KEY1 . PATTERN1) ... (KEYN . PATTERNN)), where a pattern is a list of elements that are either atoms, which match a single frame, or lists, which are interpreted as a list of alternative patterns, e.g. (PROGN **BREAK** EVAL ((ERRORSET BREAK1A BREAK1) (BREAK1))) BAKTRACE operates by scanning up the stack and, at each point, comparing the current frame name, with the frame names on BAKTRACELST, i.e. it does an ASSOC. If the frame name does appear, BAKTRACE attempts to match the stack as of that point with (one of) the patterns. If the match is successful, BAKTRACE prints the corresponding key, and continues with where the match left off. If the frame name does not appear, or the match fails, BAKTRACE simply prints the frame name and continues with the next higher frame (unless the SKIPFNS applied to the frame name are non-NIL as described above). Matching is performed by comparing symbols in the pattern with the current frame name, and matching lists as patterns, i.e. sequences of function calls, always working up the stack. For example, either of the sequence of function calls ... BREAK1 BREAK1A ERRORSET EVAL PROGN ... or ... BREAK1 EVAL PROGN ... would match with the sample entry given above, causing **BREAK** to be printed. Special features: f The symbol & can be used to match any frame. f The pattern - can be used to match nothing. - is useful for specifying an optional match, e.g. the example above could also have been written as (PROGN **BREAK** EVAL ((ERRORSET BREAK1A) -) BREAK1). f It is not necessary to provide in the pattern for matching dummy frames, i.e. frames for which DUMMYFRAMEP (see below) is true. When working on a match, the matcher automatically skips over these frames when they do not match. f If a match succeeds and the KEY is NIL, nothing is printed. For example, (*PROG*LAM NIL EVALA *ENV). This sequence will occur following an error which then causes a break if some of the function's arguments are LOCALVARS. Other Stack Functions (DUMMYFRAMEP(DUMMYFRAMEP (Function) NIL NIL ("11") 10) POS) [Function] Returns T if you never wrote a call to the function at POS, e.g. in Interlisp-10, DUMMYFRAMEP is T for *PROG*LAM, *ENV*, and FOOBLOCK frames (see the Block Compiling section of Chapter 18). REALFRAMEP and REALSTKNTH can be used to write functions which manipulate the stack and work on either interpreted or compiled code: (REALFRAMEP(REALFRAMEP (Function) NIL NIL ("11") 10) POS INTERPFLG) [Function] Returns POS if POS is a real frame, i.e. if POS is not a dummy frame and POS is a frame that does not disappear when compiled (such as COND); otherwise NIL. If INTERPFLG = T, returns T if POS is not a dummy frame. For example, if (STKNAME POS) = COND, (REALFRAMEP POS) is NIL, but (REALFRAMEP POS T) is T. (REALSTKNTH(REALFRAMEP (Function) NIL NIL ("11") 10) N POS INTERPFLG OLDPOS) [Function] Returns a stack pointer to the Nth (or -Nth) frames for which (REALFRAMEP POS INTERPFLG) is POS. (MAPDL(REALFRAMEP (Function) NIL NIL ("11") 10) MAPDLFN MAPDLPOS) [Function] Starts at MAPDLPOS and applies the function MAPDLFN to two arguments (the frame name and a stack pointer to the frame), for each frame until the top of the stack is reached. Returns NIL. For example, [MAPDL (FUNCTION (LAMBDA (X POS) (if (IGREATERP (STKNARGS POS) 2) then (PRINT X)] will print all functions of more than two arguments. (SEARCHPDL(SEARCHPDL (Function) NIL NIL ("11") 11) SRCHFN SRCHPOS) [Function] Like MAPDL, but searches the stack starting at position SRCHPOS until it finds a frame for which SRCHFN, a function of two arguments applied to the name of the frame and the frame itself, is not NIL. Returns (NAME . FRAME) if such a frame is found, otherwise NIL. The Stack and the Interpreter 1 In addition to the names and values of arguments for functions, information regarding partially-evaluated expressions is kept on the push-down list. For example, consider the following definition of the function FACT (intentionally faulty): (FACT [LAMBDA (N) (COND ((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N]) In evaluating the form (FACT 1), as soon as FACT is entered, the interpreter begins evaluating the implicit PROGN following the LAMBDA. The first function entered in this process is COND. COND begins to process its list of clauses. After calling ZEROP and getting a NIL value, COND proceeds to the next clause and evaluates T. Since T is true, the evaluation of the implicit PROGN that is the consequent of the T clause is begun. This requires calling the function ITIMES. However before ITIMES can be called, its arguments must be evaluated. The first argument is evaluated by retrieving the current binding of N from its value cell; the second involves a recursive call to FACT, and another implicit PROGN, etc. At each stage of this process, some portion of an expression has been evaluated, and another is awaiting evaluation. The output below (from Interlisp-10) illustrates this by showing the state of the push-down list at the point in the computation of (FACT 1) when the unbound atom L is reached. FACT(1) u.b.a. L {in FACT} in ((ZEROP NO L) (L broken) :BTV! *TAIL* (L) *ARG1 (((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N))))) COND *FORM* (COND ((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N))))) *TAIL* ((COND ((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N)))))) N 0 FACT *FORM* (FACT (SUB1 N)) *FN* ITIMES *TAIL* ((FACT (SUB1 N))) *ARGVAL* 1 *FORM* (ITIMES N (FACT (SUB1 N))) *TAIL* ((ITIMES N (FACT (SUB1 N)))) *ARG1 (((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N))))) COND *FORM* (COND ((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N))))) *TAIL* ((COND ((ZEROP N) L) (T (ITIMES N (FACT (SUB1 N)))))) N 1 FACT **TOP** Internal calls to EVAL, e.g., from COND and the interpreter, are marked on the push-down list by a special mark or blip which the backtrace prints as *FORM*. The genealogy of *FORM*'s is thus a history of the computation. Other temporary information stored on the stack by the interpreter includes the tail of a partially evaluated implicit PROGN (e.g., a cond clause or lambda expression) and the tail of a partially evaluated form (i.e., those arguments not yet evaluated), both indicated on the backtrace by *TAIL*, the values of arguments that have already been evaluated, indicated by *ARGVAL*, and the names of functions waiting to be called, indicated by *FN*. *ARG1, ..., *ARGn are used by the backtrace to indicate the (unnamed) arguments to SUBRs. Note that a function is not actually entered and does not appear on the stack, until its arguments have been evaluated (except for nlambda functions, of course). Also note that the *ARG1, *FORM*, *TAIL*, etc. bindings comprise the actual working storage. In other words, in the above example, if a (lower) function changed the value of the *ARG1 binding, the COND would continue interpreting the new binding as a list of COND clauses. Similarly, if the *ARGVAL* binding were changed, the new value would be given to ITIMES as its first argument after its second argument had been evaluated, and ITIMES was actually called. *FORM*, *TAIL*, *ARGVAL*, etc., do not actually appear as variables on the stack, i.e., evaluating *FORM* or calling STKSCAN to search for it will not work. However, the functions BLIPVAL, SETBLIPVAL, and BLIPSCAN described below are available for accessing these internal blips. These functions currently know about four different types of blips: *FN* The name of a function about to be called *ARGVAL* An argument for a function about to be called *FORM* A form in the process of evaluation *TAIL* The tail of a COND clause, implicit PROGN, PROG, etc. (BLIPVAL(BLIPVAL (Function) NIL NIL ("11") 12) BLIPTYP IPOS FLG) [Function] Returns the value of the specified blip of type BLIPTYP. If FLG is a number N, finds the Nth blip of the desired type, searching the control chain beginning at the frame specified by the stack descriptor IPOS. If FLG is NIL, 1 is used. If FLG is T, returns the number of blips of the specified type at IPOS. (SETBLIPVAL(SETBLIPVAL (Function) NIL NIL ("11") 12) BLIPTYP IPOS N VAL) [Function] Sets the value of the specified blip of type BLIPTYP. Searches for the Nth blip of the desired type, beginning with the frame specified by the stack descriptor IPOS, and following the control chain. (BLIPSCAN(BLIPSCAN (Function) NIL NIL ("11") 13) BLIPTYP IPOS) [Function] Returns a stack pointer to the frame in which a blip of type BLIPTYP is located. Search begins at the frame specified by the stack descriptor IPOS and follows the control chain. Generators 1 A generator is like a subroutine except that it retains information about previous times it has been called. Some of this state may be data (for example, the seed in a random number generator), and some may be in program state (as in a recursive generator which finds all the atoms in a list structure). For example, if LISTGEN is defined by: (DEFINEQ (LISTGEN (L) (if L then (PRODUCE (CAR L)) (LISTGEN (CDR L)))) we can use the function GENERATOR (described below) to create a generator that uses LISTGEN to produce the elements of a list one at a time, e.g., (SETQ GR (GENERATOR (LISTGEN '(A B C)))) creates a generator, which can be called by (GENERATE GR) to produce as values on successive calls, A, B, C. When GENERATE (not GENERATOR) is called the first time, it simply starts evaluating (LISTGEN '(A B C)). PRODUCE gets called from LISTGEN, and pops back up to GENERATE with the indicated value after saving the state. When GENERATE gets called again, it continues from where the last PRODUCE left off. This process continues until finally LISTGEN completes and returns a value (it doesn't matter what it is). GENERATE then returns GR itself as its value, so that the program that called GENERATE can tell that it is finished, i.e., there are no more values to be generated. (GENERATOR(GENERATOR (Function) NIL NIL ("11") 13) FORM COMVAR) [NLambda Function] An nlambda function that creates a generator which uses FORM to compute values. GENERATOR returns a generator handle which is represented by a dotted pair of stack pointers. COMVAR is optional. If its value (EVAL of) is a generator handle, the list structure and stack pointers will be reused. Otherwise, a new generator handle will be constructed. GENERATOR compiles open. (PRODUCE(PRODUCE (Function) NIL NIL ("11") 13) VAL) [Function] Used from within a generator to return VAL as the value of the corresponding call to GENERATE. (GENERATE(GENERATE (Function) NIL NIL ("11") 13) HANDLE VAL) [Function] Restarts the generator represented by HANDLE. VAL is returned as the value of the PRODUCE which last suspended the operation of the generator. When the generator runs out of values, GENERATE returns HANDLE itself. Examples: The following function will go down recursively through a list structure and produce the atoms in the list structure one at a time. (DEFINEQ (LEAVESG (L) (if (ATOM L) then (PRODUCE L) else (LEAVESG (CAR L)) (if (CDR L) then (LEAVESG (CDR L)] The following function prints each of these atoms as it appears. It illustrates how a loop can be set up to use a generator. (DEFINEQ (PLEAVESG1 (L) (PROG (X LHANDLE) (SETQ LHANDLE (GENERATOR (LEAVESG L))) LP (SETQ X (GENERATE LHANDLE)) (if (EQ X LHANDLE) then (RETURN NIL)) (PRINT X) (GO LP))] The loop terminates when the value of the generator is EQ to the dotted pair which is the value produced by the call to GENERATOR. A CLISP iterative operator, OUTOF, is provided which makes it much easier to write the loop in PLEAVESG1. OUTOF (or outof) can precede a form which is to be used as a generator. On each iteration, the iteration variable will be set to successive values returned by the generator; the loop will be terminated automatically when the generator runs out. Therefore, the following is equivalent to the above program PLEAVESG1: (DEFINEQ (PLEAVESG2 (L) (for X outof (LEAVESG L) do (PRINT X))] Here is another example; the following form will print the first N atoms. (for X outof (MAPATOMS (FUNCTION PRODUCE)) as I from 1 to N do (PRINT X)) Coroutines 1 This package provides facilities for the creation and use of fully general coroutine structures. It uses a stack pointer to preserve the state of a coroutine, and allows arbitrary switching between N different coroutines, rather than just a call to a generator and return. This package is slightly more efficient than the generator package described above, and allows more flexibility on specification of what to do when a coroutine terminates. (COROUTINE(COROUTINE (Function) NIL NIL ("11") 14) CALLPTR COROUTPTR COROUTFORM ENDFORM) [NLambda Function] This nlambda function is used to create a coroutine and initialize the linkage. CALLPTR and COROUTPTR are the names of two variables, which will be set to appropriate stack pointers. If the values of CALLPTR or COROUTPTR are already stack pointers, the stack pointers will be reused. COROUTFORM is the form which is evaluated to start the coroutine; ENDFORM is a form to be evaluated if COROUTFORM actually returns when it runs out of values. COROUTINE compiles open. (RESUME(RESUME (Function) NIL NIL ("11") 15) FROMPTR TOPTR VAL) [Function] Used to transfer control from one coroutine to another. FROMPTR should be the stack pointer for the current coroutine, which will be smashed to preserve the current state. TOPTR should be the stack pointer which has preserved the state of the coroutine to be transferred to, and VAL is the value that is to be returned to the latter coroutine as the value of the RESUME which suspended the operation of that coroutine. For example, the following is the way one might write the LEAVES program using the coroutine package: (DEFINEQ (LEAVESC (L COROUTPTR CALLPTR) (if (ATOM L) then (RESUME COROUTPTR CALLPTR L) else (LEAVESC (CAR L) COROUTPTR CALLPTR) (if (CDR L) then (LEAVESC (CDR L) COROUTPTR CALLPTR))))] A function PLEAVESC which uses LEAVESC can be defined as follows: (DEFINEQ (PLEAVESC (L) (bind PLHANDLE LHANDLE first (COROUTINE PLHANDLE LHANDLE (LEAVESC L LHANDLE PLHANDLE) (RETFROM 'PLEAVESC)) do (PRINT (RESUME PLHANDLE LHANDLE))))] By RESUMEing LEAVESC repeatedly, this function will print all the leaves of list L and then return out of PLEAVESC via the RETFROM. The RETFROM is necessary to break out of the non-terminating do-loop. This was done to illustrate the additional flexibility allowed through the use of ENDFORM. We use two coroutines working on two trees in the example EQLEAVES, defined below. EQLEAVES tests to see whether two trees have the same leaf set in the same order, e.g., (EQLEAVES '(A B C) '(A B (C))) is true. (DEFINEQ (EQLEAVES (L1 L2) (bind LHANDLE1 LHANDLE2 PE EL1 EL2 first (COROUTINE PE LHANDLE1 (LEAVESC L1 LHANDLE1 PE) 'NO-MORE) (COROUTINE PE LHANDLE2 (LEAVESC L2 LHANDLE2 PE) 'NO-MORE) do (SETQ EL1 (RESUME PE LHANDLE1)) (SETQ EL2 (RESUME PE LHANDLE2)) (if (NEQ EL1 EL2) then (RETURN NIL)) repeatuntil (EQ EL1 'NO-MORE) finally (RETURN T)))] Possibilities Lists 1 A possibilities list is the interface between a generator and a consumer. The possibilities list is initialized by a call to POSSIBILITIES, and elements are obtained from it by using TRYNEXT. By using the spaghetti stack to maintain separate environments, this package allows a regime in which a generator can put a few items in a possibilities list, suspend itself until they have been consumed, and be subsequently aroused and generate some more. (POSSIBILITIES FORM) [NLambda Function] This nlambda function is used for the initial creation of a possibilities list. FORM will be evaluated to create the list. It should use the functions NOTE and AU-REVOIR described below to generate possibilities. Normally, one would set some variable to the possibilities list which is returned, so it can be used later, e.g.: (SETQ PLIST (POSSIBILITIES (GENERFN V1 V2))). POSSIBILITIES compiles open. (NOTE(NOTE (Function) NIL NIL ("11") 16) VAL LSTFLG) [Function] Used within a generator to put items on the possibilities list being generated. If LSTFLG is equal to NIL, VAL is treated as a single item. If LSTFLG is non-NIL, then the list VAL is NCONCed on the end of the possibilities list. Note that it is perfectly reasonable to create a possibilities list using a second generator, and NOTE that list as possibilities for the current generator with LSTFLG equal to T. The lower generator will be resumed at the appropriate point. (AU-REVOIR(AU-REVOIR (Function) NIL NIL ("11") 16) VAL) [NoSpread Function] Puts VAL on the possibilities list if it is given, and then suspends the generator and returns to the consumer in such a fashion that control will return to the generator at the AU-REVOIR if the consumer exhausts the possibilities list. NIL is not put on the possibilities list unless it is explicitly given as an argument to AU-REVOIR, i.e., (AU-REVOIR) and (AU-REVOIR NIL) are not the same. AU-REVOIR and ADIEU are lambda nospreads to enable them to distinguish these two cases. (ADIEU(ADIEU (Function) NIL NIL ("11") 16) VAL) [NoSpread Function] Like AU-REVOIR but releases the generator instead of suspending it. (TRYNEXT(TRYNEXT (Function) NIL NIL ("11") 16) PLST ENDFORM VAL) [NLambda Function] This nlambda function allows a consumer to use a possibilities list. It removes the first item from the possibilities list named by PLST (i.e. PLST must be an atom whose value is a possiblities list), and returns that item, provided it is not a generator handle. If a generator handle is encountered, the generator is reawakened. When it returns a possibilities list, this list is added to the front of the current list. When a call to TRYNEXT causes a generator to be awakened, VAL is returned as the value of the AU-REVOIR which put that generator to sleep. If PLST is empty, it evaluates ENDFORM in the caller's environment. TRYNEXT compiles open. (CLEANPOSLST(CLEANPOSLST (Function) NIL NIL ("11") 16) PLST) [Function] This function is provided to release any stack pointers which may be left in the PLST which was not used to exhaustion. For example, FIB is a generator for fibonnaci numbers. It starts out by NOTEing its two arguments, then suspends itself. Thereafter, on being re-awakened, it will NOTE two more terms in the series and suspends again. PRINTFIB uses FIB to print the first N fibonacci numbers. (DEFINEQ (FIB (F1 F2) (do (NOTE F1) (NOTE F2) (SETQ F1 (IPLUS F1 F2)) (SETQ F2 (IPLUS F1 F2)) (AU-REVOIR)] Note that this AU-REVOIR just suspends the generator and adds nothing to the possibilities list except the generator. (DEFINEQ (PRINTFIB (N) (PROG ((FL (POSSIBILITIES (FIB 0 1)))) (RPTQ N (PRINT (TRYNEXT FL))) (CLEANPOSLST FL)] Note that FIB itself will never terminate. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "11-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "11-" "")) (222 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "11-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "11-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (102 612 510 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "11-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "11-" "")) (222 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (48 612 564 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))))),**,0052$$5~x~,<<,6,,002$$2HfH,~~,l~30BT0 +T0 +T1EVENT-T@ PAGEHEADING RIGHTPAGE/,/A PAGEHEADING RIGHTPAGET,ZZ/HH,<<,HH,@ PAGEHEADINGLEFTBACKT/TITAN +TIMESROMAN +PALATINO PALATINO PALATINO TITAN TITAN TITAN MODERN +CLASSIC +CLASSIC + HELVETICACLASSIC +MODERNMODERN +  IM.CHAP.GETFNMODERN +%  HRULE.GETFNMODERND5Z  HRULE.GETFNY!oy3F! h1k < &   HRULE.GETFNN l +)d +S  m%  HRULE.GETFN $IM.INDEX.GETFNCLASSIC + + U4+^7( '$IM.INDEX.GETFNCLASSIC + +  ?%/ 9&7' +E%IM.INDEX.GETFNCLASSIC + +F +(IM.INDEX.GETFNCLASSIC + + 1  +(IM.INDEX.GETFNCLASSIC + + ) ,%0 +%"  HRULE.GETFN k?]-  %IM.INDEX.GETFNCLASSIC + +  's; 'IM.INDEX.GETFNCLASSIC + + 0  $IM.INDEX.GETFNCLASSIC + +  .C" +(IM.INDEX.GETFNCLASSIC + + -D!  'IM.INDEX.GETFNCLASSIC + +  +C- +IM.INDEX.GETFNCLASSIC + +  C-6&IM.INDEX.GETFNCLASSIC + + h 'IM.INDEX.GETFNCLASSIC + +)%IM.INDEX.GETFNCLASSIC + + 7'  HRULE.GETFN W%IM.INDEX.GETFNCLASSIC + +     +![2"&IM.INDEX.GETFNCLASSIC + +     !&#IM.INDEX.GETFNCLASSIC + +   +W  %Q  %IM.INDEX.GETFNCLASSIC + +    +J &IM.INDEX.GETFNCLASSIC + +      HRULE.GETFN {D%IM.INDEX.GETFNCLASSIC + +  8         *  #IM.INDEX.GETFNCLASSIC + +  %IM.INDEX.GETFNCLASSIC + +    +J!  "&IM.INDEX.GETFNCLASSIC + +    %  HRULE.GETFN P$IM.INDEX.GETFNCLASSIC + +'$IM.INDEX.GETFNCLASSIC + +0%IM.INDEX.GETFNCLASSIC + + &IM.INDEX.GETFNCLASSIC + +D )IM.INDEX.GETFNCLASSIC + /_  +IM.INDEX.GETFNTITAN 0 ' +  1.3%C1<7\6  HRULE.GETFN  'IM.INDEX.GETFNCLASSIC + +    N>) \  *   3 V.0J &IM.INDEX.GETFNCLASSIC + +     R!'} H + B )IM.INDEX.GETFNCLASSIC + f  +   ;q "gS#J9  +! +!d4 +b z +$q   *IM.INDEX.GETFNCLASSIC + +. 9 + +l +)IM.INDEX.GETFNCLASSIC + + ;   +(    +)IM.INDEX.GETFNCLASSIC + +     )IM.INDEX.GETFNCLASSIC + +  + ! 15 (IM.INDEX.GETFNCLASSIC + + ."-+ %  HRULE.GETFN       <17+ )6w>  +$ 8>@%'8>@ oI@B:7IK 9 ++/%&IM.INDEX.GETFNCLASSIC + +  0  r7 +)IM.INDEX.GETFNCLASSIC + +   -X#'IM.INDEX.GETFNPALATINO =K  +  HRULE.GETFN 7 #% 38 ), * 8851@FO (IM.INDEX.GETFNCLASSIC + + 8  : &IM.INDEX.GETFNCLASSIC + +'+'IM.INDEX.GETFNCLASSIC + + &!^   +  ~ )"7? > $ @AJ +  HRULE.GETFN (IM.INDEX.GETFNCLASSIC + +  + Q d A +8 +. %IM.INDEX.GETFNCLASSIC + +  :nfQ2:&(&-B  %1)+V :P +'EE((#  HRULE.GETFN~ -  +QD  . #IM.INDEX.GETFNCLASSIC + + T "; +A (IM.INDEX.GETFNCLASSIC + + 2V    E$IM.INDEX.GETFNCLASSIC + + 6&IM.INDEX.GETFNCLASSIC + +  $$! ( *IM.INDEX.GETFNCLASSIC + +Q# 9X3 ^,* +%z \ No newline at end of file diff --git a/docs/medley-irm/11-VAR-BINDINGS.pdf b/docs/medley-irm/11-VAR-BINDINGS.pdf new file mode 100644 index 00000000..f7ebd770 --- /dev/null +++ b/docs/medley-irm/11-VAR-BINDINGS.pdf @@ -0,0 +1,8234 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5308 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-1)Tj +/TT4 1 Tf +10 0 0 10 303.32 568.2 Tm +(11. VARIABLE BINDINGS AND THE STACK)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +10 0 0 10 54 555.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 531.54 Tm +0.1722 Tw +[(Medley uses deep binding. Every time a function is entered, a basic frame containing the new)]TJ +0 -1.2222 TD +0.05 Tw +[(variables is put on top of the stack. Therefore, any variable reference requires searching the stack for)]TJ +T* +0.0689 Tw +(the first instance of that variable, which makes free variable use somewhat more expensive than in a)Tj +T* +0.0189 Tw +[(shallow binding scheme. On the other hand, spaghetti stack operations are considerably faster. Some)]TJ +T* +0.0633 Tw +(other tricks involving copying freely-referenced variables to higher frames on the stack are also used)Tj +T* +0 Tw +(to speed up the search. )Tj +0 -2 TD +0.0022 Tw +(The basic frames are allocated on a stack; for most user purposes, these frames should be thought of as)Tj +0 -1.2222 TD +0.0533 Tw +(containing the variable names associated with the function call, and the )Tj +/TT10 1 Tf +32.3938 0 TD +0 Tw +(current)Tj +/TT8 1 Tf +3.02 0 TD +0.0533 Tw +[( values for that frame.)]TJ +-35.4138 -1.2222 TD +0.0633 Tw +[(The descriptions of the stack functions in below are presented from this viewpoint. Both interpreted)]TJ +T* +0.0156 Tw +(and compiled functions store both the names and values of variables so that interpreted and compiled)Tj +T* +0.2822 Tw +(functions are compatible and can be freely intermixed, i.e., free variables can be used with no)Tj +/TT12 1 Tf +T* +0 Tw +(SPECVAR)Tj +/TT8 1 Tf +4.2007 0 TD +0.1522 Tw +[( declarations necessary. However, it is possible to )]TJ +/TT10 1 Tf +23.7343 0 TD +0 Tw +(suppress)Tj +/TT8 1 Tf +3.502 0 TD +0.1522 Tw +[( storing of names in compiled)]TJ +-31.4369 -1.2889 TD +0.0189 Tw +(functions, either for efficiency or to avoid a clash, via a )Tj +/TT12 1 Tf +24.5691 0 TD +0 Tw +(LOCALVAR)Tj +/TT8 1 Tf +4.8008 0 TD +0.0189 Tw +[( declaration \(see the Local Variables)]TJ +-29.3699 -1.2889 TD +0.0833 Tw +[(and Special Variables section of Chapter 18\). The names are also very useful in debugging, for they)]TJ +0 -1.2222 TD +0 Tw +(make possible a complete symbolic backtrace in case of error.)Tj +0 -2 TD +0.1189 Tw +(In addition to the binding information, additional information is associated with each function call:)Tj +0 -1.2222 TD +0.2911 Tw +(access information indicating the path to search the basic frames for variable bindings, control)Tj +T* +0.0611 Tw +(information, and temporary results are also stored on the stack in a block called the frame extension.)Tj +T* +0.0311 Tw +(The interpreter also stores information about partially evaluated expressions as described in the Stack)Tj +T* +0 Tw +(and Interpreter section of Chapter 11.)Tj +/TT4 1 Tf +10 0 0 10 54 285 Tm +(Spaghetti Stack)Tj +ET +1 w +54.01 282.29 m +510.01 282.29 l +S +BT +/TT8 1 Tf +9 0 0 9 78 268.34 Tm +0.2989 Tw +(The Bobrow/Wegbreit paper, A Model and Stack Implementation for Multiple Environments)Tj +T* +0 Tw +(\()Tj +/TT10 1 Tf +0.333 0 TD +0.1144 Tw +(Communications of the ACM,)Tj +/TT8 1 Tf +12.5279 0 TD +[( Vol. 16, 10, October 1973.\), describes an access and control mechanism)]TJ +-12.8609 -1.2222 TD +0.15 Tw +[(more general than a simple linear stack. The access and control mechanism used by Interlisp is a)]TJ +T* +0.0189 Tw +[(slightly modified version of the one proposed by Bobrow and Wegbreit. This mechanism is called the)]TJ +T* +0 Tw +(spaghetti stack.)Tj +0 -2 TD +0.0533 Tw +(The spaghetti system presents the access and control stack as a data structure composed of frames.)Tj +0 -1.2222 TD +0.1311 Tw +[(The functions described below operate on this structure. These primitives allow user functions to)]TJ +T* +0.4878 Tw +[(manipulate the stack in a machine independent way. Backtracking, coroutines, and more)]TJ +T* +0 Tw +(sophisticated control schemes can be easily implemented with these primitives.)Tj +0 -2 TD +0.0622 Tw +(The evaluation of a function requires the allocation of storage to hold the values of its local variables)Tj +0 -1.2222 TD +0.0001 Tc +0.0032 Tw +(during the computation. In addition to variable bindings, an activation of a function requires a return)Tj +T* +0 Tc +0.2978 Tw +(link \(indicating where control is to go after the completion of the computation\) and room for)Tj +T* +0.0589 Tw +[(temporaries needed during the computation. In the spaghetti system, one stack is used for storing)]TJ +T* +0.0622 Tw +(all this information, but it is best to view this stack as a tree of linked objects called frame extensions)Tj +T* +0 Tw +(\(or simply frames\).)Tj +0 -2 TD +0.1467 Tw +(A frame extension is a variable sized block of storage containing a frame name, a pointer to some)Tj +0 -1.2222 TD +0.01 Tw +(variable bindings \(the )Tj +/TT12 1 Tf +9.9646 0 TD +0 Tw +(BLINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.01 Tw +(\), and two pointers to other frame extensions \(the )Tj +/TT12 1 Tf +22.1252 0 TD +0 Tw +(ALINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.01 Tw +[( and )]TJ +/TT12 1 Tf +2.2129 0 TD +0 Tw +(CLINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.01 Tw +[(\). In)]TJ +-43.3041 -1.2889 TD +0.0433 Tw +(addition to these components, a frame extension contains other information \(such as temporaries and)Tj +0 -1.2222 TD +0 Tw +(reference counts\) that does not interest us here.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 5942 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-2)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0289 Tw +[(The block of storage holding the variable bindings is called a basic frame. A basic frame is essentially)]TJ +0 -1.2222 TD +0.0533 Tw +[(an array of pairs, each of which contains a variable name and its value. The reason frame extensions)]TJ +T* +0.15 Tw +(point to basic frames \(rather than just having them built in\) is so that two frame extensions can)Tj +T* +0 Tw +(share a common basic frame. This allows two processes to communicate via shared variable bindings.)Tj +0 -2 TD +0.0544 Tw +(The chain of frame extensions which can be reached via the successive )Tj +/TT12 1 Tf +31.9439 0 TD +0 Tw +(ALINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0544 Tw +(s from a given frame is)Tj +-34.9444 -1.2889 TD +0.0833 Tw +[(called the access chain of the frame. The first frame in the access chain is the starting frame. The)]TJ +0 -1.2222 TD +0 Tw +(chain through successive )Tj +/TT12 1 Tf +11.3154 0 TD +(CLINK)Tj +/TT8 1 Tf +3.0005 0 TD +(s is called the control chain.)Tj +-14.3159 -2.0667 TD +0.13 Tw +(A frame extension completely specifies the variable bindings and control information necessary for)Tj +0 -1.2222 TD +0.1011 Tw +[(the evaluation of a function. Whenever a function \(or in fact, any form which generally binds local)]TJ +T* +0 Tw +(variables\) is evaluated, it is associated with some frame extension.)Tj +0 -2 TD +0.1089 Tw +[(In the beginning there is precisely one frame extension in existence. This is the frame in which the)]TJ +0 -1.2222 TD +0 Tw +(top-level call to the interpreter is being run. This frame is called the top-level frame.)Tj +0 -2 TD +0.14 Tw +(Since precisely one function is being executed at any instant, exactly one frame is distinguished as)Tj +0 -1.2222 TD +0.05 Tw +[(having the control bubble in it. This frame is called the active frame. Initially, the top-level frame)]TJ +T* +0.0067 Tw +[(is the active frame. If the computation in the active frame invokes another function, a new basic frame)]TJ +T* +0.0956 Tw +[(and frame extension are built. The frame name of this basic frame will be the name of the function)]TJ +T* +0.1911 Tw +[(being called. The )]TJ +/TT12 1 Tf +8.7654 0 TD +0 Tw +(ALINK)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT12 1 Tf +0.6911 0 TD +(BLINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.1911 Tw +(, and )Tj +/TT12 1 Tf +2.8251 0 TD +0 Tw +(CLINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.1911 Tw +[( of the new frame all depend on precisely how the)]TJ +-21.2831 -1.2889 TD +0.0367 Tw +[(function is invoked. The new function is then run in this new frame by passing control to that frame,)]TJ +0 -1.2222 TD +0 Tw +(i.e., it is made the active frame.)Tj +0 -2 TD +0.0333 Tw +(Once the active computation has been completed, control normally returns to the frame pointed to by)Tj +0 -1.2222 TD +0 Tw +(the )Tj +/TT12 1 Tf +1.6372 0 TD +(CLINK)Tj +/TT8 1 Tf +3.0005 0 TD +( of the active frame. That is, the frame in the )Tj +/TT12 1 Tf +19.9341 0 TD +(CLINK)Tj +/TT8 1 Tf +3.0005 0 TD +( becomes the active frame.)Tj +-27.5723 -2.0667 TD +0.0444 Tw +(In most cases, the storage associated with the basic frame and frame extension just abandoned can be)Tj +0 -1.2222 TD +0.0967 Tw +[(reclaimed. However, it is possible to obtain a pointer to a frame extension and to hold on to this)]TJ +T* +0.0411 Tw +[(frame even after it has been exited. This pointer can be used later to run another computation in that)]TJ +T* +0 Tw +(environment, or even continue the exited computation.)Tj +0 -2 TD +0.0333 Tw +[(A separate data type, called a stack pointer, is used for this purpose. A stack pointer is just a cell that)]TJ +0 -1.2222 TD +0.6078 Tw +[(literally points to a frame extension. Stack pointers print as )]TJ +/TT12 1 Tf +34.035 0 TD +0 Tw +(#ADR/FRAMENAME)Tj +/TT8 1 Tf +8.4014 0 TD +0.6078 Tw +(, e.g.,)Tj +/TT12 1 Tf +-42.4364 -1.2889 TD +0 Tw +(#1,13636/COND)Tj +/TT8 1 Tf +7.8013 0 TD +0.0167 Tw +[(. Stack pointers are returned by many of the stack manipulating functions described)]TJ +-7.8013 -1.2889 TD +0.2167 Tw +[(below. Except for certain abbreviations \(such as the frame with such-and-such a name\), stack)]TJ +0 -1.2222 TD +0.0811 Tw +[(pointers are the only way you can reference a frame extension. As long as you have a stack pointer)]TJ +T* +0.1022 Tw +(which references a frame extension, that frame extension \(and all those that can be reached from it\))Tj +T* +0 Tw +(will not be garbage collected.)Tj +0 -2 TD +0.1 Tw +(Two stack pointers referencing the same frame extension are )Tj +/TT10 1 Tf +27.9137 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1 Tw +[( necessarily )]TJ +/TT12 1 Tf +5.5647 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.1 Tw +(, i.e., )Tj +/TT12 1 Tf +2.47 0 TD +0.2411 Tw +(\(EQ \(STKPOS)Tj +-38.4816 -1.2889 TD +0.0956 Tw +(FOO\) \(STKPOS FOO\)\) = NIL)Tj +/TT8 1 Tf +15.9848 0 TD +0.04 Tw +[(. However, )]TJ +/TT12 1 Tf +5.4999 0 TD +0 Tw +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +0.04 Tw +[( can be used to test if two different stack pointers)]TJ +-23.2849 -1.2889 TD +0 Tw +(reference the same frame extension \(see the Equality Predicates section of Chapter 9\).)Tj +0 -2 TD +0.0611 Tw +(It is possible to evaluate a form with respect to an access chain other than the current one by using a)Tj +0 -1.2222 TD +0.1233 Tw +[(stack pointer to refer to the head of the access chain desired. Note, however, that this can be very)]TJ +T* +0.1256 Tw +[(expensive when using a shallow binding scheme such as that in Interlisp-10. When evaluating the)]TJ +T* +0.1511 Tw +(form, since all references to variables under the shallow binding scheme go through the variables)Tj +T* +0.0033 Tw +(value cell, the values in the value cells must be adjusted to reflect the values appropriate to the desired)Tj +T* +0.01 Tw +[(access chain. This is done by changing all the bindings on the current access chain \(all the name-value)]TJ +T* +0.0122 Tw +[(pairs\) so that they contain the value current at the time of the call. Then along the new access path, all)]TJ +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +16 0 obj +<< +/Length 4903 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-3)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0267 Tw +(bindings are made to contain the previous value of the variable, and the current value is placed in the)Tj +0 -1.2222 TD +0.0389 Tw +[(value cell. For that part of the access path which is shared by the old and new chain, no work has to)]TJ +T* +0.1111 Tw +[(be done. The context switching time, i.e. the overhead in switching from the current, active, access)]TJ +T* +0.1989 Tw +(chain to another one, is directly proportional to the size of the two branches that are not shared)Tj +T* +0.0278 Tw +[(between the access contexts. This cost should be remembered in using generators and coroutines \(see)]TJ +T* +0 Tw +(the Generators section below\).)Tj +/TT4 1 Tf +10 0 0 10 54 492.2 Tm +(Stack Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 489.49 m +510.01 489.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 475.54 Tm +0.0689 Tw +(In the descriptions of the stack functions below, when we refer to an argument as a stack descriptor,)Tj +T* +0 Tw +(we mean that it is one of the following:)Tj +3.9189 -2 TD +0.0322 Tw +[(A )32.2(stack )32.2(pointer)-666.4(An object that points to a frame on the stack. Stack pointers are returned by)]TJ +7.4144 -1.2222 TD +0 Tw +(many of the stack manipulating functions described below.)Tj +/TT12 1 Tf +-2.4667 -2 TD +(NIL)Tj +/TT8 1 Tf +2.4667 0 TD +(Specifies the active frame; that is, the frame of the stack function itself.)Tj +/TT12 1 Tf +-1.2667 -2.0667 TD +(T)Tj +/TT8 1 Tf +1.2667 0 TD +(Specifies the top-level frame.)Tj +-4.9478 -2.0667 TD +0.0711 Tw +[(A )71.1(symbol)-667(Specifies the first frame \(along the control chain from the active frame\) that)]TJ +4.9478 -1.2222 TD +0 Tw +(has the frame name )Tj +/TT12 1 Tf +8.9268 0 TD +(LITATOM)Tj +/TT8 1 Tf +4.2007 0 TD +(. Equivalent to )Tj +/TT12 1 Tf +6.9302 0 TD +(\(STKPOS LITATOM -1\))Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +-39.5428 -2.0667 TD +0.2578 Tw +[(A )257.8(list )257.8(of )257.8(symbols)-667.8(Specifies the first frame \(along the control chain from the active frame\))]TJ +8.0833 -1.2222 TD +0 Tw +(whose frame name is included in the list.)Tj +-6.0411 -2 TD +(A number )Tj +/TT14 1 Tf +4.7729 0 TD +(N)Tj +/TT8 1 Tf +1.2682 0 TD +0.1933 Tw +(Specifies the )Tj +/TT14 1 Tf +6.1406 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1933 Tw +[(th frame back from the active frame. If )]TJ +/TT14 1 Tf +19.2 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1933 Tw +[( is negative, the)]TJ +-26.5407 -1.2889 TD +0.0233 Tw +[(control chain is followed, otherwise the access chain is followed. Equivalent)]TJ +0 -1.2222 TD +0 Tw +(to )Tj +/TT12 1 Tf +1.1221 0 TD +(\(STKNTH N\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-18.4564 -2.0667 TD +0.1044 Tw +[(In the stack functions described below, the following errors can occur: The error )]TJ +/TT12 1 Tf +37.2713 0 TD +0.2511 Tw +(Illegal stack)Tj +-37.2713 -1.2889 TD +0 Tw +(arg)Tj +/TT8 1 Tf +1.8003 0 TD +0.0667 Tw +[( occurs when a stack descriptor is expected and the supplied argument is either not a legal stack)]TJ +-1.8003 -1.2889 TD +0.0622 Tw +[(descriptor \(i.e., not a stack pointer, symbol, or number\), or is a symbol or number for which there is)]TJ +0 -1.2222 TD +0.0478 Tw +(no corresponding stack frame, e.g., )Tj +/TT12 1 Tf +16.2413 0 TD +0.1144 Tw +(\(STKNTH -1 FOO\))Tj +/TT8 1 Tf +9.8305 0 TD +0.0478 Tw +[( where there is no frame named )]TJ +/TT12 1 Tf +14.602 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0478 Tw +[( in the)]TJ +-42.474 -1.2889 TD +0.2456 Tw +(active control chain or )Tj +/TT12 1 Tf +11.0569 0 TD +0.5911 Tw +(\(STKNTH -10 EVALQT\))Tj +/TT8 1 Tf +13.1842 0 TD +0.2456 Tw +[(. The error )]TJ +/TT12 1 Tf +6.116 0 TD +0.5911 Tw +(Stack pointer has been)Tj +-30.3571 -1.2889 TD +0 Tw +(released)Tj +/TT8 1 Tf +4.8008 0 TD +0.1244 Tw +[( occurs whenever a released stack pointer is supplied as a stack descriptor argument for)]TJ +-4.8008 -1.2889 TD +0 Tw +(any purpose other than as a stack pointer to re-use.)Tj +/TT16 1 Tf +0 -2 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.1533 Tw +[(: The creation of a single stack pointer can result in the retention of a large amount of stack)]TJ +-2.2222 -1.2222 TD +0.1156 Tw +[(space. Therefore, one should try to release stack pointers when they are no longer needed \(see the)]TJ +T* +0 Tw +(Releasing and Reusing Stack Pointers section below\).)Tj +0 -2 TD +0.2778 Tw +(In Lisp there is a fixed ammount of space allocated for the stack. When most of this space is)Tj +0 -1.2222 TD +0.0144 Tw +(exhausted, the )Tj +/TT12 1 Tf +6.6861 0 TD +0.0356 Tw +(STACK OVERFLOW)Tj +/TT8 1 Tf +8.4369 0 TD +0.0144 Tw +[( error occurs and the debugger will be invoked. You will still have a)]TJ +-15.123 -1.2889 TD +0.0978 Tw +(little room on the stack to use inside the debugger. If you use up this last little bit of stack you will)Tj +0 -1.2222 TD +0.2889 Tw +(encounter a hard stack overflow. A hard stack overflow will put you into URaid \(see the)Tj +T* +0 Tw +(documentation on URaid\).)Tj +ET +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT16 19 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +21 0 obj +<< +/Length 8121 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-4)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0 -4.38 TD +(Searching the Stack)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT12 1 Tf +9 0 0 9 150 550.26 Tm +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKPOS)Tj +/F1 1 Tf +10 0 0 10 187.8 550.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.67 550.26 Tm +(FRAMENAME N POS OLDPOS)Tj +/TT12 1 Tf +13.2021 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19248.9([Function])]TJ +-15.6545 -1.8444 TD +0.0222 Tw +(Returns a stack pointer to the )Tj +/TT14 1 Tf +13.3399 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0222 Tw +(th frame with frame name )Tj +/TT14 1 Tf +11.9261 0 TD +0 Tw +(FRAMENAME)Tj +/TT8 1 Tf +5.4009 0 TD +0.0222 Tw +[(. The search begins)]TJ +-31.2669 -1.2889 TD +0.0467 Tw +(with \(and includes\) the frame specified by the stack descriptor )Tj +/TT14 1 Tf +28.2714 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0467 Tw +[(. The search proceeds)]TJ +-30.0717 -1.2889 TD +0.0311 Tw +(along the control chain from )Tj +/TT14 1 Tf +12.9534 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +[( if )]TJ +/TT14 1 Tf +1.1862 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( is negative, or along the access chain if )]TJ +/TT14 1 Tf +17.8137 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( is positive.)]TJ +-34.9538 -1.2889 TD +0 Tw +(If )Tj +/TT14 1 Tf +1.1577 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2378 Tw +[( is )]TJ +/TT12 1 Tf +1.6904 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2378 Tw +[(, -1 is used. Returns a stack pointer to the frame if such a frame exists,)]TJ +-5.2485 -1.2889 TD +0.1989 Tw +(otherwise returns )Tj +/TT12 1 Tf +8.4578 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1989 Tw +[(. If )]TJ +/TT14 1 Tf +2.2666 0 TD +0 Tw +(OLDPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1989 Tw +[( is supplied and is a stack pointer, it is reused. If)]TJ +/TT14 1 Tf +-16.1253 -1.2889 TD +0 Tw +(OLDPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0811 Tw +[( is supplied and is a stack pointer and )]TJ +/TT12 1 Tf +17.6665 0 TD +0 Tw +(STKPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0811 Tw +[( returns )]TJ +/TT12 1 Tf +3.8663 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT14 1 Tf +0.5811 0 TD +(OLDPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0811 Tw +[( is released.)]TJ +-34.716 -1.2889 TD +0 Tw +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(OLDPOS)Tj +/TT8 1 Tf +3.6006 0 TD +( is not a stack pointer it is ignored.)Tj +/TT12 1 Tf +-7.1872 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKNTH)Tj +/F1 1 Tf +10 0 0 10 187.8 444.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.67 444.18 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 196.0709 444.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 198.8509 444.18 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 215.0535 444.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 217.8335 444.18 Tm +(OLDPOS)Tj +/TT12 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25832.3([Function])]TJ +-9.0711 -1.8444 TD +0.2367 Tw +(Returns a stack pointer to the )Tj +/TT14 1 Tf +14.6265 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2367 Tw +(th frame back from the frame specified by the stack)Tj +-15.2266 -1.2889 TD +0 Tw +(descriptor )Tj +/TT14 1 Tf +4.7617 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(. If )Tj +/TT14 1 Tf +1.6699 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is negative, the control chain from )Tj +/TT14 1 Tf +15.5659 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +( is followed. If )Tj +/TT14 1 Tf +6.8154 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is positive the)Tj +-33.6138 -1.2889 TD +0.2311 Tw +[(access chain is followed. If )]TJ +/TT14 1 Tf +13.5654 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2311 Tw +[( equals 0, )]TJ +/TT12 1 Tf +5.0503 0 TD +0 Tw +(STKNTH)Tj +/TT8 1 Tf +3.6006 0 TD +0.2311 Tw +[( returns a stack pointer to )]TJ +/TT14 1 Tf +12.9331 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.2311 Tw +[( \(this)]TJ +-37.5497 -1.2889 TD +0.06 Tw +[(provides a way to copy a stack pointer\). Returns )]TJ +/TT12 1 Tf +22.4511 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.06 Tw +[( if there are fewer than )]TJ +/TT14 1 Tf +10.6295 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.06 Tw +[( frames in)]TJ +-35.481 -1.2889 TD +0.2189 Tw +[(the appropriate chain. If )]TJ +/TT14 1 Tf +12.2859 0 TD +0 Tw +(OLDPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.2189 Tw +[( is supplied and is a stack pointer, it is reused. If)]TJ +/TT14 1 Tf +-15.8864 -1.2889 TD +0 Tw +(OLDPOS)Tj +/TT8 1 Tf +3.6006 0 TD +( is not a stack pointer it is ignored.)Tj +/TT16 1 Tf +-3.6006 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.05 Tw +(: )Tj +/TT12 1 Tf +0.85 0 TD +0.1211 Tw +(\(STKNTH 0\))Tj +/TT8 1 Tf +6.1221 0 TD +0.05 Tw +[( causes an error, )]TJ +/TT12 1 Tf +7.6155 0 TD +0.1211 Tw +(Illegal stack arg)Tj +/TT8 1 Tf +10.4439 0 TD +0.05 Tw +(; it is not possible to create a)Tj +-27.2537 -1.2889 TD +0 Tw +(stack pointer to the active frame. )Tj +/TT12 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKNAME)Tj +/F1 1 Tf +10 0 0 10 193.2 320.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.07 320.1 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30050.7([Function])]TJ +-4.8526 -1.8444 TD +(Returns the frame name of the frame specified by the stack descriptor )Tj +/TT14 1 Tf +30.9648 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-35.4318 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(SETSTKNAME)Tj +/F1 1 Tf +10 0 0 10 209.4 283.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.27 283.62 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 228.4726 283.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 231.2526 283.62 Tm +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25541.4([Function])]TJ +-9.3619 -1.8444 TD +(Changes the frame name of the frame specified by )Tj +/TT14 1 Tf +22.4209 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +( to be )Tj +/TT14 1 Tf +2.6543 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +(. Returns )Tj +/TT14 1 Tf +4.4771 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT12 1 Tf +-38.82 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKNTHNAME)Tj +/F1 1 Tf +10 0 0 10 209.4 247.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.27 247.14 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 217.6709 247.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 220.4509 247.14 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27341.7([Function])]TJ +-7.5616 -1.8444 TD +0.25 Tw +(Returns the frame name of the )Tj +/TT14 1 Tf +15.1641 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.25 Tw +(th frame back from )Tj +/TT14 1 Tf +9.708 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.25 Tw +[(. Equivalent to )]TJ +/TT12 1 Tf +7.9302 0 TD +0 Tw +(\(STKNAME)Tj +-35.2026 -1.2889 TD +(\(STKNTH )Tj +/TT14 1 Tf +4.8008 0 TD +(N)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +( but avoids creation of a stack pointer.)Tj +-14.3348 -2.0667 TD +0.1011 Tw +(In summary, )Tj +/TT12 1 Tf +6.1148 0 TD +0 Tw +(STKPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( converts function names to stack pointers, )]TJ +/TT12 1 Tf +19.8093 0 TD +0 Tw +(STKNTH)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( converts numbers to stack)]TJ +-33.1253 -1.2889 TD +0 Tw +(pointers, )Tj +/TT12 1 Tf +4.1974 0 TD +(STKNAME)Tj +/TT8 1 Tf +4.2007 0 TD +0.0533 Tw +[( converts stack pointers to function names, and )]TJ +/TT12 1 Tf +21.4711 0 TD +0 Tw +(STKNTHNAME)Tj +/TT8 1 Tf +6.001 0 TD +0.0533 Tw +[( converts numbers to)]TJ +-35.8701 -1.2889 TD +0 Tw +(function names.)Tj +/TT4 1 Tf +10 0 0 10 102 154.8 Tm +(Variable Bindings in Stack Frames)Tj +ET +102.01 152.09 m +558.01 152.09 l +S +BT +/TT8 1 Tf +9 0 0 9 126 138.14 Tm +0.1522 Tw +[(The following functions are used for accessing and changing bindings. Some of functions take an)]TJ +0 -1.2222 TD +0 Tw +(argument, )Tj +/TT14 1 Tf +5.042 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2178 Tw +[(, which specifies a particular binding in the basic frame. If )]TJ +/TT14 1 Tf +28.6563 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2178 Tw +[( is a literal atom, it is)]TJ +-34.8985 -1.2889 TD +0.12 Tw +[(assumed to be the name of a variable bound in the basic frame. If )]TJ +/TT14 1 Tf +31.0388 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.12 Tw +[( is a number, it is assumed to)]TJ +-31.6389 -1.2889 TD +0.1267 Tw +(reference the )Tj +/TT14 1 Tf +6.2055 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1267 Tw +[(th binding in the basic frame. The first binding is 1. If the basic frame contains no)]TJ +-6.8056 -1.2889 TD +0.1689 Tw +(binding with the given name or if the number is too large or too small, the error )Tj +/TT12 1 Tf +38.3208 0 TD +0.4056 Tw +(Illegal arg)Tj +/TT8 1 Tf +-38.3208 -1.2889 TD +0 Tw +(occurs.)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT16 19 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +27 0 obj +<< +/Length 8583 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-5)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT12 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKSCAN)Tj +/F1 1 Tf +10 0 0 10 145.2 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 568.26 Tm +(VAR)Tj +/F2 1 Tf +10 0 0 10 164.2726 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 167.0526 568.26 Tm +(IPOS)Tj +/F2 1 Tf +10 0 0 10 188.6561 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.4361 568.26 Tm +(OPOS)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24632.2([Function])]TJ +-10.2712 -1.8444 TD +0.1267 Tw +(Searches beginning at )Tj +/TT14 1 Tf +10.2565 0 TD +0 Tw +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1267 Tw +[( for a frame in which a variable named )]TJ +/TT14 1 Tf +18.4886 0 TD +0 Tw +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1267 Tw +[( is bound. The)]TJ +-32.9458 -1.2889 TD +0.08 Tw +[(search follows the access chain. Returns a stack pointer to the frame if found, otherwise)]TJ +0 -1.2222 TD +0 Tw +(returns )Tj +/TT12 1 Tf +3.4541 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(. If )Tj +/TT14 1 Tf +1.6699 0 TD +(OPOS)Tj +/TT8 1 Tf +2.4004 0 TD +( is a stack pointer it is reused, otherwise it is ignored.)Tj +/TT12 1 Tf +-11.9914 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(FRAMESCAN)Tj +/F1 1 Tf +10 0 0 10 156 509.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.87 509.18 Tm +(ATOM)Tj +/F2 1 Tf +10 0 0 10 180.4735 509.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 183.2535 509.18 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-26141.4([Function])]TJ +-8.7619 -1.8444 TD +0.1078 Tw +(Returns the relative position of the binding of )Tj +/TT14 1 Tf +21.2709 0 TD +0 Tw +(ATOM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( in the basic frame of )]TJ +/TT14 1 Tf +10.0876 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1078 Tw +[(. Returns)]TJ +/TT12 1 Tf +-35.5592 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(ATOM)Tj +/TT8 1 Tf +2.4004 0 TD +( is not found.)Tj +/TT12 1 Tf +-7.9914 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKARG)Tj +/F1 1 Tf +10 0 0 10 139.8 461.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.67 461.1 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 148.0708 461.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 150.8508 461.1 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 167.0535 461.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 169.8335 461.1 Tm +()Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28832.8([Function])]TJ +-6.0706 -1.8444 TD +0.0044 Tw +(Returns the value of the binding specified by )Tj +/TT14 1 Tf +20.1322 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0001 Tc +0.0043 Tw +( in the basic frame of the frame specified by)Tj +-20.7323 -1.2889 TD +0 Tc +0 Tw +(the stack descriptor )Tj +/TT14 1 Tf +8.8989 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +/TT14 1 Tf +0.75 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( can be a literal atom or number.)Tj +/TT12 1 Tf +-14.716 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKARGNAME)Tj +/F1 1 Tf +10 0 0 10 161.4 413.02 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.27 413.02 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 169.6709 413.02 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 172.4509 413.02 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27341.7([Function])]TJ +-7.5616 -1.8444 TD +0.0733 Tw +(Returns the name of the binding specified by )Tj +/TT14 1 Tf +20.6892 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0733 Tw +(, in the basic frame of the frame specified)Tj +-21.2893 -1.2889 TD +0 Tw +(by the stack descriptor )Tj +/TT14 1 Tf +10.2583 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +/TT14 1 Tf +0.75 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( can be a literal atom or number.)Tj +/TT12 1 Tf +-16.0754 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(SETSTKARG)Tj +/F1 1 Tf +10 0 0 10 156 364.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.87 364.94 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 164.2709 364.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 167.0508 364.94 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 183.2535 364.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 186.0335 364.94 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25832.6([Function])]TJ +-9.0708 -1.8444 TD +0.0089 Tw +(Sets the value of the binding specified by )Tj +/TT14 1 Tf +18.4446 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0089 Tw +[( in the basic frame of the frame specified by the)]TJ +-19.0447 -1.2889 TD +0 Tw +(stack descriptor )Tj +/TT14 1 Tf +7.2617 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +/TT14 1 Tf +0.75 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( can be a literal atom or a number. Returns )Tj +/TT14 1 Tf +19.2993 0 TD +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-34.1784 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(SETSTKARGNAME)Tj +/F1 1 Tf +10 0 0 10 177.6 316.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 180.47 316.86 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 185.8708 316.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 188.6508 316.86 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 204.8535 316.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.6335 316.86 Tm +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22832.5([Function])]TJ +-12.0709 -1.8444 TD +0.1522 Tw +(Sets the variable name to )Tj +/TT14 1 Tf +12.0424 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.1522 Tw +[( of the binding specified by )]TJ +/TT14 1 Tf +13.2078 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1522 Tw +[( in the basic frame of the)]TJ +-28.2506 -1.2889 TD +0.0278 Tw +(frame specified by the stack descriptor )Tj +/TT14 1 Tf +17.4675 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +(. )Tj +/TT14 1 Tf +0.8056 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0278 Tw +[( can be a literal atom or a number. Returns)]TJ +/TT14 1 Tf +-20.6734 -1.2889 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +(. This function does not work for interpreted frames.)Tj +/TT12 1 Tf +-5.0671 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKNARGS)Tj +/F1 1 Tf +10 0 0 10 150.6 257.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.47 257.18 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 169.6726 257.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 172.4526 257.18 Tm +()Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28541.7([Function])]TJ +-6.3616 -1.8444 TD +0.0667 Tw +(Returns the number of arguments bound in the basic frame of the frame specified by the)Tj +0 -1.2222 TD +0 Tw +(stack descriptor )Tj +/TT14 1 Tf +7.2617 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-11.7287 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(VARIABLES)Tj +/F1 1 Tf +10 0 0 10 156 209.7 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.87 209.7 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28850.7([Function])]TJ +-6.0526 -1.8444 TD +(Returns a list of the variables bound at )Tj +/TT14 1 Tf +17.2944 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-21.7614 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKARGS)Tj +/F1 1 Tf +10 0 0 10 145.2 173.22 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 173.22 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 164.2726 173.22 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 167.0526 173.22 Tm +()Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29141.7([Function])]TJ +-5.7616 -1.8444 TD +(Returns a list of the values of the variables bound at )Tj +/TT14 1 Tf +23.1724 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 133.68 Tm +(Evaluating Expressions in Stack Frames)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 130.97 m +510.01 130.97 l +S +BT +/TT8 1 Tf +9 0 0 9 78 117.02 Tm +(The following functions are used to evaluate an expression in a different environment:)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(ENVEVAL)Tj +/F1 1 Tf +10 0 0 10 145.2 97.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 97.74 Tm +(FORM)Tj +/F2 1 Tf +10 0 0 10 169.6735 97.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 172.4535 97.74 Tm +(APOS)Tj +/F2 1 Tf +10 0 0 10 194.057 97.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.837 97.74 Tm +(CPOS)Tj +/F2 1 Tf +10 0 0 10 218.4405 97.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 221.2205 97.74 Tm +(AFLG)Tj +/F2 1 Tf +10 0 0 10 242.824 97.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 245.604 97.74 Tm +(CFLG)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-18613.5([Function])]TJ +-16.2898 -1.8444 TD +(Evaluates )Tj +/TT14 1 Tf +4.6677 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1189 Tw +[( in the environment specified by )]TJ +/TT14 1 Tf +15.2456 0 TD +0 Tw +(APOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1189 Tw +[( and )]TJ +/TT14 1 Tf +2.4306 0 TD +0 Tw +(CPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1189 Tw +[(. That is, a new active)]TJ +-29.5451 -1.2889 TD +0.0789 Tw +(frame is created with the frame specified by the stack descriptor )Tj +/TT14 1 Tf +29.3775 0 TD +0 Tw +(APOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0789 Tw +[( as its )]TJ +/TT12 1 Tf +2.9515 0 TD +0 Tw +(ALINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0789 Tw +(, and)Tj +-37.7299 -1.2889 TD +0.0178 Tw +(the frame specified by the stack descriptor )Tj +/TT14 1 Tf +19.0624 0 TD +0 Tw +(CPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( as its )]TJ +/TT12 1 Tf +2.7682 0 TD +0 Tw +(CLINK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0178 Tw +[(. Then )]TJ +/TT14 1 Tf +3.3092 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( is evaluated. If)]TJ +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +30 0 obj +<< +/Length 9431 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-6)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT14 1 Tf +9 0 0 9 174 569.54 Tm +(AFLG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1289 Tw +[( is not )]TJ +/TT12 1 Tf +3.3056 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1289 Tw +(, and )Tj +/TT14 1 Tf +2.7007 0 TD +0 Tw +(APOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1289 Tw +[( is a stack pointer, then )]TJ +/TT14 1 Tf +11.1776 0 TD +0 Tw +(APOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1289 Tw +[( will be released. Similarly, if)]TJ +/TT14 1 Tf +-26.1854 -1.2889 TD +0 Tw +(CFLG)Tj +/TT8 1 Tf +2.4004 0 TD +( is not )Tj +/TT12 1 Tf +2.9189 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, and )Tj +/TT14 1 Tf +2.4429 0 TD +(CPOS)Tj +/TT8 1 Tf +2.4004 0 TD +( is a stack pointer, then )Tj +/TT14 1 Tf +10.4043 0 TD +(CPOS)Tj +/TT8 1 Tf +2.4004 0 TD +( will be released.)Tj +/TT12 1 Tf +-27.4342 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(ENVAPPLY)Tj +/F1 1 Tf +10 0 0 10 198.6 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.47 538.06 Tm +(FN)Tj +/F2 1 Tf +10 0 0 10 212.2717 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 215.0517 538.06 Tm +(ARGS)Tj +/F2 1 Tf +10 0 0 10 236.6553 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 239.4353 538.06 Tm +(APOS)Tj +/F2 1 Tf +10 0 0 10 261.0388 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 263.8188 538.06 Tm +(CPOS)Tj +/F2 1 Tf +10 0 0 10 285.4223 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 288.2023 538.06 Tm +(AFLG)Tj +/F2 1 Tf +10 0 0 10 309.8058 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 312.5858 538.06 Tm +(CFLG)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-16504.4([Function])]TJ +/TT12 1 Tf +-18.3989 -1.8445 TD +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +(s )Tj +/TT14 1 Tf +0.8127 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.1389 Tw +[( to )]TJ +/TT14 1 Tf +1.6498 0 TD +0 Tw +(ARGS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( in the environment specified by )]TJ +/TT14 1 Tf +15.3656 0 TD +0 Tw +(APOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( and )]TJ +/TT14 1 Tf +2.4706 0 TD +0 Tw +(CPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +(. )Tj +/TT14 1 Tf +1.0278 0 TD +0 Tw +(AFLG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( and )]TJ +/TT14 1 Tf +2.4706 0 TD +0 Tw +(CFLG)Tj +/TT8 1 Tf +-37.5994 -1.2889 TD +(have the same interpretation as with )Tj +/TT12 1 Tf +16.3755 0 TD +(ENVEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT12 1 Tf +-23.2428 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(EVALV)Tj +/F1 1 Tf +10 0 0 10 182.4 489.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.27 489.98 Tm +(VAR)Tj +/F2 1 Tf +10 0 0 10 201.4726 489.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 204.2526 489.98 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 220.4553 489.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.2353 489.98 Tm +(RELFLG)Tj +/TT12 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25232.1([Function])]TJ +-9.6713 -1.8444 TD +(Evaluates )Tj +/TT14 1 Tf +4.5977 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +(, where )Tj +/TT14 1 Tf +3.6168 0 TD +0 Tw +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +[( is assumed to be a symbol, in the access environment specifed)]TJ +-11.8151 -1.2889 TD +0.1611 Tw +(by the stack descriptor )Tj +/TT14 1 Tf +10.9027 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1611 Tw +[(. If )]TJ +/TT14 1 Tf +2.1533 0 TD +0 Tw +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1611 Tw +[( is unbound, )]TJ +/TT12 1 Tf +6.2783 0 TD +0 Tw +(EVALV)Tj +/TT8 1 Tf +3.0005 0 TD +0.1611 Tw +[( returns )]TJ +/TT12 1 Tf +4.0263 0 TD +0 Tw +(NOBIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.1611 Tw +[( and does not)]TJ +-33.5622 -1.2889 TD +0.1256 Tw +[(generate an error. If )]TJ +/TT14 1 Tf +9.8861 0 TD +0 Tw +(RELFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +[( is non-)]TJ +/TT12 1 Tf +3.5089 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1256 Tw +[( and )]TJ +/TT14 1 Tf +2.444 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1256 Tw +[( is a stack pointer, it will be released)]TJ +-23.0402 -1.2889 TD +0.0833 Tw +[(after the variable is looked up. While )]TJ +/TT12 1 Tf +17.5021 0 TD +0 Tw +(EVALV)Tj +/TT8 1 Tf +3.0005 0 TD +0.0833 Tw +[( could be defined as )]TJ +/TT12 1 Tf +9.5031 0 TD +0 Tw +(\(ENVEVAL )Tj +/TT14 1 Tf +5.5998 0 TD +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.799 0 TD +(POS)Tj +/TT12 1 Tf +-38.2047 -1.2889 TD +(NIL )Tj +/TT14 1 Tf +2.4004 0 TD +(RELFLG)Tj +/TT12 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( it is in fact somewhat faster.)Tj +/TT12 1 Tf +-9.2677 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKEVAL)Tj +/F1 1 Tf +10 0 0 10 193.2 407.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.07 407.1 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 212.2726 407.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 215.0526 407.1 Tm +(FORM)Tj +/F2 1 Tf +10 0 0 10 236.6561 407.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 239.4361 407.1 Tm +(FLG)Tj +/F2 1 Tf +10 0 0 10 255.6388 407.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 258.4188 407.1 Tm +()Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24323.3([Function])]TJ +-10.5801 -1.8444 TD +(Evaluates )Tj +/TT14 1 Tf +4.6488 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1 Tw +[( in the access environment of the frame specified by the stack descriptor)]TJ +/TT14 1 Tf +-7.0492 -1.2889 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.2322 Tw +[(. If )]TJ +/TT14 1 Tf +2.3666 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.2322 Tw +[( is not )]TJ +/TT12 1 Tf +3.6156 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2322 Tw +[( and )]TJ +/TT14 1 Tf +2.6573 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.2322 Tw +[( is a stack pointer, releases )]TJ +/TT14 1 Tf +13.2991 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.2322 Tw +[(. The definition of)]TJ +/TT12 1 Tf +-30.9401 -1.2889 TD +0 Tw +(STKEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +( is )Tj +/TT12 1 Tf +1.2148 0 TD +(\(ENVEVAL )Tj +/TT14 1 Tf +5.4009 0 TD +(FORM)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +( NIL )Tj +/TT14 1 Tf +3.0005 0 TD +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT12 1 Tf +-23.6847 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STKAPPLY)Tj +/F1 1 Tf +10 0 0 10 198.6 347.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.47 347.42 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 217.6726 347.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 220.4526 347.42 Tm +(FN)Tj +/F2 1 Tf +10 0 0 10 231.2544 347.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 234.0344 347.42 Tm +(ARGS)Tj +/F2 1 Tf +10 0 0 10 255.6379 347.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 258.4179 347.42 Tm +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23123.2([Function])]TJ +-11.7802 -1.8444 TD +(Like )Tj +/TT12 1 Tf +2.187 0 TD +(STKEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +( but applies )Tj +/TT14 1 Tf +5.4194 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(ARGS)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 307.88 Tm +(Altering Flow of Control)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 305.17 m +558.01 305.17 l +S +BT +/TT8 1 Tf +9 0 0 9 126 291.22 Tm +0.0889 Tw +(The following functions are used to alter the normal flow of control, possibly jumping to a different)Tj +0 -1.2222 TD +0.31 Tw +(frame on the stack. )Tj +/TT12 1 Tf +10.405 0 TD +0 Tw +(RETEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +0.31 Tw +[( and )]TJ +/TT12 1 Tf +2.8129 0 TD +0 Tw +(RETAPPLY)Tj +/TT8 1 Tf +4.8008 0 TD +0.31 Tw +[( allow evaluating an expression in the specified)]TJ +-22.2193 -1.2889 TD +0 Tw +(environment first.)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RETFROM)Tj +/F1 1 Tf +10 0 0 10 193.2 249.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.07 249.34 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 212.2726 249.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 215.0526 249.34 Tm +(VAL)Tj +/F2 1 Tf +10 0 0 10 231.2553 249.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 234.0353 249.34 Tm +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25832.4([Function])]TJ +-9.071 -1.8444 TD +0.0122 Tw +(Return from the frame specified by the stack descriptor )Tj +/TT14 1 Tf +24.758 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +(, with the value )Tj +/TT14 1 Tf +7.1573 0 TD +0 Tw +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +[(. If )]TJ +/TT14 1 Tf +1.7066 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +[( is)]TJ +-39.0227 -1.2889 TD +0 Tw +(not )Tj +/TT12 1 Tf +1.7285 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0244 Tw +(, and )Tj +/TT14 1 Tf +2.4918 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0244 Tw +[( is a stack pointer, then )]TJ +/TT14 1 Tf +10.551 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0244 Tw +[( is released. An attempt to )]TJ +/TT12 1 Tf +12.217 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.0244 Tw +[( the top)]TJ +-36.5898 -1.2889 TD +0.1211 Tw +(level \(e.g., )Tj +/TT12 1 Tf +5.3365 0 TD +0.29 Tw +(\(RETFROM T\)\))Tj +/TT8 1 Tf +7.4912 0 TD +0.1211 Tw +[( causes an error, )]TJ +/TT12 1 Tf +7.9 0 TD +0.29 Tw +(Illegal stack arg)Tj +/TT8 1 Tf +10.7817 0 TD +0.1211 Tw +(. )Tj +/TT12 1 Tf +0.9922 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1211 Tw +[( can be)]TJ +-36.7022 -1.2889 TD +0 Tw +(written in terms of )Tj +/TT12 1 Tf +8.4922 0 TD +(ENVEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +( as follows:)Tj +/TT12 1 Tf +-8.6929 -1.6667 TD +(\(RETFROM)Tj +2 -1 TD +( \(LAMBDA \(POS VAL FLG\))Tj +T* +( \(ENVEVAL \(LIST QUOTE VAL\))Tj +T* +( NIL)Tj +T* +( \(if \(STKNTH -1 POS)Tj +10 -1 TD +(\(if FLG then POS\)\))Tj +-10 -1 TD +( else \(ERRORX \(LIST 19 POS\)\)\))Tj +T* +( NIL)Tj +T* +( T\)\)\))Tj +-8.6667 -1.9867 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RETTO)Tj +/F1 1 Tf +10 0 0 10 182.4 93.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.27 93.06 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 201.4726 93.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 204.2526 93.06 Tm +(VAL)Tj +/F2 1 Tf +10 0 0 10 220.4553 93.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.2353 93.06 Tm +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27032.4([Function])]TJ +-7.871 -1.8444 TD +(Like )Tj +/TT12 1 Tf +2.187 0 TD +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +(, but returns )Tj +/TT10 1 Tf +5.6865 0 TD +(to)Tj +/TT8 1 Tf +0.7769 0 TD +( the frame specified by )Tj +/TT14 1 Tf +10.2891 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +33 0 obj +<< +/Length 8047 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-7)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT12 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RETEVAL)Tj +/F1 1 Tf +10 0 0 10 145.2 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 568.26 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 164.2726 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 167.0526 568.26 Tm +(FORM)Tj +/F2 1 Tf +10 0 0 10 188.6561 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.4361 568.26 Tm +(FLG)Tj +/F2 1 Tf +10 0 0 10 207.6388 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.4188 568.26 Tm +()Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24323.3([Function])]TJ +-10.5801 -1.8444 TD +(Evaluates )Tj +/TT14 1 Tf +4.6488 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1 Tw +[( in the access environment of the frame specified by the stack descriptor)]TJ +/TT14 1 Tf +-7.0492 -1.2889 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1322 Tw +(, and then returns from )Tj +/TT14 1 Tf +11.1841 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1322 Tw +[( with that value. If )]TJ +/TT14 1 Tf +9.4188 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.1322 Tw +[( is not )]TJ +/TT12 1 Tf +3.3156 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1322 Tw +[( and )]TJ +/TT14 1 Tf +2.4573 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1322 Tw +[( is a stack)]TJ +-35.3773 -1.2889 TD +0.2111 Tw +(pointer, then )Tj +/TT14 1 Tf +6.3617 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.2111 Tw +[( is released. The definition of )]TJ +/TT12 1 Tf +14.7351 0 TD +0 Tw +(RETEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +0.2111 Tw +[( is equivalent to )]TJ +/TT12 1 Tf +8.1076 0 TD +0 Tw +(\(ENVEVAL)Tj +/TT14 1 Tf +-35.2054 -1.2889 TD +(FORM)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +( \(STKNTH -1 )Tj +/TT14 1 Tf +7.2012 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\) )Tj +/TT14 1 Tf +1.2002 0 TD +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +( T\))Tj +/TT8 1 Tf +1.8003 0 TD +(, but )Tj +/TT12 1 Tf +2.2324 0 TD +(RETEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +( does not create a stack pointer.)Tj +/TT12 1 Tf +-27.7028 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RETAPPLY)Tj +/F1 1 Tf +10 0 0 10 150.6 496.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.47 496.98 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 169.6726 496.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 172.4526 496.98 Tm +(FN)Tj +/F2 1 Tf +10 0 0 10 183.2544 496.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 186.0344 496.98 Tm +(ARGS)Tj +/F2 1 Tf +10 0 0 10 207.6379 496.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.4179 496.98 Tm +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23123.2([Function])]TJ +-11.7802 -1.8444 TD +(Like )Tj +/TT12 1 Tf +2.187 0 TD +(RETEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +( but applies )Tj +/TT14 1 Tf +5.4194 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(ARGS)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 457.44 Tm +(Releasing and Reusing Stack Pointers)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 454.73 m +510.01 454.73 l +S +BT +/TT8 1 Tf +9 0 0 9 78 440.78 Tm +(The following functions and variables are used for manipulating stack pointers:)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(STACKP)Tj +/F1 1 Tf +10 0 0 10 139.8 421.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.67 421.5 Tm +(X)Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31850.9([Function])]TJ +-3.0524 -1.8444 TD +(Returns )Tj +/TT14 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a stack pointer, otherwise returns )Tj +/TT12 1 Tf +16.2451 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-26.7634 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RELSTK)Tj +/F1 1 Tf +10 0 0 10 139.8 385.02 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.67 385.02 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30650.7([Function])]TJ +-4.2526 -1.8444 TD +0.1489 Tw +(Release the stack pointer )Tj +/TT14 1 Tf +11.7728 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1489 Tw +[( \(see below\). If )]TJ +/TT14 1 Tf +7.6653 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1489 Tw +[( is not a stack pointer, does nothing.)]TJ +-23.0387 -1.2889 TD +0 Tw +(Returns )Tj +/TT14 1 Tf +3.7271 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-8.194 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RELSTKP)Tj +/F1 1 Tf +10 0 0 10 145.2 336.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 336.94 Tm +(X)Tj +/TT12 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31250.9([Function])]TJ +-3.6524 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( is )Tj +/TT14 1 Tf +1.2148 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a released stack pointer, )Tj +/TT12 1 Tf +12.0928 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT12 1 Tf +-22.7018 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(CLEARSTK)Tj +/F1 1 Tf +10 0 0 10 150.6 300.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.47 300.46 Tm +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29450.7([Function])]TJ +-5.4526 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.0099 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( is )]TJ +/TT12 1 Tf +1.3948 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.09 Tw +[(, returns a list of all the active \(unreleased\) stack pointers. If )]TJ +/TT14 1 Tf +27.982 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( is )]TJ +/TT12 1 Tf +1.3948 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +(, this)Tj +-37.7826 -1.2889 TD +0.0989 Tw +(call is a no-op. The abillity to clear all stack pointers is inconsistent with the modularity)Tj +0 -1.2222 TD +0 Tw +(implicit in a multi processing environment.)Tj +/TT18 1 Tf +-2.6667 -2 TD +(CLEARSTKLST)Tj +/TT8 1 Tf +6.6 0 TD +[( )-31167.8([Variable])]TJ +-3.9333 -1.8444 TD +0.2289 Tw +[(A variable used by the top-level executive. Every time the top-level executive is re-)]TJ +0 -1.2222 TD +0.07 Tw +(entered \(e.g., following errors, or Control-D\), )Tj +/TT12 1 Tf +20.5689 0 TD +0 Tw +(CLEARSTKLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.07 Tw +[( is checked. If its value is )]TJ +/TT12 1 Tf +11.9833 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-39.7534 -1.2889 TD +0.0811 Tw +(all active stack pointers are released using )Tj +/TT12 1 Tf +19.3866 0 TD +0 Tw +(CLEARSTK)Tj +/TT8 1 Tf +4.8008 0 TD +0.0811 Tw +[(. If its value is a list, then all stack)]TJ +-24.1874 -1.2889 TD +0.0178 Tw +[(pointers on that list are released. If its value is )]TJ +/TT12 1 Tf +20.9294 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0178 Tw +(, nothing is released. )Tj +/TT12 1 Tf +9.6768 0 TD +0 Tw +(CLEARSTKLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.0178 Tw +[( is)]TJ +-39.0076 -1.2889 TD +0 Tw +(initially )Tj +/TT12 1 Tf +3.6694 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT18 1 Tf +-6.9362 -2.0667 TD +(NOCLEARSTKLST)Tj +/TT8 1 Tf +7.8 0 TD +[( )-29967.8([Variable])]TJ +-5.1333 -1.8444 TD +0.1322 Tw +[(A variable used by the top-level executive. If )]TJ +/TT12 1 Tf +21.4185 0 TD +0 Tw +(CLEARSTKLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.1322 Tw +[( is )]TJ +/TT12 1 Tf +1.4793 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1322 Tw +[( \(see above\) all active)]TJ +-30.099 -1.2889 TD +0.03 Tw +(stack pointers )Tj +/TT10 1 Tf +6.454 0 TD +0 Tw +(except)Tj +/TT8 1 Tf +2.5186 0 TD +0.03 Tw +[( those on )]TJ +/TT12 1 Tf +4.3249 0 TD +0 Tw +(NOCLEARSTKLST)Tj +/TT8 1 Tf +7.8013 0 TD +0.03 Tw +[( are released. )]TJ +/TT12 1 Tf +6.4017 0 TD +0 Tw +(NOCLEARSTKLST)Tj +/TT8 1 Tf +7.8013 0 TD +0.03 Tw +[( is initially)]TJ +/TT12 1 Tf +-35.3017 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +-7.1336 -2.0667 TD +0.0311 Tw +[(Creating a single stack pointer can cause the retention of a large amount of stack space. Furthermore,)]TJ +0 -1.2222 TD +0.0889 Tw +(this space will not be freed until the next garbage collection, )Tj +/TT10 1 Tf +27.7019 0 TD +(even if the stack pointer is no longer being)Tj +-27.7019 -1.2222 TD +0 Tw +(used)Tj +/TT8 1 Tf +1.8345 0 TD +0.14 Tw +[(, unless the stack pointer is explicitly released or reused. If there is sufficient amount of stack)]TJ +-1.8345 -1.2222 TD +0.2256 Tw +(space tied up in this fashion, a )Tj +/TT12 1 Tf +15.1917 0 TD +0.5411 Tw +(STACK OVERFLOW)Tj +/TT8 1 Tf +8.9425 0 TD +0.2256 Tw +[( condition can occur, even in the simplest of)]TJ +-24.1342 -1.2889 TD +0.0811 Tw +[(computations. For this reason, you should consider releasing a stack pointer when the environment)]TJ +0 -1.2222 TD +0 Tw +(referenced by the stack pointer is no longer needed.)Tj +ET +endstream +endobj +34 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +36 0 obj +<< +/Length 6530 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-8)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(The effects of releasing a stack pointer are:)Tj +0 -2 TD +0.1711 Tw +[(1.)-583.3(The link between the stack pointer and the stack is broken by setting the contents of the stack)]TJ +1.3333 -1.2222 TD +0 Tw +(pointer to the released mark. A released stack pointer prints as )Tj +/TT12 1 Tf +29.1699 0 TD +(#)Tj +/TT14 1 Tf +0.6001 0 TD +(ADR)Tj +/TT12 1 Tf +1.8003 0 TD +(/#)Tj +/TT14 1 Tf +1.2002 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-34.7039 -2.0667 TD +0.0533 Tw +[(2.)-583.3(If this stack pointer was the last remaining reference to a frame extension; that is, if no other stack)]TJ +1.3333 -1.2222 TD +0.1044 Tw +(pointer references the frame extension and the extension is not contained in the active control or)Tj +T* +0.1678 Tw +[(access chain, then the extension may be reclaimed, and is reclaimed immediately. The process)]TJ +T* +0.04 Tw +(repeats for the access and control chains of the reclaimed extension so that all stack space that was)Tj +T* +0 Tw +(reachable only from the released stack pointer is reclaimed.)Tj +-1.3333 -2 TD +0.2078 Tw +(A stack pointer may be released using the function )Tj +/TT12 1 Tf +24.5472 0 TD +0 Tw +(RELSTK)Tj +/TT8 1 Tf +3.6006 0 TD +0.2078 Tw +(, but there are some cases for which)Tj +/TT12 1 Tf +-28.1478 -1.2889 TD +0 Tw +(RELSTK)Tj +/TT8 1 Tf +3.6006 0 TD +0.1789 Tw +[( is not sufficient. For example, if a function contains a call to )]TJ +/TT12 1 Tf +29.4493 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1789 Tw +[( in which a stack)]TJ +-37.2505 -1.2889 TD +0.0433 Tw +(pointer was used to specify where to return to, it would not be possible to simultaneously release the)Tj +0 -1.2222 TD +0.1756 Tw +[(stack pointer. \(A )]TJ +/TT12 1 Tf +8.5333 0 TD +0 Tw +(RELSTK)Tj +/TT8 1 Tf +3.6006 0 TD +0.1756 Tw +[( appearing in the function following the call to )]TJ +/TT12 1 Tf +22.3578 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1756 Tw +[( would not be)]TJ +-38.6924 -1.2889 TD +0.1322 Tw +[(executed!\) To permit release of a stack pointer in this situation, the stack functions that relinquish)]TJ +0 -1.2222 TD +0.0456 Tw +(control have optional flag arguments to denote whether or not a stack pointer is to be released \()Tj +/TT14 1 Tf +42.939 0 TD +0 Tw +(AFLG)Tj +/TT8 1 Tf +-42.939 -1.2889 TD +(and )Tj +/TT14 1 Tf +2.1173 0 TD +(CFLG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1744 Tw +[(\). Note that in this case releasing the stack pointer will )]TJ +/TT10 1 Tf +26.4971 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1744 Tw +[( cause the stack space to be)]TJ +-32.3479 -1.2889 TD +0.0144 Tw +(reclaimed immediately because the frame referenced by the stack pointer will have become part of the)Tj +0 -1.2222 TD +0 Tw +(active environment.)Tj +0 -2 TD +0.0344 Tw +(Another way to avoid creating new stack pointers is to )Tj +/TT10 1 Tf +24.7566 0 TD +0 Tw +(reuse)Tj +/TT8 1 Tf +2.1128 0 TD +0.0344 Tw +[( stack pointers that are no longer needed.)]TJ +-26.8693 -1.2222 TD +0.2022 Tw +(The stack functions that create stack pointers \()Tj +/TT12 1 Tf +21.8047 0 TD +0 Tw +(STKPOS)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT12 1 Tf +0.7022 0 TD +(STKNTH)Tj +/TT8 1 Tf +3.6006 0 TD +0.2022 Tw +(, and )Tj +/TT12 1 Tf +2.8473 0 TD +0 Tw +(STKSCAN)Tj +/TT8 1 Tf +4.2007 0 TD +0.2022 Tw +(\) have an optional)Tj +-36.7561 -1.2889 TD +0.0001 Tc +0.0032 Tw +(argument that is a stack pointer to reuse. When a stack pointer is reused, two things happen. First the)Tj +0 -1.2222 TD +0 Tc +0.0489 Tw +[(stack pointer is released \(see above\). Then the pointer to the new frame extension is deposited in the)]TJ +T* +0.0722 Tw +[(stack pointer. The old stack pointer \(with its new contents\) is returned as the value of the function.)]TJ +T* +0.1422 Tw +(Note that the reused stack pointer will be released even if the function does not find the specified)Tj +T* +0 Tw +(frame.)Tj +0 -2 TD +0.0844 Tw +(Even if stack pointers are explicitly being released, )Tj +/TT10 1 Tf +23.26 0 TD +0 Tw +(creating)Tj +/TT8 1 Tf +3.2964 0 TD +0.0844 Tw +[( many stack pointers can cause a garbage)]TJ +-26.5564 -1.2222 TD +0.0367 Tw +[(collection of stack pointer space. Thus, if your application requires creating many stack pointers, you)]TJ +T* +0 Tw +(definitely should take advantage of reusing stack pointers.)Tj +/TT4 1 Tf +10 0 0 10 102 222 Tm +(Backtrace Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 219.29 m +558.01 219.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 205.34 Tm +0.0711 Tw +(The following functions perform a backtrace, printing information about every frame on the stack.)Tj +T* +0.29 Tw +(Arguments allow only backtracing a selected range of the stack, skipping selected frames, and)Tj +T* +0 Tw +(printing different amounts of information about each frame. )Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(BACKTRACE)Tj +/F1 1 Tf +10 0 0 10 204 164.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.87 164.06 Tm +(IPOS)Tj +/F2 1 Tf +10 0 0 10 228.4735 164.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 231.2535 164.06 Tm +(EPOS)Tj +/F2 1 Tf +10 0 0 10 252.857 164.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 255.637 164.06 Tm +(FLAGS)Tj +/F2 1 Tf +10 0 0 10 282.6414 164.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 285.4214 164.06 Tm +(FILE)Tj +/F2 1 Tf +10 0 0 10 307.0249 164.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 309.8049 164.06 Tm +(PRINTFN)Tj +/TT12 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-15013.1([Function])]TJ +-19.8902 -1.8444 TD +0.0889 Tw +(Performs a backtrace beginning at the frame specified by the stack descriptor )Tj +/TT14 1 Tf +35.3093 0 TD +0 Tw +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0889 Tw +(, and)Tj +-37.7097 -1.2889 TD +0.1789 Tw +(ending with the frame specified by the stack descriptor )Tj +/TT14 1 Tf +26.1823 0 TD +0 Tw +(EPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1789 Tw +(. )Tj +/TT14 1 Tf +1.1078 0 TD +0 Tw +(FLAGS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1789 Tw +[( is a number in)]TJ +-32.6909 -1.2889 TD +0.2267 Tw +(which the options of the )Tj +/TT12 1 Tf +12.0855 0 TD +0 Tw +(BACKTRACE)Tj +/TT8 1 Tf +5.4009 0 TD +0.2267 Tw +[( are encoded. If a bit is set, the corresponding)]TJ +-17.4864 -1.2889 TD +0 Tw +(information is included in the backtrace.)Tj +0 -1.4444 TD +(1Q - print arguments of non-)Tj +/TT12 1 Tf +12.7344 0 TD +(SUBR)Tj +/TT8 1 Tf +2.4004 0 TD +(s)Tj +-15.1348 -1.5111 TD +(2Q - print temporaries of the interpreter)Tj +0 -1.4444 TD +(4Q - print )Tj +/TT12 1 Tf +4.5645 0 TD +(SUBR)Tj +/TT8 1 Tf +2.4004 0 TD +( arguments and local variables)Tj +-6.9648 -1.5111 TD +(10Q - omit printing of )Tj +/TT12 1 Tf +9.9185 0 TD +(UNTRACE)Tj +/TT8 1 Tf +4.2007 0 TD +(: and function names)Tj +-14.1191 -1.5111 TD +(20Q - follow access chain instead of control chain)Tj +ET +endstream +endobj +37 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +39 0 obj +<< +/Length 8494 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-9)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(40Q - print temporaries, i.e. the blips \(see the stack and interpreter section below\))Tj +0 -2 TD +0.1278 Tw +[(For example: If )]TJ +/TT14 1 Tf +7.6771 0 TD +0 Tw +(FLAGS)Tj +/TT12 1 Tf +3.0005 0 TD +0.3056 Tw +[( = 47Q)]TJ +/TT8 1 Tf +4.2117 0 TD +0.1278 Tw +[(, everything is printed. If )]TJ +/TT14 1 Tf +12.2481 0 TD +0 Tw +(FLAGS)Tj +/TT12 1 Tf +3.0005 0 TD +0.3056 Tw +[( = 21Q)]TJ +/TT8 1 Tf +4.2117 0 TD +0.1278 Tw +(, follows the)Tj +-34.3496 -1.2889 TD +0 Tw +(access chain, prints arguments.)Tj +/TT14 1 Tf +0 -2 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1111 Tw +[( is the file that the backtrace is printed to. )]TJ +/TT14 1 Tf +19.9092 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1111 Tw +[( must be open. )]TJ +/TT14 1 Tf +7.5316 0 TD +0 Tw +(PRINTFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1111 Tw +[( is used)]TJ +-36.4423 -1.2889 TD +0.0589 Tw +(when printing the values of variables, temporaries, blips, etc. )Tj +/TT14 1 Tf +28.0445 0 TD +0 Tw +(PRINTFN)Tj +/TT12 1 Tf +4.2007 0 TD +0.14 Tw +[( = NIL)]TJ +/TT8 1 Tf +3.8806 0 TD +0.0589 Tw +[( defaults)]TJ +-36.1257 -1.2889 TD +0 Tw +(to )Tj +/TT12 1 Tf +1.1221 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT12 1 Tf +-6.7892 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(BAKTRACE)Tj +/F1 1 Tf +10 0 0 10 150.6 478.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.47 478.86 Tm +(IPOS)Tj +/F2 1 Tf +10 0 0 10 175.0735 478.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 177.8535 478.86 Tm +(EPOS)Tj +/F2 1 Tf +10 0 0 10 199.457 478.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 202.237 478.86 Tm +(SKIPFNS)Tj +/F2 1 Tf +10 0 0 10 240.0432 478.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 242.8232 478.86 Tm +(FLAGS)Tj +/F2 1 Tf +10 0 0 10 269.8275 478.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 272.6075 478.86 Tm +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-15613.1([Function])]TJ +-19.2902 -1.8444 TD +0.1811 Tw +(Prints a backtrace from )Tj +/TT14 1 Tf +11.2005 0 TD +0 Tw +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1811 Tw +[( to )]TJ +/TT14 1 Tf +1.7343 0 TD +0 Tw +(EPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1811 Tw +[( onto )]TJ +/TT14 1 Tf +2.8622 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1811 Tw +(. )Tj +/TT14 1 Tf +1.1122 0 TD +0 Tw +(FLAGS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1811 Tw +[( specifies the options of the)]TJ +-27.1109 -1.2889 TD +0.1089 Tw +(backtrace, e.g., do/dont print arguments, do/dont print temporaries of the interpreter,)Tj +0 -1.2222 TD +0 Tw +(etc., and is the same as for )Tj +/TT12 1 Tf +11.7773 0 TD +(BACKTRACE)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT14 1 Tf +-17.1782 -2.0667 TD +(SKIPFNS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1367 Tw +[( is a list of functions. As )]TJ +/TT12 1 Tf +12.1016 0 TD +0 Tw +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1367 Tw +[( scans down the stack, the stack name of)]TJ +-21.1031 -1.2889 TD +0.0989 Tw +(each frame is passed to each function in )Tj +/TT14 1 Tf +18.5963 0 TD +0 Tw +(SKIPFNS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0989 Tw +(, and if any of them returnS non-)Tj +/TT12 1 Tf +15.1444 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +/TT14 1 Tf +-39.7416 -1.2889 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +( is skipped \(including all variables\).)Tj +/TT12 1 Tf +-1.8003 -2.0667 TD +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1633 Tw +[( collapses the sequence of several function calls corresponding to a call to a)]TJ +-4.8008 -1.2889 TD +0.1644 Tw +(system package into a single function using )Tj +/TT12 1 Tf +21.6604 0 TD +0 Tw +(BAKTRACELST)Tj +/TT8 1 Tf +6.6011 0 TD +0.1644 Tw +[( as described below. For)]TJ +-28.2615 -1.2889 TD +0.3822 Tw +(example, any call to the editor is printed as )Tj +/TT12 1 Tf +22.6841 0 TD +0 Tw +(**EDITOR**)Tj +/TT8 1 Tf +6.001 0 TD +0.3822 Tw +(, a break is printed as)Tj +/TT12 1 Tf +-28.6851 -1.2889 TD +0 Tw +(**BREAK**)Tj +/TT8 1 Tf +5.4009 0 TD +(, etc.)Tj +/TT12 1 Tf +-5.4009 -2.0667 TD +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.06 Tw +[( is used by the )]TJ +/TT12 1 Tf +6.8781 0 TD +0 Tw +(BT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.56 0 TD +(BTV)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT12 1 Tf +0.56 0 TD +(BTV+)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT12 1 Tf +0.56 0 TD +(BTV*)Tj +/TT8 1 Tf +2.4004 0 TD +0.06 Tw +(, and )Tj +/TT12 1 Tf +2.5629 0 TD +0 Tw +(BTV!)Tj +/TT8 1 Tf +2.4004 0 TD +0.06 Tw +[( break commands, with )]TJ +/TT14 1 Tf +10.8787 0 TD +0 Tw +(FLAGS)Tj +/TT12 1 Tf +-37.0021 -1.2889 TD +(= 0)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(1)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(5)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(7)Tj +/TT8 1 Tf +0.6001 0 TD +(, and )Tj +/TT12 1 Tf +2.4429 0 TD +(47Q)Tj +/TT8 1 Tf +1.8003 0 TD +( respectively.)Tj +-9.3438 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(SYSPRETTYFLG = T)Tj +/TT8 1 Tf +9.6016 0 TD +(, the values arguments and local variables will be prettyprinted.)Tj +/TT18 1 Tf +-13.1882 -2.0667 TD +(BAKTRACELST)Tj +/TT8 1 Tf +6.6 0 TD +[( )-31167.8([Variable])]TJ +-3.9333 -1.8444 TD +0.2189 Tw +(Used to tell )Tj +/TT12 1 Tf +5.9574 0 TD +0 Tw +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2189 Tw +[( \(therefore, the )]TJ +/TT12 1 Tf +7.391 0 TD +0 Tw +(BT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.7189 0 TD +(BTV)Tj +/TT8 1 Tf +1.8003 0 TD +0.2189 Tw +(, etc. commands\) to abbreviate various)Tj +-21.8686 -1.2889 TD +0.1122 Tw +(sequences of function calls on the stack by a single key, e.g. )Tj +/TT12 1 Tf +27.73 0 TD +0 Tw +(**BREAK**)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT12 1 Tf +0.6122 0 TD +(**EDITOR**)Tj +/TT8 1 Tf +6.001 0 TD +(,)Tj +-39.744 -1.2889 TD +(etc.)Tj +0 -2 TD +0.1178 Tw +(Each entry on )Tj +/TT12 1 Tf +6.7064 0 TD +0 Tw +(BAKTRACELST)Tj +/TT8 1 Tf +6.6011 0 TD +0.1178 Tw +[( is a list of the form )]TJ +/TT12 1 Tf +9.5442 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FRAMENAME)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.8812 0 TD +(KEY)Tj +/TT12 1 Tf +1.8003 0 TD +0.2811 Tw +[( . )]TJ +/TT14 1 Tf +2.3625 0 TD +0 Tw +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1178 Tw +[( or)]TJ +-38.6974 -1.2889 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.333 0 TD +(FRAMENAME)Tj +/TT12 1 Tf +5.4009 0 TD +0.14 Tc +( \()Tj +/TT14 1 Tf +1.3402 0 TD +0 Tc +(KEY)Tj +6 0 0 6 205.86 205.66 Tm +(1)Tj +/TT12 1 Tf +9 0 0 9 209.46 207.66 Tm +0.14 Tw +[( . )]TJ +/TT14 1 Tf +2.0803 0 TD +0 Tw +(PATTERN)Tj +6 0 0 6 265.98 205.66 Tm +(1)Tj +/TT12 1 Tf +9 0 0 9 269.58 207.66 Tm +0.14 Tw +(\) ... \()Tj +/TT14 1 Tf +4.4807 0 TD +0 Tw +(KEY)Tj +6 0 0 6 326.1 205.66 Tm +(N)Tj +/TT12 1 Tf +9 0 0 9 329.7 207.66 Tm +0.14 Tw +[( . )]TJ +/TT14 1 Tf +2.0803 0 TD +0 Tw +(PATTERN)Tj +6 0 0 6 386.22 205.66 Tm +(N)Tj +/TT12 1 Tf +9 0 0 9 389.82 207.66 Tm +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0589 Tw +(, where a pattern is a)Tj +-30.5135 -1.3944 TD +0.2011 Tw +(list of elements that are either atoms, which match a single frame, or lists, which are)Tj +0 -1.2222 TD +0.0033 Tw +(interpreted as a list of alternative patterns, e.g. )Tj +/TT12 1 Tf +20.7786 0 TD +0.0078 Tw +(\(PROGN **BREAK** EVAL \(\(ERRORSET)Tj +-20.7786 -1.2222 TD +0 Tw +(BREAK1A BREAK1\) \(BREAK1\)\)\))Tj +-5.3333 -2.0667 TD +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.07 Tw +[( operates by scanning up the stack and, at each point, comparing the current frame name,)]TJ +-4.8008 -1.2889 TD +0.2044 Tw +(with the frame names on )Tj +/TT12 1 Tf +12.2781 0 TD +0 Tw +(BAKTRACELST)Tj +/TT8 1 Tf +6.6011 0 TD +0.2044 Tw +(, i.e. it does an )Tj +/TT12 1 Tf +7.551 0 TD +0 Tw +(ASSOC)Tj +/TT8 1 Tf +3.0005 0 TD +0.2044 Tw +[(. If the frame name does appear,)]TJ +/TT12 1 Tf +-29.4307 -1.2889 TD +0 Tw +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1489 Tw +[( attempts to match the stack as of that point with \(one of\) the patterns. If the match is)]TJ +-4.8008 -1.2889 TD +0 Tw +(successful, )Tj +/TT12 1 Tf +5.0549 0 TD +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0867 Tw +[( prints the corresponding key, and continues with where the match left off. If)]TJ +-9.8557 -1.2889 TD +0.1456 Tw +(the frame name does not appear, or the match fails, )Tj +/TT12 1 Tf +24.3682 0 TD +0 Tw +(BAKTRACE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1456 Tw +[( simply prints the frame name and)]TJ +-29.1689 -1.2889 TD +0.0456 Tw +(continues with the next higher frame \(unless the )Tj +/TT14 1 Tf +21.9631 0 TD +0 Tw +(SKIPFNS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0456 Tw +[( applied to the frame name are non-)]TJ +/TT12 1 Tf +16.1529 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +[( as)]TJ +-44.1169 -1.2889 TD +0 Tw +(described above\).)Tj +0 -2 TD +0.2489 Tw +(Matching is performed by comparing symbols in the pattern with the current frame name, and)Tj +0 -1.2222 TD +0.0389 Tw +[(matching lists as patterns, i.e. sequences of function calls, always working up the stack. For example,)]TJ +T* +0.0833 Tw +(either of the sequence of function calls )Tj +/TT12 1 Tf +17.7371 0 TD +0.1989 Tw +(... BREAK1 BREAK1A ERRORSET EVAL PROGN ...)Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +42 0 obj +<< +/Length 7295 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-10)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 126 569.54 Tm +0.2122 Tw +(or ... BREAK1 EVAL PROGN ...)Tj +/TT8 1 Tf +18.4639 0 TD +0.0889 Tw +( would match with the sample entry given above, causing)Tj +/TT12 1 Tf +-18.4639 -1.2889 TD +0 Tw +(**BREAK**)Tj +/TT8 1 Tf +5.4009 0 TD +( to be printed.)Tj +-5.4009 -2.0667 TD +(Special features:)Tj +0 -2 TD +[()-727.4(The symbol )]TJ +/TT12 1 Tf +6.7601 0 TD +(&)Tj +/TT8 1 Tf +0.6001 0 TD +( can be used to match any frame.)Tj +-7.3602 -2.0667 TD +0.0056 Tw +[()-727.4(The pattern )]TJ +/TT12 1 Tf +6.7277 0 TD +0 Tw +(-)Tj +/TT8 1 Tf +1.2002 0 TD +0.0056 Tw +( can be used to match nothing. )Tj +/TT12 1 Tf +14.5415 0 TD +0 Tw +(-)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( is useful for specifying an optional match, e.g. the)]TJ +-21.7362 -1.2889 TD +0.2489 Tw +(example above could also have been written as )Tj +/TT12 1 Tf +23.015 0 TD +0.5967 Tw +(\(PROGN **BREAK** EVAL \(\(ERRORSET)Tj +-23.015 -1.2889 TD +0 Tw +(BREAK1A\) -\) BREAK1\))Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +-12.7352 -2.0667 TD +0.1578 Tw +[()-727.4(It is not necessary to provide in the pattern for matching dummy frames, i.e. frames for which)]TJ +/TT12 1 Tf +1.3333 -1.2222 TD +0 Tw +(DUMMYFRAMEP)Tj +/TT8 1 Tf +6.6011 0 TD +0.1433 Tw +[( \(see below\) is true. When working on a match, the matcher automatically skips)]TJ +-6.6011 -1.2889 TD +0 Tw +(over these frames when they do not match.)Tj +-1.3333 -2 TD +0.1822 Tw +[()-727.4(If a match succeeds and the )]TJ +/TT14 1 Tf +14.8188 0 TD +0 Tw +(KEY)Tj +/TT8 1 Tf +1.8003 0 TD +0.1822 Tw +[( is )]TJ +/TT12 1 Tf +1.5793 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1822 Tw +[(, nothing is printed. For example, )]TJ +/TT12 1 Tf +16.487 0 TD +0.4378 Tw +(\(*PROG*LAM NIL)Tj +-35.1523 -1.2889 TD +0.1411 Tw +(EVALA *ENV\))Tj +/TT8 1 Tf +6.7422 0 TD +0.0589 Tw +[(. This sequence will occur following an error which then causes a break if some of)]TJ +-6.7422 -1.2889 TD +0 Tw +(the functions arguments are )Tj +/TT12 1 Tf +12.918 0 TD +(LOCALVARS)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 374.2 Tm +(Other Stack Functions)Tj +/TT12 1 Tf +9 0 0 9 150 357.26 Tm +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(DUMMYFRAMEP)Tj +/F1 1 Tf +10 0 0 10 214.8 357.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 217.67 357.26 Tm +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27650.7([Function])]TJ +-7.2526 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +4.1393 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.4122 Tw +[( if you never wrote a call to the function at )]TJ +/TT14 1 Tf +23.512 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.4122 Tw +(, e.g. in Interlisp-10,)Tj +/TT12 1 Tf +-30.0517 -1.2889 TD +0 Tw +(DUMMYFRAMEP)Tj +/TT8 1 Tf +6.6011 0 TD +0.2744 Tw +[( is )]TJ +/TT12 1 Tf +1.7637 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2744 Tw +[( for )]TJ +/TT12 1 Tf +2.3228 0 TD +0.6578 Tw +(*PROG*LAM, *ENV*)Tj +/TT8 1 Tf +10.2593 0 TD +0.2744 Tw +(, and )Tj +/TT12 1 Tf +2.9918 0 TD +0 Tw +(FOOBLOCK)Tj +/TT8 1 Tf +4.8008 0 TD +0.2744 Tw +[( frames \(see the Block)]TJ +-29.3396 -1.2889 TD +0 Tw +(Compiling section of Chapter 18\).)Tj +/TT12 1 Tf +-5.3333 -2 TD +(REALFRAMEP)Tj +/TT8 1 Tf +6.001 0 TD +0.0489 Tw +[( and )]TJ +/TT12 1 Tf +2.2907 0 TD +0 Tw +(REALSTKNTH)Tj +/TT8 1 Tf +6.001 0 TD +0.0489 Tw +[( can be used to write functions which manipulate the stack and work)]TJ +-14.2926 -1.2889 TD +0 Tw +(on either interpreted or compiled code:)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(REALFRAMEP)Tj +/F1 1 Tf +10 0 0 10 209.4 268.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.27 268.58 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 228.4726 268.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 231.2526 268.58 Tm +(INTERPFLG)Tj +/TT12 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22540.9([Function])]TJ +-12.3624 -1.8444 TD +(Returns )Tj +/TT14 1 Tf +3.7659 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0389 Tw +[( if )]TJ +/TT14 1 Tf +1.2018 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0389 Tw +[( is a real frame, i.e. if )]TJ +/TT14 1 Tf +10.636 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0389 Tw +[( is not a dummy frame and )]TJ +/TT14 1 Tf +12.5095 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0389 Tw +[( is a frame)]TJ +-35.3144 -1.2889 TD +0.0322 Tw +(that does not disappear when compiled \(such as )Tj +/TT12 1 Tf +21.8398 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0322 Tw +(\); otherwise )Tj +/TT12 1 Tf +5.5034 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0322 Tw +[(. If )]TJ +/TT14 1 Tf +1.7666 0 TD +0 Tw +(INTERPFLG)Tj +/TT12 1 Tf +5.4009 0 TD +0.0789 Tc +( =)Tj +-38.7114 -1.2889 TD +0 Tc +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0944 Tw +(, returns )Tj +/TT12 1 Tf +4.143 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0944 Tw +[( if )]TJ +/TT14 1 Tf +1.3129 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0944 Tw +[( is not a dummy frame. For example, if )]TJ +/TT12 1 Tf +18.609 0 TD +0 Tw +(\(STKNAME )Tj +/TT14 1 Tf +5.6275 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +0.2267 Tw +(\) = COND)Tj +/TT8 1 Tf +5.2541 0 TD +0 Tw +(,)Tj +/TT12 1 Tf +-39.7473 -1.2889 TD +(\(REALFRAMEP )Tj +/TT14 1 Tf +7.2012 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is )Tj +/TT12 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, but )Tj +/TT12 1 Tf +2.2324 0 TD +(\(REALFRAMEP )Tj +/TT14 1 Tf +7.2012 0 TD +(POS)Tj +/TT12 1 Tf +1.8003 0 TD +( T\))Tj +/TT8 1 Tf +1.8003 0 TD +( is )Tj +/TT12 1 Tf +1.2148 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT12 1 Tf +-30.1325 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(REALSTKNTH)Tj +/F1 1 Tf +10 0 0 10 209.4 197.3 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.27 197.3 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 217.6709 197.3 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 220.4509 197.3 Tm +(POS)Tj +/F2 1 Tf +10 0 0 10 236.6535 197.3 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 239.4335 197.3 Tm +(INTERPFLG)Tj +/F2 1 Tf +10 0 0 10 288.0414 197.3 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 290.8214 197.3 Tm +(OLDPOS)Tj +/TT12 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-17722.5([Function])]TJ +-17.1808 -1.8444 TD +0.2811 Tw +(Returns a stack pointer to the )Tj +/TT14 1 Tf +14.8932 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2811 Tw +(th \(or )Tj +/TT12 1 Tf +3.2444 0 TD +0 Tw +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2811 Tw +(th\) frames for which )Tj +/TT12 1 Tf +10.3862 0 TD +0 Tw +(\(REALFRAMEP )Tj +/TT14 1 Tf +7.8756 0 TD +(POS)Tj +-38.1996 -1.2889 TD +(INTERPFLG)Tj +/TT12 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is )Tj +/TT14 1 Tf +1.2148 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-11.6828 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(MAPDL)Tj +/F1 1 Tf +10 0 0 10 182.4 149.22 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.27 149.22 Tm +(MAPDLFN)Tj +/F2 1 Tf +10 0 0 10 223.0761 149.22 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 225.8561 149.22 Tm +(MAPDLPOS)Tj +/TT12 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23740.7([Function])]TJ +-11.1627 -1.8444 TD +0.0289 Tw +(Starts at )Tj +/TT14 1 Tf +3.88 0 TD +0 Tw +(MAPDLPOS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0289 Tw +[( and applies the function )]TJ +/TT14 1 Tf +11.3686 0 TD +0 Tw +(MAPDLFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0289 Tw +[( to two arguments \(the frame name)]TJ +-24.2501 -1.2889 TD +0.1678 Tw +(and a stack pointer to the frame\), for each frame until the top of the stack is reached.)Tj +0 -1.2222 TD +0 Tw +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(. For example,)Tj +/TT12 1 Tf +-1.5273 -1.6667 TD +([MAPDL \(FUNCTION \(LAMBDA \(X POS\))Tj +2 -1 TD +(\(if \(IGREATERP \(STKNARGS POS\) 2\) then \(PRINT X\)])Tj +/TT8 1 Tf +-6 -1.8444 TD +(will print all functions of more than two arguments.)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +45 0 obj +<< +/Length 5829 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-11)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT12 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(SEARCHPDL)Tj +/F1 1 Tf +10 0 0 10 156 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.87 568.26 Tm +(SRCHFN)Tj +/F2 1 Tf +10 0 0 10 191.2752 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 194.0553 568.26 Tm +(SRCHPOS)Tj +/TT12 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22540.9([Function])]TJ +-12.3625 -1.8444 TD +(Like )Tj +/TT12 1 Tf +2.2448 0 TD +(MAPDL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0578 Tw +(, but searches the stack starting at position )Tj +/TT14 1 Tf +19.3919 0 TD +0 Tw +(SRCHPOS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0578 Tw +[( until it finds a frame for)]TJ +-28.8379 -1.2889 TD +0 Tw +(which )Tj +/TT14 1 Tf +3.1418 0 TD +(SRCHFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.1589 Tw +(, a function of two arguments applied to the )Tj +/TT10 1 Tf +21.1033 0 TD +0 Tw +(name)Tj +/TT8 1 Tf +2.167 0 TD +0.1589 Tw +[( of the frame and the)]TJ +-30.0127 -1.2889 TD +0.0878 Tw +(frame itself, is not )Tj +/TT12 1 Tf +8.5039 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0878 Tw +[(. Returns )]TJ +/TT12 1 Tf +4.7404 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.2111 Tw +[( . )]TJ +/TT14 1 Tf +2.2225 0 TD +0 Tw +(FRAME)Tj +/TT12 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( if such a frame is found, otherwise)]TJ +/TT12 1 Tf +-23.8682 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 493.92 Tm +(The Stack and the Interpreter)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 491.21 m +510.01 491.21 l +S +BT +/TT8 1 Tf +9 0 0 9 78 477.26 Tm +0.2089 Tw +(In addition to the names and values of arguments for functions, information regarding partially-)Tj +0 -1.2222 TD +0.0022 Tw +(evaluated expressions is kept on the push-down list. For example, consider the following definition of)Tj +T* +0 Tw +(the function )Tj +/TT12 1 Tf +5.5942 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +( \(intentionally faulty\):)Tj +/TT12 1 Tf +1.3387 -1.6667 TD +(\(FACT)Tj +2 -1 TD +([LAMBDA \(N\))Tj +2 -1 TD +(\(COND)Tj +T* +( \(\(ZEROP N\))Tj +T* +( L\))Tj +T* +( \(T \(ITIMES N \(FACT \(SUB1 N]\))Tj +/TT8 1 Tf +-13.3333 -1.8444 TD +0.0933 Tw +(In evaluating the form )Tj +/TT12 1 Tf +10.5296 0 TD +0.2222 Tw +(\(FACT 1\))Tj +/TT8 1 Tf +5.023 0 TD +0.0933 Tw +(, as soon as )Tj +/TT12 1 Tf +5.5686 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0933 Tw +[( is entered, the interpreter begins evaluating the)]TJ +-23.5216 -1.2889 TD +0 Tw +(implicit )Tj +/TT12 1 Tf +3.6791 0 TD +(PROGN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0111 Tw +[( following the )]TJ +/TT12 1 Tf +6.4406 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +0.0111 Tw +[(. The first function entered in this process is )]TJ +/TT12 1 Tf +19.8855 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +(. )Tj +/TT12 1 Tf +0.7722 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( begins)]TJ +-42.1792 -1.2889 TD +0.0589 Tw +[(to process its list of clauses. After calling )]TJ +/TT12 1 Tf +18.8972 0 TD +0 Tw +(ZEROP)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +[( and getting a )]TJ +/TT12 1 Tf +6.5451 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0589 Tw +[( value, )]TJ +/TT12 1 Tf +3.3058 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0589 Tw +[( proceeds to the next)]TJ +-35.9493 -1.2889 TD +0.05 Tw +(clause and evaluates )Tj +/TT12 1 Tf +9.5006 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[(. Since )]TJ +/TT12 1 Tf +3.4708 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( is true, the evaluation of the implicit )]TJ +/TT12 1 Tf +16.9225 0 TD +0 Tw +(PROGN)Tj +/TT8 1 Tf +3.0005 0 TD +0.05 Tw +[( that is the consequent of)]TJ +-34.0945 -1.2889 TD +0 Tw +(the )Tj +/TT12 1 Tf +1.7605 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1233 Tw +[( clause is begun. This requires calling the function )]TJ +/TT12 1 Tf +23.7973 0 TD +0 Tw +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.1233 Tw +[(. However before )]TJ +/TT12 1 Tf +8.6584 0 TD +0 Tw +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.1233 Tw +[( can be)]TJ +-42.0175 -1.2889 TD +0.1422 Tw +[(called, its arguments must be evaluated. The first argument is evaluated by retrieving the current)]TJ +0 -1.2222 TD +0.14 Tw +(binding of )Tj +/TT12 1 Tf +5.1252 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.14 Tw +[( from its value cell; the second involves a recursive call to )]TJ +/TT12 1 Tf +27.2586 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.14 Tw +(, and another implicit)Tj +/TT12 1 Tf +-35.3843 -1.2889 TD +0 Tw +(PROGN)Tj +/TT8 1 Tf +3.0005 0 TD +(, etc.)Tj +-3.0005 -2.0667 TD +0.2211 Tw +(At each stage of this process, some portion of an expression has been evaluated, and another is)Tj +0 -1.2222 TD +0.06 Tw +[(awaiting evaluation. The output below \(from Interlisp-10\) illustrates this by showing the state of the)]TJ +T* +0 Tw +(push-down list at the point in the computation of )Tj +/TT12 1 Tf +22.0444 0 TD +(\(FACT 1\))Tj +/TT8 1 Tf +4.8008 0 TD +( when the unbound atom )Tj +/TT12 1 Tf +11.4492 0 TD +(L)Tj +/TT8 1 Tf +0.6001 0 TD +( is reached.)Tj +/TT19 1 Tf +-36.8945 -1.6667 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +( FACT\(1\))Tj +-0.3202 -1 TD +(u.b.a. L {in FACT} in \(\(ZEROP NO L\))Tj +T* +(\(L broken\))Tj +T* +(:BTV!)Tj +T* +( *TAIL* \(L\))Tj +T* +( *ARG1 \(\(\(ZEROP N\) L\) \(T \(ITIMES N \(FACT \(SUB1 N\)\)\)\)\))Tj +T* +(COND)Tj +T* +( *FORM* \(COND \(\(ZEROP N\) L\) \(T \(ITIMES N \(FACT \(SUB1 N\)\)\)\)\))Tj +T* +( *TAIL* \(\(COND \(\(ZEROP N\) L\) \(T \(ITIMES N \(FACT \(SUB1 N\)\)\)\)\)\))Tj +T* +( N 0)Tj +T* +(FACT)Tj +T* +( *FORM* \(FACT \(SUB1 N\)\))Tj +T* +( *FN* ITIMES)Tj +T* +( *TAIL* \(\(FACT \(SUB1 N\)\)\))Tj +T* +( *ARGVAL* 1)Tj +T* +( *FORM* \(ITIMES N \(FACT \(SUB1 N\)\)\))Tj +T* +( *TAIL* \(\(ITIMES N \(FACT \(SUB1 N\)\)\)\))Tj +T* +( *ARG1 \(\(\(ZEROP N\) L\) \(T \(ITIMES N \(FACT \(SUB1 N\)\)\)\)\))Tj +T* +(COND)Tj +T* +( *FORM* \(COND \(\(ZEROP N\) L\) \(T \(ITIMES N \(FACT \(SUB1 N\)\)\)\)\))Tj +T* +( *TAIL* \(\(COND \(\(ZEROP N\) L\) \(T \(ITIMES N \(FACT \(SUB1 N\)\)\)\)\)\))Tj +T* +( N 1)Tj +T* +(FACT)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +/TT19 47 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +51 0 obj +<< +/Length 7973 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-12)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 570.14 Tm +(**TOP**)Tj +/TT8 1 Tf +-2.6667 -1.8444 TD +0.1367 Tw +(Internal calls to )Tj +/TT12 1 Tf +7.474 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1367 Tw +(, e.g., from )Tj +/TT12 1 Tf +5.3519 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1367 Tw +[( and the interpreter, are marked on the push-down list by a)]TJ +-17.6266 -1.2889 TD +0.1633 Tw +(special mark or blip which the backtrace prints as )Tj +/TT12 1 Tf +23.6214 0 TD +0 Tw +(*FORM*)Tj +/TT8 1 Tf +3.6006 0 TD +0.1633 Tw +[(. The genealogy of )]TJ +/TT12 1 Tf +9.4148 0 TD +0 Tw +(*FORM*)Tj +/TT8 1 Tf +3.6006 0 TD +0.1633 Tw +(s is thus a)Tj +-40.2374 -1.2889 TD +0.2311 Tw +[(history of the computation. Other temporary information stored on the stack by the interpreter)]TJ +0 -1.2222 TD +0.02 Tw +(includes the tail of a partially evaluated implicit )Tj +/TT12 1 Tf +21.5824 0 TD +0 Tw +(PROGN)Tj +/TT8 1 Tf +3.0005 0 TD +0.02 Tw +[( \(e.g., a cond clause or lambda expression\) and)]TJ +-24.5829 -1.2889 TD +0.0956 Tw +(the tail of a partially evaluated form \(i.e., those arguments not yet evaluated\), both indicated on the)Tj +0 -1.2222 TD +0.3011 Tw +(backtrace by )Tj +/TT12 1 Tf +6.4089 0 TD +0 Tw +(*TAIL*)Tj +/TT8 1 Tf +3.6006 0 TD +0.3011 Tw +(, the values of arguments that have already been evaluated, indicated by)Tj +/TT12 1 Tf +-10.0094 -1.2889 TD +0 Tw +(*ARGVAL*)Tj +/TT8 1 Tf +4.8008 0 TD +0.1933 Tw +(, and the names of functions waiting to be called, indicated by )Tj +/TT12 1 Tf +29.9221 0 TD +0 Tw +(*FN*)Tj +/TT8 1 Tf +2.4004 0 TD +0.1933 Tw +(. )Tj +/TT12 1 Tf +1.1367 0 TD +0.4656 Tw +(*ARG1, ...,)Tj +-38.2599 -1.2889 TD +0 Tw +(*ARGn)Tj +/TT8 1 Tf +3.0005 0 TD +( are used by the backtrace to indicate the \(unnamed\) arguments to )Tj +/TT12 1 Tf +29.4937 0 TD +(SUBR)Tj +/TT8 1 Tf +2.4004 0 TD +(s.)Tj +-34.8945 -2.0667 TD +0.0211 Tw +(Note that a function is not actually entered and does not appear on the stack, until its arguments have)Tj +0 -1.2222 TD +0.2922 Tw +[(been evaluated \(except for nlambda functions, of course\). Also note that the )]TJ +/TT12 1 Tf +37.6949 0 TD +0 Tw +(*ARG1)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT12 1 Tf +0.7922 0 TD +(*FORM*)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT12 1 Tf +-45.0882 -1.2889 TD +(*TAIL*)Tj +/TT8 1 Tf +3.6006 0 TD +0.0522 Tw +[(, etc. bindings comprise the actual working storage. In other words, in the above example,)]TJ +-3.6006 -1.2889 TD +0.0767 Tw +(if a \(lower\) function changed the value of the )Tj +/TT12 1 Tf +20.8272 0 TD +0 Tw +(*ARG1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0767 Tw +[( binding, the )]TJ +/TT12 1 Tf +6.0835 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0767 Tw +[( would continue interpreting)]TJ +-32.3116 -1.2889 TD +0.0333 Tw +(the new binding as a list of )Tj +/TT12 1 Tf +12.3666 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0333 Tw +[( clauses. Similarly, if the )]TJ +/TT12 1 Tf +11.3987 0 TD +0 Tw +(*ARGVAL*)Tj +/TT8 1 Tf +4.8008 0 TD +0.0333 Tw +[( binding were changed, the new)]TJ +-30.9665 -1.2889 TD +0.0689 Tw +(value would be given to )Tj +/TT12 1 Tf +11.2946 0 TD +0 Tw +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.0689 Tw +[( as its first argument after its second argument had been evaluated,)]TJ +-14.8952 -1.2889 TD +0 Tw +(and )Tj +/TT12 1 Tf +1.9429 0 TD +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +( was actually called.)Tj +/TT12 1 Tf +-5.5435 -2.0667 TD +(*FORM*)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT12 1 Tf +0.6422 0 TD +(*TAIL*)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT12 1 Tf +0.6422 0 TD +(*ARGVAL*)Tj +/TT8 1 Tf +4.8008 0 TD +0.1422 Tw +(, etc., do not actually appear as variables on the stack, i.e., evaluating)Tj +/TT12 1 Tf +-13.2864 -1.2889 TD +0 Tw +(*FORM*)Tj +/TT8 1 Tf +3.6006 0 TD +0.28 Tw +[( or calling )]TJ +/TT12 1 Tf +5.486 0 TD +0 Tw +(STKSCAN)Tj +/TT8 1 Tf +4.2007 0 TD +0.28 Tw +[( to search for it will not work. However, the functions )]TJ +/TT12 1 Tf +27.5871 0 TD +0 Tw +(BLIPVAL)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +/TT12 1 Tf +-45.075 -1.2889 TD +(SETBLIPVAL)Tj +/TT8 1 Tf +6.001 0 TD +0.0656 Tw +(, and )Tj +/TT12 1 Tf +2.574 0 TD +0 Tw +(BLIPSCAN)Tj +/TT8 1 Tf +4.8008 0 TD +0.0656 Tw +[( described below are available for accessing these internal blips. These)]TJ +-13.3757 -1.2889 TD +0 Tw +(functions currently know about four different types of blips:)Tj +/TT12 1 Tf +10.2667 -2 TD +(*FN*)Tj +/TT8 1 Tf +3.0667 0 TD +(The name of a function about to be called)Tj +/TT12 1 Tf +-5.4667 -1.8444 TD +(*ARGVAL*)Tj +/TT8 1 Tf +5.4667 0 TD +(An argument for a function about to be called)Tj +/TT12 1 Tf +-4.2667 -1.8444 TD +(*FORM*)Tj +/TT8 1 Tf +4.2667 0 TD +(A form in the process of evaluation)Tj +/TT12 1 Tf +-4.2667 -1.8444 TD +(*TAIL*)Tj +/TT8 1 Tf +4.2667 0 TD +(The tail of a )Tj +/TT12 1 Tf +5.4609 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( clause, implicit )Tj +/TT12 1 Tf +7.1587 0 TD +(PROGN)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(, etc.)Tj +/TT12 1 Tf +-31.5876 -1.9867 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(BLIPVAL)Tj +/F1 1 Tf +10 0 0 10 193.2 246.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.07 246.86 Tm +(BLIPTYP)Tj +/F2 1 Tf +10 0 0 10 233.8761 246.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 236.6561 246.86 Tm +(IPOS)Tj +/F2 1 Tf +10 0 0 10 258.2596 246.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 261.0397 246.86 Tm +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22831.9([Function])]TJ +-12.0715 -1.8444 TD +0.0722 Tw +(Returns the value of the specified blip of type )Tj +/TT14 1 Tf +20.9986 0 TD +0 Tw +(BLIPTYP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0722 Tw +[(. If )]TJ +/TT14 1 Tf +1.8866 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0722 Tw +[( is a number )]TJ +/TT12 1 Tf +5.9989 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0722 Tw +(, finds the)Tj +/TT12 1 Tf +-35.4851 -1.2889 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0778 Tw +(th blip of the desired type, searching the control chain beginning at the frame specified)Tj +-0.6001 -1.2889 TD +0.0489 Tw +(by the stack descriptor )Tj +/TT14 1 Tf +10.4539 0 TD +0 Tw +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0489 Tw +[(. If )]TJ +/TT14 1 Tf +1.8166 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +[( is )]TJ +/TT12 1 Tf +1.3126 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +[(, 1 is used. If )]TJ +/TT14 1 Tf +6.2948 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +[( is )]TJ +/TT12 1 Tf +1.3126 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0489 Tw +(, returns the number of)Tj +-29.5919 -1.2889 TD +0 Tw +(blips of the specified type at )Tj +/TT14 1 Tf +12.6675 0 TD +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT12 1 Tf +-17.7345 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(SETBLIPVAL)Tj +/F1 1 Tf +10 0 0 10 209.4 175.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.27 175.58 Tm +(BLIPTYP)Tj +/F2 1 Tf +10 0 0 10 250.0761 175.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 252.8561 175.58 Tm +(IPOS)Tj +/F2 1 Tf +10 0 0 10 274.4597 175.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 277.2397 175.58 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 282.6405 175.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 285.4205 175.58 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-20122.9([Function])]TJ +-14.7805 -1.8444 TD +0.1722 Tw +(Sets the value of the specified blip of type )Tj +/TT14 1 Tf +20.1755 0 TD +0 Tw +(BLIPTYP)Tj +/TT8 1 Tf +4.2007 0 TD +0.1722 Tw +[(. Searches for the )]TJ +/TT14 1 Tf +8.8499 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1722 Tw +(th blip of the)Tj +-33.8262 -1.2889 TD +0.2878 Tw +(desired type, beginning with the frame specified by the stack descriptor )Tj +/TT14 1 Tf +35.1114 0 TD +0 Tw +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.2878 Tw +(, and)Tj +-37.5117 -1.2889 TD +0 Tw +(following the control chain.)Tj +-2.6667 -2 TD +(\()Tj +/TT18 1 Tf +0.333 0 TD +(BLIPSCAN)Tj +/TT16 1 Tf +4.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(BLIPTYP)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +[(\) )-25002.6([Function])]TJ +-9.5677 -1.8444 TD +0.0867 Tw +(Returns a stack pointer to the frame in which a blip of type )Tj +/TT14 1 Tf +27.3567 0 TD +0 Tw +(BLIPTYP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0867 Tw +[( is located. Search)]TJ +-31.5573 -1.2889 TD +0 Tw +(begins at the frame specified by the stack descriptor )Tj +/TT14 1 Tf +23.1494 0 TD +(IPOS)Tj +/TT8 1 Tf +2.4004 0 TD +( and follows the control chain.)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT16 19 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +54 0 obj +<< +/Length 6305 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-13)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT4 1 Tf +-26.718 -4.38 TD +(Generators)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 551.54 Tm +(A )Tj +/TT10 1 Tf +1.1878 0 TD +(generator)Tj +/TT8 1 Tf +3.8335 0 TD +0.16 Tw +[( is like a subroutine except that it retains information about previous times it has been)]TJ +-5.0213 -1.2222 TD +0.12 Tw +[(called. Some of this state may be data \(for example, the seed in a random number generator\), and)]TJ +T* +0.0056 Tw +(some may be in program state \(as in a recursive generator which finds all the atoms in a list structure\).)Tj +T* +0 Tw +(For example, if )Tj +/TT12 1 Tf +6.8701 0 TD +(LISTGEN)Tj +/TT8 1 Tf +4.2007 0 TD +( is defined by:)Tj +/TT12 1 Tf +-8.4041 -1.6667 TD +(\(DEFINEQ \(LISTGEN \(L\))Tj +1.3333 -1 TD +( \(if L then \(PRODUCE \(CAR L\)\))Tj +T* +( \(LISTGEN \(CDR L\)\)\)\))Tj +/TT8 1 Tf +-4 -1.8444 TD +0.14 Tw +(we can use the function )Tj +/TT12 1 Tf +11.389 0 TD +0 Tw +(GENERATOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.14 Tw +[( \(described below\) to create a generator that uses )]TJ +/TT12 1 Tf +23.0832 0 TD +0 Tw +(LISTGEN)Tj +/TT8 1 Tf +4.2007 0 TD +0.14 Tw +[( to)]TJ +-44.0738 -1.2889 TD +0 Tw +(produce the elements of a list one at a time, e.g.,)Tj +/TT12 1 Tf +2.6667 -1.6 TD +(\(SETQ GR \(GENERATOR \(LISTGEN \(A B C\)\)\)\))Tj +/TT8 1 Tf +-2.6667 -1.8444 TD +(creates a generator, which can be called by)Tj +/TT12 1 Tf +2.6667 -1.6 TD +(\(GENERATE GR\))Tj +/TT8 1 Tf +-2.6667 -1.8444 TD +0.0322 Tw +(to produce as values on successive calls, )Tj +/TT12 1 Tf +18.2158 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.5322 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.5322 0 TD +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +[(. When )]TJ +/TT12 1 Tf +3.7397 0 TD +0 Tw +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0322 Tw +[( \(not )]TJ +/TT12 1 Tf +2.3516 0 TD +0 Tw +(GENERATOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0322 Tw +(\) is called the first)Tj +-37.3735 -1.2889 TD +0.0733 Tw +(time, it simply starts evaluating )Tj +/TT12 1 Tf +14.5971 0 TD +0.1756 Tw +(\(LISTGEN \(A B C\)\))Tj +/TT8 1 Tf +11.3284 0 TD +0.0733 Tw +(. )Tj +/TT12 1 Tf +0.8967 0 TD +0 Tw +(PRODUCE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0733 Tw +[( gets called from )]TJ +/TT12 1 Tf +7.851 0 TD +0 Tw +(LISTGEN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0733 Tw +(, and)Tj +-43.0745 -1.2889 TD +0.1478 Tw +(pops back up to )Tj +/TT12 1 Tf +7.8924 0 TD +0 Tw +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1478 Tw +[( with the indicated value after saving the state. When )]TJ +/TT12 1 Tf +25.6553 0 TD +0 Tw +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1478 Tw +[( gets)]TJ +-43.1493 -1.2889 TD +0.11 Tw +(called again, it continues from where the last )Tj +/TT12 1 Tf +20.923 0 TD +0 Tw +(PRODUCE)Tj +/TT8 1 Tf +4.2007 0 TD +0.11 Tw +[( left off. This process continues until finally)]TJ +/TT12 1 Tf +-25.1237 -1.2889 TD +0 Tw +(LISTGEN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1344 Tw +[( completes and returns a value \(it doesnt matter what it is\). )]TJ +/TT12 1 Tf +28.5676 0 TD +0 Tw +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1344 Tw +[( then returns GR)]TJ +-37.5691 -1.2889 TD +0.0156 Tw +(itself as its value, so that the program that called )Tj +/TT12 1 Tf +21.7698 0 TD +0 Tw +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0156 Tw +[( can tell that it is finished, i.e., there are no)]TJ +-26.5706 -1.2889 TD +0 Tw +(more values to be generated.)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(GENERATOR)Tj +/F1 1 Tf +10 0 0 10 156 306.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.87 306.46 Tm +(FORM)Tj +/F2 1 Tf +10 0 0 10 180.4735 306.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 183.2535 306.46 Tm +(COMVAR)Tj +/TT12 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19601.1([NLambda Function])]TJ +-10.5622 -1.8444 TD +0.2956 Tw +(An nlambda function that creates a generator which uses )Tj +/TT14 1 Tf +28.099 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2956 Tw +[( to compute values.)]TJ +/TT12 1 Tf +-30.4994 -1.2889 TD +0 Tw +(GENERATOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.2322 Tw +[( returns a )]TJ +/TT10 1 Tf +5.1508 0 TD +(generator handle)Tj +/TT8 1 Tf +6.9827 0 TD +[( which is represented by a dotted pair of stack)]TJ +-17.5344 -1.2889 TD +0 Tw +(pointers.)Tj +/TT14 1 Tf +0 -2 TD +(COMVAR)Tj +/TT8 1 Tf +3.6006 0 TD +0.1544 Tw +[( is optional. If its value \()]TJ +/TT12 1 Tf +11.961 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1544 Tw +[( of\) is a generator handle, the list structure and)]TJ +-17.962 -1.2889 TD +0 Tw +(stack pointers will be reused. Otherwise, a new generator handle will be constructed.)Tj +/TT12 1 Tf +0 -2 TD +(GENERATOR)Tj +/TT8 1 Tf +5.4009 0 TD +( compiles open.)Tj +/TT12 1 Tf +-8.0675 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(PRODUCE)Tj +/F1 1 Tf +10 0 0 10 145.2 199.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 199.18 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30050.7([Function])]TJ +-4.8526 -1.8444 TD +0.1878 Tw +(Used from within a generator to return )Tj +/TT14 1 Tf +18.8296 0 TD +0 Tw +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1878 Tw +[( as the value of the corresponding call to)]TJ +/TT12 1 Tf +-20.6299 -1.2889 TD +0 Tw +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT12 1 Tf +-7.4674 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(GENERATE)Tj +/F1 1 Tf +10 0 0 10 150.6 151.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 153.47 151.1 Tm +(HANDLE)Tj +/F2 1 Tf +10 0 0 10 185.8752 151.1 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 188.6552 151.1 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25541.3([Function])]TJ +-9.3621 -1.8444 TD +0.2644 Tw +(Restarts the generator represented by )Tj +/TT14 1 Tf +18.1191 0 TD +0 Tw +(HANDLE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2644 Tw +(. )Tj +/TT14 1 Tf +1.2789 0 TD +0 Tw +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2644 Tw +[( is returned as the value of the)]TJ +/TT12 1 Tf +-24.7989 -1.2889 TD +0 Tw +(PRODUCE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0567 Tw +[( which last suspended the operation of the generator. When the generator runs)]TJ +-4.2007 -1.2889 TD +0 Tw +(out of values, )Tj +/TT12 1 Tf +6.2158 0 TD +(GENERATE)Tj +/TT8 1 Tf +4.8008 0 TD +( returns )Tj +/TT14 1 Tf +3.7041 0 TD +(HANDLE)Tj +/TT8 1 Tf +3.6006 0 TD +( itself.)Tj +-23.6546 -2.0667 TD +(Examples:)Tj +0 -2 TD +0.0167 Tw +(The following function will go down recursively through a list structure and produce the atoms in the)Tj +0 -1.2222 TD +0 Tw +(list structure one at a time.)Tj +/TT12 1 Tf +2.6667 -1.6 TD +(\(DEFINEQ \(LEAVESG \(L\))Tj +4.6667 -1 TD +(\(if \(ATOM L\))Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +57 0 obj +<< +/Length 6164 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-14)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 192 570.14 Tm +( then \(PRODUCE L\))Tj +0 -1 TD +( else \(LEAVESG \(CAR L\)\))Tj +T* +( \(if \(CDR L\))Tj +T* +( then \(LEAVESG \(CDR L\)])Tj +/TT8 1 Tf +-7.3333 -1.8444 TD +0.0233 Tw +[(The following function prints each of these atoms as it appears. It illustrates how a loop can be set up)]TJ +0 -1.2222 TD +0 Tw +(to use a generator.)Tj +/TT12 1 Tf +2.6667 -1.6 TD +(\(DEFINEQ \(PLEAVESG1 \(L\))Tj +4.6667 -1 TD +(\(PROG \(X LHANDLE\))Tj +T* +( \(SETQ LHANDLE \(GENERATOR \(LEAVESG L\)\)\))Tj +T* +( LP \(SETQ X \(GENERATE LHANDLE\)\))Tj +T* +( \(if \(EQ X LHANDLE\))Tj +T* +( then \(RETURN NIL\)\))Tj +T* +( \(PRINT X\))Tj +T* +( \(GO LP\)\)])Tj +/TT8 1 Tf +-7.3333 -1.8444 TD +0.1967 Tw +(The loop terminates when the value of the generator is )Tj +/TT12 1 Tf +26.3509 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.1967 Tw +[( to the dotted pair which is the value)]TJ +-27.5511 -1.2889 TD +0.0622 Tw +(produced by the call to )Tj +/TT12 1 Tf +10.7452 0 TD +0 Tw +(GENERATOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0622 Tw +[(. A CLISP iterative operator, )]TJ +/TT12 1 Tf +13.3772 0 TD +0 Tw +(OUTOF)Tj +/TT8 1 Tf +3.0005 0 TD +0.0622 Tw +(, is provided which makes it)Tj +-32.5238 -1.2889 TD +0.0933 Tw +(much easier to write the loop in )Tj +/TT12 1 Tf +14.9243 0 TD +0 Tw +(PLEAVESG1)Tj +/TT8 1 Tf +5.4009 0 TD +0.0933 Tw +(. )Tj +/TT12 1 Tf +0.9367 0 TD +0 Tw +(OUTOF)Tj +/TT8 1 Tf +3.0005 0 TD +0.0933 Tw +[( \(or )]TJ +/TT12 1 Tf +1.9606 0 TD +0 Tw +(outof)Tj +/TT8 1 Tf +3.0005 0 TD +0.0933 Tw +(\) can precede a form which is to be)Tj +-29.2234 -1.2889 TD +0.0489 Tw +[(used as a generator. On each iteration, the iteration variable will be set to successive values returned)]TJ +0 -1.2222 TD +0.0756 Tw +[(by the generator; the loop will be terminated automatically when the generator runs out. Therefore,)]TJ +T* +0 Tw +(the following is equivalent to the above program )Tj +/TT12 1 Tf +21.8267 0 TD +(PLEAVESG1)Tj +/TT8 1 Tf +5.4009 0 TD +(:)Tj +/TT12 1 Tf +-27.2275 -1.6667 TD +(\(DEFINEQ \(PLEAVESG2 \(L\) \(for X outof \(LEAVESG L\) do \(PRINT X\)\)])Tj +/TT8 1 Tf +0 -1.8444 TD +(Here is another example; the following form will print the first )Tj +/TT12 1 Tf +27.9316 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( atoms.)Tj +/TT12 1 Tf +-28.5317 -1.6667 TD +(\(for X outof \(MAPATOMS \(FUNCTION PRODUCE\)\) as I from 1 to N do \(PRINT X\)\))Tj +/TT4 1 Tf +10 0 0 10 102 297.2 Tm +(Coroutines)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 294.49 m +558.01 294.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 280.54 Tm +0.0189 Tw +[(This package provides facilities for the creation and use of fully general coroutine structures. It uses a)]TJ +0 -1.2222 TD +0.0767 Tw +(stack pointer to preserve the state of a coroutine, and allows arbitrary switching between )Tj +/TT14 1 Tf +40.5685 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0767 Tw +[( different)]TJ +-41.1686 -1.2889 TD +0.1244 Tw +[(coroutines, rather than just a call to a generator and return. This package is slightly more efficient)]TJ +0 -1.2222 TD +0.0133 Tw +(than the generator package described above, and allows more flexibility on specification of what to do)Tj +T* +0 Tw +(when a coroutine terminates.)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(COROUTINE)Tj +/F1 1 Tf +10 0 0 10 204 216.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.87 216.66 Tm +(CALLPTR)Tj +/F2 1 Tf +10 0 0 10 244.6761 216.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 247.4561 216.66 Tm +(COROUTPTR)Tj +/F2 1 Tf +10 0 0 10 296.0641 216.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 298.8441 216.66 Tm +(COROUTFORM)Tj +/F2 1 Tf +10 0 0 10 352.8528 216.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 355.6328 216.66 Tm +(ENDFORM)Tj +/TT12 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-5181.1([NLambda Function])]TJ +-24.9822 -1.8444 TD +0.0922 Tw +(This nlambda function is used to create a coroutine and initialize the linkage. )Tj +/TT14 1 Tf +35.794 0 TD +0 Tw +(CALLPTR)Tj +/TT8 1 Tf +-35.794 -1.2889 TD +(and )Tj +/TT14 1 Tf +2.0773 0 TD +(COROUTPTR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1344 Tw +[( are the names of two variables, which will be set to appropriate stack)]TJ +-7.4782 -1.2889 TD +0.1267 Tw +[(pointers. If the values of )]TJ +/TT14 1 Tf +11.9519 0 TD +0 Tw +(CALLPTR)Tj +/TT8 1 Tf +4.2007 0 TD +0.1267 Tw +[( or )]TJ +/TT14 1 Tf +1.6943 0 TD +0 Tw +(COROUTPTR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1267 Tw +[( are already stack pointers, the stack)]TJ +-23.2477 -1.2889 TD +0.3278 Tw +(pointers will be reused. )Tj +/TT14 1 Tf +12.5129 0 TD +0 Tw +(COROUTFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.3278 Tw +[( is the form which is evaluated to start the)]TJ +-18.5139 -1.2889 TD +0 Tw +(coroutine; )Tj +/TT14 1 Tf +4.8675 0 TD +(ENDFORM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1556 Tw +[( is a form to be evaluated if )]TJ +/TT14 1 Tf +13.4984 0 TD +0 Tw +(COROUTFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.1556 Tw +[( actually returns when it)]TJ +-28.5675 -1.2889 TD +0 Tw +(runs out of values.)Tj +/TT12 1 Tf +0 -2 TD +(COROUTINE)Tj +/TT8 1 Tf +5.4009 0 TD +( compiles open.)Tj +/TT12 1 Tf +-8.0675 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(RESUME)Tj +/F1 1 Tf +10 0 0 10 187.8 104.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.67 104.18 Tm +(FROMPTR)Tj +/F2 1 Tf +10 0 0 10 228.4761 104.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 231.2561 104.18 Tm +(TOPTR)Tj +/F2 1 Tf +10 0 0 10 258.2605 104.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 261.0405 104.18 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22831.8([Function])]TJ +-12.0716 -1.8444 TD +0.1389 Tw +[(Used to transfer control from one coroutine to another. )]TJ +/TT14 1 Tf +26.5131 0 TD +0 Tw +(FROMPTR)Tj +/TT8 1 Tf +4.2007 0 TD +0.1389 Tw +[( should be the stack)]TJ +-30.7138 -1.2889 TD +0.1689 Tw +(pointer for the current coroutine, which will be smashed to preserve the current state.)Tj +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(TOPTR)Tj +/TT8 1 Tf +3.0005 0 TD +0.1211 Tw +[( should be the stack pointer which has preserved the state of the coroutine to be)]TJ +-3.0005 -1.2889 TD +0.1389 Tw +(transferred to, and )Tj +/TT14 1 Tf +8.9006 0 TD +0 Tw +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +[( is the value that is to be returned to the latter coroutine as the)]TJ +-10.7008 -1.2889 TD +0 Tw +(value of the )Tj +/TT12 1 Tf +5.4541 0 TD +(RESUME)Tj +/TT8 1 Tf +3.6006 0 TD +( which suspended the operation of that coroutine.)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +60 0 obj +<< +/Length 4938 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-15)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.1967 Tw +(For example, the following is the way one might write the )Tj +/TT12 1 Tf +28.0164 0 TD +0 Tw +(LEAVES)Tj +/TT8 1 Tf +3.6006 0 TD +0.1967 Tw +[( program using the coroutine)]TJ +-31.6169 -1.2889 TD +0 Tw +(package:)Tj +/TT12 1 Tf +4 -1.6 TD +(\(DEFINEQ \(LEAVESC \(L COROUTPTR CALLPTR\))Tj +0 -1 TD +( \(if \(ATOM L\))Tj +T* +( then \(RESUME COROUTPTR CALLPTR L\))Tj +T* +( else \(LEAVESC \(CAR L\) COROUTPTR CALLPTR\))Tj +T* +( \(if \(CDR L\) then \(LEAVESC \(CDR L\) COROUTPTR CALLPTR\)\)\)\)])Tj +/TT8 1 Tf +-4 -1.8444 TD +(A function )Tj +/TT12 1 Tf +4.9849 0 TD +(PLEAVESC)Tj +/TT8 1 Tf +4.8008 0 TD +( which uses )Tj +/TT12 1 Tf +5.4126 0 TD +(LEAVESC)Tj +/TT8 1 Tf +4.2007 0 TD +( can be defined as follows:)Tj +/TT12 1 Tf +-15.3989 -1.6667 TD +(\(DEFINEQ \(PLEAVESC \(L\))Tj +0 -1 TD +( \(bind PLHANDLE LHANDLE)Tj +T* +( first \(COROUTINE PLHANDLE LHANDLE)Tj +T* +( \(LEAVESC L LHANDLE PLHANDLE\))Tj +T* +( \(RETFROM PLEAVESC\)\))Tj +T* +( do \(PRINT \(RESUME PLHANDLE LHANDLE\)\)\)\)])Tj +/TT8 1 Tf +-4 -1.8444 TD +(By )Tj +/TT12 1 Tf +1.4492 0 TD +(RESUME)Tj +/TT8 1 Tf +3.6006 0 TD +(ing )Tj +/TT12 1 Tf +1.7114 0 TD +(LEAVESC)Tj +/TT8 1 Tf +4.2007 0 TD +0.0322 Tw +[( repeatedly, this function will print all the leaves of list L and then return out)]TJ +-10.9619 -1.2889 TD +0 Tw +(of )Tj +/TT12 1 Tf +1.2378 0 TD +(PLEAVESC)Tj +/TT8 1 Tf +4.8008 0 TD +0.1089 Tw +[( via the )]TJ +/TT12 1 Tf +3.8198 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1089 Tw +[(. The )]TJ +/TT12 1 Tf +3.0005 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1089 Tw +[( is necessary to break out of the non-terminating do-)]TJ +-21.2603 -1.2889 TD +0 Tw +(loop. This was done to illustrate the additional flexibility allowed through the use of )Tj +/TT14 1 Tf +37.7363 0 TD +(ENDFORM)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-41.937 -2.0667 TD +0.0911 Tw +(We use two coroutines working on two trees in the example )Tj +/TT12 1 Tf +27.7854 0 TD +0 Tw +(EQLEAVES)Tj +/TT8 1 Tf +4.8008 0 TD +0.0911 Tw +(, defined below. )Tj +/TT12 1 Tf +7.9533 0 TD +0 Tw +(EQLEAVES)Tj +/TT8 1 Tf +-40.5395 -1.2889 TD +0.0511 Tw +(tests to see whether two trees have the same leaf set in the same order, e.g., )Tj +/TT12 1 Tf +34.1747 0 TD +0.1211 Tw +(\(EQLEAVES \(A B C\))Tj +-34.1747 -1.2889 TD +0 Tw +(\(A B \(C\)\)\))Tj +/TT8 1 Tf +6.6011 0 TD +( is true.)Tj +/TT12 1 Tf +-2.6011 -1.6667 TD +(\(DEFINEQ \(EQLEAVES \(L1 L2\))Tj +0 -1 TD +( \(bind LHANDLE1 LHANDLE2 PE EL1 EL2)Tj +T* +( first \(COROUTINE PE LHANDLE1 \(LEAVESC L1 LHANDLE1 PE\) NO-MORE\))Tj +T* +( \(COROUTINE PE LHANDLE2 \(LEAVESC L2 LHANDLE2 PE\) NO-MORE\))Tj +T* +( do \(SETQ EL1 \(RESUME PE LHANDLE1\)\))Tj +T* +( \(SETQ EL2 \(RESUME PE LHANDLE2\)\))Tj +T* +( \(if \(NEQ EL1 EL2\))Tj +T* +( then \(RETURN NIL\)\))Tj +T* +( repeatuntil \(EQ EL1 NO-MORE\))Tj +T* +( finally \(RETURN T\)\)\)])Tj +/TT4 1 Tf +10 0 0 10 54 232.4 Tm +(Possibilities Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 229.69 m +510.01 229.69 l +S +BT +/TT8 1 Tf +9 0 0 9 78 215.74 Tm +0.2378 Tw +[(A possibilities list is the interface between a generator and a consumer. The possibilities list is)]TJ +0 -1.2222 TD +0.1233 Tw +(initialized by a call to )Tj +/TT12 1 Tf +10.3271 0 TD +0 Tw +(POSSIBILITIES)Tj +/TT8 1 Tf +7.8013 0 TD +0.1233 Tw +(, and elements are obtained from it by using )Tj +/TT12 1 Tf +20.8473 0 TD +0 Tw +(TRYNEXT)Tj +/TT8 1 Tf +4.2007 0 TD +0.1233 Tw +[(. By)]TJ +-43.1764 -1.2889 TD +0.0433 Tw +(using the spaghetti stack to maintain separate environments, this package allows a regime in which a)Tj +0 -1.2222 TD +0.0233 Tw +(generator can put a few items in a possibilities list, suspend itself until they have been consumed, and)Tj +T* +0 Tw +(be subsequently aroused and generate some more.)Tj +/TT12 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(POSSIBILITIES)Tj +/F1 1 Tf +10 0 0 10 177.6123 151.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 180.4823 151.86 Tm +(FORM)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21109.3([NLambda Function])]TJ +-9.0541 -1.8444 TD +0.0933 Tw +(This nlambda function is used for the initial creation of a possibilities list. )Tj +/TT14 1 Tf +34.1641 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0933 Tw +[( will be)]TJ +-36.5645 -1.2889 TD +0.0822 Tw +[(evaluated to create the list. It should use the functions )]TJ +/TT12 1 Tf +25.2165 0 TD +0 Tw +(NOTE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[( and )]TJ +/TT12 1 Tf +2.3573 0 TD +0 Tw +(AU-REVOIR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0822 Tw +[( described)]TJ +-35.375 -1.2889 TD +0.0178 Tw +[(below to generate possibilities. Normally, one would set some variable to the possibilities)]TJ +0 -1.2222 TD +0 Tw +(list which is returned, so it can be used later, e.g.:)Tj +/TT12 1 Tf +4 -1.6 TD +(\(SETQ PLIST \(POSSIBILITIES \(GENERFN V1 V2\)\)\).)Tj +-4 -1.8444 TD +(POSSIBILITIES)Tj +/TT8 1 Tf +7.8013 0 TD +( compiles open.)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +63 0 obj +<< +/Length 7224 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-16)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 568.26 Tm +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(NOTE)Tj +/F1 1 Tf +10 0 0 10 177 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.87 568.26 Tm +(VAL)Tj +/F2 1 Tf +10 0 0 10 196.0726 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 198.8526 568.26 Tm +(LSTFLG)Tj +/TT12 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27941.2([Function])]TJ +-6.9621 -1.8444 TD +0.0033 Tw +(Used within a generator to put items on the possibilities list being generated. If )Tj +/TT14 1 Tf +35.4289 0 TD +0 Tw +(LSTFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.0011 Tc +0.0022 Tw +( is)Tj +-39.0295 -1.2889 TD +0 Tc +0.09 Tw +(equal to )Tj +/TT12 1 Tf +3.9852 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT14 1 Tf +0.59 0 TD +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( is treated as a single item. If )]TJ +/TT14 1 Tf +13.8369 0 TD +0 Tw +(LSTFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.09 Tw +[( is non-)]TJ +/TT12 1 Tf +3.4378 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +(, then the list )Tj +/TT14 1 Tf +6.2985 0 TD +0 Tw +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( is)]TJ +/TT12 1 Tf +-38.9501 -1.2889 TD +0 Tw +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0289 Tw +[(ed on the end of the possibilities list. Note that it is perfectly reasonable to create a)]TJ +-3.0005 -1.2889 TD +0.0133 Tw +(possibilities list using a second generator, and )Tj +/TT12 1 Tf +20.65 0 TD +0 Tw +(NOTE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[( that list as possibilities for the current)]TJ +-23.0504 -1.2889 TD +0.3678 Tw +(generator with )Tj +/TT14 1 Tf +7.5271 0 TD +0 Tw +(LSTFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.3678 Tw +[( equal to )]TJ +/TT12 1 Tf +5.1585 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3678 Tw +[(. The lower generator will be resumed at the)]TJ +-16.8863 -1.2889 TD +0 Tw +(appropriate point.)Tj +/TT12 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(AU-REVOIR)Tj +/F1 1 Tf +10 0 0 10 204 474.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.87 474.38 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24112.9([NoSpread Function])]TJ +-6.0526 -1.8444 TD +(Puts )Tj +/TT14 1 Tf +2.2148 0 TD +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0078 Tw +[( on the possibilities list if it is given, and then suspends the generator and returns)]TJ +-4.0151 -1.2889 TD +0.1767 Tw +(to the consumer in such a fashion that control will return to the generator at the )Tj +/TT12 1 Tf +38.2075 0 TD +0 Tw +(AU-)Tj +-38.2075 -1.2889 TD +(REVOIR)Tj +/TT8 1 Tf +3.6006 0 TD +( if the consumer exhausts the possibilities list.)Tj +/TT12 1 Tf +-3.6006 -2.0667 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0867 Tw +[( is not put on the possibilities list unless it is explicitly given as an argument to )]TJ +/TT12 1 Tf +36.3981 0 TD +0 Tw +(AU-)Tj +-38.1984 -1.2889 TD +(REVOIR)Tj +/TT8 1 Tf +3.6006 0 TD +0.0644 Tw +(, i.e., )Tj +/TT12 1 Tf +2.3989 0 TD +0 Tw +(\(AU-REVOIR\))Tj +/TT8 1 Tf +6.6011 0 TD +0.0644 Tw +[( and )]TJ +/TT12 1 Tf +2.3218 0 TD +0.1544 Tw +(\(AU-REVOIR NIL\))Tj +/TT8 1 Tf +9.1559 0 TD +0.0644 Tw +[( are )]TJ +/TT10 1 Tf +2.0029 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0644 Tw +[( the same. )]TJ +/TT12 1 Tf +5.1806 0 TD +0 Tw +(AU-REVOIR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0644 Tw +[( and)]TJ +/TT12 1 Tf +-37.9957 -1.2889 TD +0 Tw +(ADIEU)Tj +/TT8 1 Tf +3.0005 0 TD +( are lambda nospreads to enable them to distinguish these two cases.)Tj +/TT12 1 Tf +-5.6672 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(ADIEU)Tj +/F1 1 Tf +10 0 0 10 182.4 372.9 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.27 372.9 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-26512.9([NoSpread Function])]TJ +-3.6526 -1.8444 TD +(Like )Tj +/TT12 1 Tf +2.187 0 TD +(AU-REVOIR)Tj +/TT8 1 Tf +5.4009 0 TD +( but releases the generator instead of suspending it.)Tj +/TT12 1 Tf +-10.2546 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(TRYNEXT)Tj +/F1 1 Tf +10 0 0 10 193.2 336.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.07 336.42 Tm +(PLST)Tj +/F2 1 Tf +10 0 0 10 217.6735 336.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 220.4535 336.42 Tm +(ENDFORM)Tj +/F2 1 Tf +10 0 0 10 258.2596 336.42 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 261.0397 336.42 Tm +(VAL)Tj +/TT12 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-18091.9([NLambda Function])]TJ +-12.0715 -1.8444 TD +0.1122 Tw +[(This nlambda function allows a consumer to use a possibilities list. It removes the first)]TJ +0 -1.2222 TD +0.0444 Tw +(item from the possibilities list named by )Tj +/TT14 1 Tf +18.3121 0 TD +0 Tw +(PLST)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( \(i.e. )]TJ +/TT14 1 Tf +2.1919 0 TD +0 Tw +(PLST)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( must be an atom whose value is)]TJ +-25.3048 -1.2889 TD +0.23 Tw +[(a possiblities list\), and returns that item, provided it is not a generator handle. If a)]TJ +0 -1.2222 TD +0.3511 Tw +[(generator handle is encountered, the generator is reawakened. When it returns a)]TJ +T* +0.0522 Tw +[(possibilities list, this list is added to the front of the current list. When a call to )]TJ +/TT12 1 Tf +35.7901 0 TD +0 Tw +(TRYNEXT)Tj +/TT8 1 Tf +-35.7901 -1.2889 TD +0.0256 Tw +(causes a generator to be awakened, )Tj +/TT14 1 Tf +15.9805 0 TD +0 Tw +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0256 Tw +[( is returned as the value of the )]TJ +/TT12 1 Tf +13.8045 0 TD +0 Tw +(AU-REVOIR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0256 Tw +[( which)]TJ +-36.9862 -1.2889 TD +0.2733 Tw +[(put that generator to sleep. If )]TJ +/TT14 1 Tf +15.2522 0 TD +0 Tw +(PLST)Tj +/TT8 1 Tf +2.4004 0 TD +0.2733 Tw +[( is empty, it evaluates )]TJ +/TT14 1 Tf +11.2109 0 TD +0 Tw +(ENDFORM)Tj +/TT8 1 Tf +4.2007 0 TD +0.2733 Tw +[( in the callers)]TJ +-33.0642 -1.2889 TD +0 Tw +(environment.)Tj +/TT12 1 Tf +0 -2 TD +(TRYNEXT)Tj +/TT8 1 Tf +4.2007 0 TD +( compiles open.)Tj +/TT12 1 Tf +-6.8674 -2.2089 TD +(\()Tj +/TT18 1 Tf +0.6001 0 TD +(CLEANPOSLST)Tj +/F1 1 Tf +10 0 0 10 214.8 202.54 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 217.67 202.54 Tm +(PLST)Tj +/TT12 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27050.6([Function])]TJ +-7.8527 -1.8444 TD +0.1711 Tw +(This function is provided to release any stack pointers which may be left in the )Tj +/TT14 1 Tf +37.5916 0 TD +0 Tw +(PLST)Tj +/TT8 1 Tf +-37.5916 -1.2889 TD +(which was not used to exhaustion.)Tj +-5.3333 -2 TD +0.09 Tw +(For example, )Tj +/TT12 1 Tf +6.1761 0 TD +0 Tw +(FIB)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( is a generator for fibonnaci numbers. It starts out by )]TJ +/TT12 1 Tf +24.7607 0 TD +0 Tw +(NOTE)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +(ing its two arguments,)Tj +-35.1374 -1.2889 TD +0.0267 Tw +[(then suspends itself. Thereafter, on being re-awakened, it will )]TJ +/TT12 1 Tf +28.0201 0 TD +0 Tw +(NOTE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0267 Tw +[( two more terms in the series and)]TJ +-30.4205 -1.2889 TD +0 Tw +(suspends again. )Tj +/TT12 1 Tf +7.5767 0 TD +(PRINTFIB)Tj +/TT8 1 Tf +4.8008 0 TD +( uses )Tj +/TT12 1 Tf +2.4297 0 TD +(FIB)Tj +/TT8 1 Tf +1.8003 0 TD +( to print the first )Tj +/TT12 1 Tf +7.4736 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( fibonacci numbers.)Tj +/TT12 1 Tf +-20.6812 -1.6667 TD +(\(DEFINEQ \(FIB \(F1 F2\))Tj +0 -1 TD +( \(do \(NOTE F1\))Tj +T* +( \(NOTE F2\))Tj +T* +( \(SETQ F1 \(IPLUS F1 F2\)\))Tj +T* +( \(SETQ F2 \(IPLUS F1 F2\)\))Tj +T* +( \(AU-REVOIR\)])Tj +/TT8 1 Tf +-4 -1.8444 TD +0.0189 Tw +(Note that this )Tj +/TT12 1 Tf +6.3462 0 TD +0 Tw +(AU-REVOIR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0189 Tw +[( just suspends the generator and adds nothing to the possibilities list except)]TJ +-11.7471 -1.2889 TD +0 Tw +(the generator.)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 23 0 R +/F2 24 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 18 0 R +/TT18 25 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +66 0 obj +<< +/Length 485 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-17)Tj +/TT6 1 Tf +10 0 0 10 321.18 612 Tm +(VARIABLE BINDINGS AND THE STACK)Tj +/TT12 1 Tf +9 0 0 9 114 570.14 Tm +( \(DEFINEQ \(PRINTFIB \(N\))Tj +0 -1 TD +( \(PROG \(\(FL \(POSSIBILITIES \(FIB 0 1\)\)\)\))Tj +T* +( \(RPTQ N \(PRINT \(TRYNEXT FL\)\)\))Tj +T* +( \(CLEANPOSLST FL\)])Tj +/TT8 1 Tf +-4 -1.8444 TD +(Note that )Tj +/TT12 1 Tf +4.4165 0 TD +(FIB)Tj +/TT8 1 Tf +1.8003 0 TD +( itself will never terminate.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +69 0 obj +<< +/Length 203 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(11-18)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +71 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +74 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +75 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +76 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +77 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +78 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +79 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBFPOB+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 81 0 R +>> +endobj +81 0 obj +<< +/Filter /FlateDecode +/Length 20018 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($CkE`Bi C9͎~03K6JJ4H#ZKS))R &EEZ>*R +B1MO3{w{s}ͼ ُ0L|`I'5-PMOEd\<*QV "@rqcTM~;:_uq=80w$@]7ʿ gn%θ:8]Чy^ +lw  {Vpa\8Oi +F(`4:ZvpqD C)j5 ؿ5 -&/lȁ-p [ȃM\x̹/lbS'Uxρ!8uB'I@) 9??va!! )Y w'-6[Rp'L#%/By܃+735Z_EdQhIXA^/=$a~64 ,6G3VFw a s\[#\9TUJN14Ub2JU(#3 qH\K2Ƶy)WMp@:}fW-d t׏\Ktl2:=a&H" >wI"j _^6YhDvL{*AƒX|9ND7ݶ,9Qdbh,_r %ju^'>RF fl/soΘO͔})M~ؗFiJrD^"4yǜ%eG"K \";2W2mW7ʖH3qF}6'7pٝ2־e>BJM~KVC(F:/E۽R1u9ulR:,{jMi*=5|{ uŞc))z.A.vۥVUlL\8KBH,)x] \uεk3K;\l즬}R#.1;Jw[mcxg6b齊#N.^=ˣ5xtc rr:kV:# )p)8Nho e҄ti05`c6V`~&/茍!Fz|{e.)_L3Bw,v!dm[YFF>.UFzB?.wUxϝj8Ԩ1Ӫ'#mtȶ/z"2ָ! +" Qg 9ke\VÚ.59=څrWJgi*:k}A{jI<9>S_ʒ P'Lgw<9'f72*I@3G5;$\J0ϾحːQ4UxNc0^1X*!qnD#o0Z#I 2ubQ "!8 3c yO[yK%Z2jV{<-;qAzTtM.,\:D8UAY)Q y{(]C_;w 5棾͏K%B 󧦶_"c%*u}Ag}>ɘ9k7=Rzv63zZ|Eۖ=V:q+勁xHٳ0[g˯~{eUM=Q_pAu ֒AiuSZ>ؒ\׵.3BXה˱"\{ŲνQb-7ٍ In'F9CHMOp +:D]#ʻ=(0tssѨ3`T$#baSiF[?-HƳ-VGs2)m|ذ,EAJ1 irMFbTNu.mÝа6#"ѶÕwv'0s<&$ _3q OX wJXu +a4A+^ SpeAb!'?$SȣO2TgJ2HJZNG&ɟI9F>&I/@.?P Q'ͥn:>D*-<4KA}/:n6;}vO4,}=d6MdSYI-e/լZX{IvEEv pE>>O?14_ʟ/zox1~O^e:4Qٔa$@ņEԢG3az 5✓;\~UfBȶli1i +c`nDS\B$CI`Lѭ +e1α6b+L`#nn/mHws 2Fۖ7v[Wu;%1E.lY喉UJ_h֙a9˼bjI%$)5b I,/=dP'~,MEhǧf{lx )qᇑY`XjC+\hkY.Zf.ӭY)6(z,H9el߹d`EadjDj50K%nmS UR.!/ qƜә KKmg'tX00,( {JMqCUӻ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*zh⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^)>?t1;ֱiɑPE$ n-ȼH !6#SّٜGw9iU?8*M:k CK]\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` )s]Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5/O`yY@UY-РlKI:96֩%&De1#{imcEGAdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLZc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\+~[S1?7ꧾuܩE^/5IA# +hО%-e Oo_0hc 2~=ytLW,Z1ְZR+Ʈ17f<6cY1fjh/H2VQOhX,OtW"Ah۳\,jxf{[ + &gi Ƽe9,bXxX>M4d,<Ɵ$+j +#ǺG+ԍLοAXO-f9ζnf,,C-ݖΗ^צG9 +і[:?{YPJߔ?^KCGͷܠ0A橥/Kw=_B Zb衅KUDww+Xɪe)MXf_+PxcE-#iZ 4=t@!/Q8i5,\}܀E"/zաzԄv4hEUt lǥx ^܀) ܅{0Sx 6N:^$Ed%YED"}U1ROH i'ϐ9@FHLSM;$wrd"n-k=}!n13WͽǥE{Eu]sܷ )ef.HZT6 (DhjgdL'QVFQ@%֟V:hgĤ-љLkg@[cҎ;QƟs/ h:=?|ߏ]adUNuy+VS 〫sXGEҐ5Тl2 [*y5( +0m?{#8:Nh"ub*Q +1Q'6NGNP-;XZVj%^TqJ &. D8K(XՖ$24)X ckUCށYXv?lȦG 5AhcΥ ql3tؘ޸axʿ] YKCő4-izA GSF<6,4aVPj<ɭo8s:ZN/j,cIrKA@z5}g;ӡ.~T;B$a kHu_烢-LmIo+7%WAGb˻r{;"Qc<&=Yfzk +_a!N%u > ]-kw$4hH[uV"9>a*47JC/") I⟯gE^pwi.JC% `_ԒT T/@$KWO̺*S֝8XHd'ϧeug27;r~V*kX P Ir#֮;lP}Q.ccm޼<(@${94;=`gsFT]IO P o%0&H=Vx"sIz`,O /fH*?wUISRo/0Džu Ố +QM,ȅȪx, *a13XU% 7`32txQ8}a}×pxovqd22\k.y, ?!U%RC^%kIyDym%IEȻ#/<'7L$7A2jy .dtJ')4nt]MVچnr #=Jѳ ($)EIOJR`f*ji9:)"5Iڤ;% K;' OI7cY +s3/&i,e~F}@F\J, !/&T›0_ o78TcBe + 3/r`0dH +yW>a~! ۼ*0Q1p)mPds"E6 yfI&3,sǂ{xg\X$aD} +kwyBh0!Ye\Q.ʸy_ޣm/"i_YJTTʽҪ&6|ʪ'I/7J Duoוl?I1ުȪ5{lՖnV(X|bcmaO+^%=y~vPa4_3'cWr YٍwˍWSkl%͓)STPv|#M=Y}p~܀vk FK"^tϕK{UDrp!\p'͆D[n8j[oݧ[[  ~| ;pWm}].j2VAj)]q~nw}!S؝;A +U ;J"{ LG)$> +M*&Ofٴ $v&Ҭbh&14v3]ZtjoޑSv}QoOص=+D#>lwf'fO+.XaOI@PKB1LC)2Sp7"X rXzXৰ8 +ϣ:*3pDM>$!\Eɵ&*"7Nn#d&Bu|Xd YA'Mmv="(=5=JQRwc$FU!Ơ8ohu{kݖ WGE¨Bqsg{Q%(RZgGTJJh#XzV} F!4eDfyULT\"n↙ .ڑ +C[dPI$fx у`*؁kq&.hg3C%)A놲>֢Tv$4,j`$#ACυ| b?fA'XHoE,yƈPXhFϓ(6_N}b^y˛$Yc& XPR7d~ɇʐ/E iFjl|L*^bkG 8Jב{)۝bp/ HcwX(΢f~_pnFDGs}Z :ߡMH +JIeB9w`+0g L < +=,Y Y٪%JG&t)  2԰-|C v:s{y:"۠Їud}=񯙭xRdNLr/ 4,20dpɲF}OaT!?K0K!H >yZ|E(9ңg0l^*@ܚ=T2tKhfs=`a"4 pvL#.:-O (X ٌ[d6}aw m49l"rkb`mvˆAoi-Q*x% u  TE2QTGSUl,>"OkR. #-T; " n"Y׃¶\+Lę#X.Iq*=$d`9\2q="Xpd1;Н[c\ņA$/:؂FW'G8{ImeJdSQC͠ẩd>ZeY_lGovts# Q"#%qTvCˆ< RIK_0|!͉ !륾V2if}8cPC*E7|ǵ ${۝}Aۡ,8hZl ZdZdO}lj- Z<@UZ|-̢&-*&a׽j5sR}\I`c٥ʼnftg̫‡oMqe␥wcB ֬u=5Ƙע >Y6ޝRrT9UpdqJvG,Ȉş%ȼ~ś-;zR" ZxTQgЂM -5uf -te6xx]yz,1tJǬRBcl[Vά5&ހ^]AN-o]3qnu-]X,h9\.lwY8B{B֝^QYOFH/ZE/J. Š?瑅di +)y5kɹNPl \ҢITf1h->.]F/Wyc,c'j`-ʴ$-pEg@]-0i?[ dgarbչY- +pLxQ6qPZDuֆ-(Jh!Yi"Y c]qjϿ!I|HM= -V>1~ @ 7iN0N?^x21ّ'E0hgЂʛ]Yx$ڥ8h1YUYwJ VyͰtlI JgLU+[z87d،b̩kkܕ'ydtGe:+DQ`F#Z0nG؅;G +'Z̹گ›)8\R9 -|Y1b -p?&|FZD5ojh6 i1,~tj'G쫴Xf~WeޅcF²& 5H13]Z:~dk2V Cb,ELa nd[RlaM-XK"3WN닲{_zdayecE{3?F {8dI<οƦMz# RGԟͥ_͗\nV#N,e݉^pS%On|c +$ \֝<;l.hOZhW] /쐴HF%i!ZbQxvˆ75585iZn:; mh~D.7R=~DLnC] -p:T5|O lm>FOƋ%UmQǏԿ+疻{i;!>\;;//-l%ʖF,طPWnN=ZvڎqƝ\`79'"-CWm4wm6`aY>[XJ_\}[9Wmh|Ԧ񇾅wHp?1T7:ׇZQ>Y(Ңb5[7A Eȥ!~xo^kO{??,‰ZhbiӜh;^6ۉibۇp[p<9e/%  W!d|d#iMr| e"-yw-PƔq3 ה S{*?U~jwvE1_(TS- .F"]cBD +k<450OkGqTԪ1&>cm|cE;?#j<;;?L$^3Y +IJhbn36-dl5[6}.?xw@x|&y3w(?ǿWm)\)iUzF&)RHj~'m>H2r&gy\./_˭O|SaJOLV^Vf)s*e{rV\rITFդV5KV 5S"vݑa$IATRR(VP,.UU \AD`5H=iOG(]j2"FUvF5S+?BdP@&30p/b*# FHH1LawEc$ԃQn1U1EBד!\ +'g>$#3sQh"t0F u +qB:EXN?#:b_< (n\B=Xz (:=EO5etݾoE^H{aV(֭]o஢u`] ,{ulcUu֎{f70*WHr7,ؘRd(q\Ré9h}iCI}~>e_2-%>xbY~uiϽͶ+c=1Y6ɦ'd/{ը0ӅOWqy)#aa4eW +H_YvVBQUt}(ytokNQǴ+уprTBGUb3'B]ki=z(dx75so>7b]p1uU˲ +S֋eLH<Ta ~J B~-D[t;{<3㈸>_ueA~C^IbuYhޢ6kՉUޚmP~EG#|Y}Ɩ3c1>3|@JTq|հhB}dw֮ݬn@՗O7~0/o?xh>0M:KղIlcX+7+;ߠ5}2ܮ%L Θ&Sf6D"ohfے=G͍Q~FCap/#ߕ)s}I?aǾ#uʇ{?-XP! w@?C' !@>[yx /Bf^5XUP K1Z -h?@+f`;`7p 3p.:CBYgD4MHDv 9N>!g^"W NJxS3O`LSi:B3ѱ3hJ;y?Хt]EY~\0=J?g"Lѯ NoN`11CY8晑,b}X,cϒؓ?{ +ie3;HE`TȒ( %ŨĘ^J 2]DM>.S)&WKX𠅌UNx~yJ'!{Q]H1>4~b$TeJ降3b#.SpaW4 + {uA]+hRKA/̑fIAb:s dIB(qܿR `Sdت}4)sj]TkfT48|?p8yI}},I񤄳RMt85?QrA9vwbUP{H?{,uI'gM.Bjմv)F)Z5<ߙҼ7ՆkӦq`%^8X8->+n~z?\u2:D0H9>=gb--ǷmZ\. +;R|Λs9<+./8XޮVzcGm lAt,)O<]I +A%tI6Z\葚:Ԙp+SC^,>h |!pKnJ9]\0NZP5?ӑB.@@GE3` r>ɖs_X /,ź^;$s_H'.>8?'ir_si5>5./cs6+@ą37(8s4d,*vGx֋n2EjKPIykZjS0fh"A ]KEH@4cu=~8=I;aѦ 5‰o1VͰ$ Z TEvzt櫭GgOs%˨Çii%1HԆĶ c F`zOnܤ*qBJ2Od"`/qo (`bK%1]$syٙhV.9,#Rזaq5PAKO>f-(e=F6ȱ՗ɱ13u;W6^T] GG|z*w):lOeͳ8ޘZ.HV@X$}4]! KM JM ,a02-sLt]nMjkT)peɤձ9̪Q86v{zUE2W wϽCW/LeRUZLyo,eє ).M:ϱs67F^^vhc6)]]-)~ۉ΅3bgVg~D7Z.1%k6ʍ(|'᝗|{dgV+iXSy탃+.-ӖlulG Y{4SRve ]W:eu' =(}pm[KqayglV>[4vbf  UFr ,9R,JF `5RM(|Lo +Mnj) %-W e=m jzzJ8TcO`;wy-I$EN2}x^-E7zsoh 羂+J9 :旐:$'Q k`5XE(U՝jFJ {T rlrtW"3YW2l⭶ =rRp*~ O8't"'zomAXdhSfy{O4=FEZ+ȉFLyMdm}L[efh6XG`];Y5(Sjp=Wf<9Clɦܫ +)<=u"3GFDWp -F%92 .¬:(ޝCMi>aÒGX4~ƖJo ֥bS16)up68Nb}*ro`S ǃ8`,8 +50| 1]x(h^ADGBM`8f3` +\[='a`0_dLA; //bzs 3xˤ~H&O?~{}wr]@g+u=-tȉjsB4 +Y:Pu@tCjA;5T*(E2@l)в'Yͭg?%!I@JM~t-+XN yJ^,qءېSv;k9i=+>4ōܜL,~Z^,{INZ޾z.Iz Ú88pX‰8YD!,0;Xz?!ECqQM!| iybG9_Xsnd٬LR&u UZQ)4Eҝk8Qw')3]vn٬|ڏtII+{ATZ Yi;[RR(BxNqPW#j4::'Uw+U, jϟ.Kɖ}X7qz&b&iTFq-YrѨenYdЎJߴjsF0)Y~9Ccŷe @19|g/di& r_c,sMي#< ܴy6 v~wPrA+|eߓlj;ns +endstream +endobj +82 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 82 0 R +>> +endobj +24 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 83 0 R +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 71 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 120 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 722 278 0 722 611 0 722 778 +667 0 722 667 611 0 667 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 72 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 86 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 667 722 722 667 611 778 722 278 0 667 556 833 722 0 +667 0 722 667 611 722 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 73 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 149 +/Widths [250 278 0 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 0 500 500 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 786 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 74 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 120 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 667 0 0 0 0 0 0 0 0 0 944 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 75 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [600 600 0 600 0 0 600 0 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 0 600 600 0 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 0 0 0 600 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 76 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 0 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 77 0 R +>> +endobj +19 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 556 +0 0 0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 78 0 R +>> +endobj +25 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 +600 600 600 600 0 600 600 600 600 600 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 79 0 R +>> +endobj +47 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBFPOB+Symbol +/Encoding /Identity-H +/DescendantFonts [ 84 0 R ] +/ToUnicode 85 0 R +>> +endobj +84 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBFPOB+Symbol +/FontDescriptor 80 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +85 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPn0 [dld `xI} v+)}$Nс$x᎔!A~7-FYl88Lܺ5Q.SıCU yI)/]W'[dGCOB9_"(k y~CC% k_lA4 TJU$ivYT-g^izj$[pZq`j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 34 0 R +/Contents 33 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 37 0 R +/Contents 36 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 49 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +86 0 obj +<< +/S /D +>> +endobj +87 0 obj +<< +/Nums [0 86 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 15 0 R 20 0 R 26 0 R 29 0 R 32 0 R 35 0 R 38 0 R 41 0 R] +/Count 10 +/Parent 48 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [44 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R] +/Count 8 +/Parent 48 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [11 0 R 49 0 R ] +/Count 18 +/MediaBox [0 0 612 792] +>> +endobj +88 0 obj +<< +/CreationDate (D:20210202102645-06'00') +/ModDate (D:20210202102645-06'00') +/Producer (Apple pstopdf) +>> +endobj +89 0 obj +<< +/Type /Catalog +/Pages 48 0 R +/PageLabels 87 0 R +>> +endobj +xref +0 90 +0000000000 65535 f +0000143252 00000 n +0000000016 00000 n +0000005376 00000 n +0000139018 00000 n +0000139229 00000 n +0000139665 00000 n +0000139981 00000 n +0000140538 00000 n +0000140941 00000 n +0000116005 00000 n +0000144829 00000 n +0000143333 00000 n +0000005529 00000 n +0000011524 00000 n +0000143417 00000 n +0000011667 00000 n +0000016623 00000 n +0000141492 00000 n +0000141960 00000 n +0000143501 00000 n +0000016791 00000 n +0000024965 00000 n +0000138666 00000 n +0000138841 00000 n +0000142312 00000 n +0000143585 00000 n +0000025168 00000 n +0000033804 00000 n +0000143669 00000 n +0000033994 00000 n +0000043478 00000 n +0000143753 00000 n +0000043680 00000 n +0000051780 00000 n +0000143837 00000 n +0000051982 00000 n +0000058565 00000 n +0000143921 00000 n +0000058767 00000 n +0000067314 00000 n +0000144005 00000 n +0000067493 00000 n +0000074841 00000 n +0000144089 00000 n +0000075031 00000 n +0000080913 00000 n +0000142615 00000 n +0000145089 00000 n +0000144966 00000 n +0000144173 00000 n +0000081128 00000 n +0000089154 00000 n +0000144257 00000 n +0000089358 00000 n +0000095716 00000 n +0000144341 00000 n +0000095918 00000 n +0000102135 00000 n +0000144425 00000 n +0000102325 00000 n +0000107316 00000 n +0000144509 00000 n +0000107495 00000 n +0000114772 00000 n +0000144593 00000 n +0000114963 00000 n +0000115500 00000 n +0000144677 00000 n +0000115631 00000 n +0000115886 00000 n +0000116146 00000 n +0000116343 00000 n +0000116549 00000 n +0000116744 00000 n +0000116944 00000 n +0000117147 00000 n +0000117338 00000 n +0000117539 00000 n +0000117744 00000 n +0000117946 00000 n +0000118136 00000 n +0000138244 00000 n +0000138456 00000 n +0000142758 00000 n +0000142961 00000 n +0000144761 00000 n +0000144789 00000 n +0000145181 00000 n +0000145304 00000 n +trailer +<< +/Size 90 +/Root 89 0 R +/Info 88 0 R +/ID [<1890920e509ca8932e6214f0f3fdc6a2><1890920e509ca8932e6214f0f3fdc6a2>] +>> +startxref +145374 +%%EOF diff --git a/docs/medley-irm/12-MISC.TEDIT b/docs/medley-irm/12-MISC.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..f632b3b2f5b1184c39cb7788ad811af98812c364 GIT binary patch literal 81935 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 +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-1)Tj +/TT4 1 Tf +10 0 0 10 406.65 558.2 Tm +(12. MISCELLANEOUS)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 554.49 m +510.01 554.49 l +S +BT +/TT6 1 Tf +10 0 0 10 54 545.2 Tm +( )Tj +/TT4 1 Tf +0 -2.5 TD +(Greeting and Initialization Files)Tj +ET +1 w +54.01 517.49 m +510.01 517.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 503.54 Tm +0.06 Tw +[(Many of the features of Medley are controlled by variables that you can adjust to your own taste. In)]TJ +0 -1.2222 TD +0.0111 Tw +(addition, you can modify the action of system functions in ways not specifically provided for by using)Tj +/TT10 1 Tf +T* +0 Tw +(ADVISE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2678 Tw +[( \(see the Advise Functions section of Chapter 15\). To encourage customizing Medleys)]TJ +-3.6006 -1.2889 TD +0.0611 Tw +(environment, it includes a facility for automatically loading initialization files \(or init files\) when it)Tj +0 -1.2222 TD +0.0178 Tw +[(is first started. Each user can have a separate user init file that customizes Medleys environment to)]TJ +T* +0.0956 Tw +[(his/her tastes. In addition, there can be a site init file that applies to all users at a given physical)]TJ +T* +0 Tw +(site, setting system variables that are the same for all users such as the name of the nearest printer, etc.)Tj +0 -2 TD +0.0744 Tw +(The process of loading init files, also known as greeting, occurs when a Medley system created by)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.09 Tw +[( \(see the Saving Virtual Memory State section below\) is started for the first time. The user)]TJ +-4.2007 -1.2889 TD +0.1522 Tw +(can also explicitly invoke the greeting operation at any time via the function )Tj +/TT10 1 Tf +35.8324 0 TD +0 Tw +(GREET)Tj +/TT8 1 Tf +3.0005 0 TD +0.1522 Tw +[( \(below\). The)]TJ +-38.8329 -1.2889 TD +0 Tw +(process of greeting includes the following steps:)Tj +0 -2 TD +0.0067 Tw +[(1.)-583.3(Any previous greeting operation is undone. The side effects of the greeting operation are stored on)]TJ +1.3333 -1.2222 TD +0.1144 Tw +(a global variable as well as on the history list, thus enabling the previous greeting to be undone)Tj +T* +0 Tw +(even if it has dropped off of the bottom of the history list. )Tj +-1.3333 -2 TD +[(2.)-583.3(All of the items on the list )]TJ +/TT10 1 Tf +12.9593 0 TD +(PREGREETFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +( are evaluated.)Tj +-20.7606 -2.0667 TD +0.0433 Tw +[(3.)-583.3(The site init file is loaded. )]TJ +/TT10 1 Tf +13.4672 0 TD +0 Tw +(GREET)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +[( looks for a file by the name )]TJ +/TT10 1 Tf +12.8179 0 TD +0 Tw +({DSK}INIT.LISP)Tj +/TT8 1 Tf +8.4014 0 TD +0.0433 Tw +[(. If this is found,)]TJ +-36.3536 -1.2889 TD +0.0267 Tw +[(it is loaded. If it is not found, the system prints )]TJ +/TT10 1 Tf +21.4186 0 TD +0.0633 Tw +(Please enter name of system init file)Tj +-21.4186 -1.2889 TD +0.5644 Tw +(\(e.g. {server}INIT.extension\):)Tj +/TT8 1 Tf +25.1685 0 TD +0.2356 Tw +[( and waits for you to type a file name,)]TJ +-25.1685 -1.2889 TD +0.0367 Tw +[(followed by a carriage return. If you just type a carriage return without typing a file name, no site)]TJ +0 -1.2222 TD +0.1311 Tw +(init file is loaded. )Tj +/TT12 1 Tf +8.7923 0 TD +0 Tw +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.1311 Tw +[(: The site init file is loaded with )]TJ +/TT14 1 Tf +15.5438 0 TD +0 Tw +(LDFLG)Tj +/TT8 1 Tf +3.0005 0 TD +0.1311 Tw +[( set to )]TJ +/TT10 1 Tf +3.2444 0 TD +0 Tw +(SYSLOAD)Tj +/TT8 1 Tf +4.2007 0 TD +0.1311 Tw +(, so that no file)Tj +-37.0038 -1.2889 TD +0 Tw +(package information is saved, and nothing is printed out. )Tj +-1.3333 -2 TD +0.1478 Tw +[(4.)-583.3(The user init file is loaded. The user init file is found by using the variable )]TJ +/TT10 1 Tf +36.9325 0 TD +0 Tw +(USERGREETFILES)Tj +/TT8 1 Tf +-35.5991 -1.2889 TD +0.0133 Tw +[(\(described below\), which is normally set in the site init file. The user init file is loaded with normal)]TJ +0 -1.2222 TD +0.0022 Tw +(file package settings, but under errorset protection and with )Tj +/TT10 1 Tf +26.812 0 TD +0 Tw +(PRETTYHEADER)Tj +/TT8 1 Tf +7.2012 0 TD +0.0003 Tc +0.0019 Tw +( set to )Tj +/TT10 1 Tf +2.8577 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0002 Tc +0.002 Tw +( to suppress)Tj +-38.6712 -1.2889 TD +0 Tc +0 Tw +(the )Tj +/TT10 1 Tf +1.6372 0 TD +(File created)Tj +/TT8 1 Tf +7.2012 0 TD +( message.)Tj +-10.1717 -2.0667 TD +[(5.)-583.3(All of the items on the list )]TJ +/TT10 1 Tf +12.9593 0 TD +(POSTGREETFORMS)Tj +/TT8 1 Tf +8.4014 0 TD +( are evaluated.)Tj +-21.3607 -2.0667 TD +0.1156 Tw +[(6.)-583.3(The greeting )]TJ +/TT10 1 Tf +7.4028 0 TD +0 Tw +(Hello, )Tj +/TT14 1 Tf +5.0797 0 TD +(XXX)Tj +/TT10 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +0.6001 0 TD +0.1156 Tw +( is printed, where )Tj +/TT14 1 Tf +8.9813 0 TD +0 Tw +(XXX)Tj +/TT8 1 Tf +1.8003 0 TD +0.1156 Tw +[( is the value of the variable )]TJ +/TT10 1 Tf +12.9393 0 TD +0 Tw +(FIRSTNAME)Tj +/TT8 1 Tf +5.4009 0 TD +0.1156 Tw +[( \(if)]TJ +-42.6713 -1.2889 TD +0 Tw +(non-)Tj +/TT10 1 Tf +2.043 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.19 Tw +[(\). The variable )]TJ +/TT10 1 Tf +7.5911 0 TD +0 Tw +(GREETDATES)Tj +/TT8 1 Tf +6.001 0 TD +0.19 Tw +[( \(below\) can be set to modify this greeting for particular)]TJ +-17.4353 -1.2889 TD +0 Tw +(dates.)Tj +/TT10 1 Tf +1.3333 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(GREET)Tj +/F1 1 Tf +10 0 0 10 134.4 118.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.27 118.86 Tm +(NAME)Tj +/F2 1 Tf +10 0 0 10 158.8735 118.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 161.6535 118.86 Tm +()Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29741.6([Function])]TJ +-5.1617 -1.8444 TD +0.0122 Tw +(Performs the greeting for person whose username is )Tj +/TT14 1 Tf +23.4332 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +[( \(if )]TJ +/TT14 1 Tf +1.4815 0 TD +0 Tw +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +0.0289 Tw +[( = NIL)]TJ +/TT8 1 Tf +3.6584 0 TD +0.0122 Tw +(, uses the login)Tj +-33.3739 -1.2889 TD +0 Tw +(name\). When Medley first starts up, it performs )Tj +/TT10 1 Tf +21.5728 0 TD +(\(GREET\))Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +17 0 obj +<< +/Length 6245 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-2)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.26 Tm +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(GREETFILENAME)Tj +/F1 1 Tf +10 0 0 10 225.6 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.47 568.26 Tm +(USER)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25850.6([Function])]TJ +-9.0527 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.021 0 TD +(USER)Tj +/TT8 1 Tf +2.4004 0 TD +0.1011 Tw +[( is )]TJ +/TT10 1 Tf +1.4171 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6011 0 TD +(GREETFILENAME)Tj +/TT8 1 Tf +7.8013 0 TD +0.1011 Tw +[( returns the file name of the site init file. If the file name)]TJ +-13.841 -1.2889 TD +0.2078 Tw +[(doesnt exist, you are prompted for it. Otherwise, )]TJ +/TT14 1 Tf +24.16 0 TD +0 Tw +(USER)Tj +/TT8 1 Tf +2.4004 0 TD +0.2078 Tw +[( is interpreted to be a users)]TJ +-26.5604 -1.2889 TD +0 Tw +(system name, and )Tj +/TT10 1 Tf +8.2285 0 TD +(GREETFILENAME)Tj +/TT8 1 Tf +7.8013 0 TD +( returns the file name for the user init file \(if it exists\).)Tj +/TT16 1 Tf +-18.6965 -2.0667 TD +(USERGREETFILES)Tj +/TT8 1 Tf +8.4 0 TD +[( )-29367.8([Variable])]TJ +/TT10 1 Tf +-5.7333 -1.8444 TD +(USERGREETFILES)Tj +/TT8 1 Tf +8.4014 0 TD +0.0567 Tw +[( specifies a series of file names to try as the user init file. The value of)]TJ +/TT10 1 Tf +-8.4014 -1.2889 TD +0 Tw +(USERGREETFILES)Tj +/TT8 1 Tf +8.4014 0 TD +0.1744 Tw +[( is a list, where each element is a list of symbols. For each item in)]TJ +/TT10 1 Tf +-8.4014 -1.2889 TD +0 Tw +(USERGREETFILES)Tj +/TT8 1 Tf +8.4014 0 TD +0.1522 Tw +(, the user name is substituted for the symbol )Tj +/TT10 1 Tf +21.1971 0 TD +0 Tw +(USER)Tj +/TT8 1 Tf +2.4004 0 TD +0.1522 Tw +[( and the value of)]TJ +/TT10 1 Tf +-31.9989 -1.2889 TD +0 Tw +(COMPILE)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +0.25 0 TD +(EXT)Tj +/TT8 1 Tf +1.8003 0 TD +0.1756 Tw +[( \(see the Cimpiler Functions section of Chapter 18\) is substituted for the)]TJ +-6.251 -1.2889 TD +0 Tw +(symbol )Tj +/TT10 1 Tf +3.5352 0 TD +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.0322 Tw +[(, and the symbols are packed into a single file name. The first such file that is)]TJ +-5.3354 -1.2889 TD +0 Tw +(found is the user init file.)Tj +0 -2 TD +(For example, suppose that the value of )Tj +/TT10 1 Tf +17.3623 0 TD +(USERGREETFILES)Tj +/TT8 1 Tf +8.4014 0 TD +( was)Tj +/TT10 1 Tf +-20.4303 -2 TD +(\(\({ERIS}< USER >LISP>INIT. COM\))Tj +0 -1 TD +( \({ERIS}< USER >LISP>INIT\))Tj +T* +( \({ERIS}< USER >INIT. COM\))Tj +T* +( \({ERIS}< USER >INIT\)\))Tj +/TT8 1 Tf +-5.3333 -1.8444 TD +0.0633 Tw +(If the user name was )Tj +/TT10 1 Tf +9.7263 0 TD +0 Tw +(JONES)Tj +/TT8 1 Tf +3.0005 0 TD +0.0633 Tw +(, and the value of )Tj +/TT10 1 Tf +8.2136 0 TD +0 Tw +(COMPILE.EXT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0633 Tw +[( was )]TJ +/TT10 1 Tf +2.3845 0 TD +0 Tw +(DCOM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0633 Tw +(, then this would)Tj +-32.3264 -1.2889 TD +0.0778 Tw +(search for the files )Tj +/TT10 1 Tf +8.6138 0 TD +0.1856 Tw +({ERIS}LISP>INIT.DCOM, {ERIS}LISP>INIT,)Tj +-8.6138 -1.2222 TD +0 Tw +({ERIS}INIT.DCOM, and {ERIS}INIT.)Tj +/TT12 1 Tf +0 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.24 Tw +[(: The file name specifications in )]TJ +/TT10 1 Tf +17.0404 0 TD +0 Tw +(USERGREETFILES)Tj +/TT8 1 Tf +8.4014 0 TD +0.24 Tw +[( should be fully qualified,)]TJ +-27.6639 -1.2889 TD +0.2067 Tw +[(including all host and directory information. The directory search path \(the value of)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DIRECTORIES)Tj +/TT8 1 Tf +6.6011 0 TD +0.0222 Tw +(, see the Searching File Directories section of Chapter 24\) is )Tj +/TT18 1 Tf +26.4393 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0222 Tw +[( used to find)]TJ +-34.3734 -1.2889 TD +0 Tw +(the user greet files.)Tj +/TT16 1 Tf +-2.6667 -2 TD +(GREETDATES)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.8444 TD +0.1244 Tw +(The value of )Tj +/TT10 1 Tf +6.1141 0 TD +0 Tw +(GREETDATES)Tj +/TT8 1 Tf +6.001 0 TD +0.1244 Tw +[( can be used to specify special greeting messages for various)]TJ +-12.115 -1.2889 TD +0.1333 Tw +(dates. )Tj +/TT10 1 Tf +3.3565 0 TD +0 Tw +(GREETDATES)Tj +/TT8 1 Tf +6.001 0 TD +0.1333 Tw +[( is a list of elements of the form )]TJ +/TT10 1 Tf +15.2415 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(DATESTRING)Tj +/TT10 1 Tf +6.001 0 TD +0.3189 Tw +[( . )]TJ +/TT14 1 Tf +2.4381 0 TD +0 Tw +(STRING)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1333 Tw +(, e.g.)Tj +/TT10 1 Tf +-37.8388 -1.2889 TD +0.15 Tw +(\("25-DEC" . "Merry Christmas"\))Tj +/TT8 1 Tf +18.4529 0 TD +0.0622 Tw +[(. The user can add entries to this list in his/her)]TJ +/TT10 1 Tf +-18.4529 -1.2889 TD +0 Tw +(INIT.LISP)Tj +/TT8 1 Tf +5.4009 0 TD +0.6544 Tw +[( file by using a )]TJ +/TT10 1 Tf +9.9817 0 TD +0 Tw +(ADDVARS)Tj +/TT8 1 Tf +4.2007 0 TD +0.6544 Tw +[( file package command like )]TJ +/TT10 1 Tf +15.6179 0 TD +0 Tw +(\(ADDVARS)Tj +-35.2012 -1.2889 TD +0.4289 Tw +(\(GREETDATES \("8-FEB" . "Happy Birthday"\)\)\))Tj +/TT8 1 Tf +26.9197 0 TD +0.1789 Tw +[(. On the specified date, the)]TJ +/TT10 1 Tf +-26.9197 -1.2889 TD +0 Tw +(GREET)Tj +/TT8 1 Tf +3.0005 0 TD +( will use the indicated salutation.)Tj +-3.0005 -2.0667 TD +0.0589 Tw +(It is impossible to give a complete list of all of the variables and functions you may want)Tj +0 -1.2222 TD +0.01 Tw +[(to set in your init files. The default values for system variables are chosen in the hope that)]TJ +T* +0.0367 Tw +(they will be correct for the majority of users, so many users get along with very small init)Tj +T* +0.07 Tw +[(files. The following describes some of the variables that users may want to reset in their)]TJ +T* +0 Tw +(init files:)Tj +0.4878 -2 TD +0.5722 Tw +[(Directories)-668.5(The variables )]TJ +/TT10 1 Tf +12.8285 0 TD +0 Tw +(DIRECTORIES)Tj +/TT8 1 Tf +6.6011 0 TD +0.5722 Tw +[( and )]TJ +/TT10 1 Tf +3.3373 0 TD +0 Tw +(LISPUSERSDIRECTORIES)Tj +/TT8 1 Tf +12.002 0 TD +0.5722 Tw +[( \(see the)]TJ +-29.2567 -1.2889 TD +0.12 Tw +(Searching File Directories section of Chapter 24\) contain lists of directories)Tj +0 -1.2222 TD +0.1822 Tw +(used when searching for files. )Tj +/TT10 1 Tf +14.7818 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT8 1 Tf +7.8013 0 TD +0.1822 Tw +[( \(see the Incomplete File)]TJ +-22.5831 -1.2889 TD +0.1367 Tw +(Names section of Chapter 24\) determines the default directory used when)Tj +0 -1.2222 TD +0 Tw +(you call )Tj +/TT10 1 Tf +3.731 0 TD +(CONN)Tj +/TT8 1 Tf +2.4004 0 TD +( with no argument.)Tj +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +21 0 obj +<< +/Length 5523 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-3)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 99.71 569.54 Tm +[(Fonts and Printing)-666.7(The )-425.6(variables )]TJ +/TT10 1 Tf +15.9441 0 TD +(DISPLAYFONTDIRECTORIES)Tj +/TT8 1 Tf +13.2022 0 TD +(, )Tj +/TT10 1 Tf +0.9256 0 TD +(DISPLAYFONTEXTENSIONS)Tj +/TT8 1 Tf +12.6021 0 TD +(,)Tj +/TT10 1 Tf +-33.7527 -1.2889 TD +(INTERPRESSFONTDIRECTORIES)Tj +/TT8 1 Tf +15.0024 0 TD +0.2389 Tw +(, and )Tj +/TT10 1 Tf +2.9206 0 TD +0 Tw +(PRESSFONTWIDTHSFILES)Tj +/TT8 1 Tf +12.002 0 TD +0.2389 Tw +[( \(see the)]TJ +-29.925 -1.2889 TD +0.1856 Tw +(Font Files and Font Directories section of Chapter 27\) must be set before)Tj +0 -1.2222 TD +0.06 Tw +(fonts can be automatically loaded from files. )Tj +/TT10 1 Tf +20.5684 0 TD +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +11.4019 0 TD +0.06 Tw +[( \(see)]TJ +-31.9702 -1.2889 TD +0.28 Tw +(Chapter 29\) should be set before attempting to generate hardcopy to a)Tj +0 -1.2222 TD +0 Tw +(printer.)Tj +-8.5 -2 TD +(Network Systems)Tj +/TT10 1 Tf +8.5 0 TD +(CH.DEFAULT.ORGANIZATION)Tj +/TT8 1 Tf +13.8023 0 TD +0.2522 Tw +[( and )]TJ +/TT10 1 Tf +2.6973 0 TD +0 Tw +(CH.DEFAULT.DOMAIN)Tj +/TT8 1 Tf +10.2017 0 TD +0.2522 Tw +[( \(see the Name)]TJ +-26.7012 -1.2889 TD +0.0278 Tw +(and Address Conventions section of Chapter 31\) should be set to the default)Tj +0 -1.2222 TD +0.09 Tw +[(NS organization and domain, when using NS network communications. If)]TJ +/TT10 1 Tf +T* +0 Tw +(CH.NET.HINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.1822 Tw +[( \(see the Clearinghouse Functions section of Chapter 31\) is)]TJ +-6.6011 -1.2889 TD +0 Tw +(set, it can reduce the amount of time spent searching for a clearinghouse.)Tj +-8.5911 -2 TD +[(Medley Executive)-665.3(The )-185.6(variable )]TJ +/TT10 1 Tf +14.7103 0 TD +(PROMPT#FLG)Tj +/TT8 1 Tf +6.001 0 TD +0.1856 Tw +[( \(see the Changing the Programmers Assistant)]TJ +-12.1201 -1.2889 TD +0.0811 Tw +(section of Chapter 13\) determines whether an event number is printed at)Tj +0 -1.2222 TD +0.2411 Tw +[(the beginning of every input line. The function )]TJ +/TT10 1 Tf +23.3101 0 TD +0 Tw +(CHANGESLICE)Tj +/TT8 1 Tf +6.6011 0 TD +0.2411 Tw +[( \(see the)]TJ +-29.9112 -1.2889 TD +0.0589 Tw +(Changing the Programmers Assistant section of Chapter 13\) can be used to)Tj +0 -1.2222 TD +0 Tw +(change the number of events that are remembered on the history list.)Tj +-8.8189 -2 TD +(Copyright Notices)Tj +/TT10 1 Tf +8.8189 0 TD +(COPYRIGHTFLG)Tj +/TT8 1 Tf +7.2012 0 TD +(, )Tj +/TT10 1 Tf +0.5722 0 TD +(COPYRIGHTOWNERS)Tj +/TT8 1 Tf +9.0015 0 TD +0.0722 Tw +(, and )Tj +/TT10 1 Tf +2.5873 0 TD +0 Tw +(DEFAULTCOPYRIGHTOWNER)Tj +/TT8 1 Tf +12.6021 0 TD +0.0722 Tw +[( \(see)]TJ +-31.9642 -1.2889 TD +0.3867 Tw +(the Copyright Notices section of Chapter 17\) control the inclusion of)Tj +0 -1.2222 TD +0 Tw +(copyright notices on source files.)Tj +-8.8989 -2 TD +(Printing Functions)Tj +/TT10 1 Tf +8.8989 0 TD +(**COMMENT**FLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.4822 Tw +[( \(see the Comment Feature section of Chapter 26\))]TJ +-8.4014 -1.2889 TD +0.1289 Tw +(determines how program comments are printed. )Tj +/TT10 1 Tf +22.9144 0 TD +0 Tw +(FIRSTCOL)Tj +/TT8 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.6289 0 TD +(PRETTYFLG)Tj +/TT8 1 Tf +5.4009 0 TD +(,)Tj +-33.745 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.0929 0 TD +(CLISPIFYPRETTYFLG)Tj +/TT8 1 Tf +10.2017 0 TD +0.15 Tw +[( \(see the Special Prettyprint Controls section of)]TJ +-12.2945 -1.2889 TD +0.1911 Tw +(Chapter 26\) are among the many variables controlling how functions are)Tj +0 -1.2222 TD +0 Tw +(pretty printed.)Tj +-9.6956 -2 TD +[(List Structure Editor)-667.7(The )-105.6(variable )]TJ +/TT10 1 Tf +15.6547 0 TD +(INITIALSLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.1056 Tw +[( \(see the Time Stamps section of Chapter 16\) is)]TJ +-12.5602 -1.2889 TD +0.2989 Tw +(used when time-stamps are inserted in a function when it is edited.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(EDITCHARACTERS)Tj +/TT8 1 Tf +8.4014 0 TD +0.0122 Tw +[( \(see the Time Stamps section of Chapter 16\) is used to set)]TJ +-8.4014 -1.2889 TD +0 Tw +(the read macros used in the teletype editor.)Tj +/TT4 1 Tf +10 0 0 10 54 207.4 Tm +(Idle Mode)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 204.69 m +510.01 204.69 l +S +BT +/TT8 1 Tf +9 0 0 9 78 190.74 Tm +0.2678 Tw +(The Medley environment runs on small single-user computers, usually located in users offices.)Tj +0 -1.2222 TD +0.0344 Tw +[(Often, users leave their computers up and running for days, which can cause several problems. First,)]TJ +T* +0.0367 Tw +(the phosphor in the video display screen can be permanently marked if the same pattern is displayed)Tj +T* +0.0978 Tw +[(for a long time \(weeks\). Second, if you go away, leaving a Medley system running, another person)]TJ +T* +0.0544 Tw +(could possibly walk up and use the environment, taking advantage of any passwords that have been)Tj +T* +0 Tw +(entered. To solve these problems, Medley implements the concept of idle mode.)Tj +0 -2 TD +0.1244 Tw +(If no keyboard or mouse action has occurred for a specified time, Medley automatically enters idle)Tj +0 -1.2222 TD +0.0578 Tw +[(mode. While idle mode is on, the display screen is blacked out, to protect the phosphor. Idle mode)]TJ +T* +0.1911 Tw +(also runs a program to display some moving pattern on the black screen, so the screen does not)Tj +T* +0.0089 Tw +[(appear to be broken. Usually, idle mode can be exited by pressing any key on the keyboard or mouse.)]TJ +T* +0.0378 Tw +(However, you can optionally specify that idle mode should erase the current password cache when it)Tj +T* +0 Tw +(is entered., and require the next user to supply a password to exit idle mode.)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +24 0 obj +<< +/Length 4502 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-4)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0767 Tw +(If either shift key is pressed while Medley is in idle mode, the current user name and the amount of)Tj +0 -1.2222 TD +0 Tw +(time spent idling are displayed in the prompt window while the key is depressed.)Tj +0 -2 TD +0.0611 Tw +(Idle mode can also be entered by calling the function )Tj +/TT10 1 Tf +24.1761 0 TD +0 Tw +(IDLE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0611 Tw +[( , or by selecting the Idle menu command)]TJ +-26.5764 -1.2889 TD +0.0056 Tw +[(from the background menu \(see Chapter 28\). The Idle menu command has subitems that allow you to)]TJ +0 -1.2222 TD +0.1189 Tw +(interactively set the idle options \(display program, erasing password, etc.\) specified by the variable)Tj +/TT10 1 Tf +T* +0 Tw +(IDLE.PROFILE)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT16 1 Tf +-4.5345 -2.0667 TD +(IDLE.PROFILE)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.8444 TD +0.0422 Tw +(The value of this variable is a property list \(see Chapter 3\) which controls most aspects of)Tj +0 -1.2222 TD +0 Tw +(idle mode. The following properties are recognized:)Tj +/TT10 1 Tf +5.8 -2 TD +(TIMEOUT)Tj +/TT8 1 Tf +4.8667 0 TD +0.0411 Tw +(Value is a number that determines how long \(in minutes\) Medley)Tj +0 -1.2889 TD +0.1811 Tw +[(will wait before automatically entering idle mode. If )]TJ +/TT10 1 Tf +25.1813 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1811 Tw +(, idle)Tj +-26.9816 -1.2889 TD +0 Tw +(mode will never be entered automatically. Default is 10 minutes.)Tj +/TT10 1 Tf +-4.2667 -2 TD +(FORGET)Tj +/TT8 1 Tf +4.2667 0 TD +0.1033 Tw +(If this is the symbol )Tj +/TT10 1 Tf +9.4146 0 TD +0 Tw +(FIRST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1033 Tw +(, your password will be erased when)Tj +-12.4151 -1.2889 TD +0.1133 Tw +[(idle mode is entered. If non-)]TJ +/TT10 1 Tf +13.3992 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1133 Tw +(, your password will be erased)Tj +-15.1995 -1.2889 TD +0.1289 Tw +[(when idle mode is exited. Initial value is )]TJ +/TT10 1 Tf +19.5155 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1289 Tw +[( \(erase password on)]TJ +-20.1156 -1.2889 TD +0 Tw +(exit\).)Tj +0 -2 TD +0.1544 Tw +(If the password is erased on entry to idle mode \(value )Tj +/TT10 1 Tf +25.7428 0 TD +0 Tw +(FIRST)Tj +/TT8 1 Tf +3.0005 0 TD +(\),)Tj +-28.7433 -1.2889 TD +0.1033 Tw +(any programs left running when idle mode is entered will fail if)Tj +0 -1.2222 TD +0.1478 Tw +(they try doing anything requiring passwords \(such as accessing)Tj +T* +0 Tw +(file servers\).)Tj +/TT10 1 Tf +-9.0667 -2 TD +(ALLOWED.LOGINS)Tj +/TT8 1 Tf +9.0667 0 TD +0.0667 Tw +[(The value of this property can either be a list or a non-list. If the)]TJ +0 -1.2889 TD +0.1311 Tw +(value is )Tj +/TT10 1 Tf +3.9151 0 TD +0 Tw +(NIL )Tj +/TT8 1 Tf +2.716 0 TD +0.1311 Tw +(or any other non-list, idle mode is exited without)Tj +-6.631 -1.2889 TD +0 Tw +(requesting login.)Tj +0 -2 TD +0.07 Tw +(If the value is a list the members of the list should be interpreted)Tj +0 -1.2222 TD +0 Tw +(as follows:)Tj +/TT10 1 Tf +0.0667 -2 TD +(*)Tj +/TT8 1 Tf +1.2667 0 TD +0.2622 Tw +(If the value is a list containing )Tj +/TT10 1 Tf +15.3277 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.2622 Tw +[( as its element, login is)]TJ +-15.9278 -1.2889 TD +0.1456 Tw +[(required but anyone can exit idle mode. This will overwrite)]TJ +0 -1.2222 TD +0.2022 Tw +(the previous users user name and password each time idle)Tj +T* +0 Tw +(mode is exited.)Tj +/TT10 1 Tf +-1.2667 -2 TD +(T)Tj +/TT8 1 Tf +1.2667 0 TD +0.1356 Tw +(Let the previous user \(as determined by )Tj +/TT10 1 Tf +18.8088 0 TD +0 Tw +(USERNAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.1356 Tw +(\) exit idle)Tj +-23.6095 -1.2889 TD +0 Tw +(mode. If the username has not been set, this is equivalent to )Tj +/TT10 1 Tf +26.8389 0 TD +(*)Tj +/TT8 1 Tf +-33.4355 -2.0667 TD +[(user name)-668.6(Let this specific user exit idle mode.)]TJ +-0.7989 -2 TD +0.1311 Tw +[(group )131.1(name)-667.2(Let any member of this group \(an NS clearinghouse group\) exit)]TJ +6.0622 -1.2222 TD +0 Tw +(idle mode.)Tj +/TT10 1 Tf +-7.8667 -2 TD +(AUTHENTICATE)Tj +/TT8 1 Tf +7.8667 0 TD +0.3789 Tw +(The value of this property determines the method used for)Tj +0 -1.2889 TD +0 Tw +(logging in. The value can be one of the following:)Tj +/TT10 1 Tf +-4.1578 -2 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NS)Tj +/TT8 1 Tf +1.2002 0 TD +0.0989 Tw +[( )-567.7(Use the NS authentication protocol. This requires that you have)]TJ +0.9166 -1.2889 TD +0 Tw +(an NS authentication server accessible on your net.)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +27 0 obj +<< +/Length 5695 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-5)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT10 1 Tf +9 0 0 9 205.2 569.54 Tm +(GV)Tj +/TT8 1 Tf +1.8667 0 TD +(Authenticate the login via the GrapeVine protocol.)Tj +/TT10 1 Tf +-3.0667 -2.0667 TD +(UNIX)Tj +/TT8 1 Tf +3.0667 0 TD +(Use the unix login mechanism.)Tj +/TT12 1 Tf +0 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0678 Tw +[(: Unix is case sensitive. If you try to login but fail, you may)]TJ +-2.2222 -1.2222 TD +0 Tw +(have typed the password with the caps-lock on.)Tj +/TT10 1 Tf +-8.4667 -2 TD +(LOGIN.TIMEOUT)Tj +/TT8 1 Tf +8.4667 0 TD +0.19 Tw +(This is the number of seconds idle will wait for a login before)Tj +0 -1.2889 TD +0 Tw +(resuming idle mode again.)Tj +/TT10 1 Tf +-6.0667 -2 TD +(DISPLAYFN)Tj +/TT8 1 Tf +6.0667 0 TD +0.1278 Tw +(The value of this property, which should be a function name or)Tj +0 -1.2889 TD +0.1389 Tw +(lambda expression, is called to display a moving pattern on the)Tj +0 -1.2222 TD +0.3089 Tw +[(screen while in idle mode. This function is called with one)]TJ +T* +0.15 Tw +[(argument, a window covering the whole screen. The default is)]TJ +/TT10 1 Tf +T* +0 Tw +(IDLE.BOUNCING.BOX)Tj +/TT8 1 Tf +10.2017 0 TD +( \(below\).)Tj +-10.2017 -2.0667 TD +0.3578 Tw +(Any function used as a )Tj +/TT10 1 Tf +12.2025 0 TD +0 Tw +(DISPLAYFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.3578 Tw +[( should call )]TJ +/TT10 1 Tf +6.4059 0 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.3578 Tw +[( \(see)]TJ +-27.0097 -1.2889 TD +0.21 Tw +(Chapter 23\) frequently, so other programs can run during idle)Tj +0 -1.2222 TD +0 Tw +(mode.)Tj +/TT10 1 Tf +-4.2667 -2 TD +(SAVEVM)Tj +/TT8 1 Tf +4.2667 0 TD +0.1744 Tw +(Value is a number that determines how long \(in minutes\) after)Tj +0 -1.2889 TD +0.0156 Tw +(idle mode is entered that )Tj +/TT10 1 Tf +11.3185 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0156 Tw +[( will be called to save the virtual)]TJ +-14.9191 -1.2889 TD +0.08 Tw +[(memory. If )]TJ +/TT10 1 Tf +5.6516 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.58 0 TD +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( is never called automatically from idle)]TJ +-11.6325 -1.2889 TD +0 Tw +(mode. Default is 10 minutes.)Tj +-18.6667 -2 TD +( )Tj +/TT10 1 Tf +5.4 0 TD +(SUSPEND.PROCESS.NAMES)Tj +/TT8 1 Tf +13.2667 0 TD +0.0222 Tw +[(Value is a list of names. For each name on this list, if a process by)]TJ +0 -1.2889 TD +0.0344 Tw +(that name is found, it will be suspended upon entering idle mode)Tj +0 -1.2222 TD +0 Tw +(and woken upon exiting idle mode.)Tj +/TT16 1 Tf +-13.3333 -2 TD +(IDLE.RESETVARS)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.01 Tw +(The value of this variable is a list of two-element lists: )Tj +/TT10 1 Tf +24.2977 0 TD +0 Tw +(\(\()Tj +/TT14 1 Tf +1.2002 0 TD +(VAR)Tj +6 0 0 6 371.7 257.94 Tm +(1)Tj +9 0 0 9 375.3 259.94 Tm +0.0244 Tw +[( EXP)]TJ +6 0 0 6 397.12 257.94 Tm +0 Tw +(1)Tj +/TT10 1 Tf +9 0 0 9 400.72 259.94 Tm +(\)\()Tj +/TT14 1 Tf +1.2002 0 TD +(VAR)Tj +6 0 0 6 427.72 257.94 Tm +(2)Tj +9 0 0 9 431.32 259.94 Tm +0.0244 Tw +[( EXP)]TJ +6 0 0 6 453.14 257.94 Tm +0 Tw +(2)Tj +/TT10 1 Tf +9 0 0 9 456.74 259.94 Tm +(\)...\))Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-39.7494 -1.3944 TD +0.1567 Tw +(On entering idle mode, each variable )Tj +/TT14 1 Tf +17.5181 0 TD +0 Tw +(VAR)Tj +6 0 0 6 299.87 245.39 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 303.47 247.39 Tm +0.1567 Tw +[( is bound to the value of the corresponding)]TJ +-19.7189 -1.3944 TD +0 Tw +(expression )Tj +/TT14 1 Tf +5.1601 0 TD +(EXP)Tj +6 0 0 6 188.65 232.84 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 192.25 234.84 Tm +0.1733 Tw +[(. When idle mode is exited, each variable )]TJ +/TT14 1 Tf +20.1396 0 TD +0 Tw +(VAR)Tj +6 0 0 6 389.72 232.84 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 393.32 234.84 Tm +0.1733 Tw +[( is reset to its original)]TJ +-29.7022 -1.3944 TD +0 Tw +(value.)Tj +/TT16 1 Tf +-2.6667 -2 TD +(IDLE.SUSPEND.PROCESS.NAMES)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0644 Tw +[(Value is a list of names. For each name on this list, if a process by that name is found, it)]TJ +0 -1.2222 TD +0 Tw +(will be suspended upon entering idle mode and woken upon exiting idle mode.)Tj +/TT16 1 Tf +-2.6667 -2 TD +(IDLE.PROFILE)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.8444 TD +0.0344 Tw +(The value of this variable determines the menu raised by selecting the Display subitem of)Tj +0 -1.2222 TD +0.0322 Tw +[(the Idle background menu command. It should be in the format used for the )]TJ +/TT10 1 Tf +34.7026 0 TD +0 Tw +(ITEMS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0322 Tw +[( field)]TJ +-37.7031 -1.2889 TD +0.0067 Tw +(of a menu \(see Chapter 28\), with the selection of an item returning the appropriate display)Tj +0 -1.2222 TD +0 Tw +(function.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(IDLE.BOUNCING.BOX)Tj +/F2 1 Tf +10 0 0 10 199.2 89.21 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.98 89.21 Tm +(WINDOW)Tj +/F2 1 Tf +10 0 0 10 234.3853 89.21 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 237.1653 89.21 Tm +(BOX)Tj +/F2 1 Tf +10 0 0 10 253.3679 89.21 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 256.1479 89.21 Tm +(WAIT)Tj +/F2 1 Tf +10 0 0 10 277.7514 89.21 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 281.0814 89.21 Tm +18.1198 Tw +[( [Variable])]TJ +-17.2313 -1.8444 TD +0.0933 Tw +(This is the default display function used for idle mode. )Tj +/TT14 1 Tf +25.7435 0 TD +0 Tw +(BOX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0933 Tw +[( is bounded about )]TJ +/TT14 1 Tf +8.6014 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-39.7457 -1.2889 TD +0.1789 Tw +(with bounces taking place every )Tj +/TT14 1 Tf +15.4091 0 TD +0 Tw +(WAIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1789 Tw +[( milliseconds. )]TJ +/TT14 1 Tf +7.0928 0 TD +0 Tw +(BOX)Tj +/TT8 1 Tf +1.8003 0 TD +0.1789 Tw +[( can be a string, a bitmap, a)]TJ +-26.7026 -1.2889 TD +0.1033 Tw +(window \(whose image will be bounced about\), or a list containing any number of these)Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +30 0 obj +<< +/Length 6884 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-6)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.6189 Tw +(\(which will be cycled through\). )Tj +/TT14 1 Tf +18.0166 0 TD +0 Tw +(BOX)Tj +/TT8 1 Tf +1.8003 0 TD +0.6189 Tw +[( defaults to the value of the variable)]TJ +/TT10 1 Tf +-19.8169 -1.2889 TD +0 Tw +(IDLE.BOUNCING.BOX)Tj +/TT8 1 Tf +10.2017 0 TD +0.1244 Tw +(, which is initially a bitmap of the Venue logo. )Tj +/TT14 1 Tf +22.2107 0 TD +0 Tw +(WAIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1244 Tw +[( defaults to)]TJ +-34.8127 -1.2889 TD +0 Tw +(1000 \(one second\). )Tj +/TT4 1 Tf +10 0 0 10 102 524 Tm +(Saving Virtual Memory State)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 521.29 m +558.01 521.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 507.34 Tm +0.0689 Tw +(Medley storage allocation occurs within a virtual memory space that is usually much larger than the)Tj +0 -1.2222 TD +0.1289 Tw +[(physical memory on the computer. The virtual memory is stored as a large file on the computers)]TJ +T* +0.1167 Tw +[(hard disk, called the virtual memory file. Medley controls the swapping of pages between this file)]TJ +T* +0.1633 Tw +(and the real memory, swapping in virtual memory pages as they are accessed, and swapping out)Tj +T* +0.0033 Tw +(pages that have been modified. At any moment, the total state of the Medley virtual memory is stored)Tj +T* +0 Tw +(partially in the virtual memory file, and partially in the real physical memory.)Tj +0 -2 TD +0.25 Tw +(Medley provides facilities for saving the total state of the virtual memory, either on the virtual)Tj +0 -1.2222 TD +0.0711 Tw +[(memory file, or in a file on an arbitrary file device. The function )]TJ +/TT10 1 Tf +29.6044 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0711 Tw +[( is used to write all altered)]TJ +-33.205 -1.2889 TD +0.0156 Tw +(\(dirty\) pages from the real memory to the virtual memory file and stop Medley, so that Medley can be)Tj +0 -1.2222 TD +0.1244 Tw +(restarted from the state of the )Tj +/TT10 1 Tf +14.047 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1244 Tw +(. )Tj +/TT10 1 Tf +0.9989 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1244 Tw +[( updates the virtual memory file without stopping)]TJ +-22.247 -1.2889 TD +0.25 Tw +(Medley, which puts the virtual memory file into a consistant state \(temporarily\), so it could be)Tj +0 -1.2222 TD +0.1444 Tw +(restarted if the system crashes. )Tj +/TT10 1 Tf +14.9023 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1444 Tw +[( and )]TJ +/TT10 1 Tf +2.4818 0 TD +0 Tw +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1444 Tw +[( are used to save a copy of the total virtual)]TJ +-25.1853 -1.2889 TD +0.3322 Tw +(memory state on a file, which can be loaded into another machine to restore Medleys state.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(VMEM.PURE.STATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.0944 Tw +[( can be used to freeze the current state of the virtual memory, so that Medley)]TJ +-9.0015 -1.2889 TD +0 Tw +(will come up in that state if it is restarted.)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(LOGOUT)Tj +/F1 1 Tf +10 0 0 10 187.8 324.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 190.67 324.66 Tm +(FAST)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30050.6([Function])]TJ +-4.8527 -1.8444 TD +0.2155 Tw +[(Stops Medley, and returns control to the operating system. If Medley is restarted, it)]TJ +0 -1.2222 TD +0.02 Tw +(should come up in the same state as when the )Tj +/TT10 1 Tf +20.7015 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.02 Tw +[( was called. )]TJ +/TT10 1 Tf +5.7035 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.02 Tw +[( will not affect)]TJ +-33.6062 -1.2889 TD +0 Tw +(the state of open files.)Tj +/TT10 1 Tf +0 -2 TD +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0122 Tw +[( writes out all altered pages from real memory to the virtual memory file. If )]TJ +/TT14 1 Tf +33.9924 0 TD +0 Tw +(FAST)Tj +/TT8 1 Tf +-37.593 -1.2889 TD +(is )Tj +/TT10 1 Tf +1.0426 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0778 Tw +[(, Medley is stopped without updating the virtual memory file. Note that after doing)]TJ +/TT10 1 Tf +-1.6427 -1.2889 TD +0.0244 Tw +(\(LOGOUT T\))Tj +/TT8 1 Tf +6.0254 0 TD +0.01 Tw +[( it will not be possible to restart Medley from the point of the )]TJ +/TT10 1 Tf +27.2948 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +(, and it)Tj +-36.9208 -1.2889 TD +0.08 Tw +[(may not be possible to restart it at all. Typing )]TJ +/TT10 1 Tf +21.3561 0 TD +0.1911 Tw +(\(LOGOUT T)Tj +/TT12 1 Tf +5.592 0 TD +0 Tw +(\))Tj +/TT8 1 Tf +0.333 0 TD +0.08 Tw +[( is preferable to just booting)]TJ +-27.2811 -1.2889 TD +0.0667 Tw +(the machine, because it also does other cleanup operations \(closing network connections,)Tj +0 -1.2222 TD +0 Tw +(etc.\).)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.1566 0 TD +(FAST)Tj +/TT8 1 Tf +2.4004 0 TD +0.2367 Tw +[( is the symbol )]TJ +/TT10 1 Tf +7.3016 0 TD +0 Tw +(?,)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.4867 0 TD +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2367 Tw +[( acts like )]TJ +/TT14 1 Tf +4.771 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +0.5667 Tw +[( = T)]TJ +/TT8 1 Tf +3.5337 0 TD +0.2367 Tw +[( if the virtual memory file is)]TJ +-26.2511 -1.2889 TD +0.0267 Tw +(consistant, otherwise it acts like )Tj +/TT14 1 Tf +14.3623 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +0.0633 Tw +[( = NIL)]TJ +/TT8 1 Tf +3.7273 0 TD +0.0267 Tw +[(. This insures that the virtual memory image)]TJ +-19.8899 -1.2889 TD +0 Tw +(can be restarted as of )Tj +/TT18 1 Tf +9.5459 0 TD +(some)Tj +/TT8 1 Tf +2 0 TD +( previous state, not necessarily as of the )Tj +/TT10 1 Tf +17.7178 0 TD +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-35.5309 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(SAVEVM)Tj +/TT10 1 Tf +3.5999 0 TD +( \))Tj +/TT8 1 Tf +1.8003 0 TD +[( )-31569.7([Function])]TJ +-3.3336 -1.8444 TD +0.0222 Tw +[(This function is similar to logging out and continuing, but faster. It takes about as long as)]TJ +0 -1.2222 TD +0.0244 Tw +(a logout, which can be as brief as 10 seconds or so if you have already written out most of)Tj +T* +0.2767 Tw +[(your dirty pages by virtue of being idle a while. After the )]TJ +/TT10 1 Tf +29.3921 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.2767 Tw +(, and until the)Tj +-32.9927 -1.2889 TD +0.0156 Tw +(pagefault handler is next forced to write out a dirty page, your virtual memory image will)Tj +0 -1.2222 TD +0 Tw +(be continuable \(as of the )Tj +/TT10 1 Tf +11.0024 0 TD +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +(\) should there be a system crash or other disaster.)Tj +-14.603 -2.0667 TD +0.0856 Tw +(If the system has been idle long enough \(no keyboard or mouse activity\), there are dirty)Tj +0 -1.2222 TD +0.1578 Tw +(pages to be written, and there are few enough dirty pages left to write that a )Tj +/TT10 1 Tf +36.3946 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +-36.3946 -1.2889 TD +0.1044 Tw +(would be quick, )Tj +/TT10 1 Tf +7.6844 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1044 Tw +[( is automatically called. When )]TJ +/TT10 1 Tf +14.4074 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1044 Tw +[( is called automatically,)]TJ +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +33 0 obj +<< +/Length 7572 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-7)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.0778 Tw +(the cursor is changed to a special cursor: )Tj +ET +q +7.5 0 0 -6.5 294.75 575.99 cm +/Im1 Do +Q +BT +9 0 0 9 302.24 569.49 Tm +(, stored in the variable )Tj +/TT10 1 Tf +10.5041 0 TD +0 Tw +(SAVINGCURSOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.0778 Tw +[(. You)]TJ +-37.2875 -1.2889 TD +0.0522 Tw +(can control how often )Tj +/TT10 1 Tf +10.0927 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0522 Tw +[( is automatically called by setting the following two global)]TJ +-13.6933 -1.2889 TD +0 Tw +(variables:)Tj +/TT16 1 Tf +-2.6667 -2 TD +(SAVEVMWAIT)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +/TT16 1 Tf +-6 -1.0667 TD +(SAVEVMMAX)Tj +/TT8 1 Tf +5.4 0 TD +( )Tj +32.8678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.1533 Tw +(The system will call )Tj +/TT10 1 Tf +9.6119 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1533 Tw +[( after being idle for )]TJ +/TT10 1 Tf +9.4571 0 TD +0 Tw +(SAVEVMWAIT)Tj +/TT8 1 Tf +6.001 0 TD +0.1533 Tw +[( seconds \(initially 300\) if)]TJ +-28.6705 -1.2889 TD +0.2656 Tw +(there are fewer than )Tj +/TT10 1 Tf +10.2077 0 TD +0 Tw +(SAVEVMMAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.2656 Tw +[( pages dirty \(initially 600\). These values are fairly)]TJ +-15.6086 -1.2889 TD +0.1622 Tw +[(conservative. If you want to be extremely wary, you can set )]TJ +/TT10 1 Tf +28.7133 0 TD +0.39 Tw +(SAVEVMWAIT = 0)Tj +/TT8 1 Tf +9.1814 0 TD +0.1622 Tw +[( and)]TJ +/TT10 1 Tf +-37.8946 -1.2889 TD +0.3389 Tw +(SAVEVMMAX = 10000)Tj +/TT8 1 Tf +10.8794 0 TD +0.1411 Tw +(, in which case )Tj +/TT10 1 Tf +7.2671 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1411 Tw +[( will be called the first chance available)]TJ +-21.7471 -1.2889 TD +0 Tw +(after the first dirty page has been written.)Tj +0 -2 TD +0.0311 Tw +(The function )Tj +/TT10 1 Tf +5.9431 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +[( saves the current state of Medleys virtual memory on a file, known)]TJ +-9.5437 -1.2889 TD +0.0956 Tw +[(as a sysout file, or simply a sysout. The file package can be used to save particular)]TJ +0 -1.2222 TD +0.0189 Tw +(function definitions and other arbitrary objects on files, but )Tj +/TT10 1 Tf +26.4996 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0189 Tw +[( saves the )]TJ +/TT18 1 Tf +4.5855 0 TD +0 Tw +(total)Tj +/TT8 1 Tf +1.8315 0 TD +0.0189 Tw +[( state of)]TJ +-36.5172 -1.2889 TD +0.1644 Tw +[(the system. This capability can be useful in many situations: for creating customized)]TJ +0 -1.2222 TD +0.28 Tw +(systems for other people to use, or to save a particular system state for debugging)Tj +T* +0.0844 Tw +[(purposes. Note that a sysout file can be very large \(thousands of pages\), and can take a)]TJ +T* +0.1 Tw +[(long time to create, so it is not to be done lightly. The file produced by )]TJ +/TT10 1 Tf +33.1375 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1 Tw +[( can be)]TJ +-36.7381 -1.2889 TD +0.0989 Tw +(loaded into Medleys virtual memory and restarted to restore the virtual memory to the)Tj +0 -1.2222 TD +0.1556 Tw +[(exact state that it had when the sysout file was made. The exact method of loading a)]TJ +T* +0.06 Tw +[(sysout depend on the implementation. For more information on loading sysout files, see)]TJ +T* +0 Tw +(the users guide for your computer.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(SYSOUT)Tj +/F1 1 Tf +10 0 0 10 139.8 306.61 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 142.67 306.61 Tm +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30050.6([Function])]TJ +-4.8527 -1.8444 TD +0.0322 Tw +(Saves the current state of Medleys virtual memory on the file )Tj +/TT14 1 Tf +27.8281 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0322 Tw +(, in a form that can be)Tj +-30.2285 -1.2889 TD +0.0267 Tw +[(subsequently restarted. The current state of program execution is saved in the sysout file,)]TJ +0 -1.2222 TD +0 Tw +(so )Tj +/TT10 1 Tf +1.2797 0 TD +0.1433 Tw +(\(PROGN \(SYSOUT FOO\) \(PRINT HELLO\)\))Tj +/TT8 1 Tf +22.1769 0 TD +0.06 Tw +[( will cause )]TJ +/TT10 1 Tf +5.0867 0 TD +0 Tw +(HELLO)Tj +/TT8 1 Tf +3.0005 0 TD +0.06 Tw +[( to be printed after)]TJ +-31.5438 -1.2889 TD +0 Tw +(the sysout file is restarted.)Tj +/TT10 1 Tf +0 -2 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +[( can take a very long time \(ten or fifteen minutes\), particularly when storing a file)]TJ +-3.6006 -1.2889 TD +0.1878 Tw +[(on a remote file server. To display some indication that something is happening, the)]TJ +0 -1.3644 TD +0.0011 Tw +(cursor is changed to:)Tj +/F3 1 Tf +10 0 0 10 208.3571 213.93 Tm +0 Tw +( )Tj +ET +q +7 0 0 -7 211.18 220.93 cm +/Im2 Do +Q +BT +10 0 0 10 218.17 213.93 Tm +0.001 Tw +(. )Tj +/TT8 1 Tf +9 0 0 9 226.53 213.93 Tm +(Also, as the sysout file is being written, the cursor is inverted line)Tj +-11.17 -1.2222 TD +0.0556 Tw +(by line, to show that activity is taking place, and how much of the sysout has completed.)Tj +0 -1.3644 TD +0.1167 Tw +(For example, after the )Tj +/TT10 1 Tf +10.3832 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1167 Tw +[( is about two-thirds done, the cursor would look like: )]TJ +ET +q +7 0 0 -7 476.24 197.65 cm +/Im3 Do +Q +BT +/F3 1 Tf +10 0 0 10 483.23 190.65 Tm +0 Tw +(.)Tj +/TT8 1 Tf +9 0 0 9 126 179.05 Tm +(The )Tj +/TT10 1 Tf +1.9238 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +( cursor is stored in the variable )Tj +/TT10 1 Tf +13.8867 0 TD +(SYSOUTCURSOR)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-26.6123 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9655 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3489 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +(, the variable )Tj +/TT10 1 Tf +6.0981 0 TD +0 Tw +(SYSOUTFILE)Tj +/TT8 1 Tf +6.001 0 TD +0.0456 Tw +[( is set to the body of )]TJ +/TT14 1 Tf +9.417 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[(. If )]TJ +/TT14 1 Tf +1.8066 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[( is )]TJ +/TT10 1 Tf +1.306 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.7448 -1.2889 TD +0.0711 Tw +(then the value of )Tj +/TT10 1 Tf +7.9578 0 TD +0 Tw +(SYSOUTFILE)Tj +/TT8 1 Tf +6.001 0 TD +0.0711 Tw +[( instead. Therefore, )]TJ +/TT10 1 Tf +9.2981 0 TD +0 Tw +(\(SYSOUT\))Tj +/TT8 1 Tf +4.8008 0 TD +0.0711 Tw +[( will save the current state)]TJ +-28.0577 -1.2889 TD +0.0567 Tw +(on the next higher version of a file with the same name as the previous )Tj +/TT10 1 Tf +32.3231 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0567 Tw +[(. Also, if)]TJ +-35.9237 -1.2889 TD +0.1033 Tw +(the extension for )Tj +/TT14 1 Tf +7.9462 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1033 Tw +[( is not specified, the value of )]TJ +/TT10 1 Tf +13.549 0 TD +0 Tw +(SYSOUT.EXT)Tj +/TT8 1 Tf +6.001 0 TD +0.1033 Tw +[( is used. )]TJ +/TT10 1 Tf +4.4949 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +[( sets)]TJ +/TT10 1 Tf +-37.9921 -1.2889 TD +0 Tw +(SYSOUTDATE)Tj +/TT8 1 Tf +6.001 0 TD +0.0001 Tc +0.0032 Tw +( \(see the System Version Information section below\) to )Tj +/TT10 1 Tf +24.3347 0 TD +0 Tc +0 Tw +(\(DATE\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0033 Tw +(, the time and)Tj +-33.9363 -1.2889 TD +0 Tw +(date that the )Tj +/TT10 1 Tf +5.7876 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +( was performed.)Tj +-9.3882 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.071 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1511 Tw +[( was not able to create the sysout file, because of disk or computer error, or)]TJ +-4.6716 -1.2889 TD +0.0622 Tw +(because there was not enough space on the directory, )Tj +/TT10 1 Tf +24.3691 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0622 Tw +[( returns )]TJ +/TT10 1 Tf +3.8285 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[(. Otherwise it)]TJ +-33.5985 -1.2889 TD +0 Tw +(returns the full file name of )Tj +/TT14 1 Tf +12.3262 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +34 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/F3 35 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/XObject << +/Im1 36 0 R +/Im2 37 0 R +/Im3 38 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6037 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-8)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +(Actually, )Tj +/TT10 1 Tf +4.4624 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1733 Tw +[( returns twice; when the sysout file is first created, and when it is)]TJ +-8.063 -1.2889 TD +0.0556 Tw +[(subsequently restarted. In the latter case, )]TJ +/TT10 1 Tf +18.9245 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0556 Tw +[( returns a list whose )]TJ +/TT10 1 Tf +9.4287 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( is the full file)]TJ +-33.7541 -1.2889 TD +0.2689 Tw +(name of )Tj +/TT14 1 Tf +4.3605 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2689 Tw +[(. For example, )]TJ +/TT10 1 Tf +7.8216 0 TD +0.6444 Tw +(\(if \(LISTP \(SYSOUT FOO\)\) then \(PRINT)Tj +-14.5826 -1.2889 TD +0 Tw +(HELLO\)\))Tj +/TT8 1 Tf +4.8008 0 TD +0.0433 Tw +[( will cause )]TJ +/TT10 1 Tf +5.0367 0 TD +0 Tw +(HELLO)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +[( to be printed when the sysout file is restarted, but not when)]TJ +/TT10 1 Tf +-12.838 -1.2889 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +( is initially performed.)Tj +/TT12 1 Tf +-3.6006 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0222 Tw +(: )Tj +/TT10 1 Tf +0.7944 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0222 Tw +[( does not save the state of any open files. Use )]TJ +/TT10 1 Tf +20.6641 0 TD +0 Tw +(WHENCLOSE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0222 Tw +[( \(see the Closing)]TJ +-32.6822 -1.2889 TD +0.0367 Tw +[(and Reopening Files section in Chapter 24\) to associate certain operations with open files)]TJ +0 -1.2222 TD +0.2489 Tw +(so that when a )Tj +/TT10 1 Tf +7.6767 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2489 Tw +[( is started up, these files will be reopened, and file pointers)]TJ +-11.2773 -1.2889 TD +0 Tw +(repositioned.)Tj +/TT10 1 Tf +0 -2 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0933 Tw +[( evaluates the expressions on )]TJ +/TT10 1 Tf +13.5594 0 TD +0 Tw +(BEFORESYSOUTFORMS)Tj +/TT8 1 Tf +10.2017 0 TD +0.0933 Tw +[( \(see also )]TJ +/TT10 1 Tf +4.5056 0 TD +0 Tw +(AROUNDEXITFNS)Tj +/TT8 1 Tf +7.8013 0 TD +(\))Tj +-39.6685 -1.2889 TD +(before creating the sysout file. This variable initially includes expressions to:)Tj +0 -2 TD +[(1.)-583.3( Set the variables )]TJ +/TT10 1 Tf +9.0487 0 TD +(SYSOUTDATE)Tj +/TT8 1 Tf +6.001 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(SYSOUTFILE)Tj +/TT8 1 Tf +6.001 0 TD +( as described above)Tj +-23.2435 -2.0667 TD +0.5089 Tw +[(2.)-583.3(Default the sysout file name )]TJ +/TT14 1 Tf +16.5379 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.5089 Tw +[( according to the values of the variables)]TJ +/TT10 1 Tf +-17.605 -1.2889 TD +0 Tw +(SYSOUTFILE)Tj +/TT8 1 Tf +6.001 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(SYSOUT.EXT)Tj +/TT8 1 Tf +6.001 0 TD +(, as described above)Tj +-15.5282 -2.0667 TD +[(3.)-583.3(Perform any necessary operations on open files as specified by calls to )]TJ +/TT10 1 Tf +32.5404 0 TD +(WHENCLOSE)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-37.9412 -2.0667 TD +0.0778 Tw +(After a sysout file is restarted \(but )Tj +/TT18 1 Tf +15.8438 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0778 Tw +[( when it is initially created\), )]TJ +/TT10 1 Tf +13.0121 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0778 Tw +[( evaluates the)]TJ +-33.7894 -1.2889 TD +0.0567 Tw +(expressions on )Tj +/TT10 1 Tf +6.9019 0 TD +0 Tw +(AFTERSYSOUTFORMS )Tj +/TT8 1 Tf +10.3383 0 TD +0.0567 Tw +(\(see also )Tj +/TT10 1 Tf +4.0889 0 TD +0 Tw +(AROUNDEXITFNS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0567 Tw +[(\). This initially includes)]TJ +-29.1304 -1.2889 TD +0 Tw +(expressions to:)Tj +0 -2 TD +0.1389 Tw +[(1.)-583.3(Perform any necessary operations on previously-opened files as specified by calls to)]TJ +/TT10 1 Tf +1.3333 -1.1556 TD +0 Tw +(WHENCLOSE)Tj +/TT8 1 Tf +-1.3333 -2.0667 TD +[(2.)-583.3(Possibly print a message, as determined by the value of )]TJ +/TT10 1 Tf +26.0853 0 TD +(SYSOUTGAG)Tj +/TT8 1 Tf +5.4009 0 TD +( \(see below\))Tj +-31.4862 -2.0667 TD +[(3.)-583.3(Call )]TJ +/TT10 1 Tf +3.4932 0 TD +(SETINITIALS)Tj +/TT8 1 Tf +6.6011 0 TD +0.1189 Tw +[( to reset the initials used for time-stamping \(see the Time Stamps)]TJ +-8.761 -1.2889 TD +0 Tw +(section of Chapter 16\).)Tj +/TT16 1 Tf +-4 -2 TD +(AROUNDEXITFNS)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0522 Tw +(This variable provides a way to advise the system on cleanup and restoration activities)Tj +0 -1.2222 TD +0.5867 Tw +(to perform around )Tj +/TT10 1 Tf +10.2507 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +1.0867 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +1.0867 0 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.5867 Tw +[( and )]TJ +/TT10 1 Tf +3.3662 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.5867 Tw +(; It subsumes the)Tj +-30.7927 -1.2889 TD +0.1922 Tw +(functionality of )Tj +/TT10 1 Tf +7.4347 0 TD +0 Tw +(BEFORESYSOUTFORMS)Tj +/TT8 1 Tf +10.2017 0 TD +(, )Tj +/TT10 1 Tf +0.6922 0 TD +(AFTERLOGOUTFORMS)Tj +/TT8 1 Tf +9.6016 0 TD +0.1922 Tw +(, etc. Its value is a list of)Tj +-27.9302 -1.2889 TD +0.05 Tw +[(functions \(names\) to call around every exit of the system. Each function is called with)]TJ +0 -1.2222 TD +0 Tw +(one argument, a symbol indicating which particular event is occuring. The symbols are:)Tj +/TT16 1 Tf +1.4 -2 TD +(BEFORLOGOUT)Tj +/TT8 1 Tf +7.2667 0 TD +(The system is about to perform a )Tj +/TT10 1 Tf +14.7627 0 TD +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT16 1 Tf +-26.2299 -2.0667 TD +(BEFORESYSOUT)Tj +-0.6 -1 TD +(BEFOREMAKESYS)Tj +0.6 -1.0667 TD +(BEFORESAVEVM)Tj +/TT8 1 Tf +7.8667 0 TD +(The system is about to perform a )Tj +/TT10 1 Tf +14.7627 0 TD +(SYSOUT,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +( or a )Tj +/TT10 1 Tf +2.1909 0 TD +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT16 1 Tf +-36.4722 -2.0667 TD +(AFTERLOGOUT)Tj +0 -1 TD +(AFTERSYSOUT)Tj +-0.6 -1 TD +(AFTERMAKESYS)Tj +0.6 -1.0667 TD +(AFTERSAVEVM)Tj +/TT8 1 Tf +7.2667 0 TD +0.1178 Tw +(The system is starting up am image that was saved by performing a)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, etc.)Tj +/TT16 1 Tf +-16.1678 -2 TD +(AFTERDOSYSOUT)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +43 0 obj +<< +/Length 6746 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-9)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT16 1 Tf +9 0 0 9 122.4 570.14 Tm +(AFTERDOMAKESYS)Tj +0.6 -1.0667 TD +(AFTERDOSAVEVM)Tj +/TT8 1 Tf +8.4667 0 TD +0.1433 Tw +(The system just made a copy of the virtual memory and saved it to)Tj +0 -1.2889 TD +0.1389 Tw +[(disk. The image continues to run. These events only exist to allow)]TJ +0 -1.2222 TD +0 Tw +(you to negate the effects of saveing a copy of the virtual memory.)Tj +/TT16 1 Tf +-11.3333 -2 TD +(SYSOUTGAG)Tj +/TT8 1 Tf +5.4 0 TD +( )Tj +32.8678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0133 Tw +(The value of )Tj +/TT10 1 Tf +5.7807 0 TD +0 Tw +(SYSOUTGAG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0133 Tw +[( determines what is printed when a sysout file is restarted. If the)]TJ +-11.1816 -1.2889 TD +0.0889 Tw +(value of )Tj +/TT10 1 Tf +3.9947 0 TD +0 Tw +(SYSOUTGAG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0889 Tw +[( is a list, the list is evaluated, and no additional message is printed.)]TJ +-9.3956 -1.2889 TD +0.0567 Tw +[(This allows you to print a message. If )]TJ +/TT10 1 Tf +17.4924 0 TD +0 Tw +(SYSOUTGAG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0567 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3711 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0567 Tw +[( and not a list, no message)]TJ +-28.0647 -1.2889 TD +0.15 Tw +[(is printed. Finally, if )]TJ +/TT10 1 Tf +10.1914 0 TD +0 Tw +(SYSOUTGAG)Tj +/TT8 1 Tf +5.4009 0 TD +0.15 Tw +[( is )]TJ +/TT10 1 Tf +1.5148 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.15 Tw +[( \(its initial value\), and the sysout file is being)]TJ +-18.9074 -1.2889 TD +0.0056 Tw +(restarted by the same user that made the sysout originally, you are greeted by printing the)Tj +0 -1.2222 TD +0.1211 Tw +(value of )Tj +/TT10 1 Tf +4.0591 0 TD +0 Tw +(HERALDSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +0.1211 Tw +[( \(see below\) followed by a greeting message. If the sysout file)]TJ +-11.2603 -1.2889 TD +0.1633 Tw +(was made by a different user, a message is printed, warning that the currently-loaded)Tj +0 -1.2222 TD +0.0289 Tw +(user init file may be incorrect for the current user \(see the Greeting and Initialization Files)Tj +T* +0 Tw +(section above\). )Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(MAKESYS)Tj +/F1 1 Tf +10 0 0 10 145.2 393.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.07 393.06 Tm +(FILE)Tj +/F2 1 Tf +10 0 0 10 169.6735 393.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 172.4535 393.06 Tm +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-26741.3([Function])]TJ +-8.162 -1.8444 TD +0.0233 Tw +(Used to store a new Medley system on the makesys file )Tj +/TT14 1 Tf +25.9198 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[(. Like )]TJ +/TT10 1 Tf +3.007 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0233 Tw +(, but before)Tj +-34.9277 -1.2889 TD +0.06 Tw +(the file is made, the system is initialized by undoing the greet history, and clearing the)Tj +0 -1.2222 TD +0 Tw +(display.)Tj +0 -2 TD +0.0378 Tw +(When the system is first started up, a herald is printed identifying the system, typically)Tj +0 -1.2222 TD +0 Tw +()Tj +/TT10 1 Tf +0.5 0 TD +0.1067 Tw +(Medley-XX DATE ...)Tj +/TT8 1 Tf +11.0151 0 TD +0.0444 Tw +[(. If )]TJ +/TT14 1 Tf +2.3033 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3467 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5444 0 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0444 Tw +[( will use it instead of )]TJ +/TT10 1 Tf +9.6885 0 TD +0 Tw +(Medley-)Tj +-35.7994 -1.2889 TD +(XX)Tj +/TT8 1 Tf +1.2002 0 TD +( in the herald. )Tj +/TT10 1 Tf +6.6182 0 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +( sets )Tj +/TT10 1 Tf +2.1528 0 TD +(HERALDSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +( to the herald string printed out.)Tj +/TT10 1 Tf +-21.3731 -2.0667 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0344 Tw +[( also sets the variable )]TJ +/TT10 1 Tf +9.7972 0 TD +0 Tw +(MAKESYSDATE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0344 Tw +[( \(see the next section below\) to )]TJ +/TT10 1 Tf +13.9965 0 TD +0 Tw +(\(DATE\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0344 Tw +(, i.e.)Tj +-38.196 -1.2889 TD +0 Tw +(the time and date the system was made.)Tj +-5.3333 -2 TD +0.2778 Tw +(Medley contains a routine that writes out dirty pages of the virtual memory during I/O wait,)Tj +0 -1.2222 TD +0.0189 Tw +(assuming that swapping has caused at least one dirty page to be written back into the virtual memory)Tj +T* +0 Tw +(file \(making it non-continuable\). The frequency with which this routine runs is determined by:)Tj +/TT16 1 Tf +2.6667 -2 TD +(BACKGROUNDPAGEFREQ)Tj +/TT8 1 Tf +10.8 0 TD +[( )-26967.8([Variable])]TJ +-8.1333 -1.8444 TD +0.1378 Tw +[(This variable determines how often the routine that writes out dirty pages is run. The)]TJ +/TT18 1 Tf +0 -1.2222 TD +0 Tw +(higher)Tj +/TT8 1 Tf +2.5562 0 TD +( )Tj +/TT10 1 Tf +0.32 0 TD +(BACKGROUNDPAGEFREQ)Tj +/TT8 1 Tf +10.8018 0 TD +0.07 Tw +[( is set, the )]TJ +/TT18 1 Tf +4.8611 0 TD +0 Tw +(greater)Tj +/TT8 1 Tf +2.8335 0 TD +0.07 Tw +[( the time between running the dirty page)]TJ +-21.3725 -1.2889 TD +0.0867 Tw +[(writing routine. Initially it is set to 4. The lower )]TJ +/TT10 1 Tf +22.6547 0 TD +0 Tw +(BACKGROUNDPAGEFREQ)Tj +/TT8 1 Tf +10.8018 0 TD +0.0867 Tw +[( is set, the less)]TJ +-33.4565 -1.2889 TD +0 Tw +(responsiveness you get at typein, so it may not be desirable to set it all the way down to 1.)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(VMEM.PURE.STATE)Tj +/F1 1 Tf +10 0 0 10 188.4 154.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.27 154.98 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21713.1([NoSpread Function])]TJ +/TT10 1 Tf +-8.4524 -1.8444 TD +(VMEM.PURE.STATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.2356 Tw +[( modifies the swappers page replacement algorithm so that dirty)]TJ +-9.0015 -1.2889 TD +0.1478 Tw +[(pages are only written at the end of the virtual memory backing file. This freezes a)]TJ +0 -1.2222 TD +0.2033 Tw +(given virtual memory state, so that Medley will come up in that state whenever it is)Tj +T* +0.0567 Tw +[(restarted. This can be used to set up a clean environment on a pool machine, allowing)]TJ +T* +0 Tw +(each user to initialize the system simply by rebooting the computer.)Tj +0 -2 TD +0.1667 Tw +(The way to use )Tj +/TT10 1 Tf +7.6086 0 TD +0 Tw +(VMEM.PURE.STATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.1667 Tw +[( is to set up the environment as you wish it to be)]TJ +-16.61 -1.2889 TD +0.1589 Tw +(frozen, evaluate )Tj +/TT10 1 Tf +8.6459 0 TD +0.3822 Tw +(\(VMEM.PURE.STATE T\))Tj +/TT8 1 Tf +11.7841 0 TD +0.1589 Tw +(, and then call any function that saves the)Tj +-20.43 -1.2889 TD +0.2322 Tw +(virtual memory state \()Tj +/TT10 1 Tf +10.5477 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7322 0 TD +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7322 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2322 Tw +(, or )Tj +/TT10 1 Tf +2.1554 0 TD +0 Tw +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.2322 Tw +[(\). From that point on,)]TJ +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +46 0 obj +<< +/Length 4548 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-10)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.1622 Tw +(whenever the system is restarted, it will return to the state as of the saving operation.)Tj +0 -1.2222 TD +0 Tw +(Future )Tj +/TT10 1 Tf +3.2124 0 TD +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +(, etc. operations will not reset this state.)Tj +/TT12 1 Tf +-10.9136 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0833 Tw +[(: When the system is running in pure state mode, it uses a significant amount of)]TJ +-2.2222 -1.2222 TD +0.1033 Tw +(the virtual memory backing file to save the frozen memory image, so this will reduce)Tj +T* +0 Tw +(the amount of virtual memory space available for use.)Tj +/TT10 1 Tf +0 -2 TD +(\(VMEM.PURE.STATE\))Tj +/TT8 1 Tf +10.2017 0 TD +0.2511 Tw +[( returns )]TJ +/TT10 1 Tf +4.2063 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2511 Tw +[( if the system is running in pure state mode, )]TJ +/TT10 1 Tf +23.1952 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +-38.2033 -1.2889 TD +(otherwise.)Tj +/TT10 1 Tf +-2.6667 -2 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(REALMEMORYSIZE)Tj +/TT10 1 Tf +8.3999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27969.9([Function])]TJ +-6.9334 -1.8444 TD +(Returns the number of real memory pages in the computer.)Tj +/TT10 1 Tf +-2.6667 -2 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(VMEMSIZE)Tj +/TT10 1 Tf +4.7999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31569.9([Function])]TJ +-3.3334 -1.8444 TD +0.0667 Tw +[(Returns the number of pages in use in the virtual memory. This is the roughly the same)]TJ +0 -1.2222 TD +0.1778 Tw +(as the number of pages required to make a sysout file on the local disk \(see )Tj +/TT10 1 Tf +36.1491 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-39.7497 -1.2889 TD +(above\).)Tj +/F3 1 Tf +10 0 0 10 150 377.26 Tm +(\\)Tj +/TT16 1 Tf +9 0 0 9 156.06 377.26 Tm +(LASTVMEMFILEPAGE)Tj +/TT8 1 Tf +9.6 0 TD +[( )-27494.4([Variable])]TJ +-7.6067 -1.8444 TD +0.1156 Tw +[(Value is the total size of the virtual memory backing file. This variable is set when the)]TJ +0 -1.2222 TD +0 Tw +(system is started. You should )Tj +/TT18 1 Tf +13.4902 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +( set it..)Tj +/TT12 1 Tf +-14.8232 -2 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.0444 Tw +[(: When the virtual memory expands to the point where the virtual memory backing)]TJ +-2.2222 -1.2222 TD +0.1567 Tw +(file is almost full, a break will occur with the warning message Your virtual memory)Tj +T* +0.1722 Tw +[(backing file is almost full. Save your work & reload asap. When this happens, it is)]TJ +T* +0.2089 Tw +[(strongly suggested that you save any important work and reload the system. If you)]TJ +T* +0.0444 Tw +(continue working past this point, the system will start slowing down considerably, and it)Tj +T* +0 Tw +(will eventually stop working.)Tj +/TT4 1 Tf +10 0 0 10 102 254.32 Tm +(System Version Information)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 251.61 m +558.01 251.61 l +S +BT +/TT8 1 Tf +9 0 0 9 126 237.66 Tm +0.0367 Tw +[(Medley runs on a number of different machines, with many possible hardware configurations. There)]TJ +T* +0.1722 Tw +[(have been a number of different releases of the Medley software. These facts make it difficult to)]TJ +T* +0.2678 Tw +(answer the important question what software/hardware environment are you running? when)Tj +T* +0 Tw +(reporting bugs. The following functions allow the novice to collect this information.)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(PRINT-LISP-INFORMATION)Tj +/F1 1 Tf +10 0 0 10 274.2 185.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 277.07 185.38 Tm +(STREAM)Tj +/F2 1 Tf +10 0 0 10 309.4753 185.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 312.2552 185.38 Tm +(FILESTRING)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-8202.8([NoSpread Function])]TJ +-21.9628 -1.8444 TD +0.0533 Tw +(Prints out a summary of the software and hardware environment that Medley is running)Tj +0 -1.2222 TD +0 Tw +(in, and a list of all loaded patch files:)Tj +/TT10 1 Tf +2 -1.6 TD +(Venue Medley version )Tj +0 -1 TD +(Medley 2.0 sysout of 7-Oct-92 15:18:52 on mips, )Tj +T* +(Emulator created: 20-Nov-92, memory size: 0,)Tj +T* +(machine d022899 mo )Tj +T* +0.1256 Tw +(based on Envos Medley version Medley 2.0 sysout of 7-Oct-)Tj +T* +0 Tw +(92 15:18:52,)Tj +T* +(Make-init dates: 7-Oct-92 11:07:17, 7-Oct-92 11:26:22)Tj +T* +(Patch files: NIL)Tj +/TT14 1 Tf +-2 -1.8444 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( is the stream used to print the summary. If not given, it defaults to )Tj +/TT10 1 Tf +30.0772 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 35 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +49 0 obj +<< +/Length 5298 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-11)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT14 1 Tf +9 0 0 9 126 569.54 Tm +(FILESTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.1222 Tw +[( is a string used to determine what loaded files should be listed as patch)]TJ +-6.001 -1.2889 TD +0.1056 Tw +[(files. All file names on )]TJ +/TT10 1 Tf +11.4507 0 TD +0 Tw +(LOADEDFILELST)Tj +/TT8 1 Tf +7.8013 0 TD +0.1056 Tw +[( \(see the Noticing Files section of Chapter 17\))]TJ +-19.252 -1.2889 TD +0.0222 Tw +(that have )Tj +/TT14 1 Tf +4.4048 0 TD +0 Tw +(FILESTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.0222 Tw +[( as a substring as listed. If )]TJ +/TT14 1 Tf +12.0215 0 TD +0 Tw +(FILESTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.0222 Tw +[( is not given, it defaults to)]TJ +-28.4283 -1.2889 TD +0 Tw +(the string )Tj +/TT10 1 Tf +4.4614 0 TD +(PATCH)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-11.3288 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:LISP-IMPLEMENTATION-TYPE)Tj +/TT10 1 Tf +16.1999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-20169.9([Function])]TJ +-14.7334 -1.8444 TD +(Returns a string identifying the type of implementation that is running, e.g., )Tj +/TT10 1 Tf +33.814 0 TD +(Medley)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-41.2814 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:LISP-IMPLEMENTATION-VERSION)Tj +/TT10 1 Tf +17.9999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-18369.9([Function])]TJ +-16.5334 -1.8444 TD +0.0367 Tw +[(Returns a string identifying the version that is running. Currently gives the system name)]TJ +0 -1.2222 TD +0 Tw +(and date, e.g., )Tj +/TT10 1 Tf +6.394 0 TD +(KOTO of 10-Sep-85 08:25:46)Tj +/TT8 1 Tf +16.8027 0 TD +(.)Tj +-23.1968 -2.0667 TD +0.0189 Tw +(This uses the variables )Tj +/TT10 1 Tf +10.3002 0 TD +0 Tw +(MAKESYSNAME)Tj +/TT8 1 Tf +6.6011 0 TD +0.0189 Tw +[( and )]TJ +/TT10 1 Tf +2.2306 0 TD +0 Tw +(MAKESYSDATE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0189 Tw +[( \(below\), so it will change if you)]TJ +-25.733 -1.2889 TD +0 Tw +(use )Tj +/TT10 1 Tf +1.9514 0 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1956 Tw +[( \(see the Saving Virtual Memory State section above\) to create a custom)]TJ +-6.1521 -1.2889 TD +0 Tw +(sysout file, or explicitly changes these variables.)Tj +/TT10 1 Tf +-2.6667 -2 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:SOFTWARE-TYPE)Tj +/TT10 1 Tf +9.5999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-26769.9([Function])]TJ +-8.1334 -1.8444 TD +0.3955 Tw +(Returns a string identifying the operating system that Interlisp is running under.)Tj +0 -1.2222 TD +0 Tw +(Currently returns the string )Tj +/TT10 1 Tf +12.502 0 TD +(Envos Medley)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-23.57 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:SOFTWARE-VERSION)Tj +/TT10 1 Tf +11.3999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24969.9([Function])]TJ +-9.9334 -1.8444 TD +0.0944 Tw +(Returns a string identifying the version of the operating system that Interlisp is running)Tj +0 -1.2222 TD +0.0589 Tw +[(under. Currently, this returns the date that the Medley release was originally created, so)]TJ +T* +0 Tw +(it doesnt change over )Tj +/TT10 1 Tf +9.9907 0 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-21.8996 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:MACHINE-TYPE)Tj +/TT10 1 Tf +8.9999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27369.9([Function])]TJ +-7.5334 -1.8444 TD +0.1322 Tw +(Returns a string identifying the type of computer hardware that Medley is running on,)Tj +0 -1.2222 TD +0 Tw +(i.e., )Tj +/TT10 1 Tf +1.77 0 TD +(1108)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(1132)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(1186)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.75 0 TD +(mips)Tj +/TT8 1 Tf +3.6006 0 TD +(, etc.)Tj +/TT10 1 Tf +-20.589 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:MACHINE-VERSION)Tj +/TT10 1 Tf +10.7999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25569.9([Function])]TJ +-9.3334 -1.8444 TD +0.03 Tw +(Returns a string identifying the version of the computer hardware that Medley is running)Tj +0 -1.2222 TD +0 Tw +(on. Currently returns the microcode version and real memory size.)Tj +/TT10 1 Tf +-2.6667 -2 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:MACHINE-INSTANCE)Tj +/TT10 1 Tf +11.3999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24969.9([Function])]TJ +-9.9334 -1.8444 TD +0.0533 Tw +[(Returns a string identifying the particular machine that Medley is running on. Currently)]TJ +0 -1.2222 TD +0 Tw +(returns the machines NS address.)Tj +/TT10 1 Tf +-2.6667 -2 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:SHORT-SITE-NAME)Tj +/TT10 1 Tf +10.7999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25569.9([Function])]TJ +-9.3334 -1.8444 TD +0.0178 Tw +[(Returns a short string identifying the site where the machine is located. Currently returns)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(\(ETHERHOSTNAME\))Tj +/TT8 1 Tf +9.0015 0 TD +( \(if non-)Tj +/TT10 1 Tf +3.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(\) or the string )Tj +/TT10 1 Tf +6.2354 0 TD +(unknown)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-28.6047 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CL:LONG-SITE-NAME)Tj +/TT10 1 Tf +10.1999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-26169.9([Function])]TJ +-8.7334 -1.8444 TD +0.0389 Tw +[(Returns a long string identifying the site where the machine is located. Currently returns)]TJ +0 -1.2222 TD +0 Tw +(the same as )Tj +/TT10 1 Tf +5.3467 0 TD +(SHORT-SITE-NAME)Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +ET +endstream +endobj +50 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +54 0 obj +<< +/Length 7112 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-12)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT16 1 Tf +9 0 0 9 150 568.26 Tm +(SYSOUTDATE)Tj +/F3 1 Tf +10 0 0 10 204.0088 568.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 206.78 568.26 Tm +31.7089 Tw +[( [Variable])]TJ +-3.6422 -1.8444 TD +0.1033 Tw +(Value is set by )Tj +/TT10 1 Tf +7.0618 0 TD +0 Tw +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +[( \(see the Saving Virtual Memory State section above\) to the date)]TJ +-10.6624 -1.2889 TD +0 Tw +(before generating a virtual memory image file.)Tj +/TT16 1 Tf +-2.6667 -2.1422 TD +(MAKESYSDATE)Tj +/F3 1 Tf +10 0 0 10 209.4 520.78 Tm +[( )-27274([Variable])]TJ +/TT8 1 Tf +9 0 0 9 174 504.18 Tm +0.0633 Tw +(Value is set by )Tj +/TT10 1 Tf +6.9018 0 TD +0 Tw +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0633 Tw +[( \(see the Saving Virtual Memory State section above\) to the date)]TJ +-11.1025 -1.2889 TD +0 Tw +(before generating a virtual memory image file.)Tj +/TT16 1 Tf +-2.6667 -2 TD +(MAKESYSNAME)Tj +/TT8 1 Tf +6.6011 0 TD +[( )-31166.7([Variable])]TJ +-3.9344 -1.8444 TD +0.3022 Tw +(Value is a symbol identifying the release name of the current Medley system, e.g.,)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(:MEDLEY)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-6.8674 -2.0667 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(SYSTEMTYPE)Tj +/TT10 1 Tf +5.9999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30369.9([Function])]TJ +-4.5334 -1.8444 TD +0.1611 Tw +(Allows programmers to write system-dependent code. )Tj +/TT10 1 Tf +25.7997 0 TD +0 Tw +(SYSTEMTYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.1611 Tw +[( returns a symbol)]TJ +-31.8006 -1.2889 TD +0.3022 Tw +(corresponding to the implementation of Interlisp: )Tj +/TT10 1 Tf +23.9393 0 TD +0 Tw +(D)Tj +/TT8 1 Tf +0.6001 0 TD +0.3022 Tw +[( \(for Medley\), )]TJ +/TT10 1 Tf +7.2084 0 TD +0 Tw +(TOPS-20)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.8022 0 TD +(TENEX)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +/TT10 1 Tf +-39.7512 -1.2889 TD +(JERICO)Tj +/TT8 1 Tf +3.6006 0 TD +(, or )Tj +/TT10 1 Tf +1.6909 0 TD +(VAX)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-7.0918 -2.0667 TD +0.0478 Tw +(In Medley, )Tj +/TT10 1 Tf +5.1263 0 TD +0.1156 Tw +(\(SELECTQ \(SYSTEMTYPE\) ...\))Tj +/TT8 1 Tf +15.8337 0 TD +0.0478 Tw +[( expressions are expanded at compile time)]TJ +-20.96 -1.2889 TD +0 Tw +(so that this is an effective way to perform conditional compilation.)Tj +/TT10 1 Tf +-2.6667 -2 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(MACHINETYPE)Tj +/TT10 1 Tf +6.5999 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29769.9([Function])]TJ +-5.1334 -1.8444 TD +0.15 Tw +[(Returns the type of machine that Medley is running on: either )]TJ +/TT10 1 Tf +29.5988 0 TD +0 Tw +(DORADO)Tj +/TT8 1 Tf +3.6006 0 TD +0.15 Tw +[( \(for the Xerox)]TJ +-33.1994 -1.2889 TD +0 Tw +(1132\), )Tj +/TT10 1 Tf +3.0163 0 TD +(DOLPHIN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1833 Tw +[( \(for the Xerox 1100\), )]TJ +/TT10 1 Tf +10.7802 0 TD +0 Tw +(DANDELION)Tj +/TT8 1 Tf +5.4009 0 TD +0.1833 Tw +[( \(for the Xerox 1108\), )]TJ +/TT10 1 Tf +10.3468 0 TD +0 Tw +(DOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1833 Tw +[( \(for the)]TJ +-36.1453 -1.2889 TD +0 Tw +(Xerox 1186\), or )Tj +/TT10 1 Tf +6.877 0 TD +(MAIKO)Tj +/TT8 1 Tf +3.0005 0 TD +( \(for Unix, DOS, etc\).)Tj +/TT4 1 Tf +10 0 0 10 102 277.64 Tm +(Date And Time Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 274.93 m +558.01 274.93 l +S +BT +/TT10 1 Tf +9 0 0 9 150 259.7 Tm +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(DATE)Tj +/F3 1 Tf +10 0 0 10 177 259.7 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 179.78 259.7 Tm +(FORMAT)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30060.4([Function])]TJ +-4.8429 -1.8444 TD +0.1722 Tw +(Returns the current date and time as a string with format )Tj +/TT10 1 Tf +27.3349 0 TD +0 Tw +()Tj +/TT14 1 Tf +0.6001 0 TD +0.4133 Tw +(DD-MM-YY HH:MMM:SS)Tj +/TT10 1 Tf +11.2151 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-39.7502 -1.2889 TD +(where )Tj +/TT14 1 Tf +3.0413 0 TD +(DD)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( is day, )]TJ +/TT14 1 Tf +3.4485 0 TD +0 Tw +(MM)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( is month, )]TJ +/TT14 1 Tf +4.7005 0 TD +0 Tw +(YY)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( year, )]TJ +/TT14 1 Tf +2.7246 0 TD +0 Tw +(HH)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( hours, )]TJ +/TT14 1 Tf +3.3442 0 TD +0 Tw +(MMM)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +[( minutes, )]TJ +/TT14 1 Tf +4.3823 0 TD +0 Tw +(SS)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( seconds, e.g., )]TJ +/TT10 1 Tf +6.3611 0 TD +0 Tw +(7-Jun-)Tj +-35.8038 -1.2889 TD +(85 15:49:34)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-7.2012 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9921 0 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0722 Tw +[( is a date format as returned by )]TJ +/TT10 1 Tf +14.5949 0 TD +0 Tw +(DATEFORMAT)Tj +/TT8 1 Tf +6.001 0 TD +0.0722 Tw +[( \(below\), it is used to modify the)]TJ +-25.1886 -1.2889 TD +0 Tw +(format of the date string returned by )Tj +/TT10 1 Tf +16.4688 0 TD +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-21.5358 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(IDATE)Tj +/F3 1 Tf +10 0 0 10 182.4 169.82 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.18 169.82 Tm +(STR)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31260.7([Function])]TJ +/TT14 1 Tf +-3.6426 -1.8444 TD +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1533 Tw +[( is a date and time string. )]TJ +/TT10 1 Tf +12.8536 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1533 Tw +[( returns )]TJ +/TT14 1 Tf +4.0108 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1533 Tw +[( converted to a number such that if)]TJ +/TT10 1 Tf +-23.4655 -1.2889 TD +0 Tw +(DATE1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0089 Tw +[( is before \(earlier than\) )]TJ +/TT10 1 Tf +10.2808 0 TD +0 Tw +(DATE2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0089 Tw +(, then )Tj +/TT10 1 Tf +2.737 0 TD +0 Tw +(\(IDATE )Tj +/TT14 1 Tf +4.2218 0 TD +(DATE1)Tj +/TT10 1 Tf +3.0005 0 TD +0.0211 Tw +(\) < \(IDATE )Tj +/TT14 1 Tf +6.6644 0 TD +0 Tw +(DATE2)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0089 Tw +[(. If )]TJ +/TT10 1 Tf +1.6966 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +-38.2026 -1.2889 TD +(is )Tj +/TT10 1 Tf +0.9648 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the current date and time is used.)Tj +-2.7651 -2.0667 TD +0.1411 Tw +[(Different Interlisp implementations can have different internal date formats. However,)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0533 Tw +[( always has the essential property that )]TJ +/TT10 1 Tf +17.5511 0 TD +0 Tw +(\(IDATE )Tj +/TT14 1 Tf +4.3296 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( is less than )]TJ +/TT10 1 Tf +5.5361 0 TD +0 Tw +(\(IDATE )Tj +/TT14 1 Tf +4.3296 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( if )]TJ +/TT14 1 Tf +1.2307 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( is)]TJ +-38.978 -1.2889 TD +0 Tw +(before )Tj +/TT14 1 Tf +3.0785 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +(, and )Tj +/TT10 1 Tf +2.5295 0 TD +0.1044 Tw +(\(IDATE \(GDATE )Tj +/TT14 1 Tf +8.6103 0 TD +0 Tw +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0433 Tw +[( equals )]TJ +/TT14 1 Tf +3.4436 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +[(. Programs which do arithmetic other than)]TJ +-20.6624 -1.2889 TD +0.1311 Tw +(numerical comparisons between )Tj +/TT10 1 Tf +14.9788 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1311 Tw +[( numbers may not work when moved from one)]TJ +-17.9793 -1.2889 TD +0 Tw +(implementation to another.)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 35 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +57 0 obj +<< +/Length 6385 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-13)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0411 Tw +(Generally, it is possible to increment an )Tj +/TT10 1 Tf +17.9802 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0411 Tw +[( number by an integral number of days by)]TJ +-20.9806 -1.2889 TD +0.3122 Tw +(computing a 1 day constant, the difference between two convenient )Tj +/TT10 1 Tf +34.2287 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.3122 Tw +(s, e.g.)Tj +/TT10 1 Tf +-37.2292 -1.2889 TD +0.3244 Tw +(\(IDIFFERENCE \(IDATE 2-JAN-80 12:00"\) \(IDATE "1-JAN-80 12:00"\)\))Tj +/TT8 1 Tf +39.7533 0 TD +0 Tw +(.)Tj +-39.7533 -1.2889 TD +(This 1 day constant can be evaluated at compile time.)Tj +/TT10 1 Tf +0 -2 TD +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0344 Tw +[( is guaranteed to accept as input the dates that )]TJ +/TT10 1 Tf +21.0451 0 TD +0 Tw +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( will output. It will ignore the)]TJ +-26.446 -1.2889 TD +0.3733 Tw +(parenthesized day of the week \(if any\). )Tj +/TT10 1 Tf +20.6952 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.3733 Tw +[( also correctly handles time zone)]TJ +-23.6957 -1.2889 TD +0 Tw +(specifications for those time zones registered in the list )Tj +/TT10 1 Tf +24.3936 0 TD +(TIME.ZONES)Tj +/TT8 1 Tf +6.001 0 TD +( \(below\).)Tj +/TT10 1 Tf +-33.0612 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(GDATE)Tj +/F1 1 Tf +10 0 0 10 134.4 473.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.27 473.66 Tm +(DATE)Tj +/F2 1 Tf +10 0 0 10 158.8735 473.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 161.6535 473.66 Tm +(FORMAT)Tj +/F2 1 Tf +10 0 0 10 194.0588 473.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.8388 473.66 Tm +()Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25832.2([Function])]TJ +-9.0712 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.1992 0 TD +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +(, except that )Tj +/TT14 1 Tf +5.6163 0 TD +0 Tw +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +[( can be a number in internal date and time format as returned)]TJ +-12.6163 -1.2889 TD +0 Tw +(by )Tj +/TT10 1 Tf +1.3594 0 TD +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +(. If )Tj +/TT14 1 Tf +1.6699 0 TD +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the current time and date is used.)Tj +/TT10 1 Tf +-14.112 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(DATEFORMAT)Tj +/F1 1 Tf +10 0 0 10 161.4 425.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.27 425.58 Tm +(KEY)Tj +6 0 0 6 180.47 423.58 Tm +(1)Tj +/F2 1 Tf +10 0 0 10 184.07 425.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 186.85 425.58 Tm +(...)Tj +/F2 1 Tf +10 0 0 10 203.0526 425.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 205.8326 425.58 Tm +(KEY)Tj +6 0 0 6 222.03 423.58 Tm +(N)Tj +/TT10 1 Tf +9 0 0 9 225.63 425.58 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-13755.5([NLambda NoSpread Function])]TJ +/TT10 1 Tf +-11.6701 -1.95 TD +(DATEFORMAT)Tj +/TT8 1 Tf +6.001 0 TD +0.1456 Tw +[( returns a date format suitable as a parameter to )]TJ +/TT10 1 Tf +22.8701 0 TD +0 Tw +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1456 Tw +[( and )]TJ +/TT10 1 Tf +2.4818 0 TD +0 Tw +(GDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1456 Tw +(. )Tj +/TT14 1 Tf +1.0384 0 TD +0 Tw +(KEY)Tj +6 0 0 6 482.33 406.03 Tm +(1)Tj +/TT10 1 Tf +9 0 0 9 126 395.48 Tm +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.3711 0 TD +(KEY)Tj +6 0 0 6 161.74 393.48 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 165.34 395.48 Tm +0.1211 Tw +[( are a set of keywords \(unevaluated\). Each keyword affects the format of the)]TJ +-4.3711 -1.3944 TD +0.0989 Tw +(date independently \(except for )Tj +/TT10 1 Tf +14.2339 0 TD +0 Tw +(SLASHES)Tj +/TT8 1 Tf +4.2007 0 TD +0.0989 Tw +[( and )]TJ +/TT10 1 Tf +2.3907 0 TD +0 Tw +(SPACES)Tj +/TT8 1 Tf +3.6006 0 TD +0.0989 Tw +[(\). If the date returned by )]TJ +/TT10 1 Tf +11.9779 0 TD +0 Tw +(\(DATE\))Tj +/TT8 1 Tf +-36.4037 -1.2889 TD +0.3889 Tw +(with the default formatting was 7-Jun-85 15:49:34, the keywords would affect the)Tj +0 -1.2222 TD +0 Tw +(formatting as follows:)Tj +/TT10 1 Tf +5.8 -2 TD +(NO.DATE)Tj +/TT8 1 Tf +5.5333 0 TD +(Doesnt include the date information, e.g. )Tj +/TT10 1 Tf +18.5728 0 TD +(15:49:34)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-34.9071 -2.0667 TD +(NUMBER.OF.MONTH)Tj +/TT8 1 Tf +10.3333 0 TD +0.0811 Tw +(Shows the month as a number instead of a name, e.g.)Tj +/TT10 1 Tf +24.2677 0 TD +0.1956 Tw +[( 7-06-)]TJ +-24.2677 -1.2889 TD +0 Tw +(85 15:49:34)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-13.9345 -2.0667 TD +(YEAR.LONG)Tj +/TT8 1 Tf +6.7333 0 TD +0.8222 Tw +(Prints the year using four digits, e.g. )Tj +/TT10 1 Tf +22.0622 0 TD +0 Tw +(7-Jun-1985)Tj +-22.0622 -1.2889 TD +(15:49:34)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-10.9342 -2.0667 TD +(SLASHES)Tj +/TT8 1 Tf +5.5333 0 TD +0.3022 Tw +(Separates the day, month, and year fields with slashes, e.g.)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(7/Jun/85 15:49:34)Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +/TT10 1 Tf +-16.3352 -2.0667 TD +(SPACES)Tj +/TT8 1 Tf +4.9333 0 TD +0.1522 Tw +(Separates the day, month, and year fields with spaces, e.g. )Tj +/TT10 1 Tf +27.4661 0 TD +0 Tw +(7)Tj +-27.4661 -1.2889 TD +(Jun 85 15:49:34)Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +/TT10 1 Tf +-21.1349 -2.0667 TD +(NO.LEADING.SPACES)Tj +/TT8 1 Tf +11.5333 0 TD +0.0922 Tw +[(By default, the day field will always be two characters long. If)]TJ +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(NO.LEADING.SPACES)Tj +/TT8 1 Tf +10.2017 0 TD +0.2678 Tw +[( is specified, the day field will be one)]TJ +-10.2017 -1.2889 TD +0.4611 Tw +(character for dates earlier than the 10th, e.g. )Tj +/TT10 1 Tf +23.2685 0 TD +0 Tw +(7-Jun-85)Tj +-23.2685 -1.2889 TD +(15:49:34)Tj +/TT8 1 Tf +5.4009 0 TD +( instead of )Tj +/TT10 1 Tf +4.8418 0 TD +(7-Jun-85 15:49:34)Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +/TT10 1 Tf +-27.1779 -2.0667 TD +(NO.TIME)Tj +/TT8 1 Tf +5.5333 0 TD +(Doesnt include the time information, e.g. )Tj +/TT10 1 Tf +18.6357 0 TD +(7-Jun-85)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-31.3701 -2.0667 TD +(TIME.ZONE)Tj +/TT8 1 Tf +6.7333 0 TD +0.1556 Tw +(Includes the time zone in the time specification, e.g. )Tj +/TT10 1 Tf +24.4698 0 TD +0 Tw +(7-Jun-)Tj +-24.4698 -1.2889 TD +(85)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-9.1336 -2.0667 TD +(NO.SECONDS)Tj +/TT8 1 Tf +7.3333 0 TD +(Doesnt include the seconds, e.g. )Tj +/TT10 1 Tf +14.6411 0 TD +(7-Jun-85 15:49)Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +/TT10 1 Tf +-32.176 -2.0667 TD +(DAY.OF.WEEK)Tj +/TT8 1 Tf +7.9333 0 TD +0.1 Tw +(Includes the day of the week in the time specification, e.g. )Tj +/TT10 1 Tf +26.8651 0 TD +0 Tw +(7-)Tj +-26.8651 -1.2889 TD +(Jun-85 15:49:34 PDT \(Friday\))Tj +/TT8 1 Tf +17.4028 0 TD +(.)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +60 0 obj +<< +/Length 6692 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-14)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 215.4 569.54 Tm +(DAY.SHORT)Tj +/TT8 1 Tf +6.7333 0 TD +(If )Tj +/TT10 1 Tf +0.9655 0 TD +(DAY.OF.WEEK)Tj +/TT8 1 Tf +6.6011 0 TD +0.0456 Tw +[( is specified to include the day of the week, the)]TJ +-7.5666 -1.2889 TD +0.0822 Tw +(week day is shortened to the first three letters, e.g. )Tj +/TT10 1 Tf +23.271 0 TD +0 Tw +(7-Jun-85)Tj +-23.271 -1.2889 TD +0.1878 Tw +(15:49:34 PDT \(Fri\))Tj +/TT8 1 Tf +11.7774 0 TD +0.0778 Tw +[(. Note that )]TJ +/TT10 1 Tf +5.4776 0 TD +0 Tw +(DAY.SHORT)Tj +/TT8 1 Tf +5.4009 0 TD +0.0778 Tw +[( has no effect)]TJ +-22.6559 -1.2889 TD +0 Tw +(unless )Tj +/TT10 1 Tf +3.0527 0 TD +(DAY.OF.WEEK)Tj +/TT8 1 Tf +6.6011 0 TD +( is also specified.)Tj +/TT10 1 Tf +-23.6538 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(CLOCK)Tj +/F1 1 Tf +10 0 0 10 182.4 514.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.27 514.86 Tm +(N)Tj +/F2 1 Tf +10 0 0 10 190.6709 514.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 193.4509 514.86 Tm +()Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-31541.9([Function])]TJ +-3.3614 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.0388 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.2856 Tw +[( = 0)]TJ +/TT8 1 Tf +2.9715 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.6189 0 TD +(CLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.1189 Tw +[( returns the current value of the time of day clock i.e., the number of)]TJ +-8.2298 -1.2889 TD +0 Tw +(milliseconds since last system start up.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9277 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.0178 Tw +[( = 1)]TJ +/TT8 1 Tf +2.4359 0 TD +0.0078 Tw +(, returns the value of the time of day clock when you started up this Interlisp, i.e.,)Tj +-3.9637 -1.2889 TD +0.1278 Tw +(difference between )Tj +/TT10 1 Tf +8.9138 0 TD +0.3056 Tw +(\(CLOCK 0\))Tj +/TT8 1 Tf +5.7064 0 TD +0.1278 Tw +[( and )]TJ +/TT10 1 Tf +2.4484 0 TD +0.3056 Tw +(\(CLOCK 1\))Tj +/TT8 1 Tf +5.7064 0 TD +0.1278 Tw +[( is number of milliseconds \(real time\))]TJ +-22.7751 -1.2889 TD +0 Tw +(since this Interlisp system was started.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.0144 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.2267 Tw +[( = 2)]TJ +/TT8 1 Tf +2.8537 0 TD +0.0944 Tw +(, returns the number of milliseconds of )Tj +/TT18 1 Tf +18.0615 0 TD +0 Tw +(compute)Tj +/TT8 1 Tf +3.4072 0 TD +0.0944 Tw +[( time since user started up this)]TJ +-25.9369 -1.2889 TD +0 Tw +(Interlisp \(garbage collection time is subtracted off\).)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9244 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.01 Tw +[( = 3)]TJ +/TT8 1 Tf +2.4204 0 TD +0.0044 Tw +(, returns the number of milliseconds of compute time spent in garbage collections)Tj +-3.9449 -1.2889 TD +0 Tw +(\(all types\).)Tj +/TT10 1 Tf +-2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(SETTIME)Tj +/F1 1 Tf +10 0 0 10 193.2 366.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.07 366.98 Tm +(DT)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-30650.8([Function])]TJ +-4.2525 -1.8444 TD +0.0344 Tw +[(Sets the internal time-of-day clock. If )]TJ +/TT14 1 Tf +16.9701 0 TD +0 Tw +(DT)Tj +/TT10 1 Tf +1.2002 0 TD +0.0833 Tw +[( = NIL)]TJ +/TT8 1 Tf +3.7673 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(SETTIME)Tj +/TT8 1 Tf +4.2007 0 TD +0.0344 Tw +[( attempts to get the time from)]TJ +-26.6727 -1.2889 TD +0.0922 Tw +[(the communications net; if it fails, you are prompted for the time. If )]TJ +/TT14 1 Tf +31.9131 0 TD +0 Tw +(DT)Tj +/TT8 1 Tf +1.2002 0 TD +0.0922 Tw +[( is a string in a)]TJ +-33.1133 -1.2889 TD +0 Tw +(form that )Tj +/TT10 1 Tf +4.3911 0 TD +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +( recognizes, it is used to set the time.)Tj +-12.7249 -2.0667 TD +0.3067 Tw +(The following variables are used to interpret times in different time zones. )Tj +/TT10 1 Tf +37.2806 0 TD +0 Tw +(\\TimeZoneComp)Tj +/TT8 1 Tf +7.8013 0 TD +(,)Tj +/TT10 1 Tf +-45.0819 -1.2889 TD +(\\BeginDST)Tj +/TT8 1 Tf +5.4009 0 TD +0.0567 Tw +(, and )Tj +/TT10 1 Tf +2.5562 0 TD +0 Tw +(\\EndDST)Tj +/TT8 1 Tf +4.2007 0 TD +0.0567 Tw +[( are normally set automatically if your machine is connected to a network)]TJ +-12.1578 -1.2889 TD +0.0344 Tw +[(with a time server. For standalone machines, it may be necessary to set them by hand \(or in your init)]TJ +0 -1.2222 TD +0 Tw +(file, see the first section of this chapter\) if you are not in the Pacific time zone.)Tj +/TT16 1 Tf +2.6667 -2 TD +(TIME.ZONES)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.8444 TD +0.1289 Tw +(Value is an association list that associates time zone specifications \()Tj +/TT10 1 Tf +30.8729 0 TD +0 Tw +(PDT)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6289 0 TD +(EST)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6289 0 TD +(GMT)Tj +/TT8 1 Tf +1.8003 0 TD +0.1289 Tw +(, etc.\))Tj +-37.5315 -1.2889 TD +0.3278 Tw +[(with the number of hours west of Greenwich \(negative if east\). If the time zone)]TJ +0 -1.2222 TD +0.1967 Tw +(specification is a single letter, it is appended to )Tj +/TT10 1 Tf +22.624 0 TD +0 Tw +(DT)Tj +/TT8 1 Tf +1.8003 0 TD +0.1967 Tw +( or )Tj +/TT10 1 Tf +2.3342 0 TD +0 Tw +(ST)Tj +/TT8 1 Tf +1.8003 0 TD +0.1967 Tw +( depending on whether)Tj +-28.5588 -1.2889 TD +0 Tw +(daylight saving time is in effect. Initially set to:)Tj +/TT10 1 Tf +4 -1.6 TD +(\(\(8 . P\) \(7 . M\) \(6 . C\) \(5 . E\) \(0 . GMT\)\))Tj +/TT8 1 Tf +-4 -1.8444 TD +0.0356 Tw +(This list is used by )Tj +/TT10 1 Tf +8.6104 0 TD +0 Tw +(DATE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0356 Tw +[( and )]TJ +/TT10 1 Tf +2.264 0 TD +0 Tw +(GDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0356 Tw +[( when generating a date with the )]TJ +/TT10 1 Tf +15.0589 0 TD +0 Tw +(TIME.ZONE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0356 Tw +[( format)]TJ +-36.7351 -1.2889 TD +0 Tw +(is specified, and by )Tj +/TT10 1 Tf +8.7197 0 TD +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +( when parsing dates.)Tj +/F1 1 Tf +10 0 0 10 150 143.1 Tm +(\\)Tj +/TT16 1 Tf +9 0 0 9 156.06 143.1 Tm +(TimeZoneComp)Tj +/TT8 1 Tf +7.2 0 TD +[( )-29894.4([Variable])]TJ +-5.2067 -1.8444 TD +0.0544 Tw +(This variable should be initialized to the number of hours west of Greenwich \(negative if)Tj +0 -1.2222 TD +0 Tw +(east\). For the U.S. west coast it is 8. For the east coast it is 5.)Tj +/F1 1 Tf +10 0 0 10 150 96.22 Tm +(\\)Tj +/TT16 1 Tf +9 0 0 9 156.06 96.22 Tm +(BeginDST)Tj +/TT8 1 Tf +4.8 0 TD +( )Tj +32.7944 0 TD +([Variable])Tj +/F1 1 Tf +10 0 0 10 150 85.34 Tm +(\\)Tj +/TT16 1 Tf +9 0 0 9 156.06 85.34 Tm +(EndDST)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +33.9944 0 TD +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(\\BeginDST)Tj +/TT8 1 Tf +5.4009 0 TD +0.0689 Tw +[( is the day of the year on or before which Daylight Savings Time takes effect)]TJ +-5.4009 -1.2889 TD +0.0556 Tw +(\(i.e., the Sunday on or immediately preceding this day\); )Tj +/TT10 1 Tf +25.3369 0 TD +0 Tw +(\\EndDST)Tj +/TT8 1 Tf +4.2007 0 TD +0.0556 Tw +[( is the day on or before)]TJ +-29.5376 -1.2889 TD +0.1933 Tw +[(which Daylight Savings Time ends. Days are numbered with 1 being January 1, and)]TJ +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +63 0 obj +<< +/Length 7557 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-15)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2744 Tw +[(counting the days as for a leap year. In the USA where Daylight Savings Time is)]TJ +0 -1.2222 TD +0 Tw +(observed, )Tj +/TT10 1 Tf +4.5573 0 TD +0.0122 Tw +(\\BeginDST = 121)Tj +/TT8 1 Tf +9.0259 0 TD +0.0056 Tw +[( and )]TJ +/TT10 1 Tf +2.204 0 TD +0.0122 Tw +(\\EndDST = 305)Tj +/TT8 1 Tf +7.8257 0 TD +0.0056 Tw +[(. In a region where Daylight Savings)]TJ +-23.6129 -1.2889 TD +0 Tw +(Time is not observed at all, set )Tj +/TT10 1 Tf +13.6235 0 TD +(\\BeginDST)Tj +/TT8 1 Tf +5.4009 0 TD +( to 367.)Tj +/TT4 1 Tf +10 0 0 10 54 524 Tm +(Timers and Duration Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 521.29 m +510.01 521.29 l +S +BT +/TT8 1 Tf +9 0 0 9 78 507.34 Tm +0.0667 Tw +[(Often one needs to loop over some code, stopping when a certain interval of time has passed. Some)]TJ +0 -1.2222 TD +0.1533 Tw +(systems provide an alarm clock facility, which provides an asynchronous interrupt when a time)Tj +T* +0.0078 Tw +[(interval runs out. This is not particularly feasible in the current Medley environment, so the following)]TJ +T* +0 Tw +(facilities are supplied for efficiently testing for the expiration of a time interval in a loop context. )Tj +0 -2 TD +0.0922 Tw +(Three functions are provided: )Tj +/TT10 1 Tf +14.1125 0 TD +0 Tw +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5922 0 TD +(SETUPTIMER.DATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.0922 Tw +(, and )Tj +/TT10 1 Tf +2.6273 0 TD +0 Tw +(TIMEREXPIRED?)Tj +/TT8 1 Tf +7.8013 0 TD +0.0922 Tw +[(. There are)]TJ +-40.1357 -1.2889 TD +0.1511 Tw +(also several new i.s.oprs: )Tj +/TT10 1 Tf +11.8237 0 TD +0.3611 Tw +[( forDuration)]TJ +/TT8 1 Tf +7.5623 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.6511 0 TD +(during)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6511 0 TD +(untilDate)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.6511 0 TD +(timerUnits)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.6511 0 TD +(usingTimer)Tj +/TT8 1 Tf +6.001 0 TD +0.1511 Tw +(, and)Tj +/TT10 1 Tf +-42.9938 -1.2889 TD +0 Tw +(resourceName)Tj +/TT8 1 Tf +7.2012 0 TD +( \(reasonable variations on upper/lower case are permissible\).)Tj +-7.2012 -2.0667 TD +0.1111 Tw +(These functions use an object called a timer, which encodes a future clock time at which a signal is)Tj +0 -1.2222 TD +0.0022 Tw +(desired. A timer is constructed by the functions )Tj +/TT10 1 Tf +21.4834 0 TD +0 Tw +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +0.0004 Tc +0.0018 Tw +( and )Tj +/TT10 1 Tf +2.1973 0 TD +0 Tc +0 Tw +(SETUPTIMER.DATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.0022 Tw +(, and is created)Tj +-38.6831 -1.2889 TD +0.1167 Tw +(with a basic clock unit selected from among )Tj +/TT10 1 Tf +21.5178 0 TD +0 Tw +(SECONDS)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6167 0 TD +(MILLISECONDS)Tj +/TT8 1 Tf +7.2012 0 TD +0.1167 Tw +(, or )Tj +/TT10 1 Tf +1.9242 0 TD +0 Tw +(TICKS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1167 Tw +[(. The first two)]TJ +-38.4611 -1.2889 TD +0.1578 Tw +(timer units provide a machine/system independent interface, and the latter provides access to the)Tj +0 -1.2222 TD +0.0633 Tw +[(real, basic strobe unit of the machines clock on which the program is running. The default unit is)]TJ +/TT10 1 Tf +T* +0 Tw +(MILLISECONDS)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-7.2012 -2.0667 TD +0.0022 Tw +(Currently, the )Tj +/TT10 1 Tf +6.4781 0 TD +0 Tw +(TICKS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0001 Tc +0.0021 Tw +( unit depends on what machine Medley is running on. The Xerox 1132 has about)Tj +-9.4786 -1.2889 TD +0 Tc +0.0678 Tw +(1680 ticks per millisecond; the Xerox 1108 has about 34.746 ticks per millisecond; the Xerox 1185 and)Tj +0 -1.2222 TD +0.1311 Tw +[(1186 have about 62.5 ticks per millisecond. The advantage of using )]TJ +/TT10 1 Tf +31.8851 0 TD +0 Tw +(TICKS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1311 Tw +[( rather than one of the)]TJ +-34.8856 -1.2889 TD +0.0244 Tw +(uniform interfaces is primarily speed; e.g., it may take over 400 microseconds to read the milliseconds)Tj +0 -1.2222 TD +0.0889 Tw +(clock \(a software facility that uses the real clock\), whereas reading the real clock itself may take less)Tj +T* +0.1122 Tw +[(than ten microseconds. The disadvantage of the )]TJ +/TT10 1 Tf +22.4779 0 TD +0 Tw +(TICKS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1122 Tw +[( unit is its short roll-over interval \(about 20)]TJ +-25.4783 -1.2889 TD +0.3722 Tw +(minutes\) compared to the )Tj +/TT10 1 Tf +13.1276 0 TD +0 Tw +(MILLISECONDS)Tj +/TT8 1 Tf +7.2012 0 TD +0.3722 Tw +[( roll-over interval \(about two weeks\), and also the)]TJ +-20.3287 -1.2889 TD +0 Tw +(dependency on particular machine parameters.)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(SETUPTIMER)Tj +/F1 1 Tf +10 0 0 10 161.4 241.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.27 241.06 Tm +(INTERVAL)Tj +/F2 1 Tf +10 0 0 10 207.477 241.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.257 241.06 Tm +(OldTimer?)Tj +/F2 1 Tf +10 0 0 10 258.8649 241.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 261.6449 241.06 Tm +(timerUnits)Tj +/F2 1 Tf +10 0 0 10 315.6537 241.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 318.4337 241.06 Tm +(intervalUnits)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-5120.4([Function])]TJ +/TT10 1 Tf +-29.7829 -1.8444 TD +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +0.1722 Tw +[( returns a timer that will go off \(as tested by )]TJ +/TT10 1 Tf +22.4892 0 TD +0 Tw +(TIMEREXPIRED?)Tj +/TT8 1 Tf +7.8013 0 TD +0.1722 Tw +(\) after a)Tj +-36.2914 -1.2889 TD +0.2533 Tw +(specified time-interval measured from the current clock time. )Tj +/TT10 1 Tf +29.8752 0 TD +0 Tw +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +0.2533 Tw +[( has one)]TJ +-35.8762 -1.2889 TD +0 Tw +(required and three optional arguments:)Tj +/TT14 1 Tf +0 -2 TD +(INTERVAL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1389 Tw +[( must be a integer specifying how long an interval is desired. )]TJ +/TT14 1 Tf +29.1918 0 TD +0 Tw +(timerUnits)Tj +/TT8 1 Tf +-33.9926 -1.2889 TD +(specifies the units of measure for the interval \(defaults to )Tj +/TT10 1 Tf +25.3828 0 TD +(MILLISECONDS)Tj +/TT8 1 Tf +7.2012 0 TD +(\).)Tj +-32.584 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.1055 0 TD +(OldTimer?)Tj +/TT8 1 Tf +5.4009 0 TD +0.1856 Tw +[( is a timer, it will be reused and returned, rather than allocating a new)]TJ +-6.5064 -1.2889 TD +0.3656 Tw +(timer. )Tj +/TT14 1 Tf +3.8551 0 TD +0 Tw +(intervalUnits)Tj +/TT8 1 Tf +7.8013 0 TD +0.3656 Tw +[( specifies the units in which the )]TJ +/TT14 1 Tf +16.681 0 TD +0 Tw +(OldTimer)Tj +/TT18 1 Tf +4.8008 0 TD +(?)Tj +/TT8 1 Tf +0.5 0 TD +0.3656 Tw +[( is expressed)]TJ +-33.6381 -1.2889 TD +0 Tw +(\(defaults to the value of )Tj +/TT14 1 Tf +10.7261 0 TD +(timerUnits)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-19.3937 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(SETUPTIMER.DATE)Tj +/F1 1 Tf +10 0 0 10 188.4 109.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.27 109.98 Tm +(DTS)Tj +/F2 1 Tf +10 0 0 10 207.4726 109.98 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 210.2526 109.98 Tm +(OldTimer?)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19541([Function])]TJ +/TT10 1 Tf +-15.3624 -1.8444 TD +(SETUPTIMER.DATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.0611 Tw +[( returns a timer \(using the )]TJ +/TT10 1 Tf +12.1211 0 TD +0 Tw +(SECONDS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0611 Tw +[( time unit\) that will go off at a)]TJ +-25.3232 -1.2889 TD +0.0456 Tw +(specified date and time. )Tj +/TT14 1 Tf +11.2683 0 TD +0 Tw +(DTS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +[( is a Date/Time string such as )]TJ +/TT10 1 Tf +13.7852 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0456 Tw +[( accepts \(see the above)]TJ +-29.8543 -1.2889 TD +0.0478 Tw +[(section\). If )]TJ +/TT14 1 Tf +5.2381 0 TD +0 Tw +(OldTimer?)Tj +/TT8 1 Tf +5.4009 0 TD +0.0478 Tw +[( is a timer, it will be reused and returned, rather than allocating a)]TJ +-10.6389 -1.2889 TD +0 Tw +(new timer.)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +66 0 obj +<< +/Length 6217 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-16)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +(SETUPTIMER.DATE)Tj +/TT8 1 Tf +9.0015 0 TD +0.06 Tw +[( operates by first subtracting )]TJ +/TT10 1 Tf +13.1789 0 TD +0 Tw +(\(IDATE\))Tj +/TT8 1 Tf +4.2007 0 TD +0.06 Tw +[( from )]TJ +/TT10 1 Tf +2.7767 0 TD +0 Tw +(\(IDATE )Tj +/TT14 1 Tf +4.344 0 TD +(DTS)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.06 Tw +(, so there)Tj +-35.9022 -1.2889 TD +0 Tw +(may be some large integer creation involved, even if )Tj +/TT14 1 Tf +23.354 0 TD +(OLDTIMER?)Tj +/TT8 1 Tf +5.4009 0 TD +( is given.)Tj +/TT10 1 Tf +-31.4216 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(TIMEREXPIRED?)Tj +/F1 1 Tf +10 0 0 10 225.6123 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.4823 538.06 Tm +(TIMER)Tj +/F2 1 Tf +10 0 0 10 255.4867 538.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 258.2667 538.06 Tm +(ClockValue.or.timerUnits)Tj +/TT10 1 Tf +14.4023 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-10537.9([Function])]TJ +-24.3654 -1.8445 TD +(If )Tj +/TT14 1 Tf +1.2199 0 TD +(TIMER)Tj +/TT8 1 Tf +3.0005 0 TD +0.3 Tw +[( is a timer, and )]TJ +/TT14 1 Tf +8.2817 0 TD +0 Tw +(ClockValue.or.timerUnits)Tj +/TT8 1 Tf +14.4023 0 TD +0.3 Tw +[( is the time-unit of )]TJ +/TT14 1 Tf +9.8452 0 TD +0 Tw +(TIMER)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +/TT10 1 Tf +-39.7502 -1.2889 TD +(TIMEREXPIRED?)Tj +/TT8 1 Tf +7.8013 0 TD +( returns true if )Tj +/TT14 1 Tf +6.6313 0 TD +(TIMER)Tj +/TT8 1 Tf +3.0005 0 TD +( has gone off.)Tj +/TT14 1 Tf +-17.4331 -2.0667 TD +(ClockValue.or.timerUnits)Tj +/TT8 1 Tf +14.4023 0 TD +0.2944 Tw +[( can also be a timer, in which case )]TJ +/TT10 1 Tf +17.7955 0 TD +0 Tw +(TIMEREXPIRED?)Tj +/TT8 1 Tf +-32.1979 -1.2889 TD +0.0711 Tw +[(compares the two timers \(which must be in the same timer units\). If )]TJ +/TT10 1 Tf +31.3911 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( and )]TJ +/TT10 1 Tf +2.3351 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( are timers,)]TJ +-34.9264 -1.2889 TD +0 Tw +(then )Tj +/TT10 1 Tf +2.2192 0 TD +(\(TIMEREXPIRED? X Y\))Tj +/TT8 1 Tf +11.4019 0 TD +( is true if )Tj +/TT10 1 Tf +4.1421 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is set for an )Tj +/TT18 1 Tf +5.5498 0 TD +(earlier)Tj +/TT8 1 Tf +2.5562 0 TD +( time than )Tj +/TT10 1 Tf +4.7192 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-37.1219 -2.0667 TD +0.2478 Tw +(There are a number of i.s.oprs that make it easier to use timers in iterative statements \(see the)Tj +0 -1.2222 TD +0.1378 Tw +[(Interative Statement section of Chapter 9\). These i.s.oprs are given below in the canonical form,)]TJ +T* +0 Tw +(with the second word capitalized, but the all-caps and all-lower-case versions are also acceptable.)Tj +/TT16 1 Tf +2.6667 -2.1422 TD +(forDuration)Tj +/F1 1 Tf +10 0 0 10 209.4 408.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.27 408.18 Tm +(INTERVAL)Tj +/F3 1 Tf +10 0 0 10 255.477 408.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 477.25 408.18 Tm +([I.S. Operator])Tj +/TT16 1 Tf +-36.3611 -1.2089 TD +(during)Tj +/F1 1 Tf +10 0 0 10 182.4 397.3 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.27 397.3 Tm +(INTERVAL)Tj +/TT8 1 Tf +4.8008 0 TD +[( )-27141.4([I.S. Operator])]TJ +/TT14 1 Tf +-6.053 -1.8444 TD +(INTERVAL)Tj +/TT8 1 Tf +4.8008 0 TD +0.38 Tw +[( is an integer specifying an interval of time during which the iterative)]TJ +-4.8008 -1.2889 TD +0 Tw +(statement will loop. )Tj +/TT16 1 Tf +-2.6667 -2.1422 TD +(timerUnits)Tj +/F1 1 Tf +10 0 0 10 204 349.82 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.87 349.82 Tm +(UNITS)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-26541.7([I.S. Operator])]TJ +/TT14 1 Tf +-6.6527 -1.8444 TD +(UNITS)Tj +/TT8 1 Tf +3.0005 0 TD +( specifies the time units of the )Tj +/TT14 1 Tf +13.374 0 TD +(INTERVAL)Tj +/TT8 1 Tf +4.8008 0 TD +( specified in )Tj +/TT10 1 Tf +5.5757 0 TD +(forDuration)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT16 1 Tf +-36.0187 -2.2089 TD +(untilDate)Tj +/F1 1 Tf +10 0 0 10 198.6 313.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.47 313.34 Tm +(DTS)Tj +/TT8 1 Tf +1.8003 0 TD +[( )-28341.9([I.S. Operator])]TJ +/TT14 1 Tf +-4.8525 -1.8444 TD +(DTS)Tj +/TT8 1 Tf +1.8003 0 TD +0.3767 Tw +[( is a Date/Time string \(such as )]TJ +/TT10 1 Tf +16.436 0 TD +0 Tw +(IDATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.3767 Tw +[( accepts\) specifying when the iterative)]TJ +-21.2368 -1.2889 TD +0 Tw +(statement should stop looping.)Tj +/TT16 1 Tf +-2.6667 -2.1422 TD +(usingTimer)Tj +/F1 1 Tf +10 0 0 10 204 265.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 206.87 265.86 Tm +(TIMER)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-26541.7([I.S. Operator])]TJ +-6.6527 -1.8444 TD +0.1278 Tw +(If usingTimer is given, )Tj +/TT14 1 Tf +10.7357 0 TD +0 Tw +(TIMER)Tj +/TT8 1 Tf +3.0005 0 TD +0.1278 Tw +[( is reused as the timer for )]TJ +/TT10 1 Tf +12.309 0 TD +0 Tw +(forDuration)Tj +/TT8 1 Tf +6.6011 0 TD +0.1278 Tw +[( or )]TJ +/TT10 1 Tf +1.6965 0 TD +0 Tw +(untilDate)Tj +/TT8 1 Tf +5.4009 0 TD +(,)Tj +-39.7436 -1.2889 TD +0.0178 Tw +[(rather than creating a new timer. This can reduce allocation if one of these i.s.oprs is used)]TJ +0 -1.2222 TD +0 Tw +(within another loop.)Tj +/TT12 1 Tf +-2.6667 -2 TD +(resourceName )Tj +/TT14 1 Tf +6.8056 0 TD +(RESOURCE)Tj +/TT8 1 Tf +4.8008 0 TD +[( )-24254.8([I.S. Operator])]TJ +/TT14 1 Tf +-8.9397 -1.8444 TD +(RESOURCE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0456 Tw +[( specifies a resource name to be used as the timer storage \(see the File Package)]TJ +-4.8008 -1.2889 TD +0 Tw +(Types section of Chapter 17\). If )Tj +/TT14 1 Tf +14.2388 0 TD +(RESOURCE)Tj +/TT10 1 Tf +4.8008 0 TD +( = T)Tj +/TT8 1 Tf +2.4004 0 TD +(, it will be converted to an internal name.)Tj +-26.7733 -2.9556 TD +(Some examples:)Tj +/TT10 1 Tf +5.3333 -1.6 TD +(\(during 6MONTHS timerUnits SECONDS)Tj +0.6667 -1 TD +( until \(TENANT-VACATED? HouseHolder\))Tj +T* +( do \(DISMISS \))Tj +T* +( \(HARRASS HouseHolder\))Tj +T* +( finally \(if \(NOT \(TENANT-VACATED? HouseHolder\)\))Tj +T* +( then \(EVICT-TENANT HouseHolder\)\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +0.0133 Tw +[(This example shows that how is is possible to have two termination condition: when the time interval)]TJ +0 -1.2222 TD +0 Tw +(of )Tj +/TT10 1 Tf +1.1622 0 TD +(6MONTHS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0333 Tw +[( has elapsed, or when the predicate )]TJ +/TT10 1 Tf +16.0551 0 TD +0.0811 Tw +(\(TENANT-VACATED? HouseHolder\))Tj +/TT8 1 Tf +17.4839 0 TD +0.0333 Tw +[( becomes true.)]TJ +-38.902 -1.2889 TD +0 Tw +(Note that the finally clause is executed regardless of which termination condition caused it.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 35 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +/TT18 19 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +69 0 obj +<< +/Length 5103 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-17)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.2756 Tw +(Also note that since the millisecond clock will roll over about every two weeks, )Tj +/TT10 1 Tf +40.0292 0 TD +0 Tw +(6MONTHS)Tj +/TT8 1 Tf +4.8008 0 TD +()Tj +-44.83 -1.2889 TD +(wouldnt be an appropriate interval if the timer units were the default case, namely )Tj +/TT10 1 Tf +37.0659 0 TD +(MILLISECONDS)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-38.9338 -1.6667 TD +(\(do \(forDuration \(CONSTANT \(ITIMES 10 24 60 60 1000\)\) )Tj +0.6667 -1 TD +( do \(CARRY.ON.AS.USUAL\))Tj +T* +( finally \(PROMPTPRINT "Have you had your 10-day check-up?"\)\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +0.0344 Tw +[(This infinite loop breaks out with a warning message every 10 days. One could question whether the)]TJ +0 -1.2222 TD +0.0256 Tw +(millisecond clock, which is used by default, is appropriate for this loop, since it rolls-over about every)Tj +T* +0 Tw +(two weeks. )Tj +/TT10 1 Tf +5.3333 -1.8089 TD +(\(SETQ )Tj +/F3 1 Tf +10 0 0 10 158.4053 470.06 Tm +(\\)Tj +/TT10 1 Tf +9 0 0 9 164.4653 470.06 Tm +(RandomTimer \(SETUPTIMER 0\)\))Tj +-3.6073 -1 TD +(\(untilDate "31-DEC-83 23:59:59" usingTimer \\RandomTimer )Tj +T* +( when \(WINNING?\) do \(RETURN\))Tj +T* +( finally \(ERROR "Youve been losing this whole year!"\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +0.0511 Tw +(Here is a usage of an explicit date for the time interval; also, some stsorage has been squirreled away)Tj +0 -1.2222 TD +0 Tw +(\(as the value of \\RandomTimer\) for use by the call to )Tj +/TT10 1 Tf +24.0244 0 TD +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +( in this loop.)Tj +/TT10 1 Tf +-24.6921 -1.6667 TD +(\(forDuration SOMEINTERVAL )Tj +0.6667 -1 TD +( resourceName \\INNERLOOPBOX )Tj +T* +( timerunits TICKS )Tj +T* +( do \(CRITICAL.INNER.LOOP\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +0.0367 Tw +(For this loop, you dont want any )Tj +/TT10 1 Tf +15.2889 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0367 Tw +(ing to take place, so )Tj +/TT10 1 Tf +9.1306 0 TD +0 Tw +(\\INNERLOOPBOX)Tj +/TT8 1 Tf +7.8013 0 TD +0.0367 Tw +[( is defined as a resource)]TJ +-34.6212 -1.2889 TD +0.0567 Tw +(which caches a timer cell \(if it isnt already so defined\), and wraps the entire statement in a )Tj +/TT10 1 Tf +42.3345 0 TD +0 Tw +(WITH-)Tj +-42.3345 -1.2889 TD +(RESOURCES)Tj +/TT8 1 Tf +5.4009 0 TD +0.1078 Tw +[( call. Furthermore, a time unit of )]TJ +/TT10 1 Tf +15.6874 0 TD +0 Tw +(TICKS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1078 Tw +[( is specified, for lower overhead in this critical)]TJ +-24.0888 -1.2889 TD +0.5067 Tw +[(inner loop. In fact specifying a resourceName of )]TJ +/TT10 1 Tf +26.2885 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.5067 Tw +[( is the same as specifying it to be)]TJ +/TT10 1 Tf +-26.8886 -1.2889 TD +0 Tw +(\\ForDurationOfBox)Tj +/TT8 1 Tf +10.2017 0 TD +0.0378 Tw +(; this is just a simpler way to specify that a resource is wanted, without having)Tj +-10.2017 -1.2889 TD +0 Tw +(to think up a name.)Tj +/TT4 1 Tf +10 0 0 10 54 276.52 Tm +(Resources)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 273.81 m +510.01 273.81 l +S +BT +/TT8 1 Tf +9 0 0 9 78 259.86 Tm +0.0811 Tw +(Medley is based on the use of a storage-management system which allocates memory space for new)Tj +0 -1.2222 TD +0.1033 Tw +[(data objects, and automatically reclaims the space when no longer in use. More generally, Medley)]TJ +T* +0.0678 Tw +[(manages shared resources, such as files, semaphors for processes, etc. The protocols for allocating)]TJ +T* +0 Tw +(and freeing such resources resemble those of ordinary storage management.)Tj +0 -2 TD +0.0411 Tw +[(Sometimes you need to explicitly manage the allocation of resources. You may want the efficiency of)]TJ +0 -1.2222 TD +0.1656 Tw +(explicit reclamation of certain temporary data; or it may be expensive to initialize a complex data)Tj +T* +0.0633 Tw +(object; or there may be an application that must not allocate new cells during some critical section of)Tj +T* +0 Tw +(code.)Tj +0 -2 TD +0.0256 Tw +(The file manager type )Tj +/TT10 1 Tf +10.0275 0 TD +0 Tw +(RESOURCES)Tj +/TT8 1 Tf +5.4009 0 TD +0.0256 Tw +[( is available to help with the definition and usage of such classes of)]TJ +-15.4284 -1.2889 TD +0.0844 Tw +(data; the definition of a )Tj +/TT10 1 Tf +10.9574 0 TD +0 Tw +(RESOURCE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0844 Tw +[( specifies prototype code to do the basic management operations.)]TJ +-15.7582 -1.2889 TD +0.6078 Tw +(The file manager command )Tj +/TT10 1 Tf +14.8422 0 TD +0 Tw +(RESOURCES)Tj +/TT8 1 Tf +5.4009 0 TD +0.6078 Tw +[( is used to save such definitions on files, and)]TJ +/TT10 1 Tf +-20.2431 -1.2889 TD +0 Tw +(INITRESOURCES)Tj +/TT8 1 Tf +7.8013 0 TD +0.1044 Tw +[( \(see the Miscellaneous File Manager Commands section of Chapter 17\) causes the)]TJ +-7.8013 -1.2889 TD +0 Tw +(initialization code to be output.)Tj +0 -2 TD +(The basic needs of resource management are: )Tj +0 -1.6667 TD +0.02 Tw +[(1.)-583.3(Obtaining a data item from the Lisp memory management system and configuring it to be a totally)]TJ +1.3333 -1.2222 TD +0 Tw +(new instance of the resource in question)Tj +-1.3333 -1.6667 TD +[(2.)-583.3(Freeing up an instance which is no longer needed)]TJ +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 35 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +72 0 obj +<< +/Length 5238 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-18)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.11 Tw +[(3.)-583.3(Getting an instance of the resource for temporary usage \(whether fresh or a formerly freed-up)]TJ +1.3333 -1.2222 TD +0 Tw +(instance\))Tj +-1.3333 -1.6667 TD +[(4.)-583.3(Setting up any prerequisite global data structures and variables )]TJ +0 -2 TD +0.1233 Tw +(A resources definition consists of four methods: )Tj +/TT10 1 Tf +23.6019 0 TD +0 Tw +(INIT)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6233 0 TD +(NEW)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6233 0 TD +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +0.1233 Tw +(, and )Tj +/TT10 1 Tf +2.6895 0 TD +0 Tw +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1233 Tw +(; each method is a)Tj +-35.9395 -1.2889 TD +0.2156 Tw +(form that will specialize the definition for four corresponding user-level macros )Tj +/TT10 1 Tf +37.8711 0 TD +0 Tw +(INITRESOURCE)Tj +/TT8 1 Tf +7.2012 0 TD +(,)Tj +/TT10 1 Tf +-45.0723 -1.2889 TD +(NEWRESOURCE)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.5189 0 TD +(GETRESOURCE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0189 Tw +(, and )Tj +/TT10 1 Tf +2.4806 0 TD +0 Tw +(FREERESOURCE)Tj +/TT8 1 Tf +7.2012 0 TD +0.0189 Tw +[(. )]TJ +/TT10 1 Tf +1.0567 0 TD +0 Tw +(PUTDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0189 Tw +[( is used to make a resources definition,)]TJ +-28.0601 -1.2889 TD +0 Tw +(and the four components are specified in a proplist:)Tj +/TT10 1 Tf +5.3333 -1.6 TD +(\(PUTDEF)Tj +0.6667 -1 TD +( )Tj +/TT14 1 Tf +2.4004 0 TD +(RESOURCENAME)Tj +/TT10 1 Tf +-2.4004 -1 TD +( RESOURCES)Tj +T* +( \(NEW )Tj +/TT14 1 Tf +6.001 0 TD +(NEW-INSTANCE-GENERATION-CODE)Tj +/TT10 1 Tf +-6.001 -1 TD +( FREE )Tj +/TT14 1 Tf +6.001 0 TD +(FREEING-UP-CODE)Tj +/TT10 1 Tf +-6.001 -1 TD +( GET )Tj +/TT14 1 Tf +6.001 0 TD +(GET-INSTANCE-CODE)Tj +/TT10 1 Tf +-6.001 -1 TD +( INIT )Tj +/TT14 1 Tf +6.001 0 TD +(INITIALIZATION-CODE)Tj +/TT10 1 Tf +11.4019 0 TD +(\)\))Tj +/TT8 1 Tf +-23.4028 -1.8444 TD +0.06 Tw +(Each of the )Tj +/TT14 1 Tf +5.3328 0 TD +0 Tw +(xxx-CODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.06 Tw +[( forms is a form that will appear as if it were the body of a substitution macro)]TJ +-10.1336 -1.2889 TD +0 Tw +(definition for the corresponding macro \(see the discussion on the macros below\).)Tj +/TT4 1 Tf +10 0 0 10 126 374.8 Tm +(A Simple Example)Tj +/TT8 1 Tf +9 0 0 9 126 359.14 Tm +0.0111 Tw +[(Suppose one has several pieces of code which use a 256-character string as a scratch string. One could)]TJ +0 -1.2222 TD +0.0844 Tw +[(simply generate a new string each time, but that would be inefficient if done repeatedly. If you can)]TJ +T* +0.1144 Tw +(guarantee that there are no re-entrant uses of the scratch string, then it could simply be stored in a)Tj +T* +0.2233 Tw +[(global variable. However, if the code might be re-entrant on occasion, the program has to take)]TJ +T* +0.3722 Tw +[(precautions that two programs do not use the same scratch string at the same time. \(This)]TJ +T* +0.1211 Tw +[(consideration becomes very important in a multi-process environment. It is hard to guarantee that)]TJ +T* +0.1078 Tw +[(two processes wont be running the same code at the same time, without using elaborate locks.\) A)]TJ +T* +0.1644 Tw +(typical tactic would be to store the scratch string in a global variable, and set the variable to )Tj +/TT10 1 Tf +43.5254 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +-43.5254 -1.2889 TD +0.1233 Tw +[(whenever the string is in use \(so that re-entrant usages would know to get a new instance\). For)]TJ +0 -1.2222 TD +0 Tw +(example, assuming the global variable )Tj +/TT10 1 Tf +17.2105 0 TD +(TEMPSTRINGBUFFER)Tj +/TT8 1 Tf +9.6016 0 TD +( is initialized to )Tj +/TT10 1 Tf +7.04 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(:)Tj +/TT10 1 Tf +-30.319 -1.6667 TD +([DEFINEQ \(WITHSTRING NIL )Tj +0.6667 -1 TD +( \(PROG \(\(BUF \(OR \(PROG1 TEMPSTRINGBUFFER)Tj +T* +( \(SETQ TEMPSTRINGBUFFER NIL\)\))Tj +T* +( \(ALLOCSTRING 256\)\)\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +(... use the scratch string in the variable )Tj +/TT10 1 Tf +17.1665 0 TD +(BUF)Tj +/TT8 1 Tf +1.8003 0 TD +( ...)Tj +/TT10 1 Tf +-13.6335 -1.6667 TD +( \(SETQ TEMPSTRINGBUFFER BUF\))Tj +0.6667 -1 TD +( \(RETURN])Tj +/TT8 1 Tf +-6 -1.8444 TD +(Here, the basic elements of a resource usage may be seen: )Tj +0 -2 TD +[(1.)-583.3(A call )]TJ +/TT10 1 Tf +4.137 0 TD +(\(ALLOCSTRING 256\))Tj +/TT8 1 Tf +10.2017 0 TD +( allocates fresh instances of buffer)Tj +-14.3387 -2.0667 TD +0.0189 Tw +[(2.)-583.3(After usage is completed the instance is returned to the free state, by putting it back in the global)]TJ +1.3333 -1.2222 TD +0 Tw +(variable )Tj +/TT10 1 Tf +3.8242 0 TD +(TEMPSTRINGBUFFER)Tj +/TT8 1 Tf +9.6016 0 TD +( where a subsequent call will find it)Tj +-14.7591 -2.0667 TD +0.0133 Tw +[(3.)-583.3(The prog-binding of )]TJ +/TT10 1 Tf +10.5735 0 TD +0 Tw +(BUF)Tj +/TT8 1 Tf +1.8003 0 TD +0.0133 Tw +[( will get an existing instance of a string buffer if there is one -- otherwise it)]TJ +-11.0405 -1.2889 TD +0 Tw +(will get a new instance which will later be available for reuse)Tj +-1.3333 -2 TD +0.1178 Tw +[(4.)-583.3(Some initialization is performed before usage of the resource \(in this case, it is the setting of the)]TJ +1.3333 -1.2222 TD +0 Tw +(global variable )Tj +/TT10 1 Tf +6.8115 0 TD +(TEMPSTRINGBUFFER)Tj +/TT8 1 Tf +9.6016 0 TD +(\).)Tj +ET +endstream +endobj +73 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT14 12 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +75 0 obj +<< +/Length 5075 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-19)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(Given the following resources definition:)Tj +/TT10 1 Tf +5.3333 -1.6 TD +(\(PUTDEF)Tj +0.6667 -1 TD +( STRINGBUFFER )Tj +T* +( RESOURCES)Tj +T* +( \(NEW \(ALLOCSTRING 256\))Tj +T* +( FREE \(SETQ TEMPSTRINGBUFFER \(PROG1 . ARGS\)\))Tj +T* +( GET \(OR \(PROG1 TEMPSTRINGBUFFER)Tj +T* +( \(SETQ TEMPSTRINGBUFFER NIL\)\))Tj +T* +( \(NEWRESOURCE TEMPSTRINGBUFFER\)\)\))Tj +T* +( INIT \(SETQ TEMPSTRINGBUFFER NIL\)\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +(we could then redo the example above as )Tj +/TT10 1 Tf +5.3333 -1.6 TD +(\(DEFINEQ \(WITHSTRING NIL)Tj +0.6667 -1 TD +( \(PROG \(\(BUF \(GETRESOURCE STRINGBUFFER\)\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +(... use the string in the variable )Tj +/TT10 1 Tf +13.8018 0 TD +(BUF)Tj +/TT8 1 Tf +1.8003 0 TD +( ...)Tj +/TT10 1 Tf +-10.2687 -1.6667 TD +( \(FREERESOURCE STRINGBUFFER BUF\))Tj +0.6667 -1 TD +( \(RETURN])Tj +/TT8 1 Tf +-6 -1.8444 TD +0.0533 Tw +(The advantage of doing the coding this way is that the resource management part of )Tj +/TT10 1 Tf +38.3103 0 TD +0 Tw +(WITHSTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.0533 Tw +[( is)]TJ +-44.3112 -1.2889 TD +0.3144 Tw +(fully contained in the expansions of )Tj +/TT10 1 Tf +17.9057 0 TD +0 Tw +(GETRESOURCE)Tj +/TT8 1 Tf +6.6011 0 TD +0.3144 Tw +[( and )]TJ +/TT10 1 Tf +2.8218 0 TD +0 Tw +(FREERESOURCE)Tj +/TT8 1 Tf +7.2012 0 TD +0.3144 Tw +(, and thus there is no)Tj +-34.5297 -1.2889 TD +0.0167 Tw +(confusion between what is )Tj +/TT10 1 Tf +12.1067 0 TD +0 Tw +(WITHSTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.0167 Tw +[( code and what is resource management code. This particuar)]TJ +-18.1077 -1.2889 TD +0.0367 Tw +(advantage will be multiplied if there are other functions which need a temporary string buffer; and)Tj +0 -1.2222 TD +0.0711 Tw +(of course, the resultant modularity makes it much easier to contemplate minor variations on, as well)Tj +T* +0 Tw +(as multiple clients of, the )Tj +/TT10 1 Tf +11.292 0 TD +(STRINGBUFFER)Tj +/TT8 1 Tf +7.2012 0 TD +( resource.)Tj +-18.4932 -2.0667 TD +0.1456 Tw +(In fact, the scenario just shown above in the )Tj +/TT10 1 Tf +20.85 0 TD +0 Tw +(WITHSTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.1456 Tw +[( example is so commonly useful that an)]TJ +-26.851 -1.2889 TD +0.2511 Tw +(abbreviation has been added; if a resources definition is made with *only* a )Tj +/TT10 1 Tf +36.8753 0 TD +0 Tw +(NEW)Tj +/TT8 1 Tf +1.8003 0 TD +0.2511 Tw +[( method, then)]TJ +-38.6756 -1.2889 TD +0 Tw +(appropriate )Tj +/TT10 1 Tf +5.5154 0 TD +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.53 0 TD +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +(, and )Tj +/TT10 1 Tf +2.5029 0 TD +0 Tw +(INIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +[( methods will be inferred, along with a coordinated globalvar, to be)]TJ +-15.1493 -1.2889 TD +0 Tw +(parallel to the above definition. So the above definition could be more simply written)Tj +/TT10 1 Tf +5.3333 -1.6 TD +(\(PUTDEF STRINGBUFFER )Tj +0.6667 -1 TD +( RESOURCES)Tj +T* +( \(NEW \(ALLOCSTRING 256\)\)\))Tj +/TT8 1 Tf +-6 -1.8444 TD +(and everything would work the same.)Tj +0 -2 TD +0.1111 Tw +(The macro )Tj +/TT10 1 Tf +5.1636 0 TD +0 Tw +(WITH-RESOURCES)Tj +/TT8 1 Tf +8.4014 0 TD +0.1111 Tw +[( simplifies the common scoping case, where at the beginning of some)]TJ +-13.565 -1.2889 TD +0.15 Tw +(piece of code, there are one or more )Tj +/TT10 1 Tf +17.1883 0 TD +0 Tw +(GETRESOURCE)Tj +/TT8 1 Tf +6.6011 0 TD +0.15 Tw +[( calls the results of which are each bound to a)]TJ +-23.7894 -1.2889 TD +0.0267 Tw +(lambda variable; and at the ending of that code a )Tj +/TT10 1 Tf +22.129 0 TD +0 Tw +(FREERESOURCE)Tj +/TT8 1 Tf +7.2012 0 TD +0.0267 Tw +[( call is done on each instance. Since)]TJ +-29.3301 -1.2889 TD +0.0844 Tw +(the resources are locally bound to variables with the same name as the resource itself, the definition)Tj +0 -1.2222 TD +0 Tw +(for )Tj +/TT10 1 Tf +1.5239 0 TD +(WITHSTRING)Tj +/TT8 1 Tf +6.001 0 TD +( then simplifies to)Tj +/TT10 1 Tf +-2.1916 -1.6667 TD +(\(DEFINEQ \(WITHSTRING NIL)Tj +0.6667 -1 TD +( \(WITH-RESOURCES \(STRINGBUFFER\) )Tj +/TT12 1 Tf +-6 -1.8444 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(... use the string in the variable )Tj +/TT10 1 Tf +13.8018 0 TD +(STRINGBUFFER)Tj +/TT8 1 Tf +7.2012 0 TD +( ...])Tj +/TT4 1 Tf +10 0 0 10 78 102.4 Tm +(Trade-offs in More Complicated Cases)Tj +/TT8 1 Tf +9 0 0 9 78 86.74 Tm +0.0355 Tw +(This simple example presumes that the various functions which use the resource are generally not re-)Tj +0 -1.2222 TD +0.01 Tw +[(entrant. While an occasional re-entrant use will be handled correctly \(another example of the resource)]TJ +T* +0.0056 Tw +(will simply be created\), if this were to happen too often, then many of the resource requests will create)Tj +T* +0.0533 Tw +[(and throw away new objects, which defeats one of the major purposes of using resources. A slightly)]TJ +T* +0.21 Tw +(more complex )Tj +/TT10 1 Tf +6.9825 0 TD +0 Tw +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +0.21 Tw +[( and )]TJ +/TT10 1 Tf +2.6129 0 TD +0 Tw +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +0.21 Tw +[( method can be of much benefit in maintaining a pool of available)]TJ +ET +endstream +endobj +76 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +78 0 obj +<< +/Length 8449 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-20)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.1278 Tw +[(resources; if the resource were defined to maintain a list of free instances, then the )]TJ +/TT10 1 Tf +39.7139 0 TD +0 Tw +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +0.1278 Tw +[( method)]TJ +-41.5142 -1.2889 TD +0.0844 Tw +(could simply take one off the list and the )Tj +/TT10 1 Tf +19.03 0 TD +0 Tw +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0844 Tw +[( method could just push it back onto the list. In this)]TJ +-21.4304 -1.2889 TD +0.0978 Tw +(simple example, the )Tj +/TT10 1 Tf +9.3983 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0978 Tw +[( in the )]TJ +/TT10 1 Tf +3.3036 0 TD +0 Tw +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0978 Tw +[( method defined above would just become a push, and the)]TJ +-17.5027 -1.2889 TD +0 Tw +(first clause of the )Tj +/TT10 1 Tf +7.7759 0 TD +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +( method would just be \(pop )Tj +/TT10 1 Tf +12.5117 0 TD +(TEMPSTRINGBUFFER)Tj +/TT8 1 Tf +9.6016 0 TD +(\))Tj +-31.6895 -2.0667 TD +0.0911 Tw +(A word of caution: if the datatype of the resource is something very small that Medley is good at)Tj +0 -1.2222 TD +0.1233 Tw +(allocating and reclaiming, then explicit user storage management will probably not do much better)Tj +T* +0.0056 Tw +[(than the combination of cons/createcell and the garbage collector. This would especially be so if more)]TJ +T* +0 Tw +(complicated )Tj +/TT10 1 Tf +5.7266 0 TD +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +0.0611 Tw +[( and )]TJ +/TT10 1 Tf +2.3151 0 TD +0 Tw +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0611 Tw +[( methods were to be used, since their overhead would be closer to that of)]TJ +-12.2424 -1.2889 TD +0.0056 Tw +[(the built-in system facilities. Finally, it must be considered whether retaining multiple instances of the)]TJ +0 -1.2222 TD +0.0556 Tw +(resource is a net gain; if the re-entrant case is truly rare, it may be more worthwhile to retain at most)Tj +T* +0.0667 Tw +(one instance, and simply let the instances created by the rarely-used case be reclaimed in the normal)Tj +T* +0 Tw +(course of garbage collection.)Tj +/TT4 1 Tf +10 0 0 10 126 419.2 Tm +(Macros for Accessing Resources)Tj +/TT8 1 Tf +9 0 0 9 126 403.54 Tm +(Four user-level macros are defined for accessing resources:)Tj +/TT10 1 Tf +2.6667 -2.1422 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(NEWRESOURCE)Tj +/F1 1 Tf +10 0 0 10 214.8 384.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 217.67 384.26 Tm +(RESOURCENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( . )Tj +/TT14 1 Tf +2.4004 0 TD +(ARGS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-18548([Macro])]TJ +/TT10 1 Tf +-20.1209 -1.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(FREERESOURCE)Tj +/F1 1 Tf +10 0 0 10 220.2 373.38 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.07 373.38 Tm +(RESOURCENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( . )Tj +/TT14 1 Tf +2.4004 0 TD +(ARGS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-17948([Macro])]TJ +/TT10 1 Tf +-20.7209 -1.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(GETRESOURCE)Tj +/F1 1 Tf +10 0 0 10 214.8 362.5 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 217.67 362.5 Tm +(RESOURCENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( . )Tj +/TT14 1 Tf +2.4004 0 TD +(ARGS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-18548([Macro])]TJ +/TT10 1 Tf +-20.1209 -1.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(INITRESOURCE)Tj +/F1 1 Tf +10 0 0 10 220.2 351.62 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.07 351.62 Tm +(RESOURCENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( . )Tj +/TT14 1 Tf +2.4004 0 TD +(ARGS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-17948([Macro])]TJ +-23.3876 -1.8444 TD +(Each of these macros behave as if they were defined as a substitution macro of the form)Tj +/TT10 1 Tf +5.3333 -1.6 TD +(\(\()Tj +/TT14 1 Tf +1.2002 0 TD +(RESOURCENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( . )Tj +/TT14 1 Tf +1.8003 0 TD +(ARGS)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT14 1 Tf +1.2002 0 TD +(MACROBODY)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +-24.5365 -1.8444 TD +0.2044 Tw +(where the expression )Tj +/TT14 1 Tf +10.2564 0 TD +0 Tw +(MACROBODY)Tj +/TT8 1 Tf +5.4009 0 TD +0.2044 Tw +[( is selected by using the code supplied by the corresponding)]TJ +-15.6573 -1.2889 TD +0 Tw +(method from the )Tj +/TT14 1 Tf +7.7207 0 TD +(RESOURCENAME)Tj +/TT8 1 Tf +7.2012 0 TD +( definition.)Tj +-14.9219 -2.0667 TD +0.0967 Tw +[(Note that it is possible to pass arguments to your resource allocation macros. For example, if the)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(GET)Tj +/TT8 1 Tf +1.8003 0 TD +0.1878 Tw +[( method for the resource )]TJ +/TT10 1 Tf +12.0414 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1878 Tw +[( is )]TJ +/TT10 1 Tf +1.5904 0 TD +0.45 Tw +(\(GETFOO . ARGS\))Tj +/TT8 1 Tf +9.9015 0 TD +0.1878 Tw +(, then )Tj +/TT10 1 Tf +3.0948 0 TD +0.45 Tw +(\(GETRESOURCE FOO X Y\))Tj +/TT8 1 Tf +13.952 0 TD +0.1878 Tw +[( is)]TJ +-44.1807 -1.2889 TD +0.0889 Tw +(transformed into )Tj +/TT10 1 Tf +7.8965 0 TD +0.2122 Tw +(\(GETFOO X Y\))Tj +/TT8 1 Tf +7.6256 0 TD +0.0889 Tw +[(. This form was used in the )]TJ +/TT10 1 Tf +13.1623 0 TD +0 Tw +(FREE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0889 Tw +[( method of the )]TJ +/TT10 1 Tf +7.0484 0 TD +0 Tw +(STRINGBUFFER)Tj +/TT8 1 Tf +-38.1333 -1.2889 TD +(resource described above, to pass the old )Tj +/TT10 1 Tf +18.3501 0 TD +(STRINGBUFFER)Tj +/TT8 1 Tf +7.2012 0 TD +( object to be freed.)Tj +/TT10 1 Tf +-22.8846 -2.2089 TD +(\()Tj +/TT16 1 Tf +0.6001 0 TD +(WITH-RESOURCES)Tj +/TT10 1 Tf +8.3999 0 TD +( \()Tj +/TT14 1 Tf +1.2002 0 TD +(RESOURCE)Tj +6 0 0 6 285 217.74 Tm +(1)Tj +/TT10 1 Tf +9 0 0 9 288.6 219.74 Tm +( )Tj +/TT14 1 Tf +0.6001 0 TD +(RESOURCE)Tj +6 0 0 6 337.2 217.74 Tm +(2)Tj +/TT10 1 Tf +9 0 0 9 340.8 219.74 Tm +( ...\))Tj +/F1 1 Tf +10 0 0 10 367.8044 219.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 373.5444 219.74 Tm +(FORM)Tj +6 0 0 6 395.14 217.74 Tm +(1)Tj +/F1 1 Tf +10 0 0 10 398.74 219.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 401.61 219.74 Tm +(FORM)Tj +6 0 0 6 423.21 217.74 Tm +(2)Tj +/TT10 1 Tf +9 0 0 9 426.81 219.74 Tm +( ...\))Tj +/TT8 1 Tf +3.0005 0 TD +[( )-4911.7([Macro])]TJ +-31.0905 -1.95 TD +(The )Tj +/TT10 1 Tf +1.9949 0 TD +(WITH-RESOURCES)Tj +/TT8 1 Tf +8.4014 0 TD +0.0711 Tw +[( macro binds lambda variables of the same name as the resources)]TJ +-10.3963 -1.2889 TD +0.0233 Tw +(\(for each of the resources )Tj +/TT14 1 Tf +11.4331 0 TD +0 Tw +(RESOURCE)Tj +6 0 0 6 320.13 188.59 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 323.73 190.59 Tm +(, )Tj +/TT14 1 Tf +0.5233 0 TD +(RESOURCE)Tj +6 0 0 6 371.64 188.59 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 375.24 190.59 Tm +0.0233 Tw +(, etc.\) to the result of the )Tj +/TT10 1 Tf +11.0388 0 TD +0 Tw +(GETRESOURCE)Tj +/TT8 1 Tf +-33.3988 -1.3944 TD +0.2956 Tw +(macro; then executes the forms )Tj +/TT14 1 Tf +15.4324 0 TD +0 Tw +(FORM)Tj +6 0 0 6 334.51 176.04 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 338.11 178.04 Tm +(, )Tj +/TT14 1 Tf +0.7956 0 TD +(FORM)Tj +6 0 0 6 366.87 176.04 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 370.47 178.04 Tm +0.2956 Tw +(, etc., does a )Tj +/TT10 1 Tf +6.7408 0 TD +0 Tw +(FREERESOURCE)Tj +/TT8 1 Tf +7.2012 0 TD +0.2956 Tw +[( on each)]TJ +-35.772 -1.3944 TD +0.3889 Tw +(instance, and returns the value of the last form \(evaluated and saved before the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FREERESOURCE)Tj +/TT8 1 Tf +7.2012 0 TD +(s\).)Tj +/TT12 1 Tf +-7.2012 -2.0667 TD +(Note)Tj +/TT8 1 Tf +2.2222 0 TD +0.3322 Tw +(: )Tj +/TT10 1 Tf +1.4144 0 TD +0 Tw +(\(WITH-RESOURCES )Tj +/TT14 1 Tf +10.3982 0 TD +(RESOURCE)Tj +/TT10 1 Tf +4.8008 0 TD +0.7967 Tw +[( ...\))]TJ +/TT8 1 Tf +3.7972 0 TD +0.3322 Tw +[( is interpreted the same as )]TJ +/TT10 1 Tf +13.7692 0 TD +0 Tw +(\(WITH-)Tj +-36.402 -1.2889 TD +0.11 Tw +(RESOURCES \()Tj +/TT14 1 Tf +6.7111 0 TD +0 Tw +(RESOURCE)Tj +/TT10 1 Tf +4.8008 0 TD +0.11 Tw +(\) ...\))Tj +/TT8 1 Tf +3.7106 0 TD +0.0456 Tw +[(. Also, the singular name )]TJ +/TT10 1 Tf +11.7851 0 TD +0 Tw +(WITH-RESOURCE)Tj +/TT8 1 Tf +7.8013 0 TD +0.0456 Tw +[( is accepted)]TJ +-34.8088 -1.2889 TD +0 Tw +(as a synonym for )Tj +/TT10 1 Tf +7.8267 0 TD +(WITH-RESOURCES)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 92.75 Tm +(Saving Resources in a File)Tj +/TT8 1 Tf +9 0 0 9 126 77.09 Tm +0.1633 Tw +(Resources definitions may be saved on files using the )Tj +/TT10 1 Tf +25.2762 0 TD +0 Tw +(RESOURCES)Tj +/TT8 1 Tf +5.4009 0 TD +0.1633 Tw +[( file package command \(see the)]TJ +-30.677 -1.2889 TD +0.1811 Tw +[(Miscellaneous File Package Commands section of Chapter 17\). Typically, one only needs the full)]TJ +0 -1.2222 TD +0.2422 Tw +(definition available when compiling or interpreting the code, so it is appropriate to put the file)Tj +T* +0.0033 Tw +(package command in a )Tj +/TT10 1 Tf +10.4709 0 TD +0.0078 Tw +(\(DECLARE: EVAL@COMPILE DONTCOPY ...\))Tj +/TT8 1 Tf +21.6269 0 TD +0.0001 Tc +0.0032 Tw +( declaration, just as one might)Tj +ET +endstream +endobj +79 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT12 11 0 R +/TT14 12 0 R +/TT16 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +81 0 obj +<< +/Length 1406 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-21)Tj +/TT6 1 Tf +10 0 0 10 418.98 612 Tm +(MISCELLANEOUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0333 Tw +(do for a )Tj +/TT10 1 Tf +3.7807 0 TD +0 Tw +(RECORDS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0333 Tw +[( declaration. But just as certain record declarations need *some* initialization in the)]TJ +-7.9813 -1.2889 TD +0.12 Tw +[(run-time environment, so do most resources. This initialization is specified by the resources )]TJ +/TT10 1 Tf +42.9241 0 TD +0 Tw +(INIT)Tj +/TT8 1 Tf +-42.9241 -1.2889 TD +0.0756 Tw +(method, which is executed automatically when the resource is defined by the )Tj +/TT10 1 Tf +35.2514 0 TD +0 Tw +(PUTDEF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0756 Tw +[( output by the)]TJ +/TT10 1 Tf +-38.852 -1.2889 TD +0 Tw +(RESOURCES)Tj +/TT8 1 Tf +5.4009 0 TD +0.1556 Tw +[( command. However, if the )]TJ +/TT10 1 Tf +13.9282 0 TD +0 Tw +(RESOURCES)Tj +/TT8 1 Tf +5.4009 0 TD +0.1556 Tw +[( command is in a )]TJ +/TT10 1 Tf +8.5639 0 TD +0 Tw +(DONTCOPY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1556 Tw +[( expression and)]TJ +-38.0947 -1.2889 TD +0.0933 Tw +(thus is not included in the compiled file, then it is necessary to include a separate )Tj +/TT10 1 Tf +37.5197 0 TD +0 Tw +(INITRESOURCES)Tj +/TT8 1 Tf +-37.5197 -1.2889 TD +0.11 Tw +(command \(see the Miscellaneous File Manager Commands section of Chapter 17\) in the filecoms to)Tj +0 -1.2222 TD +(insure that the resource is properly initialized.)Tj +ET +endstream +endobj +82 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +85 0 obj +<< +/Length 198 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-22)Tj +/TT6 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +86 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +88 0 obj +<< +/Length 66 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(12-23)Tj +ET +endstream +endobj +89 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +36 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream +-)5US5_u__ +endstream +endobj +37 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 14 +/Height 14 +/BitsPerComponent 1 +/ImageMask true +/Length 29 +>> +stream +wͣm}_c +endstream +endobj +38 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 14 +/Height 14 +/BitsPerComponent 1 +/ImageMask true +/Length 29 +>> +stream +wM2_b'at +endstream +endobj +14 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +90 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +91 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +92 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +93 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +94 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +95 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +96 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +97 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +98 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +99 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +100 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +101 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 92 +/Widths [287 296 333 574 574 833 852 241 389 389 500 606 278 333 278 278 +574 574 574 574 574 574 574 574 574 574 278 278 606 606 606 500 +747 759 778 778 833 759 722 833 870 444 648 815 722 981 833 833 +759 833 815 667 722 833 759 981 722 722 667 389 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 99 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 41 +/Widths [278 333 400 556 556 833 852 278 333 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 100 0 R +>> +endobj +35 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 114 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 101 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 90 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 611 778 0 278 0 0 611 833 722 778 +0 0 722 667 611 722 667 0 0 0 0 0 0 0 0 0 +0 556 0 556 611 556 333 611 0 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 0 556 556 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 91 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +0 0 722 667 0 722 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 92 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 0 778 0 333 333 389 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 444 +0 778 611 709 774 611 556 763 832 337 333 0 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 93 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 600 600 600 0 0 0 0 600 600 600 0 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 600 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 94 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 117 +/Widths [250 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 500 0 444 0 500 0 0 0 0 0 0 0 889 0 556 +0 0 389 444 333 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 95 0 R +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 600 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 600 0 600 600 600 0 0 0 600 0 600 600 600 600 600 +0 0 600 600 600 600 600 0 600 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 96 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 117 +/Widths [600 600 0 0 0 0 0 0 0 0 0 0 0 600 0 0 +0 0 600 0 600 600 600 600 600 600 600 600 600 0 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 +0 0 0 0 600 0 0 600 600 600 600 0 600 0 0 600 +600 600 600 600 0 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 97 0 R +>> +endobj +19 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 63 +/LastChar 117 +/Widths [500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 444 0 407 0 389 0 500 500 278 0 0 278 778 556 +444 500 0 389 389 333 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 98 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 34 0 R +/Contents 33 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +48 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 50 0 R +/Contents 49 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 73 0 R +/Contents 72 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 76 0 R +/Contents 75 0 R +>> +endobj +77 0 obj +<< +/Type /Page +/Parent 52 0 R +/Resources 79 0 R +/Contents 78 0 R +>> +endobj +80 0 obj +<< +/Type /Page +/Parent 83 0 R +/Resources 82 0 R +/Contents 81 0 R +>> +endobj +84 0 obj +<< +/Type /Page +/Parent 83 0 R +/Resources 86 0 R +/Contents 85 0 R +>> +endobj +87 0 obj +<< +/Type /Page +/Parent 83 0 R +/Resources 89 0 R +/Contents 88 0 R +>> +endobj +102 0 obj +<< +/S /D +>> +endobj +103 0 obj +<< +/Nums [0 102 0 R ] +>> +endobj +15 0 obj +<< +/Type /Pages +/Kids [1 0 R 16 0 R 20 0 R 23 0 R 26 0 R 29 0 R 32 0 R 39 0 R 42 0 R 45 0 R] +/Count 10 +/Parent 51 0 R +>> +endobj +52 0 obj +<< +/Type /Pages +/Kids [48 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R 74 0 R 77 0 R] +/Count 10 +/Parent 51 0 R +>> +endobj +83 0 obj +<< +/Type /Pages +/Kids [80 0 R 84 0 R 87 0 R] +/Count 3 +/Parent 51 0 R +>> +endobj +51 0 obj +<< +/Type /Pages +/Kids [15 0 R 52 0 R 83 0 R ] +/Count 23 +/MediaBox [0 0 612 792] +>> +endobj +104 0 obj +<< +/CreationDate (D:20210202102647-06'00') +/ModDate (D:20210202102647-06'00') +/Producer (Apple pstopdf) +>> +endobj +105 0 obj +<< +/Type /Catalog +/Pages 51 0 R +/PageLabels 103 0 R +>> +endobj +xref +0 106 +0000000000 65535 f +0000137653 00000 n +0000000016 00000 n +0000005977 00000 n +0000132814 00000 n +0000133231 00000 n +0000133955 00000 n +0000134166 00000 n +0000134602 00000 n +0000134912 00000 n +0000135475 00000 n +0000136055 00000 n +0000136423 00000 n +0000136935 00000 n +0000130241 00000 n +0000139653 00000 n +0000137734 00000 n +0000006178 00000 n +0000012476 00000 n +0000137339 00000 n +0000137818 00000 n +0000012670 00000 n +0000018246 00000 n +0000137902 00000 n +0000018389 00000 n +0000022944 00000 n +0000137986 00000 n +0000023089 00000 n +0000028837 00000 n +0000138070 00000 n +0000029018 00000 n +0000035955 00000 n +0000138154 00000 n +0000036160 00000 n +0000043785 00000 n +0000133444 00000 n +0000129739 00000 n +0000129905 00000 n +0000130073 00000 n +0000138238 00000 n +0000044036 00000 n +0000050126 00000 n +0000138322 00000 n +0000050310 00000 n +0000057109 00000 n +0000138406 00000 n +0000057300 00000 n +0000061901 00000 n +0000138490 00000 n +0000062127 00000 n +0000067478 00000 n +0000140016 00000 n +0000139790 00000 n +0000138574 00000 n +0000067636 00000 n +0000074801 00000 n +0000138658 00000 n +0000074981 00000 n +0000081419 00000 n +0000138742 00000 n +0000081597 00000 n +0000088342 00000 n +0000138826 00000 n +0000088533 00000 n +0000096143 00000 n +0000138910 00000 n +0000096345 00000 n +0000102615 00000 n +0000138994 00000 n +0000102830 00000 n +0000107986 00000 n +0000139078 00000 n +0000108140 00000 n +0000113431 00000 n +0000139162 00000 n +0000113587 00000 n +0000118715 00000 n +0000139246 00000 n +0000118871 00000 n +0000127373 00000 n +0000139330 00000 n +0000127565 00000 n +0000129024 00000 n +0000139928 00000 n +0000139414 00000 n +0000129156 00000 n +0000129406 00000 n +0000139498 00000 n +0000129525 00000 n +0000129642 00000 n +0000130382 00000 n +0000130579 00000 n +0000130785 00000 n +0000130980 00000 n +0000131180 00000 n +0000131371 00000 n +0000131576 00000 n +0000131777 00000 n +0000131979 00000 n +0000132182 00000 n +0000132394 00000 n +0000132605 00000 n +0000139582 00000 n +0000139611 00000 n +0000140115 00000 n +0000140239 00000 n +trailer +<< +/Size 106 +/Root 105 0 R +/Info 104 0 R +/ID [<378b03b9164b7a07508d30e34d6bf86e><378b03b9164b7a07508d30e34d6bf86e>] +>> +startxref +140311 +%%EOF diff --git a/docs/medley-irm/13-EXECUTIVE.TEDIT b/docs/medley-irm/13-EXECUTIVE.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..e7bc6f9f00d8d2a16daf83bdeb95f1a4da13806a GIT binary patch literal 143493 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 vE6zovyJsA*8vy> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-1)Tj +/TT4 1 Tf +10 0 0 10 379.96 568.2 Tm +(13. MEDLEY EXECUTIVES)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 564.99 m +510.01 564.99 l +S +BT +/TT6 1 Tf +9 0 0 9 78 542.54 Tm +0.1269 Tw +(In most Common Lisp implementations, there is a top-level read-eval-print loop, which reads an)Tj +0 -1.2222 TD +0.0144 Tw +[(expression, evaluates it, and prints the results. In Medley, the Exec acts as the top-level loop, but does)]TJ +T* +0 Tw +(much more. )Tj +0 -2 TD +0.0389 Tw +(The Exec traps all )Tj +/TT8 1 Tf +8.2073 0 TD +0 Tw +(THROWS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0389 Tw +[(, and recovers gracefully. It prints all values resulting from evaluation, on)]TJ +-11.8079 -1.2889 TD +0 Tw +(separate lines. \(When zero values are returned, nothing is printed\).)Tj +0 -2 TD +0.0344 Tw +(The Exec keeps track of your previous inputs, in the history list. Each entry you type creates a history)Tj +0 -1.2222 TD +0 Tw +(event, which sotres the input and its values.)Tj +0 -2 TD +0.01 Tw +(Its easy to use the results of earlier events, redo and event, or recall an earlier input, edit it, and run it.)Tj +0 -1.2222 TD +0 Tw +(This makes it much easier to get your work done.)Tj +/TT4 1 Tf +10 0 0 10 54 410.6 Tm +(Multiple Execs and the Execs Type)Tj +ET +1 w +54.01 407.89 m +510.01 407.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 393.94 Tm +0.0922 Tw +[(Sometimes you need more than one Exec open at a time. Its easy to open as many as you need by)]TJ +T* +0.1589 Tw +[(using the right button background menu and selecting the kind of Exec you need. The Execs are)]TJ +T* +0.0089 Tw +[(differentiated from one another by their "names" in their title bars and by their prompts. For example,)]TJ +T* +0.0167 Tw +(the second Exec you open may have a prompt like )Tj +/TT8 1 Tf +22.6364 0 TD +0 Tw +(2/50>)Tj +/TT6 1 Tf +3.0005 0 TD +0.0167 Tw +[( if its the second Common Lisp Exec youve)]TJ +-25.6369 -1.2889 TD +0 Tw +(opened. Events in each Exec are placed on the global history list with their Exec number so the system)Tj +0 -1.2222 TD +(can tell them apart.)Tj +0 -2 TD +0.0467 Tw +(Several variables are very important to an Exec since they control the format of reading and printing.)Tj +0 -1.2222 TD +0.2622 Tw +[(Together these variables describe a type of exec, or its mode. Some standard bindings for the)]TJ +T* +0.0778 Tw +[(variables have been named to make mode setting easy. The names provide you with an Exec of the)]TJ +T* +0.2478 Tw +(Common Lisp \()Tj +/TT8 1 Tf +7.4038 0 TD +0 Tw +(LISP)Tj +/TT6 1 Tf +2.4004 0 TD +0.2478 Tw +(\), Interlisp or Old Interlisp \()Tj +/TT8 1 Tf +13.486 0 TD +0 Tw +(IL)Tj +/TT6 1 Tf +1.2002 0 TD +0.2478 Tw +(\), or Medley \()Tj +/TT8 1 Tf +6.7121 0 TD +0 Tw +(XCL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2478 Tw +[(\) type. An Execs type is)]TJ +-33.0027 -1.2889 TD +0 Tw +(displayed in the title bar of its window:)Tj +ET +q +138.5 0 0 -61 212.76 264.19 cm +/Im1 Do +Q +BT +/TT4 1 Tf +10 0 0 10 54 185.4 Tm +(A Brief Example of Exec Interactions)Tj +ET +54.01 182.69 m +510.01 182.69 l +S +BT +/TT6 1 Tf +9 0 0 9 78 168.74 Tm +0.0467 Tw +[(The following dialogue contains examples and gives the flavor of the use of an Exec. The commands)]TJ +0 -1.2222 TD +0.0122 Tw +[(are described in greater detail in the following sections. For now, be sure to type these examples to an)]TJ +T* +0.0056 Tw +(Exec whose )Tj +/TT8 1 Tf +5.4257 0 TD +0 Tw +(*PACKAGE*)Tj +/TT6 1 Tf +5.401 0 TD +0.0056 Tw +[( is set to the )]TJ +/TT8 1 Tf +5.4809 0 TD +0 Tw +(XCL-USER)Tj +/TT6 1 Tf +4.8008 0 TD +0.0056 Tw +[( package. The Exec that Medley starts up with is set to)]TJ +-21.1084 -1.2889 TD +0 Tw +(the )Tj +/TT8 1 Tf +1.7394 0 TD +(XCL-USER)Tj +/TT6 1 Tf +4.8008 0 TD +0.1022 Tw +[( package. Each prompt consists of an Exec number, an event number and a prompt)]TJ +-6.5402 -1.2889 TD +0 Tw +(character \(> for Common Lisp and )Tj +/TT9 1 Tf +17.0459 0 TD +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +( for Interlisp\). )Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +>> +/XObject << +/Im1 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 1932 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-2)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +ET +q +137 0 0 -87 261.51 575.99 cm +/Im2 Do +Q +BT +/TT6 1 Tf +9 0 0 9 126 475.54 Tm +(You have instructed the Exec to UNDO the previous event.)Tj +ET +q +137 0 0 -87 261.51 463.99 cm +/Im3 Do +Q +BT +9 0 0 9 126 363.54 Tm +0.0778 Tw +(The Exec accepts input both in )Tj +/TT8 1 Tf +14.1918 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0778 Tw +[( format \(the )]TJ +/TT8 1 Tf +5.6865 0 TD +0 Tw +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +0.0778 Tw +(\) and )Tj +/TT8 1 Tf +2.6814 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +[( format \(the )]TJ +/TT8 1 Tf +5.6865 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +[(\). In event 1196,)]TJ +-37.8477 -1.2889 TD +0 Tw +(you added a property )Tj +/TT8 1 Tf +9.916 0 TD +(MYPROP)Tj +/TT6 1 Tf +3.6006 0 TD +( to the symbols )Tj +/TT8 1 Tf +6.936 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(C)Tj +/TT6 1 Tf +0.6001 0 TD +(. )Tj +ET +q +137 0 0 -87 261.51 339.79 cm +/Im4 Do +Q +BT +9 0 0 9 126 239.34 Tm +0.22 Tw +[(You told the Exec to go back to event 1196, substitute )]TJ +/TT8 1 Tf +26.6029 0 TD +0 Tw +(LST2)Tj +/TT6 1 Tf +2.4004 0 TD +0.22 Tw +[( for )]TJ +/TT8 1 Tf +2.2139 0 TD +0 Tw +(LST1)Tj +/TT6 1 Tf +2.4004 0 TD +0.22 Tw +(, and then re-execute the)Tj +-33.6176 -1.2889 TD +0 Tw +(expression.)Tj +ET +q +138.5 0 0 -61 260.76 216.19 cm +/Im5 Do +Q +BT +9 0 0 9 126 141.74 Tm +(If )Tj +/TT8 1 Tf +0.9199 0 TD +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +( were computationally expensive \(it isnt\), you might be caching its value for later use.)Tj +ET +q +138.5 0 0 -61 260.76 129.59 cm +/Im6 Do +Q +BT +9 0 0 9 126 55.14 Tm +0.07 Tw +(You now decide you would like to redo the )Tj +/TT8 1 Tf +20.0695 0 TD +0 Tw +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +0.07 Tw +[( with a different value. You can specify the event)]TJ +-22.4698 -1.2889 TD +0 Tw +(using any symbol in the expression.)Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +>> +/XObject << +/Im2 16 0 R +/Im3 17 0 R +/Im4 18 0 R +/Im5 19 0 R +/Im6 20 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +22 0 obj +<< +/Length 4189 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-3)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +ET +q +137.5 0 0 -72.5 213.26 575.99 cm +/Im7 Do +Q +BT +/TT6 1 Tf +9 0 0 9 78 490.04 Tm +0.0456 Tw +(Here you ask the Exec \(using the )Tj +/TT8 1 Tf +15.0523 0 TD +0 Tw +(??)Tj +/TT6 1 Tf +1.2002 0 TD +0.0456 Tw +[( command\) what it has on its history list for the last input. Since)]TJ +-16.2525 -1.2889 TD +0.0222 Tw +(the event corresponds to a command, the Exec displays both the original command and the generated)Tj +0 -1.2222 TD +0 Tw +(input.)Tj +0 -2 TD +0.0944 Tw +(Youll usually deal with the Exec at top level or in the debugger, where you type in expressions for)Tj +0 -1.2222 TD +0.0001 Tc +0.0043 Tw +(evaluation, and see the values printed out. An Exec acts much like a standard Lisp top-level loop, but)Tj +T* +0 Tc +0.0633 Tw +[(before it evaluates an input, it first adds it to the history list. If the operation is aborted or causes an)]TJ +T* +0 Tw +(error, the input is still available for you to modify or re-execute.)Tj +0 -2 TD +0.08 Tw +(After updating the history list, the Exec executes the computation \(i.e., evaluates the form or applies)Tj +0 -1.2222 TD +0.1044 Tw +(the function to its arguments\), saves the value in the history-list entry for that input, and prints the)Tj +T* +0 Tw +(result. Finally the Exec displays a prompt to show its again ready for input.)Tj +/TT4 1 Tf +10 0 0 10 54 354.1 Tm +(Input Formats)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 351.39 m +510.01 351.39 l +S +BT +/TT6 1 Tf +9 0 0 9 78 337.44 Tm +0.0589 Tw +(The Exec accepts three forms of input: an expression to be evaluated \()Tj +/TT8 1 Tf +31.4323 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0589 Tw +(-format\), a function-name)Tj +-33.8326 -1.2889 TD +0 Tw +(and arguments to apply it to \()Tj +/TT8 1 Tf +13.1846 0 TD +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +(-format\), and Exec commands, as follows:)Tj +/TT8 1 Tf +-16.5551 -2.0667 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0289 Tw +[(-format )28.9(input)-667(If you type a single expression, either followed by a carriage-return, or, in the case)]TJ +6.6363 -1.2889 TD +0.0189 Tw +(of a list, terminated with balanced parenthesis, the expression is evaluated and the)Tj +0 -1.2222 TD +0 Tw +(value is returned. For example, if the value of )Tj +/TT8 1 Tf +20.5972 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +( is the list )Tj +/TT8 1 Tf +4.4341 0 TD +(\(A B C\))Tj +/TT6 1 Tf +4.2007 0 TD +(:)Tj +ET +q +103.5 0 0 -38.5 269.26 275.49 cm +/Im8 Do +Q +BT +9 0 0 9 156 223.54 Tm +0.2067 Tw +(Similarly, if you type a Lisp expression, beginning with a left parenthesis and)Tj +0 -1.2222 TD +0.03 Tw +(terminated by a matching right parenthesis, the form is simply passed to )Tj +/TT8 1 Tf +32.7042 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.03 Tw +[( for)]TJ +-35.1046 -1.2889 TD +0.0989 Tw +[(evaluation. Notice that it is not necessary to type a carriage return at the end of)]TJ +0 -1.2222 TD +0.0089 Tw +[(such a form; the reader will supply one automatically. If a carriage-return is typed)]TJ +T* +0.1144 Tw +(before the final matching right parenthesis or bracket, it is treated the same as a)Tj +T* +0 Tw +(space, and input continues. The following examples are interpreted identically:)Tj +ET +q +101.5 0 0 -55 270.26 159.39 cm +/Im9 Do +Q +BT +/TT8 1 Tf +9 0 0 9 67.02 90.94 Tm +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0578 Tw +[(-format )57.8(input )-609.1(Often, you call functions with constant argument values, which would have to be)]TJ +6.8862 -1.2889 TD +0.0544 Tw +(quoted if you typed them in )Tj +/TT8 1 Tf +12.9971 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0544 Tw +[(-format. For convenience, if you type a symbol)]TJ +-15.3975 -1.2889 TD +0.0589 Tw +(immediately followed by a list, the symbol is )Tj +/TT8 1 Tf +20.538 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0589 Tw +(ed to the elements within the)Tj +-23.5385 -1.2889 TD +0.0567 Tw +[(list, unevaluated. The input is terminated by the matching right parenthesis. For)]TJ +0 -1.2222 TD +0.1222 Tw +(example, typing )Tj +/TT8 1 Tf +7.6561 0 TD +0 Tw +(LOAD\(FOO\))Tj +/TT6 1 Tf +5.4009 0 TD +0.1222 Tw +[( is equivalent to typing )]TJ +/TT8 1 Tf +11.0369 0 TD +0.2922 Tw +(\(LOAD FOO\))Tj +/TT6 1 Tf +6.8933 0 TD +0.1222 Tw +(, and )Tj +/TT8 1 Tf +2.6873 0 TD +0 Tw +(GET\(X)Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +>> +/XObject << +/Im7 24 0 R +/Im8 25 0 R +/Im9 26 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +28 0 obj +<< +/Length 4618 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-4)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 204 569.54 Tm +(COLOR\))Tj +/TT6 1 Tf +3.6006 0 TD +0.0967 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.6499 0 TD +0.2333 Tw +(\(GET X COLOR\))Tj +/TT6 1 Tf +9.4681 0 TD +0.0967 Tw +[(. As a simple special case, a single)]TJ +-20.7186 -1.2889 TD +0.1633 Tw +(right parenthesis is treated as a balanced set of parentheses, e.g.)Tj +/TT8 1 Tf +29.7456 0 TD +0.3911 Tw +[( UNBREAK\))]TJ +/TT6 1 Tf +5.792 0 TD +0.1633 Tw +[( is)]TJ +-35.5376 -1.2889 TD +0 Tw +(equivalent to)Tj +/TT8 1 Tf +5.7983 0 TD +( UNBREAK\(\))Tj +/TT6 1 Tf +-5.7983 -2.0667 TD +0.3311 Tw +(The reader will only supply the carriage return automatically if no space)Tj +0 -1.2222 TD +0.0156 Tw +(appears between the initial symbol and the list that follows; if there is a space after)Tj +T* +0.07 Tw +(the initial symbol on the line and the list that follows, the input is not terminated)Tj +T* +0 Tw +(until you type a carriage return.)Tj +0 -2 TD +0.0033 Tw +(The Exec will not consider unparenthesized input with more than one argument to)Tj +0 -1.2222 TD +0 Tw +(be in apply format, e.g.:)Tj +/TT8 1 Tf +0 -1.6667 TD +(LIST\(1\))Tj +/TT6 1 Tf +4.6667 0 TD +(is apply format \(executes after closing parenthesis is typed\))Tj +/TT8 1 Tf +-4.6667 -1.7333 TD +(LIST \(1\))Tj +/TT6 1 Tf +6.6667 0 TD +0.16 Tw +(is apply format \(second argument is a list, no trailing arguments)Tj +-2 -1.2889 TD +0 Tw +(given\))Tj +/TT8 1 Tf +-4.6667 -1.6667 TD +(LIST \(1\) 2 3)Tj +/TT6 1 Tf +8.6667 0 TD +(is NOT apply format, arguments are evaluated)Tj +/TT8 1 Tf +-8.6667 -1.7333 TD +(LIST 1 2 3)Tj +/TT6 1 Tf +6.6667 0 TD +(is NOT apply format, arguments are evaluated)Tj +/TT8 1 Tf +-6.6667 -1.7333 TD +(LIST 1)Tj +/TT6 1 Tf +3.6033 0 TD +(not legal input: second argument is not a list)Tj +-3.6033 -2.0667 TD +(Note that )Tj +/TT8 1 Tf +4.4165 0 TD +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +(-format input cannot be used for macros or special forms.)Tj +-15.5081 -2.0667 TD +0.0156 Tw +[(Exec )15.6(commands )-653.6(The Exec recognizes a number of commands, which usually refer to past events on)]TJ +8.0911 -1.2222 TD +0.05 Tw +[(the history list. These commands are treated specially; for example, they may not)]TJ +T* +0.1233 Tw +[(be put on the history list. The format of a command is always a line beginning)]TJ +T* +0.0344 Tw +[(with the command name. \(The Exec looks up the command name independent of)]TJ +T* +0.2667 Tw +(package.\) The remainder of the line, if any, is treated as arguments to the)Tj +T* +0 Tw +(command. For example,)Tj +/TT8 1 Tf +0 -1.6667 TD +(128> UNDO)Tj +0 -1 TD +(mapc undone)Tj +0 -1.4444 TD +(129> UNDO \(FOO --\))Tj +0 -1 TD +(foo undone)Tj +/TT6 1 Tf +0 -1.8444 TD +(are both valid command inputs.)Tj +/TT4 1 Tf +10 0 0 10 102 200.2 Tm +(Event Specification)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 197.49 m +558.01 197.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 183.54 Tm +0.1944 Tw +(Exec commands, like )Tj +/TT8 1 Tf +10.1244 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.1944 Tw +[(, frequently refer to previous events in the sessions history. All Exec)]TJ +-12.5248 -1.2889 TD +0.0244 Tw +(commands use the same conventions and syntax for indicating which event\(s\) the command refers to.)Tj +0 -1.2222 TD +0 Tw +(This section shows you the syntax used to specify previous events.)Tj +0 -2 TD +0.0611 Tw +[(An event address identifies one event on the history list. For example, the event address 42 refers to)]TJ +0 -1.2222 TD +0.13 Tw +[(the event with event number 42, and -2 refers to two events back in the current Exec. Usually, an)]TJ +T* +0 Tw +(event address will contain only one or two commands.)Tj +0 -2 TD +0.0233 Tw +[(Event addresses can be concatenated. For example, if )]TJ +/TT8 1 Tf +24.1163 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0233 Tw +[( refers to event )]TJ +/TT8 1 Tf +6.9014 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5233 0 TD +0.0556 Tw +(FOO FIE)Tj +/TT6 1 Tf +4.2562 0 TD +0.0233 Tw +[( will refer to the)]TJ +-38.1977 -1.2889 TD +0 Tw +(first event before event )Tj +/TT8 1 Tf +10.4165 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( which contains )Tj +/TT8 1 Tf +7.1777 0 TD +(FIE)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-19.9946 -2.0667 TD +0.1178 Tw +(The symbols used in event addresses \(such as )Tj +/TT8 1 Tf +21.3695 0 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6178 0 TD +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.1178 Tw +[(, etc.\) are compared with )]TJ +/TT8 1 Tf +12.1544 0 TD +0 Tw +(STRING-EQUAL)Tj +/TT6 1 Tf +7.2012 0 TD +0.1178 Tw +(, so)Tj +-43.7432 -1.2889 TD +0.1411 Tw +(that it does not matter what the current package is when you type an event address symbol to an)Tj +0 -1.2222 TD +0 Tw +(Exec.)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +31 0 obj +<< +/Length 6509 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-5)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.1133 Tw +(Specifications used below of the form )Tj +/TT13 1 Tf +17.4993 0 TD +0 Tw +(EventAddress)Tj +/TT6 1 Tf +7.2012 0 TD +0.1133 Tw +[( refer to event addresses, as described above.)]TJ +-24.7005 -1.2889 TD +0.0633 Tw +(Since an event address may contain multiple words, the event address is parsed by searching for the)Tj +0 -1.2222 TD +0.2256 Tw +[(words which delimit it. For example, in )]TJ +/TT13 1 Tf +19.7551 0 TD +0 Tw +(EventAddress)Tj +6 0 0 6 320.62 544.94 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 324.22 546.94 Tm +0.5422 Tw +[( AND )]TJ +/TT13 1 Tf +4.0849 0 TD +0 Tw +(EventAddress)Tj +6 0 0 6 425.78 544.94 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 429.38 546.94 Tm +0.2256 Tw +(, the notation)Tj +/TT13 1 Tf +-39.0422 -1.3944 TD +0 Tw +(EventAddress)Tj +6 0 0 6 142.8 532.39 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 146.4 534.39 Tm +0.5244 Tw +[( corresponds to all words up to the )]TJ +/TT8 1 Tf +19.8689 0 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.5244 Tw +[( in the event specification, and)]TJ +/TT13 1 Tf +-29.2692 -1.3944 TD +0 Tw +(EventAddress)Tj +6 0 0 6 142.8 519.84 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 146.4 521.84 Tm +( to all words after the )Tj +/TT8 1 Tf +9.6841 0 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +( in the event specification.)Tj +-19.0844 -2.1722 TD +(Event addresses are interpreted as follows:)Tj +/TT8 1 Tf +2.0433 -2 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +[( \(an integer\))-666.8(If )]TJ +/TT8 1 Tf +7.0298 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[( is positive, it refers to the event with event number )]TJ +/TT8 1 Tf +23.9631 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0867 Tw +[( \(no matter which Exec)]TJ +-26.1699 -1.2889 TD +0.1822 Tw +(the event occurred in.\) If )Tj +/TT8 1 Tf +12.022 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1822 Tw +[( is negative, it always refers to the event )]TJ +/TT8 1 Tf +19.5506 0 TD +0 Tw +(-N)Tj +/TT6 1 Tf +1.2002 0 TD +0.1822 Tw +[( events)]TJ +-33.3729 -1.2889 TD +0 Tw +(backwards, counting only events belonging to the current Exec.)Tj +/TT8 1 Tf +-1.2667 -2 TD +(F)Tj +/TT6 1 Tf +1.2667 0 TD +0.0678 Tw +(Specifies that the next object in the event address is to be searched for, regardless)Tj +0 -1.2889 TD +0 Tw +(of what it is. For example, )Tj +/TT8 1 Tf +11.9492 0 TD +(F -2)Tj +/TT6 1 Tf +2.4004 0 TD +( looks for an event containing )Tj +/TT8 1 Tf +13.3501 0 TD +(-2)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +-37.5632 -2.0667 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventAddress)Tj +/TT6 1 Tf +6.0129 -1.7333 TD +0.08 Tw +(All events since )Tj +/TT13 1 Tf +7.4246 0 TD +0 Tw +(EventAddress)Tj +/TT6 1 Tf +7.2012 0 TD +0.08 Tw +[(, inclusive. For example, if there is a single Exec)]TJ +-14.6257 -1.2889 TD +0.0444 Tw +(and the current event is number 53, then )Tj +/TT8 1 Tf +18.5201 0 TD +0.1078 Tw +(FROM 49)Tj +/TT6 1 Tf +4.3085 0 TD +0.0444 Tw +[( specifies events 49, 50, 51, and)]TJ +-22.8286 -1.2889 TD +0 Tw +(52. )Tj +/TT8 1 Tf +2 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +( includes events from )Tj +/TT15 1 Tf +9.9863 0 TD +(all)Tj +/TT6 1 Tf +0.9995 0 TD +( Execs.)Tj +-24.0496 -2.0667 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(ALL)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventAddress)Tj +/TT6 1 Tf +6.363 -1.7333 TD +0.1433 Tw +(Specifies all events satisfying )Tj +/TT13 1 Tf +13.6602 0 TD +0 Tw +(EventAddress)Tj +/TT6 1 Tf +7.2012 0 TD +0.1433 Tw +[(. For example, )]TJ +/TT8 1 Tf +7.3194 0 TD +0.3433 Tw +(ALL LOAD, ALL)Tj +-28.1809 -1.2889 TD +0 Tw +(SUCHTHAT FOO-P)Tj +/TT6 1 Tf +8.4014 0 TD +(. )Tj +-11.9125 -2.0667 TD +0.1811 Tw +[(empty)-665.9(If nothing is specified, it is the same as specifying -1, i.e., the last event in the)]TJ +3.5111 -1.2222 TD +0 Tw +(current Exec. )Tj +/TT13 1 Tf +-8.6633 -2 TD +(EventSpec)Tj +6 0 0 6 126.63 278.69 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 130.23 280.69 Tm +( )Tj +/TT8 1 Tf +0.25 0 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventSpec)Tj +6 0 0 6 199.53 278.69 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 203.13 280.69 Tm +( )Tj +/TT8 1 Tf +0.25 0 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +( . . . )Tj +/TT8 1 Tf +1.75 0 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventSpec)Tj +6 0 0 6 304.38 278.69 Tm +(N)Tj +/TT6 1 Tf +9 0 0 9 156 264.14 Tm +0.1333 Tw +[(Each of the is an event specification. The lists of events are concatenated. For)]TJ +0 -1.2222 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.4312 0 TD +0.4378 Tw +(REDO ALL MAPC AND ALL STRING AND 32)Tj +/TT6 1 Tf +24.0679 0 TD +0.1822 Tw +[( redoes all events)]TJ +-28.4991 -1.2889 TD +0 Tw +(containing )Tj +/TT8 1 Tf +5.0346 0 TD +(MAPC)Tj +/TT6 1 Tf +2.4004 0 TD +0.0844 Tw +(, all containing )Tj +/TT8 1 Tf +7.0356 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0844 Tw +[(, and also event 32. Duplicate events are)]TJ +-18.0712 -1.2889 TD +0 Tw +(removed. )Tj +/TT4 1 Tf +10 0 0 10 54 207.6 Tm +(Exec Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 204.89 m +510.01 204.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 190.94 Tm +0.1078 Tw +[(You enter an Exec commands by typing the name of the command at the prompt. The name of an)]TJ +0 -1.2222 TD +0.0322 Tw +(Exec command is not a symbol and therefore is not sensitive to the setting of the current package \(the)Tj +T* +0 Tw +(value of )Tj +/TT8 1 Tf +3.8169 0 TD +(*PACKAGE*)Tj +/TT6 1 Tf +5.4009 0 TD +(\).)Tj +/TT13 1 Tf +-9.2178 -2.0667 TD +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.0178 Tw +[( is used to denote an event specification which in most cases will be either a specific event)]TJ +-5.4009 -1.2889 TD +0.0511 Tw +(address \(e.g., )Tj +/TT8 1 Tf +6.1637 0 TD +0 Tw +(42)Tj +/TT6 1 Tf +1.2002 0 TD +0.0511 Tw +(\) or a relative one \(e.g., )Tj +/TT8 1 Tf +10.6319 0 TD +0 Tw +(-3)Tj +/TT6 1 Tf +1.2002 0 TD +0.0511 Tw +[(\). Unless specified otherwise, omitting )]TJ +/TT13 1 Tf +18.0282 0 TD +0 Tw +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.0511 Tw +[( is the)]TJ +-42.6251 -1.2889 TD +0 Tw +(same as specifying )Tj +/TT13 1 Tf +8.5166 0 TD +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(= -1)Tj +/TT6 1 Tf +2.4004 0 TD +(. For example, )Tj +/TT8 1 Tf +6.7461 0 TD +(REDO)Tj +/TT6 1 Tf +2.4004 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(REDO -1)Tj +/TT6 1 Tf +4.2007 0 TD +( are the same.)Tj +/TT17 1 Tf +-29.4412 -2.0667 TD +(REDO)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +[( )-26698.7([Exec command])]TJ +-5.3846 -1.8444 TD +0.0389 Tw +(Redoes the event or events specified by )Tj +/TT13 1 Tf +17.905 0 TD +0 Tw +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.0389 Tw +[(. For example, )]TJ +/TT8 1 Tf +6.9016 0 TD +0.0933 Tw +(REDO 123)Tj +/TT6 1 Tf +4.8941 0 TD +0.0389 Tw +[( redoes the)]TJ +-35.1017 -1.2889 TD +0 Tw +(event numbered 123.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT15 34 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +37 0 obj +<< +/Length 9376 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-6)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 569.54 Tm +(RETRY)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +[( )-26098.6([Exec command])]TJ +-5.9847 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.2248 0 TD +(REDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0378 Tw +[( but sets the debugger parameters so that any errors that occur while executing)]TJ +/TT13 1 Tf +-4.6252 -1.2889 TD +0 Tw +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +( will cause breaks.)Tj +/TT17 1 Tf +-8.0675 -2.0667 TD +(USE )Tj +/TT13 1 Tf +2.4004 0 TD +(NEW)Tj +/TT17 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +([)Tj +/TT17 1 Tf +0.5992 0 TD +(FOR )Tj +/TT13 1 Tf +2.4004 0 TD +(OLD)Tj +/TT17 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +(])Tj +/TT17 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.6001 0 TD +([)Tj +/TT17 1 Tf +0.599 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(])Tj +/TT6 1 Tf +0.6001 0 TD +[( )-15048.8([Exec command])]TJ +-17.0345 -1.8444 TD +(Substitutes )Tj +/TT13 1 Tf +5.287 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.1567 Tw +[( for )]TJ +/TT13 1 Tf +2.0873 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1567 Tw +[( in the events specified by )]TJ +/TT13 1 Tf +12.6172 0 TD +0 Tw +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.1567 Tw +(, and redoes the result)Tj +/TT13 1 Tf +10.4084 0 TD +0 Tw +(.)Tj +-39.4014 -1.2889 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +( and )Tj +/TT13 1 Tf +2.1929 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +( can include lists or symbols, etc.)Tj +-5.7935 -2.0667 TD +0.0756 Tw +(For example, )Tj +/TT8 1 Tf +6.1472 0 TD +0.1811 Tw +(USE SIN \(- X\) FOR COS X IN -2 AND -1)Tj +/TT6 1 Tf +23.4146 0 TD +0.0756 Tw +[( will substitute )]TJ +/TT8 1 Tf +7.0392 0 TD +0 Tw +(SIN)Tj +/TT6 1 Tf +1.8003 0 TD +0.0756 Tw +[( for)]TJ +-38.4013 -1.2889 TD +0.1956 Tw +(every occurrence of )Tj +/TT8 1 Tf +9.5002 0 TD +0 Tw +(COS)Tj +/TT6 1 Tf +1.8003 0 TD +0.1956 Tw +[( in the previous two events, and substitute )]TJ +/TT8 1 Tf +20.5879 0 TD +0.47 Tw +(\(- X\))Tj +/TT6 1 Tf +3.4705 0 TD +0.1956 Tw +[( for every)]TJ +-35.3589 -1.2889 TD +0.2322 Tw +(occurrence of )Tj +/TT8 1 Tf +6.6539 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.2322 Tw +[(, and reexecute them. \(The substitutions do not change the previous)]TJ +-7.254 -1.2889 TD +0 Tw +(information saved about these events on the history list.\))Tj +0 -2 TD +(If )Tj +/TT8 1 Tf +0.9433 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT13 1 Tf +0.2733 0 TD +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[( is omitted, the first member of )]TJ +/TT13 1 Tf +14.0471 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0233 Tw +[( is used to search for the appropriate)]TJ +-23.6651 -1.2889 TD +0.2478 Tw +[(event. For example, )]TJ +/TT8 1 Tf +10.1684 0 TD +0.5944 Tw +(USE DEFAULTFONT FOR DEFLATFONT)Tj +/TT6 1 Tf +19.7863 0 TD +0.2478 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +8.2543 0 TD +0 Tw +(USE)Tj +-38.2089 -1.2889 TD +0.08 Tw +(DEFAULTFONT FOR DEFLATFONT IN F DEFLATFONT)Tj +/TT6 1 Tf +25.6041 0 TD +0.0333 Tw +[(. The )]TJ +/TT8 1 Tf +2.7738 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is inserted to handle the)]TJ +-28.978 -1.2889 TD +0 Tw +(case where the first member of )Tj +/TT13 1 Tf +13.8228 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +( could be interpreted as an event address command.)Tj +-15.623 -2.0667 TD +(If )Tj +/TT13 1 Tf +1.1766 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.2567 Tw +[( is omitted, substitution is for the operator in that command. For example)]TJ +/TT8 1 Tf +-2.9769 -1.2889 TD +0 Tw +(FBOUNDP\(FF\))Tj +/TT6 1 Tf +6.6011 0 TD +0.0289 Tw +[( followed by )]TJ +/TT8 1 Tf +5.8767 0 TD +0.0689 Tw +(USE CALLS)Tj +/TT6 1 Tf +5.4698 0 TD +0.0289 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.3787 0 TD +0.0689 Tw +(USE CALLS FOR FBOUNDP IN)Tj +-25.3263 -1.2889 TD +0 Tw +(-1)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-1.2002 -2.0667 TD +(If )Tj +/TT13 1 Tf +1.0333 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1133 Tw +[( is not found, )]TJ +/TT8 1 Tf +6.5471 0 TD +0 Tw +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.1133 Tw +[( will print a question mark, several spaces and the pattern that)]TJ +-11.1809 -1.2889 TD +0.1011 Tw +[(was not found. For example, if you specified )]TJ +/TT8 1 Tf +21.0746 0 TD +0.2422 Tw +(USE Y FOR X IN 104)Tj +/TT6 1 Tf +12.0129 0 TD +0.1011 Tw +[( and )]TJ +/TT8 1 Tf +2.3951 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( was not)]TJ +-36.0826 -1.2889 TD +0 Tw +(found, )Tj +/TT8 1 Tf +3.1748 0 TD +(X ?)Tj +/TT6 1 Tf +3.0005 0 TD +( is printed to the Exec.)Tj +-6.1753 -2.0667 TD +(You can also specify more than one substitution simultaneously as follows:)Tj +/TT17 1 Tf +-2.6667 -2 TD +(USE )Tj +/TT13 1 Tf +2.4004 0 TD +(NEW)Tj +6 0 0 6 187.8 266.14 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 191.4 268.14 Tm +( )Tj +/TT17 1 Tf +0.6001 0 TD +(FOR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(OLD)Tj +6 0 0 6 234.6 266.14 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 238.2 268.14 Tm +( )Tj +/TT17 1 Tf +0.6001 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +( ... )Tj +/TT17 1 Tf +3.0005 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(NEW)Tj +6 0 0 6 324.6 266.14 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 328.2 268.14 Tm +( )Tj +/TT17 1 Tf +0.6001 0 TD +(FOR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(OLD)Tj +6 0 0 6 371.4 266.14 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 375 268.14 Tm +( [)Tj +/TT17 1 Tf +1.2002 0 TD +(IN)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(EventSpec)Tj +/TT8 1 Tf +5.4009 0 TD +(] )Tj +/TT6 1 Tf +1.8486 0 TD +([Exec command])Tj +-32.5833 -1.95 TD +([The )Tj +/TT8 1 Tf +2.3257 0 TD +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.0689 Tw +[( command is parsed by a small finite state parser to distinguish the expressions)]TJ +-4.126 -1.2889 TD +0.0589 Tw +[(and arguments. For example, )]TJ +/TT8 1 Tf +13.7315 0 TD +0.1411 Tw +(USE FOR FOR AND AND AND FOR FOR)Tj +/TT6 1 Tf +19.5908 0 TD +0.0589 Tw +[( will be parsed)]TJ +-33.3223 -1.2889 TD +0 Tw +(correctly.])Tj +0 -2 TD +(Every )Tj +/TT8 1 Tf +3.2937 0 TD +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.4378 Tw +[( command involves three pieces of information: the expressions to be)]TJ +-5.094 -1.2889 TD +0.13 Tw +(substituted, the arguments to be substituted for, and an event specification that defines)Tj +0 -1.2222 TD +0.0922 Tw +[(the input expression in which the substitution takes place. If the )]TJ +/TT8 1 Tf +29.8298 0 TD +0 Tw +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.0922 Tw +[( command has the)]TJ +-31.6301 -1.2889 TD +0.0533 Tw +(same number of expressions as arguments, the substitution procedure is straightforward.)Tj +0 -1.2222 TD +0.0311 Tw +(For example, )Tj +/TT8 1 Tf +6.0583 0 TD +0.0744 Tw +(USE X Y FOR U V)Tj +/TT6 1 Tf +9.3737 0 TD +0.0311 Tw +[( means substitute )]TJ +/TT8 1 Tf +8.0665 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( for )]TJ +/TT8 1 Tf +1.8361 0 TD +0 Tw +(U)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( and )]TJ +/TT8 1 Tf +2.2551 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( for )]TJ +/TT8 1 Tf +1.8362 0 TD +0 Tw +(V)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +(, and is equivalent)Tj +-31.8263 -1.2889 TD +0 Tw +(to )Tj +/TT8 1 Tf +1.1221 0 TD +(USE X FOR U AND Y FOR V)Tj +/TT6 1 Tf +13.8022 0 TD +(. )Tj +-14.9243 -2.0667 TD +0.3467 Tw +(However, the )Tj +/TT8 1 Tf +6.9604 0 TD +0 Tw +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.3467 Tw +[( command also permits distributive substitutions for substituting)]TJ +-8.7607 -1.2889 TD +0.0133 Tw +[(several expressions for the same argument. For example, )]TJ +/TT8 1 Tf +25.6805 0 TD +0.0311 Tw +(USE A B C FOR X)Tj +/TT6 1 Tf +9.157 0 TD +0.0133 Tw +[( means first)]TJ +-34.8376 -1.2889 TD +0 Tw +(substitute )Tj +/TT8 1 Tf +4.6321 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[( for )]TJ +/TT8 1 Tf +1.8273 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[( then substitute )]TJ +/TT8 1 Tf +7.1547 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[( for )]TJ +/TT8 1 Tf +1.8273 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[( \(in a new copy of the expression\), then substitute)]TJ +/TT8 1 Tf +-17.8418 -1.2889 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.6001 0 TD +( for )Tj +/TT8 1 Tf +1.7739 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(. The effect is the same as three separate )Tj +/TT8 1 Tf +18.0947 0 TD +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +( commands. )Tj +-22.8691 -2.0667 TD +(Similarly, )Tj +/TT8 1 Tf +4.5374 0 TD +0.0356 Tw +(USE A B C FOR D AND X Y Z FOR W)Tj +/TT6 1 Tf +18.9941 0 TD +0.0144 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.321 0 TD +0.0356 Tw +(USE A FOR D AND)Tj +-30.8525 -1.2889 TD +0.0589 Tw +(X FOR W)Tj +/TT6 1 Tf +4.3185 0 TD +0.0244 Tw +(, followed by )Tj +/TT8 1 Tf +6.1134 0 TD +0.0589 Tw +(USE B FOR D AND Y FOR W)Tj +/TT6 1 Tf +14.2145 0 TD +0.0244 Tw +(, followed by )Tj +/TT8 1 Tf +6.1134 0 TD +0.0589 Tw +(USE C FOR D AND)Tj +-30.7597 -1.2889 TD +0.0922 Tw +(Z FOR W)Tj +/TT6 1 Tf +4.3851 0 TD +0.0389 Tw +(. )Tj +/TT8 1 Tf +0.8278 0 TD +0.0922 Tw +(USE A B C FOR D AND X FOR Y)Tj +/TT6 1 Tf +17.0326 0 TD +0.0389 Tw +[( also corresponds to three substitutions,)]TJ +-22.2455 -1.2889 TD +0.0144 Tw +(the first with )Tj +/TT8 1 Tf +5.9828 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( for )]TJ +/TT8 1 Tf +1.8028 0 TD +0 Tw +(D)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( and )]TJ +/TT8 1 Tf +2.2218 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( for )]TJ +/TT8 1 Tf +1.8028 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +(, the second with )Tj +/TT8 1 Tf +7.8136 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( for )]TJ +/TT8 1 Tf +1.8028 0 TD +0 Tw +(D)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +(, and )Tj +/TT8 1 Tf +2.4718 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( for )]TJ +/TT8 1 Tf +1.8028 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +(, and the third with )Tj +/TT8 1 Tf +8.8906 0 TD +0 Tw +(C)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6584 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-7)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +(for )Tj +/TT8 1 Tf +1.5584 0 TD +(D)Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +(, and again )Tj +/TT8 1 Tf +5.2254 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +[( for )]TJ +/TT8 1 Tf +1.8428 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +[(. However, )]TJ +/TT8 1 Tf +5.4832 0 TD +0 Tw +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.2844 0 TD +0.0833 Tw +(A B C FOR D AND X Y FOR Z)Tj +/TT6 1 Tf +15.7524 0 TD +0.0344 Tw +[( is ambiguous)]TJ +-33.7473 -1.2889 TD +0 Tw +(and will cause an error.)Tj +0 -2 TD +0.1567 Tw +(Essentially, the )Tj +/TT8 1 Tf +7.2254 0 TD +0 Tw +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.1567 Tw +[( command operates by proceeding from left to right handling each)]TJ +/TT8 1 Tf +-9.0257 -1.2889 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.0878 Tw +[( separately. Whenever the number of expressions exceeds the available expressions,)]TJ +-1.8003 -1.2889 TD +0 Tw +(multiple )Tj +/TT8 1 Tf +4.0207 0 TD +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.0056 Tw +[( expressions are generated. Thus )]TJ +/TT8 1 Tf +14.9469 0 TD +0.0133 Tw +(USE A B C D FOR E F)Tj +/TT6 1 Tf +11.4952 0 TD +0.0056 Tw +[( means substitute)]TJ +/TT8 1 Tf +-32.2631 -1.2889 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.2333 Tw +[( for )]TJ +/TT8 1 Tf +2.2406 0 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.2333 Tw +[( at the same time substituting )]TJ +/TT8 1 Tf +14.6837 0 TD +0 Tw +(B)Tj +/TT6 1 Tf +0.6001 0 TD +0.2333 Tw +[( for )]TJ +/TT8 1 Tf +2.2406 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.2333 Tw +(, then in another copy of the indicated)Tj +-21.5653 -1.2889 TD +0.0922 Tw +(expression, substitute )Tj +/TT8 1 Tf +10.0267 0 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.6001 0 TD +0.0922 Tw +[( for )]TJ +/TT8 1 Tf +1.9584 0 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.0922 Tw +[( and )]TJ +/TT8 1 Tf +2.3773 0 TD +0 Tw +(D)Tj +/TT6 1 Tf +0.6001 0 TD +0.0922 Tw +[( for )]TJ +/TT8 1 Tf +1.9584 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.0922 Tw +[(. This is also equivalent to )]TJ +/TT8 1 Tf +12.5792 0 TD +0.2222 Tw +(USE A C FOR E)Tj +-31.3003 -1.2889 TD +0 Tw +(AND B D FOR F)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +-7.8013 -2.0667 TD +(The )Tj +/TT8 1 Tf +1.9672 0 TD +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[( command correctly handles the situation where one of the old expressions is the)]TJ +-3.7675 -1.2889 TD +0 Tw +(same as one of the new ones, )Tj +/TT8 1 Tf +13.0083 0 TD +(USE X Y FOR Y X)Tj +/TT6 1 Tf +9.0015 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +(USE X FOR Y AND Y FOR X)Tj +/TT6 1 Tf +13.8022 0 TD +(. )Tj +/TT17 1 Tf +-40.1696 -2.0667 TD +-0.0001 Tc +(? )Tj +/TT13 1 Tf +1.2001 0 TD +0 Tc +(NAME)Tj +/TT6 1 Tf +34.0499 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(If )Tj +/TT13 1 Tf +1.1133 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1933 Tw +[( is not provided describes all available Exec commands by printing the name,)]TJ +-3.5136 -1.2889 TD +0 Tw +(argument list, and description of each. With )Tj +/TT13 1 Tf +19.9219 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(, only that command is described.)Tj +/TT17 1 Tf +-24.9889 -2.0667 TD +(??)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(EventSpec)Tj +/TT6 1 Tf +33.4497 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +0.0522 Tw +(Prints the most recent event matching the given )Tj +/TT13 1 Tf +21.7664 0 TD +0 Tw +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.0522 Tw +[(. Without )]TJ +/TT13 1 Tf +5.1332 0 TD +0 Tw +(EventSpec)Tj +/TT6 1 Tf +5.4009 0 TD +0.0522 Tw +(, lists)Tj +-37.7014 -1.2889 TD +0.1611 Tw +(all entries on the history list from all execs, not necessarily in the order in which they)Tj +0 -1.2222 TD +0.0056 Tw +[(occured \(since the list is in allocation order\). If you havent completed typing a command)]TJ +T* +0 Tw +(it will be listed as "" .)Tj +/TT19 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1067 Tw +[(: Event nubmers are allocated at the time the prompt is printed, except in the Old)]TJ +-2.2222 -1.2222 TD +0.1111 Tw +[(Interlisp exec where they are assigned at the end of type-in. This means that if activity)]TJ +T* +0.1422 Tw +(occurs in another exec, the number printed next to the command is not necessarily the)Tj +T* +0 Tw +(number associated with the event.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(CONN)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +32.2495 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Changes default pathname to )Tj +/TT13 1 Tf +13.3003 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT17 1 Tf +-21.3678 -2.0667 TD +(DA)Tj +/TT6 1 Tf +35.25 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Returns current date and time.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(DIR )Tj +/TT13 1 Tf +2.4004 0 TD +(PATHNAME KEYWORDS)Tj +/TT6 1 Tf +32.8496 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +0.3333 Tw +(Shows a directory listing for )Tj +/TT13 1 Tf +14.4054 0 TD +0 Tw +(PATHNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.3333 Tw +[( or the connected directory. If provided,)]TJ +/TT13 1 Tf +-19.2062 -1.2889 TD +0 Tw +(KEYWORDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.3122 Tw +[( indicate information to be displayed for each file. Some keywords are:)]TJ +/TT13 1 Tf +-4.8008 -1.2889 TD +0 Tw +(AUTHOR)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT13 1 Tf +0.5 0 TD +(AU)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT13 1 Tf +0.5 0 TD +(CREATIONDATE)Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT13 1 Tf +0.75 0 TD +(DA)Tj +/TT6 1 Tf +1.2002 0 TD +(, etc.)Tj +/TT17 1 Tf +-17.6188 -2.0667 TD +(DO-EVENTS)Tj +/TT8 1 Tf +5.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(INPUTS ENV)Tj +/TT6 1 Tf +29.2499 0 TD +([Exec command])Tj +/TT13 1 Tf +-32.5833 -1.8444 TD +(DO-EVENTS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0911 Tw +[( is intended as a way of putting together several different events, which can)]TJ +-5.4009 -1.2889 TD +0.26 Tw +[(include commands. It executes the multiple )]TJ +/TT13 1 Tf +21.5583 0 TD +0 Tw +(INPUTS)Tj +/TT6 1 Tf +3.6006 0 TD +0.26 Tw +[( as a single event. The values)]TJ +-25.1589 -1.2889 TD +0.0878 Tw +(returned by the )Tj +/TT13 1 Tf +7.38 0 TD +0 Tw +(DO-EVENTS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0878 Tw +[( event are the concatenation of the values of the inputs. An)]TJ +-12.7809 -1.2889 TD +0.0567 Tw +[(input is not an EventSpec, but a call to a function or command. If )]TJ +/TT13 1 Tf +30.0126 0 TD +0 Tw +(ENV)Tj +/TT6 1 Tf +1.8003 0 TD +0.0567 Tw +[( is provided it is a)]TJ +-31.8129 -1.2889 TD +0.13 Tw +(lexical environment in which all evaluations \(functions and commands\) will take place.)Tj +0 -1.2222 TD +0.1367 Tw +(Event specification in the )Tj +/TT13 1 Tf +11.9217 0 TD +0 Tw +(INPUTS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1367 Tw +[( should be explicit, not relative, since referring to the)]TJ +-15.5223 -1.2889 TD +0 Tw +(last event will reinvoke the executing )Tj +/TT13 1 Tf +16.7358 0 TD +(DO-EVENTS)Tj +/TT6 1 Tf +5.4009 0 TD +( command.)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +/TT19 42 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +44 0 obj +<< +/Length 5639 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-8)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 569.54 Tm +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(EventSpec)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT6 1 Tf +27.4487 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +0.0689 Tw +[(Edits the specified event prior to re-executing it. If the number of characters in the fixed)]TJ +0 -1.2222 TD +0.3222 Tw +(line is less than the variable )Tj +/TT8 1 Tf +14.3606 0 TD +0 Tw +(TTYINFIXLIMIT)Tj +/TT6 1 Tf +7.8013 0 TD +0.3222 Tw +[( then it will be edited using )]TJ +/TT8 1 Tf +14.5842 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +-39.7465 -1.2889 TD +(otherwise the Lisp editor is called via )Tj +/TT8 1 Tf +16.7544 0 TD +(EDITE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT17 1 Tf +-22.4216 -2.0667 TD +-0.0001 Tc +(FORGET )Tj +/TT13 1 Tf +4.2001 0 TD +0 Tc +(EventSpec)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT6 1 Tf +25.649 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Erases )Tj +/TT8 1 Tf +3.0825 0 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +( information for the specified events.)Tj +/TT17 1 Tf +-8.1496 -2.0944 TD +(NAME)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(COMMAND-NAME ARGUMENTS EVENT-SPEC)Tj +/TT8 1 Tf +19.8032 0 TD +( )Tj +/TT2 1 Tf +13.0022 0 TD +([Exec command])Tj +/TT6 1 Tf +-33.1389 -1.8444 TD +0.0489 Tw +(Defines a new command, )Tj +/TT13 1 Tf +11.6506 0 TD +0 Tw +(COMMAND-NAME)Tj +/TT6 1 Tf +7.2012 0 TD +0.0489 Tw +(, and its )Tj +/TT13 1 Tf +4.1794 0 TD +0 Tw +(ARGUMENTS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0489 Tw +[(, containing the events in)]TJ +/TT13 1 Tf +-28.4321 -1.2889 TD +0 Tw +(EVENT-SPEC)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT17 1 Tf +-8.6676 -2.0667 TD +(NDIR)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(PATHNAME KEYWORDS)Tj +/TT8 1 Tf +10.2017 0 TD +( )Tj +/TT6 1 Tf +22.0482 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +0.0411 Tw +(Shows a directory listing for )Tj +/TT13 1 Tf +12.9443 0 TD +0 Tw +(PATHNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0411 Tw +[( or the connected directory in abbreviated format.)]TJ +-17.7451 -1.2889 TD +0.0078 Tw +(If provided, )Tj +/TT13 1 Tf +5.5341 0 TD +0 Tw +(KEYWORDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0078 Tw +[( indicate information to be displayed for each file. Some keywords)]TJ +-10.3349 -1.2889 TD +0 Tw +(are: )Tj +/TT8 1 Tf +2.374 0 TD +(AUTHOR)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(AU)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(CREATIONDATE)Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT8 1 Tf +0.75 0 TD +(DA)Tj +/TT6 1 Tf +1.2002 0 TD +(, etc.)Tj +/TT17 1 Tf +-19.9928 -2.0667 TD +(PL)Tj +/TT8 1 Tf +1.2 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(SYMBOL)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT6 1 Tf +29.8493 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Prints the property list of )Tj +/TT13 1 Tf +11.3696 0 TD +(SYMBOL)Tj +/TT6 1 Tf +3.6006 0 TD +( in an easy to read format.)Tj +/TT17 1 Tf +-17.6369 -2.0667 TD +(REMEMBER)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(&REST EVENT-SPEC)Tj +/TT8 1 Tf +9.6016 0 TD +( )Tj +/TT6 1 Tf +20.2476 0 TD +([Exec command])Tj +-32.5833 -1.8445 TD +0.4178 Tw +(Tells File Manager to remember type-in from specified event\(s\), )Tj +/TT13 1 Tf +32.1497 0 TD +0 Tw +(EVENT-SPEC)Tj +/TT6 1 Tf +6.001 0 TD +0.4178 Tw +(, as)Tj +-38.1506 -1.2889 TD +0 Tw +(expressions to save.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(SHH)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(LINE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT6 1 Tf +30.4495 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Executes )Tj +/TT13 1 Tf +4.1318 0 TD +(LINE)Tj +/TT6 1 Tf +2.4004 0 TD +( without history list processing.)Tj +/TT17 1 Tf +-9.1989 -2.0667 TD +(UNDO )Tj +/TT13 1 Tf +3.0005 0 TD +(EventSpec)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT6 1 Tf +26.8486 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Undoes the side effects of the specified event \(see below under Undoing\).)Tj +/TT17 1 Tf +-2.6667 -2 TD +(PP)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(NAME TYPES)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT6 1 Tf +27.4487 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Shows \(prettyprinted\) the definitions for )Tj +/TT13 1 Tf +18.2124 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +( specified by )Tj +/TT13 1 Tf +5.812 0 TD +(TYPES)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT17 1 Tf +-32.092 -2.0667 TD +(SEE)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT6 1 Tf +29.8491 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Prints the contents of )Tj +/TT13 1 Tf +9.5972 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( in the Exec window, hiding comments.)Tj +/TT17 1 Tf +-15.2643 -2.0667 TD +(SEE*)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT6 1 Tf +29.2494 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Prints the contents of )Tj +/TT13 1 Tf +9.5972 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( in the Exec window, showing comments.)Tj +/TT17 1 Tf +-15.2643 -2.0667 TD +(TIME)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(FORM &KEY REPEAT &ENVIRONMENT ENV)Tj +/TT8 1 Tf +19.8032 0 TD +( )Tj +/TT6 1 Tf +12.4467 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +0.0689 Tw +(Times the evaluation of )Tj +/TT13 1 Tf +10.9142 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0689 Tw +[( in the lexical environment )]TJ +/TT13 1 Tf +12.3767 0 TD +0 Tw +(ENV)Tj +/TT6 1 Tf +1.8003 0 TD +0.0689 Tw +(, repeating )Tj +/TT13 1 Tf +5.0973 0 TD +0 Tw +(REPEAT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0689 Tw +[( number)]TJ +-36.1894 -1.2889 TD +0 Tw +(of times. Information is displayed in the Exec window.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(TY)Tj +/TT8 1 Tf +1.2 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT6 1 Tf +30.4494 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Exactly like the )Tj +/TT13 1 Tf +6.9985 0 TD +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +( Exec command.)Tj +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +47 0 obj +<< +/Length 5334 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-9)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT17 1 Tf +9 0 0 9 102 569.54 Tm +(TYPE)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT6 1 Tf +29.2494 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +(Prints the contents of )Tj +/TT13 1 Tf +9.5972 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( in the Exec window, hiding comments.)Tj +/TT4 1 Tf +10 0 0 10 54 530 Tm +(Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 527.29 m +510.01 527.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 513.34 Tm +(A number of variables are provided for convenience in the Exec.)Tj +/TT17 1 Tf +2.6667 -2 TD +(IL:IT)Tj +/TT8 1 Tf +3 0 TD +( )Tj +/TT6 1 Tf +35.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0311 Tw +(Whenever an event is completed, the global value of the variable )Tj +/TT8 1 Tf +29.1938 0 TD +0 Tw +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +[( is reset to the events)]TJ +-30.394 -1.2889 TD +0 Tw +(value. For example,)Tj +ET +q +101.5 0 0 -55 255.26 458.59 cm +/Im10 Do +Q +BT +9 0 0 9 126 390.14 Tm +0.2511 Tw +(Following a )Tj +/TT8 1 Tf +5.9954 0 TD +0 Tw +(??)Tj +/TT6 1 Tf +1.2002 0 TD +0.2511 Tw +[( command, )]TJ +/TT8 1 Tf +5.7005 0 TD +0 Tw +(IL:IT)Tj +/TT6 1 Tf +3.0005 0 TD +0.2511 Tw +[( is set to the value of the last event printed. The)]TJ +-15.8965 -1.2889 TD +0.0133 Tw +(inspector has an option for setting the variable )Tj +/TT8 1 Tf +20.8943 0 TD +0 Tw +(IL:IT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0133 Tw +[( to the current selection or inspected)]TJ +-23.8948 -1.2889 TD +0.0478 Tw +[(object, as well. The variable )]TJ +/TT8 1 Tf +12.9356 0 TD +0 Tw +(IL:IT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0478 Tw +[( is global, and is shared among all Execs. )]TJ +/TT8 1 Tf +19.2487 0 TD +0 Tw +(IL:IT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0478 Tw +[( is a)]TJ +-38.1853 -1.2889 TD +0 Tw +(convenient mechanism for passing values from one process to another.)Tj +/TT19 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0767 Tw +(: )Tj +/TT8 1 Tf +0.9033 0 TD +0 Tw +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +0.0767 Tw +[( is in the Interlisp package and these examples are intended for an Exec whose)]TJ +/TT8 1 Tf +-4.3257 -1.2889 TD +0 Tw +(*PACKAGE*)Tj +/TT6 1 Tf +5.4009 0 TD +( is set to )Tj +/TT8 1 Tf +4.0659 0 TD +(XCL-USER)Tj +/TT6 1 Tf +4.8008 0 TD +(. Thus, )Tj +/TT8 1 Tf +3.4717 0 TD +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +( must be package qualified \(the)Tj +/TT19 1 Tf +13.8335 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(IL:)Tj +/TT6 1 Tf +1.8003 0 TD +(\).)Tj +-40.1566 -2.0667 TD +0.0156 Tw +[(The following variables are maintained independently by each Exec. \(When a new Exec is started, the)]TJ +0 -1.2222 TD +0.2444 Tw +(initial values are )Tj +/TT8 1 Tf +8.2914 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2444 Tw +[(, or, for a nested Exec, the value for the parent Exec. However, events)]TJ +-10.0917 -1.2889 TD +0 Tw +(executed under a nested Exec will not affect the parent values.\))Tj +/TT17 1 Tf +2.6667 -2 TD +(CL:-)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT6 1 Tf +35.8678 0 TD +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL:+)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT6 1 Tf +35.8678 0 TD +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL:++)Tj +/TT8 1 Tf +3 0 TD +( )Tj +/TT6 1 Tf +35.2678 0 TD +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL:+++)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +/TT6 1 Tf +34.6678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0056 Tw +(While a form is being evaluated by the Exec, the variable )Tj +/TT8 1 Tf +25.399 0 TD +0 Tw +(CL:-)Tj +/TT6 1 Tf +2.4004 0 TD +0.0056 Tw +[( is bound to the form, )]TJ +/TT8 1 Tf +9.8092 0 TD +0 Tw +(CL:+)Tj +/TT6 1 Tf +-37.6086 -1.2889 TD +0.0856 Tw +(is bound to the previous form, )Tj +/TT8 1 Tf +14.193 0 TD +0 Tw +(CL:++)Tj +/TT6 1 Tf +3.0005 0 TD +0.0856 Tw +[( the one before, etc. If the input is in apply-format)]TJ +-17.1935 -1.2889 TD +0 Tw +(rather than eval-format, the value of the respective variable is just the function name.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(CL:*)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT6 1 Tf +35.8678 0 TD +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL:**)Tj +/TT8 1 Tf +3 0 TD +( )Tj +/TT6 1 Tf +35.2678 0 TD +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL:***)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +/TT6 1 Tf +34.6678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0011 Tw +(While a form is being evaluated by the Exec, the variable )Tj +/TT8 1 Tf +25.3501 0 TD +0 Tw +(CL:*)Tj +/TT6 1 Tf +2.4004 0 TD +0.0011 Tw +( is bound to the \(first\) value)Tj +-27.7505 -1.2889 TD +0.0789 Tw +(returned by the last event, )Tj +/TT8 1 Tf +12.2333 0 TD +0 Tw +(CL:**)Tj +/TT6 1 Tf +3.0005 0 TD +0.0789 Tw +[( to the event before that, etc. The variable )]TJ +/TT8 1 Tf +19.167 0 TD +0 Tw +(CL:*)Tj +/TT6 1 Tf +2.4004 0 TD +0.0789 Tw +[( differs)]TJ +-36.8012 -1.2889 TD +0 Tw +(from )Tj +/TT8 1 Tf +2.5367 0 TD +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +0.13 Tw +[( in that )]TJ +/TT8 1 Tf +3.7474 0 TD +0 Tw +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +0.13 Tw +[( is global while each separate Exec maintains its own copy of )]TJ +/TT8 1 Tf +28.6557 0 TD +0 Tw +(CL:*)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +/TT8 1 Tf +-39.7407 -1.2889 TD +(CL:**)Tj +/TT6 1 Tf +3.0005 0 TD +0.0744 Tw +[( and )]TJ +/TT8 1 Tf +2.3418 0 TD +0 Tw +(CL:***)Tj +/TT6 1 Tf +3.6006 0 TD +0.0744 Tw +[(. In addition, the history commands change )]TJ +/TT8 1 Tf +20.2948 0 TD +0 Tw +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +0.0744 Tw +(, but only inputs that)Tj +-30.4378 -1.2889 TD +0 Tw +(are retained on the history list can change )Tj +/TT8 1 Tf +18.6733 0 TD +(CL:*)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +48 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +/TT19 42 0 R +>> +/XObject << +/Im10 49 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +51 0 obj +<< +/Length 5541 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-10)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 569.54 Tm +(CL:/)Tj +/TT8 1 Tf +2.4004 0 TD +-0.0005 Tc +( )Tj +/TT6 1 Tf +35.8674 0 TD +0 Tc +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL://)Tj +/TT8 1 Tf +3.0005 0 TD +-0.0006 Tc +( )Tj +/TT6 1 Tf +35.2673 0 TD +0 Tc +([Variable])Tj +/TT17 1 Tf +-38.2678 -1.0667 TD +(CL:///)Tj +/TT8 1 Tf +3.6006 0 TD +-0.0007 Tc +( )Tj +/TT6 1 Tf +34.6672 0 TD +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +0.1244 Tw +(While a form is being evaluated by an Exec, the variable )Tj +/TT8 1 Tf +26.4016 0 TD +0 Tw +(CL:/)Tj +/TT6 1 Tf +2.4004 0 TD +0.1244 Tw +[( is bound to a list of the)]TJ +-28.802 -1.2889 TD +0 Tw +(results of the last event in that Exec, )Tj +/TT8 1 Tf +16.0874 0 TD +(CL://)Tj +/TT6 1 Tf +3.0005 0 TD +( to the values of the event before that, etc. )Tj +/TT4 1 Tf +10 0 0 10 102 499.2 Tm +(Fonts in the Exec)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 496.49 m +558.01 496.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 482.54 Tm +0.1111 Tw +(The Exec can use different fonts for displaying the prompt, users input, intermediate printout, and)Tj +0 -1.2222 TD +0 Tw +(the values returned by evaluation. The following variables control the Execs font use:)Tj +/TT17 1 Tf +2.6667 -2 TD +(PROMPTFONT)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT6 1 Tf +32.2668 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +(Font used for printing the event prompt.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(INPUTFONT)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT6 1 Tf +32.8669 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +(Font used for echoing your type-in.)Tj +/TT17 1 Tf +-2.6667 -2 TD +(PRINTOUTFONT)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT6 1 Tf +31.0666 0 TD +([Variable])Tj +-35.6011 -1.8445 TD +0.0422 Tw +(Font used for any intermediate printing caused by execution of a command or evaluation)Tj +0 -1.2222 TD +0 Tw +(of a form. Initially the same as )Tj +/TT8 1 Tf +13.8477 0 TD +(DEFAULTFONT)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT17 1 Tf +-23.1154 -2.0667 TD +(VALUEFONT)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT6 1 Tf +32.8669 0 TD +([Variable])Tj +-35.6011 -1.8445 TD +0.19 Tw +[(Font used to print the values returned by evaluation of a form. Initially the same as)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(DEFAULTFONT)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 287.6 Tm +(Modifying an Exec)Tj +ET +102.01 284.89 m +558.01 284.89 l +S +BT +/TT8 1 Tf +9 0 0 9 150 270.94 Tm +(\()Tj +/TT17 1 Tf +0.6 0 TD +(CHANGESLICE )Tj +/TT13 1 Tf +7.2012 0 TD +(N HISTORY)Tj +/TT8 1 Tf +5.4009 0 TD +( \) )Tj +/TT6 1 Tf +24.8679 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.05 Tw +(Changes the maximum number of events saved on the history list )Tj +/TT13 1 Tf +29.8527 0 TD +0 Tw +(HISTORY)Tj +/TT6 1 Tf +4.2007 0 TD +0.05 Tw +[( to )]TJ +/TT13 1 Tf +1.4721 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +[(. If )]TJ +/TT8 1 Tf +1.8199 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +/TT13 1 Tf +-39.7458 -1.2889 TD +(HISTORY)Tj +/TT6 1 Tf +4.2007 0 TD +( defaults to the top level history )Tj +/TT8 1 Tf +14.2744 0 TD +(LISPXHISTORY)Tj +/TT6 1 Tf +7.2012 0 TD +(.)Tj +-25.6763 -2.0667 TD +0.0478 Tw +(The effect of )Tj +/TT15 1 Tf +5.8401 0 TD +0 Tw +(increasing)Tj +/TT6 1 Tf +4.1865 0 TD +0.0478 Tw +[( the time-slice is gradual: the history list is simply allowed to grow)]TJ +-10.0266 -1.2222 TD +0.0289 Tw +(to the corresponding length before any events are forgotten. )Tj +/TT15 1 Tf +27.3079 0 TD +0 Tw +(Decreasing)Tj +/TT6 1 Tf +4.5195 0 TD +0.0289 Tw +[( the time-slice will)]TJ +-31.8275 -1.2222 TD +0.0256 Tw +(immediately remove a sufficient number of the older events to bring the history list down)Tj +T* +0.3233 Tw +[(to the proper size. However, )]TJ +/TT8 1 Tf +15.0401 0 TD +0 Tw +(CHANGESLICE)Tj +/TT6 1 Tf +6.6011 0 TD +0.3233 Tw +[( is undoable, so that these events are)]TJ +-21.6412 -1.2889 TD +0.0733 Tw +[(\(temporarily\) recoverable. Therefore, if you want to recover the storage associated with)]TJ +0 -1.2222 TD +0.0978 Tw +(these events without waiting )Tj +/TT13 1 Tf +13.4248 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0978 Tw +[( more events until the )]TJ +/TT8 1 Tf +10.3771 0 TD +0 Tw +(CHANGESLICE)Tj +/TT6 1 Tf +6.6011 0 TD +0.0978 Tw +[( event drops off the)]TJ +-31.003 -1.2889 TD +0 Tw +(history list, you must perform a )Tj +/TT8 1 Tf +14.2749 0 TD +(FORGET)Tj +/TT6 1 Tf +3.6006 0 TD +( command.)Tj +/TT4 1 Tf +10 0 0 10 102 134 Tm +(Defining New Commands)Tj +ET +102.01 131.29 m +558.01 131.29 l +S +BT +/TT6 1 Tf +9 0 0 9 126 117.34 Tm +0.0001 Tw +(You can define new Exec commands using the )Tj +/TT8 1 Tf +20.7779 0 TD +0 Tw +(XCL:DEFCOMMAND)Tj +/TT6 1 Tf +8.4014 0 TD +( macro.)Tj +/TT8 1 Tf +-26.5126 -2.0667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +-0.0001 Tc +(XCL:DEFCOMMAND )Tj +/TT13 1 Tf +9 0 TD +0 Tc +(NAME ARGUMENT-LIST &REST BODY)Tj +/TT8 1 Tf +17.4028 0 TD +(\) )Tj +/TT6 1 Tf +12.166 0 TD +([Macro])Tj +/TT8 1 Tf +-36.5022 -1.8444 TD +(XCL:DEFCOMMAND)Tj +/TT6 1 Tf +8.4014 0 TD +0.3889 Tw +[( is like )]TJ +/TT8 1 Tf +4.2487 0 TD +0 Tw +(XCL:DEFMACRO)Tj +/TT6 1 Tf +7.2012 0 TD +0.3889 Tw +[(, but defines new Exec commands. The)]TJ +/TT13 1 Tf +-19.8512 -1.2889 TD +0 Tw +(ARGUMENT-LIST)Tj +/TT6 1 Tf +7.8013 0 TD +0.0444 Tw +[( can have keywords, and use all of the features of macro argument lists.)]TJ +-7.8013 -1.2889 TD +0 Tw +(When )Tj +/TT13 1 Tf +3.0297 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1367 Tw +[( is subsequently typed to the Exec, the rest of the line is processed like the)]TJ +-5.4301 -1.2889 TD +0.09 Tw +(arguments to a macro, and the )Tj +/TT13 1 Tf +14.2578 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +[( is executed)]TJ +/TT8 1 Tf +5.3319 0 TD +0.2156 Tw +[(. XCL:DEFCOMMAND)]TJ +/TT6 1 Tf +10.6328 0 TD +0.09 Tw +[( is a definer; the)]TJ +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT15 34 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +54 0 obj +<< +/Length 4669 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-11)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.03 Tw +(File Manager will remember typed-in definitions and allow them to be saved, edited with)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(EDITDEF)Tj +/TT6 1 Tf +4.2007 0 TD +(, etc.)Tj +-4.2007 -2.0667 TD +0.1367 Tw +(There are three kinds of commands that can be defined, )Tj +/TT8 1 Tf +26.1928 0 TD +0 Tw +(:EVAL)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6367 0 TD +(:QUIET)Tj +/TT6 1 Tf +3.6006 0 TD +0.1367 Tw +(, and )Tj +/TT8 1 Tf +2.7162 0 TD +0 Tw +(:INPUT)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-39.7474 -1.2889 TD +0.07 Tw +(Commands can also be marked as only for the debugger, in which case they are labelled)Tj +0 -1.2222 TD +0 Tw +(as )Tj +/TT8 1 Tf +1.1972 0 TD +(:DEBUGGER)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[(. The command type is noted by supplying a list for the )]TJ +/TT13 1 Tf +25.2545 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0233 Tw +[( argument to)]TJ +/TT8 1 Tf +-34.2529 -1.2889 TD +0 Tw +(XCL:DEFCOMMAND)Tj +/TT6 1 Tf +8.4014 0 TD +0.0111 Tw +(, where the first element of the list is the command name, and the other)Tj +-8.4014 -1.2889 TD +0 Tw +(elements are keyword\(s\) for the command type and, optionally )Tj +/TT8 1 Tf +28.1787 0 TD +(:DEBUGGER)Tj +/TT6 1 Tf +5.4009 0 TD +(. )Tj +-33.5796 -2.0667 TD +0.0922 Tw +(The documentation string in user defined Exec commands is automatically added to the)Tj +0 -1.2222 TD +0.15 Tw +(documentation descriptions by the )Tj +/TT8 1 Tf +16.2289 0 TD +0 Tw +(CL:DOCUMENTATION)Tj +/TT6 1 Tf +9.6016 0 TD +0.15 Tw +[( function under the )]TJ +/TT8 1 Tf +9.3642 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +-35.1946 -1.2889 TD +(type and can be shown using the )Tj +/TT8 1 Tf +14.7744 0 TD +(?)Tj +/TT6 1 Tf +0.6001 0 TD +( Exec command. )Tj +/TT8 1 Tf +-13.0412 -2.0667 TD +(:EVAL)Tj +/TT6 1 Tf +3.6667 0 TD +0.1533 Tw +[(This is the default. The body of the command just gets executed, and its)]TJ +0 -1.2889 TD +0 Tw +(value is the value of the event. For example \(in an XCL Exec\),)Tj +ET +q +204 0 0 -89 204.01 414.19 cm +/Im11 Do +Q +BT +9 0 0 9 180 311.74 Tm +0.1778 Tw +(would define the )Tj +/TT8 1 Tf +8.3302 0 TD +0 Tw +(LS)Tj +/TT6 1 Tf +1.2002 0 TD +0.1778 Tw +[( command to print out all file names that match the)]TJ +-9.5304 -1.2889 TD +0 Tw +(input )Tj +/TT8 1 Tf +2.7011 0 TD +(NAMESTRING)Tj +/TT6 1 Tf +6.001 0 TD +0.0478 Tw +[(. The )]TJ +/TT8 1 Tf +2.8172 0 TD +0 Tw +(\(VALUES\))Tj +/TT6 1 Tf +4.8008 0 TD +0.0478 Tw +[( means that no value will be printed by)]TJ +-16.32 -1.2889 TD +0 Tw +(the event, only the intermediate output from the )Tj +/TT8 1 Tf +21.6221 0 TD +(FORMAT)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-29.4893 -2.0667 TD +(:QUIET)Tj +/TT6 1 Tf +4.2667 0 TD +0.0278 Tw +(These commands are evaluated, but neither your input nor the results of the)Tj +0 -1.2889 TD +0.2578 Tw +[(command are stored on the history list. For example, the )]TJ +/TT8 1 Tf +28.2892 0 TD +0 Tw +(??)Tj +/TT6 1 Tf +1.2002 0 TD +0.2578 Tw +[( and )]TJ +/TT8 1 Tf +2.7084 0 TD +0 Tw +(SHH)Tj +/TT6 1 Tf +-32.1978 -1.2889 TD +(commands are quiet.)Tj +/TT8 1 Tf +-4.2667 -2 TD +(:INPUT)Tj +/TT6 1 Tf +4.2667 0 TD +0.0322 Tw +(These commands work more like macros, in that the result of evaluating the)Tj +0 -1.2889 TD +0.09 Tw +[(command is treated as a new line of input. The )]TJ +/TT8 1 Tf +22.1873 0 TD +0 Tw +(FIX)Tj +/TT6 1 Tf +1.8003 0 TD +0.09 Tw +[( command is an input)]TJ +-23.9876 -1.2889 TD +0.02 Tw +[(command. The result is treated as a line; a single expression in )]TJ +/TT8 1 Tf +28.281 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(-format)Tj +-30.6814 -1.2889 TD +(should be returned as a list of the expression to )Tj +/TT8 1 Tf +21.0898 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 171 Tm +(Undoing)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 168.29 m +510.01 168.29 l +S +BT +/TT19 1 Tf +9 0 0 9 78 154.34 Tm +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0011 Tw +(: This discussion only applies to undoing under the Exec or Debugger, and within the )Tj +/TT8 1 Tf +38.3015 0 TD +0 Tw +(UNDOABLY)Tj +/TT6 1 Tf +-40.5236 -1.2889 TD +(macro; text and structure editors handle undoing differently.)Tj +0 -2 TD +(The)Tj +/TT19 1 Tf +1.6738 0 TD +( )Tj +/TT8 1 Tf +0.2722 0 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0222 Tw +[( facility allows recording of destructive changes such that they can be played back to restore)]TJ +-4.3464 -1.2889 TD +0.0622 Tw +[(a previous state. There are two kinds of )]TJ +/TT8 1 Tf +18.4897 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0622 Tw +[(ing: one is done by the Exec, the other is available for)]TJ +-20.8901 -1.2889 TD +0.0389 Tw +[(use in your code. Both methods share information about what kind of operations can be undone and)]TJ +0 -1.2222 TD +0 Tw +(where the changes are recorded.)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT19 42 0 R +>> +/XObject << +/Im11 56 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +60 0 obj +<< +/Length 6179 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-12)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT4 1 Tf +0 -4.38 TD +(Undoing in the Exec)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT17 1 Tf +9 0 0 9 150 548.54 Tm +(UNDO)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(EventSpec)Tj +/TT6 1 Tf +32.2499 0 TD +([Exec command])Tj +-32.5833 -1.8444 TD +0.2211 Tw +(The Execs )Tj +/TT8 1 Tf +5.3675 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.2211 Tw +[( command is implemented by watching the evaluation of forms and)]TJ +-7.7679 -1.2889 TD +0.27 Tw +(requiring undoable operations in that evaluation to save enough information on the)Tj +0 -1.2222 TD +0.1589 Tw +[(history list to reverse their side effects. The Exec simply executes operations, and any)]TJ +T* +0.0244 Tw +(undoable changes that occur are automatically saved on the history list by the responsible)Tj +T* +0.2456 Tw +[(functions. The )]TJ +/TT8 1 Tf +7.5414 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.2456 Tw +[( command works on itself the same way: it recovers the saved)]TJ +-9.9417 -1.2889 TD +0.0144 Tw +[(information and performs the corresponding inverses. Thus, )]TJ +/TT8 1 Tf +27.3382 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0144 Tw +[( is effective on itself, so)]TJ +-29.7386 -1.2889 TD +0 Tw +(that you can )Tj +/TT8 1 Tf +5.7153 0 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +( an )Tj +/TT8 1 Tf +1.582 0 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +( that, etc.)Tj +-16.9414 -2.0667 TD +0.1522 Tw +(Only when you attempt to undo an operation does the Exec check to see whether any)Tj +0 -1.2222 TD +0.0233 Tw +[(information has been saved. If none has been saved, and you have specifically named the)]TJ +T* +0.02 Tw +(event you want undone, the Exec types )Tj +/TT8 1 Tf +17.7445 0 TD +0.0489 Tw +(nothing saved)Tj +/TT6 1 Tf +7.8502 0 TD +0.02 Tw +[(. \(When you just type )]TJ +/TT8 1 Tf +10.1005 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +(, the)Tj +-38.0955 -1.2889 TD +0 Tw +(Exec only tries to undo the last operation.\))Tj +/TT8 1 Tf +0 -2 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.2144 Tw +[( watches evaluation using )]TJ +/TT8 1 Tf +12.5858 0 TD +0 Tw +(CL:EVALHOOK)Tj +/TT6 1 Tf +6.6011 0 TD +0.2144 Tw +[( \(thus, calling )]TJ +/TT8 1 Tf +6.8665 0 TD +0 Tw +(CL:EVALHOOK)Tj +/TT6 1 Tf +6.6011 0 TD +0.2144 Tw +[( cannot be)]TJ +-35.0548 -1.2889 TD +0.0122 Tw +[(undone\). Each form given to )]TJ +/TT8 1 Tf +13.1978 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0122 Tw +[( is examined against the list )]TJ +/TT8 1 Tf +12.5274 0 TD +0 Tw +(LISPXFNS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0122 Tw +[( to see if it has a)]TJ +-32.9265 -1.2889 TD +0.0078 Tw +[(corresponding undoable version. If an undoable version of a call is found, it is called with)]TJ +0 -1.2222 TD +0.0533 Tw +[(the same arguments instead of the original. Therefore, before evaluating all subforms of)]TJ +T* +0.2633 Tw +(your input, the Exec substitutes the corresponding undoable call for any destructive)Tj +T* +0.0267 Tw +[(operation. For example, if you type )]TJ +/TT8 1 Tf +16.2404 0 TD +0.0644 Tw +(\(DEFUN FOO ...\))Tj +/TT6 1 Tf +9.1304 0 TD +0.0267 Tw +[(, undoable versions of the forms)]TJ +-25.3707 -1.2889 TD +0.33 Tw +(that set the definition into the symbol function cell are evaluated. )Tj +/TT8 1 Tf +33.2178 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.33 Tw +(s function)Tj +-35.0181 -1.2889 TD +0 Tw +(definition itself is not made undoable.)Tj +/TT4 1 Tf +10 0 0 10 102 292.2 Tm +(Undoing in Programs)Tj +ET +102.01 289.49 m +558.01 289.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 275.54 Tm +0.1389 Tw +[(There are two ways to make a program undoable. The simplest method is to wrap the programs)]TJ +0 -1.2222 TD +0.2567 Tw +(form in the )Tj +/TT8 1 Tf +5.937 0 TD +0 Tw +(UNDOABLY)Tj +/TT6 1 Tf +4.8008 0 TD +0.2567 Tw +[( macro. The other is to call undoable versions of destructive operations)]TJ +-10.7378 -1.2889 TD +0 Tw +(directly.)Tj +/TT8 1 Tf +2.6667 -2 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +-0.0001 Tc +(XCL:UNDOABLY )Tj +/TT13 1 Tf +7.8 0 TD +0 Tc +(&REST FORMS)Tj +/TT8 1 Tf +6.6011 0 TD +(\) )Tj +/TT6 1 Tf +24.1677 0 TD +([Macro])Tj +-36.5022 -1.8444 TD +0.0722 Tw +(Executes the forms in )Tj +/TT13 1 Tf +10.0115 0 TD +0 Tw +(FORMS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0722 Tw +[( using undoable versions of all destructive operations. This)]TJ +-13.012 -1.2889 TD +0.1678 Tw +(is done by walking \(see )Tj +/TT8 1 Tf +12.4561 0 TD +0 Tw +(WALKFORM)Tj +/TT6 1 Tf +4.8008 0 TD +0.1678 Tw +(\) all of the )Tj +/TT13 1 Tf +5.3523 0 TD +0 Tw +(FORMS)Tj +/TT6 1 Tf +3.0005 0 TD +0.1678 Tw +[( and rewriting them to use the)]TJ +-25.6096 -1.2889 TD +0 Tw +(undoable versions of destructive operations \()Tj +/TT8 1 Tf +19.9653 0 TD +(LISPXFNS)Tj +/TT6 1 Tf +4.8008 0 TD +( makes the association\).)Tj +/TT8 1 Tf +-27.4328 -2.0667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(STOP-UNDOABLY)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(&REST FORMS)Tj +/TT8 1 Tf +6.6011 0 TD +(\))Tj +/TT6 1 Tf +23.5677 0 TD +([Macro])Tj +-36.5022 -1.8444 TD +0.2989 Tw +(Normally executes as )Tj +/TT8 1 Tf +10.6135 0 TD +0 Tw +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +0.2989 Tw +(; however, within an )Tj +/TT8 1 Tf +10.5637 0 TD +0 Tw +(UNDOABLY)Tj +/TT6 1 Tf +4.8008 0 TD +0.2989 Tw +[( form, explicitly causes)]TJ +/TT13 1 Tf +-28.9785 -1.2889 TD +0 Tw +(FORMS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0589 Tw +[( not to be done undoably. Turns off rewriting of the )]TJ +/TT13 1 Tf +24.0192 0 TD +0 Tw +(FORMS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0589 Tw +[( to be undoable inside)]TJ +-30.0201 -1.2889 TD +0 Tw +(an )Tj +/TT8 1 Tf +1.332 0 TD +(UNDOABLY)Tj +/TT6 1 Tf +4.8008 0 TD +( macro.)Tj +/TT4 1 Tf +10 0 0 10 102 113.8 Tm +(Undoable Versions of Common Functions)Tj +ET +102.01 111.09 m +558.01 111.09 l +S +BT +/TT6 1 Tf +9 0 0 9 126 97.14 Tm +0.0389 Tw +(When efficiencyis a serious concern, you may need more control over the saving of undo information)Tj +0 -1.2222 TD +0 Tw +(than that provided by the )Tj +/TT8 1 Tf +11.5698 0 TD +(UNDOABLY)Tj +/TT6 1 Tf +4.8008 0 TD +( macro. )Tj +-16.3706 -2.0667 TD +0.0222 Tw +(To make a function undoable, you can simply substitute the corresponding undoable function in your)Tj +0 -1.2222 TD +0.0156 Tw +[(program. When the undoable function is called, it will save the undo information in the current event)]TJ +T* +0 Tw +(on the history list.)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +63 0 obj +<< +/Length 4590 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-13)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0422 Tw +(Various operations, most notably )Tj +/TT8 1 Tf +15.123 0 TD +0 Tw +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +0.0422 Tw +[(, have undoable versions. The following undoable macros are)]TJ +-17.5234 -1.2889 TD +0 Tw +(initially available:)Tj +/TT8 1 Tf +5.3333 -1.6 TD +[(UNDOABLY-POP)-10798.8(UNDOABLY-SET-SYMBOL)]TJ +0 -1.2222 TD +[(UNDOABLY-PUSH)-10198.7(UNDOABLY-MAKUNBOUND)]TJ +T* +[(UNDOABLY-PUSHNEW)-8398.4(UNDOABLY-FMAKUNBOUND)]TJ +T* +[(UNDOABLY-REMF)-10198.7(UNDOABLY-SETQ)]TJ +T* +[(UNDOABLY-ROTATEF)-8398.4(XCL:UNDOABLY-SETF)]TJ +T* +[(UNDOABLY-SHIFTF)-8998.5(UNDOABLY-PSETF)]TJ +T* +[(UNDOABLY-DECF)-10198.7(UNDOABLY-SETF-SYMBOL-FUNCTION)]TJ +T* +[(UNDOABLY-INCF)-10198.7(UNDOABLY-SETF-MACRO-FUNCTION)]TJ +/TT19 1 Tf +-5.3333 -1.8444 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.03 Tw +[(: Many destructive Common Lisp functions do not have undoable versions, e.g.,)]TJ +/TT19 1 Tf +35.9855 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.28 0 TD +(CL:NREVERSE)Tj +/TT6 1 Tf +6.6011 0 TD +(,)Tj +/TT8 1 Tf +-45.0887 -1.2889 TD +(CL:SORT)Tj +/TT6 1 Tf +4.2007 0 TD +(, etc. You can see the current list of undoable functions on the association list )Tj +/TT8 1 Tf +34.3115 0 TD +(LISPXFNS)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 415.4 Tm +(Modifying the UNDO Facility)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 412.69 m +510.01 412.69 l +S +BT +/TT6 1 Tf +9 0 0 9 78 398.74 Tm +0.0333 Tw +(You may want to extend the )Tj +/TT8 1 Tf +12.9495 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0333 Tw +[( facility after creating a form whose side effects might be undoable,)]TJ +-15.3499 -1.2889 TD +0 Tw +(for instance a file renaming function.)Tj +0 -2 TD +0.0433 Tw +[(You need to write an undoable version of the function. You can do this by explicitly saving previous)]TJ +0 -1.2222 TD +0.39 Tw +[(state information, or by renaming calls in the function to their undoable equivalent. Undo)]TJ +T* +0 Tw +(information should be saved on the history list using )Tj +/TT8 1 Tf +23.6157 0 TD +(IL:UNDOSAVE)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +-30.2168 -2.0667 TD +0.0267 Tw +[(You must then hook the undoable version of the function into the undo facility. You do this by either)]TJ +0 -1.2222 TD +0.1378 Tw +(using the )Tj +/TT8 1 Tf +4.6188 0 TD +0 Tw +(IL:LISPXFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.1378 Tw +[( association list, or in the case of a )]TJ +/TT8 1 Tf +16.3723 0 TD +0 Tw +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +[( modifier, on the )]TJ +/TT8 1 Tf +8.1449 0 TD +0 Tw +(IL:UNDOABLE-)Tj +-38.1375 -1.2889 TD +(SETF-INVERSE)Tj +/TT6 1 Tf +7.2012 0 TD +( property of the )Tj +/TT8 1 Tf +7.1655 0 TD +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +( function.)Tj +/TT17 1 Tf +-14.1004 -2.0667 TD +(LISPXFNS)Tj +/TT6 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0256 Tw +(Contains an association list that maps from destructive operations to their undoable form.)Tj +0 -1.2222 TD +0 Tw +(Initially this list contains:)Tj +/TT8 1 Tf +2.6667 -1.3778 TD +(\(\(CL:POP . UNDOABLY-POP\))Tj +0.6667 -1 TD +(\(CL:PSETF . NDOABLY-PSETF\))Tj +T* +(\(CL:PUSH . UNDOABLY-PUSH\))Tj +T* +(\(CL:PUSHNEW . UNDOABLY-PUSHNEW\))Tj +T* +(\(\(CL:REMF\) . UNDOABLY-REMF\))Tj +T* +(\(CL:ROTATEF . UNDOABLY-ROTATEF\))Tj +T* +(\(CL:SHIFTF . UNDOABLY-SHIFTF\))Tj +T* +(\(CL:DECF . UNDOABLY-DECF\))Tj +T* +(\(CL:INCF . UNDOABLY-INCF\))Tj +T* +(\(CL:SET . UNDOABLY-SET-SYMBOL\))Tj +T* +(\(CL:MAKUNBOUND . UNDOABLY-MAKUNBOUND\))Tj +T* +(\(CL:FMAKUNBOUND . UNDOABLY-FMAKUNBOUND\))Tj +/TT6 1 Tf +0 -1.0667 TD +(. . . plus the original Interlisp undo associations\))Tj +/TT8 1 Tf +-6 -1.7778 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(XCL:UNDOABLY-SETF)Tj +/TT8 1 Tf +10.1999 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(PLACE VALUE)Tj +/TT8 1 Tf +6.6011 0 TD +( ...\))Tj +/TT6 1 Tf +21.1677 0 TD +([Macro])Tj +-36.5022 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.4581 0 TD +(CL:SETF)Tj +/TT6 1 Tf +4.2007 0 TD +0.2711 Tw +[( but saves information so it may be undone. )]TJ +/TT8 1 Tf +23.0921 0 TD +0 Tw +(UNDOABLY-SETF)Tj +/TT6 1 Tf +7.8013 0 TD +0.2711 Tw +[( uses)]TJ +-37.5522 -1.2889 TD +0.3544 Tw +(undoable versions of the )Tj +/TT8 1 Tf +12.5545 0 TD +0 Tw +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +0.3544 Tw +[( function located on the )]TJ +/TT8 1 Tf +12.4412 0 TD +0 Tw +(UNDOABLE-SETF-INVERSE)Tj +/TT6 1 Tf +-27.3961 -1.2889 TD +(property of the function being )Tj +/TT8 1 Tf +13.584 0 TD +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +(ed. Initially these )Tj +/TT8 1 Tf +8.0952 0 TD +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +( names have such a property:)Tj +/TT8 1 Tf +-23.8133 -1.6667 TD +(CL:SYMBOL-FUNCTION - UNDOABLY-SETF-SYMBOL-FUNCTION)Tj +0 -1 TD +(CL:MACRO-FUNCTION - UNDOABLY-SETF-MACRO-FUNCTION)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +/TT19 42 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +66 0 obj +<< +/Length 7789 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-14)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +-0.0001 Tc +(UNDOABLY-SETQ )Tj +/TT13 1 Tf +8.4 0 TD +0 Tc +(&REST FORMS)Tj +/TT8 1 Tf +6.6011 0 TD +(\) )Tj +/TT6 1 Tf +22.4688 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Typed-in )Tj +/TT8 1 Tf +4.5115 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1956 Tw +(s \(and )Tj +/TT8 1 Tf +3.3408 0 TD +0 Tw +(SETF)Tj +/TT6 1 Tf +2.4004 0 TD +0.1956 Tw +(s on symbols\) are made undoable by substituting a call to)Tj +/TT8 1 Tf +-12.6531 -1.2889 TD +0.2989 Tw +[(UNDOABLY-SETQ. UNDOABLY-SETQ)]TJ +/TT6 1 Tf +18.0006 0 TD +0.1244 Tw +[( operates like )]TJ +/TT8 1 Tf +6.4905 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1244 Tw +[( on lexical variables or those)]TJ +-26.8915 -1.2889 TD +0.0378 Tw +(with dynamic bindings; it only saves information on the history list for changes to global,)Tj +0 -1.2222 TD +0 Tw +(top-level values.)Tj +/TT8 1 Tf +-2.6667 -2 TD +(\()Tj +/TT17 1 Tf +0.6 0 TD +(UNDOSAVE )Tj +/TT13 1 Tf +5.4009 0 TD +(UNDOFORM HISTENTRY)Tj +/TT8 1 Tf +10.8018 0 TD +(\) )Tj +/TT6 1 Tf +21.2674 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.3667 Tw +(Adds the undo information )Tj +/TT13 1 Tf +13.8939 0 TD +0 Tw +(UNDOFORM)Tj +/TT6 1 Tf +4.8008 0 TD +0.3667 Tw +[( to the )]TJ +/TT8 1 Tf +4.1093 0 TD +0 Tw +(SIDE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3667 Tw +[( property of the history event)]TJ +/TT13 1 Tf +-25.2044 -1.2889 TD +0 Tw +(HISTENTRY)Tj +/TT6 1 Tf +5.4009 0 TD +0.2244 Tw +[(. If there is no )]TJ +/TT8 1 Tf +7.8706 0 TD +0 Tw +(SIDE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2244 Tw +[( property, one is created. If the value of the )]TJ +/TT8 1 Tf +21.9352 0 TD +0 Tw +(SIDE)Tj +/TT6 1 Tf +-37.6071 -1.2889 TD +0.1022 Tw +(property is )Tj +/TT8 1 Tf +5.3187 0 TD +0 Tw +(NOSAVE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1022 Tw +(, the information is not saved)Tj +/TT13 1 Tf +13.4208 0 TD +0.2467 Tw +[(. HISTENTRY)]TJ +/TT6 1 Tf +7.6945 0 TD +0.1022 Tw +[( specifies an event. If)]TJ +/TT13 1 Tf +-30.0346 -1.2889 TD +0 Tw +(HISTENTRY)Tj +/TT6 1 Tf +5.4009 0 TD +(=)Tj +/TT8 1 Tf +0.606 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0489 Tw +(, the value of )Tj +/TT8 1 Tf +6.1497 0 TD +0 Tw +(LISPXHIST)Tj +/TT6 1 Tf +5.4009 0 TD +0.0489 Tw +[( is used. If both )]TJ +/TT13 1 Tf +7.5521 0 TD +0 Tw +(HISTENTRY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0489 Tw +[( and )]TJ +/TT8 1 Tf +2.2907 0 TD +0 Tw +(LISPXHIST)Tj +/TT6 1 Tf +-34.6013 -1.2889 TD +(are )Tj +/TT8 1 Tf +1.624 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(UNDOSAVE)Tj +/TT6 1 Tf +4.8008 0 TD +( is a no-op. )Tj +-8.7251 -2.0667 TD +0.0144 Tw +(The form of )Tj +/TT8 1 Tf +5.5028 0 TD +0 Tw +(UNDOFORM)Tj +/TT6 1 Tf +4.8008 0 TD +0.0144 Tw +[( is )]TJ +/TT8 1 Tf +1.2437 0 TD +0.0344 Tw +(\(FN . ARGS\))Tj +/TT6 1 Tf +6.67 0 TD +0.0144 Tw +[(. Undoing is done by performing )]TJ +/TT8 1 Tf +15.1499 0 TD +0.0344 Tw +(\(APPLY \(CAR)Tj +-33.3672 -1.2889 TD +0 Tw +(UNDOFORM\) \(CDR UNDOFORM\)\))Tj +/TT6 1 Tf +15.0024 0 TD +(. )Tj +/TT17 1 Tf +-17.6691 -2.0667 TD +(\\#UNDOSAVES)Tj +/TT8 1 Tf +6.6 0 TD +( )Tj +/TT6 1 Tf +31.6678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0744 Tw +(The maximum number of )Tj +/TT8 1 Tf +11.9042 0 TD +0 Tw +(UNDOFORM)Tj +/TT6 1 Tf +4.8008 0 TD +0.0744 Tw +[(s to be saved for a single event. When the count of)]TJ +/TT8 1 Tf +-16.705 -1.2889 TD +0 Tw +(UNDOFORM)Tj +/TT6 1 Tf +4.8008 0 TD +0.1633 Tw +(s reaches this number, )Tj +/TT8 1 Tf +10.7481 0 TD +0 Tw +(UNDOSAVE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1633 Tw +[( prints the message )]TJ +/TT8 1 Tf +9.4043 0 TD +0.3922 Tw +(CONTINUE SAVING?)Tj +/TT6 1 Tf +9.9938 0 TD +0 Tw +(,)Tj +-39.7477 -1.2889 TD +0.0133 Tw +[(asking if you want to continue saving. If you answer )]TJ +/TT8 1 Tf +23.8591 0 TD +0 Tw +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0133 Tw +[( or )]TJ +/TT8 1 Tf +1.4676 0 TD +0 Tw +(default)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5133 0 TD +(UNDOSAVE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0133 Tw +[( discards)]TJ +-36.0416 -1.2889 TD +0.1189 Tw +(the previously saved information for this event, and makes )Tj +/TT8 1 Tf +27.4245 0 TD +0 Tw +(NOSAVE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1189 Tw +[( be the value of the)]TJ +-31.0251 -1.2889 TD +0 Tw +(property )Tj +/TT8 1 Tf +4.3461 0 TD +(SIDE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1967 Tw +[(, which disables any further saving for this event. If you answer )]TJ +/TT8 1 Tf +31.1988 0 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +/TT8 1 Tf +-39.7455 -1.2889 TD +(UNDOSAVE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2278 Tw +[( changes the count to )]TJ +/TT8 1 Tf +10.716 0 TD +0 Tw +(-1)Tj +/TT6 1 Tf +1.2002 0 TD +0.2278 Tw +(, which is then never incremented, and continues)Tj +-16.717 -1.2889 TD +0.1433 Tw +[(saving. The purpose of this feature is to avoid tying up large quantities of storage for)]TJ +0 -1.2222 TD +0 Tw +(operations that will never need to be undone.)Tj +0 -2 TD +(If )Tj +/TT8 1 Tf +1.2399 0 TD +(\\#UNDOSAVES)Tj +/TT6 1 Tf +6.6011 0 TD +0.32 Tw +[( is negative, then when the count reaches )]TJ +/TT8 1 Tf +20.9404 0 TD +0.7678 Tw +(\(ABS \\#UNDOSAVES\))Tj +/TT6 1 Tf +10.9694 0 TD +0 Tw +(,)Tj +/TT8 1 Tf +-39.7508 -1.2889 TD +(UNDOSAVE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2767 Tw +[( simply stops saving without printing any messages or other interactions.)]TJ +/TT8 1 Tf +-4.8008 -1.2889 TD +0 Tw +(\\#UNDOSAVES)Tj +/TT6 1 Tf +6.6011 0 TD +0.0244 Tw +[( = )]TJ +/TT8 1 Tf +1.1548 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.361 0 TD +0 Tw +(\\#UNDOSAVES)Tj +/TT6 1 Tf +6.6011 0 TD +0.0244 Tw +[( = infinity. )]TJ +/TT8 1 Tf +5.2062 0 TD +0 Tw +(\\#UNDOSAVES)Tj +/TT6 1 Tf +6.6011 0 TD +0.0244 Tw +[( is initially)]TJ +/TT8 1 Tf +-35.3255 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-1.8003 -2.0667 TD +0.0733 Tw +[(The configuration described here is very satisfactory. You pay a very small price for the)]TJ +0 -1.2222 TD +0.0989 Tw +(ability to undo what you type in, since the interpreted evaluation is simply watched for)Tj +T* +0.18 Tw +(destructive operations, or if you wish to protect yourself from malfunctioning in your)Tj +T* +0.01 Tw +(own programs, you can explicitly call, or rewrite your program to explicitly call, undoable)Tj +T* +0 Tw +(functions.)Tj +/TT4 1 Tf +10 0 0 10 102 154 Tm +(Undoing Out of Order)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 151.29 m +558.01 151.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 137.34 Tm +(UNDOABLY-SETF)Tj +/TT6 1 Tf +7.8013 0 TD +0.0744 Tw +[( operates undoably by saving \(on the history list\) the cell that is to be changed and)]TJ +-7.8013 -1.2889 TD +0 Tw +(its original contents. Undoing an )Tj +/TT8 1 Tf +14.98 0 TD +(UNDOABLY-SETF)Tj +/TT6 1 Tf +7.8013 0 TD +( restores the saved contents.)Tj +-22.7813 -2.0667 TD +0.14 Tw +(This implementation can produce unexpected results when multiple modifications are made to the)Tj +0 -1.2222 TD +0.0844 Tw +[(same piece of storage and then undone out of order. For example, if you type )]TJ +/TT8 1 Tf +35.918 0 TD +0.2033 Tw +(\(SETF \(CAR FOO\))Tj +-35.918 -1.2889 TD +0 Tw +(1\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0889 Tw +(, followed by )Tj +/TT8 1 Tf +6.3067 0 TD +0.2122 Tw +(\(SETF \(CAR FOO\) 2\))Tj +/TT6 1 Tf +11.4384 0 TD +0.0889 Tw +(, then undo both events by undoing the most recent event)Tj +-18.9453 -1.2889 TD +0.1923 Tw +(first, then undoing the older event, )Tj +/TT8 1 Tf +16.8034 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.1922 Tw +[( will be restored to its state before either event operated.)]TJ +-18.6036 -1.2889 TD +0.0633 Tw +(However if you undo the first event, then the second event, )Tj +/TT8 1 Tf +27.2079 0 TD +0.1511 Tw +(\(CAR FOO\))Tj +/TT6 1 Tf +5.552 0 TD +0.0633 Tw +[( will be )]TJ +/TT8 1 Tf +3.6793 0 TD +0 Tw +(1)Tj +/TT6 1 Tf +0.6001 0 TD +0.0633 Tw +(, since this is what)Tj +-37.0392 -1.2889 TD +0.0733 Tw +(was in )Tj +/TT8 1 Tf +3.2775 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0733 Tw +[( of )]TJ +/TT8 1 Tf +1.5256 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0733 Tw +[( before )]TJ +/TT8 1 Tf +3.4318 0 TD +0.1756 Tw +(\(UNDOABLY-SETF \(CAR FOO\) 2\))Tj +/TT6 1 Tf +16.7293 0 TD +0.0733 Tw +[( was executed. Similarly, if you type)]TJ +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +69 0 obj +<< +/Length 6961 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-15)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.2444 Tw +(\(NCONC FOO \(1\)\))Tj +/TT6 1 Tf +10.0905 0 TD +0.1022 Tw +(, followed by )Tj +/TT8 1 Tf +6.3467 0 TD +0.2444 Tw +(\(NCONC FOO \(2\)\))Tj +/TT6 1 Tf +10.0905 0 TD +0.1022 Tw +(, undoing just )Tj +/TT8 1 Tf +6.6646 0 TD +0.2444 Tw +(\(NCONC FOO \(1\)\))Tj +/TT6 1 Tf +10.0904 0 TD +0.1022 Tw +[( will)]TJ +-43.2826 -1.2889 TD +0.2367 Tw +(remove both )Tj +/TT8 1 Tf +6.3273 0 TD +0 Tw +(1)Tj +/TT6 1 Tf +0.6001 0 TD +0.2367 Tw +[( and )]TJ +/TT8 1 Tf +2.6662 0 TD +0 Tw +(2)Tj +/TT6 1 Tf +0.6001 0 TD +0.2367 Tw +[( from )]TJ +/TT8 1 Tf +3.1301 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.2367 Tw +[(. The problem in both cases is that the two operations are not)]TJ +-15.1241 -1.2889 TD +0 Tw +(independent.)Tj +0 -2 TD +0.0933 Tw +(In general, operations are always independent if they affect different lists or different sublists of the)Tj +0 -1.2222 TD +0.2155 Tw +[(same list. Undoing in reverse order of execution, or undoing independent operations, is always)]TJ +T* +0.1756 Tw +[(guaranteed to do the right thing. However, undoing dependent operations out of order may not)]TJ +T* +0 Tw +(always have the predicted effect.)Tj +/TT4 1 Tf +10 0 0 10 54 473 Tm +(Format and Use of the History List)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 470.29 m +510.01 470.29 l +S +BT +/TT17 1 Tf +9 0 0 9 102 456.34 Tm +(LISPXHISTORY)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT6 1 Tf +31.0666 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0001 Tc +-0.0001 Tw +(The Exec currently uses one primary history list, )Tj +/TT8 1 Tf +21.6587 0 TD +0 Tc +0 Tw +(LISPXHISTORY)Tj +/TT6 1 Tf +7.2012 0 TD +( for the storing events.)Tj +-28.8599 -2.0667 TD +0.0511 Tw +(The history list is in the form )Tj +/TT8 1 Tf +13.3656 0 TD +0 Tw +(\()Tj +/TT13 1 Tf +0.6001 0 TD +0.1244 Tw +(EVENTS EVENT# SIZE MOD)Tj +/TT8 1 Tf +13.5755 0 TD +0 Tw +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0511 Tw +(, where )Tj +/TT13 1 Tf +3.6213 0 TD +0 Tw +(EVENTS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0511 Tw +[( is a list of)]TJ +-35.3631 -1.2889 TD +0.0978 Tw +(events with the most recent event first, )Tj +/TT13 1 Tf +18.0438 0 TD +0 Tw +(EVENT#)Tj +/TT6 1 Tf +3.6006 0 TD +0.0978 Tw +[( is the event number for the most recent)]TJ +-21.6444 -1.2889 TD +0.01 Tw +(event on )Tj +/TT13 1 Tf +4.0791 0 TD +0 Tw +(EVENTS)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT13 1 Tf +0.51 0 TD +(SIZE)Tj +/TT6 1 Tf +2.4004 0 TD +0.01 Tw +[( is the the maximum length )]TJ +/TT13 1 Tf +12.6843 0 TD +0 Tw +(EVENTS)Tj +/TT6 1 Tf +3.6006 0 TD +0.01 Tw +[( is allowed to grow)]TJ +/TT13 1 Tf +8.5097 0 TD +0.0233 Tw +[(. MOD)]TJ +/TT6 1 Tf +3.6473 0 TD +0.01 Tw +[( is)]TJ +-39.0319 -1.2889 TD +0.5467 Tw +(is the maximum event number to use, after which event numbers roll over)Tj +/TT13 1 Tf +39.3989 0 TD +0 Tw +(.)Tj +-39.3989 -1.2889 TD +(LISPXHISTORY)Tj +/TT6 1 Tf +7.2012 0 TD +( is initialized to )Tj +/TT8 1 Tf +7.04 0 TD +(\(NIL 0 100 1000\))Tj +/TT6 1 Tf +9.6016 0 TD +(.)Tj +-23.8428 -2.0667 TD +0.0156 Tw +[(The history list has a maximum length, called its time-slice. As new events occur, existing)]TJ +0 -1.2222 TD +0.0689 Tw +[(events are aged, and the oldest events are forgotten. The time-slice can be changed with)]TJ +T* +0.1178 Tw +(the function )Tj +/TT8 1 Tf +5.83 0 TD +0 Tw +(CHANGESLICE)Tj +/TT6 1 Tf +6.6011 0 TD +0.1178 Tw +[(. Larger time-slices enable longer memory spans, but tie up)]TJ +-12.4311 -1.2889 TD +0.2689 Tw +[(correspondingly greater amounts of storage. Since you seldom need really ancient)]TJ +0 -1.2222 TD +0.0278 Tw +[(history, a relatively small time-slice such as 30 events is usually adequate, although some)]TJ +T* +0 Tw +(users prefer to set the time-slice as large as 200 events.)Tj +0 -2 TD +0.0822 Tw +(Each individual event on )Tj +/TT13 1 Tf +11.6604 0 TD +0 Tw +(EVENTS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0822 Tw +[( is a list of the form )]TJ +/TT8 1 Tf +9.2953 0 TD +0 Tw +(\()Tj +/TT13 1 Tf +0.6001 0 TD +0.1978 Tw +(INPUT ID VALUE . PROPS)Tj +/TT8 1 Tf +13.9933 0 TD +0 Tw +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-39.7498 -1.2889 TD +0.1511 Tw +(For Exec events, )Tj +/TT13 1 Tf +7.8552 0 TD +0 Tw +(ID)Tj +/TT6 1 Tf +1.2002 0 TD +0.1511 Tw +[( is a list )]TJ +/TT8 1 Tf +4.1513 0 TD +0 Tw +(\()Tj +/TT13 1 Tf +0.6001 0 TD +0.3622 Tw +(EVENT-NUMBER EXEC-ID)Tj +/TT8 1 Tf +12.3642 0 TD +0 Tw +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1511 Tw +[(. The )]TJ +/TT13 1 Tf +3.1272 0 TD +0 Tw +(EVENT-NUMBER)Tj +/TT6 1 Tf +7.2012 0 TD +0.1511 Tw +[( is the)]TJ +-37.0994 -1.2889 TD +0.0122 Tw +(number of the event, while the )Tj +/TT13 1 Tf +13.88 0 TD +0 Tw +(EXEC-ID)Tj +/TT6 1 Tf +4.2007 0 TD +0.0122 Tw +[( is a string that uniquely identifies the Exec. \(The)]TJ +/TT13 1 Tf +-18.0807 -1.2889 TD +0 Tw +(EXEC-ID)Tj +/TT6 1 Tf +4.2007 0 TD +0.0001 Tc +0.0032 Tw +( is used to identify which events belong to the same Exec.\) )Tj +/TT13 1 Tf +27.4925 0 TD +0 Tc +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0002 Tc +0.0031 Tw +( is the \(first\))Tj +-34.6936 -1.2889 TD +0 Tc +0.0089 Tw +(value of the event)Tj +/TT13 1 Tf +7.9119 0 TD +0.0222 Tw +[(. PROPS)]TJ +/TT6 1 Tf +4.8452 0 TD +0.0089 Tw +[( is a property list used to associate other information with the)]TJ +-12.7571 -1.2889 TD +0 Tw +(event \(described below\).)Tj +/TT13 1 Tf +0 -2 TD +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +0.07 Tw +[( is the input sequence for the event. Normally, this is just the input that you type)]TJ +-3.0005 -1.2889 TD +0.1156 Tw +[(in. For an )]TJ +/TT8 1 Tf +5.1644 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.1156 Tw +(-format input this is a list consisting of two expressions; for an )Tj +/TT8 1 Tf +29.0932 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(-)Tj +-39.6585 -1.2889 TD +0.1589 Tw +(format input, this is a list of just one expression; for an input entered as list of atoms,)Tj +/TT13 1 Tf +0 -1.2222 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +( is simply that list. For example,)Tj +-3.0005 -2.0667 TD +(User Input)Tj +/TT13 1 Tf +17.3333 0 TD +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +( is:)Tj +/TT8 1 Tf +-20.3338 -1.6667 TD +[(LIST\(1 2\))-11932.5(\(LIST \(1 2\)\))]TJ +0 -1 TD +[(\(LIST 1 1\))-11332.4(\(\(LIST 1 1\)\))]TJ +0 -1.0667 TD +(DIR "{DSK}")Tj +/TT15 1 Tf +13.2021 0 TD +(cr)Tj +/TT8 1 Tf +4.1312 0 TD +(\(DIR "{DSK}"\))Tj +/TT6 1 Tf +-17.3333 -1.8444 TD +0.2 Tw +(If you type in an Exec command that executes other events \()Tj +/TT8 1 Tf +28.741 0 TD +0 Tw +(REDO)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.7 0 TD +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.2 Tw +(, etc.\), several)Tj +-33.6417 -1.2889 TD +0.07 Tw +[(events might result. When there is more than one input, they are wrapped together into)]TJ +0 -1.2222 TD +0 Tw +(one invocation of the )Tj +/TT8 1 Tf +9.5459 0 TD +(DO-EVENTS)Tj +/TT6 1 Tf +5.4009 0 TD +( command.)Tj +-14.9468 -2.0667 TD +0.2144 Tw +(The same convention is used for representing multiple inputs when a )Tj +/TT8 1 Tf +33.2754 0 TD +0 Tw +(USE)Tj +/TT6 1 Tf +1.8003 0 TD +0.2144 Tw +[( command)]TJ +-35.0757 -1.2889 TD +0.0256 Tw +[(involves sequential substitutions. For example, if you type )]TJ +/TT8 1 Tf +26.5147 0 TD +0 Tw +(FBOUNDP\(FOO\))Tj +/TT6 1 Tf +7.2012 0 TD +0.0256 Tw +[( and then )]TJ +/TT8 1 Tf +4.4888 0 TD +0 Tw +(USE)Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT15 34 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +72 0 obj +<< +/Length 5703 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-16)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.1444 Tw +(FIE FUM FOR FOO)Tj +/TT6 1 Tf +9.4348 0 TD +0.06 Tw +(, the input sequence that will be constructed is )Tj +/TT8 1 Tf +21.2485 0 TD +0 Tw +(DO-EVENTS)Tj +/TT6 1 Tf +5.4009 0 TD +( )Tj +/TT8 1 Tf +0.31 0 TD +(\(EVENT)Tj +-36.3942 -1.2889 TD +0.1533 Tw +(FBOUNDP \(FIE\)\) \(EVENT FBOUNDP \(FUM\)\))Tj +/TT6 1 Tf +22.2168 0 TD +0.0633 Tw +(, which is the result of substituting )Tj +/TT8 1 Tf +15.9809 0 TD +0 Tw +(FIE)Tj +/TT6 1 Tf +-38.1978 -1.2889 TD +(for )Tj +/TT8 1 Tf +1.5317 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +[( in )]TJ +/TT8 1 Tf +1.3886 0 TD +0.0178 Tw +(\(FBOUNDP \(FOO\)\))Tj +/TT6 1 Tf +9.0192 0 TD +0.0078 Tw +[( concatenated with the result of substituting )]TJ +/TT8 1 Tf +19.7463 0 TD +0 Tw +(FUM)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +[( for )]TJ +/TT8 1 Tf +1.7895 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +[( in)]TJ +/TT8 1 Tf +-38.8763 -1.2889 TD +0 Tw +(\(FBOUNDP \(FOO\)\))Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT8 1 Tf +-9.0015 -2.0667 TD +(PROPS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0722 Tw +[( is a property list of the form )]TJ +/TT8 1 Tf +13.4469 0 TD +0 Tw +(\(PROPERTY)Tj +6 0 0 6 370.63 514.14 Tm +(1)Tj +9 0 0 9 374.23 516.14 Tm +0.1744 Tw +[( VALUE)]TJ +6 0 0 6 408.2 514.14 Tm +0 Tw +(1)Tj +9 0 0 9 411.8 516.14 Tm +0.1744 Tw +[( PROPERTY)]TJ +6 0 0 6 461.97 514.14 Tm +0 Tw +(2)Tj +9 0 0 9 465.57 516.14 Tm +0.1744 Tw +[( VALUE)]TJ +6 0 0 6 499.54 514.14 Tm +0 Tw +(2)Tj +9 0 0 9 503.14 516.14 Tm +0.1744 Tw +[( ...\))]TJ +/TT6 1 Tf +3.1749 0 TD +0 Tw +(,)Tj +-39.746 -1.3944 TD +0.04 Tw +[(that can be used to associate arbitrary information with a particular event. Currently, the)]TJ +0 -1.2222 TD +0 Tw +(following properties are used by the Exec:)Tj +/TT17 1 Tf +-2.6667 -1.9333 TD +(SIDE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT6 1 Tf +0.2663 -1.8444 TD +(A list of the side effects of the event. See )Tj +/TT8 1 Tf +18.1787 0 TD +(UNDOSAVE)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT17 1 Tf +-25.6462 -2 TD +(*LISPXPRINT*)Tj +/TT6 1 Tf +2.6667 -1.8444 TD +(Used to record calls to )Tj +/TT8 1 Tf +10.105 0 TD +(EXEC-FORMAT)Tj +/TT6 1 Tf +6.6011 0 TD +(, and printed by the )Tj +/TT8 1 Tf +8.9746 0 TD +(??)Tj +/TT6 1 Tf +1.2002 0 TD +( command.)Tj +/TT4 1 Tf +10 0 0 10 102 401.05 Tm +(Making or Changing an Exec)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 398.34 m +558.01 398.34 l +S +BT +/TT8 1 Tf +9 0 0 9 150 384.39 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(XCL:ADD-EXEC)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT13 1 Tf +0.6001 0 TD +(&KEY PROFILE REGION TTY ID)Tj +/TT8 1 Tf +15.6025 0 TD +(\))Tj +/TT6 1 Tf +14.0674 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0033 Tw +(Creates a new process and window with an Exec running in it. )Tj +/TT13 1 Tf +28.2008 0 TD +0 Tw +(PROFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0002 Tc +0.0031 Tw +( is the type of the)Tj +-32.4015 -1.2889 TD +0 Tc +0.0089 Tw +(Exec to be created \(see below under )Tj +/TT8 1 Tf +16.0881 0 TD +0 Tw +(XCL:SET-EXEC-TYPE)Tj +/TT6 1 Tf +10.2017 0 TD +0.0089 Tw +(\). )Tj +/TT13 1 Tf +1.1008 0 TD +0 Tw +(REGION)Tj +/TT6 1 Tf +3.6006 0 TD +0.0089 Tw +[( optionally gives the)]TJ +-30.9911 -1.2889 TD +0.0167 Tw +[(shape and location of the window to be used. If not provided you will be prompted. )]TJ +/TT13 1 Tf +38.1984 0 TD +0 Tw +(TTY)Tj +/TT6 1 Tf +-38.1984 -1.2889 TD +0.0633 Tw +(is a flag, which, if true, causes the tty to be given to the new Exec process. )Tj +/TT13 1 Tf +34.0585 0 TD +0 Tw +(ID)Tj +/TT6 1 Tf +1.2002 0 TD +0.0633 Tw +[( is a string)]TJ +-35.2587 -1.2889 TD +0.05 Tw +(identifier to use for events generated in this exec. )Tj +/TT13 1 Tf +22.6563 0 TD +0 Tw +(ID)Tj +/TT6 1 Tf +1.2002 0 TD +0.05 Tw +[( defaults to the number given to the)]TJ +-23.8564 -1.2889 TD +0 Tw +(Exec process created.)Tj +/TT8 1 Tf +-2.6667 -1.9333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +-0.0001 Tc +(XCL:EXEC )Tj +/TT13 1 Tf +5.4 0 TD +0 Tc +(&KEY WINDOW PROMPT COMMAND-TABLES ENVIRONMENT PROFILE TOP-)Tj +-5.3334 -1.0667 TD +(LEVEL-P TITLE FUNCTION ID)Tj +/TT8 1 Tf +15.0024 0 TD +(\) )Tj +/TT6 1 Tf +22.4009 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(This is the main entry to the Exec. The arguments are:)Tj +/TT13 1 Tf +0 -2 TD +(WINDOW)Tj +/TT6 1 Tf +3.6006 0 TD +0.1967 Tw +[( defaults to the current TTY display stream, or can be provided a window in)]TJ +-3.6006 -1.2889 TD +0 Tw +(which the Exec will run.)Tj +/TT13 1 Tf +0 -2 TD +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +( is the prompt to print.)Tj +/TT13 1 Tf +-3.6006 -2.0667 TD +(COMMAND-TABLES)Tj +/TT6 1 Tf +8.4014 0 TD +0.3622 Tw +[( is a list of hash-tables for looking up commands \(e.g., )]TJ +/TT8 1 Tf +27.9908 0 TD +0 Tw +(*EXEC-)Tj +-36.3922 -1.2889 TD +(COMMAND-TABLE*)Tj +/TT6 1 Tf +8.4014 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(*DEBUGGER-COMMAND-TABLE*)Tj +/TT6 1 Tf +14.4023 0 TD +(\).)Tj +/TT13 1 Tf +-24.2446 -2.0667 TD +(ENVIRONMENT)Tj +/TT6 1 Tf +6.6011 0 TD +( is a lexical environment used to evaluate things in.)Tj +/TT13 1 Tf +-6.6011 -2.0667 TD +(READTABLE)Tj +/TT6 1 Tf +5.4009 0 TD +( is the default readtable to use \(defaults to the Common Lisp readtable\).)Tj +/TT13 1 Tf +-5.4009 -2.0667 TD +(PROFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2333 Tw +[( is a way to set the Execs type \(see above, Multiple Execs and the Execs)]TJ +-4.2007 -1.2889 TD +0 Tw +(Type\).)Tj +/TT13 1 Tf +0 -2 TD +(TOP-LEVEL-P)Tj +/TT6 1 Tf +6.6011 0 TD +0.0767 Tw +[( is a boolean, which should be true if this Exec is at the top level \(its )]TJ +/TT8 1 Tf +31.5953 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +-38.1964 -1.2889 TD +(for debugger windows, etc\).)Tj +/TT13 1 Tf +0 -2 TD +(TITLE)Tj +/TT6 1 Tf +3.0005 0 TD +( is an identifying title for the window title of the Exec.)Tj +/TT13 1 Tf +-3.0005 -2.0667 TD +(FUNCTION)Tj +/TT6 1 Tf +4.8008 0 TD +( is a function used to actually evaluate events, default is )Tj +/TT8 1 Tf +24.8779 0 TD +(EVAL-INPUT)Tj +/TT6 1 Tf +6.001 0 TD +(. )Tj +ET +endstream +endobj +73 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +75 0 obj +<< +/Length 4772 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-17)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT13 1 Tf +9 0 0 9 126 569.54 Tm +(ID)Tj +/TT6 1 Tf +1.2002 0 TD +0.2056 Tw +[( is a string identifier to use for events generated in this Exec. )]TJ +/TT13 1 Tf +30.4105 0 TD +0 Tw +(ID)Tj +/TT6 1 Tf +1.2002 0 TD +0.2056 Tw +[( defaults to the)]TJ +-32.8109 -1.2889 TD +0 Tw +(number given to the Exec process.)Tj +/TT17 1 Tf +-2.6667 -2.1489 TD +(XCL:*PER-EXEC-VARIABLES*)Tj +/TT11 1 Tf +10 0 0 10 231.6 538.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 538.6 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1056 Tw +(A list of pairs of the form )Tj +/TT8 1 Tf +12.1114 0 TD +0 Tw +(\()Tj +/TT13 1 Tf +0.6001 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT13 1 Tf +0.8534 0 TD +(INIT)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1056 Tw +[(. Each time an Exec is entered, the variables in)]TJ +/TT8 1 Tf +-18.3658 -1.2889 TD +0 Tw +(*PER-EXEC-VARIABLES*)Tj +/TT6 1 Tf +12.002 0 TD +0.1289 Tw +[( are rebound to the value returned by evaluating )]TJ +/TT13 1 Tf +22.9232 0 TD +0 Tw +(INIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1289 Tw +[(. The)]TJ +-37.3255 -1.2889 TD +0 Tw +(initial value of )Tj +/TT8 1 Tf +6.6392 0 TD +(*PER-EXEC-VARIABLES*)Tj +/TT6 1 Tf +12.002 0 TD +( is:)Tj +/TT8 1 Tf +-15.9745 -1.6667 TD +(\(\(*PACKAGE* *PACKAGE*\))Tj +0 -1 TD +( \(* *\))Tj +T* +( \(** **\))Tj +T* +( \(*** ***\))Tj +T* +( \(+ +\))Tj +T* +( \(++ ++\))Tj +T* +( \(+++ +++\))Tj +T* +( \(- -\))Tj +T* +( \(/ /\))Tj +T* +( \(// //\))Tj +T* +( \(/// ///\))Tj +T* +( \(HELPFLAG T\))Tj +T* +( \(*EVALHOOK* NIL\))Tj +T* +( \(*APPLYHOOK* nil\))Tj +T* +( \(*ERROR-OUPUT* *TERMINAL-IO*\))Tj +T* +( \(*READTABLE* *READTABLE*\))Tj +T* +( \(*package* *package*\))Tj +T* +( \(*eval-function* *eval-function*\))Tj +T* +( \(*exec-prompt* *exec-prompt*\))Tj +T* +( \(*debugger-prompt* *debugger-prompt*\)\))Tj +/TT6 1 Tf +-2.6667 -1.8444 TD +0.0511 Tw +(Most of these cause the values to be \(re\)bound to their current value in any inferior Exec,)Tj +0 -1.2222 TD +0 Tw +(or to )Tj +/TT8 1 Tf +2.313 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, their value at the top level.)Tj +/TT17 1 Tf +-6.7799 -2.2156 TD +(XCL:*EVAL-FUNCTION*)Tj +/TT11 1 Tf +10 0 0 10 204.6 265.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 265.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.06 Tw +[(Bound to the function used by the Exec to evaluate input. Typically in an Interlisp Exec)]TJ +0 -1.2222 TD +0 Tw +(this is )Tj +/TT8 1 Tf +2.8379 0 TD +(IL:EVAL)Tj +/TT6 1 Tf +4.2007 0 TD +(, and in a Common Lisp Exec, )Tj +/TT8 1 Tf +13.4409 0 TD +(CL:EVAL)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT17 1 Tf +-27.3468 -2.2156 TD +(XCL:*EXEC-PROMPT*)Tj +/TT11 1 Tf +10 0 0 10 193.8 217.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 217.72 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0756 Tw +[(Bound to the string printed by the Exec as a prompt for input. Typically in an Interlisp)]TJ +0 -1.2222 TD +0 Tw +(Exec this is )Tj +/TT9 1 Tf +5.8877 0 TD +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +( , and in a Common Lisp Exec, > .)Tj +/TT17 1 Tf +-9.5412 -2.1489 TD +(XCL:*DEBUGGER-PROMPT*)Tj +/TT11 1 Tf +10 0 0 10 215.4 170.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 170.78 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0644 Tw +[(Bound to the string printed by the debugger Exec as a prompt for input. Typically in an)]TJ +0 -1.2222 TD +0 Tw +(Interlisp Exec this is )Tj +/TT9 1 Tf +9.8638 0 TD +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +( : , and in a Common Lisp Exec, : .)Tj +/TT8 1 Tf +-13.5173 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(XCL:EXEC-EVAL)Tj +/TT4 1 Tf +10 0 0 10 177.6 123.84 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 180.3783 123.84 Tm +(FORM &OPTIONAL ENVIRONMENT)Tj +/TT8 1 Tf +15.6025 0 TD +(\))Tj +/TT11 1 Tf +10 0 0 10 326.202 123.84 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 123.84 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Evaluates )Tj +/TT13 1 Tf +4.8255 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2767 Tw +[( \(using )]TJ +/TT8 1 Tf +3.8424 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.2767 Tw +(\) in the lexical environment )Tj +/TT13 1 Tf +13.7486 0 TD +0 Tw +(ENVIRONMENT)Tj +/TT6 1 Tf +6.6011 0 TD +0.2767 Tw +[( the same as)]TJ +-33.8183 -1.2889 TD +0.1133 Tw +(though it were typed in to )Tj +/TT8 1 Tf +12.4979 0 TD +0 Tw +(EXEC)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +(, i.e., the event is recorded, and the evaluation is made)Tj +-14.8983 -1.2889 TD +0.3389 Tw +(undoable by substituting the )Tj +/TT8 1 Tf +14.3228 0 TD +0 Tw +(UNDOABLE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3389 Tw +(-functions for the corresponding destructive)Tj +-19.1236 -1.2889 TD +0 Tw +(functions)Tj +/TT8 1 Tf +4.1309 0 TD +0.1033 Tw +[(. XCL:EXEC-EVAL)]TJ +/TT6 1 Tf +9.8082 0 TD +0.0433 Tw +[( returns the value\(s\) of the form, but does not print it, and)]TJ +-13.9391 -1.2889 TD +0 Tw +(does not reset the variables )Tj +/TT8 1 Tf +12.252 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(**)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(***)Tj +/TT6 1 Tf +1.8003 0 TD +(, etc.)Tj +ET +endstream +endobj +76 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +78 0 obj +<< +/Length 5730 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-18)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(XCL:EXEC-FORMAT)Tj +/TT4 1 Tf +10 0 0 10 236.414 568.2 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 239.18 568.2 Tm +(CONTROL-STRING &REST ARGUMENTS)Tj +/TT8 1 Tf +18.0029 0 TD +(\))Tj +/TT11 1 Tf +10 0 0 10 406.6072 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1622 Tw +(In addition to saving inputs and values, the Exec saves many system messages on the)Tj +0 -1.2222 TD +0.0422 Tw +[(history list. For example, )]TJ +/TT8 1 Tf +11.6594 0 TD +0.1 Tw +(FILE CREATED ..., FN)Tj +/TT6 1 Tf +12.302 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2922 0 TD +(redefined)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.5422 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.2922 0 TD +(reset)Tj +/TT6 1 Tf +3.0005 0 TD +0.0422 Tw +(, output of)Tj +/TT8 1 Tf +-35.2896 -1.2889 TD +0 Tw +(TIME)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5433 0 TD +(BREAKDOWN)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.5433 0 TD +(ROOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0433 Tw +(, save their output on the history list, so that when )Tj +/TT8 1 Tf +22.9215 0 TD +0 Tw +(??)Tj +/TT6 1 Tf +1.2002 0 TD +0.0433 Tw +[( prints the)]TJ +-35.41 -1.2889 TD +0.0989 Tw +[(event, the output is also printed. The function )]TJ +/TT8 1 Tf +21.6053 0 TD +0 Tw +(XCL:EXEC-FORMAT)Tj +/TT6 1 Tf +9.0015 0 TD +0.0989 Tw +[( can be used in your)]TJ +-30.6068 -1.2889 TD +0.0456 Tw +(code similarly)Tj +/TT8 1 Tf +6.297 0 TD +0.11 Tw +[(. XCL:EXEC-FORMAT)]TJ +/TT6 1 Tf +11.0218 0 TD +0.0456 Tw +[( performs)]TJ +/TT8 1 Tf +4.3512 0 TD +0.11 Tw +[( \(APPLY #CL:FORMAT *TERMINAL-)]TJ +-21.67 -1.2889 TD +0 Tw +(IO* )Tj +/TT13 1 Tf +2.6571 0 TD +(CONTROL-STRING)Tj +/TT8 1 Tf +8.4014 0 TD +( )Tj +/TT13 1 Tf +0.8568 0 TD +(ARGUMENTS)Tj +/TT8 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1067 Tw +[( and also saves the format string and arguments)]TJ +-17.9162 -1.2889 TD +0 Tw +(on the history list associated with the current event.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(XCL:SET-EXEC-TYPE)Tj +/TT4 1 Tf +10 0 0 10 247.2 463.26 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 249.9783 463.26 Tm +(NAME)Tj +/TT11 1 Tf +10 0 0 10 271.5818 463.26 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 492.6299 463.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0289 Tw +(Sets the type of the current Exec to that indicated by )Tj +/TT13 1 Tf +23.5619 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0289 Tw +[(. This can be used to set up the)]TJ +-25.9623 -1.2889 TD +0 Tw +(Exec to your liking. )Tj +/TT13 1 Tf +9.0894 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +( may be an atom or string. Possible names are:)Tj +/TT17 1 Tf +-6.6231 -1.6667 TD +(INTERLISP)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT17 1 Tf +1.2002 0 TD +(IL)Tj +/TT8 1 Tf +1.8656 0 TD +(*READTABLE* INTERLISP)Tj +0 -1 TD +(*PACKAGE* INTERLISP)Tj +T* +(XCL:*DEBUGGER-PROMPT* ")Tj +/TT9 1 Tf +13.8022 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(: ")Tj +-14.7891 -1 TD +(XCL:*EXEC-PROMPT* ")Tj +/TT9 1 Tf +11.4019 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(")Tj +-12.3887 -1 TD +(XCL:*EVAL-FUNCTION* IL:EVAL)Tj +/TT17 1 Tf +-13.8667 -1.4444 TD +(XEROX-COMMON-LISP)Tj +/TT8 1 Tf +10.2017 0 TD +(, )Tj +/TT17 1 Tf +1.2002 0 TD +(XCL)Tj +/TT8 1 Tf +2.4648 0 TD +(*READTABLE* XCL)Tj +0 -1 TD +(*PACKAGE* XCL-USER)Tj +T* +(XCL:*DEBUGGER-PROMPT* ": ")Tj +T* +(XCL:*EXEC-PROMPT* "> ")Tj +T* +(XCL:*EVAL-FUNCTION* CL:EVAL)Tj +/TT17 1 Tf +-9.6667 -1.4444 TD +(COMMON-LISP)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT17 1 Tf +1.2002 0 TD +(CL)Tj +/TT8 1 Tf +1.8654 0 TD +(*READTABLE* LISP)Tj +0 -1 TD +(*PACKAGE* USER)Tj +T* +(XCL:*DEBUGGER-PROMPT* ": ")Tj +T* +(XCL:*EXEC-PROMPT* "> ")Tj +T* +(XCL:*EVAL-FUNCTION* CL:EVAL)Tj +/TT17 1 Tf +-9.6667 -1.4444 TD +(OLD-INTERLISP-T)Tj +/TT8 1 Tf +9.6667 0 TD +(*READTABLE* OLD-INTERLISP-T)Tj +0 -1 TD +(*PACKAGE* INTERLISP)Tj +T* +(XCL:*DEBUGGER-PROMPT* )Tj +/TT9 1 Tf +13.8022 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(: ")Tj +-14.7891 -1 TD +(XCL:*EXEC-PROMPT* ": ")Tj +T* +(XCL:*EVAL-FUNCTION* IL:EVAL)Tj +-16 -1.9933 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(XCL:SET-DEFAULT-EXEC-TYPE)Tj +/TT11 1 Tf +10 0 0 10 290.4 219.12 Tm +( )Tj +/TT13 1 Tf +9 0 0 9 293.1783 219.12 Tm +(NAME)Tj +/TT11 1 Tf +10 0 0 10 314.7818 219.12 Tm +17.4738 Tc +(\)[)Tj +/TT6 1 Tf +9 0 0 9 495.6283 219.12 Tm +0 Tc +(Function])Tj +-35.7365 -1.8444 TD +(Like )Tj +/TT8 1 Tf +2.3659 0 TD +(XCL:SET-EXEC-TYPE)Tj +/TT6 1 Tf +10.2017 0 TD +0.1789 Tw +(, but sets the type of Execs created by default, as from the)Tj +-12.5676 -1.2889 TD +0.0001 Tc +0.0032 Tw +(background menu. Initially )Tj +/TT8 1 Tf +12.6217 0 TD +0 Tc +0 Tw +(XCL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +(. This can be used in your greet file to set default Execs to)Tj +-14.422 -1.2889 TD +0 Tc +0 Tw +(your liking.)Tj +/TT4 1 Tf +10 0 0 10 102 156.98 Tm +(Editing Exec Input)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 154.27 m +558.01 154.27 l +S +BT +/TT6 1 Tf +9 0 0 9 126 140.32 Tm +0.1589 Tw +(The Exec features an input editorwhich provides completion, spelling correction, help facility, and)Tj +0 -1.2222 TD +0.1633 Tw +[(character-level editing. The implementation is borrowed from the Interlisp module )]TJ +/TT8 1 Tf +38.9311 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1633 Tw +[(. This)]TJ +-41.9316 -1.2889 TD +0 Tw +(section describes the use of the )Tj +/TT8 1 Tf +13.8506 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( editor from the perspective of the Exec.)Tj +/TT4 1 Tf +10 0 0 10 102 94.78 Tm +(Editing Your Input)Tj +ET +102.01 92.07 m +558.01 92.07 l +S +BT +/TT6 1 Tf +9 0 0 9 126 78.12 Tm +0.3156 Tw +(Some editing operations can be performed using any of several characters; characters that are)Tj +0 -1.2222 TD +0.03 Tw +[(interrupts will, of course, not be read, so several alternatives are given. The following characters may)]TJ +T* +0 Tw +(be used to edit your input:)Tj +/TT17 1 Tf +3.2667 -1.6667 TD +(CONTROL-A)Tj +ET +endstream +endobj +79 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 15 0 R +/TT13 33 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +81 0 obj +<< +/Length 6037 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-19)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT17 1 Tf +9 0 0 9 54 569.54 Tm +(BACKSPACE)Tj +/TT6 1 Tf +5.4033 0 TD +(Deletes a character. At the start of the second or subsequent lines of your input, deletes the last)Tj +6.5967 -1.2889 TD +(character of the previous line.)Tj +/TT17 1 Tf +-6.0667 -1.6667 TD +(CONTROL-W)Tj +/TT6 1 Tf +6.0667 0 TD +(Deletes a word. Generally this means back to the last space or parenthesis.)Tj +/TT17 1 Tf +-6.0667 -1.5111 TD +(CONTROL-Q)Tj +/TT6 1 Tf +6.0667 0 TD +(Deletes the current line, or if the current line is blank, deletes the previous line.)Tj +/TT17 1 Tf +-6.0667 -1.5111 TD +(CONTROL-R)Tj +/TT6 1 Tf +6.0667 0 TD +0.0278 Tw +[(Refreshes the current line. Two in a row refreshes the whole buffer \(when doing)]TJ +0 -1.0667 TD +0 Tw +(multiline input\).)Tj +/TT17 1 Tf +-4.2667 -1.4444 TD +(ESCAPE)Tj +/TT6 1 Tf +4.2667 0 TD +0.0133 Tw +(Tries to complete the current word from the spelling list )Tj +/TT8 1 Tf +25.1441 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +[(. In the case)]TJ +-30.545 -1.0667 TD +0 Tw +(of ambiguity, completes as far as is uniquely determined, or beeps.)Tj +/TT17 1 Tf +-5.1567 -1.4444 TD +(UNDO)Tj +/TT6 1 Tf +2.4 0 TD +0.0689 Tw +[( )68.9(key )-596.5(Retrieves characters from the previous non-empty buffer when it is able to; e.g.,)]TJ +2.7567 -1.0667 TD +0.0489 Tw +(when typed at the beginning of the line this command restores the previous line)Tj +0 -1 TD +0.0211 Tw +(you typed; when typed in the middle of a line fills in the remaining text from the)Tj +T* +0.1033 Tw +(old line; when typed following )Tj +/TT8 1 Tf +14.4278 0 TD +0 Tw +(CONTROL-Q)Tj +/TT6 1 Tf +5.4009 0 TD +0.1033 Tw +[( or )]TJ +/TT8 1 Tf +1.6476 0 TD +0 Tw +(CONTROL-W)Tj +/TT6 1 Tf +5.4009 0 TD +0.1033 Tw +[( restores what those)]TJ +-26.8771 -1.0667 TD +0 Tw +(commands erased.)Tj +/TT17 1 Tf +-6.0667 -1.4444 TD +(CONTROL-X)Tj +/TT6 1 Tf +6.0667 0 TD +0.1444 Tw +(Goes to the end of your input \(or end of expression if there is an excess right)Tj +0 -1.0667 TD +0 Tw +(parenthesis\) and returns if parentheses are balanced.)Tj +-9.3333 -1.7778 TD +0.0989 Tw +[(If you are already at the end of the input and the expression is balanced except for lacking one or)]TJ +0 -1.2222 TD +0 Tw +(more right parentheses, )Tj +/TT8 1 Tf +11.2241 0 TD +(CONTROL-X)Tj +/TT6 1 Tf +5.4009 0 TD +( adds the required right parentheses to balance and returns. )Tj +-16.625 -2.0667 TD +0.0222 Tw +(During most kinds of input, lines are broken, if possible, so that no word straddles the end of the line.)Tj +0 -1.2222 TD +0.1056 Tw +(The pseudo-carriage return ending the line is still read as a space, however; i.e., the program keeps)Tj +T* +0.0822 Tw +[(track of whether a line ends in a carriage return or is merely broken at some convenient point. You)]TJ +T* +0 Tw +(will not get carriage returns in your strings unless you explicitly type them.)Tj +/TT4 1 Tf +10 0 0 10 54 309.8 Tm +(Using the Mouse)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 307.09 m +510.01 307.09 l +S +BT +/TT6 1 Tf +9 0 0 9 78 293.14 Tm +0.0222 Tw +(Editing with the mouse during )Tj +/TT8 1 Tf +14.0222 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0222 Tw +[( input is slightly different than with other modules. The mouse)]TJ +-17.0227 -1.2889 TD +0 Tw +(buttons are interpreted as follows during )Tj +/TT8 1 Tf +18.4253 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( input:)Tj +/TT17 1 Tf +-17.1591 -1.7333 TD +(LEFT)Tj +/TT6 1 Tf +3.0667 0 TD +0.0778 Tw +[(Moves the caret to where the cursor is pointing. As you hold down )]TJ +/TT8 1 Tf +31.1641 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +(, the caret)Tj +-33.5645 -1.2889 TD +0.1333 Tw +(moves around with the cursor; after you let up, any type-in will be inserted at the)Tj +0 -1.2222 TD +0 Tw +(new position.)Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(MIDDLE)Tj +/TT6 1 Tf +-5.7333 -1.0667 TD +( )Tj +/TT17 1 Tf +3.3278 0 TD +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +(+)Tj +/TT17 1 Tf +0.606 0 TD +(RIGHT)Tj +/TT6 1 Tf +3.6659 0 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +(, but moves only to word boundaries.)Tj +/TT17 1 Tf +-8.2541 -1.7333 TD +(RIGHT)Tj +/TT6 1 Tf +3.6667 0 TD +0.0144 Tw +[(Deletes text from the caret to the cursor, either forward or backward. While you hold)]TJ +0 -1.2889 TD +0 Tw +(down )Tj +/TT8 1 Tf +2.8772 0 TD +(RIGHT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +(, the text to be deleted is inverted; when you let up, the text goes away.)Tj +-5.8777 -1.2889 TD +0.01 Tw +(If you let up outside the scope of the text, nothing is deleted \(this is how to cancel this)Tj +0 -1.2222 TD +0 Tw +(operation\). )Tj +0 -1.6667 TD +(If you hold down )Tj +/TT8 1 Tf +7.9822 0 TD +(MOVE)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5007 0 TD +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5007 0 TD +(SHIFT)Tj +/TT6 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.4428 0 TD +(CTRL)Tj +/TT6 1 Tf +2.4004 0 TD +( while pressing the mouse buttons, you)Tj +-20.6282 -1.2889 TD +0.1222 Tw +[(instead get secondary selection, move selection or delete selection. The selection is)]TJ +0 -1.2222 TD +0.0467 Tw +[(made by holding the appropriate key down while pressing the mouse buttons )]TJ +/TT8 1 Tf +35.5954 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +-35.5954 -1.2889 TD +0.3033 Tw +(\(to select a character\) or )Tj +/TT8 1 Tf +12.2535 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.3033 Tw +[( \(to select a word\), and optionally extend the)]TJ +-15.8541 -1.2889 TD +0.0078 Tw +(selection either left or right using )Tj +/TT8 1 Tf +14.9373 0 TD +0 Tw +(RIGHT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0078 Tw +[(. While you are doing this, the caret does not)]TJ +-17.9378 -1.2889 TD +0.16 Tw +(move, but the selected text is highlighted in a manner indicating what is about to)Tj +0 -1.2222 TD +0.0833 Tw +[(happen. When the selection is complete, release the mouse buttons and then lift up)]TJ +T* +0 Tw +(on )Tj +/TT8 1 Tf +1.3779 0 TD +(MOVE)Tj +/TT6 1 Tf +2.4004 0 TD +(/)Tj +/TT8 1 Tf +0.606 0 TD +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +(/)Tj +/TT8 1 Tf +0.606 0 TD +(CTRL)Tj +/TT6 1 Tf +2.4004 0 TD +(/)Tj +/TT8 1 Tf +0.606 0 TD +(SHIFT)Tj +/TT6 1 Tf +3.0005 0 TD +( and the appropriate action will occur:)Tj +ET +endstream +endobj +82 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +84 0 obj +<< +/Length 4306 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-20)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 164.4 570.14 Tm +(COPY)Tj +/TT6 1 Tf +-0.85 -1.0667 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(SHIFT)Tj +/TT6 1 Tf +3.6667 0 TD +0.0344 Tw +[(The selected text is inserted as if it were typed. The text is highlighted with a broken)]TJ +0 -1.2889 TD +0 Tw +(underline during selection.)Tj +/TT17 1 Tf +-3.0667 -1.6667 TD +(CTRL)Tj +/TT6 1 Tf +3.0667 0 TD +(The selected text is deleted. The text is complemented during selection.)Tj +/TT17 1 Tf +-3.0667 -1.6667 TD +(MOVE)Tj +/TT6 1 Tf +-3.8556 -1.0667 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(CTRL)Tj +/TT6 1 Tf +2.4004 0 TD +(+)Tj +/TT17 1 Tf +0.606 0 TD +(SHIFT)Tj +/TT6 1 Tf +3.6659 0 TD +(Combines copy and delete. The selected text is moved to the caret.)Tj +-7.3333 -2.0667 TD +0.0211 Tw +(You can cancel a selection in progress by pressing )Tj +/TT8 1 Tf +22.4376 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0211 Tw +[( or )]TJ +/TT8 1 Tf +1.4831 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0211 Tw +[( as if to select, and moving outside)]TJ +-29.9217 -1.2889 TD +0 Tw +(the range of the text.)Tj +0 -2 TD +0.0389 Tw +(The most recent text deleted by mouse command can be inserted at the caret by typing the )Tj +/TT8 1 Tf +40.7959 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0389 Tw +[( key.)]TJ +-43.1963 -1.2889 TD +0 Tw +(This is the same key that retrieves the previous buffer when issued at the end of a line.)Tj +/TT4 1 Tf +10 0 0 10 102 427.2 Tm +(Editing Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 424.49 m +558.01 424.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 410.54 Tm +0.0411 Tw +[(A number of characters have special effects while typing to the Exec. Some of them merely move the)]TJ +0 -1.2222 TD +0.0722 Tw +[(caret inside the input stream. While caret positioning can often be done more conveniently with the)]TJ +T* +0.0244 Tw +(mouse, some of the commands, such as the case changing commands, can be useful for modifying the)Tj +T* +0 Tw +(input.)Tj +0 -2 TD +0.07 Tw +(In the descriptions below, current word means the word the cursor is under, or if under a space, the)Tj +0 -1.2222 TD +0.11 Tw +[(previous word. Currently, parentheses are treated as spaces, which is usually what you want, but)]TJ +T* +0 Tw +(can occasionally cause confusion in the word deletion commands. )Tj +0 -2 TD +0.0689 Tw +[(Most commands can be preceded by a numeric argument. A numeric argument can be a number or)]TJ +0 -1.2222 TD +0.0833 Tw +[(an escape. You enter the numeric argument by holding down the meta key and entering a number.)]TJ +T* +0.1278 Tw +[(You only need to hold down the meta key for the firs digit of the argument. Entering escape as a)]TJ +T* +0 Tw +(numeric argument means infinity. )Tj +0 -2 TD +0.2967 Tw +(Some commands also accept negative arguments, but some only look at the magnitude of the)Tj +0 -1.2222 TD +0.1367 Tw +[(argument. Most of these commands are confined to work within one line of text unless otherwise)]TJ +T* +0 Tw +(noted. )Tj +/TT4 1 Tf +10 0 0 10 102 224.2 Tm +(Cursor Movement Commands)Tj +ET +102.01 221.49 m +558.01 221.49 l +S +BT +/TT17 1 Tf +9 0 0 9 128.4 207.54 Tm +(Meta-BACKSPACE)Tj +/TT6 1 Tf +9.1778 0 TD +(Backs up one \(or n\) characters.)Tj +/TT17 1 Tf +-6.7778 -1.7333 TD +(Meta-SPACE)Tj +/TT6 1 Tf +6.6667 0 TD +(Moves forward one \(or n\) characters.)Tj +/TT17 1 Tf +-4.2667 -1.7333 TD +(Meta-^)Tj +/TT6 1 Tf +4.2667 0 TD +(Moves up one \(or n\) lines.)Tj +/TT17 1 Tf +-8.4667 -1.7333 TD +(Meta-LINEFEED)Tj +/TT6 1 Tf +8.5778 0 TD +(Moves down one \(or n\) lines.)Tj +/TT17 1 Tf +-4.3778 -1.7333 TD +(Meta-\()Tj +/TT6 1 Tf +4.2667 0 TD +(Moves back one \(or n\) words.)Tj +/TT17 1 Tf +-4.2667 -1.7333 TD +(Meta-\))Tj +/TT6 1 Tf +4.2667 0 TD +(Moves ahead one \(or n\) words.)Tj +/TT17 1 Tf +-5.4667 -1.7333 TD +(Meta-tab)Tj +/TT6 1 Tf +5.4667 0 TD +0.2922 Tw +(Moves to end of line; with an argument moves to nth end of line; )Tj +/TT17 1 Tf +32.9922 0 TD +0 Tw +(Meta-)Tj +-32.9922 -1.2889 TD +(Control-tab)Tj +/TT6 1 Tf +6.6011 0 TD +( goes to end of buffer.)Tj +/TT17 1 Tf +-15.6677 -1.7333 TD +(Meta-Control-L)Tj +/TT6 1 Tf +9.1778 0 TD +(Moves to start of line \(or nth previous, or start of buffer\).)Tj +/TT17 1 Tf +-4.3778 -1.7333 TD +(Meta-{)Tj +/TT6 1 Tf +4.2667 0 TD +(Goes to start of buffer)Tj +/TT17 1 Tf +9.6304 0 TD +(.)Tj +-13.897 -1.7333 TD +(Meta-})Tj +/TT6 1 Tf +4.2667 0 TD +(Goes to end of buffer.)Tj +ET +endstream +endobj +85 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +87 0 obj +<< +/Length 4803 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-21)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT17 1 Tf +9 0 0 9 123.6 569.54 Tm +(Meta-[)Tj +/TT6 1 Tf +4.2667 0 TD +0.2922 Tw +(Moves to beginning of the current list, where cursor is currently under an)Tj +0 -1.2889 TD +0.0389 Tw +[(element of that list or its closing paren. \(See also the auto-parenthesis-matching)]TJ +0 -1.2222 TD +0 Tw +(feature below under Assorted Flags.\))Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(Meta-])Tj +/TT6 1 Tf +4.2667 0 TD +(Moves to end of current list.)Tj +/TT17 1 Tf +-4.7822 -1.7333 TD +(Meta-S)Tj +/TT6 1 Tf +3.6006 0 TD +[(x)-665.5(Skips ahead to next \(or nth\) occurrence of character x, or rings the bell.)]TJ +/TT17 1 Tf +-3.6006 -1.7333 TD +(Meta-B)Tj +/TT6 1 Tf +3.6006 0 TD +[(x)-665.5(Backward search.)]TJ +/TT4 1 Tf +10 0 0 10 54 477.8 Tm +(Buffer Modification Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 475.09 m +510.01 475.09 l +S +BT +/TT17 1 Tf +9 0 0 9 118.96 461.14 Tm +(Meta-Z)Tj +/TT6 1 Tf +3.6006 0 TD +0.0522 Tw +[(x)-665.5(Zaps characters from cursor to next \(or nth\) occurrence of x. There is no unzap)]TJ +1.1816 -1.2889 TD +0 Tw +(command.)Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(Meta-A)Tj +0 -1.0667 TD +(Meta-R)Tj +/TT6 1 Tf +4.2667 0 TD +(Repeats the last S, B, or Z command, regardless of any intervening input.)Tj +/TT17 1 Tf +-4.2667 -1.7333 TD +(Meta-K)Tj +/TT6 1 Tf +4.2667 0 TD +(Kills the character under the cursor, or n chars starting at the cursor.)Tj +/TT17 1 Tf +-4.8667 -1.7333 TD +(Meta-CR)Tj +/TT6 1 Tf +4.8667 0 TD +0.2122 Tw +(When the buffer is empty is the same as undo i.e. restores buffers previous)Tj +0 -1.2889 TD +0.0956 Tw +[(contents. Otherwise is just like a \(except that it also terminates an insert\).)]TJ +0 -1.2222 TD +0 Tw +(Thus, )Tj +/TT17 1 Tf +3.0306 0 TD +(Meta-CR)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.5589 0 TD +(Meta-CR)Tj +/TT6 1 Tf +4.2007 0 TD +0.3089 Tw +[( will repeat the previous input \(as will undo)]TJ +-11.9908 -1.2889 TD +0 Tw +(without the meta key\).)Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(Meta-O)Tj +/TT6 1 Tf +4.2667 0 TD +0.0011 Tw +(Does Open line, inserting a crlf after the cursor, i.e., it breaks the line but leaves)Tj +0 -1.2889 TD +0 Tw +(the cursor where it is.)Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(Meta-T)Tj +/TT6 1 Tf +4.2667 0 TD +0.03 Tw +[(Transposes the characters before and after the cursor. When typed at the end of)]TJ +0 -1.2889 TD +0.0189 Tw +[(a line, transposes the previous two characters. Refuses to handle odd cases, such)]TJ +0 -1.2222 TD +0 Tw +(as tabs.)Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(Meta-G)Tj +/TT6 1 Tf +4.2667 0 TD +0.04 Tw +(Grabs the contents of the previous line from the cursor position onward. )Tj +/TT17 1 Tf +32.9897 0 TD +0 Tw +(Meta-)Tj +/TT6 1 Tf +-32.9897 -1.2889 TD +(n)Tj +/TT17 1 Tf +0.582 0 TD +( Meta-G)Tj +/TT6 1 Tf +4.2007 0 TD +( grabs the nth previous line.)Tj +/TT17 1 Tf +-9.0494 -1.7333 TD +(Meta-L)Tj +/TT6 1 Tf +4.2667 0 TD +0.2722 Tw +(Puts the current word, or n words on line, in lower case. )Tj +/TT17 1 Tf +28.8612 0 TD +0 Tw +(Meta-)Tj +/TT6 1 Tf +3.0005 0 TD +()Tj +/TT17 1 Tf +-31.8616 -1.2889 TD +(Meta-L)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +[( puts the rest of the linein lower case; or if given at the end of line puts)]TJ +-3.6006 -1.2889 TD +0 Tw +(the entire line in lower case.)Tj +/TT17 1 Tf +-4.2667 -1.6667 TD +(Meta-U)Tj +/TT6 1 Tf +4.2667 0 TD +(Analogous to )Tj +/TT17 1 Tf +6.1978 0 TD +(Meta-L)Tj +/TT6 1 Tf +3.6006 0 TD +(, for putting word, line, or portion of line in upper case.)Tj +/TT17 1 Tf +-14.065 -1.7333 TD +(Meta-C)Tj +/TT6 1 Tf +4.2667 0 TD +0.0144 Tw +[(Capitalizes. If you give it an argument, only the first word is capitalized; the rest)]TJ +0 -1.2889 TD +0 Tw +(are just lowercased.)Tj +/TT17 1 Tf +-9.0667 -1.6667 TD +(Meta-Control-Q)Tj +/TT6 1 Tf +9.1778 0 TD +0.19 Tw +(Deletes the current line. )Tj +/TT17 1 Tf +11.9563 0 TD +0 Tw +(Meta-)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +4.5787 0 TD +(Meta-Control-Q)Tj +/TT6 1 Tf +8.4014 0 TD +0.19 Tw +[( deletes from the)]TJ +-28.048 -1.2889 TD +0.3178 Tw +[(current cursor position to the end of the buffer. No other arguments are)]TJ +0 -1.2222 TD +0 Tw +(handled.)Tj +/TT17 1 Tf +-9.0667 -1.6667 TD +(Meta-Control-W)Tj +/TT6 1 Tf +9.1778 0 TD +(Deletes the current word, or the previous word if sitting on a space.)Tj +/TT4 1 Tf +10 0 0 10 54 112.2 Tm +(Miscellaneous Commands)Tj +ET +54.01 109.49 m +510.01 109.49 l +S +BT +/TT17 1 Tf +9 0 0 9 123.6 95.54 Tm +(Meta-P)Tj +/TT6 1 Tf +4.2667 0 TD +0.1 Tw +[(Prettyprints buffer. Clears the buffer and reprints it using prettyprint. If there)]TJ +0 -1.2889 TD +0.0433 Tw +(are not enough right parentheses, it will supply more; if there are too many, any)Tj +0 -1.2222 TD +0.2644 Tw +[(excess remains unprettyprinted at the end of the buffer. May refuse to do)]TJ +T* +0 Tw +(anything if there is an unclosed string or other error trying to read the buffer.)Tj +ET +endstream +endobj +88 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT11 15 0 R +/TT17 35 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +91 0 obj +<< +/Length 6141 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-22)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 171.6 569.54 Tm +(Meta-N)Tj +/TT6 1 Tf +4.2667 0 TD +0.0111 Tw +[(Refreshes line. Same as )]TJ +/TT19 1 Tf +10.7719 0 TD +0 Tw +(Control-R)Tj +/TT6 1 Tf +4.5557 0 TD +0.0111 Tw +(. )Tj +/TT17 1 Tf +0.7722 0 TD +0 Tw +(Meta-)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +4.3998 0 TD +(Meta-N)Tj +/TT6 1 Tf +3.6006 0 TD +0.0111 Tw +[( refreshes the whole)]TJ +-27.1006 -1.2889 TD +0 Tw +(buffer; )Tj +/TT17 1 Tf +3.2641 0 TD +(Meta-)Tj +/TT6 1 Tf +3.0005 0 TD +(n )Tj +/TT17 1 Tf +0.8998 0 TD +(Meta-N)Tj +/TT6 1 Tf +3.6006 0 TD +0.0678 Tw +[( refreshes n lines. Cursor movement in )]TJ +/TT8 1 Tf +18.1184 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0678 Tw +[( depends)]TJ +-31.8838 -1.2889 TD +0 Tw +(on )Tj +/TT8 1 Tf +1.3868 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0089 Tw +[( being the only source of output to the window; in some circumstances,)]TJ +-4.3873 -1.2889 TD +0 Tw +(you may need to refresh the line for best results.)Tj +/TT17 1 Tf +-9.0667 -1.6667 TD +(Meta-Control-Y)Tj +/TT6 1 Tf +9.1778 0 TD +(Gets an Interlisp Exec)Tj +/TT17 1 Tf +9.6001 0 TD +(. Meta-)Tj +/TT6 1 Tf +4.8008 0 TD +( )Tj +/TT17 1 Tf +4.3887 0 TD +(Meta-Control-Y)Tj +/TT6 1 Tf +8.5438 0 TD +0.6278 Tw +(Gets an Interlisp)Tj +-27.4444 -1.2889 TD +0.0078 Tw +[(Exec, but first unreads the contents of the buffer from the cursor onward. Thus if)]TJ +0 -1.2222 TD +0.3667 Tw +(you typed at )Tj +/TT8 1 Tf +6.9545 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.3667 Tw +[( something destined for Interlisp, you can do )]TJ +/TT17 1 Tf +23.0427 0 TD +0 Tw +(Meta-)Tj +-32.9977 -1.2889 TD +(Control-)Tj +/TT19 1 Tf +4.8008 0 TD +(L)Tj +/TT6 1 Tf +0.6108 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(Meta-)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +4.3887 0 TD +(Meta-Control-Y)Tj +/TT6 1 Tf +8.4014 0 TD +( and give it to Lisp.)Tj +/TT17 1 Tf +-25.7188 -1.7333 TD +(Meta-_)Tj +/TT6 1 Tf +4.2667 0 TD +0.1778 Tw +(Adds the current word to the spelling list )Tj +/TT8 1 Tf +19.9491 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1778 Tw +[(. With zero argument,)]TJ +-25.35 -1.2889 TD +0 Tw +(removes word. See )Tj +/TT8 1 Tf +8.8892 0 TD +(TTYINCOMPLETEFLG)Tj +/TT6 1 Tf +9.6016 0 TD +( .)Tj +/TT4 1 Tf +10 0 0 10 102 435.4 Tm +(Useful Macros)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 432.69 m +558.01 432.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 418.74 Tm +0.0689 Tw +(If the event is considered short enough, the Exec command )Tj +/TT8 1 Tf +27.0097 0 TD +0 Tw +(FIX)Tj +/TT6 1 Tf +1.8003 0 TD +0.0689 Tw +[( will load the buffer with the events)]TJ +-28.81 -1.2889 TD +0.09 Tw +[(input, rather than calling the structure editor. If you really wanted the Lisp editor for your fix, you)]TJ +0 -1.2222 TD +0 Tw +(can say )Tj +/TT8 1 Tf +3.5059 0 TD +(FIX EVENT - |TTY:|.)Tj +/TT4 1 Tf +10 0 0 10 102 373.2 Tm +(?= Handler)Tj +ET +102.01 370.49 m +558.01 370.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 356.54 Tm +0.1689 Tw +(Typing the characters )Tj +/TT8 1 Tf +10.3319 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.1689 Tw +[( displays the arguments to the function currently in progress. Since)]TJ +/TT8 1 Tf +-11.5321 -1.2889 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0967 Tw +[( wants you to be able to continue editing the buffer after a )]TJ +/TT8 1 Tf +27.0833 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0967 Tw +(, it prints the arguments below)Tj +-31.284 -1.2889 TD +0 Tw +(your type-in and then puts the cursor back where it was when )Tj +/TT8 1 Tf +27.7529 0 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +( was typed.)Tj +/TT4 1 Tf +10 0 0 10 102 310.4 Tm +(Assorted Flags)Tj +ET +102.01 307.69 m +558.01 307.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 293.74 Tm +0.0256 Tw +(These flags control aspects of )Tj +/TT8 1 Tf +13.265 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0256 Tw +[(s behavior. Some have already been mentioned. All are initially)]TJ +-16.2655 -1.2889 TD +0 Tw +(set to )Tj +/TT8 1 Tf +2.6011 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-0.5345 -2.2156 TD +(?ACTIVATEFLG)Tj +/TT11 1 Tf +10 0 0 10 214.8 262.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 262.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2767 Tw +(If true, enables the feature whereby )Tj +/TT8 1 Tf +17.5721 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.2767 Tw +[( lists alternative completions from the current)]TJ +-18.1722 -1.2889 TD +0 Tw +(spelling list.)Tj +/TT17 1 Tf +-2.6667 -2.1489 TD +(SHOWPARENFLG)Tj +/TT11 1 Tf +10 0 0 10 214.8105 214.66 Tm +-0.0009 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 214.66 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +0.0333 Tw +(If true, then whenever you are typing Lisp input and type a right parenthesis, )Tj +/TT8 1 Tf +35.0145 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0333 Tw +[( will)]TJ +-38.015 -1.2889 TD +0.0133 Tw +[(briefly move the cursor to the matching parenthesis, assuming it is still on the screen. The)]TJ +0 -1.2222 TD +0.0467 Tw +(cursor stays there for about 1 second, or until you type another character \(i.e., if you type)Tj +T* +0 Tw +(fast you will never notice it\).)Tj +/TT17 1 Tf +-2.6667 -2 TD +(USERWORDS)Tj +/TT6 1 Tf +38.2678 0 TD +([Variable])Tj +/TT8 1 Tf +-35.6011 -1.8444 TD +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.2511 Tw +[( contains words you mentioned recently: functions you have defined or)]TJ +-5.4009 -1.2889 TD +0.0011 Tw +(edited, variables you have set or evaluated at the executive level, etc. This happens to be a)Tj +0 -1.2222 TD +0.2344 Tw +(very convenient list for context-free escape completion; if you have recently edited a)Tj +T* +0.0944 Tw +(function, chances are good you may want to edit it again \(typing )Tj +/TT8 1 Tf +29.9351 0 TD +0 Tw +(ED\(xx$\))Tj +/TT6 1 Tf +4.8008 0 TD +0.0944 Tw +(\) or type a)Tj +-34.7359 -1.2889 TD +0.01 Tw +[(call to it. If there is no completion for the current word from )]TJ +/TT8 1 Tf +27.0956 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.01 Tw +(, or there is more)Tj +-32.4965 -1.2889 TD +0.1589 Tw +(than one possible completion, )Tj +/TT8 1 Tf +14.0804 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1589 Tw +[( beeps. If typed when not inside a word, Escape)]TJ +-17.0809 -1.2889 TD +0.0933 Tw +(completes to the value of )Tj +/TT8 1 Tf +11.7655 0 TD +0 Tw +(LASTWORD)Tj +/TT6 1 Tf +4.8008 0 TD +0.0933 Tw +(, i.e., the last thing you typed that the Exec noticed,)Tj +ET +endstream +endobj +92 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +/TT17 35 0 R +/TT19 42 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +94 0 obj +<< +/Length 5820 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-23)Tj +/TT11 1 Tf +10 0 0 10 396.75 612 Tm +(MEDLEY EXECUTIVES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1622 Tw +(except that Escape at the beginning of the line is left alone \(it is an Old Interlisp Exec)Tj +0 -1.2222 TD +0 Tw +(command\).)Tj +0 -2 TD +0.0344 Tw +(If you really wanted to enter an escape, you can, of course, just quote it with a )Tj +/TT8 1 Tf +35.1988 0 TD +0 Tw +(CONTROL-)Tj +-35.1988 -1.2889 TD +(V)Tj +/TT6 1 Tf +0.6001 0 TD +(, like you can other control characters.)Tj +-0.6001 -2.0667 TD +0.0133 Tw +(You may explicitly add words to )Tj +/TT8 1 Tf +14.8246 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +[( yourself that would not get there otherwise.)]TJ +-20.2255 -1.2889 TD +0.1167 Tw +(To make this convenient online the edit command [)Tj +/TT9 1 Tf +23.6555 0 TD +0 Tw +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +0.1167 Tw +(] means add the current atom to)Tj +/TT8 1 Tf +-24.6423 -1.2222 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0533 Tw +[( \(you might think of the command as pointing out this atom\). For example,)]TJ +-5.4009 -1.2889 TD +0.2256 Tw +(you might be entering a function definition and want to point to one or more of its)Tj +0 -1.2222 TD +0.0956 Tw +[(arguments or prog variables. Giving an argument of zero to this command will instead)]TJ +T* +0 Tw +(remove the indicated atom from )Tj +/TT8 1 Tf +14.5303 0 TD +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-19.9312 -2.0667 TD +0.0444 Tw +(Note that this feature loses some of its value if the spelling list is too long, if there are too)Tj +0 -1.2222 TD +0.0633 Tw +(many alternative completions for you to get by with typing a few characters followed by)Tj +T* +0.1111 Tw +[(escape. Lisps maintenance of the spelling list )]TJ +/TT8 1 Tf +21.4553 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1111 Tw +[( keeps the temporary section)]TJ +-26.8562 -1.2889 TD +0.5222 Tw +(\(which is where everything goes initially unless you say otherwise\) limited to)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(\\#USERWORDS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0344 Tw +[( atoms, initially 100. Words fall off the end if they havent been used \(they)]TJ +-6.6011 -1.2889 TD +0 Tw +(are used if )Tj +/TT8 1 Tf +4.8647 0 TD +(FIXSPELL)Tj +/TT6 1 Tf +4.8008 0 TD +( corrects to one, or you use to complete one\). )Tj +/TT4 1 Tf +10 0 0 10 54 356.4 Tm +( Old Interlisp T compatibility)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 353.69 m +510.01 353.69 l +S +BT +/TT6 1 Tf +9 0 0 9 78 339.74 Tm +(The Old Interlisp exec contains a few extra Exec commands not listed above. They are explained here.)Tj +0 -2 TD +(In addition to the normal Event addresses you can also specify the following Event addresses:)Tj +/TT8 1 Tf +7.4 -2 TD +(=)Tj +/TT6 1 Tf +1.2667 0 TD +0.0122 Tw +(Specifies that the next object is to be searched for in the values of events, instead of)Tj +0 -1.2889 TD +0 Tw +(the inputs)Tj +/TT8 1 Tf +-8.4667 -2 TD +(SUCHTHAT )Tj +/TT13 1 Tf +5.4009 0 TD +(PRED)Tj +/TT6 1 Tf +3.0658 0 TD +0.1456 Tw +(Specifies an event for which the function )Tj +/TT13 1 Tf +19.2498 0 TD +0 Tw +(PRED)Tj +/TT6 1 Tf +2.4004 0 TD +0.1456 Tw +[( returns true. )]TJ +/TT13 1 Tf +6.8396 0 TD +0 Tw +(PRED)Tj +/TT6 1 Tf +2.4004 0 TD +0.1456 Tw +[( should be a)]TJ +-30.8902 -1.2889 TD +0 Tw +(function of two arguments, the input portion of the event, and the event itself.)Tj +/TT13 1 Tf +-2.4667 -2 TD +(PAT)Tj +/TT6 1 Tf +2.4667 0 TD +0.1833 Tw +(Any other event address command specifies an event whose input contains an)Tj +0 -1.2889 TD +0.2567 Tw +(expression that matches )Tj +/TT13 1 Tf +11.6289 0 TD +0 Tw +(PAT)Tj +/TT6 1 Tf +1.8003 0 TD +0.2567 Tw +[(. When multiple Execs are active, all events are)]TJ +-13.4292 -1.2889 TD +0.2289 Tw +[(searched, no matter which Exec they belong to. The pattern can be a simple)]TJ +0 -1.2222 TD +0 Tw +(symbol, or a more complex search pattern.)Tj +/TT4 1 Tf +10 0 0 10 54 186.44 Tm +( Significant Changes in MEDLEY Rele)Tj +ET +232.93 195.78 181.85 -9.34 re +f +BT +10 0 0 10 414.79 186.44 Tm +(ase)Tj +ET +54.01 183.29 m +510.01 183.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 169.34 Tm +(There are two major differences between the Medley release and older versions of the system:)Tj +0 -2 TD +()Tj +/TT8 1 Tf +1.3333 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1233 Tw +[( does not interact with the File Manager. In older releases \(Koto, etc.\), when you typed in)]TJ +/TT8 1 Tf +-2.4004 -1.2889 TD +0.5678 Tw +(\(SETQ FOO)Tj +/TT6 1 Tf +5.9687 0 TD +0 Tw +( )Tj +/TT13 1 Tf +0.4867 0 TD +(some-new-value)Tj +/TT8 1 Tf +8.4014 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.2367 Tw +[( the executive responded with)]TJ +/TT8 1 Tf +14.2767 0 TD +0.5678 Tw +[( \(FOO reset\))]TJ +/TT6 1 Tf +8.3367 0 TD +0.2367 Tw +[( and the file)]TJ +-38.0703 -1.2889 TD +0.0244 Tw +(manager was told that )Tj +/TT8 1 Tf +10.2589 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +[(s value had changed. Files containing )]TJ +/TT8 1 Tf +17.4987 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +[( were marked for cleanup, if)]TJ +-31.3582 -1.2889 TD +0 Tw +(none existed you were prompted for one when you typed )Tj +/TT8 1 Tf +25.7852 0 TD +(\(FILES?\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-30.5859 -2.0667 TD +0.0556 Tw +[(This is still the case in the Old Interlisp executive but not in any of the others. If you are setting a)]TJ +0 -1.2222 TD +0.1755 Tw +(variable that is significant to a program and you want to save it on a file, you should use the)Tj +T* +0.0667 Tw +(Common Lisp macro )Tj +/TT8 1 Tf +9.7928 0 TD +0 Tw +(CL:DEFPARAMETER)Tj +/TT6 1 Tf +9.0015 0 TD +0.0667 Tw +[( instead of )]TJ +/TT8 1 Tf +5.0418 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0667 Tw +[(. This will give the symbol a definition)]TJ +-26.2364 -1.2889 TD +0.1978 Tw +(of type )Tj +/TT8 1 Tf +3.7369 0 TD +0 Tw +(VARIABLES)Tj +/TT6 1 Tf +5.4009 0 TD +0.1978 Tw +[( \(instead of )]TJ +/TT8 1 Tf +5.7681 0 TD +0 Tw +(VARS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1978 Tw +[(\), and it will be noticed by the File Manager. Subseqent)]TJ +ET +endstream +endobj +95 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT9 8 0 R +/TT11 15 0 R +/TT13 33 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +97 0 obj +<< +/Length 2510 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-24)Tj +/TT11 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 138 569.54 Tm +0.0589 Tw +(changes to the variable must be done by another call to )Tj +/TT8 1 Tf +25.2015 0 TD +0 Tw +(CL:DEFPARAMETER)Tj +/TT6 1 Tf +9.0015 0 TD +0.0589 Tw +[( or by editing it using)]TJ +/TT8 1 Tf +-34.203 -1.2889 TD +0 Tw +(ED)Tj +/TT6 1 Tf +1.2002 0 TD +( \(not )Tj +/TT8 1 Tf +2.2871 0 TD +(DV)Tj +/TT6 1 Tf +1.2002 0 TD +(\).)Tj +-6.0208 -2.0667 TD +0.2989 Tw +[()-727.4(The following functions and variables are only available in the Old Interlisp Exec: )]TJ +/TT8 1 Tf +42.0769 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +/TT8 1 Tf +-43.744 -1.2889 TD +(USEREXEC)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +1.91 0 TD +(LISPXEVAL)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +1.91 0 TD +(READBUF)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +1.91 0 TD +(\(READLINE\))Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT8 1 Tf +1.91 0 TD +(\(LISPXREAD\))Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT8 1 Tf +1.91 0 TD +(\(LISPXREADP\))Tj +/TT6 1 Tf +7.2012 0 TD +(,)Tj +/TT8 1 Tf +-43.7556 -1.2889 TD +(\(LISPXUNREAD\))Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT8 1 Tf +1.0378 0 TD +(\(PROMPTCHAR\))Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT8 1 Tf +1.0378 0 TD +(\(HISTORYSAVE\))Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT8 1 Tf +1.0378 0 TD +(\(LISPXSTOREVALUE\))Tj +/TT6 1 Tf +10.2017 0 TD +(, )Tj +/TT8 1 Tf +1.0378 0 TD +(\(LISPXFIND\))Tj +/TT6 1 Tf +6.6011 0 TD +(,)Tj +/TT8 1 Tf +-43.7576 -1.2889 TD +(\(HISTORYFIND\))Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT8 1 Tf +1.31 0 TD +(\(HISROTYMATCH\))Tj +/TT6 1 Tf +8.4014 0 TD +(, )Tj +/TT8 1 Tf +1.31 0 TD +(\(ENTRY\))Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +1.31 0 TD +(\(UNDOSAVE\))Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT8 1 Tf +1.31 0 TD +(#UNDOSAVES)Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT8 1 Tf +1.31 0 TD +(\(NEW/FN\))Tj +/TT6 1 Tf +4.8008 0 TD +(,)Tj +/TT8 1 Tf +-43.7561 -1.2889 TD +(\(LISPX/\))Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(UNDOLISPX\))Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(UNDOLISPX1\))Tj +/TT6 1 Tf +7.2012 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(\(PRINTHISTORY\))Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-30.4473 -2.0667 TD +0.0944 Tw +(The function )Tj +/TT8 1 Tf +6.0697 0 TD +0 Tw +(USEREXEC)Tj +/TT6 1 Tf +4.8008 0 TD +0.0944 Tw +[( invokes an old-style executive, but uses the package and readtable of its)]TJ +-10.8705 -1.2889 TD +0 Tw +(caller. Callers of )Tj +/TT8 1 Tf +7.6177 0 TD +(LISPXEVAL)Tj +/TT6 1 Tf +5.4009 0 TD +( should use )Tj +/TT8 1 Tf +5.3125 0 TD +(EXEC-EVAL)Tj +/TT6 1 Tf +5.4009 0 TD +( instead.)Tj +ET +endstream +endobj +98 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 15 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +100 0 obj +<< +/Length 66 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(13-25)Tj +ET +endstream +endobj +101 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +9 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 277 +/Height 122 +/BitsPerComponent 1 +/ImageMask true +/Length 4271 +>> +stream +???????????????????????????????8/};~vߺ翞ۻ><w?????8/f;̓393$ݿw>80????3?8/pa;$̙2g> +stream +????????????????????????????????????????????????????????????8/`?;ﻯ??;;?<}q???????????????<?;???;?8?;?;?8????????????8/{ߟ?;ﻻ99??>?>?>?:?<?>????????????8/q x???;ﻮdr99??> +stream +??????????????????????????????????????????????????????????????????????????????????????8/w?;ﻷ??>?=w?=w?=?=?=w?>w?>??????y???3?'|~|>?8'|~>?<' >~>?<dɞ~~>?8Іfdɜ<|~|rD99yO?O??>?=?=?=?=?=?>?>????????????8/q x?8?;ﻮdr39??>?=w?=w?=?=?=w?>w?>??????????y????y?8/`߃p s?ssy?> +stream +??????????????????????????????????8/q?;ﻮ??>?=?=?=?=?=?>?>???????????8/w ?<9?? ?s?<?>?=w?=w?=?=?=w?>w?>??????y???3?'|~|>?8'|~>?<' >~>?<dɞ~~>?8Іfdɜ<|~|rD99yO?O??>?=?=?=?=?=?>?>????????????8/q x?8?;ﻮdr39??>?=w?=w?=?=?=w?>w?>??????????y????y?8/`߃p s?ssy?> +stream +????????????????????8/;y?ɞy?ɞy?ɞy;ɞy=<99????~?gw۹><}> +stream +?????8/ǽ;y?ɞy?ɞy?ɞy;ɞy=<99????~?gw۹><}> +stream +??????8/;yg3`A9H?????8/ārr ?6y?;̟rrd󔜜??"y?> +stream +???????????{{;w<}o?????>>=w=w===w>w>?????{{3;3<}oÇ??????????????????? @#H!DH B  DH# B DB(! +endstream +endobj +26 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 203 +/Height 110 +/BitsPerComponent 1 +/ImageMask true +/Length 2861 +>> +stream +??????{׾;=<}??????==>>???8???????89<>???9{?;<}|x?x??5????==>>???8????????y;?y?|?y>{?y;>y<}|x?x3??59????????????????? @#H!DH B  DH# B DB(! +endstream +endobj +49 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 203 +/Height 110 +/BitsPerComponent 1 +/ImageMask true +/Length 2861 +>> +stream +???????????????????{^;<}??????8=?>ݻ~>o~>ޯ~>:ݻvϺ<ݻv>Ǐ??????&~?|>~>{מ>~;&&~<}p$?|??????8=<>ۿ>߿>߿ۿ>8:v現8????????|>>{׾>;=&<}p???????????????????? @#H!DH B  DH# B DB(! +endstream +endobj +56 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 408 +/Height 178 +/BitsPerComponent 1 +/ImageMask true +/Length 9079 +>> +stream +????????{;<}??????88;;;;;;;????????~y0 ?~yy?|<y?}y?yp?99?39s?y0????y?y02d x3< yd <3dsyNI9L~OdN?{>y@00``~9@ `???s8B??s'?g'8>s8??Gp'`}xx??????Ld?̟3$&yɞ?̟$&yϞ?Aß$ CL?̃$3&pGL>?̟$&fL?̟3$&O?ϞNɜ?d00`?N 9???????`Osɲ0`s?'Ϝs ''?'s g'>'ɜsL~ g': ɜ̞pLB 0rg'ës8B'ǟs8'ǟ:`@xx='ë?>?????0g3q96@db?g' a9"OdL?g' a"OdN?' LI"O N?&sLIAdL?&s9OdO?&s9OdN?y`1y9@ `???????{׾'ϟ$L$??; ! $3?<} g'Ϝ!8d?3??g'Ϝ#8d3>y?? `@#xy??????????????????? @#H!DH B  DH# B DB(! +endstream +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +102 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +103 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +104 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +105 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +106 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBGHIG+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 107 0 R +>> +endobj +107 0 obj +<< +/Filter /FlateDecode +/Length 20018 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($C"(P81 r(ݷّffɆVI ASZRM)M))4|-*PRi nxj3{ߛ{o oN~?p>{ - +Lx+ +7s'&F`=c`,#Chw/C>bq(^i筭OlA}(*Bj v(o S%x|&#y/,Bԇሙ\.D.#aW:Pi2p8~鈒G7q s#TI|EB.n*:U栾#~+QGcvkp֒-Wz4|2[ R<^nj=c^Cro_02n"̀f HejXkm\k6l|z_q/srBD7T-Q TҨay E t%`D5RY F h FWPU" tވ+Az3ÍFC/]V3_Xyte:Z`MA8od(&-fq2FEꉣ Pw?i&j^DyF9dH5MŀXfͧI;d4@*ehУx)nhŞ?%vkT7L]1=4gζ47+ jjDOm|"𺏹 v^NCM> }3~lӪӊx5Y,R7y%ZѿeT^ek7AQۅ &;.6A@13wZӎJ47nBk,Yf˗c4Kď{m˒E8.-FI >%gP{',h`y>饴p6Ɓwf#ڣ3dby]4P?ќO'J;::/5+oې3/^:s]rΑpT>±9[5}>Tw.';YeC0wmm#=[l`88/%>;5gVqh(D>mK0 JMP]jtr>Jmi%&]@dxϝm":@BB{_݇tUQwᒬπ*Ŋ^Pm(]dz61HesG +P'Yۻ[,hp/IS F^ +j!Q/sHddH{YMj`t2*ASGiHHqrE{K0(&NѮ#AV3T|Agl 1G[/s pMrg*d|#gW %k[:o02QϨu6qTCh;~,nVáFŅٟV8nCG}~S@H}@-!PI`:c|QH}t.>X;}`Wv(Y*t *ɮlU $Cl=3:R@FqEY%P9{F;9~;ZnY 茹M;OʹKWlʷ:Z`]U?cj-d弿_ʉGu/ϔœ\.UvF 6yv"`[=Kܒ&+r32:BnICXRy:lJje+ִ>vQyl.t$d,V=KUQ-\胠R([VK8<'X:UD:Ye:;6I > 7QI2M>:܄!R +7yn%,\ru +Ȉt晞!ƺpP0kp#' |Ib'bAF`űߘ1تhc_2.!Cϣl; +1 .Bf6&}H8'8n7ӌoQ7p<x㐏Ĺ> )Gǘ`j0ɚEGQxއn p.7  qH>!B%~RN69HL119Mzr\%Z:i.u1!0UiMѧh%]rt%} t }ѷ{~B/?h ffY{&l"ʊ dOl){fU؛v}N,.+lS.'| +1/R<|3}]'~;x'?̏~(;/'̦ SV'ቛJwPg&A,TIS (3 1*qf( ++5I3##uXi[CЭj!KeV=R ڌ}1UH֔ELf`ez(~BT +FlCWh %Ml b#V&QfO>a*6.= ?cXPa~1NJ6fQɰg6|Q_ p˺fl[rR̸)v%9$F{nex_AKݛm1jwZõ2jɥ'-[Fgl@E-poô[[rZH"p 2`KEȭU'nHZK;~jkɖ@RKT>4{Jz"hkFK]] q~[S|0D/bI| A#akF(Z|6q.眤<m:(5×Be+HI[uNPv#'NrdnV(q Nti4[`HAus{lP~i[Eݽ};na5G't%W߶߶lۺ[_ޱ,y0l `/Jpa",L +TZE״pv/]E%?VK(9$1.Hpݯ #lHleYD}!Ӭ&28|S&`iz-B =>6c$\H ?|RZD[sMrAp2 hlvnͲxNAٖcQ7xgD2m>(pd%, +-&T R Y*YwmKwZ@UZjuٜ_5 ye3V,go^X\Xo;8S>*!gEiPSzl L pkAEz^  ,ώtnW>ΡM ]QiYc*]Z*덌n¼ҴۚEeyhrWMeuCmaŌ=R[,gv4ūh-˝~mtlt \NEb;aVd1;tɮJX'lF<('7.&cj3BnTefUO(- +n392HIGD/ ڣWͥ4D"iWye"Ȋo!5f]Jɱ)N-Lf7qU'-!xTKkE,8O%3}堋_Ġ`=F2.]LedbY!:/I"[,Wvˤ=Y_@d|ZXY@Vo47 PK9tev|i+ Y4]c4; Y2`YX gLyB%ASJ؊hݏ?XZ,ZҖ%8 ̂jԍRK¼2ټט?%UJ9C':g..?/ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStWRKAİX{== x^.ww\9 ߚq?W?NhN-:zTDO!WhG,h)cxz}GGVWAhSdcE{%`нdA"mψԒn^1vt,y}4|ˊ^ox6g@EV4 @3h UFF;b|thƶGcߞreQc6*W_09K_0(,f}"ei:XEHQ e6|'Y_QSO==Znlgr J}Jn1 pu3dePjtL]gB6E= +UеA~%˂R*XZ:j12O-}XX5C-^:p>'[NV-K1h2=\yhJ--'h4Oj>Ma`/=0x xNï7pf,yѣգ&e5} qt@DE3-.[`;.kZ܌Oo.m]܋u&Np +_")"+*""%z@ZH;yt2Bd"oߑ$yK'%$qpk\3%I. q܏q m=./ګ( +{}o]HY-3vYlTDBY@!jFS;#Cd:ڴ:5Fww(ҙF;S'&mEƈdZ;cvl؉2{Y5F1yo9~_ +%rr(K7>[}wߑWUY < |ZGZx\Hcv1~`ۄݰޒp-剏 +r q$[(_\۱r]VykVeybmؕxa8}; &.'eusI+dO-(,5|K=FK㞎2q~adYRɝ^H)JBlJ&[kHK*pxOE|tM hRh1)!YXq]%|t^n?YriXZƪtRޮW3@>i钙An#^n-qx"dy phE3rCWIw򵾮&>O&x 6gygs3dUŞVpp$_ X4-AE$.puh^ϽX<&Z  +K!@4کT]k'=I}!fkx4qɴ;>SWL]r` #OsO8dl?|̙|7uw8v:cUF/9m~b^H kA"ˑئ;+4ĥbM|gMXp|+_1yFj;M`yI}7CR9a{rMtxc|mtٻ^H~!yX"p@L]{8=.$ ߅Tj +dA.DVcU<1?rV/5haŠ;ȯ) [D{L$in\ssd "/*YK$k+N.M@%=%!?ɿe%A +Qc'u!T:Ntu h%+j60H6dv{Qzh?HD%I)OzRʖ3+GnV)UKˑIIjF&ŤI.tY9iyڠtML Cff6fgNRyD6}Mc,\Cgl6&d fNA|1GVexGaY*\ay\sf܄!C=U۸ } Y-TrߏKh"C9,mدPO3؈M2aagA#8;bŚ& # U0^#,U#cpFG yȒ(O^5r)dUm[m 5e~~yIr]TRV5qWV?IȌm=j (o~ꘆBxWZtDWg4 ʓ˗t~|j?~˗e|nѠctߩQ?)p4(H lgN@Nء#;cGPYי.J#w^32%šXA {Eu{o{5 A6p"]JG$j2NFQ +#r4Ԁ&0-A@8c;Crf2"iuc5j;H^KS8w~V'B{ -8Yhsn<\嫈,4cLh~]˥nɭQQwQD=XV|柙{a-t ;[_*d6fW_RY}S̵#Ň +[B9;zod:un]n^clo(nlHўʦP${eivl[ӥh5o\r~$_{?<0"Җk 撇;i6?%rQmZo}>5-lfXx/N]x'~gۥgPޑw>PjuQKo&7go| +ȏ "VLcw뛬L\ ROQW\[of*?J!aThR4y2KȦ]0&S}5fD3qtp ҢS{ 5${®] ڌTa785h}lxZy6vKxJ* Za2LE55JQOp̅QOb +Sz?}pQx5qWQs&j!a*MEU5uU tr)'H5{"K2W5d=i"ͤlC!]ir1 rF []h\z=Bz#5-ԤΡun].Ut m_zQCO?h^YEu- ښ¦ںUZ6}ճedPs=ְuf~ W*NcO.vس9ϓ+A|QBW#x51uycDcܻ^d:B(F;g=݋*yGZ?ڥWRB2+c7* y(L&ڽ|4ͫ`ugq71uюd4\§& +LR$1$gV\7A@v9w_D>WXUM&/I _7 'aQ#Y x.xgؾ/ )6>Bx+ea#'7F:BS5bX4~,'@?d=v?[d$88T)`L3RcCgR[=RaQ,+Nԍ#.)dd@ Bt50+Njvh7 %?6Iq]nBRx PNߘ,C:s6IO<'t!ށCxQhNC_#Xĺk4)ʹx6t^9h.dJ\AxVX챐%d4ȢfV.Q +>z6HyOXmMXLmInXiأKu> Calœ"KtZ8f{1LOaP `%KeW5#X|"4y,y^2Y\ ARo6h.ӚW+Dɑ-=aRlEɥ[eD[d5s ;tYH~8VcqiyZ@!bp5f "@| (YhYYdِ[=c/wnKFT }KkW g+a\[X2,-Dr@=zZe`A }Zcr/ltnoJEXY0pɺz^a,$Τ"vIW!u>$e璘+Gn-,-ćÝnFJfM뙷1ƴݸmɲ덦ʩҀ#{S6>ZeEF4t-h.GU.l-yu53]cާ=l`hQq-0XYh+cٽS:fejc۲tfq0 + +rm~ǕsC0$k좕~bA-16BOt g2+M&W.ӜyqSSJڥ,'mZCSEqi\Zxun (pL/秡lF' Z(IܳaS%{ĺu꠴p={EyyE/ȵqJoS82It S ~ $:`VbGgk=.^Chg'- .{t*CeK ZLj.E:`1\wiBp1"jw]tRע'linlujR4"8 3Nm@ WvޖBW +f1!djcA7iZ8 TFg&N %A(-4nmv.'c ޵П9E>1eTq -xA¹#TZ(޵Pw:5.->Z$(^Êr%-HAy@OL +=4A^#n‘Bt4؋B$5,Bu~2*EFxъ-xVrVT8,& LMVH9#6YK΅(vfXMZ6Eh]Ehu2p0x6e;V k!U%i+8 b=hL_ = }BhQǀc:< "/(s6l9G9WB ޷4ZHJ;g[V{ эNCRmiяZ oϿ9K-ZfOpٷp{吉9̎,>)A 8Uތ-B#.AʺSZkc MZPh= `eZ҃q'f;eNM% ^[l<#S`ѯ/d +Kw`p#2vb Km:hZbWaD%u__u'˵e\# /s%+ڛ6Z$o'KrvM66mo"rWw`)N†*. xrK}T Ya9,gpA{B:_wyTeE2(I ђ?mFԆXYC+h ';Z+jZQk%A9Zb\-.v06ϚQ7c7l$D½Y[fMsrѯ |HspihC`%#BpY#erZ%nhӡB{J`k1Z<2^D(m _=~X< K)'~xWTߡyyi1d, P 7eaǾ*rwp[v0D039QLoͷlk \ I"5ǴRΖ/2軄pl-uhC;65?-Ej>ҍBm;޺1Z4.B.- y; L~#F]}J(!6`q?N|B+MGEN􎀴N C>(p߂1pa- ~ /oЀm \!$CyLoK{X,oɫdKn)2+QN(_V\PkU+E_W T (0HFmYp1X$'Z$PXiTL11x"]>V14k#+YT93޹ܙf'*`XoR F3sl!gzmgmcv]ea,Cy"a| _3Λ&G9oKROI30iT,M*ER;itD:/]l49Kvȓry^n' +S"~ʏ\e2K,VV)((;0ݫV('ʿKJTU5&^:@f05@OGV%&#Lh +D!ZdQvH&bDd H{b=DRu1h3 +t_Āo,u Bz0%|~5P$a4EGA|d4T3.#܌r3Yt( R8D<!10q#BA1JHU7)uAԉ} &Ζ:?A}n@q'j7smoG1<й(z(me~+ +7@zE{(l(RG9n}w'Ox`ٳc;oЭsvD|3Q18B*_ge)0&t%@NGPD+./HsJw++ }Ҭi-yK[~m^ɲ̟,N6||QoQ4BIk0?ly01ߚ 8Unx0ZXJX oA3Z1cp ס:*j<#IoGII!'d0J2d@&"22 +E*|ڪBRK|@~CV&üJnv5%T3/i4}3dJI4ŜET:ܱ.*F"7Pmt撇Q=E?ez~Eovzv#a1όdQbYxĞdSH(!ܑGʧ(0DD9e(-F%R݈mO"&j +uJ1yԽ^‚-dvƒ˃-vWr?)؋G #/SHldyqٝ=QXޫ XA[J\ +JIg5K^әs}M$Kb}D)t"K\VInmSZ55 c%OcI'%}luéc)pbSXGAv8#dO~??3lrULH16B(H`-Ԫ Gռn6\6ōӟ(!wNDzi\w%.C ==A'YGj>y>kh9mo=rUݑs#p)X1ty9v,>8m?l& ]` +{dI9~q*O%V, KLQ}JGلƄ-]}nJ-(k+O%;oF ><"(0‚> 2 ]X ~'|䜔S]|H=8|A%jS_9`Ε-* s-}"7Ϩ +9+#2@PK]}Z~_/#G{@^S+~HG U)='9$ + }B.E- DGFdnMY~_ȗDJƵb'C}:IQQ"52FCרrn|@"U|H c}ܟ䦽~LsVjSO %(H=|n^~ww +~ iۃ~%q޿ĭ=<+}^i%Ӄ]^|@j=ʍGr7HsrVzq]PQya/!G?9.oOwp1?I M4 }gp|i ]X".y9@&dQi;S^tvi/RXܜHe\R#dƆJi7C |t`Z.B,I]I9 ێ6N)N|Y%,2渇l$iJ/գ4_mm<:x(yǭ#W#!n2 GP%:&7'|a 3ck"jmS-;oTW;Hˌo), m\_F>MK-AYF6$=f(m((0#| +pgy4چ.v`8tlj'۶1`fX"?ꢂGsy2akD]aZMa``.4V*JFs%b^ӈf=iv->"1zq&4G {#~mQ\ml Y,2Ke%eU^Ȟ ^ L8n|%rt &3W&;OW +Wy̾$T })olO{c8FշX-$Μ@B,taϩd,( +Zz1mq九So8!p v@ ) ]k$~XPuc7z>#܈qNG -C/1iF$MݎY:q>zH8:SM e{*kИt Gb"郤!VIXjblTneY #)h-v`rkbP[РM+K&-aV=Ύ@#*v_9ͼJszտ?x>_?wwd??Cc܃8~~ + PPp]%1+TYEńT)bDE*EK"Q|g4QAӈ(G#DTjR40"ip_vљt>sϹsk셉C^٠N,@[•ک1TM٬Ju4gVDYB9vcԬe3)`G).}Uۂ]BZ8#=nFM)K| +)(U]P^D;Wӧ4'^i]Ӈ\qiI`Gc>X5?wtȺ1_J8|>LڶIn[?^0AٻE}o{&ZI:limY2sL즭7Fgѵb;2 %Z\v,;.}iG6E1/Paξ{hDWyqis.oJ5i1yrhI՝ך*\/մL .9QPSѕSu,R-y@!(87Qx5S ?=#_5JZp<<-oH%0^T6gPJIqgw7/-^[]nҸ %U'o\TMɉ$Lq4L4'SErD4l>42/P %_ MJAh"ih(iC mܴMӛSӨGz9M{MxFCՒ9TI=݊IEV%%(0dIYIA+vGCx~;v OېoM=-rB;75*x ~ l//л4{@8%t_fM6 +YgF3փ'1C>X kj:D<\w/42UQ%9ܐaK%U +κ +|ԗpgds7o]'UNdA=at{T[~Z99~[ "3E P P ~6J#An^ M"hOhdډz;DP{;z}pǴ^anf-l/zֵeZ2WaMCp%]avcˇfܶws`ʐecODmkeK.,TǖZʽ`K9X',2SxDhDbZғC?Q* ?"z'3=9S:V>,|Ocli6 f]V? cRQ'giT0Bo"֧ &9r8 ƁR ƂpL%i4 4"#!Gf0 yk0 G&-0 /N@a@/al}ɉ9<>eC?}$7{A3rܳ<~/Jn: =-t}ȅfsA4 +Y:VPuBt9BjA5T*(E2@l)в'Xíg?!IPE~t -+XNyJ^,qءۑ[vk9iὸ;4Ń<\L,^Z^,{M@NZ޾z.Izo`͋T8CXƉ8YD!,0;Xz?!ECqQM-| iybG9_XsnlݬLV&uWZS)4%ҝk<Yl;듕ԕ!{v]n8v_BsdU콠*YTtZ))UT{xpwf29LbpW]N㓽5Qe źݚ/?NqO$B$?޶#ޜzd5K"=#+86Yڱ6Y\f9o\Dޚ634hA8Pfrx{t6 Y_?_?`lin=`;?s;'Nw +{$9ۡ`9}>ĺvuV  +endstream +endobj +108 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +109 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +110 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +111 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +112 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 120 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +500 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 +0 0 0 0 0 611 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 333 0 333 0 0 +0 444 0 444 500 444 0 0 0 0 0 0 0 778 500 500 +0 0 0 0 0 0 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 102 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 556 0 0 0 0 0 0 0 0 0 584 0 611 +0 722 722 722 722 667 611 0 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 0 667 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 103 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 149 +/Widths [250 0 371 0 0 0 0 0 333 333 0 606 250 333 250 606 +500 500 500 500 500 500 500 0 0 500 250 250 606 606 606 0 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 667 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 104 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 600 600 600 0 0 0 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 0 0 600 600 600 0 600 600 600 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 0 600 0 0 600 600 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 105 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBGHIG+Symbol +/Encoding /Identity-H +/DescendantFonts [ 113 0 R ] +/ToUnicode 114 0 R +>> +endobj +113 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBGHIG+Symbol +/FontDescriptor 106 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 91 +/Widths [278 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +0 0 722 667 611 722 667 0 667 667 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 108 0 R +>> +endobj +33 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 119 +/Widths [600 0 0 600 0 0 600 0 0 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 600 0 600 600 600 0 0 0 0 0 0 600 600 600 600 +600 0 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 109 0 R +>> +endobj +34 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 68 +/LastChar 115 +/Widths [778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 444 0 407 +0 389 0 500 0 278 0 0 278 0 556 0 0 0 389 389 +] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 110 0 R +>> +endobj +35 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 125 +/Widths [600 0 0 600 0 0 0 0 600 600 600 600 0 600 600 600 +0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +0 600 600 0 0 600 0 0 0 0 0 0 600 0 600 600 +0 0 600 0 600 0 0 0 0 0 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 111 0 R +>> +endobj +42 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 722 0 0 0 0 0 0 0 0 611 0 833 0 +0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 500 0 0 0 0 0 0 333 0 611 556 +0 0 389 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 112 0 R +>> +endobj +114 0 obj +<< +/Filter /FlateDecode +/Length 217 +>> +stream +HTPn0 {ꐀn9 \BC#'2aDpU޳{EMFGq+;N:d32m8w4zh!?p0\ -)!+!H-XgYծ-.AdMBYGA>oخjE7=|9Y,#ق#|&r_j} +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +46 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 48 0 R +/Contents 47 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 73 0 R +/Contents 72 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 76 0 R +/Contents 75 0 R +>> +endobj +77 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 79 0 R +/Contents 78 0 R +>> +endobj +80 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 82 0 R +/Contents 81 0 R +>> +endobj +83 0 obj +<< +/Type /Page +/Parent 58 0 R +/Resources 85 0 R +/Contents 84 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 88 0 R +/Contents 87 0 R +>> +endobj +90 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 92 0 R +/Contents 91 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 95 0 R +/Contents 94 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 98 0 R +/Contents 97 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 101 0 R +/Contents 100 0 R +>> +endobj +115 0 obj +<< +/S /D +>> +endobj +116 0 obj +<< +/Nums [0 115 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 21 0 R 27 0 R 30 0 R 36 0 R 39 0 R 43 0 R 46 0 R 50 0 R] +/Count 10 +/Parent 57 0 R +>> +endobj +58 0 obj +<< +/Type /Pages +/Kids [53 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R 74 0 R 77 0 R 80 0 R 83 0 R] +/Count 10 +/Parent 57 0 R +>> +endobj +89 0 obj +<< +/Type /Pages +/Kids [86 0 R 90 0 R 93 0 R 96 0 R 99 0 R] +/Count 5 +/Parent 57 0 R +>> +endobj +57 0 obj +<< +/Type /Pages +/Kids [11 0 R 58 0 R 89 0 R ] +/Count 25 +/MediaBox [0 0 612 792] +>> +endobj +117 0 obj +<< +/CreationDate (D:20210202102648-06'00') +/ModDate (D:20210202102648-06'00') +/Producer (Apple pstopdf) +>> +endobj +118 0 obj +<< +/Type /Catalog +/Pages 57 0 R +/PageLabels 116 0 R +>> +endobj +xref +0 119 +0000000000 65535 f +0000216603 00000 n +0000000016 00000 n +0000003924 00000 n +0000212043 00000 n +0000212437 00000 n +0000212942 00000 n +0000213510 00000 n +0000214078 00000 n +0000135255 00000 n +0000189792 00000 n +0000218773 00000 n +0000216684 00000 n +0000004098 00000 n +0000006083 00000 n +0000214427 00000 n +0000139668 00000 n +0000145902 00000 n +0000152136 00000 n +0000158370 00000 n +0000162784 00000 n +0000216768 00000 n +0000006298 00000 n +0000010540 00000 n +0000167198 00000 n +0000172417 00000 n +0000174562 00000 n +0000216852 00000 n +0000010742 00000 n +0000015413 00000 n +0000216936 00000 n +0000015556 00000 n +0000022118 00000 n +0000214751 00000 n +0000215194 00000 n +0000215483 00000 n +0000217020 00000 n +0000022300 00000 n +0000031729 00000 n +0000217104 00000 n +0000031887 00000 n +0000038524 00000 n +0000215945 00000 n +0000217188 00000 n +0000038695 00000 n +0000044387 00000 n +0000217272 00000 n +0000044545 00000 n +0000049932 00000 n +0000177566 00000 n +0000217356 00000 n +0000050150 00000 n +0000055744 00000 n +0000217440 00000 n +0000055926 00000 n +0000060648 00000 n +0000180570 00000 n +0000219150 00000 n +0000218910 00000 n +0000217524 00000 n +0000060853 00000 n +0000067085 00000 n +0000217608 00000 n +0000067254 00000 n +0000071897 00000 n +0000217692 00000 n +0000072079 00000 n +0000079921 00000 n +0000217776 00000 n +0000080090 00000 n +0000087104 00000 n +0000217860 00000 n +0000087286 00000 n +0000093042 00000 n +0000217944 00000 n +0000093211 00000 n +0000098036 00000 n +0000218028 00000 n +0000098216 00000 n +0000103999 00000 n +0000218112 00000 n +0000104179 00000 n +0000110269 00000 n +0000218196 00000 n +0000110425 00000 n +0000114784 00000 n +0000218280 00000 n +0000114940 00000 n +0000119796 00000 n +0000219048 00000 n +0000218364 00000 n +0000119941 00000 n +0000126135 00000 n +0000218448 00000 n +0000126304 00000 n +0000132177 00000 n +0000218532 00000 n +0000132344 00000 n +0000134907 00000 n +0000218616 00000 n +0000135039 00000 n +0000135157 00000 n +0000189933 00000 n +0000190131 00000 n +0000190338 00000 n +0000190539 00000 n +0000190731 00000 n +0000190923 00000 n +0000211032 00000 n +0000211228 00000 n +0000211430 00000 n +0000211634 00000 n +0000211837 00000 n +0000214222 00000 n +0000216312 00000 n +0000218702 00000 n +0000218731 00000 n +0000219249 00000 n +0000219373 00000 n +trailer +<< +/Size 119 +/Root 118 0 R +/Info 117 0 R +/ID [] +>> +startxref +219445 +%%EOF diff --git a/docs/medley-irm/14-ERRORS.TEDIT b/docs/medley-irm/14-ERRORS.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..75bcdca5b0f50613f0f857c4e0c859ce98743c47 GIT binary patch literal 104096 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 +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-1)Tj +/TT4 1 Tf +10 0 0 10 353.31 568.2 Tm +(14. ERRORS AND DEBUGGING)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +0.0122 Tw +[(Occasionally, while a program is running, an error occurs which stops the computation. Errors can be)]TJ +0 -1.2222 TD +0.0411 Tw +[(caused in different ways. A coding mistake may have caused the wrong arguments to be passed to a)]TJ +T* +0.0078 Tw +[(function, or caused the function to attempt something illegal. For example, )]TJ +/TT8 1 Tf +33.5738 0 TD +0 Tw +(PLUS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[( will cause an error if)]TJ +-35.9742 -1.2889 TD +0.1322 Tw +[(its arguments are not numbers. It is also possible to interrupt a computation by typing one of the)]TJ +0 -1.2222 TD +0.2478 Tw +(interrupt characters, such as Control-D or Control-E \(Medley interrupt characters are listed in)Tj +T* +0.1356 Tw +[(Chapter 30\). Finally, you can specify that certain functions automatically cause an error whenever)]TJ +T* +0.06 Tw +[(they are entered \(see Chapter 15\). This facilitates debugging by allowing you to examine the context)]TJ +T* +0 Tw +(within the computation.)Tj +0 -2 TD +0.13 Tw +(When an error occurs, the system can either reset and unwind the stack, or go into a break, and)Tj +0 -1.2222 TD +0.0733 Tw +[(attempt to debug the program. You can modify the mechanism that decides whether to unwind the)]TJ +T* +0.1133 Tw +[(stack or break, and is described in the Controlling When to Break section in this chapter. Within a)]TJ +T* +0 Tw +(break, Medley offers an extensive set of break commands.)Tj +0 -2 TD +0.0011 Tw +(This chapter explains what happens when errors occur. It also tells you how to handle program errors)Tj +0 -1.2222 TD +0.2044 Tw +[(using breaks and break commands. The debugging capabilities of the break window facility are)]TJ +T* +0.0189 Tw +[(described, as well as the variables that control its operation. Finally, advanced facilities for modifying)]TJ +T* +0 Tw +(and extending the error mechanism are presented.)Tj +/TT4 1 Tf +10 0 0 10 54 339.6 Tm +(Breaks)Tj +ET +1 w +54.01 336.89 m +510.01 336.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 322.94 Tm +0.0744 Tw +(One of the most useful debugging facilities in Medley is the ability to put the system into a break,)Tj +T* +0.0433 Tw +(stopping a computation at any point, allowing you to interrogate the state of the world and affect the)Tj +T* +0.0522 Tw +[(course of the computation. When a break occurs, a break window \(see the Break Windows section)]TJ +T* +0.0022 Tw +(below\) is brought up near the TTY window of the broken process. The break window looks like a top-)Tj +T* +0.1611 Tw +(level executive window, except that the prompt character is )Tj +/TT10 1 Tf +28.0335 0 TD +0 Tw +(:)Tj +/TT6 1 Tf +0.75 0 TD +0.1611 Tw +( instead of )Tj +/TT11 1 Tf +6.3251 0 TD +0 Tw +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +0.1611 Tw +( as in the top-level)Tj +-36.0954 -1.2222 TD +0.2333 Tw +[(executive. A break saves the environment where the break occurred, so that you may evaluate)]TJ +T* +0.1267 Tw +[(variables and expressions in the borken environment. In addition, the break program recognizes a)]TJ +T* +0.1289 Tw +(number of useful break commands, providing an easy way to interrogate the state of the broken)Tj +T* +0 Tw +(computation.)Tj +0 -2 TD +0.0355 Tw +[(Breaks may be entered in several ways. Some interrupt characters \(Chapter 30\) automatically cause a)]TJ +0 -1.2222 TD +0.0756 Tw +[(break whenever you type them. Function errors may also cause a break, depending on the depth of)]TJ +T* +0.1444 Tw +[(the computation \(see Controlling When to Break below\). Finally, Medley provides facilities which)]TJ +T* +0.2278 Tw +(make it easy to break suspect functions so that they always cause a break whenever they are)Tj +T* +0 Tw +(entered.)Tj +0 -2 TD +0.0456 Tw +(Within a break you have access to all of the power of Medley; you can do anything you can do at the)Tj +0 -1.2222 TD +0.0267 Tw +[(top-level executive. For example, you can evaluate an expression, call the editor, change the function,)]TJ +T* +0.0256 Tw +[(and evaluate the expression again, all without leaving the break. You can also type in commands like)]TJ +/TT8 1 Tf +T* +0 Tw +(REDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.3933 Tw +(, and )Tj +/TT8 1 Tf +3.2295 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.3933 Tw +[( \(Chapter 13\), to redo or undo previously executed events, including break)]TJ +-8.0303 -1.2889 TD +0 Tw +(commands.)Tj +0 -2 TD +0.0044 Tw +(Similarly, you can prettyprint functions, define new functions or redefine old ones, load a file, compile)Tj +0 -1.2222 TD +0.0355 Tw +[(functions, time a computation, etc. In addition, you can examine the stack \(see Chapter 11\), and even)]TJ +T* +0 Tw +(force a return back to some higher function via the functions )Tj +/TT8 1 Tf +26.9502 0 TD +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-36.7925 -2.0667 TD +0.0356 Tw +(Once a break occurs, )Tj +/TT13 1 Tf +9.5221 0 TD +0 Tw +(you)Tj +/TT6 1 Tf +1.5 0 TD +0.0356 Tw +[( are in complete control of the flow of the computation, and the computation)]TJ +-11.0221 -1.2222 TD +0.0189 Tw +[(will not proceed without specific instruction from you. If you type in an expression whose evaluation)]TJ +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +14 0 obj +<< +/Length 5390 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-2)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0911 Tw +[(causes an error, the break is maintained. Similarly if you abort a computation initiated from within)]TJ +0 -1.2222 TD +0.05 Tw +[(the break \(by typing Control-E\), the break is maintained. Only if you give one of the commands that)]TJ +T* +0.0456 Tw +(exits from the break, or evaluates a form which does a )Tj +/TT8 1 Tf +24.6217 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.0456 Tw +[( or )]TJ +/TT8 1 Tf +1.532 0 TD +0 Tw +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0456 Tw +[( out of )]TJ +/TT8 1 Tf +3.2407 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0456 Tw +(, will the)Tj +-41.3964 -1.2889 TD +0.1733 Tw +[(computation continue. Also, )]TJ +/TT8 1 Tf +13.7329 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1733 Tw +[( does not turn off Control-D, so a Control-D will force an)]TJ +-17.3335 -1.2889 TD +0 Tw +(immediate return to the top level.)Tj +/TT4 1 Tf +10 0 0 10 102 502 Tm +(Break Windows)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 499.29 m +558.01 499.29 l +S +BT +/TT6 1 Tf +9 0 0 9 126 485.34 Tm +0.0344 Tw +(When a break occurs, a break window is brought up near the TTY window of the borken process and)Tj +0 -1.2222 TD +0.0033 Tw +(the terminal stream switched to it. The title of the break window is changed to the name of the broken)Tj +T* +0.03 Tw +[(function and the reason for the break. If a break occurs under a previous break, a new break window)]TJ +T* +0 Tw +(is created.)Tj +0 -2 TD +0.0311 Tw +(If a break is caused by a storage full error, the display break package will not try to open a new break)Tj +0 -1.2222 TD +0 Tw +(window, since this would cause an infinite loop.)Tj +0 -2 TD +0.0878 Tw +(While in a break window, clicking the middle button brings up a menu of break commands: )Tj +/TT8 1 Tf +42.6704 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +/TT8 1 Tf +-45.0708 -1.2889 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.68 0 TD +(revert)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT11 1 Tf +0.68 0 TD +<0042>Tj +/TT6 1 Tf +0.603 0 TD +(, )Tj +/TT8 1 Tf +0.68 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.68 0 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.68 0 TD +(BT!)Tj +/TT6 1 Tf +1.8003 0 TD +0.18 Tw +(, and )Tj +/TT8 1 Tf +2.8029 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.18 Tw +[(. Clicking on these commands is equivalent to typing the)]TJ +-18.2078 -1.2889 TD +0.1989 Tw +(corresponding break commandm, except )Tj +/TT8 1 Tf +19.1569 0 TD +0 Tw +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.1989 Tw +[( and )]TJ +/TT8 1 Tf +2.5907 0 TD +0 Tw +(BT!)Tj +/TT6 1 Tf +1.8003 0 TD +0.1989 Tw +[( which behave differently from the typed-in)]TJ +-24.748 -1.2889 TD +0 Tw +(commands \(see Break Commands below\).)Tj +0 -2 TD +(The )Tj +/TT8 1 Tf +1.9927 0 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.0689 Tw +[( and )]TJ +/TT8 1 Tf +2.3307 0 TD +0 Tw +(BT!)Tj +/TT6 1 Tf +1.8003 0 TD +0.0689 Tw +[( menu commands bring up a backtrace menu beside the break window showing the)]TJ +-7.3239 -1.2889 TD +0.0244 Tw +(frames on the stack. )Tj +/TT8 1 Tf +9.401 0 TD +0 Tw +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.0244 Tw +[( shows frames for which )]TJ +/TT8 1 Tf +11.2023 0 TD +0 Tw +(REALFRAMEP)Tj +/TT6 1 Tf +6.001 0 TD +0.0244 Tw +[( is )]TJ +/TT8 1 Tf +1.2637 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0244 Tw +(; )Tj +/TT8 1 Tf +0.7989 0 TD +0 Tw +(BT!)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +[( shows all frames. When one)]TJ +-32.2675 -1.2889 TD +0.0011 Tw +(of the frames is selected from the backtrace menu, it is grayed and the function name and the variables)Tj +0 -1.2222 TD +0.0133 Tw +(bound in that frame \(including local variables and )Tj +/TT8 1 Tf +22.5456 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( variables\) are printed in the backtrace frame)]TJ +-24.946 -1.2889 TD +0.05 Tw +[(window. If the left button is used for the selection, only named variables are printed. If the middle)]TJ +0 -1.2222 TD +0.2989 Tw +(button is used, all variables are printed \(variables without names appear as )Tj +/TT8 1 Tf +37.051 0 TD +0 Tw +(*var* )Tj +/TT17 1 Tf +4.3184 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.2989 Tw +[(\). The)]TJ +-41.9695 -1.2889 TD +0.0644 Tw +[(backtrace frame window is an inspect window \(see Chapter 26\). In this window, the left button is)]TJ +0 -1.2222 TD +0.0567 Tw +[(used to select the name of the function, the names of the variables or the values of the variables. For)]TJ +T* +0.3367 Tw +(example, below is a picture of a break window with a backtrace menu created by )Tj +/TT8 1 Tf +41.0368 0 TD +0 Tw +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.3367 Tw +[(. The)]TJ +/TT8 1 Tf +-42.237 -1.2889 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0133 Tw +[( stack frame has been selected, so its variables are shown in an inspect window on top of)]TJ +-6.001 -1.2889 TD +0 Tw +(the break window:)Tj +ET +q +145.5 0 0 -135.5 245.26 230.39 cm +/Im1 Do +Q +BT +9 0 0 9 126 81.44 Tm +0.0722 Tw +(After selecting an item, the middle button brings up a menu of commands that apply to the selected)Tj +0 -1.2222 TD +0.1344 Tw +[(item. If the function name is selected, you are given a choice of editing the function or seeing the)]TJ +T* +0.1267 Tw +(compiled code with )Tj +/TT8 1 Tf +9.3883 0 TD +0 Tw +(INSPECTCODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.1267 Tw +[( \(Chapter 26\). If you edit the function in this way, the editor is)]TJ +-15.9894 -1.2889 TD +0 Tw +(called in the broken process, so variables evaluated in the editor are in the broken process.)Tj +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 9 0 R +/TT15 16 0 R +/TT17 17 0 R +>> +/XObject << +/Im1 18 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +20 0 obj +<< +/Length 7759 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-3)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0722 Tw +(If a variable name is selected, the command )Tj +/TT8 1 Tf +20.0988 0 TD +0 Tw +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +[( is offered. Selecting )]TJ +/TT8 1 Tf +9.7249 0 TD +0 Tw +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +[( will )]TJ +/TT8 1 Tf +2.3515 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0722 Tw +[( a value and set)]TJ +-38.1761 -1.2889 TD +0 Tw +(the selected to the value read.)Tj +/TT10 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0156 Tw +[(: The inspector will only allow the setting of named variables. Even with this restriction it is still)]TJ +-2.2222 -1.2222 TD +0.1578 Tw +[(possible to crash the system by setting variables inside system frames. Exercise caution in setting)]TJ +T* +0 Tw +(variables in other than your own code.)Tj +0 -2 TD +(If a value is selected, the inspector is called on the selected value. )Tj +T* +0.1667 Tw +(The internal break variable )Tj +/TT8 1 Tf +12.8444 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1667 Tw +[( \(see the section below\) is set to the selected backtrace menu)]TJ +-17.0451 -1.2889 TD +(frame so that the normal break commands )Tj +/TT8 1 Tf +20.1501 0 TD +0 Tw +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6667 0 TD +(revert)Tj +/TT6 1 Tf +3.6006 0 TD +0.1667 Tw +(, and )Tj +/TT8 1 Tf +2.7762 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.1667 Tw +[( work on the currently selected)]TJ +-30.7941 -1.2889 TD +[(frame. The commands )]TJ +/TT8 1 Tf +11.0524 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6667 0 TD +(revert)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT11 1 Tf +0.6667 0 TD +<0042>Tj +/TT6 1 Tf +0.603 0 TD +(, )Tj +/TT8 1 Tf +0.6667 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.1667 Tw +(, and )Tj +/TT8 1 Tf +2.7762 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.1667 Tw +[( in the break menu cause the corresponding)]TJ +-24.833 -1.2889 TD +0.0244 Tw +[(commands to be typed in. This means that these break commands will not have the intended effect)]TJ +0 -1.2222 TD +0.0256 Tw +[(if characters have already been typed in. The typed-in break commands )]TJ +/TT8 1 Tf +32.4756 0 TD +0 Tw +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5256 0 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +0.0256 Tw +(, etc. use the value of)Tj +/TT8 1 Tf +-36.0017 -1.2889 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0078 Tw +[( to determine where to start listing the stack, so selecting a stack frame name in the backtrace)]TJ +-4.2007 -1.2889 TD +0 Tw +(menu affects these commands.)Tj +/TT4 1 Tf +10 0 0 10 54 390.6 Tm +(Break Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 387.89 m +510.01 387.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 373.94 Tm +0.0933 Tw +(The basic function of the break package is )Tj +/TT8 1 Tf +19.44 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0933 Tw +(. )Tj +/TT8 1 Tf +0.9367 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0933 Tw +[( is just another Interlisp function, not a)]TJ +-27.5779 -1.2889 TD +0.1189 Tw +[(special system feature like the interpreter or the garbage collector. It has arguments, and returns a)]TJ +0 -1.2222 TD +0.11 Tw +[(value, the same as any other function. For more information on the function )]TJ +/TT8 1 Tf +35.5449 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.11 Tw +(, see Creating)Tj +-39.1455 -1.2889 TD +0 Tw +(Breaks with BREAK1 below.)Tj +0 -2 TD +0.02 Tw +(The value returned by )Tj +/TT8 1 Tf +10.1713 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.02 Tw +[( is called the value of the break. You can specify this value explicitly)]TJ +-13.7719 -1.2889 TD +0.1111 Tw +(by using the )Tj +/TT8 1 Tf +6.036 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1111 Tw +[( break command \(see below\). But in most cases, the value of a break is given)]TJ +-9.6366 -1.2889 TD +0.0289 Tw +(implicitly, via a )Tj +/TT8 1 Tf +7.2078 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0289 Tw +[( or )]TJ +/TT8 1 Tf +1.4987 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.0289 Tw +[( command, and is the result of evaluating the break expression. The break)]TJ +-11.1068 -1.2889 TD +0.0456 Tw +(expression, stored in the variable )Tj +/TT8 1 Tf +15.0798 0 TD +0 Tw +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0456 Tw +(, is an expression equivalent to the computation that would)Tj +-18.6804 -1.2889 TD +0.1122 Tw +[(have taken place had no break occurred. For example, if you break on the function )]TJ +/TT8 1 Tf +38.6813 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.1122 Tw +(, the break)Tj +-40.4816 -1.2889 TD +0.2378 Tw +(expression is the body of the definition of )Tj +/TT8 1 Tf +20.4843 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.2378 Tw +[(. When you type )]TJ +/TT8 1 Tf +8.9994 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.2378 Tw +[( or )]TJ +/TT8 1 Tf +1.9165 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.2378 Tw +(, the body of )Tj +/TT8 1 Tf +6.7333 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.2378 Tw +[( is)]TJ +-44.1345 -1.2889 TD +0.1878 Tw +(evaluated, and its value returned as the value of the break, i.e., to whatever function called )Tj +/TT8 1 Tf +43.274 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-45.0743 -1.2889 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0167 Tw +[( is set up by the function that created the call to )]TJ +/TT8 1 Tf +21.305 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0167 Tw +[(. For functions broken with )]TJ +/TT8 1 Tf +12.6225 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.0167 Tw +[( or)]TJ +/TT8 1 Tf +-44.1291 -1.2889 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6244 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.1244 Tw +[( is equivalent to the body of the definition of the broken function \(see Chapter 15\).)]TJ +-7.2255 -1.2889 TD +0.3067 Tw +(For functions broken with )Tj +/TT8 1 Tf +12.9991 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.3067 Tw +(, using )Tj +/TT8 1 Tf +3.8194 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +0.3067 Tw +[( or )]TJ +/TT8 1 Tf +2.0543 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.8067 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.3067 Tw +[( is )]TJ +/TT8 1 Tf +1.8282 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3067 Tw +[(. For )]TJ +/TT8 1 Tf +3.4171 0 TD +0 Tw +(BREAKIN)Tj +-41.1273 -1.2889 TD +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +( is the indicated expression \(see Chapter 15\).)Tj +/TT8 1 Tf +-7.7012 -2.0667 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0544 Tw +[( recognizes a large set of break commands. These are typed in )]TJ +/TT13 1 Tf +28.4851 0 TD +0 Tw +(without)Tj +/TT6 1 Tf +3.166 0 TD +0.0544 Tw +[( parentheses. In order)]TJ +-35.2517 -1.2889 TD +0.0422 Tw +(to facilitate debugging of programs that perform input operations, the carriage return that is typed to)Tj +0 -1.2222 TD +0.0833 Tw +(complete the )Tj +/TT8 1 Tf +6.1027 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5833 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5833 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0833 Tw +(, etc. commands is discarded by )Tj +/TT8 1 Tf +14.8105 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0833 Tw +(, so that it will not be part of the)Tj +-30.4813 -1.2889 TD +0 Tw +(input stream after the break.)Tj +/TT19 1 Tf +2.6667 -2.1489 TD +(GO)Tj +/TT15 1 Tf +10 0 0 10 112.8 133.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 133.6 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Evaluates )Tj +/TT8 1 Tf +4.6177 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0689 Tw +[(, prints its value, and returns it as the value of the break. Releases the)]TJ +-8.2183 -1.2889 TD +0 Tw +(break and allows the computation to proceed.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(OK)Tj +/TT15 1 Tf +10 0 0 10 112.8 86.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 86.06 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +( except that the value of )Tj +/TT8 1 Tf +10.7837 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +( is not printed.)Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +24 0 obj +<< +/Length 6736 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-4)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT19 1 Tf +9 0 0 9 150 568.2 Tm +(EVAL)Tj +/TT15 1 Tf +10 0 0 10 171.6 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 568.2 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.0333 Tw +(Same as )Tj +/TT8 1 Tf +3.8772 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.0333 Tw +[( except that the break is maintained after the evaluation. The value of )]TJ +/TT8 1 Tf +31.5209 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0333 Tw +[( is)]TJ +-38.9987 -1.2889 TD +0.3011 Tw +(bound to the local variable )Tj +/TT8 1 Tf +13.5558 0 TD +0 Tw +(!VALUE)Tj +/TT6 1 Tf +3.6006 0 TD +0.3011 Tw +[(, which you can interrogate. Typing )]TJ +/TT8 1 Tf +18.3964 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.3011 Tw +[( or )]TJ +/TT8 1 Tf +2.0431 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +-38.7961 -1.2889 TD +(following )Tj +/TT8 1 Tf +4.5767 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0567 Tw +[( will not cause )]TJ +/TT8 1 Tf +6.8375 0 TD +0 Tw +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0567 Tw +[( to be reevaluated, but simply returns the value of)]TJ +/TT8 1 Tf +-17.4152 -1.2889 TD +0 Tw +(!VALUE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0356 Tw +[( as the value of the break. Typing another )]TJ +/TT8 1 Tf +19.2135 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( will cause reevaluation. )]TJ +/TT8 1 Tf +11.3916 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( is)]TJ +-39.0065 -1.2889 TD +0.0589 Tw +(useful when you are not sure whether the break will produce the correct value and want)Tj +0 -1.2222 TD +0 Tw +(to examine it before continuing with the computation.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(RETURN)Tj +/TT4 1 Tf +10 0 0 10 182.4 474.86 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 185.1783 474.86 Tm +(FORM)Tj +/TT15 1 Tf +10 0 0 10 206.7818 474.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 474.86 Tm +([Break Command])Tj +/TT17 1 Tf +-31.8278 -1.8444 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( is evaluated, and returned as the value of the break. For example, one could use the)]TJ +/TT8 1 Tf +-2.4004 -1.2889 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +( command and follow this with )Tj +/TT8 1 Tf +14.1382 0 TD +(RETURN \(REVERSE !VALUE\))Tj +/TT6 1 Tf +13.8022 0 TD +(.)Tj +/TT11 1 Tf +9.9 0 0 9 150 426.72 Tm +<0042>Tj +/TT15 1 Tf +10 0 0 10 155.43 426.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 426.72 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Calls )Tj +/TT8 1 Tf +2.5037 0 TD +(ERROR!)Tj +/TT6 1 Tf +3.6006 0 TD +0.0389 Tw +[( and aborts the break, making it go away without returning a value. This)]TJ +-6.1043 -1.2889 TD +0.2189 Tw +[(is a useful way to unwind to a higher level break. All other errors, including those)]TJ +0 -1.2222 TD +0.2067 Tw +(encountered while executing the )Tj +/TT8 1 Tf +15.4932 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.7067 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.7067 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.2067 Tw +(, and )Tj +/TT8 1 Tf +2.8562 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.2067 Tw +[( commands, maintain the)]TJ +-28.1641 -1.2889 TD +0 Tw +(break.)Tj +-5.3333 -2 TD +0.1211 Tw +(The following four commands refer to the broken function, whose name is stored in the )Tj +/TT8 1 Tf +41.7327 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +-41.7327 -1.2889 TD +(argument )Tj +/TT8 1 Tf +4.5742 0 TD +(BRKFN)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT19 1 Tf +-4.908 -2.2156 TD +(!GO)Tj +/TT15 1 Tf +10 0 0 10 166.2 326.38 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 326.38 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.2922 Tw +(The broken function is unbroken, the break expression is evaluated, the function is)Tj +0 -1.2222 TD +0 Tw +(rebroken, and then the break is exited with the value printed.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(!OK)Tj +/TT15 1 Tf +10 0 0 10 166.2 279.44 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 279.44 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.2922 Tw +(The broken function is unbroken, the break expression is evaluated, the function is)Tj +0 -1.2222 TD +0 Tw +(rebroken, and then the break is exited without the value printed.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(UB)Tj +/TT15 1 Tf +10 0 0 10 160.8 232.5 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 232.5 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Unbreaks the broken function.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(@)Tj +/TT15 1 Tf +10 0 0 10 155.4 196.56 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 196.56 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.0178 Tw +(Resets the variable )Tj +/TT8 1 Tf +8.5646 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0178 Tw +(, which establishes a context for the commands )Tj +/TT8 1 Tf +21.1505 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5178 0 TD +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5178 0 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +(,)Tj +/TT8 1 Tf +-39.7521 -1.2889 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5167 0 TD +(BTV*)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5167 0 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0167 Tw +(, and )Tj +/TT8 1 Tf +2.4762 0 TD +0 Tw +(IN?)Tj +/TT6 1 Tf +1.8003 0 TD +0.0167 Tw +[( described below. )]TJ +/TT8 1 Tf +8.3064 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0167 Tw +[( is the position of a function call on)]TJ +-24.418 -1.2889 TD +0.0433 Tw +[(the stack. It is initialized to the function just before the call to )]TJ +/TT8 1 Tf +27.9485 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0433 Tw +(, i.e., )Tj +/TT8 1 Tf +2.3567 0 TD +0.1033 Tw +(\(STKNTH -1)Tj +-33.9057 -1.2889 TD +0 Tw +(BREAK1\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-4.8008 -2.0667 TD +0.2778 Tw +(When control passes from )Tj +/TT8 1 Tf +12.8924 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.2778 Tw +(, e.g. as a result of an)Tj +/TT10 1 Tf +10.8547 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.5278 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.7778 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.7778 0 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.7778 0 TD +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT11 1 Tf +9.9 0 0 9 528.4907 126.56 Tm +<0042>Tj +/TT6 1 Tf +9 0 0 9 174 114.96 Tm +(command, or via a )Tj +/TT8 1 Tf +8.4951 0 TD +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +( you type in, )Tj +/TT8 1 Tf +5.7905 0 TD +(\(RELSTK LASTPOS\))Tj +/TT6 1 Tf +9.6016 0 TD +( is executed to)Tj +-33.7295 -1.2889 TD +(release this stack pointer.)Tj +/TT8 1 Tf +0 -2 TD +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.0222 Tw +[( treats the rest of the teletype line as its argument\(s\). It first resets )]TJ +/TT8 1 Tf +29.5794 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0222 Tw +[( to )]TJ +/TT8 1 Tf +1.4165 0 TD +0 Tw +(\(STKNTH)Tj +-35.7967 -1.2889 TD +0.1033 Tw +(-1 BREAK1\))Tj +/TT6 1 Tf +6.7044 0 TD +0.0433 Tw +[( and then for each atom on the line, )]TJ +/TT8 1 Tf +16.244 0 TD +0 Tw +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.0433 Tw +[( searches down the stack for a call to)]TJ +-23.5485 -1.2889 TD +0 Tw +(that atom. The following atoms are treated specially:)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +27 0 obj +<< +/Length 6186 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-5)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT8 1 Tf +9 0 0 9 156.6 569.54 Tm +(@)Tj +/TT6 1 Tf +1.9333 0 TD +0.1489 Tw +(Do not reset )Tj +/TT8 1 Tf +6.0736 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1489 Tw +[( to )]TJ +/TT8 1 Tf +1.6698 0 TD +0.3567 Tw +(\(STKNTH -1 BREAK1\))Tj +/TT6 1 Tf +12.1152 0 TD +0.1489 Tw +[( but leave it as it)]TJ +-24.0593 -1.2889 TD +0 Tw +(was, and continue searching from that point.)Tj +-6.43 -2 TD +(a number )Tj +/TT17 1 Tf +4.4951 0 TD +(N)Tj +/TT6 1 Tf +1.9349 0 TD +0.0533 Tw +(If negative, move )Tj +/TT8 1 Tf +8.0809 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0533 Tw +[( down the stack )]TJ +/TT17 1 Tf +7.4233 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0533 Tw +[( frames. If positive, move)]TJ +/TT8 1 Tf +-20.305 -1.2889 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +( up the stack )Tj +/TT17 1 Tf +5.8413 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( frames.)Tj +/TT8 1 Tf +-12.5754 -2.0667 TD +(/)Tj +/TT6 1 Tf +1.9333 0 TD +0.03 Tw +(The next atom on the line \(which should be a number\) specifies that the)Tj +/TT13 1 Tf +0 -1.2889 TD +0 Tw +(previous)Tj +/TT6 1 Tf +3.4453 0 TD +0.0344 Tw +[( atom should be searched for that many times. For example, )]TJ +/TT8 1 Tf +27.3489 0 TD +0 Tw +(@)Tj +-30.7942 -1.2889 TD +(FOO / 3)Tj +/TT6 1 Tf +4.2007 0 TD +( is equivalent to )Tj +/TT8 1 Tf +7.7632 0 TD +(@ FOO FOO FOO)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT8 1 Tf +-22.2986 -2.0667 TD +(=)Tj +/TT6 1 Tf +1.9333 0 TD +(Resets )Tj +/TT8 1 Tf +3.1309 0 TD +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0811 Tw +[( to the )]TJ +/TT13 1 Tf +3.2526 0 TD +0 Tw +(value)Tj +/TT6 1 Tf +2.167 0 TD +0.0811 Tw +[( of the next expression, e.g., if the value of)]TJ +/TT8 1 Tf +-12.7512 -1.2889 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.1622 Tw +[( is a stack pointer, )]TJ +/TT8 1 Tf +8.9962 0 TD +0.3889 Tw +(@ = FOO FIE)Tj +/TT6 1 Tf +8.3678 0 TD +0.1622 Tw +( will search for )Tj +/TT8 1 Tf +7.9536 0 TD +0 Tw +(FIE)Tj +/TT6 1 Tf +1.8003 0 TD +0.1622 Tw +[( in the)]TJ +-28.9182 -1.2889 TD +0 Tw +(environment specified by \(the value of\) )Tj +/TT8 1 Tf +17.6421 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-19.4424 -2.0667 TD +(For example, if the push-down stack looks like:)Tj +/TT17 1 Tf +1.3333 -1.9333 TD +([9])Tj +/TT8 1 Tf +1.8003 0 TD +( BREAK1)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([8])Tj +/TT8 1 Tf +1.8003 0 TD +( FOO)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([7])Tj +/TT8 1 Tf +1.8003 0 TD +( COND)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([6])Tj +/TT8 1 Tf +1.8003 0 TD +( FIE)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([5])Tj +/TT8 1 Tf +1.8003 0 TD +( COND)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([4])Tj +/TT8 1 Tf +1.8003 0 TD +( FIE)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([3])Tj +/TT8 1 Tf +1.8003 0 TD +( COND)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([2])Tj +/TT8 1 Tf +1.8003 0 TD +( FIE)Tj +/TT17 1 Tf +-1.8003 -1.2222 TD +([1])Tj +/TT8 1 Tf +1.8003 0 TD +( FUM)Tj +/TT6 1 Tf +-3.1336 -2.0667 TD +(then )Tj +/TT8 1 Tf +2.2448 0 TD +0.0622 Tw +(@ FIE COND)Tj +/TT6 1 Tf +6.7255 0 TD +0.0256 Tw +( will set )Tj +/TT8 1 Tf +4.2627 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0256 Tw +[( to the position corresponding to)]TJ +/TT17 1 Tf +-17.4337 -1.2889 TD +0 Tw +([5])Tj +/TT6 1 Tf +1.8003 0 TD +(; )Tj +/TT8 1 Tf +0.5211 0 TD +0.0511 Tw +(@ @ COND)Tj +/TT6 1 Tf +5.5031 0 TD +0.0211 Tw +( will then set )Tj +/TT8 1 Tf +6.4897 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0211 Tw +[( to)]TJ +/TT17 1 Tf +1.1432 0 TD +0.0511 Tw +[( [3])]TJ +/TT6 1 Tf +2.4515 0 TD +0.0211 Tw +(; and )Tj +/TT8 1 Tf +2.4851 0 TD +0.0511 Tw +(@ FIE / 3 -)Tj +-24.5947 -1.2889 TD +0 Tw +(1)Tj +/TT6 1 Tf +0.6001 0 TD +( to )Tj +/TT17 1 Tf +1.8721 0 TD +([1])Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-9.6058 -2.0667 TD +(If )Tj +/TT8 1 Tf +0.9399 0 TD +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( cannot successfully complete a search for function )]TJ +/TT17 1 Tf +22.8089 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.02 Tw +(, it searches the stack again from)Tj +-25.5491 -1.2889 TD +0.0289 Tw +(that point looking for a call to a function whose name is a possible misspelling of )Tj +/TT17 1 Tf +36.4139 0 TD +0 Tw +(FN )Tj +/TT6 1 Tf +1.8692 0 TD +(\(see)Tj +-38.2831 -1.2889 TD +0.1322 Tw +[(spelling correction in Chapter 20\). If the search is still unsuccessful, )]TJ +/TT8 1 Tf +31.72 0 TD +0 Tw +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.1322 Tw +[( types )]TJ +/TT8 1 Tf +3.1507 0 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.3178 Tw +[( NOT)]TJ +-37.271 -1.2889 TD +0 Tw +(FOUND\))Tj +/TT6 1 Tf +3.6006 0 TD +(, and then aborts.)Tj +-3.6006 -2.0667 TD +(When )Tj +/TT8 1 Tf +3.312 0 TD +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.4189 Tw +[( finishes, it types the name of the function at )]TJ +/TT8 1 Tf +23.9784 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.4189 Tw +(, i.e., )Tj +/TT8 1 Tf +3.1078 0 TD +0 Tw +(\(STKNAME)Tj +-35.199 -1.2889 TD +(LASTPOS\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-4.8008 -2.0667 TD +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.1022 Tw +[( can be used on )]TJ +/TT8 1 Tf +7.5638 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1022 Tw +[( \(see Creating Breaks with BREAK1 below\). In this case, the)]TJ +/TT13 1 Tf +-12.3646 -1.2889 TD +0 Tw +(next)Tj +/TT6 1 Tf +1.7783 0 TD +( command on )Tj +/TT8 1 Tf +6.3262 0 TD +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +( is treated the same as the rest of the teletype line.)Tj +/TT19 1 Tf +-14.9718 -2.2156 TD +(?=)Tj +/TT15 1 Tf +10 0 0 10 112.8 145.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 145.2 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.0756 Tw +[(This is a multi-purpose command. Its most common use is to interrogate the value\(s\) of)]TJ +0 -1.2222 TD +0.0078 Tw +[(the arguments of the broken function. For example, if )]TJ +/TT8 1 Tf +24.1676 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +[( has three arguments )]TJ +/TT8 1 Tf +9.5462 0 TD +0.0178 Tw +(\(X Y Z\))Tj +/TT6 1 Tf +4.2362 0 TD +0 Tw +(,)Tj +-39.7504 -1.2889 TD +(then typing )Tj +/TT8 1 Tf +5.3818 0 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +( to a break on )Tj +/TT8 1 Tf +6.2334 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +( will produce:)Tj +/TT8 1 Tf +-11.9491 -1.6667 TD +(:?=)Tj +0 -1.0667 TD +(X = )Tj +/TT13 1 Tf +2.4004 0 TD +(value of )Tj +/TT8 1 Tf +3.3887 0 TD +(X)Tj +-5.7891 -1.0667 TD +(Y = )Tj +/TT13 1 Tf +2.4004 0 TD +(value of )Tj +/TT8 1 Tf +3.3887 0 TD +(Y)Tj +-5.7891 -1.0667 TD +(Z = )Tj +/TT13 1 Tf +2.4004 0 TD +(value of )Tj +/TT8 1 Tf +3.3887 0 TD +(Z)Tj +-5.7891 -1 TD +(:)Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +30 0 obj +<< +/Length 6794 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-6)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.04 Tw +[( operates on the rest of the teletype line as its arguments. If the line is empty, as in the)]TJ +-1.2002 -1.2889 TD +0.0511 Tw +[(above case, it operates on all of the arguments of the broken function. If the you type )]TJ +/TT8 1 Tf +38.8101 0 TD +0 Tw +(?=)Tj +-38.8101 -1.2889 TD +0.3567 Tw +(X \(CAR Y\))Tj +/TT6 1 Tf +6.1142 0 TD +0.1489 Tw +(, you will see the value of )Tj +/TT8 1 Tf +12.5403 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1489 Tw +(, and the value of )Tj +/TT8 1 Tf +8.6414 0 TD +0.3567 Tw +(\(CAR Y\))Tj +/TT6 1 Tf +4.5574 0 TD +0.1489 Tw +[(. The difference)]TJ +-32.4534 -1.2889 TD +0.06 Tw +(between using )Tj +/TT8 1 Tf +6.8085 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.06 Tw +[( and typing )]TJ +/TT8 1 Tf +5.5355 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.06 Tw +[( and )]TJ +/TT8 1 Tf +2.3129 0 TD +0.1433 Tw +(\(CAR Y\))Tj +/TT6 1 Tf +4.344 0 TD +0.06 Tw +[( directly to )]TJ +/TT8 1 Tf +5.1951 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.06 Tw +[( is that )]TJ +/TT8 1 Tf +3.3792 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.06 Tw +[( evaluates its)]TJ +-34.1763 -1.2889 TD +0.1922 Tw +(inputs as of the stack frame )Tj +/TT8 1 Tf +13.5103 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1922 Tw +(, i.e., it uses )Tj +/TT8 1 Tf +6.0858 0 TD +0 Tw +(STKEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +0.1922 Tw +[(. This provides a way of)]TJ +-27.9974 -1.2889 TD +0.1167 Tw +(examining variables or performing computations )Tj +/TT13 1 Tf +22.5853 0 TD +(as of a particular point on the stack.)Tj +/TT6 1 Tf +15.1834 0 TD +[( For)]TJ +-37.7687 -1.2222 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.3046 0 TD +0.1333 Tw +(@ FOO / 2)Tj +/TT6 1 Tf +5.8009 0 TD +0.0556 Tw +[( followed by )]TJ +/TT8 1 Tf +5.9567 0 TD +0.1333 Tw +(?= X)Tj +/TT6 1 Tf +2.5337 0 TD +0.0556 Tw +[( will allow you to examine the value of )]TJ +/TT8 1 Tf +17.9302 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[( in the)]TJ +-37.1262 -1.2889 TD +0 Tw +(previous call to )Tj +/TT8 1 Tf +7.0518 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +(, etc.)Tj +/TT8 1 Tf +-8.8521 -2.0667 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0544 Tw +[( also recognizes numbers as referring to the correspondingly numbered argument, i.e.,)]TJ +-1.2002 -1.2889 TD +0 Tw +(it uses )Tj +/TT8 1 Tf +3.0469 0 TD +(STKARG)Tj +/TT6 1 Tf +3.6006 0 TD +( in this case. Thus)Tj +/TT8 1 Tf +-3.9808 -1.6667 TD +(:@ FIE)Tj +0 -1 TD +(FIE)Tj +T* +(:?= 2)Tj +/TT6 1 Tf +-2.6667 -1.8444 TD +(will print the name and value of the second argument of )Tj +/TT8 1 Tf +25.1689 0 TD +(FIE)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-26.9692 -2.0667 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0067 Tw +[( can also be used on )]TJ +/TT8 1 Tf +9.1035 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0067 Tw +[( \(see Creating Breaks with BREAK1 below\), in which case)]TJ +-14.5044 -1.2889 TD +0.0644 Tw +(the next command on )Tj +/TT8 1 Tf +10.1245 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0644 Tw +[( is treated as the rest of the teletype line. For example, if)]TJ +/TT8 1 Tf +-14.3252 -1.2889 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0256 Tw +[( is )]TJ +/TT8 1 Tf +1.266 0 TD +0.0622 Tw +(\(EVAL ?= \(X Y\) GO\))Tj +/TT6 1 Tf +11.0506 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5256 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.0256 Tw +[( is evaluated, the values of )]TJ +/TT8 1 Tf +12.1001 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0256 Tw +[( and )]TJ +/TT8 1 Tf +2.244 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0256 Tw +[( printed,)]TJ +-36.1877 -1.2889 TD +0 Tw +(and then the function exited with its value being printed.)Tj +/TT8 1 Tf +0 -2 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.2556 Tw +[( prints variable values using the function )]TJ +/TT8 1 Tf +20.1444 0 TD +0 Tw +(SHOWPRINT)Tj +/TT6 1 Tf +5.4009 0 TD +0.2556 Tw +[( \(see Chapter 25\), so that if)]TJ +/TT8 1 Tf +-26.7454 -1.2889 TD +0 Tw +(SYSPRETTYFLG = T)Tj +/TT6 1 Tf +9.6016 0 TD +(, the value is prettyprinted.)Tj +/TT8 1 Tf +-9.6016 -2.0667 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.2378 Tw +[( is a universal mnemonic for displaying argument names and their corresponding)]TJ +-1.2002 -1.2889 TD +0.2489 Tw +[(values. In addition to being a break command, )]TJ +/TT8 1 Tf +23.2937 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.2489 Tw +[( is an edit macro that prints the)]TJ +-24.4939 -1.2889 TD +0.0211 Tw +(argument names and values for the current expression \(see Chapter 16\), and a read macro)Tj +0 -1.2222 TD +0 Tw +(\(actually )Tj +/TT8 1 Tf +4.0976 0 TD +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0033 Tw +( is the read macro character\) which does the same for the current level list being)Tj +-4.6977 -1.2889 TD +0 Tw +(read.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(PB)Tj +/TT15 1 Tf +10 0 0 10 160.8 242.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 242.4 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.1222 Tw +[(Prints the bindings of a given variable. Similar to )]TJ +/TT8 1 Tf +23.3458 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.1222 Tw +(, except ascends the stack starting)Tj +-24.546 -1.2889 TD +0 Tw +(from )Tj +/TT8 1 Tf +2.429 0 TD +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0222 Tw +(, and, for each frame in which the given variable is bound, prints the frame)Tj +-6.6296 -1.2889 TD +0 Tw +(name and value of the variable \(with )Tj +/TT8 1 Tf +16.5313 0 TD +(PRINTLEVEL)Tj +/TT6 1 Tf +6.001 0 TD +( reset to )Tj +/TT8 1 Tf +3.7251 0 TD +(\(2 . 3\)\))Tj +/TT6 1 Tf +4.8008 0 TD +(, e.g.)Tj +/TT8 1 Tf +-28.3914 -1.6667 TD +(:PB FOO)Tj +0 -1 TD +(@ FN1: 3)Tj +T* +(@ FN2: 10)Tj +T* +(@ TOP: NOBIND)Tj +-2.6667 -1.8444 TD +(PB)Tj +/TT6 1 Tf +1.2002 0 TD +0.0333 Tw +[( is also a programmers assistant command \(see Chapter 13\) that can be used when not)]TJ +-1.2002 -1.2889 TD +0 Tw +(in a break. )Tj +/TT8 1 Tf +5.1064 0 TD +(PB)Tj +/TT6 1 Tf +1.2002 0 TD +( is implemented via the function )Tj +/TT8 1 Tf +14.5698 0 TD +(PRINTBINDINGS)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT19 1 Tf +-31.3444 -2.2156 TD +(BT)Tj +/TT15 1 Tf +10 0 0 10 160.8 112.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 112.46 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.2244 Tw +(Prints a backtrace of function names starting at )Tj +/TT8 1 Tf +22.7951 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.2244 Tw +[(. The value of )]TJ +/TT8 1 Tf +7.6129 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.2244 Tw +[( is)]TJ +-38.8094 -1.2889 TD +0.0767 Tw +(changed by selecting an item from the backtrace menu \(see the Break Window Variables)Tj +0 -1.2222 TD +0.0289 Tw +(section below\) or by the )Tj +/TT8 1 Tf +10.9599 0 TD +0 Tw +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +[( command. The several nested calls in system packages such as)]TJ +-11.56 -1.2889 TD +0.4033 Tw +(break, edit, and the top level executive appear as the single entries )Tj +/TT8 1 Tf +34.3571 0 TD +0 Tw +(**BREAK**)Tj +/TT6 1 Tf +5.4009 0 TD +(,)Tj +/TT8 1 Tf +-39.758 -1.2889 TD +(**EDITOR**)Tj +/TT6 1 Tf +6.001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(**TOP**)Tj +/TT6 1 Tf +4.2007 0 TD +( respectively.)Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +33 0 obj +<< +/Length 7034 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-7)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT19 1 Tf +9 0 0 9 102 568.2 Tm +(BTV)Tj +/TT15 1 Tf +10 0 0 10 118.2 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 568.2 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Prints a backtrace of function names )Tj +/TT13 1 Tf +16.273 0 TD +(with)Tj +/TT6 1 Tf +1.833 0 TD +( variables beginning at )Tj +/TT8 1 Tf +10.2969 0 TD +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-32.6035 -2.0667 TD +0.11 Tw +(The value of each variable is printed with the function )Tj +/TT8 1 Tf +25.2973 0 TD +0 Tw +(SHOWPRINT)Tj +/TT6 1 Tf +5.4009 0 TD +0.11 Tw +[( \(see Chapter 25\), so)]TJ +-30.6981 -1.2889 TD +0 Tw +(that if )Tj +/TT8 1 Tf +2.8584 0 TD +(SYSPRETTYFLG)Tj +/TT6 1 Tf +7.2012 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(= T)Tj +/TT6 1 Tf +1.8003 0 TD +(, the value is prettyprinted.)Tj +/TT19 1 Tf +-14.7765 -2.2156 TD +(BTV+)Tj +/TT15 1 Tf +10 0 0 10 123.6 501.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 501.46 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +( except also prints local variables and arguments to )Tj +/TT8 1 Tf +22.8579 0 TD +(SUBR)Tj +/TT6 1 Tf +2.4004 0 TD +(s.)Tj +/TT19 1 Tf +-33.5358 -2.2156 TD +(BTV*)Tj +/TT15 1 Tf +10 0 0 10 123.6 464.92 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 464.92 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +( except prints arguments to local variables.)Tj +/TT19 1 Tf +-8.2775 -2.2156 TD +(BTV!)Tj +/TT15 1 Tf +10 0 0 10 123.6 428.38 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 428.38 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +(Same as )Tj +/TT8 1 Tf +3.8105 0 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +( except prints )Tj +/TT13 1 Tf +6.2144 0 TD +(everything)Tj +/TT6 1 Tf +4.3345 0 TD +( on the stack.)Tj +/TT8 1 Tf +-21.493 -2.0667 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6989 0 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6989 0 TD +(BTV+)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6989 0 TD +(BTV*)Tj +/TT6 1 Tf +2.4004 0 TD +0.1989 Tw +(, and )Tj +/TT8 1 Tf +2.8406 0 TD +0 Tw +(BTV!)Tj +/TT6 1 Tf +2.4004 0 TD +0.1989 Tw +[( all take optional functional arguments. Use these arguments to)]TJ +-15.139 -1.2889 TD +0.0822 Tw +(choose functions to be )Tj +/TT13 1 Tf +10.3846 0 TD +0 Tw +(skipped)Tj +/TT6 1 Tf +3 0 TD +0.0822 Tw +[( on the backtrace. As the backtrace scans down the stack, the name of)]TJ +-13.3846 -1.2222 TD +0.2056 Tw +[(each stack frame is passed to each of the arguments of the backtrace command. If any of these)]TJ +T* +0.0922 Tw +(functions returns a non-)Tj +/TT8 1 Tf +10.9046 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0922 Tw +[( value, then that frame is skipped, and not shown in the backtrace. For)]TJ +-12.7049 -1.2889 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.3235 0 TD +0.1778 Tw +(BT EXPRP)Tj +/TT6 1 Tf +4.9786 0 TD +0.0744 Tw +[( will skip all functions definied by expr definitions, )]TJ +/TT8 1 Tf +23.4952 0 TD +0.1778 Tw +(BTV \(LAMBDA \(X\) \(NOT)Tj +-32.7972 -1.2889 TD +0.0122 Tw +(\(MEMB X FOOFNS\)\)\))Tj +/TT6 1 Tf +10.2261 0 TD +0.0056 Tw +[( will skip all but those functions on )]TJ +/TT8 1 Tf +15.8037 0 TD +0 Tw +(FOOFNS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0056 Tw +[(. If used on )]TJ +/TT8 1 Tf +5.4423 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0056 Tw +[( \(see Creating)]TJ +-39.2734 -1.2889 TD +0.0911 Tw +(Breaks with BREAK1 below\) the functional argument is no longer optional, i.e., the next element on)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1711 Tw +[( must either be a list of functional arguments, or )]TJ +/TT8 1 Tf +23.1794 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1711 Tw +[( if no functional argument is to be)]TJ +-29.1804 -1.2889 TD +0 Tw +(applied.)Tj +0 -2 TD +(For )Tj +/TT8 1 Tf +1.8037 0 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5567 0 TD +(BTV)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5567 0 TD +(BTV+)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5567 0 TD +(BTV*)Tj +/TT6 1 Tf +2.4004 0 TD +0.0567 Tw +(, and )Tj +/TT8 1 Tf +2.5562 0 TD +0 Tw +(BTV!)Tj +/TT6 1 Tf +2.4004 0 TD +0.0567 Tw +(, if Control-P is used to change a printlevel during the backtrace,)Tj +-16.2316 -1.2889 TD +0 Tw +(the printlevel is restored after the backtrace is completed.)Tj +0 -2 TD +0.0211 Tw +(The value of )Tj +/TT8 1 Tf +5.8041 0 TD +0 Tw +(BREAKDELIMITER)Tj +/TT6 1 Tf +8.4014 0 TD +0.0211 Tw +(, initially the carriage return character, is printed to delimit the output)Tj +-14.2054 -1.2889 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.1289 0 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +( and backtrace commands. You can reset it \(e.g. to a comma\) for more linear output.)Tj +/TT19 1 Tf +0.3376 -2.2156 TD +(ARGS)Tj +/TT15 1 Tf +10 0 0 10 123.6 223.04 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 223.04 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.1378 Tw +(Prints the names of the variables bound at )Tj +/TT8 1 Tf +19.9645 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1378 Tw +(, i.e., )Tj +/TT8 1 Tf +2.5456 0 TD +0 Tw +(\(VARIABLES)Tj +/TT10 1 Tf +6.001 0 TD +( )Tj +/TT8 1 Tf +0.3878 0 TD +(LASTPOS\))Tj +/TT6 1 Tf +4.8008 0 TD +0.1378 Tw +[( \(see)]TJ +-37.9003 -1.2889 TD +0.2133 Tw +[(Chapter 11\). For most cases, these are the arguments to the function entered at that)]TJ +0 -1.2222 TD +0 Tw +(position, i.e., )Tj +/TT8 1 Tf +5.877 0 TD +(\(ARGLIST \(STKNAME LASTPOS\)\))Tj +/TT6 1 Tf +16.2026 0 TD +(.)Tj +/TT19 1 Tf +-24.7463 -2.2156 TD +(REVERT)Tj +/TT15 1 Tf +10 0 0 10 134.4 163.9 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 163.9 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.0022 Tw +(Goes back to position )Tj +/TT8 1 Tf +9.753 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0022 Tw +( on stack and reenters the function called at that point with)Tj +-13.9537 -1.2889 TD +0.1622 Tw +[(the arguments found on the stack. If the function is not already broken, )]TJ +/TT8 1 Tf +34.2228 0 TD +0 Tw +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1622 Tw +[( first)]TJ +-37.8234 -1.2889 TD +0 Tw +(breaks it, and then unbreaks it after it is reentered.)Tj +/TT8 1 Tf +0 -2 TD +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1633 Tw +[( can be given the position using the conventions described for )]TJ +/TT8 1 Tf +29.3426 0 TD +0 Tw +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.1633 Tw +(, e.g., )Tj +/TT8 1 Tf +2.8618 0 TD +0 Tw +(REVERT)Tj +-36.4051 -1.2889 TD +(FOO -1)Tj +/TT6 1 Tf +3.6006 0 TD +( is equivalent to )Tj +/TT8 1 Tf +7.2632 0 TD +(@ FOO -1)Tj +/TT6 1 Tf +4.8008 0 TD +( followed by )Tj +/TT8 1 Tf +5.79 0 TD +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-25.0552 -2.0667 TD +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[( is useful for restarting a computation in the situation where a bug is discovered)]TJ +-3.6006 -1.2889 TD +0.1244 Tw +(at some point )Tj +/TT13 1 Tf +6.6272 0 TD +0 Tw +(below)Tj +/TT6 1 Tf +2.2959 0 TD +0.1244 Tw +[( where the problem actually occurred. )]TJ +/TT8 1 Tf +18.2031 0 TD +0 Tw +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1244 Tw +[( essentially says go)]TJ +-30.7269 -1.2889 TD +0.2556 Tw +(back there and start over in a break. )Tj +/TT8 1 Tf +19.1198 0 TD +0 Tw +(REVERT)Tj +/TT6 1 Tf +3.6006 0 TD +0.2556 Tw +[( will work correctly if the names or)]TJ +-22.7204 -1.2889 TD +0 Tw +(arguments to the function, or even its function type, have been changed.)Tj +ET +endstream +endobj +34 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +36 0 obj +<< +/Length 6462 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-8)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT19 1 Tf +9 0 0 9 150 568.2 Tm +(ORIGINAL)Tj +/TT15 1 Tf +10 0 0 10 193.2 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 568.2 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.1656 Tw +(For use in conjunction with )Tj +/TT8 1 Tf +13.1666 0 TD +0 Tw +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +0.1656 Tw +[( \(see Creating Breaks with BREAK1 below\).)]TJ +-19.7677 -1.2889 TD +0.1133 Tw +(Form is )Tj +/TT8 1 Tf +3.8214 0 TD +0.2711 Tw +(\(ORIGINAL . )Tj +/TT17 1 Tf +7.7434 0 TD +0 Tw +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1133 Tw +(. )Tj +/TT17 1 Tf +0.9767 0 TD +0 Tw +(COMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[( are executed without regard for )]TJ +/TT8 1 Tf +15.2093 0 TD +0 Tw +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +-39.7527 -1.2889 TD +(Useful for redefining a break command in terms of itself.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(EDIT)Tj +/TT15 1 Tf +10 0 0 10 171.6 509.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 460.45 509.06 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.2133 Tw +[(Designed for use in conjunction with breaks caused by errors. Facilitates editing the)]TJ +0 -1.2222 TD +0 Tw +(expression causing the break:)Tj +/TT8 1 Tf +2.6667 -1.6 TD +(NON-NUMERIC ARG)Tj +0 -1 TD +(NIL)Tj +T* +(\(IPLUS BROKEN\))Tj +T* +(:EDIT)Tj +T* +(IN FOO...)Tj +T* +(\(IPLUS X Z\))Tj +T* +(EDIT)Tj +T* +(*\(3 Y\))Tj +T* +(*OK)Tj +T* +(FOO)Tj +T* +(:)Tj +/TT6 1 Tf +-2.6667 -1.8444 TD +(and you can continue by typing )Tj +/TT8 1 Tf +14.2988 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(, etc.)Tj +-18.3994 -2.0667 TD +(This command is very simple conceptually, but its implementation is complicated by all of)Tj +0 -1.2222 TD +0.2833 Tw +(the exceptional cases involving interactions with compiled functions, breaks on user)Tj +T* +0.0311 Tw +[(functions, error breaks, breaks within breaks, et al. Therefore, we shall give the following)]TJ +T* +0.0056 Tw +(simplified explanation which will account for 90% of the situations arising in actual usage.)Tj +T* +0 Tw +(For those others, )Tj +/TT8 1 Tf +7.606 0 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +( will print an appropriate failure message and return to the break.)Tj +/TT8 1 Tf +-10.0063 -2.0667 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +[( begins by searching up the stack beginning at )]TJ +/TT8 1 Tf +20.7177 0 TD +0 Tw +(LASTPOS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0089 Tw +[( \(set by )]TJ +/TT8 1 Tf +3.4481 0 TD +0 Tw +(@)Tj +/TT6 1 Tf +0.6001 0 TD +0.0089 Tw +[( command, initially)]TJ +-31.3669 -1.2889 TD +0.2511 Tw +(position of the break\) looking for a form, i.e., an internal call to )Tj +/TT8 1 Tf +31.1844 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.2511 Tw +[(. Then )]TJ +/TT8 1 Tf +4.0063 0 TD +0 Tw +(EDIT)Tj +/TT6 1 Tf +-37.5911 -1.2889 TD +0.0533 Tw +(continues from that point looking for a call to an interpreted function, or to )Tj +/TT8 1 Tf +34.1173 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0533 Tw +(. It then)Tj +-36.5177 -1.2889 TD +0.0111 Tw +(calls the editor on either the )Tj +/TT8 1 Tf +12.6189 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0111 Tw +[( or the argument to )]TJ +/TT8 1 Tf +8.83 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0111 Tw +[( in such a way as to look for an)]TJ +-26.2497 -1.2889 TD +0 Tw +(expression )Tj +/TT8 1 Tf +5.2657 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.2789 Tw +[( to the form that it first found. It then prints the form, and permits)]TJ +-6.4659 -1.2889 TD +0.0156 Tw +[(interactive editing to begin. You can then type successive )]TJ +/TT8 1 Tf +25.9031 0 TD +0 Tw +(0)Tj +/TT6 1 Tf +0.6001 0 TD +0.0156 Tw +(s to the editor to see the chain)Tj +-26.5032 -1.2889 TD +0 Tw +(of superforms for this computation.)Tj +0 -2 TD +0.0622 Tw +(If you exit from the edit with an )Tj +/TT8 1 Tf +14.8513 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.0622 Tw +(, the break expression is reset, if possible, so that you)Tj +-16.0515 -1.2889 TD +0.1344 Tw +(can continue with the computation by simply typing )Tj +/TT8 1 Tf +24.5907 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.1344 Tw +[(. \(Evaluating the new )]TJ +/TT8 1 Tf +10.6127 0 TD +0 Tw +(BRKEXP)Tj +/TT6 1 Tf +-36.4035 -1.2889 TD +0.25 Tw +(will involve reevaluating the form that causes the break, so that if )Tj +/TT8 1 Tf +32.1938 0 TD +0.6011 Tw +(\(PUTD \(QUOTE)Tj +-32.1938 -1.2889 TD +0 Tw +(\(FOO\)\))Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT17 1 Tf +0.5344 0 TD +(BIG-COMPUTATION)Tj +/TT8 1 Tf +9.0015 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.2844 Tw +[( were handled by )]TJ +/TT8 1 Tf +9.0899 0 TD +0 Tw +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT17 1 Tf +0.7844 0 TD +(BIG-COMPUTATION)Tj +/TT6 1 Tf +9.0015 0 TD +0.2844 Tw +[( would be)]TJ +-35.0128 -1.2889 TD +0.1789 Tw +[(reevaluated.\) However, in some situations, the break expression cannot be reset. For)]TJ +0 -1.2222 TD +0.1578 Tw +(example, if a compiled function )Tj +/TT8 1 Tf +15.0145 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.1578 Tw +[( incorrectly called )]TJ +/TT8 1 Tf +8.5881 0 TD +0 Tw +(PUTD)Tj +/TT6 1 Tf +2.4004 0 TD +0.1578 Tw +[( and caused the error )]TJ +/TT8 1 Tf +10.3895 0 TD +0 Tw +(Arg)Tj +-38.1927 -1.2889 TD +0.0667 Tw +(not atom )Tj +/TT6 1 Tf +5.5342 0 TD +0.0278 Tw +(followed by a break on )Tj +/TT8 1 Tf +10.5403 0 TD +0 Tw +(PUTD)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5278 0 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( might be able to find the form headed by)]TJ +/TT8 1 Tf +-21.403 -1.2889 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.05 Tw +(, and also find )Tj +/TT13 1 Tf +6.7205 0 TD +0 Tw +(that)Tj +/TT6 1 Tf +1.6099 0 TD +0.05 Tw +[( form in some higher interpreted function. But after you corrected)]TJ +-10.1307 -1.2889 TD +0.06 Tw +(the problem in the )Tj +/TT8 1 Tf +8.6355 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.06 Tw +(-form, if any, you would still not have informed )Tj +/TT8 1 Tf +21.9546 0 TD +0 Tw +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.06 Tw +[( what to do)]TJ +-34.7907 -1.2889 TD +0.2133 Tw +(about the immediate problem, i.e., the incorrect call to )Tj +/TT8 1 Tf +26.0333 0 TD +0 Tw +(PUTD)Tj +/TT6 1 Tf +2.4004 0 TD +0.2133 Tw +[(. However, if )]TJ +/TT8 1 Tf +7.1072 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.2133 Tw +[( were)]TJ +/TT13 1 Tf +-37.3412 -1.2889 TD +0 Tw +(interpreted)Tj +/TT6 1 Tf +4.4458 0 TD +(, )Tj +/TT8 1 Tf +0.5867 0 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +[( would find the )]TJ +/TT8 1 Tf +7.4355 0 TD +0 Tw +(PUTD)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +[( form itself, so that when you corrected that form,)]TJ +/TT8 1 Tf +-17.2688 -1.2889 TD +0 Tw +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +( could use the new corrected form to reset the break expression.)Tj +ET +endstream +endobj +37 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +39 0 obj +<< +/Length 7205 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-9)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT19 1 Tf +9 0 0 9 102 568.2 Tm +(IN?)Tj +/TT15 1 Tf +10 0 0 10 118.2 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 412.45 568.2 Tm +([Break Command])Tj +-31.8278 -1.8444 TD +0.0778 Tw +(Similar to )Tj +/TT8 1 Tf +4.7034 0 TD +0 Tw +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +(, but just prints parent form, and superform, but does not call the editor,)Tj +-7.1038 -1.2889 TD +0 Tw +(e.g.,)Tj +/TT8 1 Tf +2.6667 -1.6 TD +(ATTEMPT TO RPLAC NIL)Tj +0 -1 TD +(T)Tj +T* +(\(RPLACD BROKEN\))Tj +T* +(:IN?)Tj +T* +(FOO: \(RPLACD X Z\))Tj +/TT6 1 Tf +-2.6667 -1.8444 TD +(Although )Tj +/TT8 1 Tf +4.5842 0 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.07 Tw +[( and )]TJ +/TT8 1 Tf +2.3329 0 TD +0 Tw +(IN?)Tj +/TT6 1 Tf +1.8003 0 TD +0.07 Tw +[( were designed for error breaks, they can also be useful for user)]TJ +-11.1177 -1.2889 TD +0.1122 Tw +[(breaks. For example, if upon reaching a break on his function )]TJ +/TT8 1 Tf +28.9004 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.1122 Tw +(, you determine that)Tj +-30.7007 -1.2889 TD +0.1433 Tw +(there is a problem in the )Tj +/TT13 1 Tf +11.8444 0 TD +0 Tw +(call)Tj +/TT6 1 Tf +1.4067 0 TD +0.1433 Tw +[( to )]TJ +/TT8 1 Tf +1.6587 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.1433 Tw +(, you can edit the calling form and reset the break)Tj +-16.7101 -1.2889 TD +0 Tw +(expression with one operation by using )Tj +/TT8 1 Tf +17.7085 0 TD +(EDIT)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 415.26 Tm +(Controlling When to Break)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 412.55 m +510.01 412.55 l +S +BT +/TT6 1 Tf +9 0 0 9 78 398.6 Tm +0.0922 Tw +(When an error occurs, the system has to decide whether to reset and unwind the stack, or go into a)Tj +0 -1.2222 TD +0.0978 Tw +[(break. In the middle of a complex computation, it is usually helpful to go into a break, so that you)]TJ +T* +0.0867 Tw +[(may examine the state of the computation. However, if the computation has only proceeded a little)]TJ +T* +0.0022 Tw +(when the error occurs, such as when you mistype a function name, you would normally just terminate)Tj +T* +0.1222 Tw +(a break, and it would be more convenient for the system to simply cause an error and unwind the)Tj +T* +0.0122 Tw +[(stack in this situatuation. The decision over whether or not to induce a break depends on the depth of)]TJ +T* +0.0456 Tw +[(computation, and the amount of time invested in the computation. The actual algorithm is described)]TJ +T* +0.2756 Tw +(in detail below; suffice it to say that the parameters affecting this decision have been adjusted)Tj +T* +0 Tw +(empirically so that trivial type-in errors do not cause breaks, but deep errors do.)Tj +/TT8 1 Tf +2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(BREAKCHECK)Tj +/TT6 1 Tf +5.9999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ERRORPOS)Tj +/TT13 1 Tf +4.8008 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ERXN)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 236.1114 291.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 291.26 Tm +([Function])Tj +/TT8 1 Tf +-35.4033 -1.8444 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.1511 Tw +[( is called by the error routine to decide whether or not to induce a break)]TJ +-6.001 -1.2889 TD +0.0311 Tw +(when a error occurs. )Tj +/TT17 1 Tf +9.698 0 TD +0 Tw +(ERRORPOS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0311 Tw +[( is the stack position at which the error occurred; )]TJ +/TT17 1 Tf +22.0929 0 TD +0 Tw +(ERXN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +[( is)]TJ +-38.9921 -1.2889 TD +0 Tw +(the error number. Returns )Tj +/TT8 1 Tf +12.0693 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if a break should occur; )Tj +/TT8 1 Tf +10.8457 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-25.3154 -2.0667 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.0322 Tw +[( returns )]TJ +/TT8 1 Tf +3.7685 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0322 Tw +[( \(and a break occurs\) if the computation depth is greater than or)]TJ +-10.3696 -1.2889 TD +0.0111 Tw +(equal to )Tj +/TT8 1 Tf +3.8274 0 TD +0 Tw +(HELPDEPTH)Tj +/TT6 1 Tf +5.4009 0 TD +0.0111 Tw +(. )Tj +/TT8 1 Tf +0.7722 0 TD +0 Tw +(HELPDEPTH)Tj +/TT6 1 Tf +5.4009 0 TD +0.0111 Tw +[( is initially set to 7, arrived at empirically by taking into)]TJ +-15.4014 -1.2889 TD +0 Tw +(account the overhead due to )Tj +/TT8 1 Tf +12.8037 0 TD +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-20.2456 -2.0667 TD +0.0478 Tw +(If the depth of the computation is less than )Tj +/TT8 1 Tf +19.5731 0 TD +0 Tw +(HELPDEPTH)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.5478 0 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.0478 Tw +[( next calculates the)]TJ +-31.5227 -1.2889 TD +0.3822 Tw +[(length of time spent in the computation. If this time is greater than )]TJ +/TT8 1 Tf +35.2032 0 TD +0 Tw +(HELPTIME)Tj +/TT6 1 Tf +-35.2032 -1.2889 TD +0.2667 Tw +(milliseconds, initially set to 1000, then )Tj +/TT8 1 Tf +18.6459 0 TD +0 Tw +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.2667 Tw +[( returns )]TJ +/TT8 1 Tf +4.2374 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2667 Tw +[( \(and a break occurs\),)]TJ +-29.4844 -1.2889 TD +0 Tw +(otherwise )Tj +/TT8 1 Tf +4.606 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-6.4062 -2.0667 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.0033 Tw +( determines the computation depth by searching back up the stack looking)Tj +-6.001 -1.2889 TD +0.1522 Tw +(for an )Tj +/TT8 1 Tf +3.1604 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.1522 Tw +[( frame \()]TJ +/TT8 1 Tf +3.7273 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.1522 Tw +(s indicate how far back unwinding is to take place)Tj +-16.4893 -1.2889 TD +0.0422 Tw +[(when an error occurs, see the Catching Errors section below\). At the same time, it counts)]TJ +0 -1.2222 TD +0.1433 Tw +(the number of internal calls to )Tj +/TT8 1 Tf +14.3893 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1433 Tw +[(. As soon as the number of calls to )]TJ +/TT8 1 Tf +16.9895 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1433 Tw +[( exceeds)]TJ +/TT8 1 Tf +-36.1796 -1.2889 TD +0 Tw +(HELPDEPTH)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.5778 0 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.0778 Tw +[( immediately stops searching for an )]TJ +/TT8 1 Tf +16.4862 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0778 Tw +[( and returns )]TJ +/TT8 1 Tf +5.8803 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-39.747 -1.2889 TD +(Otherwise, )Tj +/TT8 1 Tf +5.244 0 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.1478 Tw +[( continues searching until either an )]TJ +/TT8 1 Tf +16.644 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.1478 Tw +[( is found or the)]TJ +-32.6897 -1.2889 TD +0.2122 Tw +[(top of the stack is reached. \(If the second argument to )]TJ +/TT8 1 Tf +26.6624 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.2122 Tw +[( is )]TJ +/TT8 1 Tf +1.6393 0 TD +0 Tw +(INTERNAL)Tj +/TT6 1 Tf +4.8008 0 TD +0.2122 Tw +(, the)Tj +/TT8 1 Tf +-37.9032 -1.2889 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0467 Tw +[( is ignored by )]TJ +/TT8 1 Tf +6.4708 0 TD +0 Tw +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.0467 Tw +[( during this search.\) )]TJ +/TT8 1 Tf +9.5512 0 TD +0 Tw +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.0467 Tw +[( then counts the)]TJ +-32.8248 -1.2889 TD +0.0244 Tw +(number of function calls between the error and the last )Tj +/TT8 1 Tf +24.7259 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0244 Tw +(, or the top of the stack.)Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +42 0 obj +<< +/Length 7120 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-10)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0022 Tw +(The number of function calls plus the number of calls to )Tj +/TT8 1 Tf +24.981 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +( \(already counted\) is used as)Tj +-27.3814 -1.2889 TD +0 Tc +0 Tw +(the computation depth.)Tj +/TT8 1 Tf +0 -2 TD +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.1378 Tw +[( determines the computation time by subtracting the value of the variable)]TJ +/TT8 1 Tf +-6.001 -1.2889 TD +0 Tw +(HELPCLOCK)Tj +/TT6 1 Tf +5.4009 0 TD +0.0711 Tw +[( from the value of )]TJ +/TT8 1 Tf +8.4664 0 TD +0.1711 Tw +(\(CLOCK 2\))Tj +/TT6 1 Tf +5.572 0 TD +0.0711 Tw +(, the number of milliseconds of compute time)Tj +-19.4393 -1.2889 TD +0.1367 Tw +(\(see Chapter 12\). )Tj +/TT8 1 Tf +8.4368 0 TD +0 Tw +(HELPCLOCK)Tj +/TT6 1 Tf +5.4009 0 TD +0.1367 Tw +[( is rebound to the current value of )]TJ +/TT8 1 Tf +16.3775 0 TD +0.3278 Tw +(\(CLOCK 2\))Tj +/TT6 1 Tf +5.7287 0 TD +0.1367 Tw +[( for each)]TJ +-35.9439 -1.2889 TD +0.1778 Tw +(computation typed in to )Tj +/TT8 1 Tf +11.6774 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +0.1778 Tw +[( or to a break. The time criterion for breaking can be)]TJ +-14.6779 -1.2889 TD +0.0156 Tw +(suppressed by setting )Tj +/TT8 1 Tf +9.9309 0 TD +0 Tw +(HELPTIME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0156 Tw +[( to )]TJ +/TT8 1 Tf +1.4032 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0156 Tw +[( \(or a very big number\), or by setting )]TJ +/TT8 1 Tf +16.6722 0 TD +0 Tw +(HELPCLOCK)Tj +/TT6 1 Tf +-34.6074 -1.2889 TD +(to )Tj +/TT8 1 Tf +1.491 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3689 Tw +[(. Setting )]TJ +/TT8 1 Tf +5.1921 0 TD +0 Tw +(HELPCLOCK)Tj +/TT6 1 Tf +5.4009 0 TD +0.3689 Tw +[( to )]TJ +/TT8 1 Tf +2.1098 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3689 Tw +[( will not have any effect beyond the current)]TJ +-17.7944 -1.2889 TD +0.1578 Tw +(computation, because )Tj +/TT8 1 Tf +10.1954 0 TD +0 Tw +(HELPCLOCK)Tj +/TT6 1 Tf +5.4009 0 TD +0.1578 Tw +[( is rebound for each computation typed in to )]TJ +/TT8 1 Tf +21.399 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +-36.9953 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-4.9434 -2.0667 TD +0.3311 Tw +(You can suppress all error breaks by setting the top level binding of the variable)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(HELPFLAG)Tj +/TT6 1 Tf +4.8008 0 TD +0.1144 Tw +[( to )]TJ +/TT8 1 Tf +1.601 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1144 Tw +[( using )]TJ +/TT8 1 Tf +3.1849 0 TD +0 Tw +(SETTOPVAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.1144 Tc +( \()Tj +/TT8 1 Tf +0.6974 0 TD +0 Tc +(HELPFLAG)Tj +/TT6 1 Tf +4.8008 0 TD +0.1144 Tw +[( is bound as a local variable in )]TJ +/TT8 1 Tf +14.4683 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +-39.7549 -1.2889 TD +0.0111 Tw +(and reset to the global value of )Tj +/TT8 1 Tf +13.9372 0 TD +0 Tw +(HELPFLAG)Tj +/TT6 1 Tf +4.8008 0 TD +0.0111 Tw +[( on every )]TJ +/TT8 1 Tf +4.3854 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0111 Tw +[( line, so just )]TJ +/TT8 1 Tf +5.4942 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0111 Tw +(ing it will not)Tj +-34.0183 -1.2889 TD +0.1122 Tw +[(work.\) If )]TJ +/TT8 1 Tf +4.6707 0 TD +0.27 Tw +(HELPFLAG = T)Tj +/TT6 1 Tf +7.7412 0 TD +0.1122 Tw +[( \(the initial value\), the decision whether to cause an error or)]TJ +-12.4118 -1.2889 TD +0.04 Tw +(break is decided based on the computation time and the computation depth, as described)Tj +0 -1.2222 TD +0 Tw +(above. Finally, if )Tj +/TT8 1 Tf +7.8345 0 TD +(HELPFLAG = BREAK!)Tj +/TT6 1 Tf +10.2017 0 TD +(, a break will always occur following an error.)Tj +/TT4 1 Tf +10 0 0 10 102 360.4 Tm +(Break Window Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 357.69 m +558.01 357.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 343.74 Tm +(The appearance and use of break windows is controlled by the following variables:)Tj +/TT8 1 Tf +2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(WBREAK)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ONFLG)Tj +/TT8 1 Tf +3.0005 0 TD +(\) )Tj +/TT15 1 Tf +10 0 0 10 227.8561 324.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 324.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT17 1 Tf +1.0299 0 TD +(ONFLG)Tj +/TT6 1 Tf +3.0005 0 TD +0.11 Tw +[( is non-)]TJ +/TT8 1 Tf +3.4778 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.11 Tw +[(, break windows and trace windows are enabled. If )]TJ +/TT17 1 Tf +24.2025 0 TD +0 Tw +(ONFLG)Tj +/TT6 1 Tf +3.0005 0 TD +0.11 Tw +[( is )]TJ +/TT8 1 Tf +1.4348 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +-39.7467 -1.2889 TD +0.0778 Tw +(break windows are disabled \(break windows do not appear, but the executive prompt is)Tj +0 -1.2222 TD +0.2111 Tw +(changed to )Tj +/TT10 1 Tf +5.5482 0 TD +0 Tw +(:)Tj +/TT6 1 Tf +0.75 0 TD +0.2111 Tw +( to indicate that the system is in a break\). )Tj +/TT8 1 Tf +21.3359 0 TD +0 Tw +(WBREAK)Tj +/TT6 1 Tf +3.6006 0 TD +0.2111 Tw +[( returns )]TJ +/TT8 1 Tf +4.1263 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2111 Tw +[( if break)]TJ +-35.9611 -1.2889 TD +0 Tw +(windows are currently enabled; )Tj +/TT8 1 Tf +14.312 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT19 1 Tf +-18.779 -2.2156 TD +(MaxBkMenuWidth)Tj +/TT15 1 Tf +10 0 0 10 225.6 253.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 253.66 Tm +([Variable])Tj +/TT19 1 Tf +-38.2678 -1.2156 TD +(MaxBkMenuHeight)Tj +/TT15 1 Tf +10 0 0 10 231 242.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 242.72 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.3267 Tw +(The variables )Tj +/TT8 1 Tf +6.8252 0 TD +0 Tw +(MaxBkMenuWidth)Tj +/TT6 1 Tf +8.4014 0 TD +0.3267 Tw +[( \(default 125\) and )]TJ +/TT8 1 Tf +9.3086 0 TD +0 Tw +(MaxBkMenuHeight)Tj +/TT6 1 Tf +9.0015 0 TD +0.3267 Tw +[( \(default 300\))]TJ +-33.5367 -1.2889 TD +0 Tw +(control the maximum size of the backtrace menu. If this menu is too small to contain all of)Tj +0 -1.2222 TD +(the frames in the backtrace, it is made scrollable in both vertical and horizontal directions.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(AUTOBACKTRACEFLG)Tj +/TT15 1 Tf +10 0 0 10 236.4 184.18 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 184.18 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1289 Tw +(This variable controls when and what kind of backtrace menu is automatically brought)Tj +0 -1.2222 TD +0 Tw +(up. The value of )Tj +/TT8 1 Tf +7.6948 0 TD +(AUTOBACKTRACEFLG)Tj +/TT6 1 Tf +9.6016 0 TD +( can be one of the following:)Tj +/TT8 1 Tf +-15.0964 -2.0667 TD +(NIL)Tj +/TT6 1 Tf +2.4667 0 TD +(The backtrace menu is not automatically brought up \(the default\).)Tj +/TT8 1 Tf +-1.2667 -2.0667 TD +(T)Tj +/TT6 1 Tf +1.2667 0 TD +(On error breaks the )Tj +/TT8 1 Tf +8.8726 0 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +( menu is brought up.)Tj +/TT8 1 Tf +-12.5394 -2.0667 TD +(BT!)Tj +/TT6 1 Tf +2.4667 0 TD +(On error breaks the )Tj +/TT8 1 Tf +8.8726 0 TD +(BT!)Tj +/TT6 1 Tf +1.8003 0 TD +( menu is brought up.)Tj +/TT8 1 Tf +-14.9395 -2.0667 TD +(ALWAYS)Tj +/TT6 1 Tf +4.2667 0 TD +(The )Tj +/TT8 1 Tf +2.1394 0 TD +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.2155 Tw +[( menu is brought up on both error breaks and user breaks \(calls to)]TJ +-3.3396 -1.2889 TD +0 Tw +(functions broken by )Tj +/TT8 1 Tf +9.1016 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(\).)Tj +/TT8 1 Tf +-16.9687 -2.0667 TD +(ALWAYS!)Tj +/TT6 1 Tf +4.8667 0 TD +(On both error breaks and user breaks the )Tj +/TT8 1 Tf +18.3809 0 TD +(BT!)Tj +/TT6 1 Tf +1.8003 0 TD +( menu is brought up.)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +45 0 obj +<< +/Length 6880 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-11)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT19 1 Tf +9 0 0 9 102 568.2 Tm +(BACKTRACEFONT)Tj +/TT15 1 Tf +10 0 0 10 172.2 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(The backtrace menu is printed in the font )Tj +/TT8 1 Tf +18.4653 0 TD +(BACKTRACEFONT)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT19 1 Tf +-28.9333 -2.2156 TD +(CLOSEBREAKWINDOWFLG)Tj +/TT15 1 Tf +10 0 0 10 204.6 531.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 531.66 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.7278 Tw +[(The system normally closes break windows after the break is exited. If)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(CLOSEBREAKWINDOWFLG)Tj +/TT6 1 Tf +11.4019 0 TD +0.0789 Tw +[( is )]TJ +/TT8 1 Tf +1.3726 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0789 Tw +[(, break windows will not be closed on exit. In this case,)]TJ +-14.5748 -1.2889 TD +0 Tw +(you must close all break windows. )Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(BREAKREGIONSPEC)Tj +/TT15 1 Tf +10 0 0 10 183 473.12 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 473.12 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0056 Tw +(Break windows are positioned near the TTY window of the broken process, as determined)Tj +0 -1.2222 TD +0.0022 Tw +(by the variable )Tj +/TT8 1 Tf +6.8275 0 TD +0 Tw +(BREAKREGIONSPEC)Tj +/TT6 1 Tf +9.0015 0 TD +0.0022 Tw +(. The value of this variable is a region \(see Chapter 27\))Tj +-15.8289 -1.2889 TD +0 Tw +(whose )Tj +/TT8 1 Tf +3.3125 0 TD +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1978 Tw +[( and )]TJ +/TT8 1 Tf +2.5884 0 TD +0 Tw +(BOTTOM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[( fields are an offset from the )]TJ +/TT8 1 Tf +14.0041 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1978 Tw +[( and )]TJ +/TT8 1 Tf +2.5884 0 TD +0 Tw +(BOTTOM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[( of the TTY)]TJ +-34.4954 -1.2889 TD +0.05 Tw +[(window. The )]TJ +/TT8 1 Tf +6.5216 0 TD +0 Tw +(WIDTH)Tj +/TT6 1 Tf +3.0005 0 TD +0.05 Tw +[( and )]TJ +/TT8 1 Tf +2.2929 0 TD +0 Tw +(HEIGHT)Tj +/TT6 1 Tf +3.6006 0 TD +0.05 Tw +[( fields of )]TJ +/TT8 1 Tf +4.2076 0 TD +0 Tw +(BREAKREGIONSPEC)Tj +/TT6 1 Tf +9.0015 0 TD +0.05 Tw +[( determine the size of the)]TJ +-28.6246 -1.2889 TD +0 Tw +(break window.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(TRACEWINDOW)Tj +/TT15 1 Tf +10 0 0 10 161.4 391.38 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 391.38 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0022 Tw +(The trace window, )Tj +/TT8 1 Tf +8.5223 0 TD +0 Tw +(TRACEWINDOW)Tj +/TT6 1 Tf +6.6011 0 TD +0.0022 Tw +(, is used for tracing functions. It is brought up when the)Tj +-15.1234 -1.2889 TD +0.2833 Tw +(first tracing occurs and stays up until you close it. )Tj +/TT8 1 Tf +25.5615 0 TD +0 Tw +(TRACEWINDOW)Tj +/TT6 1 Tf +6.6011 0 TD +0.2833 Tw +[( can be set to a)]TJ +-32.1626 -1.2889 TD +0 Tw +(particular window to cause the tracing formation to print there.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(TRACEREGION)Tj +/TT15 1 Tf +10 0 0 10 161.4 332.24 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 332.24 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(The trace window is first created in the region )Tj +/TT8 1 Tf +20.5928 0 TD +(TRACEREGION)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 292.7 Tm +(Creating Breaks with BREAK1)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 289.99 m +510.01 289.99 l +S +BT +/TT6 1 Tf +9 0 0 9 78 276.04 Tm +0.0978 Tw +(The basic function of the break package is )Tj +/TT8 1 Tf +19.4756 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0978 Tw +[(, which creates a break. A break appears to be a)]TJ +-23.0762 -1.2889 TD +0.0311 Tw +(regular executive, with the prompt )Tj +/TT10 1 Tf +15.8294 0 TD +0 Tw +(:)Tj +/TT6 1 Tf +0.75 0 TD +0.0311 Tw +(, but )Tj +/TT8 1 Tf +2.7946 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0311 Tw +[( also detects and interpretes break commands \(see)]TJ +-22.9746 -1.2889 TD +0 Tw +(the Break Commands section above\).)Tj +/TT8 1 Tf +2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BRKEXP)Tj +/TT13 1 Tf +3.6006 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BRKWHEN)Tj +/TT13 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BRKFN)Tj +/TT13 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BRKCOMS)Tj +/TT13 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BRKTYPE)Tj +/TT13 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ERRORN)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 363.9343 233.5 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 401.97 233.5 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +(If )Tj +/TT17 1 Tf +1.051 0 TD +(BRKWHEN)Tj +/TT6 1 Tf +4.2007 0 TD +0.1311 Tw +[( \(evaluated\) is non-)]TJ +/TT8 1 Tf +8.9212 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1311 Tw +(, a break occurs and commands are then taken from)Tj +/TT17 1 Tf +-15.9732 -1.2889 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.2278 Tw +[( or the terminal and interpreted. All inputs not recognized by )]TJ +/TT8 1 Tf +30.3491 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.2278 Tw +[( are)]TJ +-38.1503 -1.2889 TD +0 Tw +(simply passed on to the programmers assistant.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +1.0377 0 TD +(BRKWHEN)Tj +/TT6 1 Tf +4.2007 0 TD +0.1178 Tw +[( is )]TJ +/TT8 1 Tf +1.4504 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +0.6178 0 TD +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.1178 Tw +[( is evaluated and returned as the value of )]TJ +/TT8 1 Tf +19.5698 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1178 Tw +(, without)Tj +-35.8778 -1.2889 TD +0 Tw +(causing a break.)Tj +0 -2 TD +0.1478 Tw +(When a break occurs, if )Tj +/TT17 1 Tf +11.3448 0 TD +0 Tw +(ERRORN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1478 Tw +[( is a list whose )]TJ +/TT8 1 Tf +7.4005 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1478 Tw +[( is a number, )]TJ +/TT8 1 Tf +6.5511 0 TD +0 Tw +(ERRORMESS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1478 Tw +[( \(see the)]TJ +-36.0982 -1.2889 TD +0.0689 Tw +[(Signalling Errors section below\) is called to print an identifying message. If )]TJ +/TT17 1 Tf +34.5474 0 TD +0 Tw +(ERRORN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0689 Tw +[( is a)]TJ +-38.148 -1.2889 TD +0.0644 Tw +(list whose )Tj +/TT8 1 Tf +4.8257 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0644 Tw +[( is not a number, )]TJ +/TT8 1 Tf +7.9863 0 TD +0 Tw +(ERRORMESS1)Tj +/TT6 1 Tf +6.001 0 TD +0.0644 Tw +[( \(see the Signalling Errors section below\) is)]TJ +-20.6132 -1.2889 TD +0.2833 Tw +[(called. Otherwise, no preliminary message is printed. Following this, the message)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BRKFN)Tj +/TT8 1 Tf +3.0005 0 TD +( broken\))Tj +/TT6 1 Tf +4.8008 0 TD +( is printed.)Tj +-8.4014 -2.0667 TD +(Since )Tj +/TT8 1 Tf +2.6886 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1178 Tw +[( itself calls functions, when one of these is broken, an infinite loop would)]TJ +-6.2892 -1.2889 TD +0.0367 Tw +(occur. )Tj +/TT8 1 Tf +3.255 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0367 Tw +[( detects this situation, and prints )]TJ +/TT8 1 Tf +14.8831 0 TD +0.0867 Tw +(Break within a break on )Tj +/TT17 1 Tf +14.8357 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0367 Tw +(, and)Tj +-37.7745 -1.2889 TD +0 Tw +(then simply calls the function without going into a break.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +50 0 obj +<< +/Length 9063 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-12)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0322 Tw +(The commands )Tj +/TT8 1 Tf +7.1103 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5322 0 TD +(!GO)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5322 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5322 0 TD +(!OK)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5322 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0322 Tw +[( and )]TJ +/TT11 1 Tf +2.2573 0 TD +0 Tw +<0042>Tj +/TT6 1 Tf +0.603 0 TD +0.0322 Tw +[( are the only ways to leave )]TJ +/TT8 1 Tf +12.2119 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0322 Tw +[(. The)]TJ +-37.5136 -1.2889 TD +0 Tw +(command )Tj +/TT8 1 Tf +4.9227 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.2244 Tw +[( causes )]TJ +/TT17 1 Tf +3.8224 0 TD +0 Tw +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +0.2244 Tw +[( to be evaluated, and saves the value on the variable)]TJ +/TT8 1 Tf +-14.7461 -1.2889 TD +0 Tw +(!VALUE)Tj +/TT6 1 Tf +3.6006 0 TD +(. Other commands can be defined for )Tj +/TT8 1 Tf +16.9082 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +( via )Tj +/TT8 1 Tf +1.856 0 TD +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +( \(below\).)Tj +/TT17 1 Tf +-32.5664 -2.0667 TD +(BRKTYPE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0411 Tw +[( is )]TJ +/TT8 1 Tf +1.2971 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +[( for user breaks, )]TJ +/TT8 1 Tf +7.4965 0 TD +0 Tw +(INTERRUPT)Tj +/TT6 1 Tf +5.4009 0 TD +0.0411 Tw +[( for Control-H breaks, and )]TJ +/TT8 1 Tf +12.1396 0 TD +0 Tw +(ERRORX)Tj +/TT6 1 Tf +3.6006 0 TD +0.0411 Tw +[( for error)]TJ +-35.9356 -1.2889 TD +0.1944 Tw +[(breaks. For breaks when )]TJ +/TT17 1 Tf +12.2608 0 TD +0 Tw +(BRKTYPE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1944 Tw +[( is not )]TJ +/TT8 1 Tf +3.5023 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6944 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1944 Tw +[( will clear and save the input)]TJ +-26.0591 -1.2889 TD +0.0122 Tw +[(buffer. If the break returns a value \(i.e., is not aborted via )]TJ +/TT11 1 Tf +25.8259 0 TD +0 Tw +<0042>Tj +/TT6 1 Tf +0.603 0 TD +0.0122 Tw +[( or Control-D\) the input buffer)]TJ +-26.4289 -1.2222 TD +0 Tw +(is restored.)Tj +0 -2 TD +0.2256 Tw +(The fourth argument to )Tj +/TT8 1 Tf +11.5575 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.2256 Tw +[( is )]TJ +/TT17 1 Tf +1.666 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.2256 Tw +(, a list of break commands that )Tj +/TT8 1 Tf +15.3797 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +-36.4044 -1.2889 TD +0.0622 Tw +[(interprets and executes as though they were keyboard input. One can think of )]TJ +/TT17 1 Tf +35.8008 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +-35.8008 -1.2889 TD +0.0056 Tw +[(as another input file which always has priority over the keyboard. Whenever )]TJ +/TT17 1 Tf +34.5781 0 TD +0 Tw +(BRKCOM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0144 Tw +(S =)Tj +-38.1787 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6378 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1378 Tw +[( reads its next command from the keyboard. Whenever )]TJ +/TT17 1 Tf +26.2303 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1378 Tw +[( is non-)]TJ +/TT8 1 Tf +-36.4697 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6478 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1478 Tw +[( takes )]TJ +/TT8 1 Tf +3.0807 0 TD +0.3556 Tw +(\(CAR BRKCOMS\))Tj +/TT6 1 Tf +8.1568 0 TD +0.1478 Tw +[( as its next command and sets )]TJ +/TT17 1 Tf +14.4466 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1478 Tw +[( to )]TJ +/TT8 1 Tf +1.6676 0 TD +0 Tw +(\(CDR)Tj +-37.6011 -1.2889 TD +(BRKCOMS\))Tj +/TT6 1 Tf +4.8008 0 TD +0.1244 Tw +[(. For example, suppose you wished to see the value of the variable )]TJ +/TT8 1 Tf +31.5113 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT13 1 Tf +0.3744 0 TD +(after)Tj +/TT6 1 Tf +1.833 0 TD +0.1244 Tc +( a)Tj +-39.1196 -1.2889 TD +0 Tc +0.02 Tw +[(function was evaluated. You could set up a break with )]TJ +/TT17 1 Tf +24.7991 0 TD +0 Tw +(BRKCOMS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0489 Tw +[( = \(EVAL \(PRINT X\))]TJ +-28.9998 -1.2889 TD +0 Tw +(OK\))Tj +/TT6 1 Tf +1.8003 0 TD +0.0944 Tw +[(, which would have the desired effect. If )]TJ +/TT17 1 Tf +19.0844 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0944 Tw +[( is non-)]TJ +/TT8 1 Tf +3.4467 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0944 Tw +(, the value of a break)Tj +-30.3323 -1.2889 TD +0.0411 Tw +[(command is not printed. If you desire to see a value, you must print it yourself, as in the)]TJ +0 -1.2222 TD +0.1167 Tw +[(above example. The function )]TJ +/TT8 1 Tf +13.8563 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1167 Tw +[( \(see Chapter 15\) uses )]TJ +/TT17 1 Tf +10.4032 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1167 Tw +(: it sets up a break)Tj +-31.4606 -1.2889 TD +0.0778 Tw +(with two commands; the first one prints the arguments of the function, or whatever you)Tj +0 -1.2222 TD +0.0033 Tw +(specify, and the second is the command )Tj +/TT8 1 Tf +17.8671 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0033 Tw +(, which causes the function to be evaluated and)Tj +-19.0673 -1.2889 TD +0 Tw +(its value printed.)Tj +/TT10 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1211 Tw +[(: If an error occurs while interpreting the )]TJ +/TT17 1 Tf +19.5754 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1211 Tw +[( commands, )]TJ +/TT17 1 Tf +5.8643 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1211 Tw +[( is set to)]TJ +/TT8 1 Tf +-36.0632 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, and a full interactive break occurs.)Tj +-1.8003 -2.0667 TD +0.0544 Tw +[(The break package has a facility for redirecting ouput to a file. All output resulting from)]TJ +/TT17 1 Tf +0 -1.2222 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.03 Tw +[( is output to the value of the variable )]TJ +/TT8 1 Tf +16.7778 0 TD +0 Tw +(BRKFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.03 Tw +(, which should be the name of an)Tj +-25.1792 -1.2889 TD +0.0722 Tw +[(open file. Output due to user type-in is not affected, and will always go to the terminal.)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BRKFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( is initially )Tj +/TT8 1 Tf +4.8843 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT19 1 Tf +-12.3517 -2.2156 TD +(BREAKMACROS)Tj +/TT15 1 Tf +10 0 0 10 209.4 235.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 235.8 Tm +([Variable])Tj +/TT8 1 Tf +-35.6011 -1.8444 TD +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0889 Tw +[( is a list of the form )]TJ +/TT8 1 Tf +9.3419 0 TD +0 Tw +(\(\()Tj +/TT17 1 Tf +1.2002 0 TD +(NAME)Tj +6 0 0 6 349.89 217.2 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 353.49 219.2 Tm +( )Tj +/TT17 1 Tf +0.8123 0 TD +(COM1)Tj +6 0 0 6 382.4 217.2 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 386 219.2 Tm +0.2122 Tw +[( ... )]TJ +/TT17 1 Tf +3.4249 0 TD +0 Tw +(COM1)Tj +6 0 0 6 438.42 217.2 Tm +(n)Tj +/TT8 1 Tf +9 0 0 9 442.02 219.2 Tm +(\)\()Tj +/TT17 1 Tf +1.2002 0 TD +(NAME)Tj +6 0 0 6 474.42 217.2 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 478.02 219.2 Tm +( )Tj +/TT17 1 Tf +0.8123 0 TD +(COM2)Tj +6 0 0 6 506.93 217.2 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 510.53 219.2 Tm +0.2122 Tw +[( ...)]TJ +/TT17 1 Tf +-37.3922 -1.3944 TD +0 Tw +(COM2)Tj +6 0 0 6 195.6 204.65 Tm +(n)Tj +/TT8 1 Tf +9 0 0 9 199.2 206.65 Tm +(\)...\))Tj +/TT6 1 Tf +3.0005 0 TD +0.0444 Tw +[(. Whenever an atomic command is given to )]TJ +/TT8 1 Tf +20.0411 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0444 Tw +(, it first searches the list)Tj +/TT8 1 Tf +-29.4422 -1.3944 TD +0 Tw +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +0.1978 Tw +[( for the command. If the command is equal to )]TJ +/TT17 1 Tf +22.8103 0 TD +0 Tw +(NAME)Tj +6 0 0 6 460.32 192.1 Tm +(i)Tj +/TT6 1 Tf +9 0 0 9 463.92 194.1 Tm +(, )Tj +/TT8 1 Tf +0.6978 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[( simply)]TJ +-36.5117 -1.3944 TD +0.22 Tw +(appends the corresponding commands to the front of )Tj +/TT17 1 Tf +25.5891 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.22 Tw +[(, and goes on. If the)]TJ +-29.7898 -1.2889 TD +0.1344 Tw +(command is not found on )Tj +/TT8 1 Tf +12.3421 0 TD +0 Tw +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT8 1 Tf +0.6344 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1344 Tw +[( then checks to see if it is one of the)]TJ +-23.1782 -1.2889 TD +0 Tw +(built in commands, and finally, treats it as a function or variable as before.)Tj +0 -2 TD +0.3289 Tw +(If the command is not the name of a defined function, bound variable, or )Tj +/TT8 1 Tf +36.9917 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +-36.9917 -1.2889 TD +(command, )Tj +/TT8 1 Tf +5.0971 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1489 Tw +[( will attempt spelling correction using )]TJ +/TT8 1 Tf +17.9607 0 TD +0 Tw +(BREAKCOMSLST)Tj +/TT6 1 Tf +7.2012 0 TD +0.1489 Tw +[( as a spelling)]TJ +-33.8596 -1.2889 TD +0.0411 Tw +[(list. If spelling correction is unsuccessful, )]TJ +/TT8 1 Tf +18.8708 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0411 Tw +[( will go ahead and call )]TJ +/TT8 1 Tf +10.4464 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0411 Tw +[( anyway,)]TJ +-35.9182 -1.2889 TD +0 Tw +(since the atom may also be a misspelled history command.)Tj +0 -2 TD +0.1567 Tw +(For example, the command )Tj +/TT8 1 Tf +12.9582 0 TD +0 Tw +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1567 Tw +[( could be defined by including on )]TJ +/TT8 1 Tf +16.2476 0 TD +0 Tw +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +0.1567 Tw +[( the)]TJ +-38.2072 -1.2889 TD +0 Tw +(form:)Tj +/TT8 1 Tf +9.3333 -1.9333 TD +(\(ARGS \(PRINT \(VARIABLES LASTPOS T\)\)\))Tj +ET +endstream +endobj +51 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +53 0 obj +<< +/Length 8423 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-13)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT8 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(BREAKREAD)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 185.2544 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.3633 Tw +(Useful within )Tj +/TT8 1 Tf +7.0406 0 TD +0 Tw +(BREAKMACROS)Tj +/TT6 1 Tf +6.6011 0 TD +0.3633 Tw +[( for reading arguments. If )]TJ +/TT8 1 Tf +14.036 0 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.3633 Tw +[( is non-)]TJ +/TT8 1 Tf +3.9845 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3633 Tw +[( \(the)]TJ +-37.6631 -1.2889 TD +0.1444 Tw +(command in which the call to )Tj +/TT8 1 Tf +14.206 0 TD +0 Tw +(BREAKREAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.1444 Tw +[( appears was not typed in\), returns the next)]TJ +-19.6069 -1.2889 TD +0 Tw +(break command from )Tj +/TT8 1 Tf +9.8384 0 TD +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +(, and sets )Tj +/TT8 1 Tf +4.3457 0 TD +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(\(CDR BRKCOMS\))Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +-31.7588 -2.0667 TD +(If )Tj +/TT8 1 Tf +0.9921 0 TD +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0722 Tw +[( is )]TJ +/TT8 1 Tf +1.3593 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +[( \(the command was typed in\), then )]TJ +/TT8 1 Tf +16.1804 0 TD +0 Tw +(BREAKREAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.0722 Tw +[( returns either the rest)]TJ +-29.9337 -1.2889 TD +0.0467 Tw +(of the commands on the line as a list \(if )Tj +/TT17 1 Tf +17.9759 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1122 Tw +[( = LINE)]TJ +/TT6 1 Tf +4.4251 0 TD +0.0467 Tw +(\) or just the next command on the)Tj +-24.8015 -1.2889 TD +0 Tw +(line \(if )Tj +/TT17 1 Tf +3.1001 0 TD +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +( is not )Tj +/TT8 1 Tf +2.9189 0 TD +(LINE)Tj +/TT6 1 Tf +2.4004 0 TD +(\).)Tj +-10.8198 -2.0667 TD +0.1156 Tw +(For example, the )Tj +/TT8 1 Tf +7.98 0 TD +0 Tw +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.1156 Tw +[( command is defined as )]TJ +/TT8 1 Tf +11.3004 0 TD +0.2767 Tw +(\(BAKTRACE LASTPOS NIL)Tj +/TT10 1 Tf +13.1554 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.3656 0 TD +(\(BREAKREAD)Tj +-34.0015 -1.2889 TD +0.2544 Tw +(LINE\) 0 T\))Tj +/TT6 1 Tf +7.11 0 TD +0.1067 Tw +[(. Thus, if you type )]TJ +/TT8 1 Tf +9.1532 0 TD +0 Tw +(BT)Tj +/TT6 1 Tf +1.2002 0 TD +0.1067 Tw +(, the third argument to )Tj +/TT8 1 Tf +10.8219 0 TD +0 Tw +(BAKTRACE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1067 Tw +[( is )]TJ +/TT8 1 Tf +1.4282 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1067 Tw +[(. If you)]TJ +-36.3145 -1.2889 TD +0 Tw +(type )Tj +/TT8 1 Tf +2.2124 0 TD +(BT SUBRP)Tj +/TT6 1 Tf +4.8008 0 TD +(, the third argument is )Tj +/TT8 1 Tf +10.1314 0 TD +(\(SUBRP\).)Tj +/TT19 1 Tf +-19.8112 -2.2156 TD +(BREAKRESETFORMS)Tj +/TT15 1 Tf +10 0 0 10 183 424.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 424.86 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0322 Tw +(If you are developing programs that change the way a user and Medley normally interact)Tj +0 -1.2222 TD +0.2111 Tw +(\(e.g., change or disable the interrupt or line-editing characters, turn off echoing, etc.\),)Tj +T* +0.1256 Tw +(debugging them by breaking or tracing may be difficult, because Medley might be in a)Tj +T* +0.2178 Tw +(funny state at the time of the break. )Tj +/TT8 1 Tf +19.1133 0 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +0.2178 Tw +[( is designed to solve this)]TJ +-28.1148 -1.2889 TD +0.0233 Tw +[(problem. You put in )]TJ +/TT8 1 Tf +9.584 0 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +0.0233 Tw +[( expressions suitable for use in conjunction with)]TJ +/TT8 1 Tf +-18.5854 -1.2889 TD +0 Tw +(RESETFORM)Tj +/TT6 1 Tf +5.4009 0 TD +0.1211 Tw +[( or )]TJ +/TT8 1 Tf +1.6831 0 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1211 Tw +[( \(see Changing and Restoring System State below\). When a)]TJ +-12.4849 -1.2889 TD +0.3922 Tw +(break occurs, )Tj +/TT8 1 Tf +6.8733 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.3922 Tw +[( evaluates each expression on )]TJ +/TT8 1 Tf +15.2477 0 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +( )Tj +/TT13 1 Tf +0.6422 0 TD +(before)Tj +/TT6 1 Tf +2.3521 0 TD +0.3922 Tw +[( any)]TJ +-37.7174 -1.2889 TD +0.3089 Tw +[(interaction with the terminal, and saves the values. When the break expression is)]TJ +0 -1.2222 TD +0.22 Tw +(evaluated via an )Tj +/TT8 1 Tf +8.202 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.72 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.22 Tw +(, or )Tj +/TT8 1 Tf +2.1309 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.72 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.22 Tw +[( first restores the state of the system with)]TJ +-20.1743 -1.2889 TD +0.2844 Tw +(respect to the various expressions on )Tj +/TT8 1 Tf +18.2262 0 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +0.2844 Tw +[(. When control returns to)]TJ +/TT8 1 Tf +-27.2277 -1.2889 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.2144 Tw +(, the expressions on )Tj +/TT8 1 Tf +9.7836 0 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +0.2144 Tw +[( are )]TJ +/TT13 1 Tf +2.3029 0 TD +0 Tw +(again)Tj +/TT6 1 Tf +2.2217 0 TD +0.2144 Tw +[( evaluated, and their values)]TJ +-26.9102 -1.2889 TD +0.1944 Tw +[(saved. When the break is exited with an )]TJ +/TT8 1 Tf +19.8745 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6944 0 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6944 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1944 Tw +(, or )Tj +/TT11 1 Tf +2.0798 0 TD +0 Tw +<0042>Tj +/TT6 1 Tf +0.603 0 TD +0.1944 Tw +[( command, by typing)]TJ +-29.9472 -1.2889 TD +0.0533 Tw +(Control-D, or by a )Tj +/TT8 1 Tf +8.5156 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.0533 Tw +[( or )]TJ +/TT8 1 Tf +1.5476 0 TD +0 Tw +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0533 Tw +[( you type in, )]TJ +/TT8 1 Tf +6.0039 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0533 Tw +[( again restores state. Thus)]TJ +-28.069 -1.2889 TD +0.3933 Tw +(the net effect is to make the break invisible with respect to your programs, but)Tj +0 -1.2222 TD +0 Tw +(nevertheless allow you to interact in the break in the normal fashion.)Tj +0 -2 TD +0.0733 Tw +(All user type-in is scanned to make the operations undoable, as described in Chapter 13.)Tj +0 -1.2222 TD +0.18 Tw +(At this point, )Tj +/TT8 1 Tf +6.6132 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.18 Tw +(s and )Tj +/TT8 1 Tf +2.9767 0 TD +0 Tw +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +0.18 Tw +[(s are also noticed. However, if you type in an)]TJ +-17.9913 -1.2889 TD +0.1533 Tw +(expression which calls a function that then does a )Tj +/TT8 1 Tf +23.5196 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.1533 Tw +(, this )Tj +/TT8 1 Tf +2.6797 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.1533 Tw +[( will not be)]TJ +-34.6007 -1.2889 TD +0 Tw +(noticed, and the effects of )Tj +/TT8 1 Tf +11.5557 0 TD +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +( will )Tj +/TT13 1 Tf +2.207 0 TD +(not)Tj +/TT6 1 Tf +1.333 0 TD +( be reversed.)Tj +-24.0972 -2.0667 TD +0.2611 Tw +(As mentioned earlier, )Tj +/TT8 1 Tf +10.5939 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.2611 Tw +[( detects Break within a break situations, and avoids)]TJ +-14.1945 -1.2889 TD +0.4711 Tw +[(infinite loops. If the loop occurs because of an error, )]TJ +/TT8 1 Tf +28.5645 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.4711 Tw +[( simply rebinds)]TJ +/TT8 1 Tf +-32.1651 -1.2889 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +0.0722 Tw +[( to )]TJ +/TT8 1 Tf +1.5165 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +(, and calls )Tj +/TT8 1 Tf +4.8592 0 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0722 Tw +[(. This situation most frequently occurs when)]TJ +-19.5779 -1.2889 TD +0 Tw +(there is a bug in a function called by )Tj +/TT8 1 Tf +16.2437 0 TD +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT8 1 Tf +-25.2451 -2.0667 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1311 Tw +[( expressions can also be included on )]TJ +/TT8 1 Tf +17.1868 0 TD +0 Tw +(BREAKRESETFORMS)Tj +/TT6 1 Tf +9.0015 0 TD +0.1311 Tw +[( for saving and restoring)]TJ +-28.5887 -1.2889 TD +0.1567 Tw +(system parameters, e.g. )Tj +/TT8 1 Tf +11.0789 0 TD +0.3767 Tw +(\(SETQ LISPXHISTORY NIL\))Tj +/TT6 1 Tf +14.5556 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.6567 0 TD +0.3767 Tw +(\(SETQ DWIMFLG NIL\))Tj +/TT6 1 Tf +11.5551 0 TD +0.1567 Tw +(, etc.)Tj +-37.8462 -1.2889 TD +0.0844 Tw +(These are handled specially by )Tj +/TT8 1 Tf +14.265 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0844 Tw +[( in that the current value of the variable is saved)]TJ +-17.8656 -1.2889 TD +0 Tw +(before the )Tj +/TT8 1 Tf +4.6724 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +( is executed, and upon restoration, the variable is set back to this value.)Tj +ET +endstream +endobj +54 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +56 0 obj +<< +/Length 9428 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-14)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT4 1 Tf +0 -4.38 TD +(Signalling Errors)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 551.54 Tm +0.0111 Tw +[(With the Medley release, Interlisp errors use the Xerox Common Lisp \(XCL\) error system. Most of the)]TJ +0 -1.2222 TD +0.3056 Tw +(functions still exist for compatibility with previous releases, but the underlying machinery has)Tj +T* +0.1811 Tw +[(changed. There are some incompatible differences, especially with respect to error numbers. All)]TJ +T* +0.12 Tw +(errors are now handled by signalling an object of type )Tj +/TT8 1 Tf +25.3045 0 TD +0.2867 Tw +(XCL:CONDITION. )Tj +/TT6 1 Tf +10.1749 0 TD +0.12 Tw +[( This means the error)]TJ +-35.4794 -1.2889 TD +0.0433 Tw +(numbers generated are different from the old Interlisp method of registered numbers for well-known)Tj +0 -1.2222 TD +0.2644 Tw +[(errors and error messages for all other errors. The mapping from Interlisp erors to Lisp error)]TJ +T* +0.1089 Tw +[(conditions is listed in the Error List sections below. The obsolete error numbers still generate error)]TJ +T* +0 Tw +(messages, but they are useless.)Tj +/TT8 1 Tf +2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERRORX)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ERXM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 217.0544 454.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 454.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Calls )Tj +/TT8 1 Tf +2.5282 0 TD +(CL:ERROR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0633 Tw +[( after first converting )]TJ +/TT17 1 Tf +9.8217 0 TD +0 Tw +(ERXM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0633 Tw +[( into a condition. If )]TJ +/TT17 1 Tf +9.2638 0 TD +0 Tw +(ERXM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0633 Tw +[( is )]TJ +/TT8 1 Tf +1.3415 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0633 Tw +[( the value of)]TJ +/TT8 1 Tf +-34.357 -1.2889 TD +0 Tw +(*LAST-CONDITION*)Tj +/TT6 1 Tf +9.6016 0 TD +0.0511 Tw +[( is used. If )]TJ +/TT17 1 Tf +5.257 0 TD +0 Tw +(ERXM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0511 Tw +[( is an Interlisp error descriptor, it is first converted)]TJ +-17.259 -1.2889 TD +0.0256 Tw +[(to a condition. If )]TJ +/TT17 1 Tf +7.8885 0 TD +0 Tw +(ERXM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0256 Tw +[( is already a condition, it is passed along unchanged. )]TJ +/TT8 1 Tf +24.0814 0 TD +0 Tw +(ERRORX)Tj +/TT6 1 Tf +3.6006 0 TD +0.0256 Tw +[( also)]TJ +-37.9709 -1.2889 TD +0.2078 Tw +(sets a proceed case for )Tj +/TT8 1 Tf +11.117 0 TD +0 Tw +(XCL:PROCEED)Tj +/TT6 1 Tf +6.6011 0 TD +0.2078 Tw +(, which will attempt to re-evaluate the caller of)Tj +/TT8 1 Tf +-17.7181 -1.2889 TD +0 Tw +(ERRORX)Tj +/TT6 1 Tf +3.6006 0 TD +(, much as )Tj +/TT8 1 Tf +4.4355 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +( did in older versions of the break package. )Tj +/TT8 1 Tf +-11.903 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERROR)Tj +/TT4 1 Tf +10 0 0 10 182.4052 371.66 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 185.18 371.66 Tm +(MESS)Tj +6 0 0 6 206.78 369.66 Tm +(1)Tj +/TT13 1 Tf +9 0 0 9 210.38 371.66 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +6 0 0 6 234.23 369.66 Tm +(2)Tj +/TT13 1 Tf +9 0 0 9 237.83 371.66 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(NOBREAK)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 283.287 371.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 371.66 Tm +([Function])Tj +-35.4033 -1.95 TD +(Prints )Tj +/TT17 1 Tf +2.8932 0 TD +(MESS)Tj +6 0 0 6 221.65 352.11 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 225.25 354.11 Tm +0.0211 Tw +[( \(using )]TJ +/TT8 1 Tf +3.3313 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.0211 Tw +(\), followed by a space if )Tj +/TT17 1 Tf +10.8215 0 TD +0 Tw +(MESS)Tj +6 0 0 6 401.25 352.11 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 404.85 354.11 Tm +0.0211 Tw +[( is an atom, otherwise a carriage)]TJ +-25.65 -1.3944 TD +0.0767 Tw +[(return. Then )]TJ +/TT17 1 Tf +6.2661 0 TD +0 Tw +(MESS)Tj +6 0 0 6 252.01 339.56 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 255.61 341.56 Tm +0.0767 Tw +[( is printed \(using )]TJ +/TT8 1 Tf +8.0957 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.0767 Tw +[( if )]TJ +/TT17 1 Tf +1.2774 0 TD +0 Tw +(MESS)Tj +6 0 0 6 388.59 339.56 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 392.19 341.56 Tm +0.0767 Tw +[( is a string; otherwise )]TJ +/TT8 1 Tf +10.0284 0 TD +0 Tw +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0767 Tw +[(\). For)]TJ +-37.2722 -1.3944 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.249 0 TD +(\(ERROR NON-NUMERIC ARG T\))Tj +/TT6 1 Tf +16.2026 0 TD +( prints)Tj +/TT8 1 Tf +-17.1183 -1.6667 TD +(NON-NUMERIC ARG)Tj +0 -1 TD +(T)Tj +/TT6 1 Tf +-3.3333 -1.8444 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(\(ERROR FOO "NOT A FUNCTION"\))Tj +/TT6 1 Tf +17.4049 0 TD +( prints )Tj +/TT8 1 Tf +3.1191 0 TD +(FOO NOT A FUNCTION)Tj +/TT6 1 Tf +10.8042 0 TD +(. If both )Tj +/TT17 1 Tf +3.9272 0 TD +(MESS)Tj +6 0 0 6 530.38 286.41 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 174 275.86 Tm +(and )Tj +/TT17 1 Tf +1.9429 0 TD +(MESS)Tj +6 0 0 6 213.09 273.86 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 216.69 275.86 Tm +( are )Tj +/TT8 1 Tf +1.874 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the message printed is simply )Tj +/TT8 1 Tf +13.9277 0 TD +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-25.3459 -2.1722 TD +(If )Tj +/TT17 1 Tf +0.9633 0 TD +(NOBREAK)Tj +/TT8 1 Tf +4.2007 0 TD +0.1044 Tw +[( = T)]TJ +/TT6 1 Tf +2.6093 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5433 0 TD +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( prints its message and then calls )]TJ +/TT8 1 Tf +15.0699 0 TD +0 Tw +(ERROR!)Tj +/TT6 1 Tf +3.6006 0 TD +0.0433 Tw +[( \(below\). Otherwise it)]TJ +-29.9876 -1.2889 TD +0 Tw +(calls )Tj +/TT8 1 Tf +2.3075 0 TD +0.2578 Tw +(\(ERRORX \(17 \()Tj +/TT17 1 Tf +8.9169 0 TD +0 Tw +(MESS)Tj +6 0 0 6 296.62 242.71 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 300.22 244.71 Tm +0.2578 Tw +[( . )]TJ +/TT17 1 Tf +2.3158 0 TD +0 Tw +(MESS)Tj +6 0 0 6 342.66 242.71 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 346.26 244.71 Tm +(\)\)\))Tj +/TT6 1 Tf +1.8003 0 TD +0.1078 Tw +(, i.e., generates error number 17, in which)Tj +-20.9403 -1.3944 TD +0.0711 Tw +[(case the decision as to whether to break, and whether to print a message, is handled as)]TJ +0 -1.2222 TD +0 Tw +(any other error.)Tj +0 -2 TD +0.0444 Tw +(If the value of )Tj +/TT8 1 Tf +6.5518 0 TD +0 Tw +(HELPFLAG)Tj +/TT6 1 Tf +4.8008 0 TD +0.0444 Tw +[( \(see the Controlling When to Break section above\) is )]TJ +/TT8 1 Tf +24.0006 0 TD +0 Tw +(BREAK!)Tj +/TT6 1 Tf +3.6006 0 TD +0.0444 Tw +(, a)Tj +-38.9538 -1.2889 TD +0 Tw +(break will always occur, irregardless of the value of )Tj +/TT17 1 Tf +23.0498 0 TD +(NOBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-27.2505 -2.0667 TD +(If )Tj +/TT8 1 Tf +1.0188 0 TD +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0989 Tw +[( causes a break, the break expression is )]TJ +/TT8 1 Tf +19.2203 0 TD +0.2367 Tw +(\(ERROR MESS)Tj +6 0 0 6 444.71 170.96 Tm +0 Tw +(1)Tj +9 0 0 9 448.31 172.96 Tm +0.2367 Tw +[( MESS)]TJ +6 0 0 6 477.44 170.96 Tm +0 Tw +(2)Tj +9 0 0 9 481.04 172.96 Tm +0.2367 Tw +[( NOBREAK\))]TJ +/TT6 1 Tf +5.6375 0 TD +0 Tw +(.)Tj +-39.7531 -1.3944 TD +0.1278 Tw +(Using the )Tj +/TT8 1 Tf +4.7736 0 TD +0 Tw +(GO)Tj +/TT10 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6278 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.1278 Tw +(, , or )Tj +/TT8 1 Tf +2.5742 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1278 Tw +[( break commands \(see the Break Commands section above\))]TJ +-12.7764 -1.2889 TD +0.0411 Tw +(will simply call )Tj +/TT8 1 Tf +7.1521 0 TD +0 Tw +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0411 Tw +[( again. It is sometimes helpful to design programs that call )]TJ +/TT8 1 Tf +26.84 0 TD +0 Tw +(ERROR)Tj +/TT6 1 Tf +-36.9926 -1.2889 TD +0.0367 Tw +(such that if the call to )Tj +/TT8 1 Tf +9.9163 0 TD +0 Tw +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +[( returns \(as the result of using the )]TJ +/TT8 1 Tf +15.3817 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0367 Tw +[( break command\),)]TJ +-31.8991 -1.2889 TD +0.0244 Tw +[(the operation is tried again. This lrts you fix any problems within the break environment,)]TJ +0 -1.2222 TD +0 Tw +(and try to continue the operation.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(HELP)Tj +/TT6 1 Tf +2.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +6 0 0 6 200.85 93.27 Tm +(1)Tj +/TT13 1 Tf +9 0 0 9 204.45 95.27 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +6 0 0 6 228.3 93.27 Tm +(2)Tj +/TT13 1 Tf +9 0 0 9 231.9 95.27 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(BRKTYPE)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 277.357 95.27 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 95.27 Tm +([Function])Tj +-35.4033 -1.95 TD +(Prints )Tj +/TT17 1 Tf +2.8921 0 TD +(MESS)Tj +6 0 0 6 221.64 75.72 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 225.24 77.72 Tm +0.02 Tw +[( and )]TJ +/TT17 1 Tf +2.2329 0 TD +0 Tw +(MESS)Tj +6 0 0 6 266.94 75.72 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 270.54 77.72 Tm +0.02 Tw +[( similar to )]TJ +/TT8 1 Tf +4.7568 0 TD +0 Tw +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.02 Tw +(, and then calls )Tj +/TT8 1 Tf +6.9418 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.02 Tw +[( passing )]TJ +/TT17 1 Tf +3.9179 0 TD +0 Tw +(BRKTYPE)Tj +/TT6 1 Tf +4.2007 0 TD +0.02 Tw +[( as the)]TJ +/TT8 1 Tf +-37.145 -1.3944 TD +0 Tw +(BRKTYPE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1056 Tw +[( argument. If both )]TJ +/TT17 1 Tf +9.0292 0 TD +0 Tw +(MESS)Tj +6 0 0 6 314.66 63.17 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 318.26 65.17 Tm +0.1056 Tw +[( and )]TJ +/TT17 1 Tf +2.404 0 TD +0 Tw +(MESS)Tj +6 0 0 6 361.5 63.17 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 365.1 65.17 Tm +0.1056 Tw +[( are )]TJ +/TT8 1 Tf +2.0851 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6056 0 TD +(Help!)Tj +/TT6 1 Tf +3.0005 0 TD +0.1056 Tw +[( is used for the message.)]TJ +/TT8 1 Tf +-28.7248 -1.3944 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0289 Tw +[( is a convenient way to program a default condition, or to terminate some portion of)]TJ +-2.4004 -1.2889 TD +0 Tw +(a program which the computation is theoretically never supposed to reach. )Tj +ET +endstream +endobj +57 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +59 0 obj +<< +/Length 6759 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-15)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT8 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(SHOULDNT)Tj +/TT13 1 Tf +4.7999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 179.8544 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1111 Tw +[(Useful in situations when a program detects a condition that should never occur. Calls)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[( with the message arguments )]TJ +/TT17 1 Tf +13.7298 0 TD +0 Tw +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1133 Tw +[( and )]TJ +/TT8 1 Tf +2.4195 0 TD +0.2711 Tw +(Shouldnt happen!)Tj +/TT6 1 Tf +11.0729 0 TD +0.1133 Tw +( and a )Tj +/TT8 1 Tf +3.7829 0 TD +0 Tw +(BRKTYPE)Tj +/TT6 1 Tf +-35.8058 -1.2889 TD +(argument of )Tj +/TT8 1 Tf +5.7031 0 TD +(ERRORX)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +-12.5705 -2.0667 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERROR!)Tj +/TT8 1 Tf +3.5999 0 TD +(\) )Tj +/TT6 1 Tf +33.87 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0644 Tw +(Equivalent to )Tj +/TT8 1 Tf +6.3091 0 TD +0 Tw +(XCL:ABORT)Tj +/TT6 1 Tf +5.4009 0 TD +0.0644 Tw +(, except that if no )Tj +/TT8 1 Tf +8.1538 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0644 Tw +[( or )]TJ +/TT8 1 Tf +1.5698 0 TD +0 Tw +(XCL:CATCH-ABORT)Tj +/TT6 1 Tf +9.0015 0 TD +0.0644 Tw +[( isa found,)]TJ +-35.2358 -1.2889 TD +0 Tw +(it unwinds to the top of the process.)Tj +/TT8 1 Tf +-2.6667 -2 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(RESET)Tj +/TT8 1 Tf +2.9999 0 TD +(\) )Tj +/TT6 1 Tf +34.47 0 TD +([Function])Tj +-35.4033 -1.9933 TD +(Programmable Control-D; immediately returns to the top level)Tj +/TT15 1 Tf +10 0 0 10 375.4644 446.26 Tm +(.)Tj +/TT19 1 Tf +9 0 0 9 102 426.92 Tm +(*LAST-CONDITION*)Tj +/TT8 1 Tf +9.6 0 TD +( )Tj +/TT15 1 Tf +10 0 0 10 193.8009 426.92 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 426.92 Tm +([Variable])Tj +-35.6011 -1.8445 TD +(Value is the condition object most recently signaled.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(SETERRORN)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(NUM)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 203.707 390.98 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 390.98 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0033 Tw +(Converts its arguments into a condition, then sets the value of )Tj +/TT8 1 Tf +27.6417 0 TD +0 Tw +(*LAST-CONDITION*)Tj +/TT6 1 Tf +9.6016 0 TD +0.0005 Tc +0.0028 Tw +( to the)Tj +-37.2432 -1.2889 TD +0 Tc +0 Tw +(result.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERRORMESS)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(U)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 169.0517 343.44 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 343.44 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1556 Tw +[(Prints message corresponding to its first argument. For example, )]TJ +/TT8 1 Tf +30.6264 0 TD +0.3722 Tw +(\(ERRORMESS \(17)Tj +-30.6264 -1.2889 TD +0 Tw +(T\)\))Tj +/TT6 1 Tf +1.8003 0 TD +( would print)Tj +/TT8 1 Tf +5.5801 0 TD +(: T is not a LIST)Tj +-10.047 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERRORMESS1)Tj +/TT6 1 Tf +5.9999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +6 0 0 6 185.25 293.3 Tm +(1)Tj +/TT13 1 Tf +9 0 0 9 188.85 295.3 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +6 0 0 6 212.7 293.3 Tm +(2)Tj +/TT13 1 Tf +9 0 0 9 216.3 295.3 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(MESS)Tj +6 0 0 6 240.15 293.3 Tm +(3)Tj +/TT8 1 Tf +9 0 0 9 243.75 295.3 Tm +(\))Tj +/TT15 1 Tf +10 0 0 10 249.1509 295.3 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 295.3 Tm +([Function])Tj +-35.4033 -1.95 TD +(Prints the message corresponding to a )Tj +/TT8 1 Tf +17.0776 0 TD +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +( break.)Tj +/TT8 1 Tf +-26.5861 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERRORSTRING)Tj +/TT6 1 Tf +6.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 179.8517 257.81 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 257.81 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.5689 Tw +(Returns as a new string the message corresponding to error number )Tj +/TT17 1 Tf +36.5385 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.5689 Tw +(, e.g.,)Tj +/TT8 1 Tf +-37.1386 -1.2889 TD +0 Tw +(\(ERRORSTRING 10\) = NON-NUMERIC ARG)Tj +/TT6 1 Tf +21.0034 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 206.67 Tm +(Catching Errors)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 203.96 m +510.01 203.96 l +S +BT +/TT6 1 Tf +9 0 0 9 78 190.01 Tm +0.09 Tw +[(All error conditions are not caused by program bugs. For some programs, it is reasonable for some)]TJ +0 -1.2222 TD +0.1133 Tw +(errors to occur \(such as file not found errors\) and it is possible for the program to handle the error)Tj +T* +0.0833 Tw +[(itself. There are a number of functions that allow a program to catch errors, rather than abort the)]TJ +T* +0 Tw +(computation or cause a break.)Tj +/TT8 1 Tf +2.6667 -2.1489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERRORSET)Tj +/TT13 1 Tf +4.7999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +/TT13 1 Tf +2.4004 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +(\) )Tj +/TT15 1 Tf +10 0 0 10 209.1088 137.67 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 137.67 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Performs )Tj +/TT8 1 Tf +4.5253 0 TD +(\(EVAL )Tj +/TT17 1 Tf +4.1195 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.2167 Tw +[(. If no error occurs in the evaluation of )]TJ +/TT17 1 Tf +19.6022 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2167 Tw +(, the value of)Tj +/TT8 1 Tf +-33.6478 -1.2889 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.1344 Tw +[( is a list containing one element, the value of )]TJ +/TT8 1 Tf +21.1716 0 TD +0 Tw +(\(EVAL)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.3844 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1344 Tw +[(. If an error did)]TJ +-32.3578 -1.2889 TD +0 Tw +(occur, the value of )Tj +/TT8 1 Tf +8.3857 0 TD +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-16.2017 -2.0667 TD +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.1356 Tw +[( is a lambda function, so its arguments are evaluated )]TJ +/TT13 1 Tf +24.8521 0 TD +0 Tw +(before)Tj +/TT6 1 Tf +2.3521 0 TD +0.1356 Tw +[( it is entered, i.e.,)]TJ +/TT8 1 Tf +-32.005 -1.2889 TD +0.3067 Tw +(\(ERRORSET X\))Tj +/TT6 1 Tf +7.5078 0 TD +0.1278 Tw +[( means )]TJ +/TT8 1 Tf +3.6232 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1278 Tw +[( is called with the )]TJ +/TT13 1 Tf +8.6399 0 TD +0 Tw +(value)Tj +/TT6 1 Tf +2.167 0 TD +0.1278 Tw +[( of )]TJ +/TT8 1 Tf +1.6345 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1278 Tw +[(. In most cases, )]TJ +/TT8 1 Tf +7.7571 0 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.1278 Tw +[( and)]TJ +/TT8 1 Tf +-37.9305 -1.2889 TD +0 Tw +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +( \(below\) are more useful.)Tj +ET +endstream +endobj +60 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +62 0 obj +<< +/Length 7930 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-16)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0911 Tw +[(: Beginning with the Medley release, there are no longer frames named )]TJ +/TT8 1 Tf +32.9745 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +-35.1967 -1.2889 TD +(on the stack and any programs that explicity look for them must be changed.)Tj +/TT10 1 Tf +0 -2 TD +0.25 Tw +(Performance Note)Tj +/TT6 1 Tf +8.5005 0 TD +[(: When a call to )]TJ +/TT8 1 Tf +8.791 0 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.25 Tw +[( or )]TJ +/TT8 1 Tf +1.9409 0 TD +0 Tw +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.25 Tw +[( is compiled, the form to be)]TJ +-26.4336 -1.2889 TD +0.1444 Tw +[(evaluated is compiled as a separate function. However, compiling a call to )]TJ +/TT8 1 Tf +35.1898 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +-35.1898 -1.2889 TD +0.2867 Tw +(does not compile )Tj +/TT17 1 Tf +8.6583 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2867 Tw +[(. Therefore, if )]TJ +/TT17 1 Tf +7.5715 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2867 Tw +[( performs a lengthy computation, using)]TJ +/TT8 1 Tf +-21.0306 -1.2889 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +( can be much more efficient than using )Tj +/TT8 1 Tf +17.377 0 TD +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-30.8198 -2.0667 TD +0.0911 Tw +(The argument )Tj +/TT17 1 Tf +6.6803 0 TD +0 Tw +(FLAG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0911 Tw +[( controls the printing of error messages if an error occurs. If a )]TJ +/TT13 1 Tf +28.7897 0 TD +0 Tw +(break)Tj +/TT6 1 Tf +-37.8704 -1.2889 TD +(occurs below an )Tj +/TT8 1 Tf +7.3906 0 TD +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +(, the message is printed regardless of the value of )Tj +/TT17 1 Tf +22.0186 0 TD +(FLAG)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-36.6104 -2.0667 TD +(If )Tj +/TT17 1 Tf +1.0544 0 TD +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.3233 Tw +[( = T)]TJ +/TT6 1 Tf +3.0471 0 TD +0.1344 Tw +(, the error message is printed; if )Tj +/TT17 1 Tf +15.1569 0 TD +0 Tw +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.3233 Tw +[( = NIL)]TJ +/TT6 1 Tf +4.2473 0 TD +0.1344 Tw +(, the error message is not)Tj +-28.3064 -1.2889 TD +0 Tw +(printed \(unless )Tj +/TT8 1 Tf +6.9209 0 TD +(NLSETQGAG)Tj +/TT6 1 Tf +5.4009 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, see below\). )Tj +-15.3369 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.9677 0 TD +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1156 Tw +[( = INTERNAL)]TJ +/TT6 1 Tf +6.8322 0 TD +0.0478 Tw +(, this )Tj +/TT8 1 Tf +2.4686 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0478 Tw +[( is ignored for the purpose of deciding whether or)]TJ +-17.4697 -1.2889 TD +0.2656 Tw +(not to break or print a message \(see the Controlling When to Break section above\).)Tj +0 -1.2222 TD +0.16 Tw +(However, the )Tj +/TT8 1 Tf +6.5871 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.16 Tw +[( is in effect for the purpose of flow of control, i.e., if an error)]TJ +-11.3879 -1.2889 TD +0 Tw +(occurs, this )Tj +/TT8 1 Tf +5.2285 0 TD +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-15.5337 -2.0667 TD +(If )Tj +/TT17 1 Tf +1.0121 0 TD +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.2222 Tw +[( = NOBREAK)]TJ +/TT6 1 Tf +6.4454 0 TD +0.0922 Tw +(, no break will occur, even if the time criterion for breaking is met)Tj +-9.858 -1.2889 TD +0.1444 Tw +(\(the Controlling When to Break section above\). )Tj +/TT17 1 Tf +22.365 0 TD +0 Tw +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.3467 Tw +[( = NOBREAK)]TJ +/TT6 1 Tf +6.6943 0 TD +0.1444 Tw +[( will )]TJ +/TT13 1 Tf +2.4959 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.1444 Tw +[( prevent a)]TJ +-35.2887 -1.2889 TD +0.1022 Tw +(break from occurring if the error occurs more than )Tj +/TT8 1 Tf +23.4356 0 TD +0 Tw +(HELPDEPTH)Tj +/TT6 1 Tf +5.4009 0 TD +0.1022 Tw +[( function calls below the)]TJ +-28.8365 -1.2889 TD +0.2444 Tw +(errorset, since )Tj +/TT8 1 Tf +6.8976 0 TD +0 Tw +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +0.2444 Tw +[( will stop searching before it reaches the )]TJ +/TT8 1 Tf +19.9048 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.2444 Tw +[(. To)]TJ +-37.6041 -1.2889 TD +0.2722 Tw +(guarantee that no break occurs, you would also either have to reset )Tj +/TT8 1 Tf +33.1422 0 TD +0 Tw +(HELPDEPTH)Tj +/TT6 1 Tf +5.4009 0 TD +0.2722 Tw +[( or)]TJ +/TT8 1 Tf +-38.543 -1.2889 TD +0 Tw +(HELPFLAG)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-7.4674 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(ERSETQ)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\) )Tj +/TT15 1 Tf +10 0 0 10 222.4553 295.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.97 295.4 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +(Evaluates )Tj +/TT17 1 Tf +4.6388 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +(, letting a break happen if an error occurs, but 9)Tj +/TT8 1 Tf +21.8341 0 TD +0 Tw +(^)Tj +/TT6 1 Tf +0.6001 0 TD +0.09 Tw +[( brings you back to the)]TJ +/TT8 1 Tf +-29.4734 -1.2889 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +(. Performs )Tj +/TT8 1 Tf +5.3086 0 TD +(\(ERRORSET )Tj +/TT17 1 Tf +6.6011 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(T\),)Tj +/TT6 1 Tf +1.8003 0 TD +( printing error messages.)Tj +/TT8 1 Tf +-22.6276 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(NLSETQ)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\) )Tj +/TT15 1 Tf +10 0 0 10 222.4553 247.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.97 247.26 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +(Evaluates )Tj +/TT17 1 Tf +4.7377 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1889 Tw +(, witout breaking, returning )Tj +/TT8 1 Tf +13.3039 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1889 Tw +[( if an error occurs or a list containing)]TJ +/TT17 1 Tf +-22.2423 -1.2889 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +[( if no error occurs. Performs )]TJ +/TT8 1 Tf +14.1126 0 TD +0.4256 Tw +(\(ERRORSET )Tj +/TT17 1 Tf +7.0266 0 TD +0 Tw +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.4267 0 TD +(NIL\),)Tj +/TT6 1 Tf +3.0005 0 TD +0.1767 Tw +[( without printing error)]TJ +-29.3672 -1.2889 TD +0 Tw +(messages.)Tj +/TT19 1 Tf +-2.6667 -2.1489 TD +(NLSETQGAG)Tj +/TT15 1 Tf +10 0 0 10 198.6 188.12 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 188.12 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT8 1 Tf +1.1477 0 TD +(NLSETQGAG)Tj +/TT6 1 Tf +5.4009 0 TD +0.2278 Tw +[( is )]TJ +/TT8 1 Tf +1.6704 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2278 Tw +(, error messages will print, regardless of the )Tj +/TT17 1 Tf +21.4228 0 TD +0 Tw +(FLAG)Tj +/TT6 1 Tf +2.4004 0 TD +0.2278 Tw +[( argument of)]TJ +/TT8 1 Tf +-33.8425 -1.2889 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.2078 Tw +(. )Tj +/TT8 1 Tf +1.1656 0 TD +0 Tw +(NLSETQGAG)Tj +/TT6 1 Tf +5.4009 0 TD +0.2078 Tw +[( effectively changes all )]TJ +/TT8 1 Tf +11.0562 0 TD +0 Tw +(NLSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.2078 Tw +(s to )Tj +/TT8 1 Tf +2.2115 0 TD +0 Tw +(ERSETQ)Tj +/TT6 1 Tf +3.6006 0 TD +0.2078 Tw +(s. )Tj +/TT8 1 Tf +1.5894 0 TD +0 Tw +(NLSETQGAG)Tj +/TT6 1 Tf +5.4009 0 TD +0.2078 Tw +[( is)]TJ +-38.8263 -1.2889 TD +0 Tw +(initially )Tj +/TT8 1 Tf +3.6694 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 125.38 Tm +(Changing and Restoring System State)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 122.67 m +558.01 122.67 l +S +BT +/TT6 1 Tf +9 0 0 9 126 108.72 Tm +0.0189 Tw +(In Medley, a computation can be interrupted/aborted at any point due to an error, or more forcefully,)Tj +0 -1.2222 TD +0.1067 Tw +[(because a Control-D was typed, causing return to the top level. This situation creates problems for)]TJ +T* +0.1411 Tw +(programs that need to perform a computation with the system in a different state, e.g., different)Tj +T* +0.1622 Tw +(radix, input file, readtable, etc. but want to be able to restore the state when the computation has)Tj +T* +0.0611 Tw +[(completed. While program errors and Control-E are caught by )]TJ +/TT8 1 Tf +29.7 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0611 Tw +[(s, Control-D is not. The)]TJ +-34.5008 -1.2889 TD +0.1011 Tw +(program could redefine Control-D as a user interrupt \(see Chapter 30\), check for it, reenable it, and)Tj +ET +endstream +endobj +63 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +65 0 obj +<< +/Length 8542 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-17)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +(call )Tj +/TT8 1 Tf +1.8681 0 TD +(RESET)Tj +/TT6 1 Tf +3.0005 0 TD +0.0922 Tw +[( or something similar. Thus the system may be left in its changed state as a result of the)]TJ +-4.8686 -1.2889 TD +0 Tw +(computation being aborted. The following functions address this problem.)Tj +0 -2 TD +0.0144 Tw +(These functions cannot handle the situation where their environment is exited via anything other than)Tj +0 -1.2222 TD +0 Tw +(a normal return, an error, or a reset. Therefore, a )Tj +/TT8 1 Tf +21.6138 0 TD +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(RESUME)Tj +/TT6 1 Tf +3.6006 0 TD +(, etc., will never be seen.)Tj +/TT8 1 Tf +-31.9491 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(RESETLST)Tj +/TT13 1 Tf +4.7999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +6 0 0 6 174.45 507 Tm +(1)Tj +/TT13 1 Tf +9 0 0 9 178.05 509 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(...)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +6 0 0 6 220.35 507 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 223.95 509 Tm +(\))Tj +/TT15 1 Tf +10 0 0 10 229.3509 509 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 509 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +-25.9256 -1.95 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.1533 Tw +[( evaluates its arguments in order, after setting up an )]TJ +/TT8 1 Tf +24.8419 0 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.1533 Tw +[( so that any)]TJ +-34.4435 -1.2889 TD +0.0522 Tw +(reset operations performed by )Tj +/TT8 1 Tf +13.8329 0 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0522 Tw +[( \(see below\) are restored when the forms have)]TJ +-19.2338 -1.2889 TD +0.0511 Tw +[(been evaluated \(or an error occurs, or a Control-D is typed\). If no error occurs, the value)]TJ +0 -1.2222 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.4467 0 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.3178 Tw +[( is the value of )]TJ +/TT17 1 Tf +8.2578 0 TD +0 Tw +(FORM)Tj +6 0 0 6 278.14 455.25 Tm +(N)Tj +/TT6 1 Tf +9 0 0 9 281.74 457.25 Tm +0.3178 Tw +(, otherwise )Tj +/TT8 1 Tf +5.7415 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.3178 Tw +[( generates an error \(after)]TJ +-27.8467 -1.3944 TD +0 Tw +(performing the necessary restorations\).)Tj +/TT8 1 Tf +0 -2 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +( compiles open.)Tj +/TT8 1 Tf +-7.4674 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(RESETSAVE)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(X)Tj +/TT13 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 176.7026 406.76 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 406.76 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +-25.9256 -1.8444 TD +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1533 Tw +[( is used within a call to )]TJ +/TT8 1 Tf +11.4591 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.1533 Tw +[( to change the system state by calling a)]TJ +-21.6607 -1.2889 TD +0.1455 Tw +(function or setting a variable, while specifying how to restore the original system state)Tj +0 -1.2222 TD +0 Tw +(when the )Tj +/TT8 1 Tf +4.3643 0 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +( is exited \(normally, or with an error or Control-D\).)Tj +-9.165 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.9566 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[( is atomic, resets the top level value of )]TJ +/TT17 1 Tf +17.3437 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[( to the value of )]TJ +/TT17 1 Tf +7.0095 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +[(. For example, )]TJ +/TT8 1 Tf +6.8928 0 TD +0 Tw +(\(RESETSAVE)Tj +-34.0028 -1.2889 TD +0.5778 Tw +(LISPXHISTORY EDITHISTORY\))Tj +/TT6 1 Tf +15.5802 0 TD +0.2411 Tw +[( resets the value of )]TJ +/TT8 1 Tf +9.6865 0 TD +0 Tw +(LISPXHISTORY)Tj +/TT6 1 Tf +7.2012 0 TD +0.2411 Tw +[( to the value of)]TJ +/TT8 1 Tf +-32.4679 -1.2889 TD +0 Tw +(EDITHISTORY)Tj +/TT6 1 Tf +6.6011 0 TD +0.2367 Tw +(, and provides for the original value of )Tj +/TT8 1 Tf +19.178 0 TD +0 Tw +(LISPXHISTORY)Tj +/TT6 1 Tf +7.2012 0 TD +0.2367 Tw +[( to be restored)]TJ +-32.9802 -1.2889 TD +0 Tw +(when the )Tj +/TT8 1 Tf +4.3643 0 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +( completes operation, \(or an error occurs, or a Control-D is typed\).)Tj +/TT10 1 Tf +-9.165 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1156 Tw +[(: If the variable is simply rebound, the )]TJ +/TT8 1 Tf +18.3383 0 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1156 Tw +[( will not affect the most recent)]TJ +-25.9614 -1.2889 TD +0.1722 Tw +(binding but will change only the top level value, and therefore probably not have the)Tj +0 -1.2222 TD +0 Tw +(intended effect.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +0.9821 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( is not atomic, it is a form that is evaluated. If )]TJ +/TT17 1 Tf +21.1795 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( is )]TJ +/TT8 1 Tf +1.3393 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +0.5622 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( must return as its value its)]TJ +-27.6637 -1.2889 TD +0.1 Tw +(former state, so that the effect of evaluating the form can be reversed, and the system)Tj +0 -1.2222 TD +0.0556 Tw +(state can be restored, by applying )Tj +/TT8 1 Tf +15.4393 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +[( of )]TJ +/TT17 1 Tf +1.49 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[( to the value of )]TJ +/TT17 1 Tf +7.104 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[(. For example, )]TJ +/TT8 1 Tf +6.9683 0 TD +0 Tw +(\(RESETSAVE)Tj +-34.0021 -1.2889 TD +0.2911 Tw +(\(RADIX 8\)\))Tj +/TT6 1 Tf +6.2921 0 TD +0.1211 Tw +[( performs )]TJ +/TT8 1 Tf +4.7979 0 TD +0.2911 Tw +(\(RADIX 8\))Tj +/TT6 1 Tf +5.692 0 TD +0.1211 Tw +(, and provides for )Tj +/TT8 1 Tf +8.6129 0 TD +0 Tw +(RADIX)Tj +/TT6 1 Tf +3.0005 0 TD +0.1211 Tw +[( to be reset to its original)]TJ +-28.3953 -1.2889 TD +0.3056 Tw +(value when the )Tj +/TT8 1 Tf +7.9689 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.3056 Tw +[( completes by applying )]TJ +/TT8 1 Tf +11.7828 0 TD +0 Tw +(RADIX)Tj +/TT6 1 Tf +3.0005 0 TD +0.3056 Tw +[( to the value returned by)]TJ +/TT8 1 Tf +-27.553 -1.2889 TD +0 Tw +(\(RADIX 8\))Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-5.4009 -2.0667 TD +0.1744 Tw +(In the special case that )Tj +/TT8 1 Tf +11.0392 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.1744 Tw +[( of )]TJ +/TT17 1 Tf +1.7278 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1744 Tw +[( is )]TJ +/TT8 1 Tf +1.5637 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1744 Tw +(, the )Tj +/TT8 1 Tf +2.4861 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1744 Tw +[( is transparent for the purposes of)]TJ +/TT8 1 Tf +-24.018 -1.2889 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1056 Tw +(, i.e. you could also have written )Tj +/TT8 1 Tf +15.3287 0 TD +0.2544 Tw +(\(RESETSAVE \(SETQ X \(RADIX 8\)\)\))Tj +/TT6 1 Tf +19.0207 0 TD +0 Tw +(,)Tj +-39.7503 -1.2889 TD +0.0433 Tw +(and restoration would be performed by applying )Tj +/TT8 1 Tf +22.2828 0 TD +0 Tw +(RADIX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +(, not )Tj +/TT8 1 Tf +2.2908 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0433 Tw +(, to the previous value)Tj +-29.9745 -1.2889 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.1289 0 TD +(RADIX)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-4.1294 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.9755 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[( is not )]TJ +/TT8 1 Tf +3.0856 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +(, it is evaluated \(before )Tj +/TT17 1 Tf +10.582 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +(\), and its )Tj +/TT13 1 Tf +4.2336 0 TD +0 Tw +(value)Tj +/TT6 1 Tf +2.167 0 TD +0.0556 Tw +[( is used as the restoring expression.)]TJ +-24.0441 -1.2889 TD +0 Tw +(This is useful for functions which do not return their previous setting. For example,)Tj +/TT8 1 Tf +2.6667 -1.6 TD +([RESETSAVE \(SETBRK ...\) \(LIST SETBRK \(GETBRK])Tj +/TT6 1 Tf +-2.6667 -1.8444 TD +0.0178 Tw +(will restore the break characters by applying )Tj +/TT8 1 Tf +20.0727 0 TD +0 Tw +(SETBRK)Tj +/TT6 1 Tf +3.6006 0 TD +0.0178 Tw +[( to the value returned by )]TJ +/TT8 1 Tf +11.2834 0 TD +0 Tw +(\(GETBRK\))Tj +/TT6 1 Tf +4.8008 0 TD +(,)Tj +-39.7575 -1.2889 TD +0.3522 Tw +(which was computed before the )Tj +/TT8 1 Tf +16.1669 0 TD +0.8456 Tw +(\(SETBRK ...\))Tj +/TT6 1 Tf +8.0467 0 TD +0.3522 Tw +[( expression was evaluated. The)]TJ +-24.2136 -1.2889 TD +0.0622 Tw +(restoration expression is evaluated by )Tj +/TT13 1 Tf +18.2862 0 TD +0 Tw +(applying)Tj +/TT6 1 Tf +3.5557 0 TD +0.0622 Tw +[( its )]TJ +/TT8 1 Tf +1.6655 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0622 Tw +[( to its )]TJ +/TT8 1 Tf +2.8498 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0622 Tw +[(. This insures that the)]TJ +-29.9577 -1.2889 TD +0 Tw +(arguments in the )Tj +/TT8 1 Tf +8.7583 0 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +( are not evaluated again.)Tj +ET +endstream +endobj +66 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +68 0 obj +<< +/Length 9199 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-18)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(If )Tj +/TT17 1 Tf +0.9199 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +0.5 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( is still treated as a restoration expression. Therefore,)Tj +/TT8 1 Tf +-2.9686 -1.6667 TD +(\(RESETSAVE NIL \(LIST CLOSEF FILE\)\))Tj +/TT6 1 Tf +-2.6667 -1.8445 TD +0.0144 Tw +(will cause )Tj +/TT8 1 Tf +4.6856 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0144 Tw +[( to be closed when the )]TJ +/TT8 1 Tf +10.1497 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.0144 Tw +[( that the )]TJ +/TT8 1 Tf +3.9149 0 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0144 Tw +[( is under completes)]TJ +-31.3523 -1.2889 TD +0 Tw +(\(or an error occurs or a Control-D is typed\).)Tj +/TT8 1 Tf +0 -2 TD +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1389 Tw +[( can be called when )]TJ +/TT13 1 Tf +9.5953 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.1389 Tw +[( under a )]TJ +/TT8 1 Tf +4.3366 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.1389 Tw +[(. In this case, the restoration is)]TJ +-25.4666 -1.2889 TD +0.04 Tw +(performed at the next )Tj +/TT8 1 Tf +9.9984 0 TD +0 Tw +(RESET)Tj +/TT6 1 Tf +3.0005 0 TD +0.04 Tw +(, i.e., Control-D or call to )Tj +/TT8 1 Tf +11.3508 0 TD +0 Tw +(RESET)Tj +/TT6 1 Tf +3.0005 0 TD +0.04 Tw +[(. In other words, there is an)]TJ +-27.3502 -1.2889 TD +0 Tw +(implicit )Tj +/TT8 1 Tf +4.668 0 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +( at the top-level executive.)Tj +/TT8 1 Tf +-9.4688 -2.0667 TD +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +( compiles open. Its value is not a useful quantity.)Tj +/TT8 1 Tf +-8.0675 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(RESETVAR)Tj +/TT13 1 Tf +4.7999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAR)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(NEWVALUE)Tj +/TT13 1 Tf +4.8008 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +10 0 0 10 291.764 446.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.97 446.6 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.4411 Tw +(Simplified form of )Tj +/TT8 1 Tf +9.7047 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.4411 Tw +[( and )]TJ +/TT8 1 Tf +3.0751 0 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.4411 Tw +[( for resetting and restoring global)]TJ +-22.9814 -1.2889 TD +0.34 Tw +[(variables. Equivalent to )]TJ +/TT8 1 Tf +12.2882 0 TD +0.8156 Tw +(\(RESETLST \(RESETSAVE)Tj +/TT10 1 Tf +12.8175 0 TD +0 Tw +( )Tj +/TT17 1 Tf +0.59 0 TD +(VAR)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.59 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.59 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.34 Tw +[(. For)]TJ +-37.0774 -1.2889 TD +0 Tw +(example, )Tj +/TT8 1 Tf +4.2646 0 TD +0.0378 Tw +(\(RESETVAR LISPXHISTORY)Tj +/TT10 1 Tf +13.2399 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2656 0 TD +0.0378 Tw +(EDITHISTORY \(FOO\)\))Tj +/TT6 1 Tf +10.8395 0 TD +0.0156 Tw +[( resets )]TJ +/TT8 1 Tf +3.058 0 TD +0 Tw +(LISPXHISTORY)Tj +/TT6 1 Tf +7.2012 0 TD +0.0156 Tw +[( to)]TJ +-38.8687 -1.2889 TD +0.1544 Tw +(the value of )Tj +/TT8 1 Tf +5.9174 0 TD +0 Tw +(EDITHISTORY)Tj +/TT6 1 Tf +6.6011 0 TD +0.1544 Tw +[( while evaluating )]TJ +/TT8 1 Tf +8.3837 0 TD +0 Tw +(\(FOO\))Tj +/TT6 1 Tf +3.0005 0 TD +0.1544 Tw +(. )Tj +/TT8 1 Tf +1.0589 0 TD +0 Tw +(RESETVAR)Tj +/TT6 1 Tf +4.8008 0 TD +0.1544 Tw +[( compiles open. If no)]TJ +-29.7624 -1.2889 TD +0 Tw +(error occurs, its value is the value of )Tj +/TT17 1 Tf +16.2134 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-21.2804 -2.2156 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(RESETVARS)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VARSLST)Tj +/TT13 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(E)Tj +6 0 0 6 251.7 360.66 Tm +(1)Tj +/TT13 1 Tf +9 0 0 9 255.3 363.66 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(E)Tj +6 0 0 6 262.95 360.66 Tm +(2)Tj +/TT13 1 Tf +9 0 0 9 266.55 363.66 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(...)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(E)Tj +6 0 0 6 292.65 360.66 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 296.25 363.66 Tm +(\))Tj +/TT15 1 Tf +10 0 0 10 301.6508 363.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 363.66 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0611 TD +0.1711 Tw +(Similar to )Tj +/TT8 1 Tf +4.8901 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1711 Tw +(, except that the variables in )Tj +/TT17 1 Tf +13.6146 0 TD +0 Tw +(VARSLST)Tj +/TT6 1 Tf +4.2007 0 TD +0.1711 Tw +[( are global variables. In a deep)]TJ +-25.1057 -1.2889 TD +0 Tw +(bound system \(like Medley\), each variable is rebound using )Tj +/TT8 1 Tf +27.6509 0 TD +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-33.0518 -2.0667 TD +0.0833 Tw +(In a shallow bound system \(like Interlisp-10\) )Tj +/TT8 1 Tf +20.5492 0 TD +0 Tw +(RESETVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0833 Tw +[( and )]TJ +/TT8 1 Tf +2.3595 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0833 Tw +[( are identical, except)]TJ +-30.71 -1.2889 TD +0.0144 Tw +(that the compiler insures that variables bound in a )Tj +/TT8 1 Tf +22.6295 0 TD +0 Tw +(RESETVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0144 Tw +[( are declared as )]TJ +/TT8 1 Tf +7.1652 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +-35.1956 -1.2889 TD +(\(see Chapter 18\).)Tj +/TT8 1 Tf +0 -2 TD +(RESETVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1122 Tw +(, like )Tj +/TT8 1 Tf +2.5916 0 TD +0 Tw +(GETATOMVAL)Tj +/TT6 1 Tf +6.001 0 TD +0.1122 Tw +[( and )]TJ +/TT8 1 Tf +2.4173 0 TD +0 Tw +(SETATOMVAL)Tj +/TT6 1 Tf +6.001 0 TD +0.1122 Tw +[( \(see Chapter 2\), is provided to permit)]TJ +-22.4118 -1.2889 TD +0.2022 Tw +(compatibility \(i.e. transportablility\) between a shallow bound and deep bound system)Tj +0 -1.2222 TD +0 Tw +(with respect to conceptually global variables.)Tj +/TT10 1 Tf +0 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +(: Like )Tj +/TT8 1 Tf +2.937 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(RESETVARS)Tj +/TT6 1 Tf +5.4009 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( unless a )Tj +/TT8 1 Tf +4.0527 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +( statement is executed.)Tj +/TT8 1 Tf +-29.2848 -2.2156 TD +( \()Tj +/TT19 1 Tf +1.2002 0 TD +(RESETFORM)Tj +/TT6 1 Tf +5.3998 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(RESETFORM)Tj +/TT13 1 Tf +5.4009 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +6 0 0 6 284.1 210.17 Tm +(1)Tj +/TT13 1 Tf +9 0 0 9 287.7 213.17 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +6 0 0 6 311.55 210.17 Tm +(2)Tj +/TT13 1 Tf +9 0 0 9 315.15 213.17 Tm +( )Tj +/TT17 1 Tf +0.25 0 TD +(...)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +6 0 0 6 357.45 210.17 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 361.05 213.17 Tm +(\))Tj +/TT15 1 Tf +10 0 0 10 366.4509 213.17 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 213.17 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0611 TD +0.2356 Tw +(Simplified form of )Tj +/TT8 1 Tf +9.088 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.2356 Tw +[( and )]TJ +/TT8 1 Tf +2.664 0 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2356 Tw +[( for resetting a system state when the)]TJ +-21.9537 -1.2889 TD +0.3889 Tw +[(corresponding function returns as its value the previous setting. Equivalent to)]TJ +/TT8 1 Tf +0 -1.2222 TD +0.7967 Tw +(\(RESETLST \(RESETSAVE)Tj +/TT10 1 Tf +12.7986 0 TD +0 Tw +( )Tj +/TT17 1 Tf +0.5822 0 TD +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +(\))Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.5822 0 TD +(FORM)Tj +6 0 0 6 375.25 169.02 Tm +(1)Tj +/TT10 1 Tf +9 0 0 9 378.85 172.02 Tm +( )Tj +/TT17 1 Tf +0.5822 0 TD +(FORM)Tj +6 0 0 6 405.69 169.02 Tm +(2)Tj +/TT10 1 Tf +9 0 0 9 409.29 172.02 Tm +( )Tj +/TT19 1 Tf +0.5822 0 TD +(...)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.5822 0 TD +(FORM)Tj +6 0 0 6 457.5699 169.02 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 461.17 172.02 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.3322 Tw +[(. For example,)]TJ +/TT8 1 Tf +-32.5079 -1.5056 TD +0.2089 Tw +(\(RESETFORM \(RADIX 8\) \(FOO\)\))Tj +/TT6 1 Tf +16.8293 0 TD +0.0867 Tw +(. )Tj +/TT8 1 Tf +0.9233 0 TD +0 Tw +(RESETFORM)Tj +/TT6 1 Tf +5.4009 0 TD +0.0867 Tw +[( compiles open. If no error occurs, it)]TJ +-23.1535 -1.2889 TD +0 Tw +(returns the value returned by )Tj +/TT17 1 Tf +13.2588 0 TD +(FORM)Tj +6 0 0 6 314.94 143.87 Tm +(N)Tj +/TT6 1 Tf +9 0 0 9 318.54 146.87 Tm +(.)Tj +-21.3933 -2.2833 TD +0.3589 Tw +(For some applications, the restoration operation must be different depending on whether the)Tj +0 -1.2222 TD +0.0422 Tw +(computation completed successfully or was aborted somehow \(e.g., by an error or by typing Control-)Tj +T* +0.0411 Tw +[(D\). To facilitate this, while the restoration operation is being performed, the value of )]TJ +/TT8 1 Tf +38.3291 0 TD +0 Tw +(RESETSTATE)Tj +/TT6 1 Tf +6.001 0 TD +0.0411 Tw +[( is)]TJ +-44.33 -1.2889 TD +0.0767 Tw +(bound to )Tj +/TT8 1 Tf +4.4204 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5767 0 TD +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5767 0 TD +(RESET)Tj +/TT6 1 Tf +3.0005 0 TD +0.0767 Tw +(, or )Tj +/TT8 1 Tf +1.8443 0 TD +0 Tw +(HARDRESET)Tj +/TT6 1 Tf +5.4009 0 TD +0.0767 Tw +[( depending on whether the exit was normal, due to an)]TJ +-20.6202 -1.2889 TD +0.0333 Tw +(error, due to a reset \(i.e., Control-D\), or due to call to )Tj +/TT8 1 Tf +23.8697 0 TD +0 Tw +(HARDRESET)Tj +/TT6 1 Tf +5.4009 0 TD +0.0333 Tw +[( \(see Chapter 23\). As an example of)]TJ +-29.2706 -1.2889 TD +0 Tw +(the use of )Tj +/TT8 1 Tf +4.522 0 TD +(RESETSTATE)Tj +/TT6 1 Tf +6.001 0 TD +(,)Tj +/TT8 1 Tf +-6.5229 -1.6667 TD +(\(RESETLST)Tj +1.3333 -1 TD +(\(RESETSAVE \(INFILE X\))Tj +ET +endstream +endobj +69 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +71 0 obj +<< +/Length 5974 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-19)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT8 1 Tf +9 0 0 9 162 570.14 Tm +(\(LIST [LAMBDA \(FL\))Tj +4 -1 TD +(\(COND \(\(EQ RESETSTATE RESET\))Tj +-4 -1 TD +( \(CLOSEF FL\))Tj +T* +( DELFILE FL])Tj +T* +[( )-7799.3(X\)\))]TJ +/TT17 1 Tf +12 -1 TD +(FORMS)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +-24.3338 -1.8444 TD +(will cause )Tj +/TT8 1 Tf +4.6567 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( to be closed and deleted only if a Control-D was typed during the execution of )Tj +/TT17 1 Tf +35.1699 0 TD +(FORMS)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-43.4273 -2.0667 TD +0.1178 Tw +(When specifying complicated restoring expressions, it is often necessary to use the old value of the)Tj +0 -1.2222 TD +0.0856 Tw +[(saving expression. For example, the following expression will set the primary input file \(to )]TJ +/TT8 1 Tf +41.775 0 TD +0 Tw +(FL)Tj +/TT6 1 Tf +1.2002 0 TD +0.0856 Tw +(\) and)Tj +-42.9752 -1.2889 TD +0 Tw +(execute some forms, but reset the primary input file only if an error or Control-D occurs.)Tj +/TT8 1 Tf +4 -1.6 TD +(\(RESETLST)Tj +5.3333 -1 TD +(\(SETQ TEM \(INPUT FL\)\))Tj +T* +(\(RESETSAVE NIL)Tj +T* +( \(LIST \(LAMBDA \(X\) \(AND RESETSTATE \(INPUT X\)\)\))Tj +T* +( TEM\)\))Tj +/TT17 1 Tf +T* +(FORMS)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +-12.3338 -1.8444 TD +0.0156 Tw +(So that you will not have to explicitely save the old value, the variable )Tj +/TT8 1 Tf +31.4048 0 TD +0 Tw +(OLDVALUE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0155 Tw +[( is bound at the time)]TJ +-36.2056 -1.2889 TD +0.0989 Tw +[(the restoring operation is performed to the value of the saving expression. Using this, the previous)]TJ +0 -1.2222 TD +0 Tw +(example could be recoded as:)Tj +/TT8 1 Tf +4 -1.6 TD +(\(RESETLST)Tj +5.3333 -1 TD +(\(RESETSAVE \(INPUT FL\))Tj +T* +( \(AND RESETSTATE \(INPUT OLDVALUE\)\)\))Tj +/TT17 1 Tf +T* +(FORMS)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +-12.3338 -1.8444 TD +0.06 Tw +(As mentioned earlier, restoring is performed by applying )Tj +/TT8 1 Tf +26.0591 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.06 Tw +[( of the restoring expression to the )]TJ +/TT8 1 Tf +15.4263 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +-45.086 -1.2889 TD +(so )Tj +/TT8 1 Tf +1.4319 0 TD +(RESETSTATE)Tj +/TT6 1 Tf +6.001 0 TD +0.2122 Tw +[( and )]TJ +/TT8 1 Tf +2.6173 0 TD +0.5089 Tw +(\(INPUT OLDVALUE\))Tj +/TT6 1 Tf +10.1105 0 TD +0.2122 Tw +[( will not be evaluated by the )]TJ +/TT8 1 Tf +14.2795 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.2122 Tw +[(. This particular)]TJ +-37.4407 -1.2889 TD +0.2978 Tw +(example works because )Tj +/TT8 1 Tf +11.6292 0 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.2978 Tw +[( is an nlambda function that explicitly evaluates its arguments, so)]TJ +/TT8 1 Tf +-13.4295 -1.2889 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +(ing )Tj +/TT8 1 Tf +1.707 0 TD +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +[( to )]TJ +/TT8 1 Tf +1.4276 0 TD +0.0656 Tw +(\(RESETSTATE \(INPUT OLDVALUE\)\))Tj +/TT6 1 Tf +17.5339 0 TD +0.0278 Tw +[( is the same as )]TJ +/TT8 1 Tf +6.7004 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(ing )Tj +/TT8 1 Tf +1.707 0 TD +0.0656 Tw +(\(AND RESETSTATE)Tj +-36.2771 -1.2889 TD +0.0222 Tw +(\(INPUT OLDVALUE\)\))Tj +/TT6 1 Tf +10.2239 0 TD +0.0089 Tw +(. )Tj +/TT8 1 Tf +0.7678 0 TD +0 Tw +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0089 Tw +[( also has this property, so you can use a lambda function as a restoring)]TJ +-13.9922 -1.2889 TD +0 Tw +(form by enclosing it within a )Tj +/TT8 1 Tf +12.9844 0 TD +(PROGN)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-15.9849 -2.0667 TD +0.4156 Tw +(The function )Tj +/TT8 1 Tf +6.712 0 TD +0 Tw +(RESETUNDO)Tj +/TT6 1 Tf +5.4009 0 TD +0.4156 Tw +[( \(see Chapter 13\) can be used in conjunction with )]TJ +/TT8 1 Tf +26.0564 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.4156 Tw +[( and)]TJ +/TT8 1 Tf +-42.9701 -1.2889 TD +0 Tw +(RESETSAVE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0144 Tw +[( to provide a way of specifying that the system be restored to its prior state by )]TJ +/TT13 1 Tf +34.8876 0 TD +0 Tw +(undoing)Tj +/TT6 1 Tf +3.3901 0 TD +0.0144 Tw +[( the)]TJ +-43.6787 -1.2889 TD +0 Tw +(side effects of the computations performed under the )Tj +/TT8 1 Tf +23.7393 0 TD +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 188 Tm +(Error List)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 185.29 m +510.01 185.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 171.34 Tm +0.1622 Tw +[(There are currently fifty-plus types of errors in Medley. Some of these errors are implementation)]TJ +0 -1.2222 TD +0.03 Tw +[(dependent, i.e., appear in Medley but may not appear in other Interlisp systems. The error number is)]TJ +T* +0.0256 Tw +(set internally by the code that detects the error before it calls the error handling functions, and is used)Tj +T* +0 Tw +(by )Tj +/TT8 1 Tf +1.3594 0 TD +(ERRORMESS)Tj +/TT6 1 Tf +5.4009 0 TD +( for printing error messages.)Tj +-6.7603 -2.0667 TD +0.2533 Tw +[(Most errors will print the offending expression as part of the error message. Error number 18)]TJ +0 -1.2222 TD +0.2844 Tw +(\(Control-B\) always causes a break \(unless )Tj +/TT8 1 Tf +20.3092 0 TD +0 Tw +(HELPFLAG)Tj +/TT6 1 Tf +4.8008 0 TD +0.2845 Tw +[( is )]TJ +/TT8 1 Tf +1.7837 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2844 Tw +[(\). All other errors cause breaks if)]TJ +/TT8 1 Tf +-28.694 -1.2889 TD +0 Tw +(BREAKCHECK)Tj +/TT6 1 Tf +6.001 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( \(see Controlling When to Break above\).)Tj +-10.3052 -2.0667 TD +0.2011 Tw +(The folloing error messages are arranged numerically with the printed message next to the error)Tj +0 -1.2222 TD +0.23 Tw +(number. )Tj +/TT17 1 Tf +4.7051 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.23 Tw +[( is the offending expression in each error message. The obsolete error numbers still)]TJ +-5.3052 -1.2889 TD +0.2567 Tw +[(generate error messags, but they arent particularly useful. For information on how to use the)]TJ +0 -1.2222 TD +0 Tw +(Common Lisp error conditions in your own programs, see )Tj +/TT13 1 Tf +26.0444 0 TD +(Common Lisp: the Language)Tj +/TT6 1 Tf +11.5571 0 TD +( by Steele.)Tj +ET +endstream +endobj +72 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +74 0 obj +<< +/Length 5710 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-20)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 127.5 569.54 Tm +[(0)-1333.3(Obsolete.)]TJ +0 -1.6667 TD +[(1)-1333.3(Obsolete.)]TJ +T* +(2)Tj +/TT19 1 Tf +1.8333 0 TD +(Stack Overflow)Tj +/TT6 1 Tf +0 -1.7333 TD +0.0322 Tw +(Occurs when computation is too deep, either with respect to number of function calls, or number)Tj +0 -1.2222 TD +0.1522 Tw +[(of variable bindings. Usually because of a non-terminating recursive computation, i.e., a bug.)]TJ +T* +0 Tw +(Condition type: )Tj +/TT8 1 Tf +7.1963 0 TD +(STACK-OVERFLOW)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-17.431 -1.7333 TD +(3)Tj +/TT19 1 Tf +1.8333 0 TD +(RETURN to nonexistant block: )Tj +/TT21 1 Tf +17.4028 0 TD +(X)Tj +/TT6 1 Tf +-17.4028 -1.7333 TD +(Call to )Tj +/TT8 1 Tf +3.1631 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +( when not inside of an interpreted )Tj +/TT8 1 Tf +15.2842 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(. Condition type: )Tj +/TT8 1 Tf +8.4463 0 TD +(ILLEGAL-RETURN)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-43.1292 -1.7333 TD +(4)Tj +/TT21 1 Tf +1.8333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is not a LIST)Tj +/TT8 1 Tf +-0.6001 -1.7333 TD +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +0.4244 Tw +[( called on a non-list. Condition type: )]TJ +/TT8 1 Tf +21.3094 0 TD +0 Tw +(XCL:SIMPLE-TYPE-ERROR )Tj +/TT17 1 Tf +14.2222 0 TD +(culprit)Tj +/TT8 1 Tf +-39.1321 -1.2222 TD +(:EXPECTED-TYPE LIST)Tj +/TT6 1 Tf +-1.8333 -1.7333 TD +(5)Tj +/TT19 1 Tf +1.8333 0 TD +(Device error: )Tj +/TT21 1 Tf +8.4014 0 TD +(X)Tj +/TT6 1 Tf +-8.4014 -1.7333 TD +(An error with the local disk drive. Condition type: )Tj +/TT8 1 Tf +22.981 0 TD +(XCL:SIMPLE-DEVICE-ERROR )Tj +/TT17 1 Tf +14.4023 0 TD +(message)Tj +/TT6 1 Tf +-39.2166 -1.7333 TD +(6)Tj +/TT19 1 Tf +1.8333 0 TD +(Serious condition XCL:ATTEMPT-TO-CHANGE-CONSTANT occured.)Tj +/TT6 1 Tf +0 -1.7333 TD +(Via )Tj +/TT8 1 Tf +1.7632 0 TD +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +(. Condition type: )Tj +/TT8 1 Tf +8.1963 0 TD +(XCL:ATTEMPT-TO-CHANGE-CONSTANT)Tj +/TT6 1 Tf +-17.4344 -1.7333 TD +(7)Tj +/TT19 1 Tf +1.8333 0 TD +(Attempt to rplac NIL with )Tj +/TT21 1 Tf +15.6025 0 TD +(X)Tj +/TT6 1 Tf +-15.6025 -1.7333 TD +0.0922 Tw +(Attempt either to )Tj +/TT8 1 Tf +8.1702 0 TD +0 Tw +(RPLACA)Tj +/TT6 1 Tf +3.6006 0 TD +0.0922 Tw +[( or to )]TJ +/TT8 1 Tf +2.8397 0 TD +0.2222 Tw +(RPLACD NIL)Tj +/TT6 1 Tf +6.2232 0 TD +0.0922 Tw +[( with something other than )]TJ +/TT8 1 Tf +12.7316 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0922 Tw +[(. Condition type:)]TJ +/TT8 1 Tf +-35.3656 -1.2222 TD +0 Tw +(XCL:ATTEMPT-TO-RPLAC-NIL )Tj +/TT17 1 Tf +15.0024 0 TD +(message)Tj +/TT6 1 Tf +-16.8358 -1.7333 TD +(8)Tj +/TT19 1 Tf +1.8333 0 TD +(GO to a nonexistant tag: )Tj +/TT21 1 Tf +15.0024 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-15.6025 -1.7333 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +( when not inside of a )Tj +/TT8 1 Tf +9.4878 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +( to nonexistent label. Condition type: )Tj +/TT8 1 Tf +17.0659 0 TD +(ILLEGAL-GO )Tj +/TT17 1 Tf +6.6011 0 TD +(tag)Tj +/TT6 1 Tf +-41.4798 -1.7333 TD +(9)Tj +/TT19 1 Tf +1.8333 0 TD +(File wont open: )Tj +/TT21 1 Tf +10.2017 0 TD +(X)Tj +/TT6 1 Tf +-10.2017 -1.7333 TD +(From )Tj +/TT8 1 Tf +2.6299 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +( \(see Chapter 24\). Condition type: )Tj +/TT8 1 Tf +15.5864 0 TD +(XCL:FILE-WONT-OPEN )Tj +/TT17 1 Tf +11.4019 0 TD +(pathname)Tj +/TT6 1 Tf +-37.9525 -1.7333 TD +(10)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is not a NUMBER)Tj +/TT6 1 Tf +-0.6001 -1.7333 TD +0.28 Tw +(A numeric function e.g., )Tj +/TT8 1 Tf +12.0668 0 TD +0 Tw +(PLUS)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.78 0 TD +(TIMES)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.78 0 TD +(GREATERP)Tj +/TT6 1 Tf +4.8008 0 TD +0.28 Tw +(, expected a number and didnt get one.)Tj +-23.8284 -1.2889 TD +0 Tw +(Condition type: )Tj +/TT8 1 Tf +7.4463 0 TD +(XCL:SIMPLE-TYPE-ERROR )Tj +/TT17 1 Tf +13.2022 0 TD +(culprit)Tj +/TT8 1 Tf +4.2007 0 TD +( :EXPECTED TYPE CL:NUMBER)Tj +/TT6 1 Tf +-27.1825 -1.7333 TD +(11)Tj +/TT19 1 Tf +2.3333 0 TD +(Symbol name too long)Tj +/TT6 1 Tf +0 -1.7333 TD +0.0633 Tw +(Attempted to create a symbol \(via )Tj +/TT8 1 Tf +15.6261 0 TD +0 Tw +(PACK)Tj +/TT6 1 Tf +2.4004 0 TD +0.0633 Tw +(, or typing one in, or reading from a file\) with too many)Tj +-18.0265 -1.2889 TD +0.0911 Tw +[(characters. In Medley, the maximum number of characters in a symbol is 255. Condition type:)]TJ +/TT8 1 Tf +0 -1.1556 TD +0 Tw +(XCL:SYMBOL-NAME-TOO-LONG)Tj +/TT6 1 Tf +-2.3333 -1.7333 TD +(12)Tj +/TT19 1 Tf +2.3333 0 TD +(Symbol hash table full)Tj +/TT6 1 Tf +0 -1.7333 TD +(No room for any more \(new\) atoms. Condition type: )Tj +/TT8 1 Tf +23.8975 0 TD +(XCL:SYMBOL-HT-FULL)Tj +/TT6 1 Tf +-26.2308 -1.7333 TD +(13)Tj +/TT19 1 Tf +2.3333 0 TD +(Stream not open: )Tj +/TT21 1 Tf +10.2017 0 TD +(X)Tj +/TT6 1 Tf +-10.2017 -1.7333 TD +0.13 Tw +(From an I/O function, e.g., )Tj +/TT8 1 Tf +12.8331 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.63 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.63 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.13 Tw +[(. Condition type: )]TJ +/TT8 1 Tf +8.8463 0 TD +0 Tw +(XCL:STREAM-NOT-OPEN)Tj +/TT17 1 Tf +-31.9409 -1.2222 TD +(stream)Tj +/TT6 1 Tf +-2.3333 -1.7333 TD +(14)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is not a SYMBOL.)Tj +/TT8 1 Tf +-0.6001 -1.7333 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5467 0 TD +(PUTPROP)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5467 0 TD +(GETTOPVAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.0467 Tw +[(, etc., given a non-atomic argument. Condition type: )]TJ +/TT8 1 Tf +24.2421 0 TD +0 Tw +(XCL:SMPLE-)Tj +-37.3373 -1.2222 TD +(TYPE-ERROR )Tj +/TT17 1 Tf +6.6011 0 TD +(culprit)Tj +/TT8 1 Tf +4.2007 0 TD +( :EXPECTED-TYPE CL:SYMBOL)Tj +ET +endstream +endobj +75 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +/TT21 76 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +78 0 obj +<< +/Length 5199 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-21)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT6 1 Tf +9 0 0 9 75 569.54 Tm +[(15)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(16)Tj +/TT19 1 Tf +2.3333 0 TD +(End of file )Tj +/TT21 1 Tf +7.2012 0 TD +(X)Tj +/TT6 1 Tf +-7.2012 -1.7333 TD +0.0267 Tw +(From an input function, e.g., )Tj +/TT8 1 Tf +12.9908 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(READC)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(RATOM)Tj +/TT6 1 Tf +3.0005 0 TD +0.0267 Tw +[(. After the error occurs, the file will still be left)]TJ +-22.4455 -1.2889 TD +0 Tw +(open. Condition type: )Tj +/TT8 1 Tf +10.4043 0 TD +(END-OF-FILE )Tj +/TT17 1 Tf +7.2012 0 TD +(stream)Tj +/TT6 1 Tf +-19.9388 -1.7333 TD +(17)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT21 1 Tf +0.6001 0 TD +(varying messages)Tj +/TT19 1 Tf +9.6016 0 TD +(.)Tj +/TT6 1 Tf +-10.8018 -1.7333 TD +(Call to )Tj +/TT8 1 Tf +3.1631 0 TD +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +( \(see Signalling Errors above\). Condition type: )Tj +/TT8 1 Tf +21.1182 0 TD +(INTERLISP-ERROR MESSAGE)Tj +/TT6 1 Tf +-29.6151 -1.7333 TD +[(18)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(19)Tj +/TT19 1 Tf +2.3333 0 TD +(Illegal stack arg: )Tj +/TT21 1 Tf +11.4019 0 TD +(X)Tj +/TT6 1 Tf +-11.4019 -1.7333 TD +0.0322 Tw +[(A stack function expected a stack position and was given something else. This might occur if the)]TJ +0 -1.2222 TD +0.0878 Tw +[(arguments to a stack function are reversed. Also occurs if you specified a stack position with a)]TJ +T* +0.0978 Tw +[(function name, and that function was not found on the stack \(see Chapter 11\). Condition type:)]TJ +/TT8 1 Tf +T* +0 Tw +(ILLEGAL-STACK-ARG )Tj +/TT17 1 Tf +10.8018 0 TD +(arg)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-14.9354 -1.7333 TD +[(20)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(21)Tj +/TT19 1 Tf +2.3333 0 TD +(Array space full)Tj +/TT6 1 Tf +0 -1.7333 TD +0.1122 Tw +(System will first initiate a garbage collection of array space, and if no array space is reclaimed,)Tj +0 -1.2222 TD +0 Tw +(will then generate this error. Condition type: )Tj +/TT8 1 Tf +20.502 0 TD +(XCL:ARRAY-SPACE-FULL)Tj +/TT6 1 Tf +12.002 0 TD +(.)Tj +-34.8372 -1.7333 TD +(22)Tj +/TT19 1 Tf +2.3333 0 TD +(File system resources exceeded)Tj +/TT6 1 Tf +18.0029 0 TD +(: )Tj +/TT21 1 Tf +0.75 0 TD +(X)Tj +/TT6 1 Tf +-18.7529 -1.7333 TD +0.0556 Tw +[(Includes no more disk space, disk quota exceeded, directory full, etc. Condition type: )]TJ +/TT8 1 Tf +39.1351 0 TD +0 Tw +(XCL:FS-)Tj +-39.1351 -1.2222 TD +(RESOURCE-EXCEEDED)Tj +/TT6 1 Tf +-2.3333 -1.7333 TD +(23)Tj +/TT19 1 Tf +2.3333 0 TD +(File not found)Tj +/TT6 1 Tf +0 -1.7333 TD +(File name does not correspond to a file in the corresponding directory. Can also occur if file name)Tj +0 -1.2222 TD +(is ambiguous. Condition type: )Tj +/TT8 1 Tf +14.1201 0 TD +(XCL:FILE-NOT-FOUND)Tj +/TT6 1 Tf +10.8018 0 TD +( )Tj +/TT13 1 Tf +0.25 0 TD +(pathname)Tj +/TT6 1 Tf +-27.5052 -1.7333 TD +[(24)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(25)Tj +/TT19 1 Tf +2.3333 0 TD +(Invalid argument: )Tj +/TT21 1 Tf +10.8018 0 TD +(X)Tj +/TT6 1 Tf +-10.8018 -1.7333 TD +0.1222 Tw +(A form ends in a non-list other than )Tj +/TT8 1 Tf +17.0745 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1222 Tw +(, e.g., )Tj +/TT8 1 Tf +2.7796 0 TD +0.2922 Tw +(\(CONS T . 3\))Tj +/TT6 1 Tf +8.0778 0 TD +0.1222 Tw +[(. Condition type: )]TJ +/TT8 1 Tf +8.8074 0 TD +0 Tw +(INVALID-)Tj +-38.5396 -1.2222 TD +(ARGUMENT-LIST )Tj +/TT17 1 Tf +8.4014 0 TD +(argument)Tj +/TT6 1 Tf +-10.7347 -1.7333 TD +(26)Tj +/TT19 1 Tf +2.3333 0 TD +(Hash table full)Tj +/TT6 1 Tf +9.0015 0 TD +(: )Tj +/TT21 1 Tf +0.75 0 TD +(X)Tj +/TT6 1 Tf +-9.7515 -1.7333 TD +(See hash array functions, Chapter 6. Condition type: )Tj +/TT8 1 Tf +23.8364 0 TD +(XCL:HASH-TABLE-FULL )Tj +/TT17 1 Tf +12.002 0 TD +(table)Tj +/TT6 1 Tf +-38.1717 -1.7333 TD +(27)Tj +/TT19 1 Tf +2.3333 0 TD +(Invalid argument: )Tj +/TT21 1 Tf +10.8018 0 TD +(X)Tj +/TT6 1 Tf +-10.8018 -1.7333 TD +0.0522 Tw +[(Catch-all error. Currently used by )]TJ +/TT8 1 Tf +15.8119 0 TD +0 Tw +(PUTD)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5522 0 TD +(EVALA)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5522 0 TD +(ARG)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5522 0 TD +(FUNARG)Tj +/TT6 1 Tf +3.6006 0 TD +0.0522 Tw +[(, etc. Condition type: )]TJ +/TT8 1 Tf +10.2586 0 TD +0 Tw +(INVALID-)Tj +-38.5289 -1.2222 TD +(ARGUMENT-LIST )Tj +/TT17 1 Tf +8.4014 0 TD +(argument)Tj +/TT6 1 Tf +-10.7347 -1.7333 TD +(28)Tj +/TT19 1 Tf +2.3333 0 TD +(X is not a ARRAYP.)Tj +/TT8 1 Tf +0 -1.7333 TD +(ELT)Tj +/TT6 1 Tf +1.8003 0 TD +0.2422 Tw +[( or )]TJ +/TT8 1 Tf +1.9254 0 TD +0 Tw +(SETA)Tj +/TT6 1 Tf +2.4004 0 TD +0.2422 Tw +[( given an argument that is not a legal array \(see Chapter 5\). Condition type:)]TJ +/TT8 1 Tf +-6.126 -1.2222 TD +0 Tw +(XCL:SIMPLE-TYPE-ERROR )Tj +/TT17 1 Tf +13.2022 0 TD +(culprit)Tj +/TT8 1 Tf +4.2007 0 TD +( :EXPECTED-TYPE ARRAYP)Tj +/TT6 1 Tf +-19.7362 -1.7333 TD +[(29)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(30)Tj +/TT19 1 Tf +2.3333 0 TD +(Stack ptr ahs been released NOBIND)Tj +/TT6 1 Tf +0 -1.7333 TD +0.1122 Tw +(A released stack pointer was supplied as a stack descriptor for a purpose other than as a stack)Tj +0 -1.2222 TD +0 Tw +(pointer to be re-used \(see Chapter 11\). Condition type: )Tj +/TT8 1 Tf +24.7847 0 TD +(STACK-POINTER-REALEASED )Tj +/TT17 1 Tf +14.4023 0 TD +(name)Tj +ET +endstream +endobj +79 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +/TT21 76 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +82 0 obj +<< +/Length 4429 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-22)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 123 569.54 Tm +(31)Tj +/TT19 1 Tf +2.3333 0 TD +(Serious condition XCL:STORAGE-EXHAUSTED occured.)Tj +/TT6 1 Tf +0 -1.7333 TD +0.1755 Tw +(Following a garbage collection, if not enough words have been collected, and there is no un-)Tj +0 -1.2222 TD +0.2333 Tw +[(allocated space left in the system, this error is generated. Condition type: )]TJ +/TT8 1 Tf +36.1348 0 TD +0 Tw +(XCL:STORAGE-)Tj +-36.1348 -1.2222 TD +(EXHAUSTED)Tj +/TT6 1 Tf +-2.3333 -1.7333 TD +[(32)-1333.3(Obsolete)]TJ +0 -1.6667 TD +[(33)-1333.3(Obsolete)]TJ +T* +(34)Tj +/TT19 1 Tf +2.3333 0 TD +(No more data types available)Tj +/TT6 1 Tf +0 -1.7333 TD +0.0678 Tw +[(All available user data types have been allocated \(see Chapter 8\). Condition type: )]TJ +/TT8 1 Tf +37.9321 0 TD +0 Tw +(XCL:DATA-)Tj +-37.9321 -1.2222 TD +(TYPES-EXHAUSTED)Tj +/TT6 1 Tf +-2.3333 -1.7333 TD +(35)Tj +/TT19 1 Tf +2.3333 0 TD +(Serious condition XCL:ATTEMPT-TO-CHANGE-CONSTANT occured.)Tj +/TT6 1 Tf +0 -1.7333 TD +(In a )Tj +/TT8 1 Tf +1.9189 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +( expression. Condition type: )Tj +/TT8 1 Tf +13.1831 0 TD +(XCL:ATTEMPT-TO-CHANGE-CONSTANT)Tj +/TT6 1 Tf +-24.8773 -1.7333 TD +[(36)-1333.3(Obsolete)]TJ +0 -1.6667 TD +[(37)-1333.3(Obsolete)]TJ +T* +(38)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is not a READTABLEP.)Tj +/TT6 1 Tf +-0.6001 -1.7333 TD +0.3678 Tw +[(The argument was expected to be a valid read table \(see Chapter 25\). Condition type:)]TJ +/TT8 1 Tf +0 -1.1556 TD +0 Tw +(XCL:SIMPLE-TYPE-ERROR )Tj +/TT17 1 Tf +13.2022 0 TD +(culprit)Tj +/TT8 1 Tf +4.2007 0 TD +( :EXPECTED-TYPE READTABLEP)Tj +/TT6 1 Tf +-19.7362 -1.7333 TD +(39)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is not a TERMTABLEP.)Tj +/TT6 1 Tf +-0.6001 -1.7333 TD +0.25 Tw +[(The argument was expected to be a valid terminal table \(see Chapter 30\). Condition type:)]TJ +/TT8 1 Tf +0 -1.1556 TD +0 Tw +(XCL:SIMPLE-TYPE-ERROR )Tj +/TT17 1 Tf +13.2022 0 TD +(culprit)Tj +/TT8 1 Tf +4.2007 0 TD +( :EXPECTED-TYPE TERMTABLEP)Tj +/TT6 1 Tf +-19.7362 -1.7333 TD +[(40)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(41)Tj +/TT19 1 Tf +2.3333 0 TD +(Protection violation)Tj +/TT6 1 Tf +12.002 0 TD +(: )Tj +/TT21 1 Tf +0.75 0 TD +(X)Tj +/TT6 1 Tf +-12.752 -1.7333 TD +0.19 Tw +[(Attempt to open a file that you do not have access to. Also reference to unassigned device.)]TJ +0 -1.2222 TD +0 Tw +(Condition type: )Tj +/TT8 1 Tf +7.4463 0 TD +(XCL:FS-PROTECTION-VIOLATION)Tj +/TT6 1 Tf +-9.7796 -1.7333 TD +(42)Tj +/TT19 1 Tf +2.3333 0 TD +(Invalid pathname: )Tj +/TT21 1 Tf +10.8018 0 TD +(X)Tj +/TT6 1 Tf +-10.8018 -1.7333 TD +0.5356 Tw +(Illegal character in file specification, illegal syntax, e.g. two )Tj +/TT10 1 Tf +31.0436 0 TD +0 Tw +(;)Tj +/TT6 1 Tf +0.25 0 TD +0.5356 Tw +[(s etc. Condition type:)]TJ +/TT8 1 Tf +-31.2936 -1.1556 TD +0 Tw +(XCL:INVALID-PATHNAME )Tj +/TT17 1 Tf +12.6021 0 TD +(pathname)Tj +/TT6 1 Tf +-14.9354 -1.7333 TD +[(43)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(44)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is an unbound variable)Tj +/TT6 1 Tf +-0.6001 -1.7333 TD +0.1556 Tw +(This occurs when a variable \(symbol\) was used which had neither a stack binding \(wasnt an)Tj +0 -1.2222 TD +0.2722 Tw +(argument to a function nor a )Tj +/TT8 1 Tf +14.5596 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.2722 Tw +[( variable\) nor a top level value. The culprit \()]TJ +/TT8 1 Tf +23.3765 0 TD +0 Tw +(\(CADR)Tj +-40.3365 -1.2889 TD +(ERRORMESS\))Tj +/TT6 1 Tf +6.001 0 TD +0.0244 Tw +[(\) is the symbol. If DWIM corrects the error, no error occurs and the error number is)]TJ +-6.001 -1.2889 TD +0.1311 Tw +[(not set. However, if an error is going to occur, whether or not it will cause a break, the error)]TJ +0 -1.2222 TD +0 Tw +(number will be set. Condition type: )Tj +/TT8 1 Tf +16.4097 0 TD +(UNBOUND-VARIABLE)Tj +/TT6 1 Tf +9.6016 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(name)Tj +/TT6 1 Tf +-28.5946 -1.7333 TD +(45)Tj +/TT19 1 Tf +2.3333 0 TD +(Serious condition UNDEFINED-CAR-OF-FORM occured.)Tj +/TT6 1 Tf +0 -1.7333 TD +0.0922 Tw +[(Undefined function error. This occurs when a form is evaluated whose function position \()]TJ +/TT8 1 Tf +41.1832 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +(\))Tj +-42.9835 -1.2889 TD +(does not have a definition as a function. Condition type: )Tj +/TT8 1 Tf +25.5488 0 TD +(UNDEFINE-CAR-OF FORM )Tj +/TT17 1 Tf +12.6021 0 TD +(function)Tj +ET +endstream +endobj +83 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +/TT21 76 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +85 0 obj +<< +/Length 3192 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-23)Tj +/TT15 1 Tf +10 0 0 10 373.43 612 Tm +(ERRORS AND DEBUGGING)Tj +/TT6 1 Tf +9 0 0 9 75 569.54 Tm +(46)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT21 1 Tf +0.6001 0 TD +(varying messages)Tj +/TT19 1 Tf +9.6016 0 TD +(.)Tj +/TT6 1 Tf +-10.8018 -1.7333 TD +0.0733 Tw +(This error is generated if )Tj +/TT8 1 Tf +11.4824 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0733 Tw +[( is given an undefined function. Culprit is)]TJ +/TT17 1 Tf +19.3157 0 TD +0.1756 Tw +[( \(LIST FN ARGS\))]TJ +/TT6 1 Tf +-33.7986 -1.2889 TD +0 Tw +(Condition type: )Tj +/TT8 1 Tf +7.4463 0 TD +(UNDEFINED-FUNCTION-IN-APPLY)Tj +/TT6 1 Tf +-9.7796 -1.7333 TD +(47)Tj +/TT19 1 Tf +2.3333 0 TD +(CONTROL)Tj +/TT10 1 Tf +4.2007 0 TD +( E)Tj +/TT6 1 Tf +-4.2007 -1.7333 TD +(Control-E was typed. Condition type: )Tj +/TT8 1 Tf +17.3662 0 TD +(XCL:CONTROL-E-INTERRUPT)Tj +/TT6 1 Tf +-19.6995 -1.7333 TD +(48)Tj +/TT19 1 Tf +2.3333 0 TD +(Floating point underflow.)Tj +/TT6 1 Tf +0 -1.7333 TD +(Underflow during floating-point operation. Condition type: )Tj +/TT8 1 Tf +27.2036 0 TD +(XCL:FLOATING-UNDERFLOW)Tj +/TT6 1 Tf +-29.5369 -1.7333 TD +(49)Tj +/TT19 1 Tf +2.3333 0 TD +(Floating point overflow.)Tj +/TT6 1 Tf +0 -1.7333 TD +(Overflow during floating-point operation. Condition type: )Tj +/TT8 1 Tf +26.584 0 TD +(XCL:OVERFLOW)Tj +/TT6 1 Tf +-28.9173 -1.7333 TD +[(50)-1333.3(Obsolete)]TJ +0 -1.6667 TD +(51)Tj +/TT21 1 Tf +2.3333 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( is not a HASH-TABLE)Tj +/TT6 1 Tf +-0.6001 -1.7333 TD +0.4856 Tw +[(Hash array operations given an argument that is not a hash array. Condition type:)]TJ +/TT8 1 Tf +0 -1.1556 TD +0 Tw +(XCL:SIMPLE-TYPE-ERROR )Tj +/TT17 1 Tf +13.2022 0 TD +(culprit)Tj +/TT8 1 Tf +4.2007 0 TD +( :EXPECTED-TYPE CL:HASH-TABLE)Tj +/TT6 1 Tf +-19.7362 -1.7333 TD +(52)Tj +/TT19 1 Tf +2.3333 0 TD +(Too many arguments to )Tj +/TT21 1 Tf +13.2022 0 TD +(X)Tj +/TT6 1 Tf +-13.2022 -1.7333 TD +(Too many arguments given to a lambda-spread, lambda-nospread, or nlambda-spread function.)Tj +0 -1.6667 TD +0.0033 Tw +(Medley does not cause an error if more arguments are passed to a function than it is defined with.)Tj +0 -1.2222 TD +0.0144 Tw +(This argument occurs when more individual arguments are passed to a function than Medley can)Tj +T* +0 Tw +(store on the stack at once. The limit is currently 80 arguments.)Tj +0 -1.6667 TD +0.2933 Tw +(In addition, many system functions, e.g., )Tj +/TT8 1 Tf +19.9656 0 TD +0 Tw +(DEFINE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.7933 0 TD +(ARGLIST)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.7933 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.7933 0 TD +(LOG)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7933 0 TD +(EXPT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2933 Tw +(, etc, also)Tj +-38.7414 -1.2889 TD +0.0622 Tw +(generate errors with appropriate messages by calling )Tj +/TT8 1 Tf +24.1172 0 TD +0 Tw +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0622 Tw +[( \(see Signalling Errors above\) which)]TJ +-27.1177 -1.2889 TD +0.3444 Tw +[(causes error number 17. Condition type: )]TJ +/TT8 1 Tf +21.2805 0 TD +0 Tw +(TOO-MANY-ARGUMENTS )Tj +/TT17 1 Tf +12.2274 0 TD +(callee)Tj +/TT8 1 Tf +3.6006 0 TD +0.8256 Tw +[( :MAXIMUM)]TJ +-37.1085 -1.2222 TD +0 Tw +(CL:CALL-ARGUMENTS-LIMIT)Tj +ET +endstream +endobj +86 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT15 16 0 R +/TT17 17 0 R +/TT19 22 0 R +/TT21 76 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +88 0 obj +<< +/Length 199 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(14-24)Tj +/TT15 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 228 496.55 Tm +([This page intentionally left blank])Tj +ET +endstream +endobj +89 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT15 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +18 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 291 +/Height 271 +/BitsPerComponent 1 +/ImageMask true +/Length 10028 +>> +stream +?????????????????>>>>>>8????8Zٶa;ֵ;ֶ86c;ֵ;ֵ8F9a???8vw;Ãw;÷w8W÷;W;Ww8]???8Zٶa;ֵ݃vww;ֶv7{ݿvۻw86cv7{ۿ׿w;ֵv׿vσw;ֵv:Çn׻78F9av{ݿOtO?v{ݿO?Ã?8c7;׷;ׇ;1;;ַ;1???8v;;8W;W;W8]v?v?ßwݿ7;w<~<m v~:Nljv;^kxq;0#;Zm}A:JllH<;ÿ q;?ÿn~7?ÿn~78vÿn~ڷ;Ç?nڷ;ÿn~ٷ8Wÿn~ٷ;WÃq۰;W8]???8:?;Z7;V/8:;Z;Z8???8Zٶa;ֵ;ֶ086c @;ֵ#ÈH |OQ@;ֵ"$H @ЄH8F9a 0 @ PH?"# +|O爐0???????????????????????????????|78??{{?{?7{>߳j{?to{>o{?;?????|78??{{?{?7{>߳j{?to{>o{?;?????|7?{??7>߳j?t>??????8x8??۷n߿{?۷n߿{?۾߿{>y߇_{?wn߿?o{>wn߿_o{?8߃;?????n݃ 8??nտۿ{?6տ{?;տ}{>pՇ<{?wuɿ۸o{>wuɿ۵o{?>݃ <};?????8?n?n?{>8w߫?n>nݫ?88?????x?۷oݻ{?oݻ{?Xw{>W[{?oݻ۷{>oݻW۷{?|xw`?????p`>ûw?۵߻w>۶߻w?w`ݻ?ݿ~oݫ?ݿ~?݇~ݫ?ݻ~?ݻ~mo?ݻ~mo?80???H$PI'%PrI$OF0Γi $HF0 +bǏ| +endstream +endobj +11 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +90 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +91 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +92 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +93 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +94 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +95 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBGNHM+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 96 0 R +>> +endobj +96 0 obj +<< +/Filter /FlateDecode +/Length 20106 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8PB1pbAPo#̒ )4[))R &EEZ>*Db}=Z{g~マ{o p ȣwsfA|rZUoO'# wa1 Ţ] H'CH]onx|+r2d8uCp 9LkicX!,0$1ܥUp?0Lz`Q5-P|䩈G7pVGP7E-r:ԟ8:_ۈz,^y`p. Zxpr;84ptB*~TH|x4W`Z l̍@:~X˸ 0`6#4Y#2Z #`Ma;>#`S [ X45P-$/Lȃ& ߁Klx̹/b\b'XςRqf$ V[;0FwI)w.r,xВ&~ )&ӑ<DBi<`-ob~ :Ԥ>w"CV͗X p KH +Tͷ}2PCk wjU[IXŧH=_I'S_[3ge^%#\\y?!-|Eh$\xwBF:=I? f I}'d};k4OBZ'nIeRI_1(ڈWu}'x(e|"=^i}'雤_eg:SUJ6S4 ^!ٙapf2sq7 pxy|<0z1j٧pE2s& *!34CXm6.G6.ql\n +WڸW۸Ƶ6>e6cٸ:qXos6ny_pNN豟ㆪŢ^"j4aҟJ5 :/hĐL5FCjT5+SBHj΀ +J~onq%H_]Ucf!]h*&VAW<n\R\KLQ0hŤV1L5UVf_1h[Umu&?ͮv\%ݮ4/wp5s2OX[&./sZSM٩c}+ˮ/wF'5c/sǺN}O\9&Rw]j˼c8Z5RKgR/RF*gX[Jvwçݵqk3KKVyASnC>)!$ +LO睕[l) Ny{>D.goOwf\$o};yR3;/brd&ww|uqwP7ؘ٫vn'Yi0wD[Gab.XQ.# %ҮIԺhZJPCHB(R6Cet(`" t:t[a=wI }u~ޏ;K]?;sު\$)3`JѢ*$q7.{='2#Bł܂WYG,ݭMf6 +KTѩ9`aZhK/,ٮق0R9u^Vc@"#92F1xQ&|w4xCG$8WJFhdqpXխL)_Ãi3\nSܙfJ0=^$ cUBFږ.vyNȧTM ԇLءVZ?~,nRCFŅYV8WnCG}~S@P}@-! +PI`:b|OZѹXnPɳT9T]٪4IFd]{fuKKj\=?p u˺Ogit7){r]X:gSݭjwU9Ҫu~);?SOryTYvAS%dtډy\/wo Cg,sJGp9 CbK徚=_oTC-[1O9ՐK +ϣvU-!cRYگ@w*@:Ki9TYl;tvmh? 7QI2Mtܱ9fK)Pp2ʡ|H1_/k驘d wka`Knr]%@Dg)E ֈ{#r[4˃o77N*)6H rmʛvH-u` GFw{QH;a1ѣQQg,IF2Cb)Ҍ~ [g[j*R.!%K?Y bTb$6Ȩ>\p0;amFXElN ++axLI0F>/gc02`4A+^ Spe8y)%dOj3d%yh$D^!-d'y#oϤ#Ӥ\ UJڨP7CQt}V%>GWhn[諴Eߣ]z~AAh?M03dc0eTVf0?{-`Kl5gdCCvfv]arn>OSOx?ŗov?;a~SG%~G?&j22LX'n*|?A!HPg0bZ@qpXQ3CQT Xa482RwZf8݊2 cLj"VG}X#& +ɚW2 Yt?X~' +oP%%i0HR+4b ݒ&c6S+Q'b]vdQEτ1,װc?`cEpՌިd3A> sШd +8eݎg3-G{})f2Ͷ L乑m;-ΡZRU_w3DKP)ji7Zraڭ-BesK-$IY8Dp]]i>s ȭU'npZK;~jkɒ^_RKD>4{GK{yѥhk꺺bR%8>:D/lI'F`|6q.眤<m:(5×Be+HI[uNPv#'Nr-dnV(q Nti4[`HAus{lP~i[Yݽ}ػ;na5G't%W߶߶lۺ[_~bYal `/Jpa",L +TZE״pv/]E%?VK(9$1.Hpݯ #lHleYD}!Ӭ&28|(W4<e.ąE>faru&g N8jv_b[LxOfY*!gEiPSzl L pkAE_  ,ώtnW>M ]QiYc*Z*n¼ҴۚEeyhrWMeuCmaŌ=R[,gv4ūh-˝~}tlt\nEb;aVd1tɮJX'lF<('7.&cj3BnTefUO(- +n392HIGD/ ڣWͥ4D"iWq_ZafUdŷ@y.%ؔ[Lf7qU'-!xTKkE,8O%3}堋_Ġ`=F2.]LedbY!:.I"[,W~ˤ=Y_@d|ZXY@Vo47 PK9tev|q+ Y4c4; Y2`YX gLqB%ASJ؊hݏ[Z,ZҖ%8 ̂jԍRK¸2ٸ瘱?%UJ9C':g*.?.ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStVRKAİXk== x^.wwR9sߚq?W?NhN-:zTDw!_hG,h)cxz}GGVWAhSdicEk%`еdA"mψԒn^1v缴/y]4|ˊ^ox6g@EV4 @3h UFF;b|thƖorz̲[Bn+/LkI̯/^Gދaa4"$wQ eIp>}$XhNqUblfqBҡ>r[m)1x| u(8GTA"r wj;-A^7-W^-)AyjŪfϽ^Ww[ =x +n:Y,Š ,}*:,aCpx>Mz<4Vc|肽 DE8 +'U8 _ 'x7`@ȋEu5/{h# Ao%tq)^b7f~ +wo^<'?opS*IYIVH|7Mr/q?~;jۅ2oEFE-D*~v`32JMS# lt! +$2jZLFcDg21iI;6bD^Ͻ,v={w}.*WTCP jP]V!5T;շwգjz^~^VTMZ46AM֦kOi3HxY#{ T8q1 :&VQM%VMQ +6aNlGh1ĎTj;@?):FZ[VicM^c9\Z-JQl0=|@'D1RP 7~O`n&a 諈 +H([A'N1BNqG,B@qVPGAë-uEei5pSfXǦ8!c8MQ k.|;$wFv.=g|_f4)^w$d-DB3Cِgt75uM!*y8 vХYcBF6$7׹Fkk)}⽰!H{\ 'd @ouv۳I ug"0aH\[}A*- 53d HƗh,JnZ}ė}6D;ELz3IM >Pd䍵݁޵=%r s@c/isąuH#5F#"9:ni"87Jkï.")]H&Hz5nO[xohp.Ԧs +]yd7veWakй6PIÍDvjBQ&KZlx"}{޾C/_g+3 +PKyr+$v<v޵c[ؙ*t:[vsݹPǞglO|@X Zu+fdwZWG<Wˌ8`1k2V5/ۗ|`NnoX󆥷[H|q8:\!K$-$.=+}]bL$нa_M\NjsOWLH"is27dep $_X^Qz x] 4V1c]j3/`K$Aa}gQ Pz$B0G!% : bTW^,µ`0p|:zssA̓)3vld'^`TVgN^t`wM3绺ϲNd.?`n9l*͞H'yӌ|ۗ3,۽z ΁\bG:'fnV!r1clC${8;gg +FMx!פȧFlۄ Ƕ!-L=wsQo,O"-~4$A۪Єump{oLg7I0G۸%W =To/0Džu Ố QM ȂȪrX(BfU" kx +&dX mWI)|_ M /*2YCjȫdyCz>9M>"g?ɿEFL +Qc7 d:N rZIUt nv#K?=M~z!"KP2]ɖ̬YR,CvVDF 9ZҡA9t)ǕS(+5dj5+s0'sxļƳ {l +KgY&b?bAfv<R(y K"wBIU]B̗z,[= +"v, 7ra%r( C$ {\ۄZ $| U-D8Edm+US6P,XgِHwXرE>HR5KUo Xjъa!Ue)4\Q.ʼ)x_m3,(.2_[nJTVʺv< }m{"ώۖѣfB~okh*H9?I4YwdKn _%oߘ_X6dj0dawZC'3RǩcY58vЎ]#{i8~vN~;"&dJS +_#|8{mv/6!F34QK@IH6$bM?2NA*#r4CMdZpv&dD;HE%;{ߟyB=OnX@o7ՠ/ŹB pdc"""Ҍ)eu9..3rwMgIEaXuP״yv%׿YC5sfh[vNK*Zn_a濱i|S 5z9 {nuw}C.,vC=Q7%mg@>64k&[UYHn>)[l:tρùUu; VV[J۪D'o<;0׎.lуaw?s-CWK7svT[<}MUHhϼ eivnC +[ӭh+or{~$_Vi5E\]4⨉6~o}oyi Zַݰ_={OxݵF9(;{n~ݮs튖n(-BMoiD5oNo>d + q}gHJ>cwI^qQd\(GPIE,1"vXNDUzBL$ƕљ2K^_w|-8'iTlvmfYȤDC Y#,})ȃjB(0|(E=Uzj1TMnA=X+NX kPO[`;ڠ~A8G9T]Eu[އ8H6U UE*TVu,&[n%#܅j=D&LZȃ!H7y%A{r>z$$&7y'͠~K/G}UH~Vi~+tD4B[GhғO5teTZ|T[X5e7zvk`k:\Ml3*&5jGՉ +c'X7;Z,JjXJ >(F+Jݍ Tqz㼱gM)]Ev[2\! +͝ϳEKi-%Ra+)c\ +[)؂Ue3y Pqif{JʺhG2T mSAO&)Qb3DAc.[C /+W &ǯYJPvҰ, I<E+Lxlca b `!iYl#BNbS,?O[A;y-o2g}LcA=KA<1&+cJՂl{4өxM)0(]'loFEӿ22 yc@:X'Avʹ[`v{^; j?8~x/!)<(Q'oLaOlq mEw`Ƙ{^PU"|rfF` 0g$ÍrK aW YBM,aamUmp 68-F{rnkc*5lK"<ߐt_ïp^6c,gxYsckf+YʴЧ܋qz GK} =5e1Yle1 yԹ,nzS]:XJ7-X,!z,bEٳGY%JrnX bټ0WwVaPUMd!Q}x2S+JXS^ip3hnc.٪VvYfֿɯ82nwڷ& Q"#%qTvCˆ< RIK_0|!_WH4$$^{J&m,g JyQk'm@H̃|;;:)p|lvdn|:9w--̲-M,#Yxt%Q9hhY0KYCZªp,]=.rџт Ư^Թ5ʳf!1fPUk|MϾysƵhCMw<x2ZpGpݲTicK<ʚşcМ}Û-?zqe %,fά:Y,MDVs<Е¡5眣;Έ[Lm*׹*8qWWo6=C&> À%3 Vmm0G[xKxD-p29ٜ79]Xv"=YEd1/bRѾ /A& " -=e:!"%58dj]dڹ5xc'sF-&օlRX%#f-0 %*lu1LMS,?uQżS`$BmU4(vx h)וֹ+܃LN,y6ia +fE9,pTw|GBw ǩ 6h95P" R_Y8NN!j;WV{uٍOC:dыZh+9-ZxfOxٳp{9̎->.~ 8+XXM Ż-&ʰBu'YZ jf ,Uho1+b2_hq줜:2DmuT7L~ +a/ބƐ5"#@"]hMx}yx*p;[ *5,"^"Y~-L44Y5x`jh10nZN׏dWRŚ^sˏ ˚2pbax[_OCT_f5 MT`uQ}1,P gѫ/lKw`b;ˉ6]-O+J0O_Ǣ:^ǯ/P݉,~I +Kk ׊fA2q"=.WGLGo8L>b~v6YA hYwRkᦊOYEAuAM퓅FWwyTAHe-X~06PBȳ!üll`j|JrCoiF5*vf[hvY[qtu?D3mRga>ڛ)k2G&c~ MGWwg mc=ۏHV +h#iۏhPhYeNdӡf&#d(^ 18RzH y~뿗Sx/}6+ŀ (B24Hܗ{*}edݣlءhtap͇fySVe24[lqFs=8> S"Xbh4-_flow)pm1,uh;65L>,EJ}}š{BK,v\Suc\, &!{QMl~(gq?Mnr+FW;M,OnN CCQ:4| I(`ZY^o[1Xqb`w ![fbe5ʈ2|Z9|Ir^ywKO^-PQg}¢(a,B5E۲b_+5 b]xh +k<410OkGqTԪ1&>cm|cE.N5csg柹ߢf'*`X_R2syl!gzmgmcv]ea,Cy"|gq7M|?s ~ߖ¥ޒ&Y8X*UHF-itD:/]l49KvSry^n' +S"ʏ\e2[,VV)*(;0ݫV('ʿKJTU5&^:Hf5@_OJLF™D^D%*-PBcU…^$L&0P#$*H{c=DVa(bU(P#tPb@K#&ga8C,& >a4EOA~T4TFnF`TQĬGl75CN"H F*4 WE%.`U QB}Aԉ8!ہ M\-vH׃ߠ6Oo,ԃ+ b/>,z,me~+ ;Az]۫{uVZZvݾVTցu'<7Wzֹ[;"G^!/гcc:KuxqI #K?_KsJw++ }Ҭ-yK[~m^ɲ̟,N6^幧Sge$jǎ +-_+ jeu5 $7ovTӵQ0ҽ3O\,[|,:E~kD2gҙ]ӌ U7Ϛ ^{ZKCi%Sǻל̯~g'Q +Նɵ?ȯX<_ϵ^,-{wRq5ub VJ[|^wUZo!KݢyyGĥֶ4"s/- JB!^kίNlCܔ-:K4w@`3! JKˉW &dWqXqg튾֭ 4n_}tsrLӪڤ#qT-41VYu*Ϻr> 1tHk/㾜nX"+$w2amLTͣve\uX`ܗ;93,)Hƞ,~eap7ˢ3ϕ{3%pz `?|t (z(b!C$|j0)?l y01ߚ Tnx0 kPsކfbv8 0;C;t TxFD$ē$BOP2d;%c2L&Ed)%ee2TU, Md5Yy\OdKr|y%r kJg^85hf4a4i9it:c9c ]JUtEn>.%ӣ#z~F/ޠF3cɢX֏Ų8fa,='PQ3CЇʧ(0DD9eh-F%R=r}%L#6b򨣊Qqr[^A )8ꖇ LP˔.3YWF^]paW4 + Gu!]+WV/QVIAar dIB(q|~@U3hRgv,Mͨh>p+4 pXXI g+N8q.D( "Љ¬5pNpanbf@1(3@f;̛7־\xك/޾쁏6ظvPyk_MK31<<e#v +Pv5zP(0sMw! wk].vq`䦱n 97r@~6xƒk. .Ҍ~-%dKʳ/rb}B^B}*s~Rl jʍTMwn@,g?–\]W._} +G۝ۻPO}}Oq۽a}gt|iu/|u5&B< +%cF6IWVjDoPkjmFgirϿ}kr5.y}WUmK <%O?U[rmMpZz3TZEfMOZI3)XӇ/il(%4'fхur$L$KjPaȒ + u&9 | +>#!m`+xWλm)9![M^߂߀__#rckȋs;Dz!7)4g!SI<~qx!u5}*ɚK . ++( f$uRkRwk^X(Xh[T-t{h7Љ܃()]hS +ϿP槐wBַCSl#' +c~s"fk!o׋uL Zhր*\ +PWLPK%ӏQ\W] +"LLyi=yy[e]\R=Df +/`a(#B#U 8ּElh fsՙaqM$Ρ41P[t~:6>ٟ L& NDpw{9L߃qXhp8H[мᐇC`p(h29!p0d o(<JlCbz Ӌ\eH&w >kX:p{v/r@G3m;[T-tdT-,ڛB mm]{: +-@-15ʄ3pF [*,a))W𳍟2~ђ$\T$e:f?7qة^mŎVdCEajYoAv:4Kw[^Iuq՛K\^rWr_;ӏe59)}X*'g~C̟@N!r6hV měQ&'ob;[b!o_a}5'.?Te's4R_BF;;;T5ufȮ7MkO 9CfU콀>QH:kqF}VsR +k#ToZv v6rF/i}|GSUqvM*L3m26$7yۆVQZ#5M4j(zKFslCd_l26J2զd*y^*~"8?HL}=QM=9u\Dī-Yq-8f̲8bͲ̲QGf?y挟>Kx#3Xϧt6d|VO{A&K~I |8&BH"mG\&~ +mBKvX|zqx_L{n|Ef 5 +endstream +endobj +97 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +98 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +99 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +100 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +101 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262243 +/FontBBox [-56 -250 868 801] +/FontName /Courier-BoldOblique +/ItalicAngle -15 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 90 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 0 556 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 0 778 0 278 0 722 611 0 722 778 +0 0 722 667 0 722 667 944 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 0 611 611 278 0 556 278 889 611 611 +0 0 389 556 333 0 0 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 91 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 840 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 92 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [600 600 600 0 0 0 0 0 600 600 600 600 600 600 600 600 +600 600 600 600 0 0 0 600 600 0 600 0 0 600 0 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 0 +0 600 600 0 600 600 0 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 93 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 147 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 +0 0 0 0 0 0 0 0 0 0 250 250 0 0 0 0 +0 0 0 0 0 611 0 0 0 0 0 0 0 0 833 0 +611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 500 0 444 0 500 389 0 0 0 0 0 0 889 611 556 +0 0 389 0 333 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 94 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBGNHM+Symbol +/Encoding /Identity-H +/DescendantFonts [ 102 0 R ] +/ToUnicode 103 0 R +>> +endobj +102 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBGNHM+Symbol +/FontDescriptor 95 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +0 0 0 667 0 0 0 0 0 0 0 0 556 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 722 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 97 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 667 722 722 667 611 778 0 278 0 0 556 833 722 778 +0 0 722 667 0 722 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 98 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 117 +/Widths [600 0 0 0 0 0 0 0 600 600 0 0 0 600 600 0 +0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 600 600 600 0 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 600 0 600 0 0 +0 600 600 600 0 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 99 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 0 0 0 0 0 0 0 0 600 600 0 600 600 0 +0 600 0 0 0 0 0 0 0 0 600 0 0 600 0 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 100 0 R +>> +endobj +76 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 +0 600 0 0 0 600 0 600 0 600 0 0 0 600 600 0 +0 0 600 600 0 0 600 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-BoldOblique +/FontDescriptor 101 0 R +>> +endobj +103 0 obj +<< +/Filter /FlateDecode +/Length 226 +>> +stream +HTP=o [uCTXK~IsH .F~6?O}E;`Gƍ,g@*ph>L\3p7R>{| uRqApblҋYUǎ{BP czt&cL:!NBOi発.2~|fE{T.uǛ-V5nbc? m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 34 0 R +/Contents 33 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 37 0 R +/Contents 36 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +49 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 51 0 R +/Contents 50 0 R +>> +endobj +52 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 54 0 R +/Contents 53 0 R +>> +endobj +55 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 57 0 R +/Contents 56 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 60 0 R +/Contents 59 0 R +>> +endobj +61 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 63 0 R +/Contents 62 0 R +>> +endobj +64 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 66 0 R +/Contents 65 0 R +>> +endobj +67 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 69 0 R +/Contents 68 0 R +>> +endobj +70 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 72 0 R +/Contents 71 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 75 0 R +/Contents 74 0 R +>> +endobj +77 0 obj +<< +/Type /Page +/Parent 80 0 R +/Resources 79 0 R +/Contents 78 0 R +>> +endobj +81 0 obj +<< +/Type /Page +/Parent 80 0 R +/Resources 83 0 R +/Contents 82 0 R +>> +endobj +84 0 obj +<< +/Type /Page +/Parent 80 0 R +/Resources 86 0 R +/Contents 85 0 R +>> +endobj +87 0 obj +<< +/Type /Page +/Parent 80 0 R +/Resources 89 0 R +/Contents 88 0 R +>> +endobj +104 0 obj +<< +/S /D +>> +endobj +105 0 obj +<< +/Nums [0 104 0 R ] +>> +endobj +12 0 obj +<< +/Type /Pages +/Kids [1 0 R 13 0 R 19 0 R 23 0 R 26 0 R 29 0 R 32 0 R 35 0 R 38 0 R 41 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [44 0 R 49 0 R 52 0 R 55 0 R 58 0 R 61 0 R 64 0 R 67 0 R 70 0 R 73 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +80 0 obj +<< +/Type /Pages +/Kids [77 0 R 81 0 R 84 0 R 87 0 R] +/Count 4 +/Parent 47 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [12 0 R 48 0 R 80 0 R ] +/Count 24 +/MediaBox [0 0 612 792] +>> +endobj +106 0 obj +<< +/CreationDate (D:20210202102650-06'00') +/ModDate (D:20210202102650-06'00') +/Producer (Apple pstopdf) +>> +endobj +107 0 obj +<< +/Type /Catalog +/Pages 47 0 R +/PageLabels 105 0 R +>> +endobj +xref +0 108 +0000000000 65535 f +0000200146 00000 n +0000000016 00000 n +0000005336 00000 n +0000195221 00000 n +0000195432 00000 n +0000195860 00000 n +0000196417 00000 n +0000196962 00000 n +0000197401 00000 n +0000197758 00000 n +0000172682 00000 n +0000202230 00000 n +0000200227 00000 n +0000005502 00000 n +0000010945 00000 n +0000198168 00000 n +0000198485 00000 n +0000162510 00000 n +0000200311 00000 n +0000011148 00000 n +0000018960 00000 n +0000198941 00000 n +0000200395 00000 n +0000019153 00000 n +0000025942 00000 n +0000200479 00000 n +0000026135 00000 n +0000032374 00000 n +0000200563 00000 n +0000032545 00000 n +0000039392 00000 n +0000200647 00000 n +0000039550 00000 n +0000046637 00000 n +0000200731 00000 n +0000046807 00000 n +0000053322 00000 n +0000200815 00000 n +0000053505 00000 n +0000060763 00000 n +0000200899 00000 n +0000060945 00000 n +0000068118 00000 n +0000200983 00000 n +0000068299 00000 n +0000075232 00000 n +0000202600 00000 n +0000202367 00000 n +0000201067 00000 n +0000075426 00000 n +0000084542 00000 n +0000201151 00000 n +0000084737 00000 n +0000093213 00000 n +0000201235 00000 n +0000093408 00000 n +0000102889 00000 n +0000201319 00000 n +0000103083 00000 n +0000109895 00000 n +0000201403 00000 n +0000110089 00000 n +0000118072 00000 n +0000201487 00000 n +0000118266 00000 n +0000126861 00000 n +0000201571 00000 n +0000127044 00000 n +0000136296 00000 n +0000201655 00000 n +0000136479 00000 n +0000142506 00000 n +0000201739 00000 n +0000142675 00000 n +0000148438 00000 n +0000199463 00000 n +0000201823 00000 n +0000148609 00000 n +0000153861 00000 n +0000202505 00000 n +0000201907 00000 n +0000154045 00000 n +0000158527 00000 n +0000201991 00000 n +0000158710 00000 n +0000161955 00000 n +0000202075 00000 n +0000162138 00000 n +0000162389 00000 n +0000172823 00000 n +0000173020 00000 n +0000173226 00000 n +0000173426 00000 n +0000173617 00000 n +0000173822 00000 n +0000174012 00000 n +0000194208 00000 n +0000194411 00000 n +0000194606 00000 n +0000194807 00000 n +0000195010 00000 n +0000197545 00000 n +0000199846 00000 n +0000202159 00000 n +0000202188 00000 n +0000202699 00000 n +0000202823 00000 n +trailer +<< +/Size 108 +/Root 107 0 R +/Info 106 0 R +/ID [<8d6d901b05fd6e990bf3573dfa290903><8d6d901b05fd6e990bf3573dfa290903>] +>> +startxref +202895 +%%EOF diff --git a/docs/medley-irm/15-BREAKING.TEDIT b/docs/medley-irm/15-BREAKING.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..69d229509f2dd122efd9c651d297aa46b7ee7441 GIT binary patch literal 47488 zcmd^o-*X(5KjFGYcq*pB1GiPKtX#eob$B=?6`+>)&!IpCre98dtbyR@Q217Jvw z7nq@E08;d0Dph$)RjN`cSNXw}%G;JIab8vV1DxcK$xEK{kj?jf=bo>-(EyffCr+ij z62R`;_nv!x-*eAB-FPs(w>5lR?F=`DJHyf4VfA1zdNkNtxwA7Ie7HHfzgF$-4DRY; zFuGR_?tQemi@TLKZoY&6uUGi*3%Y)F<*k*K2b062$*b!5V*X-!I9XQ9$&1Nid{iAy zpFEi?CbN_3$@pM;G(DN(;gk8II-cXvboR75c{Zu`C(p(&rf8i%sm9fl)7invbUv$I zPEVfAPfx1x!O7|P=;&27IRpTVnVu}G!wH7tc0L1=cV1PW?Jp+dPx16;4G?S9tNCel zFrMM(bcu=BXIY)htNFpf>7p8+R4>Mh>HHLJ(_^4Eoe81E>1@V{h|dg-2lM0SN0XBY z34FR3AFox*IXYrE(JzhF@??xIoNa%CLCfcpgOkZ2(EDs}0qWbR1xB0^>^L5aVBm$3 z&ll4f##LnDE8(SC%$Di00z<*o!wM{${A9{WRz4dXzL+jG2|9p_!S7e%Hc^>Ac}0?r z=Ch}h#dVB7t~njjI1m;~AUu3AnN`bI%acjnX_=HAJR1YVA&^?kPoF-k#%1F5l{-ZQ z)kYEFvY*QHX0`EXba!uad$e1PHn*zmiuUZQ_C6JFwYs?q#vfMqCi|yPp91avz2Til z_wPe9)ywVeF)KG$R_aIN>R^6!1Q}45Ajz%i^0`SS<6q2=UQp)C`4K1wZy?D1qsj47 zng>;QK3<$m4^EH9i^e$M^&Rm25bCfvh6-Zb%V%I0@x{f0qCc1~7MQp?9G{G|`-N0zI5(k$S#d z6Z-T0ld;SN>UNlNYN|8zXmE5?@Q1e2U;*6X=3uaJ8CHKr+t$ME+^qUbP=EK?_&NGk zH{V``meF+;2Lg5w0zKQeRzw-^+5S> zmED(6k>!)=nrr$!FF`t%d+ZY&gJ|Va|7Q+C5D6_0TbXhk4`5`SSd8LI4scrG3h3GdQ4dqUW+gco1T!D z>EXsl%Q;2`4QL-%ngHv@!5H2e!zJq?^372dTE9%ShmV~sus(zsp3lK?aD9mt2<(Js ze7=}0mlS8{2Q07_T@za^3uX8cjD~EAW=y#t>2Xszie6OvuZT%kJ<=LqRnNvpC$ZLm zI@o+#+xRJM2QFx`Jei)aAq{1Kn8DMqQ2LRRmvc}z=9&ceb#!#Pgf9s#1KaAA7Bp^# zJf2J!%aa@x{q6pE+r_EeKGuceGj0aW4YNFXM%WX&=Xp*4x>yIJfzF1TqB@k7@nAAJjFpiw8P+(M z+3W&gw|9nnk9J1YB{Klg_ERI; zdeUqS!kR7b*4!rHZ?EA0KV2z~X*uDdTYIK4ENXVWm^)0ny|UL}pTUY{s2H9a4_z$b zCM^LA7GkV9Eg}{PE|_d6#_|X7n$`FT!wQ<;!=3H>)zNr=a#U??Z$Fe90hI9lxWK^J zGt6h$iNKd}(9sw$=#3GB!vn)VAvogd8b%8DOkXpeRkr}oi(|kHH-}XhpcV?vF~!k* z{wa4Q1nxC-v{sE|^v6@g5T8znz{#uU;il2iI38nBVNgc5@NE8)!A|&x*&Lzh@%SlX zQv_@C*#zheM0)rUn)pbbd?;1R(Lu1K13~M+Ra-xF7Yr`)pRj5 zovJSl==UFB^HKW}>OytK1F3tAIo}s$hkmiJ2dfQ;$~S3~GDn4>tCOJL-iN)aH}1`Phxm67ZG+xj zv{$_Ywes0fZ;8QGZy&>}-YM=T>OIG(3ca^_o4wuMLtMW^zXhHxb^WY21(avF9`~N( ze-r$>&>f%O#Y{W+ciww~-%m91xVMJuNpHRP6hBpO1DNcg=Lc#hz7H{5V91`E=)r$C zdfR}-t9!T#7$=x}ysyqegYhMy~O_lldAUuSL4Q*7ov@A`=X};7e4_XgGnARxii?>#T=na6Z zdLKi?LtWj403Se|s{j6`epd0c>V38ML!i`V`j0;Et?W+V&`zIw2T~TD+5?W>FA*NX z^AViqX70CUbL1Yh--g#r_t?i?Y_z>s-5YLfj)wQJliq8tG9Q01#6p7&4;Nt2f{inx zuh0 z2ixU(2cI-%%8=g}FxlgJ|c)7fDO3jH(! z=W694M{^eCY|;^s43W6{rNJTxzp-8QnG$D$8o?m6@ehh$38Hp}V!&#(GC0Hz35>Q(kdIHTiD8KmK&k}G;U^} zQx(`znI{?;ki>|zDVP;7$DUl7W@$b31J0^Wwg6oOwdh$)R-j-PI59Xvz5&*;k3A&< zXP5_~Q}$GtEmOgEl*WND8GIK)8eWn`Pe51N=~^{ef4aU_^>-d_4eky^+V(a`Lu|J> z+SC2!5ciXl13D+61ZOg3hBtQx;0I1H4i?jW%!=*6{AFNQ^7?gR035;@1%rKXL&PDe zF=b8>!rVWaAAHI%nhn|$Ag#0v9%BYk_j10#VFVb}^ax1{(}|Lyw)J%APv%fe@&VIX zTIu-6n}~hk=CQ|xpWo0Xu!y(h&@5hZIi~{5k~51`A6!M`i^%M@CoIY5*vN+^%$QS= zf!z!VGQ|o58$W+O86%HVfUC!?P+jN(Zn4#yyfhNX9gJ>X-yB^Rb&=zS8t9Bie)%af zJ)r~2;u!gcnS;RqBE>}4qR+75NL@g{Wp6?j=3Lx*9-P4MV{k3^@&5e9gc5)jAC{bO zjweSNv}F645Fxz*1?uL}0J)629}GtKhxe#3t%tebPz#BS zJRG#(R<%w%FY`%e!Z|K)u(dhZ6)z!%m&h_=SyuiD=>=urK_d3)^QW`vA7K+m15dTU zX&#R}AcNzvaTkA^>}KB@M!Z@ktYeuNzE?|rZ8Kdyd%6}$4)YIQ||tJNNm*O2OfGnA9nBu{96n1*?nYK^$YRtK_3+t>XX%~ z`sxoyTjS&X!*Mm5?;?U4Lr`U@{LzY-Ns*_zlt2lQ8WPoU%7Rmkf*W&VU|b4;<7h`` zIu9N`+l}NQOh-xbeBa4WuIV{^V%q>({LuXGY#)vC7+4BMcTWZVaCXaj0Zd9 zdsF!e+&Jhc(doUN=%Orr%==kGAPir=9JTfT5}#lOA1%^u@r|=$sN%Y11}%Y4B(MTR}u>^gD9848fS9vN2I}i zw$8`oNFKpaEYw=a4r?9zwT|Ev-tf@s8ZrTNL^c73usK6*KR6>(&`8KPAVqXB9kvA@oJz>WEHrDVyN zqIcRD>jZ`?{);gpKOU(F4|S1dN-&|#+nO<#7_zcHrh9IHX#M_-N?sx`nSk@7&wm~^Xf1C$uS zj1FW6k4C$Ljp6#<_WFbEdz%}N*ReCGH%&Kh(2Z!q%~Ae)Nm2v840{i(lsiN1?#hm* z;gxG=T%eYa!HcDH@mi76xV~V=iNM0KJ{$=G>vFIc`g&gQ3`8NmM509QXAT5}0uK=& z5bhdFuDU)4z^oZPMC;}S+8(#TB(Ge#xa z8{F9%Vu9k;xg^=wSG4W@3nYn%Q-ma7%l~h=B19dk6(R$jHVSgUU#>$%z-!1O98EuE zz613tH=yiK!fZga(rXAyuy+}s9xUT zL2)Q$?bbn?SfGt8Zm_6_KI;Ih0IgGv?TC@3G5tHkjcqs`98hpCABPHY19tZZJKE^7 z0TOr&=a?~hAlOp3_WZOx_!fj^li7iGvBmmwO@a%+9tRmR1ob@iQy&6czB=BYA7Mi; z)YjspLp~wU;g+9eT50Wc_LOp#jg=h}Td;a@azZV$^KdhE`q1Iot~2@M!G;rOB8zsCppm4;!Smn zWqs#Cs!w6T?L%#%7%SG0HT>X+HJk={X9LG#JVX1W`WE7*8io#Kl~=+e7#o5P=mp~l zK!m$Yb=uo|d>fl%YLL#x;vQZZ+q+m}k!Hg&D^W>(pa^S0t;J##vdfyk!gTs?WI|AN z36~iQI!iU{`mG{sg&sOVO;rJWri6HE9g%DJ%8N8Dh|;W%CI;2+9?mTb)^S)Y9|MvZ zx*VP&=_W$75uTt(7uAZ;I%IWEXUo$AJYF)TMPXVljx_KjMkwpgXE;RKdfTjd2JxSS-+9 z-SR;>7qN;OE~qF$q|T_$r(SlEjEsl{NwN9M3>p9l{vhHas3=6toENZY*>s5=)BD2p z1xaB$V+3@tQk$S98s^a-{s4vJFe&U(BIb9A&vR4_TX2kZKraxCiP{aLi$EuD@E5Y#8K_mW;FWG)ze`C7n>oEn`05cxIHchkF;Ffgleg zIQ^I!zw_v$&LM_`%fSkcbacjXaoRH2T5_W4VUgp5ykSl=Ne^lb$rpaQCshlGNk(Xv90mZO1tv2xMXtkOWkDN#UTBWqc)K;v+X z8%o%qrjuKvql(QOc+l9YMTFo=rYORXNTayJ;EeW|s1(Gu6L8a0UJNLUHl-nFHVnok z&NMUeqH-cpHTDEyfY1<>evDl6QO+`of>Y9Y0Kn_qOK|<-_82@3D*3QjG&d1i-DJrF z90IBCQ^8ZIC<4W-Jik7~Y>Yf&=M)n#5MkwEd7r@)G_yr^T}W+!9u~coS`-H&>nnpg z)xjJUZ9(a3@Ob=UK2_x>)?iwAI?9?VI+VJ;_!%-&Avm6C)j4NkEZrJyOKiLFGkj@f ze1x32s?+)?;Q7I$?Y&|3ZFtr6en6$={&*Ni2dH{irkKz1?1Y4*NglhDRYDj`dyprL^9?H#R&aOsxag;`^X8 zkpa!T9F$PJjnFLhS>)p^V0XB)hm)YPFdGk~bINu-|Ggxg^X_Zp)P2+gCM!5ZloO}w zF#FRySxKXZ{phW(h6^j1Q`vUPj*)RW4$@MG*BKO4PjO6>XZP{01UxjoD1}%sVTs_5 zUW8bBpQw0F*-v*eABu*b&O#>u%q~i&GG0@poD13+*7ErR1pt@{o;`Lp%3GF&YzsMF zAdH~0W;ad}uwsUiRw^u|F2va64(*{io$|`;req*@nKK?k#>t4WT#o{`evj2jbyeGq z6!2wLNWaspLPEvS<<&+zaYB~`1`K-I;vhp5*t~=XS45^moVAi!hFvSx2pZ!s19hi) zCdi~T-D?XfLWC9fR^ximR~FGLbMmPeix8#`}ZGN=m6A(0U*)jI0EV67=QS*+_lbRGqJ zU|}!v>uEZ%-j>`XRhDDQu{`~s4qy;q$tOc_c^b!Bt2A zIa6%XDQKE}AiU;9v%h~va$DpI5I3bQQ1A0_0`a-SGm&&k0 zz#P$rmu4tHvTiNuFW>GT<`{kfw{(r=B8QAOR;iXVxJuXXT9kt_n|BgVL`rFIQ7o#KsO! z*tgGE{mvvRzGTI9;Hc$WBVbv3+YGdbTiamUHLiM=LARpQMt7Y28tGb<`a{&wL)kEa z=IY-c?%ktj!YO_0HPd&MxXN8TlPgii)r4v-CZc$=o$tE`8SsQUy@8*?{)Z-CAS@bh z054DXlk-cgHw*EF+O4vcnll6;WaUb5l&2F>a0ly%+Bp>nLK>NCvPy5D?QnnwpV1=_ zr32IJ>2!(0HczS$T*D%`eTgElqzI=HH7E062;zm?0|tCE1G{vV>|tpbm(*|I3y)ZG z3xcRJ-iVq$+T6jb+#92QURzY=YcV(ZC?eF|fS<7# z;`o8LDxSmQgOvCV+bA4VJ@akqfc|2-K*ey4Q_V>v3ChO}`U08XAIMe;DQo`UTV28D z2lgNd2QE^m0-$33VjP6?Fdt_2q)0F1k&3F2fh+C|I|A$p`AUC9)n+#-cT@3;e9B3* zitvhhU>!D=NT)0jYe)w|V+f3LQ-TsN3}e$gIeE#7y~G1iG5SA8Mk^8(?Qz+wsdbR! zy03dMJ@NXKZd*%@J2<9&?8dJkxL!9^i2+)&8FCo-zL6D6)~Q2VxVDhAOy$e2N?x4lfFO}`m;mC#2C8Sws=7;lVfa3zzEdg8H=<^$-pP4W1JHq#u3Xub(x3!qVZ$e0lylm(ay)>uVU*ZhP`GQl&+Ca3a8Ob%_?UE zk0!5Dws!GaC!$UeqND9rsupr%{FwX6#&;3wbbQJzBjBv_%A=pcPbyp2>{w)UPK=4Q zr0ls;H@ibyrQGMKGn~W`GlqLi*5OkpJfC?2bz{;DEfLR)#jvO>VZi4Sr(BGg@ zI)ub}`wKCp3@_ry7)pX}7iY>*n3Y`K5zIcRG4ih&}jLaGr&ulfZz02{;?U>)-;GXn+JUC-9WmugZFmZKuovDjfLV2G&W3mD9G1*!yQH&JH>y|6@f+Fqz6=jgGu{!d_7n{(-Dm@0{j;vueGnTn(4`W4x=h3HH}CG#|Q=RS*@(0!KCqUp-l@^gJ*(ySXf>@i;N)LiUvVp zrIRh)uE9m<5FaX_+hxGu^(x{S7Wi1RGCDwJa*8-G0}LLGV{iA0FX72!CY=rH2&8_| z!R8fWglskt3AoA!yEwhvjx#=0#3Q|w!l1MxQ`snc5;o!erH)0p8pOan6;XjPo|_3{ z1R*%-FI@Vh6zQ*3kBgs#tBK7ex}bO1JyUYv6mO<8d^!u>dK+J?3pJ?+GA;pI9>>(> z>`*T%0$5R)P&gQ@ws^?zYK!bwFXJSI6D88%6p}((H&i2YRt}K|Cbs^BL=Js@s=yR1 z7vbLlDglJH1j=3c=(wlwKtk$b&{}+Osu*v$wKtz)2@rF7wB=8JZ|+8g)DU-yjqlWo$@}`Rc3cBZAP6KN##OH4UR^>R8c21%}1^lPE$N?8Sb8M@0NuVisD# zfX`^-x+_ad*88GjvA`#5l@#X!p~#XK6(ElFQhyO3(a~JclSvIvB&>FZjv?R#%DZ;0 z%F!&oDD#s+d@-=R z3b#*u-9m1<&-}3Pm_GKp$Q7klXDss3y5+;8}l=K1XwDT)aMkY1bPyspN01@Z}{J zHmaC4@c;`-4S7iqmR$-=mRpB>43jI*sa5nLdb(0@NtDtB@?X2be8+; zQH0{S<|(M&IwprA7oc#VKJbK2=@X|+$KmK06PBHa^1(4bFr49Go{=WEsl!o&jH&B` z3%&Wq&xi8WR~iYagen6HB30b`Wm85L&3z8OW(45}@8e`f#!lgulbUpS5(8XAV*pdd zB}^sOo1bx6I0uJ_=r=!v(*?JRWwDonOZ8v4crg`57jcjrSU)o-*g*Q*TObY zIi88^{ANRQQVCG+1>>Fh@C>cPQ7*6mRu>lfX#sB$G@!puI39rEIR|GPB+~bd1*|N; zNI5Y(#{f-|!?+S(Ar=oL*LVrt)Vm$ zlSBJy4*fjrUo8&s9^UHGnW6kC4hM^07ttZwW&5d&_fP^a0*|9ABsq zGnD=O3Ciyojv@mXA9sZc`ZbKYiWWn|yUKl@vmOHrxXK`d+`(oHkU}>8po&sFu}VcB z%&jd)8@$$bvPMfg#acr&U&=lx!iTfIt+nchuLd?sBZuqYiA}8Z)LKpvYdotA&wlYD zqpFOh-eQ$ZL`D%-HRYNwxDcddfO&D6i5wP-k!c)RBswx!q+@L;{_BOm<`DQPJ9xA|`A$gg&Q)tRahzhsgHLSZnS zY$HTNDZ7N%5NYM94v** z0mSQ#tS9mW<*Zlc?Ue@W7u|3!MmRI)_wu8dn8)s^tYw{Ry7z_x#4M+a7dTE83HiQA zAOxVa!}Bc$yrMcu#&s^PxY;t^-WLkW&WS#BDC^Q-U*Y~s%DR*)#jK68vmDx9+F*TJ zjk4m95ugg{LT~Ez`{HuCn|P1z3k$&z+RV<@g6VzKQn*IF#m4S6D|@N!%@h3digr7a z#X)J&864u^eR=G>$fGFnMDJ5}Z$fHU2_Gz5it>)~H>Jt~!k%Q=uN# z8Vpj>Ar#MkGyva)7qRs)vWi~#(zX6#hF60I&*J0(D*`Y`APwbV6>^XW)?zJ74HO@P zN=A#}?@K)yJ$Ai{aISViayl< z)|~Q>n`~eXRXx-kD%F&QNGvpqDHgcUo-T+CrghNASvqQ1Hg#A)at@_LG=P(Y(Z!N? zNnK`{+O-8Je(*QtXa`eHtKUd;5>bvHQY*5pOe>T?9H}? zJhuOS4)z*Zy%Jc~o+HF!m8Vt1S(T!j;_I_dY1KLiX@kQJSA|ycn`NXd{Pcw7bzpvI z-<79GS#S}H($bDB7EkBM<3V@p_cZm2yOG3HCFc+SUZcRhRYM7}Zc-4j&w}0|ZHWUD z9O-ds&=TKSNb!d|^zp{@jjQiBLtO`@_PUBDf@(To5Je3`0S#W>L5Uyi5*jS4j~+a1TwdmnQ48`( z)h+XU#MK(JNA)Bs3t1F_KPaJ(0oGewEE>X!=d_vMXuF$>aCNVnHW zRxcL_bD_}8Wsg~&sc$)PWgj~Xcps-v^j>u!AmwPz7yc4!p2Lb?3{ph2KdtYhr3lDFPYz~?hZ%zfEo(tS#Z5mp6ov2YCm-WOF=Gk}m9s^@sA- z?hNkYbBuisqy@Zl^TvfzWgm+5op=Ar#kxZ!{%b7PTerT9T*WOK8wC6Idm-0%X_8;U zT31))TYtXyckveue%$-Z)g zQ+R^j+3uI~5PyfDCgAE-kzB(%b9IaNSN=R&zjBod@aLC z%+>oEwYa#f-dC;H(LEOnIv) zEtP;0`eMU)N2c`0QX7r9iiR(;rZxQWhrQRfjp!@A`~rQyPU=#u=k{&T%Dz9>`&#c; zdq2Ooxi=W~e&O@~#WwtRwh6rd_1-T%9Bko5!_ju{tI-Q0J*V~jzD=O@aL-ekF!pQ{ z2L4*_7w}EV;m)Y{H#~9OR_qkW)NQ3-^zL1i2K)x^zNV(DyK=aVPDcBk$mg?=bADYd=F zI1_RG1z!9Tetwk~P3(2eC)e_c_(bJ(U$^|%>_eP5kw?FoPuy2r;B&Y9xYOs2Y%!c) z@3d&Ro|idgSH$>#X5Yl-pJW4{id?apgFS)R!#gpU9se7C^!)Gef-O=s_HoN8AF)L& zW*?Jh*1ng04Eau{#&4hPAr))(FhXKN^9hZy1>IdGiDuUh?q=kLm~{}5hBkqAX8C((5$d4)n`e7S z1)D%SOqGP1Jvw-h(=9%9hIDB8t+PY^!P$lmVjWsKvh3htdFUdY3}x{Sr=ylxedU1J zVkP=V*~hY?ztbq`F?piS9OahpC2IEg`q?3Go^9y#XlVywv=pjE zgE)}t%B~%vE*{&`D30ZN)S}K}rrENGwIv(O=4|ND-|1m_=8#U0&a|C|mMl zp`|lR2anDy)(5E1)fQvG@pgltQ_EUi2|!)>81r3~ifbPBg{%S!WE78dL2>S93#>8v zfU#%#08X?(O{0%nbU`?7F&wwJ&wofb#7P()XNyN^3O@hc&Rp3b`ZyMJ(gjR zB)7=(wOal@JF~_5<<4s1BkQ6bu_fn}EwX`h2xHOA7HgwjvjM-&&aFOwnk`=j@FWMx zX8FtLh)zmM9)MFNU_bdb+wuw5qAs`O9NEQ#-pWCy#Vj!g+~Pjwy893{O>W2@Wn$bS zB-v~@?$gE4qeyUzEKhYkCpUuM>a-}(YLVUn?74*vDYC+t&I?-D*@|Z@Jf{K5)e;N0 zw6vb&i8=gbFj`yK;w7_%I!(n;Jjg-w1!lmGCPt%L1RIX}xHJ3c5z#UKy@Gc~S%JHc z{sbUItrs;zc1t(rxtXK70I%gEGuI~3?X0~-i_NCgXqZ4QS3>o5m}%$IW-pQQ6m2*} zqhrom4b5gM;P0{5`6yf3T|&Lbk&X}xDKjPMmiI4)%zm2G%&@dQybJK%9Cb+_@rmSI z(#Pu4Rej^5ix!-I&Tdh3ZPTK#mu$hYivb+>%Rjq|FAgBpYaX zcC}U=&n%I%@9VUPef(vQaWO}_yQObnU~Se49Wg8Cwk~J_^57e2d%eKOV|77siV~B= zd2E!4?zhk=RKz9zGQTBTwpf7XuV!co(35*7C`I6KdpupR#oW{EY%$My$p*vwKf(w@ z6HQ;15pq04%AP|=vBeHr>dF?Ih&)G23RZig!vR{7)k3JY!WKu!IRmy_tVV9JJ2rw+ zF5Q8#glRRmoV|r~i_p?94B^~%hu$i=#fGFw_{%Nd#EoQaY^rQA2dpk0wU&Lz}X2%np!x=14=p0=z_o8GQf@QJgUl;v@_2sS#hNM zTGEE6N39vYm+<7SNuC^!Mx3=6sSrWD`Q=@Qa3KIOjYw;XR*OhEzr~8^RVC>cQpEcP ze%idcn=PK)Jo2dZ?4!vE$1}KPn0-8|D;LKQVljuh#j|@IH5{2T86mE4c6U|_A9=}d z3C8M1SbvBgk#08qX|{ByvU*4W{AIrDf-Q!_X#}~ApoSI`_GlC1(UTla%H)A;-NvFr zm0%O?Z{=w7q&wO%rAK*9@e-{^{AErq60)(-6zrqUMAxI-M?|pMJUvJ_LX6Liq2bsM z8IE^99`$y@5ibeH_-Hs=9Dury`EB26pR7LoB~*!vg&~%6p+ew6NwaW{s3IW^Q zn{?Y>ca$ghQsq7pC}DK<%5zzw?&C?-!aMPaP%mg9&ek-~Zbxd`g(?BM#o{tP*3V?2 znPI>tRPhccHxb6Y8wy!h)Q6+IO*dqlom+09pTK)m7fuJ|E-$>>Q(sPQ7MSm5t|wHe(av7LU4_klkWS@?2dG zO8O+iq|XwL6~m*vWUOT$ahDi6POxT}3UZuXjF+Y&PJe+oNk9m|oKOq(+sc{xYm(l< z)3z!ZIV+bgT8!|DLgYn(XK;(*jh33dKU z)Bq(eusTMT|C~yPFUs-*(3j8P3psL8girw9L%78X?-ka3bsrm!WvEAlZ2B!9kFvsB z)%-{;ywe5wtw-cmyM+_BJF}0YCSo8ScYW-?mYqtRbO+n3C%2yqLBV8t!k zh8H#plvF&xPg@E?fjH@cR2bgxWoNhOA_*WotD6EGBa{Qj0sC(~AJX$Og z;J>V2G{c3|xqk7FlWO(ltftzuS&&v;uWsGd#G?i+$Ry6Jv3_5?ewt}s#XY$s!e8#= z1dv-y1ZSn_>^t8`v<%M+m{_2WXQiROq_zK-RaokYbcKAt+ta}Ed z3o^tE{&n26Llz0D)#n@8$BfVg`&foTur#x3Itf98_ zMH9Nkea_XF|CBV^1k5U1uOsf{gDuoExvx26c-L|U3+$t8xfq_fNX#v6&+sfqOZQD3 z`D#vE>$)bdm7k-e#wiUtfqnueTFe%(m)yuXl@ENRSu_I%Fm-TQrK)s?qwt>wia{8{ z2mg_+#6{3Zyme0)wy1QA)!bA%A{TLl^FDqAnb>iv|B(%5sK_Kx4dUIK*+;T#O`c#p zD6zTnZ*q_xaqcQxa*!J=-h0`_qI0bFeLfF?4jj?J>(nC#iTQ) z1646aPD4hwB~H}7gCFrzQe?|Fv&HCtH(RU(H?oE35^z5o+-0ZJ;^@VAYEIgV9pD?S zQN+MgSrVL2D7)o)wg_bsY@IYd^o#9Lb|^L)TdZ0L%&WHN`hLPm(j^8C_&T3(a`k14 z!EEqRtL0j@Bp9JiUP$%W*Qk5t=#u9ab#9Haq1sa1M~{eU3kwRLi-iO#8k#n0Z0>-* zGkX~hvgE{i!mEftBW`>&JIU8Yi)l9# z;3cCp1xFDB3H;3*Wt;_>&mZL@wX`O+8GP&FKGJoLx|Mx+qe;y=&t+vb@2787djS|fxPo898M)I$2cnNxiE z;VtA1@EflSkh8b(Awbi93C?fk6dKN7QjOMd!8u=mb{L+^%(Ns0nZxZBC^t5kPz~a* z-|8Cp1$i@%ZA*reX+q12cg9YmT79flolT$tSAZZ825i$Xk>-&u_^ZnZW3kZz=mc#Q?n!a#bDgh?!)0;m&}XbOe~C--Kh28-*x(IWsCcC_+?@Y*uuJakiWi|>a{_@_> +stream +BT +/TT2 1 Tf +9 0 0 9 501.7499 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-1)Tj +/TT4 1 Tf +10 0 0 10 302.2 568.2 Tm +(15. BREAKING, TRACING, AND ADVISING)Tj +ET +0 G +0 J 0 j 3 w 10 M []0 d +1 i +54.01 564.49 m +510.01 564.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 541.54 Tm +(Medley provides several different facilities for modifing the behavior of a function without actually)Tj +0 -1.2222 TD +(editing its definition. By breaking a function, you can cause breaks to occur at various times in the)Tj +T* +(running of an incomplete program, so that the program state can be inspected. Tracing a function)Tj +T* +(causes information to be printed every time the function is entered or exited.)Tj +0 -2 TD +0.0478 Tw +[(Advising is a facility for specifying longer-term function modifications. Even system functions can)]TJ +0 -1.2222 TD +0 Tw +(be changed through advising.)Tj +/TT4 1 Tf +10 0 0 10 54 452.2 Tm +(Breaking Functions and Debugging)Tj +ET +1 w +54.01 449.49 m +510.01 449.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 435.54 Tm +0.2589 Tw +(Debugging a collection of Lisp functions involves isolating problems within particular functions)Tj +T* +0.1933 Tw +[(and/or determining when and where incorrect data are being generated and transmitted. In the)]TJ +T* +0.4156 Tw +(Medley, there are three facilities which allow you to \(temporarily\) modify selected function)Tj +T* +0.1233 Tw +(definitions so that you can follow the flow of control in your programs, and obtain this debugging)Tj +T* +0 Tw +(information. All three redefine functions in terms of a system function, )Tj +/TT8 1 Tf +31.7334 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +( \(see Chapter 14\).)Tj +/TT8 1 Tf +-35.334 -2.0667 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( modifies the definition of a function )]TJ +/TT10 1 Tf +17.0037 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0844 Tw +(, so that whenever )Tj +/TT10 1 Tf +8.6869 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0844 Tw +[( is called and a break condition)]TJ +-31.0915 -1.2889 TD +0.0433 Tw +[(\(user-defined\) is satisfied, a function break occurs. You can then interrogate the state of the machine,)]TJ +0 -1.2222 TD +0 Tw +(perform any computation, and continue or return from the call.)Tj +/TT8 1 Tf +0 -2 TD +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1078 Tw +[( modifies a definition of a function )]TJ +/TT10 1 Tf +16.2798 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1078 Tw +[( so that whenever )]TJ +/TT10 1 Tf +8.5302 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1078 Tw +[( is called, its arguments \(or some)]TJ +-30.2109 -1.2889 TD +0.0456 Tw +[(other user-specified values\) are printed. When the value of )]TJ +/TT10 1 Tf +26.9214 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0456 Tw +[( is computed it is printed also. )]TJ +/TT8 1 Tf +14.1999 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +-42.3215 -1.2889 TD +(is a special case of )Tj +/TT8 1 Tf +8.2202 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +-11.2207 -2.0667 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.1956 Tw +[( allows you to insert a breakpoint inside an expression defining a function. When the)]TJ +-4.2007 -1.2889 TD +0.0956 Tw +(breakpoint is reached and if a break condition \(defined by you\) is satisfied, a temporary halt occurs)Tj +0 -1.2222 TD +0 Tw +(and you can again investigate the state of the computation.)Tj +0 -2 TD +0.0222 Tw +[(The following two examples illustrate these facilities. In the first example, the function )]TJ +/TT8 1 Tf +38.9386 0 TD +0 Tw +(FACTORIA)Tj +/TT6 1 Tf +4.8008 0 TD +0.0222 Tw +(L is)Tj +-43.7393 -1.2889 TD +0.0644 Tw +(traced. )Tj +/TT8 1 Tf +3.6338 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0644 Tw +[( redefines )]TJ +/TT8 1 Tf +4.7016 0 TD +0 Tw +(FACTORIAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.0644 Tw +[( so that it print its arguments and value, and then goes on with)]TJ +-16.7368 -1.2889 TD +0.1322 Tw +[(the computation. When an error occurs on the fifth recursion, a full interactive break occurs. The)]TJ +0 -1.2222 TD +0.0856 Tw +(situation is then the same as though )Tj +/TT8 1 Tf +16.7141 0 TD +0.2056 Tw +(\(BREAK FACTORIAL\))Tj +/TT6 1 Tf +10.4072 0 TD +0.0856 Tw +[( had been performed instead of )]TJ +/TT8 1 Tf +14.6129 0 TD +0 Tw +(\(TRACE)Tj +-41.7343 -1.2889 TD +(FACTORIAL\))Tj +/TT6 1 Tf +6.001 0 TD +0.0233 Tw +(, now you can evaluate various Interlisp forms and direct the course of the computation.)Tj +-6.001 -1.2889 TD +0.0144 Tw +(In this case, the variable )Tj +/TT8 1 Tf +10.9223 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( is examined, and )]TJ +/TT8 1 Tf +8.0563 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0144 Tw +[( is instructed to return 1 as the value of this cell to)]TJ +/TT8 1 Tf +-23.1793 -1.2889 TD +0 Tw +(FACTORIAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.1211 Tw +[(. The rest of the tracing proceeds without incident. Presumably, )]TJ +/TT8 1 Tf +29.8713 0 TD +0 Tw +(FACTORIAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.1211 Tw +[( would be)]TJ +-40.673 -1.2889 TD +0 Tw +(edited to change )Tj +/TT8 1 Tf +7.812 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(1)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT11 1 Tf +-5.0509 -1.7333 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(PP FACTORIAL)Tj +-0.9868 -1 TD +(\(FACTORIAL)Tj +4 -1 TD +([LAMBDA \(N\))Tj +T* +(\(COND)Tj +-4 -1 TD +( \(\(ZEROP N\))Tj +T* +( L\))Tj +T* +( \(T \(ITIMES N \(FACTORIAL \(SUB1 N]\))Tj +T* +(FACTORIAL)Tj +/TT11 1 Tf +0 -1.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(TRACE FACTORIAL\))Tj +-0.9868 -1 TD +(\(FACTORIAL\))Tj +/TT11 1 Tf +0 -1.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(FACTORIAL 4\))Tj +-0.9868 -1 TD +(FACTORIAL:)Tj +T* +(N = 4)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 3279 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-2)Tj +/TT13 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 570.14 Tm +( FACTORIAL:)Tj +0 -1 TD +( N = 3)Tj +T* +( FACTORIAL:)Tj +T* +( N = 2)Tj +T* +( FACTORIAL:)Tj +T* +( N = 1)Tj +T* +( FACTORIAL:)Tj +T* +( N = 0)Tj +T* +(UNBOUND ATOM)Tj +T* +(L)Tj +T* +(\(FACTORIAL BROKEN\))Tj +T* +(:N)Tj +T* +(0)Tj +T* +(:RETURN 1)Tj +T* +( FACTORIAL = 1)Tj +T* +( FACTORIAL = 1)Tj +T* +( FACTORIAL = 2)Tj +T* +( FACTORIAL = 6)Tj +T* +(FACTORIAL = 24)Tj +T* +(24)Tj +/TT11 1 Tf +0 -1.0667 TD +<0040>Tj +/TT6 1 Tf +-5.3333 -1.7778 TD +0.09 Tw +(In the second example, a non-recursive definition of )Tj +/TT8 1 Tf +23.9392 0 TD +0 Tw +(FACTORIAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.09 Tw +[( has been constructed. )]TJ +/TT8 1 Tf +10.7288 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.09 Tw +[( is)]TJ +-44.2696 -1.2889 TD +0.0556 Tw +(used to insert a call to )Tj +/TT8 1 Tf +10.2171 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0556 Tw +[( just after the )]TJ +/TT8 1 Tf +6.2295 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0556 Tw +[( label )]TJ +/TT8 1 Tf +2.7254 0 TD +0 Tw +(LOOP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0556 Tw +[(. This break is to occur only on the last)]TJ +-27.5734 -1.2889 TD +0.0289 Tw +(two iterations, when )Tj +/TT8 1 Tf +9.4299 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +[( is less than 2. When the break occurs, in trying to look at the value of )]TJ +/TT8 1 Tf +31.6328 0 TD +0 Tw +(N,)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.2789 0 TD +(NN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0289 Tw +[( is)]TJ +-44.3421 -1.2889 TD +0.0156 Tw +[(mistakenly typed. The break is maintained, however, and no damage is done. After examining )]TJ +/TT8 1 Tf +42.7806 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0156 Tw +[( and)]TJ +/TT8 1 Tf +-43.3807 -1.2889 TD +0 Tw +(M)Tj +/TT6 1 Tf +0.6001 0 TD +0.2333 Tw +[( the computation is allowed to continue by typing )]TJ +/TT8 1 Tf +24.8822 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.2333 Tw +[(. A second break occurs after the next)]TJ +-26.6825 -1.2889 TD +0.1311 Tw +(iteration, this time with )Tj +/TT8 1 Tf +11.146 0 TD +0.3144 Tw +(N = 0)Tj +/TT6 1 Tf +3.6294 0 TD +0.1311 Tw +[(. When this break is released, the function )]TJ +/TT8 1 Tf +20.1463 0 TD +0 Tw +(FACTORIAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.1311 Tw +[( returns its)]TJ +-40.3226 -1.2889 TD +0 Tw +(value of )Tj +/TT8 1 Tf +3.8169 0 TD +(120)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT11 1 Tf +1.0495 -2.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(PP FACTORIAL)Tj +-0.9868 -1 TD +(\(FACTORIAL)Tj +T* +( [LAMBDA \(N\))Tj +T* +( \(PROG \(\(M 1\)\))Tj +T* +( LOOP \(COND)Tj +T* +( \(\(ZEROP N\))Tj +T* +( \(RETURN M\)\)\))Tj +T* +( \(SETQ M \(ITIMES M N\)\))Tj +T* +( \(SETQ N \(SUB1 N\)\))Tj +T* +( \(GO LOOP]\))Tj +T* +(FACTORIAL)Tj +/TT11 1 Tf +0 -1.8444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(BREAKIN FACTORIAL \(AFTER LOOP\) \(ILESSP N 2])Tj +-0.9868 -1 TD +(SEARCHING...)Tj +T* +(FACTORIAL)Tj +/TT11 1 Tf +0 -1.8444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(\(FACTORIAL 5\))Tj +-0.9868 -1 TD +(\(\(FACTORIAL\) BROKEN\))Tj +T* +(:NN)Tj +T* +(U.B.A.)Tj +T* +(NN)Tj +T* +(\(FACTORIAL BROKEN AFTER LOOP\))Tj +T* +(:N)Tj +T* +(1)Tj +T* +(:M)Tj +T* +(120)Tj +T* +(:OK)Tj +T* +(\(FACTORIAL\))Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT11 9 0 R +/TT13 15 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +17 0 obj +<< +/Length 9019 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-3)Tj +/TT13 1 Tf +10 0 0 10 324.52 612 Tm +(BREAKING, TRACING, AND ADVISING)Tj +/TT8 1 Tf +9 0 0 9 138 561.14 Tm +(\(\(FACTORIAL\) BROKEN\))Tj +0 -1 TD +(:N)Tj +T* +(0)Tj +T* +(:OK)Tj +T* +(\(FACTORIAL\))Tj +T* +(120)Tj +/TT11 1 Tf +0 -1.0667 TD +<0040>Tj +/TT15 1 Tf +-6.6667 -1.7778 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0344 Tw +(: )Tj +/TT8 1 Tf +0.8189 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.0344 Tw +[( and )]TJ +/TT8 1 Tf +2.2618 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0344 Tw +[( can also be used on CLISP words which appear as )]TJ +/TT8 1 Tf +23.0205 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0344 Tw +[( of form, e.g. )]TJ +/TT8 1 Tf +5.9586 0 TD +0 Tw +(FETCH)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +/TT8 1 Tf +-45.0836 -1.2889 TD +(REPLACE)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.6533 0 TD +(IF)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.6533 0 TD +(FOR)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6533 0 TD +(DO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1533 Tw +[(, etc., even though these are not implemented as functions. For conditional)]TJ +-10.3614 -1.2889 TD +0.1667 Tw +(breaking, you can refer to the entire expression via the variable )Tj +/TT8 1 Tf +29.9237 0 TD +0 Tw +(EXP)Tj +/TT6 1 Tf +1.8003 0 TD +0.1667 Tw +(, e.g. )Tj +/TT8 1 Tf +2.6185 0 TD +0.3989 Tw +(\(BREAK \(FOR \(MEMB)Tj +-34.3425 -1.2889 TD +0 Tw +(UNTIL EXP\)\)\))Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT8 1 Tf +-5.1346 -2.2155 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BREAK0)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(WHEN)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(COMS )Tj +/TT8 1 Tf +4.8008 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 236.1149 435.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 435.8 Tm +([Function])Tj +-35.4033 -1.8445 TD +0.1522 Tw +(Sets up a break on the function )Tj +/TT10 1 Tf +14.9791 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1522 Tw +(; returns )Tj +/TT10 1 Tf +4.2585 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1522 Tw +[(. If )]TJ +/TT10 1 Tf +2.1266 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1522 Tw +[( is not defined, returns )]TJ +/TT8 1 Tf +11.0199 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.4022 0 TD +(NOT)Tj +-38.1873 -1.2889 TD +(DEFINED\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-4.8008 -2.0667 TD +0.0578 Tw +(The value of )Tj +/TT10 1 Tf +5.9141 0 TD +0 Tw +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0578 Tw +(, if non-)Tj +/TT8 1 Tf +3.5325 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0578 Tw +(, should be an expression that is evaluated whenever )Tj +/TT10 1 Tf +24.126 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0578 Tw +[( is)]TJ +-38.9734 -1.2889 TD +0.22 Tw +[(entered. If the value of the expression is non-)]TJ +/TT8 1 Tf +22.0869 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.22 Tw +(, a break is entered, otherwise the)Tj +-23.8872 -1.2889 TD +0.0811 Tw +[(function simply called and returns without causing a break. This provides the means of)]TJ +0 -1.2222 TD +0 Tw +(conditionally breaking a function.)Tj +0 -2 TD +0.0944 Tw +(The value of )Tj +/TT10 1 Tf +6.0241 0 TD +0 Tw +(COMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0944 Tw +(, if non-)Tj +/TT8 1 Tf +3.6059 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0944 Tw +(, should be a list of break commands, that are interpreted)Tj +-13.8306 -1.2889 TD +0 Tw +(and executed if a break occurs. \(See the )Tj +/TT10 1 Tf +17.7959 0 TD +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +( argument to )Tj +/TT8 1 Tf +5.9463 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +(, Chapter 14.\))Tj +/TT8 1 Tf +-31.5435 -2.0667 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +( sets up a break by doing the following: )Tj +-0.9339 -2.0667 TD +(Redefines )Tj +/TT10 1 Tf +4.9868 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.3911 Tw +[( as a call to )]TJ +/TT8 1 Tf +7.0273 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.3911 Tw +[( \(Chapter 14\), passing an equivalent)]TJ +-16.8149 -1.2889 TD +0.1044 Tw +(definition of )Tj +/TT10 1 Tf +5.9198 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6044 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6044 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1044 Tw +(, and )Tj +/TT10 1 Tf +2.6518 0 TD +0 Tw +(COMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.1044 Tw +[( as the )]TJ +/TT8 1 Tf +3.3744 0 TD +0 Tw +(BRKEXP)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6044 0 TD +(BRKWHEN)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6044 0 TD +(BRKFN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1044 Tw +(, and)Tj +/TT10 1 Tf +-32.3667 -1.2889 TD +0 Tw +(BRKCOMS)Tj +/TT6 1 Tf +4.2007 0 TD +( arguments to )Tj +/TT8 1 Tf +6.3701 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +-14.1714 -2.0667 TD +0.0011 Tw +(Defines a )Tj +/TT8 1 Tf +4.364 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0011 Tw +( \(Chapter 2\) with the original definition of )Tj +/TT10 1 Tf +18.8507 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0011 Tw +(, and puts it on)Tj +-28.0155 -1.2889 TD +0 Tw +(the property list of )Tj +/TT10 1 Tf +8.4976 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( under the property )Tj +/TT8 1 Tf +8.9565 0 TD +(BROKEN)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +-22.2549 -2.0667 TD +0.1867 Tw +(Puts the form )Tj +/TT8 1 Tf +6.811 0 TD +0 Tw +(\(BREAK0)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.4367 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.4367 0 TD +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1867 Tw +[( on the property list of )]TJ +/TT10 1 Tf +11.2455 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1867 Tw +[( under the)]TJ +-29.7316 -1.2889 TD +0 Tw +(property )Tj +/TT8 1 Tf +4.1494 0 TD +(BRKINFO)Tj +/TT6 1 Tf +4.2007 0 TD +( \(for use in conjunction with )Tj +/TT8 1 Tf +12.6987 0 TD +(REBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +(\) )Tj +-25.2495 -2.0667 TD +(Adds )Tj +/TT10 1 Tf +2.6733 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( to the front of the list )Tj +/TT8 1 Tf +9.7896 0 TD +(BROKENFNS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-21.7306 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9799 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.06 Tw +[( is non-atomic and of the form )]TJ +/TT8 1 Tf +14.0333 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +6 0 0 6 288.14 165.2 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 291.74 167.2 Tm +( )Tj +/TT8 1 Tf +0.31 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.31 0 TD +(FN)Tj +6 0 0 6 318.92 165.2 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 322.52 167.2 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.56 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.06 Tw +[( breaks every call to )]TJ +/TT10 1 Tf +9.3293 0 TD +0 Tw +(FN)Tj +6 0 0 6 460.12 165.2 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 463.72 167.2 Tm +0.06 Tw +[( from)]TJ +-37.5244 -1.3944 TD +0 Tw +(within )Tj +/TT10 1 Tf +3.2085 0 TD +(FN)Tj +6 0 0 6 165.68 152.65 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 169.28 154.65 Tm +0.0522 Tw +[(. This is useful for breaking on a function that is called from many places, but)]TJ +-4.8089 -1.3944 TD +0.0311 Tw +(where one is only interested in the call from a specific function, e.g., )Tj +/TT8 1 Tf +30.6042 0 TD +0.0733 Tw +(\(RPLACA IN FOO\))Tj +/TT6 1 Tf +9.1481 0 TD +0 Tw +(,)Tj +/TT8 1 Tf +-39.7523 -1.2889 TD +0.0967 Tw +(\(PRINT IN FIE\),)Tj +/TT6 1 Tf +9.1948 0 TD +0.04 Tw +[( etc. It is similar to )]TJ +/TT8 1 Tf +8.8537 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.04 Tw +[( described below, but can be performed)]TJ +-22.2492 -1.2889 TD +0.43 Tw +(even when )Tj +/TT10 1 Tf +5.942 0 TD +0 Tw +(FN)Tj +6 0 0 6 190.28 116.9 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 193.88 118.9 Tm +0.43 Tw +[( is compiled or blockcompiled, whereas )]TJ +/TT8 1 Tf +20.3598 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.43 Tw +[( only works on)]TJ +-32.1027 -1.3944 TD +0.1622 Tw +[(interpreted functions. If )]TJ +/TT10 1 Tf +11.664 0 TD +0 Tw +(FN)Tj +6 0 0 6 241.79 104.35 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 245.39 106.35 Tm +0.1622 Tw +[( is not found in )]TJ +/TT10 1 Tf +7.7779 0 TD +0 Tw +(FN)Tj +6 0 0 6 326.2 104.35 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 329.8 106.35 Tm +(, )Tj +/TT8 1 Tf +0.6622 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.1622 Tw +[( returns the value )]TJ +/TT8 1 Tf +8.6782 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +6 0 0 6 462.47 104.35 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 466.07 106.35 Tm +( )Tj +/TT8 1 Tf +0.4122 0 TD +(NOT)Tj +-38.1978 -1.3944 TD +(FOUND IN)Tj +/TT6 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FN)Tj +6 0 0 6 182.25 91.8 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 185.85 93.8 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-7.2501 -2.1722 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( breaks one function )]TJ +/TT19 1 Tf +9.6523 0 TD +0 Tw +(inside)Tj +/TT6 1 Tf +2.3901 0 TD +0.1078 Tw +[( another by first calling a function which changes the)]TJ +-15.643 -1.2889 TD +0.1167 Tw +(name of )Tj +/TT10 1 Tf +4.0561 0 TD +0 Tw +(FN)Tj +6 0 0 6 173.31 60.65 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 176.91 62.65 Tm +0.1167 Tw +[( wherever it appears inside of )]TJ +/TT10 1 Tf +14.0818 0 TD +0 Tw +(FN)Tj +6 0 0 6 314.47 60.65 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 318.07 62.65 Tm +0.1167 Tw +[( to that of a new function, )]TJ +/TT10 1 Tf +12.4041 0 TD +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +-39.7462 -1.3944 TD +0.14 Tw +(which is initially given the same function definition as )Tj +/TT10 1 Tf +25.4861 0 TD +0 Tw +(FN)Tj +6 0 0 6 366.2 48.1 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 369.8 50.1 Tm +0.14 Tw +[(. Then )]TJ +/TT8 1 Tf +3.6759 0 TD +0 Tw +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.14 Tw +[( proceeds to)]TJ +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 15 0 R +/TT15 19 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +23 0 obj +<< +/Length 9872 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-4)Tj +/TT13 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0589 Tw +(break on )Tj +/TT10 1 Tf +4.2291 0 TD +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +1.8003 0 TD +0.0589 Tw +[( exactly as described above. In addition to breaking )]TJ +/TT10 1 Tf +23.7661 0 TD +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +-38.1969 -1.2889 TD +0.04 Tw +(and adding )Tj +/TT10 1 Tf +5.4237 0 TD +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +[( to the list )]TJ +/TT8 1 Tf +4.7513 0 TD +0 Tw +(BROKENFNS)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.54 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.04 Tw +[( adds )]TJ +/TT10 1 Tf +2.7255 0 TD +0 Tw +(FN1)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +[( to the property value)]TJ +-30.2433 -1.2889 TD +0.02 Tw +(for the property )Tj +/TT8 1 Tf +7.3705 0 TD +0 Tw +(NAMESCHANGED)Tj +/TT6 1 Tf +7.2012 0 TD +0.02 Tw +[( on the property list of )]TJ +/TT10 1 Tf +10.2455 0 TD +0 Tw +(FN)Tj +6 0 0 6 408.13 544.34 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 411.73 546.34 Tm +0.02 Tw +[( and puts )]TJ +/TT8 1 Tf +4.457 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +6 0 0 6 468.05 544.34 Tm +(2)Tj +/TT8 1 Tf +0.6 0 TD +( )Tj +9 0 0 9 475.53 546.34 Tm +(. )Tj +/TT10 1 Tf +1.2469 0 TD +(FN)Tj +6 0 0 6 497.5499 544.34 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 501.15 546.34 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( on the)]TJ +-36.9501 -1.3944 TD +0.1433 Tw +(property list of )Tj +/TT10 1 Tf +7.2903 0 TD +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +1.8003 0 TD +0.1433 Tw +[( under the property )]TJ +/TT8 1 Tf +9.5299 0 TD +0 Tw +(ALIAS)Tj +/TT6 1 Tf +3.0005 0 TD +0.1433 Tw +[(. This will enable )]TJ +/TT8 1 Tf +8.7176 0 TD +0 Tw +(UNBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.1433 Tw +[( to)]TJ +-38.74 -1.2889 TD +0 Tw +(recognize what changes have been made and restore the function )Tj +/TT10 1 Tf +29.104 0 TD +(FN)Tj +6 0 0 6 446.76 520.19 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 450.36 522.19 Tm +( to its original state.)Tj +-30.7067 -2.1722 TD +(If )Tj +/TT10 1 Tf +1.0399 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.12 Tw +[( is nonatomic and not of the above form, )]TJ +/TT8 1 Tf +19.2074 0 TD +0 Tw +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.12 Tw +[( is called for each member of )]TJ +/TT10 1 Tf +13.7502 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +-38.7983 -1.2889 TD +0.2033 Tw +(using the same values for )Tj +/TT10 1 Tf +12.5313 0 TD +0 Tw +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.7033 0 TD +(COMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.2033 Tw +(, and )Tj +/TT10 1 Tf +2.8495 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2033 Tw +[(. This distributivity permits you to)]TJ +-23.2854 -1.2889 TD +0 Tw +(specify complicated break conditions on several functions. For example,)Tj +/TT8 1 Tf +2.6667 -1.6 TD +(\(BREAK0 \(FOO1 \(\(PRINT PRIN1\) IN \(FOO2 FOO3\)\)\))Tj +0 -1 TD +( \(NEQ X T\))Tj +T* +( \(EVAL ?= \(Y Z\) OK\) \))Tj +/TT6 1 Tf +-2.6667 -1.8444 TD +0.1044 Tw +(will break on )Tj +/TT8 1 Tf +6.3817 0 TD +0 Tw +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6044 0 TD +(PRINT-IN-FOO2)Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT8 1 Tf +0.6044 0 TD +(PRINT-IN-FOO3)Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT8 1 Tf +0.6044 0 TD +(PRIN1-IN-FOO2)Tj +/TT6 1 Tf +7.8013 0 TD +0.1044 Tw +[( and )]TJ +/TT8 1 Tf +2.4018 0 TD +0 Tw +(PRIN1-)Tj +-36.401 -1.2222 TD +(IN-FOO3.)Tj +/TT6 1 Tf +0 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( is non-atomic, the value of )Tj +/TT8 1 Tf +12.2017 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +( is a list of the functions broken.)Tj +/TT8 1 Tf +-20.589 -2.2156 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BREAK)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 204.0035 380.9 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 380.9 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.1344 Tw +(For each atomic argument, it performs )Tj +/TT8 1 Tf +18.0454 0 TD +0 Tw +(\(BREAK0 )Tj +/TT10 1 Tf +5.1219 0 TD +(ATOM)Tj +/TT8 1 Tf +2.4004 0 TD +0.3211 Tw +[( T\))]TJ +/TT6 1 Tf +2.1214 0 TD +0.1344 Tw +[(. For each list, it performs)]TJ +/TT8 1 Tf +-27.6891 -1.2889 TD +0.2978 Tw +(\(APPLY BREAK0)Tj +/TT6 1 Tf +8.6991 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3744 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1244 Tw +[(. For example, )]TJ +/TT8 1 Tf +7.2439 0 TD +0.2978 Tw +(\(BREAK FOO1 \(FOO2 \(GREATERP N 5\))Tj +-19.3179 -1.2889 TD +0 Tw +(\(EVAL\)\)\))Tj +/TT6 1 Tf +4.8008 0 TD +0.01 Tw +[( is equivalent to)]TJ +/TT8 1 Tf +7.0432 0 TD +0.0244 Tw +[( \(BREAK0 FOO1 T\))]TJ +/TT6 1 Tf +10.275 0 TD +0.01 Tw +[( and )]TJ +/TT8 1 Tf +2.2129 0 TD +0.0244 Tw +(\(BREAK0 FOO2 \(GREATERP N)Tj +-24.3318 -1.2889 TD +0 Tw +(5\) \(EVAL\)\))Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT8 1 Tf +-9.2677 -2.2156 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TRACE)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT13 1 Tf +10 0 0 10 198.6026 309.56 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 309.56 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.1033 Tw +(For each atomic argument, it performs )Tj +/TT8 1 Tf +17.8588 0 TD +0 Tw +(\(BREAK0 )Tj +/TT10 1 Tf +5.0486 0 TD +(ATOM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2478 Tw +[( T \(TRACE ?= NIL GO\)\))]TJ +/TT6 1 Tf +14.441 0 TD +0 Tw +(.)Tj +-39.7488 -1.2889 TD +0.0844 Tw +(The flag )Tj +/TT8 1 Tf +4.0229 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( is checked for in )]TJ +/TT8 1 Tf +8.1288 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0844 Tw +[( and causes the message )]TJ +/TT10 1 Tf +11.3705 0 TD +0 Tw +(FUNCTION)Tj +/TT8 1 Tf +5.4009 0 TD +0.2022 Tc +( :)Tj +/TT6 1 Tf +1.4024 0 TD +0 Tc +0.0844 Tw +( to be)Tj +-36.9265 -1.2889 TD +0 Tw +(printed instead of )Tj +/TT8 1 Tf +8.127 0 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FUNCTION)Tj +/TT6 1 Tf +4.8008 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(BROKEN\))Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-17.9785 -2.0667 TD +0.0556 Tw +(For each list argument, )Tj +/TT8 1 Tf +10.6304 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +[( is the function to be traced, and )]TJ +/TT8 1 Tf +14.8556 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +[( the forms to be viewed,)]TJ +-29.0866 -1.2889 TD +0 Tw +(i.e., )Tj +/TT8 1 Tf +1.77 0 TD +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +( performs:)Tj +/TT8 1 Tf +-2.1038 -1.6667 TD +(\(BREAK0 \(CAR )Tj +/TT10 1 Tf +7.8013 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(\) T \(LIST TRACE ?= \(CDR )Tj +/TT10 1 Tf +15.6025 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(\) GO\)\))Tj +/TT6 1 Tf +-30.8713 -1.8444 TD +0.0656 Tw +(For example, )Tj +/TT8 1 Tf +6.1272 0 TD +0.1578 Tw +(\(TRACE FOO1 \(FOO2 Y\)\))Tj +/TT6 1 Tf +13.0754 0 TD +0.0656 Tw +[( causes both )]TJ +/TT8 1 Tf +5.8275 0 TD +0 Tw +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +0.0656 Tw +[( and )]TJ +/TT8 1 Tf +2.324 0 TD +0 Tw +(FOO2)Tj +/TT6 1 Tf +2.4004 0 TD +0.0656 Tw +[( to be traced. All)]TJ +-32.1549 -1.2889 TD +0.0144 Tw +(the arguments of)Tj +/TT8 1 Tf +7.543 0 TD +0.0356 Tw +[( FOO1)]TJ +/TT6 1 Tf +3.036 0 TD +0.0144 Tw +[( are printed; only the value of )]TJ +/TT8 1 Tf +13.4395 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0144 Tw +[( is printed for )]TJ +/TT8 1 Tf +6.3317 0 TD +0 Tw +(FOO2)Tj +/TT6 1 Tf +2.4004 0 TD +0.0144 Tw +[(. In the special)]TJ +-33.3508 -1.2889 TD +0.0178 Tw +(case when you want to see )Tj +/TT19 1 Tf +12.1316 0 TD +0 Tw +(only)Tj +/TT6 1 Tf +1.7778 0 TD +0.0178 Tw +[( the value, you can perform )]TJ +/TT8 1 Tf +12.5447 0 TD +0.0433 Tw +(\(TRACE \()Tj +/TT10 1 Tf +4.8441 0 TD +0 Tw +(FUNCTION)Tj +/TT8 1 Tf +4.8008 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0178 Tw +[(. This)]TJ +-37.2991 -1.2889 TD +0 Tw +(sets up a break with commands )Tj +/TT8 1 Tf +14.2456 0 TD +(\(TRACE ?= \(NIL\) GO\))Tj +/TT6 1 Tf +11.4019 0 TD +(.)Tj +/TT15 1 Tf +-25.6475 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1911 Tw +[(: You can always call )]TJ +/TT8 1 Tf +10.8693 0 TD +0 Tw +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.1911 Tw +[( to obtain combination of options of )]TJ +/TT8 1 Tf +17.817 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.1911 Tw +[( not)]TJ +-38.1096 -1.2889 TD +0.4478 Tw +(directly available with )Tj +/TT8 1 Tf +11.4898 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.4478 Tw +[( and )]TJ +/TT8 1 Tf +3.0884 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.4478 Tw +[(. These two functions merely provide)]TJ +-20.5792 -1.2889 TD +0 Tw +(convenient ways of calling )Tj +/TT8 1 Tf +12.0239 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +(, and will serve for most uses.)Tj +/TT15 1 Tf +-15.6245 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0367 Tw +(: )Tj +/TT8 1 Tf +0.8233 0 TD +0 Tw +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5367 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +(, and )Tj +/TT8 1 Tf +2.5162 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +[( print a warning if you try to modify a function on the)]TJ +-15.6999 -1.2889 TD +0 Tw +(list )Tj +/TT8 1 Tf +1.582 0 TD +(UNSAFE.TO.MODIFY.FNS)Tj +/TT6 1 Tf +12.002 0 TD +( \(Chapter 10\).)Tj +/TT8 1 Tf +-16.2507 -2.0667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BREAKIN)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(WHERE)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(WHEN)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +18.1784 0 TD +([NLambda Function])Tj +/TT8 1 Tf +-30.6633 -1.8444 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0856 Tw +[( enables you to insert a break, i.e., a call to )]TJ +/TT8 1 Tf +19.736 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0855 Tw +[( \(Chapter 14\), at a specified)]TJ +-27.5373 -1.2889 TD +0.0978 Tw +(location in the interpreted function )Tj +/TT10 1 Tf +16.1964 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0978 Tw +(. )Tj +/TT8 1 Tf +0.9456 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0978 Tw +[( can be used to insert breaks before or)]TJ +-22.5428 -1.2889 TD +0 Tw +(after )Tj +/TT8 1 Tf +2.3465 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0633 Tw +[( labels, particular )]TJ +/TT8 1 Tf +8.0743 0 TD +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0633 Tw +[( expressions, or even the evaluation of a variable. This)]TJ +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT15 19 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +26 0 obj +<< +/Length 10184 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-5)Tj +/TT13 1 Tf +10 0 0 10 324.52 612 Tm +(BREAKING, TRACING, AND ADVISING)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0444 Tw +(is because )Tj +/TT8 1 Tf +4.7857 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0444 Tw +[( operates by calling the editor and actually inserting a call to )]TJ +/TT8 1 Tf +27.4113 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +-36.3976 -1.2889 TD +0.0733 Tw +(at a specified point )Tj +/TT19 1 Tf +8.9183 0 TD +0 Tw +(inside)Tj +/TT6 1 Tf +2.3901 0 TD +0.0733 Tw +[( of the function. If )]TJ +/TT10 1 Tf +8.8331 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0733 Tw +[( is a compiled function, )]TJ +/TT8 1 Tf +10.9341 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0733 Tw +[( returns)]TJ +/TT8 1 Tf +-36.4765 -1.2889 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(UNBREAKABLE\))Tj +/TT6 1 Tf +7.2012 0 TD +( as its value.)Tj +/TT10 1 Tf +-9.2515 -2.0667 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1667 Tw +[( should be an expression that is evaluated whenever the break is entered. If the)]TJ +-2.4004 -1.2889 TD +0.2078 Tw +(value of the expression is non-)Tj +/TT8 1 Tf +14.4876 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2078 Tw +(, a break is entered, otherwise the function simply)Tj +-16.2879 -1.2889 TD +0.2722 Tw +[(called and returns without causing a break. This provides the means of creating a)]TJ +0 -1.2222 TD +0 Tw +(conditional break. For )Tj +/TT8 1 Tf +10.2402 0 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +(, unlike )Tj +/TT8 1 Tf +3.5522 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +(, if )Tj +/TT10 1 Tf +1.374 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, it defaults to )Tj +/TT8 1 Tf +6.3062 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-35.2896 -2.0667 TD +(COMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.01 Tw +(, if non-)Tj +/TT8 1 Tf +3.437 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.01 Tw +(, should be a list of break commands, that are interpreted and executed if)Tj +-7.6377 -1.2889 TD +0 Tw +(a break occurs. \(See the )Tj +/TT10 1 Tf +10.792 0 TD +(BRKCONMS)Tj +/TT6 1 Tf +4.8008 0 TD +( argument to )Tj +/TT8 1 Tf +5.9463 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +(, Chapter 14.\))Tj +/TT10 1 Tf +-25.1397 -2.0667 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0411 Tw +[( specifies where in the definition of )]TJ +/TT10 1 Tf +16.0436 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0411 Tw +[( the call to )]TJ +/TT8 1 Tf +4.9496 0 TD +0 Tw +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0411 Tw +[( is to be inserted. )]TJ +/TT10 1 Tf +8.2027 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +-36.9972 -1.2889 TD +0.07 Tw +(should be a list of the form )Tj +/TT8 1 Tf +12.5838 0 TD +0.1689 Tw +(\(BEFORE ...\), \(AFTER ...\))Tj +/TT6 1 Tf +15.5091 0 TD +0.07 Tw +(, or )Tj +/TT8 1 Tf +1.8309 0 TD +0.1689 Tw +(\(AROUND ...\))Tj +/TT6 1 Tf +7.3701 0 TD +0.07 Tw +[(. You)]TJ +-37.2938 -1.2889 TD +0.05 Tw +(specify where the break is to be inserted by a sequence of editor commands, preceded by)Tj +0 -1.2222 TD +0.0622 Tw +(one of the symbols )Tj +/TT8 1 Tf +8.7987 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5622 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0622 Tw +(, or )Tj +/TT8 1 Tf +1.8154 0 TD +0 Tw +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0622 Tw +(, which )Tj +/TT8 1 Tf +3.6074 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0622 Tw +[( uses to determine what)]TJ +-29.186 -1.2889 TD +0.08 Tw +(to do once the editor has found the specified point, i.e., put the call to )Tj +/TT8 1 Tf +32.0169 0 TD +0.1911 Tw +(BREAK1 BEFORE)Tj +/TT6 1 Tf +-32.0169 -1.2889 TD +0.1022 Tw +(that point, )Tj +/TT8 1 Tf +5.035 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.1022 Tw +[( that point, or )]TJ +/TT8 1 Tf +6.6804 0 TD +0 Tw +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +0.1022 Tw +[( that point. For example, )]TJ +/TT8 1 Tf +11.5878 0 TD +0.2444 Tw +(\(BEFORE COND\))Tj +/TT6 1 Tf +8.0457 0 TD +0.1022 Tw +[( will)]TJ +-37.9499 -1.2889 TD +0.01 Tw +(insert a break before the first occurrence of )Tj +/TT8 1 Tf +19.1913 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.51 0 TD +0.0233 Tw +(\(AFTER COND 2 1\))Tj +/TT6 1 Tf +9.6716 0 TD +0.01 Tw +[( will insert a break)]TJ +-31.7733 -1.2889 TD +0.0111 Tw +(after the predicate in the first )Tj +/TT8 1 Tf +13.1424 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.0111 Tw +[( clause, )]TJ +/TT8 1 Tf +3.5129 0 TD +0.0278 Tw +(\(AFTER BF \(SETQ X &\)\))Tj +/TT6 1 Tf +12.7132 0 TD +0.0111 Tw +[( after the )]TJ +/TT19 1 Tf +4.2037 0 TD +0 Tw +(last)Tj +/TT6 1 Tf +1.4438 0 TD +0.0111 Tw +[( place)]TJ +/TT8 1 Tf +-37.4164 -1.2889 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( is set. Note that )]TJ +/TT8 1 Tf +7.797 0 TD +0.0756 Tw +(\(BEFORE TTY:\))Tj +/TT6 1 Tf +7.8768 0 TD +0.0311 Tw +[( or )]TJ +/TT8 1 Tf +1.5031 0 TD +0.0756 Tw +(\(AFTER TTY:\))Tj +/TT6 1 Tf +7.2767 0 TD +0.0311 Tw +[( permit you to type in commands)]TJ +-25.0538 -1.2889 TD +0.1933 Tw +(to the editor, locate the correct point, and verify it, and exit from the editor with )Tj +/TT8 1 Tf +38.5582 0 TD +0 Tw +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +-39.7584 -1.2889 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +( then inserts the break )Tj +/TT8 1 Tf +10.0107 0 TD +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +( that point.)Tj +/TT15 1 Tf +-26.604 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.0511 Tw +[(: A )]TJ +/TT8 1 Tf +1.9312 0 TD +0 Tw +(STOP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0511 Tw +[( command typed to )]TJ +/TT8 1 Tf +9.098 0 TD +0 Tw +(TTY:)Tj +/TT6 1 Tf +2.4004 0 TD +0.0511 Tw +[( produces the same effect as an unsuccessful edit)]TJ +-18.0521 -1.2889 TD +0.0778 Tw +(command in the original specification, e.g., )Tj +/TT8 1 Tf +19.7142 0 TD +0.1867 Tw +(\(BEFORE CONDD\))Tj +/TT6 1 Tf +8.588 0 TD +0.0778 Tw +[(. In both cases, the editor)]TJ +-28.3023 -1.2889 TD +0 Tw +(aborts, and )Tj +/TT8 1 Tf +5.187 0 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +( types )Tj +/TT8 1 Tf +2.8862 0 TD +(\(NOT FOUND\))Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +-18.875 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.0777 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1578 Tw +[( is )]TJ +/TT8 1 Tf +1.5304 0 TD +0.3778 Tw +(\(BEFORE ...\))Tj +/TT6 1 Tf +7.5789 0 TD +0.1578 Tw +[( or )]TJ +/TT8 1 Tf +1.7565 0 TD +0.3778 Tw +(\(AFTER ...\))Tj +/TT6 1 Tf +6.9789 0 TD +0.1578 Tw +(, the break expression is )Tj +/TT8 1 Tf +11.6112 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1578 Tw +(, since the)Tj +-35.3343 -1.2889 TD +0.1444 Tw +[(value of the break is irrelevant. For )]TJ +/TT8 1 Tf +17.1082 0 TD +0.3456 Tw +(\(AROUND ...\))Tj +/TT6 1 Tf +7.5467 0 TD +0.1444 Tw +(, the break expression will be the)Tj +-24.6549 -1.2889 TD +0.0867 Tw +[(indicated form. In this case, you can use the )]TJ +/TT8 1 Tf +20.6709 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +[( command to evaluate that form, and)]TJ +-23.0713 -1.2889 TD +0.2367 Tw +[(examine its value, before allowing the computation to proceed. For example, if you)]TJ +0 -1.2222 TD +0.1267 Tw +(inserted a break after a )Tj +/TT8 1 Tf +10.9868 0 TD +0 Tw +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.1267 Tw +[( predicate, e.g., )]TJ +/TT8 1 Tf +7.2911 0 TD +0.3044 Tw +(\(AFTER \(EQUAL X Y\)\))Tj +/TT6 1 Tf +12.3152 0 TD +0.1267 Tw +(, you would be)Tj +-32.9936 -1.2889 TD +0.0711 Tw +(powerless to alter the flow of computation if the predicate were not true, since the break)Tj +0 -1.2222 TD +0.2033 Tw +[(would not be reached. However, by breaking )]TJ +/TT8 1 Tf +22.1394 0 TD +0.4889 Tw +(\(AROUND \(EQUAL X Y\)\))Tj +/TT6 1 Tf +13.4686 0 TD +0.2033 Tw +(, you can)Tj +-35.608 -1.2889 TD +0.0233 Tw +(evaluate the break expression, i.e., )Tj +/TT8 1 Tf +15.4873 0 TD +0.0567 Tw +(\(EQUAL X Y\))Tj +/TT6 1 Tf +6.7144 0 TD +0.0233 Tw +(, look at its value, and return something)Tj +-22.2017 -1.2889 TD +0 Tw +(else if desired.)Tj +0 -2 TD +(If )Tj +/TT10 1 Tf +0.9733 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0533 Tw +[( is interpreted, )]TJ +/TT8 1 Tf +6.8392 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0533 Tw +[( types )]TJ +/TT8 1 Tf +2.9929 0 TD +0 Tw +(SEARCHING)Tj +/TT6 1 Tf +5.4009 0 TD +0.0533 Tw +[(... while it calls the editor. If the location)]TJ +-21.6071 -1.2889 TD +0.0578 Tw +(specified by )Tj +/TT10 1 Tf +5.6776 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0578 Tw +[( is not found, )]TJ +/TT8 1 Tf +6.3249 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0578 Tw +[( types )]TJ +/TT8 1 Tf +3.0018 0 TD +0.1378 Tw +(\(NOT FOUND\))Tj +/TT6 1 Tf +6.7388 0 TD +0.0578 Tw +[( and exits. If it is found,)]TJ +/TT8 1 Tf +-28.9442 -1.2889 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0389 Tw +[( puts )]TJ +/TT8 1 Tf +2.5319 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0389 Tw +[( under the property )]TJ +/TT8 1 Tf +9.1121 0 TD +0 Tw +(BROKEN-IN)Tj +/TT6 1 Tf +5.4009 0 TD +0.0389 Tw +[( and )]TJ +/TT8 1 Tf +2.2706 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2889 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2889 0 TD +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0389 Tw +[( under the the)]TJ +-33.6955 -1.2889 TD +0 Tw +(property )Tj +/TT8 1 Tf +4.4461 0 TD +(BRKINFO)Tj +/TT6 1 Tf +4.2007 0 TD +0.2967 Tw +[( on the property list of )]TJ +/TT10 1 Tf +11.9055 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2967 Tw +(, and adds )Tj +/TT10 1 Tf +5.7284 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2967 Tw +[( to the front of the list)]TJ +/TT8 1 Tf +-28.681 -1.2889 TD +0 Tw +(BROKENFNS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-5.4009 -2.0667 TD +0.05 Tw +(Multiple break points, can be inserted with a single call to )Tj +/TT8 1 Tf +26.3308 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.05 Tw +[( by using a list of the)]TJ +-30.5314 -1.2889 TD +0 Tw +(form )Tj +/TT8 1 Tf +2.5634 0 TD +0.3756 Tw +(\(\(BEFORE ...\) ... \(AROUND ...\)\))Tj +/TT6 1 Tf +20.1053 0 TD +0.1567 Tw +[( for )]TJ +/TT10 1 Tf +2.0873 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1567 Tw +[(. It is also possible to call)]TJ +/TT8 1 Tf +-27.7564 -1.2889 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.0689 Tw +[( or )]TJ +/TT8 1 Tf +1.5787 0 TD +0 Tw +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0689 Tw +[( on a function which has been modified by )]TJ +/TT8 1 Tf +19.6908 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0689 Tw +(, and conversely to)Tj +/TT8 1 Tf +-31.4712 -1.2889 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +( a function which has been redefined by a call to )Tj +/TT8 1 Tf +21.5562 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +ET +endstream +endobj +27 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT15 19 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +29 0 obj +<< +/Length 9093 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-6)Tj +/TT13 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0378 Tw +(The message typed for a )Tj +/TT8 1 Tf +11.2045 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0378 Tw +[( break is )]TJ +/TT8 1 Tf +4.0616 0 TD +0 Tw +(\(\()Tj +/TT10 1 Tf +1.2002 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.2878 0 TD +(BROKEN\))Tj +/TT6 1 Tf +4.2007 0 TD +0.0378 Tw +(, where )Tj +/TT10 1 Tf +3.5946 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0378 Tw +[( is the name of the)]TJ +-31.7505 -1.2889 TD +0.0044 Tw +(function inside of which the break was inserted. Any error, or typing control-E, will cause)Tj +0 -1.2222 TD +0 Tw +(the full identifying message to be printed, e.g., )Tj +/TT8 1 Tf +20.773 0 TD +(\(FOO BROKEN AFTER COND 2 1\))Tj +/TT6 1 Tf +16.2026 0 TD +(.)Tj +-36.9756 -2.0667 TD +0.0511 Tw +(A special check is made to avoid inserting a break inside of an expression headed by any)Tj +0 -1.2222 TD +0.0111 Tw +(member of the list )Tj +/TT8 1 Tf +8.3145 0 TD +0 Tw +(NOBREAKS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0111 Tw +(, initialized to )Tj +/TT8 1 Tf +6.3585 0 TD +0.0278 Tw +(\(GO QUOTE *\))Tj +/TT6 1 Tf +7.2567 0 TD +0.0111 Tw +(, since this break would never)Tj +-26.7305 -1.2889 TD +0.0578 Tw +[(be activated. For example, if )]TJ +/TT8 1 Tf +13.291 0 TD +0.14 Tw +(\(GO L\))Tj +/TT6 1 Tf +3.7406 0 TD +0.0578 Tw +[( appears before the label )]TJ +/TT8 1 Tf +11.3255 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5578 0 TD +0.14 Tw +(BREAKIN \(AFTER L\))Tj +/TT6 1 Tf +-29.515 -1.2889 TD +0.06 Tw +(will not insert the break inside of the )Tj +/TT8 1 Tf +16.9527 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.06 Tw +[( expression, but skip this occurrence of )]TJ +/TT8 1 Tf +17.8238 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.06 Tw +[( and go)]TJ +-36.5768 -1.2889 TD +0.0111 Tw +(on to the next L, in this case the label )Tj +/TT8 1 Tf +16.6067 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.0111 Tw +[(. Similarly, for )]TJ +/TT8 1 Tf +6.8413 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0111 Tw +[( or )]TJ +/TT8 1 Tf +1.4631 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0111 Tw +[( breaks, )]TJ +/TT8 1 Tf +3.6795 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +-35.7918 -1.2889 TD +0.0311 Tw +[(checks to make sure that the break is being inserted at a safe place. For example, if you)]TJ +0 -1.2222 TD +0.0378 Tw +(request a break )Tj +/TT8 1 Tf +7.1128 0 TD +0.0911 Tw +(\(AFTER X\))Tj +/TT6 1 Tf +5.492 0 TD +0.0378 Tw +[( in )]TJ +/TT8 1 Tf +1.4486 0 TD +0.0911 Tw +(\(PROG ... \(SETQ X &\) ...\))Tj +/TT6 1 Tf +15.458 0 TD +0.0378 Tw +(, the break will actually)Tj +-29.5114 -1.2889 TD +0.2944 Tw +(be inserted after )Tj +/TT8 1 Tf +8.2857 0 TD +0.7067 Tw +(\(SETQ X &\))Tj +/TT6 1 Tf +7.4143 0 TD +0.2944 Tw +(, and a message printed to this effect, e.g., )Tj +/TT8 1 Tf +21.297 0 TD +0 Tw +(BREAK)Tj +-36.997 -1.2889 TD +(INSERTED AFTER \(SETQ X &\))Tj +/TT6 1 Tf +15.0024 0 TD +(.)Tj +/TT8 1 Tf +-17.6691 -2.2156 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UNBREAK)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 214.8035 416.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 416.8 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +-25.9256 -1.8444 TD +(UNBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.3922 Tw +[( takes an indefinite number of functions modified by )]TJ +/TT8 1 Tf +27.071 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.8922 0 TD +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.3922 Tw +(, or)Tj +/TT8 1 Tf +-38.1649 -1.2889 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.1156 Tw +[( and restores them to their original state by calling )]TJ +/TT8 1 Tf +23.6033 0 TD +0 Tw +(UNBREAK0)Tj +/TT6 1 Tf +4.8008 0 TD +0.1156 Tw +[(. Returns list of)]TJ +-32.6048 -1.2889 TD +0 Tw +(values of )Tj +/TT8 1 Tf +4.2407 0 TD +(UNBREAK0)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-9.0415 -2.0667 TD +(\(UNBREAK\))Tj +/TT6 1 Tf +5.4009 0 TD +0.2411 Tw +[( will unbreak all functions on )]TJ +/TT8 1 Tf +14.663 0 TD +0 Tw +(BROKENFNS)Tj +/TT6 1 Tf +5.4009 0 TD +0.2411 Tw +[(, in reverse order. It first sets)]TJ +/TT8 1 Tf +-25.4647 -1.2889 TD +0 Tw +(BRKINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-9.1733 -2.0667 TD +0.4811 Tw +(\(UNBREAK T\))Tj +/TT6 1 Tf +7.0822 0 TD +0.2011 Tw +[( unbreaks just the first function on )]TJ +/TT8 1 Tf +16.8282 0 TD +0 Tw +(BROKENFNS)Tj +/TT6 1 Tf +5.4009 0 TD +0.2011 Tw +(, i.e., the most recently)Tj +-29.3113 -1.2889 TD +0 Tw +(broken function.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UNBREAK0)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN )Tj +/TT8 1 Tf +2.4004 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 236.4061 297.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 297.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Restores )Tj +/TT10 1 Tf +4.0629 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0722 Tw +[( to its original state. If )]TJ +/TT10 1 Tf +10.5959 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0722 Tw +[( was not broken, value is )]TJ +/TT8 1 Tf +11.6594 0 TD +0.1722 Tw +(\(NOT BROKEN\) )Tj +/TT6 1 Tf +8.1457 0 TD +0.0722 Tw +(and no)Tj +-36.8643 -1.2889 TD +0 Tw +(changes are made. If )Tj +/TT10 1 Tf +9.5835 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( was modified by )Tj +/TT8 1 Tf +7.9116 0 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(UNBREAKIN)Tj +/TT6 1 Tf +5.4009 0 TD +( is called to edit it back to)Tj +-28.7969 -1.2889 TD +0.0689 Tw +[(its original state. If )]TJ +/TT10 1 Tf +9.0627 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0689 Tw +[( was created from )]TJ +/TT8 1 Tf +8.424 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +6 0 0 6 358.4 255.46 Tm +(1)Tj +/TT15 1 Tf +9 0 0 9 362 257.46 Tm +( )Tj +/TT8 1 Tf +0.3189 0 TD +(IN)Tj +/TT15 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.3189 0 TD +(FN)Tj +6 0 0 6 389.34 255.46 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 392.94 257.46 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0689 Tw +(, \(i.e., if it has a property )Tj +/TT8 1 Tf +11.4817 0 TD +0 Tw +(ALIAS)Tj +/TT6 1 Tf +3.0005 0 TD +(\),)Tj +-39.409 -1.3944 TD +0.0033 Tw +(the function in which )Tj +/TT10 1 Tf +9.7135 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0033 Tw +( appears is restored to its original state. All dummy functions that)Tj +-10.9137 -1.2889 TD +0.0056 Tw +[(were created by the break are eliminated. Adds property value of )]TJ +/TT8 1 Tf +29.4641 0 TD +0 Tw +(BRKINFO)Tj +/TT6 1 Tf +4.2007 0 TD +0.0056 Tw +[( to the front of)]TJ +/TT8 1 Tf +-33.6648 -1.2889 TD +0 Tw +(BRKINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT15 1 Tf +-6.001 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.1533 Tw +(: )Tj +/TT8 1 Tf +1.0567 0 TD +0 Tw +(\(UNBREAK0)Tj +/TT15 1 Tf +5.4009 0 TD +( )Tj +/TT8 1 Tf +0.4033 0 TD +(\()Tj +/TT10 1 Tf +1.2002 0 TD +(FN)Tj +6 0 0 6 277.34 201.11 Tm +(1)Tj +/TT15 1 Tf +9 0 0 9 280.94 203.11 Tm +( )Tj +/TT8 1 Tf +0.4033 0 TD +(IN)Tj +/TT15 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.4033 0 TD +(FN)Tj +6 0 0 6 309.8 201.11 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 313.4 203.11 Tm +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +0.1533 Tw +[( is allowed: )]TJ +/TT8 1 Tf +6.1299 0 TD +0 Tw +(UNBREAK0)Tj +/TT6 1 Tf +4.8008 0 TD +0.1533 Tw +[( will operate on )]TJ +/TT8 1 Tf +7.7745 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +6 0 0 6 508.75 201.11 Tm +(1)Tj +/TT8 1 Tf +9 0 0 9 512.35 203.11 Tm +(-IN-)Tj +/TT10 1 Tf +-37.5944 -1.3944 TD +(FN)Tj +6 0 0 6 184.8 188.56 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 188.4 190.56 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( instead.)Tj +/TT8 1 Tf +-4.8668 -2.3211 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UNBREAKIN)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +(\))Tj +/TT13 1 Tf +10 0 0 10 225.6035 169.67 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 169.67 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0967 Tw +(Performs the appropriate editing operations to eliminate all changes made by )Tj +/TT8 1 Tf +35.5458 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-39.7464 -1.2889 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( may be either the name or definition of a function. Value is )Tj +/TT10 1 Tf +26.7734 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +-29.1738 -2.0667 TD +(UNBREAKIN)Tj +/TT6 1 Tf +5.4009 0 TD +0.2267 Tw +[( is automatically called by )]TJ +/TT8 1 Tf +12.8804 0 TD +0 Tw +(UNBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.2267 Tw +[( if )]TJ +/TT10 1 Tf +1.5774 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2267 Tw +[( has property )]TJ +/TT8 1 Tf +6.8353 0 TD +0 Tw +(BROKEN-IN)Tj +/TT6 1 Tf +5.4009 0 TD +0.2267 Tw +[( with)]TJ +-37.4957 -1.2889 TD +0 Tw +(value )Tj +/TT8 1 Tf +2.688 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( on its property list.)Tj +/TT8 1 Tf +-5.9548 -2.2156 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(REBREAK)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT13 1 Tf +10 0 0 10 209.4026 91.33 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 91.33 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.4178 Tw +(Nlambda nospread function for rebreaking functions that were previously broken)Tj +0 -1.2222 TD +0.1933 Tw +[(without having to respecify the break information. For each function on )]TJ +/TT10 1 Tf +34.5109 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.6933 0 TD +(REBREAK)Tj +/TT6 1 Tf +-35.8044 -1.2889 TD +(searches )Tj +/TT8 1 Tf +4.0455 0 TD +(BRKINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +[( for break\(s\) and performs the corresponding operation. Value is a)]TJ +ET +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +32 0 obj +<< +/Length 7797 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-7)Tj +/TT13 1 Tf +10 0 0 10 324.52 612 Tm +(BREAKING, TRACING, AND ADVISING)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0033 Tw +(list of values corresponding to calls to )Tj +/TT8 1 Tf +16.9916 0 TD +0 Tw +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +0.0008 Tc +0.0025 Tw +( or )Tj +/TT8 1 Tf +1.4476 0 TD +0 Tc +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0001 Tc +0.0032 Tw +(. If no information is found for)Tj +-26.2405 -1.2889 TD +0 Tc +0 Tw +(a particular function, returns )Tj +/TT8 1 Tf +13.0073 0 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( - )Tj +/TT8 1 Tf +0.833 0 TD +(NO BREAK INFORMATION SAVED\))Tj +/TT6 1 Tf +16.2026 0 TD +(.)Tj +/TT8 1 Tf +-31.8433 -2.0667 TD +(\(REBREAK\))Tj +/TT6 1 Tf +5.4009 0 TD +0.3567 Tw +[( rebreaks everything on )]TJ +/TT8 1 Tf +12.1474 0 TD +0 Tw +(BRKINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.3567 Tw +(, so )Tj +/TT8 1 Tf +2.4331 0 TD +0 Tw +(\(REBREAK\))Tj +/TT6 1 Tf +5.4009 0 TD +0.3567 Tw +[( is the inverse of)]TJ +/TT8 1 Tf +-31.3832 -1.2889 TD +0 Tw +(\(UNBREAK\))Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +-5.4009 -2.0667 TD +0.6211 Tw +(\(REBREAK T\))Tj +/TT6 1 Tf +7.2222 0 TD +0.2589 Tw +[( rebreaks just the first break on )]TJ +/TT8 1 Tf +15.698 0 TD +0 Tw +(BRKINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.2589 Tw +(, i.e., the function most)Tj +-28.9211 -1.2889 TD +0 Tw +(recently unbroken.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CHANGENAME)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FROM)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 225.3096 478.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 478.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.02 Tw +(Replaces all occurrences of )Tj +/TT10 1 Tf +12.1611 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +[( by )]TJ +/TT10 1 Tf +1.6494 0 TD +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.02 Tw +[( in the definition of )]TJ +/TT10 1 Tf +8.8212 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.02 Tw +[(. If )]TJ +/TT10 1 Tf +1.7299 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.02 Tw +[( is defined by an expr)]TJ +-30.3625 -1.2889 TD +0 Tw +(definition, )Tj +/TT8 1 Tf +4.8431 0 TD +(CHANGENAME)Tj +/TT6 1 Tf +6.001 0 TD +0.0111 Tw +[( performs )]TJ +/TT8 1 Tf +4.5779 0 TD +0 Tw +(\(ESUBST)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.2611 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.2611 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.2611 0 TD +(\(GETD)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2611 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0111 Tw +[( \(see Chapter 16\). If )]TJ +/TT10 1 Tf +9.1267 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +-38.7953 -1.2889 TD +0.1311 Tw +(is compiled, )Tj +/TT8 1 Tf +6.2537 0 TD +0 Tw +(CHANGENAME)Tj +/TT6 1 Tf +6.001 0 TD +0.1311 Tw +[( searches the literals of )]TJ +/TT10 1 Tf +10.8953 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1311 Tw +[( \(and all of its compiler generated)]TJ +-24.3502 -1.2889 TD +0 Tw +(subfunctions\), replacing each occurrence of )Tj +/TT10 1 Tf +19.3774 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +( with )Tj +/TT10 1 Tf +2.5332 0 TD +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-25.5112 -2.0667 TD +0.0022 Tw +(Note that )Tj +/TT10 1 Tf +4.4209 0 TD +0 Tw +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0004 Tc +0.0018 Tw +( and )Tj +/TT10 1 Tf +2.1973 0 TD +0 Tc +0 Tw +(TO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0022 Tw +( do not have to be functions, e.g., they can be names of variables, or)Tj +-10.2189 -1.2889 TD +0 Tw +(any other literals.)Tj +/TT8 1 Tf +0 -2 TD +(CHANGENAME)Tj +/TT6 1 Tf +6.001 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( if at least one instance of )Tj +/TT10 1 Tf +11.334 0 TD +(FROM)Tj +/TT6 1 Tf +2.4004 0 TD +( was found, otherwise )Tj +/TT8 1 Tf +10.0386 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-39.1452 -2.2156 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VIRGINFN)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT13 1 Tf +10 0 0 10 190.6561 358.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 358.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0644 Tw +(The function that knows how to restore functions to their original state regardless of any)Tj +0 -1.2222 TD +0.2189 Tw +[(amount of breaks, breakins, advising, compiling and saving exprs, etc. It is used by)]TJ +/TT8 1 Tf +T* +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(DEFINE)Tj +/TT6 1 Tf +3.6006 0 TD +(, and the compiler.)Tj +-10.7017 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9277 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +[( = NIL)]TJ +/TT6 1 Tf +3.6384 0 TD +0.0078 Tw +(, as for )Tj +/TT8 1 Tf +3.2211 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0078 Tw +(, it does not modify the definition of )Tj +/TT10 1 Tf +16.261 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0078 Tw +[( in the process)]TJ +-33.6497 -1.2889 TD +0 Tw +(of producing a clean version of the definition; it works on a copy.)Tj +0 -2 TD +(If )Tj +/TT10 1 Tf +1.0633 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.3433 Tw +[( = T)]TJ +/TT6 1 Tf +3.0871 0 TD +0.1433 Tw +(, as for the compiler and )Tj +/TT8 1 Tf +11.8175 0 TD +0 Tw +(DEFINE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1433 Tw +(, it physically restores the function to its)Tj +-21.3687 -1.2889 TD +0.0233 Tw +(original state, and prints the changes it is making, e.g., )Tj +/TT8 1 Tf +24.4921 0 TD +0.0567 Tw +(FOO UNBROKEN)Tj +/TT6 1 Tf +7.2578 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5233 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.2733 0 TD +(UNADVISED)Tj +/TT6 1 Tf +5.4009 0 TD +(,)Tj +/TT8 1 Tf +-39.7478 -1.2889 TD +(FOO NAMES RESTORED)Tj +/TT6 1 Tf +10.8018 0 TD +(, etc.)Tj +-10.8018 -2.0667 TD +(Returns the virgin function definition.)Tj +/TT4 1 Tf +10 0 0 10 54 202.72 Tm +(Advising)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 200.01 m +510.01 200.01 l +S +BT +/TT6 1 Tf +9 0 0 9 78 186.06 Tm +0.0344 Tw +(The operation of advising gives you a way of modifying a function without necessarily knowing how)Tj +0 -1.2222 TD +0.2567 Tw +[(the function works or even what it does. Advising consists of modifying the )]TJ +/TT19 1 Tf +37.6304 0 TD +0 Tw +(interface)Tj +/TT6 1 Tf +3.4634 0 TD +0.2567 Tw +[( between)]TJ +-41.0938 -1.2222 TD +0.1333 Tw +(functions as opposed to modifying the function definition itself, as in editing. )Tj +/TT8 1 Tf +36.3701 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6333 0 TD +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1333 Tw +(, and)Tj +/TT8 1 Tf +-43.0044 -1.2889 TD +0 Tw +(BREAKDOWN)Tj +/TT6 1 Tf +5.4009 0 TD +0.1289 Tw +(, are examples of the use of this technique: they each modify user functions by placing)Tj +-5.4009 -1.2889 TD +0 Tw +(relevant computations )Tj +/TT19 1 Tf +10.189 0 TD +(between)Tj +/TT6 1 Tf +3.2417 0 TD +( the function and the rest of the programming environment.)Tj +-13.4307 -2 TD +0.0233 Tw +(The principal advantage of advising, aside from its convenience, is that it allows you to treat anyones)Tj +0 -1.2222 TD +0.2389 Tw +(functions as black boxes, and to modify them without concern for their contents or details of)Tj +T* +0.0611 Tw +[(operations. For example, you could modify )]TJ +/TT8 1 Tf +20.0332 0 TD +0 Tw +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +[( to set )]TJ +/TT8 1 Tf +3.0344 0 TD +0 Tw +(SYSDATE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0611 Tw +[( to the time and date of creation)]TJ +-30.8689 -1.2889 TD +0 Tw +(by )Tj +/TT8 1 Tf +1.3594 0 TD +(\(ADVISE SYSOUT \(SETQ SYSDATE \(DATE\)\)\))Tj +/TT6 1 Tf +23.4038 0 TD +(.)Tj +-24.7632 -2.0667 TD +0.0956 Tw +(As with )Tj +/TT8 1 Tf +3.926 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +0.0956 Tw +[(, advising works equally well on compiled and interpreted functions. Similarly, it is)]TJ +-6.9265 -1.2889 TD +0.0967 Tw +(possible to make a change which only operates when a function is called from some other specified)Tj +0 -1.2222 TD +0.0544 Tw +[(function. For example, you can modify the interface between two particular functions, instead of the)]TJ +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +35 0 obj +<< +/Length 6120 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-8)Tj +/TT13 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1111 Tw +[(interface between one function and the rest of the world. This latter feature is especially useful for)]TJ +0 -1.2222 TD +0 Tw +(changing the )Tj +/TT19 1 Tf +5.9805 0 TD +(internal)Tj +/TT6 1 Tf +3.2231 0 TD +( workings of a system function.)Tj +-9.2036 -2 TD +0.0233 Tw +(For example, suppose you wanted )Tj +/TT8 1 Tf +15.5776 0 TD +0 Tw +(TIME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0233 Tw +[( \(Chapter 22\) to print the results of your measurements to the)]TJ +-17.978 -1.2889 TD +0 Tw +(file )Tj +/TT8 1 Tf +1.674 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +[( instead of the terminal. You can accomplish this by )]TJ +/TT8 1 Tf +23.6357 0 TD +0.0722 Tw +(\(ADVISE \(\(PRIN1 PRINT SPACES\))Tj +-27.11 -1.2222 TD +0 Tw +(IN TIME\) BEFORE \(SETQQ U FOO\)\).)Tj +/TT6 1 Tf +0 -2.0667 TD +(Advising )Tj +/TT8 1 Tf +4.4554 0 TD +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6078 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +0.1078 Tw +(, or )Tj +/TT8 1 Tf +1.9065 0 TD +0 Tw +(SPACES)Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( directly would have affected all calls to these frequently used)]TJ +-16.5713 -1.2889 TD +0.0178 Tw +(functions, whereas advising )Tj +/TT8 1 Tf +12.6969 0 TD +0.0422 Tw +(\(\(PRIN1 PRINT SPACES\) IN TIME\))Tj +/TT6 1 Tf +18.1718 0 TD +0.0178 Tw +[( affects just those calls to )]TJ +/TT8 1 Tf +11.2112 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +/TT8 1 Tf +-45.0804 -1.2889 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(SPACES)Tj +/TT6 1 Tf +3.6006 0 TD +( from )Tj +/TT8 1 Tf +2.6567 0 TD +(TIME)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-14.1011 -2.0667 TD +0.0511 Tw +[(Advice can also be specified to operate after a function has been evaluated. The value of the body of)]TJ +0 -1.2222 TD +0 Tw +(the original function can be obtained from the variable )Tj +/TT8 1 Tf +24.3608 0 TD +(!VALUE)Tj +/TT6 1 Tf +3.6006 0 TD +(, as with )Tj +/TT8 1 Tf +3.957 0 TD +(BREAK1)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 426.6 Tm +(Implementation of Advising)Tj +/TT6 1 Tf +9 0 0 9 126 410.94 Tm +(After a function has been modified several times by )Tj +/TT8 1 Tf +23.0566 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +(, it will look like:)Tj +/TT8 1 Tf +-18.6572 -1.6667 TD +(\(LAMBDA arguments)Tj +0 -1 TD +( \(PROG \(!VALUE\))Tj +T* +( \(SETQ !VALUE)Tj +T* +( \(PROG NIL)Tj +T* +( advice1)Tj +T* +( .)Tj +0 -1.0667 TD +( . )Tj +/TT19 1 Tf +13.8022 0 TD +(advice before)Tj +/TT8 1 Tf +-13.8022 -1 TD +( .)Tj +T* +( advicen)Tj +T* +( \(RETURN )Tj +/TT10 1 Tf +13.2022 0 TD +(BODY)Tj +/TT8 1 Tf +2.4004 0 TD +(\)\)\))Tj +-15.6025 -1 TD +( advice1)Tj +T* +( .)Tj +0 -1.0667 TD +( . )Tj +/TT19 1 Tf +9.0015 0 TD +(advice after)Tj +/TT8 1 Tf +-9.0015 -1 TD +( .)Tj +T* +( advicem)Tj +T* +( \(RETURN !VALUE\)\)\))Tj +/TT6 1 Tf +-8 -1.8444 TD +(where )Tj +/TT10 1 Tf +3.109 0 TD +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +[( is equivalent to the original definition. If )]TJ +/TT10 1 Tf +19.4145 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.09 Tw +[( was originally an expr definition, )]TJ +/TT10 1 Tf +15.7524 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +[( is)]TJ +-44.2769 -1.2889 TD +0.2222 Tw +(the body of the definition, otherwise a form using a )Tj +/TT8 1 Tf +25.1924 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.2222 Tw +[( which is defined with the original)]TJ +-28.793 -1.2889 TD +0 Tw +(definition.)Tj +0 -2 TD +0.2256 Tw +(The structure of a function modified by )Tj +/TT8 1 Tf +19.2376 0 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.2256 Tw +[( allows a piece of advice to bypass the original)]TJ +-22.8382 -1.2889 TD +0.0656 Tw +(definition by using the function )Tj +/TT8 1 Tf +14.5695 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0656 Tw +[(. For example, if )]TJ +/TT8 1 Tf +7.9479 0 TD +0.1567 Tw +(\(COND \(\(ATOM X)Tj +/TT15 1 Tf +8.7147 0 TD +0 Tw +(\) )Tj +/TT8 1 Tf +0.6486 0 TD +0.1567 Tw +(\(RETURN Y\)\)\))Tj +/TT6 1 Tf +7.3578 0 TD +0.0656 Tw +[( were)]TJ +-42.8391 -1.2889 TD +0.0467 Tw +(one of the pieces of advice )Tj +/TT19 1 Tf +12.1394 0 TD +0 Tw +(before)Tj +/TT6 1 Tf +2.3521 0 TD +0.0467 Tw +[( a function, and this function was entered with )]TJ +/TT8 1 Tf +21.2921 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0467 Tw +[( atomic, )]TJ +/TT8 1 Tf +3.8331 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0467 Tw +[( would be)]TJ +-40.8168 -1.2889 TD +0.0056 Tw +(returned as the value of the inner )Tj +/TT8 1 Tf +15.0032 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5056 0 TD +(!VALUE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0056 Tw +[( would be set to )]TJ +/TT8 1 Tf +7.2958 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +(, and control passed to the advice, if)Tj +-29.4057 -1.2889 TD +0.1211 Tw +(any, to be executed )Tj +/TT8 1 Tf +9.2139 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.1211 Tw +[( the function. If this same piece of advice appeared )]TJ +/TT19 1 Tf +24.2336 0 TD +0 Tw +(after)Tj +/TT6 1 Tf +1.833 0 TD +0.1211 Tw +[( the function, )]TJ +/TT8 1 Tf +6.4576 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +-44.7386 -1.2889 TD +(would be returned as the value of the entire advised function.)Tj +0 -2 TD +0.0144 Tw +(The advice )Tj +/TT8 1 Tf +5.0924 0 TD +0.0333 Tw +(\(COND \(\(ATOM X\) \(SETQ !VALUE Y\)\)\))Tj +/TT6 1 Tf +19.9699 0 TD +0 Tw +( )Tj +/TT19 1 Tf +0.2644 0 TD +(after)Tj +/TT6 1 Tf +1.833 0 TD +0.0144 Tw +[( the function would have a similar effect,)]TJ +-27.1597 -1.2889 TD +0 Tw +(but the rest of the advice )Tj +/TT19 1 Tf +11.1494 0 TD +(after)Tj +/TT6 1 Tf +1.833 0 TD +( the function would still be executed.)Tj +/TT15 1 Tf +-12.9824 -2 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +(: Actually, )Tj +/TT8 1 Tf +5.0391 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +( uses its own versions of )Tj +/TT8 1 Tf +11.0171 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +(, \(called )Tj +/TT8 1 Tf +3.6987 0 TD +(ADV-PROG, ADV-)Tj +-36.9219 -1.2889 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(ADV-RETURN)Tj +/TT6 1 Tf +6.001 0 TD +(\) to enable advising these functions.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT15 19 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +38 0 obj +<< +/Length 12172 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 493.4999 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-9)Tj +/TT13 1 Tf +10 0 0 10 324.52 612 Tm +(BREAKING, TRACING, AND ADVISING)Tj +/TT4 1 Tf +-24.652 -4.38 TD +(Advise Functions)Tj +/TT8 1 Tf +9 0 0 9 78 552.54 Tm +(ADVISE)Tj +/TT6 1 Tf +3.6 0 TD +0.2467 Tw +[( is a function of four arguments: )]TJ +/TT10 1 Tf +16.1525 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.7467 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.7467 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.2467 Tw +(, and )Tj +/TT10 1 Tf +2.9362 0 TD +0 Tw +(WHAT)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT19 1 Tf +0.25 0 TD +( )Tj +/TT10 1 Tf +0.4967 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2467 Tw +[( is the function to be)]TJ +-35.1303 -1.2889 TD +0.0467 Tw +(modified by advising, )Tj +/TT10 1 Tf +10.1136 0 TD +0 Tw +(WHAT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +[( is the modification, or piece of advice.)]TJ +/TT19 1 Tf +17.3257 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2967 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0467 Tw +[( is either )]TJ +/TT8 1 Tf +4.1571 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5467 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0467 Tw +(, or)Tj +/TT8 1 Tf +-43.8416 -1.2889 TD +0 Tw +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +(, and indicates whether the advice is to operate )Tj +/TT8 1 Tf +21.5578 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5611 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0611 Tw +(, or)Tj +/TT8 1 Tf +1.502 0 TD +0.1467 Tw +[( AROUND)]TJ +/TT6 1 Tf +4.3474 0 TD +0.0611 Tw +[( the body of the)]TJ +-38.17 -1.2889 TD +0.0478 Tw +(function definition.)Tj +/TT19 1 Tf +8.5868 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2978 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0478 Tw +[( specifies exactly where in the list of advice the new advice is to be placed,)]TJ +-11.8851 -1.2889 TD +0 Tw +(e.g., )Tj +/TT8 1 Tf +2.224 0 TD +(FIRST)Tj +/TT6 1 Tf +3.0005 0 TD +0.1889 Tw +(, or )Tj +/TT8 1 Tf +2.0687 0 TD +0.4533 Tw +(\(BEFORE PRINT\))Tj +/TT6 1 Tf +8.8547 0 TD +0.1889 Tw +[( meaning before the advice containing )]TJ +/TT8 1 Tf +18.2686 0 TD +0 Tw +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +0.1889 Tw +(, or )Tj +/TT8 1 Tf +2.0687 0 TD +0.4533 Tw +(\(AFTER 3\))Tj +/TT6 1 Tf +-39.4857 -1.2889 TD +0.0144 Tw +(meaning after the third piece of advice, or even )Tj +/TT8 1 Tf +21.2369 0 TD +0.0356 Tw +(\(: TTY:\))Tj +/TT6 1 Tf +4.8363 0 TD +0.0144 Tw +[(. If )]TJ +/TT10 1 Tf +1.7133 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0144 Tw +[( is specified, )]TJ +/TT8 1 Tf +5.7108 0 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0144 Tw +[( first checks)]TJ +-40.0984 -1.2889 TD +0.1656 Tw +(to see if it is one of )Tj +/TT8 1 Tf +9.6047 0 TD +0 Tw +(LAST)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6656 0 TD +(BOTTOM)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.6656 0 TD +(END)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6656 0 TD +(FIRST)Tj +/TT6 1 Tf +3.0005 0 TD +0.1656 Tw +(, or )Tj +/TT8 1 Tf +2.022 0 TD +0 Tw +(TOP)Tj +/TT6 1 Tf +1.8003 0 TD +0.1656 Tw +[(, and operates accordingly. Otherwise, it)]TJ +-26.2254 -1.2889 TD +0.04 Tw +(constructs an appropriate edit command and calls the editor to insert the advice at the corresponding)Tj +0 -1.2222 TD +0 Tw +(location.)Tj +0 -2 TD +(Both )Tj +/TT10 1 Tf +2.4605 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1456 Tw +[( and )]TJ +/TT10 1 Tf +2.484 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1455 Tw +[( are optional arguments, in the sense that they can be omitted in the call to)]TJ +/TT8 1 Tf +-10.3454 -1.2889 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1722 Tw +(. In other words, )Tj +/TT8 1 Tf +8.2455 0 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1722 Tw +[( can be thought of as a function of two arguments )]TJ +/TT8 1 Tf +24.0668 0 TD +0 Tw +(\(ADVISE)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.4222 0 TD +(FN)Tj +-44.1364 -1.2889 TD +(WHAT)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0522 Tw +(, or a function of three arguments: )Tj +/TT8 1 Tf +15.6517 0 TD +0 Tw +(\(ADVISE)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(WHAT)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0522 Tw +(, or a function of four arguments:)Tj +/TT8 1 Tf +-30.3606 -1.2889 TD +0 Tw +(\(ADVISE)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.29 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.6957 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.29 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.29 0 TD +(WHAT)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +(. Note that the advice is always the )Tj +/TT19 1 Tf +15.9704 0 TD +0 Tw +(last)Tj +/TT6 1 Tf +1.4438 0 TD +0.04 Tw +[( argument. If )]TJ +/TT10 1 Tf +6.1141 0 TD +0 Tw +(WHEN )Tj +/TT8 1 Tf +3.096 0 TD +0.0956 Tw +(= NIL)Tj +/TT6 1 Tf +3.096 0 TD +0 Tw +(,)Tj +/TT8 1 Tf +-45.0884 -1.2889 TD +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +( is used. If )Tj +/TT10 1 Tf +4.7515 0 TD +(WHERE)Tj +/TT8 1 Tf +3.0005 0 TD +( = NIL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(LAST)Tj +/TT6 1 Tf +2.4004 0 TD +( is used.)Tj +/TT8 1 Tf +-15.1869 -2.0667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADVISE)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(WHEN)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(WHERE)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(WHAT)Tj +/TT8 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +23.5184 0 TD +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0889 Tw +[( is the function to be advised, )]TJ +/TT10 1 Tf +13.8161 0 TD +0 Tw +(WHEN)Tj +/TT8 1 Tf +2.4004 0 TD +0.2133 Tw +[( = BEFORE)]TJ +/TT6 1 Tf +5.8275 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5889 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0889 Tw +(, or )Tj +/TT8 1 Tf +1.8687 0 TD +0 Tw +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5889 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0889 Tw +[( specifies)]TJ +-35.8922 -1.2889 TD +0 Tw +(where in the advice list the advice is to be inserted, and )Tj +/TT10 1 Tf +24.6768 0 TD +(WHAT)Tj +/TT6 1 Tf +2.4004 0 TD +( is the piece of advice.)Tj +-27.0772 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9244 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0003 Tc +0.0041 Tw +( is of the form )Tj +/TT8 1 Tf +6.4099 0 TD +0 Tc +0 Tw +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +6 0 0 6 219.02 328.54 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 222.62 330.54 Tm +( )Tj +/TT8 1 Tf +0.2544 0 TD +(IN)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.2544 0 TD +(FN)Tj +6 0 0 6 248.8 328.54 Tm +(2)Tj +/TT8 1 Tf +9 0 0 9 252.4 330.54 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5044 0 TD +(FN)Tj +6 0 0 6 273.14 328.54 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 276.74 330.54 Tm +0.0003 Tc +0.0041 Tw +( is changed to )Tj +/TT10 1 Tf +6.3586 0 TD +0 Tc +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +1.8003 0 TD +0.0004 Tc +0.004 Tw +( throughout )Tj +/TT10 1 Tf +5.5743 0 TD +0 Tc +0 Tw +(FN)Tj +6 0 0 6 448.93 328.54 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 452.53 330.54 Tm +0.0044 Tw +(, as with)Tj +-36.2811 -1.3944 TD +0.0522 Tw +(break, and then )Tj +/TT10 1 Tf +7.3022 0 TD +0 Tw +(FN1)Tj +/TT8 1 Tf +1.8003 0 TD +(-IN-)Tj +/TT10 1 Tf +2.4004 0 TD +(FN2)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( is used in place of )]TJ +/TT10 1 Tf +8.7118 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0522 Tw +[(. If )]TJ +/TT10 1 Tf +1.8266 0 TD +0 Tw +(FN)Tj +6 0 0 6 362.19 315.99 Tm +(1)Tj +/TT6 1 Tf +9 0 0 9 365.79 317.99 Tm +0.0522 Tw +[( and/or )]TJ +/TT10 1 Tf +3.8442 0 TD +0 Tw +(FN)Tj +6 0 0 6 411.19 315.99 Tm +(2)Tj +/TT6 1 Tf +9 0 0 9 414.79 317.99 Tm +0.0522 Tw +[( are lists, they are)]TJ +-32.0878 -1.3944 TD +0 Tw +(distributed as with )Tj +/TT8 1 Tf +8.6172 0 TD +(BREAK0)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-12.2178 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( is broken, it is unbroken before advising.)Tj +-2.1201 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( is not defined, an error is generated, )Tj +/TT8 1 Tf +16.4688 0 TD +(NOT A FUNCTION)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-26.9902 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9499 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.03 Tw +[( is being advised for the first time, i.e., if )]TJ +/TT8 1 Tf +18.26 0 TD +0 Tw +(\(GETP )Tj +/TT10 1 Tf +3.6717 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0711 Tw +[( ADVISED\) = NIL)]TJ +/TT6 1 Tf +9.8149 0 TD +0.03 Tw +(, a )Tj +/TT8 1 Tf +1.31 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +-36.4069 -1.2889 TD +0.09 Tw +(is generated and stored on the property list of )Tj +/TT10 1 Tf +21.2812 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.09 Tw +[( under the property )]TJ +/TT8 1 Tf +9.3165 0 TD +0 Tw +(ADVISED)Tj +/TT6 1 Tf +4.2007 0 TD +0.09 Tw +(, and the)Tj +/TT8 1 Tf +-35.9986 -1.2889 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1167 Tw +[( is defined with the original definition of )]TJ +/TT10 1 Tf +19.1174 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1167 Tw +[(. An appropriate expr definition is)]TJ +-23.9182 -1.2889 TD +0.1811 Tw +(then created for )Tj +/TT10 1 Tf +7.7704 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1811 Tw +(, using private versions of )Tj +/TT8 1 Tf +12.6033 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6811 0 TD +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1811 Tw +(, and )Tj +/TT8 1 Tf +2.8051 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1811 Tw +(, so that these)Tj +-33.4615 -1.2889 TD +0.0522 Tw +[(functions can also be advised. Finally, )]TJ +/TT10 1 Tf +17.6131 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0522 Tw +[( is added to the \(front of\) )]TJ +/TT8 1 Tf +11.6283 0 TD +0 Tw +(ADVISEDFNS)Tj +/TT6 1 Tf +6.001 0 TD +0.0522 Tw +(, so that)Tj +/TT8 1 Tf +-36.4425 -1.2889 TD +0 Tw +(\(UNADVISE T\))Tj +/TT6 1 Tf +7.2012 0 TD +( always unadvises the last function advised.)Tj +-7.2012 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( has been advised before, it is moved to the front of )Tj +/TT8 1 Tf +22.8506 0 TD +(ADVISEDFNS)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +-30.9717 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9766 0 TD +(WHEN)Tj +/TT8 1 Tf +2.4004 0 TD +0.1356 Tw +[( = BEFORE)]TJ +/TT6 1 Tf +5.672 0 TD +0.0567 Tw +[( or )]TJ +/TT8 1 Tf +1.5543 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0567 Tw +[(, the advice is inserted in )]TJ +/TT10 1 Tf +11.8483 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0567 Tw +(s definition either )Tj +/TT8 1 Tf +8.5059 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0567 Tw +[( or)]TJ +/TT8 1 Tf +-38.7588 -1.2889 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0021 Tw +( the original body of the function. Within that context, its position is determined by)Tj +/TT10 1 Tf +-3.0005 -1.2889 TD +0 Tc +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.04 Tw +[(. If )]TJ +/TT10 1 Tf +1.7899 0 TD +0 Tw +(WHERE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0967 Tw +[( = LAST)]TJ +/TT6 1 Tf +4.394 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.54 0 TD +(BOTTOM)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.54 0 TD +(END)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +(, or )Tj +/TT8 1 Tf +1.7709 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +(, the advice is added following all other)Tj +-22.237 -1.2889 TD +0.1467 Tw +[(advice, if any. If )]TJ +/TT10 1 Tf +8.3051 0 TD +0 Tw +(WHERE)Tj +/TT8 1 Tf +3.0005 0 TD +0.3522 Tw +[( = FIRST)]TJ +/TT6 1 Tf +5.5052 0 TD +0.1467 Tw +[( or )]TJ +/TT8 1 Tf +1.7343 0 TD +0 Tw +(TOP)Tj +/TT6 1 Tf +1.8003 0 TD +0.1467 Tw +(, the advice is inserted as the first piece of)Tj +-20.3454 -1.2889 TD +0.1322 Tw +[(advice. Otherwise, )]TJ +/TT10 1 Tf +9.1325 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1322 Tw +[( is treated as a command for the editor, similar to )]TJ +/TT8 1 Tf +23.4134 0 TD +0 Tw +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +-39.7471 -1.2889 TD +(e.g., )Tj +/TT8 1 Tf +2.0352 0 TD +(\(BEFORE 3\))Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(AFTER PRINT\))Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +-16.3374 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9266 0 TD +(WHEN )Tj +/TT8 1 Tf +3.016 0 TD +0.0156 Tw +(= AROUND)Tj +/TT6 1 Tf +4.8163 0 TD +0.0067 Tw +(, the body is substituted for )Tj +/TT8 1 Tf +12.3984 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0067 Tw +[( in the advice, and the result becomes the)]TJ +-21.7575 -1.2889 TD +0.01 Tw +(new body, e.g., )Tj +/TT8 1 Tf +6.9763 0 TD +0.0233 Tw +(\(ADVISE FOO AROUND \(RESETFORM \(OUTPUT T\) *\)\))Tj +/TT6 1 Tf +28.3446 0 TD +0.01 Tw +(. Note that)Tj +-35.3209 -1.2889 TD +0.0067 Tw +(if several pieces of )Tj +/TT8 1 Tf +8.3802 0 TD +0 Tw +(AROUND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0067 Tw +[( advice are specified, earlier ones will be embedded inside later)]TJ +-11.9808 -1.2889 TD +0 Tw +(ones. The value of )Tj +/TT10 1 Tf +8.5215 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +( is ignored.)Tj +ET +endstream +endobj +39 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +41 0 obj +<< +/Length 8152 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-10)Tj +/TT13 1 Tf +10 0 0 10 102 612 Tm +(MEDLEY REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(Finally )Tj +/TT8 1 Tf +3.5718 0 TD +(\(LIST)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.5044 0 TD +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.5044 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.5044 0 TD +(WHAT)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.2544 Tw +[( is added \(by )]TJ +/TT8 1 Tf +6.9865 0 TD +0 Tw +(ADDPROP)Tj +/TT6 1 Tf +4.2007 0 TD +0.2544 Tw +(\) to the value of property)Tj +/TT8 1 Tf +-27.6742 -1.2889 TD +0 Tw +(ADVICE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1833 Tw +[( on the property list of )]TJ +/TT10 1 Tf +11.2255 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1833 Tw +(, so that a record of all the changes is available for)Tj +-16.0263 -1.2889 TD +0.03 Tw +[(subsequent use in readvising. Note that this property value is a list of the advice in order)]TJ +0 -1.2222 TD +0.0156 Tw +(of calls to )Tj +/TT8 1 Tf +4.4973 0 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0156 Tw +(, not necessarily in order of appearance of the advice in the definition of)Tj +/TT10 1 Tf +-8.0979 -1.2889 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-1.2002 -2.0667 TD +(The value of )Tj +/TT8 1 Tf +5.7407 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-11.7563 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9766 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0567 Tw +[( is non-atomic, every function in )]TJ +/TT10 1 Tf +14.8918 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0567 Tw +[( is advised with the same values \(but copies\) for)]TJ +/TT10 1 Tf +-18.2687 -1.2889 TD +0 Tw +(WHEN)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(WHAT)Tj +/TT6 1 Tf +2.4004 0 TD +(. In this case, )Tj +/TT8 1 Tf +6.1387 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +( returns a list of individual functions.)Tj +/TT15 1 Tf +-20.4834 -2.0667 TD +(Note)Tj +/TT6 1 Tf +2.2222 0 TD +0.05 Tw +[(: Advised functions can be broken. However if a function is broken at the time it is)]TJ +-2.2222 -1.2222 TD +0.1189 Tw +[(advised, it is first unbroken. Similarly, advised functions can be edited, including their)]TJ +T* +0.0267 Tw +(advice. )Tj +/TT8 1 Tf +3.693 0 TD +0 Tw +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0267 Tw +[( will still restore the function to its unadvised state, but any changes to)]TJ +-8.4938 -1.2889 TD +0.0589 Tw +[(the body of the definition will survive. Since the advice stored on the property list is the)]TJ +0 -1.2222 TD +0.0733 Tw +(same structure as the advice inserted in the function, editing of advice can be performed)Tj +T* +0 Tw +(on either the functions definition or its property list.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UNADVISE)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 220.2035 381.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 381.4 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.2133 Tw +(An nlambda nospread like )Tj +/TT8 1 Tf +12.888 0 TD +0 Tw +(UNBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.2133 Tw +[(. It takes an indefinite number of functions and)]TJ +-17.0887 -1.2889 TD +0.0778 Tw +(restores them to their original unadvised state, including removing the properties added)Tj +0 -1.2222 TD +0 Tw +(by )Tj +/TT8 1 Tf +1.6127 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.2533 Tw +(. )Tj +/TT8 1 Tf +1.2567 0 TD +0 Tw +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2533 Tw +[( saves on the list )]TJ +/TT8 1 Tf +8.7554 0 TD +0 Tw +(ADVINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.2533 Tw +[( enough information to allow)]TJ +-26.0272 -1.2889 TD +0.1122 Tw +(restoring a function to its advised state using )Tj +/TT8 1 Tf +21.0037 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1122 Tw +(. )Tj +/TT8 1 Tf +0.9744 0 TD +0 Tw +(ADVINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.1122 Tw +[( and )]TJ +/TT8 1 Tf +2.4173 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +-35.1973 -1.2889 TD +0.2633 Tw +(thus correspond to )Tj +/TT8 1 Tf +9.3696 0 TD +0 Tw +(BRKINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.2633 Tw +[( and )]TJ +/TT8 1 Tf +2.7195 0 TD +0 Tw +(REBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.2633 Tw +[(. If a function contains the property)]TJ +/TT8 1 Tf +-22.2908 -1.2889 TD +0 Tw +(READVICE)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +( moves the current value of the property )Tj +/TT8 1 Tf +18.1113 0 TD +(ADVICE)Tj +/TT6 1 Tf +3.6006 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(READVICE)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-37.9863 -2.0667 TD +(\(UNADVISE\))Tj +/TT6 1 Tf +6.001 0 TD +0.0956 Tw +[( unadvises all functions on )]TJ +/TT8 1 Tf +12.5471 0 TD +0 Tw +(ADVISEDFNS)Tj +/TT6 1 Tf +6.001 0 TD +0.0956 Tw +[( in reverse order, so that the most)]TJ +-24.5491 -1.2889 TD +0 Tw +(recently advised function is unadvised last. It first sets )Tj +/TT8 1 Tf +24.4961 0 TD +(ADVINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-33.6694 -2.0667 TD +0.6167 Tw +(\(UNADVISE T\))Tj +/TT6 1 Tf +7.8178 0 TD +0.2567 Tw +[( unadvises the first function of )]TJ +/TT8 1 Tf +15.2607 0 TD +0 Tw +(ADVISEDFNS)Tj +/TT6 1 Tf +6.001 0 TD +0.2567 Tw +(, i.e., the most recently)Tj +-29.0795 -1.2889 TD +0 Tw +(advised function.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(READVISE)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\) )Tj +/TT13 1 Tf +10 0 0 10 220.2035 227.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 227.66 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.0833 Tw +(An nlambda nospread like )Tj +/TT8 1 Tf +12.368 0 TD +0 Tw +(REBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.0833 Tw +[( for restoring a function to its advised state without)]TJ +-16.5687 -1.2889 TD +0.0756 Tw +(having to specify all the advise information. For each function on )Tj +/TT10 1 Tf +29.858 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5756 0 TD +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0756 Tw +[( retrieves)]TJ +-35.8344 -1.2889 TD +0.2178 Tw +(the advise information either from the property )Tj +/TT8 1 Tf +22.8018 0 TD +0 Tw +(READVICE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2178 Tw +[( for that function, or from)]TJ +/TT8 1 Tf +-27.6026 -1.2889 TD +0 Tw +(ADVINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.2078 Tw +[(, and performs the corresponding advise operation\(s\). It also stores this)]TJ +-6.001 -1.2889 TD +0.0067 Tw +(information on the property )Tj +/TT8 1 Tf +12.7161 0 TD +0 Tw +(READVICE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0067 Tw +[( if not already there. If no information is found for)]TJ +-17.5169 -1.2889 TD +0 Tw +(a particular function, value is )Tj +/TT8 1 Tf +13.2061 0 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( - )Tj +/TT8 1 Tf +0.833 0 TD +(NO ADVICE SAVED\))Tj +/TT6 1 Tf +9.6016 0 TD +(.)Tj +/TT8 1 Tf +-25.4409 -2.0667 TD +(\(READVISE\))Tj +/TT6 1 Tf +6.001 0 TD +( readvises everything on )Tj +/TT8 1 Tf +11.1069 0 TD +(ADVINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT8 1 Tf +-23.1089 -2.0667 TD +0.5989 Tw +(\(READVISE T\))Tj +/TT6 1 Tf +7.8001 0 TD +0.25 Tw +[( readvises the first function on )]TJ +/TT8 1 Tf +15.1587 0 TD +0 Tw +(ADVINFOLST)Tj +/TT6 1 Tf +6.001 0 TD +0.25 Tw +(, i.e., the function most)Tj +-28.9597 -1.2889 TD +0 Tw +(recently unadvised.)Tj +0 -2 TD +0.0889 Tw +(A difference between )Tj +/TT8 1 Tf +9.9527 0 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5889 0 TD +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0889 Tw +(, and )Tj +/TT8 1 Tf +2.6207 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0889 Tw +[( versus )]TJ +/TT8 1 Tf +3.5674 0 TD +0 Tw +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5889 0 TD +(UNBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.0889 Tw +(, and)Tj +/TT8 1 Tf +-37.7219 -1.2889 TD +0 Tw +(REBREAK)Tj +/TT6 1 Tf +4.2007 0 TD +0.0733 Tw +(, is that if a function is not rebroken between successive )Tj +/TT8 1 Tf +25.5498 0 TD +0 Tw +(\(UNBREAK\))Tj +/TT6 1 Tf +5.4009 0 TD +0.0733 Tw +(s, its break)Tj +-35.1514 -1.2889 TD +0.01 Tw +[(information is forgotten. However, once )]TJ +/TT8 1 Tf +18.3198 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.01 Tw +[( is called on a function, that functions)]TJ +-23.1205 -1.2889 TD +0.1244 Tw +(advice is permanently saved on its property list \(under )Tj +/TT8 1 Tf +25.6307 0 TD +0 Tw +(READVICE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1244 Tw +(\); subsequent calls to)Tj +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +44 0 obj +<< +/Length 3074 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 489 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(15-11)Tj +/TT13 1 Tf +10 0 0 10 324.52 612 Tm +(BREAKING, TRACING, AND ADVISING)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0522 Tw +[( will not remove it. In fact, calls to )]TJ +/TT8 1 Tf +15.991 0 TD +0 Tw +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0522 Tw +[( update the property )]TJ +/TT8 1 Tf +9.6156 0 TD +0 Tw +(READVICE)Tj +/TT6 1 Tf +-35.2082 -1.2889 TD +0.0467 Tw +(with the current value of the property )Tj +/TT8 1 Tf +17.3247 0 TD +0 Tw +(ADVICE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0467 Tw +(, so that the sequence )Tj +/TT8 1 Tf +9.8744 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.5467 0 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +(,)Tj +/TT8 1 Tf +-39.7478 -1.2889 TD +(UNADVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0156 Tw +[( causes the augmented advice to become permanent. The sequence )]TJ +/TT8 1 Tf +30.1472 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +(,)Tj +/TT8 1 Tf +-39.7487 -1.2889 TD +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.6633 0 TD +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1633 Tw +[( removes the intermediate advice by restoring the function to its)]TJ +-9.0647 -1.2889 TD +0 Tw +(earlier state.)Tj +/TT8 1 Tf +-2.6667 -2.1489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADVISEDUMP)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(X)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT13 1 Tf +10 0 0 10 196.0553 503.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 503.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1067 Tw +(Used by )Tj +/TT8 1 Tf +4.1142 0 TD +0 Tw +(PRETTYDEF)Tj +/TT6 1 Tf +5.4009 0 TD +0.1067 Tw +[( when given a command of the form )]TJ +/TT8 1 Tf +17.1746 0 TD +0.2556 Tw +(\(ADVISE ...\))Tj +/TT6 1 Tf +7.4567 0 TD +0.1067 Tw +[( or )]TJ +/TT8 1 Tf +1.6543 0 TD +0 Tw +(\(ADVICE)Tj +-35.8007 -1.2889 TD +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +0.2922 Tw +(. If )Tj +/TT10 1 Tf +2.0044 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.7011 Tw +[( = T)]TJ +/TT6 1 Tf +3.8026 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.7922 0 TD +(ADVISEDUMP)Tj +/TT6 1 Tf +6.001 0 TD +0.2922 Tw +[( writes both a )]TJ +/TT8 1 Tf +7.4252 0 TD +0 Tw +(DEFLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.2922 Tw +[( and a )]TJ +/TT8 1 Tf +3.8195 0 TD +0 Tw +(READVISE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2922 Tw +[(; this)]TJ +-37.0471 -1.2889 TD +0.1833 Tw +(corresponds to )Tj +/TT8 1 Tf +7.185 0 TD +0.4411 Tw +(\(ADVISE ...\))Tj +/TT6 1 Tf +7.6423 0 TD +0.1833 Tw +[(. If )]TJ +/TT10 1 Tf +2.2199 0 TD +0 Tw +(FLG )Tj +/TT8 1 Tf +2.8415 0 TD +0.4411 Tw +(= NIL)Tj +/TT6 1 Tf +3.4416 0 TD +0.1833 Tw +(, only the )Tj +/TT8 1 Tf +4.9123 0 TD +0 Tw +(DEFLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.1833 Tw +[( is written; this)]TJ +-32.4433 -1.2889 TD +0.4711 Tw +(corresponds to )Tj +/TT8 1 Tf +7.7606 0 TD +1.13 Tw +(\(ADVICE ...\))Tj +/TT6 1 Tf +8.3312 0 TD +0.4711 Tw +(. In either case, )Tj +/TT8 1 Tf +8.7023 0 TD +0 Tw +(ADVISEDUMP)Tj +/TT6 1 Tf +6.001 0 TD +0.4711 Tw +[( copies the advise)]TJ +-30.795 -1.2889 TD +0.2622 Tw +(information to the property )Tj +/TT8 1 Tf +13.4825 0 TD +0 Tw +(READVICE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2622 Tw +(, thereby making it permanent as described)Tj +-18.2833 -1.2889 TD +0 Tw +(above.)Tj +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +48 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +49 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +50 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +51 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +52 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +53 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBHEBE+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 54 0 R +>> +endobj +54 0 obj +<< +/Filter /FlateDecode +/Length 20016 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($CkE`Bi C9͎~03K6JJ4H#ZKS))R &EEZ>*R +B1MO3{w{s}ͼ ُ0L|`I'5-PMOEd\<*QV "@rqcTP y4~)w@j/Xܑu(28uxpr;8p?tA&~O}p{A+t7\k6p"gHMs p&rXMYsn2D6@!v6luD 6qs12\LsTWa?vh,7U$a8`, + 6rCJCtg5܁Nn`J09pϮ߀ pXk=[;F%y>cy=*PЀ>.̳d$[U|a0#C 0y77WXsmpPW*~+9 kFWq~t(Wv09"9p/W(.Ll^r27My$ _I'\ƒMd\?Fpz/~#бl(Uc p7M'`|yYdf[dXX2@TBVrx L%,=:?hEӠωLD|N~Ty.z8S{LfwX'LLSJch&&D{L𣔎0OfNo}o6c(=y%dfvZd0Iye2}8> \N7~{|`b.gʵOo㼓d5g,@g ,B4fi6.ƥ6.6.6qm\ccOXkZill|zq?l`6c?g UEǼ(Dh¤?4jtAB6!] j,3QԨjV4 +!-џ;Z¿T0|7J,)+pSѐKL7W)y0V"iN鯥05F`NIuˮb$j\~b:QѶyhhA5Oh5 Auok+uhq%!RMS1 =Y nN"a{MJZc&ng[ć0ZOb)* SW c/m;ř" +mE?mS;"cnboݨϧӐFi_Bߌ*c"c(>FCnTu^i/bUWeaþZke7|MF}tMP#`̌(fm+c= M1Kc;t۲dF%NK-2zJ|aO/ z{}@d$"h0F K!e3񳽄&׏;c>5S4a_7{)QzE~.EsRܖ7,-ptˌ_ɴi_߼*[Z#}Mva~>T[Nfw|[7f+7M .[vrAlʺKKRƜԱ}KuΪkq7yj}R˪FwwzuisPBAsl΁aM՝fV dP_6MgLʚs+ +VZe8adTu" Z6 AK%jhI% @&uU5T:9%LDTQnk2L6I !qgsުΨpIVSgdbE/W(bq6.{=$2#BB܂_YG,ݭMff4їSsp/joѨr@9H $2]s cr&ǀEF lrdyb0: שTXv4yG8%TJFhdqp [UR*36F#Ǘ9fܦ|3`{>ߑH@ګۅ-ofyngԇTM UׇL*ߡVV?wgPBO^ˎp}ҡ#>)V X>SK(ċ$F1XsS>:F+;m,zdW*cg!6Yמk) =ni \an-PtܦOgҧfڥs6JB@-Y1GZr/ģ:gI.*;hj|d'ie6)d>|)Fo{>.?? ?{y_y|DMfS) M%݂;(3 *$fΩG83EȤƑCJ4 !VlL2aX)Ccm>菘*$kʢ_uK&z~2NF?rJKLH6R+4b ݒ&c6S+Q'b]vdQEτ1,װc?PcEpՌިd3A> sШ +8eݎg3-G{})f2Ͷ Lym;-ZRe_w3LKP` ji7Zaڭ-BesK-$MY8L]]iFsdj*SZRFu|H$|5jѵdA %*l`=c%=oz4 +GڮągmTc) >U"$|05#ec{sNR sA6VcK!۲Ǥ:'(YMQr LIJ'9 2Gv+M[8j:شVLH0 zwC("E}ϝ{Ck7ȰÒoo[m]խ/Xb@)W4=e.ąF>faru&g N8j_b[LxOfY/#qod~>r]QL-慌(9IqyKOo'K`/TgӷgkSu?ږغ`9dmƺ"J|_Ҩk8Q+ؑr{K1)7?g$lBj/.zt$v[n~Ʀ%G~@-5T& "=/Px،OesgG:7竂IЦE.WA41 .-vqFFK}U[ka^ifmvȲ-,k \V+"Vr>.(oZbe -3aq4/ݴuL2hb gY]T7vyQ YY2;l,|y1x,,^p߳z&ؼ@ь)TgJ~%l~4sG@-| lyD-i__fA5LFoJa^jtl^Jk؟ ɪ~u%Em!t\Yq.E%,-*?J$]J~ƣ졖.ru>q)Fe1J9Ky\ʱ)l`xl>kge@b< سb"ulp4*#XE?yop|box>wW +4^@c[orz̲[Bn+/LkI/^G>aa4"$Өòd)P7~39Sw\`>%8ۺE\z쿲tVw[JL:_.߳{C\*ZD[nfeA)}SR{,-5rRK,Yi Tjnr/Wrݭ`Y'4azwCBU?l`i5_&JOO0]^G8pރop +TQTQ2ڍ8:N_ߢz]BW?-L5x-Vpn_O7p6.xOis:~'O8xd UϒH=i -.$˟KUyHEVũ$+)G*)T%[yZ<)%|A] GH S$Xcb UXb1¿Leۨ ĆG +XqN%̱bslFIChCn,lX9ָ`*6bf(}>< +8ԉyDŷ*rD$;INWA;BQF`ahZ$z*S) ,` W[j,k`5& ~W1Byfc!!-\)|C4vZw`!T?b֥իYѪb-#C <Ƃ +$ɱÎXvn?kmBEnXoki{GZ8-oͯvX.5<6Zs0F>`۝jQptM2է y%CqOG8?0G,yKN{/O{%H~}pRc%-O5y%nN8R"[WQ>{&d4mx,>:l/r4U -cUFG:)oWpt+uD Yzt }V}Q78UGVfyiuه;VM;Z*_j#o{?AVF$QyLH{lϕou~Ru&y>3DC&,n8 +˜<# X5Vϝ&I,lDT{C!L6W('ql&0  sbM}** +U8#T<dI'/SpF*6[ho|y2?<}e.*QQ)Jظiw+ޟ$qvdƿ657|k?ouLCuw@!k+-y+سoK@S?>5wH˿2>7mzhЁa:ԨuB8g3' fpБ1#i(qìL~cӑ;Pi Oキٽۄ xG8D.A%#`d5 P[HK'(ޑ9jP {9 3:zر^$v/%ةt߻~w+M qS +X R,9kUD\D1&4.IV(ɻ("K,+>QuMٰ̽Nsj̭/]2CpzIǫ/ +6| `jM-_`SrXNuwlʎ~;ImsOx"JOUm3m|$HW{Vtćc:ڞ ͼ~׃ci0.ecV!sCu9|=*a7ս}k^W'Mx"v쑲U[F>[Uw`񉍵=t{H]CڑC-z|!̜_7g]2tff7ށ.7^_MuVl7OChOeSAU(u=Os4MDSdU rڭR47.x9]?W/iWi5E\sÝ4nᨉ6ow~ou6nm3?Ň.<o3(GH;_ Swݺ J7S뛳7>`ZGo}tMևLaw&)T'(+.-730*4<%Fd.SةHJOiĸR:8Pviѩ{GNMsFƿ=ajmF*e I>6c<<`}OP<%y@-U0PO͂j ݨ~`1aG`=lvh_>8G(<긫9x50r&ע܄j:Y| =b%d4fBI.49J~ +}9IHL^#o-Pj4i.U!uj +ZI:z7.]D*i/Qg=M('k4N/ҿ,]ƢֺPmMaQmY-Ǿ2VUak:T^Ml3kf?CՆX'X;ZYJjXJ >(F+Jݍ Uqz㼱gM1]Ev[2\! +͝ϳEKi-%Ra+)c\ +[1؂Ue3y Pqif{LʺhG2T mSAO&)Qb3DAcݛC ƻ/M+W &ƇXJPvҰ, I<U3Lxlca b `!iYl#BbS,?OE;y-o2g}LcA=KA<1&*CJՂl{03x)0(]GlwFEӿ22 yc@:'AvMev{^i?8~.z7!)<(Q'oLa9X$'!V4K[E,b5E E<F:@4^nlӿ^2%.X  r+,Xhd3dejw( =`J_b'`,& ^Rö$ I7,4IQ%l:Bz։w!0ƿfI%:-N hn3}ZȽ'Xаc(`%˲,R >Q}<DSӃنm߁,,,lȭ߻E #*;D3㕀0._-X,RTGRq=NU-M >1K9~[ZZ7RӢF,,jd] +r=0]gW`$Yǁk:lvɲsIL4>`DoCwnsYw>@Y\th`\ c ^TMj edkA1|FE\%}!7R,X1E]yO0MwRBUW7D ~9ޗZ^P]%)MF 7J:播 heef5#_qeӵo f\r'D}`ĕR !#PH]'Qj/}ʞ·6'BFׂ bZɤ훥A)U6 qN&nwv7#nTJ+SUk1hgi5?'G3h2JUhh90`˫xӇ5_RܪpgXh߿zJ]>;s_$т g'Yҙ1J B#7͖CmCJN7#H %X&[cn\6ddxwKFSTi‘=J )RV"#j[PR4#io켺J.h1SPSE]Z̞]C 6}0N׸EQ,Еu ^)K 5mYe:8Zxzw9xmGw]|Hǹ!t׵bvJc|Os'T&hmi΋漸͋)%RƓ6 -d_G)E c.-:\IuCP6nEBXp-kuYLg=uvdb:uPZ∞"HǼY8Պ7)nu$?0+ţ5/{!p]h`ʓڀ=ua:²ŅȂH -&5\j".EM߻4!Cɘg.h  +tkׂPh] z}7:b)A󂍍zdFvC+s;^ou+@㠛4-Yft*3m Ԓ {Se¶u;^͓ZO"@ gne2F8qZh\_Fu*-Zt»dv -?aq@J9ђ<'&̞ W /gH !:ZE YwzE!lzd:?" #qhap+h +NBSG^C&+J֬%B;}B +[,p]J&-S}z̢V."XPtG8qP\}첌|^d*ӒAu` +Plq/ɉUg!(c1z FAiֹ[+TO[PfS{E~gd%3vŭw=ƋC'!6 [7_ǜ%{P-U8z[8xrĜSfGA *oVvghd Ve)-X5rұ&-( +fj ZL2UWlA8˓b32mrW摩a9`鬮DMXjkXk],2QDZbZ@)Jky2kƂ +op Ke4e _ZoiྩE,۳{9DoMbٚ^yˏey ˚2p"Ax[_@X_stWkwkeX]F{/xX_ !I2;N0n;K6`-_+0\ǒ:Qǯ/ʺZ2 .ꑅ9L-7%9vL;&[6玎x7Hnl-S6~)77_^jpYA h׫;eu'zaM\H*,pYw =i^ޯ;wLC"YhIE埶Z؁ +#jC ,!4DM DKxSlWr-ͨ z -wJ^VMgMzԨޱU›~ms6?r"Srެ-&9X_~9hac4mwL! +dH, +2Q -v7P=%q-?/TGٯ?RD[C|?Kun|` '>JhINsx} Ӣl'zG@Zoni8_oyx8氖}~ 7{h[6_oa !O/_|_工pIVi4F*H"QIP:"\6 r%;KrH~]^/{? M)J?GJ2YyYQ+wU+GYs_%SeU[/YT3LuTruG#\pf&QQJEKdYA-(WUpA 1 H"I +h=ItA:uVy4WOaPb@7FB!=DpQ>J0"u# >2A\C`PFnF`TQĬGlCIo ]Ojp)D"Tp8D} I%$*`Y QBa:>@Hvu{gK|>D7 s +`6Hxr=tM6u2{U =p燢=kuVZZvݾVTցu'<ֱ7Wz9[;"G_!/гcc:JuxqI #K?%Ż ~b|iVȴ^9Sgf$jǎ +-c_+ jeu[5 G%7ovTӵ0ҽ#3O\,[|,:E~kcD2{™]S U7ϜhS%->/*-KnμJ#Rk[H~KԹ y%Idyڐk5W'Vykj!JCIn%;ey [`xI*Rr"UB Q/jeYwuW_>x0ô6H\c-Ug,'MUcʳܬ|f ˸.fs.Ȋ3 .8cLmk}ۀ'U]W]!hrwD88ɢnKJO$M77vG){u½8Wfx%pZ zwI+>> (z(b!C$ܵV{ @6 <oM*7ey͂`TA-,k%p1yg5Ѥ7#$t2 %Nrh2L IJJIy"d>fmd!%Kj !+HYMb0A8&a^x\%7H;*N4>b2MtͤvGbEt*Fg`XNaXCet]g6 s(ы2F7h;E;i0 egF(֋a,YX:qJM%.`fѤ\6ΩvYRݚQ|Wh@䱒'$Ǔ>Hy6:DɱQ8މUB1s~P# ;'j?؟؂6ժUr}!VXjՆ#|gKj\WMƁOTx]O;cYlػk!pݏׅʂt¬#5psGjqGjlSc햎OʮLk7z-)-* (vr1wD;kiFbC 8XOG~ +99ỳ5_p'[g`7JX#,*ػ.M/8V{Πð: RI> KO6mNsi4m6IoeXQadEaADtXpayA\azz.,_swrNJdoR.>y0JgTrd 奮>-\؏BD=JgtF}e RL)?ڣ􄪔|jۄ>nޢBZ~K]#27Kߦ,IIdSG"~|P +mbZBr!Y>FL~D$c((__tv!kTu~Le7 > x~*>$on>OyDrc?&9+)rz} +Q;{~PI?4AbVz|C|ICx_W>|Q ~M/Ǵ׮Rw/ > qF#TJ$޹Ab9+8DN.zS(b~z}#E۟;P[O}uiz\hڳ|_dz. h0U15~Ͷ)̖ vueƷuF6B/M̖ ,g#Q۞C3q6i>jHf`mCgb;kk0t6S`5Wm[ݘl0 O3Vu,OuQ +XGiFW5hm0n0C0eA+]%91i |4{;GLiuk8 +̂R#˽?6(b.Vd˄,I]Fԥ2 *4R\ {&aF"@m9q +Vm we-lnO8){k",nްDa|kh5HP^gr&al`uZ7j }7MV⶟k7|ւIPs"c;Y:ʓld j;| jj^[[[t:-4QϢƐ<`I3e!و氹3֮VZ&[#5!j6T Je4KRce\NqDt`4 fdOuVtrvǝ+ +RA*BC/>&!Q!cM /ϗ\KV{gs~wzp&v k؊:k'\ΦʎgR]"ZtRmCM6oݓ&o4ǥYzsSp#]M"$ W/1k5 /z#g}kdU*kZKu|흽K-ۑduhgQ0BR5Y]>eEsg)huk q=?u-3kU]%N$ltnns+ݿ5S_`MAc eҥ;:1+ +Vz_+iiV^e\wUKSM/G%9wߕ )1 +scGXxqtKcc4' ^8?ݯѴ%#_9JRx",⭍ȸoL!0XT>kPJiq77.=^[Sn颸GoTCɁl%HqiODWi +EZ5}hePJF:ƙӐYrEPz^ZKsi?74Q4D:j$|zљ9,$KJPaȒ u! |w;mx;v>9CFW鯤 Y!_/< < NDO--|B,BRp'1F2?\^ M"hOhdچz[DQ{ z =pǴcnf=-]p \ *2DBXW˱L0C\b;K80e2屧|P"e%\gK-^ULE졬)<"4"ZE iJ-ɡ(?Lp>f=|Dr͌j +Ls(?t>rc14z. Lg3p2N듐{ 9ƃq`,Vj<%Ep Fu㑎AyDtpa6! !HȵesBpy84(?d?p4r*~/v`>790;ӋwLzdDyh@z}E)WtRyG97U=:YmNF!\.{hz@-hڂ6j>]eEH-Z0$}ksl秌z~4$IJˏ~n~qةjގ'8ڎa 8jyl=lcދ˺IÛ[Iryp; ^qIoN*>yg8XAC2PQZz7Y;RD8i0v>|̗.fe}5Gn?ɖ dU 6kԒJaMmMϐTө>zG>YI]{esC~ΐ _% +NڜPTU+%5tw/]jvڻڍFG'1@zÝ%Qy ŲŒ+!fEUokGKoN=%7J[ָO&,duf9olxTdxlfr=|8?|fqLL4~ܯ` lia;?%nT{ +_#ާ-oS +ox'; +endstream +endobj +55 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +56 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +57 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +58 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 48 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 118 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 0 278 0 +0 556 0 0 0 556 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 0 278 0 722 0 0 722 0 +0 0 722 667 611 0 667 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 0 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 49 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 0 500 0 500 0 0 0 250 250 0 0 0 0 +0 778 611 709 774 611 556 0 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 50 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 0 0 0 0 600 0 600 600 600 0 600 600 600 0 +600 600 600 600 600 600 600 0 0 0 600 0 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 0 600 600 600 0 600 0 600 0 0 0 600 600 0 +0 0 600 600 600 600 600 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 51 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +0 0 600 600 600 600 0 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 600 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 52 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBHEBE+Symbol +/Encoding /Identity-H +/DescendantFonts [ 59 0 R ] +/ToUnicode 60 0 R +>> +endobj +59 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBHEBE+Symbol +/FontDescriptor 53 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 667 722 722 667 611 778 0 278 0 667 556 833 722 0 +0 0 722 667 611 722 667 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 55 0 R +>> +endobj +19 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 556 +0 0 0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 56 0 R +>> +endobj +20 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 48 +/LastChar 86 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 0 600 600 0 +600 0 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 57 0 R +>> +endobj +21 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 0 0 278 0 0 278 0 556 444 +0 0 389 389 333 0 500 722 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 58 0 R +>> +endobj +60 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPN0 91$nAK8D {.qK$Dn:IJ{lyi[ acᆣ'8omN&nN- Z<Z?+;dOcgF%o(hp8yy1LkD^E64"JUs$~n2,J?F/r݈]H ߉!Gsj +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +25 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 27 0 R +/Contents 26 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 39 0 R +/Contents 38 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +61 0 obj +<< +/S /D +>> +endobj +62 0 obj +<< +/Nums [0 61 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 16 0 R 22 0 R 25 0 R 28 0 R 31 0 R 34 0 R 37 0 R 40 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [43 0 R] +/Count 1 +/Parent 46 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [11 0 R 47 0 R ] +/Count 11 +/MediaBox [0 0 612 792] +>> +endobj +63 0 obj +<< +/CreationDate (D:20210202102651-06'00') +/ModDate (D:20210202102651-06'00') +/Producer (Apple pstopdf) +>> +endobj +64 0 obj +<< +/Type /Catalog +/Pages 46 0 R +/PageLabels 62 0 R +>> +endobj +xref +0 65 +0000000000 65535 f +0000113046 00000 n +0000000016 00000 n +0000005479 00000 n +0000108908 00000 n +0000109119 00000 n +0000109541 00000 n +0000110080 00000 n +0000110597 00000 n +0000111064 00000 n +0000086671 00000 n +0000114035 00000 n +0000113127 00000 n +0000005632 00000 n +0000008964 00000 n +0000111409 00000 n +0000113211 00000 n +0000009108 00000 n +0000018180 00000 n +0000111730 00000 n +0000112084 00000 n +0000112367 00000 n +0000113295 00000 n +0000018375 00000 n +0000028300 00000 n +0000113379 00000 n +0000028483 00000 n +0000038721 00000 n +0000113463 00000 n +0000038891 00000 n +0000048037 00000 n +0000113547 00000 n +0000048207 00000 n +0000056057 00000 n +0000113631 00000 n +0000056238 00000 n +0000062411 00000 n +0000113715 00000 n +0000062592 00000 n +0000074818 00000 n +0000113799 00000 n +0000074999 00000 n +0000083204 00000 n +0000113883 00000 n +0000083374 00000 n +0000086501 00000 n +0000114246 00000 n +0000114172 00000 n +0000086812 00000 n +0000087009 00000 n +0000087215 00000 n +0000087415 00000 n +0000087606 00000 n +0000087807 00000 n +0000087997 00000 n +0000108103 00000 n +0000108298 00000 n +0000108503 00000 n +0000108705 00000 n +0000111206 00000 n +0000112755 00000 n +0000113967 00000 n +0000113995 00000 n +0000114338 00000 n +0000114461 00000 n +trailer +<< +/Size 65 +/Root 64 0 R +/Info 63 0 R +/ID [] +>> +startxref +114531 +%%EOF diff --git a/docs/medley-irm/16-SEDIT.TEDIT b/docs/medley-irm/16-SEDIT.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..756a5f26d44480ffb491fd4eba8d53aaca9052b8 GIT binary patch literal 244141 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

M{m_&ItrXrCTU8=(c( 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 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/16-SEDIT.pdf b/docs/medley-irm/16-SEDIT.pdf new file mode 100644 index 00000000..ff5f28ed --- /dev/null +++ b/docs/medley-irm/16-SEDIT.pdf @@ -0,0 +1,28838 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 3938 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(SEDIT - The EDITOR)Tj +/TT6 1 Tf +0 -2 TD +(16. SEdit - The Structure Editor)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 544.99 m +558.01 544.99 l +S +BT +/TT8 1 Tf +9 0 0 9 78 522.54 Tm +0.0756 Tw +(Medleys code editors are structure editorsthey know how to take advantage of Lisp code being)Tj +0 -1.2222 TD +0 Tw +(represented as lists. One is a display editor named SEdit and the other is a TTY-based editor.)Tj +/TT6 1 Tf +12 0 0 12 54 467.64 Tm +(Starting the Editor)Tj +ET +1 w +54.01 464.49 m +558.01 464.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 450.54 Tm +(The editor is normally called using the following functions:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(DF)Tj +/TT12 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 136.6526 428.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 359.33 428.2 Tm +([NLambda NoSpread Function])Tj +-27.2589 -2.7333 TD +0.01 Tw +(Edit the definition of the function )Tj +/TT14 1 Tf +15.0912 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.01 Tw +(. )Tj +/TT10 1 Tf +0.77 0 TD +0 Tw +(DF)Tj +/TT8 1 Tf +1.2002 0 TD +0.01 Tw +[( handles exceptional cases \(the function is broken or)]TJ +-18.2616 -1.2889 TD +(advised, the definition is on the property list, the function needs to be loaded from a file, etc.\))Tj +0 -1.2222 TD +0 Tw +(the same as )Tj +/TT10 1 Tf +5.3467 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +( \(see below\).)Tj +-8.3472 -2.9556 TD +0.0222 Tw +(If you call )Tj +/TT10 1 Tf +4.7175 0 TD +0 Tw +(DF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( with a name that has no function definition, you are prompted with a choise of)]TJ +-5.9177 -1.2889 TD +0 Tw +(definers to use.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(DV)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VAR)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 147.4544 320.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 359.33 320.46 Tm +([NLambda NoSpread Function])Tj +-27.2589 -2.7333 TD +(Edit the value of the variable )Tj +/TT14 1 Tf +13.0044 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-16.138 -2.5489 TD +(\(DP)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROP)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 176.7088 272.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 359.33 272.92 Tm +([NLambda NoSpread Function])Tj +-27.2589 -2.7333 TD +0.1522 Tw +(Edit property )Tj +/TT14 1 Tf +6.5427 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.1522 Tw +[( of the symbol )]TJ +/TT14 1 Tf +7.1279 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.1522 Tw +[(. If )]TJ +/TT14 1 Tf +2.1266 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.1522 Tw +[( is not given, the whole property list of)]TJ +/TT14 1 Tf +-22.9984 -1.2889 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( is edited.)Tj +/TT10 1 Tf +-3.7337 -2.4 TD +(\(DC)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT8 1 Tf +24.1418 0 TD +([NLambda NoSpread Function])Tj +-27.2589 -2.7333 TD +(Edit the file package commands \(or filecoms, see Chapter 17\) for the file )Tj +/TT14 1 Tf +32.9551 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-36.6888 -2.4 TD +(\(ED)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NAME OPTIONS)Tj +/TT10 1 Tf +7.2012 0 TD +(\) )Tj +/TT8 1 Tf +28.8188 0 TD +([Function])Tj +-36.7367 -2.7333 TD +0.0689 Tw +(This function finds out what kind of definiton )Tj +/TT14 1 Tf +21.0858 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +[( has and lets you edit it. If NAME has)]TJ +-23.4862 -1.2889 TD +0.0067 Tw +(more than one definition \(e.g., its both a function and a macro\), you will be prompted for the)Tj +0 -1.2222 TD +0 Tw +(right one. If NAME has no definition, youll be asked what kind of definition to create.)Tj +/TT6 1 Tf +12 0 0 12 54 77.82 Tm +(Choosing Your Editor)Tj +ET +54.01 74.67 m +558.01 74.67 l +S +BT +/TT8 1 Tf +9 0 0 9 78 60.72 Tm +(The default editor may be set with )Tj +/TT10 1 Tf +15.4482 0 TD +(EDITMODE)Tj +/TT8 1 Tf +4.8008 0 TD +(:)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +14 0 obj +<< +/Length 3841 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-2)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\(EDITMODE)Tj +/TT8 1 Tf +5.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NEWMODE)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 244.057 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-36.7367 -2.7333 TD +(If )Tj +/TT14 1 Tf +0.9377 0 TD +(NEWMODE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0178 Tw +[( is )]TJ +/TT10 1 Tf +1.2504 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0178 Tw +(, sets the default editor to be SEdit; or the teletype editor \(if )Tj +/TT14 1 Tf +26.5509 0 TD +0 Tw +(NEWMODE)Tj +/TT8 1 Tf +-37.1404 -1.2889 TD +(is )Tj +/TT10 1 Tf +0.9893 0 TD +(TELETYPE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0244 Tw +[(\). Returns the previous setting. If )]TJ +/TT14 1 Tf +15.4509 0 TD +0 Tw +(NEWMODE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0244 Tw +[( is )]TJ +/TT10 1 Tf +1.2637 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0244 Tw +(, returns the previous setting)Tj +-28.5057 -1.2889 TD +0 Tw +(without setting a new editor.)Tj +/TT6 1 Tf +12 0 0 12 102 476.5 Tm +(SEdit - The Structure Editor)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 473.35 m +582.01 473.35 l +S +BT +/TT8 1 Tf +9 0 0 9 126 451.4 Tm +0.0867 Tw +[(SEdit is a structure editor. You use a structure editor when you want to edit objects instead of text.)]TJ +0 -1.2222 TD +0.1444 Tw +(SEdit is a part of the environment and operates directly on objects in the system you are running.)Tj +T* +0 Tw +(SEdit behaves differently depending on the type of objects you are editing.)Tj +4.4167 -2 TD +0.1178 Tw +[(Common )117.8(Lisp )117.8(definitions:)-1335.6(SEdit always edits a copy of a Common Lisp definition. The)]TJ +12.9167 -1.2222 TD +0.1378 Tw +(changes made while you edit a function will not be installed)Tj +T* +0 Tw +(until the edit session is complete.)Tj +0 -2 TD +0.0167 Tw +(For example, when you edit a Common Lisp function, you edit)Tj +0 -1.2222 TD +0.0444 Tw +(the definition of the function and not the executable version of)Tj +T* +0.0578 Tw +[(the function. When you end the session the comments will be)]TJ +T* +0.0001 Tc +0.0043 Tw +(stripped of the definition and the definition will be installed as)Tj +T* +0 Tc +0 Tw +(the executable version of the function.)Tj +-15.0789 -2 TD +0.0389 Tw +[(Interlisp )38.9(functions )38.9(and )38.9(macros:)-1337.7(SEdit edits the actual structure that will be run, except editing)]TJ +15.0789 -1.2222 TD +0.1378 Tw +[(the source for a compiled function. In this case, changes are)]TJ +T* +0.0433 Tw +(made and the function is unsaved when you complete the edit)Tj +T* +0 Tw +(session.)Tj +-10.1922 -2 TD +0.5111 Tw +[(All )511.1(other )511.1(structures:)-1335.3(Variables, property lists and other structures are edited)]TJ +10.1922 -1.2222 TD +0 Tw +(directly in place, i.e. SEdit installs all changes as they are made.)Tj +-17.3333 -2.8889 TD +0.2167 Tw +(If you make a severe editing error, you can abort the edit session with an Abort command \(see)Tj +0 -1.2222 TD +0.0922 Tw +[(Command Keys, below\). This command undoes all changes from the beginning of the edit session)]TJ +T* +0 Tw +(and exits from SEdit without changing your environment.)Tj +0 -2.8889 TD +0.03 Tw +(If you change the definition of an object that is being edited in an SEdit window, Medley will ask you)Tj +0 -1.2222 TD +0 Tw +(if you want to throw away the changes made there.)Tj +0 -2.8889 TD +(SEdit supports the standard Copy-Select mechanism in Medley.)Tj +/TT6 1 Tf +12 0 0 12 102 92.5 Tm +( An SEdit Session)Tj +ET +102.01 89.35 m +582.01 89.35 l +S +BT +/TT8 1 Tf +9 0 0 9 126 67.4 Tm +0.1156 Tw +[(Whenever you call SEdit, a new SEdit window is created. This SEdit window has its own process.)]TJ +0 -1.2222 TD +0.0956 Tw +(You can make edits in the window, shrink it while you do something else, expand it and edit some)Tj +T* +0 Tw +(more, and finally close the window when you are done.)Tj +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +17 0 obj +<< +/Length 2367 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-3)Tj +/TT8 1 Tf +-42.8333 60.6156 TD +0.0944 Tw +[(Throughout an edit session, SEdit remembers everything that you do IN a change history. You can)]TJ +0 -1.2222 TD +0.06 Tw +[(undo and redo edits sequentially. When you end the edit session, SEdit forgets this information and)]TJ +T* +0 Tw +(installs the changes in the system.)Tj +0 -2.8889 TD +(You signal the end of the session in the following ways:)Tj +T* +[()-727.4(Close the window. )]TJ +T* +[()-727.4(Shrink the window. If you expand the window again, you can continue editing.)]TJ +T* +[()-727.4(Issue a Completion Command, see below.)]TJ +/TT6 1 Tf +10 0 0 10 54 401.2 Tm +(SEdit Carets)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 398.49 m +558.01 398.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 376.54 Tm +0.1411 Tw +[(There are two carets in SEdit, the edit caret and the structure caret. The edit caret appears when)]TJ +0 -1.2222 TD +0.0711 Tw +[(characters are edited within a single symbol, string, or comment. Anything you type will appear at)]TJ +T* +0 Tw +(the edit caret as part of the item its in. The edit caret looks like this:)Tj +ET +q +30 0 0 -19.5 78.01 334.99 cm +/Im1 Do +Q +BT +9 0 0 9 78 292.04 Tm +0.0567 Tw +(The structure caret appears when the edit point is between symbols \(or strings or comments\), so that)Tj +T* +0 Tw +(anything you type will go into a new one. It looks like this: )Tj +ET +q +30.75 0 0 -20.25 78.01 261.49 cm +/Im2 Do +Q +BT +9 0 0 9 108.75 241.24 Tm +( )Tj +-3.4167 -2.8889 TD +0.1933 Tw +[(SEdit changes the caret frequently, depending on where the caret is positioned. The left mouse)]TJ +0 -1.2222 TD +0 Tw +(button positions the edit caret. The middle mouse button positions the structure caret.)Tj +/TT6 1 Tf +10 0 0 10 54 161.9 Tm +( The Mouse)Tj +ET +54.01 159.19 m +558.01 159.19 l +S +BT +/TT8 1 Tf +9 0 0 9 78 137.24 Tm +0.0756 Tw +[(The left mouse button selects parts of Lisp structures. The middle mouse button)-6.6( selects whole Lisp)]TJ +T* +0 Tw +(structures.)Tj +0 -2.8889 TD +0.03 Tw +(For example; select the )Tj +/TT10 1 Tf +10.4462 0 TD +0 Tw +(Q)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[( in )]TJ +/TT10 1 Tf +1.433 0 TD +0 Tw +(LEQ)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +[( below by pressing the left mouse button when the pointer is over the)]TJ +/TT10 1 Tf +-14.2796 -1.2889 TD +0 Tw +(Q)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +q +52.5 0 0 -16.5 78.01 68.49 cm +/Im3 Do +Q +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +>> +/XObject << +/Im1 19 0 R +/Im2 20 0 R +/Im3 21 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +23 0 obj +<< +/Length 3470 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-4)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(Any characters you type in now will be appended to the symbol )Tj +/TT10 1 Tf +28.6226 0 TD +(LEQ)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-30.4229 -2.9556 TD +0.0133 Tw +(Selecting the same letter with the middle mouse button selects the whole symbol \(this matches TEdits)Tj +0 -1.2222 TD +0 Tw +(character/word selection convention\), and sets a structure caret between the )Tj +/TT10 1 Tf +34.0488 0 TD +(LEQ)Tj +/TT8 1 Tf +1.8003 0 TD +( and the )Tj +/TT10 1 Tf +3.8301 0 TD +(n)Tj +/TT8 1 Tf +0.6001 0 TD +(:)Tj +ET +q +53.25 0 0 -21 126.01 511.79 cm +/Im4 Do +Q +BT +9 0 0 9 126 467.34 Tm +(Any characters you type in now will form a new symbol between the )Tj +/TT10 1 Tf +30.7886 0 TD +(LEQ)Tj +/TT8 1 Tf +1.8003 0 TD +( and the )Tj +/TT10 1 Tf +3.8301 0 TD +(n)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-37.019 -2.9556 TD +0.1144 Tw +(Larger structures can be selected in two ways. Use the middle mouse button to position the mouse)Tj +0 -1.2222 TD +0.03 Tw +[(cursor on the parenthesis of the list you want to edit. Press the mouse button multiple times, without)]TJ +T* +0.0578 Tw +[(moving the mouse, extends the selection. In the previous example, if the middle button was pressed)]TJ +T* +0 Tw +(twice, the list )Tj +/TT10 1 Tf +6.0933 0 TD +(\(LEQ ...\))Tj +/TT8 1 Tf +5.4009 0 TD +( would be selected:)Tj +ET +q +56.25 0 0 -18.75 126.01 387.59 cm +/Im5 Do +Q +BT +9 0 0 9 126 345.39 Tm +(Press the button a third time and you will select the list containing the )Tj +/TT10 1 Tf +31.188 0 TD +(\(LEQ n 1\))Tj +/TT8 1 Tf +5.4009 0 TD +( to be selected. )Tj +-36.5889 -2.9556 TD +0.4122 Tw +[(The right mouse button positions the mouse cursor for selecting sequences of structures or)]TJ +0 -1.2222 TD +0.2056 Tw +[(substructures. Extended selections are indicated by a box enclosing the structures selected. The)]TJ +T* +0.1133 Tw +[(selection extends in the same mode as the original selection. That is, if the original selection was a)]TJ +T* +0.0122 Tw +[(character selection, the right button will be used to select more characters in the same atom. Extended)]TJ +T* +0.0067 Tw +[(selections also have the property of being marked for pending deletion. That is, the selection takes the)]TJ +T* +0 Tw +(place of the caret, and anything typed in is inserted in place of the selection.)Tj +0 -2.8889 TD +0.1178 Tw +[(For example, selecting the )]TJ +/TT10 1 Tf +12.5943 0 TD +0 Tw +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.1178 Tw +[( by pressing the left mouse button and selecting the )]TJ +/TT10 1 Tf +24.1788 0 TD +0 Tw +(Q)Tj +/TT8 1 Tf +0.6001 0 TD +0.1178 Tw +[( by pressing the)]TJ +-37.9732 -1.2889 TD +0 Tw +(right mouse button will produce:)Tj +ET +q +51.75 0 0 -18.75 126.01 206.64 cm +/Im6 Do +Q +BT +9 0 0 9 126 164.44 Tm +0.0711 Tw +(Similarly, pressing the middle mouse button and then selecting with the right mouse button extends)Tj +0 -1.2222 TD +0.1133 Tw +[(the selection by whole structures. In our example, pressing the middle mouse button to select )]TJ +/TT10 1 Tf +43.5253 0 TD +0 Tw +(LEQ)Tj +/TT8 1 Tf +-43.5253 -1.2889 TD +(and pressing the right mouse button to select the )Tj +/TT10 1 Tf +21.8057 0 TD +(1)Tj +/TT8 1 Tf +0.6001 0 TD +( will produce:)Tj +ET +q +54.75 0 0 -24 126.01 121.69 cm +/Im7 Do +Q +BT +9 0 0 9 126 74.24 Tm +0.2322 Tw +[(This is not the same as selecting the entire list, as above. Instead, the elements in the list are)]TJ +0 -1.2222 TD +0 Tw +(collectively selected, but the list itself is not.)Tj +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +>> +/XObject << +/Im4 25 0 R +/Im5 26 0 R +/Im6 27 0 R +/Im7 28 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +30 0 obj +<< +/Length 3596 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-5)Tj +/TT6 1 Tf +10 0 0 10 54 568.2 Tm +( Gaps)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +558.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 543.54 Tm +0.1967 Tw +[(SEdit requires that everything edited must have an underlying Lisp structure at all times. Some)]TJ +0 -1.2222 TD +0.2611 Tw +(characters, such as single quote )Tj +/TT10 1 Tf +15.9081 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.2611 Tw +( have no meaning by themselves, but must be followed by)Tj +-16.5082 -1.2889 TD +0.1622 Tw +[(something more. Whenyou type such a character, SEdit puts a gap where the rest of the input)]TJ +0 -1.2222 TD +0 Tw +(should go. When you type, the gap is automatically replaced. )Tj +0 -2.8889 TD +(A gap looks like: )Tj +ET +q +11.25 0 0 -3.75 151.48 487.69 cm +/Im8 Do +Q +BT +9 0 0 9 162.72 483.94 Tm +( )Tj +-9.4133 -3.4222 TD +(After you type a quote, the gap looks like this: )Tj +ET +q +15.75 0 0 -11.25 265.98 464.39 cm +/Im9 Do +Q +BT +9 0 0 9 281.72 453.14 Tm +( with the gap marked for pending deletion.)Tj +/TT6 1 Tf +10 0 0 10 54 410.8 Tm +(Broken Atoms )Tj +ET +54.01 408.09 m +558.01 408.09 l +S +BT +/TT8 1 Tf +9 0 0 9 78 386.14 Tm +0.1167 Tw +(When you type an atom \(a symbol or a number\), SEdit saves the characters you type until you are)Tj +0 -1.2222 TD +0.06 Tw +[(finished. Typing any character that cannot belong to an atom, like a space or open parenthesis, ends)]TJ +T* +0.1033 Tw +[(the atom. SEdit then tries to create an atom with the characters you just typed, just as if they were)]TJ +T* +0 Tw +(read by the Lisp reader. The atom then becomes part of the structure youre editing.)Tj +0 -2.8889 TD +0.1789 Tw +[(If an error occurs when SEdit reads the atom, SEdit creates a structure called a Broken-Atom. A)]TJ +0 -1.2222 TD +0.1989 Tw +(Broken-Atom looks and behaves just like a normal atom, but is printed in italics to tell you that)Tj +T* +0 Tw +(something is wrong.)Tj +0 -2.8889 TD +0.1056 Tw +[(SEdit creates a Broken-Atom when the characters typed dont make a legal atom. For example, the)]TJ +0 -1.2222 TD +0.0355 Tw +(characters "DECLARE:" cant be a symbol because the colon is a package specifier, but the form is not)Tj +T* +0.0744 Tw +[(correct for a package-qualified symbol. Similarly, the characters "#b123" cannot represent an integer)]TJ +T* +0.04 Tw +(in base two, because 2 and 3 arent legal digits in base two, so SEdit would make a Broken-Atom that)Tj +T* +0 Tw +(looks like )Tj +/TT14 1 Tf +4.48 0 TD +(#b123)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-7.4805 -2.9556 TD +0.0811 Tw +[(You can edit Broken-Atoms just like real atoms. Whenever you finish editing a Broken-Atom, SEdit)]TJ +0 -1.2222 TD +0.1378 Tw +[(again tries to create an atom from the characters. If SEdit succeeds, it reprints the atom in SEdits)]TJ +T* +0.1656 Tw +[(default font, rather than in italics. Be sure to correct any Broken-Atoms you create before exiting)]TJ +T* +0 Tw +(SEdit, since Broken-Atoms do not behave in any useful way outside SEdit.)Tj +/TT6 1 Tf +10 0 0 10 54 133.2 Tm +(Special Characters)Tj +ET +54.01 130.49 m +558.01 130.49 l +S +BT +/TT8 1 Tf +9 0 0 9 90 108.54 Tm +0.0757 Tw +[(Some characters have special meanings in Lisp, and are therefor treated specially by SEdit. SEdit)]TJ +T* +0.0656 Tw +[(must always have a complete structure to work on at any level of the edit. This means that SEdit)]TJ +T* +0.2211 Tw +[(needs a special way to type in structures such as lists, strings, and quoted objects. In most)]TJ +T* +0.1833 Tw +[(instances these structures can be typed in just as they would be to a regular Exec, but in the)]TJ +T* +0 Tw +(following cases this is not possible.)Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +>> +/XObject << +/Im8 32 0 R +/Im9 33 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +35 0 obj +<< +/Length 3968 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-6)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 189.06 569.54 Tm +(Lists:)Tj +/TT16 1 Tf +3.66 0 TD +(\( \))Tj +/TT8 1 Tf +5.3333 0 TD +0.1411 Tw +(Lists begin with an open parenthesis character "\(". Typing)Tj +0 -1.2889 TD +0.2144 Tw +[(an open parenthesis gives a balanced list. SEdit inserts)]TJ +0 -1.2222 TD +0.0344 Tw +[(both an open and a close parenthesis. The structure caret is)]TJ +T* +0.11 Tw +[(placed between the two parentheses. List elements can be)]TJ +T* +0.0122 Tw +[(typed in at the structure caret. When a close parenthesis, "\)")]TJ +T* +0.0456 Tw +(is typed, the caret will be moved outside the list, effectively)Tj +T* +0.2622 Tw +[(finishing the list. Square bracket characters, "[" and "]",)]TJ +T* +0.1367 Tw +(have no special meaning in SEdit, as they have no special)Tj +T* +0 Tw +(meaning in Common Lisp. )Tj +-12.6289 -2 TD +(Single Quote:)Tj +/TT16 1 Tf +7.2956 0 TD +()Tj +/TT8 1 Tf +-6.2078 -1.2889 TD +(Backquote:)Tj +/TT16 1 Tf +6.2078 0 TD +()Tj +/TT8 1 Tf +-5.1044 -1.2889 TD +(Comma:)Tj +/TT16 1 Tf +5.1044 0 TD +(,)Tj +/TT8 1 Tf +-4.89 -1.2889 TD +(At Sign:)Tj +/TT16 1 Tf +4.89 0 TD +(,@)Tj +/TT8 1 Tf +-3.2289 -1.2889 TD +(Dot:)Tj +/TT16 1 Tf +3.2289 0 TD +(,.)Tj +/TT8 1 Tf +-6.9111 -1.2889 TD +(Hash Quote:)Tj +/TT16 1 Tf +6.9111 0 TD +(#)Tj +/TT8 1 Tf +5.3333 0 TD +0.6056 Tw +(All these characters are special macro characters in)Tj +0 -1.2889 TD +0.2689 Tw +(Common Lisp. When you type one, SEdit will echo the)Tj +0 -1.2222 TD +0 Tw +(character followed by a gap, which you should then fill in.)Tj +-12.3044 -2 TD +(Dotted Lists:)Tj +/TT16 1 Tf +6.9711 0 TD +(\( . \))Tj +/TT8 1 Tf +5.3333 0 TD +0.2378 Tw +[(Use period to enter dotted pairs. After you type a dot,)]TJ +0 -1.2889 TD +0.0822 Tw +(SEdit prints a dot and a gap to fill in for the tail of the list.)Tj +0 -1.2222 TD +0.0233 Tw +(To dot an existing list, point the cursor between the last and)Tj +T* +0.1489 Tw +[(second to last elements, and type a dot. To undot a list,)]TJ +T* +0.0833 Tw +(select the tail of the list before the dot while holding down)Tj +T* +0 Tw +(the SHIFT key.)Tj +-12.8178 -2 TD +(Single escape:)Tj +/TT16 1 Tf +7.4844 0 TD +(\\ )Tj +/TT8 1 Tf +1.2002 0 TD +(or)Tj +/TT16 1 Tf +0.9409 0 TD +( %)Tj +/TT8 1 Tf +3.1922 0 TD +0.32 Tw +(Use the single escape characters to make symbols with)Tj +0 -1.2889 TD +0.0756 Tw +[(special characters. The single escape character for Interlisp)]TJ +0 -1.2222 TD +0 Tw +(is "%". The single escape character for Common Lisp is "\\".)Tj +0 -2 TD +0.07 Tw +(When you want to create a symbol with a special character)Tj +0 -1.2222 TD +0.1056 Tw +(in it you have to type a single escape character before you)Tj +T* +0.2967 Tw +(type the character itself. SEdit does not echo the single)Tj +T* +0 Tw +(escape character until you type the following character.)Tj +0 -2 TD +0.1478 Tw +(For example; create the Common Lisp symbol )Tj +/TT10 1 Tf +21.6189 0 TD +0 Tw +(APAREN-\()Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-26.4197 -1.2889 TD +0.0767 Tw +(Since SEdit normally will treat the ")Tj +/TT10 1 Tf +16.1802 0 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.6001 0 TD +0.0767 Tw +(" as the start of a new)Tj +-16.7803 -1.2889 TD +0.0144 Tw +(list you have to tell SEdit to treat it as an ordinary character.)Tj +0 -1.2222 TD +0 Tw +(You do this by typing a ")Tj +/TT10 1 Tf +10.9888 0 TD +(\\)Tj +/TT8 1 Tf +0.6001 0 TD +(" before you type the ")Tj +/TT10 1 Tf +9.832 0 TD +(\()Tj +/TT8 1 Tf +0.6001 0 TD +(".)Tj +-36.4254 -4.0667 TD +(Multiple Escape)Tj +/TT16 1 Tf +7.1367 0 TD +1.3343 Tc +(:|)Tj +/TT8 1 Tf +7.2677 0 TD +0 Tc +0.09 Tw +(Use the multiple escape character when you enter symbols)Tj +0 -1.2889 TD +0.3867 Tw +[(with many special characters. SEdit always balances)]TJ +0 -1.2222 TD +0.0344 Tw +[(multiple escape characters. When you type one, SEdit adds)]TJ +T* +0.0467 Tw +[(another, with the caret between them. If you type a second)]TJ +T* +0.0822 Tw +[(vertical bar, the caret moves after it, but is still inthe same)]TJ +T* +0 Tw +(symbol, so you can add more unescaped characters.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +39 0 obj +<< +/Length 3622 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-7)Tj +/TT8 1 Tf +-38.1578 60.6156 TD +(Comment:)Tj +/TT16 1 Tf +5.9911 0 TD +(;)Tj +/TT8 1 Tf +5.3333 0 TD +0.0067 Tw +[(A semicolon starts a comment. When you type a semicolon,)]TJ +0 -1.2889 TD +0.0878 Tw +(an empty comment is inserted with the caret in position to)Tj +0 -1.2222 TD +0 Tw +(type the comment. Comments can be edited like strings. )Tj +0 -2 TD +0.2744 Tw +(There are three levels of comments supported by SEdit:)Tj +0 -1.2222 TD +0.3711 Tw +[(single-, double-, and triple-semicolon. Single-semicolon)]TJ +T* +0.2989 Tw +(comments are formatted at the comment column, about)Tj +T* +0.3233 Tw +[(three-quarters of the way across the window. Double-)]TJ +T* +0.8167 Tw +(semicolon comments are formatted at the current)Tj +T* +0.3733 Tw +[(indentation of the code they are in. Triple semicolon)]TJ +T* +0.0933 Tw +[(comments are formatted against the left margin. The level)]TJ +T* +0.2089 Tw +(of a comment can be increased or decreased by pointing)Tj +T* +0.0333 Tw +(after the semicolon, and either typing another semicolon, or)Tj +T* +0.08 Tw +[(backspacing over the preceding semicolon. Comments can)]TJ +T* +0.0322 Tw +[(be placed anywhere in your Common Lisp code. However,)]TJ +T* +0.1144 Tw +(in Interlisp code, they must follow the placement rules for)Tj +T* +0 Tw +(Interlisp comments.)Tj +-9.5911 -2 TD +(String:)Tj +/TT16 1 Tf +4.2578 0 TD +(")Tj +/TT8 1 Tf +5.3333 0 TD +0.2811 Tw +[(Enter strings in SEdit by typing a double quote. SEdit)]TJ +0 -1.2889 TD +0.3144 Tw +[(balances the double quotes: When one is typed, SEdit)]TJ +0 -1.2222 TD +0.0878 Tw +[(produces a second, with the caret between the two. If you)]TJ +T* +(type a double-quote in the middle of a string, SEdit breaks)Tj +T* +0 Tw +(the string in two, leaving the caret between them.)Tj +/TT6 1 Tf +10 0 0 10 54 292 Tm +(SEdit Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 289.29 m +534.01 289.29 l +S +BT +/TT8 1 Tf +9 0 0 9 78 267.34 Tm +0.0122 Tw +[(Enter SEdit commands either from the keyboard or from the SEdit menu. When possible, SEdit uses a)]TJ +T* +0.1978 Tw +[(named key on the keyboard, e.g., the DELETE key. Other commands are combinations of Meta,)]TJ +T* +0.0978 Tw +[(Control, and alphabetic keys. For the alphabetic command keys, either uppercase or lowercase will)]TJ +T* +0 Tw +(work.)Tj +0 -2.8889 TD +0.0489 Tw +[(There are two menus available, as an alternative means of invoking commands. They are the middle)]TJ +0 -1.2222 TD +0.1278 Tw +[(button popup menu, and the attached command menu. These menus are described in more detail)]TJ +T* +0 Tw +(below.)Tj +/TT16 1 Tf +4.4 -2.3333 TD +(Meta-A)Tj +/TT8 1 Tf +4.9333 0 TD +(Abort the session. Throw away the changes made to the form. )Tj +/TT16 1 Tf +-4.9333 -2.1778 TD +(Meta-B)Tj +/TT8 1 Tf +4.9333 0 TD +0.0867 Tw +[(Change the Print Base. Prompts for entry of the desired Print Base, in decimal.)]TJ +0 -1.0667 TD +0 Tw +(SEdit redisplays fixed point numbers in this new base. )Tj +/TT16 1 Tf +-6.7333 -2.1111 TD +(Control-C)Tj +/TT8 1 Tf +6.7333 0 TD +0.0656 Tw +(Tell SEdit that this session is complete and compiles the definition being edited.)Tj +0 -1.0667 TD +0.04 Tw +(The variable )Tj +/TT10 1 Tf +5.828 0 TD +0 Tw +(*COMPILE-FN*)Tj +/TT8 1 Tf +7.2012 0 TD +0.04 Tw +[( determines which function to use as compiler. See)]TJ +-13.0292 -1.0667 TD +0 Tw +(the Options section below.)Tj +/TT16 1 Tf +-9.33 -2.1111 TD +(Control-Meta-C)Tj +/TT8 1 Tf +9.33 0 TD +0.3078 Tw +(Signals the system that this edit is complete, compiles the definition being)Tj +0 -1.0667 TD +0 Tw +(editing, and closes the window.)Tj +/TT16 1 Tf +-4.9333 -2.1111 TD +(DELETE)Tj +/TT8 1 Tf +5.1556 0 TD +(Deletes the current selection. )Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +42 0 obj +<< +/Length 4519 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-8)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT16 1 Tf +9 0 0 9 163.35 569.54 Tm +(Meta-E)Tj +/TT8 1 Tf +3.6 0 TD +0.0756 Tw +[( )-1257.7(Evaluate the current selection. If the result is a structure, the inspector is called)]TJ +1.5833 -1.0667 TD +0.0267 Tw +[(on it, allowing the user to choose how to look at the result. Otherwise, the result)]TJ +0 -1 TD +0.1222 Tw +[(is printed in the SEdit prompt window. The evaluation is done in the process)]TJ +T* +0.0944 Tw +[(from which the edit session was started. Thus, while editing a function from a)]TJ +T* +0 Tw +(break window, evaluations are done in the context of the break.)Tj +/TT16 1 Tf +-3.7333 -2.0444 TD +(FIND)Tj +-1.2 -1.0667 TD +(Meta-F)Tj +/TT8 1 Tf +4.9333 0 TD +0.3144 Tw +[(Find a specified structure, or sequence of structures. If there is a current)]TJ +0 -1.0667 TD +0.0422 Tw +[(selection, SEdit looks for the next occurrence of the selected structure. If there is)]TJ +0 -1 TD +0.0689 Tw +(no selection, SEdit prompts for the structure to find, and searches forward from)Tj +T* +0.2556 Tw +[(the position of the caret. The found structure will be selected, so the Find)]TJ +T* +0 Tw +(command can be used to easily find the same structure again.)Tj +0 -2 TD +0.04 Tw +(If a sequence of structures are selected, SEdit will look for the next occurrence of)Tj +0 -1 TD +0.0444 Tw +[(the same sequence. Similarly, when SEdit prompts for the structure to find, you)]TJ +T* +0 Tw +(can type a sequence of structures to look for.)Tj +0 -2 TD +0.0311 Tw +(The variable )Tj +/TT10 1 Tf +5.8103 0 TD +0 Tw +(*WRAP-SEARCH*)Tj +/TT8 1 Tf +7.8013 0 TD +0.0311 Tw +[( controls whether or not SEdit wraps around from)]TJ +-13.6115 -1.0667 TD +0.4455 Tw +(the end of the structure being edited and continues searching from the)Tj +0 -1 TD +0 Tw +(beginning.)Tj +/TT16 1 Tf +-9.33 -2.1111 TD +(Control-Meta-F)Tj +/TT8 1 Tf +8.4 0 TD +[( )-680(Find a specified structure, searching in reverse from the position of the caret.)]TJ +/TT16 1 Tf +-2.8033 -2.1111 TD +(HELP)Tj +-1.2 -1.0667 TD +(Meta-H)Tj +/TT8 1 Tf +4.9333 0 TD +0.1833 Tw +(Show the argument list for the function currently selected, or currently being)Tj +0 -1.0667 TD +0.0811 Tw +[(typed in, in the SEdit prompt window. If the argument list will not fit in the)]TJ +0 -1 TD +0 Tw +(SEdit prompt window, it is displayed in the main Prompt Window.)Tj +/TT16 1 Tf +-4.9333 -2.1111 TD +(Meta-I)Tj +/TT8 1 Tf +4.9333 0 TD +(Inspect the current selection.)Tj +/TT16 1 Tf +-4.9333 -2.1778 TD +(Meta-J)Tj +/TT8 1 Tf +4.9333 0 TD +0.0111 Tw +(Join any number of sequential Lisp objects of the same type into a single object of)Tj +0 -1.0667 TD +0.0233 Tw +[(that type. Join is supported for atoms, strings, lists, and comments. In addition,)]TJ +0 -1 TD +0.1322 Tw +(SEdit permits joining of a sequence of atoms and strings, since either type can)Tj +T* +0.01 Tw +[(easily be coerced into the other. In this case, the result of the Join will be an atom)]TJ +T* +0 Tw +(if the first object in the selection is an atom, otherwise the result will be a string.)Tj +/TT16 1 Tf +-6.7333 -2.1111 TD +(Control-L)Tj +/TT8 1 Tf +6.8444 0 TD +(Redisplay the structure being edited. )Tj +/TT16 1 Tf +-6.8444 -2.1111 TD +(SKIP-NEXT)Tj +1.2 -1.0667 TD +(Meta-N )Tj +/TT8 1 Tf +5.5333 0 TD +(Select next gap in the structure.)Tj +/TT16 1 Tf +-5.1833 -2.1778 TD +(Meta-O)Tj +/TT8 1 Tf +3.6 0 TD +0.1078 Tw +[( )-1225.5(Edit the definition of the current selection. If the selected name has more than)]TJ +1.5833 -1.0667 TD +0.1689 Tw +[(one type of definition, SEdit asks for the type to edit. If the selection has no)]TJ +0 -1 TD +0.0144 Tw +[(definition, a menu pops up. This menu lets you specify the type of definition to)]TJ +T* +0 Tw +(create.)Tj +/TT16 1 Tf +-9.33 -2.1111 TD +(Control-Meta-O)Tj +/TT8 1 Tf +9.33 0 TD +(Perform a fast edit by calling )Tj +/TT10 1 Tf +12.9893 0 TD +(ED)Tj +/TT8 1 Tf +1.2002 0 TD +( with the )Tj +/TT10 1 Tf +4.1704 0 TD +(CURRENT)Tj +/TT8 1 Tf +4.2007 0 TD +( option. )Tj +/TT16 1 Tf +-27.4939 -2.1778 TD +(Meta-P)Tj +/TT8 1 Tf +4.9333 0 TD +0.1455 Tw +[(Change the current package for this edit. Prompt the user for a new package)]TJ +0 -1.0667 TD +0 Tw +(name. SEdit will redisplay atoms with respect to that package. )Tj +/TT16 1 Tf +-4.3333 -2.0444 TD +(AGAIN)Tj +-0.6 -1.0667 TD +(Meta-R)Tj +/TT8 1 Tf +4.9333 0 TD +0.0378 Tw +[(Redo the edit change that was just undone. Redo only works directly following)]TJ +0 -1.0667 TD +0 Tw +(an Undo. Any number of Undo commands can be sequentially redone.)Tj +/TT16 1 Tf +-7.3333 -2.0444 TD +(SHIFT-FIND)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +45 0 obj +<< +/Length 4183 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-9)Tj +/TT16 1 Tf +-38.4333 60.6156 TD +(Meta-S)Tj +/TT8 1 Tf +4.9333 0 TD +0.2378 Tw +(Substitute a structure, or sequence of structures within the current selection.)Tj +0 -1.0667 TD +0.0111 Tw +(SEdit prompts you in the SEdit prompt window for the structures to replace, and)Tj +0 -1 TD +0.2433 Tw +[(the structures to replace with. The selection to substitute within must be a)]TJ +T* +0 Tw +(structure selection.)Tj +/TT16 1 Tf +-9.33 -2.1111 TD +(Control-Meta-S)Tj +/TT8 1 Tf +9.33 0 TD +0.0222 Tw +(Remove all occurences of a structure or sequence of structures within the current)Tj +0 -1.0667 TD +0 Tw +(selection. SEdit prompts you for the structures to delete.)Tj +/TT16 1 Tf +-3.7333 -2.0444 TD +(UNDO)Tj +-1.2 -1.0667 TD +(Meta-U)Tj +/TT8 1 Tf +4.9333 0 TD +0.0611 Tw +[(Undo the last edit. All changes in the the edit session are remembered, and can)]TJ +0 -1.0667 TD +0 Tw +(be undone sequentially)Tj +/TT16 1 Tf +10.3174 0 TD +(.)Tj +-17.0507 -2.1778 TD +(Control-W)Tj +/TT8 1 Tf +6.7333 0 TD +0.1022 Tw +[(Delete the previous atom or structure. If the caret is in the middle of an atom,)]TJ +0 -1.0667 TD +0 Tw +(deletes backward to the beginning of the atom only.)Tj +/TT16 1 Tf +-6.7333 -2.1111 TD +(Control-X)Tj +/TT8 1 Tf +6.8444 0 TD +(Tell SEdit that this session is complete. The SEdit window remains open.)Tj +/TT16 1 Tf +-5.0444 -2.1111 TD +(EXPAND)Tj +0 -1.0667 TD +(Meta-X)Tj +/TT8 1 Tf +4.9333 0 TD +0.0633 Tw +[(Replaces the current selection with its definition. This command can be used to)]TJ +0 -1.0667 TD +0 Tw +(expand macros and translate CLISP.)Tj +/TT16 1 Tf +-9.33 -2.1111 TD +(Control-Meta-X)Tj +/TT8 1 Tf +9.4411 0 TD +(Tell SEdit that this session is complete Close the SEdit window.)Tj +/TT16 1 Tf +-5.0444 -2.1778 TD +(Meta-Z)Tj +/TT8 1 Tf +4.9333 0 TD +0.0178 Tw +[(Mutate. Prompt for a function and call this function with the current selection as)]TJ +0 -1.0667 TD +0 Tw +(the argument. The result is inserted into SEdit and made the current selection. )Tj +0 -2.1111 TD +0.2722 Tw +(For example, you can replace a structure with its value by selecting it and)Tj +0 -1 TD +0 Tw +(mutating by )Tj +/TT10 1 Tf +5.6768 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT16 1 Tf +-13.0105 -2.1778 TD +(Meta-;)Tj +/TT8 1 Tf +4.9333 0 TD +0.1544 Tw +[(Convert old style comments in the selected structure to new style comments.)]TJ +0 -1.0667 TD +0.1533 Tw +(The converter notices any list that begins with the symbol IL:* as an old style)Tj +0 -1 TD +0 Tw +(comment. Section 16.1.18, Options, describes the converter options .)Tj +/TT16 1 Tf +-9.33 -2.1111 TD +(Control-Meta-;)Tj +/TT8 1 Tf +9.33 0 TD +0.0811 Tw +[(Put the contents of a structure selection into a comment. This provides an easy)]TJ +0 -1.0667 TD +0.1244 Tw +[(way to "comment out" a chunk of code. The Extract command can be used to)]TJ +0 -1 TD +0 Tw +(reverse this process, returning the comment to the structures contained therein.)Tj +/TT16 1 Tf +-4.9333 -2.1111 TD +(Meta-/)Tj +/TT8 1 Tf +4.9333 0 TD +0.0733 Tw +[(Extract one level of structure from the current selection. If there is no selection,)]TJ +0 -1.0667 TD +0.0156 Tw +[(but there is a structure caret, the list containing the caret is used. This command)]TJ +0 -1 TD +0.0678 Tw +[(can be used to strip the parentheses off a list, or to unquote a quoted structure,)]TJ +T* +0 Tw +(or to replace a comment with the contained structures.)Tj +/TT16 1 Tf +-4.9333 -2.0444 TD +(Meta-)Tj +0 -1 TD +(Meta-)Tj +T* +(Meta-,)Tj +T* +(Meta-.)Tj +-4.3967 -1.0667 TD +(Meta-@ )Tj +/TT8 1 Tf +4.2007 0 TD +(or)Tj +/TT16 1 Tf +0.9409 0 TD +( Meta-2)Tj +-5.1416 -1.0667 TD +(Meta-# )Tj +/TT8 1 Tf +4.2007 0 TD +(or)Tj +/TT16 1 Tf +0.9409 0 TD +( Meta-3)Tj +-0.7449 -1.0667 TD +(Meta-.)Tj +/TT8 1 Tf +4.9333 0 TD +(Quote the current selection with the specified kind of quote.)Tj +/TT16 1 Tf +-7.3333 -2.1111 TD +(Meta-Space)Tj +-0.6 -1.0667 TD +(Meta-Return)Tj +/TT8 1 Tf +7.9333 0 TD +0.0856 Tw +[(Scroll the current selection to the center of the window. Similarly, the Space or)]TJ +0 -1.0667 TD +0 Tw +(Return key can be used to normalize the caret.)Tj +/TT16 1 Tf +-4.9333 -2.0444 TD +(Meta-\))Tj +0 -1.0667 TD +(Meta-0)Tj +/TT8 1 Tf +4.9333 0 TD +(Parenthesize the current selection, position the caret after the new list.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +48 0 obj +<< +/Length 2772 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-10)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT16 1 Tf +9 0 0 9 165.6 570.14 Tm +(Meta-\()Tj +0 -1.0667 TD +(Meta-9)Tj +/TT8 1 Tf +4.9333 0 TD +0.0433 Tw +(ParenthesizE the current selection, position the caret at the beginning of the new)Tj +0 -1.0667 TD +0 Tw +(list.)Tj +/TT16 1 Tf +-4.9333 -2.1111 TD +(Meta-M)Tj +/TT8 1 Tf +4.9333 0 TD +0.1722 Tw +[(Attach a menu of common commands to the top of the SEdit window. Each)]TJ +0 -1.0667 TD +0 Tw +(SEdit window can have its own menu.)Tj +/TT6 1 Tf +10 0 0 10 102 482 Tm +(SEdit Command Mnemonics)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 479.29 m +606.01 479.29 l +S +BT +/TT8 1 Tf +9 0 0 9 270.62 453.34 Tm +[(Abort)-2666.3(Meta-A)]TJ +-5.5233 -1 TD +[(Change Print Base)-2667.7(Meta-B)]TJ +3.8078 -1 TD +[(Complete)-2666(Control-X)]TJ +-5.0778 -1 TD +[(Compile & Complete)-2666.2(Control-C)]TJ +-2.9489 -1 TD +[(Close, Compile & Complete)-2666.3(Control-Meta-C)]TJ +4.0811 -1 TD +[(Convert Comment)-2665.8(Meta-;)]TJ +-3.0911 -1 TD +[(Make Selection Comment)-2665.1(Control-Meta-;)]TJ +4.3644 -1 TD +[(Previous Delete)-2667.4(Control-W)]TJ +-0.0545 -1 TD +[(Selection Delete)-2665.6(DELETE)]TJ +-2.5889 -1 TD +[(Selection Dot Comma)-2666.2(Meta-.)]TJ +0.5422 -1 TD +[(Selection At Comma)-2665.9(Meta-@)]TJ +7.2478 -1 TD +[(Edit)-2666.7(Meta-O)]TJ +-2.0556 -1 TD +[(Fast Edit)-2666.1(Control-Meta-O)]TJ +-2.2844 -1 TD +[(Selection Eval)-2665.9(Meta-E)]TJ +-0.3233 -1 TD +[(Macro Expand)-2667.4(Meta-X)]TJ +0.3744 -1 TD +[(Forward Find)-2667.5(Meta-F)]TJ +0.3489 -1 TD +[(Reverse Find)-2666.7(Control-Meta-F)]TJ +1.5133 -1 TD +[(Next Gap)-2665.6(Meta-N)]TJ +-1.2489 -1 TD +[(Arglist Help)-2666.9(Meta-H)]TJ +2.3211 -1 TD +[(Inspect)-2667.1(Meta-I)]TJ +1.4411 -1 TD +[(Join)-2666.9(Meta-J)]TJ +-4.0633 -1 TD +[(Attach Menu)-2666.3(Meta-M)]TJ +-2.4833 -1 TD +[(Expression Mutate)-2666.7(Meat-Z)]TJ +1.0022 -1 TD +[(Change Package)-2666(Meta-P)]TJ +-4.5567 -1 TD +[(Selection Left Parenthesize)-2667(Meta-\()]TJ +-0.6733 -1 TD +[(Selection Right Parenthesize)-2666(Meta-\))]TJ +6.5633 -1 TD +[(Selection Pop)-2666.1(Meta-/)]TJ +-3.3489 -1 TD +[(Selection Back Quote)-2664.9(Meta-)]TJ +-0.2278 -1 TD +[(Selection Hash Quote)-2665.6(Meta-#)]TJ +2.5889 -1 TD +[(Selection Quote)-2664.7(Meta-)]TJ +2.53 -1 TD +[(Redisplay)-2666.9(Control-L)]TJ +1.8678 -1 TD +[( Redo)-2666.3(Meta-R)]TJ +-1.0656 -1 TD +[(Remove)-2665.9(Control-Meta-S)]TJ +-0.8367 -1 TD +[(Substitute)-2665.7(Meta-S)]TJ +1.9389 -1 TD +[(Undo)-2666.7(Meta-U)]TJ +/TT6 1 Tf +10 0 0 10 102 107 Tm +(SEdit Command Menu)Tj +ET +102.01 104.29 m +606.01 104.29 l +S +BT +/TT8 1 Tf +9 0 0 9 174 90.34 Tm +0.1389 Tw +(When the mouse cursor is in the SEdit title bar and you press middle mouse button, a)Tj +0 -1.2222 TD +0 Tw +(Help Menu of commands pops up. The menu looks like this: )Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +51 0 obj +<< +/Length 1104 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-11)Tj +/TT8 1 Tf +-25.75 29.1656 TD +( )Tj +ET +q +155.25 0 0 -289.4999 229.51 575.9899 cm +/Im10 Do +Q +BT +9 0 0 9 126 268.49 Tm +0.0478 Tw +(The Help Menu lists each command and its corresponding Command Key. \(C- stands for)Tj +0 -1.2222 TD +0.2811 Tw +[(Control, M- for Meta.\) The menu pops up with the mouse cursor next to the last)]TJ +T* +0 Tw +(command you used from the menu. This makes it easy to repeat a command.)Tj +/TT6 1 Tf +10 0 0 10 54 204.15 Tm +(SEdit Attached Menu)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 201.44 m +558.01 201.44 l +S +570 201.93 0.99 -0.99 re +f +BT +/TT8 1 Tf +9 0 0 9 126 187.49 Tm +0.01 Tw +[(SEdits Attached Command Menu contains the commonly used commands. Use the Meta-)]TJ +T* +0.0411 Tw +[(M keyboard command to bring up this menu. The menu can be closed, independently of)]TJ +T* +0 Tw +(the SEdit window. The menu looks like:)Tj +ET +q +245.25 0 0 -76.5 183.38 153.94 cm +/Im11 Do +Q +BT +9 0 0 9 126 61.99 Tm +0.0733 Tw +(Menu commands work like the corresponding keyboard commands, except for Find and)Tj +T* +0 Tw +(Substitute.)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/XObject << +/Im10 53 0 R +/Im11 54 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +58 0 obj +<< +/Length 4134 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-12)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0733 Tw +(For Find, SEdit prompts in the menu window, next to the Find button, for the structures)Tj +0 -1.2222 TD +0.0989 Tw +[(to find. Type in the structures then select Find again. The search begins from the caret)]TJ +T* +0 Tw +(position in the SEdit window.)Tj +0 -2 TD +0.0667 Tw +[(Similarly, Substitute prompts next to the Find button for the structures to find, and next)]TJ +0 -1.2222 TD +0.1867 Tw +(to the Substitute button for the structures to replace them with. After both have been)Tj +T* +0.2033 Tw +[(typed in, selecting Substitute replaces all occurrences of the Find structures with the)]TJ +T* +0 Tw +(Substitute structures, within the current selection.)Tj +0 -2 TD +0.1533 Tw +[(To selectively substitute, use Find to find the next potential substitution target. If you)]TJ +0 -1.2222 TD +0 Tw +(want to replace it, select Substitute. Otherwise, select Find again to go on.)Tj +0 -2 TD +0.03 Tw +[(Selecting either Find or Substitute with the right mouse button erases the old structure to)]TJ +0 -1.2222 TD +0 Tw +(find or substitute from the menu, and prompts for a new one.)Tj +/TT6 1 Tf +10 0 0 10 102 396.2 Tm +(SEdit Programmers Interface )Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 393.49 m +606.01 393.49 l +S +BT +/TT8 1 Tf +9 0 0 9 174 379.54 Tm +0.0333 Tw +[(The following sections describe SEdits programmers)-6( interface. All symbols are external)]TJ +T* +0 Tw +(in the package )Tj +/TT10 1 Tf +6.6465 0 TD +(SEDIT)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 102 325.6 Tm +(SEdit Window Region Manager)Tj +ET +102.01 322.89 m +606.01 322.89 l +S +BT +/TT8 1 Tf +9 0 0 9 174 308.94 Tm +0.0456 Tw +(SEdit provides user redefinable functions which control how SEdit chooses the region for)Tj +0 -1.2222 TD +0.0522 Tw +(a new edit window. In the follwin thext there are a few concepts that you will have to be)Tj +T* +0 Tw +(familliar with. They are:)Tj +0 -2 TD +0.0911 Tw +(The region stack. This is a stack of old used regions. The reason to keep these around is)Tj +0 -1.2222 TD +0.0656 Tw +(that the user probably was comfortable with the old position of the window, so when he)Tj +T* +0 Tw +(starts a new SEdit it is a good bet that he will be happy with the old placement.)Tj +0 -2 TD +0.73 Tw +[(SEdit uses the respective value of the symbols )]TJ +/TT10 1 Tf +28.3444 0 TD +0 Tw +(SEDIT::DEFAULT-FONT)Tj +/TT8 1 Tf +11.4019 0 TD +(,)Tj +/TT10 1 Tf +-39.7463 -1.2889 TD +(SEDIT::ITALIC-FONT)Tj +/TT8 1 Tf +10.8018 0 TD +(, )Tj +/TT10 1 Tf +1.5689 0 TD +(SEDIT::KEYWORD-FONT)Tj +/TT8 1 Tf +11.4019 0 TD +(, )Tj +/TT10 1 Tf +1.5689 0 TD +(SEDIT::COMMENT-FONT)Tj +/TT8 1 Tf +11.4019 0 TD +1.0689 Tw +(, and)Tj +/TT10 1 Tf +-36.7432 -1.2889 TD +0 Tw +(SEDIT::BROKEN-ATOM-FONT)Tj +/TT8 1 Tf +13.8022 0 TD +0.4589 Tw +[( when displaying an expression. The value of these)]TJ +-13.8022 -1.2889 TD +0 Tw +(symbols have to be font descriptors.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(GET-WINDOW-REGION)Tj +/TT8 1 Tf +10.2003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(context reason name type)Tj +/TT8 1 Tf +14.4023 0 TD +[(\))-12551.3([Function])]TJ +-22.519 -1.8444 TD +0.06 Tw +(This function is called when SEdit wants to know where to place a window it is about to)Tj +0 -1.2222 TD +0.0789 Tw +[(open. This happens whenever the user starts a new SEdit or expands an Sedit icon. The)]TJ +T* +0.1455 Tw +(default behavior is to pop a window region off SEdits stack of regions that have been)Tj +T* +0 Tw +(used in the past. If the stack is empty, SEdit prompts for a new region. )Tj +/TT14 1 Tf +0 -2 TD +(context)Tj +/TT8 1 Tf +4.2007 0 TD +( is the current editor context.)Tj +/TT14 1 Tf +-4.2007 -2.0667 TD +(reason)Tj +/TT8 1 Tf +3.6006 0 TD +0.0911 Tw +[( is one of )]TJ +/TT10 1 Tf +4.5651 0 TD +0 Tw +(:CREATE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0911 Tw +[( or )]TJ +/TT10 1 Tf +1.6231 0 TD +0 Tw +(:EXPAND)Tj +/TT8 1 Tf +4.2007 0 TD +0.0911 Tw +[( depending on what action prompted the call to)]TJ +/TT10 1 Tf +-18.1902 -1.2222 TD +0 Tw +(GET-WINDOW-REGION)Tj +/TT14 1 Tf +0 -2.0667 TD +(name)Tj +/TT8 1 Tf +2.4004 0 TD +( is the name of the structure to be edited.)Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +61 0 obj +<< +/Length 4479 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-13)Tj +/TT14 1 Tf +-37 60.6156 TD +(type)Tj +/TT8 1 Tf +2.4004 0 TD +( is the edit type of the calling context.)Tj +-5.0671 -2.4 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(SAVE-WINDOW-REGION)Tj +/TT8 1 Tf +10.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(context reason name type region)Tj +/TT8 1 Tf +18.603 0 TD +[(\))-7750.6([Function])]TJ +-27.3197 -1.8445 TD +0.1211 Tw +(This function is called whenever SEdit is finished with a region and wants to make the)Tj +0 -1.2222 TD +0.0744 Tw +[(region available for other SEdits. This happens whenever an SEdit window is closed or)]TJ +T* +0 Tw +(shrunk, or when an SEdit Icon is closed. The default behavior is simply to push the region)Tj +T* +(onto SEdits stack of regions. )Tj +/TT14 1 Tf +0 -2 TD +(context)Tj +/TT8 1 Tf +4.2007 0 TD +( is the current editor context.)Tj +/TT14 1 Tf +-4.2007 -2.0667 TD +(reason)Tj +/TT8 1 Tf +3.6006 0 TD +0.1778 Tw +[( is one of )]TJ +/TT10 1 Tf +4.9118 0 TD +0 Tw +(:CLOSE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6778 0 TD +(:SHRINK)Tj +/TT8 1 Tf +4.2007 0 TD +0.1778 Tw +(, or )Tj +/TT10 1 Tf +2.0465 0 TD +0 Tw +(:CLOSE-ICON)Tj +/TT8 1 Tf +6.6011 0 TD +0.1778 Tw +[( or depending on what action)]TJ +-25.639 -1.2889 TD +0 Tw +(prompted the call to )Tj +/TT10 1 Tf +9.2271 0 TD +(SAVE-WINDOW-REGION)Tj +/TT14 1 Tf +-9.2271 -2.0667 TD +(name)Tj +/TT8 1 Tf +2.4004 0 TD +( is the name of the structure to be edited.)Tj +/TT14 1 Tf +-2.4004 -2.0667 TD +(type)Tj +/TT8 1 Tf +2.4004 0 TD +( is the edit type of the calling context.)Tj +/TT14 1 Tf +-2.4004 -2.0667 TD +(region)Tj +/TT8 1 Tf +3.6006 0 TD +0.0233 Tw +[( is the region to be pushed onto the region stack. If region is )]TJ +/TT10 1 Tf +26.9522 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[( the old region of)]TJ +-32.353 -1.2889 TD +0 Tw +(the SEdit will be pushed top the region stack.)Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(KEEP-WINDOW-REGION)Tj +/TT8 1 Tf +10.8018 0 TD +27.216 Tw +[( [Variable])]TJ +-8.1351 -1.8444 TD +0 Tw +(Default )Tj +/TT10 1 Tf +3.8628 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3067 Tw +[(. This flag determines the behavior of the default SEdit region manager,)]TJ +-4.4629 -1.2889 TD +0.1433 Tw +[(explained above, for shrinking and expanding windows. When set to )]TJ +/TT10 1 Tf +32.6299 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1433 Tw +[(, shrinking an)]TJ +-33.23 -1.2889 TD +0.11 Tw +(SEdit window will not give up that windows region; the icon will always expand back)Tj +0 -1.2222 TD +0.0811 Tw +[(into the same region. When set to )]TJ +/TT10 1 Tf +15.9101 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0811 Tw +(, the windows region is made available for other)Tj +-17.7104 -1.2889 TD +0.0667 Tw +[(SEdits when the window is shrunk. Then when an SEdit icon is expanded, the window)]TJ +0 -1.2222 TD +0 Tw +(will be reshaped to the next available region.)Tj +0 -2 TD +0.1211 Tw +(This variable is only used by the default implementations of the functions get-window-)Tj +0 -1.2222 TD +0.1111 Tw +[(region and save-window-region. If these functions are redefined, this flag is no longer)]TJ +T* +0 Tw +(used.)Tj +/TT6 1 Tf +10 0 0 10 54 206 Tm +(Options)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 203.29 m +558.01 203.29 l +S +570 203.78 0.99 -0.99 re +f +BT +/TT8 1 Tf +9 0 0 9 126 189.34 Tm +(The following parameters can be set as desired.)Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(*WRAP-PARENS*)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.3656 Tw +(This SEdit pretty printer flag determines whether or not trailing close parenthesis)Tj +0 -1.2222 TD +0 Tw +(characters, )Tj +/TT10 1 Tf +5.0343 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0456 Tw +[(, are forced to be visible in the window without scrolling. By default it is set)]TJ +-5.6344 -1.2889 TD +0 Tw +(to )Tj +/TT10 1 Tf +1.1276 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[(, meaning that close parens are allowed to "fall off" the right edge of the window. If)]TJ +-2.9279 -1.2889 TD +0.1256 Tw +(set to )Tj +/TT10 1 Tf +2.8522 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1256 Tw +(, the pretty printer will start a new line before the structure preceding the close)Tj +-3.4523 -1.2889 TD +0 Tw +(parens, so that all the parens will be visible.)Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(*WRAP-SEARCH*)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.2789 Tw +(This flag determines whether or not SEdit find will wrap around to the top of the)Tj +0 -1.2222 TD +0.05 Tw +[(structure when it reaches the end, or vice versa in the case of reverse find. The default is)]TJ +/TT10 1 Tf +T* +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +64 0 obj +<< +/Length 4371 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-14)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT16 1 Tf +9 0 0 9 150 569.54 Tm +(*CLEAR-LINEAR-ON-COMPLETION*)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0644 Tw +(This flag determines whether or not SEdit completely re-pretty prints the structure being)Tj +0 -1.2222 TD +0.0722 Tw +[(edited when you complete the edit. The default value is )]TJ +/TT10 1 Tf +25.8862 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0722 Tw +(, meaning that SEdit reuses)Tj +-27.6865 -1.2889 TD +0 Tw +(the pretty printing.)Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(*IGNORE-CHANGES-ON-COMPLETION*)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0733 Tw +(Sometimes the structure that you are editing is changed by the system upon completion.)Tj +0 -1.2222 TD +0.0867 Tw +[(Editdates are an example of this behavior. When this flag is )]TJ +/TT10 1 Tf +27.748 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0867 Tw +(, the default, SEdit will)Tj +-29.5483 -1.2889 TD +0.1367 Tw +[(redisplay the new structure, capturing the changes. When )]TJ +/TT10 1 Tf +27.3008 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1367 Tw +(, SEdit will ignore the fact)Tj +-27.9009 -1.2889 TD +0 Tw +(that changes were made by the system and keep the old structure.)Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(CONVERT-UPGRADE)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.1933 Tw +[(Default 100. When using Meta-; to convert old-style single- asterisk comments, if the)]TJ +0 -1.2222 TD +0.0022 Tw +(length of the comment exceeds convert-upgrade characters, the comment is converted into)Tj +T* +0.3456 Tw +[(a double semicolon comment. Otherwise, the comment is converted into a single)]TJ +T* +0 Tw +(semicolon comment.)Tj +0 -2 TD +0.0456 Tw +(Old-style double-asterisk comments are always converted into new-style triple-semicolon)Tj +0 -1.2222 TD +0 Tw +(comments.)Tj +/TT6 1 Tf +10 0 0 10 102 316.6 Tm +(Control Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 313.89 m +606.01 313.89 l +S +BT +/TT8 1 Tf +9 0 0 9 150 296.94 Tm +(\()Tj +/TT16 1 Tf +0.3333 0 TD +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +34.7362 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.1944 Tw +[(This function recomputes the SEdit edit environment. Any changes made in the font)]TJ +0 -1.2222 TD +0.1289 Tw +[(profile, or any changes made to SEdits commands are captured by resetting. Close all)]TJ +T* +0 Tw +(SEdit windows before calling this function.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(ADD-COMMAND)Tj +/TT8 1 Tf +6.6003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(key-code form &optional scroll? key-name command-name)Tj +-6.5167 -1.0667 TD +(help-string)Tj +/TT8 1 Tf +6.6011 0 TD +[(\))-30469.2([Function])]TJ +-4.6011 -1.8444 TD +0.1634 Tw +[(This function allows you to write your own SEdit keyboard commands. You can add)]TJ +0 -1.2222 TD +0.1444 Tw +(commands to new keys, or you can redefine keys that SEdit already uses as command)Tj +T* +0.1222 Tw +[(keys. If you mistakenly redefine an SEdit command, the funtion Reset-Commands will)]TJ +T* +0 Tw +(remove all user-added commands, leaving SEdit with its default set of commands.)Tj +/TT14 1 Tf +0 -2 TD +(key-code)Tj +/TT8 1 Tf +4.8008 0 TD +( can be a character code, or any form acceptible to il:charcode.)Tj +/TT14 1 Tf +-4.8008 -2.0667 TD +(form)Tj +/TT8 1 Tf +2.4004 0 TD +0.0956 Tw +[( determines the function to be called when the key command is typed. It can be a)]TJ +-2.4004 -1.2889 TD +0.1267 Tw +(symbol naming a function, or a list, whose first element is a symbol naming a function)Tj +0 -1.2222 TD +0.0833 Tw +[(and the rest of the elements are extra arguments to the function. When the command is)]TJ +T* +0.0122 Tw +(invoked, SEdit will apply the function to the edit context \(SEdits main data structure\), the)Tj +T* +0.0001 Tc +0.0043 Tw +(charcode that was typed, and any extra arguments supplied in form. The extra arguments)Tj +T* +0 Tc +0.3178 Tw +(do not get evaluated, but are useful as keywords or flags, depending on how the)Tj +T* +0.3789 Tw +[(command was invoked. The command function must return )]TJ +/TT10 1 Tf +30.5912 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3789 Tw +[( if it handled the)]TJ +-31.1913 -1.2889 TD +0.1744 Tw +[(command. If the function returns )]TJ +/TT10 1 Tf +16.2132 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1744 Tw +(, SEdit will ignore the command and insert the)Tj +-18.0135 -1.2889 TD +0 Tw +(character typed.)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +67 0 obj +<< +/Length 4152 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-15)Tj +/TT8 1 Tf +-37 60.6156 TD +0.3189 Tw +(The first optional argument, )Tj +/TT14 1 Tf +13.9758 0 TD +0 Tw +(scroll?)Tj +/TT8 1 Tf +4.2007 0 TD +0.3189 Tw +(, determines whether or not SEdit scrolls the)Tj +-18.1764 -1.2889 TD +0.1844 Tw +[(window after running the command. This argument defaults to )]TJ +/TT10 1 Tf +30.425 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1844 Tw +[(, meaning dont)]TJ +-32.2253 -1.2889 TD +0.0433 Tw +[(scroll. If the value of )]TJ +/TT14 1 Tf +9.7746 0 TD +0 Tw +(scroll?)Tj +/TT8 1 Tf +4.2007 0 TD +0.0433 Tw +[( is )]TJ +/TT10 1 Tf +1.3015 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +[(, SEdit will scroll the window to ensure that the caret)]TJ +-15.8769 -1.2889 TD +0 Tw +(is visible. )Tj +0 -2 TD +0.0033 Tw +(The rest of the optional arguments are used to add this command to SEdits middle button)Tj +0 -1.2222 TD +0.0489 Tw +[(menu. When the item is selected from the menu, the command function will be called as)]TJ +T* +0 Tw +(described above, with the charcode argument set to )Tj +/TT10 1 Tf +23.0259 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT14 1 Tf +-24.8262 -2.0667 TD +(key-name)Tj +/TT8 1 Tf +4.8008 0 TD +0.3311 Tw +[( is a string to identify the key \(combination\) to be typed to invoke the)]TJ +-4.8008 -1.2889 TD +0.0022 Tw +(command. For example "M-A" to represent the Meta-A key combination, and "C-M-A" for)Tj +0 -1.2222 TD +0 Tw +(Control-Meta-A.)Tj +0 -2 TD +0.0044 Tw +(command-name is a string to identify the command function, and will appear in the menu)Tj +0 -1.2222 TD +0 Tw +(next to the key-name.)Tj +0 -2 TD +0.0822 Tw +(help-string is a string to be printed in the prompt window when a mouse button is held)Tj +0 -1.2222 TD +0 Tw +(down over the menu item.)Tj +0 -2 TD +0.0867 Tw +(After adding all the commands that you want, you must call Reset-Commands to install)Tj +0 -1.2222 TD +0 Tw +(them.)Tj +0 -2 TD +(For example:)Tj +/TT10 1 Tf +4 -1.9333 TD +(\(ADD-COMMAND "^U" \(MY-CHANGE-CASE T\)\))Tj +0 -2 TD +(\(ADD-COMMAND "^Y" \(MY-CHANGE-CASE NIL\)\))Tj +T* +(\(ADD-COMMAND "1,R" MY-REMOVE-NIL)Tj +0 -1.2222 TD +( "M-R" "REMOVE NIL")Tj +T* +( "REMOVE NIL FROM THE SELECTED STRUCTURE"\)\))Tj +0 -2 TD +(\(RESET-COMMANDS\))Tj +/TT8 1 Tf +-4 -2.0667 TD +(will add three commands.)Tj +0 -2 TD +(Suppose )Tj +/TT10 1 Tf +4.0844 0 TD +(MY-CHANGE-CASE)Tj +/TT8 1 Tf +8.4014 0 TD +0.0556 Tw +[( takes the arguments )]TJ +/TT18 1 Tf +9.6426 0 TD +0 Tw +(context)Tj +/TT8 1 Tf +2.9624 0 TD +(, )Tj +/TT18 1 Tf +0.5556 0 TD +(charcode)Tj +/TT8 1 Tf +3.4805 0 TD +0.0556 Tw +(, and )Tj +/TT18 1 Tf +2.554 0 TD +0 Tw +(upper-case?)Tj +/TT8 1 Tf +4.7969 0 TD +0.0556 Tw +(. )Tj +/TT18 1 Tf +0.8611 0 TD +0 Tw +(upper-)Tj +-37.3388 -1.2889 TD +(case?)Tj +/TT8 1 Tf +2.1294 0 TD +0.1311 Tw +[( will be set to )]TJ +/TT10 1 Tf +6.7459 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1311 Tw +[( when )]TJ +/TT10 1 Tf +3.2393 0 TD +0 Tw +(MY-CHANGE-CASE)Tj +/TT8 1 Tf +8.4014 0 TD +0.1311 Tw +[( is called from Control-U, and )]TJ +/TT10 1 Tf +14.2227 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1311 Tw +[( when)]TJ +-37.139 -1.2889 TD +0.19 Tw +(called from Control-Y. )Tj +/TT10 1 Tf +11.1775 0 TD +0 Tw +(MY-REMOVE-NIL)Tj +/TT8 1 Tf +7.8013 0 TD +0.19 Tw +[( will be called with only )]TJ +/TT18 1 Tf +12.0033 0 TD +0 Tw +(context)Tj +/TT8 1 Tf +2.9624 0 TD +0.19 Tw +[( and )]TJ +/TT18 1 Tf +2.5729 0 TD +0 Tw +(charcode)Tj +/TT8 1 Tf +-36.5173 -1.2889 TD +(arguments when you type Meta-R.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(RESET-COMMANDS)Tj +/TT8 1 Tf +8.4003 0 TD +[(\))-29003.7([Function])]TJ +-6.0667 -1.8444 TD +0.1111 Tw +[(This function installs all commands added by add-command. SEdits which are open at)]TJ +0 -1.2222 TD +0.16 Tw +(the time of the reset-commands will not see the new commands; only new SEdits will)Tj +T* +0 Tw +(have the new commands available.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(DEFAULT-COMMANDS)Tj +/TT8 1 Tf +9.6003 0 TD +[(\))-27803.7([Function])]TJ +-7.2667 -1.8444 TD +0.19 Tw +[(This function removes all commands added by add-command, leaving SEdit with its)]TJ +0 -1.2222 TD +0.0944 Tw +[(default set of commands. As in reset-commands, open SEdits will not be changed; only)]TJ +T* +0 Tw +(new SEdits will have the user commands removed.)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 37 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +71 0 obj +<< +/Length 6005 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-16)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT16 1 Tf +0.333 0 TD +(GET-PROMPT-WINDOW)Tj +/TT8 1 Tf +10.2003 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(context)Tj +/TT8 1 Tf +2.9624 0 TD +[(\))-23991.3([Function])]TJ +-11.0791 -1.8444 TD +(Returns the attached prompt window for a particular SEdit.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(GET-SELECTION)Tj +/TT8 1 Tf +7.8003 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(context)Tj +/TT8 1 Tf +2.9624 0 TD +[(\))-26391.3([Function])]TJ +-8.6791 -1.8444 TD +0.0833 Tw +(This function returns two values: the selected structure, and the type of selection, one of)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1 Tw +(, or)Tj +/TT10 1 Tf +1.5409 0 TD +0.2389 Tw +[( :SUB-LIST)]TJ +/TT8 1 Tf +6.2399 0 TD +0.1 Tw +[(. The selection type )]TJ +/TT10 1 Tf +9.498 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1 Tw +[( means there is not a valid selection \(in)]TJ +-22.0795 -1.2889 TD +0.1089 Tw +(this case the structure is meaningless\). )Tj +/TT10 1 Tf +18.1528 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1089 Tw +[( means the selection is one complete structure.)]TJ +/TT10 1 Tf +-18.7529 -1.2889 TD +0 Tw +(:SUB-LIST)Tj +/TT8 1 Tf +5.4009 0 TD +0.1411 Tw +[( means a series of elements in a list is selected, in which case the structure)]TJ +-5.4009 -1.2889 TD +0 Tw +(returned is a list of the elements selected.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(REPLACE-SELECTION)Tj +/TT8 1 Tf +10.2003 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(context structure selection-type)Tj +/TT8 1 Tf +12.7231 0 TD +[( \))-13980.5([Function])]TJ +-20.8398 -1.8444 TD +0.1033 Tw +(This function replaces the current selection with a new structure, or multiple structures,)Tj +0 -1.2222 TD +0.2489 Tw +[(by deleting the selection and then inserting the new structure\(s\). The selection-type)]TJ +T* +0.0411 Tw +(argument must be one of )Tj +/TT10 1 Tf +11.5337 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( or )]TJ +/TT10 1 Tf +1.5231 0 TD +0 Tw +(:SUB-LIST)Tj +/TT8 1 Tf +5.4009 0 TD +0.0411 Tw +[(. If )]TJ +/TT10 1 Tf +1.7933 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +(, the structure is inserted as one complete)Tj +-21.4512 -1.2889 TD +0.1289 Tw +[(structure. If )]TJ +/TT10 1 Tf +6.0517 0 TD +0 Tw +(:SUB-LIST)Tj +/TT8 1 Tf +5.4009 0 TD +0.1289 Tw +(, the structure is treated as a list of elements, each of which is)Tj +-11.4526 -1.2889 TD +0 Tw +(insertd.)Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(*EDIT-FN*)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0933 Tw +(This function is called with the selected structure and the edit specified as arguments to)Tj +0 -1.2222 TD +0.0167 Tw +[(Sedit options as its arguments from the Edit \(M-O\) command. It should start the editor as)]TJ +T* +0 Tw +(appropriate, or generate an error if the selection is not editable. )Tj +/TT16 1 Tf +-2.6667 -2.3333 TD +(*COMPILE-FN*)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.5578 Tw +(This function is called with the arguments )Tj +/TT14 1 Tf +22.7702 0 TD +0 Tw +(name)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT14 1 Tf +1.0578 0 TD +(type)Tj +/TT8 1 Tf +2.4004 0 TD +0.5578 Tw +(, and )Tj +/TT14 1 Tf +3.5584 0 TD +0 Tw +(body)Tj +/TT8 1 Tf +2.4004 0 TD +0.5578 Tw +(, from the)Tj +-34.5875 -1.2889 TD +0.1211 Tw +[(compile/completion commands. It should compile the definition, )]TJ +/TT14 1 Tf +30.444 0 TD +0 Tw +(body)Tj +/TT8 1 Tf +2.4004 0 TD +0.1211 Tw +(, and install the)Tj +-32.8444 -1.2889 TD +0 Tw +(code as appropriate.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT16 1 Tf +0.3333 0 TD +(SEDIT)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(structure props options)Tj +/TT8 1 Tf +13.8023 0 TD +[(\))-20350.9([Function])]TJ +-14.7194 -1.8444 TD +0.0678 Tw +(This function provides a means of starting SEdit directly. )Tj +/TT14 1 Tf +26.3599 0 TD +0 Tw +(structure)Tj +/TT8 1 Tf +5.4009 0 TD +0.0678 Tw +[( is the structure to)]TJ +-31.7608 -1.2889 TD +0 Tw +(be edited.)Tj +/TT14 1 Tf +0 -2 TD +(props)Tj +/TT8 1 Tf +3.0005 0 TD +( is a property list, which may specify the following properties:)Tj +/TT10 1 Tf +-3.0005 -2.0667 TD +(:NAME)Tj +/TT8 1 Tf +3.0005 0 TD +( - the name of the object being edited)Tj +/TT10 1 Tf +-3.0005 -2.0667 TD +(:TYPE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0067 Tw +[( - the file manager type of the object being edited. If NIL, SEdit will not call the file)]TJ +-3.0005 -1.2889 TD +0.0211 Tw +[(manager when it tries to refetch the definition it is editing. Instead, it will just continue to)]TJ +0 -1.2222 TD +0 Tw +(use the structure that it has.)Tj +/TT10 1 Tf +0 -2 TD +(:COMPLETION-FN)Tj +/TT8 1 Tf +8.4014 0 TD +0.1333 Tw +[( - the function to be called when the edit session is completed. This)]TJ +-8.4014 -1.2889 TD +0.0022 Tw +(function is called with the )Tj +/TT14 1 Tf +11.7191 0 TD +0 Tw +(context)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT14 1 Tf +0.5022 0 TD +(structure)Tj +/TT8 1 Tf +5.4009 0 TD +0.0022 Tw +(, and )Tj +/TT14 1 Tf +2.4473 0 TD +0 Tw +(changed?)Tj +/TT8 1 Tf +4.8008 0 TD +0.0002 Tc +0.002 Tw +( arguments. )Tj +/TT14 1 Tf +5.7547 0 TD +0 Tc +0 Tw +(context)Tj +/TT8 1 Tf +4.2007 0 TD +0.0007 Tc +0.0015 Tw +( is)Tj +-39.0264 -1.2889 TD +0 Tc +0.33 Tw +(SEdits main data structure. )Tj +/TT14 1 Tf +14.1256 0 TD +0 Tw +(structure)Tj +/TT8 1 Tf +5.4009 0 TD +0.33 Tw +[( is the structure being edited. )]TJ +/TT14 1 Tf +15.6655 0 TD +0 Tw +(changed?)Tj +/TT8 1 Tf +-35.1919 -1.2889 TD +0.0311 Tw +(specifies if any changes have been made, and is one of )Tj +/TT10 1 Tf +24.5224 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5311 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +(, or )Tj +/TT10 1 Tf +1.7531 0 TD +0 Tw +(:ABORT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +(, where )Tj +/TT10 1 Tf +3.5813 0 TD +0 Tw +(:ABORT)Tj +/TT8 1 Tf +-36.3889 -1.2889 TD +0.0311 Tw +[(means the user is aborting the edit and throwing away any changes made. If the value of)]TJ +0 -1.2222 TD +0.2167 Tw +(this property is a list, the first element is treated as the function, and the rest of the)Tj +T* +0 Tw +(elements are extra arguments for the function.)Tj +ET +endstream +endobj +72 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT16 37 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +74 0 obj +<< +/Length 4100 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-17)Tj +/TT10 1 Tf +-37 60.6156 TD +(:ROOT-CHANGED-FN)Tj +/TT8 1 Tf +9.6016 0 TD +0.0622 Tw +[( - the function to be called when the entire structure being edited is)]TJ +-9.6016 -1.2889 TD +0.2367 Tw +[(replaced with a new structure. This function is called with the new structure as its)]TJ +0 -1.2222 TD +0.0256 Tw +[(argument. If the value of this property is a list, the first element is treated as the function,)]TJ +T* +0.0622 Tw +(and the rest of the elements are extra arguments that the function is applied to following)Tj +T* +0 Tw +(the structure argument. )Tj +/TT14 1 Tf +0 -2 TD +(options)Tj +/TT8 1 Tf +4.2007 0 TD +( is one or a list of any number of the followng keywords:)Tj +/TT10 1 Tf +-4.2007 -2.0667 TD +(:CLOSE-ON-COMPLETION)Tj +/TT8 1 Tf +12.002 0 TD +0.2511 Tw +[( - This option specifies that SEdit cannot remain active for)]TJ +-12.002 -1.2889 TD +0.1089 Tw +[(multiple completions. That is, the SEdit window cannot be shrunk, and the completion)]TJ +0 -1.2222 TD +0.0878 Tw +(commands that normally leave the window open will in this case close the window and)Tj +T* +0 Tw +(terminate the edit.)Tj +/TT10 1 Tf +0 -2 TD +(:COMPILE-ON-COMPLETION)Tj +/TT8 1 Tf +13.2021 0 TD +0.62 Tw +[( - This option specifies that SEdit should call the)]TJ +/TT10 1 Tf +-13.2021 -1.2889 TD +0 Tw +(*COMPILE-FN*)Tj +/TT8 1 Tf +7.2012 0 TD +0.0244 Tw +[( to compile the definition being edited upon completion, regardless of the)]TJ +-7.2012 -1.2889 TD +0 Tw +(completion command used.)Tj +/TT6 1 Tf +10 0 0 10 54 371.2 Tm +(The TTY Editor )Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 368.49 m +510.01 368.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 346.54 Tm +0.0167 Tw +[(This editor the main code editor in pre-window-system versions of Interlisp. For that task, it has been)]TJ +0 -1.2222 TD +0 Tw +(replaced by SEdit.)Tj +0 -2.8889 TD +0.0789 Tw +(However, the TTY Editor provides an excellent language for manipulating list structure and making)Tj +0 -1.2222 TD +0.1989 Tw +[(large-scale code changes. For example, several tools for cleaning up code are written using TTY)]TJ +T* +0 Tw +(Editor calls to do the actual work.)Tj +/TT6 1 Tf +10 0 0 10 54 245.2 Tm +(TTY Editor Local Attention-Changing Commands )Tj +ET +54.01 242.49 m +510.01 242.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 220.54 Tm +0.2344 Tw +(This section describes commands that change the current expression \(i.e., change the edit chain\))Tj +T* +0.1422 Tw +[(thereby "shifting the editors attention." These commands depend only on the )]TJ +/TT18 1 Tf +36.4518 0 TD +0 Tw +(structure)Tj +/TT8 1 Tf +3.7422 0 TD +0.1422 Tw +[( of the edit)]TJ +-40.194 -1.2222 TD +0.26 Tw +(chain, as compared to the search commands \(presented later\), which search the contents of the)Tj +T* +0 Tw +(structure.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(UP)Tj +/TT4 1 Tf +10 0 0 10 112.8 165.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 165.2 Tm +([Editor Command])Tj +/TT10 1 Tf +-32.9222 -2.7333 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0433 Tw +[( modifies the edit chain so that the old current expression \(i.e., the one at the time )]TJ +/TT10 1 Tf +36.8768 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0433 Tw +[( was)]TJ +-39.2772 -1.2889 TD +0.0278 Tw +[(called\) is the first element in the new current expression. If the current expression is the first)]TJ +0 -1.2222 TD +0.3533 Tw +(element in the next higher expression )Tj +/TT10 1 Tf +18.9247 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.3533 Tw +[( simply does a )]TJ +/TT10 1 Tf +8.0188 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.3533 Tw +[(. Otherwise )]TJ +/TT10 1 Tf +6.6562 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.3533 Tw +[( adds the)]TJ +-36.6002 -1.2889 TD +0 Tw +(corresponding tail to the edit chain.)Tj +0 -2.8889 TD +0.0178 Tw +(If a )Tj +/TT10 1 Tf +1.7055 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( command would cause the editor to type )]TJ +/TT10 1 Tf +18.7946 0 TD +0 Tw +(...)Tj +/TT8 1 Tf +1.8003 0 TD +0.0178 Tw +[( before typing the current expression, ie.,)]TJ +-22.9004 -1.2889 TD +0 Tw +(the current expression is a tail of the next higher expression, )Tj +/TT10 1 Tf +26.7627 0 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +( has no effect.)Tj +-27.9629 -2.9556 TD +(For example:)Tj +ET +endstream +endobj +75 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +77 0 obj +<< +/Length 5934 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-18)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 246 570.14 Tm +(*PP)Tj +0 -1.2222 TD +(\(COND \(\(NULL X\) \(RETURN Y\)\)\))Tj +0 -1 TD +(*1 P)Tj +T* +(COND)Tj +T* +(*UP P)Tj +T* +(\(COND \(& &\)\))Tj +T* +(*-1 P)Tj +T* +(\(\(NULL X\) \(RETURN Y\)\))Tj +T* +(*UP P)Tj +T* +(... \(\(NULL X\) \(RETURN Y\)\))Tj +T* +(*UP P)Tj +T* +(... \(\(NULL X\) \(RETURN Y\)\)\))Tj +T* +(*F NULL P)Tj +T* +(\(NULL X\))Tj +T* +(*UP P)Tj +T* +(\(\(NULL X\) \(RETURN Y\)\))Tj +T* +(*UP P)Tj +T* +(... \(\(NULL X\) \(RETURN Y\)\)\))Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.1244 Tw +(The execution of )Tj +/TT10 1 Tf +7.9422 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1244 Tw +[( is straightforward, except in those cases where the current expression)]TJ +-9.1424 -1.2889 TD +0.0344 Tw +(appears more than once in the next higher expression. For example, if the current expression)Tj +0 -1.2222 TD +0 Tw +(is )Tj +/TT10 1 Tf +1.0948 0 TD +0.3122 Tw +(\(A NIL B NIL C NIL\))Tj +/TT8 1 Tf +12.963 0 TD +0.13 Tw +[( and you perform )]TJ +/TT10 1 Tf +8.5498 0 TD +0 Tw +(4)Tj +/TT8 1 Tf +0.6001 0 TD +0.13 Tw +[( followed by )]TJ +/TT10 1 Tf +6.18 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.13 Tw +(, the current expression)Tj +-30.5879 -1.2889 TD +0.0711 Tw +(should then be )Tj +/TT10 1 Tf +7.0214 0 TD +0.1711 Tw +(... NIL C NIL\))Tj +/TT8 1 Tf +8.9147 0 TD +0.0711 Tw +(. )Tj +/TT10 1 Tf +0.8922 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0711 Tw +[( can determine which tail is the correct one because)]TJ +-18.0286 -1.2889 TD +0.0567 Tw +(the commands that descend save the last tail on an internal editor variable, )Tj +/TT10 1 Tf +34.0423 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0567 Tw +[(. Thus)]TJ +-38.243 -1.2889 TD +0.1333 Tw +(after the )Tj +/TT10 1 Tf +4.1871 0 TD +0 Tw +(4)Tj +/TT8 1 Tf +0.6001 0 TD +0.1333 Tw +[( command is executed, )]TJ +/TT10 1 Tf +10.8834 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.1333 Tw +[( is )]TJ +/TT10 1 Tf +1.4815 0 TD +0.3189 Tw +(\(NIL C NIL\))Tj +/TT8 1 Tf +7.2389 0 TD +0.1333 Tw +[(. When )]TJ +/TT10 1 Tf +4.0431 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1333 Tw +[( is called, it first)]TJ +-33.8349 -1.2889 TD +0.1711 Tw +[(determines if the current expression is a tail of the next higher expression. If it is, )]TJ +/TT10 1 Tf +38.9963 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1711 Tw +[( is)]TJ +-40.1965 -1.2889 TD +0.48 Tw +[(finished. Otherwise, )]TJ +/TT10 1 Tf +10.879 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.48 Tw +[( computes )]TJ +/TT10 1 Tf +5.7657 0 TD +0 Tw +(\(MEMB)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.73 0 TD +(CURRENT-EXPRESSION)Tj +/TT10 1 Tf +10.8018 0 TD +( )Tj +/TT14 1 Tf +1.7534 0 TD +(NEXT-HIGHER-)Tj +-34.1305 -1.2889 TD +(EXPRESSION)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +[( to obtain a tail beginning with the current expression. The current expression)]TJ +-6.6011 -1.2889 TD +0 Tw +(should )Tj +/TT18 1 Tf +3.36 0 TD +(always)Tj +/TT8 1 Tf +2.7769 0 TD +0.0533 Tw +[( be either a tail or an element of the next higher expression. If it is neither, for)]TJ +-6.1368 -1.2222 TD +0.1444 Tw +(example yopu have directly \(and incorrectly\) manipulated the edit chain, )Tj +/TT10 1 Tf +34.0367 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1444 Tw +[( generates an)]TJ +-35.2369 -1.2889 TD +0.05 Tw +[(error. If there are no other instances of the current expression in the next higher expression,)]TJ +0 -1.2222 TD +0 Tw +(this tail is the correct one. Otherwise )Tj +/TT10 1 Tf +16.6152 0 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +( uses )Tj +/TT10 1 Tf +2.4297 0 TD +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +( to select the correct tail.)Tj +-24.4458 -2.9556 TD +0.2344 Tw +(Occasionally you can get the edit chain into a state where )Tj +/TT10 1 Tf +28.1385 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.2344 Tw +[( cannot resolve the)]TJ +-32.3391 -1.2889 TD +0.0767 Tw +(ambiguity, for example if there were two non-atomic structures in the same expression that)Tj +0 -1.2222 TD +0 Tw +(were )Tj +/TT10 1 Tf +2.5448 0 TD +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.1078 Tw +(, and you descended more than one level into one of them and then tried to come)Tj +-3.745 -1.2889 TD +0.0033 Tw +(back out using )Tj +/TT10 1 Tf +6.7444 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0002 Tc +0.0031 Tw +(. In this case, )Tj +/TT10 1 Tf +6.1553 0 TD +0 Tc +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0004 Tc +0.0029 Tw +( prints )Tj +/TT10 1 Tf +3.1258 0 TD +0 Tc +0.0078 Tw +(LOCATION UNCERTAIN)Tj +/TT8 1 Tf +10.8095 0 TD +0.0002 Tc +0.0031 Tw +( and generates an error. Of)Tj +-29.2355 -1.2889 TD +0 Tc +0.1144 Tw +(course, we could have solved this problem completely in our implementation by saving at)Tj +0 -1.2222 TD +0.04 Tw +(each descent )Tj +/TT18 1 Tf +5.9296 0 TD +0 Tw +(both)Tj +/TT8 1 Tf +1.7397 0 TD +0.04 Tw +[( elements and tails. However, this would be a costly solution to a situation)]TJ +-7.6694 -1.2222 TD +0.0289 Tw +[(that arises infrequently, and when it does, has no detrimental effects. The )]TJ +/TT10 1 Tf +33.2354 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0289 Tw +[( solution)]TJ +-37.4361 -1.2889 TD +0 Tw +(is cheap and resolves almost all of the ambiguities.)Tj +/TT14 1 Tf +-1.3333 -2.4822 TD +(N)Tj +/TT6 1 Tf +10 0 0 10 155.4009 124.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 158.1792 124.8 Tm +(\()Tj +/TT14 1 Tf +0.333 0 TD +(N> = 1)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 196.5786 124.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 124.8 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0289 Tw +(Adds the )Tj +/TT14 1 Tf +4.3683 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +(th element of the current expression to the front of the edit chain, thereby making)Tj +-4.9684 -1.2889 TD +0.1478 Tw +[(it be the new current expression. Sets )]TJ +/TT10 1 Tf +18.0787 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.1478 Tw +[( for use by )]TJ +/TT10 1 Tf +5.4803 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1478 Tw +[(. Generates an error if the)]TJ +-28.9599 -1.2889 TD +0 Tw +(current expression is not a list that contains at least )Tj +/TT14 1 Tf +22.7373 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( elements.)Tj +ET +endstream +endobj +78 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +80 0 obj +<< +/Length 4283 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-19)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT6 1 Tf +10 0 0 10 112.8017 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 115.5801 568.2 Tm +(\()Tj +/TT14 1 Tf +0.333 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(> = 1)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT10 1 Tf +0.333 0 TD +( )Tj +/TT4 1 Tf +10 0 0 10 159.3804 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 568.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1022 Tw +(Adds the )Tj +/TT14 1 Tf +4.515 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +(th element from the end of the current expression to the front of the edit chain,)Tj +-5.1151 -1.2889 TD +0.0233 Tw +[(thereby making it be the new current expression. Sets )]TJ +/TT10 1 Tf +24.3686 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0233 Tw +[( for use by )]TJ +/TT10 1 Tf +4.9825 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0233 Tw +[(. Generates an)]TJ +-34.752 -1.2889 TD +0 Tw +(error if the current expression is not a list that contains at least )Tj +/TT14 1 Tf +27.7085 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( elements.)Tj +/TT10 1 Tf +-29.6419 -2.5489 TD +(0)Tj +/TT4 1 Tf +10 0 0 10 107.4 497.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 497.46 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0278 Tw +(Sets the edit chain to )Tj +/TT10 1 Tf +9.508 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +[( of the edit chain, thereby making the next higher expression be the)]TJ +-11.3083 -1.2889 TD +0.0622 Tw +[(new current expression. Generates an error if there is no higher expression, i.e., )]TJ +/TT10 1 Tf +36.3164 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( of edit)]TJ +-38.1167 -1.2889 TD +0 Tw +(chain is )Tj +/TT10 1 Tf +3.6138 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-5.4141 -2.9556 TD +0.1433 Tw +(Note that )Tj +/TT10 1 Tf +4.7032 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.1433 Tw +[( usually corresponds to going back to the next higher left parenthesis, but not)]TJ +-5.3033 -1.2889 TD +0 Tw +(always. For example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*P)Tj +0 -1 TD +(\(A B C D E F B\))Tj +T* +(*3 UP P)Tj +T* +(... C D E F G\))Tj +T* +(*3 UP P)Tj +T* +(... E F G\))Tj +T* +(*0 P)Tj +T* +(... C D E F G\))Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.0322 Tw +(If the intention is to go back to the next higher left parenthesis, regardless of any intervening)Tj +0 -1.2222 TD +0 Tw +(tails, the command )Tj +/TT10 1 Tf +8.6675 0 TD +(!0)Tj +/TT8 1 Tf +1.2002 0 TD +( can be used.)Tj +/TT10 1 Tf +-11.201 -2.5489 TD +(!0)Tj +/TT4 1 Tf +10 0 0 10 112.8 272.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 272.52 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0189 Tw +(Does repeated )Tj +/TT10 1 Tf +6.6306 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +(s until it reaches a point where the current expression is )Tj +/TT18 1 Tf +25.3508 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0189 Tw +[( a tail of the next)]TJ +-33.9145 -1.2889 TD +0 Tw +(higher expression, i.e., always goes back to the next higher left parenthesis.)Tj +/TT19 1 Tf +10 0 0 10 102 213.98 Tm +<0042>Tj +/TT4 1 Tf +0.603 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 213.98 Tm +([Editor Command])Tj +-32.9222 -2.6667 TD +0.17 Tw +(Sets the edit chain to )Tj +/TT10 1 Tf +10.2191 0 TD +0 Tw +(LAST)Tj +/TT8 1 Tf +2.4004 0 TD +0.17 Tw +[( of edit chain, thereby making the top level expression be the)]TJ +-12.6195 -1.2889 TD +0 Tw +(current expression. Never generates an error.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(NX)Tj +/TT4 1 Tf +10 0 0 10 112.8 156.04 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 156.04 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1156 Tw +(Effectively does an )Tj +/TT10 1 Tf +8.9463 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1156 Tw +[( followed by a )]TJ +/TT10 1 Tf +7.0023 0 TD +0 Tw +(2)Tj +/TT8 1 Tf +0.6001 0 TD +0.1156 Tw +(, thereby making the current expression be the next)Tj +-17.7488 -1.2889 TD +0.0867 Tw +[(expression. Generates an error if the current expression is the last one in a list. \(However,)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +( described below will handle this case.\))Tj +/TT10 1 Tf +-3.1336 -2.5489 TD +(BK)Tj +/TT4 1 Tf +10 0 0 10 112.8 85.9 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 85.9 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.2489 Tw +(Makes the current expression be the previous expression in the next higher expression.)Tj +0 -1.2222 TD +0 Tw +(Generates an error if the current expression is the first expression in a list.)Tj +ET +endstream +endobj +81 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +84 0 obj +<< +/Length 3514 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-20)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +(For example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*PP)Tj +0 -1 TD +(\(COND \(\(NULL X\) \(RETURN Y\)\)\))Tj +T* +(*F RETURN P)Tj +T* +(\(RETURN Y\))Tj +T* +(*BK P)Tj +T* +(\(NULL X\))Tj +/TT8 1 Tf +-13.3333 -2.7333 TD +(Both )Tj +/TT10 1 Tf +2.3638 0 TD +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.0489 Tw +[( and )]TJ +/TT10 1 Tf +2.2906 0 TD +0 Tw +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.0489 Tw +[( operate by performing a)]TJ +/TT10 1 Tf +11.1921 0 TD +0.1167 Tw +[( !0)]TJ +/TT8 1 Tf +1.917 0 TD +0.0489 Tw +[( followed by an appropriate number, i.e., there wont be)]TJ +-20.164 -1.2889 TD +0.0378 Tw +(an extra tail above the new current expression, as there would be if )Tj +/TT10 1 Tf +30.31 0 TD +0 Tw +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.0378 Tw +[( operated by performing an )]TJ +/TT10 1 Tf +12.6283 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +-44.1385 -1.2889 TD +(followed by a )Tj +/TT10 1 Tf +6.29 0 TD +(2)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-4.2235 -2.5489 TD +-0.0001 Tc +(\(NX )Tj +/TT14 1 Tf +2.4001 0 TD +0 Tc +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 187.8035 436.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 436.4 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(\()Tj +/TT14 1 Tf +0.333 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.3378 Tw +[( >= 1)]TJ +/TT8 1 Tf +3.676 0 TD +0.1411 Tw +[(\) Equivalent to )]TJ +/TT14 1 Tf +7.5776 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3911 0 TD +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.1411 Tw +[( commands, except if an error occurs, the edit chain is not)]TJ +-14.3782 -1.2889 TD +0 Tw +(changed.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +-0.0001 Tc +(\(BK )Tj +/TT14 1 Tf +2.4001 0 TD +0 Tc +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 187.8035 377.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 377.86 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(\()Tj +/TT14 1 Tf +0.333 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.3378 Tw +[( >= 1)]TJ +/TT8 1 Tf +3.676 0 TD +0.1411 Tw +[(\) Equivalent to )]TJ +/TT14 1 Tf +7.5776 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3911 0 TD +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.1411 Tw +[( commands, except if an error occurs, the edit chain is not)]TJ +-14.3782 -1.2889 TD +0 Tw +(changed.)Tj +4 -2 TD +(Note: )Tj +/TT10 1 Tf +2.9321 0 TD +(\(NX)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is equivalent to )Tj +/TT10 1 Tf +7.2632 0 TD +(\(BK )Tj +/TT14 1 Tf +2.4004 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, and vice versa.)Tj +/TT10 1 Tf +-22.9798 -2.5489 TD +(!NX)Tj +/TT4 1 Tf +10 0 0 10 166.2 300.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 300.72 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0633 Tw +(Makes the current expression be the next expression at a higher level, i.e., goes through any)Tj +0 -1.2222 TD +0 Tw +(number of right parentheses to get to the next expression. For example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*PP)Tj +0 -1 TD +(\(PROG \(\(L L\))Tj +T* +( \(UF L\)\))Tj +T* +( LP \(COND)Tj +T* +( \(\(NULL \(SETQ L \(CDR L\)\)\))Tj +T* +( \(ERROR!\)\))Tj +T* +( \([NULL \(CDR \(FMEMB \(CAR L\) \(CADR L])Tj +T* +( \(GO LP\)\)\))Tj +T* +( \(EDITCOM \(QUOTE NX\)\))Tj +T* +( \(SETQ UNFIND UF\))Tj +T* +( \(RETURN L\)\))Tj +T* +(*F CDR P)Tj +T* +(\(CDR L\))Tj +T* +(*NX)Tj +0 -2 TD +(NX ?)Tj +0 -1 TD +(*!NX P)Tj +T* +(\(ERROR!\))Tj +T* +(*!NX P)Tj +T* +(\(\(NULL &\) \(GO LP\)\))Tj +T* +(*!NX P)Tj +T* +(\(EDITCOM \(QUOTE NX\)\))Tj +T* +(*)Tj +ET +endstream +endobj +85 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +87 0 obj +<< +/Length 4794 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-21)Tj +/TT10 1 Tf +-38.3333 60.6156 TD +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0378 Tw +[( operates by doing )]TJ +/TT10 1 Tf +8.5964 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0378 Tw +(s until it reaches a stage where the current expression is )Tj +/TT18 1 Tf +25.4976 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0378 Tw +[( the last)]TJ +-37.8274 -1.2889 TD +0.01 Tw +(expression in the next higher expression, and then does a )Tj +/TT10 1 Tf +25.5941 0 TD +0 Tw +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.01 Tw +[(. Thus )]TJ +/TT10 1 Tf +3.2517 0 TD +0 Tw +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +0.01 Tw +[( always goes through)]TJ +-31.8463 -1.2889 TD +0.1789 Tw +(at least one unmatched right parenthesis, and the new current expression is always on a)Tj +0 -1.2222 TD +0.1811 Tw +(different level, i.e., )Tj +/TT10 1 Tf +8.9974 0 TD +0 Tw +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +0.1811 Tw +[( and )]TJ +/TT10 1 Tf +2.5551 0 TD +0 Tw +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.1811 Tw +[( always produce different results. For example using the)]TJ +-14.553 -1.2889 TD +0 Tw +(previous current expression:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*F CAR P)Tj +0 -1 TD +(\(CAR L\))Tj +T* +(*!NX P)Tj +T* +(\(GO LP\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +(P P)Tj +-1.2061 -1 TD +(\(CAR L\))Tj +T* +(*NX P)Tj +T* +(\(CADR L\))Tj +T* +(*)Tj +-10.6667 -2.3267 TD +(\(NTH)Tj +/TT6 1 Tf +10 0 0 10 123.6 412.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.3783 412.8 Tm +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 137.1801 412.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 412.8 Tm +([Editor Command])Tj +/TT10 1 Tf +-32.9222 -2.7333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.0922 Tw +[( ~= 0\))]TJ +/TT8 1 Tf +3.785 0 TD +0.0389 Tw +[( Equivalent to )]TJ +/TT14 1 Tf +6.8357 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0389 Tw +[( followed by )]TJ +/TT10 1 Tf +5.9067 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0389 Tw +(, i.e., causes the list starting with the )Tj +/TT14 1 Tf +16.4947 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0389 Tw +(th element)Tj +-36.6228 -1.2889 TD +0.1378 Tw +(of the current expression \(or )Tj +/TT14 1 Tf +13.4399 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1378 Tw +(th from the end if )Tj +/TT14 1 Tf +8.6869 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1378 Tw +[( < 0\) to become the current expression.)]TJ +-23.327 -1.2889 TD +0 Tw +(Causes an error if current expression does not have at least )Tj +/TT14 1 Tf +26.2515 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( elements.)Tj +/TT10 1 Tf +-26.8516 -2.9556 TD +(\(NTH 1\))Tj +/TT8 1 Tf +4.2007 0 TD +( is a no-op, as is )Tj +/TT10 1 Tf +7.2114 0 TD +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(-)Tj +/TT14 1 Tf +0.6001 0 TD +(L)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( where )Tj +/TT14 1 Tf +3.269 0 TD +(L)Tj +/TT8 1 Tf +0.6001 0 TD +( is the length of the current expression.)Tj +/TT10 1 Tf +-21.0653 -2.5489 TD +(line-feed)Tj +/TT4 1 Tf +10 0 0 10 150.6 315.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 315.46 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.2989 Tw +(Moves to the "next" expression and prints it, i.e. performs a )Tj +/TT10 1 Tf +29.6437 0 TD +0 Tw +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.2989 Tw +[( if possible, otherwise)]TJ +-30.8439 -1.2889 TD +0 Tw +(performs a )Tj +/TT10 1 Tf +5.0557 0 TD +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +(. \(The latter case is indcated by first printing ")Tj +/TT10 1 Tf +20.3535 0 TD +(>)Tj +/TT8 1 Tf +0.6001 0 TD +(".\))Tj +/TT10 1 Tf +-29.1429 -2.5489 TD +(Control-X)Tj +/TT4 1 Tf +10 0 0 10 150.6 256.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 256.32 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1589 Tw +(Control-X moves to the "previous" thing and then prints it, i.e. performs a )Tj +/TT10 1 Tf +34.8239 0 TD +0 Tw +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.1589 Tw +[( if possible,)]TJ +-36.0241 -1.2889 TD +0 Tw +(otherwise a )Tj +/TT10 1 Tf +5.356 0 TD +(!0)Tj +/TT8 1 Tf +1.2002 0 TD +( followed by a )Tj +/TT10 1 Tf +6.54 0 TD +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-15.6297 -2.5489 TD +(Control-Z)Tj +/TT4 1 Tf +10 0 0 10 150.6 197.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 197.18 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Control-Z moves to the last expression and prints it, i.e. does )Tj +/TT10 1 Tf +27.0874 0 TD +(-1)Tj +/TT8 1 Tf +1.2002 0 TD +( followed by )Tj +/TT10 1 Tf +5.79 0 TD +(P)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-38.6777 -2.9556 TD +0.0889 Tw +(Line-feed, Control-X, and Control-Z are implemented as )Tj +/TT18 1 Tf +25.7555 0 TD +0 Tw +(immediate)Tj +/TT8 1 Tf +4.1665 0 TD +0.0889 Tw +[( read macros; as soon as they are)]TJ +-29.922 -1.2222 TD +0.0789 Tw +[(read, they abort the current printout. They thus provide a convenient way of moving around in the)]TJ +T* +0 Tw +(editor. To facilitate using different control characters for those macros, the function )Tj +/TT10 1 Tf +37.1582 0 TD +(SETTERMCHARS)Tj +/TT8 1 Tf +7.2012 0 TD +( is)Tj +-44.3594 -1.2889 TD +(provided \(see below\).)Tj +ET +endstream +endobj +88 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +91 0 obj +<< +/Length 10539 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-22)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +0.6 -4.38 TD +(Commands That Search)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 543.54 Tm +0.0544 Tw +(All of the editor commands that search use the same pattern matching routine \(the function )Tj +/TT10 1 Tf +41.4724 0 TD +0 Tw +(EDIT4E)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-45.073 -1.2889 TD +0.3211 Tw +[(below\). We will therefore begin our discussion of searching)-6.2( by describing the pattern match)]TJ +0 -1.2222 TD +0 Tw +(mechanism. A pattern )Tj +/TT14 1 Tf +10.3047 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +( matches with )Tj +/TT14 1 Tf +6.4209 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if any of the following conditions are true:)Tj +-16.4593 -2.0667 TD +[(1.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(X)Tj +/TT8 1 Tf +-8.5073 -2.0667 TD +[(2.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(&)Tj +/TT8 1 Tf +-5.9351 -2.0667 TD +[(3.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +( is a number and )Tj +/TT10 1 Tf +7.6528 0 TD +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(X)Tj +/TT8 1 Tf +-15.5454 -2.0667 TD +[(4.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +( is a string and )Tj +/TT10 1 Tf +6.7319 0 TD +(\(STREQUAL)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is true)Tj +-20.7036 -2.0667 TD +[(5.)-1250(If )]TJ +/TT10 1 Tf +2.941 0 TD +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2711 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +[( is the atom )]TJ +/TT10 1 Tf +5.4414 0 TD +0 Tw +(*ANY*)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2711 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +[( is a list of patterns, and one of the patterns on)]TJ +/TT10 1 Tf +-21.3811 -1.2889 TD +0 Tw +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( matches )Tj +/TT14 1 Tf +4.1377 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-10.4552 -2.0667 TD +[(6.)-1250(If )]TJ +/TT14 1 Tf +2.9944 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0744 Tw +[( is a literal atom or string containing one or more )]TJ +/TT10 1 Tf +22.6778 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0744 Tw +(s \(escapes\), each )Tj +/TT10 1 Tf +7.6686 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0744 Tw +[( can match an)]TJ +-35.6746 -1.2889 TD +0.1311 Tw +(indefinite number \(including 0\) of contiguous characters in the atom or string )Tj +/TT18 1 Tf +36.0694 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.7222 0 TD +0.1311 Tw +(, e.g., )Tj +/TT10 1 Tf +2.7974 0 TD +0 Tw +(VER$)Tj +/TT8 1 Tf +-39.589 -1.2889 TD +0.08 Tw +(matches both )Tj +/TT10 1 Tf +6.305 0 TD +0 Tw +(VERYLONGATOM)Tj +/TT8 1 Tf +7.2012 0 TD +0.08 Tw +[( and )]TJ +/TT10 1 Tf +2.3529 0 TD +0 Tw +("VERYLONGSTRING")Tj +/TT8 1 Tf +9.6016 0 TD +0.08 Tw +[( as do )]TJ +/TT10 1 Tf +3.0706 0 TD +0 Tw +($LONG$)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( \(but not )]TJ +/TT10 1 Tf +4.2595 0 TD +0 Tw +($LONG)Tj +/TT8 1 Tf +3.0005 0 TD +0.08 Tw +(\), and)Tj +/TT10 1 Tf +-39.3918 -1.2889 TD +0 Tw +($V$L$T$)Tj +/TT8 1 Tf +4.2007 0 TD +(. Note: the litatom )Tj +/TT10 1 Tf +8.7324 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +( \(escape\) matches only with itself.)Tj +-14.1999 -2.0667 TD +[(7.)-1250(If )]TJ +/TT14 1 Tf +2.9833 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +[( is a literal atom or string ending in )]TJ +/TT10 1 Tf +16.3522 0 TD +0 Tw +($$)Tj +/TT8 1 Tf +1.2002 0 TD +0.0633 Tw +[( \(escape, escape\), )]TJ +/TT14 1 Tf +7.9595 0 TD +0 Tw +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +[( matches with the atom)]TJ +-31.4291 -1.2889 TD +0.0889 Tw +(or string )Tj +/TT14 1 Tf +4.1929 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0889 Tw +[( if it is "close" to )]TJ +/TT14 1 Tf +7.7872 0 TD +0 Tw +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0889 Tw +(, in the sense used by the spelling corrector \(see Chapter 20\).)Tj +-14.3805 -1.2889 TD +0 Tw +(For example, )Tj +/TT10 1 Tf +5.9961 0 TD +(CONSS$$)Tj +/TT8 1 Tf +4.2007 0 TD +( matches with )Tj +/TT10 1 Tf +6.4209 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(CNONC$$)Tj +/TT8 1 Tf +4.2007 0 TD +( with )Tj +/TT10 1 Tf +2.5332 0 TD +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NCONC1)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-37.6273 -2.9556 TD +0.0178 Tw +(The pattern matching routine always types a message of the form )Tj +/TT10 1 Tf +29.3738 0 TD +0 Tw +(=)Tj +/TT14 1 Tf +0.6001 0 TD +(MATCHING-ITEM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0178 Tw +[( to inform you of)]TJ +-37.7751 -1.2889 TD +0.0333 Tw +(the object matched by a pattern of the above two types, unless )Tj +/TT10 1 Tf +28.067 0 TD +0.08 Tw +(EDITQUIETFLG = T)Tj +/TT8 1 Tf +9.7616 0 TD +0.0333 Tw +[(. For example, if)]TJ +/TT10 1 Tf +-37.8286 -1.2889 TD +0 Tw +(VER$)Tj +/TT8 1 Tf +2.4004 0 TD +( matches )Tj +/TT10 1 Tf +4.1377 0 TD +(VERYLONGATOM)Tj +/TT8 1 Tf +7.2012 0 TD +(, the editor would print )Tj +/TT10 1 Tf +10.6152 0 TD +(=VERYLONGATOM)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +-29.4891 -2.0667 TD +[(8.)-1250(If )]TJ +/TT10 1 Tf +2.961 0 TD +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2911 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( is the atom )]TJ +/TT12 1 Tf +5.5214 0 TD +0 Tw +(--)Tj +/TT8 1 Tf +0.666 0 TD +(, )Tj +/TT14 1 Tf +0.5411 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[( matches )]TJ +/TT14 1 Tf +4.2199 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( if )]TJ +/TT10 1 Tf +1.2062 0 TD +0 Tw +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2911 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( matches with some tail of )]TJ +/TT14 1 Tf +12.0362 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[(. For)]TJ +-39.6695 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.2668 0 TD +0.0422 Tw +(\(A -- \(&\)\))Tj +/TT8 1 Tf +6.0854 0 TD +0.0178 Tw +[( will match with )]TJ +/TT10 1 Tf +7.5462 0 TD +0.0422 Tw +(\(A B C \(D\)\))Tj +/TT8 1 Tf +6.7277 0 TD +0.0178 Tw +(, but not )Tj +/TT10 1 Tf +3.9899 0 TD +0.0422 Tw +(\(A B C D\))Tj +/TT8 1 Tf +5.5275 0 TD +0.0178 Tw +(, or )Tj +/TT10 1 Tf +1.7265 0 TD +0.0422 Tw +(\(A B C \(D\))Tj +-35.8701 -1.2889 TD +0 Tw +(E\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0089 Tw +[(. However, note that )]TJ +/TT10 1 Tf +9.5918 0 TD +0.0211 Tw +(\(A -- \(&\) --\) )Tj +/TT8 1 Tf +8.4858 0 TD +0.0089 Tw +(will match with )Tj +/TT10 1 Tf +7.2518 0 TD +0.0211 Tw +(\(A B C \(D\) E\))Tj +/TT8 1 Tf +7.8857 0 TD +0.0089 Tw +[(. In other words,)]TJ +/TT10 1 Tf +-34.4153 -1.2889 TD +0 Tw +(--)Tj +/TT8 1 Tf +1.2002 0 TD +( can match any interior segment of a list.)Tj +0.1331 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.931 0 TD +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT18 1 Tf +0.2611 0 TD +(P)Tj +/TT14 1 Tf +0.6108 0 TD +(AT)Tj +/TT10 1 Tf +1.2002 0 TD +0.0278 Tw +(\)= NIL)Tj +/TT8 1 Tf +3.6284 0 TD +0.0111 Tw +(, i.e., )Tj +/TT14 1 Tf +2.2922 0 TD +0 Tw +(PAT )Tj +/TT10 1 Tf +2.4282 0 TD +0.0278 Tw +(= \(--\),)Tj +/TT8 1 Tf +4.2285 0 TD +0.0111 Tw +[( then it matches any tail of a list. Therefore, )]TJ +/TT10 1 Tf +19.6545 0 TD +0.0278 Tw +(\(A --)Tj +-38.9686 -1.2889 TD +0 Tw +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( matches )Tj +/TT10 1 Tf +4.1377 0 TD +(\(A\), \(A B C\))Tj +/TT8 1 Tf +7.2012 0 TD +( and)Tj +/TT10 1 Tf +1.9429 0 TD +( \(A . B\))Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-19.3493 -2.0667 TD +[(9.)-1250(If )]TJ +/TT10 1 Tf +2.9199 0 TD +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is the atom )Tj +/TT10 1 Tf +5.3569 0 TD +(==)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +( matches )Tj +/TT14 1 Tf +4.1377 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if and only if )Tj +/TT10 1 Tf +6.166 0 TD +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-35.1699 -2.0667 TD +0.1856 Tw +(This pattern is for use by programs that call the editor as a subroutine, since any non-)Tj +-1.3333 -1.2222 TD +0.1022 Tw +(atomic expression in a command )Tj +/TT18 1 Tf +15.309 0 TD +0 Tw +(typed)Tj +/TT8 1 Tf +2.2222 0 TD +0.1022 Tw +[( in by you obviously cannot be )]TJ +/TT10 1 Tf +14.5403 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.1022 Tw +[( to already existing)]TJ +-33.2716 -1.2889 TD +0 Tw +(structure.)Tj +-0.6667 -2 TD +[(10.)-750(If )]TJ +/TT10 1 Tf +2.9266 0 TD +(\(CADR)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.2567 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( is the atom )]TJ +/TT10 1 Tf +5.3836 0 TD +0 Tw +(..)Tj +/TT8 1 Tf +1.2002 0 TD +0.0067 Tw +[( \(two periods\), )]TJ +/TT14 1 Tf +6.7387 0 TD +0 Tw +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0067 Tw +[( matches )]TJ +/TT14 1 Tf +4.151 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( if )]TJ +/TT10 1 Tf +1.1374 0 TD +0 Tw +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2567 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( matches )]TJ +/TT10 1 Tf +4.151 0 TD +0 Tw +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2567 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +-41.3944 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(\(CDDR)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is contained in )Tj +/TT14 1 Tf +6.9487 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(, as described below.)Tj +-15.8092 -2.0667 TD +0.1389 Tw +[(11.)-750(Otherwise if )]TJ +/TT14 1 Tf +7.998 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( is a list, )]TJ +/TT14 1 Tf +4.3524 0 TD +0 Tw +(PAT)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +[( matches )]TJ +/TT14 1 Tf +4.4155 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( if )]TJ +/TT10 1 Tf +1.4018 0 TD +0 Tw +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3889 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( matches )]TJ +/TT10 1 Tf +4.4155 0 TD +0 Tw +(\(CAR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3889 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +(, and )Tj +/TT10 1 Tf +2.7206 0 TD +0 Tw +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3889 0 TD +(PAT)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +-41.4064 -1.2889 TD +(matches )Tj +/TT10 1 Tf +3.8877 0 TD +(\(CDR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +92 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +94 0 obj +<< +/Length 6160 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-23)Tj +/TT8 1 Tf +-42.3333 60.6156 TD +0.17 Tw +(When the editor is searching, the pattern matching routine is called to match with )Tj +/TT18 1 Tf +38.7296 0 TD +0 Tw +(elements)Tj +/TT8 1 Tf +3.5015 0 TD +0.17 Tw +[( in the)]TJ +-42.2311 -1.2222 TD +0.1878 Tw +(structure, unless the pattern begins with )Tj +/TT10 1 Tf +19.1897 0 TD +0 Tw +(...)Tj +/TT8 1 Tf +1.8003 0 TD +0.1878 Tw +[( \(three periods\), in which case )]TJ +/TT10 1 Tf +14.6032 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1878 Tw +[( of the pattern is)]TJ +-37.3935 -1.2889 TD +0 Tw +(matched against proper tails in the structure. Thus,)Tj +/TT10 1 Tf +4 -2.8222 TD +(*P)Tj +5.3333 -1 TD +(\(A B C \(B C\)\))Tj +T* +(*F \(B --\))Tj +T* +(*P)Tj +T* +(\(B C\))Tj +T* +(*0 F \(... B --\))Tj +T* +(*P)Tj +T* +(... B C \(B C\)\))Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(Matching is also attempted with atomic tails \(except for )Tj +/TT10 1 Tf +24.791 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(\). Thus,)Tj +/TT10 1 Tf +-22.5913 -2.8889 TD +(*P)Tj +5.3333 -1 TD +(\(A \(B . C\)\))Tj +T* +(*F C)Tj +T* +(*P)Tj +T* +(... . C\))Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.0544 Tw +(Although the current expression is the atom )Tj +/TT10 1 Tf +20.1004 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0544 Tw +[( after the final command, it is printed as )]TJ +/TT10 1 Tf +18.3967 0 TD +0.13 Tw +(... . C\))Tj +/TT8 1 Tf +5.0608 0 TD +0.0544 Tw +[( to)]TJ +-44.158 -1.2889 TD +0.1233 Tw +(alert you to the fact that )Tj +/TT10 1 Tf +11.5233 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.1233 Tw +[( is a )]TJ +/TT18 1 Tf +2.3321 0 TD +0 Tw +(tail)Tj +/TT8 1 Tf +1.3325 0 TD +0.1233 Tw +[(, not an element. Note that the pattern )]TJ +/TT10 1 Tf +18.4153 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.1233 Tw +[( will match with either)]TJ +-34.8034 -1.2889 TD +0.0478 Tw +(instance of )Tj +/TT10 1 Tf +5.1024 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0478 Tw +[( in )]TJ +/TT10 1 Tf +1.4686 0 TD +0.1156 Tw +(\(A C \(B . C\)\))Tj +/TT8 1 Tf +8.2635 0 TD +0.0478 Tw +(, whereas)Tj +/TT10 1 Tf +4.2407 0 TD +0.1156 Tw +[( \(... . C\))]TJ +/TT8 1 Tf +6.3476 0 TD +0.0478 Tw +[( will match only the second )]TJ +/TT10 1 Tf +12.6763 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0478 Tw +[(. The pattern)]TJ +/TT10 1 Tf +-39.2993 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0256 Tw +[( will only match with )]TJ +/TT10 1 Tf +9.828 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0256 Tw +[( as an element, i.e., it will not match in )]TJ +/TT10 1 Tf +17.4367 0 TD +0.0611 Tw +(\(A B\))Tj +/TT8 1 Tf +3.0616 0 TD +0.0256 Tw +(, even though )Tj +/TT10 1 Tf +6.377 0 TD +0 Tw +(CDDR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0256 Tw +[( of )]TJ +/TT10 1 Tf +1.43 0 TD +0 Tw +(\(A)Tj +-44.1342 -1.2889 TD +(B\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0578 Tw +[( is )]TJ +/TT10 1 Tf +1.3304 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0578 Tw +[(. However, )]TJ +/TT10 1 Tf +5.5532 0 TD +0.1378 Tw +(\(... . NIL\))Tj +/TT8 1 Tf +6.8766 0 TD +0.0578 Tw +[( \(or equivalently )]TJ +/TT10 1 Tf +7.7207 0 TD +0 Tw +(\(...\))Tj +/TT8 1 Tf +3.0005 0 TD +0.0578 Tw +(\) may be used to specify a )Tj +/TT10 1 Tf +12.0753 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT18 1 Tf +0.3078 0 TD +(tail)Tj +/TT8 1 Tf +1.3325 0 TD +0.0578 Tw +(, e.g.,)Tj +/TT10 1 Tf +-42.9979 -1.2889 TD +0 Tw +(\(... . NIL\))Tj +/TT8 1 Tf +6.6011 0 TD +( will match with )Tj +/TT10 1 Tf +7.4751 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +( of the third subexpression of )Tj +/TT10 1 Tf +13.167 0 TD +(\(\(A . B\) \(C . D\) \(E\)\))Tj +/TT8 1 Tf +12.6021 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 78 261.4 Tm +(Search Algorithm)Tj +/TT8 1 Tf +9 0 0 9 78 245.74 Tm +0.0922 Tw +[(Searching begins with the current expression and proceeds in print order. Searching usually means)]TJ +0 -1.2222 TD +0.0333 Tw +(find the next instance of this pattern, and consequently a match is not attempted that would leave the)Tj +T* +0.0278 Tw +[(edit chain unchanged. At each step, the pattern is matched against the next element in the expression)]TJ +T* +0.2467 Tw +(currently being searched, unless the pattern begins with )Tj +/TT10 1 Tf +26.9875 0 TD +0 Tw +(...)Tj +/TT8 1 Tf +1.8003 0 TD +0.2467 Tw +[( \(three periods\) in which case it is)]TJ +-28.7878 -1.2889 TD +0 Tw +(matched against the next tail of the expression.)Tj +0 -2 TD +0.0722 Tw +(If the match is not successful, the search operation is recursive first in the )Tj +/TT10 1 Tf +33.4862 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0722 Tw +[( direction, and then in)]TJ +-35.2865 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.7894 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1522 Tw +[( direction, i.e., if the element under examination is a list, the search descends into that list)]TJ +-3.5897 -1.2889 TD +0.0189 Tw +[(before attempting to match with other elements \(or tails\) at the same level. Note: A find command of)]TJ +0 -1.2222 TD +0.0456 Tw +(the form )Tj +/TT10 1 Tf +4.1351 0 TD +0 Tw +(\(F)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.2956 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.2956 0 TD +(NIL\))Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[( will only attempts matches at the top level of the current expression, i.e.,)]TJ +-12.5274 -1.2889 TD +0 Tw +(it does not descend into elements, or ascend to higher expressions.)Tj +0 -2 TD +0.1478 Tw +(However, at no point is the total recursive depth of the search \(sum of number of )Tj +/TT10 1 Tf +38.3952 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1478 Tw +(s and )Tj +/TT10 1 Tf +2.9123 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +(s)Tj +-44.9081 -1.2889 TD +0.0956 Tw +(descended into\) allowed to exceed the value of the variable )Tj +/TT10 1 Tf +27.3501 0 TD +0 Tw +(MAXLEVEL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0956 Tw +[(. At that point, the search of)]TJ +-32.1509 -1.2889 TD +0.0456 Tw +(that element or tail is abandoned, exactly as though the element or tail had been completely searched)Tj +0 -1.2222 TD +0.1344 Tw +(without finding a match, and the search continues with the element or tail for which the recursive)Tj +T* +0.0311 Tw +(depth is below )Tj +/TT10 1 Tf +6.8604 0 TD +0 Tw +(MAXLEVEL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0311 Tw +[(. This feature is designed to enable you to search circular list structures \(by)]TJ +-11.6612 -1.2889 TD +0 Tw +(setting )Tj +/TT10 1 Tf +3.4455 0 TD +(MAXLEVEL)Tj +/TT8 1 Tf +4.8008 0 TD +0.2111 Tw +[( small\), as well as protecting him from accidentally encountering a circular list)]TJ +ET +endstream +endobj +95 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +97 0 obj +<< +/Length 6851 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-24)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.1089 Tw +(structure in the course of normal editing. )Tj +/TT10 1 Tf +19.479 0 TD +0 Tw +(MAXLEVEL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1089 Tw +[( can also be set to )]TJ +/TT10 1 Tf +8.5733 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1089 Tw +(, which is equivalent to)Tj +-34.6534 -1.2889 TD +0 Tw +(infinity. )Tj +/TT10 1 Tf +4.0024 0 TD +(MAXLEVEL)Tj +/TT8 1 Tf +4.8008 0 TD +( is initially set to 300.)Tj +-8.8032 -2.0667 TD +0.1033 Tw +(If a successful match is not found in the current expression, the search automatically ascends to the)Tj +0 -1.2222 TD +0.1178 Tw +(next higher expression, and continues searching there on the next expression after the expression it)Tj +T* +0.07 Tw +[(just finished searching. If there is none, it ascends again, etc. This process continues until the entire)]TJ +T* +0.0667 Tw +[(edit chain has been searched, at which point the search fails, and an error is generated. If the search)]TJ +T* +0 Tw +(fails \(or is aborted by Control-E\), the edit chain is not changed \(nor are any )Tj +/TT10 1 Tf +33.3032 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +(es performed\).)Tj +-35.7036 -2.0667 TD +0.0533 Tw +(If the search is successful, i.e., an expression is found that the pattern matches, the edit chain is set to)Tj +0 -1.2222 TD +0 Tw +(the value it would have had had you reached that expression via a sequence of integer commands.)Tj +0 -2 TD +0.0378 Tw +(If the expression that matched was a list, it will be the final link in the edit chain, i.e., the new current)Tj +0 -1.2222 TD +0.0433 Tw +[(expression. If the expression that matched is not a list, e.g., is an atom, the current expression will be)]TJ +T* +0.01 Tw +(the tail beginning with that atom, unless the atom is a tail, e.g., )Tj +/TT10 1 Tf +28.0236 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.01 Tw +[( in )]TJ +/TT10 1 Tf +1.393 0 TD +0.0244 Tw +(\(A . B\))Tj +/TT8 1 Tf +4.2496 0 TD +0.01 Tw +[(. In this case, the current)]TJ +-34.2663 -1.2889 TD +0.0744 Tw +(expression will be )Tj +/TT10 1 Tf +8.4494 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0744 Tw +(, but will print as )Tj +/TT10 1 Tf +8.1808 0 TD +0.18 Tw +(... . B\))Tj +/TT8 1 Tf +5.1608 0 TD +0.0744 Tw +[(. In other words, the search effectively does an )]TJ +/TT10 1 Tf +21.7298 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +-44.1209 -1.2889 TD +(\(unless )Tj +/TT10 1 Tf +3.3857 0 TD +(UPFINDFLG = NIL)Tj +/TT8 1 Tf +9.0015 0 TD +( \(initially )Tj +/TT10 1 Tf +4.2524 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(\). See "Form Oriented Editing" in this chapter\).)Tj +/TT6 1 Tf +10 0 0 10 126 374.6 Tm +(Search Commands)Tj +/TT8 1 Tf +9 0 0 9 126 358.94 Tm +0.0556 Tw +(All of the commands below set )Tj +/TT10 1 Tf +14.2635 0 TD +0 Tw +(LASTAIL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0556 Tw +[( for use by )]TJ +/TT10 1 Tf +5.1114 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0556 Tw +(, set )Tj +/TT10 1 Tf +2.0901 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.0556 Tw +[( for use by \\ \(below\), and do not)]TJ +-30.4665 -1.2889 TD +0 Tw +(change the edit chain or perform any )Tj +/TT10 1 Tf +16.5972 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +(es if they are unsuccessful or aborted.)Tj +/TT10 1 Tf +-16.3309 -2.5489 TD +(F)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT4 1 Tf +10 0 0 10 195.45 324.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 324.4 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0367 Tw +(Actually two commands: the )Tj +/TT10 1 Tf +13.1511 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( informs the editor that the )]TJ +/TT18 1 Tf +12.3304 0 TD +0 Tw +(next)Tj +/TT8 1 Tf +1.7783 0 TD +0.0367 Tw +[( command is to be interpreted)]TJ +-27.8598 -1.2889 TD +0.0622 Tw +[(as a pattern. This is the most common and useful form of the find command. If successful,)]TJ +0 -1.2222 TD +0 Tw +(the edit chain always changes, i.e., )Tj +/TT10 1 Tf +15.4351 0 TD +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( means find the next instance of )Tj +/TT14 1 Tf +14.2319 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-38.9185 -2.9556 TD +(If )Tj +/TT10 1 Tf +1.2355 0 TD +(\(MEMB)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.5656 0 TD +(PATTERN)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +1.3568 0 TD +(CURRENT-EXPRESSION)Tj +/TT10 1 Tf +10.8018 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.3156 Tw +[( is true, )]TJ +/TT10 1 Tf +4.4647 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.3156 Tw +[( does not proceed with a full)]TJ +-26.8257 -1.2889 TD +0.0833 Tw +[(recursive search. If the value of the )]TJ +/TT10 1 Tf +16.5763 0 TD +0 Tw +(MEMB)Tj +/TT8 1 Tf +2.4004 0 TD +0.0833 Tw +[( is )]TJ +/TT10 1 Tf +1.3815 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5833 0 TD +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[( invokes the search algorithm described)]TJ +-23.342 -1.2889 TD +0 Tw +(above.)Tj +0 -2.8889 TD +0.0567 Tw +(If the current expression is )Tj +/TT10 1 Tf +12.2662 0 TD +0.1356 Tw +(\(PROG NIL LP \(COND \(-- \(GO LP1\)\)\) ... LP1 ...\))Tj +/TT8 1 Tf +28.8245 0 TD +0 Tw +(,)Tj +-41.0907 -1.2889 TD +(then )Tj +/TT10 1 Tf +2.307 0 TD +0.2111 Tw +(F LP1)Tj +/TT8 1 Tf +3.2116 0 TD +0.0878 Tw +[( will find the )]TJ +/TT10 1 Tf +6.2622 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +[( label, not the )]TJ +/TT10 1 Tf +6.5567 0 TD +0 Tw +(LP1)Tj +/TT8 1 Tf +1.8003 0 TD +0.0878 Tw +[( inside of the )]TJ +/TT10 1 Tf +6.295 0 TD +0 Tw +(GO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0878 Tw +[( expression, even though)]TJ +-30.0334 -1.2889 TD +0.0367 Tw +[(the latter appears first \(in print order\) in the current expression. Typing )]TJ +/TT10 1 Tf +32.5309 0 TD +0 Tw +(1)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( \(making the atom)]TJ +/TT10 1 Tf +-33.131 -1.2889 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +( be the current expression\) followed by )Tj +/TT10 1 Tf +17.5034 0 TD +(F)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(LP1)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(would)Tj +/TT8 1 Tf +2.5 0 TD +( find the first )Tj +/TT10 1 Tf +5.9731 0 TD +(LP1)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-34.7611 -2.5489 TD +(F)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(N)Tj +/TT4 1 Tf +10 0 0 10 203.1 143.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 143.66 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0044 Tw +(Same as )Tj +/TT10 1 Tf +3.8194 0 TD +0 Tw +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.2544 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0044 Tw +(, i.e., )Tj +/TT10 1 Tf +2.2789 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.0044 Tw +(inds the )Tj +/TT10 1 Tf +3.8038 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0044 Tw +(ext instance of )Tj +/TT14 1 Tf +6.5915 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0044 Tw +(, except that the )Tj +/TT10 1 Tf +7.2346 0 TD +0 Tw +(MEMB)Tj +/TT8 1 Tf +2.4004 0 TD +0.0004 Tc +0.004 Tw +( check of )Tj +/TT10 1 Tf +4.1471 0 TD +0 Tc +0 Tw +(F)Tj +/TT14 1 Tf +-40.7318 -1.2889 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( is not performed.)Tj +ET +endstream +endobj +98 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 37 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +100 0 obj +<< +/Length 8380 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-25)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(F)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT4 1 Tf +10 0 0 10 155.1 568.2 Tm +[( )-24986.3([)]TJ +/TT8 1 Tf +9 0 0 9 413.2983 568.2 Tm +(Editor Command])Tj +-33.2554 -2.7333 TD +0.1478 Tw +(Similar to )Tj +/TT10 1 Tf +4.8434 0 TD +0 Tw +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.3978 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1478 Tw +(, except that it may succeed without changing the edit chain, and it)Tj +-10.042 -1.2889 TD +0.0089 Tw +(does not perform the )Tj +/TT10 1 Tf +9.5683 0 TD +0 Tw +(MEMB)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( check. For example, if the current expression is )]TJ +/TT10 1 Tf +21.5269 0 TD +0.02 Tw +(\(COND ...\), F)Tj +-33.4955 -1.2889 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( will look for the next )Tj +/TT10 1 Tf +9.7104 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(, but )Tj +/TT10 1 Tf +2.2324 0 TD +(\(F COND T\))Tj +/TT8 1 Tf +6.001 0 TD +( will "stay here".)Tj +/TT10 1 Tf +-24.078 -2.5489 TD +(\(F)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +-0.001 Tc +(N\))Tj +/TT4 1 Tf +10 0 0 10 165.9009 497.46 Tm +0 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 497.46 Tm +([Editor Command])Tj +/TT10 1 Tf +-32.9222 -2.7333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +0.4156 Tw +[( >= 1\))]TJ +/TT8 1 Tf +4.4317 0 TD +0.1733 Tw +[( Finds the )]TJ +/TT14 1 Tf +5.5444 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1733 Tw +(th place that )Tj +/TT14 1 Tf +6.2275 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1733 Tw +[( matches. Equivalent to )]TJ +/TT10 1 Tf +11.6845 0 TD +0 Tw +(\(F)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.4233 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.4233 0 TD +(T\))Tj +/TT8 1 Tf +-40.1367 -1.2889 TD +0.0078 Tw +(followed by )Tj +/TT10 1 Tf +5.5556 0 TD +0 Tw +(\(F)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.2578 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.2578 0 TD +(N\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0078 Tw +[( repeated )]TJ +/TT14 1 Tf +4.3857 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0078 Tw +[(-1 times. Each time )]TJ +/TT14 1 Tf +8.8905 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0078 Tw +[( successfully matches, )]TJ +/TT14 1 Tf +9.9765 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +-40.7256 -1.2889 TD +0.1022 Tw +(is decremented by 1, and the search continues, until )Tj +/TT14 1 Tf +24.0357 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +[( reaches 0. Note that )]TJ +/TT14 1 Tf +10.0826 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1022 Tw +[( does)]TJ +-38.9191 -1.2889 TD +0.1656 Tw +(not have to match with )Tj +/TT14 1 Tf +11.298 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1656 Tw +[( identical expressions; it just has to match )]TJ +/TT14 1 Tf +19.8669 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1656 Tw +[( times. Thus if the)]TJ +-32.3651 -1.2889 TD +0 Tw +(current expression is )Tj +/TT10 1 Tf +9.4258 0 TD +(\(FOO1)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FOO2 FOO3\))Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(F FOO$ 3\))Tj +/TT8 1 Tf +6.001 0 TD +( will find )Tj +/TT10 1 Tf +4.2739 0 TD +(FOO3)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-31.8525 -2.9556 TD +(If )Tj +/TT14 1 Tf +1.0033 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0833 Tw +[( does not match successfully )]TJ +/TT14 1 Tf +13.2306 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[( times, an error is generated and the edit chain is)]TJ +-19.0347 -1.2889 TD +0 Tw +(unchanged \(even if )Tj +/TT14 1 Tf +8.751 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( matched )Tj +/TT14 1 Tf +4.3247 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(-1 times\).)Tj +/TT10 1 Tf +-19.2098 -2.5489 TD +(\(F)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 158.2588 365.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 365.32 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.2156 TD +(F)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT4 1 Tf +10 0 0 10 165.9 354.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 354.38 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.2122 Tw +(Similar to )Tj +/TT10 1 Tf +4.9723 0 TD +0 Tw +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.4622 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.2122 Tw +(, except that it only matches with elements at the top level of the)Tj +-10.2353 -1.2889 TD +0.0367 Tw +(current expression, i.e., the search will not descend into the current expression, nor will it go)Tj +0 -1.2222 TD +0 Tw +(outside of the current expression. May succeed without changing the edit chain.)Tj +0 -2.8889 TD +0.0233 Tw +(For example, if the current expression is )Tj +/TT10 1 Tf +18.0964 0 TD +0.0544 Tw +(\(PROG NIL \(SETQ X \(COND & &\)\) \(COND &\))Tj +-18.0964 -1.2889 TD +0 Tw +(...\))Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +(, the command )Tj +/TT10 1 Tf +6.9488 0 TD +0.0911 Tw +(F COND)Tj +/TT8 1 Tf +3.6917 0 TD +0.0378 Tw +[( will find the )]TJ +/TT10 1 Tf +6.0622 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +[( inside the )]TJ +/TT10 1 Tf +4.9283 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +(, whereas )Tj +/TT10 1 Tf +4.5184 0 TD +0.0911 Tw +(\(F \(COND --\)\))Tj +/TT8 1 Tf +-33.3506 -1.2889 TD +0 Tw +(will find the top level )Tj +/TT10 1 Tf +9.7393 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(, i.e., the second one.)Tj +/TT10 1 Tf +-13.473 -2.5489 TD +(\(FS)Tj +/TT6 1 Tf +10 0 0 10 118.2 235.04 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 120.9783 235.04 Tm +(PATTERN)Tj +4.2002 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... PATTERN)Tj +7.2 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 239.7809 235.04 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 235.04 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +0.05 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.2802 0 TD +0 Tw +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.3 0 TD +(PATTERN)Tj +4.1986 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.05 Tw +[( followed by )]TJ +/TT10 1 Tf +5.94 0 TD +0 Tw +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.3 0 TD +(PATTERN)Tj +4.1999 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.12 Tw +[( ...)]TJ +/TT8 1 Tf +2.5204 0 TD +0.05 Tw +[( followed by )]TJ +/TT10 1 Tf +5.94 0 TD +0 Tw +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.3 0 TD +(PATTERN)Tj +4.1995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.05 Tw +(, so that)Tj +-37.7789 -1.6222 TD +0 Tw +(if )Tj +/TT10 1 Tf +0.874 0 TD +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +4.2003 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( fails, the edit chain is left at the place )Tj +/TT14 1 Tf +16.7544 0 TD +(PATTERN)Tj +4.2012 -0.3333 TD +(M-1)Tj +/TT8 1 Tf +1.8 0.3333 TD +( matched.)Tj +/TT10 1 Tf +-30.6133 -2.8822 TD +(\(F=)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(EXPRESSION)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 187.5105 166.9 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 166.9 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Equivalent to )Tj +/TT10 1 Tf +6.1811 0 TD +(\(F \(== . )Tj +/TT14 1 Tf +5.4033 0 TD +(EXPRESSION)Tj +/TT10 1 Tf +6.001 0 TD +(\) )Tj +/TT14 1 Tf +1.2001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, i.e., searches for a structure )Tj +/TT10 1 Tf +12.7765 0 TD +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +( to )Tj +/TT14 1 Tf +1.3731 0 TD +(EXPRESSION)Tj +/TT8 1 Tf +-35.3356 -1.2889 TD +(\(see above\).)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(ORF)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +4.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... PATTERN)Tj +7.2 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 244.6509 108.36 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 108.36 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +0.0544 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.2891 0 TD +0.1322 Tw +(\(F \(*ANY*)Tj +/TT14 1 Tf +5.5331 0 TD +0 Tw +(PATTERN)Tj +4.1978 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.1322 Tw +[( ... )]TJ +/TT14 1 Tf +3.2649 0 TD +0 Tw +(PATTERN)Tj +4.1995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.1322 Tw +(\) N\))Tj +/TT8 1 Tf +2.5326 0 TD +0.0544 Tw +(, i.e., searches for an expression)Tj +-27.2171 -1.6222 TD +0 Tw +(that is matched by either )Tj +/TT14 1 Tf +11.1855 0 TD +(PATTERN)Tj +4.2 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(, )Tj +/TT18 1 Tf +0.5 0 TD +(PATTERN)Tj +4.6111 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.5 0.3333 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( or)Tj +/TT18 1 Tf +1.1909 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +4.1999 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +( \(see above\).)Tj +ET +endstream +endobj +101 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +103 0 obj +<< +/Length 5917 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-26)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(BF)Tj +/TT8 1 Tf +1.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT4 1 Tf +10 0 0 10 200.8561 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 568.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.4778 Tw +[("Backwards Find". Searches in reverse print order, beginning with the expression)]TJ +0 -1.2222 TD +0.2033 Tw +(immediately before the current expression \(unless the current expression is the top level)Tj +T* +0 Tw +(expression, in which case )Tj +/TT10 1 Tf +11.4395 0 TD +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +( searches the entire expression, in reverse order\).)Tj +/TT10 1 Tf +-12.6397 -2.9556 TD +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +0.03 Tw +[( uses the same pattern match routine as )]TJ +/TT10 1 Tf +17.9329 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +(, and )Tj +/TT10 1 Tf +2.5029 0 TD +0 Tw +(MAXLEVEL)Tj +/TT8 1 Tf +4.8008 0 TD +0.03 Tw +[( and )]TJ +/TT10 1 Tf +2.2529 0 TD +0 Tw +(UPFINDFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.03 Tw +[( have the same)]TJ +-34.6906 -1.2889 TD +0.0467 Tw +(effect, but the searching begins at the )Tj +/TT18 1 Tf +16.9419 0 TD +0 Tw +(end)Tj +/TT8 1 Tf +1.4453 0 TD +0.0467 Tw +[( of each list, and descends into each element before)]TJ +-18.3872 -1.2222 TD +0.2855 Tw +[(attempting to match that element. If unsuccessful, the search continues with the next)]TJ +T* +0.1211 Tw +(previous element, etc., until the front of the list is reached, at which point )Tj +/TT10 1 Tf +34.238 0 TD +0 Tw +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +0.1211 Tw +[( ascends and)]TJ +-35.4382 -1.2889 TD +0 Tw +(backs up, etc.)Tj +0 -2.8889 TD +(For example, if the current expression is)Tj +/TT10 1 Tf +0 -2.8222 TD +(\(PROG NIL \(SETQ X \(SETQ Y \(LIST Z\)\)\) \(COND \(\(SETQ W --\) --\)\) --\),)Tj +/TT8 1 Tf +0 -2.9556 TD +0.06 Tw +(the command )Tj +/TT10 1 Tf +6.4555 0 TD +0.1456 Tw +(F LIST)Tj +/TT8 1 Tf +3.7461 0 TD +0.06 Tw +[( followed by )]TJ +/TT10 1 Tf +5.97 0 TD +0.1456 Tw +(BF SETQ)Tj +/TT8 1 Tf +4.3462 0 TD +0.06 Tw +[( will leave the current expression as )]TJ +/TT10 1 Tf +16.463 0 TD +0.1456 Tw +(\(SETQ Y)Tj +-36.9808 -1.4378 TD +0 Tw +(\(LIST Z\)\))Tj +/TT8 1 Tf +5.4009 0 TD +(, as will )Tj +/TT10 1 Tf +3.6309 0 TD +(F COND)Tj +/TT8 1 Tf +3.6006 0 TD +( followed by )Tj +/TT10 1 Tf +5.79 0 TD +(BF SETQ)Tj +/TT4 1 Tf +10 0 0 10 365.6074 358.86 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 150 335.92 Tm +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT4 1 Tf +10 0 0 10 208.5088 335.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 335.92 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1267 Tw +(Similar to )Tj +/TT10 1 Tf +4.8012 0 TD +0 Tw +(BF)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.3767 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1267 Tw +(, except that the search always includes the current expression, i.e.,)Tj +-10.5787 -1.2889 TD +0 Tw +(starts at the end of current expression and works backward, then ascends and backs up, etc.)Tj +0 -2.8889 TD +0.0056 Tw +(Thus in the previous example, where )Tj +/TT10 1 Tf +16.6871 0 TD +0.0133 Tw +(F COND)Tj +/TT8 1 Tf +3.6139 0 TD +0.0056 Tw +[( followed by )]TJ +/TT10 1 Tf +5.8067 0 TD +0.0133 Tw +(BF SETQ)Tj +/TT8 1 Tf +4.214 0 TD +0.0056 Tw +[( found )]TJ +/TT10 1 Tf +3.1859 0 TD +0.0133 Tw +(\(SETQ Y \(LIST)Tj +-33.5077 -1.2889 TD +0 Tw +(Z\)\), F COND)Tj +/TT8 1 Tf +6.6011 0 TD +( followed by )Tj +/TT10 1 Tf +5.79 0 TD +(\(BF SETQ T\))Tj +/TT8 1 Tf +6.6011 0 TD +( would find the )Tj +/TT10 1 Tf +7.0889 0 TD +(\(SETQ W --\))Tj +/TT8 1 Tf +6.6011 0 TD +( expression.)Tj +/TT10 1 Tf +-34.0155 -2.5489 TD +(\(BF)Tj +/TT6 1 Tf +10 0 0 10 166.2026 239.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 168.9809 239.18 Tm +(PATTERN)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 212.188 239.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 239.18 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.2156 TD +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT4 1 Tf +10 0 0 10 219.3 228.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 228.24 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-10.7948 -2.5489 TD +(\(GO)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(LABEL)Tj +/TT10 1 Tf +2.9997 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 200.8509 180.7 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 180.7 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0156 Tw +(Makes the current expression be the first thing after the )Tj +/TT10 1 Tf +24.8548 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +[( label )]TJ +/TT14 1 Tf +2.6454 0 TD +0 Tw +(LABEL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0156 Tw +(, i.e. goes where an)Tj +-32.901 -1.2889 TD +0 Tw +(executed )Tj +/TT10 1 Tf +4.187 0 TD +(GO)Tj +/TT8 1 Tf +1.2002 0 TD +( would go.)Tj +/TT6 1 Tf +10 0 0 10 126 116.56 Tm +(Location Specification)Tj +/TT8 1 Tf +9 0 0 9 126 100.9 Tm +0.0389 Tw +(Many of the more sophisticated commands described later in this chapter use a more general method)Tj +0 -1.2222 TD +0.2911 Tw +[(of specifying position called a "location specification." A location specification is a list of edit)]TJ +T* +0.1744 Tw +[(commands that are executed in the normal fashion with two exceptions. First, all commands not)]TJ +T* +0.1856 Tw +(recognized by the editor are interpreted as though they had been preceded by )Tj +/TT10 1 Tf +37.0846 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.1856 Tw +[(; normally such)]TJ +-37.6847 -1.2889 TD +0.02 Tw +[(commands would cause errors. For example, the location specification )]TJ +/TT10 1 Tf +31.7513 0 TD +0.0489 Tw +(\(COND 2 3\))Tj +/TT8 1 Tf +6.0988 0 TD +0.02 Tw +[( specifies the 3rd)]TJ +-37.85 -1.2889 TD +0.0367 Tw +(element in the first clause of the next )Tj +/TT10 1 Tf +16.7518 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0367 Tw +[(. Note that you could always write )]TJ +/TT10 1 Tf +16.0897 0 TD +0.0889 Tw +(F COND)Tj +/TT8 1 Tf +3.6895 0 TD +0.0367 Tw +[( followed by 2)]TJ +ET +endstream +endobj +104 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +106 0 obj +<< +/Length 6132 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-27)Tj +/TT8 1 Tf +-42.3333 60.6156 TD +0.1967 Tw +(and 3 for )Tj +/TT10 1 Tf +4.8068 0 TD +0.4711 Tw +(\(COND 2 3\))Tj +/TT8 1 Tf +6.9432 0 TD +0.1967 Tw +[( if you were not sure whether or not )]TJ +/TT10 1 Tf +17.9634 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1967 Tw +[( was the name of an atomic)]TJ +-32.1137 -1.2889 TD +0 Tw +(command.)Tj +0 -2 TD +0.0889 Tw +(Secondly, if an error occurs while evaluating one of the commands in the location specification, and)Tj +0 -1.2222 TD +0.0456 Tw +(the edit chain had been changed, i.e., was not the same as it was at the beginning of that execution of)Tj +T* +[(the location specification, the location operation will continue. In other words, the location operation)]TJ +T* +0.1056 Tw +(keeps going unless it reaches a state where it detects that it is "looping", at which point it gives up.)Tj +T* +0.1644 Tw +(Thus, if )Tj +/TT10 1 Tf +3.9246 0 TD +0.3933 Tw +(\(COND 2 3\))Tj +/TT8 1 Tf +6.7876 0 TD +0.1644 Tw +[( is being located, and the first clause of the next )]TJ +/TT10 1 Tf +22.9412 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1644 Tw +[( contained only two)]TJ +-36.0538 -1.2889 TD +0.0489 Tw +[(elements, the execution of the command 3 would cause an error. The search would then continue by)]TJ +0 -1.2222 TD +0.0122 Tw +(looking for the next )Tj +/TT10 1 Tf +8.9815 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +[(. However, if a point were reached where there were no further )]TJ +/TT10 1 Tf +28.6442 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +(s, then)Tj +-42.4265 -1.2889 TD +0.04 Tw +(the first command, )Tj +/TT10 1 Tf +8.7245 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.04 Tw +(, would cause the error; the edit chain would not have been changed, and so)Tj +-11.1249 -1.2889 TD +0 Tw +(the entire location operation would fail, and cause an error.)Tj +0 -2 TD +(The )Tj +/TT10 1 Tf +1.9661 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0422 Tw +[( command \(see above\) in conjunction with the )]TJ +/TT10 1 Tf +20.9501 0 TD +0 Tw +(##)Tj +/TT8 1 Tf +1.2002 0 TD +0.0422 Tw +[( function \(see below\) provide a way of using)]TJ +-25.3165 -1.2889 TD +0.1378 Tw +(arbitrary predicates applied to elements in the current expression. )Tj +/TT10 1 Tf +30.9994 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.1378 Tw +[( and )]TJ +/TT10 1 Tf +2.4684 0 TD +0 Tw +(##)Tj +/TT8 1 Tf +1.2002 0 TD +0.1378 Tw +[( will be described in)]TJ +-35.8682 -1.2889 TD +0 Tw +(detail later in the chapter, along with examples illustrating their use in location specifications.)Tj +0 -2 TD +0.0333 Tw +(Throughout this chapter, the meta-symbol )Tj +/TT10 1 Tf +19.13 0 TD +0 Tw +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.0333 Tw +[( is used to denote a location specification. Thus )]TJ +/TT10 1 Tf +21.6092 0 TD +0 Tw +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.0333 Tw +[( is a list)]TJ +-41.9395 -1.2889 TD +0.0656 Tw +(of commands interpreted as described above. )Tj +/TT10 1 Tf +21.0277 0 TD +0 Tw +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.0656 Tw +[( can also be atomic, in which case it is interpreted as)]TJ +/TT10 1 Tf +-21.6278 -1.2889 TD +0 Tw +(\(LIST @\))Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-2.1341 -2.4 TD +-0.0001 Tc +0.0001 Tw +(\(LC . @\) )Tj +/TT8 1 Tf +34.2556 0 TD +0 Tc +0 Tw +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1444 Tw +(Provides a way of explicitly invoking the location operation, e.g., )Tj +/TT10 1 Tf +30.3981 0 TD +0.3467 Tw +(\(LC COND 2 3\))Tj +/TT8 1 Tf +8.8413 0 TD +0.1444 Tw +[( will)]TJ +-39.2393 -1.2889 TD +0 Tw +(perform the the search described above.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(LCL . @\))Tj +/TT4 1 Tf +10 0 0 10 150.6079 287.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 287.6 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1867 Tw +(Same as )Tj +/TT10 1 Tf +4.1839 0 TD +0 Tw +(LC)Tj +/TT8 1 Tf +1.2002 0 TD +0.1867 Tw +[( except the search is confined to the current expression, i.e., the edit chain is)]TJ +-5.3841 -1.2889 TD +0.0056 Tw +(rebound during the search so that it looks as though the editor were called on just the current)Tj +0 -1.2222 TD +0.12 Tw +[(expression. For example, to find a )]TJ +/TT10 1 Tf +16.2619 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.12 Tw +[( containing a )]TJ +/TT10 1 Tf +6.3102 0 TD +0 Tw +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +0.12 Tw +(, one might use the location)Tj +-28.573 -1.2889 TD +0 Tw +(specification )Tj +/TT10 1 Tf +5.8995 0 TD +0.2344 Tw +(\(COND \(LCL RETURN\))Tj +/TT12 1 Tf +11.2706 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.3478 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +[( where the \\ would reverse the effects of the )]TJ +/TT10 1 Tf +20.8118 0 TD +0 Tw +(LCL)Tj +/TT8 1 Tf +-39.5358 -1.2889 TD +(command, and make the final current expression be the )Tj +/TT10 1 Tf +24.8237 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-28.5575 -2.5489 TD +(\(2ND . @\) )Tj +/TT4 1 Tf +10 0 0 10 156.0088 194.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 194.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1222 Tw +(Same as )Tj +/TT10 1 Tf +4.055 0 TD +0.2933 Tw +(\(LC . @\))Tj +/TT8 1 Tf +5.3874 0 TD +0.1222 Tw +[( followed by another )]TJ +/TT10 1 Tf +9.9391 0 TD +0.2933 Tw +(\(LC . @\))Tj +/TT8 1 Tf +5.3874 0 TD +0.1222 Tw +[( except that if the first succeeds and)]TJ +-24.769 -1.2889 TD +0 Tw +(second fails, no change is made to the edit chain.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(3ND . @\))Tj +/TT4 1 Tf +10 0 0 10 150.6079 135.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 135.72 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(2ND)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-7.6815 -2.5489 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +<0040>Tj +/TT6 1 Tf +10 0 0 10 116.2822 88.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 119.0605 88.18 Tm +(PATTERN)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 162.2676 88.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 88.18 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.08 Tw +(Ascends the edit chain looking for a link which matches )Tj +/TT14 1 Tf +25.7673 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.08 Tw +(. In other words, it keeps)Tj +-29.968 -1.2889 TD +0 Tw +(doing )Tj +/TT10 1 Tf +2.9115 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0756 Tw +(s until it gets to a specified point. If )Tj +/TT14 1 Tf +16.7181 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0756 Tw +[( is atomic, it is matched with the first)]TJ +ET +endstream +endobj +107 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +109 0 obj +<< +/Length 5480 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-28)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +0.2489 Tw +[(element of each link, otherwise with the entire link. If no match is found, an error is)]TJ +0 -1.2222 TD +0 Tw +(generated, and the edit chain is unchanged.)Tj +0 -2.8889 TD +(If )Tj +/TT14 1 Tf +0.9688 0 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0489 Tw +[( is of the form )]TJ +/TT10 1 Tf +6.6321 0 TD +0 Tw +(\(IF)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.2989 0 TD +(EXPRESSION)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT14 1 Tf +0.5489 0 TD +(EXPRESSION)Tj +/TT8 1 Tf +6.001 0 TD +0.0489 Tw +[( is evaluated at each link, and if)]TJ +-27.0518 -1.2889 TD +0 Tw +(its value is )Tj +/TT10 1 Tf +4.9438 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, or the evaluation causes an error, the ascent continues. )Tj +-6.7441 -2.9556 TD +(For example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*PP)Tj +0 -1 TD +([PROG NIL)Tj +T* +( \(COND)Tj +T* +( [\(NULL \(SETQ L \(CDR L\)\)\))Tj +T* +( \(COND)Tj +T* +( \(FLG \(RETURN L])Tj +T* +( \([NULL \(CDR \(FMEMB \(CAR L\))Tj +T* +( \(CADR L]])Tj +T* +(*F CADR)Tj +0 -1.0667 TD +(*\()Tj +/TT19 1 Tf +1.2002 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(COND\))Tj +-2.437 -1 TD +(*P)Tj +T* +(\(COND \(& &\) \(& &\)\))Tj +T* +(*)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.0089 Tw +(Note that this command differs from )Tj +/TT10 1 Tf +16.5636 0 TD +0 Tw +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0089 Tw +[( in that it does not search )]TJ +/TT18 1 Tf +11.3742 0 TD +0 Tw +(inside)Tj +/TT8 1 Tf +2.3901 0 TD +0.0089 Tw +[( of each link, it simply)]TJ +-31.5282 -1.2889 TD +0.1522 Tw +[(ascends. Thus in the above example, )]TJ +/TT10 1 Tf +17.653 0 TD +0.3644 Tw +(F CADR)Tj +/TT8 1 Tf +3.965 0 TD +0.1522 Tw +[( followed by )]TJ +/TT10 1 Tf +6.2467 0 TD +0.3644 Tw +(BF COND)Tj +/TT8 1 Tf +4.5651 0 TD +0.1522 Tw +[( would find )]TJ +/TT10 1 Tf +5.9083 0 TD +0 Tw +(\(COND)Tj +-38.3382 -1.2889 TD +(\(FLG \(RETURN L\)\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(, not the higher )Tj +/TT10 1 Tf +6.9766 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-20.912 -2.5489 TD +(\(BELOW)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.5991 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 213.9009 297.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 297.6 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0222 Tw +(Ascends the edit chain looking for a link specified by )Tj +/TT14 1 Tf +23.8809 0 TD +0 Tw +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +(, and stops )Tj +/TT14 1 Tf +5.0803 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0222 Tw +[( links below that \(only)]TJ +-31.3616 -1.2889 TD +0.0356 Tw +[(links that are elements are counted, not tails\). In other words )]TJ +/TT10 1 Tf +27.7626 0 TD +0 Tw +(BELOW)Tj +/TT8 1 Tf +3.0005 0 TD +0.0356 Tw +[( keeps doing )]TJ +/TT10 1 Tf +5.9817 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0356 Tw +(s until it)Tj +-37.3449 -1.2889 TD +0 Tw +(gets to a specified point, and then backs off )Tj +/TT14 1 Tf +19.3071 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +(s.)Tj +-20.7573 -2.9556 TD +(Note that )Tj +/TT14 1 Tf +4.4165 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is evaluated, so one can type )Tj +/TT10 1 Tf +13.1338 0 TD +(\(BELOW)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(IPLUS X Y\)\))Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-32.5858 -2.5489 TD +(\(BELOW)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 206.2535 200.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 200.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(BELOW)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(1\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-10.9116 -2.9556 TD +0.0733 Tw +(For example,)Tj +/TT10 1 Tf +5.8194 0 TD +0.1756 Tw +[( \(BELOW COND\))]TJ +/TT8 1 Tf +8.1524 0 TD +0.0733 Tw +[( will cause the )]TJ +/TT10 1 Tf +6.8373 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT18 1 Tf +0.3233 0 TD +(clause)Tj +/TT8 1 Tf +2.4634 0 TD +0.0733 Tw +[( containing the current expression)]TJ +-25.9962 -1.2889 TD +0.1022 Tw +(to become the new current expression. Thus if the current expression is as shown above, )Tj +/TT10 1 Tf +40.7257 0 TD +0 Tw +(F)Tj +-40.7257 -1.2889 TD +(CADR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +[( followed by )]TJ +/TT10 1 Tf +5.8267 0 TD +0.03 Tw +(\(BELOW COND\))Tj +/TT8 1 Tf +7.2312 0 TD +0.0122 Tw +[( will make the new expression be)]TJ +/TT12 1 Tf +14.7496 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2622 0 TD +0.03 Tw +(\([NULL \(CDR \(FMEMB)Tj +-30.4701 -1.2889 TD +0 Tw +(\(CAR L\) \(CADR L] \(GO LP\)\))Tj +/TT8 1 Tf +15.0024 0 TD +(, and is therefore equivalent to )Tj +/TT10 1 Tf +13.7202 0 TD +(0 0 0 0)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-32.9233 -2.9556 TD +(The )Tj +/TT10 1 Tf +2.2505 0 TD +(BELOW)Tj +/TT8 1 Tf +3.0005 0 TD +0.3267 Tw +[( command is useful for locating a substructure by specifying something it)]TJ +-5.251 -1.2889 TD +0.0567 Tw +[(contains. For example, suppose you are editing a list of lists, and want to find a sublist that)]TJ +0 -1.2222 TD +0 Tw +(contains a )Tj +/TT10 1 Tf +4.6948 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( \(at any depth\). He simply executes )Tj +/TT10 1 Tf +15.8364 0 TD +(F)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FOO \(BELOW)Tj +/TT12 1 Tf +6.001 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +110 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +112 0 obj +<< +/Length 5130 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-29)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(\(NEX)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 147.4535 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 568.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(BELOW)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( followed by )Tj +/TT10 1 Tf +5.79 0 TD +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-17.0518 -2.9556 TD +0.0378 Tw +(For example, if you are deep inside of a )Tj +/TT10 1 Tf +18.0158 0 TD +0 Tw +(SELECTQ)Tj +/TT8 1 Tf +4.2007 0 TD +0.0378 Tw +[( clause, you can advance to the next clause)]TJ +-22.2165 -1.2889 TD +0 Tw +(with )Tj +/TT10 1 Tf +2.2832 0 TD +(\(NEX SELECTQ\))Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-11.4178 -2.5489 TD +(NEX)Tj +/TT4 1 Tf +10 0 0 10 118.2 482.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 482.46 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(NEX )Tj +/TT19 1 Tf +3.0005 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-8.3979 -2.9556 TD +0.1778 Tw +(The atomic form of )Tj +/TT10 1 Tf +9.4103 0 TD +0 Tw +(NEX)Tj +/TT8 1 Tf +1.8003 0 TD +0.1778 Tw +[( is useful if you will be performing repeated executions of )]TJ +/TT10 1 Tf +27.7217 0 TD +0 Tw +(\(NEX)Tj +/TT14 1 Tf +-38.9323 -1.2889 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[(. By simply )]TJ +/TT10 1 Tf +5.5429 0 TD +0 Tw +(MARK)Tj +/TT8 1 Tf +2.4004 0 TD +0.02 Tw +(ing \(see the next section\) the chain corresponding to )Tj +/TT14 1 Tf +23.3992 0 TD +0 Tw +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.02 Tw +(, you can use)Tj +/TT10 1 Tf +-35.5432 -1.2889 TD +0 Tw +(NEX)Tj +/TT8 1 Tf +1.8003 0 TD +( to step through the sublists.)Tj +/TT10 1 Tf +-3.1336 -2.5489 TD +(\(NTH )Tj +/TT14 1 Tf +3.0005 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 150.6079 385.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 385.12 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Generalized )Tj +/TT10 1 Tf +5.6757 0 TD +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( command. Effectively performs )]TJ +/TT10 1 Tf +14.9897 0 TD +0.1333 Tw +(\(LCL . )Tj +/TT14 1 Tf +4.4674 0 TD +0 Tw +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +(, followed by )Tj +/TT10 1 Tf +6.2067 0 TD +0 Tw +(\(BELOW )Tj +/TT8 1 Tf +4.334 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-41.0802 -1.2889 TD +(followed by )Tj +/TT10 1 Tf +5.54 0 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-6.7402 -2.9556 TD +(If the search is unsuccessful, )Tj +/TT10 1 Tf +12.749 0 TD +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +( generates an error and the edit chain is not changed.)Tj +-14.5493 -2.9556 TD +0.05 Tw +(Note that )Tj +/TT10 1 Tf +4.5165 0 TD +0 Tw +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3 0 TD +(NUMBER)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( is just a special case of )]TJ +/TT10 1 Tf +10.6571 0 TD +0 Tw +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +(, and in fact, no special check is)Tj +-27.1755 -1.2889 TD +0 Tw +(made for )Tj +/TT14 1 Tf +4.2466 0 TD +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +( a number; both commands are executed identically.)Tj +-6.0469 -2.9556 TD +0.0222 Tw +(In other words, )Tj +/TT10 1 Tf +7.1233 0 TD +0 Tw +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +[( locates )]TJ +/TT14 1 Tf +3.5542 0 TD +0 Tw +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +(, using a search restricted to the current expression, and then)Tj +-14.2781 -1.2889 TD +0.0078 Tw +(backs up to the current level, where the new current expression is the tail whose first element)Tj +0 -1.2222 TD +0.1622 Tw +(contains, however deeply, the expression that was the terminus of the location operation.)Tj +T* +0 Tw +(For example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*P)Tj +0 -1 TD +(\(PROG \(& &\) LP \(COND & &\) \(EDITCOM &\) \(SETQ UNFIND)Tj +T* +(UF\) \(RETURN L\)\))Tj +T* +(*\(NTH UF\))Tj +T* +(*P)Tj +T* +(... \(SETQ UNFIND UF\) \(RETURN L\)\))Tj +T* +(*)Tj +/TT14 1 Tf +-10.6667 -2.3267 TD +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.. @)Tj +/TT6 1 Tf +10 0 0 10 163.6597 131.58 Tm +( )Tj +/TT4 1 Tf +0.2778 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 131.58 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1278 Tw +(For example, )Tj +/TT10 1 Tf +6.2516 0 TD +0.3078 Tw +(\(COND .. RETURN\))Tj +/TT8 1 Tf +10.2171 0 TD +0.1278 Tw +[(. Finds a )]TJ +/TT10 1 Tf +4.725 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1278 Tw +[( that contains a )]TJ +/TT10 1 Tf +7.4403 0 TD +0 Tw +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +0.1278 Tw +(, at any depth.)Tj +-34.635 -1.2889 TD +0.2244 Tw +(Equivalent to \(but more efficient than\) )Tj +/TT10 1 Tf +18.5264 0 TD +0 Tw +(\(F)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.4744 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.4744 0 TD +(N\))Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.7244 0 TD +0.54 Tw +(\(LCL . @\))Tj +/TT8 1 Tf +6.4809 0 TD +0.2244 Tw +[( followed by )]TJ +/TT10 1 Tf +6.4634 0 TD +0 Tw +(\()Tj +/TT19 1 Tf +0.6001 0 TD +<0040>Tj +/TT14 1 Tf +-40.3451 -1.2889 TD +(PATTERN)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +113 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +115 0 obj +<< +/Length 6563 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-30)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +0.0633 Tw +(An infix command, ")Tj +/TT10 1 Tf +9.3824 0 TD +0 Tw +(..)Tj +/TT8 1 Tf +1.2002 0 TD +0.0633 Tw +(" is not a meta-symbol, it )Tj +/TT18 1 Tf +11.5612 0 TD +0 Tw +(is)Tj +/TT8 1 Tf +0.667 0 TD +0.0633 Tw +[( the name of the command. )]TJ +/TT10 1 Tf +12.9887 0 TD +0 Tw +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.0633 Tw +[( is )]TJ +/TT10 1 Tf +1.3415 0 TD +0 Tw +(CDDR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0633 Tw +[( of)]TJ +-40.1415 -1.2889 TD +0.1011 Tw +[(the command. Note that )]TJ +/TT10 1 Tf +11.7575 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.3511 0 TD +0.2422 Tw +(.. @\))Tj +/TT8 1 Tf +3.2427 0 TD +0.1011 Tw +[( can also be used directly as an edit pattern as)]TJ +-20.1521 -1.2889 TD +0 Tw +(described above, e.g. )Tj +/TT10 1 Tf +9.4648 0 TD +(F \()Tj +/TT14 1 Tf +1.8003 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.. @\))Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-18.7163 -2.9556 TD +(For example, if the current expression is)Tj +/TT10 1 Tf +0 -2.8222 TD +(\(PROG NIL [COND \(\(NULL L\) \(COND \(FLG \(RETURN L] --\),)Tj +/TT8 1 Tf +0 -2.9556 TD +(then )Tj +/TT10 1 Tf +2.4537 0 TD +0.5611 Tw +(\(COND .. RETURN\))Tj +/TT8 1 Tf +10.7238 0 TD +0.2344 Tw +[( will make )]TJ +/TT10 1 Tf +5.5783 0 TD +0.5611 Tw +(\(COND \(FLG \(RETURN L\)\)\))Tj +/TT8 1 Tf +15.4856 0 TD +0.2344 Tw +[( be the current)]TJ +-34.2414 -1.2889 TD +0.1056 Tw +[(expression. Note that it is the innermost )]TJ +/TT10 1 Tf +18.9748 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1056 Tw +[( that is found, because this is the first )]TJ +/TT10 1 Tf +17.5501 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +-38.9253 -1.2889 TD +0.1256 Tw +(encountered when ascending from the )Tj +/TT10 1 Tf +17.8934 0 TD +0 Tw +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +[(. In other words, )]TJ +/TT10 1 Tf +8.4344 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.3756 0 TD +0.3022 Tw +(.. @\))Tj +/TT8 1 Tf +3.3027 0 TD +0.1256 Tw +[( is not)]TJ +/TT18 1 Tf +-38.4075 -1.2889 TD +0 Tw +(always)Tj +/TT8 1 Tf +2.7769 0 TD +( equivalent to )Tj +/TT10 1 Tf +6.5483 0 TD +(\(F)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(N\))Tj +/TT8 1 Tf +1.2002 0 TD +(, followed by )Tj +/TT10 1 Tf +6.04 0 TD +(\(LCL . @\))Tj +/TT8 1 Tf +5.4009 0 TD +( followed by \\.)Tj +-27.8672 -2.9556 TD +0.0056 Tw +(Note that )Tj +/TT10 1 Tf +4.4276 0 TD +0 Tw +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( is a location specification, not just a pattern. Thus )]TJ +/TT10 1 Tf +22.5758 0 TD +0.0133 Tw +(\(RETURN ..)Tj +/TT12 1 Tf +6.0143 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2556 0 TD +0.0133 Tw +(COND 2 3\))Tj +/TT8 1 Tf +5.4275 0 TD +0.0056 Tw +[( can)]TJ +-39.3009 -1.2889 TD +0.0211 Tw +(be used to find the )Tj +/TT10 1 Tf +8.5807 0 TD +0 Tw +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0211 Tw +[( which contains a )]TJ +/TT10 1 Tf +8.0122 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +[( whose first clause contains \(at least\) three)]TJ +-22.5938 -1.2889 TD +0.0222 Tw +[(elements. Note also that since )]TJ +/TT12 1 Tf +13.7232 0 TD +0 Tw +(@)Tj +/TT8 1 Tf +0.7471 0 TD +0.0222 Tw +[( permits any edit command, you can write commands of the)]TJ +-14.4702 -1.2222 TD +0 Tw +(form )Tj +/TT10 1 Tf +2.5245 0 TD +0.2833 Tw +(\(COND .. \(RETURN .. COND\)\))Tj +/TT8 1 Tf +16.7359 0 TD +0.1178 Tw +(, which will locate the first )Tj +/TT10 1 Tf +12.6388 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1178 Tw +[( that contains a)]TJ +/TT10 1 Tf +-34.2996 -1.2889 TD +0 Tw +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +( that contains a )Tj +/TT10 1 Tf +6.9292 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 102 317.6 Tm +(Commands That Save and Restore the Edit Chain)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 314.89 m +558.01 314.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 292.94 Tm +0.1178 Tw +(Several facilities are available for saving the current edit chain and later retrieving it: )Tj +/TT10 1 Tf +39.5845 0 TD +0 Tw +(MARK)Tj +/TT8 1 Tf +2.4004 0 TD +0.1178 Tw +(, which)Tj +-41.9849 -1.2889 TD +0.0489 Tw +(marks the current chain for future reference, )Tj +/TT19 1 Tf +20.1884 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0489 Tw +(, which returns to the last mark without destroying it,)Tj +-21.1752 -1.2222 TD +0 Tw +(and )Tj +/TT19 1 Tf +1.9429 0 TD +<00400040>Tj +/TT8 1 Tf +1.9736 0 TD +(, which returns to the last mark and also erases it.)Tj +/TT10 1 Tf +-1.2498 -2.4822 TD +(MARK)Tj +/TT4 1 Tf +10 0 0 10 171.6 248 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 248 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Adds the current edit chain to the front of the list )Tj +/TT10 1 Tf +21.9302 0 TD +(MARKLST)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT19 1 Tf +11 0 0 10 150 200.46 Tm +<0040>Tj +/TT4 1 Tf +10 0 0 10 160.8549 200.46 Tm +-0.0983 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 200.46 Tm +0 Tc +([Editor Command])Tj +-32.9222 -2.6667 TD +0.0789 Tw +(Makes the new edit chain be )Tj +/TT10 1 Tf +13.2985 0 TD +0.19 Tw +(\(CAR MARKLST\))Tj +/TT8 1 Tf +7.9913 0 TD +0.0789 Tw +[(. Generates an error if )]TJ +/TT10 1 Tf +10.5666 0 TD +0 Tw +(MARKLST)Tj +/TT8 1 Tf +4.2007 0 TD +0.0789 Tw +[( is )]TJ +/TT10 1 Tf +1.3726 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0789 Tw +(, i.e.,)Tj +-39.23 -1.2889 TD +0 Tw +(no )Tj +/TT10 1 Tf +1.3779 0 TD +(MARK)Tj +/TT8 1 Tf +2.4004 0 TD +(s have been performed, or all have been erased.)Tj +-3.7783 -2.9556 TD +(This is an atomic command; do not confuse it with the list command )Tj +/TT10 1 Tf +30.4839 0 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT19 1 Tf +11 0 0 10 150 115.32 Tm +<00400040>Tj +/TT4 1 Tf +10 0 0 10 169.74 115.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 115.32 Tm +([Editor Command])Tj +-32.9222 -2.6667 TD +0.3578 Tw +(Similar to )Tj +/TT19 1 Tf +5.2634 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.3578 Tw +[( but also erases the last )]TJ +/TT10 1 Tf +12.5187 0 TD +0 Tw +(MARK)Tj +/TT8 1 Tf +2.4004 0 TD +0.3578 Tw +(, i.e., performs)Tj +/TT12 1 Tf +7.0412 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.6078 0 TD +0.8578 Tw +(\(SETQ MARKLST \(CDR)Tj +-28.8184 -1.2889 TD +0 Tw +(MARKLST\)\))Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-5.4009 -3.1044 TD +0.0122 Tw +(If you have two chains marked, and wish to return to the first chain, you must perform )Tj +/TT19 1 Tf +11 0 0 10 511.9872 51.78 Tm +0 Tw +<00400040>Tj +/TT8 1 Tf +9 0 0 9 533.6971 51.78 Tm +(,)Tj +-41.2997 -1.2222 TD +0.0633 Tw +(which removes the second mark, and then )Tj +/TT19 1 Tf +19.4155 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0633 Tw +[(. However, the second mark is then no longer)]TJ +ET +endstream +endobj +116 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +118 0 obj +<< +/Length 6389 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-31)Tj +/TT8 1 Tf +-38.3333 60.6156 TD +0.0322 Tw +[(accessible. If you want to be able to return to either of two \(or more\) chains, you can use the)]TJ +0 -1.2222 TD +0 Tw +(following generalized )Tj +/TT10 1 Tf +9.9331 0 TD +(MARK)Tj +/TT8 1 Tf +2.4004 0 TD +(:)Tj +/TT10 1 Tf +-13.6668 -2.5489 TD +(\(MARK)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SYMBOL)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 169.0605 535.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 535.6 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Sets )Tj +/TT14 1 Tf +2.0039 0 TD +(SYMBOL)Tj +/TT8 1 Tf +3.6006 0 TD +( to the current edit chain,)Tj +/TT18 1 Tf +-6.9378 -2.5489 TD +(\()Tj +/TT8 1 Tf +0.333 0 TD +(\\)Tj +/TT6 1 Tf +10 0 0 10 110.4507 488.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 113.229 488.06 Tm +(SYMBOL)Tj +/TT18 1 Tf +3.6006 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 150.8813 488.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 488.06 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Makes the current edit chain become the value of )Tj +/TT14 1 Tf +21.96 0 TD +(SYMBOL)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-25.5605 -2.9556 TD +0.11 Tw +(If you did not prepare in advance for returning to a particular edit chain, you may still be)Tj +0 -1.2222 TD +0 Tw +(able to return to that chain with a single command by using \\ or \\)Tj +/TT10 1 Tf +29.3037 0 TD +(P)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-31.2371 -2.5489 TD +(\\)Tj +/TT4 1 Tf +10 0 0 10 107.45 402.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 402.92 Tm +([Editor Command])Tj +-32.9222 -2.6667 TD +(Makes the edit chain be the value of )Tj +/TT10 1 Tf +16.1343 0 TD +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +(. Generates an error if )Tj +/TT10 1 Tf +10.0933 0 TD +(UNFIND = NIL)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-37.0293 -2.9556 TD +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.1511 Tw +[( is set to the current edit chain by each command that makes a "big jump", i.e., a)]TJ +-3.6006 -1.2889 TD +0.1433 Tw +(command that usually performs more than a single ascent or descent, namely )Tj +/TT19 1 Tf +36.2239 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(, )Tj +/TT19 1 Tf +0.6433 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(, )Tj +/TT19 1 Tf +0.6433 0 TD +<00400040>Tj +/TT8 1 Tf +1.9736 0 TD +(,)Tj +/TT10 1 Tf +-41.0741 -1.2222 TD +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0078 Tw +(, all commands that involve a search, e.g., )Tj +/TT10 1 Tf +18.6784 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5078 0 TD +(LC)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.5078 0 TD +(..)Tj +/TT8 1 Tf +0.5 0 TD +(, )Tj +/TT10 1 Tf +0.5078 0 TD +(BELOW)Tj +/TT8 1 Tf +3.0005 0 TD +0.0078 Tw +(, et al and \\ and \\)Tj +/TT10 1 Tf +7.9905 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0078 Tw +[( themselves.)]TJ +-35.8935 -1.2889 TD +0.2522 Tw +(One exception is that )Tj +/TT10 1 Tf +10.5694 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.2522 Tw +[( is not reset when the current edit chain is the top level)]TJ +-14.17 -1.2889 TD +0 Tw +(expression, since this could always be returned to via the )Tj +/TT19 1 Tf +25.4468 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +( command.)Tj +-26.0498 -2.8889 TD +0.1333 Tw +(For example, if you type )Tj +/TT10 1 Tf +11.7043 0 TD +0.32 Tw +(F COND)Tj +/TT8 1 Tf +3.9206 0 TD +0.1333 Tw +(, and then )Tj +/TT10 1 Tf +5.0621 0 TD +0.32 Tw +(F CAR)Tj +/TT8 1 Tf +3.3205 0 TD +0.1333 Tw +(, \\ would take you back to the )Tj +/TT10 1 Tf +14.6863 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-41.0941 -1.2889 TD +(Another \\ would take you back to the )Tj +/TT10 1 Tf +17.0576 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +(, etc.)Tj +-20.1912 -2.5489 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +(P)Tj +/TT4 1 Tf +10 0 0 10 112.85 245.98 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 245.98 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0989 Tw +(Restores the edit chain to its state as of the last print operation, i.e., )Tj +/TT10 1 Tf +31.049 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5989 0 TD +(?)Tj +/TT8 1 Tf +0.6001 0 TD +0.0989 Tw +(, or )Tj +/TT10 1 Tf +1.8887 0 TD +0 Tw +(PP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0989 Tw +[(. If the edit)]TJ +-35.937 -1.2889 TD +0.1689 Tw +(chain has not changed since the last printing, \\)Tj +/TT10 1 Tf +22.0923 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.1689 Tw +[( restores it to its state as of the printing)]TJ +-22.6924 -1.2889 TD +0 Tw +(before that one, i.e., two chains are always saved.)Tj +0 -2.8889 TD +0.1022 Tw +(For example, if you type )Tj +/TT10 1 Tf +11.5487 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +[( followed by )]TJ +/TT10 1 Tf +6.0967 0 TD +0.2456 Tw +(3 2 1 P)Tj +/TT8 1 Tf +4.9373 0 TD +0.1022 Tw +(, \\)Tj +/TT10 1 Tf +1.2082 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +[( returns to the first )]TJ +/TT10 1 Tf +8.9935 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +(, i.e., would be)Tj +-34.5848 -1.2889 TD +0.0467 Tw +(equivalent to )Tj +/TT10 1 Tf +6.1417 0 TD +0.1111 Tw +(0 0 0)Tj +/TT8 1 Tf +3.2227 0 TD +0.0467 Tw +[(. Another \\)]TJ +/TT10 1 Tf +5.4339 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0467 Tw +[( would then take you back to the second )]TJ +/TT10 1 Tf +18.4884 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0467 Tw +(, i.e., you could)Tj +-34.4869 -1.2889 TD +0 Tw +(use \\)Tj +/TT10 1 Tf +2.3618 0 TD +(P)Tj +/TT8 1 Tf +0.6001 0 TD +( to flip back and forth between the two edit chains.)Tj +-2.9619 -2.9556 TD +0.0533 Tw +(If you had typed )Tj +/TT10 1 Tf +7.8544 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( followed by )]TJ +/TT10 1 Tf +5.95 0 TD +0.1267 Tw +(F COND)Tj +/TT8 1 Tf +3.7273 0 TD +0.0533 Tw +(, you could use )Tj +/TT18 1 Tf +7.1689 0 TD +0 Tw +(either)Tj +/TT8 1 Tf +2.2783 0 TD +0.0533 Tw +[( \\ or \\)]TJ +/TT10 1 Tf +3.0628 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( to return to the )]TJ +/TT10 1 Tf +7.4283 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +(, i.e.,)Tj +-39.2704 -1.2889 TD +0 Tw +(the action of \\ and \\)Tj +/TT10 1 Tf +9.1099 0 TD +(P)Tj +/TT8 1 Tf +0.6001 0 TD +( are independent.)Tj +/TT10 1 Tf +-11.0433 -2.5489 TD +(S)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SYMBOL)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(@)Tj +/TT6 1 Tf +10 0 0 10 149.707 87.84 Tm +( )Tj +/TT4 1 Tf +0.2778 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 87.84 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Sets )Tj +/TT14 1 Tf +2.0861 0 TD +(SYMBOL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +[( \(using )]TJ +/TT10 1 Tf +3.4535 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +(\) to the current expression after performing )Tj +/TT10 1 Tf +19.973 0 TD +0.1967 Tw +(\(LC . @\))Tj +/TT8 1 Tf +5.1941 0 TD +0.0822 Tw +[(. The edit)]TJ +-36.7077 -1.2889 TD +0 Tw +(chain is not changed.)Tj +ET +endstream +endobj +119 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +122 0 obj +<< +/Length 6210 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-32)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +(Thus )Tj +/TT10 1 Tf +2.4739 0 TD +0.0067 Tw +(\(S FOO\))Tj +/TT8 1 Tf +4.2074 0 TD +0.0002 Tc +0.002 Tw +( will set )Tj +/TT10 1 Tf +3.6927 0 TD +0 Tc +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0001 Tc +0.0021 Tw +( to the current expression, and )Tj +/TT10 1 Tf +13.6764 0 TD +0 Tc +0.0067 Tw +(\(S FOO -1 1\))Tj +/TT8 1 Tf +7.2212 0 TD +0.0002 Tc +0.002 Tw +( will set )Tj +/TT10 1 Tf +3.6927 0 TD +0 Tc +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0003 Tc +0.0019 Tw +( to the)Tj +-38.5648 -1.2889 TD +0 Tc +0 Tw +(first element in the last element of the current expression.)Tj +/TT6 1 Tf +10 0 0 10 102 515.6 Tm +(Commands That Modify Structure)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 512.89 m +558.01 512.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 490.94 Tm +(The basic structure modification commands in the editor are:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\) \()Tj +/TT14 1 Tf +1.8003 0 TD +(N )Tj +/TT10 1 Tf +1.2002 0 TD +(>= 1\))Tj +/TT4 1 Tf +10 0 0 10 214.8105 468.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 468.6 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Deletes the corresponding element from the current expression.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5998 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5997 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 210.7509 421.66 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 213.5292 421.66 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N )Tj +/TT10 1 Tf +1.2002 0 TD +(>= 1\))Tj +/TT4 1 Tf +10 0 0 10 256.7362 421.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 421.66 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Replaces the )Tj +/TT18 1 Tf +5.7729 0 TD +(N)Tj +/TT8 1 Tf +0.7778 0 TD +(th element in the current expression with )Tj +/TT14 1 Tf +18.4316 0 TD +(E)Tj +0.602 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +/TT10 1 Tf +-31.7178 -2.8822 TD +(\(-)Tj +/TT14 1 Tf +1.2002 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5997 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5997 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) \()Tj +/TT14 1 Tf +1.8003 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +( >= 1\) )Tj +/TT4 1 Tf +10 0 0 10 270.1597 368.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 368.12 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Inserts )Tj +/TT14 1 Tf +3.2168 0 TD +(E)Tj +0.601 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( before the )Tj +/TT14 1 Tf +4.9224 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th element in the current expression.)Tj +/TT10 1 Tf +-15.4736 -2.8822 TD +(\(N)Tj +/TT6 1 Tf +10 0 0 10 160.8017 314.58 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 163.5801 314.58 Tm +(E)Tj +0.6 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... E)Tj +3.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 217.5809 314.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 314.58 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Attaches )Tj +/TT14 1 Tf +4.1089 0 TD +(E)Tj +0.6 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( at the end of the current expression.)Tj +-13.5089 -3.2889 TD +0.0267 Tw +(As mentioned earlier: )Tj +/TT18 1 Tf +9.8905 0 TD +(all structure modification done by the editor is destructive, i.e., the editor uses )Tj +/TT10 1 Tf +31.8394 0 TD +0 Tw +(RPLACA)Tj +/TT18 1 Tf +-41.7299 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9778 0 TD +(RPLACD)Tj +/TT18 1 Tf +3.6006 0 TD +0.2278 Tw +[( to physically change the structure it was given.)]TJ +/TT8 1 Tf +21.0727 0 TD +[( However, all structure modification is)]TJ +-26.6511 -1.2889 TD +0 Tw +(undoable, see )Tj +/TT10 1 Tf +6.2969 0 TD +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +( .)Tj +-8.6973 -2.9556 TD +0.0611 Tw +(All of the above commands generate errors if the current expression is not a list, or in the case of the)Tj +0 -1.2222 TD +0.0733 Tw +(first three commands, if the list contains fewer than )Tj +/TT14 1 Tf +23.6107 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0733 Tw +[( elements. In addition, the command )]TJ +/TT10 1 Tf +17.2184 0 TD +0 Tw +(\(1\))Tj +/TT8 1 Tf +1.8003 0 TD +0.0733 Tw +(, i.e.,)Tj +-43.2295 -1.2889 TD +0.0178 Tw +(delete the first element, will cause an error if there is only one element, since deleting the first element)Tj +0 -1.2222 TD +0.0767 Tw +[(must be done by replacing it with the second element, and then deleting the second element. Or, to)]TJ +T* +0.2167 Tw +(look at it another way, deleting the first element when there is only one element would require)Tj +T* +0.0611 Tw +(changing a list to an atom \(i.e., to )Tj +/TT10 1 Tf +15.3483 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0611 Tw +[(\) which cannot be done. However, the command )]TJ +/TT10 1 Tf +22.5612 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0611 Tw +[( will)]TJ +-43.3104 -1.2889 TD +0.0011 Tw +(work even if there is only one element in the current expression, since it will ascend to a point where it)Tj +/TT18 1 Tf +0 -1.2222 TD +0 Tw +(can)Tj +/TT8 1 Tf +1.4072 0 TD +( do the deletion.)Tj +-1.4072 -2.8889 TD +0.0444 Tw +(If the value of )Tj +/TT10 1 Tf +6.5518 0 TD +0 Tw +(CHANGESARRAY)Tj +/TT8 1 Tf +7.2012 0 TD +0.0444 Tw +[( is a hash array, the editor will mark all structures that are changed by)]TJ +-13.753 -1.2889 TD +0 Tw +(doing )Tj +/TT10 1 Tf +3.077 0 TD +(\(PUTHASH)Tj +/TT12 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.4911 0 TD +(STRUCTURE)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.4911 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.4911 0 TD +(CHANGESARRAY\))Tj +/TT8 1 Tf +7.8013 0 TD +0.2411 Tw +(, where )Tj +/TT14 1 Tf +4.0013 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.2411 Tw +[( is the name of the function. The)]TJ +-28.955 -1.2889 TD +0 Tw +(algorithm used for marking is as follows: )Tj +2.6667 -2 TD +0.2233 Tw +[(1.)-1250(If the expression is inside of another expression already marked as being changed, do)]TJ +0.6667 -1.2222 TD +0 Tw +(nothing. )Tj +ET +endstream +endobj +123 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +125 0 obj +<< +/Length 8490 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-33)Tj +/TT8 1 Tf +-39.6667 60.6156 TD +[(2.)-1250(If the change is an insertion of or replacement with a list, mark the list as changed. )]TJ +0 -2 TD +0.0411 Tw +[(3.)-1250(If the change is an insertion of or replacement with an atom, or a deletion, mark the parent)]TJ +0.6667 -1.2222 TD +0 Tw +(as changed.)Tj +/TT10 1 Tf +-3.3333 -2.8889 TD +(CHANGESARRAY)Tj +/TT8 1 Tf +7.2012 0 TD +0.0267 Tw +[( is primarily for use by )]TJ +/TT10 1 Tf +10.4671 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0267 Tw +[( \(Chapter 26\). When the value of )]TJ +/TT10 1 Tf +15.0688 0 TD +0 Tw +(CHANGECHAR)Tj +/TT8 1 Tf +-39.3382 -1.2889 TD +0.1578 Tw +(is non-)Tj +/TT10 1 Tf +3.1656 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6578 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.1578 Tw +(, when printing to a file or display terminal, prints )Tj +/TT10 1 Tf +24.0265 0 TD +0 Tw +(CHANGECHAR)Tj +/TT8 1 Tf +6.001 0 TD +0.1578 Tw +[( in the)]TJ +-42.2522 -1.2889 TD +0.0644 Tw +(right margin while printing an expression marked as having been changed. )Tj +/TT10 1 Tf +34.5722 0 TD +0 Tw +(CHANGECHAR)Tj +/TT8 1 Tf +6.001 0 TD +0.0644 Tw +[( is initially)]TJ +-40.5731 -1.2889 TD +0 Tw +(|.)Tj +/TT6 1 Tf +10 0 0 10 78 452.4 Tm +(Implementation)Tj +/TT18 1 Tf +9 0 0 9 108 436.74 Tm +0.0456 Tw +[(Note:)-1139.5(Since all commands that insert, replace, delete or attach structure use the same low level)]TJ +3.3333 -1.2222 TD +0 Tw +(editor functions, the remarks made here are valid for all structure changing commands.)Tj +/TT8 1 Tf +-6.6667 -2 TD +0.1256 Tw +(For all replacement, insertion, and attaching at the end of a list, unless the command was typed in)Tj +0 -1.2222 TD +0.0289 Tw +(directly to the editor, )Tj +/TT18 1 Tf +9.6659 0 TD +0 Tw +(copies)Tj +/TT8 1 Tf +2.4072 0 TD +0.0289 Tw +[( of the corresponding structure are used, because of the possibility that the)]TJ +-12.0731 -1.2222 TD +0.0256 Tw +[(exact same command, \(i.e., same list structure\) might be used again. Thus if a program constructs the)]TJ +T* +0 Tw +(command )Tj +/TT10 1 Tf +4.7394 0 TD +0.0989 Tw +(\(1 \(A B C\)\))Tj +/TT8 1 Tf +6.8977 0 TD +0.0411 Tw +[( e.g., via )]TJ +/TT10 1 Tf +4.0144 0 TD +0.0989 Tw +(\(LIST 1 FOO\))Tj +/TT8 1 Tf +7.399 0 TD +0.0411 Tw +[(, and gives this command to the editor, the )]TJ +/TT10 1 Tf +19.7846 0 TD +0.0989 Tw +(\(A B)Tj +-42.8351 -1.2889 TD +0 Tw +(C\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0233 Tw +[( used for the replacement will )]TJ +/TT18 1 Tf +13.5838 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0233 Tw +[( be )]TJ +/TT10 1 Tf +1.5789 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0233 Tw +[( to )]TJ +/TT10 1 Tf +1.4187 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[(. You can circumvent this by using the )]TJ +/TT10 1 Tf +17.6392 0 TD +0 Tw +(I)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[( command,)]TJ +-40.3545 -1.2889 TD +0.0567 Tw +[(which computes the structure to be used. In the above example, the form of the command would be)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(\(I 1)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FOO\))Tj +/TT8 1 Tf +2.4004 0 TD +(, which would replace the first element with the value of )Tj +/TT10 1 Tf +25.2192 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( itself.)Tj +-28.737 -2.0667 TD +0.0822 Tw +[(Note:)-901.2(Some editor commands take as arguments a list of edit commands, e.g., )]TJ +/TT10 1 Tf +36.131 0 TD +0.1978 Tw +(\(LP F)Tj +-32.7977 -1.2889 TD +0.2578 Tw +(FOO \(1 \(CAR FOO\)\)\))Tj +/TT8 1 Tf +11.5751 0 TD +0.1078 Tw +[(. In this case, the command )]TJ +/TT10 1 Tf +13.2286 0 TD +0.2578 Tw +(\(1 \(CAR FOO\)\))Tj +/TT8 1 Tf +8.3168 0 TD +0.1078 Tw +[( is not)]TJ +-33.1205 -1.2889 TD +0.0044 Tw +(considered to have been "typed in" even though the )Tj +/TT10 1 Tf +23.1186 0 TD +0 Tw +(LP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0002 Tc +0.0042 Tw +( command itself may have)Tj +-24.3188 -1.2889 TD +0 Tc +0.2233 Tw +[(been typed in. Similarly, commands originating from macros, or commands)]TJ +0 -1.2222 TD +0.1633 Tw +(given to the editor as arguments to )Tj +/TT10 1 Tf +16.8176 0 TD +0 Tw +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6633 0 TD +(EDITV)Tj +/TT8 1 Tf +3.0005 0 TD +0.1633 Tw +(, et al, e.g., )Tj +/TT10 1 Tf +5.5347 0 TD +0.3911 Tw +(EDITF\(FOO F)Tj +-29.0166 -1.2889 TD +0 Tw +(COND \(N --\)\))Tj +/TT8 1 Tf +7.2012 0 TD +( are not considered typed in.)Tj +-13.8678 -2.0667 TD +0.2267 Tw +(The rest of this section is included for applications wherein the editor is used to modify a data)Tj +0 -1.2222 TD +0.2633 Tw +[(structure, and pointers into that data structure are stored elsewhere. In these cases, the actual)]TJ +T* +0.2967 Tw +(mechanics of structure modification must be known in order to predict the effect that various)Tj +T* +0.0222 Tw +[(commands may have on these outside pointers. For example, if the value of )]TJ +/TT10 1 Tf +34.1641 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +[( is )]TJ +/TT10 1 Tf +1.2593 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +[( of the current)]TJ +-39.024 -1.2889 TD +0 Tw +(expression, what will the commands )Tj +/TT10 1 Tf +16.4453 0 TD +(\(2\))Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(3\))Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(2 X Y Z\))Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(-2 X Y Z\))Tj +/TT8 1 Tf +6.001 0 TD +(, etc. do to )Tj +/TT10 1 Tf +4.7778 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(?)Tj +-39.5259 -2.0667 TD +0.1233 Tw +(Deletion of the first element in the current expression is performed by replacing it with the second)Tj +0 -1.2222 TD +0.0067 Tw +[(element and deleting the second element by patching around it. Deletion of any other element is done)]TJ +T* +0.1278 Tw +[(by patching around it, i.e., the previous tail is altered. Thus if )]TJ +/TT10 1 Tf +29.1177 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1278 Tw +[( is )]TJ +/TT10 1 Tf +1.4704 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.1278 Tw +[( to the current expression)]TJ +-33.5885 -1.2889 TD +0.0033 Tw +(which is )Tj +/TT10 1 Tf +3.9544 0 TD +0.0089 Tw +(\(A B C D\))Tj +/TT8 1 Tf +5.4275 0 TD +0.0033 Tw +(, and )Tj +/TT10 1 Tf +2.4495 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0008 Tc +0.0025 Tw +( is )Tj +/TT10 1 Tf +1.2215 0 TD +0 Tc +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0008 Tc +0.0025 Tw +( of )Tj +/TT10 1 Tf +1.3856 0 TD +0 Tc +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0033 Tw +(, after executing the command )Tj +/TT10 1 Tf +13.6617 0 TD +0 Tw +(\(1\))Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5033 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0004 Tc +0.0029 Tw +( will be )Tj +/TT10 1 Tf +3.4993 0 TD +0 Tc +0.0089 Tw +(\(B C D\))Tj +/TT8 1 Tf +-41.1043 -1.2889 TD +0.0356 Tw +(\(which is )Tj +/TT10 1 Tf +4.3519 0 TD +0 Tw +(EQUAL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0356 Tw +[( but not )]TJ +/TT10 1 Tf +3.7932 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0356 Tw +[( to )]TJ +/TT10 1 Tf +1.4432 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0356 Tw +[(\). However, under the same initial conditions, after executing )]TJ +/TT10 1 Tf +27.9356 0 TD +0 Tw +(\(2\))Tj +-43.5249 -1.2889 TD +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0756 Tw +[( will be unchanged, i.e., )]TJ +/TT10 1 Tf +11.076 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0756 Tw +[( will still be )]TJ +/TT10 1 Tf +5.6645 0 TD +0.1822 Tw +(\(B C D\))Tj +/TT8 1 Tf +4.5651 0 TD +0.0756 Tw +[( even though the current expression and )]TJ +/TT10 1 Tf +18.6202 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +-43.5265 -1.2889 TD +(are now )Tj +/TT10 1 Tf +3.8359 0 TD +(\(A C D\))Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-8.0366 -2.0667 TD +0.0211 Tw +(A general solution of the problem isnt possible, as it would require being able to make two lists )Tj +/TT10 1 Tf +42.9874 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0211 Tw +[( to)]TJ +-44.1876 -1.2889 TD +0.13 Tw +[(each other that were originally different. Thus if )]TJ +/TT10 1 Tf +22.8985 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.13 Tw +[( is )]TJ +/TT10 1 Tf +1.4748 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.13 Tw +[( of the current expression, and )]TJ +/TT10 1 Tf +14.4499 0 TD +0 Tw +(FUM)Tj +/TT8 1 Tf +1.8003 0 TD +0.13 Tw +[( is)]TJ +/TT10 1 Tf +-44.2242 -1.2889 TD +0 Tw +(CDDR)Tj +/TT8 1 Tf +2.4004 0 TD +0.2722 Tw +[( of the current expression, performing )]TJ +/TT10 1 Tf +18.6714 0 TD +0 Tw +(\(2\))Tj +/TT8 1 Tf +1.8003 0 TD +0.2722 Tw +[( would have to make )]TJ +/TT10 1 Tf +10.9119 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.2722 Tw +[( be )]TJ +/TT10 1 Tf +2.0767 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.2722 Tw +[( to )]TJ +/TT10 1 Tf +1.9165 0 TD +0 Tw +(FUM)Tj +/TT8 1 Tf +1.8003 0 TD +0.2722 Tw +[( if all)]TJ +-42.578 -1.2889 TD +0 Tw +(subsequent operations were to update both )Tj +/TT10 1 Tf +19.4097 0 TD +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(FUM)Tj +/TT8 1 Tf +1.8003 0 TD +( correctly.)Tj +ET +endstream +endobj +126 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +128 0 obj +<< +/Length 8354 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-34)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.5044 Tw +(Both replacement and insertion are accomplished by smashing both )Tj +/TT10 1 Tf +34.7505 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.5044 Tw +[( and )]TJ +/TT10 1 Tf +3.2018 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.5044 Tw +[( of the)]TJ +-41.5528 -1.2889 TD +0.0578 Tw +[(corresponding tail. Thus, if )]TJ +/TT10 1 Tf +12.7445 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0578 Tw +[( were )]TJ +/TT10 1 Tf +2.8026 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0578 Tw +[( to the current expression, )]TJ +/TT10 1 Tf +12.0091 0 TD +0.1378 Tw +(\(A B C D\))Tj +/TT8 1 Tf +5.8142 0 TD +0.0578 Tw +(, after )Tj +/TT10 1 Tf +2.8988 0 TD +0.1378 Tw +(\(1 X Y Z\))Tj +/TT8 1 Tf +5.8142 0 TD +0 Tw +(,)Tj +/TT10 1 Tf +-45.0838 -1.2889 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( would be )]TJ +/TT10 1 Tf +4.8337 0 TD +0.1344 Tw +(\(X Y Z B C D\))Tj +/TT8 1 Tf +8.4735 0 TD +0.0556 Tw +[(. Similarly, if )]TJ +/TT10 1 Tf +6.3692 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( were )]TJ +/TT10 1 Tf +2.7981 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.0556 Tw +[( to the current expression, )]TJ +/TT10 1 Tf +11.998 0 TD +0.1344 Tw +(\(A B C D\))Tj +/TT8 1 Tf +5.8042 0 TD +0 Tw +(,)Tj +-45.0775 -1.2889 TD +(then after )Tj +/TT10 1 Tf +4.5024 0 TD +(\(-1 X Y Z\), FOO)Tj +/TT8 1 Tf +9.0015 0 TD +( would be )Tj +/TT10 1 Tf +4.667 0 TD +(\(X Y Z A B C D\))Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +-27.1724 -2.0667 TD +(The )Tj +/TT10 1 Tf +1.936 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +[( command is accomplished by smashing the last )]TJ +/TT10 1 Tf +21.6354 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +[( of the current expression a la )]TJ +/TT10 1 Tf +13.3536 0 TD +0 Tw +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[(. Thus)]TJ +-42.3259 -1.2889 TD +0 Tw +(if )Tj +/TT10 1 Tf +0.894 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.02 Tw +[( were )]TJ +/TT10 1 Tf +2.727 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.02 Tw +[( to any tail of the current expression, after executing an )]TJ +/TT10 1 Tf +24.7571 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( command, the corresponding)]TJ +-31.9787 -1.2889 TD +0 Tw +(expressions would also appear at the end of )Tj +/TT10 1 Tf +19.6465 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-21.4468 -2.0667 TD +0.0689 Tw +(In summary, the only situation in which an edit operation will )Tj +/TT18 1 Tf +28.54 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0689 Tw +[( change an external pointer occurs)]TJ +-29.873 -1.2222 TD +0.1656 Tw +(when the external pointer is to a )Tj +/TT18 1 Tf +15.6486 0 TD +(proper tail)Tj +/TT8 1 Tf +4.3594 0 TD +[( of the data structure, i.e., to )]TJ +/TT10 1 Tf +13.7492 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1656 Tw +[( of some node in the)]TJ +-35.5576 -1.2889 TD +0.0589 Tw +[(structure, and the operation is deletion. If all external pointers are to )]TJ +/TT18 1 Tf +31.3871 0 TD +0 Tw +(elements)Tj +/TT8 1 Tf +3.5015 0 TD +0.0589 Tw +[( of the structure, i.e., to)]TJ +/TT10 1 Tf +-34.8886 -1.2222 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.31 Tw +[( of some node, or if only insertions, replacements, or attachments are performed, the edit)]TJ +-1.8003 -1.2889 TD +0 Tw +(operation will )Tj +/TT18 1 Tf +6.4731 0 TD +(always)Tj +/TT8 1 Tf +2.7769 0 TD +( have the same effect on an external pointer as it does on the current expression.)Tj +/TT6 1 Tf +10 0 0 10 126 401.8 Tm +(The A, B, and : Commands)Tj +/TT8 1 Tf +9 0 0 9 126 386.14 Tm +0.0667 Tw +(In the )Tj +/TT10 1 Tf +2.9395 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5667 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.7601 0 TD +(E)Tj +0.5988 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.16 Tw +[( ... )]TJ +/TT14 1 Tf +3.3205 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +(, and )Tj +/TT10 1 Tf +2.5762 0 TD +0 Tw +(\(-)Tj +/TT14 1 Tf +1.2002 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.7601 0 TD +(E)Tj +0.6 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.16 Tw +[( ... )]TJ +/TT14 1 Tf +3.3205 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( commands, the sign of the integer is used to)]TJ +-25.0423 -1.6222 TD +0.2156 Tw +[(indicate the operation. As a result, there is no direct way to express insertion after a particular)]TJ +0 -1.2222 TD +0.1356 Tw +(element \(hence the necessity for a separate )Tj +/TT10 1 Tf +19.987 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1356 Tw +[( command\). Similarly, you cannot specify deletion or)]TJ +-20.5871 -1.2889 TD +0.0622 Tw +(replacement of the )Tj +/TT14 1 Tf +8.6618 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +(th element from the end of a list without first converting )Tj +/TT14 1 Tf +25.8319 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[( to the corresponding)]TJ +-35.6939 -1.2889 TD +0 Tw +(positive integer. Accordingly, we have:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(B)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5998 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... E)Tj +3.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 217.0509 315 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 315 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Inserts )Tj +/TT14 1 Tf +3.2168 0 TD +(E)Tj +0.601 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0022 0 TD +(E)Tj +0.6 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( before the current expression. Equivalent to )Tj +/TT10 1 Tf +20.0635 0 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +( followed by )Tj +/TT10 1 Tf +5.79 0 TD +(\(-1)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.6004 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ...)Tj +/TT14 1 Tf +-38.9244 -1.6222 TD +(E)Tj +0.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-1.8001 -3.2889 TD +0.0633 Tw +(For example, to insert )Tj +/TT10 1 Tf +10.1186 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +[( before the last element in the current expression, perform )]TJ +/TT12 1 Tf +26.4688 0 TD +0 Tw +(-)Tj +/TT10 1 Tf +0.333 0 TD +(1)Tj +/TT8 1 Tf +0.6001 0 TD +0.0633 Tw +[( and)]TJ +-39.3208 -1.2889 TD +0 Tw +(then )Tj +/TT10 1 Tf +2.2192 0 TD +(\(B FOO\))Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-7.7533 -2.5489 TD +(\(A)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5998 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... E)Tj +3.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 222.4517 208.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 208.66 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Inserts )Tj +/TT14 1 Tf +3.2546 0 TD +(E)Tj +0.601 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0911 Tw +[( ... )]TJ +/TT14 1 Tf +3.1827 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0378 Tw +[( after the current expression. Equivalent to )]TJ +/TT10 1 Tf +19.6137 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0378 Tw +[( followed by )]TJ +/TT10 1 Tf +5.9034 0 TD +0 Tw +(\(-2)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.2878 0 TD +(E)Tj +0.6002 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0911 Tw +[( ...)]TJ +/TT14 1 Tf +-38.8433 -1.6222 TD +0 Tw +(E)Tj +0.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(\(N)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5999 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, whichever is appropriate.)Tj +/TT10 1 Tf +-12.0245 -2.7333 TD +(\(:)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5998 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... E)Tj +3.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT8 1 Tf +27.4056 0 TD +([Editor Command])Tj +-32.9222 -3.0667 TD +0.0678 Tw +(Replaces the current expression by )Tj +/TT14 1 Tf +15.9322 0 TD +0 Tw +(E)Tj +0.6023 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.1622 Tw +[( ... )]TJ +/TT14 1 Tf +3.3249 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0678 Tw +[(. Equivalent to )]TJ +/TT10 1 Tf +7.2013 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0678 Tw +[( followed by )]TJ +/TT10 1 Tf +5.9934 0 TD +0 Tw +(\(1)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.3178 0 TD +(E)Tj +0.5983 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.1622 Tw +[( ...)]TJ +/TT14 1 Tf +-38.77 -1.6222 TD +0 Tw +(E)Tj +0.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +129 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +131 0 obj +<< +/Length 7407 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-35)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(DELETE)Tj +/TT4 1 Tf +10 0 0 10 134.4 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 568.2 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.2155 TD +(\(:\) )Tj +/TT4 1 Tf +10 0 0 10 123.6035 557.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 557.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Deletes the current expression.)Tj +/TT10 1 Tf +0 -2.8889 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.02 Tw +[( first tries to delete the current expression by performing an )]TJ +/TT10 1 Tf +26.7918 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.02 Tw +[( and then a )]TJ +/TT10 1 Tf +5.2421 0 TD +0 Tw +(\(1\))Tj +/TT8 1 Tf +1.8003 0 TD +0.02 Tw +[(. This)]TJ +-38.635 -1.2889 TD +0.0722 Tw +[(works in most cases. However, if after performing )]TJ +/TT10 1 Tf +23.3253 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0722 Tw +(, the new current expression contains)Tj +-24.5255 -1.2889 TD +0.2056 Tw +(only one element, the command )Tj +/TT10 1 Tf +15.4643 0 TD +0 Tw +(\(1\))Tj +/TT8 1 Tf +1.8003 0 TD +0.2056 Tw +[( will not work. Therefore, )]TJ +/TT10 1 Tf +13.0263 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2056 Tw +[( starts over and)]TJ +-33.8915 -1.2889 TD +0.1211 Tw +(performs a )Tj +/TT10 1 Tf +5.2979 0 TD +0 Tw +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.1211 Tw +(, followed by )Tj +/TT10 1 Tf +6.4034 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1211 Tw +(, followed by )Tj +/TT10 1 Tf +6.4034 0 TD +0 Tw +(\(2\))Tj +/TT8 1 Tf +1.8003 0 TD +0.1211 Tw +(. For example, if the current expression is)Tj +/TT10 1 Tf +-22.3053 -1.2889 TD +0.0756 Tw +(\(COND \(\(MEMB X Y\)\) \(T Y\)\))Tj +/TT8 1 Tf +15.3802 0 TD +0.0311 Tw +(, and you perform )Tj +/TT10 1 Tf +8.4042 0 TD +0 Tw +(-1)Tj +/TT8 1 Tf +1.2002 0 TD +0.0311 Tw +(, and then )Tj +/TT10 1 Tf +4.7554 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +(, the)Tj +/TT10 1 Tf +1.9183 0 TD +0.0756 Tw +[( BK-UP-\(2\))]TJ +/TT8 1 Tf +-35.259 -1.2889 TD +0 Tw +(method is used, and the new current expression will be )Tj +/TT10 1 Tf +24.6836 0 TD +(... \(\(MEMB X Y\)\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(.)Tj +-34.8853 -2.9556 TD +0.0933 Tw +(However, if the next higher expression contains only one element, )Tj +/TT10 1 Tf +30.3957 0 TD +0 Tw +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.0933 Tw +[( will not work. So in)]TJ +-31.5959 -1.2889 TD +0.0044 Tw +(this case, )Tj +/TT10 1 Tf +4.2286 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0004 Tc +0.004 Tw +( performs )Tj +/TT10 1 Tf +4.5646 0 TD +0 Tc +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0044 Tw +(, followed by )Tj +/TT10 1 Tf +6.0534 0 TD +0.0111 Tw +(\(: NIL\))Tj +/TT8 1 Tf +4.2118 0 TD +0.0044 Tw +(, i.e., it )Tj +/TT18 1 Tf +3.1505 0 TD +0 Tw +(replaces)Tj +/TT8 1 Tf +3.1855 0 TD +0.0002 Tc +0.0042 Tw +( the higher expression by)Tj +/TT10 1 Tf +-30.1952 -1.2889 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0844 Tw +[(. For example, if the current expression is )]TJ +/TT10 1 Tf +19.4431 0 TD +0.2033 Tw +(\(COND \(\(MEMB X Y\)\) \(T Y\)\))Tj +/TT8 1 Tf +16.0191 0 TD +0.0844 Tw +[( and you)]TJ +-37.2625 -1.2889 TD +0 Tw +(perform )Tj +/TT10 1 Tf +3.9518 0 TD +0.1689 Tw +(F MEMB)Tj +/TT8 1 Tf +3.7695 0 TD +0.07 Tw +[( and then )]TJ +/TT10 1 Tf +4.6221 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.07 Tw +(, the new current expression will be )Tj +/TT10 1 Tf +16.4724 0 TD +0.1689 Tw +(... NIL \(T Y\)\))Tj +/TT8 1 Tf +-32.4164 -1.2889 TD +0.0033 Tw +(and the original expression would now be )Tj +/TT10 1 Tf +18.9213 0 TD +0.0078 Tw +(\(COND NIL \(T Y\)\))Tj +/TT8 1 Tf +9.6249 0 TD +0.0001 Tc +0.0032 Tw +(. The rationale behind this is)Tj +-28.5462 -1.2889 TD +0 Tc +0.0311 Tw +(that deleting )Tj +/TT10 1 Tf +5.9118 0 TD +0.0744 Tw +(\(MEMB X Y\))Tj +/TT8 1 Tf +6.1499 0 TD +0.0311 Tw +[( from )]TJ +/TT10 1 Tf +2.719 0 TD +0.0744 Tw +(\(\(MEMB X Y\)\))Tj +/TT8 1 Tf +7.3501 0 TD +0.0311 Tw +[( changes a list of one element to a list of no)]TJ +-22.1307 -1.2889 TD +0 Tw +(elements, i.e., )Tj +/TT10 1 Tf +6.2129 0 TD +(\(\))Tj +/TT8 1 Tf +1.2002 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-10.6543 -2.9556 TD +0.1867 Tw +(If the current expression is a tail, then )Tj +/TT10 1 Tf +18.3537 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6867 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.6867 0 TD +(:)Tj +/TT8 1 Tf +0.25 0 TD +0.1867 Tw +(, and )Tj +/TT10 1 Tf +2.8162 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1867 Tw +[( all work exactly the same as)]TJ +-27.594 -1.2889 TD +0.2967 Tw +[(though the current expression were the first element in that tail. Thus if the current)]TJ +0 -1.2222 TD +0.0356 Tw +(expression were )Tj +/TT10 1 Tf +7.4949 0 TD +0.0856 Tw +(... \(PRINT Y\) \(PRINT Z\)\), \(B \(PRINT X\)\))Tj +/TT8 1 Tf +24.0027 0 TD +0.0356 Tw +[( would insert )]TJ +/TT10 1 Tf +6.2385 0 TD +0 Tw +(\(PRINT)Tj +-37.7361 -1.2889 TD +(X\))Tj +/TT8 1 Tf +1.2002 0 TD +0.2211 Tw +[( before )]TJ +/TT10 1 Tf +3.7274 0 TD +0.53 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.9309 0 TD +0.2211 Tw +(, leaving the current expression )Tj +/TT10 1 Tf +15.2179 0 TD +0 Tw +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.4711 0 TD +0.53 Tw +(\(PRINT X\) \(PRINT Y\))Tj +-28.3477 -1.2889 TD +0 Tw +(\(PRINT Z\)\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-10.001 -2.0667 TD +(The following forms of the )Tj +/TT10 1 Tf +12.0405 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(, and )Tj +/TT12 1 Tf +2.4429 0 TD +(:)Tj +/TT8 1 Tf +0.25 0 TD +( commands incorporate a location specification:)Tj +/TT10 1 Tf +-13.7669 -2.5489 TD +(\(INSERT)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5993 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(BEFORE . @\))Tj +/TT4 1 Tf +10 0 0 10 252.3096 238.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 238.52 Tm +([Editor Command])Tj +/TT10 1 Tf +-32.9222 -3.0667 TD +(\(@)Tj +/TT8 1 Tf +1.2002 0 TD +0.0278 Tw +[( is )]TJ +/TT10 1 Tf +1.2704 0 TD +0.0678 Tw +(\(CDR \(MEMBER BEFORE)Tj +/TT12 1 Tf +12.1375 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.2778 0 TD +(COMMAND)Tj +/TT10 1 Tf +4.2007 0 TD +(\)\)\))Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +[( Similar to )]TJ +/TT10 1 Tf +5.159 0 TD +0.0678 Tw +(\(LC .@\))Tj +/TT8 1 Tf +4.2685 0 TD +0.0278 Tw +[( followed by )]TJ +/TT10 1 Tf +5.8734 0 TD +0 Tw +(\(B)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.2778 0 TD +(E)Tj +0.5966 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0678 Tw +[( ...)]TJ +/TT14 1 Tf +-38.8622 -1.6222 TD +0 Tw +(E)Tj +0.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +2.1999 -2.4 TD +[(Warning:)-1177.1(If )]TJ +/TT10 1 Tf +6.4799 0 TD +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.2267 Tw +[( causes an error, the location process does )]TJ +/TT18 1 Tf +20.514 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.2267 Tw +[( continue as)]TJ +-25.5937 -1.2889 TD +0.0556 Tw +[(described above. For example, if )]TJ +/TT10 1 Tf +15.1331 0 TD +0.1322 Tw +(@ = \(COND 3\))Tj +/TT8 1 Tf +7.5978 0 TD +0.0556 Tw +[( and the next )]TJ +/TT10 1 Tf +6.2056 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +-28.9366 -1.2889 TD +0.1056 Tw +(does not have a thirdelement, the search stops and the )Tj +/TT10 1 Tf +25.2811 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1056 Tw +[( fails.)]TJ +-28.8817 -1.2889 TD +0.2144 Tw +(You can always write )Tj +/TT10 1 Tf +10.6298 0 TD +0.5156 Tw +(\(LC COND 3\))Tj +/TT8 1 Tf +7.6322 0 TD +0.2144 Tw +[( if you intend the search to)]TJ +-18.2619 -1.2889 TD +0 Tw +(continue.)Tj +/TT10 1 Tf +2 -1.9333 TD +(*P)Tj +0 -1 TD +(\(PROG \(& & X\) **COMMENT** \(SELECTQ ATM & NIL\) \(OR &)Tj +T* +(&\) \(PRIN1 & T\))Tj +T* +(\(PRIN1 & T\) \(SETQ X & )Tj +0 -2 TD +(*\(INSERT LABEL BEFORE PRIN1\))Tj +0 -1 TD +(*P)Tj +ET +endstream +endobj +132 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +134 0 obj +<< +/Length 5810 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-36)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 246 570.14 Tm +(\(PROG \(& & X\) **COMMENT** \(SELECTQ ATM & NIL\) \(OR &)Tj +0 -1 TD +(&\) LABEL)Tj +0 -1.0667 TD +(\(PRIN1 & T\) \( )Tj +/TT18 1 Tf +11.4019 0 TD +(user typed Control-E)Tj +/TT10 1 Tf +-11.4019 -2 TD +(*)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.2433 Tw +(Current edit chain is not changed, but )Tj +/TT10 1 Tf +18.7038 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.2433 Tw +[( is set to the edit chain after the )]TJ +/TT10 1 Tf +16.1695 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.2433 Tw +[( was)]TJ +-39.074 -1.2889 TD +0 Tw +(performed, i.e., \\ will make the edit chain be that chain where the insertion was performed.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(INSERT)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5993 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(AFTER . @\) )Tj +/TT4 1 Tf +10 0 0 10 300.3097 475 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 475 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(INSERT BEFORE)Tj +/TT8 1 Tf +7.8013 0 TD +( except uses )Tj +/TT10 1 Tf +5.5249 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +( instead of )Tj +/TT10 1 Tf +4.8418 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-25.2494 -2.5489 TD +(\(INSERT)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5993 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FOR . @\) )Tj +/TT4 1 Tf +10 0 0 10 289.5079 424.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 424.46 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(INSERT BEFORE)Tj +/TT8 1 Tf +7.8013 0 TD +( except uses )Tj +/TT10 1 Tf +5.5249 0 TD +(:)Tj +/TT8 1 Tf +0.6001 0 TD +( for )Tj +/TT10 1 Tf +1.7739 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-22.1815 -2.5489 TD +(\(REPLACE @ BY)Tj +/TT8 1 Tf +7.8013 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5987 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 276.4508 373.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 373.92 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.5489 TD +(\(REPLACE @ WITH)Tj +/TT8 1 Tf +9.0015 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5985 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 292.6517 359.98 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 359.98 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Here )Tj +/TT10 1 Tf +2.5228 0 TD +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( is the )]TJ +/TT18 1 Tf +3.1154 0 TD +0 Tw +(segment)Tj +/TT8 1 Tf +3.3345 0 TD +0.0878 Tw +[( of the command between )]TJ +/TT10 1 Tf +12.1357 0 TD +0 Tw +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0878 Tw +[( and )]TJ +/TT10 1 Tf +2.3684 0 TD +0 Tw +(WITH)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +[(. Same as )]TJ +/TT10 1 Tf +4.9117 0 TD +0 Tw +(\(INSERT)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.3378 0 TD +(E)Tj +0.5997 -0.3333 TD +(1)Tj +/TT10 1 Tf +-40.7278 -1.2889 TD +(... )Tj +/TT14 1 Tf +2.4004 0 TD +(E)Tj +0.5996 -0.3333 TD +(M)Tj +/TT12 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FOR . @\))Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-8.6508 -3.2889 TD +(Example: )Tj +/TT10 1 Tf +4.3809 0 TD +(\(REPLACE COND -1 WITH \(T \(RETURN L\)\)\))Tj +-5.7142 -2.5489 TD +(\(CHANGE @ TO)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.5988 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 276.4517 265.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 265.24 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(REPLACE WITH)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-12.3451 -2.4 TD +(\(DELETE . @\) )Tj +/TT8 1 Tf +34.2556 0 TD +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0133 Tw +(Does a )Tj +/TT10 1 Tf +3.2493 0 TD +0.0322 Tw +(\(LC . @\))Tj +/TT8 1 Tf +4.8652 0 TD +0.0133 Tw +[( followed by )]TJ +/TT10 1 Tf +5.83 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0133 Tw +[( \(see warning about )]TJ +/TT10 1 Tf +9.0367 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0133 Tw +[( above\). The current edit)]TJ +-30.1825 -1.2889 TD +0 Tw +(chain is not changed, but )Tj +/TT10 1 Tf +11.3042 0 TD +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +( is set to the edit chain after the )Tj +/TT10 1 Tf +13.9795 0 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +( was performed.)Tj +-28.4849 -2.0667 TD +0.0489 Tw +[(Note:)-901.2(The edit chain will be changed if the current expression is no longer a)]TJ +3.3333 -1.2222 TD +0.1611 Tw +(part of the expression being edited, e.g., if the current expression is)Tj +/TT10 1 Tf +T* +0.1511 Tw +(... C\))Tj +/TT8 1 Tf +3.7517 0 TD +0.0633 Tw +[( and you perform )]TJ +/TT10 1 Tf +8.2831 0 TD +0.1511 Tw +(\(DELETE 1\))Tj +/TT8 1 Tf +6.1521 0 TD +0.0633 Tw +(, the tail, )Tj +/TT10 1 Tf +4.2354 0 TD +0 Tw +(\(C\))Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +(, will have been)Tj +-24.2226 -1.2889 TD +0.2767 Tw +(cut off. Similarly, if the current expression is )Tj +/TT10 1 Tf +22.0083 0 TD +0.6656 Tw +(\(CDR Y\))Tj +/TT8 1 Tf +4.8662 0 TD +0.2767 Tw +[( and you)]TJ +-26.8745 -1.2889 TD +0 Tw +(perform )Tj +/TT10 1 Tf +3.8818 0 TD +(\(REPLACE WITH \(CAR X\)\))Tj +/TT8 1 Tf +13.2021 0 TD +(.)Tj +-24.4173 -2.9556 TD +(Example: )Tj +/TT10 1 Tf +4.3809 0 TD +(\(DELETE -1\), \(DELETE COND 3\))Tj +/TT18 1 Tf +-0.3809 -2.0667 TD +[(Note:)-1139.5(If )]TJ +/TT10 1 Tf +4.372 0 TD +(@)Tj +/TT18 1 Tf +0.6001 0 TD +0.1778 Tw +[( is )]TJ +/TT10 1 Tf +1.5225 0 TD +0 Tw +(NIL)Tj +/TT18 1 Tf +1.8003 0 TD +0.1778 Tw +[( \(i.e., empty\), the corresponding operation is performed on the)]TJ +-4.9616 -1.2889 TD +0 Tw +(current edit chain.)Tj +ET +endstream +endobj +135 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +137 0 obj +<< +/Length 10096 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-37)Tj +/TT8 1 Tf +-31 60.6156 TD +0.0433 Tw +(For example, )Tj +/TT10 1 Tf +6.0828 0 TD +0.1044 Tw +(\(REPLACE WITH \(CAR X\)\))Tj +/TT8 1 Tf +13.5155 0 TD +0.0433 Tw +[( is equivalent to )]TJ +/TT10 1 Tf +7.4365 0 TD +0.1044 Tw +(\(: \(CAR)Tj +-27.0348 -1.2889 TD +0 Tw +(X\)\))Tj +/TT8 1 Tf +1.8003 0 TD +0.1933 Tw +[(. For added readability, )]TJ +/TT10 1 Tf +11.8187 0 TD +0 Tw +(HERE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1933 Tw +[( is also permitted, e.g., )]TJ +/TT10 1 Tf +11.1185 0 TD +0 Tw +(\(INSERT)Tj +-27.1379 -1.2889 TD +0.51 Tw +(\(PRINT X\) BEFORE HERE\))Tj +/TT8 1 Tf +14.7322 0 TD +0.2122 Tw +[( will insert )]TJ +/TT10 1 Tf +5.5908 0 TD +0.51 Tw +(\(PRINT X\))Tj +/TT8 1 Tf +5.9109 0 TD +0.2122 Tw +[( before the)]TJ +-26.2338 -1.2889 TD +0 Tw +(current expression \(but not change the edit chain\).)Tj +/TT18 1 Tf +-3.3333 -2 TD +(Note:)Tj +/TT10 1 Tf +3.3333 0 TD +(@)Tj +/TT18 1 Tf +0.6001 0 TD +0.08 Tw +[( does not have to specify a location within the current expression, i.e., it is)]TJ +-0.6001 -1.2889 TD +0 Tw +(perfectly legal to ascend to )Tj +/TT10 1 Tf +10.8413 0 TD +(INSERT)Tj +/TT18 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(REPLACE)Tj +/TT18 1 Tf +4.2007 0 TD +(, or )Tj +/TT10 1 Tf +1.583 0 TD +(DELETE)Tj +/TT8 1 Tf +-20.7256 -2.0667 TD +0.0656 Tw +(For example, )Tj +/TT10 1 Tf +6.1272 0 TD +0.1567 Tw +(\(INSERT \(RETURN\) AFTER ^ PROG -1\))Tj +/TT8 1 Tf +20.5866 0 TD +0.0656 Tw +[( will go to)]TJ +-26.7138 -1.2889 TD +0.0478 Tw +(the top, find the first )Tj +/TT10 1 Tf +9.5724 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +(, and insert a )Tj +/TT10 1 Tf +6.1311 0 TD +0 Tw +(\(RETURN\))Tj +/TT8 1 Tf +4.8008 0 TD +0.0478 Tw +[( at its end, and not)]TJ +-22.9046 -1.2889 TD +0 Tw +(change the current edit chain.)Tj +-7.3333 -2.8889 TD +(The )Tj +/TT10 1 Tf +1.9527 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5289 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +(, and )Tj +/TT10 1 Tf +2.5006 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +[( commands, commands, \(and consequently )]TJ +/TT10 1 Tf +19.5365 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5289 0 TD +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0289 Tw +(, and )Tj +/TT10 1 Tf +2.5006 0 TD +0 Tw +(CHANGE)Tj +/TT8 1 Tf +3.6006 0 TD +(\),)Tj +-40.7505 -1.2889 TD +0.0044 Tw +(all make special checks in )Tj +/TT14 1 Tf +11.6038 0 TD +0 Tw +(E)Tj +0.6029 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0007 Tc +0.0037 Tw +( thru )Tj +/TT14 1 Tf +2.4151 0 TD +0 Tc +0 Tw +(E)Tj +0.6004 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0002 Tc +0.0042 Tw +( for expressions of the form )Tj +/TT10 1 Tf +12.3841 0 TD +0 Tc +0.01 Tw +(\(## . )Tj +/TT14 1 Tf +3.6206 0 TD +0 Tw +(COMS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0003 Tc +0.0041 Tw +(. In this case,)Tj +-35.4274 -1.6222 TD +0 Tc +0.2844 Tw +(the expression used for inserting or replacing is a )Tj +/TT18 1 Tf +24.5458 0 TD +0 Tw +(copy)Tj +/TT8 1 Tf +1.8511 0 TD +0.2844 Tw +[( of the current expression after)]TJ +-26.3969 -1.2222 TD +0 Tw +(executing )Tj +/TT14 1 Tf +4.5819 0 TD +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0555 Tw +(, a list of edit commands \(the execution of )Tj +/TT14 1 Tf +19.1553 0 TD +0 Tw +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0556 Tw +[( does not change the current)]TJ +-28.538 -1.2889 TD +0.0378 Tw +[(edit chain\). For example, )]TJ +/TT10 1 Tf +11.6239 0 TD +0.09 Tw +(\(INSERT \(## F)Tj +/TT12 1 Tf +7.9813 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2878 0 TD +0.09 Tw +(COND -1 -1\) AFTER 3\))Tj +/TT8 1 Tf +12.3619 0 TD +0.0378 Tw +[( will make a copy of)]TJ +-32.2549 -1.2889 TD +0.1011 Tw +(the last form in the last clause of the next )Tj +/TT10 1 Tf +19.3075 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1011 Tw +(, and insert it after the third element of the)Tj +-21.7079 -1.2889 TD +0.1333 Tw +[(current expression. Note that this is not the same as )]TJ +/TT10 1 Tf +24.7328 0 TD +0.32 Tw +(\(INSERT F COND -1 \(## -1\))Tj +-24.7328 -1.2889 TD +0.1044 Tw +(AFTER 3\))Tj +/TT8 1 Tf +4.9052 0 TD +0.0433 Tw +(, which inserts four elements after the third element, namely )Tj +/TT10 1 Tf +27.3425 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5433 0 TD +0.1044 Tw +(COND, -1)Tj +/TT8 1 Tf +4.9052 0 TD +0.0433 Tw +(, and a)Tj +-38.2964 -1.2889 TD +0 Tw +(copy of the last element in the current expression.)Tj +/TT6 1 Tf +10 0 0 10 78 314.8 Tm +(Form Oriented Editing and the Role of UP)Tj +/TT8 1 Tf +9 0 0 9 78 299.14 Tm +(The )Tj +/TT10 1 Tf +1.9594 0 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0356 Tw +[( that is performed before )]TJ +/TT10 1 Tf +11.3838 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5356 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0356 Tw +(, and )Tj +/TT10 1 Tf +2.514 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.0356 Tw +[( commands \(and therefore in )]TJ +/TT10 1 Tf +13.2129 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5356 0 TD +(CHANGE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5356 0 TD +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +-45.0791 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.0229 0 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( commands after the location portion of the operation has been performed\) makes these)]TJ +-5.6235 -1.2889 TD +0.0833 Tw +[(operations form-oriented. For example, if you type )]TJ +/TT10 1 Tf +23.5929 0 TD +0.1989 Tw +(F SETQ)Tj +/TT8 1 Tf +3.7995 0 TD +0.0833 Tw +(, and then )Tj +/TT10 1 Tf +4.9121 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0833 Tw +(, or simply )Tj +/TT10 1 Tf +5.2368 0 TD +0 Tw +(\(DELETE)Tj +-41.1419 -1.2889 TD +(SETQ\))Tj +/TT8 1 Tf +3.0005 0 TD +0.0022 Tw +(, you will delete the entire )Tj +/TT10 1 Tf +11.7799 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +( expression, whereas )Tj +/TT10 1 Tf +9.4364 0 TD +0 Tc +0.0056 Tw +(\(DELETE X\))Tj +/TT8 1 Tf +6.0065 0 TD +0.0006 Tc +0.0016 Tw +( if )Tj +/TT10 1 Tf +1.1285 0 TD +0 Tc +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0001 Tc +0.0021 Tw +( is a variable, deletes just)Tj +-34.3523 -1.2889 TD +0 Tc +0.03 Tw +(the variable )Tj +/TT10 1 Tf +5.5214 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[(. In both cases, the operation is performed on the corresponding )]TJ +/TT18 1 Tf +29.1134 0 TD +0 Tw +(form)Tj +/TT8 1 Tf +1.8887 0 TD +0.03 Tw +(, and in both cases)Tj +-37.1236 -1.2889 TD +0.0289 Tw +[(is probably what you intended. Similarly, if you type )]TJ +/TT10 1 Tf +24.222 0 TD +0.07 Tw +(\(INSERT \(RETURN Y\) BEFORE SETQ\))Tj +/TT8 1 Tf +18.883 0 TD +0.0289 Tw +(, you)Tj +-43.105 -1.2889 TD +0.0078 Tw +(mean before the )Tj +/TT10 1 Tf +7.3895 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0078 Tw +[( expression, not before the atom )]TJ +/TT10 1 Tf +14.4148 0 TD +0 Tw +(SETQ.)Tj +/TT8 1 Tf +3.0005 0 TD +0.0078 Tw +[( A consequent of this procedure is that a)]TJ +-27.2053 -1.2889 TD +0.0478 Tw +(pattern of the form )Tj +/TT10 1 Tf +8.8234 0 TD +0.1156 Tw +(\(SETQ Y --\))Tj +/TT8 1 Tf +6.8322 0 TD +0.0478 Tw +[( can be viewed as simply an elaboration and further refinement of)]TJ +-15.6556 -1.2889 TD +0.1411 Tw +(the pattern )Tj +/TT10 1 Tf +5.3789 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.1411 Tw +[(. Thus )]TJ +/TT10 1 Tf +3.645 0 TD +0.3389 Tw +(\(INSERT \(RETURN Y\) BEFORE SETQ\))Tj +/TT8 1 Tf +19.9586 0 TD +0.1411 Tw +[( and )]TJ +/TT10 1 Tf +2.4751 0 TD +0.3389 Tw +(\(INSERT \(RETURN Y\))Tj +-33.858 -1.2889 TD +0.0811 Tw +(BEFORE \(SETQ Y --\)\))Tj +/TT8 1 Tf +11.6452 0 TD +0.0344 Tw +[( perform the same operation \(assuming the next )]TJ +/TT10 1 Tf +21.7326 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( is of the form )]TJ +/TT10 1 Tf +6.5599 0 TD +0 Tw +(\(SETQ)Tj +-42.3381 -1.2889 TD +0.4078 Tw +(Y --\)\))Tj +/TT8 1 Tf +4.0084 0 TD +0.17 Tw +[( and, in fact, this is one of the motivations behind making the current expression after )]TJ +/TT10 1 Tf +40.7273 0 TD +0 Tw +(F)Tj +-44.7357 -1.2889 TD +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(F \(SETQ Y --\))Tj +/TT8 1 Tf +7.8013 0 TD +( be the same.)Tj +-9.3112 -2.0667 TD +0.2189 Tw +[(Note:)-901.2(There is some ambiguity in )]TJ +/TT10 1 Tf +16.7046 0 TD +0 Tw +(\(INSERT)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.4689 0 TD +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.4689 0 TD +(AFTER)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.4689 0 TD +(FUNCTIONNAME)Tj +/TT10 1 Tf +7.2012 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.2189 Tw +(, as you)Tj +-32.1808 -1.2889 TD +0.0811 Tw +(might mean make )Tj +/TT14 1 Tf +8.4933 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0811 Tw +[( be the functions first argument. Similarly, you cannot)]TJ +-10.8937 -1.2889 TD +0 Tw +(write )Tj +/TT10 1 Tf +2.8441 0 TD +0.6444 Tw +(\(REPLACE SETQ WITH SETQQ\))Tj +/TT8 1 Tf +16.9358 0 TD +0.2689 Tw +[( meaning change the name of the)]TJ +-19.7799 -1.2889 TD +0.0622 Tw +[(function. You must in these cases write )]TJ +/TT10 1 Tf +18.2654 0 TD +0 Tw +(\(INSERT)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.3122 0 TD +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3122 0 TD +(AFTER)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3122 0 TD +(FUNCTIONNAME)Tj +/TT10 1 Tf +-28.8036 -1.2889 TD +(1\))Tj +/TT8 1 Tf +1.2002 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(\(REPLACE SETQ 1 WITH SETQQ\))Tj +/TT8 1 Tf +16.2026 0 TD +(.)Tj +-26.5124 -2.0667 TD +0.0556 Tw +(Occasionally, however, you may have a data structure in which no special significance or meaning is)Tj +0 -1.2222 TD +0.0478 Tw +(attached to the position of an atom in a list, as Interlisp attaches to atoms that appear as )Tj +/TT10 1 Tf +39.6813 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0478 Tw +[( of a list,)]TJ +-41.4816 -1.2889 TD +0.0933 Tw +[(versus those appearing elsewhere in a list. In general, you may not even )]TJ +/TT18 1 Tf +33.6099 0 TD +0 Tw +(know)Tj +/TT8 1 Tf +2.166 0 TD +0.0933 Tw +[( whether a particular)]TJ +-35.7759 -1.2222 TD +0.06 Tw +[(atom is at the head of a list or not. Thus, when you write )]TJ +/TT10 1 Tf +26.3399 0 TD +0 Tw +(\(INSERT)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.31 0 TD +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.31 0 TD +0.1456 Tw +(BEFORE FOO\))Tj +/TT8 1 Tf +6.7466 0 TD +0.06 Tw +(, you mean)Tj +-40.3077 -1.2889 TD +0.1256 Tw +(before the atom )Tj +/TT10 1 Tf +7.5539 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1256 Tw +(, whether or not it is )Tj +/TT10 1 Tf +9.9076 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1256 Tw +[( of a list. By setting the variable )]TJ +/TT10 1 Tf +15.4537 0 TD +0 Tw +(UPFINDFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.1256 Tw +[( to )]TJ +/TT10 1 Tf +1.6232 0 TD +0 Tw +(NIL)Tj +ET +endstream +endobj +138 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +140 0 obj +<< +/Length 7327 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-38)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(\(initially )Tj +/TT10 1 Tf +4.1224 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.12 Tw +(\), you can suppress the implicit )Tj +/TT10 1 Tf +14.7898 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.12 Tw +[( that follows searches for atoms, and thus achieve the)]TJ +-20.7126 -1.2889 TD +0.0567 Tw +[(desired effect. With )]TJ +/TT10 1 Tf +9.3595 0 TD +0.1378 Tw +(UPFINDFLG = NIL)Tj +/TT8 1 Tf +9.277 0 TD +0.0567 Tw +(, following )Tj +/TT10 1 Tf +5.1334 0 TD +0.1378 Tw +(F FOO)Tj +/TT8 1 Tf +3.1383 0 TD +0.0567 Tw +(, for example, the current expression will)Tj +-26.9081 -1.2889 TD +0.03 Tw +(be the atom )Tj +/TT10 1 Tf +5.5143 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +[(. In this case, the )]TJ +/TT10 1 Tf +7.9559 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.53 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +(, and )Tj +/TT10 1 Tf +2.5029 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[( operations will operate with respect to the atom )]TJ +/TT10 1 Tf +21.9385 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +[(. If)]TJ +-43.8424 -1.2889 TD +0 Tw +(you intend the operation to refer to the list which )Tj +/TT10 1 Tf +22.0068 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( heads, use the pattern )Tj +/TT10 1 Tf +10.1982 0 TD +(\(FOO --\))Tj +/TT8 1 Tf +4.8008 0 TD +(instead .)Tj +/TT6 1 Tf +10 0 0 10 126 506.8 Tm +(Extract and Embed)Tj +/TT8 1 Tf +9 0 0 9 126 491.14 Tm +(Extraction involves replacing the current expression with one of its subexpressions \(from any depth\).)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +-0.0002 Tc +0.0002 Tw +(\(XTR . @\))Tj +/TT4 1 Tf +10 0 0 10 198.6009 468.8 Tm +0 Tc +0 Tw +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 468.8 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.06 Tw +(Replaces the original current expression with the expression that is current after performing)Tj +/TT10 1 Tf +0 -1.2222 TD +0.0744 Tw +(\(LCL . @\))Tj +/TT8 1 Tf +5.5498 0 TD +0.0311 Tw +[( \(see warning about )]TJ +/TT10 1 Tf +9.1078 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +[( above\). If the current expression after )]TJ +/TT10 1 Tf +17.5262 0 TD +0.0744 Tw +(\(LCL . @\))Tj +/TT8 1 Tf +-35.7844 -1.2889 TD +0 Tw +(is a )Tj +/TT18 1 Tf +1.7148 0 TD +(tail)Tj +/TT8 1 Tf +1.3325 0 TD +( of a higher expression, its first element is used.)Tj +-3.0474 -2.8889 TD +0.0267 Tw +(If the extracted expression is a list, then after )Tj +/TT10 1 Tf +20.1594 0 TD +0 Tw +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0267 Tw +[( has finished, the current expression will be)]TJ +-21.9597 -1.2889 TD +0.1389 Tw +[(that list. If the extracted expression is not a list, the new current expression will be a tail)]TJ +0 -1.2222 TD +0 Tw +(whose first element is that non-list.)Tj +0 -2.8889 TD +0.1889 Tw +(For example, if the current expression is )Tj +/TT10 1 Tf +19.2553 0 TD +0.4544 Tw +(\(COND \(\(NULL X\) \(PRINT Y\)\)\), \(XTR)Tj +-19.2553 -1.2889 TD +0 Tw +(PRINT\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +(, or )Tj +/TT10 1 Tf +1.8554 0 TD +0.1967 Tw +(\(XTR 2 2\))Tj +/TT8 1 Tf +5.7942 0 TD +0.0822 Tw +[( will replace the )]TJ +/TT10 1 Tf +7.6121 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[( by the )]TJ +/TT10 1 Tf +3.4933 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0822 Tw +[(. The current expression after)]TJ +-27.7564 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6372 0 TD +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +( would be )Tj +/TT10 1 Tf +4.667 0 TD +(\(PRINT Y\))Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-13.5054 -2.9556 TD +0.0167 Tw +(If the current expression is )Tj +/TT10 1 Tf +12.0662 0 TD +0.0389 Tw +(\(COND \(\(NULL X\) Y\) \(T Z\)\))Tj +/TT8 1 Tf +15.1969 0 TD +0.0167 Tw +(, then )Tj +/TT10 1 Tf +2.7526 0 TD +0.0389 Tw +(\(XTR Y\))Tj +/TT8 1 Tf +4.2396 0 TD +0.0167 Tw +[( will replace the)]TJ +/TT10 1 Tf +-34.2553 -1.2889 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( with )]TJ +/TT10 1 Tf +2.571 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +(, even though the current expression after performing )Tj +/TT10 1 Tf +24.1438 0 TD +0.0467 Tw +(\(LCL Y\))Tj +/TT8 1 Tf +4.2473 0 TD +0.0189 Tw +[( is )]TJ +/TT10 1 Tf +1.2526 0 TD +0.0467 Tw +(... Y\))Tj +/TT8 1 Tf +3.6473 0 TD +0.0189 Tw +[(. The)]TJ +-38.8625 -1.2889 TD +0 Tw +(current expression after the )Tj +/TT10 1 Tf +12.3813 0 TD +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +( would be )Tj +/TT10 1 Tf +4.667 0 TD +(... Y)Tj +/TT8 1 Tf +3.0005 0 TD +( followed by whatever followed the )Tj +/TT10 1 Tf +16.0181 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-40.2676 -2.9556 TD +0.1344 Tw +(If the current expression )Tj +/TT18 1 Tf +11.5558 0 TD +0 Tw +(initially)Tj +/TT8 1 Tf +3.2222 0 TD +0.1344 Tw +[( is a tail, extraction works exactly the same as though the)]TJ +-14.778 -1.2222 TD +0.0956 Tw +[(current expression were the first element in that tail. Thus if the current expression is )]TJ +/TT10 1 Tf +39.5265 0 TD +0 Tw +(...)Tj +-39.5265 -1.2889 TD +0.1744 Tw +(\(COND \(\(NULL X\) \(PRINT Y\)\)\) \(RETURN Z\)\))Tj +/TT8 1 Tf +24.4505 0 TD +0.0722 Tw +(, then )Tj +/TT10 1 Tf +2.8637 0 TD +0.1744 Tw +(\(XTR PRINT\))Tj +/TT8 1 Tf +6.7755 0 TD +0.0722 Tw +[( will replace the)]TJ +/TT10 1 Tf +-34.0897 -1.2889 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( by the )Tj +/TT10 1 Tf +3.2466 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(, leaving )Tj +/TT10 1 Tf +4.0142 0 TD +(\(PRINT Y\))Tj +/TT8 1 Tf +5.4009 0 TD +( as the current expression.)Tj +-22.0625 -2.0667 TD +(The extract command can also incorporate a location specification:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(EXTRACT @)Tj +6 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( FROM . @)Tj +5.4 -0.3333 TD +(2)Tj +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 268.8008 172.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 172.26 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Performs )Tj +/TT10 1 Tf +4.3286 0 TD +0.0489 Tw +(\(LC . @)Tj +4.3003 -0.3333 TD +0 Tw +(2)Tj +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( and then )]TJ +/TT10 1 Tf +4.4721 0 TD +0.0489 Tw +(\(XTR . @)Tj +4.8978 -0.3333 TD +0 Tw +(1)Tj +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( \(see warning about )]TJ +/TT10 1 Tf +9.0634 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.02 Tw +[(\). The current edit)]TJ +-33.063 -1.6222 TD +0 Tw +(chain is not changed, but )Tj +/TT10 1 Tf +11.3042 0 TD +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +( is set to the edit chain after the )Tj +/TT10 1 Tf +13.9795 0 TD +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +( was performed.)Tj +-26.6846 -2.0667 TD +(Note:)Tj +/TT10 1 Tf +3.3333 0 TD +(@)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( is the )Tj +/TT18 1 Tf +2.8521 0 TD +(segment)Tj +/TT8 1 Tf +3.3345 0 TD +( between )Tj +/TT10 1 Tf +4.2324 0 TD +(EXTRACT)Tj +/TT8 1 Tf +4.2007 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-27.7462 -3.2889 TD +0.0467 Tw +[(For example: If the current expression is )]TJ +/TT10 1 Tf +18.6023 0 TD +0.1111 Tw +(\(PRINT \(COND \(\(NULL X\) Y\) \(T Z\)\)\))Tj +/TT8 1 Tf +20.4699 0 TD +0.0467 Tw +[( then)]TJ +-39.0722 -1.2889 TD +0 Tw +(following )Tj +/TT10 1 Tf +4.8045 0 TD +0.6833 Tw +(\(EXTRACT Y FROM COND\))Tj +/TT8 1 Tf +14.6521 0 TD +0.2844 Tw +(, the current expression will be )Tj +/TT10 1 Tf +15.5441 0 TD +0.6833 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +6.0842 0 TD +0 Tw +(.)Tj +/TT10 1 Tf +-41.0848 -1.2889 TD +0.0478 Tw +(\(EXTRACT 2 -1 FROM COND\))Tj +/TT8 1 Tf +14.5935 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.52 0 TD +0.0478 Tw +(\(EXTRACT Y FROM 2\))Tj +/TT8 1 Tf +10.9451 0 TD +0.02 Tw +(, and )Tj +/TT10 1 Tf +2.4829 0 TD +0.0478 Tw +(\(EXTRACT 2 -1 FROM 2\))Tj +/TT8 1 Tf +-28.5414 -1.2889 TD +0 Tw +(will all produce the same result.)Tj +ET +endstream +endobj +141 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +143 0 obj +<< +/Length 6824 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-39)Tj +/TT8 1 Tf +-42.3333 60.6156 TD +0.0722 Tw +(While extracting replaces the current expression by a subexpression, embedding replaces the current)Tj +0 -1.2222 TD +0 Tw +(expression with one containing )Tj +/TT18 1 Tf +14.0772 0 TD +(it)Tj +/TT8 1 Tf +0.6108 0 TD +( as a subexpression.)Tj +/TT10 1 Tf +-12.0213 -2.4822 TD +(\(MBD)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(E)Tj +0.6 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... E)Tj +3.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 185.2517 536.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 536.2 Tm +([Editor Command])Tj +/TT10 1 Tf +-32.9222 -3.0667 TD +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.1144 Tw +[( substitutes the current expression for all instances of the atom )]TJ +/TT10 1 Tf +29.065 0 TD +0 Tw +(&)Tj +/TT8 1 Tf +0.6001 0 TD +0.1144 Tw +[( in )]TJ +/TT14 1 Tf +1.6019 0 TD +0 Tw +(E)Tj +0.6037 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.2756 Tw +[( ... )]TJ +/TT14 1 Tf +3.5516 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1144 Tw +(, and)Tj +-39.0222 -1.6222 TD +0.0878 Tw +[(replaces the current expression with the result of that substitution. As with )]TJ +/TT10 1 Tf +34.6841 0 TD +0 Tw +(SUBST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0878 Tw +(, a fresh)Tj +-37.6846 -1.2889 TD +0 Tw +(copy is used for each substitution.)Tj +0 -2.8889 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(&)Tj +/TT8 1 Tf +0.6001 0 TD +( does not appear in )Tj +/TT14 1 Tf +8.7129 0 TD +(E)Tj +0.6004 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(, the )Tj +/TT10 1 Tf +2.1372 0 TD +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +( is interpreted as )Tj +/TT10 1 Tf +7.603 0 TD +(\(MBD \()Tj +/TT14 1 Tf +3.6006 0 TD +(E)Tj +0.6 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(E)Tj +0.5995 -0.3333 TD +(M)Tj +/TT12 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(&\)\))Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-38.2247 -3.2889 TD +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +( leaves the edit chain so that the larger expression is the new current expression.)Tj +-1.8003 -2.9556 TD +(Examples:)Tj +0 -2.8889 TD +0.0167 Tw +(If the current expression is )Tj +/TT10 1 Tf +12.0662 0 TD +0.04 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.4409 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5167 0 TD +0.04 Tw +(\(MBD \(COND \(\(NULL X\) &\) \(\(NULL)Tj +/TT12 1 Tf +18.2029 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2667 0 TD +0.04 Tw +(\(CAR Y\)\))Tj +-36.4934 -1.2889 TD +0.4156 Tw +(& \(GO LP\)\)\)\))Tj +/TT8 1 Tf +8.0323 0 TD +0.1733 Tw +[( would replace )]TJ +/TT10 1 Tf +7.3437 0 TD +0.4156 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.8164 0 TD +0.1733 Tw +[( with )]TJ +/TT10 1 Tf +2.8799 0 TD +0.4156 Tw +(\(COND \(\(NULL X\) \(PRINT Y\)\))Tj +-24.0723 -1.2889 TD +0 Tw +(\(\(NULL \(CAR Y\)\) \(PRINT Y\) \(GO LP\)\)\))Tj +/TT8 1 Tf +21.0034 0 TD +(.)Tj +-21.0034 -2.9556 TD +0.0033 Tw +(If the current expression is )Tj +/TT10 1 Tf +11.9996 0 TD +0.0078 Tw +(\(RETURN X\))Tj +/TT8 1 Tf +6.0088 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5033 0 TD +0.0078 Tw +(\(MBD \(PRINT Y\) \(AND FLG &\)\))Tj +/TT8 1 Tf +16.2415 0 TD +0.0002 Tc +0.0031 Tw +( would replace)Tj +-34.7532 -1.2889 TD +0 Tc +0.0222 Tw +(it with the )Tj +/TT18 1 Tf +4.8543 0 TD +0 Tw +(two)Tj +/TT8 1 Tf +1.499 0 TD +0.0222 Tw +[( expressions )]TJ +/TT10 1 Tf +5.7051 0 TD +0.0533 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.4542 0 TD +0.0222 Tw +[( and )]TJ +/TT10 1 Tf +2.2373 0 TD +0.0533 Tw +(\(AND FLG \(RETURN X\)\),)Tj +/TT8 1 Tf +12.7621 0 TD +0.0222 Tw +[( i.e., if the )]TJ +/TT10 1 Tf +4.6201 0 TD +0 Tw +(\(RETURN)Tj +-37.1321 -1.2889 TD +(X\))Tj +/TT8 1 Tf +1.2002 0 TD +0.1022 Tw +[( appeared in the cond clause )]TJ +/TT10 1 Tf +13.4629 0 TD +0.2444 Tw +(\(T \(RETURN X\)\))Tj +/TT8 1 Tf +8.8903 0 TD +0.1022 Tw +(, after the )Tj +/TT10 1 Tf +4.7271 0 TD +0 Tw +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.1022 Tw +(, the clause would be )Tj +/TT10 1 Tf +10.056 0 TD +0 Tw +(\(T)Tj +-40.1368 -1.2889 TD +(\(PRINT Y\) \(AND FLG \(RETURN X\)\)\))Tj +/TT8 1 Tf +18.603 0 TD +(.)Tj +-18.603 -2.9556 TD +0.0478 Tw +(If the current expression is )Tj +/TT10 1 Tf +12.2218 0 TD +0.1144 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.5153 0 TD +0.0478 Tw +(, then )Tj +/TT10 1 Tf +2.8148 0 TD +0.1144 Tw +(\(MBD SETQ X\))Tj +/TT8 1 Tf +7.4301 0 TD +0.0478 Tw +[( will replace it with )]TJ +/TT10 1 Tf +9.0353 0 TD +0.1144 Tw +(\(SETQ X)Tj +-37.0173 -1.2889 TD +0.1189 Tw +(\(PRINT Y\)\))Tj +/TT8 1 Tf +6.1199 0 TD +0.05 Tw +[(. If the current expression is )]TJ +/TT10 1 Tf +13.0829 0 TD +0.1189 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.5198 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.55 0 TD +0.1189 Tw +(\(MBD RETURN\))Tj +/TT8 1 Tf +7.3201 0 TD +0.05 Tw +[( will replace it with)]TJ +/TT10 1 Tf +-32.5926 -1.2889 TD +0 Tw +(\(RETURN \(PRINT Y\)\))Tj +/TT8 1 Tf +10.8018 0 TD +(.)Tj +-10.8018 -2.9556 TD +0.0922 Tw +(If the current expression )Tj +/TT18 1 Tf +11.387 0 TD +0 Tw +(initially)Tj +/TT8 1 Tf +3.2222 0 TD +0.0922 Tw +[( is a tail, embedding works exactly the same as though the)]TJ +-14.6091 -1.2222 TD +0.0033 Tw +(current expression were the first element in that tail. Thus if the current expression were )Tj +/TT10 1 Tf +39.5231 0 TD +0 Tw +(...)Tj +-39.5231 -1.2889 TD +0.2811 Tw +(\(PRINT Y\) \(PRINT Z\)\))Tj +/TT8 1 Tf +12.8453 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.6178 0 TD +0.2811 Tw +(\(MBD SETQ X\))Tj +/TT8 1 Tf +7.7634 0 TD +0.1178 Tw +[( would replace )]TJ +/TT10 1 Tf +7.1771 0 TD +0.2811 Tw +(\(PRINT Y\))Tj +/TT8 1 Tf +5.682 0 TD +0.1178 Tw +[( with )]TJ +/TT10 1 Tf +2.7688 0 TD +0.2811 Tw +(\(SETQ X)Tj +-36.8543 -1.2222 TD +0 Tw +(\(PRINT Y\)\).)Tj +/TT8 1 Tf +0 -2.9556 TD +(The embed command can also incorporate a location specification:)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(EMBED @ IN . )Tj +/TT14 1 Tf +8.4008 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 188.4088 130.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 130.66 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(@)Tj +/TT8 1 Tf +0.6001 0 TD +0.1533 Tw +[( is the segment between )]TJ +/TT10 1 Tf +11.5801 0 TD +0 Tw +(EMBED)Tj +/TT8 1 Tf +3.0005 0 TD +0.1533 Tw +[( and )]TJ +/TT10 1 Tf +2.4995 0 TD +0 Tw +(IN)Tj +/TT8 1 Tf +1.2002 0 TD +0.1533 Tw +[(.\) Does )]TJ +/TT10 1 Tf +4.0157 0 TD +0.3689 Tw +(\(LC . @\))Tj +/TT8 1 Tf +5.5386 0 TD +0.1533 Tw +[( and then )]TJ +/TT10 1 Tf +4.8721 0 TD +0.3689 Tw +(\(MBD .)Tj +/TT12 1 Tf +3.9695 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.4033 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1533 Tw +[( \(see)]TJ +-39.2128 -1.2889 TD +0.0467 Tw +(warning about )Tj +/TT10 1 Tf +6.8619 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0467 Tw +[(\). Edit chain is not changed, but )]TJ +/TT10 1 Tf +14.8494 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.0467 Tw +[( is set to the edit chain after)]TJ +-28.9125 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6372 0 TD +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +( was performed.)Tj +-3.4375 -2.9556 TD +(Examples: )Tj +/TT10 1 Tf +4.8458 0 TD +0.0989 Tw +(\(EMBED PRINT IN SETQ X\), \(EMBED 3 2 IN RETURN\), \(EMBED COND)Tj +-4.8458 -1.2889 TD +0 Tw +(3 1 IN \(OR & \(NULL X\)\)\))Tj +/TT8 1 Tf +13.8022 0 TD +(.)Tj +ET +endstream +endobj +144 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +146 0 obj +<< +/Length 6088 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-40)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 162 569.54 Tm +(WITH)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +[( can be used for )]TJ +/TT10 1 Tf +7.3043 0 TD +0 Tw +(IN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0211 Tw +(, and )Tj +/TT10 1 Tf +2.4851 0 TD +0 Tw +(SURROUND)Tj +/TT8 1 Tf +4.8008 0 TD +0.0211 Tw +[( can be used for )]TJ +/TT10 1 Tf +7.3043 0 TD +0 Tw +(EMBED)Tj +/TT8 1 Tf +3.0005 0 TD +0.0211 Tw +(, e.g., )Tj +/TT10 1 Tf +2.5774 0 TD +0.0522 Tw +(\(SURROUND NUMBERP)Tj +-31.0729 -1.2889 TD +0 Tw +(WITH \(AND & \(MINUSP X\)\)\))Tj +/TT8 1 Tf +14.4023 0 TD +(.)Tj +/TT10 1 Tf +-15.7357 -2.5489 TD +(EDITEMBEDTOKEN)Tj +/TT4 1 Tf +10 0 0 10 225.6 535 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 535 Tm +([Variable])Tj +-36.9344 -2.7333 TD +0.0211 Tw +(The special atom used in the )Tj +/TT10 1 Tf +12.9621 0 TD +0 Tw +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.0211 Tw +[( and )]TJ +/TT10 1 Tf +2.2351 0 TD +0 Tw +(EMBED)Tj +/TT8 1 Tf +3.0005 0 TD +0.0211 Tw +[( commands is the value of this variable, initially)]TJ +/TT10 1 Tf +-19.998 -1.2889 TD +0 Tw +(&)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 126 470.86 Tm +(The MOVE Command)Tj +/TT8 1 Tf +9 0 0 9 126 455.2 Tm +(The )Tj +/TT10 1 Tf +1.9749 0 TD +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( command allows you to specify the expression to be moved, the place it is to be moved to,)]TJ +-4.3753 -1.2889 TD +0 Tw +(and the operation to be performed there, e.g., insert it before, insert it after, replace, etc.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(MOVE @)Tj +4.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( TO)Tj +/TT6 1 Tf +10 0 0 10 209.4 421.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.1783 421.26 Tm +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +( . @)Tj +2.3999 -0.3333 TD +(2)Tj +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 260.7809 421.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 421.26 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(@)Tj +0.6003 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1533 Tw +[( is the segment between )]TJ +/TT10 1 Tf +11.5801 0 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1533 Tw +[( and )]TJ +/TT10 1 Tf +2.4995 0 TD +0 Tw +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +0.1533 Tw +(.\) )Tj +/TT14 1 Tf +1.3897 0 TD +0 Tw +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.1533 Tw +[( is )]TJ +/TT10 1 Tf +1.5215 0 TD +0 Tw +(BEFORE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6533 0 TD +(AFTER)Tj +/TT8 1 Tf +3.0005 0 TD +0.1533 Tw +(, or the name of a list)Tj +-31.1795 -1.6222 TD +0.0111 Tw +(command, e.g., )Tj +/TT10 1 Tf +7.0056 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5111 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[(, etc. Performs )]TJ +/TT10 1 Tf +6.8521 0 TD +0.0278 Tw +(\(LC . @)Tj +4.2588 -0.3333 TD +0 Tw +(1)Tj +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( \(see warning about )]TJ +/TT10 1 Tf +9.0278 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0111 Tw +(\), and obtains the)Tj +-33.6563 -1.6222 TD +0 Tw +(current expression there \(or its first element, if it is a tail\), which we will call )Tj +/TT14 1 Tf +33.8013 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +( then)Tj +-39.1021 -1.2889 TD +0.02 Tw +(goes back to the original edit chain, performs )Tj +/TT10 1 Tf +20.3412 0 TD +0.0489 Tw +(\(LC . @)Tj +4.2988 -0.3333 TD +0 Tw +(2)Tj +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( followed by )]TJ +/TT10 1 Tf +5.85 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.649 0 TD +(EXPR)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( \(setting)]TJ +-37.74 -1.6222 TD +0.1456 Tw +(an internal flag so )Tj +/TT14 1 Tf +8.7604 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1456 Tw +[( is not copied\), then goes back to )]TJ +/TT10 1 Tf +15.7875 0 TD +0 Tw +(@)Tj +0.5994 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1456 Tw +[( and deletes )]TJ +/TT14 1 Tf +5.9684 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1455 Tw +[(. The edit)]TJ +-36.5166 -1.6222 TD +0 Tw +(chain is not changed. )Tj +/TT10 1 Tf +9.8218 0 TD +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +( is set to the edit chain after )Tj +/TT10 1 Tf +12.3423 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(EXPR)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( was performed.)Tj +-31.7656 -2.9556 TD +(If )Tj +/TT10 1 Tf +0.9699 0 TD +(@)Tj +0.6001 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.05 Tw +[( specifies a location )]TJ +/TT18 1 Tf +8.9915 0 TD +(inside of the expression to be moved,)Tj +/TT8 1 Tf +14.8474 0 TD +[( a message is printed and an error)]TJ +-26.0089 -1.6222 TD +0.16 Tw +(is generated, e.g., )Tj +/TT10 1 Tf +8.3872 0 TD +0.3844 Tw +(\(MOVE 2 TO AFTER X\))Tj +/TT8 1 Tf +12.9396 0 TD +0.16 Tw +(, where )Tj +/TT10 1 Tf +3.839 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.16 Tw +[( is contained inside of the second)]TJ +-25.766 -1.2889 TD +0 Tw +(element.)Tj +0 -2.8889 TD +0.0544 Tw +(For example, if the current expression is )Tj +/TT10 1 Tf +18.3142 0 TD +0.1322 Tw +(\(A B C D\))Tj +/TT8 1 Tf +5.7975 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5544 0 TD +0.1322 Tw +(\(MOVE 2 TO AFTER 4\))Tj +/TT8 1 Tf +11.9307 0 TD +0.0544 Tw +[( will make)]TJ +-36.597 -1.2889 TD +0.0367 Tw +(the new current expression be )Tj +/TT10 1 Tf +13.7087 0 TD +0.0878 Tw +(\(A C D B\))Tj +/TT8 1 Tf +5.6642 0 TD +0.0367 Tw +[(. Note that )]TJ +/TT10 1 Tf +5.3132 0 TD +0 Tw +(4)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( was executed as of the original edit)]TJ +-25.2862 -1.2889 TD +0 Tw +(chain, and that the second element had not yet been removed.)Tj +0 -2.8889 TD +0.1444 Tw +(As the following examples taken from actual editing will show, the )Tj +/TT10 1 Tf +31.501 0 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1444 Tw +[( command is an)]TJ +-33.9014 -1.2889 TD +0 Tw +(extremely versatile and powerful feature of the editor.)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*?)Tj +0 -1 TD +(\(PROG \(\(L L\)\) \(EDLOC \(CDDR C\)\) \(RETURN \(CAR L\)\)\))Tj +T* +(*\(MOVE 3 TO : CAR\))Tj +T* +(*?)Tj +T* +(\(PROG \(\(L L\)\) \(RETURN \(EDLOC \(CDDR C\)\)\)\))Tj +T* +(*)Tj +T* +(*P)Tj +T* +(... \(SELECTQ OBJPR & &\) \(RETURN &\) LP2 \(COND & &\)\))Tj +T* +(*\(MOVE 2 TO N 1\))Tj +T* +(*P)Tj +T* +(... \(SELECTQ OBJPR & & &\) LP2 \(COND & &\)\))Tj +0 -2.7778 TD +(*)Tj +0 -1 TD +(*P)Tj +ET +endstream +endobj +147 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +149 0 obj +<< +/Length 3727 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-41)Tj +/TT10 1 Tf +-29 60.6822 TD +(\(OR \(EQ X LASTAIL\) \(NOT &\) \(AND & & &\)\))Tj +0 -1 TD +(*\(MOVE 4 TO AFTER \(BELOW COND\)\))Tj +T* +(*P)Tj +T* +(\(OR \(EQ X LASTAIL\) \(NOT &\)\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(... \(& &\) \(AND & & &\) \(T & &\)\))Tj +T* +(*)Tj +0 -1.7778 TD +(*P)Tj +0 -1 TD +(\(\(NULL X\) **COMMENT** \(COND & &\)\))Tj +T* +(*\(-3 \(GO NXT])Tj +0 -1.0667 TD +(*\(MOVE 4 TO N \()Tj +/TT19 1 Tf +9.0015 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( PROG\)\))Tj +-9.9883 -1 TD +(*P)Tj +T* +(\(\(NULL X\) **COMMENT** \(GO NXT\)\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(\(PROG \(&\) **COMMENT** \(COND & & &\) \(COND & & &\) \(COND & &\)\))Tj +T* +(*\(INSERT NXT BEFORE -1\))Tj +T* +(*P)Tj +T* +(\(PROG \(&\) **COMMENT** \(COND & & &\) \(COND & & &\) NXT \(COND & &\)\))Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.08 Tw +(In the last example, you could have added the )Tj +/TT10 1 Tf +21.3406 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.08 Tw +[( label )]TJ +/TT10 1 Tf +2.7743 0 TD +0 Tw +(NXT)Tj +/TT8 1 Tf +1.8003 0 TD +0.08 Tw +[( and moved the )]TJ +/TT10 1 Tf +7.4836 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.08 Tw +[( in one)]TJ +-38.1995 -1.2889 TD +0.0733 Tw +(operation by performing )Tj +/TT10 1 Tf +11.4065 0 TD +0.1767 Tw +(\(MOVE 4 TO N \()Tj +/TT19 1 Tf +9.108 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.1767 Tw +[( PROG\) \(N NXT\)\))]TJ +/TT8 1 Tf +9.5315 0 TD +0.0733 Tw +[(. Similarly, in the next)]TJ +-31.0328 -1.2889 TD +0.0667 Tw +(example, in the course of specifying )Tj +/TT10 1 Tf +16.4859 0 TD +0 Tw +(@)Tj +0.6018 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0667 Tw +(, the location where the expression was to be moved)Tj +-17.6878 -1.6222 TD +0.0678 Tw +(to, you also perform a structure modification, via )Tj +/TT10 1 Tf +22.5066 0 TD +0.1622 Tw +(\(N \(T\)\))Tj +/TT8 1 Tf +4.3629 0 TD +0.0678 Tw +(, thus creating the structure that)Tj +-26.8695 -1.2889 TD +0 Tw +(will receive the expression being moved.)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*P)Tj +0 -1 TD +(\(\(CDR &\) **COMMENT** \(SETQ CL &\) \(EDITSMASH CL & &\)\))Tj +T* +(*MOVE 4 TO N 0 \(N \(T\)\) -1])Tj +T* +(*P)Tj +T* +(\(\(CDR &\) **COMMENT** \(SETQ CL &\)\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(*\(T \(EDITSMASH CL & &\)\))Tj +T* +(*)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(If )Tj +/TT10 1 Tf +0.9233 0 TD +(@)Tj +0.6001 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0008 Tc +0.0025 Tw +( is )Tj +/TT10 1 Tf +1.2215 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0033 Tw +(, or )Tj +/TT10 1 Tf +1.6976 0 TD +0 Tw +(\(HERE\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0033 Tw +(, the current position specifies where the operation is to take place. In)Tj +-10.4433 -1.6222 TD +0.0633 Tw +(this case, )Tj +/TT10 1 Tf +4.3464 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.0633 Tw +[( is set to where the expression that was moved was originally located, i.e.,)]TJ +/TT10 1 Tf +-7.947 -1.2889 TD +0 Tw +(@)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(. For example:)Tj +/TT10 1 Tf +8.1333 -2.3333 TD +(*P)Tj +0 -1 TD +(\(TENEX\))Tj +0 -1.0667 TD +(*\(MOVE )Tj +/TT19 1 Tf +4.2007 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +( F APPLY TO N HERE\))Tj +-4.8037 -1 TD +(*P)Tj +T* +(\(TENEX \(APPLY & &\)\))Tj +T* +(*)Tj +0 -1.7778 TD +(*P)Tj +0 -1 TD +(\(PROG \(& & & ATM IND VAL\) \(OR & &\) **COMMENT** \(OR & &\))Tj +T* +(\(PRIN1 & T\) \()Tj +0 -1.2156 TD +(PRIN1 & T\) \(SETQ IND)Tj +/TT6 1 Tf +10 0 0 10 306.0176 91 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 322.6875 91 Tm +( )Tj +/TT18 1 Tf +0.25 0 TD +(user typed Control-E)Tj +/TT10 1 Tf +-14.1042 -2.1111 TD +(*\(MOVE * TO BEFORE HERE\))Tj +0 -1 TD +(*P)Tj +T* +(\(PROG \(& & & ATM IND VAL\) \(OR & &\) \(OR & &\) \(PRIN1 &)Tj +ET +endstream +endobj +150 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +153 0 obj +<< +/Length 5998 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-42)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 246 570.14 Tm +(*P)Tj +0 -1 TD +(\(T \(PRIN1 C-EXP T\)\))Tj +0 -1.0667 TD +(*\(MOVE )Tj +/TT19 1 Tf +4.2007 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +( BF PRIN1 TO N HERE\))Tj +-4.8037 -1 TD +(*P)Tj +T* +(\(T \(PRIN1 C-EXP T\) \(PRIN1 & T\)\))Tj +T* +(*)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.03 Tw +(Finally, if )Tj +/TT10 1 Tf +4.5014 0 TD +0 Tw +(@)Tj +0.5997 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.03 Tw +[( is )]TJ +/TT10 1 Tf +1.2748 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +(, the )Tj +/TT10 1 Tf +2.1972 0 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +[( command allows you to specify where the )]TJ +/TT18 1 Tf +19.4353 0 TD +(current expression)Tj +/TT8 1 Tf +7.5237 0 TD +[( is)]TJ +-40.3328 -1.6222 TD +0.1078 Tw +[(to be moved to. In this case, the edit chain is changed, and is the chain where the current)]TJ +0 -1.2222 TD +0 Tw +(expression was moved to; )Tj +/TT10 1 Tf +11.7002 0 TD +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +( is set to where it was.)Tj +/TT10 1 Tf +-5.9675 -2 TD +(*P)Tj +0 -1 TD +(\(SELECTQ OBJPR \(&\) \(PROGN & &\)\))Tj +T* +(*\(MOVE TO BEFORE LOOP\))Tj +T* +(*P)Tj +T* +(... \(SELECTQ OBJPR & &\) LOOP \(FRPLACA DFPRP &\) \(FRPLACD DFPRP)Tj +0 -1.0667 TD +(&\) \(SELECTQ )Tj +/TT18 1 Tf +10.8018 0 TD +(user typed Control-E)Tj +/TT10 1 Tf +-10.8018 -2 TD +(*)Tj +/TT6 1 Tf +10 0 0 10 126 366.8 Tm +(Commands That Move Parentheses)Tj +/TT8 1 Tf +9 0 0 9 126 351.14 Tm +0.0567 Tw +(The commands presented in this section permit modification of the list structure itself, as opposed to)Tj +0 -1.2222 TD +0.0433 Tw +[(modifying components thereof. Their effect can be described as inserting or removing a single left or)]TJ +T* +0.1856 Tw +[(right parenthesis, or pair of left and right parentheses. Of course, there will always be the same)]TJ +T* +0.0922 Tw +(number of left parentheses as right parentheses in any list structure, since the parentheses are just a)Tj +T* +0.1022 Tw +(notational guide to the structure provided by )Tj +/TT10 1 Tf +20.9582 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1022 Tw +[(. Thus, no command can insert or remove just)]TJ +-23.9587 -1.2889 TD +0 Tw +(one parenthesis, but this is suggestive of what actually happens.)Tj +0 -2 TD +0.2633 Tw +(In all six commands, )Tj +/TT18 1 Tf +10.4073 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.2633 Tw +[( and )]TJ +/TT18 1 Tf +2.7195 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.9438 0 TD +0.2633 Tw +[( are used to specify an element of a list, usually of the current)]TJ +-14.8486 -1.2222 TD +0.3444 Tw +[(expression. In practice, )]TJ +/TT18 1 Tf +12.0135 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.3444 Tw +[( and )]TJ +/TT18 1 Tf +2.8818 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.9438 0 TD +0.3444 Tw +[( are usually positive or negative integers with the obvious)]TJ +-16.617 -1.2222 TD +0.15 Tw +[(interpretation. However, all six commands use the generalized )]TJ +/TT10 1 Tf +29.5907 0 TD +0 Tw +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.15 Tw +[( command )]TJ +/TT10 1 Tf +5.2482 0 TD +0 Tw +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.4 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.15 Tw +[( to find)]TJ +-41.84 -1.2889 TD +0.03 Tw +(their element\(s\), so that )Tj +/TT14 1 Tf +10.7562 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +(th element means the first element of the tail found by performing )Tj +/TT10 1 Tf +29.8497 0 TD +0 Tw +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.28 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-45.0867 -1.2889 TD +0.0078 Tw +(In other words, if the current expression is )Tj +/TT10 1 Tf +19.0559 0 TD +0.0178 Tw +(\(LIST \(CAR X\) \(SETQ Y \(CONS W Z\)\)\))Tj +/TT8 1 Tf +20.5278 0 TD +0.0078 Tw +(, then )Tj +/TT10 1 Tf +2.7348 0 TD +0.0178 Tw +(\(BI 2)Tj +-42.3184 -1.2889 TD +0 Tw +(CONS\))Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(BI X -1\))Tj +/TT8 1 Tf +5.4009 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(\(BI X Z\))Tj +/TT8 1 Tf +4.8008 0 TD +( all specify the exact same operation.)Tj +-16.145 -2.0667 TD +(All six commands generate an error if the element is not found, i.e., the )Tj +/TT10 1 Tf +31.5825 0 TD +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +( fails. All are undoable.)Tj +/TT10 1 Tf +-30.7162 -2.5489 TD +(\(BI)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(M)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT8 1 Tf +30.7554 0 TD +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0789 Tw +[("Both In". Inserts a left parentheses before the )]TJ +/TT14 1 Tf +21.2754 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +(th element and after the )Tj +/TT14 1 Tf +11.185 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +(th element in the)Tj +-33.6606 -1.2889 TD +0.0378 Tw +[(current expression. Generates an error if the )]TJ +/TT14 1 Tf +20.2436 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0378 Tw +(th element is not contained in the )Tj +/TT14 1 Tf +15.2317 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0378 Tw +(th tail, i.e.,)Tj +-36.6756 -1.2889 TD +0 Tw +(the )Tj +/TT14 1 Tf +1.6372 0 TD +(M)Tj +/TT8 1 Tf +0.6001 0 TD +(th element must be "to the right" of the )Tj +/TT14 1 Tf +17.3633 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th element.)Tj +-20.2007 -2.9556 TD +0.0222 Tw +[(Example: If the current expression is )]TJ +/TT10 1 Tf +16.7693 0 TD +0.0544 Tw +(\(A B \(C D E\) F G\))Tj +/TT8 1 Tf +10.5283 0 TD +0.0222 Tw +(, then )Tj +/TT10 1 Tf +2.7637 0 TD +0.0544 Tw +(\(BI 2 4\))Tj +/TT8 1 Tf +4.9097 0 TD +0.0222 Tw +[( will modify it)]TJ +-34.971 -1.2889 TD +0 Tw +(to be )Tj +/TT10 1 Tf +2.4043 0 TD +(\(A \(B \(C D E\) F\) G\))Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +/TT10 1 Tf +-15.1395 -2.5489 TD +(\(BI)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.5997 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 184.6517 70.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 70.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(BI)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +154 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +156 0 obj +<< +/Length 5794 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-43)Tj +/TT8 1 Tf +-38.3333 60.6156 TD +0.0067 Tw +[(Example: If the current expression is )]TJ +/TT10 1 Tf +16.6604 0 TD +0.0144 Tw +(\(A B \(C D E\) F G\))Tj +/TT8 1 Tf +10.2883 0 TD +0.0067 Tw +(, then )Tj +/TT10 1 Tf +2.7326 0 TD +0.0144 Tw +(\(BI -2\))Tj +/TT8 1 Tf +4.2151 0 TD +0.0067 Tw +[( will modify it to)]TJ +-33.8965 -1.2889 TD +0 Tw +(be )Tj +/TT10 1 Tf +1.2822 0 TD +(\(A B \(C D E\) \(F\) G\))Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +/TT10 1 Tf +-14.0174 -2.5489 TD +(\(BO)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.5997 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 131.2509 535 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 535 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1878 Tw +[("Both Out". Removes both parentheses from the )]TJ +/TT14 1 Tf +23.1404 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1878 Tw +[(th element. Generates an error if )]TJ +/TT14 1 Tf +16.0849 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th)Tj +-40.4256 -1.2889 TD +(element is not a list.)Tj +0 -2.8889 TD +0.0356 Tw +(Example: If the current expression is )Tj +/TT10 1 Tf +16.5771 0 TD +0.0856 Tw +(\(A B \(C D E\) F G\))Tj +/TT8 1 Tf +10.715 0 TD +0.0356 Tw +(, then )Tj +/TT10 1 Tf +2.7903 0 TD +0.0856 Tw +(\(BO D\))Tj +/TT8 1 Tf +3.6861 0 TD +0.0356 Tw +[( will modify it to)]TJ +-33.7686 -1.2889 TD +0 Tw +(be )Tj +/TT10 1 Tf +1.2822 0 TD +(\(A B C D E F G\))Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +/TT10 1 Tf +-11.617 -2.5489 TD +(\(LI)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.5997 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 131.2509 438.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 438.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0422 Tw +[("Left In". Inserts a left parenthesis before the )]TJ +/TT18 1 Tf +20.4415 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.0422 Tw +(th element \(and a matching right parenthesis)Tj +-21.2194 -1.2222 TD +0 Tw +(at the end of the current expression\), i.e. equivalent to )Tj +/TT10 1 Tf +24.0137 0 TD +(\(BI)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(-1\))Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-28.7144 -2.9556 TD +0.0378 Tw +(Example: if the current expression is )Tj +/TT10 1 Tf +16.5445 0 TD +0.09 Tw +(\(A B \(C D E\) F G\))Tj +/TT8 1 Tf +10.7417 0 TD +0.0378 Tw +(, then )Tj +/TT10 1 Tf +2.7948 0 TD +0.09 Tw +(\(LI 2\))Tj +/TT8 1 Tf +3.6906 0 TD +0.0378 Tw +[( will modify it to)]TJ +-33.7716 -1.2889 TD +0 Tw +(be )Tj +/TT10 1 Tf +1.2822 0 TD +(\(A \(B \(C D E\) F G\)\))Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +/TT10 1 Tf +-14.0174 -2.5489 TD +(\(LO)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.5997 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 136.6517 341.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 341.52 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1122 Tw +[("Left Out". Removes a left parenthesis from the )]TJ +/TT14 1 Tf +22.3162 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1122 Tw +(th element. )Tj +/TT18 1 Tf +5.7639 0 TD +(All elements following the )Tj +/TT14 1 Tf +11.2277 0 TD +0 Tw +(N)Tj +/TT18 1 Tf +0.6001 0 TD +(th)Tj +-40.508 -1.2889 TD +(element are deleted.)Tj +/TT8 1 Tf +7.8628 0 TD +( Generates an error if )Tj +/TT14 1 Tf +9.8433 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th element is not a list.)Tj +-18.3062 -2.9556 TD +0.0356 Tw +(Example: If the current expression is )Tj +/TT10 1 Tf +16.5771 0 TD +0.0856 Tw +(\(A B \(C D E\) F G\))Tj +/TT8 1 Tf +10.715 0 TD +0.0356 Tw +(, then )Tj +/TT10 1 Tf +2.7903 0 TD +0.0856 Tw +(\(LO 3\))Tj +/TT8 1 Tf +3.6861 0 TD +0.0356 Tw +[( will modify it to)]TJ +-33.7686 -1.2889 TD +0 Tw +(be )Tj +/TT10 1 Tf +1.2822 0 TD +(\(A B C D E\))Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-9.2166 -2.4 TD +(\(RI)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(M)Tj +/TT10 1 Tf +0.5996 0 TD +(\) )Tj +/TT8 1 Tf +30.7556 0 TD +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0911 Tw +[("Right In". Inserts a right parenthesis after the )]TJ +/TT14 1 Tf +21.5251 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0911 Tw +(th element of the )Tj +/TT14 1 Tf +8.0578 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0911 Tw +[(th element. The rest of)]TJ +-30.7831 -1.2889 TD +0 Tw +(the )Tj +/TT18 1 Tf +1.6372 0 TD +(N)Tj +/TT8 1 Tf +0.7778 0 TD +(th element is brought up to the level of the current expression.)Tj +-2.415 -2.8889 TD +0.0244 Tw +(Example: If the current expression is )Tj +/TT10 1 Tf +16.5104 0 TD +0.0589 Tw +(\(A \(B C D E\) F G\))Tj +/TT8 1 Tf +10.555 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5244 0 TD +0.0589 Tw +(\(RI 2 2\))Tj +/TT8 1 Tf +4.9186 0 TD +0.0244 Tw +[( will modify it to be)]TJ +/TT10 1 Tf +-32.5084 -1.2889 TD +0.1378 Tw +(\(A \(B C\) D E F G\))Tj +/TT8 1 Tf +11.0283 0 TD +0.0578 Tw +[(. Another way of thinking about )]TJ +/TT10 1 Tf +15.1564 0 TD +0 Tw +(RI)Tj +/TT8 1 Tf +1.2002 0 TD +0.0578 Tw +[( is to read it as "move the right)]TJ +-27.3849 -1.2889 TD +0 Tw +(parenthesis at the end of the )Tj +/TT14 1 Tf +12.7344 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th element )Tj +/TT18 1 Tf +4.9272 0 TD +(in)Tj +/TT8 1 Tf +0.834 0 TD +( to after its )Tj +/TT14 1 Tf +4.9463 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th element.")Tj +/TT10 1 Tf +-25.9754 -2.5489 TD +(\(RO)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 131.2518 137.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 137.18 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0133 Tw +[("Right Out". Removes the right parenthesis from the )]TJ +/TT14 1 Tf +23.7089 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0133 Tw +(th element, moving it to the end of the)Tj +-24.309 -1.2889 TD +0.1944 Tw +[(current expression. All elements following the )]TJ +/TT14 1 Tf +22.282 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1944 Tw +(th element are moved inside of the )Tj +/TT14 1 Tf +16.9397 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th)Tj +-40.4219 -1.2889 TD +(element. Generates an error if )Tj +/TT14 1 Tf +13.6123 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th element is not a list.)Tj +ET +endstream +endobj +157 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +159 0 obj +<< +/Length 6626 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-44)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +0.0178 Tw +(Example: If the current expression is )Tj +/TT10 1 Tf +16.4704 0 TD +0.0422 Tw +(\(A B \(C D E\) F G\))Tj +/TT8 1 Tf +10.455 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5178 0 TD +0.0422 Tw +(\(RO 3\))Tj +/TT8 1 Tf +3.6428 0 TD +0.0178 Tw +[( will modify it to be )]TJ +/TT10 1 Tf +9.0549 0 TD +0 Tw +(\(A)Tj +-40.1409 -1.2889 TD +0.31 Tw +(B \(C D E F G\)\))Tj +/TT8 1 Tf +9.9514 0 TD +0.1289 Tw +[(. Another way of thinking about )]TJ +/TT10 1 Tf +15.6542 0 TD +0 Tw +(RO)Tj +/TT8 1 Tf +1.2002 0 TD +0.1289 Tw +[( is to read it as "move the right)]TJ +-26.8057 -1.2889 TD +0 Tw +(parenthesis at the end of the )Tj +/TT18 1 Tf +12.7344 0 TD +(N)Tj +/TT8 1 Tf +0.7778 0 TD +(th element )Tj +/TT18 1 Tf +4.9272 0 TD +(out)Tj +/TT8 1 Tf +1.333 0 TD +( to the end of the current expression.")Tj +/TT6 1 Tf +10 0 0 10 126 519 Tm +(TO and THRU)Tj +/TT10 1 Tf +9 0 0 9 126 503.34 Tm +(EXTRACT)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.7756 0 TD +(EMBED)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.7756 0 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7756 0 TD +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +0.2756 Tw +(, and )Tj +/TT10 1 Tf +2.994 0 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2756 Tw +[( can be made to operate on several contiguous)]TJ +-22.7235 -1.2889 TD +0.1033 Tw +(elements, i.e., a segment of a list, by using in their respective location specifications the )Tj +/TT10 1 Tf +40.0861 0 TD +0 Tw +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +[( or )]TJ +/TT10 1 Tf +1.6476 0 TD +0 Tw +(THRU)Tj +/TT8 1 Tf +-42.9339 -1.2889 TD +(command.)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\(@)Tj +1.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +-0.0003 Tw +( THRU @)Tj +4.2 -0.3333 TD +0 Tw +(2)Tj +0.6 0.3333 TD +(\) )Tj +/TT8 1 Tf +27.6556 0 TD +([Editor Command])Tj +-32.9222 -3.0667 TD +0.1522 Tw +(Does a )Tj +/TT10 1 Tf +3.5271 0 TD +0.3656 Tw +(\(LC . @)Tj +4.9318 -0.3333 TD +0 Tw +(1)Tj +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1522 Tw +(, followed by an )Tj +/TT10 1 Tf +7.981 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1522 Tw +(, and then a )Tj +/TT10 1 Tf +6.021 0 TD +0.3656 Tw +(\(BI 1 @)Tj +4.9311 -0.3333 TD +0 Tw +(2)Tj +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1522 Tw +(, thereby grouping the)Tj +-30.9923 -1.6222 TD +0.1011 Tw +(segment into a single element, and finally does a )Tj +/TT10 1 Tf +22.6229 0 TD +0 Tw +(1)Tj +/TT8 1 Tf +0.6001 0 TD +0.1011 Tw +(, making the final current expression be)Tj +-23.223 -1.2889 TD +0 Tw +(that element.)Tj +0 -2.8889 TD +0.0011 Tw +(For example, if the current expression is )Tj +/TT10 1 Tf +17.9409 0 TD +0.0022 Tw +(\(A \(B \(C D\) \(E\) \(F G H\) I\) J K\))Tj +/TT8 1 Tf +18.6253 0 TD +0.0011 Tw +(, following)Tj +/TT10 1 Tf +-36.5661 -1.2889 TD +0 Tw +(\(C THRU G\))Tj +/TT8 1 Tf +6.001 0 TD +(, the current expression will be )Tj +/TT10 1 Tf +13.8374 0 TD +(\(\(C D\) \(E\) \(F G H\)\))Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +/TT10 1 Tf +-32.5736 -2.5489 TD +(\(@)Tj +1.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +-0.0001 Tc +0.0001 Tw +( TO @)Tj +3 -0.3333 TD +0 Tc +0 Tw +(2)Tj +0.6 0.3333 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 209.4017 344.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 344.8 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +0.17 Tw +(Same as )Tj +/TT10 1 Tf +4.1505 0 TD +0 Tw +(THRU)Tj +/TT8 1 Tf +2.4004 0 TD +0.17 Tw +[( except the last element not included, i.e., after the )]TJ +/TT10 1 Tf +24.0486 0 TD +0 Tw +(BI)Tj +/TT8 1 Tf +1.2002 0 TD +0.17 Tw +(, an )Tj +/TT10 1 Tf +2.172 0 TD +0.4089 Tw +(\(RI 1 -2\))Tj +/TT8 1 Tf +6.2187 0 TD +0.17 Tw +[( is)]TJ +-40.1905 -1.2889 TD +0 Tw +(performed.)Tj +-4 -2 TD +0.0733 Tw +(If both )Tj +/TT10 1 Tf +3.3239 0 TD +0 Tw +(@)Tj +0.5994 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0733 Tw +[( and )]TJ +/TT10 1 Tf +2.3395 0 TD +0 Tw +(@)Tj +0.6005 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0733 Tw +[( are numbers, and )]TJ +/TT10 1 Tf +8.5292 0 TD +0 Tw +(@)Tj +0.603 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0733 Tw +[( is greater than )]TJ +/TT10 1 Tf +7.1288 0 TD +0 Tw +(@)Tj +0.6001 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0733 Tw +(, then )Tj +/TT10 1 Tf +2.8659 0 TD +0 Tw +(@)Tj +0.5996 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0733 Tw +[( counts from the beginning of the)]TJ +-30.19 -1.6222 TD +0.0367 Tw +(current expression, the same as )Tj +/TT10 1 Tf +14.241 0 TD +0 Tw +(@)Tj +0.6035 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0367 Tw +[(. In other words, if the current expression is )]TJ +/TT10 1 Tf +20.1103 0 TD +0.0878 Tw +(\(A B C D E F G\))Tj +/TT8 1 Tf +9.5281 0 TD +0 Tw +(,)Tj +/TT10 1 Tf +-45.0829 -1.6222 TD +0.0578 Tw +(\(3 THRU 5\))Tj +/TT8 1 Tf +6.1165 0 TD +0.0244 Tw +[( means )]TJ +/TT10 1 Tf +3.4166 0 TD +0.0578 Tw +(\(C THRU E\))Tj +/TT8 1 Tf +6.1165 0 TD +0.0244 Tw +[( not )]TJ +/TT10 1 Tf +2.003 0 TD +0.0578 Tw +(\(C THRU G\))Tj +/TT8 1 Tf +6.1165 0 TD +0.0244 Tw +[(. In this case, the corresponding )]TJ +/TT10 1 Tf +14.6487 0 TD +0 Tw +(BI)Tj +/TT8 1 Tf +1.2002 0 TD +0.0244 Tw +[( command is)]TJ +/TT10 1 Tf +-39.618 -1.2889 TD +0 Tw +(\(BI 1 @)Tj +4.2 -0.3333 TD +(2)Tj +0.6 0.3333 TD +(-@)Tj +1.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +(+1\))Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-8.4003 -2.4 TD +(THRU)Tj +/TT8 1 Tf +2.4004 0 TD +0.3211 Tw +[( and )]TJ +/TT10 1 Tf +2.8351 0 TD +0 Tw +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +0.3211 Tw +[( are not very useful commands by themselves; they are intended to be used in)]TJ +-6.4357 -1.2889 TD +0.0256 Tw +(conjunction with )Tj +/TT10 1 Tf +7.764 0 TD +0 Tw +(EXTRACT)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5256 0 TD +(EMBED)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5256 0 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5256 0 TD +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0256 Tw +(, and )Tj +/TT10 1 Tf +2.494 0 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0256 Tw +[(. After )]TJ +/TT10 1 Tf +3.3877 0 TD +0 Tw +(THRU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0256 Tw +[( and )]TJ +/TT10 1 Tf +2.244 0 TD +0 Tw +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0256 Tw +[( have operated,)]TJ +-38.4698 -1.2889 TD +0.0367 Tw +(they set an internal editor flag informing the above commands that the element they are operating on)Tj +0 -1.2222 TD +0.03 Tw +(is actually a segment, and that the extra pair of parentheses should be removed when the operation is)Tj +T* +0 Tw +(complete. Thus:)Tj +/TT10 1 Tf +4 -2.8222 TD +(*P)Tj +5.3333 -1 TD +(\(PROG \(& & ATM IND VAL WORD\) \(PRIN1 & T\) \(PRIN1 & T\) \(SETQ)Tj +T* +(IND &\))Tj +0 -1.0667 TD +(\(SETQ VAL &\) **COMMENT** \(SETQQ )Tj +/TT18 1 Tf +21.6035 0 TD +(user typed Control-E)Tj +/TT10 1 Tf +-26.9369 -3.8889 TD +(*\(MOVE \(3 THRU 4\) TO BEFORE 7\))Tj +5.3333 -1 TD +(*P)Tj +T* +(\(PROG \(& & ATM IND VAL WORD\) \(SETQ IND &\) \(SETQ VAL &\))Tj +T* +(\(PRIN1 & T\))Tj +0 -1.0667 TD +(\(PRIN1 & T\) **COMMENT** )Tj +/TT8 1 Tf +16.2026 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(user typed Control-E)Tj +ET +endstream +endobj +160 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +162 0 obj +<< +/Length 2752 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-45)Tj +/TT10 1 Tf +-38.3333 60.6822 TD +(*)Tj +5.3333 -1 TD +(*P)Tj +T* +(\(* FAIL RETURN FROM EDITOR. USER SHOULD NOTE THE VALUES OF)Tj +T* +(SOURCEXPR)Tj +T* +(AND CURRENTFORM. CURRENTFORM IS THE LAST FORM IN SOURCEXPR)Tj +T* +(WHICH WILL)Tj +T* +(HAVE BEEN TRANSLATED, AND IT CAUSED THE ERROR.\))Tj +T* +(*\(DELETE \(USER THRU CURR$\)\))Tj +T* +(=CURRENTFORM.)Tj +T* +(*P)Tj +0 -1.0667 TD +(\(* FAIL RETURN FROM EDITOR.CURRENTFORM IS )Tj +/TT8 1 Tf +27.0044 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(user typed Control-E)Tj +/TT10 1 Tf +-32.5877 -3.8889 TD +(*)Tj +5.3333 -1 TD +(*P)Tj +T* +(... LP \(SELECTO & & & & NIL\) \(SETQ Y &\) OUT \(SETQ FLG &\))Tj +T* +(\(RETURN Y\)\))Tj +T* +(*\(MOVE \(1 TO OUT\) TO N HERE])Tj +T* +(*P)Tj +T* +(... OUT \(SETQ FLG &\) \(RETURN Y\) LP \(SELECTQ & & & & NIL\))Tj +T* +(\(SETQ Y &\)\))Tj +T* +(*)Tj +-5.3333 -2.6667 TD +(*PP)Tj +5.3333 -1 TD +([PROG \(RF TEMP1 TEMP2\))Tj +T* +( \(COND)Tj +T* +( \(\(NOT \(MEMB REMARG LISTING\)\))Tj +T* +( \(SETQ TEMP1 \(ASSOC REMARG NAMEDREMARKS\)\))Tj +T* +(**COMMENT**)Tj +T* +( \(SETQ TEMP2 \(CADR TEMP1\)\))Tj +T* +( \(GO SKIP\)\))Tj +T* +( \(T **COMMENT**)Tj +T* +( \(SETQ TEMP1 REMARG\)\)\))Tj +T* +( \(NCONC1 LISTING REMARG\))Tj +T* +( \(COND)Tj +T* +( \(\(NOT \(SETQ TEMP2 \(SASSOC)Tj +-5.3333 -3.8889 TD +(*\(EXTRACT \(SETQ THRU CADR\) FROM COND\))Tj +5.3333 -1 TD +(*P)Tj +T* +(\(PROG \(RF TEMP1 TEMP2\) \(SETQ TEMP1 &\) **COMMENT** \(SETQ)Tj +0 -1.0667 TD +(TEMP2 &\) \(NCONC1 LISTING REMARG\) \(COND & & )Tj +/TT8 1 Tf +27.6045 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(user typed Control-)Tj +-27.8545 -1.0667 TD +(E)Tj +/TT10 1 Tf +0 -1.9333 TD +(*)Tj +-9.3333 -1.8444 TD +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0656 Tw +[( and )]TJ +/TT10 1 Tf +2.324 0 TD +0 Tw +(THRU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( can also be used directly with )]TJ +/TT10 1 Tf +14.0707 0 TD +0 Tw +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +(, because )Tj +/TT10 1 Tf +4.363 0 TD +0 Tw +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( involves a location specification while)]TJ +/TT10 1 Tf +-27.9589 -1.2889 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +(, B, )Tj +/TT10 1 Tf +1.7353 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +(, and )Tj +/TT10 1 Tf +2.5673 0 TD +0 Tw +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( do not. Thus in the previous example, if the current expression had been the )]TJ +/TT10 1 Tf +35.3867 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +-45.0902 -1.2889 TD +0.0444 Tw +(e.g.,you had first performed )Tj +/TT10 1 Tf +12.8516 0 TD +0.1056 Tw +(F COND)Tj +/TT8 1 Tf +3.7061 0 TD +0.0444 Tw +(, you could have used )Tj +/TT10 1 Tf +10.1646 0 TD +0.1056 Tw +(\(XTR \(SETQ THRU CADR\)\))Tj +/TT8 1 Tf +13.5188 0 TD +0.0444 Tw +[( to perform)]TJ +-40.2412 -1.2889 TD +0 Tw +(the extraction.)Tj +ET +endstream +endobj +163 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +165 0 obj +<< +/Length 2543 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-46)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\(@)Tj +1.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( TO\))Tj +/TT4 1 Tf +10 0 0 10 187.8035 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 568.2 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.5489 TD +(\(@)Tj +1.2 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( THRU\))Tj +/TT4 1 Tf +10 0 0 10 198.6053 554.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 554.26 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Both are the same as )Tj +/TT10 1 Tf +9.2856 0 TD +(\(@)Tj +1.201 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( THRU -1\))Tj +/TT8 1 Tf +5.4009 0 TD +(, i.e., from )Tj +/TT10 1 Tf +4.6768 0 TD +(@)Tj +0.6001 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( through the end of the list.)Tj +-22.3644 -3.2889 TD +(Examples:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*P)Tj +0 -1.2222 TD +(\(VALUE \(RPLACA DEPRP &\) \(RPLACD &\) \(RPLACA VARSWORD)Tj +0 -1 TD +(&\) \(RETURN\)\))Tj +0 -1.0667 TD +(*\(MOVE \(2 TO\) TO N \()Tj +/TT19 1 Tf +12.002 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( PROG\)\))Tj +-12.9888 -1 TD +(*\(N \(GO VAR\)\))Tj +T* +(*P)Tj +T* +(\(VALUE \(GO VAR\)\))Tj +T* +(*P)Tj +T* +(\(T **COMMENT** \(COND &\) **COMMENT** \(EDITSMASH CL &)Tj +T* +(&\) \(COND &\)\))Tj +T* +(*\(-3 \(GO REPLACE\)\))Tj +0 -1.0667 TD +(*\(MOVE \(COND TO\) TO N )Tj +/TT19 1 Tf +13.2021 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +( PROG \(N REPLACE\)\))Tj +-13.8052 -1 TD +(*P)Tj +T* +(\(T **COMMENT** \(GO REPLACE\)\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(\(PROG \(&\) **COMMENT** \(COND & & &\) \(COND & & &\))Tj +T* +(DELETE \(COND & &\) REPLACE)Tj +T* +(\(COND &\) **COMMENT** \(EDITSMASH CL & &\) \(COND &\)\))Tj +T* +(*)Tj +0 -1.7778 TD +(*PP)Tj +0 -1 TD +([LAMBDA \(CLAUSALA X\))Tj +T* +( \(PROG \(A D\))Tj +T* +( \(SETQ A CLAUSALA\))Tj +T* +( LP \(COND)Tj +T* +( \(\(NULL A\))Tj +T* +( \(RETURN\)\)\))Tj +T* +( \(SERCH X A\))Tj +T* +( \(RUMARK \(CDR A\)\))Tj +T* +( \(NOTICECL \(CAR A\)\))Tj +T* +( \(SETQ A \(CDR A\)\))Tj +T* +( \(GO LP])Tj +T* +(*\(EXTRACT \(SERCH THRU NOT$\) FROM PROG\))Tj +T* +(=NOTICECL)Tj +T* +(*P)Tj +T* +(\(LAMBDA \(CLAUSALA X\) \(SERCH X A\) \(RUMARK &\) \(NOTICECL)Tj +T* +(&\)\))Tj +T* +(*\(EMBED \(SERCH TO\) IN \(MAP CLAUSALA \(FUNCTION \(LAMBDA)Tj +T* +(\(A\) *])Tj +T* +(*PP)Tj +T* +([LAMBDA \(CLAUSALA X\))Tj +T* +( \(MAP CLAUSALA)Tj +T* +( \(FUNCTION \(LAMBDA \(A\))Tj +T* +( \(SERCH X A\))Tj +T* +( \(RUMARK \(CDR A\)\))Tj +T* +( \(NOTICECL \(CAR A])Tj +T* +(*)Tj +ET +endstream +endobj +166 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +168 0 obj +<< +/Length 7466 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-47)Tj +/TT6 1 Tf +10 0 0 10 78 568.2 Tm +(The R Command)Tj +/TT10 1 Tf +9 0 0 9 102 548.2 Tm +(\(R)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 133.5044 548.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 548.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.2744 Tw +(Replaces all instances of )Tj +/TT14 1 Tf +11.9962 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2744 Tw +[( by )]TJ +/TT14 1 Tf +2.1583 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.2744 Tw +[( in the current expression, e.g., )]TJ +/TT10 1 Tf +15.403 0 TD +0.6589 Tw +(\(R CAADR CADAR\))Tj +/TT8 1 Tf +10.3192 0 TD +0 Tw +(.)Tj +-41.0769 -1.2889 TD +(Generates an error if there is not at least one instance.)Tj +0 -2.8889 TD +(The )Tj +/TT10 1 Tf +1.9294 0 TD +(R)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( command operates in conjunction with the search mechanism of the editor. The search)]TJ +-2.5295 -1.2889 TD +0.1 Tw +(proceeds as described in the Search Algorithm section above, and )Tj +/TT14 1 Tf +30.1997 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1 Tw +[( can employ any of the)]TJ +-30.7998 -1.2889 TD +0.2478 Tw +[(patterns shown in the Commands That Search section above. Each time )]TJ +/TT14 1 Tf +35.0183 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2478 Tw +[( matches an)]TJ +-35.6184 -1.2889 TD +0.0611 Tw +(element of the structure, the element is replaced by \(a copy of\) )Tj +/TT14 1 Tf +28.4858 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0611 Tw +(; each time )Tj +/TT14 1 Tf +5.1672 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0611 Tw +[( matches a tail)]TJ +-34.8532 -1.2889 TD +0 Tw +(of the structure, the tail is replaced by \(a copy of\) )Tj +/TT14 1 Tf +21.8726 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-22.4727 -2.9556 TD +(For example, if the current expression is )Tj +/TT10 1 Tf +17.9331 0 TD +(\(A \(B C\) \(B . C\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(,)Tj +/TT10 1 Tf +-28.1348 -2.9556 TD +(\(R C D\))Tj +/TT8 1 Tf +4.2007 0 TD +( will change it to )Tj +/TT10 1 Tf +7.5894 0 TD +(\(A \(B D\) \(B . D\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(,)Tj +/TT10 1 Tf +-21.9917 -2.9556 TD +(\(R \(... . C\) D\))Tj +/TT8 1 Tf +9.0015 0 TD +( will change it to )Tj +/TT10 1 Tf +7.5894 0 TD +(\(A \(B C\) \(B . D\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(,)Tj +/TT10 1 Tf +-26.7925 -2.9556 TD +(\(R C \(D E\)\))Tj +/TT8 1 Tf +6.6011 0 TD +( will change it to )Tj +/TT10 1 Tf +7.5894 0 TD +(\(A \(B \(D E\)\) \(B D E\)\))Tj +/TT8 1 Tf +12.6021 0 TD +(, and)Tj +/TT10 1 Tf +-26.7925 -2.9556 TD +(\(R \(... . NIL\) D\))Tj +/TT8 1 Tf +10.2017 0 TD +( will change it to )Tj +/TT10 1 Tf +7.5894 0 TD +(\(A \(B C . D\) \(B . C\) . D\))Tj +/TT8 1 Tf +15.0024 0 TD +(.)Tj +-32.7935 -2.9556 TD +(If )Tj +/TT14 1 Tf +1.0177 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +[( is an atom or string containing )]TJ +/TT10 1 Tf +14.7015 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +(s \(escapes\), )Tj +/TT10 1 Tf +5.386 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +(s appearing in )Tj +/TT14 1 Tf +6.8456 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +[( stand for the characters)]TJ +-30.3512 -1.2889 TD +0.0178 Tw +(matched by the corresponding )Tj +/TT10 1 Tf +13.8441 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( in )]TJ +/TT14 1 Tf +1.4086 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.8172 0 TD +0.0422 Tw +(\(R FOO$ FIE$\))Tj +/TT8 1 Tf +7.8857 0 TD +0.0178 Tw +[( means for all atoms or)]TJ +-31.1558 -1.2889 TD +0.0567 Tw +(strings that begin with )Tj +/TT10 1 Tf +10.4537 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0567 Tw +(, replace the characters ")Tj +/TT10 1 Tf +10.9127 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0567 Tw +(" by ")Tj +/TT10 1 Tf +2.4649 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0567 Tw +[(". Applied to the list )]TJ +/TT10 1 Tf +9.7043 0 TD +0 Tw +(\(FOO)Tj +-38.9365 -1.2889 TD +0.2678 Tw +(FOO2 XFOO1\))Tj +/TT8 1 Tf +6.8689 0 TD +0 Tw +(, )Tj +/TT14 1 Tf +0.6111 0 TD +0.2678 Tw +(\(R FOO$ FIE$\))Tj +/TT8 1 Tf +8.3368 0 TD +0.1111 Tw +[( would produce )]TJ +/TT10 1 Tf +7.6468 0 TD +0.2678 Tw +(\(FIE FIE2 XFOO1\))Tj +/TT8 1 Tf +10.1371 0 TD +0.1111 Tw +(, and )Tj +/TT10 1 Tf +2.6651 0 TD +0.2678 Tw +(\(R $FOO$)Tj +-36.2658 -1.2889 TD +0 Tw +($FIE$\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0189 Tw +[( would produce )]TJ +/TT10 1 Tf +7.3701 0 TD +0.0444 Tw +(\(FIE FIE2 XFIE1\))Tj +/TT8 1 Tf +9.6905 0 TD +0.0189 Tw +[(. Similarly, )]TJ +/TT10 1 Tf +5.3296 0 TD +0.0444 Tw +(\(R $D$ $A$\))Tj +/TT8 1 Tf +6.69 0 TD +0.0189 Tw +[( will change )]TJ +/TT10 1 Tf +5.6568 0 TD +0 Tw +(\(LIST)Tj +-38.3375 -1.2889 TD +0.3222 Tw +(\(CADR X\) \(CADDR Y\)\))Tj +/TT8 1 Tf +12.3685 0 TD +0.1344 Tw +[( to )]TJ +/TT10 1 Tf +1.641 0 TD +0.3222 Tw +(\(LIST \(CAAR X\) \(CAADR\)\))Tj +/TT8 1 Tf +14.7689 0 TD +0.1344 Tw +[(. Note that )]TJ +/TT10 1 Tf +5.7043 0 TD +0 Tw +(CADDR)Tj +/TT8 1 Tf +3.0005 0 TD +0.1344 Tw +[( was )]TJ +/TT18 1 Tf +2.5267 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +-40.0099 -1.2889 TD +0.0211 Tw +(changed to )Tj +/TT10 1 Tf +5.1682 0 TD +0 Tw +(CAAAR)Tj +/TT8 1 Tf +3.0005 0 TD +0.0211 Tw +(, i.e., )Tj +/TT10 1 Tf +2.3122 0 TD +0.0511 Tw +(\(R $D$ $A$\))Tj +/TT8 1 Tf +6.7033 0 TD +0.0211 Tw +[( does not mean replace every )]TJ +/TT10 1 Tf +13.2473 0 TD +0 Tw +(D)Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +[( with )]TJ +/TT10 1 Tf +2.5754 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +(, but replace the)Tj +-34.2071 -1.2889 TD +0 Tw +(first )Tj +/TT10 1 Tf +2.019 0 TD +(D)Tj +/TT8 1 Tf +0.6001 0 TD +( in every atom or string by )Tj +/TT10 1 Tf +11.9766 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(. If you wanted to replace every )Tj +/TT10 1 Tf +14.4922 0 TD +(D)Tj +/TT8 1 Tf +0.6001 0 TD +( by )Tj +/TT10 1 Tf +1.6094 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, you could perform)Tj +/TT10 1 Tf +-32.4976 -1.2889 TD +(\(LP \(R $D$ $A$\)\))Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +-9.6016 -2.9556 TD +0.0411 Tw +(You will be informed of all such )Tj +/TT10 1 Tf +14.7263 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( replacements by a message of the form )]TJ +/TT14 1 Tf +17.9886 0 TD +0 Tw +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(->)Tj +/TT14 1 Tf +1.2002 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +(, e.g., )Tj +/TT10 1 Tf +2.6174 0 TD +0 Tw +(CADR-)Tj +-38.3327 -1.2889 TD +(>CAAR)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-3.0005 -2.9556 TD +(If )Tj +/TT14 1 Tf +1.1233 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2033 Tw +[( matches a string, it will be replaced by a string. It does not matter whether )]TJ +/TT14 1 Tf +36.5683 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2033 Tw +[( or )]TJ +/TT14 1 Tf +1.8476 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +-40.7393 -1.2889 TD +0.0822 Tw +(themselves are strings, i.e. )Tj +/TT10 1 Tf +12.1526 0 TD +0.1978 Tw +(\(R $D$ $A$\))Tj +/TT8 1 Tf +6.9966 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5822 0 TD +0.1978 Tw +(\(R "$D$" $A$\), \(R $D$ "$A$"\))Tj +/TT8 1 Tf +17.7916 0 TD +0.0822 Tw +(, and )Tj +/TT10 1 Tf +2.6073 0 TD +0 Tw +(\(R)Tj +-40.1304 -1.2889 TD +0.0489 Tw +("$D$" "$A$"\))Tj +/TT8 1 Tf +7.2501 0 TD +0.02 Tw +[( are equivalent. )]TJ +/TT14 1 Tf +7.3803 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( will never match with a number, i.e., )]TJ +/TT10 1 Tf +16.9002 0 TD +0.0489 Tw +(\(R $1 $2\))Tj +/TT8 1 Tf +5.4987 0 TD +0.02 Tw +[( will not)]TJ +-37.6293 -1.2889 TD +0 Tw +(change 11 to 12.)Tj +0 -2.8889 TD +(The )Tj +/TT10 1 Tf +1.9949 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( \(escape\) feature can be used to delete or add characters, as well as replace them. For)]TJ +-2.595 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.4768 0 TD +0.5467 Tw +(\(R $1 $\))Tj +/TT8 1 Tf +5.8941 0 TD +0.2278 Tw +[( will delete the terminating )]TJ +/TT10 1 Tf +13.3596 0 TD +0 Tw +(1)Tj +/TT8 1 Tf +0.6001 0 TD +0.2278 Tw +(s from all literal atoms and strings.)Tj +ET +endstream +endobj +169 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +171 0 obj +<< +/Length 9451 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-48)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +0.2267 Tw +(Similarly, if an )Tj +/TT10 1 Tf +7.409 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.2267 Tw +[( in )]TJ +/TT14 1 Tf +1.8264 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2267 Tw +[( does not have a mate in )]TJ +/TT14 1 Tf +12.5374 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.2267 Tw +(, the characters matched by the )Tj +/TT10 1 Tf +15.3073 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.2267 Tw +[( are)]TJ +-39.4804 -1.2889 TD +0.1633 Tw +[(effectively deleted. For example, )]TJ +/TT10 1 Tf +15.6648 0 TD +0.3922 Tw +(\(R $/$ $\))Tj +/TT8 1 Tf +6.1853 0 TD +0.1633 Tw +[( will change )]TJ +/TT10 1 Tf +6.0901 0 TD +0 Tw +(AND/OR)Tj +/TT8 1 Tf +3.6006 0 TD +0.1633 Tw +[( to )]TJ +/TT10 1 Tf +1.6987 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +0.1633 Tw +[(. There is no)]TJ +-35.0399 -1.2889 TD +0.0278 Tw +(similar operation for changing )Tj +/TT10 1 Tf +13.8191 0 TD +0 Tw +(AND/OR)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( to )]TJ +/TT10 1 Tf +1.4276 0 TD +0 Tw +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +0.0278 Tw +(, since the first )Tj +/TT10 1 Tf +6.7371 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0278 Tw +[( in )]TJ +/TT14 1 Tf +1.4286 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0278 Tw +[( always corresponds to the)]TJ +-29.4134 -1.2889 TD +0 Tw +(first )Tj +/TT10 1 Tf +2.0246 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( in )]TJ +/TT18 1 Tf +1.3842 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.7222 0 TD +0.0056 Tw +(, the second )Tj +/TT12 1 Tf +5.4893 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.5 0 TD +0.0056 Tw +[( in )]TJ +/TT14 1 Tf +1.3842 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( to the second in )]TJ +/TT14 1 Tf +7.4956 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +(, etc. )Tj +/TT14 1 Tf +2.5157 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( can also be a list containing )]TJ +/TT10 1 Tf +12.64 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +(s, e.g., )Tj +/TT10 1 Tf +2.9701 0 TD +0 Tw +(\(R)Tj +-40.1262 -1.2889 TD +($1 \(CAR $\)\))Tj +/TT8 1 Tf +6.6011 0 TD +( will change )Tj +/TT10 1 Tf +5.6001 0 TD +(FOO1)Tj +/TT8 1 Tf +2.4004 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(\(CAR FOO\))Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(FIE1)Tj +/TT8 1 Tf +2.4004 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(\(CAR FIE\))Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-31.0479 -2.9556 TD +(If )Tj +/TT14 1 Tf +0.9233 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( does not contain )Tj +/TT10 1 Tf +7.798 0 TD +0 Tc +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +(s, )Tj +/TT10 1 Tf +0.9272 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( appearing in )Tj +/TT14 1 Tf +6.1384 0 TD +0 Tc +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( refers to the )Tj +/TT18 1 Tf +5.7775 0 TD +0 Tc +0 Tw +(entire)Tj +/TT8 1 Tf +2.3345 0 TD +0.0001 Tc +0.0032 Tw +( expression matched by )Tj +/TT14 1 Tf +10.6842 0 TD +0 Tc +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0033 Tw +(, e.g., )Tj +/TT10 1 Tf +2.5418 0 TD +0 Tw +(\(R)Tj +-40.1254 -1.2889 TD +0.0156 Tw +(LONGATOM $\))Tj +/TT8 1 Tf +7.2167 0 TD +0.0067 Tw +[( changes )]TJ +/TT10 1 Tf +4.0802 0 TD +0 Tw +(LONGATOM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0067 Tw +[( to )]TJ +/TT10 1 Tf +1.3854 0 TD +0 Tw +(LONGATOM)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5067 0 TD +(\(R)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.2567 0 TD +0.0156 Tw +(\(SETQ X &\) \(PRINT $\)\))Tj +/TT8 1 Tf +12.6643 0 TD +0.0067 Tw +[( changes)]TJ +-37.5118 -1.2889 TD +0 Tw +(every )Tj +/TT10 1 Tf +2.8208 0 TD +0.2311 Tw +(\(SETQ X &\))Tj +/TT8 1 Tf +6.4632 0 TD +0.0967 Tw +[( to )]TJ +/TT10 1 Tf +1.5654 0 TD +0.2311 Tw +(\(PRINT \(SETQ X &\)\))Tj +/TT8 1 Tf +11.4951 0 TD +0.0967 Tw +[(. If )]TJ +/TT14 1 Tf +1.9599 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0967 Tw +[( is a pattern containing an )]TJ +/TT10 1 Tf +12.2865 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0967 Tw +[( pattern)]TJ +-37.7911 -1.2889 TD +0 Tw +(somewhere )Tj +/TT18 1 Tf +5.3673 0 TD +(within)Tj +/TT8 1 Tf +2.667 0 TD +0.0167 Tw +[( it, the characters matched by the )]TJ +/TT10 1 Tf +14.9311 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0167 Tw +(s are not available, and for the purposes)Tj +-23.5655 -1.2889 TD +0.0067 Tw +(of replacement, the effect is the same as though )Tj +/TT14 1 Tf +21.186 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( did not contain any )]TJ +/TT10 1 Tf +9.1593 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[(s. For example, if you)]TJ +-31.5455 -1.2889 TD +0 Tw +(type )Tj +/TT10 1 Tf +2.2324 0 TD +0.0478 Tw +(\(R \(CAR)Tj +/TT12 1 Tf +4.2485 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.27 0 TD +0.0478 Tw +(F$\) \(PRINT)Tj +/TT18 1 Tf +6.0488 0 TD +0.02 Tc +0 Tw +( $)Tj +/TT10 1 Tf +0.77 0 TD +0 Tc +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +0.02 Tw +(, the second )Tj +/TT10 1 Tf +5.5327 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +[( will refer to the entire expression matched by)]TJ +/TT10 1 Tf +-20.9026 -1.2889 TD +0 Tw +(\(CAR F$\))Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-4.8008 -2.9556 TD +(Since )Tj +/TT10 1 Tf +2.6364 0 TD +(\(R )Tj +/TT14 1 Tf +1.9581 0 TD +0.1578 Tw +($X$ $Y$)Tj +/TT10 1 Tf +4.3585 0 TD +0 Tw +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0656 Tw +[( is a frequently used operation for )]TJ +/TT12 1 Tf +15.685 0 TD +0 Tw +(R)Tj +/TT8 1 Tf +0.7222 0 TD +(eplacing )Tj +/TT12 1 Tf +4.0597 0 TD +(C)Tj +/TT8 1 Tf +0.7222 0 TD +0.0656 Tw +(haracters, the following)Tj +-30.742 -1.2889 TD +0 Tw +(command is provided:)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(RC)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 186.9026 366.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 366.4 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Equivalent to )Tj +/TT10 1 Tf +6.1802 0 TD +(\(R)Tj +/TT18 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +($X$ $Y$)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +-11.8311 -2.9556 TD +(R)Tj +/TT8 1 Tf +0.6001 0 TD +0.2222 Tw +[( and )]TJ +/TT10 1 Tf +2.6373 0 TD +0 Tw +(RC)Tj +/TT8 1 Tf +1.2002 0 TD +0.2222 Tw +[( change all instances of )]TJ +/TT14 1 Tf +11.5169 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2222 Tw +[( to )]TJ +/TT14 1 Tf +1.8165 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.2222 Tw +[(. The commands )]TJ +/TT10 1 Tf +8.6848 0 TD +0 Tw +(R1)Tj +/TT8 1 Tf +1.2002 0 TD +0.2222 Tw +[( and )]TJ +/TT10 1 Tf +2.6373 0 TD +0 Tw +(RC1)Tj +/TT8 1 Tf +1.8003 0 TD +0.2222 Tw +[( are available for)]TJ +-33.2938 -1.2889 TD +0 Tw +(changing just one, \(i.e., the first\) instance of )Tj +/TT14 1 Tf +19.3862 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-23.2918 -2.5489 TD +(\(R1)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 186.9026 280.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 280.66 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Find the first instance of )Tj +/TT14 1 Tf +10.9531 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( and replace it by )Tj +/TT14 1 Tf +7.8584 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-21.3451 -2.5489 TD +(\(RC1)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(Y)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 192.3026 233.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 233.12 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Equivalent to )Tj +/TT10 1 Tf +6.1802 0 TD +(\(R1)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +($X$ $Y$)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-13.0313 -2.9556 TD +0.1656 Tw +(In addition, while )Tj +/TT10 1 Tf +8.6505 0 TD +0 Tw +(R)Tj +/TT8 1 Tf +0.6001 0 TD +0.1656 Tw +[( and )]TJ +/TT10 1 Tf +2.524 0 TD +0 Tw +(RC)Tj +/TT8 1 Tf +1.2002 0 TD +0.1656 Tw +[( only operate within the current expression, )]TJ +/TT10 1 Tf +20.7146 0 TD +0 Tw +(R1)Tj +/TT8 1 Tf +1.2002 0 TD +0.1656 Tw +[( and )]TJ +/TT10 1 Tf +2.524 0 TD +0 Tw +(RC1)Tj +/TT8 1 Tf +1.8003 0 TD +0.1656 Tw +[( will)]TJ +-39.2138 -1.2889 TD +0.0889 Tw +(continue searching, a la the )Tj +/TT10 1 Tf +12.7286 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.0889 Tw +[( command, until they find an instance of )]TJ +/TT14 1 Tf +18.8517 0 TD +0 Tw +(x)Tj +/TT8 1 Tf +0.6001 0 TD +0.0889 Tw +(, even if the search)Tj +-32.7806 -1.2889 TD +0 Tw +(carries them beyond the current expression.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(SW)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(M)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 186.9026 136.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 136.38 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Switches the )Tj +/TT14 1 Tf +5.792 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th and )Tj +/TT14 1 Tf +3.1011 0 TD +(M)Tj +/TT8 1 Tf +0.6001 0 TD +(th elements of the current expression.)Tj +-10.0933 -2.9556 TD +0.14 Tw +(For example, if the current expression is )Tj +/TT10 1 Tf +18.9131 0 TD +0.3367 Tw +(\(LIST \(CONS \(CAR X\) \(CAR Y\)\) \(CONS)Tj +-18.9131 -1.2889 TD +0.0067 Tw +(\(CDR X\) \(CDR Y\)\)\))Tj +/TT8 1 Tf +10.2217 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5022 0 TD +0.0067 Tw +(\(SW 2 3\))Tj +/TT8 1 Tf +4.8141 0 TD +0.0001 Tc +0.0021 Tw +( will modify it to be )Tj +/TT10 1 Tf +8.9616 0 TD +0 Tc +0.0067 Tw +(\(LIST \(CONS \(CDR X\) \(CDR Y\)\))Tj +-24.4996 -1.2889 TD +0.1389 Tw +(\(CONS \(CAR X\) \(CAR Y\)\)\))Tj +/TT8 1 Tf +14.3578 0 TD +0.0578 Tw +[(. The relative order of )]TJ +/TT14 1 Tf +10.4014 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0578 Tw +[( and )]TJ +/TT14 1 Tf +2.3084 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0578 Tw +[( is not important, i.e., )]TJ +/TT10 1 Tf +9.9281 0 TD +0.1389 Tw +(\(SW 3)Tj +-38.1958 -1.2889 TD +0 Tw +(2\))Tj +/TT8 1 Tf +1.2002 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(\(SW 2 3\))Tj +/TT8 1 Tf +4.8008 0 TD +( are equivalent.)Tj +ET +endstream +endobj +172 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +174 0 obj +<< +/Length 4321 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-49)Tj +/TT10 1 Tf +-38.3333 60.6156 TD +(SW)Tj +/TT8 1 Tf +1.2002 0 TD +0.0411 Tw +[( uses the generalized )]TJ +/TT10 1 Tf +9.6444 0 TD +0 Tw +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[( command )]TJ +/TT10 1 Tf +5.0305 0 TD +0 Tw +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.2911 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[( to find the )]TJ +/TT14 1 Tf +5.2406 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +(th and )Tj +/TT14 1 Tf +3.1833 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +(th elements, a la the)Tj +/TT10 1 Tf +-32.3914 -1.2889 TD +0 Tw +(BI)Tj +/TT8 1 Tf +1.2002 0 TD +(-)Tj +/TT10 1 Tf +0.333 0 TD +(BO)Tj +/TT8 1 Tf +1.2002 0 TD +( commands.)Tj +-2.7334 -2.9556 TD +(Thus in the previous example, )Tj +/TT10 1 Tf +13.6348 0 TD +(\(SW CAR CDR\))Tj +/TT8 1 Tf +7.2012 0 TD +( would produce the same result.)Tj +/TT10 1 Tf +-22.1693 -2.4 TD +-0.0001 Tc +0.0001 Tw +(\(SWAP @)Tj +4.2 -0.3333 TD +0 Tc +0 Tw +(1)Tj +0.6 0.3333 TD +( @)Tj +1.2 -0.3333 TD +(2)Tj +0.6 0.3333 TD +(\) )Tj +/TT8 1 Tf +27.6556 0 TD +([Editor Command])Tj +-32.9222 -3.0667 TD +(Like )Tj +/TT10 1 Tf +2.4215 0 TD +(SW)Tj +/TT8 1 Tf +1.2002 0 TD +0.2344 Tw +[( except switches the expressions specified by )]TJ +/TT10 1 Tf +21.6499 0 TD +0 Tw +(@)Tj +0.6029 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.2344 Tw +[( and )]TJ +/TT10 1 Tf +2.6618 0 TD +0 Tw +(@)Tj +0.6005 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.2344 Tw +(, not the corresponding)Tj +-30.3367 -1.6222 TD +0.2633 Tw +(elements of the current expression, i.e. )Tj +/TT10 1 Tf +18.7699 0 TD +0 Tw +(@)Tj +0.6023 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.2633 Tw +[( and )]TJ +/TT10 1 Tf +2.7195 0 TD +0 Tw +(@)Tj +0.6005 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.2633 Tw +[( can be at different levels in current)]TJ +-23.8922 -1.6222 TD +0 Tw +(expression, or one or both be outside of current expression.)Tj +0 -2.8889 TD +0.0311 Tw +(Thus, using the previous example, )Tj +/TT10 1 Tf +15.6233 0 TD +0.0756 Tw +(\(SWAP CAR CDR\))Tj +/TT8 1 Tf +8.5525 0 TD +0.0311 Tw +[( would result in )]TJ +/TT10 1 Tf +7.4003 0 TD +0.0756 Tw +(\(LIST \(CONS \(CDR)Tj +-31.5761 -1.2889 TD +0 Tw +(X\) \(CAR Y\)\) \(CONS \(CAR X\) \(CDR Y\)\)\))Tj +/TT8 1 Tf +21.0034 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 54 372.4 Tm +(Commands That Print)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 369.69 m +510.01 369.69 l +S +BT +/TT10 1 Tf +9 0 0 9 102 351.4 Tm +(PP)Tj +/TT4 1 Tf +10 0 0 10 112.8 351.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 351.4 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prettyprints the current expression.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(P)Tj +/TT4 1 Tf +10 0 0 10 107.4 304.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 304.46 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prints the current expression as though PRINTLEVEL \(Chapter 25\) were set to 2.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(P )Tj +/TT14 1 Tf +1.8003 0 TD +(M)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 134.4053 257.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 257.52 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prints the )Tj +/TT14 1 Tf +4.5093 0 TD +(M)Tj +/TT8 1 Tf +0.6001 0 TD +(th element of the current expression as though PRINTLEVEL were set to 2.)Tj +/TT10 1 Tf +-6.4427 -2.5489 TD +(\(P )Tj +/TT18 1 Tf +1.8003 0 TD +(0)Tj +/TT10 1 Tf +0.5 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 133.5044 209.98 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 209.98 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as P.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(P )Tj +/TT14 1 Tf +1.8003 0 TD +(M)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 142.0562 163.04 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 163.04 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prints the )Tj +/TT14 1 Tf +4.5093 0 TD +(M)Tj +/TT8 1 Tf +0.6001 0 TD +(th element of the current expression as though PRINTLEVEL were set to )Tj +/TT14 1 Tf +32.2798 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-39.3226 -2.4 TD +(\(P 0)Tj +/TT14 1 Tf +2.4004 0 TD +( N)Tj +/TT10 1 Tf +1.2002 0 TD +(\) )Tj +/TT8 1 Tf +30.655 0 TD +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prints the current expression as though PRINTLEVEL were set to )Tj +/TT14 1 Tf +29.0957 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-31.0291 -2.5489 TD +-0.0001 Tc +(? )Tj +/TT4 1 Tf +10 0 0 10 112.8009 69.3 Tm +0 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 69.3 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as \(P 0 100\).)Tj +ET +endstream +endobj +175 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +177 0 obj +<< +/Length 4518 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-50)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(Both )Tj +/TT10 1 Tf +2.3461 0 TD +(\(P)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.2811 0 TD +(M)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( and )]TJ +/TT10 1 Tf +2.2551 0 TD +0 Tw +(\(P)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.2811 0 TD +(M)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6745 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( use the generalized )]TJ +/TT10 1 Tf +9.1806 0 TD +0 Tw +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +[( command )]TJ +/TT10 1 Tf +5.0105 0 TD +0 Tw +(\(NTH )Tj +/TT14 1 Tf +3.0749 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( to obtain the corresponding)]TJ +-32.7055 -1.2889 TD +0.2211 Tw +(element, so that )Tj +/TT18 1 Tf +7.8865 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.9438 0 TD +0.2211 Tw +[( does not have to be a number, e.g., )]TJ +/TT10 1 Tf +17.8142 0 TD +0 Tw +(\(P)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.4711 0 TD +0.5311 Tw +(COND 3\))Tj +/TT8 1 Tf +4.7318 0 TD +0.2211 Tw +[( will work. PP causes all)]TJ +-33.0476 -1.2889 TD +0.0067 Tw +(comments to be printed as )Tj +/TT10 1 Tf +11.963 0 TD +0 Tw +(**COMMENT**)Tj +/TT8 1 Tf +6.6011 0 TD +0.0067 Tw +[( \(see Chapter 26\). P and ? print as )]TJ +/TT10 1 Tf +15.3167 0 TD +0 Tw +(**COMMENT**)Tj +/TT8 1 Tf +6.6011 0 TD +0.0067 Tw +[( only those)]TJ +-40.4818 -1.2889 TD +0.1244 Tw +[(comments that are \(top level\) elements of the current expression. Lower expressions are not really)]TJ +0 -1.2222 TD +0 Tw +(seen by the editor; the printing command simply sets )Tj +/TT10 1 Tf +23.7671 0 TD +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +( and calls )Tj +/TT10 1 Tf +4.3926 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-34.4945 -2.5489 TD +-0.0001 Tc +(PP* )Tj +/TT4 1 Tf +10 0 0 10 171.6009 500.8 Tm +0 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 500.8 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prettyprints current expression, )Tj +/TT18 1 Tf +14.2666 0 TD +(including)Tj +/TT8 1 Tf +3.9092 0 TD +( comments.)Tj +/TT10 1 Tf +-18.1758 -2.8889 TD +(PP*)Tj +/TT8 1 Tf +1.8003 0 TD +( is equivalent to )Tj +/TT10 1 Tf +7.2632 0 TD +(PP)Tj +/TT8 1 Tf +1.2002 0 TD +( except that it first resets )Tj +/TT10 1 Tf +10.9927 0 TD +(**COMMENT**FLG)Tj +/TT8 1 Tf +8.4014 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( \(see Chapter 26\).)Tj +/TT10 1 Tf +-34.1634 -2.5489 TD +(PPV)Tj +/TT4 1 Tf +10 0 0 10 166.2 427.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 427.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0333 Tw +(Prettyprints the current expression as a variable, i.e., no special treatment for )Tj +/TT10 1 Tf +34.5499 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5333 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +/TT10 1 Tf +-41.0842 -1.2889 TD +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +(, etc., or for CLISP.)Tj +/TT10 1 Tf +-3.7337 -2.5489 TD +(PPT)Tj +/TT4 1 Tf +10 0 0 10 166.2 368.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 368.12 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Prettyprints the current expression, printing CLISP translations, if any.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(?=)Tj +/TT4 1 Tf +10 0 0 10 160.8 321.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 321.18 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0389 Tw +[(Prints the argument names and corresponding values for the current expression. Analagous)]TJ +0 -1.2222 TD +0 Tw +(to the )Tj +/TT10 1 Tf +2.7593 0 TD +(?=)Tj +/TT8 1 Tf +1.2002 0 TD +( break command \(Chapter 14\). For example,)Tj +/TT10 1 Tf +5.3739 -2 TD +(*P)Tj +0 -1 TD +(\(STRPOS "A0???" X N \(QUOTE ?\) T\))Tj +T* +(*?=)Tj +T* +(X = "A0???")Tj +T* +(Y = X)Tj +T* +(START = N)Tj +T* +(SKIP = \(QUOTE ?\))Tj +T* +(ANCHOR = T)Tj +T* +(TAIL =)Tj +/TT8 1 Tf +-13.3333 -2.7333 TD +0.04 Tw +(The command )Tj +/TT10 1 Tf +6.7021 0 TD +0 Tw +(MAKE)Tj +/TT8 1 Tf +2.4004 0 TD +0.04 Tw +[( \(see below\) is an imperative form of )]TJ +/TT10 1 Tf +16.7136 0 TD +0 Tw +(?=)Tj +/TT8 1 Tf +1.2002 0 TD +0.04 Tw +[(. It allows you to specify a change to the)]TJ +-27.0162 -1.2889 TD +0 Tw +(element of the current expression that corresponds to a particular argument name.)Tj +0 -2.8889 TD +0.0022 Tw +(All printing functions print to the terminal, regardless of the primary output file. All use the readtable)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0744 Tw +[(. No printing function ever changes the edit chain. All record the current edit chain for use by \\)]TJ +/TT10 1 Tf +44.1173 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +-44.7174 -1.2889 TD +(\(above\). All can be aborted with Control-E.)Tj +ET +endstream +endobj +178 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +180 0 obj +<< +/Length 3929 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-51)Tj +/TT6 1 Tf +10 0 0 10 54 568.2 Tm +(Commands for Leaving the Editor)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT10 1 Tf +9 0 0 9 102 547.2 Tm +(OK)Tj +/TT4 1 Tf +10 0 0 10 112.8 547.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 547.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Exits from the editor.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(STOP)Tj +/TT4 1 Tf +10 0 0 10 123.6 500.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 500.26 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0233 Tw +[(Exits from the editor with an error. Mainly for use in conjunction with )]TJ +/TT10 1 Tf +31.7935 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( commands \(see)]TJ +-34.1939 -1.2889 TD +0 Tw +(next section\) that you want to abort.)Tj +0 -2.8889 TD +0.0544 Tw +(Since all of the commands in the editor are errorset protected, you must exit from the editor)Tj +0 -1.2222 TD +0.3956 Tw +(via a command. )Tj +/TT10 1 Tf +9.1364 0 TD +0 Tw +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +0.3956 Tw +[( provides a way of distinguishing between a successful and)]TJ +-11.5368 -1.2889 TD +0.2444 Tw +[(unsuccessful \(from your standpoint\) editing session. For example, if you are executing)]TJ +/TT10 1 Tf +0 -1.2222 TD +0.2467 Tw +(\(MOVE 3 TO AFTER COND TTY:\))Tj +/TT8 1 Tf +17.436 0 TD +0.1022 Tw +(, and you exitsfrom the lower editor with an )Tj +/TT10 1 Tf +20.7061 0 TD +0 Tw +(OK)Tj +/TT8 1 Tf +1.2002 0 TD +0.1022 Tw +(, the)Tj +/TT10 1 Tf +-39.3423 -1.2889 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0767 Tw +[( command will then complete its operation. If you want to abort the )]TJ +/TT10 1 Tf +31.5006 0 TD +0 Tw +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0767 Tw +[( command,)]TJ +-36.3014 -1.2889 TD +0.1389 Tw +(you must make the )Tj +/TT10 1 Tf +9.3016 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( command generate an error. Do this by exiting from the lower)]TJ +-11.702 -1.2889 TD +0.0289 Tw +(editor with a )Tj +/TT10 1 Tf +6.0178 0 TD +0 Tw +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[( command. In this case, the higher editors edit chain will not be changed)]TJ +-8.4182 -1.2889 TD +0 Tw +(by the )Tj +/TT10 1 Tf +2.9966 0 TD +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +( command.)Tj +-5.397 -2.9556 TD +0.0611 Tw +(Actually, it is also possible to exit the editor by typing Control-D. )Tj +/TT10 1 Tf +30.0786 0 TD +0 Tw +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0611 Tw +[( is preferred even if)]TJ +-32.479 -1.2889 TD +0.0467 Tw +(you are editing at the )Tj +/TT10 1 Tf +9.912 0 TD +0 Tw +(EVALQT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0467 Tw +[( level, as it will perform the necessary "wrapup" to insure that)]TJ +-13.5126 -1.2889 TD +0 Tw +(the changes made while editing will be undoable.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(SAVE)Tj +/TT4 1 Tf +10 0 0 10 123.6035 285.92 Tm +-0.0002 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 285.92 Tm +0 Tc +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0878 Tw +(Exits from the editor and saves the "state of the edit" on the property list of the function or)Tj +0 -1.2222 TD +0.1444 Tw +(variable being edited under the property )Tj +/TT10 1 Tf +19.1557 0 TD +0 Tw +(EDIT-SAVE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1444 Tw +[(. If the editor is called again on the)]TJ +-24.5566 -1.2889 TD +0.11 Tw +(same structure, the editing is effectively "continued," i.e., the edit chain, mark list, value of)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(UNDOLST)Tj +/TT8 1 Tf +4.2007 0 TD +( are restored.)Tj +-9.9941 -2.9556 TD +(For example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*P)Tj +0 -1 TD +(\(NULL X\))Tj +T* +(*F COND P)Tj +T* +(\(COND \(& &\) \(T &\)\))Tj +T* +(*SAVE)Tj +T* +(FOO)Tj +/TT19 1 Tf +0 -1.0667 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( .)Tj +-0.9868 -1 TD +( .)Tj +T* +( .)Tj +/TT19 1 Tf +0 -1.0667 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(EDITF\(FOO\))Tj +-0.9868 -1 TD +(EDIT)Tj +T* +(*P)Tj +T* +(\(COND \(& &\) \(T &\)\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(\(NULL X\))Tj +T* +(*)Tj +ET +endstream +endobj +181 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +184 0 obj +<< +/Length 3816 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-52)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 162 569.54 Tm +(SAVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +[( is necessary only if you are editing many different expressions; an exit from the editor)]TJ +-2.4004 -1.2889 TD +0 Tw +(via )Tj +/TT10 1 Tf +1.696 0 TD +(OK)Tj +/TT8 1 Tf +1.2002 0 TD +0.09 Tw +[( always saves the state of the edit of that call to the editor on the property list of the)]TJ +-2.8962 -1.2889 TD +0 Tw +(atom )Tj +/TT10 1 Tf +2.5738 0 TD +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +(, under the property name )Tj +/TT10 1 Tf +12.2448 0 TD +0 Tw +(LASTVALUE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0689 Tw +(. )Tj +/TT10 1 Tf +0.8878 0 TD +0 Tw +(OK)Tj +/TT8 1 Tf +1.2002 0 TD +0.0689 Tw +[( also remprops )]TJ +/TT10 1 Tf +7.0411 0 TD +0 Tw +(EDIT-SAVE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0689 Tw +[( from the)]TJ +-37.1499 -1.2889 TD +0 Tw +(property list of the function or variable being edited.)Tj +0 -2.8889 TD +0.0422 Tw +(Whenever the editor is entered, it checks to see if it is editing the same expression as the last)Tj +0 -1.2222 TD +0.0001 Tc +0.0032 Tw +(one edited. In this case, it restores the mark list and )Tj +/TT10 1 Tf +23.1635 0 TD +0 Tc +0 Tw +(UNDOLST)Tj +/TT8 1 Tf +4.2007 0 TD +0.0033 Tw +(, and sets )Tj +/TT10 1 Tf +4.3557 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.0002 Tc +0.0031 Tw +( to be the edit)Tj +-35.3205 -1.2889 TD +0 Tc +0 Tw +(chain as of the previous exit from the editor. For example:)Tj +/TT19 1 Tf +9.3333 -2 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(EDITF\(FOO\))Tj +-0.9868 -1 TD +(EDIT)Tj +T* +(*P)Tj +T* +(\(LAMBDA \(X\) \(PROG & & LP & & & &\)\))Tj +T* +( .)Tj +T* +( .)Tj +T* +( .)Tj +T* +(*P)Tj +T* +(\(COND & &\))Tj +T* +(*OK)Tj +T* +(FOO)Tj +/TT19 1 Tf +0 -1.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.)Tj +-1.2368 -1.0667 TD +( . )Tj +/TT8 1 Tf +10.8018 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(any number of )Tj +/TT8 1 Tf +6.103 0 TD +(LISPX)Tj +/TT18 1 Tf +2.7437 0 TD +( inputs)Tj +/TT10 1 Tf +-19.8984 -1.0667 TD +( . )Tj +/TT8 1 Tf +10.8018 0 TD +( )Tj +/TT18 1 Tf +0.25 0 TD +(except for calls to the editor)Tj +/TT19 1 Tf +-11.0518 -1.0667 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(EDITF\(FOO\))Tj +-0.9868 -1 TD +(EDIT)Tj +T* +(*P)Tj +T* +(\(LAMBDA \(X\) \(PROG & & LP & & & &\)\))Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(\(COND & &\))Tj +T* +(*)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.0767 Tw +(Furthermore, as a result of the history feature, if the editor is called on the same expression)Tj +0 -1.2222 TD +0.0933 Tw +(within a certain number of )Tj +/TT10 1 Tf +12.514 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0933 Tw +[( inputs \(namely, the size of the history list, which can be)]TJ +-15.5145 -1.2889 TD +0.0633 Tw +(changed with )Tj +/TT10 1 Tf +6.4138 0 TD +0 Tw +(CHANGESLICE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0633 Tw +(, Chapter 13\) the state of the edit of that expression is restored,)Tj +-13.0149 -1.2889 TD +0.2167 Tw +[(regardless of how many other expressions may have been edited in the meantime. For)]TJ +0 -1.2222 TD +0 Tw +(example:)Tj +/TT19 1 Tf +9.3333 -2 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(EDITF\(FOO\))Tj +-0.9868 -1 TD +(EDIT)Tj +T* +(*)Tj +T* +( .)Tj +T* +( .)Tj +T* +( .)Tj +T* +(*P)Tj +T* +(\(COND \(& &\) \(& &\) \(&\) \(T &\)\))Tj +T* +(*OK)Tj +T* +(FOO)Tj +0 -1.0667 TD +( . )Tj +/TT18 1 Tf +11.4019 0 TD +(a small number of )Tj +/TT8 1 Tf +7.4634 0 TD +(LISPX)Tj +/TT18 1 Tf +2.7437 0 TD +( inputs,)Tj +/TT10 1 Tf +-21.6089 -1.0667 TD +( . )Tj +/TT18 1 Tf +11.4019 0 TD +(including editing)Tj +/TT10 1 Tf +-11.4019 -1 TD +( .)Tj +/TT19 1 Tf +0 -1.0667 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(EDITF\(FOO\))Tj +-0.9868 -1 TD +(EDIT)Tj +0 -1.0667 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(\\)Tj +/TT10 1 Tf +0.606 0 TD +( P)Tj +-1.2061 -1 TD +(\(COND \(& &\) \(& &\) \(&\) \(T &\)\))Tj +T* +(*)Tj +ET +endstream +endobj +185 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +187 0 obj +<< +/Length 4296 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-53)Tj +/TT8 1 Tf +-38.3333 60.6156 TD +0.1033 Tw +(Thus you can always continue editing, including undoing changes from a previous editing)Tj +0 -1.2222 TD +0 Tw +(session, if one of the following occurs:)Tj +5.3333 -2 TD +[( 1.)-1000(No other expressions have been edited since that session \(since saving takes)]TJ +2 -1.2222 TD +(place at )Tj +/TT18 1 Tf +3.6411 0 TD +(exit)Tj +/TT8 1 Tf +1.5 0 TD +( time, intervening calls that were aborted via Control-D or exited)Tj +-5.1411 -1.2222 TD +(via )Tj +/TT10 1 Tf +1.606 0 TD +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +( will not affect the editors memory\). )Tj +-6.0063 -2.0667 TD +[(2.)-1250(That session was "sufficiently" recent. )]TJ +0 -2 TD +[(3.)-1250(It was ended with a )]TJ +/TT10 1 Tf +10.9658 0 TD +(SAVE)Tj +/TT8 1 Tf +2.4004 0 TD +( command.)Tj +/TT6 1 Tf +10 0 0 10 54 439 Tm +(Nested Calls to Editor)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 436.29 m +510.01 436.29 l +S +BT +/TT10 1 Tf +9 0 0 9 102 418 Tm +(TTY:)Tj +/TT4 1 Tf +10 0 0 10 123.6035 418 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 418 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0433 Tw +[(Calls the editor recursively. You can then type in commands, and have them executed. The)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +( command is completed when you exit from the lower editor \(see )Tj +/TT10 1 Tf +29.3189 0 TD +(OK)Tj +/TT8 1 Tf +1.2002 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +( above\).)Tj +-37.5127 -2.9556 TD +(The )Tj +/TT10 1 Tf +2.0027 0 TD +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.0789 Tw +[( command is extremely useful. It enables you to set up a complex operation, and)]TJ +-4.4031 -1.2889 TD +0.1789 Tw +[(perform interactive attention-changing commands part way through it. For example, the)]TJ +0 -1.2222 TD +0 Tw +(command )Tj +/TT10 1 Tf +4.7249 0 TD +0.0633 Tw +(\(MOVE 3 TO AFTER COND 3 P TTY:\) )Tj +/TT8 1 Tf +19.7098 0 TD +0.0267 Tw +(allows you to interact, in effect, )Tj +/TT18 1 Tf +14.2332 0 TD +0 Tw +(within)Tj +/TT8 1 Tf +-38.6679 -1.2889 TD +(the )Tj +/TT10 1 Tf +1.8361 0 TD +(MOVE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1989 Tw +[( command. You can then verify for yourself that the correct location has been)]TJ +-4.2365 -1.2889 TD +0.1022 Tw +[(found, or complete the specification "by hand." In effect, )]TJ +/TT10 1 Tf +26.3152 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.1022 Tw +[( says "Ill tell you what you)]TJ +-28.7156 -1.2889 TD +0 Tw +(should do when you get there.")Tj +0 -2.8889 TD +(The )Tj +/TT10 1 Tf +2.0116 0 TD +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +[( command operates by printing )]TJ +/TT10 1 Tf +14.621 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +[( and then calling the editor. The initial edit)]TJ +-21.4334 -1.2889 TD +0.1467 Tw +(chain in the lower editor is the one that existed in the higher editor at the time the )Tj +/TT10 1 Tf +38.9344 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +-38.9344 -1.2889 TD +0.3089 Tw +[(command was entered. Until you exit from the lower editor, any attention changing)]TJ +0 -1.2222 TD +0.0956 Tw +[(commands you execute only affect the lower editors edit chain. Of course, if you perform)]TJ +T* +0.0689 Tw +(any structure modification commands while under a )Tj +/TT10 1 Tf +24.0281 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +[( command, these will modify the)]TJ +-26.4285 -1.2889 TD +0.0911 Tw +[(structure in both editors, since it is the same structure. When the )]TJ +/TT10 1 Tf +30.1317 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.0911 Tw +[( command finishes,)]TJ +-32.5321 -1.2889 TD +0 Tw +(the lower editors edit chain becomes the edit chain of the higher editor.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(EF)Tj +/TT4 1 Tf +10 0 0 10 112.8 181.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 181.66 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.2156 TD +(EV)Tj +/TT4 1 Tf +10 0 0 10 112.8 170.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 170.72 Tm +([Editor Command])Tj +/TT10 1 Tf +-34.2556 -1.2156 TD +(EP)Tj +/TT4 1 Tf +10 0 0 10 112.8 159.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 159.78 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Calls )Tj +/TT10 1 Tf +2.4648 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(EDITV)Tj +/TT8 1 Tf +3.0005 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(EDITP)Tj +/TT8 1 Tf +3.0005 0 TD +( on )Tj +/TT10 1 Tf +1.6279 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( of current expression.)Tj +ET +endstream +endobj +188 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +190 0 obj +<< +/Length 4561 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-54)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +0.6 -4.38 TD +(Manipulating the Characters of an Atom or String)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT10 1 Tf +9 0 0 9 150 547.2 Tm +(RAISE)Tj +/TT4 1 Tf +10 0 0 10 177 547.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 547.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1656 Tw +(An edit macro defined as )Tj +/TT10 1 Tf +12.2218 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1656 Tw +[( followed by )]TJ +/TT10 1 Tf +6.2867 0 TD +0.3967 Tw +(\(I 1 \(U-CASE \(## 1\)\)\))Tj +/TT8 1 Tf +14.1887 0 TD +0.1656 Tw +(, i.e., it raises to)Tj +-33.8974 -1.2889 TD +0 Tw +(uppercase the current expression, or if a tail, the first element of the current expression.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(LOWER)Tj +/TT4 1 Tf +10 0 0 10 177 488.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 488.66 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(RAISE)Tj +/TT8 1 Tf +3.0005 0 TD +(, except uses )Tj +/TT10 1 Tf +5.7749 0 TD +(L-CASE)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-18.2572 -2.5489 TD +(CAP)Tj +/TT4 1 Tf +10 0 0 10 166.2 441.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 441.12 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1011 Tw +(First does a )Tj +/TT10 1 Tf +5.6051 0 TD +0 Tw +(RAISE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1011 Tw +(, and then lowers all but the first character, i.e., the first character is left)Tj +-8.6056 -1.2889 TD +0 Tw +(capitalized.)Tj +/TT10 1 Tf +0 -2.8889 TD +(RAISE)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.56 0 TD +(LOWER)Tj +/TT8 1 Tf +3.0005 0 TD +0.06 Tw +(, and )Tj +/TT10 1 Tf +2.5629 0 TD +0 Tw +(CAP)Tj +/TT8 1 Tf +1.8003 0 TD +0.06 Tw +[( are all no-ops if the corresponding atom or string is already in that)]TJ +-10.9241 -1.2889 TD +0 Tw +(state.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(RAISE)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 200.8526 344.98 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 344.98 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1033 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.3868 0 TD +0.2489 Tw +(\(I R \(L-CASE)Tj +/TT12 1 Tf +7.6989 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.3533 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT14 1 Tf +1.4491 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1033 Tw +(, i.e., changes every lowercase )Tj +/TT14 1 Tf +13.9693 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1033 Tw +[( to uppercase in the)]TJ +-32.2579 -1.2889 TD +0 Tw +(current expression.)Tj +/TT10 1 Tf +-1.3333 -2.3333 TD +(\(LOWER)Tj +/TT8 1 Tf +3.6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT8 1 Tf +29.8055 0 TD +([Editor Command])Tj +-32.9222 -2.7333 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(RAISE)Tj +/TT8 1 Tf +3.0005 0 TD +(, except performs )Tj +/TT10 1 Tf +7.9009 0 TD +(\(I R )Tj +/TT14 1 Tf +3.0005 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( \(L-CASE )Tj +/TT14 1 Tf +5.4009 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-26.251 -2.9556 TD +(In both )Tj +/TT10 1 Tf +3.4263 0 TD +(\(RAISE )Tj +/TT14 1 Tf +4.2007 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(\(LOWER)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( should be typed in uppercase.)Tj +/TT10 1 Tf +-18.5042 -2.5489 TD +(REPACK)Tj +/TT4 1 Tf +10 0 0 10 182.4 213.64 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 213.64 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Permits the "editing" of an atom or string.)Tj +/TT10 1 Tf +0 -2.8889 TD +(REPACK)Tj +/TT8 1 Tf +3.6006 0 TD +0.0489 Tw +[( operates by calling the editor recursively on )]TJ +/TT10 1 Tf +20.2905 0 TD +0 Tw +(UNPACK)Tj +/TT8 1 Tf +3.6006 0 TD +0.0489 Tw +[( of the current expression, or if)]TJ +-27.4917 -1.2889 TD +0.0356 Tw +(it is a list, on )Tj +/TT10 1 Tf +5.9698 0 TD +0 Tw +(UNPACK)Tj +/TT8 1 Tf +3.6006 0 TD +0.0356 Tw +[( of its first element. If the lower editor is exited successfully, i.e., via )]TJ +/TT10 1 Tf +30.5642 0 TD +0 Tw +(OK)Tj +/TT8 1 Tf +-40.1345 -1.2889 TD +0.0278 Tw +(as opposed to )Tj +/TT10 1 Tf +6.4368 0 TD +0 Tw +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0278 Tw +(, the list of atoms is made into a single atom or string, which replaces the)Tj +-8.8372 -1.2889 TD +0 Tw +(atom or string being "repacked." The new atom or string is always printed.)Tj +0 -2.8889 TD +(Example:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*P)Tj +0 -1 TD +(... "THIS IS A LOGN STRING"\))Tj +T* +(*REPACK)Tj +T* +(*EDIT)Tj +T* +(P)Tj +T* +(\(T H I S % I S % A % L O G N % S T R I N G\))Tj +ET +endstream +endobj +191 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +193 0 obj +<< +/Length 6686 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-55)Tj +/TT10 1 Tf +-29 60.6822 TD +(*\(SW G N\))Tj +0 -1 TD +(*OK)Tj +T* +("THIS IS A LONG STRING")Tj +T* +(*)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(This could also have been accomplished by )Tj +/TT10 1 Tf +19.3389 0 TD +(\(R $GN$ $NG$\))Tj +/TT8 1 Tf +7.8013 0 TD +( or simply )Tj +/TT10 1 Tf +4.7368 0 TD +(\(RC GN NG\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-39.2113 -2.5489 TD +-0.0002 Tc +0.0002 Tw +(\(REPACK @\))Tj +/TT4 1 Tf +10 0 0 10 156.0009 495.6 Tm +0 Tc +0 Tw +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 495.6 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Does )Tj +/TT10 1 Tf +2.4727 0 TD +(\(LC . @\))Tj +/TT8 1 Tf +4.8008 0 TD +( followed by )Tj +/TT10 1 Tf +5.79 0 TD +(REPACK)Tj +/TT8 1 Tf +3.6006 0 TD +(, e.g. )Tj +/TT10 1 Tf +2.2852 0 TD +(\(REPACK THIS$\))Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 54 428.06 Tm +(Manipulating Predicates and Conditional Expressions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 425.35 m +510.01 425.35 l +S +BT +/TT10 1 Tf +9 0 0 9 102 407.06 Tm +(JOINC)Tj +/TT4 1 Tf +10 0 0 10 129 407.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 407.06 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0533 Tw +(Used to join two neighboring )Tj +/TT10 1 Tf +13.4527 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +(s together, e.g. )Tj +/TT10 1 Tf +6.8084 0 TD +0 Tw +(\(COND)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3033 0 TD +(CLAUSE)Tj +3.5969 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.7279 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( followed by)]TJ +/TT10 1 Tf +-35.6901 -1.6222 TD +0 Tw +(\(COND)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3589 0 TD +(CLAUSE)Tj +3.5995 -0.3333 TD +(3)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.8601 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(4)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1089 Tw +[( becomes)]TJ +/TT12 1 Tf +4.1665 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3589 0 TD +(\(COND)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3589 0 TD +(CLAUSE)Tj +3.6007 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.8601 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.8601 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(3)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.8601 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(4)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-41.0845 -1.6222 TD +(JOINC)Tj +/TT8 1 Tf +3.0005 0 TD +( does an )Tj +/TT10 1 Tf +3.8916 0 TD +(\(F COND T\))Tj +/TT8 1 Tf +6.001 0 TD +( first so that you dont have to be at the first )Tj +/TT10 1 Tf +19.5337 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-36.1605 -2.5489 TD +(\(SPLITC )Tj +/TT14 1 Tf +4.8007 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 161.4088 330.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 330.32 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0156 Tw +(Splits one )Tj +/TT10 1 Tf +4.5961 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +[( into two. )]TJ +/TT14 1 Tf +4.7634 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( specifies the last clause in the first )]TJ +/TT10 1 Tf +15.5883 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +(, e.g. )Tj +/TT10 1 Tf +2.3163 0 TD +0.0378 Tw +(\(SPLITC 3\))Tj +/TT8 1 Tf +6.0388 0 TD +0.0156 Tw +[( splits)]TJ +/TT10 1 Tf +-38.7037 -1.2889 TD +0 Tw +(\(COND)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.2867 0 TD +(CLAUSE)Tj +3.5995 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.689 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.689 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(3)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.689 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(4)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( into)]TJ +/TT12 1 Tf +2.0318 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2867 0 TD +(\(COND)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.2867 0 TD +(CLAUSE)Tj +3.5987 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.689 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2867 0 TD +(\(COND)Tj +/TT14 1 Tf +-38.3334 -1.6222 TD +(CLAUSE)Tj +3.6 -0.3333 TD +(3)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.8857 0 TD +(CLAUSE)Tj +3.5999 -0.3333 TD +(4)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1189 Tw +(. Uses the generalized )Tj +/TT10 1 Tf +10.3803 0 TD +0 Tw +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.1189 Tw +[( command )]TJ +/TT10 1 Tf +5.186 0 TD +0 Tw +(\(NTH)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3689 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1189 Tw +(, so that )Tj +/TT14 1 Tf +4.0608 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1189 Tw +[( does not)]TJ +-37.0828 -1.6222 TD +0.1122 Tw +(have to be a number, e.g., you can say )Tj +/TT10 1 Tf +18.0315 0 TD +0.27 Tw +(\(SPLITC RETURN\))Tj +/TT8 1 Tf +9.2715 0 TD +0.1122 Tw +(, meaning split after the clause)Tj +-27.3029 -1.2889 TD +0 Tw +(containing )Tj +/TT10 1 Tf +4.9502 0 TD +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(SPLITC)Tj +/TT8 1 Tf +3.6006 0 TD +( also does an )Tj +/TT10 1 Tf +5.9023 0 TD +(\(F COND T\))Tj +/TT8 1 Tf +6.001 0 TD +( first.)Tj +/TT10 1 Tf +-26.138 -2.5489 TD +(NEGATE)Tj +/TT4 1 Tf +10 0 0 10 134.4 230.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 230.38 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.3033 Tw +(Negates the current expression, i.e. performs )Tj +/TT10 1 Tf +21.839 0 TD +0.7278 Tw +(\(MBD NOT\))Tj +/TT8 1 Tf +6.1287 0 TD +0.3033 Tw +(, except that is smart about)Tj +-27.9677 -1.2889 TD +0.1744 Tw +[(simplifying. For example, if the current expression is: )]TJ +/TT10 1 Tf +25.6022 0 TD +0.4189 Tw +(\(OR \(NULL X\) \(LISTP X\)\))Tj +/TT8 1 Tf +15.4778 0 TD +0 Tw +(,)Tj +/TT10 1 Tf +-41.08 -1.2889 TD +(NEGATE)Tj +/TT8 1 Tf +3.6006 0 TD +( would change it to )Tj +/TT10 1 Tf +8.7671 0 TD +(\(AND X \(NLISTP X\)\))Tj +/TT8 1 Tf +10.8018 0 TD +(.)Tj +/TT10 1 Tf +-23.1694 -2.9556 TD +(NEGATE)Tj +/TT8 1 Tf +3.6006 0 TD +( is implemented via the function )Tj +/TT10 1 Tf +14.5698 0 TD +(NEGATE)Tj +/TT8 1 Tf +3.6006 0 TD +( \(Chapter 3\).)Tj +/TT10 1 Tf +-23.1043 -2.5489 TD +(SWAPC)Tj +/TT4 1 Tf +10 0 0 10 129 133.04 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 133.04 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1 Tw +(Takes a conditional expression of the form )Tj +/TT10 1 Tf +19.6912 0 TD +0.24 Tw +(\(COND \(A B\)\(T C\)\))Tj +/TT8 1 Tf +10.9217 0 TD +0.1 Tw +[( and rearranges it to an)]TJ +-30.6129 -1.2889 TD +0 Tw +(equivalent )Tj +/TT10 1 Tf +4.9385 0 TD +0.0289 Tw +(\(COND \(\(NOT A\) C\)\(T B\)\))Tj +/TT8 1 Tf +13.9178 0 TD +0.0122 Tw +(, or )Tj +/TT10 1 Tf +1.7154 0 TD +0.0289 Tw +(\(COND \(A B\) \(C D\)\))Tj +/TT8 1 Tf +10.9173 0 TD +0.0122 Tw +[( to )]TJ +/TT10 1 Tf +1.3965 0 TD +0.0289 Tw +(\(COND \(\(NOT A\))Tj +-32.8855 -1.2889 TD +0 Tw +(\(COND \(C D\)\)\) \(T B\)\))Tj +/TT8 1 Tf +12.002 0 TD +(.)Tj +ET +endstream +endobj +194 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +196 0 obj +<< +/Length 4766 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-56)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 162 569.54 Tm +(SWAPC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0833 Tw +[( is smart about negations \(uses )]TJ +/TT10 1 Tf +14.3198 0 TD +0 Tw +(NEGATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0833 Tw +(\) and simplifying )Tj +/TT10 1 Tf +8.125 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0833 Tw +[(s. It always produces)]TJ +-31.4463 -1.2889 TD +0.0489 Tw +[(an equivalent expression. It is useful for those cases where one wants to insert extra clauses)]TJ +0 -1.2222 TD +0 Tw +(or tests. )Tj +/TT6 1 Tf +10 0 0 10 102 504.6 Tm +(History Commands in the Editor)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 501.89 m +558.01 501.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 479.94 Tm +0.1967 Tw +(All of your inputs to the editor are stored on the history list )Tj +/TT10 1 Tf +29.002 0 TD +0 Tw +(EDITHISTORY)Tj +/TT8 1 Tf +6.6011 0 TD +0.1967 Tw +[( \(see Chapter 13, the)]TJ +-35.6031 -1.2889 TD +0.0256 Tw +(editors history list, and all of the programmers assistant commands for manipulating the history list,)Tj +0 -1.2222 TD +0 Tw +(e.g. )Tj +/TT10 1 Tf +1.9029 0 TD +(REDO)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6178 0 TD +(USE)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6178 0 TD +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6178 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.1178 Tw +(, etc., are available for use on events on )Tj +/TT10 1 Tf +18.5439 0 TD +0 Tw +(EDITHISTORY)Tj +/TT8 1 Tf +6.6011 0 TD +0.1178 Tw +[(. In addition, the)]TJ +-37.3026 -1.2889 TD +0.0489 Tw +[(following four history commands are recognized specially by the editor. They always operate on the)]TJ +0 -1.2222 TD +0 Tw +(last, i.e. most recent, event.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(DO)Tj +/TT6 1 Tf +10 0 0 10 160.8 412.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 163.5783 412.4 Tm +(COM)Tj +/TT4 1 Tf +10 0 0 10 179.7809 412.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 412.4 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Allows you to supply the command name when it was omitted.)Tj +/TT10 1 Tf +0 -2.8889 TD +(USE)Tj +/TT8 1 Tf +1.8003 0 TD +( is useful when a command name is )Tj +/TT18 1 Tf +16.0317 0 TD +(incorrect)Tj +/TT8 1 Tf +3.5928 0 TD +(.)Tj +-21.4248 -2.9556 TD +0.1122 Tw +(For example, suppose you want to perform )Tj +/TT10 1 Tf +20.1606 0 TD +0.27 Tw +(\(-2 \(SETQ X \(LIST Y Z\)\)\))Tj +/TT8 1 Tf +15.7523 0 TD +0.1122 Tw +[( but instead)]TJ +-35.9129 -1.2889 TD +0.0244 Tw +(types just )Tj +/TT10 1 Tf +4.522 0 TD +0.0578 Tw +(\(SETQ X \(LIST Y Z\)\))Tj +/TT8 1 Tf +11.633 0 TD +0.0244 Tw +[(. The editor will type )]TJ +/TT10 1 Tf +9.8879 0 TD +0.0578 Tw +(SETQ ?)Tj +/TT8 1 Tf +3.6584 0 TD +0.0244 Tw +(, whereupon you can type)Tj +/TT10 1 Tf +-29.7012 -1.2889 TD +0.0156 Tw +(DO -2)Tj +/TT8 1 Tf +3.016 0 TD +0.0067 Tw +[(. The effect is the same as though you had typed )]TJ +/TT10 1 Tf +21.8759 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0067 Tw +(, followed by )Tj +/TT10 1 Tf +6.06 0 TD +0.0156 Tw +(\(LI 1\))Tj +/TT8 1 Tf +3.6161 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5067 0 TD +0.0156 Tw +(\(-1 -2\))Tj +/TT8 1 Tf +4.2162 0 TD +0 Tw +(,)Tj +-41.0913 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9651 0 TD +(OK)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +(, i.e., the command )Tj +/TT10 1 Tf +8.6944 0 TD +0.0533 Tw +(\(-2 \(SETQ X \(LIST Y Z\)\)\))Tj +/TT8 1 Tf +14.669 0 TD +0.0222 Tw +[( is executed. )]TJ +/TT10 1 Tf +5.9907 0 TD +0 Tw +(DO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( also works if the)]TJ +-33.7196 -1.2889 TD +0 Tw +(command is a line command.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(!F)Tj +/TT4 1 Tf +10 0 0 10 160.8017 266.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 266.46 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(DO F)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-6.2109 -2.9556 TD +0.0089 Tw +(In the case of )Tj +/TT10 1 Tf +6.0673 0 TD +0 Tw +(!F)Tj +/TT8 1 Tf +1.2002 0 TD +0.0089 Tw +(, the previous command is always treated as though it were a line command,)Tj +-7.2675 -1.2889 TD +0.0344 Tw +(e.g., if you type )Tj +/TT10 1 Tf +7.2144 0 TD +0.0833 Tw +(\(SETQ X &\))Tj +/TT8 1 Tf +6.1676 0 TD +0.0344 Tw +[( and then )]TJ +/TT10 1 Tf +4.5154 0 TD +0 Tw +(!F)Tj +/TT8 1 Tf +1.2002 0 TD +0.0344 Tw +(, the effect is the same as though you had typed )Tj +/TT10 1 Tf +21.6382 0 TD +0 Tw +(F)Tj +-40.7359 -1.2889 TD +(\(SETQ X &\))Tj +/TT8 1 Tf +6.001 0 TD +(, not )Tj +/TT10 1 Tf +2.2041 0 TD +(\(F \(SETQ X &\)\))Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-17.9398 -2.5489 TD +-0.0001 Tc +(!E )Tj +/TT4 1 Tf +10 0 0 10 166.2009 169.12 Tm +0 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 169.12 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(DO E)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-7.5443 -2.5489 TD +(!N)Tj +/TT4 1 Tf +10 0 0 10 160.8 121.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 121.58 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(DO N)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +197 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +199 0 obj +<< +/Length 4510 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-57)Tj +/TT6 1 Tf +10 0 0 10 54 568.2 Tm +(Miscellaneous Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT10 1 Tf +9 0 0 9 102 547.2 Tm +(NIL)Tj +/TT4 1 Tf +10 0 0 10 118.2026 547.2 Tm +-0.0001 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 547.2 Tm +0 Tc +([Editor Command])Tj +-32.9222 -2.7333 TD +0.2011 Tw +(Unless preceded by )Tj +/TT10 1 Tf +9.5389 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.2011 Tw +[( or )]TJ +/TT10 1 Tf +1.8431 0 TD +0 Tw +(BF)Tj +/TT8 1 Tf +1.2002 0 TD +0.2011 Tw +[(, is always a no-op. Thus extra right parentheses or square)]TJ +-13.1823 -1.2889 TD +0 Tw +(brackets at the ends of commands are ignored.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(CL)Tj +/TT4 1 Tf +10 0 0 10 112.8 488.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 488.66 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Clispifies the current expression \(see Chapter 21\).)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(DW)Tj +/TT4 1 Tf +10 0 0 10 112.8 441.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 441.72 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Dwimifies the current expression \(see Chapter 21\).)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(IFY)Tj +/TT4 1 Tf +10 0 0 10 118.2 394.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 394.78 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1611 Tw +(If the current statement is a )Tj +/TT10 1 Tf +13.288 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1611 Tw +[( statement \(Chapter 9\), replaces it with an eqivalent )]TJ +/TT10 1 Tf +24.452 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +-40.1403 -1.2889 TD +(statement.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(GET*)Tj +/TT4 1 Tf +10 0 0 10 123.6 336.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 336.24 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0878 Tw +(If the current expression is a comment pointer \(see Chapter 26\), reads in the full text of the)Tj +0 -1.2222 TD +0 Tw +(comment, and replaces the current expression by it.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(* . )Tj +/TT14 1 Tf +3.0005 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 139.8062 278.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 278.3 Tm +([Editor Command])Tj +/TT14 1 Tf +-32.9222 -2.7333 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +[( is the text of a comment. )]TJ +/TT10 1 Tf +12.3032 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +[( ascends the edit chain looking for a "safe" place to insert the)]TJ +-13.5034 -1.2889 TD +0.0733 Tw +(comment, e.g., in a )Tj +/TT10 1 Tf +8.8441 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0733 Tw +[( clause, after a )]TJ +/TT10 1 Tf +6.8173 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0733 Tw +[( statement, etc., and inserts )]TJ +/TT10 1 Tf +12.5547 0 TD +0.1767 Tw +(\(* .)Tj +/TT12 1 Tf +2.5771 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.3233 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT18 1 Tf +0.3233 0 TD +(after)Tj +/TT8 1 Tf +1.833 0 TD +0.0733 Tw +[( that)]TJ +-39.2737 -1.2889 TD +0.0533 Tw +[(point, if possible, otherwise before. For example, if the current expression is )]TJ +/TT10 1 Tf +34.5967 0 TD +0.1289 Tw +(\(FACT \(SUB1)Tj +-34.5967 -1.2889 TD +0 Tw +(N\)\))Tj +/TT8 1 Tf +1.8003 0 TD +( in)Tj +/TT10 1 Tf +7.533 -2 TD +([COND)Tj +0 -1 TD +( \(\(ZEROP N\) 1\))Tj +T* +( \(T \(ITIMES N \(FACT \(SUB1 N])Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(then )Tj +/TT10 1 Tf +2.2392 0 TD +0.0467 Tw +(\(* CALL FACT RECURSIVELY\))Tj +/TT8 1 Tf +15.1424 0 TD +0.02 Tw +[( would insert )]TJ +/TT10 1 Tf +6.1918 0 TD +0.0467 Tw +(\(* CALL FACT RECURSIVELY\))Tj +/TT8 1 Tf +15.1424 0 TD +0 Tw +( )Tj +/TT18 1 Tf +0.27 0 TD +(before)Tj +/TT8 1 Tf +-38.986 -1.2889 TD +(the )Tj +/TT10 1 Tf +2.035 0 TD +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.3978 Tw +[( expression. If inserted after the )]TJ +/TT10 1 Tf +17.1985 0 TD +0 Tw +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.3978 Tw +(, the comment would then be)Tj +-26.4347 -1.2889 TD +0.1744 Tw +(\(incorrectly\) returned as the value of the )Tj +/TT10 1 Tf +19.2714 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1744 Tw +[(. However, if the )]TJ +/TT10 1 Tf +8.7633 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1744 Tw +[( was itself a )]TJ +/TT10 1 Tf +6.0996 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +-38.9352 -1.2889 TD +0.1267 Tw +(statement, and hence its value was not being used, the comment could be \(and would be\))Tj +0 -1.2222 TD +0 Tw +(inserted after the )Tj +/TT10 1 Tf +7.7573 0 TD +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +( expression.)Tj +/TT10 1 Tf +-11.3579 -2.9556 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.1789 Tw +[( does not change the edit chain, but )]TJ +/TT10 1 Tf +17.3134 0 TD +0 Tw +(UNFIND)Tj +/TT8 1 Tf +3.6006 0 TD +0.1789 Tw +[( is set to where the comment was actually)]TJ +-21.5141 -1.2889 TD +0 Tw +(inserted.)Tj +ET +endstream +endobj +200 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +202 0 obj +<< +/Length 5367 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-58)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(GETD)Tj +/TT4 1 Tf +10 0 0 10 171.6035 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 568.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Essentially "expands" the current expression in line: )Tj +5.3333 -2 TD +[(1.)-1250(If \()]TJ +/TT10 1 Tf +3.2529 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( of\) the current expression is the name of a macro, expands the macro)Tj +-3.0532 -1.2889 TD +(in line; )Tj +-2 -2 TD +[(2.)-1250(If a CLISP word, translates the current expression and replaces it with the)]TJ +2 -1.2222 TD +(translation;)Tj +-2 -2 TD +[( 3.)-1000(If )]TJ +/TT10 1 Tf +2.9199 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( is the name of a function for which the editor can obtain a symbolic)Tj +-2.7202 -1.2889 TD +(definition, either in-core or from a file, substitutes the argument expressions)Tj +0 -1.2222 TD +(for the corresponding argument names in the body of the definition and)Tj +T* +(replaces the current expression with the result;)Tj +-2 -2 TD +[(4.)-1250(If )]TJ +/TT10 1 Tf +2.9199 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( of the current expression is an open lambda, substitutes the)Tj +-2.7202 -1.2889 TD +(arguments for the corresponding argument names in the body of the)Tj +0 -1.2222 TD +(lambda, and then removes the lambda and argument list.)Tj +-3.3333 -2 TD +0.7422 Tw +[(Warning:)-1177.1(When expanding a function definition or open lambda)]TJ +3.3333 -1.2222 TD +0 Tw +(expression, )Tj +/TT10 1 Tf +5.369 0 TD +(GETD)Tj +/TT8 1 Tf +2.4004 0 TD +0.1322 Tw +[( does a simple substitution of the actual arguments)]TJ +-7.7694 -1.2889 TD +0.04 Tw +[(for the formal arguments. Therefore, if any of the function arguments)]TJ +0 -1.2222 TD +0.2467 Tw +(are used in other ways in the function definition \(as functions, as)Tj +T* +0.3589 Tw +(record fields, etc.\), they will simply be replaced with the actual)Tj +T* +0 Tw +(arguments.)Tj +/TT10 1 Tf +-8.6667 -2.4822 TD +(\(MAKEFN \()Tj +/TT14 1 Tf +5.4009 0 TD +(FN . ACTUALARGS)Tj +/TT10 1 Tf +9.0015 0 TD +(\) )Tj +/TT14 1 Tf +1.2002 0 TD +(ARGLIST N1 N2)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 366.0352 296.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 296.86 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0511 Tw +(The inverse of )Tj +/TT10 1 Tf +6.6709 0 TD +0 Tw +(GETD)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +(: makes the current expression into a function. )Tj +/TT14 1 Tf +21.3521 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0511 Tw +[( is the function name,)]TJ +/TT14 1 Tf +-31.6236 -1.2889 TD +0 Tw +(ARGLIST)Tj +/TT8 1 Tf +4.2007 0 TD +0.3656 Tw +[( its arguments. The argument names are substituted for the corresponding)]TJ +-4.2007 -1.2889 TD +0.0311 Tw +(argument values in )Tj +/TT14 1 Tf +8.9024 0 TD +0 Tw +(ACTUALARGS)Tj +/TT8 1 Tf +6.001 0 TD +0.0311 Tw +(, and the result becomes the body of the function definition)Tj +-14.9034 -1.2889 TD +0 Tw +(for )Tj +/TT14 1 Tf +1.5239 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +(. The current expression is then replaced with )Tj +/TT10 1 Tf +20.6519 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +( . )Tj +/TT14 1 Tf +1.8003 0 TD +(ACTUALARGS)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-33.5776 -2.9556 TD +(If )Tj +/TT14 1 Tf +0.9588 0 TD +(N)Tj +0.6001 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0389 Tw +[( and )]TJ +/TT14 1 Tf +2.2707 0 TD +0 Tw +(N)Tj +0.6005 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0389 Tw +[( are supplied, )]TJ +/TT10 1 Tf +6.3916 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +0.6017 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0944 Tw +[( THRU )]TJ +/TT14 1 Tf +3.7895 0 TD +0 Tw +(N)Tj +0.5994 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0389 Tw +[( is used rather than the current expression; if just)]TJ +/TT14 1 Tf +-19.4123 -1.6222 TD +0 Tw +(N)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( is supplied, )Tj +/TT10 1 Tf +5.6157 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(N)Tj +0.602 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( THRU -1\))Tj +/TT8 1 Tf +5.4009 0 TD +( is used.)Tj +-14.0187 -3.2889 TD +(If )Tj +/TT14 1 Tf +1.3777 0 TD +(ARGLIST)Tj +/TT8 1 Tf +4.2007 0 TD +0.4578 Tw +[( is omitted, )]TJ +/TT10 1 Tf +6.5501 0 TD +0 Tw +(MAKEFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.4578 Tw +[( will make up some arguments, using elements of)]TJ +/TT14 1 Tf +-15.7291 -1.2889 TD +0 Tw +(ACTUALARGS)Tj +/TT8 1 Tf +6.001 0 TD +0.0522 Tw +(, if they are literal atoms, otherwise arguments selected from )Tj +/TT10 1 Tf +27.509 0 TD +0.1244 Tw +(\(X Y Z A B C)Tj +-33.51 -1.2889 TD +0 Tw +(...\))Tj +/TT8 1 Tf +2.4004 0 TD +(, avoiding duplicate argument names.)Tj +-2.4004 -2.9556 TD +0.0633 Tw +[(Example: If the current expression is )]TJ +/TT10 1 Tf +17.0571 0 TD +0.1522 Tw +(\(COND \(\(CAR X\) \(PRINT Y T\)\) \(T)Tj +/TT12 1 Tf +18.9163 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3133 0 TD +(\(HELP\)\)\))Tj +/TT8 1 Tf +4.8008 0 TD +(,)Tj +-41.0875 -1.2889 TD +(then )Tj +/TT10 1 Tf +2.2648 0 TD +0.1089 Tw +(\(MAKEFN \(FOO \(CAR X\) Y\) \(A B\)\))Tj +/TT8 1 Tf +18.6563 0 TD +0.0456 Tw +[( will define )]TJ +/TT10 1 Tf +5.3686 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +[( as )]TJ +/TT10 1 Tf +1.5149 0 TD +0.1089 Tw +(\(LAMBDA \(A B\) \(COND)Tj +-29.6049 -1.2889 TD +0.2278 Tw +(\(A \(PRINT B T\)\) \(T \(HELP\)\)\)\))Tj +/TT8 1 Tf +17.9416 0 TD +0.0944 Tw +[( and then replace the current expression with )]TJ +/TT10 1 Tf +20.988 0 TD +0 Tw +(\(FOO)Tj +-38.9296 -1.2889 TD +(\(CAR X\) Y\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +ET +endstream +endobj +203 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +205 0 obj +<< +/Length 3772 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-59)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(\(MAKE)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ARGNAME)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(EXP)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 198.3149 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 568.2 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1556 Tw +(Makes the value of )Tj +/TT14 1 Tf +9.2311 0 TD +0 Tw +(ARGNAME)Tj +/TT8 1 Tf +4.2007 0 TD +0.1556 Tw +[( be )]TJ +/TT14 1 Tf +1.8433 0 TD +0 Tw +(EXP)Tj +/TT8 1 Tf +1.8003 0 TD +0.1556 Tw +[( in the call which is the current expression, i.e. a )]TJ +/TT10 1 Tf +23.0632 0 TD +0 Tw +(?=)Tj +/TT8 1 Tf +-40.1386 -1.2889 TD +(command following a )Tj +/TT10 1 Tf +9.9683 0 TD +(MAKE)Tj +/TT8 1 Tf +2.4004 0 TD +( will always print )Tj +/TT14 1 Tf +8.0073 0 TD +(ARGNAME)Tj +/TT10 1 Tf +4.2007 0 TD +( =)Tj +/TT14 1 Tf +1.2002 0 TD +( EXP)Tj +/TT8 1 Tf +2.4004 0 TD +(. For example:)Tj +/TT10 1 Tf +-18.8439 -2 TD +(*P)Tj +0 -1 TD +(\(JSYS\))Tj +T* +(*?=)Tj +T* +(JSYS[N;AC1,AC2,AC3,RESULTAC])Tj +T* +(*\(MAKE N 10\))Tj +T* +(*\(MAKE RESULTAC 3\))Tj +T* +(*P)Tj +T* +(\(JSYS 10 NIL NIL NIL 3\))Tj +-10.6667 -2.3267 TD +(Q)Tj +/TT4 1 Tf +10 0 0 10 107.4 430.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 430.06 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Quotes the current expression, i.e. )Tj +/TT10 1 Tf +15.2822 0 TD +(MBD QUOTE)Tj +/TT8 1 Tf +5.4011 0 TD +(.)Tj +/TT10 1 Tf +-22.0167 -2.5489 TD +(D)Tj +/TT4 1 Tf +10 0 0 10 107.4 382.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 382.52 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Deletes the current expression, then prints new current expression, i.e. )Tj +/TT10 1 Tf +31.3145 0 TD +(\(:\) I P)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 54 314.98 Tm +(Commands That Evaluate)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 312.27 m +510.01 312.27 l +S +BT +/TT10 1 Tf +9 0 0 9 102 293.98 Tm +(E)Tj +/TT4 1 Tf +10 0 0 10 107.4 293.98 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 293.98 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0711 Tw +(Causes the editor to call the Interlisp executive )Tj +/TT10 1 Tf +21.4361 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0711 Tw +[( giving it the next input as argument.)]TJ +-24.4366 -1.2889 TD +0 Tw +(Example: )Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(*E BREAK\(FIE FUM\))Tj +0 -1 TD +(\(FIE FUM\))Tj +T* +(*E \(FOO\))Tj +0 -2.7778 TD +(\(FIE BROKEN\))Tj +0 -1 TD +(:)Tj +-9.3333 -2.7333 TD +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +[( only works when when typed in, e.g, )]TJ +/TT10 1 Tf +17.5555 0 TD +0.1922 Tw +(\(INSERT D BEFORE E\))Tj +/TT8 1 Tf +11.9785 0 TD +0.08 Tw +[( will treat )]TJ +/TT10 1 Tf +4.7234 0 TD +0 Tw +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +[( as a pattern,)]TJ +-35.4576 -1.2889 TD +0 Tw +(and search for )Tj +/TT10 1 Tf +6.5405 0 TD +(E)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-8.474 -2.5489 TD +(\(E)Tj +/TT6 1 Tf +10 0 0 10 112.8017 129.24 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 115.5801 129.24 Tm +(X)Tj +/TT10 1 Tf +0.6 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 126.3809 129.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 129.24 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Evaluates )Tj +/TT18 1 Tf +4.5488 0 TD +(X)Tj +/TT8 1 Tf +0.7222 0 TD +(, i.e., performs )Tj +/TT10 1 Tf +6.5757 0 TD +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, and prints the result on the terminal.)Tj +/TT10 1 Tf +-17.6307 -2.5489 TD +(\(E)Tj +/TT6 1 Tf +10 0 0 10 112.8017 81.7 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 115.5801 81.7 Tm +(X)Tj +/TT21 1 Tf +10 0 0 10 120.981 81.7 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 123.7593 81.7 Tm +(T\))Tj +/TT4 1 Tf +10 0 0 10 134.5609 81.7 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 81.7 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(E)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(x)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( but does not print.)Tj +ET +endstream +endobj +206 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT21 207 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +209 0 obj +<< +/Length 5813 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-60)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +(The )Tj +/TT10 1 Tf +2.0283 0 TD +(\(E)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.3544 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1044 Tw +[( and )]TJ +/TT10 1 Tf +2.4018 0 TD +0 Tw +(\(E)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.3544 0 TD +(X)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3544 0 TD +(T\))Tj +/TT8 1 Tf +1.2002 0 TD +0.1044 Tw +[( commands are mainly intended for use by macros and subroutine)]TJ +-10.8942 -1.2889 TD +0.2867 Tw +(calls to the editor; you would probably type in a form for evaluation using the more)Tj +0 -1.2222 TD +0 Tw +(convenient format of the \(atomic\) )Tj +/TT10 1 Tf +15.0308 0 TD +(E)Tj +/TT8 1 Tf +0.6001 0 TD +( command.)Tj +/TT10 1 Tf +-16.9642 -2.5489 TD +(\(I )Tj +/TT14 1 Tf +1.8003 0 TD +(C X)Tj +1.7997 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... X)Tj +3.6 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 236.4017 524 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 524 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +0.0267 Tw +(Executes the )Tj +/TT18 1 Tf +5.8224 0 TD +(editor command)Tj +/TT8 1 Tf +6.5164 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2767 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(C)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6623 0 TD +(Y)Tj +0.5998 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0622 Tw +[( ... )]TJ +/TT14 1 Tf +3.1249 0 TD +0 Tw +(Y)Tj +0.5995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0267 Tw +[( where )]TJ +/TT14 1 Tf +3.3224 0 TD +0 Tw +(Y)Tj +0.6009 -0.3333 TD +(i)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0622 Tw +[( = \(EVAL)]TJ +/TT12 1 Tf +4.9252 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.2767 0 TD +(X)Tj +0.5992 -0.3333 TD +(i)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0267 Tw +[(. If )]TJ +/TT14 1 Tf +1.7499 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0267 Tw +[( is not an atom,)]TJ +/TT14 1 Tf +-34.4768 -1.6222 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +( is evaluated also.)Tj +-0.6001 -2.9556 TD +(Examples:)Tj +/TT10 1 Tf +0 -2.8889 TD +0.3589 Tw +(\(I 3 \(GETD FOO\)\))Tj +/TT8 1 Tf +11.2783 0 TD +0.15 Tw +[( will replace the third element of the current expression with the)]TJ +-11.2783 -1.2889 TD +0 Tw +(definition of )Tj +/TT10 1 Tf +5.7109 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-7.5112 -2.9556 TD +0.0222 Tw +(\(I N FOO \(CAR FIE\)\))Tj +/TT8 1 Tf +11.4907 0 TD +0.0089 Tw +[( will attach the value of )]TJ +/TT10 1 Tf +10.6427 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0089 Tw +[( and )]TJ +/TT10 1 Tf +2.2107 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0089 Tw +[( of the value of )]TJ +/TT10 1 Tf +6.8775 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0089 Tw +[( to the end)]TJ +-36.6224 -1.2889 TD +0 Tw +(of the current expression.)Tj +/TT10 1 Tf +0 -2.8889 TD +(\(I F = FOO T\))Tj +/TT8 1 Tf +7.8013 0 TD +( will search for an expression )Tj +/TT10 1 Tf +13.1235 0 TD +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +( to the value of )Tj +/TT10 1 Tf +6.8262 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-30.7515 -2.9556 TD +0.1878 Tw +(\(I \(COND \(\(NULL FLG\) -1\) \(T 1\)\) FOO\))Tj +/TT8 1 Tf +23.5181 0 TD +0.0778 Tw +(, if )Tj +/TT10 1 Tf +1.5296 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0778 Tw +[( is )]TJ +/TT10 1 Tf +1.3704 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0778 Tw +(, inserts the value of )Tj +/TT10 1 Tf +9.5139 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +-39.5325 -1.2889 TD +0.0533 Tw +(before the first element of the current expression, otherwise replaces the first element by the)Tj +0 -1.2222 TD +0 Tw +(value of )Tj +/TT10 1 Tf +3.8169 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-5.6172 -2.9556 TD +(The )Tj +/TT10 1 Tf +1.9772 0 TD +(I)Tj +/TT8 1 Tf +0.6001 0 TD +0.0533 Tw +[( command sets an internal flag to indicate to the structure modification commands )]TJ +/TT18 1 Tf +37.4189 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +-39.9962 -1.2889 TD +(to copy expression\(s\) when inserting, replacing, or attaching.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(EVAL)Tj +/TT4 1 Tf +10 0 0 10 171.6 243.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 243.66 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Does an )Tj +/TT10 1 Tf +3.8047 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +( of the current expression.)Tj +/TT10 1 Tf +-6.2051 -2.9556 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.2556 Tw +(, line-feed, and the )Tj +/TT10 1 Tf +9.4802 0 TD +0 Tw +(GO)Tj +/TT8 1 Tf +1.2002 0 TD +0.2556 Tw +[( command together effectively allows you to "single-step" a)]TJ +-13.0808 -1.2889 TD +0 Tw +(program through its symbolic definition.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(GETVAL)Tj +/TT4 1 Tf +10 0 0 10 182.4 158.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 158.52 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Replaces the current expression by the result of evaluating it.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(##)Tj +/TT8 1 Tf +1.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +1.8 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( COM)Tj +2.4 -0.3333 TD +(2)Tj +0.6 0.3333 TD +( ... COM)Tj +4.8 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 271.0508 111.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 407.33 111.58 Tm +([NLambda NoSpread Function])Tj +-27.2589 -3.0667 TD +0.0933 Tw +[(An nlambda, nospread function \(not a command\). Its value is what the current expression)]TJ +0 -1.2222 TD +0.0233 Tw +(would be after executing the edit commands )Tj +/TT14 1 Tf +20.1062 0 TD +0 Tw +(COM)Tj +1.8016 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0578 Tw +[( ... )]TJ +/TT14 1 Tf +3.116 0 TD +0 Tw +(COM)Tj +1.7995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0233 Tw +[( starting from the present edit)]TJ +-28.0233 -1.6222 TD +0.0867 Tw +[(chain. Generates an error if any of )]TJ +/TT14 1 Tf +16.2026 0 TD +0 Tw +(COM)Tj +1.8029 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0867 Tw +[( thru )]TJ +/TT10 1 Tf +2.5796 0 TD +0 Tw +(COM)Tj +1.8004 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0867 Tw +[( cause errors. The current edit chain is)]TJ +-23.5856 -1.6222 TD +0 Tw +(never changed.)Tj +ET +endstream +endobj +210 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +212 0 obj +<< +/Length 6857 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-61)Tj +/TT8 1 Tf +-34.3333 60.6156 TD +[(Note:)-901.2(The )]TJ +/TT10 1 Tf +5.326 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5689 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5689 0 TD +(:)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5689 0 TD +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5689 0 TD +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0689 Tw +(, and )Tj +/TT10 1 Tf +2.5806 0 TD +0 Tw +(CHANGE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0689 Tw +[( commands make special)]TJ +-20.0511 -1.2889 TD +0.0478 Tw +(checks for )Tj +/TT10 1 Tf +4.7982 0 TD +0 Tw +(##)Tj +/TT8 1 Tf +1.2002 0 TD +0.0478 Tw +[( forms in the expressions used for inserting or replacing,)]TJ +-5.9984 -1.2889 TD +0.1967 Tw +(and use a copy of )Tj +/TT10 1 Tf +8.9579 0 TD +0 Tw +(##)Tj +/TT8 1 Tf +1.2002 0 TD +0.1967 Tw +[( form instead \(see the )]TJ +/TT10 1 Tf +10.705 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +0.25 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.1967 Tw +(, and )Tj +/TT10 1 Tf +2.8362 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.1967 Tw +[( Commands)]TJ +-25.7497 -1.2889 TD +0.0367 Tw +[(section above\). Thus, )]TJ +/TT10 1 Tf +9.9362 0 TD +0.0867 Tw +(\(INSERT \(## 3 2\) AFTER 1\))Tj +/TT8 1 Tf +15.4358 0 TD +0.0367 Tw +[( is equivalent)]TJ +-25.372 -1.2889 TD +0 Tw +(to )Tj +/TT10 1 Tf +1.1221 0 TD +(\(I INSERT \(COPY \(## 3 2\)\) AFTER 1\))Tj +/TT8 1 Tf +21.0034 0 TD +(.)Tj +-29.4588 -2.9556 TD +(Example: )Tj +/TT10 1 Tf +4.4209 0 TD +0.0967 Tw +(\(I R X \(## \(CONS .. Z\)\)\))Tj +/TT8 1 Tf +15.5824 0 TD +0.04 Tw +[( replaces all )]TJ +/TT10 1 Tf +5.5648 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +(s in the current expression by the)Tj +-26.1682 -1.2889 TD +0 Tw +(first )Tj +/TT10 1 Tf +2.019 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +( containing a )Tj +/TT10 1 Tf +5.9502 0 TD +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-14.9697 -2.9556 TD +(The )Tj +/TT10 1 Tf +2.0027 0 TD +(I)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[( command is not very convenient for computing an )]TJ +/TT18 1 Tf +23.6363 0 TD +0 Tw +(entire)Tj +/TT8 1 Tf +2.3345 0 TD +0.0789 Tw +[( edit command for execution, since it)]TJ +-28.5736 -1.2889 TD +0.0456 Tw +[(computes the command name and its arguments separately. Also, the )]TJ +/TT10 1 Tf +31.7951 0 TD +0 Tw +(I)Tj +/TT8 1 Tf +0.6001 0 TD +0.0456 Tw +[( command cannot be used to)]TJ +-32.3952 -1.2889 TD +0.3567 Tw +[(compute an atomic command. The following two commands provide more general ways of)]TJ +0 -1.2222 TD +0 Tw +(computing commands.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(COMS)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +0.5995 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... X)Tj +3.6 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 185.2509 401.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 401.8 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Each )Tj +/TT14 1 Tf +2.3867 0 TD +(X)Tj +0.6011 -0.3333 TD +(i)Tj +/TT8 1 Tf +0.6 0.3333 TD +( is evaluated and its value is executed as a command.)Tj +-3.5878 -3.2889 TD +0.14 Tw +(For example, )Tj +/TT10 1 Tf +6.2761 0 TD +0.3367 Tw +(\(COMS \(COND \(X \(LIST 1 X\)\)\)\))Tj +/TT8 1 Tf +18.4861 0 TD +0.14 Tw +[( will replace the first element of the)]TJ +-24.7622 -1.2889 TD +0.3044 Tw +(current expression with the value of )Tj +/TT10 1 Tf +18.0249 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.3044 Tw +[( if non-)]TJ +/TT10 1 Tf +3.7759 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3044 Tw +[(, otherwise do nothing. The editor)]TJ +-24.2012 -1.2889 TD +0 Tw +(command )Tj +/TT10 1 Tf +4.6982 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( is a no-op \(see the Miscellaneous Commands section above\).)Tj +/TT10 1 Tf +-7.8319 -2.5489 TD +(\(COMSQ)Tj +/TT6 1 Tf +10 0 0 10 134.4053 298.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.1836 298.46 Tm +(COM)Tj +1.7996 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COM)Tj +4.8 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 212.7809 298.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 298.46 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Executes )Tj +/TT14 1 Tf +4.1318 0 TD +(COM)Tj +1.8004 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COM)Tj +1.7995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +/TT10 1 Tf +-11.9322 -3.2889 TD +(COMSQ)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +[( is mainly useful in conjunction with the )]TJ +/TT10 1 Tf +18.495 0 TD +0 Tw +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0589 Tw +[( command. For example, suppose you)]TJ +-23.8959 -1.2889 TD +0.1056 Tw +(want to compute an entire list of commands for evaluation, as opposed to computing each)Tj +0 -1.2222 TD +0.0667 Tw +(command one at a time as does the )Tj +/TT10 1 Tf +16.2643 0 TD +0 Tw +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0667 Tw +[( command. You would then write )]TJ +/TT10 1 Tf +15.91 0 TD +0.1589 Tw +(\(COMS \(CONS)Tj +-34.5747 -1.2889 TD +0 Tw +(COMSQ)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT18 1 Tf +0.2744 0 TD +(X)Tj +/TT10 1 Tf +0.7222 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0244 Tw +[( where )]TJ +/TT18 1 Tf +3.3179 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.7222 0 TD +0.0244 Tw +[( computed the list of commands, e.g.,)]TJ +/TT12 1 Tf +16.6447 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2744 0 TD +0.0589 Tw +(\(COMS \(CONS COMSQ \(GETP)Tj +-26.7567 -1.2889 TD +0 Tw +(FOO COMMANDS\)\)\))Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 54 152.52 Tm +(Commands That Test)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 149.81 m +510.01 149.81 l +S +BT +/TT10 1 Tf +9 0 0 9 102 131.52 Tm +(\(IF)Tj +/TT6 1 Tf +10 0 0 10 118.2 131.52 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 120.9783 131.52 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT4 1 Tf +10 0 0 10 137.181 131.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 131.52 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.0489 Tw +(Generates an error )Tj +/TT18 1 Tf +8.6159 0 TD +0 Tw +(unless)Tj +/TT8 1 Tf +2.5576 0 TD +0.0489 Tw +[( the value of )]TJ +/TT10 1 Tf +5.8997 0 TD +0 Tw +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.2989 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0489 Tw +[( is true. In other words, if )]TJ +/TT10 1 Tf +12.0898 0 TD +0 Tw +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.2989 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0489 Tw +[( causes)]TJ +-38.1622 -1.2889 TD +0 Tw +(an error or )Tj +/TT10 1 Tf +4.9829 0 TD +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) = NIL)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +( will cause an error.)Tj +-14.7344 -2.9556 TD +0.0489 Tw +(For some editor commands, the occurrence of an error has a well defined meaning, i.e., they)Tj +0 -1.2222 TD +0.0089 Tw +(use errors to branch on, as )Tj +/TT10 1 Tf +11.923 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( uses )]TJ +/TT10 1 Tf +2.4475 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0089 Tw +[( and non-)]TJ +/TT10 1 Tf +4.2536 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0089 Tw +[(. For example, an error condition in a)]TJ +-24.625 -1.2889 TD +0.2644 Tw +[(location specification may simply mean "not this one, try the next." Thus the location)]TJ +ET +endstream +endobj +213 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +216 0 obj +<< +/Length 6101 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-62)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +0.0767 Tw +(specification )Tj +/TT10 1 Tf +6.2051 0 TD +0.1833 Tw +(\(IPLUS \(E \(OR \(NUMBERP \(## 3\)\))Tj +/TT12 1 Tf +18.9196 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3267 0 TD +0.1833 Tw +(\(ERROR!\)\) T\)\))Tj +/TT8 1 Tf +7.9846 0 TD +0.0767 Tw +[( specifies the first)]TJ +/TT10 1 Tf +-33.436 -1.2889 TD +0 Tw +(IPLUS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1089 Tw +[( whose second argument is a number. The )]TJ +/TT10 1 Tf +20.1382 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.1089 Tw +[( command, by equating )]TJ +/TT10 1 Tf +11.1406 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1089 Tw +[( to error,)]TJ +-37.2798 -1.2889 TD +0.0367 Tw +[(provides a more natural way of accomplishing the same result. Thus, an equivalent location)]TJ +0 -1.2222 TD +0 Tw +(specification is )Tj +/TT10 1 Tf +6.7666 0 TD +(\(IPLUS \(IF \(NUMBERP \(## 3\)\)\)\))Tj +/TT8 1 Tf +17.4028 0 TD +(.)Tj +-24.1694 -2.9556 TD +(The )Tj +/TT10 1 Tf +2.0838 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.16 Tw +[( command can also be used to select between two alternate lists of commands for)]TJ +-3.284 -1.2889 TD +0 Tw +(execution.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(IF )Tj +/TT14 1 Tf +2.4004 0 TD +(X COMS)Tj +3.5996 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( COMS)Tj +3 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 247.2009 474.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 474.8 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(If )Tj +/TT10 1 Tf +0.991 0 TD +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3211 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( is true, execute )]TJ +/TT14 1 Tf +7.3787 0 TD +0 Tw +(COMS)Tj +2.3996 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0711 Tw +(; if )Tj +/TT10 1 Tf +1.5162 0 TD +0 Tw +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3211 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( causes an error or is equal to )]TJ +/TT10 1 Tf +13.6954 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0711 Tw +(, execute)Tj +/TT14 1 Tf +-37.4248 -1.6222 TD +0 Tw +(COMS)Tj +2.4 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +-3 -3.2889 TD +(Thus )Tj +/TT10 1 Tf +2.4717 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +( is equivalent to)Tj +/TT10 1 Tf +5.6615 -2 TD +(\(COMS \(CONS COMSQ)Tj +0 -1 TD +( \(COND)Tj +T* +( \(\(CAR \(NLSETQ \(EVAL X\)\)\))Tj +T* +( )Tj +/TT14 1 Tf +7.8013 0 TD +(COMS)Tj +2.3987 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +-10.8 -1.3333 TD +( \(T )Tj +/TT14 1 Tf +8.4014 0 TD +(COMS)Tj +2.3986 -0.3333 TD +(2)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\)\)\)\))Tj +/TT8 1 Tf +-20.7333 -3.0667 TD +0.07 Tw +(For example, the command )Tj +/TT10 1 Tf +12.6115 0 TD +0.1678 Tw +(\(IF \(READP T\) NIL \(P\)\))Tj +/TT8 1 Tf +13.8733 0 TD +0.07 Tw +[( will print the current expression)]TJ +-26.4848 -1.2889 TD +0 Tw +(provided the input buffer is empty.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(IF)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X COMS)Tj +3.5997 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 211.6509 284.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 284.46 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(\(EVAL)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( is true, execute )Tj +/TT14 1 Tf +7.0942 0 TD +(COMS)Tj +2.3996 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(; otherwise generate an error.)Tj +/TT10 1 Tf +-16.7978 -2.8822 TD +(\(LP)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COMS)Tj +2.3997 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COMS)Tj +5.4 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 254.8508 230.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 230.92 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Repeatedly executes )Tj +/TT14 1 Tf +9.2402 0 TD +(COMS)Tj +2.3987 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +( until an error occurs.)Tj +-18.2389 -3.2889 TD +0.03 Tw +(For example,)Tj +/TT10 1 Tf +5.7761 0 TD +0.0733 Tw +[( \(LP F PRINT \(N T\)\))]TJ +/TT8 1 Tf +11.7685 0 TD +0.03 Tw +[( will attach a )]TJ +/TT10 1 Tf +6.0053 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[( at the end of every )]TJ +/TT10 1 Tf +8.9183 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.03 Tw +[( expression.)]TJ +/TT10 1 Tf +-36.0687 -1.2889 TD +0.2289 Tw +(\(LP F PRINT \(IF \(## 3\) NIL \(\(N T\)\)\)\))Tj +/TT8 1 Tf +23.4346 0 TD +0.0956 Tw +[( will attach a )]TJ +/TT10 1 Tf +6.2675 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0956 Tw +[( at the end of each print)]TJ +-30.3022 -1.2889 TD +0.0178 Tw +[(expression which does not already have a second argument. The form )]TJ +/TT10 1 Tf +31.645 0 TD +0.0422 Tw +(\(## 3\))Tj +/TT8 1 Tf +3.6428 0 TD +0.0178 Tw +[( will cause an)]TJ +-35.2878 -1.2889 TD +0.2422 Tw +(error if the edit command )Tj +/TT10 1 Tf +12.8376 0 TD +0 Tw +(3)Tj +/TT8 1 Tf +0.6001 0 TD +0.2422 Tw +[( causes an error, thereby selecting )]TJ +/TT10 1 Tf +16.6115 0 TD +0.5822 Tw +(\(\(N T\)\))Tj +/TT8 1 Tf +4.7829 0 TD +0.2422 Tw +[( as the list of)]TJ +-34.8321 -1.2889 TD +0.0722 Tw +(commands to be executed. The )Tj +/TT10 1 Tf +14.2483 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0722 Tw +[( could also be written as )]TJ +/TT10 1 Tf +11.3782 0 TD +0.1744 Tw +(\(IF \(CDDR \(##\)\) NIL \(\(N)Tj +-26.8267 -1.2889 TD +0 Tw +(T\)\)\))Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-2.4004 -2.9556 TD +0.2356 Tw +(When an error occurs, )Tj +/TT10 1 Tf +10.9827 0 TD +0 Tw +(LP)Tj +/TT8 1 Tf +1.2002 0 TD +0.2356 Tw +[( prints )]TJ +/TT18 1 Tf +3.5903 0 TD +0 Tw +(N)Tj +/TT12 1 Tf +0.7778 0 TD +( )Tj +/TT10 1 Tf +0.4856 0 TD +(OCCURRENCES)Tj +/TT8 1 Tf +6.6011 0 TD +0.2356 Tw +[( where )]TJ +/TT18 1 Tf +3.7402 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.2356 Tw +[( is the number of times the)]TJ +-28.1556 -1.2889 TD +0.3256 Tw +[(commands were successfully executed. The edit chain is left as of the last complete)]TJ +0 -1.2222 TD +0 Tw +(successful execution of )Tj +/TT14 1 Tf +10.3633 0 TD +(COMS)Tj +2.4034 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +ET +endstream +endobj +217 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +219 0 obj +<< +/Length 6679 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-63)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(\(LPQ)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COMS)Tj +2.4 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COMS)Tj +5.4 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 212.2509 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 568.2 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(LP)Tj +/TT8 1 Tf +1.2002 0 TD +( but does not print the message )Tj +/TT14 1 Tf +14.0732 0 TD +(N)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(OCCURRENCES)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-26.5352 -2.9556 TD +0.0767 Tw +(In order to prevent non-terminating loops, both )Tj +/TT10 1 Tf +21.8501 0 TD +0 Tw +(LP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0767 Tw +[( and )]TJ +/TT10 1 Tf +2.3462 0 TD +0 Tw +(LPQ)Tj +/TT8 1 Tf +1.8003 0 TD +0.0767 Tw +[( terminate when the number of)]TJ +-27.1968 -1.2889 TD +0.3022 Tw +(iterations reaches )Tj +/TT10 1 Tf +8.5673 0 TD +0 Tw +(MAXLOOP)Tj +/TT8 1 Tf +4.2007 0 TD +0.3022 Tw +(, initially set to 30. )Tj +/TT10 1 Tf +10.3338 0 TD +0 Tw +(MAXLOOP)Tj +/TT8 1 Tf +4.2007 0 TD +0.3022 Tw +[( can be set to )]TJ +/TT10 1 Tf +7.4203 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3022 Tw +(, which is)Tj +-36.5231 -1.2889 TD +0.2589 Tw +[(equivalent to setting it to infinity. Since the edit chain is left as of the last successful)]TJ +0 -1.2222 TD +0.1022 Tw +(completion of the loop, you can simply continue the )Tj +/TT10 1 Tf +24.1759 0 TD +0 Tw +(LP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1022 Tw +[( command with )]TJ +/TT10 1 Tf +7.5381 0 TD +0 Tw +(REDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.1022 Tw +[( \(see Chapter)]TJ +-35.3146 -1.2889 TD +0 Tw +(13\).)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(SHOW)Tj +/TT8 1 Tf +3 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 142.0517 445.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 445.86 Tm +([Editor Command])Tj +/TT14 1 Tf +-32.9222 -2.7333 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0689 Tw +[( is a list of patterns. )]TJ +/TT10 1 Tf +9.5413 0 TD +0 Tw +(SHOW)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +[( does a )]TJ +/TT10 1 Tf +3.5162 0 TD +0 Tw +(LPQ)Tj +/TT8 1 Tf +1.8003 0 TD +0.0689 Tw +[( printing all instances of the indicated expression\(s\),)]TJ +-17.8583 -1.2889 TD +0 Tw +(e.g. )Tj +/TT10 1 Tf +1.8352 0 TD +0.1189 Tw +(\(SHOW FOO \(SETQ FIE &\)\))Tj +/TT8 1 Tf +14.2778 0 TD +0.05 Tw +[( will print all )]TJ +/TT10 1 Tf +6.1844 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.05 Tw +(s and all )Tj +/TT10 1 Tf +4.0987 0 TD +0.1189 Tw +(\(SETQ FIE &\))Tj +/TT8 1 Tf +7.439 0 TD +0.05 Tw +[(s. Generates)]TJ +-35.6353 -1.2889 TD +0 Tw +(an error if there arent any instances of the expression\(s\).)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(EXAM)Tj +/TT8 1 Tf +3 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 142.0517 375.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 375.72 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Like )Tj +/TT10 1 Tf +2.3348 0 TD +(SHOW)Tj +/TT8 1 Tf +2.4004 0 TD +0.1478 Tw +[( except calls the editor recursively \(via the )]TJ +/TT10 1 Tf +20.0103 0 TD +0 Tw +(TTY:)Tj +/TT8 1 Tf +2.4004 0 TD +0.1478 Tw +[( command, see above\) on each)]TJ +-27.1459 -1.2889 TD +0 Tw +(instance of the indicated espression\(s\) so that you can examine and/or change them.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(ORR)Tj +/TT6 1 Tf +10 0 0 10 123.6 317.18 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 126.3783 317.18 Tm +(COMS)Tj +2.4002 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COMS)Tj +5.4 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 212.7809 317.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 317.18 Tm +([Editor Command])Tj +/TT10 1 Tf +-32.9222 -3.0667 TD +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1967 Tw +[( begins by executing )]TJ +/TT14 1 Tf +10.0577 0 TD +0 Tw +(COMS)Tj +2.3987 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1967 Tw +(, a list of commands. If no error occurs, )Tj +/TT10 1 Tf +19.2163 0 TD +0 Tw +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1967 Tw +[( is finished.)]TJ +-35.8732 -1.6222 TD +0 Tw +(Otherwise, )Tj +/TT10 1 Tf +5.3317 0 TD +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.2356 Tw +[( restores the edit chain to its original value, and continues by executing)]TJ +/TT14 1 Tf +-7.132 -1.2889 TD +0 Tw +(COMS)Tj +2.4 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0611 Tw +[(, etc. If none of the command lists execute without errors, i.e., the )]TJ +/TT10 1 Tf +30.0592 0 TD +0 Tw +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0611 Tw +[( "drops off the)]TJ +-34.8595 -1.6222 TD +0 Tw +(end", )Tj +/TT10 1 Tf +2.5585 0 TD +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0156 Tw +[( generates an error. Otherwise, the edit chain is left as of the completion of the first)]TJ +-4.3588 -1.2889 TD +0 Tw +(command list which executes without an error.)Tj +/TT10 1 Tf +0 -2.8889 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[( as a command list is perfectly legal, and will always execute successfully. Thus, making)]TJ +-1.8003 -1.2889 TD +0.0433 Tw +(the last "argument" to )Tj +/TT10 1 Tf +10.04 0 TD +0 Tw +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0433 Tw +[( be )]TJ +/TT10 1 Tf +1.6189 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0433 Tw +[( will insure that the )]TJ +/TT10 1 Tf +9.0692 0 TD +0 Tw +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0433 Tw +[( never causes an error. Any other)]TJ +-26.129 -1.2889 TD +0 Tw +(atom is treated as )Tj +/TT10 1 Tf +8.0098 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(ATOM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, i.e., the above example could be written as )Tj +/TT10 1 Tf +19.4834 0 TD +(\(ORR NX !NX NIL\))Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +-40.6953 -2.9556 TD +0.08 Tw +(For example, )Tj +/TT10 1 Tf +6.1561 0 TD +0.1911 Tw +(\(ORR \(NX\) \(!NX\) NIL\))Tj +/TT8 1 Tf +12.5753 0 TD +0.08 Tw +[( will perform a )]TJ +/TT10 1 Tf +7.1589 0 TD +0 Tw +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +0.08 Tw +(, if possible, otherwise a )Tj +/TT10 1 Tf +11.2389 0 TD +0 Tw +(!NX)Tj +/TT8 1 Tf +1.8003 0 TD +0.08 Tw +(, if)Tj +-40.1296 -1.2889 TD +0.1356 Tw +[(possible, otherwise do nothing. Similarly, )]TJ +/TT10 1 Tf +19.6732 0 TD +0 Tw +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1356 Tw +[( could be written as )]TJ +/TT10 1 Tf +9.6119 0 TD +0.3244 Tw +(\(ORR \(UP \(1\)\))Tj +-32.8856 -1.2889 TD +0 Tw +(\(BK UP \(2\)\) \(UP \(: NIL\)\)\))Tj +/TT8 1 Tf +15.0024 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 54 95.24 Tm +(Edit Macros)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 92.53 m +510.01 92.53 l +S +BT +/TT8 1 Tf +9 0 0 9 78 70.58 Tm +0.1278 Tw +(Many of the more sophisticated branching commands in the editor, such as )Tj +/TT10 1 Tf +35.0231 0 TD +0 Tw +(ORR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6278 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.1278 Tw +(, etc., are most)Tj +-38.6514 -1.2889 TD +0.04 Tw +[(often used in conjunction with edit macros. The macro feature permits you to define new commands)]TJ +0 -1.2222 TD +0.1556 Tw +(and thereby expand the editors repertoire, or redefine existing commands \(to refer to the original)Tj +ET +endstream +endobj +220 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +222 0 obj +<< +/Length 8653 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-64)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2456 Tw +(definition of a built-in command when redefining it via a macro, use the )Tj +/TT10 1 Tf +35.3319 0 TD +0 Tw +(ORIGINAL)Tj +/TT8 1 Tf +4.8008 0 TD +0.2456 Tw +[( command,)]TJ +-40.1327 -1.2889 TD +0 Tw +(below\).)Tj +0 -2.8889 TD +(Macros are defined by using the )Tj +/TT10 1 Tf +14.4668 0 TD +(M)Tj +/TT8 1 Tf +0.6001 0 TD +( command:)Tj +/TT10 1 Tf +-12.4002 -2.5489 TD +(\(M)Tj +/TT6 1 Tf +10 0 0 10 160.8017 509 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 163.5801 509 Tm +(C COMS)Tj +3.6 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COMS)Tj +5.4 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 260.7809 509 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 509 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(For )Tj +/TT14 1 Tf +1.766 0 TD +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +[( an atom, )]TJ +/TT10 1 Tf +4.3936 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +[( defines )]TJ +/TT14 1 Tf +3.7365 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +[( as an atomic command. If a macro is redefined, its new definition)]TJ +-11.6963 -1.2889 TD +0.03 Tw +[(replaces its old. Executing )]TJ +/TT14 1 Tf +12.1598 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[( is then the same as executing the list of commands )]TJ +/TT14 1 Tf +23.1073 0 TD +0 Tw +(COMS)Tj +2.4039 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0711 Tw +[( ...)]TJ +/TT14 1 Tf +-38.8711 -1.6222 TD +0 Tw +(COMS)Tj +2.4 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +-3 -3.2889 TD +0.1044 Tw +(For example, )Tj +/TT10 1 Tf +6.205 0 TD +0.25 Tw +(\(M BP BK UP P\))Tj +/TT8 1 Tf +9.4014 0 TD +0.1044 Tw +[( will define )]TJ +/TT10 1 Tf +5.5453 0 TD +0 Tw +(BP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1044 Tw +[( as an atomic command which does three)]TJ +-22.3518 -1.2889 TD +0.0411 Tw +(things, a )Tj +/TT10 1 Tf +4.0935 0 TD +0 Tw +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.0411 Tw +(, and )Tj +/TT10 1 Tf +2.5251 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0411 Tw +(, and a )Tj +/TT10 1 Tf +3.3162 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0411 Tw +[(. Macros can use commands defined by macros as well as built)]TJ +-12.9352 -1.2889 TD +0.1389 Tw +[(in commands in their definitions. For example, suppose )]TJ +/TT10 1 Tf +26.3711 0 TD +0 Tw +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[( is defined by )]TJ +/TT10 1 Tf +6.7655 0 TD +0.3322 Tw +(\(M Z -1 \(IF)Tj +-33.7367 -1.2889 TD +0.0256 Tw +(\(READP T\) NIL \(P\)\)\))Tj +/TT8 1 Tf +11.4785 0 TD +0.0111 Tw +(, i.e., )Tj +/TT10 1 Tf +2.2922 0 TD +0 Tw +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( does a )]TJ +/TT10 1 Tf +3.3429 0 TD +0 Tw +(-1)Tj +/TT8 1 Tf +1.2002 0 TD +0.0111 Tw +(, and then if nothing has been typed, a )Tj +/TT10 1 Tf +17.2738 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[(. Now we)]TJ +-36.7879 -1.2889 TD +0 Tw +(can define )Tj +/TT10 1 Tf +4.8008 0 TD +(ZZ)Tj +/TT8 1 Tf +1.2002 0 TD +( by )Tj +/TT10 1 Tf +1.6094 0 TD +(\(M ZZ -1 Z\))Tj +/TT8 1 Tf +6.6011 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(ZZZ)Tj +/TT8 1 Tf +1.8003 0 TD +( by )Tj +/TT10 1 Tf +1.6094 0 TD +(\(M ZZZ -1 -1 Z\) or \(M ZZZ -1 ZZ\))Tj +/TT8 1 Tf +19.2031 0 TD +(.)Tj +-39.2671 -2.9556 TD +(Macros can also define list commands, i.e., commands that take arguments.)Tj +/TT10 1 Tf +-1.3333 -2.4822 TD +(\(M \()Tj +/TT14 1 Tf +2.4004 0 TD +(C)Tj +/TT10 1 Tf +0.6001 0 TD +(\) \()Tj +/TT14 1 Tf +1.8003 0 TD +(ARG)Tj +1.7992 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(ARG)Tj +1.7995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT14 1 Tf +1.2002 0 TD +(COMS)Tj +2.3998 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 360.6009 330.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 330.26 Tm +([Editor Command])Tj +/TT14 1 Tf +-32.9222 -3.0667 TD +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0133 Tw +[( an atom. )]TJ +/TT10 1 Tf +4.6402 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.0133 Tw +[( defines )]TJ +/TT14 1 Tf +3.7254 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0133 Tw +[( as a list command. Executing )]TJ +/TT10 1 Tf +13.7056 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(C)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.6312 0 TD +(E)Tj +0.6026 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0311 Tw +[( ... )]TJ +/TT14 1 Tf +3.0627 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0133 Tw +[( is then performed by)]TJ +-31.7679 -1.6222 TD +0 Tw +(substituting )Tj +/TT14 1 Tf +5.6879 0 TD +(E)Tj +0.5999 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1322 Tw +[( for )]TJ +/TT14 1 Tf +2.0384 0 TD +0 Tw +(ARG)Tj +1.8005 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.3167 Tw +(, ... )Tj +/TT14 1 Tf +4.2339 0 TD +0 Tw +(E)Tj +0.5994 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1322 Tw +[( for )]TJ +/TT14 1 Tf +2.0384 0 TD +0 Tw +(ARG)Tj +1.8005 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1322 Tw +[( throughout )]TJ +/TT14 1 Tf +5.8299 0 TD +0 Tw +(COMS)Tj +2.399 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.3167 Tw +[( ... )]TJ +/TT14 1 Tf +3.6338 0 TD +0 Tw +(COMS)Tj +2.3995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1322 Tw +(, and then)Tj +-36.6611 -1.6222 TD +0 Tw +(executing )Tj +/TT14 1 Tf +4.5264 0 TD +(COMS)Tj +2.3992 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +-13.5256 -3.2889 TD +0.0278 Tw +(For example, we could define a more general )Tj +/TT10 1 Tf +20.3858 0 TD +0 Tw +(BP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0278 Tw +[( by )]TJ +/TT10 1 Tf +1.6649 0 TD +0.0667 Tw +(\(M \(BP\) \(N\) \(BK N\) UP P\))Tj +/TT8 1 Tf +14.8023 0 TD +0.0278 Tw +[(. Thus,)]TJ +/TT10 1 Tf +-38.0533 -1.2889 TD +0 Tw +(\(BP 3\))Tj +/TT8 1 Tf +3.6006 0 TD +( would perform )Tj +/TT10 1 Tf +7.2666 0 TD +(\(BK 3\))Tj +/TT8 1 Tf +3.6006 0 TD +(, followed by an )Tj +/TT10 1 Tf +7.3721 0 TD +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +(, followed by a )Tj +/TT10 1 Tf +6.79 0 TD +(P)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-30.4302 -2.9556 TD +0.1533 Tw +(A list command can be defined via a macro so as to take a fixed or indefinite number of)Tj +0 -1.2222 TD +0.0133 Tw +[("arguments", as with spread vs. nospread functions. The form given above specified a macro)]TJ +T* +0.0389 Tw +[(with a fixed number of arguments, as indicated by its argument list. If the "argument list" is)]TJ +/TT18 1 Tf +T* +0 Tw +(atomic)Tj +/TT8 1 Tf +2.6836 0 TD +(, the command takes an indefinite number of arguments.)Tj +/TT10 1 Tf +-4.0169 -2.4822 TD +(\(M \()Tj +/TT14 1 Tf +2.4004 0 TD +(C)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT14 1 Tf +1.2002 0 TD +(ARG)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(COMS)Tj +2.3989 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(M)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 295.8008 150.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 150.32 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(If )Tj +/TT14 1 Tf +1.0021 0 TD +(C)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT14 1 Tf +0.5822 0 TD +(ARG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0822 Tw +[( are both atoms, this defines )]TJ +/TT14 1 Tf +13.1252 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +[( as a list command. Executing )]TJ +/TT10 1 Tf +14.1879 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(C)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.7968 0 TD +(E)Tj +0.6029 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.1967 Tw +[( ... )]TJ +/TT14 1 Tf +3.3938 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +[( is)]TJ +-40.2912 -1.6222 TD +0.1378 Tw +(performed by substituting )Tj +/TT10 1 Tf +12.3001 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(E)Tj +0.601 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.33 Tw +[( ... )]TJ +/TT14 1 Tf +3.6605 0 TD +0 Tw +(E)Tj +0.5995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1378 Tw +(, i.e., )Tj +/TT10 1 Tf +2.5456 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1378 Tw +[( of the command, for )]TJ +/TT14 1 Tf +10.1772 0 TD +0 Tw +(ARG)Tj +/TT8 1 Tf +1.8003 0 TD +0.1378 Tw +[( throughout)]TJ +/TT14 1 Tf +-35.8845 -1.6222 TD +0 Tw +(COMS)Tj +2.4 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(, and then executing )Tj +/TT14 1 Tf +9.1885 0 TD +(COMS)Tj +2.3993 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT14 1 Tf +3.0005 0 TD +(COMS)Tj +2.3995 -0.3333 TD +(M)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +-27.1878 -3.2889 TD +0.23 Tw +(For example, the command )Tj +/TT10 1 Tf +13.2515 0 TD +0 Tw +(2ND)Tj +/TT8 1 Tf +1.8003 0 TD +0.23 Tw +[( \(see the Location Specification section above\), could be)]TJ +-15.0518 -1.2889 TD +0 Tw +(defined as a macro by )Tj +/TT10 1 Tf +9.9365 0 TD +(\(M)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(2ND\) X \(ORR \(\(LC . X\) \(LC . X\)\)\)\))Tj +/TT8 1 Tf +20.4033 0 TD +(.)Tj +ET +endstream +endobj +223 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +225 0 obj +<< +/Length 5971 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-65)Tj +/TT8 1 Tf +-38.3333 60.6156 TD +0.1211 Tw +(For all editor commands, "built in" commands as well as commands defined by macros as)Tj +0 -1.2222 TD +0.2878 Tw +(atomic commands and list definitions are )Tj +/TT18 1 Tf +20.2433 0 TD +0 Tw +(completely)Tj +/TT8 1 Tf +4.2959 0 TD +0.2878 Tw +[( independent. In other words, the)]TJ +-24.5392 -1.2222 TD +0.0211 Tw +(existence of an atomic definition for )Tj +/TT14 1 Tf +16.2033 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +[( in )]TJ +/TT18 1 Tf +1.4153 0 TD +0 Tw +(no)Tj +/TT8 1 Tf +1 0 TD +0.0211 Tw +[( way affects the treatment of )]TJ +/TT14 1 Tf +12.9182 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +[( when it appears as)]TJ +/TT10 1 Tf +-32.737 -1.2889 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.2011 Tw +[( of a list command, and the existence of a list definition for )]TJ +/TT14 1 Tf +28.6906 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.2011 Tw +[( in )]TJ +/TT18 1 Tf +1.7753 0 TD +0 Tw +(no)Tj +/TT8 1 Tf +1 0 TD +0.2011 Tw +[( way affects the)]TJ +-33.8663 -1.2889 TD +0.0233 Tw +(treatment of )Tj +/TT14 1 Tf +5.722 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[( when it appears as an atom. In particular, )]TJ +/TT14 1 Tf +19.3534 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[( can be used as the name of either)]TJ +-26.2756 -1.2889 TD +0.14 Tw +[(an atomic command, or a list command, or both. In the latter case, two entirely different)]TJ +0 -1.2222 TD +0 Tw +(definitions can be used.)Tj +0 -2.8889 TD +(Once )Tj +/TT14 1 Tf +2.6321 0 TD +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0911 Tw +[( is defined as an atomic command via a macro definition, it will )]TJ +/TT18 1 Tf +29.5087 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0911 Tw +[( be searched for)]TJ +-34.0739 -1.2889 TD +0.16 Tw +(when used in a location specification, unless it is preceded by an )Tj +/TT10 1 Tf +30.6392 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.16 Tw +[(. Thus )]TJ +/TT10 1 Tf +3.7017 0 TD +0.3844 Tw +(\(INSERT --)Tj +-34.941 -1.2889 TD +0.1322 Tw +(BEFORE BP\))Tj +/TT8 1 Tf +6.1332 0 TD +0.0544 Tw +[( would not search for )]TJ +/TT10 1 Tf +9.9587 0 TD +0 Tw +(BP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0544 Tw +(, but instead perform a )Tj +/TT10 1 Tf +10.5994 0 TD +0 Tw +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +0.0544 Tw +(, and )Tj +/TT10 1 Tf +2.5518 0 TD +0 Tw +(UP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0544 Tw +(, and a )Tj +/TT10 1 Tf +3.3562 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.0544 Tw +(, and then)Tj +-36.8 -1.2889 TD +0 Tw +(do the insertion. The corresponding also holds true for list commands.)Tj +0 -2.8889 TD +0.0644 Tw +(Occasionally, your will want to employ the )Tj +/TT10 1 Tf +19.7704 0 TD +0 Tw +(S)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[( command in a macro to save some temporary)]TJ +-20.3705 -1.2889 TD +0 Tw +(result. For example, the )Tj +/TT10 1 Tf +10.9014 0 TD +(SW)Tj +/TT8 1 Tf +1.2002 0 TD +( command could be defined as:)Tj +/TT10 1 Tf +-2.7682 -2 TD +(\(M \(SW\) \(N M\))Tj +0 -1 TD +( \(NTH N\))Tj +T* +( \(S FOO 1\))Tj +T* +( MARK)Tj +T* +( 0)Tj +T* +( \(NTH M\))Tj +T* +( \(S FIE 1\))Tj +T* +( \(I 1 FOO\))Tj +0 -1.0667 TD +( )Tj +/TT19 1 Tf +2.4004 0 TD +<00400040>Tj +/TT10 1 Tf +-2.4004 -1 TD +( \(I 1 FIE\)\))Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.2189 Tw +(Since this version of )Tj +/TT10 1 Tf +9.98 0 TD +0 Tw +(SW)Tj +/TT8 1 Tf +1.2002 0 TD +0.2189 Tw +[( sets )]TJ +/TT10 1 Tf +2.5906 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.2189 Tw +[( and )]TJ +/TT10 1 Tf +2.6306 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.2189 Tw +(, using )Tj +/TT10 1 Tf +3.6438 0 TD +0 Tw +(SW)Tj +/TT8 1 Tf +1.2002 0 TD +0.2189 Tw +[( may have undesirable side effects,)]TJ +-24.8461 -1.2889 TD +0.1678 Tw +(especially when the editor was called from deep in a computation, we would have to be)Tj +0 -1.2222 TD +0.2789 Tw +(careful to make up unique names for dummy variables used in edit macros, which is)Tj +T* +0.2144 Tw +(bothersome. Furthermore, it would be impossible to define a command that called itself)Tj +T* +0 Tw +(recursively while setting free variables. The )Tj +/TT10 1 Tf +19.4912 0 TD +(BIND)Tj +/TT8 1 Tf +2.4004 0 TD +( command solves both problems.)Tj +/TT10 1 Tf +-23.2249 -2.5489 TD +(\(BIND)Tj +/TT6 1 Tf +10 0 0 10 129 211.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.7783 211.6 Tm +(COMS)Tj +2.4002 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COMS)Tj +5.4 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 218.1808 211.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 211.6 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +0.1867 Tw +(Binds three dummy variables )Tj +/TT10 1 Tf +14.0601 0 TD +0 Tw +(#1)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6867 0 TD +(#2)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6867 0 TD +(#3)Tj +/TT8 1 Tf +1.2002 0 TD +0.1867 Tw +(, \(initialized to )Tj +/TT10 1 Tf +7.2182 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1867 Tw +(\), and then executes the edit)Tj +-28.0526 -1.2889 TD +0 Tw +(commands )Tj +/TT14 1 Tf +5.1487 0 TD +(COMS)Tj +2.4024 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.0633 Tw +[( ... )]TJ +/TT14 1 Tf +3.1272 0 TD +0 Tw +(COMS)Tj +2.3995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0267 Tw +(. )Tj +/TT10 1 Tf +0.8033 0 TD +0 Tw +(BIND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0267 Tw +[( uses a )]TJ +/TT10 1 Tf +3.2597 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0267 Tw +[( to make these bindings, so they are only)]TJ +-23.1416 -1.6222 TD +0.1644 Tw +(in effect while the commands are being executed and )Tj +/TT10 1 Tf +25.1988 0 TD +0 Tw +(BIND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1644 Tw +(s can be used recursively; the)Tj +-27.5991 -1.2889 TD +0 Tw +(variables )Tj +/TT10 1 Tf +4.248 0 TD +(#1)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(#2)Tj +/TT8 1 Tf +1.2002 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(#3)Tj +/TT8 1 Tf +1.2002 0 TD +( will be rebound each time )Tj +/TT10 1 Tf +11.9922 0 TD +(BIND)Tj +/TT8 1 Tf +2.4004 0 TD +( is invoked.)Tj +-25.1841 -2.9556 TD +(Thus, we can write SW safely as:)Tj +/TT10 1 Tf +9.3333 -1.9333 TD +(\(M \(SW\) \(N M\))Tj +0 -1 TD +( \(BIND \(NTH N\))Tj +T* +( \(S #1 1\))Tj +T* +( MARK)Tj +T* +( 0)Tj +T* +( \(NTH M\))Tj +T* +( \(S #2 1\))Tj +T* +( \(I 1 #1\))Tj +ET +endstream +endobj +226 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +228 0 obj +<< +/Length 6191 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-66)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 246 569.54 Tm +( )Tj +/TT19 1 Tf +6.001 0 TD +<00400040>Tj +/TT10 1 Tf +1.9736 0 TD +( \(I 1 #2\)\)\))Tj +-18.6413 -2.3267 TD +(\(ORIGINAL)Tj +/TT6 1 Tf +10 0 0 10 198.6 548.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.3783 548.6 Tm +(COMS)Tj +2.4002 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... COMS)Tj +5.4 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 287.7809 548.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 548.6 Tm +([Editor Command])Tj +-32.9222 -3.0667 TD +(Executes )Tj +/TT14 1 Tf +4.2163 0 TD +(COMS)Tj +2.4004 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +0.2011 Tw +[( ... )]TJ +/TT14 1 Tf +3.4027 0 TD +0 Tw +(COMS)Tj +2.3995 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0844 Tw +[( without regard to macro definitions. Useful for redefining a)]TJ +-13.6189 -1.6222 TD +0 Tw +(built in command in terms of itself., i.e. effectively allows you to "advise" edit commands.)Tj +-4 -2.8889 TD +0.0356 Tw +(User macros are stored on a list )Tj +/TT10 1 Tf +14.3807 0 TD +0 Tw +(USERMACROS)Tj +/TT8 1 Tf +6.001 0 TD +0.0356 Tw +[(. The file package command )]TJ +/TT10 1 Tf +13.1157 0 TD +0 Tw +(USERMACROS)Tj +/TT8 1 Tf +6.001 0 TD +0.0356 Tw +[( \(Chapter 17\))]TJ +-39.4984 -1.2889 TD +0 Tw +(is available for dumping all or selected user macros.)Tj +/TT6 1 Tf +10 0 0 10 102 426.46 Tm +(Undo)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 423.75 m +558.01 423.75 l +S +BT +/TT8 1 Tf +9 0 0 9 126 401.8 Tm +0.3311 Tw +(Each command that causes structure modification automatically adds an entry to the front of)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(UNDOLST)Tj +/TT8 1 Tf +4.2007 0 TD +0.1833 Tw +[( that contains the information required to restore all pointers that were changed by that)]TJ +-4.2007 -1.2889 TD +0 Tw +(command.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(UNDO)Tj +/TT4 1 Tf +10 0 0 10 171.6 356.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 356.86 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.2 Tw +(Undoes the last, i.e., most recent, structure modification command that has not yet been)Tj +0 -1.2222 TD +0.1133 Tw +(undone, and prints the name of that command, e.g., )Tj +/TT10 1 Tf +24.1626 0 TD +0.2722 Tw +(MBD undone)Tj +/TT8 1 Tf +6.2732 0 TD +0.1133 Tw +[(. The edit chain is then)]TJ +/TT18 1 Tf +-30.4358 -1.2889 TD +0 Tw +(exactly)Tj +/TT8 1 Tf +2.8511 0 TD +0.21 Tw +[( what it was before the "undone" command had been performed. If there are no)]TJ +-2.8511 -1.2222 TD +0 Tw +(commands to undo, )Tj +/TT10 1 Tf +9.0859 0 TD +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +( types )Tj +/TT10 1 Tf +2.8862 0 TD +(nothing saved)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-23.5072 -2.5489 TD +(!UNDO)Tj +/TT4 1 Tf +10 0 0 10 177 275.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 275.72 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.02 Tw +[(Undoes all modifications performed during this editing session, i.e. this call to the editor. As)]TJ +0 -1.2222 TD +0.1067 Tw +(each command is undone, its name is printed a la )Tj +/TT10 1 Tf +23.1633 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +[(. If there is nothing to be undone,)]TJ +/TT10 1 Tf +-25.5637 -1.2889 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +( prints )Tj +/TT10 1 Tf +3.1191 0 TD +(nothing saved)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +-17.9209 -2.9556 TD +0.3567 Tw +(Undoing an event containing an )Tj +/TT10 1 Tf +16.2745 0 TD +0 Tw +(I)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.8567 0 TD +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.3567 Tw +(, or )Tj +/TT10 1 Tf +2.4043 0 TD +0 Tw +(S)Tj +/TT8 1 Tf +0.6001 0 TD +0.3567 Tw +[( command will also undo the side effects of the)]TJ +-21.3358 -1.2889 TD +0.05 Tw +(evaluation\(s\), e.g., undoing )Tj +/TT10 1 Tf +12.4791 0 TD +0.12 Tw +(\(I 3 \(/NCONC FOO FIE\)\))Tj +/TT8 1 Tf +13.6821 0 TD +0.05 Tw +[( will not only restore the third element but)]TJ +-26.1613 -1.2889 TD +0.0678 Tw +(also restore )Tj +/TT10 1 Tf +5.4402 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0678 Tw +(. Similarly, undoing an )Tj +/TT10 1 Tf +10.6471 0 TD +0 Tw +(S)Tj +/TT8 1 Tf +0.6001 0 TD +0.0678 Tw +[( command will undo the set. See the discussion of )]TJ +/TT10 1 Tf +23.247 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0678 Tw +[( in)]TJ +-44.1351 -1.2889 TD +0.1622 Tw +[(Chapter 13. \(If the )]TJ +/TT10 1 Tf +9.2935 0 TD +0 Tw +(I)Tj +/TT8 1 Tf +0.6001 0 TD +0.1622 Tw +[( command was typed directly to the editor, )]TJ +/TT10 1 Tf +20.6274 0 TD +0 Tw +(/NCONC)Tj +/TT8 1 Tf +3.6006 0 TD +0.1622 Tw +[( would automatically be)]TJ +-34.1216 -1.2889 TD +0 Tw +(substituted for )Tj +/TT10 1 Tf +6.7402 0 TD +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +( as described in Chapter 13.\))Tj +-9.7407 -2.9556 TD +(Since )Tj +/TT10 1 Tf +2.6564 0 TD +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0856 Tw +[( and )]TJ +/TT10 1 Tf +2.364 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +0.0856 Tw +[( cause structure modification, they also add an entry to )]TJ +/TT10 1 Tf +25.4122 0 TD +0 Tw +(UNDOLST)Tj +/TT8 1 Tf +4.2007 0 TD +0.0856 Tw +[(. However,)]TJ +/TT10 1 Tf +-40.0341 -1.2889 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0667 Tw +[( and )]TJ +/TT10 1 Tf +2.3262 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +0.0667 Tw +[( entries are skipped by )]TJ +/TT10 1 Tf +10.6058 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0667 Tw +(, e.g., if you perform an )Tj +/TT10 1 Tf +10.9781 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0667 Tw +(, and then an )Tj +/TT10 1 Tf +6.2608 0 TD +0 Tw +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.0667 Tw +(, the)Tj +-43.3731 -1.2889 TD +0 Tw +(first )Tj +/TT10 1 Tf +2.0868 0 TD +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0678 Tw +[( will undo the )]TJ +/TT10 1 Tf +6.7071 0 TD +0 Tw +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.0678 Tw +(, and the second will undo the )Tj +/TT10 1 Tf +14.076 0 TD +0 Tw +(INSERT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0678 Tw +[(. However, you can also specify)]TJ +-30.6712 -1.2889 TD +0.1311 Tw +[(precisely which commands you want undone by identifying the corresponding entry. In this case,)]TJ +0 -1.2222 TD +0.0311 Tw +(you can undo an )Tj +/TT10 1 Tf +7.7792 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0311 Tw +[( command, e.g., by typing )]TJ +/TT10 1 Tf +11.9109 0 TD +0.0756 Tw +(UNDO UNDO)Tj +/TT8 1 Tf +5.4764 0 TD +0.0311 Tw +(, or undo a )Tj +/TT10 1 Tf +5.1572 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +0.0311 Tw +[( command, or undo a)]TJ +-35.7246 -1.2889 TD +0 Tw +(command other than that most recently performed.)Tj +ET +endstream +endobj +229 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +/TT19 82 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +231 0 obj +<< +/Length 5658 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-67)Tj +/TT8 1 Tf +-42.3333 60.6156 TD +0.0811 Tw +(Whenever you )Tj +/TT18 1 Tf +6.9283 0 TD +0 Tw +(continue)Tj +/TT8 1 Tf +3.5195 0 TD +0.0811 Tw +[( an editing session, the undo information of the previous session is protected)]TJ +-10.4479 -1.2222 TD +0.1911 Tw +(by inserting a special blip, called an undo-block, on the front of )Tj +/TT10 1 Tf +30.434 0 TD +0 Tw +(UNDOLST)Tj +/TT8 1 Tf +4.2007 0 TD +0.1911 Tw +[(. This undo-block will)]TJ +-34.6347 -1.2889 TD +0.2478 Tw +(terminate the operation of a )Tj +/TT10 1 Tf +13.7823 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +0.2478 Tw +(, thereby confining its effect to the current session, and will)Tj +-16.7828 -1.2889 TD +0 Tw +(similarly prevent an )Tj +/TT10 1 Tf +9.1812 0 TD +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +( command from operating on commands executed in the previous session.)Tj +-11.5815 -2.9556 TD +0.1156 Tw +(Thus, if you enter the editor continuing a session, and immediately execute an )Tj +/TT10 1 Tf +36.263 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.1156 Tw +[( or )]TJ +/TT10 1 Tf +1.672 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +0.1156 Tw +(, the)Tj +-43.3359 -1.2889 TD +0.0967 Tw +(editor will type )Tj +/TT10 1 Tf +7.3574 0 TD +0 Tw +(BLOCKED)Tj +/TT8 1 Tf +4.2007 0 TD +0.0967 Tw +[( instead of )]TJ +/TT10 1 Tf +5.1318 0 TD +0.2322 Tw +(NOTHING SAVED)Tj +/TT8 1 Tf +8.0335 0 TD +0.0967 Tw +[(. Similarly, if you execute several commands)]TJ +-24.7234 -1.2889 TD +0 Tw +(and then undo them all, another )Tj +/TT10 1 Tf +14.5161 0 TD +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +( will also cause )Tj +/TT10 1 Tf +6.9175 0 TD +(BLOCKED)Tj +/TT8 1 Tf +4.2007 0 TD +( to be typed.)Tj +/TT10 1 Tf +-29.8094 -2.5489 TD +(UNBLOCK)Tj +/TT4 1 Tf +10 0 0 10 139.8 462.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 462.6 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +0.1811 Tw +[(Removes an undo-block. If executed at a non-blocked state, i.e., if )]TJ +/TT10 1 Tf +31.519 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.1811 Tw +[( or )]TJ +/TT10 1 Tf +1.8031 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT18 1 Tf +0.4311 0 TD +(could)Tj +/TT8 1 Tf +-39.1542 -1.2889 TD +(operate, types )Tj +/TT10 1 Tf +6.4624 0 TD +(NOT BLOCKED)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-14.3968 -2.5489 TD +(TEST)Tj +/TT4 1 Tf +10 0 0 10 123.6 403.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 403.46 Tm +([Editor Command])Tj +-32.9222 -2.7333 TD +(Adds an undo-block at the front of )Tj +/TT10 1 Tf +15.5947 0 TD +(UNDOLST)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-19.7954 -2.9556 TD +0.1622 Tw +(Note that )Tj +/TT10 1 Tf +4.7409 0 TD +0 Tw +(TEST)Tj +/TT8 1 Tf +2.4004 0 TD +0.1622 Tw +[( together with )]TJ +/TT10 1 Tf +6.9593 0 TD +0 Tw +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +0.1622 Tw +[( provide a "tentative" mode for editing, i.e., you can)]TJ +-17.1012 -1.2889 TD +0 Tw +(perform a number of changes, and then undo all of them with a single )Tj +/TT10 1 Tf +31.2139 0 TD +(!UNDO)Tj +/TT8 1 Tf +3.0005 0 TD +( command.)Tj +/TT10 1 Tf +-35.5477 -2.5489 TD +(\(UNDO)Tj +/TT6 1 Tf +10 0 0 10 129 317.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.7783 317.72 Tm +(EventSpec)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT4 1 Tf +10 0 0 10 185.7871 317.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 410.3 317.72 Tm +([Editor Command])Tj +/TT14 1 Tf +-32.9222 -2.7333 TD +(EventSpec)Tj +/TT8 1 Tf +5.4009 0 TD +0.1344 Tw +[( is an event specification \(see Chapter 13\). Undoes the indicated event on the)]TJ +-5.4009 -1.2889 TD +0.0589 Tw +[(history list. In this case, the event does not have to be in the current editing session, even if)]TJ +0 -1.2222 TD +0.0711 Tw +[(the previous session has not been unblocked as described above. However, you do have to)]TJ +T* +0 Tw +(be editing the same expression as was being edited in the indicated event.)Tj +0 -2.8889 TD +0.7633 Tw +(If the expressions differ, the editor types the warning message )Tj +/TT10 1 Tf +35.3365 0 TD +0 Tw +("different)Tj +-35.3365 -1.2889 TD +(expression,")Tj +/TT8 1 Tf +7.2012 0 TD +0.2789 Tw +[( and does not undo the event. The editor enforces this to avoid your)]TJ +-7.2012 -1.2889 TD +0 Tw +(accidentally undoing a random command by giving the wrong event specification.)Tj +/TT6 1 Tf +10 0 0 10 54 167.98 Tm +(EDITDEFAULT)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 165.27 m +510.01 165.27 l +S +BT +/TT8 1 Tf +9 0 0 9 78 143.32 Tm +0.03 Tw +(Whenever a command is not recognized, i.e., is not "built in" or defined as a macro, the editor calls an)Tj +0 -1.2222 TD +0.02 Tw +(internal function, )Tj +/TT10 1 Tf +7.9433 0 TD +0 Tw +(EDITDEFAULT)Tj +/TT8 1 Tf +6.6011 0 TD +0.02 Tw +[(, to determine what action to take. Since )]TJ +/TT10 1 Tf +18.3123 0 TD +0 Tw +(EDITDEFAULT)Tj +/TT8 1 Tf +6.6011 0 TD +0.02 Tw +[( is part of the)]TJ +-39.4578 -1.2889 TD +0.2533 Tw +(edit block, you cannot advise or redefine it as a means of augmenting or extending the editor.)Tj +0 -1.2222 TD +0.0989 Tw +(However, you can accomplish this via )Tj +/TT10 1 Tf +17.6886 0 TD +0 Tw +(EDITUSERFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0989 Tw +[(. If the value of the variable )]TJ +/TT10 1 Tf +13.3766 0 TD +0 Tw +(EDITUSERFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0989 Tw +[( is )]TJ +/TT10 1 Tf +1.4126 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +-45.0798 -1.2889 TD +(EDITDEFAULT)Tj +/TT8 1 Tf +6.6011 0 TD +0.4533 Tw +[( calls the function )]TJ +/TT10 1 Tf +9.8573 0 TD +0 Tw +(EDITUSERFN)Tj +/TT8 1 Tf +6.001 0 TD +0.4533 Tw +[( giving it the command as an argument. If)]TJ +/TT10 1 Tf +-22.4593 -1.2889 TD +0 Tw +(EDITUSERFN)Tj +/TT8 1 Tf +6.001 0 TD +0.1467 Tw +[( returns a non-)]TJ +/TT10 1 Tf +6.9371 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1467 Tw +[( value, its value is interpreted as a single command and executed.)]TJ +-14.7383 -1.2889 TD +0 Tw +(Otherwise, the error correction procedure described below is performed.)Tj +ET +endstream +endobj +232 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +234 0 obj +<< +/Length 5446 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-68)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2622 Tw +(If a location specification is being executed, an internal flag informs )Tj +/TT10 1 Tf +32.9074 0 TD +0 Tw +(EDITDEFAULT)Tj +/TT8 1 Tf +6.6011 0 TD +0.2622 Tw +[( to treat the)]TJ +-39.5085 -1.2889 TD +0 Tw +(command as though it had been preceded by an )Tj +/TT10 1 Tf +21.5107 0 TD +(F)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-22.1108 -2.9556 TD +0.0033 Tw +(If the command is a list, an attempt is made to perform spelling correction on the )Tj +/TT10 1 Tf +36.0485 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0002 Tc +0.0031 Tw +( of the command)Tj +-37.8487 -1.2889 TD +0 Tc +0 Tw +(\(unless )Tj +/TT10 1 Tf +3.4313 0 TD +0.1089 Tw +(DWIMFLG = NIL)Tj +/TT8 1 Tf +8.019 0 TD +0.0456 Tw +(\) using )Tj +/TT10 1 Tf +3.3802 0 TD +0 Tw +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0456 Tw +[(, a list of all list edit commands. If spelling correction is)]TJ +-20.2314 -1.2889 TD +0.1033 Tw +(successful, the correct command name is )Tj +/TT10 1 Tf +18.8612 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +(ed into the command, and the editor continues by)Tj +-22.4618 -1.2889 TD +0.05 Tw +[(executing the command. In other words, if you type )]TJ +/TT10 1 Tf +23.96 0 TD +0.12 Tw +(\(LP F PRINT \(MBBD AND \(NULL FLG\)\)\))Tj +/TT8 1 Tf +21.1233 0 TD +0 Tw +(,)Tj +-45.0833 -1.2889 TD +0.14 Tw +(only one spelling correction will be necessary to change )Tj +/TT10 1 Tf +26.092 0 TD +0 Tw +(MBBD)Tj +/TT8 1 Tf +2.4004 0 TD +0.14 Tw +[( to )]TJ +/TT10 1 Tf +1.6521 0 TD +0 Tw +(MBD)Tj +/TT8 1 Tf +1.8003 0 TD +0.14 Tw +[(. If spelling correction is not)]TJ +-31.9448 -1.2889 TD +0 Tw +(successful, an error is generated.)Tj +3.3333 -2 TD +0.1256 Tw +[(Note:)-901.2(When a macro is defined via the )]TJ +/TT10 1 Tf +18.7166 0 TD +0 Tw +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.1256 Tw +[( command, the command name is added to)]TJ +/TT10 1 Tf +-15.9834 -1.2889 TD +0 Tw +(EDITCOMSA)Tj +/TT8 1 Tf +5.4009 0 TD +0.3622 Tw +[( or )]TJ +/TT10 1 Tf +2.1654 0 TD +0 Tw +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +0.3622 Tw +(, depending on whether it is an atomic or list)Tj +-12.9671 -1.2889 TD +0.32 Tw +[(command. The )]TJ +/TT10 1 Tf +8.0821 0 TD +0 Tw +(USERMACROS)Tj +/TT8 1 Tf +6.001 0 TD +0.32 Tw +[( file package command is aware of this, and)]TJ +-14.083 -1.2889 TD +0 Tw +(provides for restoring )Tj +/TT10 1 Tf +9.9297 0 TD +(EDITCOMSA)Tj +/TT8 1 Tf +5.4009 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-29.591 -3.1044 TD +(If the command is atomic, the procedure followed is a little more )Tj +/TT4 1 Tf +10 0 0 10 385.6729 392.6 Tm +(elaborate.)Tj +/TT8 1 Tf +9 0 0 9 150 374.6 Tm +0.0344 Tw +[(1.)-3916.7(If the command is one of the list commands, i.e., a member of )]TJ +/TT10 1 Tf +32.4826 0 TD +0 Tw +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0344 Tw +(, and there)Tj +-37.2168 -1.2889 TD +0.0011 Tw +(is additional input on the same terminal line, treat the entire line as a single list command. The)Tj +0 -1.2222 TD +0.2189 Tw +(line is read using )Tj +/TT10 1 Tf +8.6744 0 TD +0 Tw +(READLINE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2189 Tw +[( \(see Chapter 13\), so the line can be terminated by a square)]TJ +-13.4752 -1.2889 TD +0.0889 Tw +[(bracket, or by a carriage return not preceded by a space. You may omit parentheses for any)]TJ +0 -1.2222 TD +0 Tw +(list command typed in at the top level \(provided the command is not also an atomic command,)Tj +T* +(e.g. )Tj +/TT10 1 Tf +1.7852 0 TD +(NX)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(BK)Tj +/TT8 1 Tf +1.2002 0 TD +(\). For example,)Tj +/TT10 1 Tf +-4.0189 -2.8889 TD +(*P)Tj +5.3333 -1 TD +(\(COND \(& &\) \(T &\)\))Tj +T* +(*XTR 3 2])Tj +T* +(*MOVE TO AFTER LP)Tj +T* +(*)Tj +/TT8 1 Tf +-2 -1.8444 TD +0.0822 Tw +(If the command is on the list )Tj +/TT10 1 Tf +13.3929 0 TD +0 Tw +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0822 Tw +[( but no additional input is on the terminal)]TJ +-22.7938 -1.2889 TD +0 Tw +(line, an error is generated. For example:)Tj +/TT10 1 Tf +0.6667 -2.8222 TD +(*P)Tj +5.3333 -1 TD +(\(COND \(& &\) \(T &\)\))Tj +T* +(*MOVE)Tj +0 -2.2222 TD +(MOVE ?)Tj +0 -1.2222 TD +(*)Tj +/TT8 1 Tf +-2 -1.8444 TD +0.0356 Tw +(If the command is on )Tj +/TT10 1 Tf +9.7759 0 TD +0 Tw +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0356 Tw +(, and )Tj +/TT18 1 Tf +2.514 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0356 Tw +[( typed in directly, e.g., it appears as one of)]TJ +-23.0238 -1.2889 TD +0.1978 Tw +(the commands in a )Tj +/TT10 1 Tf +9.4234 0 TD +0 Tw +(LP)Tj +/TT8 1 Tf +1.2002 0 TD +0.1978 Tw +[( command, the procedure is similar, with the rest of the command)]TJ +-10.6236 -1.2889 TD +0.0722 Tw +(stream at that level being treated as "the terminal line", e.g. )Tj +/TT10 1 Tf +27.023 0 TD +0.1722 Tw +(\(LP F \(COND)Tj +/TT12 1 Tf +6.9455 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3222 0 TD +0.1722 Tw +(\(T &\)\) XTR 2)Tj +-34.2907 -1.2889 TD +0 Tw +(2\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +2.7998 -2.0667 TD +0.0133 Tw +(If the command is being executed in location context, )Tj +/TT10 1 Tf +23.8568 0 TD +0 Tw +(EDITDEFAULT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0133 Tw +[( does not get this)]TJ +-34.4579 -1.2889 TD +0.1144 Tw +(far, e.g., )Tj +/TT10 1 Tf +3.9921 0 TD +0.2733 Tw +(\(MOVE TO AFTER COND XTR 3\))Tj +/TT8 1 Tf +16.9692 0 TD +0.1144 Tw +[( will search for )]TJ +/TT10 1 Tf +7.2625 0 TD +0 Tw +(XTR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT18 1 Tf +0.6144 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1144 Tw +[( execute it. However,)]TJ +/TT10 1 Tf +-31.9715 -1.2889 TD +0 Tw +(\(MOVE TO AFTER COND \(XTR 3\)\))Tj +/TT8 1 Tf +16.8027 0 TD +( will work.)Tj +ET +endstream +endobj +235 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +237 0 obj +<< +/Length 3436 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-69)Tj +/TT8 1 Tf +-39.6667 60.6156 TD +0.0267 Tw +[(2.)-3916.7(If the command was typed in and the first character in the command is an 8, treat the)]TJ +0.6667 -1.2222 TD +0.0178 Tw +(8 as a mistyped left parenthesis, and and the rest of the line as the arguments to the command,)Tj +T* +0 Tw +(e.g.,)Tj +/TT10 1 Tf +0.6667 -2.8222 TD +(*P)Tj +5.3333 -1 TD +(\(COND \(& &\) \(T &\)\))Tj +T* +(*8-2 \(Y \(RETURN Z\)\)\))Tj +T* +(=\(-2)Tj +T* +(*P)Tj +T* +(\(COND \(Y &\) \(& &\) \(T &\)\))Tj +/TT8 1 Tf +-6.6667 -1.8444 TD +0.0533 Tw +[(3.)-3916.7(If the command was typed in, is the name of a function, and is followed by )]TJ +/TT10 1 Tf +38.8091 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0533 Tw +[( or a)]TJ +-39.9427 -1.2889 TD +0 Tw +(list )Tj +/TT10 1 Tf +1.5987 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0167 Tw +[( of which is not an edit command, assume you forgot to type )]TJ +/TT10 1 Tf +27.2889 0 TD +0 Tw +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.0167 Tw +[( and intend to apply the)]TJ +-31.288 -1.2889 TD +0.3567 Tw +(function to its arguments, type )Tj +/TT10 1 Tf +15.6139 0 TD +0 Tw +(=E)Tj +/TT8 1 Tf +1.2002 0 TD +0.3567 Tw +[( and the function name, and perform the indicated)]TJ +-16.8141 -1.2889 TD +0 Tw +(computation, e.g.)Tj +/TT10 1 Tf +0.6667 -2.8222 TD +(*BREAK\(FOO\))Tj +5.3333 -1 TD +(=E BREAK)Tj +T* +(\(FOO\))Tj +T* +(*)Tj +/TT8 1 Tf +-6.6667 -1.8444 TD +0.1978 Tw +[(4.)-3916.7(If the last character in the command is )]TJ +/TT10 1 Tf +23.3353 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.1978 Tw +(, and the first )Tj +/TT14 1 Tf +6.8902 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1978 Tw +(-1 characters comprise a)Tj +-30.7591 -1.2889 TD +0 Tw +(number, assume that you intended two commands, e.g.,)Tj +/TT10 1 Tf +0.6667 -2.8222 TD +(*P)Tj +5.3333 -1 TD +(\(COND \(& &\) \(T &\)\))Tj +T* +(*0P)Tj +T* +(=0 P)Tj +T* +(\(SETQ X \(COND & &\)\))Tj +/TT8 1 Tf +-6.6667 -1.8444 TD +0.4678 Tw +[(5.)-3916.7(Attempt spelling correction using )]TJ +/TT10 1 Tf +21.676 0 TD +0 Tw +(EDITCOMSA)Tj +/TT8 1 Tf +5.4009 0 TD +0.4678 Tw +(, and if successful, execute the)Tj +-26.4102 -1.2889 TD +0 Tw +(corrected command.)Tj +-0.6667 -2 TD +0.1744 Tw +[(6.)-3916.7(If there is additional input on the same line, or command stream, spelling correct)]TJ +0.6667 -1.2222 TD +0 Tw +(using )Tj +/TT10 1 Tf +2.7061 0 TD +(EDITCOMSL)Tj +/TT8 1 Tf +5.4009 0 TD +( as a spelling list, e.g.,)Tj +/TT10 1 Tf +-7.4403 -2.8889 TD +(*MBBD SETQ X)Tj +5.3333 -1 TD +(=MBD)Tj +T* +(*)Tj +/TT8 1 Tf +-6.6667 -1.8444 TD +[(7.)-3916.7(Otherwise, generate an error.)]TJ +/TT6 1 Tf +10 0 0 10 54 94.6 Tm +(Time Stamps)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 91.89 m +510.01 91.89 l +S +BT +/TT8 1 Tf +9 0 0 9 78 69.94 Tm +0.1544 Tw +(Whenever a function is edited, and changes were made, the function is time-stamped \(by )Tj +/TT10 1 Tf +41.7486 0 TD +0 Tw +(EDITE)Tj +/TT8 1 Tf +3.0005 0 TD +(\),)Tj +-44.7491 -1.2889 TD +0.0044 Tw +(which consists of inserting a comment of the form )Tj +/TT10 1 Tf +22.354 0 TD +0 Tw +(\(* )Tj +/TT14 1 Tf +1.8103 0 TD +(USERS-INITIALS)Tj +/TT10 1 Tf +8.4014 0 TD +( )Tj +/TT14 1 Tf +0.6101 0 TD +(DATE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0044 Tw +(. )Tj +/TT14 1 Tf +0.7589 0 TD +0 Tw +(USERS-INITIALS)Tj +/TT8 1 Tf +-36.9351 -1.2889 TD +0.0389 Tw +(is the value of the variable )Tj +/TT10 1 Tf +12.1137 0 TD +0 Tw +(INITIALS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0389 Tw +[(. After greeting \(see Chapter 12\), the function )]TJ +/TT10 1 Tf +20.81 0 TD +0 Tw +(SETINITIALS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0389 Tw +[( is)]TJ +ET +endstream +endobj +238 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT14 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +240 0 obj +<< +/Length 5391 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-70)Tj +/TT4 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.32 Tw +(called. )Tj +/TT10 1 Tf +4.0057 0 TD +0 Tw +(SETINITIALS)Tj +/TT8 1 Tf +6.6011 0 TD +0.32 Tw +[( searches )]TJ +/TT10 1 Tf +4.8666 0 TD +0 Tw +(INITIALSLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.32 Tw +(, a list of elements of the form )Tj +/TT10 1 Tf +15.8867 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(USERNAME)Tj +/TT10 1 Tf +4.8008 0 TD +0.7689 Tc +( .)Tj +/TT14 1 Tf +-43.362 -1.2889 TD +0 Tc +(INITIALS)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1889 Tw +[( or )]TJ +/TT10 1 Tf +1.8187 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(USERNAME)Tj +/TT10 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +1.0545 0 TD +(FIRSTNAME)Tj +/TT10 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +1.0545 0 TD +(INITIALS)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1889 Tw +[(. If your name is found, )]TJ +/TT10 1 Tf +12.1757 0 TD +0 Tw +(INITIALS)Tj +/TT8 1 Tf +4.8008 0 TD +0.1889 Tw +[( is set)]TJ +-42.5078 -1.2889 TD +0.0611 Tw +[(accordingly. If your username name is )]TJ +/TT18 1 Tf +17.917 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0611 Tw +[( found on )]TJ +/TT10 1 Tf +4.7361 0 TD +0 Tw +(INITIALSLST)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.5611 0 TD +(INITIALS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0611 Tw +[( is set to the value of)]TJ +/TT10 1 Tf +-35.9491 -1.2889 TD +0 Tw +(DEFAULTINITIALS)Tj +/TT8 1 Tf +9.0015 0 TD +0.0478 Tw +(, initially )Tj +/TT10 1 Tf +4.265 0 TD +0 Tw +(edited:)Tj +/TT8 1 Tf +4.2007 0 TD +0.0478 Tw +[(. Thus, the default is to always time stamp. To suppress time)]TJ +-17.4671 -1.2889 TD +0.26 Tw +(stamping, you must either include an entry of the form )Tj +/TT10 1 Tf +27.1503 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(USERNAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.26 Tw +[( on )]TJ +/TT10 1 Tf +2.1479 0 TD +0 Tw +(INITIALSLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.26 Tw +(, or set)Tj +/TT10 1 Tf +-41.9003 -1.2889 TD +0 Tw +(DEFAULTINITIALS)Tj +/TT8 1 Tf +9.0015 0 TD +0.1022 Tw +[( to )]TJ +/TT10 1 Tf +1.5765 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1022 Tw +[( before greeting, i.e. in your user profile, or else, )]TJ +/TT18 1 Tf +22.4158 0 TD +0 Tw +(after)Tj +/TT8 1 Tf +1.833 0 TD +0.1022 Tw +[( greeting, explicitly)]TJ +-36.6271 -1.2889 TD +0 Tw +(set )Tj +/TT10 1 Tf +1.479 0 TD +(INITIALS)Tj +/TT8 1 Tf +4.8008 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-9.4521 -2.9556 TD +0.0444 Tw +[(If you want your functions to be time stamped with your initials when edited, include a file package)]TJ +0 -1.2222 TD +0.0422 Tw +(command command of the form )Tj +/TT10 1 Tf +14.7804 0 TD +0.1 Tw +(\(ADDVARS \(INITIALSLST)Tj +/TT12 1 Tf +12.702 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2922 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(USERNAME)Tj +/TT10 1 Tf +4.8008 0 TD +0.1 Tw +[( . )]TJ +/TT14 1 Tf +2.0003 0 TD +0 Tw +(INITIALS)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\)\))Tj +/TT8 1 Tf +1.8003 0 TD +0.0422 Tw +[( in your)]TJ +/TT10 1 Tf +-41.777 -1.2889 TD +0 Tw +(INIT.LISP)Tj +/TT8 1 Tf +5.4009 0 TD +( file \(see Chapter 12\).)Tj +-5.4009 -2.9556 TD +0.2989 Tw +(The following three functions may be of use for specialized applications with respect to time-)Tj +0 -1.2222 TD +0 Tw +(stamping:)Tj +/TT10 1 Tf +4.4131 0 TD +0.4822 Tw +[( \(FIXEDITDATE)]TJ +/TT12 1 Tf +8.2835 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.4511 0 TD +(EXPR)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.2011 Tw +[( which, given a lambda expression, inserts or smashes a time-)]TJ +-16.1482 -1.2889 TD +0.3789 Tw +(stamp comment; )Tj +/TT10 1 Tf +8.3842 0 TD +0 Tw +(\(EDITDATE?)Tj +/TT12 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.6289 0 TD +(COMMENT)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.3789 Tw +[( which returns )]TJ +/TT10 1 Tf +7.8237 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3789 Tw +[( if )]TJ +/TT14 1 Tf +1.8818 0 TD +0 Tw +(COMMENT)Tj +/TT8 1 Tf +4.2007 0 TD +0.3789 Tw +[( is a time stamp; and)]TJ +/TT10 1 Tf +-34.3212 -1.2889 TD +0 Tw +(\(EDITDATE)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.2733 0 TD +(OLDATE)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.2733 0 TD +(INITLS)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[( which returns a new time-stamp comment. If )]TJ +/TT14 1 Tf +20.9004 0 TD +0 Tw +(OLDATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0233 Tw +[( is a time-stamp)]TJ +-38.2498 -1.2889 TD +0 Tw +(comment, it will be reused.)Tj +/TT6 1 Tf +10 0 0 10 102 317 Tm +(Warning with Declarations )Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 314.29 m +582.01 314.29 l +S +BT +/TT8 1 Tf +9 0 0 9 174 300.34 Tm +0.1144 Tw +(CAUTION: There is a feature of the BYTECOMPILER that is not supported by SEdit or)Tj +0 -1.2222 TD +0.1078 Tw +[(the XCL compiler. It is possible to insert a comment at the beginning of your function)]TJ +T* +0 Tw +(that looks like)Tj +4 -2.4444 TD +(\(* DECLARATIONS: --\))Tj +-4 -2.4444 TD +0.0001 Tc +0.0032 Tw +(The tail, or -- section, of this comment is taken as a set of local record declarations which)Tj +0 -1.2222 TD +0 Tc +0.08 Tw +(are then used by the compiler in that function just as if they had been declared globally.)Tj +T* +0 Tw +(See the "Compiler" section in Chapter 3 of these Notes for additional behavior in XCL. )Tj +0 -3.2222 TD +0.0778 Tw +[(SEdit does not recognize such declarations. Thus, if the "Expand" command is used, the)]TJ +0 -1.2222 TD +0.0422 Tw +(expansion will not be done with these record declarations in effect. The code that you see)Tj +T* +0 Tw +(in SEdit will not be the same code compiled by the BYTECOMPILER.)Tj +ET +endstream +endobj +241 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT18 69 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +243 0 obj +<< +/Length 137 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(16-71)Tj +/TT8 1 Tf +-25.6667 52.2833 TD +([This page intentionally left blank])Tj +ET +endstream +endobj +244 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +19 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 40 +/Height 26 +/BitsPerComponent 1 +/ImageMask true +/Length 131 +>> +stream +?g +endstream +endobj +20 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 41 +/Height 27 +/BitsPerComponent 1 +/ImageMask true +/Length 163 +>> +stream +q{ +endstream +endobj +21 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 70 +/Height 22 +/BitsPerComponent 1 +/ImageMask true +/Length 199 +>> +stream +??~=ߺ߻߻ûo߻߻ +endstream +endobj +25 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 71 +/Height 28 +/BitsPerComponent 1 +/ImageMask true +/Length 253 +>> +stream +`wwww7O~~ +endstream +endobj +26 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 75 +/Height 25 +/BitsPerComponent 1 +/ImageMask true +/Length 251 +>> +stream +8}}}}w}_8߿ +endstream +endobj +27 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 69 +/Height 25 +/BitsPerComponent 1 +/ImageMask true +/Length 226 +>> +stream +A=___Co__A +endstream +endobj +28 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 73 +/Height 32 +/BitsPerComponent 1 +/ImageMask true +/Length 321 +>> +stream +oh0q k;kq +endstream +endobj +32 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 5 +/BitsPerComponent 1 +/ImageMask true +/Length 11 +>> +stream + +endstream +endobj +33 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 21 +/Height 15 +/BitsPerComponent 1 +/ImageMask true +/Length 46 +>> +stream +6w7 +endstream +endobj +53 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 207 +/Height 386 +/BitsPerComponent 1 +/ImageMask true +/Length 10037 +>> +stream +o߻ownv߻pwso[~ٵww|o[ߵzwnvv_z뎎_}ϟ?}ϟ?px{.?߿ooݻv߿Ϳ.mٿpo_߃poݻn_ow.?_oϟpϟpxc߁oonݻ߾fپpox߾poݻ_oчq_oϟpϟx<\߿onݕ۾_o<~_oϟ`ϟ o/߿o߿oٿo߿`_o/_oϟ`oϟop߾ono߾ooپ`poo߁ono_op_oϟ`ϟpwo7߾oپo߾o7_ox_oϟoϟ`w owonݻonٿon߿oflݻ_otx_oϟ`ϟ `w7<ow}mۿoٿ]o~8?߿o?ۿ_otx<_]ooϟ`?ϟ`w7ow}on{ono~no?flotxo{`?`wowwooootxow`oxw߾o߾pwwwz󷲿_zxt_}ϟ}ϟ"2#$FLQ"*"E"""MD"""DD"""DD3#2$dIl8@ +endstream +endobj +54 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 327 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 4183 +>> +stream +?????0p`93'&L9s?'&|9s<'&p9s8g 9s1&G9s3'&L9s8g N@???????3?3s?3s3s0ds?32s?32s0$r???????3I?g q`Nb@q3I?'&ONLLOnv3I?0~OIOv0`'<2xOO߃w3&I'<rpdAw<83&Hg?8qCv3&Hg?8OqIOnv0`}qw????0?777778 pALϜ&790'?9>|Ϝx33f79$3'?Ƀ9>pϜy3prd79$g'?ə1>as93s2d79 '??>GϜLϜs8ᓛ790 p>a?' };7770????0?7777?7d3Ϝq88< N`7>dɄ93Ϝ>a򓓜NNs7? Ʉ93>a󓓜<`s7?$ə9Ƀ>I󓓜|7$Ƀ93əI󓓜|d7? d93>󓓜dd93>󓓜qs7d930  7770???LFDdɀF& +$EDZȵ@EU$DDIDL$DDHDD$DDHDDI&dfDd8͘كD +endstream +endobj +11 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +246 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +247 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +248 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +249 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +250 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +251 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +252 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +253 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +254 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +255 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBHKOH+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 256 0 R +>> +endobj +256 0 obj +<< +/Filter /FlateDecode +/Length 20104 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8P%i C9͎~03K6JJ@S4tk54Z +$!HG@PLc ovvSyq}{nr~{,,^@ڹ~C>J {(t8P,<ːz"6Ƕb{ЪBKNX7 ǐT ر ?.>n="l3]VmG $w\bexjx +`=G(ɸxTzkCy~[/5AqST)[B?qu?`%/Xu( +8ud vpqĕi$> U֢4W`o l̍}?G:>xq`&48GiFe(6C3F\H9v|fsG A9j%~i7k$YÝp [(9s .^^@ &s8N+0 ;` 8qC'I@) 9?? va!2! )Y%6Rp;L#-/Ay܉'7y56Z%dQID^/=0? PDŽl`o%;{d0:ss'q-j +Wo%'aB | 'iL2~JnE E+2xrqm^U,'sS ϓNr%t@3+ݤ@I&>!уK׳h1vMBgA% \p:NǗ;ʊʕA3d-mJz0]uLᑪ?AO?MYr l'0Z0p&wL? ,N> iY&H'ƐO|s#^wࡔ{1Nwoo}7JOAwۈ/L=s$@f\{`g>&uZ}4 !~XΦy'TkϘdh l\lcOظKm\frWظU6ڸ56)ٸ6l 6>kFy甄8#nZ,:!F&QàI JTcџj4FU*%F h Dޚ5O%Unb{}Uh4iΌmi$nVl(ډf3DU3kE}>4f$X< g2vP4d5iBjKKf]C._/1{:/Eۼr18u,ߔ:ַu7zj}R>=w~wtUpIVSgdE/U*5bIo(]dz6OeG +P'Yݻ[,zmїSsp/joѨ +_YH $2] ar&ǀEF lsdEb0:?שLXiPrHqre{߯(&NѮ#8[UR*36Ǘ9fܦ|3`{>ߑH@ƺۅ-w]~2Ov6qTCl2Yܞ >>xqү:BIh`?D*"cZBB./uF.ϙ"sx5]١lg-s$&Uin7;ɺX3BոtK{~{͕>;̭uΘoSLt"vuΦ<[ ({sU 3Rv,3~)~,v찃6Jȷs5^*7AFg]X&6Y鏖rJ:}5A{ߨZbr.!McmG[BgZB޳_5r> Uu$s5$:d>vn_ۀ';2dC-MNc0^T/?5L8%8;+\VØ/{:IXYXU&I/@.?P Q'͡n:>H*-<9KA}/@Wi}G' ~`fɾ`2&`~[jV^a-a؇$;""8"|̧2(/y=7|w??x/K2~Md6e2: OT-~B83 baL92hg@R3hqd+{q[-d{DD±6cGLx5eѯez~2NF?rJKa +F,CWh %Ml b#V&QfO>!*6.= ?cXPa~1NJ6fQɰg6|Q_ p˺fl[rR̸)v%9(F{neh_AKݛmQjs#bwZC2jɥ'-[Fg,@E-Rpoô[[rZH"p 2}`KE [LiI Nᴖvը$6Fג%}iK*?%uu%.+ww j4OKmm>~cuU2!^–EXnX(&i&^̋J TQrHb\z_,F8ot˲CYML7eprQ&`ix-B =>6c$\H ?|RZD[sMrAp2 hlvnͲxNAٖcQ7xgD2m>(pd%, +/&T R Y*ۖL=Ў +^,X9j2g >Y޼dt}vp|BUC ^ C"0Ҡ74x\NH:⳧$3rt.ik MĽI˟YtaZSF1d2g$q-=zQ,-9P1;vL߂N.!h[bvYȒeRvJS`(}Ib D<cGίvUs.PVW1 xC7ӑ龓o_|@R@ւ̋t@2a3?Y, + +|t'CA\Ҥ0T:U-Umݮyiɷ5!6,KemVu +hP{YJiW Z[9;&- p2Qۅ3B)=wì0c :],Oش>{yPOn]M4fGݨ`̪>QZ[&jifre4‘D^f) G[lKi EҌX e"Ȋo!9f]Jɱ)N-*nNt[3B8ֶ:VYqdKf@ i=䯳AQAm0{ȍ?d\ Cy Ct\EƅYjO/~I-z ^iӁ'pYxؚcSX YjMG%ت̄qӼt*>3ʠ5I33ewQ}hoEE5f>sfV@:|i:hvex~~`KD3P=(Ѹ;ωb-X--Kp:R|c2+qeq)1cJ7$+ՕrOtПUr]~\g6ZYD[ \(t*ZDiH.'ǥVNƜ"(s",qZ*Ǧ1OM#aPj {XنDz9̅kR4Ouxi!DsrR!d2K |d^0EmokP< &t.aQJ{V*zEAh,\xr5~3~[ϝќZt ]c4BЎY"R揎%f)< .311NJ0OJk%ɂEhn ;%uݼb:yi_~ilc9=ފl6`Ϛif$cv"Z)Hgk%-EcߞreQc6*WX_09K__0(,f"ei:XEHL@f“-d}EM|H +ucǏ/(),',⒅cC}Rb2u8ĵ)QpEwZ,(o[p塽[Sj  %U;͞{׽HVzh!{, +ujYAY{7D+Tj^uXÆ8>o>A |Vyht$ n"ZJ=P=jB_F_CGG 4FK* R +n ŽxO)<o~U|/""">W,yԓB3+ Ysp.[m䚹/qOrAn}n^~3wE{Eu]sܷ )ef.h[T6(DhkgdL'QVF.CPGIdԴҙF;S'&mEƈdR;cvl؉2{Y/F{s?]b7T&:EuXRCjT}]ݩvoG~SzAR74D-Ii~m6IMמfhOkZ69PrG5!T#q`%6$ctL`TKp/Rl`6 8ЂcU;Ω8p1 Ԇ9v1ǁ~DStdhǚȱs*Z8Z az O7 +(cS7o. +DL;'nWA;BQķN`chکz*S)X㬠` W[**j`7FMq1B.u;fc!q >=\̀ i SνHZg $!nNqEkp&8BUq@fKH2mHn\s;TRp{aC/!$,0 $N>,s휷g{>2:DaTv[ 1(<jf;'/X8 +\R;/;mw$gDx>C4}z}ku%kW{K$ ^T >БV%GjFDrt`IEzq,nֆ_]ER(L>'jF= N4\d MI %$%jɒ?)o(ˮsmRӡ֓ Ԅ9L,LE}._ +Vf1qh4W"Ix?쐽kǶ3[Uus=؞0_/5@yW(m(ﴎx2V6Mq8v%bd&j_/!U7x3xm67n/qyH&n._ +ߞ˟ +4'b/.(+5UH6o+m"&Eˮr"FgŶ{ +V^kO%mNiفvH$6_MX| Ko˷EptCLH"e[H\z'݉W1wJŋ1l|ɬ3a*T#O!RgS jpСGpם*v/KEb;͹MȔO6; +G~GQq^pmBf#ihl00IĚo (e TxGh1ȴ ( 9LɈvՑ֋8;V#ӋKr vj3n?y=~Mz"ݰ`2n݁A_s{6v*_ED`ESBr\.]tgnΒ"]'꠮i kuK`iQ͇rkHEж TV_5 6ݾRcu 0/j0s-,L.9*xʣ*;K,/=kQ|3]VYR%:x{ocu͛K΀|lhL(ܚ}RjKh7tՇsv\آ ~䫷}[n;뫩3B[kEIy"E* +BОy==4^vՇT'h[`W_8'@\I?<8"Ҟk̭h6?!yQm6|oWa8C/{ן>λk)=rtQNwpO]-PZXߜ* ?2|]Skޜ]d}vΐB|B/3SQ + BɓYbD6톱<5꫉4&I+3MehPs)>ZpNҨ'ڞ5Y H;zI3ևLGXSR9RP aPz b`)܂zV֠v)Aps4PS p#lr)UH9YLɷP]JG,r zl!MQa=Bn$9J~ +}9IHL^#o6yO(5A4^^I z :5i7:z .]AWһ:i҇/Qg=I('k4N?0`.eT[WjVnfa.ֲucfT^Mlkf?CՎXcOnv3Yϑ A|QBW#x51uycGDSܻ^d:B(F;g=݋*yGZ?ڥWRB2+S7*y(L&ڽ|4ͫhugq71uюd4^§& +LR$1$gV\@@v9Lw_D?WXUM&/I _7  'aQY x.xWؾ/ )6>Bx+ea#'7F:BS5bX4~,$@?f=v?[d$88VƔ)hL RccͧS[V<)DiMmO  VYy l\2dYV}U>E}g0υoJ8s5H >{n|E(9ҫg0l^*@ZⲰ=T2tKhfs½p.5Ed" yF\tZP'dC9-mgl6! m2l'[skb XX0bВkZKTJ83^ e=r(anL%z{,,Tբ( Hs3=YҺaķ*C6bAdTM$r0ؖy@8a9:\>7 0gOIbVf<|@ ,$zrklb:bAs9X.ݚ 2|,toR[X"CLX Xg7JpH`MVumyea&N:BXeW/0 >F''?61%ҨfpTI\U̬_qeӵo fM"E0GJJny@(( `DeNCrh}-HH zLھYjPe +r ߷;N&nwv7MuShR sjTurxZ[e[l5X8Gh2Jrha4+S@GU,5NgYh߻zR]>۳?O-._=;s=k^% Bg7͖C& 5!cd}\ۍkц-.p)yhegRde{Ɔxl5+*]?)n97[F ~N] 0.hsPGK:Y̜YE >u X- 0Xxd+3Ck9Gs{]Cw+R ۖUskU7p. ޖmp=ztÇM|Ry]K,fha4D >6Z4Zjes9'ojs2tiD{2(b^Ť}A^LF 0DL[zttC2P1nEJZkp-պ-xa3tM5~x|:y,<8.Kt}q6NR :.pDϐyTjbu +3Kx-\mZB# ӭ$Mc F>ZLh.b4}8psbjw]86/:]xBmt-; -S}?\_)L\9VoH(6 ]).$On62"p2[,p&:6pKi- #YhnuB d]4O$k?]h-QTwZ$qE (;dDB]v1[h|W\HVY򀞒2=4#ަKRv4؋Tw%)lzl?u$^(^x|ȴs+j(N +[M ?JG^ZtDZ3`@J Tbb,NѧYL/h.#yE<"HhdS^mrsjD޳p?cC-(vNU/tȢ/l0Wx s1ZA b ̞Vk)gAs*N[|\p-WD3r>w).ZLaN@ $Y8 6-TbWuʕdO4,5I9u4eF+n<fř&8^pu !okkEF*%/#QE›HU^-wX5Tx3kX*?E@&EZ|8h3Yt; L~CF]Qz,~.hW" ,7-wmYf;d!*pt Ni|P1#Cބ/p +c ,16ž.bAC~~^akvK1eLr\U4^(Z:?݅EQ YjeVkĺ%4="jyhSc=`l7Hצh㨨UcL|&NJ\5jPv`ZW9QN*gϕ)NjTMj_U/du:XP3j.J!ȁn X 33JT*Z* +zQE% + !H8L`FI"PU0 z$ҭaQĨʣQG XĀ:6GB!LDpY>L5P$|h$Եyi>=/#܌v3Y-Eo _ojp)D"Th8Da!1J(];):"qB7@ۛZAmXWεAp_p}Xd[Y6OVUyw@E,WmN(Rg9n}w'Ox`ӭ;osvD|3Q19B*_ge)0.t%@NGpD+.>7WV@Y!ӳ ['Wl2ej럙?)ZYlyB%{~٧F.|sOVH ϧ,[ƿ"W@Zʲ붷kIn.쨪k`f;{[sGgXXt:@G-_re 3啻:7n5̵֣J,w}9{_9_3Ns k_]WUoى,ky0şkX[j@Nv W/BE7:*=Km!iE,Q^[7$f_'-jC֜_X孩ن, %)7[th:*ȗgl9C1C=c˟,Uɕ*n1MȢX}Q,}խ[h\ݾ-UIGnZ61c9icTuf%}z4c萦/^}97}DVI}dj3_fOK<12^'i/$:~QwQ4BIZa S0 ~0`c5qa5^נ +ja)^+a5 h lpav7\v @8&}I'I$|d8$vKƒ dL4RJd6 0k& I-YH YAj ć$'4 K*AהP ϼpj1i*Mh&<:sF-t:sr:.=@}O]KGG^5A-I09f( <3E>eqY{ dO gmOQa +F%,r"ZJD{ A8K)8Fm*QGD!xU' .˽ƒRp-#)]g6<ȍ&b"®h+C"VJ%._ҕt׃t\*ɒ7Q +JM%.`fѤ\6vYR=Q|Wh@䱒'$Ǔy6:DɱashĪh9T?(~Y@m Rnժi93>R+R,X j#jd3y5o۫ԦOu+:J'q3,pZ|6Wj5 qz x]PD(;YGk>6y>kh9mo=ra;319GSbB5v,>8m?la ` #?8t'+  %(>gjqGjlSc햎OʮLnJ-kP+pp+[@(r}ɎÛd%WejB<3vB[z{h٦!.X-ևe[=IIT,˖䏱=CXB =Jr*KBa) ]zP]B0{2 R{b~ |3{y z qZ_@߿`3gwr SA +].+ϘU?C3'/2G[;0sϘW}ὸbQ:gw7 o2 +}_> +}5mq9 ־0gc{9xx +0FjsP`怛B|0A \,#Mcso0O?rm._ט]_:\aZKq|ɀÕg_~y8Z?U!ԺÕ9v盐]܀X/iE-1\, Xwk0 ;9.oOw6 ?Ms۟N·{4k^}^ڷ$kLxK # m>gb=ƭ^9դ ۉޠ +@э"^yj\ +e&xMг=MD0XGjPxx2mv1NkhNB[fi(dQ)Omby \AQ]^F=-y͹;dE >ƌ52y=͵:h.zXq4E!Nݰz/OMI4!xib4lTJ6H;|ۮEkmtXϑ8ŒψM-a&pr"Jg[V%[Ա\Zz>*cQUy܎[>Q3ZLaMɲmFba@83Ab$]o(>Ut4Xʛˆq,8Z\s3Z*\ XoDB#V1\9tW+WL'0VcFaZ&KEyҔs2R<48qמQDliP5V(H3ؿey;IuN搩jAde<CL_EI>\--;C#PѐEeH!;`zפ珧KK>IvG2ˊkf@Cl9Sn >JK:cȎµIνR*p#A]VHGu3764 Y)uhH![fa6!'Z8Lh5[Q7$tKTXjerjtep7uJ.]ti +MTm[ANۜF5šB,.:DSH.T>Ȫ)BJlûiMu)b99Nl̪hET7 +%ucHZqRߡay."fbdB@QPWwY*}9"2dWGNЎ} [bqk-ZX[_~}bWM;Qݠ^v+ͮ_Z7o{{̩לȊOZO ;!`1 ,>w3mCV4%/>,wsiRL9z\M(maݹ9YՊΈ'O'O_ܾ5/cn[=.ؒ/x gzeGr;<>eƣjVUs..bgSzmZ} ꧙ߎv.T}_b|yHIݨ7UݮTR4x}Nׇ1"V;Ksֵ[n6o~0һIٛiX6㪟̛2:EΪ=ZRt:Kd\w_'O¶/OL.kZRa k/LZXr9nܨc7 UVr"{d\( |q2X$WITD)Ҧqy¨?'94(H:n(:yQKh&whtF4Ƒ>xND3L~*ɝoJɡC+)d%YR2CT%`3/  |}G6M]\9@M菤[,o7F:x +~ ~^~ ~^[H; YF94X̯!ׂ'W!A x`XWUg Lܑ}TWw%23uԗ@4dsom'~'v/큅2vEBv, Kl=)zbXމ6%`13?^MBOhdڊv[Dh 6B+̵ЬWU(6Wt9dR.cM?Bp]avc[M>wp`ʐeϞn0:.w`ޅzI˛xɋ[Ջeo~|ȇIW5p~yӏC,N!r>:zAğY329c(>gӨユ>t> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 246 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 0 0 0 0 0 278 0 0 0 0 +0 556 556 0 0 556 0 0 556 0 0 0 222 0 0 556 +0 0 333 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 247 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 333 278 0 +0 556 0 0 0 0 556 0 0 0 333 0 0 0 0 0 +0 722 722 722 722 667 611 778 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 944 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 248 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 371 606 0 840 778 0 333 333 389 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 606 0 0 444 +747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 +604 786 668 525 613 778 722 1000 667 667 667 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 606 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 278 278 500 500 606 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 249 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 0 600 600 0 600 600 0 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 +0 600 0 0 600 600 600 600 600 600 0 0 600 0 600 600 +600 0 600 600 600 600 600 0 600 0 0 0 0 0 600 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 250 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 82 +/Widths [250 0 0 0 500 0 0 0 0 0 0 0 0 333 250 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +747 0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 251 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [600 0 0 600 600 0 600 0 600 600 0 0 0 600 600 0 +0 600 600 600 600 0 0 0 0 0 0 0 0 600 600 600 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 252 0 R +>> +endobj +37 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 600 600 0 600 0 0 600 600 600 0 600 600 600 600 +600 0 600 600 0 0 0 0 0 600 600 600 0 0 0 0 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 0 600 0 600 0 0 0 +0 600 0 600 0 600 0 0 0 0 0 0 600 0 600 600 +600 0 600 0 600 600 0 0 0 0 0 0 600 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 253 0 R +>> +endobj +69 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 500 0 0 0 333 333 0 0 250 333 250 0 +500 0 500 0 0 0 0 0 0 0 250 0 0 0 0 500 +0 722 0 667 0 611 0 0 0 333 0 0 0 944 778 0 +611 0 667 556 611 0 0 0 722 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 722 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 254 0 R +>> +endobj +82 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBHKOH+Symbol +/Encoding /Identity-H +/DescendantFonts [ 258 0 R ] +/ToUnicode 259 0 R +>> +endobj +258 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBHKOH+Symbol +/FontDescriptor 255 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +207 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 257 0 R +>> +endobj +259 0 obj +<< +/Filter /FlateDecode +/Length 227 +>> +stream +HTPn0 tYZC۠v+e}%MA# >l;L0y%p +iG5DYmK© MGN.6x{yz|3uT_q@p`j⛙][DP}p"0"4BҀ3uW]{3~< vQARݫJÖ]zjs,c? dm +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +70 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 72 0 R +/Contents 71 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 75 0 R +/Contents 74 0 R +>> +endobj +76 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 78 0 R +/Contents 77 0 R +>> +endobj +79 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 81 0 R +/Contents 80 0 R +>> +endobj +83 0 obj +<< +/Type /Page +/Parent 56 0 R +/Resources 85 0 R +/Contents 84 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 88 0 R +/Contents 87 0 R +>> +endobj +90 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 92 0 R +/Contents 91 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 95 0 R +/Contents 94 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 98 0 R +/Contents 97 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 101 0 R +/Contents 100 0 R +>> +endobj +102 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 104 0 R +/Contents 103 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 107 0 R +/Contents 106 0 R +>> +endobj +108 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 110 0 R +/Contents 109 0 R +>> +endobj +111 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 113 0 R +/Contents 112 0 R +>> +endobj +114 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 116 0 R +/Contents 115 0 R +>> +endobj +117 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 119 0 R +/Contents 118 0 R +>> +endobj +121 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 123 0 R +/Contents 122 0 R +>> +endobj +124 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 126 0 R +/Contents 125 0 R +>> +endobj +127 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 129 0 R +/Contents 128 0 R +>> +endobj +130 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 132 0 R +/Contents 131 0 R +>> +endobj +133 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 135 0 R +/Contents 134 0 R +>> +endobj +136 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 138 0 R +/Contents 137 0 R +>> +endobj +139 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 141 0 R +/Contents 140 0 R +>> +endobj +142 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 144 0 R +/Contents 143 0 R +>> +endobj +145 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 147 0 R +/Contents 146 0 R +>> +endobj +148 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 150 0 R +/Contents 149 0 R +>> +endobj +152 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 154 0 R +/Contents 153 0 R +>> +endobj +155 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 157 0 R +/Contents 156 0 R +>> +endobj +158 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 160 0 R +/Contents 159 0 R +>> +endobj +161 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 163 0 R +/Contents 162 0 R +>> +endobj +164 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 166 0 R +/Contents 165 0 R +>> +endobj +167 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 169 0 R +/Contents 168 0 R +>> +endobj +170 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 172 0 R +/Contents 171 0 R +>> +endobj +173 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 175 0 R +/Contents 174 0 R +>> +endobj +176 0 obj +<< +/Type /Page +/Parent 151 0 R +/Resources 178 0 R +/Contents 177 0 R +>> +endobj +179 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 181 0 R +/Contents 180 0 R +>> +endobj +183 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 185 0 R +/Contents 184 0 R +>> +endobj +186 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 188 0 R +/Contents 187 0 R +>> +endobj +189 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 191 0 R +/Contents 190 0 R +>> +endobj +192 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 194 0 R +/Contents 193 0 R +>> +endobj +195 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 197 0 R +/Contents 196 0 R +>> +endobj +198 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 200 0 R +/Contents 199 0 R +>> +endobj +201 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 203 0 R +/Contents 202 0 R +>> +endobj +204 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 206 0 R +/Contents 205 0 R +>> +endobj +208 0 obj +<< +/Type /Page +/Parent 182 0 R +/Resources 210 0 R +/Contents 209 0 R +>> +endobj +211 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 213 0 R +/Contents 212 0 R +>> +endobj +215 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 217 0 R +/Contents 216 0 R +>> +endobj +218 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 220 0 R +/Contents 219 0 R +>> +endobj +221 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 223 0 R +/Contents 222 0 R +>> +endobj +224 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 226 0 R +/Contents 225 0 R +>> +endobj +227 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 229 0 R +/Contents 228 0 R +>> +endobj +230 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 232 0 R +/Contents 231 0 R +>> +endobj +233 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 235 0 R +/Contents 234 0 R +>> +endobj +236 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 238 0 R +/Contents 237 0 R +>> +endobj +239 0 obj +<< +/Type /Page +/Parent 214 0 R +/Resources 241 0 R +/Contents 240 0 R +>> +endobj +242 0 obj +<< +/Type /Page +/Parent 245 0 R +/Resources 244 0 R +/Contents 243 0 R +>> +endobj +260 0 obj +<< +/S /D +>> +endobj +261 0 obj +<< +/Nums [0 260 0 R ] +>> +endobj +12 0 obj +<< +/Type /Pages +/Kids [1 0 R 13 0 R 16 0 R 22 0 R 29 0 R 34 0 R 38 0 R 41 0 R 44 0 R 47 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +56 0 obj +<< +/Type /Pages +/Kids [50 0 R 57 0 R 60 0 R 63 0 R 66 0 R 70 0 R 73 0 R 76 0 R 79 0 R 83 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +89 0 obj +<< +/Type /Pages +/Kids [86 0 R 90 0 R 93 0 R 96 0 R 99 0 R 102 0 R 105 0 R 108 0 R 111 0 R 114 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +120 0 obj +<< +/Type /Pages +/Kids [117 0 R 121 0 R 124 0 R 127 0 R 130 0 R 133 0 R 136 0 R 139 0 R 142 0 R 145 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +151 0 obj +<< +/Type /Pages +/Kids [148 0 R 152 0 R 155 0 R 158 0 R 161 0 R 164 0 R 167 0 R 170 0 R 173 0 R 176 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +182 0 obj +<< +/Type /Pages +/Kids [179 0 R 183 0 R 186 0 R 189 0 R 192 0 R 195 0 R 198 0 R 201 0 R 204 0 R 208 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +214 0 obj +<< +/Type /Pages +/Kids [211 0 R 215 0 R 218 0 R 221 0 R 224 0 R 227 0 R 230 0 R 233 0 R 236 0 R 239 0 R] +/Count 10 +/Parent 55 0 R +>> +endobj +245 0 obj +<< +/Type /Pages +/Kids [242 0 R] +/Count 1 +/Parent 55 0 R +>> +endobj +55 0 obj +<< +/Type /Pages +/Kids [12 0 R 56 0 R 89 0 R 120 0 R 151 0 R 182 0 R 214 0 R 245 0 R ] +/Count 71 +/MediaBox [0 0 612 792] +>> +endobj +262 0 obj +<< +/CreationDate (D:20210202102652-06'00') +/ModDate (D:20210202102652-06'00') +/Producer (Apple pstopdf) +>> +endobj +263 0 obj +<< +/Type /Catalog +/Pages 55 0 R +/PageLabels 261 0 R +>> +endobj +xref +0 264 +0000000000 65535 f +0000439044 00000 n +0000000016 00000 n +0000004006 00000 n +0000434225 00000 n +0000434437 00000 n +0000434829 00000 n +0000435338 00000 n +0000435933 00000 n +0000436487 00000 n +0000436774 00000 n +0000411682 00000 n +0000445257 00000 n +0000439125 00000 n +0000004172 00000 n +0000008066 00000 n +0000439209 00000 n +0000008221 00000 n +0000010641 00000 n +0000394317 00000 n +0000394588 00000 n +0000394891 00000 n +0000439293 00000 n +0000010831 00000 n +0000014354 00000 n +0000395230 00000 n +0000395623 00000 n +0000396014 00000 n +0000396380 00000 n +0000439377 00000 n +0000014556 00000 n +0000018205 00000 n +0000396841 00000 n +0000396990 00000 n +0000439461 00000 n +0000018396 00000 n +0000022417 00000 n +0000437247 00000 n +0000439545 00000 n +0000022561 00000 n +0000026236 00000 n +0000439629 00000 n +0000026380 00000 n +0000030952 00000 n +0000439713 00000 n +0000031096 00000 n +0000035332 00000 n +0000439797 00000 n +0000035465 00000 n +0000038290 00000 n +0000439881 00000 n +0000038433 00000 n +0000039590 00000 n +0000397175 00000 n +0000407356 00000 n +0000446347 00000 n +0000445394 00000 n +0000439965 00000 n +0000039758 00000 n +0000043945 00000 n +0000440049 00000 n +0000044113 00000 n +0000048645 00000 n +0000440133 00000 n +0000048802 00000 n +0000053226 00000 n +0000440217 00000 n +0000053394 00000 n +0000057599 00000 n +0000437763 00000 n +0000440301 00000 n +0000057758 00000 n +0000063816 00000 n +0000440385 00000 n +0000063986 00000 n +0000068139 00000 n +0000440469 00000 n +0000068307 00000 n +0000074294 00000 n +0000440553 00000 n +0000074474 00000 n +0000078810 00000 n +0000438208 00000 n +0000440637 00000 n +0000078991 00000 n +0000082558 00000 n +0000440721 00000 n +0000082714 00000 n +0000087561 00000 n +0000445532 00000 n +0000440805 00000 n +0000087741 00000 n +0000098334 00000 n +0000440889 00000 n +0000098514 00000 n +0000104727 00000 n +0000440973 00000 n +0000104896 00000 n +0000111800 00000 n +0000441057 00000 n +0000111993 00000 n +0000120427 00000 n +0000441143 00000 n +0000120608 00000 n +0000126579 00000 n +0000441230 00000 n +0000126760 00000 n +0000132946 00000 n +0000441317 00000 n +0000133127 00000 n +0000138661 00000 n +0000441404 00000 n +0000138844 00000 n +0000144028 00000 n +0000441491 00000 n +0000144209 00000 n +0000150826 00000 n +0000441578 00000 n +0000151020 00000 n +0000157463 00000 n +0000445675 00000 n +0000441666 00000 n +0000157657 00000 n +0000163921 00000 n +0000441754 00000 n +0000164102 00000 n +0000172646 00000 n +0000441842 00000 n +0000172803 00000 n +0000181211 00000 n +0000441930 00000 n +0000181392 00000 n +0000188853 00000 n +0000442018 00000 n +0000189023 00000 n +0000194887 00000 n +0000442106 00000 n +0000195057 00000 n +0000205208 00000 n +0000442194 00000 n +0000205378 00000 n +0000212759 00000 n +0000442282 00000 n +0000212915 00000 n +0000219793 00000 n +0000442370 00000 n +0000219963 00000 n +0000226105 00000 n +0000442458 00000 n +0000226274 00000 n +0000230055 00000 n +0000445824 00000 n +0000442546 00000 n +0000230225 00000 n +0000236277 00000 n +0000442634 00000 n +0000236471 00000 n +0000242319 00000 n +0000442722 00000 n +0000242477 00000 n +0000249157 00000 n +0000442810 00000 n +0000249313 00000 n +0000252119 00000 n +0000442898 00000 n +0000252253 00000 n +0000254850 00000 n +0000442986 00000 n +0000254995 00000 n +0000262515 00000 n +0000443074 00000 n +0000262684 00000 n +0000272189 00000 n +0000443162 00000 n +0000272359 00000 n +0000276734 00000 n +0000443250 00000 n +0000276915 00000 n +0000281487 00000 n +0000443338 00000 n +0000281645 00000 n +0000285628 00000 n +0000445973 00000 n +0000443426 00000 n +0000285784 00000 n +0000289654 00000 n +0000443514 00000 n +0000289812 00000 n +0000294162 00000 n +0000443602 00000 n +0000294318 00000 n +0000298933 00000 n +0000443690 00000 n +0000299101 00000 n +0000305841 00000 n +0000443778 00000 n +0000306009 00000 n +0000310829 00000 n +0000443866 00000 n +0000310998 00000 n +0000315562 00000 n +0000443954 00000 n +0000315743 00000 n +0000321164 00000 n +0000444042 00000 n +0000321321 00000 n +0000325147 00000 n +0000438567 00000 n +0000444130 00000 n +0000325342 00000 n +0000331209 00000 n +0000444218 00000 n +0000331379 00000 n +0000338290 00000 n +0000446122 00000 n +0000444306 00000 n +0000338471 00000 n +0000344626 00000 n +0000444394 00000 n +0000344796 00000 n +0000351529 00000 n +0000444482 00000 n +0000351697 00000 n +0000360404 00000 n +0000444570 00000 n +0000360585 00000 n +0000366610 00000 n +0000444658 00000 n +0000366792 00000 n +0000373037 00000 n +0000444746 00000 n +0000373219 00000 n +0000378931 00000 n +0000444834 00000 n +0000379100 00000 n +0000384600 00000 n +0000444922 00000 n +0000384757 00000 n +0000388247 00000 n +0000445010 00000 n +0000388392 00000 n +0000393837 00000 n +0000445098 00000 n +0000394018 00000 n +0000394208 00000 n +0000446271 00000 n +0000411823 00000 n +0000412021 00000 n +0000412217 00000 n +0000412424 00000 n +0000412625 00000 n +0000412817 00000 n +0000413023 00000 n +0000413225 00000 n +0000413428 00000 n +0000413632 00000 n +0000413824 00000 n +0000434019 00000 n +0000438353 00000 n +0000438743 00000 n +0000445186 00000 n +0000445215 00000 n +0000446486 00000 n +0000446610 00000 n +trailer +<< +/Size 264 +/Root 263 0 R +/Info 262 0 R +/ID [<9c0651bb6b47389963dbbfdb38f01fde><9c0651bb6b47389963dbbfdb38f01fde>] +>> +startxref +446682 +%%EOF diff --git a/docs/medley-irm/17-FILEPACKAGE.TEDIT b/docs/medley-irm/17-FILEPACKAGE.TEDIT new file mode 100644 index 00000000..29196c90 --- /dev/null +++ b/docs/medley-irm/17-FILEPACKAGE.TEDIT @@ -0,0 +1,239 @@ +INTERLISP-D REFERENCE MANUAL FILE MANAGER "17"17. FILE MANAGER 2 Warning: The subsystem within Medley used for managing collections of definitions (of functions, variables, etc.) is known as the "File Manager." This terminology is confusing, because the word "file" is also used in the more conventional sense as meaning a collection of data stored on some physical media. Unfortunately, it is not possible to change this terminology at this time, because many functions and variables (MAKEFILE, FILEPKGTYPES, etc.) incorporate the word "file" in their names. Most implementations of Lisp treat symbolic files as unstructured text, much as they are treated in most conventional programming environments. Function definitions are edited with a character-oriented text editor, and then the changed definitions (or sometimes the entire file) is read or compiled to install those changes in the running memory image. Interlisp incorporates a different philosophy. A symbolic file is considered as a database of information about a group of data objects---function definitions, variable values, record declarations, etc. The text in a symbolic file is never edited directly. Definitions are edited only after their textual representations on files have been converted to data-structures that reside inside the Lisp address space. The programs for editing definitions inside Medley can therefore make use of the full set of data-manipulation capabilities that the environment already provides, and editing operations can be easily intermixed with the processes of evaluation and compilation. Medley is thus a "resident" programming environment, and as such it provides facilities for moving definitions back and forth between memory and the external databases on symbolic files, and for doing the bookkeeping involved when definitions on many symbolic files with compiled counterparts are being manipulated. The file manager provides those capabilities. It shoulders the burden of keeping track of where things are and what things have changed so that you don't have to. The file manager also keeps track of which files have been modified and need to be updated and recompiled. The file manager is integrated into many other system packages. For example, if only the compiled version of a file is loaded and you attempt to edit a function, the file manager will attempt to load the source of that function from the appropriate symbolic file. In many cases, if a datum is needed by some program, the file manager will automatically retrieve it from a file if it is not already in your working environment. Some of the operations of the file manager are rather complex. For example, the same function may appear in several different files, or the symbolic or compiled files may be in different directories, etc. Therefore, this chapter does not document how the file manager works in each and every situation, but instead makes the deliberately vague statement that it does the "right" thing with respect to keeping track of what has been changed, and what file operations need to be performed in accordance with those changes. For a simple illustration of what the file manager does, suppose that the symbolic file FOO contains the functions FOO1 and FOO2, and that the file BAR contains the functions BAR1 and BAR2. These two files could be loaded into the environment with the function LOAD: (LOAD 'FOO) FILE CREATED 4-MAR-83 09:26:55 FOOCOMS {DSK}FOO.;1 (LOAD 'BAR) FILE CREATED 4-MAR-83 09:27:24 BARCOMS {DSK}BAR.;1 Now, suppose that we change the definition of FOO2 with the editor, and we define two new functions, NEW1 and NEW2. At that point, the file manager knows that the in-memory definition of FOO2 is no longer consistent with the definition in the file FOO, and that the new functions have been defined but have not yet been associated with a symbolic file and saved on permanent storage. The function FILES? summarizes this state of affairs and enters into an interactive dialog in which we can specify what files the new functions are to belong to. (FILES?) FOO...to be dumped. plus the functions: NEW1,NEW2 want to say where the above go ? Yes (functions) NEW1 File name: BAR NEW2 File name: ZAP new file ? Yes NIL The file manager knows that the file FOO has been changed, and needs to be dumped back to permanent storage. This can be done with MAKEFILE. (MAKEFILE 'FOO) {DSK}FOO.;2 Since we added NEW1 to the old file BAR and established a new file ZAP to contain NEW2, both BAR and ZAP now also need to be dumped. This is confirmed by a second call to FILES?: (FILES?) BAR, ZAP...to be dumped. FOO...to be listed. FOO...to be compiled NIL We are also informed that the new version we made of FOO needs to be listed (sent to a printer) and that the functions on the file must be compiled. Rather than doing several MAKEFILEs to dump the files BAR and ZAP, we can simply call CLEANUP. Without any further user interaction, this will dump any files whose definitions have been modified. CLEANUP will also send any unlisted files to the printer and recompile any files which need to be recompiled. CLEANUP is a useful function to use at the end of a debugging session. It will call FILES? if any new objects have been defined, so you do not lose the opportunity to say explicitly where those belong. In effect, the function CLEANUP executes all the operations necessary to make the your permanent files consistent with the definitions in the current core-image. (CLEANUP) FOO...compiling {DSK}FOO.;2 . . . BAR...compiling {DSK}BAR.;2 . . . ZAP...compiling {DSK}ZAP.;1 . . . In addition to the definitions of functions, symbolic files in Interlisp can contain definitions of a variety of other types, e.g. variable values, property lists, record declarations, macro definitions, hash arrays, etc. In order to treat such a diverse assortment of data uniformly from the standpoint of file operations, the file manager uses the concept of a typed definition, of which a function definition is just one example. A typed definition associates with a name (usually a symbol), a definition of a given type (called the file manager type). Note that the same name may have several definitions of different types. For example, a symbol may have both a function definition and a variable definition. The file manager also keeps track of the files that a particular typed definition is stored on, so one can think of a typed definition as a relation between four elements: a name, a definition, a type, and a file. Symbolic files on permanent storage devices are referred to by names that obey the naming conventions of those devices, usually including host, directory, and version fields. When such definition groups are noticed by the file manager, they are assigned simple root names and these are used by all file manager operations to refer to those groups of definitions. The root name for a group is computed from its full permanent storage name by applying the function ROOTFILENAME; this strips off the host, directory, version, etc., and returns just the simple name field of the file. For each file, the file manager also has a data structure that describes what definitions it contains. This is known as the commands of the file, or its "filecoms". By convention, the filecoms of a file whose root name is X is stored as the value of the symbol XCOMS. For example, the value of FOOCOMS is the filecoms for the file FOO. This variable can be directly manipulated, but the file manager contains facilities such as FILES? which make constructing and updating filecoms easier, and in some cases automatic. See the Functions for Manipulating File Command Lists section. The file manager is able to maintain its databases of information because it is notified by various other routines in the system when events take place that may change that database. A file is "noticed" when it is loaded, or when a new file is stored (though there are ways to explicitly notice files without completely loading all their definitions). Once a file is noticed, the file manager takes it into account when modifying filecoms, dumping files, etc. The file manager also needs to know what typed definitions have been changed or what new definitions have been introduced, so it can determine which files need to be updated. This is done by "marking changes". All the system functions that perform file manager operations (LOAD, TCOMPL, PRETTYDEF, etc.), as well as those functions that define or change data, (EDITF, EDITV, EDITP, DWIM corrections to user functions) interact with the file manager. Also, typed-in assignment of variables or property values is noticed by the file manager. (Note that modifications to variable or property values during the execution of a function body are not noticed.) In some cases the marking procedure can be subtle, e.g. if you edit a property list using EDITP, only those properties whose values are actually changed (or added) are marked. All file manager operations can be disabled with FILEPKGFLG. FILEPKGFLG(FILEPKGFLG (Variable) NIL NIL ("17") 4) [Variable] The file manager can be disabled by setting FILEPKGFLG to NIL. This will turn off noticing files and marking changes. FILEPKGFLG is initially T. The rest of this chapter goes into further detail about the file manager. Functions for loading and storing symbolic files are presented first, followed by functions for adding and removing typed definitions from files, moving typed definitions from one file to another, determining which file a particular definition is stored in, and so on. Loading Files 1 The functions below load information from symbolic files into the Interlisp environment. A symbolic file contains a sequence of Interlisp expressions that can be evaluated to establish specified typed definitions. The expressions on symbolic files are read using FILERDTBL as the read table. The loading functions all have an argument LDFLG. LDFLG affects the operation of DEFINE, DEFINEQ, RPAQ, RPAQ?, and RPAQQ. While a source file is being loaded, DFNFLG (Chapter 10) is rebound to LDFLG. Thus, if LDFLG = NIL, and a function is redefined, a message is printed and the old definition saved. If LDFLG = T , the old definition is simply overwritten. If LDFLG = PROP, the functions are stored as "saved" definitions on the property lists under the property EXPR instead of being installed as the active definitions. If LDFLG = ALLPROP, not only function definitions but also variables set by RPAQQ, RPAQ, RPAQ? are stored on property lists (except when the variable has the value NOBIND, in which case they are set to the indicated value regardless of DFNFLG). Another option is available for loading systems for others to use and who wish to suppress the saving of information used to aid in development and debugging. If LDFLG = SYSLOAD, LOAD will: 1. Rebind DFNFLG to T, so old definitions are simply overwritten 2. Rebind LISPXHIST to NIL, thereby making the LOAD not be undoable and eliminating the cost of saving undo information (Chapter 13) 3. Rebind ADDSPELLFLG to NIL, to suppress adding to spelling lists 4. Rebind FILEPKGFLG to NIL, to prevent the file from being "noticed" by the file manager 5. Rebind BUILDMAPFLG to NIL, to prevent a file map from being constructed 6. After the load has completed, set the filecoms variable and any filevars variables to NOBIND 7. Add the file name to SYSFILES rather than FILELST A filevars variable is any variable appearing in a file manager command of the form (FILECOM * VARIABLE) (see the FileVars section). Therefore, if the filecoms includes (FNS * FOOFNS), FOOFNS is set to NOBIND. If you want the value of such a variable to be retained, even when the file is loaded with LDFLG = SYSLOAD, then you should replace the variable with an equivalent, non-atomic expression, such as (FNS * (PROGN FOOFNS)). All functions that have LDFLG as an argument perform spelling correction using LOADOPTIONS as a spelling list when LDFLG is not a member of LOADOPTIONS. LOADOPTIONS is initially (NIL T PROP ALLPROP SYSLOAD). (LOAD(LOAD (Function) NIL NIL ("17") 5) FILE LDFLG PRINTFLG) [Function] Reads successive expressions from FILE (with FILERDTBL as read table) and evaluates each as it is read, until it reads either NIL, or the single atom STOP. Note that LOAD can be used to load both symbolic and compiled files. Returns FILE (full name). If PRINTFLG = T, LOAD prints the value of each expression; otherwise it does not. (LOAD?(LOAD? (Function) NIL NIL ("17") 5) FILE LDFLG PRINTFLG) [Function] Similar to LOAD except that it does not load FILE if it has already been loaded, in which case it returns NIL. LOAD? loads FILE except when the same version of the file has been loaded (either from the same place, or from a copy of it from a different place). Specifically, LOAD? considers that FILE has already been loaded if the full name of FILE is on LOADEDFILELST (see the Noticing Files section) or the date stored on the FILEDATES property of the root file name of FILE is the same as the FILECREATED expression on FILE. (LOADFNS(LOADFNS (Function) NIL NIL ("17") 5) FNS FILE LDFLG VARS) [Function] Permits selective loading of definitions. FNS is a list of function names, a single function name, or T, meaning to load all of the functions on the file. FILE can be either a compiled or symbolic file. If a compiled definition is loaded, so are all compiler-generated subfunctions. The interpretation of LDFLG is the same as for LOAD. If FILE = NIL, LOADFNS will use WHEREIS (see the Storing Files section) to determine where the first function in FNS resides, and load from that file. Note that the file must previously have been "noticed". If WHEREIS returns NIL, and the WHEREIS library package has been loaded, LOADFNS will use the WHEREIS data base to find the file containing FN. VARS specifies which non-DEFINEQ expressions are to be loaded (i.e., evaluated). It is interpreted as follows: T Means to load all non-DEFINEQ expressions. NIL Means to load none of the non-DEFINEQ expressions. VARS Means to evaluate all variable assignment expressions (beginning with RPAQ, RPAQQ, or RPAQ?, see the Functions Used Within Source Files section). Any other symbol Means the same as specifying a list containing that atom. A list If VARS is a list that is not a valid function definition, each element in VARS is "matched" against each non-DEFINEQ expression, and if any elements in VARS "match" successfully, the expression is evaluated. "Matching" is defined as follows: If an element of VARS is an atom, it matches an expression if it is EQ to either the CAR or the CADR of the expression. If an element of VARS is a list, it is treated as an edit pattern (see Chapter 16), and matched with the entire expression (using EDIT4E, described in Chapter 16). For example, if VARS was (FOOCOMS DECLARE: (DEFLIST & (QUOTE MACRO))), this would cause (RPAQQ FOOCOMS ...), all DECLARE:s, and all DEFLISTs which set up MACROs to be read and evaluated. A function definition If VARS is a list and a valid function definition ((FNTYP VARS) is true), then LOADFNS will invoke that function on every non-DEFINEQ expression being considered, applying it to two arguments, the first and second elements in the expression. If the function returns NIL, the expression will be skipped; if it returns a non-NIL symbol (e.g., T), the expression will be evaluated; and if it returns a list, this list is evaluated instead of the expression. The file pointer is set to the very beginning of the expression before calling the VARS function definition, so it may read the entire expression if necessary. If the function returns a symbol, the file pointer is reset and the expression is READ or SKREAD. However, the file pointer is not reset when the function returns a list, so the function must leave it set immediately after the expression that it has presumably read. LOADFNS returns a list of: 1. The names of the functions that were found 2. A list of those functions not found (if any) headed by the symbol NOT-FOUND: 3. All of the expressions that were evaluated 4. A list of those members of VARS for which no corresponding expressions were found (if any), again headed by the symbol NOT-FOUND: For example: (LOADFNS '(FOO FIE FUM) FILE NIL '(BAZ (DEFLIST &))) (FOO FIE (NOT-FOUND: FUM) (RPAQ BAZ ...) (NOT-FOUND: (DEFLIST &))) (LOADVARS(LOADVARS (Function) NIL NIL ("17") 6) VARS FILE LDFLG) [Function] Same as (LOADFNS NIL FILE LDFLG VARS). (LOADFROM(LOADFROM (Function) NIL NIL ("17") 7) FILE FNS LDFLG) [Function] Same as (LOADFNS FNS FILE LDFLG T). Once the file manager has noticed a file, you can edit functions contained in the file without explicitly loading them. Similarly, those functions which have not been modified do not have to be loaded in order to write out an updated version of the file. Files are normally noticed (i.e., their contents become known to the file manager) when either the symbolic or compiled versions of the file are loaded. If the file is not going to be loaded completely, the preferred way to notice it is with LOADFROM. You can also load some functions at the same time by giving LOADFROM a second argument, but it is normally used simply to inform the file manager about the existence and contents of a particular file. (LOADBLOCK(LOADBLOCK (Function) NIL NIL ("17") 7) FN FILE LDFLG) [Function] Calls LOADFNS on those functions contained in the block declaration containing FN (see Chapter 18). LOADBLOCK is designed primarily for use with symbolic files, to load the EXPRs for a given block. It will not load a function which already has an in-core EXPR definition, and it will not load the block name, unless it is also one of the block functions. (LOADCOMP(LOADCOMP (Function) NIL NIL ("17") 7) FILE LDFLG) [Function] Performs all operations on FILE associated with compilation, i.e. evaluates all expressions under a DECLARE: EVAL@COMPILE, and "notices" the function and variable names by adding them to the lists NOFIXFNSLST and NOFIXVARSLST (see Chapter 21). Thus, if building a system composed of many files with compilation information scattered among them, all that is required to compile one file is to LOADCOMP the others. (LOADCOMP?(LOADCOMP? (Function) NIL NIL ("17") 7) FILE LDFLG) [Function] Similar to LOADCOMP, except it does not load if file has already been loaded (with LOADCOMP), in which case its value is NIL. LOADCOMP? will load the file even if it has been loaded with LOAD, LOADFNS, etc. The only time it will not load the file is if the file has already been loaded with LOADCOMP. FILESLOAD provides an easy way for you to load a series of files, setting various options: (FILESLOAD(FILESLOAD (Function) NIL NIL ("17") 7) FILE1 ... FILEN) [NLambda NoSpread Function] Loads the files FILE1 ... FILEN (all arguments unevaluated). If any of these arguments are lists, they specify certain loading options for all following files (unless changed by another list). Within these lists, the following commands are recognized: FROM DIR Search the specified directories for the file. DIR can either be a single directory, or a list of directories to search in order. For example, (FILESLOAD (FROM {ERIS}SOURCES>) ...) will search the directory {ERIS}SOURCES> for the files. If this is not specified, the default is to search the contents of DIRECTORIES (see Chapter 24). If FROM is followed by the key word VALUEOF, the following word is evaluated, and the value is used as the list of directories to search. For example, (FILESLOAD (FROM VALUEOF FOO) ...) will search the directory list that is the value of the variable FOO. As a special case, if DIR is a symbol, and the symbol DIRDIRECTORIES is bound, the value of this variable is used as the directory search list. For example, since the variable LISPUSERSDIRECTORIES (see Chapter 24) is commonly used to contain a list of directories containing "library" packages, (FILESLOAD (FROM LISPUSERS) ...) can be used instead of (FILESLOAD (FROM VALUEOF LISPUSERSDIRECTORIES) ...) If a FILESLOAD is read and evaluated while loading a file, and it doesn't contain a FROM expression, the default is to search the directory containing the FILESLOAD expression before the value of DIRECTORIES. FILESLOAD expressions can be dumped on files using the FILES file manager command. SOURCE Load the source version of the file rather than the compiled version. COMPILED Load the compiled version of the file. If COMPILED is specified, the compiled version will be loaded, if it is found. The source will not be loaded. If neither SOURCE or COMPILED is specified, the compiled version of the file will be loaded if it is found, otherwise the source will be loaded if it is found. LOAD Load the file by calling LOAD, if it has not already been loaded. This is the default unless LOADCOMP or LOADFROM is specified. If LOAD is specified, FILESLOAD considers that the file has already been loaded if the root name of the file has a non-NIL FILEDATES property. This is a somewhat different algorithm than LOAD? uses. In particular, FILESLOAD will not load a newer version of a file that has already been loaded. LOADCOMP Load the file with LOADCOMP? rather than LOAD. Automatically implies SOURCE. LOADFROM Load the file with LOADFROM rather than LOAD. NIL, T, PROP ALLPROP SYSLOAD The loading function is called with its LDFLG argument set to the specified token. LDFLG affects the operation of the loading functions by resetting DFNFLG (see Chapter 10) to LDFLG during the loading. If none of these tokens are specified, the value of the variable LDFLG is used if it is bound, otherwise NIL is used. NOERROR If NOERROR is specified, no error occurs when a file is not found. Each list determines how all further files in the lists are loaded, unless changed by another list. The tokens above can be joined together in a single list. For example, (FILESLOAD (LOADCOMP) NET (SYSLOAD FROM VALUEOF NEWDIRECTORIES) CJSYS) will call LOADCOMP? to load the file NET searching the value of DIRECTORIES, and then call LOADCOMP? to load the file CJSYS with LDFLG set to SYSLOAD, searching the directory list that is the value of the variable NEWDIRECTORIES. FILESLOAD expressions can be dumped on files using the FILES file manager command. Storing Files 1 (MAKEFILE(MAKEFILE (Function) NIL NIL ("17") 9) FILE OPTIONS REPRINTFNS SOURCEFILE) [Function] Makes a new version of the file FILE, storing the information specified by FILE's filecoms. Notices FILE if not previously noticed. Then, it adds FILE to NOTLISTEDFILES and NOTCOMPILEDFILES. OPTIONS is a symbol or list of symbols which specify options. By specifying certain options, MAKEFILE can automatically compile or list FILE. Note that if FILE does not contain any function definitions, it is not compiled even when OPTIONS specifies C or RC. The options are spelling corrected using the list MAKEFILEOPTIONS. If spelling correction fails, MAKEFILE generates an error. The options are interpreted as follows: C RC After making FILE, MAKEFILE will compile FILE by calling TCOMPL (if C is specified) or RECOMPILE (if RC is specified). If there are any block declarations specified in the filecoms for FILE, BCOMPL or BRECOMPILE will be called instead. If F, ST, STF, or S is the next item on OPTIONS following C or RC, it is given to the compiler as the answer to the compiler's question LISTING? (see Chapter 18). For example, (MAKEFILE 'FOO '(C F LIST)) will dump FOO, then TCOMPL or BCOMPL it specifying that functions are not to be redefined, and finally list the file. LIST After making FILE, MAKEFILE calls LISTFILES to print a hardcopy listing of FILE. CLISPIFY MAKEFILE calls PRETTYDEF with CLISPIFYPRETTYFLG = T (see Chapter 21). This causes CLISPIFY to be called on each function defined as an EXPR before it is prettyprinted. Alternatively, if FILE has the property FILETYPE with value CLISP or a list containing CLISP, PRETTYDEF is called with CLISPIFYPRETTYFLG reset to CHANGES, which will cause CLISPIFY to be called on all functions marked as having been changed. If FILE has property FILETYPE with value CLISP, the compiler will DWIMIFY its functions before compiling them (see Chapter 18). FAST MAKEFILE calls PRETTYDEF with PRETTYFLG = NIL (see Chapter 26). This causes data objects to be printed rather than prettyprinted, which is much faster. REMAKE MAKEFILE "remakes" FILE: The prettyprinted definitions of functions that have not changed are copied from an earlier version of the symbolic file. Only those functions that have changed are prettyprinted. NEW MAKEFILE does not remake FILE. If MAKEFILEREMAKEFLG = T (the initial setting), the default for all calls to MAKEFILE is to remake. The NEW option can be used to override this default. REPRINTFNS and SOURCEFILE are used when remaking a file. FILE is not added to NOTLISTEDFILES if FILE has on its property list the property FILETYPE with value DON'TLIST, or a list containing DON'TLIST. FILE is not added to NOTCOMPILEDFILES if FILE has on its property list the property FILETYPE with value DON'TCOMPILE, or a list containing DON'TCOMPILE. Also, if FILE does not contain any function definitions, it is not added to NOTCOMPILEDFILES, and it is not compiled even when OPTIONS specifies C or RC. If a remake is not being performed, MAKEFILE checks the state of FILE to make sure that the entire source file was actually LOADed. If FILE was loaded as a compiled file, MAKEFILE prints the message CAN'T DUMP: ONLY THE COMPILED FILE HAS BEEN LOADED. Similarly, if only some of the symbolic definitions were loaded via LOADFNS or LOADFROM, MAKEFILE prints CAN'T DUMP: ONLY SOME OF ITS SYMBOLICS HAVE BEEN LOADED. In both cases, MAKEFILE will then ask you if it should dump anyway; if you decline, MAKEFILE does not call PRETTYDEF, but simply returns (FILE NOT DUMPED) as its value. You can indicate that FILE must be block compiled together with other files as a unit by putting a list of those files on the property list of each file under the property FILEGROUP. If FILE has a FILEGROUP property, the compiler will not be called until all files on this property have been dumped that need to be. MAKEFILE operates by rebinding PRETTYFLG, PRETTYTRANFLG, and CLISPIFYPRETTYFLG, evaluating each expression on MAKEFILEFORMS (under errorset protection), and then calling PRETTYDEF. PRETTYDEF calls PRETTYPRINT with its second argument PRETTYDEFLG = T, so whenever PRETTYPRINT (and hence MAKEFILE) start printing a new function, the name of that function is printed if more than 30 seconds (real time) have elapsed since the last time it printed the name of a function. (MAKEFILES(MAKEFILES (Function) NIL NIL ("17") 11) OPTIONS FILES) [Function] Performs (MAKEFILE FILE OPTIONS) for each file on FILES that needs to be dumped. If FILES = NIL, FILELST is used. For example, (MAKEFILES 'LIST) will make and list all files that have been changed. In this case, if any typed definitions for any items have been defined or changed and they are not contained in one of the files on FILELST, MAKEFILES calls ADDTOFILES? to allow you to specify where these go. MAKEFILES returns a list of all files that are made. (CLEANUP(CLEANUP (Function) NIL NIL ("17") 11) FILE1 FILE2 ... FILEN) [NLambda NoSpread Function] Dumps, lists, and recompiles (with RECOMPILE or BRECOMPILE) any of the specified files (unevaluated) requiring the corresponding operation. If no files are specified, FILELST is used. CLEANUP returns NIL. CLEANUP uses the value of the variable CLEANUPOPTIONS as the OPTIONS argument to MAKEFILE. CLEANUPOPTIONS is initially (RC), to indicate that the files should be recompiled. If CLEANUPOPTIONS is set to (RC F), no listing will be performed, and no functions will be redefined as the result of compiling. Alternatively, if FILE1 is a list, it will be interpreted as the list of options regardless of the value of CLEANUPOPTIONS. (FILES?(FILES? (Function) NIL NIL ("17") 11)) [Function] Prints on the terminal the names of those files that have been modified but not dumped, dumped but not listed, dumped but not compiled, plus the names of any functions and other typed definitions (if any) that are not contained in any file. If there are any, FILES? then calls ADDTOFILES? to allow you to specify where these go. (ADDTOFILES?(ADDTOFILES? (Function) NIL NIL ("17") 12) %) [Function] Called from MAKEFILES, CLEANUP, and FILES? when there are typed definitions that have been marked as changed which do not belong to any file. ADDTOFILES? lists the names of the changed items, and asks if you want to specify where these items should be put. If you answer N(o), ADDTOFILES? returns NIL without taking any action. If you answer ], this is taken to be an answer to each question that would be asked, and all the changed items are marked as dummy items to be ignored. Otherwise, ADDTOFILES? prints the name of each changed item, and accepts one of the following responses: A file name A filevar If you give a file name or a variable whose value is a list (a filevar), the item is added to the corresponding file or list, using ADDTOFILE. If your response is not the name of a file on FILELST or a variable whose value is a list, you will be asked whether it is a new file. If you say no, then ADDTOFILES? will check whether the item is the name of a list, i.e., whether its value is a list. If not, youwill be asked whether it is a new list. line-feed Same as your previous response. space carriage return Take no action. ] The item is marked as a dummy item by adding it to NILCOMS. This tells the file manager simply to ignore this item. [ The "definition" of the item in question is prettyprinted to the terminal, and then you are asked again about its disposition. ( ADDTOFILES? prompts with "LISTNAME: (", you type in the name of a list, i.e. a variable whose value is a list, terminated by a ). The item will then only be added to (under) a command in which the named list appears as a filevar. If none are found, a message is printed, and you are asked again. For example, you define a new function FOO3. When asked where it goes, you type (FOOFNS). If the command (FNS * FOOFNS) is found, FOO3 will be added to the value of FOOFNS. If instead you type (FOOCOMS), and the command (COMS * FOOCOMS) is found, then FOO3 will be added to a command for dumping functions that is contained in FOOCOMS. If the named list is not also the name of a file, you can simply type it in without parenthesis as described above. @ ADDTOFILES? prompts with "Near: (", you type in the name of an object, and the item is then inserted in a command for dumping objects (of its type) that contains the indicated name. The item is inserted immediately after the indicated name. (LISTFILES FILE1 FILE2 ... FILEN) [NLambda NoSpread Function] Lists each of the specified files (unevaluated). If no files are given, NOTLISTEDFILES is used. Each file listed is removed from NOTLISTEDFILES if the listing is completed. For each file not found, LISTFILES prints the message FILENAME NOT FOUND and proceeds to the next file. LISTFILES calls the function LISTFILES1 on each file to be listed. Normally, LISTFILES1 is defined to simply call SEND.FILE.TO.PRINTER (see Chapter 29), but you can advise or redefine LISTFILES1 for more specialized applications. Any lists inside the argument list to LISTFILES are interpreted as property lists that set the various printing options, such as the printer, number of copies, banner page name, etc (see see Chapter 29). Later properties override earlier ones. For example, (LISTFILES FOO (HOST JEDI) FUM (#COPIES 3) FIE) will cause one copy of FOO to be printed on the default printer, and one copy of FUM and three copies of FIE to be printed on the printer JEDI. (COMPILEFILES(COMPILEFILES (Function) NIL NIL ("17") 13) FILE1 FILE2 ... FILEN) [NLambda NoSpread Function] Executes the RC and C options of MAKEFILE for each of the specified files (unevaluated). If no files are given, NOTCOMPILEDFILES is used. Each file compiled is removed from NOTCOMPILEDFILES. If FILE1 is a list, it is interpreted as the OPTIONS argument to MAKEFILES. This feature can be used to supply an answer to the compiler's LISTING? question, e.g., (COMPILEFILES (STF)) will compile each file on NOTCOMPILEDFILES so that the functions are redefined without the EXPRs definitions being saved. (WHEREIS(WHEREIS (Function) NIL NIL ("17") 13) NAME TYPE FILES FN) [Function] TYPE is a file manager type. WHEREIS sweeps through all the files on the list FILES and returns a list of all files containing NAME as a TYPE. WHEREIS knows about and expands all file manager commands and file manager macros. TYPE = NIL defaults to FNS (to retrieve function definitions). If FILES is not a list, the value of FILELST is used. If FN is given, it should be a function (with arguments NAME, FILE, and TYPE) which is applied for every file in FILES that contains NAME as a TYPE. In this case, WHEREIS returns NIL. If the WHEREIS library package has been loaded, WHEREIS is redefined so that FILES = T means to use the whereis package data base, so WHEREIS will find NAME even if the file has not been loaded or noticed. FILES = NIL always means use FILELST. Remaking a Symbolic File 1 Most of the time that a symbolic file is written using MAKEFILE, only a few of the functions that it contains have been changed since the last time the file was written. Rather than prettprinting all of the functions, it is often considerably faster to "remake" the file, copying the prettprinted definitions of unchanged functions from an earlier version of the symbolic file, and only prettyprinting those functions that have been changed. MAKEFILE will remake the symbolic file if the REMAKE option is specified. If the NEW option is given, the file is not remade, and all of the functions are prettprinted. The default action is specified by the value of MAKEFILEREMAKEFLG: if T (its initial value), MAKEFILE will remake files unless the NEW option is given; if NIL, MAKEFILE will not remake unless the REMAKE option is given. Note: If the file has never been loaded or dumped, for example if the filecoms were simply set up in memory, then MAKEFILE will never attempt to remake the file, regardless of the setting of MAKEFILEREMAKEFLG, or whether the REMAKE option was specified. When MAKEFILE is remaking a symbolic file, you can explicitly indicate the functions which are to be prettyprinted and the file to be used for copying the rest of the function definitions from via the REPRINTFNS and SOURCEFILE arguments to MAKEFILE. Normally, both of these arguments are defaulted to NIL. In this case, REPRINTFNS will be set to those functions that have been changed since the last version of the file was written. For SOURCEFILE, MAKEFILE obtains the full name of the most recent version of the file (that it knows about) from the FILEDATES property of the file, and checks to make sure that the file still exists and has the same file date as that stored on the FILEDATES property. If it does, MAKEFILE uses that file as SOURCEFILE. This procedure permits you to LOAD or LOADFROM a file in a different directory, and still be able to remake the file with MAKEFILE. In the case where the most recent version of the file cannot be found, MAKEFILE will attempt to remake using the original version of the file (i.e., the one first loaded), specifying as REPRINTFNS the union of all changes that have been made since the file was first loaded, which is obtained from the FILECHANGES property of the file. If both of these fail, MAKEFILE prints the message "CAN'T FIND EITHER THE PREVIOUS VERSION OR THE ORIGINAL VERSION OF FILE, SO IT WILL HAVE TO BE WRITTEN ANEW", and does not remake the file, i.e. will prettyprint all of the functions. When a remake is specified, MAKEFILE also checks to see how the file was originally loaded. If the file was originally loaded as a compiled file, MAKEFILE will call LOADVARS to obtain those DECLARE: expressions that are contained on the symbolic file, but not the compiled file, and hence have not been loaded. If the file was loaded by LOADFNS (but not LOADFROM), then LOADVARS is called to obtain any non-DEFINEQ expressions. Before calling LOADVARS to re-load definitions, MAKEFILE asks you, e.g. "Only the compiled version of FOO was loaded, do you want to LOADVARS the (DECLARE: .. DONTCOPY ..) expressions from {DSK}FOO.;3?". You can respond Yes to execute the LOADVARS and continue the MAKEFILE, No to proceed with the MAKEFILE without performing the LOADVARS, or Abort to abort the MAKEFILE. You may wish to skip the LOADVARS if you had circumvented the file manager in some way, and loading the old definitions would overwrite new ones. Remaking a symbolic file is considerably faster if the earlier version has a file map indicating where the function definitions are located (see the File Maps section), but it does not depend on this information. Loading Files in a Distributed Environment 1 Each Interlisp source and compiled code file contains the full filename of the file, including the host and directory names, in a FILECREATED expression at the beginning of the file. The compiled code file also contains the full file name of the source file it was created from. In earlier versions of Interlisp, the file manager used this information to locate the appropriate source file when "remaking" or recompiling a file. This turned out to be a bad feature in distributed environments, where users frequently move files from one place to another, or where files are stored on removable media. For example, suppose you MAKEFILE to a floppy, and then copy the file to a file server. If you loaded and edited the file from a file server, and tried to do MAKEFILE, it would try to locate the source file on the floppy, which is probably no longer loaded. Currently, the file manager searches for sources file on the connected directory, and on the directory search path (on the variable DIRECTORIES). If it is not found, the host/directory information from the FILECREATED expression be used. Warning: One situation where the new algorithm does the wrong thing is if you explicitly LOADFROM a file that is not on your directory search path. Future MAKEFILEs and CLEANUPs will search the connected directory and DIRECTORIES to find the source file, rather than using the file that the LOADFROM was done from. Even if the correct file is on the directory search path, you could still create a bad file if there is another version of the file in an earlier directory on the search path. In general, you should either explicitly specify the SOURCEFILE argument to MAKEFILE to tell it where to get the old source, or connect to the directory where the correct source file is. Marking Changes 1 The file manager needs to know what typed definitions have been changed, so it can determine which files need to be updated. This is done by "marking changes". All the system functions that perform file manager operations (LOAD, TCOMPL, PRETTYDEF, etc.), as well as those functions that define or change data, (EDITF, EDITV, EDITP, DWIM corrections to user functions) interact with the file manager by marking changes. Also, typed-in assignment of variables or property values is noticed by the file manager. (If a program modifies a variable or property value, this is not noticed.) In some cases the marking procedure can be subtle, e.g. if you edit a property list using EDITP, only those properties whose values are actually changed (or added) are marked. The various system functions which create or modify objects call MARKASCHANGED to mark the object as changed. For example, when a function is defined via DEFINE or DEFINEQ, or modified via EDITF, or a DWIM correction, the function is marked as being a changed object of type FNS. Similarly, whenever a new record is declared, or an existing record redeclared or edited, it is marked as being a changed object of type RECORDS, and so on for all of the other file manager types. You can also call MARKASCHANGED directly to mark objects of a particular file manager type as changed: (MARKASCHANGED(MARKASCHANGED (Function) NIL NIL ("17") 16) NAME TYPE REASON) [Function] Marks NAME of type TYPE as being changed. MARKASCHANGED returns NAME. MARKASCHANGED is undoable. REASON is a symbol that indicated how NAME was changed. MARKASCHANGED recognizes the following values for REASON: DEFINED Used to indicate the creation of NAME, e.g. from DEFINEQ (Chapter 10). CHANGED Used to indicate a change to NAME, e.g. from the editor. DELETED Used to indicate the deletion of NAME, e.g. by DELDEF. CLISP Used to indicate the modification of NAME by CLISP translation. For backwards compatibility, MARKASCHANGED also accepts a REASON of T (=DEFINED) and NIL (=CHANGED). New programs should avoid using these values. The variable MARKASCHANGEDFNS is a list of functions that MARKASCHANGED calls (with arguments NAME, TYPE, and REASON). Functions can be added to this list to "advise" MARKASCHANGED to do additional work for all types of objects. The WHENCHANGED file manager type property (see the Defining New File Manager Types section) can be used to specify additional actions when MARKASCHANGED gets called on specific types of objects. (UNMARKASCHANGED(UNMARKASCHANGED (Function) NIL NIL ("17") 16) NAME TYPE) [Function] Unmarks NAME of type TYPE as being changed. Returns NAME if NAME was marked as changed and is now unmarked, NIL otherwise. UNMARKASCHANGED is undoable. (FILEPKGCHANGES(FILEPKGCHANGES (Function) NIL NIL ("17") 16) TYPE LST) [NoSpread Function] If LST is not specified (as opposed to being NIL), returns a list of those objects of type TYPE that have been marked as changed but not yet associated with their corresponding files (see the File Manager Types section). If LST is specified, FILEPKGCHANGES sets the corresponding list. (FILEPKGCHANGES) returns a list of all objects marked as changed as a list of elements of the form (TYPENAME . CHANGEDOBJECTS). Some properties (e.g. EXPR, ADVICE, MACRO, I.S.OPR, etc.) are used to implement other file manager types. For example, if you change the value of the property I.S.OPR, you are really changing an object of type I.S.OPR. The effect is the same as though you had redefined the i.s.opr via a direct call to the function I.S.OPR. If a property whose value has been changed or added does not correspond to a specific file manager type, then it is marked as a changed object of type PROPS whose name is (VARIABLENAME PROPNAME) (except if the property name has a property PROPTYPE with value IGNORE). Similarly, if you change a variable which implements the file manager type ALISTS (as indicated by the appearance of the property VARTYPE with value ALIST on the variable's property list), only those entries that are actually changed are marked as being changed objects of type ALISTS. The "name" of the object will be (VARIABLENAME KEY) where KEY is CAR of the entry on the alist that is being marked. If the variable corresponds to a specific file manager type other than ALISTS, e.g., USERMACROS, LISPXMACROS, etc., then an object of that type is marked. In this case, the name of the changed object will be CAR of the corresponding entry on the alist. For example, if you edit LISPXMACROS and change a definition for PL, then the object PL of type LISPXMACROS is marked as being changed. Noticing Files 1 Already existing files are "noticed" by LOAD or LOADFROM (or by LOADFNS or LOADVARS when the VARS argument is T. New files are noticed when they are constructed by MAKEFILE, or when definitions are first associated with them via FILES? or ADDTOFILES?. Noticing a file updates certain lists and properties so that the file manager functions know to include the file in their operations. For example, CLEANUP will only dump files that have been noticed. You can explicitly tell the file manager to notice a newly-created file by defining the filecoms for the file, and calling ADDFILE: (ADDFILE(ADDFILE (Function) NIL NIL ("17") 17) FILE) [Function] Tells the file manager that FILE should be recognized as a file; it adds FILE to FILELST, and also sets up the FILE property of FILE to reflect the current set of changes which are "registered against" FILE. The file manager uses information stored on the property list of the root name of noticed files. The following property names are used: FILE (FILE% (Property) NIL NIL ("17") 17) [Property Name] When a file is noticed, the property FILE, value ((FILECOMS . LOADTYPE)) is added to the property list of its root name. FILECOMS is the variable containing the filecoms of the file. LOADTYPE indicates how the file was loaded, e.g., completely loaded, only partially loaded as with LOADFNS, loaded as a compiled file, etc. The property FILE is used to determine whether or not the corresponding file has been modified since the last time it was loaded or dumped. CDR of the FILE property records by type those items that have been changed since the last MAKEFILE. Whenever a file is dumped, these items are moved to the property FILECHANGES, and CDR of the FILE property is reset to NIL. FILECHANGES(FILECHANGES (Property) NIL NIL ("17") 17) [Property Name] The property FILECHANGES contains a list of all changed items since the file was loaded (there may have been several sequences of editing and rewriting the file). When a file is dumped, the changes in CDR of the FILE property are added to the FILECHANGES property. FILEDATES(FILEDATES (Property) NIL NIL ("17") 18) [Property Name] The property FILEDATES contains a list of version numbers and corresponding file dates for this file. These version numbers and dates are used for various integrity checks in connection with remaking a file. FILEMAP(FILEMAP (Property) NIL NIL ("17") 18) [Property Name] The property FILEMAP is used to store the filemap for the file. This is used to directly load individual functions from the middle of a file. To compute the root name, ROOTFILENAME is applied to the name of the file as indicated in the FILECREATED expression appearing at the front of the file, since this name corresponds to the name the file was originally made under. The file manager detects that the file being noticed is a compiled file (regardless of its name), by the appearance of more than one FILECREATED expressions. In this case, each of the files mentioned in the following FILECREATED expressions are noticed. For example, if you perform (BCOMPL '(FOO FIE)), and subsequently loads FOO.DCOM, both FOO and FIE will be noticed. When a file is noticed, its root name is added to the list FILELST: FILELST(FILELST (Variable) NIL NIL ("17") 18) [Variable] Contains a list of the root names of the files that have been noticed. LOADEDFILELST(LOADEDFILELST (Variable) NIL NIL ("17") 18) [Variable] Contains a list of the actual names of the files as loaded by LOAD, LOADFNS, etc. For example, if you perform (LOAD 'EDITA.COM;3), EDITA will be added to FILELST, but EDITA.COM;3 is added to LOADEDFILELST. LOADEDFILELST is not used by the file manager; it is maintained solely for your benefit. Distributing Change Information 1 Periodically, the function UPDATEFILES is called to find which file(s) contain the elements that have been changed. UPDATEFILES is called by FILES?, CLEANUP, and MAKEFILES, i.e., any procedure that requires the FILE property to be up to date. This procedure is followed rather than updating the FILE property after each change because scanning FILELST and examining each file manager command can be a time-consuming process; this is not so noticeable when performed in conjunction with a large operation like loading or writing a file. UPDATEFILES operates by scanning FILELST and interrogating the file manager commands for each file. When (if) any files are found that contain the corresponding typed definition, the name of the element is added to the value of the property FILE for the corresponding file. Thus, after UPDATEFILES has completed operating, the files that need to be dumped are simply those files on FILELST for which CDR of their FILE property is non-NIL. For example, if you load the file FOO containing definitions for FOO1, FOO2, and FOO3, edit FOO2, and then call UPDATEFILES, (GETPROP 'FOO 'FILE) will be ((FOOCOMS . T) (FNS FOO2)). If any objects marked as changed have not been transferred to the FILE property for some file, e.g., you define a new function but forget (or declines) to add it to the file manager commands for the corresponding file, then both FILES? and CLEANUP will print warning messages, and then call ADDTOFILES? to permit you to specify on which files these items belong. You can also invoke UPDATEFILES directly: (UPDATEFILES(UPDATEFILES (Function) NIL NIL ("17") 19) % %) [Function] (UPDATEFILES) will update the FILE properties of the noticed files. File Manager Types 1 In addition to the definitions of functions and values of variables, source files in Interlisp can contain a variety of other information, e.g. property lists, record declarations, macro definitions, hash arrays, etc. In order to treat such a diverse assortment of data uniformly from the standpoint of file operations, the file manager uses the concept of a typed definition, of which a function definition is just one example. A typed definition associates with a name (usually a symbol), a definition of a given type (called the file manager type). Note that the same name may have several definitions of different types. For example, a symbol may have both a function definition and a variable definition. The file manager also keeps track of the file that a particular typed definition is stored on, so one can think of a typed definition as a relation between four elements: a name, a definition, a type, and a file. A file manager type is an abstract notion of a class of objects which share the property that every object of the same file manager type is stored, retrieved, edited, copied etc., by the file manager in the same way. Each file manager type is identified by a symbol, which can be given as an argument to the functions that manipulate typed definitions. You may define new file manager types, as described in the Defining New Package Types section. FILEPKGTYPES(FILEPKGTYPES (Variable) NIL NIL ("17") 19) [Variable] The value of FILEPKGTYPES is a list of all file manager types, including any that you may have defined. The file manager is initialized with the following built-in file manager types: ADVICE(ADVICE (File Package Type) NIL NIL ("17") 19) [File Manager Type] Used to access "advice" modifying a function (see Chapter 15). ALISTS(ALISTS (File Package Type) NIL NIL ("17") 19) [File Manager Type] Used to access objects stored on an association list that is the value of a symbol (see Chapter 3). A variable is declared to have an association list as its value by putting on its property list the property VARTYPE with value ALIST. In this case, each dotted pair on the list is an object of type ALISTS. When the value of such a variable is changed, only those entries in the association list that are actually changed or added are marked as changed objects of type ALISTS (with "name" (SYMBOL KEY)). Objects of type ALISTS are dumped via the ALISTS or ADDVARS file manager commands. Note that some association lists are used to "implement" other file manager types. For example, the value of the global variable USERMACROS implements the file manager type USERMACROS and the values of LISPXMACROS and LISPXHISTORYMACROS implement the file manager type LISPXMACROS. This is indicated by putting on the property list of the variable the property VARTYPE with value a list of the form (ALIST FILEPKGTYPE). For example, (GETPROP 'LISPXHISTORYMACROS 'VARTYPE) => (ALIST LISPXMACROS). COURIERPROGRAMS(COURIERPROGRAMS (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access Courier programs (see Chapter 31). EXPRESSIONS(EXPRESSIONS (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access lisp expressions that are put on a file by using the REMEMBER programmers assistant command (Chapter 13), or by explicitly putting the P file manager command on the filecoms. FIELDS(FIELDS (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access fields of records. The "definition" of an object of type FIELDS is a list of all the record declarations which contain the name. See Chapter 8. FILEPKGCOMS (FILEPKGCOMS% (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access file manager commands and types. A single name can be defined both as a file manager type and a file manager command. The "definition" of an object of type FILEPKGCOMS is a list structure of the form ((COM . COMPROPS) (TYPE . TYPEPROPS)), where COMPROPS is a property list specifying how the name is defined as a file manager command by FILEPKGCOM (see the Defining New File Manager Commands section), and TYPEPROPS is a property list specifying how the name is defined as a file manager type by FILEPKGTYPE (see the Defining New File Manager Types section). FILES(FILES (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access files. This file manager type is most useful for renaming files. The "definition" of a file is not a useful structure. FILEVARS(FILEVARS (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access Filevars (see the FileVars section). FNS(FNS (File Package Type) NIL NIL ("17") 20) [File Manager Type] Used to access function definitions. I.S.OPRS(I.S.OPRS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access the definitions of iterative statement operators (see Chapter 9). LISPXMACROS(LISPXMACROS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access programmer's assistant commands defined on the variables LISPXMACROS and LISPXHISTORYMACROS (see Chapter 13). MACROS(MACROS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access macro definitions (see Chapter 10). PROPS(PROPS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access objects stored on the property list of a symbol (see Chapter 2). When a property is changed or added, an object of type PROPS, with "name" (SYMBOL PROPNAME) is marked as being changed. Note that some symbol properties are used to implement other file manager types. For example, the property MACRO implements the file manager type MACROS, the property ADVICE implements ADVICE, etc. This is indicated by putting the property PROPTYPE, with value of the file manager type on the property list of the property name. For example, (GETPROP 'MACRO 'PROPTYPE) => MACROS. When such a property is changed or added, an object of the corresponding file manager type is marked. If (GETPROP PROPNAME 'PROPTYPE) => IGNORE, the change is ignored. The FILE, FILEMAP, FILEDATES, etc. properties are all handled this way. (IGNORE cannot be the name of a file manager type implemented as a property). RECORDS(RECORDS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access record declarations (see Chapter 8). RESOURCES(RESOURCES (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access resources (see Chapter 12). TEMPLATES(TEMPLATES (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access Masterscope templates (see Chapter 19). USERMACROS(USERMACROS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access user edit macros (see Chapter 16). VARS(VARS (File Package Type) NIL NIL ("17") 21) [File Manager Type] Used to access top-level variable values. Functions for Manipulating Typed Definitions The functions described below can be used to manipulate typed definitions, without needing to know how the manipulations are done. For example, (GETDEF 'FOO 'FNS) will return the function definition of FOO, (GETDEF 'FOO 'VARS) will return the variable value of FOO, etc. All of the functions use the following conventions: 1. All functions which make destructive changes are undoable. 2. Any argument that expects a list of symbols will also accept a single symbol, operating as though it were enclosed in a list. For example, if the argument FILES should be a list of files, it may also be a single file. 3. TYPE is a file manager type. TYPE = NIL is equivalent to TYPE = FNS. The singular form of a file manager type is also recognized, e.g. TYPE = VAR is equivalent to TYPE = VARS. 4. FILES = NIL is equivalent to FILES = FILELST. 5. SOURCE is used to indicate the source of a definition, that is, where the definition should be found. SOURCE can be one of: CURRENT Get the definition currently in effect. SAVED Get the "saved" definition, as stored by SAVEDEF. FILE Get the definition contained on the (first) file determined by WHEREIS. WHEREIS is called with FILES = T, so that if the WHEREIS library package is loaded, the WHEREIS data base will be used to find the file containing the definition. ? Get the definition currently in effect if there is one, else the saved definition if there is one, otherwise the definition from a file determined by WHEREIS. Like specifying CURRENT, SAVED, and FILE in order, and taking the first definition that is found. a file name a list of file names Get the definition from the first of the indicated files that contains one. NIL In most cases, giving SOURCE = NIL (or not specifying it at all) is the same as giving ?, to get either the current, saved, or filed definition. However, with HASDEF, SOURCE = NIL is interpreted as equal to SOURCE = CURRENT, which only tests if there is a current definition. The operation of most of the functions described below can be changed or extended by modifying the appropriate properties for the corresponding file manager type using the function FILEPKGTYPE, described in the Defining New File Manager Types section. (GETDEF(GETDEF (Function) NIL NIL ("17") 23) NAME TYPE SOURCE OPTIONS) [Function] Returns the definition of NAME, of type TYPE, from SOURCE. For most types, GETDEF returns the expression which would be pretty printed when dumping NAME as TYPE. For example, for TYPE = FNS, an EXPR definition is returned, for TYPE = VARS, the value of NAME is returned, etc. OPTIONS is a list which specifies certain options: NOERROR GETDEF causes an error if an appropriate definition cannot be found, unless OPTIONS is or contains NOERROR. In this case, GETDEF returns the value of the NULLDEF file manager type property (see the Defining New File Manager Types section), usually NIL. a string If OPTIONS is or contains a string, that string will be returned if no definition is found (and NOERROR is not among the options). The caller can thus determine whether a definition was found, even for types for which NIL or NOBIND are acceptable definitions. NOCOPY GETDEF returns a copy of the definition unless OPTIONS is or contains NOCOPY. EDIT If OPTIONS is or contains EDIT, GETDEF returns a copy of the definition unless it is possible to edit the definition "in place." With some file manager types, such as functions, it is meaningful (and efficient) to edit the definition by destructively modifying the list structure, without calling PUTDEF. However, some file manager types (like records) need to be "installed" with PUTDEF after they are edited. The default EDITDEF (see the Defining New File Manager Types section) calls GETDEF with OPTIONS of (EDIT NOCOPY), so it doesn't use a copy unless it has to, and only calls PUTDEF if the result of editing is not EQUAL to the old definition. NODWIM A FNS definition will be dwimified if it is likely to contain CLISP unless OPTIONS is or contains NODWIM. (PUTDEF(PUTDEF (Function) NIL NIL ("17") 23) NAME TYPE DEFINITION REASON) [Function] Defines NAME of type TYPE with DEFINITION. For TYPE = FNS, does a DEFINE; for TYPE = VARS, does a SAVESET, etc. For TYPE = FILES, PUTDEF establishes the command list, notices NAME, and then calls MAKEFILE to actually dump the file NAME, copying functions if necessary from the "old" file (supplied as part of DEFINITION). PUTDEF calls MARKASCHANGED (see the Mrking Changes section) to mark NAME as changed, giving a reason of REASON. If REASON is NIL, the default is DEFINED. If TYPE = FNS, PUTDEF prints a warning if you try to redefine a function on the list UNSAFE.TO.MODIFY.FNS (see Chapter 10). (HASDEF(HASDEF (Function) NIL NIL ("17") 24) NAME TYPE SOURCE SPELLFLG) [Function] Returns (OR NAME T) if NAME is the name of something of type TYPE. If not, attempts spelling correction if SPELLFLG = T, and returns the spelling-corrected NAME. Otherwise returns NIL. HASDEF for type FNS (or NIL) indicates that NAME has an editable source definition. If NAME is a function that exists on a file for which you have loaded only the compiled version and not the source, HASDEF returns NIL. (HASDEF NIL TYPE) returns T if NIL has a valid definition. If SOURCE = NIL, HASDEF interprets this as equal to SOURCE = CURRENT, which only tests if there is a current definition. (TYPESOF(TYPESOF (Function) NIL NIL ("17") 24) NAME POSSIBLETYPES IMPOSSIBLETYPES SOURCE) [Function] Returns a list of the types in POSSIBLETYPES but not in IMPOSSIBLETYPES for which NAME has a definition. FILEPKGTYPES is used if POSSIBLETYPES is NIL. (COPYDEF(COPYDEF (Function) NIL NIL ("17") 24) OLD NEW TYPE SOURCE OPTIONS) [Function] Defines NEW to have a copy of the definition of OLD by doing PUTDEF on a copy of the definition retrieved by (GETDEF OLD TYPE SOURCE OPTIONS). NEW is substituted for OLD in the copied definition, in a manner that may depend on the TYPE. For example, (COPYDEF 'PDQ 'RST 'FILES) sets up RSTCOMS to be a copy of PDQCOMS, changes things like (VARS * PDQVARS) to be (VARS * RSTVARS) in RSTCOMS, and performs a MAKEFILE on RST such that the appropriate definitions get copied from PDQ. COPYDEF disables the NOCOPY option of GETDEF, so NEW will always have a copy of the definition of OLD. COPYDEF substitutes NEW for OLD throughout the definition of OLD. This is usually the right thing to do, but in some cases, e.g., where the old name appears within a quoted expression but was not used in the same context, you must re-edit the definition. (DELDEF(DELDEF (Function) NIL NIL ("17") 24) NAME TYPE) [Function] Removes the definition of NAME as a TYPE that is currently in effect. (SHOWDEF(SHOWDEF (Function) NIL NIL ("17") 24) NAME TYPE FILE) [Function] Prettyprints the definition of NAME as a TYPE to FILE. This shows you how NAME would be written to a file. Used by ADDTOFILES? (see the Storing Files section). (EDITDEF(EDITDEF (Function) NIL NIL ("17") 24) NAME TYPE SOURCE EDITCOMS) [Function] Edits the definition of NAME as a TYPE. Essentially performs (PUTDEF NAME TYPE (EDITE (GETDEF NAME TYPE SOURCE) EDITCOMS)) (SAVEDEF(SAVEDEF (Function) NIL NIL ("17") 25) NAME TYPE DEFINITION) [Function] Sets the "saved" definition of NAME as a TYPE to DEFINITION. If DEFINITION = NIL, the current definition of NAME is saved. If TYPE = FNS (or NIL), the function definition is saved on NAME's property list under the property EXPR, or CODE (depending on the FNTYP of the function definition). If (GETD NAME) is non-NIL, but (FNTYP FN) = NIL, SAVEDEF saves the definition on the property name LIST. This can happen if a function was somehow defined with an illegal expr definition, such as (LAMMMMDA (X) ...). If TYPE = VARS, the definition is stored as the value of the VALUE property of NAME. For other types, the definition is stored in an internal data structure, from where it can be retrieved by GETDEF or UNSAVEDEF. (UNSAVEDEF(UNSAVEDEF (Function) NIL NIL ("17") 25) NAME TYPE) [Function] Restores the "saved" definition of NAME as a TYPE, making it be the current definition. Returns PROP. If TYPE = FNS (or NIL), UNSAVEDEF unsaves the function definition from the EXPR property if any, else CODE, and returns the property name used. UNSAVEDEF also recognizes TYPE = EXPR, CODE, or LIST, meaning to unsave the definition only from the corresponding property only. If DFNFLG is not T (see Chapter 10), the current definition of NAME, if any, is saved using SAVEDEF. Thus one can use UNSAVEDEF to switch back and forth between two definitions. (LOADDEF(LOADDEF (Function) NIL NIL ("17") 25) NAME TYPE SOURCE) [Function] Equivalent to (PUTDEF NAME TYPE (GETDEF NAME TYPE SOURCE)). LOADDEF is essentially a generalization of LOADFNS, e.g. it enables loading a single record declaration from a file. (LOADDEF FN) will give FN an EXPR definition, either obtained from its property list or a file, unless it already has one. (CHANGECALLERS(CHANGECALLERS (Function) NIL NIL ("17") 25) OLD NEW TYPES FILES METHOD) [Function] Finds all of the places where OLD is used as any of the types in TYPES and changes those places to use NEW. For example, (CHANGECALLERS 'NLSETQ 'ERSETQ) will change all calls to NLSETQ to be calls to ERSETQ. Also changes occurrences of OLD to NEW inside the filecoms of any file, inside record declarations, properties, etc. CHANGECALLERS attempts to determine if OLD might be used as more than one type; for example, if it is both a function and a record field. If so, rather than performing the transformation OLD -> NEW automatically, you are allowed to edit all of the places where OLD occurs. For each occurrence of OLD, you are asked whether you want to make the replacement. If you respond with anything except Yes or No, the editor is invoked on the expression containing that occurrence. There are two different methods for determining which functions are to be examined. If METHOD = EDITCALLERS, EDITCALLERS is used to search FILES (see Chapter 16). If METHOD = MASTERSCOPE, then the Masterscope database is used instead. METHOD = NIL defaults to MASTERSCOPE if the value of the variable DEFAULTRENAMEMETHOD is MASTERSCOPE and a Masterscope database exists, otherwise it defaults to EDITCALLERS. (RENAME(RENAME (Function) NIL NIL ("17") 26) OLD NEW TYPES FILES METHOD) [Function] First performs (COPYDEF OLD NEW TYPE) for all TYPE inside TYPES. It then calls CHANGECALLERS to change all occurrences of OLD to NEW, and then "deletes" OLD with DELDEF. For example, if you have a function FOO which you now wish to call FIE, simply perform (RENAME 'FOO 'FIE), and FIE will be given FOO's definition, and all places that FOO are called will be changed to call FIE instead. METHOD is interpreted the same as the METHOD argument to CHANGECALLERS, above. (COMPARE(COMPARE (Function) NIL NIL ("17") 26) NAME1 NAME2 TYPE SOURCE1 SOURCE2) [Function] Compares the definition of NAME1 with that of NAME2, by calling COMPARELISTS (Chapter 3) on (GETDEF NAME1 TYPE SOURCE1) and (GETDEF NAME2 TYPE SOURCE2), which prints their differences on the terminal. For example, if the current value of the variable A is (A B C (D E F) G), and the value of the variable B on the file FOO is (A B C (D F E) G), then: (COMPARE 'A 'B 'VARS 'CURRENT 'FOO) A from CURRENT and B from TEST differ: (E -> F) (F -> E) T (COMPAREDEFS(COMPAREDEFS (Function) NIL NIL ("17") 26) NAME TYPE SOURCES) [Function] Calls COMPARELISTS (Chapter 3) on all pairs of definitions of NAME as a TYPE obtained from the various SOURCES (interpreted as a list of source specifications). Defining New File Manager Types All manipulation of typed definitions in the file manager is done using the type-independent functions GETDEF, PUTDEF, etc. Therefore, to define a new file manager type, it is only necessary to specify (via the function FILEPKGTYPE) what these functions should do when dealing with a typed definition of the new type. Each file manager type has the following properties, whose values are functions or lists of functions: These functions are defined to take a TYPE argument so that you may have the same function for more than one type. GETDEF(GETDEF (File Package Type Property) NIL NIL ("17") 26) [File Manager Type Property] Value is a function of three arguments, NAME, TYPE, and OPTIONS, which should return the current definition of NAME as a type TYPE. Used by GETDEF (see the Functions for Manipulating Typed Definitions section), which passes its OPTIONS argument. If there is no GETDEF property, a file manager command for dumping NAME is created (by MAKENEWCOM). This command is then used to write the definition of NAME as a type TYPE onto the file FILEPKG.SCRATCH (in Medley, this file is created on the {CORE} device). This expression is then read back in and returned as the current definition. In some situations, the function HASDEF needs to call GETDEF to determine whether a definition exists. In this case, OPTIONS will include the symbol HASDEF, and it is permissable for a GETDEF function to return T or NIL, rather than creating a complex structure which will not be used. NULLDEF(NULLDEF (File Package Type Property) NIL NIL ("17") 27) [File Manager Type Property] The value of the NULLDEF property is returned by GETDEF (see the Functions for Manipulating Typed Definitions section) when there is no definition and the NOERROR option is supplied. For example, the NULLDEF of VARS is NOBIND. FILEGETDEF(FILEGETDEF (File Package Type Property) NIL NIL ("17") 27) [File Manager Type Property] This enables you to provide a way of obtaining definitions from a file that is more efficient than the default procedure used by GETDEF (see the Functions for Manipulating Typed Definitions section). Value is a function of four arguments, NAME, TYPE, FILE, and OPTIONS. The function is applied by GETDEF when it is determined that a typed definition is needed from a particular file. The function must open and search the given file and return any TYPE definition for NAME that it finds. CANFILEDEF(CANFILEDEF (File Package Type Property) NIL NIL ("17") 27) [File Manager Type Property] If the value of this property is non-NIL, this indicates that definitions of this file manager type are not loaded when a file is loaded with LOADFROM (see the Loading Files section). The default is NIL. Initially, only FNS has this property set to non-NIL. PUTDEF(PUTDEF (File Package Type Property) NIL NIL ("17") 27) [File Manager Type Property] Value is a function of three arguments, NAME, TYPE, and DEFINITION, which should store DEFINITION as the definition of NAME as a type TYPE. Used by PUTDEF (see the Functions for Manipulating Typed Definitions section). HASDEF(HASDEF (File Package Type Property) NIL NIL ("17") 27) [File Manager Type Property] Value is a function of three arguments, NAME, TYPE, and SOURCE, which should return (OR NAME T) if NAME is the name of something of type TYPE. SOURCE is as interpreted by HASDEF (see the Functions for Manipulating Typed Definitions section), which uses this property. EDITDEF(EDITDEF (File Package Type Property) NIL NIL ("17") 27) [File Manager Type Property] Value is a function of four arguments, NAME, TYPE, SOURCE, and EDITCOMS, which should edit the definition of NAME as a type TYPE from the source SOURCE, interpreting the edit commands EDITCOMS. If sucessful, should return NAME (or a spelling-corrected NAME). If it returns NIL, the "default" editor is called. Used by EDITDEF (see the Functions for Manipulating Typed Definitions section). DELDEF(DELDEF (File Package Type Property) NIL NIL ("17") 28) [File Manager Type Property] Value is a function of two arguments, NAME, and TYPE, which removes the definition of NAME as a TYPE that is currently in effect. Used by DELDEF (see the Functions for Manipulating Typed Definitions section). NEWCOM(NEWCOM (File Package Type Property) NIL NIL ("17") 28) [File Manager Type Property] Value is a function of four arguments, NAME, TYPE, LISTNAME, and FILE. Specifies how to make a new (instance of a) file manager command to dump NAME, an object of type TYPE. The function should return the new file manager command. Used by ADDTOFILE and SHOWDEF. If LISTNAME is non-NIL, this means that you specified LISTNAME as the filevar in interaction with ADDTOFILES? (see the FileVars section). If no NEWCOM is specified, the default is to call DEFAULTMAKENEWCOM, which will construct and return a command of the form (TYPE NAME). You can advise or redefine DEFAULTMAKENEWCOM . WHENCHANGED(WHENCHANGED (File Package Type Property) NIL NIL ("17") 28) [File Manager Type Property] Value is a list of functions to be applied to NAME, TYPE, and REASON when NAME, an instance of type TYPE, is changed or defined (see MARKASCHANGED, in the Marking Changes section). Used for various applications, e.g. when an object of type I.S.OPRS changes, it is necessary to clear the corresponding translatons from CLISPARRAY. The WHENCHANGED functions are called before the object is marked as changed, so that it can, in fact, decide that the object is not to be marked as changed, and execute (RETFROM 'MARKASCHANGED). The REASON argument passed to WHENCHANGED functions is either DEFINED or CHANGED. WHENFILED (WHENFILED% (File Package Type Property) NIL NIL ("17") 28) [File Manager Type Property] Value is a list of functions to be applied to NAME, TYPE, and FILE when NAME, an instance of type TYPE, is added to FILE. WHENUNFILED(WHENUNFILED (File Package Type Property) NIL NIL ("17") 28) [File Manager Type Property] Value is a list of functions to be applied to NAME, TYPE, and FILE when NAME, an instance of type TYPE, is removed from FILE. DESCRIPTION(DESCRIPTION (File Package Type Property) NIL NIL ("17") 28) [File Manager Type Property] Value is a string which describes instances of this type. For example, for type RECORDS, the value of DESCRIPTION is the string "record declarations". The function FILEPKGTYPE is used to define new file manager types, or to change the properties of existing types. It is possible to redefine the attributes of system file manager types, such as FNS or PROPS. (FILEPKGTYPE(FILEPKGTYPE (Function) NIL NIL ("17") 29) TYPE PROP1 VAL1 ... PROPN VALN) [NoSpread Function] Nospread function for defining new file manager types, or changing properties of existing file manager types. PROPi is one of the property names given above; VALi is the value to be given to that property. Returns TYPE. (FILEPKGTYPE TYPE PROP) returns the value of the property PROP, without changing it. (FILEPKGTYPE TYPE) returns a property list of all of the defined properties of TYPE, using the property names as keys. Specifying TYPE as the symbol TYPE can be used to define one file manager type as a synonym of another. For example, (FILEPKGTYPE 'R 'TYPE 'RECORDS) defines R as a synonym for the file manager type RECORDS. File Manager Commands 1 The basic mechanism for creating symbolic files is the function MAKEFILE (see the Storing Files section). For each file, the file manager has a data structure known as the "filecoms", which specifies what typed descriptions are contained in the file. A filecoms is a list of file manager commands, each of which specifies objects of a certain file manager type which should be dumped. For example, the filecoms ((FNS FOO) (VARS FOO BAR BAZ) (RECORDS XYZZY)) has a FNS, a VARS, and a RECORDS file manager command. This filecoms specifies that the function definition for FOO, the variable values of FOO, BAR, and BAZ, and the record declaration for XYZZY should be dumped. By convention, the filecoms of a file X is stored as the value of the symbol XCOMS. For example, (MAKEFILE 'FOO.;27) will use the value of FOOCOMS as the filecoms. This variable can be directly manipulated, but the file manager contains facilities which make constructing and updating filecoms easier, and in some cases automatic (see the Functions for Manipulating File Command Lists section). A file manager command is an instruction to MAKEFILE to perform an explicit, well-defined operation, usually printing an expression. Usually there is a one-to-one correspondence between file manager types and file manager commands; for each file manager type, there is a file manager command which is used for writing objects of that type to a file, and each file manager command is used to write objects of a particular type. However, in some cases, the same file manager type can be dumped by several different file manager commands. For example, the file manager commands PROP, IFPROP, and PROPS all dump out objects with the file manager type PROPS. This means if you change an object of file manager type PROPS via EDITP, a typed-in call to PUTPROP, or via an explicit call to MARKASCHANGED, this object can be written out with any of the above three commands. Thus, when the file manager attempts to determine whether this typed object is contained on a particular file, it must look at instances of all three file manager commands PROP, IFPROP, and PROPS, to see if the corresponding atom and property are specified. It is also permissible for a single file manager command to dump several different file manager types. For example, you can define a file manager command which dumps both a function definition and its macro. Conversely, some file manager comands do not dump any file manager types at all, such as the E command. For each file manager command, the file manager must be able to determine what typed definitions the command will cause to be printed so that the file manager can determine on what file (if any) an object of a given type is contained (by searching through the filecoms). Similarly, for each file manager type, the file manager must be able to construct a command that will print out an object of that type. In other words, the file manager must be able to map file manager commands into file manager types, and vice versa. Information can be provided to the file manager about a particular file manager command via the function FILEPKGCOM (see the Defining New File Manager Commands section), and information about a particular file manager type via the function FILEPKGTYPE (see the prior section). In the absence of other information, the default is simply that a file manager command of the form (X NAME) prints out the definition of NAME as a type X, and, conversely, if NAME is an object of type X, then NAME can be written out by a command of the form (X NAME). If a file manager function is given a command or type that is not defined, it attempts spelling correction using FILEPKGCOMSPLST as a spelling list (unless DWIMFLG or NOSPELLFLG = NIL; see Chapter 20). If successful, the corrected version of the list of file manager commands is written (again) on the output file, since at this point, the uncorrected list of file manager commands would already have been printed on the output file. When the file is loaded, this will result in FILECOMS being reset, and may cause a message to be printed, e.g., (FOOCOMS RESET). The value of FOOCOMS would then be the corrected version. If the spelling correction is unsuccessful, the file manager functions generate an error, BAD FILE PACKAGE COMMAND. File package commands can be used to save on the output file definitions of functions, values of variables, property lists of atoms, advised functions, edit macros, record declarations, etc. The interpretation of each file manager command is documented in the following sections. (USERMACROS(USERMACROS (Command) NIL NIL ("17") 30) SYMBOL1 ... SYMBOLN) [File Manager Command] Each symbol SYMBOLi is the name of a user edit macro. Writes expressions to add the edit macro definitions of SYMBOLi to USERMACROS, and adds the names of the commands to the appropriate spelling lists. If SYMBOLi is not a user macro, a warning message "no EDIT MACRO for SYMBOLi" is printed. Functions and Macros (FNS(FNS (Command) NIL NIL ("17") 30)(FNS (Command) NIL NIL ("17") 30) FN1 ... FNN) [File Manager Command] Writes a DEFINEQ expression with the function definitions of FN1 ... FNN. You should never print a DEFINEQ expression directly onto a file (by using the P file manager command, for example), because MAKEFILE generates the filemap of function definitions from the FNS file manager commands (see the File Maps section). (ADVISE(ADVISE (Command) NIL NIL ("17") 31) FN1 ... FNN) [File Manager Command] For each function FNi, writes expressions to reinstate the function to its advised state when the file is loaded. See Chapter 15. When advice is applied to a function programmatically or by hand, it is additive. That is, if a function already has some advice, further advice is added to the already-existing advice. However, when advice is applied to a function as a result of loading a file with an ADVISE file manager command, the new advice replaces any earlier advice. ADVISE works this way to prevent problems with loading different versions of the same advice. If you really want to apply additive advice, a file manager command such as (P (ADVISE ...)) should be used (see the Miscellaneous File Manager Commands section). (ADVICE(ADVICE (Command) NIL NIL ("17") 31) FN1 ... FNN) [File Manager Command] For each function FNi, writes a PUTPROPS expression which will put the advice back on the property list of the function. You can then use READVISE (see Chapter 15) to reactivate the advice. (MACROS(MACROS (Command) NIL NIL ("17") 31) SYMBOL1 ... SYMBOLN) [File Manager Command] Each SYMBOLi is a symbol with a MACRO definition (and/or a DMACRO, 10MACRO, etc.). Writes out an expression to restore all of the macro properties for each SYMBOLi, embedded in a DECLARE: EVAL@COMPILE so the macros will be defined when the file is compiled. See Chapter 10. Variables (VARS(VARS (Command) NIL NIL ("17") 31) VAR1 ... VARN) [File Manager Command] For each VARi, writes an expression to set its top level value when the file is loaded. If VARi is atomic, VARS writes out an expression to set VARi to the top-level value it had at the time the file was written. If VARi is non-atomic, it is interpreted as (VAR FORM), and VARS write out an expression to set VAR to the value of FORM (evaluated when the file is loaded). VARS prints out expressions using RPAQQ and RPAQ, which are like SETQQ and SETQ except that they also perform some special operations with respect to the file manager (see the Functions Used within Source Files section). VARS cannot be used for putting arbitrary variable values on files. For example, if the value of a variable is an array (or many other data types), a symbol which represents the array is dumped in the file instead of the array itself. The HORRIBLEVARS file manager command provides a way of saving and reloading variables whose values contain re-entrant or circular list structure, user data types, arrays, or hash arrays. (INITVARS(INITVARS (Command) NIL NIL ("17") 32) VAR1 ... VARN) [File Manager Command] INITVARS is used for initializing variables, setting their values only when they are currently NOBIND. A variable value defined in an INITVARS command will not change an already established value. This means that re-loading files to get some other information will not automatically revert to the initialization values. The format of an INITVARS command is just like VARS. The only difference is that if VARi is atomic, the current value is not dumped; instead NIL is defined as the initialization value. Therefore, (INITVARS FOO (FUM 2)) is the same as (VARS (FOO NIL)(FUM 2)), if FOO and FUM are both NOBIND. INITVARS writes out an RPAQ? expression on the file instead of RPAQ or RPAQQ. (ADDVARS(ADDVARS (Command) NIL NIL ("17") 32) (VAR1 . LST1)...(VARN . LSTN)) [File Manager Command] For each (VARi . LSTi), writes an ADDTOVAR (see the Functions Used Within Source Files section) to add each element of LSTi to the list that is the value of VARi at the time the file is loaded. The new value of VARi will be the union of its old value and LSTi. If the value of VARi is NOBIND, it is first set to NIL. For example, (ADDVARS (DIRECTORIES LISP LISPUSERS)) will add LISP and LISPUSERS to the value of DIRECTORIES. If LSTi is not specified, VARi is initialized to NIL if its current value is NOBIND. In other words, (ADDVARS (VAR)) will initialize VAR to NIL if VAR has not previously been set. (APPENDVARS(APPENDVARS (Command) NIL NIL ("17") 32) (VAR1 . LST1) ... (VARN . LSTN)) [File Manager Command] The same as ADDVARS, except that the values are added to the end of the lists (using APPENDTOVAR, in the Functions Used Within Source Files section), rather than at the beginning. (UGLYVARS(UGLYVARS (Command) NIL NIL ("17") 32) VAR1 ... VARN) [File Manager Command] Like VARS, except that the value of each VARi may contain structures for which READ is not an inverse of PRINT, e.g. arrays, readtables, user data types, etc. Uses HPRINT (see Chapter 25). ((HORRIBLEVARS (Command) NIL NIL ("17") 32)HORRIBLEVARS VAR1 ... VARN) [File Manager Command] Like UGLYVARS, except structures may also contain circular pointers. Uses HPRINT (see Chapter 25). The values of VAR1 ... VARN are printed in the same operation, so that they may contain pointers to common substructures. UGLYVARS does not do any checking for circularities, which results in a large speed and internal-storage advantage over HORRIBLEVARS. Thus, if it is known that the data structures do not contain circular pointers, UGLYVARS should be used instead of HORRIBLEVARS. (ALISTS(ALISTS (Command) NIL NIL ("17") 33) (VAR1 KEY1 KEY2 ...)...(VARN KEY3 KEY4 ...)) [File Manager Command] VARi is a variable whose value is an association list, such as EDITMACROS, BAKTRACELST, etc. For each VARi, ALISTS writes out expressions which will restore the values associated with the specified keys. For example, (ALISTS (BREAKMACROS BT BTV)) will dump the definition for the BT and BTV commands on BREAKMACROS. Some association lists (USERMACROS, LISPXMACROS, etc.) are used to implement other file manager types, and they have their own file manager commands. (SPECVARS(SPECVARS (Command) NIL NIL ("17") 33) VAR1 ... VARN) [File Manager Command] (LOCALVARS(LOCALVARS (Command) NIL NIL ("17") 33) VAR1 ... VARN) [File Manager Command] (GLOBALVARS(GLOBALVARS (Command) NIL NIL ("17") 33) VAR1 ... VARN) [File Manager Command] Outputs the corresponding compiler declaration embedded in a DECLARE: DOEVAL@COMPILE DONTCOPY. See Chapter 18. (CONSTANTS(CONSTANTS (Command) NIL NIL ("17") 33) VAR1 ... VARN) [File Manager Command] Like VARS, for each VARi writes an expression to set its top level value when the file is loaded. Also writes a CONSTANTS expression to declare these variables as constants (see Chapter 18). Both of these expressions are wrapped in a (DECLARE: EVAL@COMPILE ...) expression, so they can be used by the compiler. Like VARS, VARi can be non-atomic, in which case it is interpreted as (VAR FORM), and passed to CONSTANTS (along with the variable being initialized to FORM). Symbol Properties (PROP(PROP (Command) NIL NIL ("17") 33) PROPNAME SYMBOL1 ... SYMBOLN) [File Manager Command] Writes a PUTPROPS expression to restore the value of the PROPNAME property of each symbol SYMBOLi when the file is loaded. If PROPNAME is a list, expressions will be written for each property on that list. If PROPNAME is the symbol ALL, the values of all user properties (on the property list of each SYMBOLi) are saved. SYSPROPS is a list of properties used by system functions. Only properties not on that list are dumped when the ALL option is used. If SYMBOLi does not have the property PROPNAME (as opposed to having the property with value NIL), a warning message "NO PROPNAME PROPERTY FOR SYMBOLi" is printed. The command IFPROP can be used if it is not known whether or not an atom will have the corresponding property. (IFPROP(IFPROP (Command) NIL NIL ("17") 34) PROPNAME SYMBOL1 ... SYMBOLN) [File Manager Command] Same as the PROP file manager command, except that it only saves the properties that actually appear on the property list of the corresponding atom. For example, if FOO1 has property PROP1 and PROP2, FOO2 has PROP3, and FOO3 has property PROP1 and PROP3, then (IFPROP (PROP1 PROP2 PROP3) FOO1 FOO2 FOO3) will save only those five property values. (PROPS(PROPS (Command) NIL NIL ("17") 34) (SYMBOL1 PROPNAME1)...(SYMBOLN PROPNAMEN)) [File Manager Command] Similar to PROP command. Writes a PUTPROPS expression to restore the value of PROPNAMEi for each SYMBOLi when the file is loaded. As with the PROP command, if SYMBOLi does not have the property PROPNAME (as opposed to having the property with NIL value), a warning message "NO PROPNAMEi PROPERTY FOR SYMBOLi" is printed. Miscellaneous File Manager Commands (RECORDS(RECORDS (Command) NIL NIL ("17") 34) REC1 ... RECN) [File Manager Command] Each RECi is the name of a record (see Chapter 8). Writes expressions which will redeclare the records when the file is loaded. (INITRECORDS(INITRECORDS (Command) NIL NIL ("17") 34) REC1 ... RECN) [File Manager Command] Similar to RECORDS, INITRECORDS writes expressions on a file that will, when loaded, perform whatever initialization/allocation is necessary for the indicated records. However, the record declarations themselves are not written out. This facility is useful for building systems on top of Interlisp, in which the implementor may want to eliminate the record declarations from a production version of the system, but the allocation for these records must still be done. (LISPXMACROS(LISPXMACROS (Command) NIL NIL ("17") 34) SYMBOL1 ... SYMBOLN) [File Manager Command] Each SYMBOLi is defined on LISPXMACROS or LISPXHISTORYMACROS (see Chapter 13). Writes expressions which will save and restore the definition for each macro, as well as making the necessary additions to LISPXCOMS (I.S.OPRS(I.S.OPRS (Command) NIL NIL ("17") 34) OPR1 ... OPRN) [File Manager Command] Each OPRi is the name of a user-defined i.s.opr (see Chapter 9). Writes expressions which will redefine the i.s.oprs when the file is loaded. (RESOURCES(RESOURCES (Command) NIL NIL ("17") 34) RESOURCE1 ... RESOURCEN) [File Manager Command] Each RESOURCESi is the name of a resource (see Chapter 12). Writes expressions which will redeclare the resource when the file is loaded. (INITRESOURCES(INITRESOURCES (Command) NIL NIL ("17") 35) RESOURCE1 ... RESOURCEN) [File Manager Command] Parallel to INITRECORDS, INITRESOURCES writes expressions on a file to perform whatever initialization/allocation is necessary for the indicated resources, without writing the resource declaration itself. (COURIERPROGRAMS(COURIERPROGRAMS (Command) NIL NIL ("17") 35) NAME1 ... NAMEN) [File Manager Command] Each NAMEi is the name of a Courier program (see Chapter 31). Writes expressions which will redeclare the Courier program when the file is loaded. (TEMPLATES(TEMPLATES (Command) NIL NIL ("17") 35) SYMBOL1 ... SYMBOLN) [File Manager Command] Each SYMBOLi is a symbol which has a Masterscope template (see Chapter 19). Writes expressions which will restore the templates when the file is loaded. (FILES(FILES (Command) NIL NIL ("17") 35) FILE1 ... FILEN) [File Manager Command] Used to specify auxiliary files to be loaded in when the file is loaded. Dumps an expression calling FILESLOAD (see the Loading Files section), with FILE1 ... FILEN as the arguments. FILESLOAD interprets FILE1 ... FILEN as files to load, possibly interspersed with lists used to specify certain loading options. (FILEPKGCOMS(FILEPKGCOMS (Command) NIL NIL ("17") 35) SYMBOL1 ... SYMBOLN) [File Manager Command] Each symbol SYMBOLi is either the name of a user-defined file manager command or a user-defined file manager type (or both). Writes expressions which will restore each command/type. If SYMBOLi is not a file manager command or type, a warning message "no FILE PACKAGE COMMAND for SYMBOLi" is printed. ((* (Command) NIL NIL ("17") 35)* . TEXT) [File Manager Command] Used for inserting comments in a file. The file manager command is simply written on the output file; it will be ignored when the file is loaded. If the first element of TEXT is another *, a form-feed is printed on the file before the comment. (P(P (Command) NIL NIL ("17") 35) EXP1 ... EXPN) [File Manager Command] Writes each of the expressions EXP1 ... EXPN on the output file, where they will be evaluated when the file is loaded. (E(E (Command) NIL NIL ("17") 35) FORM1 ... FORMN) [File Manager Command] Each of the forms FORM1 ... FORMN is evaluated at output time, when MAKEFILE interpretes this file manager command. (COMS(COMS (Command) NIL NIL ("17") 36) COM1 ... COMN) [File Manager Command] Each of the commands COM1 ... COMN is interpreted as a file manager command. (ORIGINAL(ORIGINAL (Command) NIL NIL ("17") 36) COM1 ... COMN) [File Manager Command] Each of the commands COMi will be interpreted as a file manager command without regard to any file manager macros (as defined by the MACRO property of the FILEPKGCOM function, in the Defining New File Manager Commands section). Useful for redefining a built-in file manager command in terms of itself. Some of the "built-in" file manager commands are defined by file manager macros, so interpreting them (or new user-defined file manager commands) with ORIGINAL will fail. ORIGINAL was never intended to be used outside of a file manager command macro. DECLARE: (DECLARE:(DECLARE: (Command) NIL NIL ("17") 36) . FILEPKGCOMS/FLAGS) [File Manager Command] Normally expressions written onto a symbolic file are evaluated when loaded; copied to the compiled file when the symbolic file is compiled (see Chapter 18); and not evaluated at compile time. DECLARE: allows you to override these defaults. FILEPKGCOMS/FLAGS is a list of file manager commands, possibly interspersed with "tags". The output of those file manager commands within FILEPKGCOMS/FLAGS is embedded in a DECLARE: expression, along with any tags that are specified. For example, (DECLARE: EVAL@COMPILE DONTCOPY (FNS ...) (PROP ...)) would produce (DECLARE: EVAL@COMPILE DONTCOPY (DEFINEQ ...) (PUTPROPS ...)). DECLARE: is defined as an nlambda nospread function, which processes its arguments by evaluating or not evaluating each expression depending on the setting of internal state variables. The initial setting is to evaluate, but this can be overridden by specifying the DONTEVAL@LOAD tag. DECLARE: expressions are specially processed by the compiler. For the purposes of compilation, DECLARE: has two principal applications: to specify forms that are to be evaluated at compile time, presumably to affect the compilation, e.g., to set up macros; and/or to indicate which expressions appearing in the symbolic file are not to be copied to the output file. (Normally, expressions are not evaluated and are copied.) Each expression in CDR of a DECLARE: form is either evaluated/not-evaluated and copied/not-copied depending on the settings of two internal state variables, initially set for copy and not-evaluate. These state variables can be reset for the remainder of the expressions in the DECLARE: by means of the tags DONTCOPY, EVAL@COMPILE, etc. The tags are: EVAL@LOAD DOEVAL@LOAD Evaluate the following forms when the file is loaded (unless overridden by DONTEVAL@LOAD). DONTEVAL@LOAD Do not evaluate the following forms when the file is loaded. EVAL@LOADWHEN This tag can be used to provide conditional evaluation. The value of the expression immediately following the tag determines whether or not to evaluate subsequent expressions when loading. ... EVAL@LOADWHEN T ... is equivalent to ... EVAL@LOAD ... COPY DOCOPY When compiling, copy the following forms into the compiled file. DONTCOPY When compiling, do not copy the following forms into the compiled file. Note: If the file manager commands following DONTCOPY include record declarations for datatypes, or records with initialization forms, it is necessary to include a INITRECORDS file manager command (see the prior section) outside of the DONTCOPY form so that the initialization information is copied. For example, if FOO was defined as a datatype, (DECLARE: DONTCOPY (RECORDS FOO)) (INITRECORDS FOO) would copy the data type declaration for FOO, but would not copy the whole record declaration. COPYWHEN When compiling, if the next form evaluates to non-NIL, copy the following forms into the compiled file. EVAL@COMPILE DOEVAL@COMPILE When compiling, evaluate the following forms. DONTEVAL@COMPILE When compiling, do not evaluate the following forms. EVAL@COMPILEWHEN When compiling, if the next form evaluates to non-NIL, evaluate the following forms. FIRST For expressions that are to be copied to the compiled file, the tag FIRST can be used to specify that the following expressions in the DECLARE: are to appear at the front of the compiled file, before anything else except the FILECREATED expressions (see the Symbolic File Format section). For example, (DECLARE: COPY FIRST (P (PRINT MESS1 T)) NOTFIRST (P (PRINT MESS2 T))) will cause (PRINT MESS1 T) to appear first in the compiled file, followed by any functions, then (PRINT MESS2 T). NOTFIRST Reverses the effect of FIRST. The value of DECLARETAGSLST is a list of all the tags used in DECLARE: expressions. If a tag not on this list appears in a DECLARE: file manager command, spelling correction is performed using DECLARETAGSLST as a spelling list. Note that the function LOADCOMP (see the Loading Files section) provides a convenient way of obtaining information from the DECLARE: expressions in a file, without reading in the entire file. This information may be used for compiling other files. (BLOCKS(BLOCKS (Command) NIL NIL ("17") 38) BLOCK1 ... BLOCKN) [File Manager Command] For each BLOCKi, writes a DECLARE: expression which the block compile functions interpret as a block declaration. See Chapter 18. Exporting Definitions When building a large system in Interlisp, it is often the case that there are record definitions, macros and the like that are needed by several different system files when running, analyzing and compiling the source code of the system, but which are not needed for running the compiled code. By using the DECLARE: file manager command with tag DONTCOPY (see the prior section), these definitions can be kept out of the compiled files, and hence out of the system constructed by loading the compiled files files into Interlisp. This saves loading time, space in the resulting system, and whatever other overhead might be incurred by keeping those definitions around, e.g., burden on the record package to consider more possibilities in translating record accesses, or conflicts between system record fields and user record fields. However, if the implementor wants to debug or compile code in the resulting system, the definitions are needed. And even if the definitions had been copied to the compiled files, a similar problem arises if one wants to work on system code in a regular Interlisp environment where none of the system files had been loaded. One could mandate that any definition needed by more than one file in the system should reside on a distinguished file of definitions, to be loaded into any environment where the system files are worked on. Unfortunately, this would keep the definitions away from where they logically belong. The EXPORT mechanism is designed to solve this problem. To use the mechanism, the implementor identifies any definitions needed by files other than the one in which the definitions reside, and wraps the corresponding file manager commands in the EXPORT file manager command. Thereafter, GATHEREXPORTS can be used to make a single file containing all the exports. (EXPORT COM1 ... COMN) [File Manager Command] This command is used for "exporting" definitions. Like COM, each of the commands COM1 ... COMN is interpreted as a file manager command. The commands are also flagged in the file as being "exported" commands, for use with GATHEREXPORTS. (GATHEREXPORTS(GATHEREXPORTS (Function) NIL NIL ("17") 38) FROMFILES TOFILE FLG) [Function] FROMFILES is a list of files containing EXPORT commands. GATHEREXPORTS extracts all the exported commands from those files and produces a loadable file TOFILE containing them. If FLG = EVAL, the expressions are evaluated as they are gathered; i.e., the exports are effectively loaded into the current environment as well as being written to TOFILE. (IMPORTFILE(IMPORTFILE (Function) NIL NIL ("17") 39) FILE RETURNFLG) [Function] If RETURNFLG is NIL, this loads any exported definitions from FILE into the current environment. If RETURNFLG is T, this returns a list of the exported definitions (evaluable expressions) without actually evaluating them. (CHECKIMPORTS(CHECKIMPORTS (Function) NIL NIL ("17") 39) FILES NOASKFLG) [Function] Checks each of the files in FILES to see if any exists in a version newer than the one from which the exports in memory were taken (GATHEREXPORTS and IMPORTFILE note the creation dates of the files involved), or if any file in the list has not had its exports loaded at all. If there are any such files, you are asked for permission to IMPORTFILE each such file. If NOASKFLG is non-NIL, IMPORTFILE is performed without asking. For example, suppose file FOO contains records R1, R2, and R3, macros BAR and BAZ, and constants CON1 and CON2. If the definitions of R1, R2, BAR, and BAZ are needed by files other than FOO, then the file commands for FOO might contain the command (DECLARE: EVAL@COMPILE DONTCOPY (EXPORT (RECORDS R1 R2) (MACROS BAR BAZ)) (RECORDS R3) (CONSTANTS BAZ)) None of the commands inside this DECLARE: would appear on FOO's compiled file, but (GATHEREXPORTS '(FOO) 'MYEXPORTS) would copy the record definitions for R1 and R2 and the macro definitions for BAR and BAZ to the file MYEXPORTS. FileVars In each of the file manager commands described above, if the symbol * follows the command type, the form following the *, i.e., CADDR of the command, is evaluated and its value used in executing the command, e.g., (FNS * (APPEND FNS1 FNS2)). When this form is a symbol, e.g. (FNS * FOOFNS), we say that the variable is a "filevar". Note that (COMS * FORM) provides a way of computing what should be done by MAKEFILE. Example: (SETQ FOOFNS '(FOO1 FOO2 FOO3)) (FOO1 FOO2 FOO3) (SETQ FOOCOMS '((FNS * FOOFNS) (VARS FIE) (PROP MACRO FOO1 FOO2) (P (MOVD 'FOO1 'FIE1))] (MAKEFILE 'FOO) would create a file FOO containing: (FILECREATED "time and date the file was made" . "other information") (PRETTYCOMPRINT FOOCOMS) (RPAQQ FOOCOMS ((FNS * FOOFNS) ...) (RPAQQ FOOFNS (FOO1 FOO3 FOO3)) (DEFINEQ "definitions of FOO1, FOO2, and FOO3") (RPAQQ FIE "value of FIE") (PUTPROPS FOO1 MACRO PROPVALUE) (PUTPROPS FOO2 MACRO PROPVALUE) (MOVD (QUOTE FOO1) (QUOTE FIE1)) STOP For the PROP and IFPROP commands (see the Litatom Properties section), the * follows the property name instead of the command, e.g., (PROP MACRO * FOOMACROS). Also, in the form (* * comment ...), the word comment is not treated as a filevar. Defining New File Manager Commands A file manager command is defined by specifying the values of certain properties. You can specify the various attributes of a file manager command for a new command, or respecify them for an existing command. The following properties are used: MACRO(MACRO (Property) NIL NIL ("17") 40) [File Manager Command Property] Defines how to dump the file manager command. Used by MAKEFILE. Value is a pair (ARGS . COMS). The "arguments" to the file manager command are substituted for ARGS throughout COMS, and the result treated as a list of file manager commands. For example, following (FILEPKGCOM 'FOO 'MACRO '((X Y) . COMS)), the file manager command (FOO A B) will cause A to be substituted for X and B for Y throughout COMS, and then COMS treated as a list of commands. The substitution is carried out by SUBPAIR (see Chapter 3), so that the "argument list" for the macro can also be atomic. For example, if (X . COMS) was used instead of ((X Y) . COMS), then the command (FOO A B) would cause (A B) to be substituted for X throughout COMS. Filevars are evaluated before substitution. For example, if the symbol * follows NAME in the command, CADDR of the command is evaluated substituting in COMS. ADD(ADD (Property) NIL NIL ("17") 40) [File Manager Command Property] Specifies how (if possible) to add an instance of an object of a particular type to a given file manager command. Used by ADDTOFILE. Value is FN, a function of three arguments, COM, a file manager command CAR of which is EQ to COMMANDNAME, NAME, a typed object, and TYPE, its type. FN should return T if it (undoably) adds NAME to COM, NIL if not. If no ADD property is specified, then the default is (1) if (CAR COM) = TYPE and (CADR COM) = *, and (CADDR COM) is a filevar (i.e. a literal atom), add NAME to the value of the filevar, or (2) if (CAR COM) = TYPE and (CADR COM) is not *, add NAME to (CDR COM). Actually, the function is given a fourth argument, NEAR, which if non-NIL, means the function should try to add the item after NEAR. See discussion of ADDTOFILES?, in the Storing Files section. DELETE(DELETE (Property) NIL NIL ("17") 41) [File Manager Command Property] Specifies how (if possible) to delete an instance of an object of a particular type from a given file manager command. Used by DELFROMFILES. Value is FN, a function of three arguments, COM, NAME, and TYPE, same as for ADD. FN should return T if it (undoably) deletes NAME from COM, NIL if not. If no DELETE property is specified, then the default is either (CAR COM) = TYPE and (CADR COM) = *, and (CADDR COM) is a filevar (i.e. a literal atom), and NAME is contained in the value of the filevar, then remove NAME from the filevar, or if (CAR COM) = TYPE and (CADR COM) is not *, and NAME is contained in (CDR COM), then remove NAME from (CDR COM). If FN returns the value of ALL, it means that the command is now "empty", and can be deleted entirely from the command list. CONTENTS(CONTAIN (Property) NIL NIL ("17") 41) [File Manager Command Property] CONTAIN(CONTAIN (Property) NIL NIL ("17") 41) [File Manager Command Property] Determines whether an instance of an object of a given type is contained in a given file manager command. Used by WHEREIS and INFILECOMS?. Value is FN, a function of three arguments, COM, a file manager command CAR of which is EQ to COMMANDNAME, NAME, and TYPE. The interpretation of NAME is as follows: if NAME is NIL, FN should return a list of elements of type TYPE contained in COM. If NAME is T, FN should return T if there are any elements of type TYPE in COM. If NAME is an atom other than T or NIL, return T if NAME of type TYPE is contained in COM. Finally, if NAME is a list, return a list of those elements of type TYPE contained in COM that are also contained in NAME. It is sufficient for the CONTENTS function to simply return the list of items of type TYPE in command COM, i.e. it can in fact ignore the NAME argument. The NAME argument is supplied mainly for those situations where producing the entire list of items involves significantly more computation or creates more storage than simply determining whether a particular item (or any item) of type TYPE is contained in the command. If a CONTENTS property is specified and the corresponding function application returns NIL and (CAR COM) = TYPE, then the operation indicated by NAME is performed on the value of (CADDR COM), if (CADR COM) = *, otherwise on (CDR COM). In other words, by specifying a CONTENTS property that returns NIL, e.g. the function NILL, you specify that a file manager command of name FOO produces objects of file manager type FOO and only objects of type FOO. If the CONTENTS property is not provided, the command is simply expanded according to its MACRO definition, and each command on the resulting command list is then interrogated. If COMMANDNAME is a file manager command that is used frequently, its expansion by the various parts of the system that need to interrogate files can result in a large number of CONSes and garbage collections. By informing the file manager as to what this command actually does and does not produce via the CONTENTS property, this expansion is avoided. For example, suppose you have a file manager command called GRAMMARS which dumps various property lists but no functions. The file manager could ignore this command when seeking information about FNS. The function FILEPKGCOM is used to define new file manager commands, or to change the properties of existing commands. It is possible to redefine the attributes of system file manager commands, such as FNS or PROPS, and to cause unpredictable results. (FILEPKGCOM(FILEPKGCOM (Function) NIL NIL ("17") 42) COMMANDNAME PROP1 VAL1 ... PROPN VALN) [NoSpread Function] Nospread function for defining new file manager commands, or changing properties of existing file manager commands. PROPi is one of of the property names described above; VALi is the value to be given that property of the file manager command COMMANDNAME. Returns COMMANDNAME. (FILEPKGCOM COMMANDNAME PROP) returns the value of the property PROP, without changing it. (FILEPKGCOM COMMANDNAME) returns a property list of all of the defined properties of COMMANDNAME, using the property names as keys. Specifying TYPE as the symbol COM can be used to define one file manager command as a synonym of another. For example, (FILEPKGCOM 'INITVARIABLES 'COM 'INITVARS) defines INITVARIABLES as a synonym for the file manager command INITVARS. Functions for Manipulating File Command Lists 1 The following functions may be used to manipulate filecoms. The argument COMS does not have to correspond to the filecoms for some file. For example, COMS can be the list of commands generated as a result of expanding a user-defined file manager command. The following functions will accept a file manager command as a valid value for their TYPE argument, even if it does not have a corresponding file manager type. User-defined file manager commands are expanded as necessary. (INFILECOMS?(INFILECOMS? (Function) NIL NIL ("17") 42) NAME TYPE COMS) [Function] COMS is a list of file manager commands, or a variable whose value is a list of file manager commands. TYPE is a file manager type. INFILECOMS? returns T if NAME of type TYPE is "contained" in COMS. If NAME = NIL, INFILECOMS? returns a list of all elements of type TYPE. If NAME = T, INFILECOMS? returns T if there are any elements of type TYPE in COMS. (ADDTOFILE(INFILECOMS? (Function) NIL NIL ("17") 43) NAME TYPE FILE NEAR LISTNAME) [Function] Adds NAME of type TYPE to the file manager commands for FILE. If NEAR is given and it is the name of an item of type TYPE already on FILE, then NAME is added to the command that dumps NEAR. If LISTNAME is given and is the name of a list of items of TYPE items on FILE, then NAME is added to that list. Uses ADDTOCOMS and MAKENEWCOM. Returns FILE. ADDTOFILE is undoable. (DELFROMFILES(DELFROMFILES (Function) NIL NIL ("17") 43) NAME TYPE FILES) [Function] Deletes all instances of NAME of type TYPE from the filecoms for each of the files on FILES. If FILES is a non-NIL symbol, (LIST FILES) is used. FILES = NIL defaults to FILELST. Returns a list of files from which NAME was actually removed. Uses DELFROMCOMS. DELFROMFILES is undoable. Deleting a function will also remove the function from any BLOCKS declarations in the filecoms. (ADDTOCOMS(ADDTOCOMS (Function) NIL NIL ("17") 43) COMS NAME TYPE NEAR LISTNAME) [Function] Adds NAME as a TYPE to COMS, a list of file manager commands or a variable whose value is a list of file manager commands. Returns NIL if ADDTOCOMS was unable to find a command appropriate for adding NAME to COMS. NEAR and LISTNAME are described in the discussion of ADDTOFILE. ADDTOCOMS is undoable. The exact algorithm for adding commands depends the particular command itself. See discussion of the ADD property, in the description of FILEPKGCOM. ADDTOCOMS will not attempt to add an item to any command which is inside of a DECLARE: unless you specified a specific name via the LISTNAME or NEAR option of ADDTOFILES?. (DELFROMCOMS(DELFROMCOMS (Function) NIL NIL ("17") 43) COMS NAME TYPE) [Function] Deletes NAME as a TYPE from COMS. Returns NIL if DELFROMCOMS was unable to modify COMS to delete NAME. DELFROMCOMS is undoable. (MAKENEWCOM(MAKENEWCOM (Function) NIL NIL ("17") 43) NAME TYPE) [Function] Returns a file manager command for dumping NAME of type TYPE. Uses the procedure described in the discussion of NEWCOM, in the Defining New File Manager Types section. (MOVETOFILE(MOVETOFILE (Function) NIL NIL ("17") 43) TOFILE NAME TYPE FROMFILE) [Function] Moves the definition of NAME as a TYPE from FROMFILE to TOFILE by modifying the file commands in the appropriate way (with DELFROMFILES and ADDTOFILE). Note that if FROMFILE is specified, the definition will be retrieved from that file, even if there is another definition currently in your environment. (FILECOMSLST(FILECOMSLST (Function) NIL NIL ("17") 43) FILE TYPE) [Function] Returns a list of all objects of type TYPE in FILE. (FILEFNSLST(FILEFNSLST (Function) NIL NIL ("17") 44) FILE) [Function] Same as (FILECOMSLST FILE 'FNS). (FILECOMS(FILECOMS (Function) NIL NIL ("17") 44) FILE TYPE) [Function] Returns (PACK* FILE (OR TYPE 'COMS)). Note that (FILECOMS 'FOO) returns the symbol FOOCOMS, not the value of FOOCOMS. (SMASHFILECOMS(SMASHFILECOMS (Function) NIL NIL ("17") 44) FILE) [Function] Maps down (FILECOMSLST FILE 'FILEVARS) and sets to NOBIND all filevars (see the FileVars section), i.e., any variable used in a command of the form (COMMAND * VARIABLE). Also sets (FILECOMS FILE) to NOBIND. Returns FILE. Symbolic File Format 1 The file manager manipulates symbolic files in a particular format. This format is defined so that the information in the file is easily readable when the file is listed, as well as being easily manipulated by the file manager functions. In general, there is no reason for you to manually change the contents of a symbolic file. However, to allow you to extend the file manager, this section describes some of the functions used to write symbolic files, and other matters related to their format. (PRETTYDEF(PRETTYDEF (Function) NIL NIL ("17") 44) PRTTYFNS PRTTYFILE PRTTYCOMS REPRINTFNS SOURCEFILE CHANGES) [Function] Writes a symbolic file in PRETTYPRINT format for loading, using FILERDTBL as its read table. PRETTYDEF returns the name of the symbolic file that was created. PRETTYDEF operates under a RESETLST (see Chapter 14), so if an error occurs, or a Control-D is typed, all files that PRETTYDEF has opened will be closed, the (partially complete) file being written will be deleted, and any undoable operations executed will be undone. The RESETLST also means that any RESETSAVEs executed in the file manager commands will also be protected. PRTTYFNS is an optional list of function names. It is equivalent to including (FNS * PRTTYFNS) in the file manager commands in PRTTYCOMS. PRTTYFNS is an anachronism from when PRETTYDEF did not use a list of file manager commands, and should be specified as NIL. PRTTYFILE is the name of the file on which the output is to be written. PRTTYFILE has to be a symbnol. If PRTTYFILE = NIL, the primary output file is used. PRTTYFILE is opened if not already open, and it becomes the primary output file. PRTTYFILE is closed at end of PRETTYDEF, and the primary output file is restored. PRTTYCOMS is a list of file manager commands interpreted as described in the File Manager Commands section. If PRTTYCOMS is atomic, its top level value is used and an RPAQQ is written which will set that atom to the list of commands when the file is subsequently loaded. A PRETTYCOMPRINT expression (see below) will also be written which informs you of the named atom or list of commands when the file is subsequently loaded. In addition, if any of the functions in the file are nlambda functions, PRETTYDEF will automatically print a DECLARE: expression suitable for informing the compiler about these functions, in case you recompile the file without having first loaded the nlambda functions (see Chapter 18). REPRINTFNS and SOURCEFILE are for use in conjunction with remaking a file (see the Remaking a Symbolic File section). REPRINTFNS can be a list of functions to be prettyprinted, or EXPRS, meaning prettyprint all functions with EXPR definitions, or ALL meaning prettyprint all functions either defined as EXPRs, or with EXPR properties. Note that doing a remake with REPRINTFNS = NIL makes sense if there have been changes in the file, but not to any of the functions, e.g., changes to variables or property lists. SOURCEFILE is the name of the file from which to copy the definitions for those functions that are not going to be prettyprinted, i.e., those not specified by REPRINTFNS. SOURCEFILE = T means to use most recent version (i.e., highest number) of PRTTYFILE, the second argument to PRETTYDEF. If SOURCEFILE cannot be found, PRETTYDEF prints the message "FILE NOT FOUND, SO IT WILL BE WRITTEN ANEW", and proceeds as it does when REPRINTFNS and SOURCEFILE are both NIL. PRETTYDEF calls PRETTYPRINT with its second argument PRETTYDEFLG = T, so whenever PRETTYPRINT starts a new function, it prints (on the terminal) the name of that function if more than 30 seconds (real time) have elapsed since the last time it printed the name of a function. Note that normally if PRETTYPRINT is given a symbol which is not defined as a function but is known to be on one of the files noticed by the file manager, PRETTYPRINT will load in the definition (using LOADFNS) and print it. This is not done when PRETTYPRINT is called from PRETTYDEF. In Medley the SYSPRETTYFLG is ignored in the Interlisp exec. (PRINTFNS(PRINTFNS (Function) NIL NIL ("17") 45) X) [Function] X is a list of functions. PRINTFNS prettyprints a DEFINEQ epression that defines the functions to the primary output stream using the primary read table. Used by PRETTYDEF to implement the FNS file manager command. (PRINTDATE(PRINTDATE (Function) NIL NIL ("17") 45) FILE CHANGES) [Function] Prints the FILECREATED expression at beginning of PRETTYDEF files. CHANGES used by the file manager. (FILECREATED(FILECREATED (Function) NIL NIL ("17") 45) X) [NLambda NoSpread Function] Prints a message (using LISPXPRINT) followed by the time and date the file was made, which is (CAR X). The message is the value of PRETTYHEADER, initially "FILE CREATED". If PRETTYHEADER = NIL, nothing is printed. (CDR X) contains information about the file, e.g., full name, address of file map, list of changed items, etc. FILECREATED also stores the time and date the file was made on the property list of the file under the property FILEDATES and performs other initialization for the file manager. (PRETTYCOMPRINT(PRETTYCOMPRINT (Function) NIL NIL ("17") 46) X) [NLambda Function] Prints X (unevaluated) using LISPXPRINT, unless PRETTYHEADER = NIL. PRETTYHEADER (PRETTYHEADER% (Variable) NIL NIL ("17") 46) [Variable] Value is the message printed by FILECREATED. PRETTYHEADER is initially "FILE CREATED". If PRETTYHEADER = NIL, neither FILECREATED nor PRETTYCOMPRINT will print anything. Thus, setting PRETTYHEADER to NIL will result in "silent loads". PRETTYHEADER is reset to NIL during greeting (see Chapter 12). (FILECHANGES(FILECHANGES (Function) NIL NIL ("17") 46) FILE TYPE) [Function] Returns a list of the changed objects of file manager type TYPE from the FILECREATED expression of FILE. If TYPE = NIL, returns an alist of all of the changes, with the file manager types as the CARs of the elements.. (FILEDATE(FILEDATE (Function) NIL NIL ("17") 46) FILE) [Function] Returns the file date contained in the FILECREATED expression of FILE. (LISPSOURCEFILEP(LISPSOURCEFILEP (Function) NIL NIL ("17") 46) FILE) [Function] Returns a non-NIL value if FILE is in file manager format and has a file map, NIL otherwise. Copyright Notices The system has a facility for automatically printing a copyright notice near the front of files, right after the FILECREATED expression, specifying the years it was edited and the copyright owner. The format of the copyright notice is: (* Copyright (c) 1981 by Foo Bars Corporation) Once a file has a copyright notice then every version will have a new copyright notice inserted into the file without your intervention. (The copyright information necessary to keep the copyright up to date is stored at the end of the file.). Any year the file has been edited is considered a "copyright year" and therefore kept with the copyright information. For example, if a file has been edited in 1981, 1982, and 1984, then the copyright notice would look like: (* Copyright (c) 1981,1982,1984 by Foo Bars Corporation) When a file is made, if it has no copyright information, the system will ask you to specify the copyright owner (if COPYRIGHTFLG = T). You may specify one of the names from COPYRIGHTOWNERS, or give one of the following responses: f Type a left-square-bracket. The system will then prompt for an arbitrary string which will be used as the owner-string f Type a right-square-bracket, which specifies that you really do not want a copyright notice. f Type "NONE" which specifies that this file should never have a copyright notice. For example, if COPYRIGHTOWNERS has the value ((BBN "Bolt Beranek and Newman Inc.") (XEROX "Xerox Corporation")) then for a new file FOO the following interaction will take place: Do you want to Copyright FOO? Yes Copyright owner: (user typed ?) one of: BBN - Bolt Beranek and Newman Inc. XEROX - Xerox Corporation NONE - no copyright ever for this file [ - new copyright owner -- type one line of text ] - no copyright notice for this file now Copyright owner: BBN Then "Foo Bars Corporation" in the above copyright notice example would have been "Bolt Beranek and Newman Inc." The following variables control the operation of the copyright facility: COPYRIGHTFLG(COPYRIGHTFLG (Variable) NIL NIL ("17") 47) [Variable] The value of COPYRIGHTFLG determines whether copyright information is maintained in files. Its value is interpreted as follows: NIL The system will preserve old copyright information, but will not ask you about copyrighting new files. This is the default value of COPYRIGHTFLG. T When a file is made, if it has no copyright information, the system will ask you to specify the copyright owner. NEVER The system will neither prompt for new copyright information nor preserve old copyright information. DEFAULT The value of DEFAULTCOPYRIGHTOWNER (below) is used for putting copyright information in files that don't have any other copyright. The prompt "Copyright owner for file xx:" will still be printed, but the default will be filled in immediately. COPYRIGHTOWNERS(COPYRIGHTOWNERS (Variable) NIL NIL ("17") 48) [Variable] COPYRIGHTOWNERS is a list of entries of the form (KEY OWNERSTRING), where KEY is used as a response to ASKUSER and OWNERSTRING is a string which is the full identification of the owner. DEFAULTCOPYRIGHTOWNER(DEFAULTCOPYRIGHTOWNER (Variable) NIL NIL ("17") 48) [Variable] If you do not respond in DWIMWAIT seconds to the copyright query, the value of DEFAULTCOPYRIGHTOWNER is used. Functions Used Within Source Files The following functions are normally only used within symbolic files, to set variable values, property values, etc. Most of these have special behavior depending on file manager variables. (RPAQ(RPAQ (Function) NIL NIL ("17") 48) VAR VALUE) [NLambda Function] An nlambda function like SETQ that sets the top level binding of VAR (unevaluated) to VALUE. (RPAQQ(RPAQQ (Function) NIL NIL ("17") 48) VAR VALUE) [NLambda Function] An nlambda function like SETQQ that sets the top level binding of VAR (unevaluated) to VALUE (unevaluated). (RPAQ?(RPAQ? (Function) NIL NIL ("17") 48) VAR VALUE) [NLambda Function] Similar to RPAQ, except that it does nothing if VAR already has a top level value other than NOBIND. Returns VALUE if VAR is reset, otherwise NIL. RPAQ, RPAQQ, and RPAQ? generate errors if X is not a symbol. All are affected by the value of DFNFLG (see Chapter 10). If DFNFLG = ALLPROP (and the value of VAR is other than NOBIND), instead of setting X, the corresponding value is stored on the property list of VAR under the property VALUE. All are undoable. (ADDTOVAR(ADDTOVAR (Function) NIL NIL ("17") 48) VAR X1 X2 ... XN) [NLambda NoSpread Function] Each Xi that is not a member of the value of VAR is added to it, i.e. after ADDTOVAR completes, the value of VAR will be (UNION (LIST X1 X2 ... XN) VAR). ADDTOVAR is used by PRETTYDEF for implementing the ADDVARS command. It performs some file manager related operations, i.e. "notices" that VAR has been changed. Returns the atom VAR (not the value of VAR). (APPENDTOVAR VAR X1 X2 ... XN) [NLambda NoSpread Function] Similar to ADDTOVAR, except that the values are added to the end tof the list, rather than at the beginning. (PUTPROPS(PUTPROPS (Function) NIL NIL ("17") 49) ATM PROP1 VAL1 ... PROPN VALN) [NLambda NoSpread Function] Nlambda nospread version of PUTPROP (none of the arguments are evaluated). For i = 1...N, puts property PROPi, value VALi, on the property list of ATM. Performs some file manager related operations, i.e., "notices" that the corresponding properties have been changed. (SAVEPUT(SAVEPUT (Function) NIL NIL ("17") 49) ATM PROP VAL) [Function] Same as PUTPROP, but marks the corresponding property value as having been changed (used by the file manager). File Maps A file map is a data structure which contains a symbolic 'map' of the contents of a file. Currently, this consists of the begin and end byte address (see GETFILEPTR, in Chapter 25) for each DEFINEQ expression in the file, the begin and end address for each function definition within the DEFINEQ, and the begin and end address for each compiled function. MAKEFILE, PRETTYDEF, LOADFNS, RECOMPILE, and numerous other system functions depend heavily on the file map for efficient operation. For example, the file map enables LOADFNS to load selected function definitions simply by setting the file pointer to the corresponding address using SETFILEPTR, and then performing a single READ. Similarly, the file map is heavily used by the "remake" option of MAKEFILE (see the Remaking a Symbolic File section): those function definitions that have been changed since the previous version are prettyprinted; the rest are simply copied from the old file to the new one, resulting in a considerable speedup. Whenever a file is written by MAKEFILE, a file map for the new file is built. Building the map in this case essentially comes for free, since it requires only reading the current file pointer before and after each definition is written or copied. However, building the map does require that PRETTYPRINT know that it is printing a DEFINEQ expression. For this reason, you should never print a DEFINEQ expression onto a file yourself, but should instead always use the FNS file manager command (see the Functions and Macros section). The file map is stored on the property list of the root name of the file, under the property FILEMAP. In addition, MAKEFILE writes the file map on the file itself. For cosmetic reasons, the file map is written as the last expression in the file. However, the address of the file map in the file is (over)written into the FILECREATED expression that appears at the beginning of the file so that the file map can be rapidly accessed without having to scan the entire file. In most cases, LOAD and LOADFNS do not have to build the file map at all, since a file map will usually appear in the corresponding file, unless the file was written with BUILDMAPFLG = NIL, or was written outside of Interlisp. Currently, file maps for compiled files are not written onto the files themselves. However, LOAD and LOADFNS will build maps for a compiled file when it is loaded, and store it on the property FILEMAP. Similary, LOADFNS will obtain and use the file map for a compiled file, when available. The use and creation of file maps is controlled by the following variables: BUILDMAPFLG(BUILDMAPFLG (Variable) NIL NIL ("17") 50) [Variable] Whenever a file is read by LOAD or LOADFNS, or written by MAKEFILE, a file map is automatically built unless BUILDMAPFLG = NIL. (BUILDMAPFLG is initially T.) While building the map will not help the first reference to a file, it will help in future references. For example, if you perform (LOADFROM 'FOO) where FOO does not contain a file map, the LOADFROM will be (slightly) slower than if FOO did contain a file map, but subsequent calls to LOADFNS for this version of FOO will be able to use the map that was built as the result of the LOADFROM, since it will be stored on FOO's FILEMAP property. USEMAPFLG(USEMAPFLG (Variable) NIL NIL ("17") 50) [Variable] If USEMAPFLG = T (the initial setting), the functions that use file maps will first check the FILEMAP property to see if a file map for this file was previously obtained or built. If not, the first expression on the file is checked to see if it is a FILECREATED expression that also contains the address of a file map. If the file map is not on the FILEMAP property or in the file, a file map will be built (unless BUILDMAPFLG = NIL). If USEMAPFLG = NIL, the FILEMAP property and the file will not be checked for the file map. This allows you to recover in those cases where the file and its map for some reason do not agree. For example, if you use a text editor to change a symbolic file that contains a map (not recommended), inserting or deleting just one character will throw that map off. The functions which use file maps contain various integrity checks to enable them to detect that something is wrong, and to generate the error FILEMAP DOES NOT AGREE WITH CONTENTS OF FILE. In such cases, you can set USEMAPFLG to NIL, causing the map contained in the file to be ignored, and then reexecute the operation. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "17-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "17-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "17-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "17-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "17-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "17-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))2,HH206H/HH55550< +H,HH56``5552HH5lxx52HH30<6T/55,xx,xx,xx0T56TT2xx5555-T,306T2306 +T2<<306 +T2@ PAGEHEADINGLEFTBACKT,ll,ll,ll,ll3(T,<<,,,F PAGEHEADING VERSOHEAD, PALATINO PALATINO PALATINO PALATINO TITAN TITAN TITAN TITAN TITAN MODERN +MODERN +MODERN +' 1  +& IM.CHAP.GETFNMODERN + +  HRULE.GETFNMODERN + .  3.0M00 0X      J + * * * + * * * 0. 3  J 9  + + * *" *% * * * * * 0% \ + * 0      D + * * * * 05 ]0    i h N  + + * * * * * * * * * * * * 2 0l)0 + K&   _ 0   A   M Q01 + % +(IM.INDEX.GETFNTITAN   , +  ; +   .[, + HRULE.GETFNMODERN + /  0+     (   V 0 [ ; + :   F B 0 +   +  , +   R +  ' + +  ? +  /Y   0T   B   ^ + ; + 02    % "IM.INDEX.GETFNMODERN +   " H   @    = % #IM.INDEX.GETFNMODERN +    9    - < #  % %IM.INDEX.GETFNMODERN +   +9 5    + J`  + "  '  P         G   7L D $i/   &m -,     +   (  6     .E + .X +  +  *B  # &IM.INDEX.GETFNTITAN     # &IM.INDEX.GETFNTITAN     "G ? # 'IM.INDEX.GETFNPALATINO    B @ O `# &IM.INDEX.GETFNPALATINO   E L    # 'IM.INDEX.GETFNPALATINO    @   4  \ " T# 'IM.INDEX.GETFNPALATINO      1^/  T   m" B  m c 4  F C   .   F ( p     A    X  8  G               ('= W # +  ;$G $ +      A $ .  , + HRULE.GETFNMODERN + # &IM.INDEX.GETFNPALATINO  + +  '+   W #I   5 ! > +           S  +          G "    R              -       +  B   7       l          5  .  + +   '    '   ? #   $ 7   2 G   0   =    $  n$      . $      # (IM.INDEX.GETFNPALATINO        "   * ,# &IM.INDEX.GETFNPALATINO   #  + n          7  rU # %IM.INDEX.GETFNTITAN      (# *IM.INDEX.GETFNTITAN         e w   +  S 0 g +!  3 ;     Z  %       G v   #    I , 8  +   + ' +  2 + $ & 0   7    # +IM.INDEX.GETFNTITAN       H . %  B   1  # &IM.INDEX.GETFNTITAN     *, M  ) + 3%    "  0 3   , + HRULE.GETFNMODERN + "7 |" &         s E  "  + + 6  +l + ] {   +!  L J "A +j / B $ M" o    +               q"M,+ + HRULE.GETFNMODERN + " "" ~ \" @  Z ;  * >  +  g, + HRULE.GETFNMODERN + "   A   ` Q"A M    F  7" H# ,IM.INDEX.GETFNPALATINO       %"  " + &     2   4 6 } * # .IM.INDEX.GETFNTITAN    ,  # -IM.INDEX.GETFNTITAN   ' +  =   /    n , e     .  0K 1  | $    y  +  e D    , + HRULE.GETFNMODERN + /(    +  6 9    \05 # &IM.INDEX.GETFNTITAN  )  F/# %IM.INDEX.GETFN %    27 M "  |  L D     # *IM.INDEX.GETFNMODERN +      + # (IM.INDEX.GETFNMODERN +    #&IM.INDEX.GETFNMODERN +   z / 8  J 7    0; #&IM.INDEX.GETFNMODERN + F # ,IM.INDEX.GETFNMODERN + >  $#     K , + HRULE.GETFNMODERN + / O    ( Q - 0   * U  +  %          >c  + X a0% # *IM.INDEX.GETFNTITAN      ! , + HRULE.GETFNMODERN + /h(0# +IM.INDEX.GETFNTITAN    N /P#.IM.INDEX.GETFNTITAN  > #.IM.INDEX.GETFNTITAN  dm  C        + " +   ! R    ?  #7IM.INDEX.GETFNMODERN + 0 # 3IM.INDEX.GETFNMODERN + D J ' #.IM.INDEX.GETFNMODERN + I R #  5IM.INDEX.GETFN  !  +  T + ; Q 3 #-IM.INDEX.GETFNMODERN +  #0IM.INDEX.GETFNMODERN + 3 #+IM.INDEX.GETFNMODERN + $ #0IM.INDEX.GETFNMODERN + P # 3IM.INDEX.GETFNMODERN + H   #.IM.INDEX.GETFNMODERN + 2 #-IM.INDEX.GETFNMODERN +    l "   2 _& m     . H #/IM.INDEX.GETFNMODERN + 3 # 1IM.INDEX.GETFNMODERN + * # 1IM.INDEX.GETFNMODERN + 6 # +2IM.INDEX.GETFNMODERN + 1 #,IM.INDEX.GETFNMODERN + ) , + " (  # <>:  E    a)* @     D    :b 5 H   5- <# %IM.INDEX.GETFNTITAN    + C     ,  F   W  V t     )      O % 9  < !  F # %IM.INDEX.GETFNMODERN + +    +        ' J +  *      @ # %IM.INDEX.GETFNMODERN +    "+  %  &'m         5# &IM.INDEX.GETFNMODERN +         # &IM.INDEX.GETFNMODERN +  % + *  >         7     # %IM.INDEX.GETFNMODERN +   # &IM.INDEX.GETFNMODERN +  & ! # &IM.INDEX.GETFNMODERN +           # &IM.INDEX.GETFNMODERN + +   + +    '$   "       + ^  / n   # (IM.INDEX.GETFNMODERN +  #0   *  '    N  -  2 # &IM.INDEX.GETFNMODERN +      $ C   Y # ,IM.INDEX.GETFNMODERN +   !   Q  @!_  FX   2    =  # %IM.INDEX.GETFNPALATINO       '     # $ +    # &IM.INDEX.GETFNMODERN +        22     * -    # *IM.INDEX.GETFNMODERN +   ,3  + /g  h 0&I#7IM.INDEX.GETFNMODERN + (0   R  . + 9  ) X!  :    B #8IM.INDEX.GETFNMODERN +   d '    # +;IM.INDEX.GETFNMODERN +  i  # +;IM.INDEX.GETFNMODERN + % f 2   #7IM.INDEX.GETFNMODERN + ( + +   @ #7IM.INDEX.GETFNMODERN + (  " Z #8IM.INDEX.GETFNMODERN + '& ! + @ #7IM.INDEX.GETFNMODERN + &"' A #7IM.INDEX.GETFNMODERN + 'LE   $  & 8    # <IM.INDEX.GETFNMODERN + . _ F +  q&     #  <IM.INDEX.GETFN . # <IM.INDEX.GETFNMODERN + . # <IM.INDEX.GETFNMODERN + Q    /    # *IM.INDEX.GETFNMODERN +  o +5  #  =$  T  (  , + HRULE.GETFNMODERN + /@ V   0   Q    ! 0&&   0,    1 ;       o 0w + } ~    -   0q   + ;   0# +(IM.INDEX.GETFNTITAN    \ + H)    + # !IM.INDEX.GETFNTITAN !IM.INDEX.GETFNMODERN +    -  / - 8 3 # $IM.INDEX.GETFNMODERN +  n D  F # $IM.INDEX.GETFNTITAN     c + # $IM.INDEX.GETFNTITAN      S J  + # "IM.INDEX.GETFNTITAN  +   O  !E%   &       # &IM.INDEX.GETFNTITAN    W "   "5 5     +   #   # %IM.INDEX.GETFNTITAN             M"3(   & +      +    # +(IM.INDEX.GETFNTITAN          B S # &IM.INDEX.GETFNTITAN  +   "  6  # *IM.INDEX.GETFN  +    > " ` p 3   # $IM.INDEX.GETFNTITAN      ; +   h "    +  f # &IM.INDEX.GETFNTITAN    ! 'IM.INDEX.GETFNTITAN    ! +(IM.INDEX.GETFNTITAN   =   # 'IM.INDEX.GETFNTITAN    Y r 2 7   /  + # "IM.INDEX.GETFNTITAN      (L B D" /     \ # $IM.INDEX.GETFNTITAN             + + # #IM.INDEX.GETFNTITAN          $ +  )     # + # %IM.INDEX.GETFNTITAN   w # )IM.INDEX.GETFNTITAN     # )IM.INDEX.GETFNTITAN       # &IM.INDEX.GETFNTITAN    # 'IM.INDEX.GETFNTITAN    { # +IM.INDEX.GETFNTITAN       # -IM.INDEX.GETFNTITAN    # 'IM.INDEX.GETFNTITAN    # #IM.INDEX.GETFNTITAN   f '   \ # )IM.INDEX.GETFNTITAN    :   # IM.INDEX.GETFN    8 # IM.INDEX.GETFNTITAN    J # IM.INDEX.GETFNTITAN      ' # "IM.INDEX.GETFNTITAN    * # &IM.INDEX.GETFNMODERN +  l  +   G  + # &IM.INDEX.GETFNMODERN + +     (z C5 H   X =         K   >        ?  I0 o = I $  + 3 3 3    .  5 3 E > R C     G    # 6 >  ] s # $IM.INDEX.GETFNMODERN +     `  + /4  0 .0 $ ?#   8    # ,IM.INDEX.GETFNTITAN       R   # +)IM.INDEX.GETFNMODERN + +     +#  k # +IM.INDEX.GETFNMODERN + +   c  +  +   +  /              ) ( ( ( ( 0!  ! '      + /D 2  Q $ 6    0 ! (  ( ( ( (  0    ( ($ ( ( +    (  (  (  (! ( 0  4 9   " + /#$IM.INDEX.GETFNMODERN + !7    C U!         # a       +  - #"IM.INDEX.GETFNTITAN  !{ !       3      )(       3 6  #%IM.INDEX.GETFNTITAN    !    3      )7          ^ #&IM.INDEX.GETFNTITAN   !&IM.INDEX.GETFNTITAN   s  !    *      4 5 ! J   #      #   2 '   K R  ~ c   /  +   &# +)IM.INDEX.GETFNMODERN +   t2D      #   = $  W*  +  ,. + HRULE.GETFNMODERN + /JAe0V;-M#  *IM.INDEX.GETFNTITAN   e     (    # *IM.INDEX.GETFNTITAN    "0 $0 +  +   # +IM.INDEX.GETFNMODERN +   , +     &  ; # (IM.INDEX.GETFNMODERN +  i  5$  f ! +  E .    # *IM.INDEX.GETFNTITAN         # )IM.INDEX.GETFNTITAN   + 4 1 # +)IM.INDEX.GETFNTITAN   =    # *IM.INDEX.GETFNTITAN  +  & # +)IM.INDEX.GETFNTITAN      # 'IM.INDEX.GETFNTITAN          # ,IM.INDEX.GETFNTITAN    +  +  [       , + HRULE.GETFNMODERN + /# (IM.INDEX.GETFNTITAN    + +  +    9  R   @G  !  I  @   % I  + g / f    + +^ +4 )  5  ,   +Y9 +  <   +  (  + + +       z $ '    "# 'IM.INDEX.GETFNTITAN     j   # (IM.INDEX.GETFNTITAN       # *IM.INDEX.GETFNTITAN    + <       i e 8 # -IM.INDEX.GETFNMODERN +   +   #  -IM.INDEX.GETFN      +  %  !  " # *IM.INDEX.GETFNMODERN +  ; +  M # 'IM.INDEX.GETFNPALATINO  ' # .IM.INDEX.GETFNPALATINO   +/  + /q q-/ 00-9 0t  * *z_ F0 +& * 0 ,+" *  * *# * *' *1 ** * * 0q0I# +IM.INDEX.GETFNMODERN +   h   r f  m F #.IM.INDEX.GETFNTITAN   "     = #4IM.INDEX.GETFNTITAN   .  " + /# #IM.INDEX.GETFNMODERN +   $ # $IM.INDEX.GETFNMODERN +   $ # $IM.INDEX.GETFNMODERN +    !*  /   4   < # 'IM.INDEX.GETFNTITAN   &         Q% #     Z# 'IM.INDEX.GETFNTITAN    - v # &IM.INDEX.GETFNTITAN    _  + / +  [ <0     m +  D 0   8 D >0]  7    '0<  U  G0L# *IM.INDEX.GETFNMODERN +     +     " # 1  A   + # (IM.INDEX.GETFNMODERN + +  N  Y ;    )   Yhz \ No newline at end of file diff --git a/docs/medley-irm/17-FILEPACKAGE.pdf b/docs/medley-irm/17-FILEPACKAGE.pdf new file mode 100644 index 00000000..8bb05160 --- /dev/null +++ b/docs/medley-irm/17-FILEPACKAGE.pdf @@ -0,0 +1,27712 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5089 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(17. FILE MANAGER)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +510.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.1022 Tw +[(Warning: The subsystem within Medley used for managing collections of definitions \(of functions, variables,)]TJ +0 -1.2222 TD +0.0278 Tw +[(etc.\) is known as the "File Manager." This terminology is confusing, because the word "file" is also used in the)]TJ +T* +0.0233 Tw +[(more conventional sense as meaning a collection of data stored on some physical media. Unfortunately, it is not)]TJ +T* +0.3933 Tw +(possible to change this terminology at this time, because many functions and variables \()Tj +/TT10 1 Tf +40.2794 0 TD +0 Tw +(MAKEFILE)Tj +/TT8 1 Tf +4.8008 0 TD +(,)Tj +/TT10 1 Tf +-45.0801 -1.2889 TD +(FILEPKGTYPES)Tj +/TT8 1 Tf +7.2012 0 TD +(, etc.\) incorporate the word "file" in their names.)Tj +/TT12 1 Tf +-7.2012 -2.9556 TD +0.1244 Tw +(Most implementations of Lisp treat symbolic files as unstructured text, much as they are treated in)Tj +0 -1.2222 TD +0.21 Tw +[(most conventional programming environments. Function definitions are edited with a character-)]TJ +T* +0.0033 Tw +(oriented text editor, and then the changed definitions \(or sometimes the entire file\) is read or compiled)Tj +T* +0.0656 Tw +[(to install those changes in the running memory image. Interlisp incorporates a different philosophy.)]TJ +T* +0.1411 Tw +(A symbolic file is considered as a database of information about a group of data objects---function)Tj +T* +0.2522 Tw +[(definitions, variable values, record declarations, etc. The text in a symbolic file is never edited)]TJ +T* +0.0289 Tw +[(directly. Definitions are edited only after their textual representations on files have been converted to)]TJ +T* +0.0544 Tw +[(data-structures that reside inside the Lisp address space. The programs for editing definitions inside)]TJ +T* +0.0733 Tw +(Medley can therefore make use of the full set of data-manipulation capabilities that the environment)Tj +T* +0.1478 Tw +(already provides, and editing operations can be easily intermixed with the processes of evaluation)Tj +T* +0 Tw +(and compilation.)Tj +0 -2.8889 TD +0.0911 Tw +(Medley is thus a "resident" programming environment, and as such it provides facilities for moving)Tj +0 -1.2222 TD +0.1822 Tw +(definitions back and forth between memory and the external databases on symbolic files, and for)Tj +T* +0.0167 Tw +(doing the bookkeeping involved when definitions on many symbolic files with compiled counterparts)Tj +T* +0.19 Tw +[(are being manipulated. The file manager provides those capabilities. It shoulders the burden of)]TJ +T* +0.0733 Tw +[(keeping track of where things are and what things have changed so that you dont have to. The file)]TJ +T* +0 Tw +(manager also keeps track of which files have been modified and need to be updated and recompiled.)Tj +0 -2.8889 TD +0.0933 Tw +[(The file manager is integrated into many other system packages. For example, if only the compiled)]TJ +0 -1.2222 TD +0.0311 Tw +(version of a file is loaded and you attempt to edit a function, the file manager will attempt to load the)Tj +T* +0.1189 Tw +[(source of that function from the appropriate symbolic file. In many cases, if a datum is needed by)]TJ +T* +(some program, the file manager will automatically retrieve it from a file if it is not already in your)Tj +T* +0 Tw +(working environment.)Tj +0 -2.8889 TD +0.0744 Tw +[(Some of the operations of the file manager are rather complex. For example, the same function may)]TJ +0 -1.2222 TD +0.0633 Tw +(appear in several different files, or the symbolic or compiled files may be in different directories, etc.)Tj +T* +0.1011 Tw +(Therefore, this chapter does not document how the file manager works in each and every situation,)Tj +T* +0.22 Tw +(but instead makes the deliberately vague statement that it does the "right" thing with respect to)Tj +T* +0.0144 Tw +(keeping track of what has been changed, and what file operations need to be performed in accordance)Tj +T* +0 Tw +(with those changes.)Tj +0 -2.8889 TD +0.0044 Tw +(For a simple illustration of what the file manager does, suppose that the symbolic file )Tj +/TT10 1 Tf +37.9368 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0003 Tc +0.0041 Tw +( contains the)Tj +-39.7371 -1.2889 TD +0 Tc +0 Tw +(functions )Tj +/TT10 1 Tf +4.4964 0 TD +(FOO1)Tj +/TT12 1 Tf +2.4004 0 TD +0.1156 Tw +[( and )]TJ +/TT10 1 Tf +2.424 0 TD +0 Tw +(FOO2)Tj +/TT12 1 Tf +2.4004 0 TD +0.1156 Tw +(, and that the file )Tj +/TT10 1 Tf +8.2863 0 TD +0 Tw +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1156 Tw +[( contains the functions )]TJ +/TT10 1 Tf +10.6751 0 TD +0 Tw +(BAR1)Tj +/TT12 1 Tf +2.4004 0 TD +0.1156 Tw +[( and )]TJ +/TT10 1 Tf +2.424 0 TD +0 Tw +(BAR2)Tj +/TT12 1 Tf +2.4004 0 TD +0.1156 Tw +[(. These two)]TJ +-39.7076 -1.2889 TD +0 Tw +(files could be loaded into the environment with the function )Tj +/TT10 1 Tf +26.8521 0 TD +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(:)Tj +/TT13 1 Tf +-19.9191 -1.8444 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(LOAD FOO\))Tj +-0.9868 -1 TD +(FILE CREATED 4-MAR-83 09:26:55)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +14 0 obj +<< +/Length 5075 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 210 570.14 Tm +(FOOCOMS)Tj +0 -1 TD +({DSK}FOO.;1)Tj +/TT13 1 Tf +0 -1.6222 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(LOAD BAR\))Tj +-0.9868 -1 TD +(FILE CREATED 4-MAR-83 09:27:24)Tj +T* +(BARCOMS)Tj +T* +({DSK}BAR.;1)Tj +/TT12 1 Tf +-9.3333 -2.7333 TD +0.2689 Tw +(Now, suppose that we change the definition of )Tj +/TT10 1 Tf +23.0784 0 TD +0 Tw +(FOO2)Tj +/TT12 1 Tf +2.4004 0 TD +0.2689 Tw +[( with the editor, and we define two new)]TJ +-25.4787 -1.2889 TD +0 Tw +(functions, )Tj +/TT10 1 Tf +4.7486 0 TD +(NEW1)Tj +/TT12 1 Tf +2.4004 0 TD +0.1178 Tw +[( and )]TJ +/TT10 1 Tf +2.4284 0 TD +0 Tw +(NEW2)Tj +/TT12 1 Tf +2.4004 0 TD +0.1178 Tw +[(. At that point, the file manager knows that the in-memory definition of)]TJ +/TT10 1 Tf +-11.9778 -1.2889 TD +0 Tw +(FOO2)Tj +/TT12 1 Tf +2.4004 0 TD +0.0444 Tw +[( is no longer consistent with the definition in the file )]TJ +/TT10 1 Tf +23.7614 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0444 Tw +(, and that the new functions have been)Tj +-27.962 -1.2889 TD +0.0789 Tw +[(defined but have not yet been associated with a symbolic file and saved on permanent storage. The)]TJ +0 -1.2222 TD +0 Tw +(function )Tj +/TT10 1 Tf +3.9681 0 TD +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +0.0111 Tw +[( summarizes this state of affairs and enters into an interactive dialog in which we can)]TJ +-7.5687 -1.2889 TD +0 Tw +(specify what files the new functions are to belong to.)Tj +/TT13 1 Tf +9.3333 -1.7778 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(FILES?\))Tj +-0.9868 -1 TD +(FOO...to be dumped.)Tj +T* +( plus the functions: NEW1,NEW2)Tj +T* +(want to say where the above go ? Yes)Tj +T* +(\(functions\))Tj +T* +(NEW1 File name: BAR)Tj +T* +(NEW2 File name: ZAP)Tj +T* +( new file ? Yes)Tj +T* +(NIL)Tj +/TT12 1 Tf +-9.3333 -2.7333 TD +0.2567 Tw +(The file manager knows that the file )Tj +/TT10 1 Tf +17.9671 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.2567 Tw +[( has been changed, and needs to be dumped back to)]TJ +-19.7674 -1.2889 TD +0 Tw +(permanent storage. This can be done with )Tj +/TT10 1 Tf +19.022 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +(.)Tj +/TT13 1 Tf +-14.4894 -1.8444 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(MAKEFILE FOO\))Tj +-0.9868 -1 TD +({DSK}FOO.;2)Tj +/TT12 1 Tf +-9.3333 -2.7333 TD +0.0022 Tw +(Since we added )Tj +/TT10 1 Tf +7.202 0 TD +0 Tw +(NEW1)Tj +/TT12 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +( to the old file )Tj +/TT10 1 Tf +6.3622 0 TD +0 Tc +0 Tw +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0001 Tc +0.0021 Tw +( and established a new file )Tj +/TT10 1 Tf +11.9552 0 TD +0 Tc +0 Tw +(ZAP)Tj +/TT12 1 Tf +1.8003 0 TD +0.0002 Tc +0.002 Tw +( to contain )Tj +/TT10 1 Tf +4.8997 0 TD +0 Tc +0 Tw +(NEW2)Tj +/TT12 1 Tf +2.4004 0 TD +0.0022 Tw +(, both )Tj +/TT10 1 Tf +2.7618 0 TD +0 Tw +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0006 Tc +0.0016 Tw +( and)Tj +/TT10 1 Tf +-43.3826 -1.2889 TD +0 Tc +0 Tw +(ZAP)Tj +/TT12 1 Tf +1.8003 0 TD +( now also need to be dumped. This is confirmed by a second call to )Tj +/TT10 1 Tf +30.0962 0 TD +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +(:)Tj +/TT13 1 Tf +-26.1637 -1.8444 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(FILES?\))Tj +-0.9868 -1 TD +(BAR, ZAP...to be dumped.)Tj +T* +(FOO...to be listed.)Tj +T* +(FOO...to be compiled)Tj +T* +(NIL)Tj +/TT12 1 Tf +-9.3333 -2.7333 TD +0.0656 Tw +(We are also informed that the new version we made of )Tj +/TT10 1 Tf +25.1674 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0656 Tw +[( needs to be listed \(sent to a printer\) and)]TJ +-26.9677 -1.2889 TD +0 Tw +(that the functions on the file must be compiled.)Tj +0 -2.8889 TD +0.0789 Tw +(Rather than doing several )Tj +/TT10 1 Tf +11.9747 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0789 Tw +(s to dump the files )Tj +/TT10 1 Tf +8.8432 0 TD +0 Tw +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0789 Tw +[( and )]TJ +/TT10 1 Tf +2.3507 0 TD +0 Tw +(ZAP)Tj +/TT12 1 Tf +1.8003 0 TD +0.0789 Tw +(, we can simply call )Tj +/TT10 1 Tf +9.3051 0 TD +0 Tw +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +-45.0757 -1.2889 TD +0.0622 Tw +(Without any further user interaction, this will dump any files whose definitions have been modified.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.1511 Tw +[( will also send any unlisted files to the printer and recompile any files which need to be)]TJ +-4.2007 -1.2889 TD +0.1956 Tw +(recompiled. )Tj +/TT10 1 Tf +6.1606 0 TD +0 Tw +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.1955 Tw +[( is a useful function to use at the end of a debugging session. It will call)]TJ +/TT10 1 Tf +-10.3613 -1.2889 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +0.1322 Tw +[( if any new objects have been defined, so you do not lose the opportunity to say explicitly)]TJ +-3.6006 -1.2889 TD +0.0144 Tw +[(where those belong. In effect, the function )]TJ +/TT10 1 Tf +19.1561 0 TD +0 Tw +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0144 Tw +[( executes all the operations necessary to make the)]TJ +-23.3568 -1.2889 TD +0 Tw +(your permanent files consistent with the definitions in the current core-image.)Tj +/TT13 1 Tf +9.3333 -1.7778 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(CLEANUP\))Tj +-1.2368 -1 TD +(FOO...compiling {DSK}FOO.;2)Tj +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +17 0 obj +<< +/Length 5582 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-3)Tj +/TT10 1 Tf +-33.5 60.6822 TD +( .)Tj +0 -1 TD +( .)Tj +T* +( .)Tj +T* +(BAR...compiling {DSK}BAR.;2)Tj +T* +( .)Tj +T* +( .)Tj +T* +( .)Tj +T* +(ZAP...compiling {DSK}ZAP.;1)Tj +T* +( .)Tj +T* +( .)Tj +T* +( .)Tj +/TT12 1 Tf +-9.3333 -3.7333 TD +0.2189 Tw +(In addition to the definitions of functions, symbolic files in Interlisp can contain definitions of a)Tj +0 -1.2222 TD +0.0478 Tw +(variety of other types, e.g. variable values, property lists, record declarations, macro definitions, hash)Tj +T* +0.0822 Tw +[(arrays, etc. In order to treat such a diverse assortment of data uniformly from the standpoint of file)]TJ +T* +0.0311 Tw +(operations, the file manager uses the concept of a )Tj +/TT8 1 Tf +22.2639 0 TD +(typed definition)Tj +/TT12 1 Tf +6.3929 0 TD +(, of which a function definition is just)Tj +-28.6568 -1.2222 TD +0.1078 Tw +[(one example. A typed definition associates with a name \(usually a symbol\), a definition of a given)]TJ +T* +0.0156 Tw +[(type \(called the file manager type\). Note that the same name may have several definitions of different)]TJ +T* +0.0511 Tw +[(types. For example, a symbol may have both a function definition and a variable definition. The file)]TJ +T* +0.0211 Tw +(manager also keeps track of the files that a particular typed definition is stored on, so one can think of)Tj +T* +0 Tw +(a typed definition as a relation between four elements: a name, a definition, a type, and a file.)Tj +0 -2.8889 TD +0.3578 Tw +(Symbolic files on permanent storage devices are referred to by names that obey the naming)Tj +0 -1.2222 TD +0.28 Tw +[(conventions of those devices, usually including host, directory, and version fields. When such)]TJ +T* +0.0944 Tw +(definition groups are noticed by the file manager, they are assigned simple )Tj +/TT8 1 Tf +34.4317 0 TD +(root names)Tj +/TT12 1 Tf +4.5105 0 TD +[( and these are)]TJ +-38.9421 -1.2222 TD +0.0367 Tw +[(used by all file manager operations to refer to those groups of definitions. The root name for a group)]TJ +T* +0.1844 Tw +(is computed from its full permanent storage name by applying the function )Tj +/TT10 1 Tf +35.8159 0 TD +0 Tw +(ROOTFILENAME)Tj +/TT12 1 Tf +7.2012 0 TD +0.1844 Tw +(; this)Tj +-43.0171 -1.2889 TD +0.0589 Tw +[(strips off the host, directory, version, etc., and returns just the simple name field of the file. For each)]TJ +0 -1.2222 TD +0.1789 Tw +[(file, the file manager also has a data structure that describes what definitions it contains. This is)]TJ +T* +0.0433 Tw +[(known as the commands of the file, or its "filecoms". By convention, the filecoms of a file whose root)]TJ +T* +0.1533 Tw +(name is )Tj +/TT15 1 Tf +3.9654 0 TD +0 Tw +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.1533 Tw +[( is stored as the value of the symbol )]TJ +/TT15 1 Tf +17.3937 0 TD +0 Tw +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1533 Tw +[(. For example, the value of )]TJ +/TT10 1 Tf +13.2735 0 TD +0 Tw +(FOOCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1533 Tw +[( is the)]TJ +-42.4338 -1.2889 TD +0.1456 Tw +(filecoms for the file )Tj +/TT10 1 Tf +9.3278 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.1456 Tw +[(. This variable can be directly manipulated, but the file manager contains)]TJ +-11.1281 -1.2889 TD +0.1044 Tw +(facilities such as )Tj +/TT10 1 Tf +7.7098 0 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +0.1044 Tw +[( which make constructing and updating filecoms easier, and in some cases)]TJ +-11.3104 -1.2889 TD +0 Tw +(automatic. See the Functions for Manipulating File Command Lists section.)Tj +0 -2.8889 TD +0.0122 Tw +(The file manager is able to maintain its databases of information because it is notified by various other)Tj +0 -1.2222 TD +0.0133 Tw +[(routines in the system when events take place that may change that database. A file is "noticed" when)]TJ +T* +0.1489 Tw +[(it is loaded, or when a new file is stored \(though there are ways to explicitly notice files without)]TJ +T* +0.0656 Tw +[(completely loading all their definitions\). Once a file is noticed, the file manager takes it into account)]TJ +T* +0.2211 Tw +[(when modifying filecoms, dumping files, etc. The file manager also needs to know what typed)]TJ +T* +0.1622 Tw +(definitions have been changed or what new definitions have been introduced, so it can determine)Tj +T* +0.1256 Tw +[(which files need to be updated. This is done by "marking changes". All the system functions that)]TJ +T* +0.1489 Tw +(perform file manager operations \()Tj +/TT10 1 Tf +15.5394 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6489 0 TD +(TCOMPL)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6489 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.1489 Tw +(, etc.\), as well as those functions that)Tj +-28.239 -1.2889 TD +0.0556 Tw +(define or change data, \()Tj +/TT10 1 Tf +10.6011 0 TD +0 Tw +(EDITF)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5556 0 TD +(EDITV)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5556 0 TD +(EDITP)Tj +/TT12 1 Tf +3.0005 0 TD +0.0555 Tw +(, DWIM corrections to user functions\) interact with the)Tj +-20.7137 -1.2889 TD +0.0289 Tw +[(file manager. Also, )]TJ +/TT8 1 Tf +8.9432 0 TD +0 Tw +(typed-in)Tj +/TT12 1 Tf +3.3892 0 TD +0.0289 Tw +[( assignment of variables or property values is noticed by the file manager.)]TJ +-12.3324 -1.2222 TD +0.1133 Tw +(\(Note that modifications to variable or property values during the execution of a function body are)Tj +T* +0.0422 Tw +[(not noticed.\) In some cases the marking procedure can be subtle, e.g. if you edit a property list using)]TJ +/TT10 1 Tf +T* +0 Tw +(EDITP)Tj +/TT12 1 Tf +3.0005 0 TD +(, only those properties whose values are actually changed \(or added\) are marked.)Tj +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +21 0 obj +<< +/Length 4741 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 126 569.54 Tm +(All file manager operations can be disabled with )Tj +/TT10 1 Tf +21.6899 0 TD +(FILEPKGFLG)Tj +/TT12 1 Tf +6.001 0 TD +(.)Tj +/TT17 1 Tf +-25.0243 -2.5489 TD +(FILEPKGFLG)Tj +/TT6 1 Tf +10 0 0 10 204 546.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 494.41 546.6 Tm +([Variable])Tj +-35.6011 -2.0667 TD +0.2144 Tw +(The file manager can be disabled by setting )Tj +/TT10 1 Tf +21.0901 0 TD +0 Tw +(FILEPKGFLG)Tj +/TT12 1 Tf +6.001 0 TD +0.2144 Tw +[( to )]TJ +/TT10 1 Tf +1.801 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2144 Tw +[(. This will turn off)]TJ +-30.6923 -1.2889 TD +0 Tw +(noticing files and marking changes. )Tj +/TT10 1 Tf +16.209 0 TD +(FILEPKGFLG)Tj +/TT12 1 Tf +6.001 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +(.)Tj +-33.0277 -2.9556 TD +0.1433 Tw +[(The rest of this chapter goes into further detail about the file manager. Functions for loading and)]TJ +0 -1.2222 TD +0.2122 Tw +[(storing symbolic files are presented first, followed by functions for adding and removing typed)]TJ +T* +0.1644 Tw +(definitions from files, moving typed definitions from one file to another, determining which file a)Tj +T* +0 Tw +(particular definition is stored in, and so on. )Tj +/TT4 1 Tf +10 0 0 10 102 414.46 Tm +(Loading Files)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 411.75 m +558.01 411.75 l +S +BT +/TT12 1 Tf +9 0 0 9 126 389.8 Tm +0.0389 Tw +[(The functions below load information from symbolic files into the Interlisp environment. A symbolic)]TJ +T* +0.1789 Tw +(file contains a sequence of Interlisp expressions that can be evaluated to establish specified typed)Tj +T* +0 Tw +(definitions. The expressions on symbolic files are read using )Tj +/TT10 1 Tf +27.0889 0 TD +(FILERDTBL)Tj +/TT12 1 Tf +5.4009 0 TD +( as the read table.)Tj +-32.4897 -2.9556 TD +0.3256 Tw +(The loading functions all have an argument )Tj +/TT15 1 Tf +21.8248 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.3256 Tw +(. )Tj +/TT15 1 Tf +1.4011 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.3256 Tw +[( affects the operation of )]TJ +/TT10 1 Tf +12.2489 0 TD +0 Tw +(DEFINE)Tj +/TT12 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-45.0763 -1.2889 TD +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6611 0 TD +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6611 0 TD +(RPAQ?)Tj +/TT12 1 Tf +3.0005 0 TD +0.1611 Tw +(, and )Tj +/TT10 1 Tf +2.7651 0 TD +0 Tw +(RPAQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.1611 Tw +[(. While a source file is being loaded, )]TJ +/TT10 1 Tf +17.8416 0 TD +0 Tw +(DFNFLG)Tj +/TT12 1 Tf +3.6006 0 TD +0.1611 Tw +[( \(Chapter 10\) is)]TJ +-38.1316 -1.2889 TD +0.0556 Tw +(rebound to )Tj +/TT15 1 Tf +5.2522 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0556 Tw +[(. Thus, if )]TJ +/TT15 1 Tf +4.5679 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.3056 0 TD +0.1344 Tw +(= NIL)Tj +/TT12 1 Tf +3.1349 0 TD +0.0555 Tw +(, and a function is redefined, a message is printed and the)Tj +-19.2616 -1.2889 TD +0.0056 Tw +[(old definition saved. If )]TJ +/TT15 1 Tf +10.5561 0 TD +0 Tw +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +0.0133 Tw +[( = T )]TJ +/TT12 1 Tf +3.0405 0 TD +0.0056 Tw +[(, the old definition is simply overwritten. If )]TJ +/TT15 1 Tf +19.6159 0 TD +0 Tw +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +0.0133 Tw +[( = PROP)]TJ +/TT12 1 Tf +4.2273 0 TD +0.0056 Tw +(, the)Tj +-43.4408 -1.2889 TD +0.1111 Tw +(functions are stored as "saved" definitions on the property lists under the property )Tj +/TT10 1 Tf +38.1075 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.1111 Tw +[( instead of)]TJ +-40.5079 -1.2889 TD +0.0322 Tw +[(being installed as the active definitions. If )]TJ +/TT15 1 Tf +19.1059 0 TD +0 Tw +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +0.0767 Tw +[( = ALLPROP)]TJ +/TT12 1 Tf +6.1543 0 TD +0.0322 Tw +(, not only function definitions but also)Tj +-28.2607 -1.2889 TD +0.1033 Tw +(variables set by )Tj +/TT10 1 Tf +7.3964 0 TD +0 Tw +(RPAQQ)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6033 0 TD +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6033 0 TD +(RPAQ?)Tj +/TT12 1 Tf +3.0005 0 TD +0.1033 Tw +[( are stored on property lists \(except when the variable has the)]TJ +-17.0045 -1.2889 TD +0 Tw +(value )Tj +/TT10 1 Tf +2.688 0 TD +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +(, in which case they are set to the indicated value regardless of )Tj +/TT10 1 Tf +27.7637 0 TD +(DFNFLG)Tj +/TT12 1 Tf +3.6006 0 TD +(\).)Tj +-37.6528 -2.9556 TD +0.1667 Tw +[(Another option is available for loading systems for others to use and who wish to suppress the)]TJ +0 -1.2222 TD +0 Tw +(saving of information used to aid in development and debugging. If )Tj +/TT15 1 Tf +30.5776 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +( = SYSLOAD)Tj +/TT12 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +( will: )Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +25 0 obj +<< +/Length 8000 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-5)Tj +/TT12 1 Tf +-40.1667 60.6156 TD +[(1.)-1916.7(Rebind )]TJ +/TT10 1 Tf +6.1007 0 TD +(DFNFLG)Tj +/TT12 1 Tf +3.6006 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +(, so old definitions are simply overwritten)Tj +-11.6735 -2.0667 TD +[(2.)-1916.7(Rebind )]TJ +/TT10 1 Tf +6.2307 0 TD +(LISPXHIST)Tj +/TT12 1 Tf +5.4009 0 TD +0.13 Tw +[( to )]TJ +/TT10 1 Tf +1.6321 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.13 Tw +(, thereby making the )Tj +/TT10 1 Tf +9.896 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.13 Tw +[( not be undoable and eliminating)]TJ +-26.027 -1.2889 TD +0 Tw +(the cost of saving undo information \(Chapter 13\))Tj +-1.3333 -2 TD +[(3.)-1916.7(Rebind )]TJ +/TT10 1 Tf +6.1007 0 TD +(ADDSPELLFLG)Tj +/TT12 1 Tf +6.6011 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, to suppress adding to spelling lists)Tj +-15.8742 -2.0667 TD +[(4.)-1916.7(Rebind )]TJ +/TT10 1 Tf +6.1007 0 TD +(FILEPKGFLG)Tj +/TT12 1 Tf +6.001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, to prevent the file from being "noticed" by the file manager)Tj +-15.2741 -2.0667 TD +[(5.)-1916.7(Rebind )]TJ +/TT10 1 Tf +6.1007 0 TD +(BUILDMAPFLG)Tj +/TT12 1 Tf +6.6011 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, to prevent a file map from being constructed)Tj +-15.8742 -2.0667 TD +0.2556 Tw +[(6.)-1916.7(After the load has completed, set the filecoms variable and any filevars variables to)]TJ +/TT10 1 Tf +1.3333 -1.1556 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +-1.3333 -2.0667 TD +[(7.)-1916.7(Add the file name to )]TJ +/TT10 1 Tf +12.0133 0 TD +(SYSFILES)Tj +/TT12 1 Tf +4.8008 0 TD +( rather than )Tj +/TT10 1 Tf +5.4175 0 TD +(FILELST)Tj +/TT12 1 Tf +-24.8983 -2.9556 TD +0.1456 Tw +(A filevars variable is any variable appearing in a file manager command of the form )Tj +/TT10 1 Tf +39.529 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(FILECOM)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.3956 0 TD +(*)Tj +/TT15 1 Tf +-44.7254 -1.2889 TD +(VARIABLE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0156 Tw +[( \(see the FileVars section\). Therefore, if the filecoms includes )]TJ +/TT10 1 Tf +27.3332 0 TD +0.0378 Tw +(\(FNS * FOOFNS\))Tj +/TT12 1 Tf +8.4769 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5156 0 TD +(FOOFNS)Tj +/TT12 1 Tf +-41.7266 -1.2889 TD +0.0356 Tw +(is set to )Tj +/TT10 1 Tf +3.6726 0 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +0.0356 Tw +[(. If you want the value of such a variable to be retained, even when the file is loaded)]TJ +-7.2732 -1.2889 TD +0 Tw +(with )Tj +/TT15 1 Tf +2.5243 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +0.5778 Tw +[( = SYSLOAD)]TJ +/TT12 1 Tf +7.1565 0 TD +0.2411 Tw +(, then you should replace the variable with an equivalent, )Tj +/TT8 1 Tf +28.084 0 TD +0 Tw +(non-atomic)Tj +/TT12 1 Tf +-40.7653 -1.2889 TD +(expression, such as )Tj +/TT10 1 Tf +8.7134 0 TD +(\(FNS * \(PROGN FOOFNS\)\))Tj +/TT12 1 Tf +13.2022 0 TD +(.)Tj +-21.9155 -2.9556 TD +0.0767 Tw +(All functions that have )Tj +/TT15 1 Tf +10.6577 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0767 Tw +[( as an argument perform spelling correction using )]TJ +/TT10 1 Tf +22.9942 0 TD +0 Tw +(LOADOPTIONS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0767 Tw +[( as a)]TJ +-43.2535 -1.2889 TD +0.0056 Tw +(spelling list when )Tj +/TT15 1 Tf +8.0909 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0056 Tw +[( is not a member of )]TJ +/TT10 1 Tf +8.7531 0 TD +0 Tw +(LOADOPTIONS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0056 Tw +(. )Tj +/TT10 1 Tf +0.7611 0 TD +0 Tw +(LOADOPTIONS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0056 Tw +[( is initially )]TJ +/TT10 1 Tf +4.9009 0 TD +0.0133 Tw +(\(NIL T PROP)Tj +-38.7086 -1.2889 TD +0 Tw +(ALLPROP SYSLOAD\))Tj +/TT12 1 Tf +9.6016 0 TD +(.)Tj +/TT10 1 Tf +-6.9349 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOAD)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PRINTFLG)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 232.9658 290.8 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 290.8 Tm +([Function])Tj +-35.4033 -2.0667 TD +0.1133 Tw +(Reads successive expressions from )Tj +/TT15 1 Tf +16.0285 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1133 Tw +[( \(with )]TJ +/TT10 1 Tf +3.0929 0 TD +0 Tw +(FILERDTBL)Tj +/TT12 1 Tf +5.4009 0 TD +0.1133 Tw +[( as read table\) and evaluates)]TJ +-26.9227 -1.2889 TD +0.0022 Tw +(each as it is read, until it reads either )Tj +/TT10 1 Tf +16.437 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0022 Tw +(, or the single atom )Tj +/TT10 1 Tf +8.7172 0 TD +0 Tw +(STOP)Tj +/TT12 1 Tf +2.4004 0 TD +0.0002 Tc +0.002 Tw +(. Note that )Tj +/TT10 1 Tf +5.1754 0 TD +0 Tc +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.0003 Tc +0.0019 Tw +( can be)Tj +-36.9306 -1.2889 TD +0 Tc +0 Tw +(used to load both symbolic and compiled files. Returns )Tj +/TT15 1 Tf +24.8149 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +( \(full name\).)Tj +-27.2153 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9199 0 TD +(PRINTFLG )Tj +/TT10 1 Tf +5.4009 0 TD +(= T)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +( prints the value of each expression; otherwise it does not. )Tj +/TT10 1 Tf +-13.6882 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOAD?)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PRINTFLG)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 238.3658 207.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 207.46 Tm +([Function])Tj +-35.4033 -2.0667 TD +0.0689 Tw +(Similar to )Tj +/TT10 1 Tf +4.6856 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.0689 Tw +[( except that it does not load )]TJ +/TT15 1 Tf +12.8904 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0689 Tw +[( if it has already been loaded, in which)]TJ +-22.3768 -1.2889 TD +0 Tw +(case it returns )Tj +/TT10 1 Tf +6.418 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-8.2183 -2.0667 TD +(LOAD?)Tj +/TT12 1 Tf +3.0005 0 TD +0.0767 Tw +[( loads )]TJ +/TT15 1 Tf +3.0249 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0767 Tw +[( except when the )]TJ +/TT8 1 Tf +8.0161 0 TD +0 Tw +(same)Tj +/TT12 1 Tf +2 0 TD +0.0767 Tw +[( version of the file has been loaded \(either from)]TJ +-18.4419 -1.2889 TD +0.04 Tw +[(the same place, or from a copy of it from a different place\). Specifically, )]TJ +/TT10 1 Tf +32.5082 0 TD +0 Tw +(LOAD?)Tj +/TT12 1 Tf +3.0005 0 TD +0.04 Tw +[( considers)]TJ +-35.5087 -1.2889 TD +0 Tw +(that )Tj +/TT15 1 Tf +2.0866 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1022 Tw +[( has already been loaded if the full name of )]TJ +/TT15 1 Tf +20.343 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1022 Tw +[( is on )]TJ +/TT10 1 Tf +2.8994 0 TD +0 Tw +(LOADEDFILELST)Tj +/TT12 1 Tf +7.8013 0 TD +0.1022 Tw +[( \(see)]TJ +-37.9311 -1.2889 TD +0.0811 Tw +(the Noticing Files section\) or the date stored on the )Tj +/TT10 1 Tf +23.5714 0 TD +0 Tw +(FILEDATES)Tj +/TT12 1 Tf +5.4009 0 TD +0.0811 Tw +[( property of the root file)]TJ +-28.9722 -1.2889 TD +0 Tw +(name of )Tj +/TT15 1 Tf +3.8228 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +( is the same as the )Tj +/TT10 1 Tf +8.1987 0 TD +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +( expression on )Tj +/TT15 1 Tf +6.6147 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-32.7048 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADFNS)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FNS)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VARS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 246.0149 89.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 89.32 Tm +([Function])Tj +-35.4033 -2.0667 TD +0.0611 Tw +(Permits selective loading of definitions. )Tj +/TT15 1 Tf +18.3081 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.0611 Tw +[( is a list of function names, a single function)]TJ +-20.1084 -1.2889 TD +0.0144 Tw +(name, or )Tj +/TT10 1 Tf +4.1637 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0144 Tw +(, meaning to load all of the functions on the file. )Tj +/TT15 1 Tf +21.7544 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0144 Tw +[( can be either a compiled)]TJ +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +29 0 obj +<< +/Length 7053 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +0.34 Tw +[(or symbolic file. If a compiled definition is loaded, so are all compiler-generated)]TJ +0 -1.2222 TD +0 Tw +(subfunctions. The interpretation of )Tj +/TT15 1 Tf +15.8833 0 TD +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +( is the same as for )Tj +/TT10 1 Tf +8.0854 0 TD +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-29.3696 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9966 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +0.1833 Tw +[( = NIL)]TJ +/TT12 1 Tf +3.9673 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0767 Tw +[( will use )]TJ +/TT10 1 Tf +4.1929 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0767 Tw +[( \(see the Storing Files section\) to determine)]TJ +-20.5352 -1.2889 TD +0.1167 Tw +(where the first function in )Tj +/TT15 1 Tf +12.3387 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.1167 Tw +[( resides, and load from that file. Note that the file must)]TJ +-14.139 -1.2889 TD +0.2811 Tw +[(previously have been "noticed". If )]TJ +/TT10 1 Tf +17.0978 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2811 Tw +[( returns )]TJ +/TT10 1 Tf +4.2663 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2811 Tw +(, and the )Tj +/TT10 1 Tf +4.9234 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2811 Tw +[( library)]TJ +-36.4892 -1.2889 TD +0.2578 Tw +(package has been loaded, )Tj +/TT10 1 Tf +12.5541 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2578 Tw +[( will use the )]TJ +/TT10 1 Tf +6.6312 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2578 Tw +[( data base to find the file)]TJ +-27.5866 -1.2889 TD +0 Tw +(containing )Tj +/TT15 1 Tf +4.9502 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +(.)Tj +/TT15 1 Tf +-6.1504 -2.0667 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1511 Tw +[( specifies which non-)]TJ +/TT10 1 Tf +9.7448 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.1511 Tw +[( expressions are to be loaded \(i.e., evaluated\). It is)]TJ +-16.3459 -1.2889 TD +0 Tw +(interpreted as follows:)Tj +/TT17 1 Tf +8.7333 -2.1489 TD +(T)Tj +/TT12 1 Tf +1.2667 0 TD +(Means to load all non-)Tj +/TT10 1 Tf +9.8755 0 TD +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +( expressions.)Tj +/TT17 1 Tf +-16.5428 -2.2156 TD +(NIL)Tj +/TT12 1 Tf +2.4667 0 TD +(Means to load none of the non-)Tj +/TT10 1 Tf +13.7485 0 TD +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +( expressions.)Tj +/TT17 1 Tf +-21.0159 -2.2156 TD +(VARS)Tj +/TT12 1 Tf +3.0667 0 TD +0.57 Tw +(Means to evaluate all variable assignment expressions)Tj +0 -1.2889 TD +0.16 Tw +(\(beginning with )Tj +/TT10 1 Tf +7.6589 0 TD +0 Tw +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.66 0 TD +(RPAQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.16 Tw +(, or )Tj +/TT10 1 Tf +2.0109 0 TD +0 Tw +(RPAQ?)Tj +/TT12 1 Tf +3.0005 0 TD +0.16 Tw +(, see the Functions)Tj +-18.7312 -1.2889 TD +0 Tw +(Used Within Source Files section\).)Tj +-8.6633 -2 TD +[(Any other symbol)-666.3(Means the same as specifying a list containing that atom.)]TJ +5.6367 -2 TD +[(A list)-666.8(If )]TJ +/TT15 1 Tf +4.0933 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1467 Tw +[( is a list that is not a valid function definition, each)]TJ +-3.467 -1.2889 TD +0.2967 Tw +(element in )Tj +/TT15 1 Tf +5.4854 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.2967 Tw +[( is "matched" against each non-)]TJ +/TT10 1 Tf +15.2421 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +-23.1279 -1.2889 TD +0.0156 Tw +(expression, and if any elements in )Tj +/TT15 1 Tf +15.3511 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0156 Tw +[( "match" successfully,)]TJ +-17.7515 -1.2889 TD +0.0144 Tw +[(the expression is evaluated. "Matching" is defined as follows:)]TJ +0 -1.2222 TD +0.0656 Tw +(If an element of )Tj +/TT15 1 Tf +7.4121 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0656 Tw +[( is an atom, it matches an expression if)]TJ +-9.8125 -1.2889 TD +0.0467 Tw +(it is )Tj +/TT10 1 Tf +1.9254 0 TD +0 Tw +(EQ)Tj +/TT12 1 Tf +1.2002 0 TD +0.0467 Tw +[( to either the )]TJ +/TT10 1 Tf +5.9982 0 TD +0 Tw +(CAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0467 Tw +[( or the )]TJ +/TT10 1 Tf +3.2181 0 TD +0 Tw +(CADR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0467 Tw +[( of the expression. If an)]TJ +-16.5426 -1.2889 TD +0.1078 Tw +(element of )Tj +/TT15 1 Tf +5.1135 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1078 Tw +[( is a list, it is treated as an edit pattern \(see)]TJ +-7.5139 -1.2889 TD +0.1422 Tw +(Chapter 16\), and matched with the entire expression \(using)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(EDIT4E)Tj +/TT12 1 Tf +3.6006 0 TD +0.0367 Tw +[(, described in Chapter 16\). For example, if )]TJ +/TT15 1 Tf +19.2851 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0367 Tw +[( was)]TJ +/TT10 1 Tf +-25.2861 -1.2889 TD +0.1367 Tw +(\(FOOCOMS DECLARE: \(DEFLIST & \(QUOTE MACRO\)\)\))Tj +/TT12 1 Tf +27.0876 0 TD +0 Tw +(,)Tj +-27.0876 -1.2889 TD +0.0933 Tw +(this would cause )Tj +/TT10 1 Tf +7.9875 0 TD +0.2244 Tw +(\(RPAQQ FOOCOMS ...\))Tj +/TT12 1 Tf +11.8507 0 TD +0.0933 Tw +(, all )Tj +/TT10 1 Tf +2.0187 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +(s,)Tj +-26.6577 -1.2889 TD +0.3256 Tw +(and all )Tj +/TT10 1 Tf +3.926 0 TD +0 Tw +(DEFLIST)Tj +/TT12 1 Tf +4.2007 0 TD +0.3256 Tw +(s which set up )Tj +/TT10 1 Tf +7.8921 0 TD +0 Tw +(MACRO)Tj +/TT12 1 Tf +3.0005 0 TD +0.3256 Tw +(s to be read and)Tj +-19.0193 -1.2889 TD +0 Tw +(evaluated.)Tj +-9.9844 -2 TD +[(A function definition)-667.5(If )]TJ +/TT15 1 Tf +11.1566 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.2522 Tw +[( is a list and a valid function definition )]TJ +/TT10 1 Tf +19.5566 0 TD +0 Tw +(\(\(FNTYP)Tj +/TT15 1 Tf +-23.1292 -1.2889 TD +(VARS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1689 Tw +[( is true\), then )]TJ +/TT10 1 Tf +6.7459 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1689 Tw +[( will invoke that function on)]TJ +-13.947 -1.2889 TD +0.0344 Tw +(every non-)Tj +/TT10 1 Tf +4.8015 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.0344 Tw +[( expression being considered, applying it)]TJ +-9.0022 -1.2889 TD +0.3744 Tw +(to two arguments, the first and second elements in the)Tj +0 -1.2222 TD +0.1378 Tw +[(expression. If the function returns )]TJ +/TT10 1 Tf +16.2817 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1378 Tw +(, the expression will)Tj +-18.082 -1.2889 TD +0.2733 Tw +(be skipped; if it returns a non-)Tj +/TT10 1 Tf +14.9735 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2733 Tw +[( symbol \(e.g., )]TJ +/TT10 1 Tf +7.4644 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.2733 Tw +(\), the)Tj +-24.8383 -1.2889 TD +0.03 Tw +(expression will be evaluated; and if it returns a list, this list is)Tj +0 -1.2222 TD +0.06 Tw +[(evaluated instead of the expression. The file pointer is set to)]TJ +T* +0.0778 Tw +(the very beginning of the expression before calling the )Tj +/TT15 1 Tf +24.9354 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +-24.9354 -1.2889 TD +0.22 Tw +(function definition, so it may read the entire expression if)Tj +0 -1.2222 TD +0.0322 Tw +[(necessary. If the function returns a symbol, the file pointer is)]TJ +T* +0.1233 Tw +(reset and the expression is )Tj +/TT10 1 Tf +12.5014 0 TD +0 Tw +(READ)Tj +/TT12 1 Tf +2.4004 0 TD +0.1233 Tw +[( or )]TJ +/TT10 1 Tf +1.6876 0 TD +0 Tw +(SKREAD)Tj +/TT12 1 Tf +3.6006 0 TD +0.1233 Tw +[(. However, the)]TJ +-20.19 -1.2889 TD +0.0189 Tw +(file pointer is not reset when the function returns a list, so the)Tj +ET +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +32 0 obj +<< +/Length 5653 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-7)Tj +/TT12 1 Tf +-27.5 60.6156 TD +0.1856 Tw +(function must leave it set immediately after the expression)Tj +0 -1.2222 TD +0 Tw +(that it has presumably read.)Tj +/TT10 1 Tf +-10 -2.8889 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +( returns a list of: )Tj +-0.2007 -2.0667 TD +[(1.)-583.3(The names of the functions that were found)]TJ +0 -2 TD +0.2667 Tw +[(2.)-583.3(A list of those functions not found \(if any\) headed by the symbol )]TJ +/TT10 1 Tf +33.5949 0 TD +0 Tw +(NOT-)Tj +-32.2616 -1.2222 TD +(FOUND:)Tj +/TT12 1 Tf +-1.3333 -2.0667 TD +[(3.)-583.3(All of the expressions that were evaluated)]TJ +0 -2 TD +[(4.)-583.3(A list of those members of )]TJ +/TT15 1 Tf +13.1536 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +( for which no corresponding expressions were)Tj +-14.2207 -1.2889 TD +(found \(if any\), again headed by the symbol )Tj +/TT10 1 Tf +19.2935 0 TD +(NOT-FOUND:)Tj +/TT12 1 Tf +-24.6268 -2.9556 TD +(For example:)Tj +/TT13 1 Tf +4 -1.7778 TD +<0040>Tj +/TT12 1 Tf +0.9868 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(LOADFNS \(FOO FIE FUM\) )Tj +/TT15 1 Tf +14.4023 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +( NIL \(BAZ \(DEFLIST &\)\)\))Tj +-18.0396 -1 TD +(\(FOO FIE \(NOT-FOUND: FUM\) \(RPAQ BAZ ...\) \(NOT-FOUND:)Tj +T* +(\(DEFLIST &\)\)\))Tj +-6.6667 -2.1778 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADVARS)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VARS)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-23018.6([Function])]TJ +-11.8847 -1.8444 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(LOADFNS NIL)Tj +/TT19 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VARS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-22.8298 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADFROM)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FNS)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-23618.7([Function])]TJ +-11.2846 -1.8444 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(LOADFNS)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FNS)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T\))Tj +/TT12 1 Tf +1.2002 0 TD +(.)Tj +-23.346 -2.9556 TD +0.03 Tw +(Once the file manager has noticed a file, you can edit functions contained in the file without explicitly)Tj +0 -1.2222 TD +0.0833 Tw +[(loading them. Similarly, those functions which have not been modified do not have to be loaded in)]TJ +T* +0.2122 Tw +[(order to write out an updated version of the file. Files are normally noticed \(i.e., their contents)]TJ +T* +0.1711 Tw +(become known to the file manager\) when either the symbolic or compiled versions of the file are)Tj +T* +0.2544 Tw +[(loaded. If the file is )]TJ +/TT8 1 Tf +10.4803 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.2544 Tw +[( going to be loaded completely, the preferred way to notice it is with)]TJ +/TT10 1 Tf +-11.8133 -1.2222 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.2467 Tw +[(. You can also load some functions at the same time by giving )]TJ +/TT10 1 Tf +31.1447 0 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.2467 Tw +[( a second)]TJ +-40.7463 -1.2889 TD +0.0511 Tw +(argument, but it is normally used simply to inform the file manager about the existence and contents)Tj +0 -1.2222 TD +0 Tw +(of a particular file.)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADBLOCK)Tj +/TT19 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-23618.8([Function])]TJ +-11.2845 -1.8444 TD +(Calls )Tj +/TT10 1 Tf +2.5515 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0867 Tw +[( on those functions contained in the block declaration containing )]TJ +/TT15 1 Tf +29.6587 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.0867 Tw +[( \(see)]TJ +-37.6111 -1.2889 TD +0.1356 Tw +(Chapter 18\). )Tj +/TT10 1 Tf +6.332 0 TD +0 Tw +(LOADBLOCK)Tj +/TT12 1 Tf +5.4009 0 TD +0.1356 Tw +[( is designed primarily for use with symbolic files, to load the)]TJ +/TT10 1 Tf +-11.7328 -1.2889 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.1133 Tw +[(s for a given block. It will not load a function which already has an in-core )]TJ +/TT10 1 Tf +35.1894 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +-37.5898 -1.2889 TD +(definition, and it will not load the block name, unless it is also one of the block functions.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADCOMP)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-25669([Function])]TJ +-9.2343 -1.8444 TD +0.0067 Tw +(Performs all operations on )Tj +/TT15 1 Tf +11.9852 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0067 Tw +[( associated with compilation, i.e. evaluates all expressions)]TJ +-14.3856 -1.2889 TD +0.13 Tw +(under a )Tj +/TT10 1 Tf +3.9299 0 TD +0.3122 Tw +(DECLARE: EVAL@COMPILE)Tj +/TT12 1 Tf +12.9143 0 TD +0.13 Tw +(, and "notices" the function and variable names by)Tj +-16.8442 -1.2889 TD +0 Tw +(adding them to the lists )Tj +/TT10 1 Tf +10.686 0 TD +(NOFIXFNSLST)Tj +/TT12 1 Tf +6.6011 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(NOFIXVARSLST)Tj +/TT12 1 Tf +7.2012 0 TD +( \(see Chapter 21\).)Tj +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +35 0 obj +<< +/Length 6107 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +0.0156 Tw +(Thus, if building a system composed of many files with compilation information scattered)Tj +0 -1.2222 TD +0 Tw +(among them, all that is required to compile one file is to )Tj +/TT10 1 Tf +24.9258 0 TD +(LOADCOMP)Tj +/TT12 1 Tf +4.8008 0 TD +( the others.)Tj +/TT10 1 Tf +-32.3932 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADCOMP?)Tj +/TT19 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LDFLG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-25069([Function])]TJ +-9.8343 -1.8444 TD +0.2944 Tw +(Similar to )Tj +/TT10 1 Tf +5.1367 0 TD +0 Tw +(LOADCOMP)Tj +/TT12 1 Tf +4.8008 0 TD +0.2944 Tw +(, except it does not load if file has already been loaded \(with)Tj +/TT10 1 Tf +-9.9375 -1.2889 TD +0 Tw +(LOADCOMP)Tj +/TT12 1 Tf +4.8008 0 TD +(\), in which case its value is )Tj +/TT10 1 Tf +11.9795 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-18.5806 -2.0667 TD +(LOADCOMP?)Tj +/TT12 1 Tf +5.4009 0 TD +0.1167 Tw +[( will load the file even if it has been loaded with )]TJ +/TT10 1 Tf +22.8521 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6167 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1167 Tw +[(, etc. The)]TJ +-35.4708 -1.2889 TD +0 Tw +(only time it will not load the file is if the file has already been loaded with )Tj +/TT10 1 Tf +32.8335 0 TD +(LOADCOMP)Tj +/TT12 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-42.9676 -2.9556 TD +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +( provides an easy way for you to load a series of files, setting various options: )Tj +/TT10 1 Tf +-2.7342 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILESLOAD)Tj +/TT19 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-12942.1([NLambda NoSpread Function])]TJ +-12.4834 -2.0667 TD +0.0211 Tw +(Loads the files )Tj +/TT15 1 Tf +6.7098 0 TD +0 Tw +(FILE)Tj +2.4013 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.2711 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.2711 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0211 Tw +[( \(all arguments unevaluated\). If any of these arguments)]TJ +-15.0533 -1.5111 TD +0.1644 Tw +(are lists, they specify certain loading options for all following files \(unless changed by)Tj +0 -1.2222 TD +0 Tw +(another list\). Within these lists, the following commands are recognized:)Tj +/TT17 1 Tf +6.2167 -2.1489 TD +(FROM)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT21 1 Tf +0.25 0 TD +(DIR)Tj +/TT12 1 Tf +3.1329 0 TD +0.2778 Tw +(Search the specified directories for the file. )Tj +/TT15 1 Tf +21.4727 0 TD +0 Tw +(DIR)Tj +/TT12 1 Tf +1.8003 0 TD +0.2778 Tw +[( can)]TJ +-23.273 -1.2889 TD +0.2622 Tw +(either be a single directory, or a list of directories to)Tj +0 -1.2222 TD +0.2811 Tw +[(search in order. For example, )]TJ +/TT10 1 Tf +15.0553 0 TD +0.6744 Tw +(\(FILESLOAD \(FROM)Tj +-15.0553 -1.2889 TD +0.2944 Tw +({ERIS}SOURCES>\) ...\))Tj +/TT12 1 Tf +18.2974 0 TD +0.1233 Tw +[( will search the)]TJ +-18.2974 -1.2889 TD +0 Tw +(directory )Tj +/TT10 1 Tf +4.583 0 TD +({ERIS}SOURCES>)Tj +/TT12 1 Tf +14.4023 0 TD +0.29 Tw +[( for the files.)]TJ +-18.9853 -1.2889 TD +0.3833 Tw +(If this is not specified, the default is to search the)Tj +0 -1.2222 TD +0 Tw +(contents of )Tj +/TT10 1 Tf +5.0879 0 TD +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +( \(see Chapter 24\).)Tj +-11.689 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.2599 0 TD +(FROM)Tj +/TT12 1 Tf +2.4004 0 TD +0.34 Tw +[( is followed by the key word )]TJ +/TT10 1 Tf +15.2491 0 TD +0 Tw +(VALUEOF)Tj +/TT12 1 Tf +4.2007 0 TD +0.34 Tw +(, the)Tj +-23.1101 -1.2889 TD +0.02 Tw +(following word is evaluated, and the value is used as the)Tj +0 -1.2222 TD +0.1244 Tw +[(list of directories to search. For example, )]TJ +/TT10 1 Tf +19.3291 0 TD +0 Tw +(\(FILESLOAD)Tj +-19.3291 -1.2889 TD +0.1222 Tw +(\(FROM VALUEOF FOO\) ...\))Tj +/TT12 1 Tf +14.1689 0 TD +0.0511 Tw +[( will search the directory)]TJ +-14.1689 -1.2889 TD +0 Tw +(list that is the value of the variable )Tj +/TT10 1 Tf +15.4468 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +-17.2471 -2.0667 TD +0.2067 Tw +(As a special case, if )Tj +/TT15 1 Tf +9.7355 0 TD +0 Tw +(DIR)Tj +/TT12 1 Tf +1.8003 0 TD +0.2067 Tw +[( is a symbol, and the symbol)]TJ +/TT15 1 Tf +-11.5358 -1.2889 TD +0 Tw +(DIR)Tj +/TT10 1 Tf +1.8003 0 TD +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +0.0567 Tw +[( is bound, the value of this variable is)]TJ +-8.4014 -1.2889 TD +0.0856 Tw +[(used as the directory search list. For example, since the)]TJ +0 -1.2222 TD +0 Tw +(variable )Tj +/TT10 1 Tf +4.0542 0 TD +(LISPUSERSDIRECTORIES)Tj +/TT12 1 Tf +12.002 0 TD +0.23 Tw +[( \(see Chapter 24\) is)]TJ +-16.0562 -1.2889 TD +0.0311 Tw +(commonly used to contain a list of directories containing)Tj +0 -1.2222 TD +0.0878 Tw +("library" packages, )Tj +/TT10 1 Tf +8.7092 0 TD +0.2111 Tw +(\(FILESLOAD \(FROM LISPUSERS\))Tj +-8.7092 -1.2889 TD +0 Tw +(...\))Tj +/TT12 1 Tf +2.4004 0 TD +0.3644 Tw +[( can be used instead of )]TJ +/TT10 1 Tf +12.4533 0 TD +0.8756 Tw +(\(FILESLOAD \(FROM)Tj +-14.8537 -1.2222 TD +0 Tw +(VALUEOF LISPUSERSDIRECTORIES\) ...\))Tj +/TT12 1 Tf +0 -2.0667 TD +0.1567 Tw +(If a )Tj +/TT10 1 Tf +1.9833 0 TD +0 Tw +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +0.1567 Tw +[( is read and evaluated while loading a)]TJ +-7.3841 -1.2889 TD +0.0211 Tw +(file, and it doesnt contain a )Tj +/TT10 1 Tf +12.5974 0 TD +0 Tw +(FROM)Tj +/TT12 1 Tf +2.4004 0 TD +0.0211 Tw +[( expression, the default)]TJ +-14.9978 -1.2889 TD +0.3222 Tw +(is to search the directory containing the )Tj +/TT10 1 Tf +19.9338 0 TD +0 Tw +(FILESLOAD)Tj +/TT12 1 Tf +-19.9338 -1.2889 TD +1.0011 Tw +(expression before the value of )Tj +/TT10 1 Tf +18.4816 0 TD +0 Tw +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-25.0827 -1.2889 TD +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +0.1811 Tw +[( expressions can be dumped on files using)]TJ +-5.4009 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6372 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( file manager command.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +/TT21 37 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +39 0 obj +<< +/Length 5485 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-9)Tj +/TT17 1 Tf +-30.4333 60.4667 TD +(SOURCE)Tj +/TT12 1 Tf +4.9333 0 TD +0.3933 Tw +(Load the source version of the file rather than the)Tj +0 -1.2889 TD +0 Tw +(compiled version.)Tj +/TT17 1 Tf +-6.1333 -2.1489 TD +(COMPILED)Tj +/TT12 1 Tf +6.1333 0 TD +(Load the compiled version of the file.)Tj +0 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.0933 0 TD +(COMPILED)Tj +/TT12 1 Tf +4.8008 0 TD +0.1733 Tw +[( is specified, the compiled version will be)]TJ +-5.894 -1.2889 TD +0.0922 Tw +[(loaded, if it is found. The source will not be loaded. If)]TJ +0 -1.2222 TD +0 Tw +(neither )Tj +/TT10 1 Tf +3.4776 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0933 Tw +[( or )]TJ +/TT10 1 Tf +1.6276 0 TD +0 Tw +(COMPILED)Tj +/TT12 1 Tf +4.8008 0 TD +0.0933 Tw +[( is specified, the compiled)]TJ +-13.5066 -1.2889 TD +0.0567 Tw +(version of the file will be loaded if it is found, otherwise)Tj +0 -1.2222 TD +0 Tw +(the source will be loaded if it is found.)Tj +/TT17 1 Tf +-3.7333 -2.1489 TD +(LOAD)Tj +/TT12 1 Tf +3.7333 0 TD +0.1089 Tw +(Load the file by calling )Tj +/TT10 1 Tf +10.9077 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.1089 Tw +(, if it has not already been)Tj +-13.3081 -1.2889 TD +0.5433 Tw +[(loaded. This is the default unless )]TJ +/TT10 1 Tf +18.7985 0 TD +0 Tw +(LOADCOMP)Tj +/TT12 1 Tf +4.8008 0 TD +0.5433 Tw +[( or)]TJ +/TT10 1 Tf +-23.5992 -1.2889 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +( is specified.)Tj +-4.8008 -2.0667 TD +(If )Tj +/TT10 1 Tf +1.0744 0 TD +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.1544 Tw +[( is specified, )]TJ +/TT10 1 Tf +6.1308 0 TD +0 Tw +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +0.1544 Tw +[( considers that the file)]TJ +-15.0065 -1.2889 TD +0.0356 Tw +(has already been loaded if the root name of the file has a)Tj +0 -1.2222 TD +0 Tw +(non-)Tj +/TT10 1 Tf +2.043 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.6056 0 TD +(FILEDATES)Tj +/TT12 1 Tf +5.4009 0 TD +0.3556 Tw +[( property. This is a somewhat)]TJ +-9.8497 -1.2889 TD +0.3856 Tw +(different algorithm than )Tj +/TT10 1 Tf +12.0961 0 TD +0 Tw +(LOAD?)Tj +/TT12 1 Tf +3.0005 0 TD +0.3856 Tw +[( uses. In particular,)]TJ +/TT10 1 Tf +-15.0966 -1.2889 TD +0 Tw +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +0.1267 Tw +[( will not load a newer version of a file that)]TJ +-5.4009 -1.2889 TD +0 Tw +(has already been loaded.)Tj +/TT17 1 Tf +-6.1333 -2.1489 TD +(LOADCOMP)Tj +/TT12 1 Tf +6.1333 0 TD +0.54 Tw +(Load the file with )Tj +/TT10 1 Tf +10.242 0 TD +0 Tw +(LOADCOMP?)Tj +/TT12 1 Tf +5.4009 0 TD +0.54 Tw +[( rather than )]TJ +/TT10 1 Tf +7.0375 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-25.0808 -1.2889 TD +(Automatically implies )Tj +/TT10 1 Tf +10.0947 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT17 1 Tf +-19.8286 -2.2156 TD +(LOADFROM)Tj +/TT12 1 Tf +6.1333 0 TD +(Load the file with )Tj +/TT10 1 Tf +8.082 0 TD +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +( rather than )Tj +/TT10 1 Tf +5.4175 0 TD +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT17 1 Tf +-29.234 -2.2156 TD +(NIL)Tj +/TT10 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +1.2002 0 TD +(T)Tj +/TT10 1 Tf +0.6001 0 TD +(, )Tj +/TT17 1 Tf +1.2002 0 TD +(PROP)Tj +-1.8008 -1 TD +(ALLPROP)Tj +0 -1.2155 TD +(SYSLOAD)Tj +/TT12 1 Tf +5.5333 0 TD +0.1056 Tw +(The loading function is called with its )Tj +/TT15 1 Tf +17.6515 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.1056 Tw +[( argument)]TJ +-20.652 -1.2889 TD +0.0278 Tw +(set to the specified token. )Tj +/TT15 1 Tf +11.8468 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0278 Tw +[( affects the operation of)]TJ +-14.8473 -1.2889 TD +0.1167 Tw +(the loading functions by resetting )Tj +/TT10 1 Tf +15.6961 0 TD +0 Tw +(DFNFLG)Tj +/TT12 1 Tf +3.6006 0 TD +0.1167 Tw +[( \(see Chapter)]TJ +-19.2967 -1.2889 TD +0.0356 Tw +(10\) to )Tj +/TT15 1 Tf +2.7762 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0356 Tw +[( during the loading. If none of these tokens)]TJ +-5.7767 -1.2889 TD +0.0244 Tw +(are specified, the value of the variable )Tj +/TT10 1 Tf +17.1633 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0244 Tw +[( is used if it)]TJ +-20.1638 -1.2889 TD +0 Tw +(is bound, otherwise )Tj +/TT10 1 Tf +8.9658 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( is used.)Tj +/TT17 1 Tf +-16.2995 -2.2156 TD +(NOERROR)Tj +/TT12 1 Tf +5.5333 0 TD +(If )Tj +/TT10 1 Tf +0.9255 0 TD +(NOERROR)Tj +/TT12 1 Tf +4.2007 0 TD +0.0056 Tw +[( is specified, no error occurs when a file is not)]TJ +-5.1262 -1.2889 TD +0 Tw +(found. )Tj +-13.3333 -2.8889 TD +0.0956 Tw +(Each list determines how all further files in the lists are loaded, unless changed by another)Tj +0 -1.2222 TD +0 Tw +(list. The tokens above can be joined together in a single list. For example,)Tj +/TT10 1 Tf +6.6667 -1.9333 TD +(\(FILESLOAD \(LOADCOMP\) NET \(SYSLOAD FROM VALUEOF)Tj +0 -1.2222 TD +(NEWDIRECTORIES\) CJSYS\))Tj +/TT12 1 Tf +-6.6667 -2.9556 TD +0.0367 Tw +(will call )Tj +/TT10 1 Tf +3.8062 0 TD +0 Tw +(LOADCOMP?)Tj +/TT12 1 Tf +5.4009 0 TD +0.0367 Tw +[( to load the file )]TJ +/TT10 1 Tf +7.0344 0 TD +0 Tw +(NET)Tj +/TT12 1 Tf +1.8003 0 TD +0.0367 Tw +[( searching the value of )]TJ +/TT10 1 Tf +10.3904 0 TD +0 Tw +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +0.0367 Tw +(, and then call)Tj +/TT10 1 Tf +-35.0333 -1.2889 TD +0 Tw +(LOADCOMP?)Tj +/TT12 1 Tf +5.4009 0 TD +0.0878 Tw +[( to load the file )]TJ +/TT10 1 Tf +7.29 0 TD +0 Tw +(CJSYS)Tj +/TT12 1 Tf +3.0005 0 TD +0.0878 Tw +[( with )]TJ +/TT15 1 Tf +2.7088 0 TD +0 Tw +(LDFLG)Tj +/TT12 1 Tf +3.0005 0 TD +0.0878 Tw +[( set to )]TJ +/TT10 1 Tf +3.1144 0 TD +0 Tw +(SYSLOAD)Tj +/TT12 1 Tf +4.2007 0 TD +0.0878 Tw +(, searching the directory list)Tj +-28.7157 -1.2889 TD +0 Tw +(that is the value of the variable )Tj +/TT10 1 Tf +13.8647 0 TD +(NEWDIRECTORIES)Tj +/TT12 1 Tf +8.4014 0 TD +(.)Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +42 0 obj +<< +/Length 8091 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 162 569.54 Tm +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +( expressions can be dumped on files using the )Tj +/TT10 1 Tf +20.5454 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( file manager command.)Tj +/TT4 1 Tf +10 0 0 10 102 526.6 Tm +(Storing Files)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 523.89 m +558.01 523.89 l +S +BT +/TT10 1 Tf +9 0 0 9 150 506.94 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(MAKEFILE)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPTIONS)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REPRINTFNS)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCEFILE)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-11966.9([Function])]TJ +-22.9365 -1.8444 TD +0.3011 Tw +(Makes a new version of the file )Tj +/TT15 1 Tf +16.0995 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.3011 Tw +(, storing the information specified by )Tj +/TT15 1 Tf +18.4009 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(s)Tj +-39.3012 -1.2889 TD +0.6278 Tw +[(filecoms. Notices )]TJ +/TT15 1 Tf +9.9146 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.6278 Tw +[( if not previously noticed. Then, it adds )]TJ +/TT15 1 Tf +23.5265 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.6278 Tw +[( to)]TJ +/TT10 1 Tf +-38.2418 -1.2889 TD +0 Tw +(NOTLISTEDFILES)Tj +/TT12 1 Tf +8.4014 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(NOTCOMPILEDFILES)Tj +/TT12 1 Tf +9.6016 0 TD +(.)Tj +/TT15 1 Tf +-20.1958 -2.0667 TD +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2022 Tw +[( is a symbol or list of symbols which specify options. By specifying certain)]TJ +-4.2007 -1.2889 TD +0 Tw +(options, )Tj +/TT10 1 Tf +3.9326 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1167 Tw +[( can automatically compile or list )]TJ +/TT15 1 Tf +15.5906 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1167 Tw +[(. Note that if )]TJ +/TT15 1 Tf +6.6239 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1167 Tw +[( does not)]TJ +-35.7486 -1.2889 TD +0.0289 Tw +(contain any function definitions, it is not compiled even when )Tj +/TT15 1 Tf +27.9246 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0289 Tw +[( specifies )]TJ +/TT10 1 Tf +4.3234 0 TD +0 Tw +(C)Tj +/TT12 1 Tf +0.6001 0 TD +0.0289 Tw +[( or )]TJ +/TT10 1 Tf +1.4987 0 TD +0 Tw +(RC)Tj +/TT12 1 Tf +1.2002 0 TD +(.)Tj +-39.7477 -1.2889 TD +0.4222 Tw +(The options are spelling corrected using the list )Tj +/TT10 1 Tf +24.5506 0 TD +0 Tw +(MAKEFILEOPTIONS)Tj +/TT12 1 Tf +9.0015 0 TD +0.4222 Tw +[(. If spelling)]TJ +-33.5521 -1.2889 TD +0 Tw +(correction fails, )Tj +/TT10 1 Tf +7.0366 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +( generates an error. The options are interpreted as follows:)Tj +/TT17 1 Tf +-3.7707 -2.2156 TD +(C)Tj +-0.6 -1.2156 TD +(RC)Tj +/TT12 1 Tf +2.5333 0 TD +0.0622 Tw +(After making )Tj +/TT15 1 Tf +6.3036 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5622 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0622 Tw +[( will compile )]TJ +/TT15 1 Tf +6.1784 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0622 Tw +[( by calling)]TJ +/TT10 1 Tf +-22.6458 -1.2889 TD +0 Tw +(TCOMPL)Tj +/TT12 1 Tf +3.6006 0 TD +0.0922 Tw +[( \(if )]TJ +/TT10 1 Tf +1.6415 0 TD +0 Tw +(C)Tj +/TT12 1 Tf +0.6001 0 TD +0.0922 Tw +[( is specified\) or )]TJ +/TT10 1 Tf +7.3103 0 TD +0 Tw +(RECOMPILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0922 Tw +[( \(if )]TJ +/TT10 1 Tf +1.6415 0 TD +0 Tw +(RC)Tj +/TT12 1 Tf +1.2002 0 TD +0.0922 Tw +[( is specified\).)]TJ +-21.395 -1.2889 TD +0.1611 Tw +(If there are any block declarations specified in the filecoms)Tj +0 -1.2222 TD +0 Tw +(for )Tj +/TT15 1 Tf +1.5239 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(BCOMPL)Tj +/TT12 1 Tf +3.6006 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(BRECOMPILE)Tj +/TT12 1 Tf +6.001 0 TD +( will be called instead.)Tj +-15.4668 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9399 0 TD +(F)Tj +/TT12 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.52 0 TD +(ST)Tj +/TT12 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.52 0 TD +(STF)Tj +/TT12 1 Tf +1.8003 0 TD +0.02 Tw +(, or )Tj +/TT10 1 Tf +1.7309 0 TD +0 Tw +(S)Tj +/TT12 1 Tf +0.6001 0 TD +0.02 Tw +[( is the )]TJ +/TT8 1 Tf +2.9121 0 TD +0 Tw +(next)Tj +/TT12 1 Tf +1.7783 0 TD +0.02 Tw +[( item on )]TJ +/TT15 1 Tf +3.9169 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.02 Tw +[( following )]TJ +/TT10 1 Tf +4.81 0 TD +0 Tw +(C)Tj +/TT12 1 Tf +0.6001 0 TD +0.02 Tw +[( or)]TJ +/TT10 1 Tf +-26.1296 -1.2889 TD +0 Tw +(RC)Tj +/TT12 1 Tf +1.2002 0 TD +0.0389 Tw +(, it is given to the compiler as the answer to the compilers)Tj +-1.2002 -1.2889 TD +0 Tw +(question )Tj +/TT10 1 Tf +4.6033 0 TD +(LISTING?)Tj +/TT12 1 Tf +4.8008 0 TD +0.5422 Tw +[( \(see Chapter 18\). For example,)]TJ +/TT10 1 Tf +-9.404 -1.2889 TD +0.3011 Tw +(\(MAKEFILE FOO \(C F LIST\)\))Tj +/TT12 1 Tf +17.4071 0 TD +0.1256 Tw +[( will dump )]TJ +/TT10 1 Tf +5.5315 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.1256 Tw +(, then)Tj +/TT10 1 Tf +-24.7388 -1.2889 TD +0 Tw +(TCOMPL)Tj +/TT12 1 Tf +3.6006 0 TD +0.0922 Tw +[( or )]TJ +/TT10 1 Tf +1.6254 0 TD +0 Tw +(BCOMPL)Tj +/TT12 1 Tf +3.6006 0 TD +0.0922 Tw +[( it specifying that functions are not to be)]TJ +-8.8265 -1.2889 TD +0 Tw +(redefined, and finally list the file.)Tj +/TT17 1 Tf +-3.7333 -2.1489 TD +(LIST)Tj +/TT12 1 Tf +3.7333 0 TD +0.1611 Tw +(After making )Tj +/TT15 1 Tf +6.5014 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6611 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1611 Tw +[( calls )]TJ +/TT10 1 Tf +2.7719 0 TD +0 Tw +(LISTFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.1611 Tw +[( to print a)]TJ +-22.5365 -1.4378 TD +0 Tw +(hardcopy listing of )Tj +/TT8 1 Tf +8.625 0 TD +(FILE)Tj +/TT6 1 Tf +10 0 0 10 360.1303 228.18 Tm +(.)Tj +/TT17 1 Tf +9 0 0 9 208.8 208.84 Tm +(CLISPIFY)Tj +/TT10 1 Tf +6.1333 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.22 Tw +[( calls )]TJ +/TT10 1 Tf +2.8897 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.22 Tw +[( with )]TJ +/TT10 1 Tf +2.9732 0 TD +0 Tw +(CLISPIFYPRETTYFLG)Tj +/TT12 1 Tf +10.2017 0 TD +( )Tj +/TT10 1 Tf +0.47 0 TD +(=)Tj +-26.7362 -1.2889 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.1689 Tw +[( \(see Chapter 21\). This causes )]TJ +/TT10 1 Tf +14.6056 0 TD +0 Tw +(CLISPIFY)Tj +/TT12 1 Tf +4.8008 0 TD +0.1689 Tw +[( to be called on)]TJ +-20.0064 -1.2889 TD +0 Tw +(each function defined as an )Tj +/TT10 1 Tf +12.3535 0 TD +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +( before it is prettyprinted.)Tj +-14.7539 -2.0667 TD +0.0167 Tw +(Alternatively, if )Tj +/TT15 1 Tf +7.2667 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0167 Tw +[( has the property )]TJ +/TT10 1 Tf +7.8591 0 TD +0 Tw +(FILETYPE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0167 Tw +[( with value)]TJ +/TT10 1 Tf +-22.3271 -1.2889 TD +0 Tw +(CLISP)Tj +/TT12 1 Tf +3.0005 0 TD +0.0656 Tw +[( or a list containing )]TJ +/TT10 1 Tf +9.0509 0 TD +0 Tw +(CLISP)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.0656 Tw +[( is called with)]TJ +/TT10 1 Tf +-21.0183 -1.2889 TD +0 Tw +(CLISPIFYPRETTYFLG)Tj +/TT12 1 Tf +10.2017 0 TD +0.2189 Tw +[( reset to )]TJ +/TT10 1 Tf +4.3818 0 TD +0 Tw +(CHANGES)Tj +/TT12 1 Tf +4.2007 0 TD +0.2189 Tw +(, which will cause)Tj +/TT10 1 Tf +-18.7841 -1.2889 TD +0 Tw +(CLISPIFY)Tj +/TT12 1 Tf +4.8008 0 TD +0.2222 Tw +[( to be called on all functions marked as having)]TJ +-4.8008 -1.2889 TD +0.1378 Tw +[(been changed. If )]TJ +/TT15 1 Tf +8.3182 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1378 Tw +[( has property )]TJ +/TT10 1 Tf +6.5686 0 TD +0 Tw +(FILETYPE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1378 Tw +[( with value)]TJ +/TT10 1 Tf +-22.088 -1.2889 TD +0 Tw +(CLISP)Tj +/TT12 1 Tf +3.0005 0 TD +0.45 Tw +(, the compiler will )Tj +/TT10 1 Tf +10.0739 0 TD +0 Tw +(DWIMIFY)Tj +/TT12 1 Tf +4.2007 0 TD +0.45 Tw +[( its functions before)]TJ +-17.2751 -1.2889 TD +0 Tw +(compiling them \(see Chapter 18\).)Tj +/TT17 1 Tf +-3.7333 -2.1489 TD +(FAST)Tj +/TT10 1 Tf +3.7333 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1822 Tw +[( calls )]TJ +/TT10 1 Tf +2.8142 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.1822 Tw +[( with )]TJ +/TT10 1 Tf +2.8977 0 TD +0 Tw +(PRETTYFLG)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT10 1 Tf +0.4322 0 TD +0.4378 Tw +(= NIL)Tj +/TT12 1 Tf +3.4383 0 TD +0.1822 Tw +[( \(see)]TJ +-25.1848 -1.2889 TD +0.2056 Tw +[(Chapter 26\). This causes data objects to be printed rather)]TJ +0 -1.2222 TD +0 Tw +(than prettyprinted, which is much faster.)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +45 0 obj +<< +/Length 7326 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-11)Tj +/TT17 1 Tf +-31.9333 60.4667 TD +(REMAKE)Tj +/TT10 1 Tf +4.9333 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0567 Tw +[( "remakes" )]TJ +/TT15 1 Tf +5.0713 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0567 Tw +[(: The prettyprinted definitions of)]TJ +-12.2725 -1.2889 TD +0.1633 Tw +(functions that have not changed are copied from an earlier)Tj +0 -1.2222 TD +0.1089 Tw +[(version of the symbolic file. Only those functions that have)]TJ +T* +0 Tw +(changed are prettyprinted. )Tj +/TT17 1 Tf +-3.1333 -2.1489 TD +(NEW)Tj +/TT10 1 Tf +3.1333 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0822 Tw +[( does )]TJ +/TT8 1 Tf +2.724 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0822 Tw +[( remake )]TJ +/TT15 1 Tf +3.9564 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0822 Tw +[(. If )]TJ +/TT10 1 Tf +1.9166 0 TD +0 Tw +(MAKEFILEREMAKEFLG)Tj +-17.1312 -1.2889 TD +0.1289 Tw +(= T)Tj +/TT12 1 Tf +1.9292 0 TD +0.0533 Tw +[( \(the initial setting\), the default for all calls to )]TJ +/TT10 1 Tf +20.6012 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +-22.5304 -1.2889 TD +0.1589 Tw +[(is to remake. The )]TJ +/TT10 1 Tf +8.8472 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.1589 Tw +[( option can be used to override this)]TJ +-10.6475 -1.2889 TD +0 Tw +(default.)Tj +/TT15 1 Tf +0 -2 TD +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +0.1678 Tw +[( and )]TJ +/TT15 1 Tf +2.5284 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.1678 Tw +[( are used when remaking a)]TJ +-14.5304 -1.2889 TD +0 Tw +(file.)Tj +/TT15 1 Tf +0 -2 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1478 Tw +[( is not added to )]TJ +/TT10 1 Tf +7.8414 0 TD +0 Tw +(NOTLISTEDFILES)Tj +/TT12 1 Tf +8.4014 0 TD +0.1478 Tw +[( if )]TJ +/TT15 1 Tf +1.4196 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1478 Tw +[( has on its)]TJ +-22.4632 -1.2889 TD +0.0211 Tw +(property list the property )Tj +/TT10 1 Tf +11.6025 0 TD +0 Tw +(FILETYPE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0211 Tw +[( with value )]TJ +/TT10 1 Tf +5.2845 0 TD +0 Tw +(DONTLIST)Tj +/TT12 1 Tf +5.4009 0 TD +(,)Tj +-27.0887 -1.2889 TD +0.3456 Tw +(or a list containing )Tj +/TT10 1 Tf +9.8554 0 TD +0 Tw +(DONTLIST)Tj +/TT12 1 Tf +5.4009 0 TD +0.3456 Tw +(. )Tj +/TT15 1 Tf +1.4411 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.3456 Tw +[( is not added to)]TJ +/TT10 1 Tf +-19.0977 -1.2889 TD +0 Tw +(NOTCOMPILEDFILES)Tj +/TT12 1 Tf +9.6016 0 TD +0.3022 Tw +[( if )]TJ +/TT15 1 Tf +1.7285 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.3022 Tw +[( has on its property list the)]TJ +-13.7304 -1.2889 TD +0 Tw +(property )Tj +/TT10 1 Tf +4.4627 0 TD +(FILETYPE)Tj +/TT12 1 Tf +4.8008 0 TD +0.3133 Tw +[( with value )]TJ +/TT10 1 Tf +6.1612 0 TD +0 Tw +(DONTCOMPILE)Tj +/TT12 1 Tf +7.2012 0 TD +0.3133 Tw +(, or a list)Tj +-22.6259 -1.2889 TD +0 Tw +(containing )Tj +/TT10 1 Tf +5.0858 0 TD +(DONTCOMPILE)Tj +/TT12 1 Tf +7.2012 0 TD +0.1356 Tw +[(. Also, if )]TJ +/TT15 1 Tf +4.7048 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1356 Tw +[( does not contain)]TJ +-19.3921 -1.2889 TD +1.2522 Tw +(any function definitions, it is not added to)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(NOTCOMPILEDFILES)Tj +/TT12 1 Tf +9.6016 0 TD +0.3611 Tw +(, and it is not compiled even when)Tj +/TT15 1 Tf +-9.6016 -1.2889 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +( specifies )Tj +/TT10 1 Tf +4.2656 0 TD +(C)Tj +/TT12 1 Tf +0.6001 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(RC)Tj +/TT12 1 Tf +1.2002 0 TD +(.)Tj +-23.0409 -2.9556 TD +0.0222 Tw +(If a remake is )Tj +/TT8 1 Tf +6.2656 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0222 Tw +[( being performed, )]TJ +/TT10 1 Tf +8.2498 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0222 Tw +[( checks the state of )]TJ +/TT15 1 Tf +8.6111 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( to make sure that the)]TJ +-31.6607 -1.2889 TD +0.1233 Tw +(entire source file was actually )Tj +/TT10 1 Tf +13.9726 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.1233 Tw +[(ed. If )]TJ +/TT15 1 Tf +3.1298 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1233 Tw +[( was loaded as a compiled file, )]TJ +/TT10 1 Tf +14.6221 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +-36.5253 -1.2889 TD +0.1167 Tw +(prints the message )Tj +/TT10 1 Tf +8.851 0 TD +0.2789 Tw +(CANT DUMP: ONLY THE COMPILED FILE HAS BEEN LOADED)Tj +/TT12 1 Tf +32.236 0 TD +0 Tw +(.)Tj +-41.087 -1.2889 TD +0.0844 Tw +(Similarly, if only some of the symbolic definitions were loaded via )Tj +/TT10 1 Tf +30.4728 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0844 Tw +[( or )]TJ +/TT10 1 Tf +1.6098 0 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +(,)Tj +/TT10 1 Tf +-41.0841 -1.2889 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0233 Tw +[( prints )]TJ +/TT10 1 Tf +3.1658 0 TD +0.0556 Tw +(CANT DUMP: ONLY SOME OF ITS SYMBOLICS HAVE BEEN)Tj +/TT19 1 Tf +29.2491 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2733 0 TD +(LOADED)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +-41.0896 -1.2889 TD +0.2633 Tw +(In both cases, )Tj +/TT10 1 Tf +6.9868 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.2633 Tw +[( will then ask you if it should dump anyway; if you decline,)]TJ +/TT10 1 Tf +-11.7876 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +( does not call )Tj +/TT10 1 Tf +6.0396 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +(, but simply returns )Tj +/TT10 1 Tf +8.9824 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NOT DUMPED\))Tj +/TT12 1 Tf +6.6011 0 TD +( as its value.)Tj +-35.0752 -2.9556 TD +0.1456 Tw +(You can indicate that )Tj +/TT15 1 Tf +10.1823 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1456 Tw +[( must be block compiled together with other files as a unit by)]TJ +-12.5827 -1.2889 TD +0.02 Tw +(putting a list of those files on the property list of each file under the property )Tj +/TT10 1 Tf +34.4723 0 TD +0 Tw +(FILEGROUP)Tj +/TT12 1 Tf +5.4009 0 TD +0.02 Tw +[(. If)]TJ +/TT15 1 Tf +-39.8732 -1.2889 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.25 Tw +[( has a )]TJ +/TT10 1 Tf +3.5059 0 TD +0 Tw +(FILEGROUP)Tj +/TT12 1 Tf +5.4009 0 TD +0.25 Tw +[( property, the compiler will not be called until all files on this)]TJ +-11.3071 -1.2889 TD +0 Tw +(property have been dumped that need to be.)Tj +/TT10 1 Tf +0 -2.8889 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +1.74 Tw +[( operates by rebinding )]TJ +/TT10 1 Tf +17.1597 0 TD +0 Tw +(PRETTYFLG)Tj +/TT12 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +2.24 0 TD +(PRETTYTRANFLG)Tj +/TT12 1 Tf +7.8013 0 TD +1.74 Tw +(, and)Tj +/TT10 1 Tf +-37.4026 -1.4378 TD +0 Tw +(CLISPIFYPRETTYFLG)Tj +/TT12 1 Tf +10.2017 0 TD +0.3133 Tw +(, evaluating each expression on )Tj +/TT10 1 Tf +15.6297 0 TD +0 Tw +(MAKEFILEFORMS)Tj +/TT6 1 Tf +10 0 0 10 416.6933 144.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 422.9516 144.12 Tm +0.3133 Tw +(\(under errorset)Tj +-34.328 -1.2889 TD +0 Tw +(protection\), and then calling )Tj +/TT10 1 Tf +12.7363 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-18.1372 -2.9556 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.0311 Tw +[( calls )]TJ +/TT10 1 Tf +2.5119 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.0311 Tw +[( with its second argument )]TJ +/TT15 1 Tf +11.8894 0 TD +0 Tw +(PRETTYDEFLG)Tj +/TT12 1 Tf +6.6011 0 TD +( )Tj +/TT10 1 Tf +0.2811 0 TD +0.0733 Tw +(= T)Tj +/TT12 1 Tf +1.8736 0 TD +0.0311 Tw +(, so whenever)Tj +/TT10 1 Tf +-35.1591 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.3011 Tw +[( \(and hence )]TJ +/TT10 1 Tf +6.2451 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.3011 Tw +(\) start printing a new function, the name of that)Tj +-17.647 -1.2889 TD +0.1644 Tw +(function is printed if more than 30 seconds \(real time\) have elapsed since the last time it)Tj +0 -1.2222 TD +0 Tw +(printed the name of a function.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +50 0 obj +<< +/Length 7597 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(MAKEFILES)Tj +/TT19 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPTIONS)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILES)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-23268.7([Function])]TJ +-11.6346 -1.8444 TD +(Performs )Tj +/TT10 1 Tf +4.3886 0 TD +(\(MAKEFILE)Tj +/TT19 1 Tf +5.4009 0 TD +( )Tj +/TT15 1 Tf +0.33 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.33 0 TD +(OPTIONS)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.08 Tw +[( for each file on )]TJ +/TT15 1 Tf +7.4508 0 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.08 Tw +[( that needs to be dumped.)]TJ +-28.1019 -1.2889 TD +0 Tw +(If )Tj +/TT15 1 Tf +0.9966 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.3267 0 TD +0.1833 Tw +(= NIL)Tj +/TT12 1 Tf +3.1838 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.0767 Tw +[( is used. For example, )]TJ +/TT10 1 Tf +10.5376 0 TD +0.1833 Tw +(\(MAKEFILES LIST\))Tj +/TT12 1 Tf +10.385 0 TD +0.0767 Tw +[( will make and)]TJ +-33.2076 -1.2889 TD +0.1189 Tw +[(list all files that have been changed. In this case, if any typed definitions for any items)]TJ +0 -1.2222 TD +0.0533 Tw +(have been defined or changed and they are )Tj +/TT8 1 Tf +19.7367 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0533 Tw +[( contained in one of the files on )]TJ +/TT10 1 Tf +14.4794 0 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +(,)Tj +/TT10 1 Tf +-39.7498 -1.2889 TD +(MAKEFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.1833 Tw +[( calls )]TJ +/TT10 1 Tf +2.8164 0 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.1833 Tw +[( to allow you to specify where these go. )]TJ +/TT10 1 Tf +19.7835 0 TD +0 Tw +(MAKEFILES)Tj +/TT12 1 Tf +-34.6019 -1.2889 TD +(returns a list of all files that are made.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLEANUP)Tj +/TT19 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-10892.1([NLambda NoSpread Function])]TJ +-14.5334 -2.0667 TD +0.0178 Tw +(Dumps, lists, and recompiles \(with )Tj +/TT10 1 Tf +15.771 0 TD +0 Tw +(RECOMPILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0178 Tw +[( or )]TJ +/TT10 1 Tf +1.4765 0 TD +0 Tw +(BRECOMPILE)Tj +/TT12 1 Tf +6.001 0 TD +0.0178 Tw +(\) any of the specified files)Tj +-28.6493 -1.2889 TD +0.0144 Tw +[(\(unevaluated\) requiring the corresponding operation. If no files are specified, )]TJ +/TT10 1 Tf +34.8137 0 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.0144 Tw +[( is)]TJ +-39.0144 -1.2889 TD +0 Tw +(used. )Tj +/TT10 1 Tf +2.8667 0 TD +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-12.5718 -2.0667 TD +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0911 Tw +[( uses the value of the variable )]TJ +/TT10 1 Tf +13.983 0 TD +0 Tw +(CLEANUPOPTIONS)Tj +/TT12 1 Tf +8.4014 0 TD +0.0911 Tw +[( as the )]TJ +/TT15 1 Tf +3.3344 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0911 Tw +[( argument to)]TJ +/TT10 1 Tf +-34.1201 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.2789 Tw +(. )Tj +/TT10 1 Tf +1.3078 0 TD +0 Tw +(CLEANUPOPTIONS)Tj +/TT12 1 Tf +8.4014 0 TD +0.2789 Tw +[( is initially )]TJ +/TT10 1 Tf +5.7209 0 TD +0 Tw +(\(RC\))Tj +/TT12 1 Tf +2.4004 0 TD +0.2789 Tw +(, to indicate that the files should be)Tj +-22.6313 -1.2889 TD +0.0656 Tw +[(recompiled. If )]TJ +/TT10 1 Tf +6.8861 0 TD +0 Tw +(CLEANUPOPTIONS)Tj +/TT12 1 Tf +8.4014 0 TD +0.0656 Tw +[( is set to )]TJ +/TT10 1 Tf +4.0781 0 TD +0.1567 Tw +(\(RC F\))Tj +/TT12 1 Tf +3.7573 0 TD +0.0656 Tw +(, no listing will be performed, and no)Tj +-23.1229 -1.2889 TD +0.08 Tw +[(functions will be redefined as the result of compiling. Alternatively, if )]TJ +/TT15 1 Tf +32.2662 0 TD +0 Tw +(FILE)Tj +2.4038 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.08 Tw +[( is a list, it)]TJ +-35.27 -1.5111 TD +0 Tw +(will be interpreted as the list of options regardless of the value of )Tj +/TT10 1 Tf +28.9282 0 TD +(CLEANUPOPTIONS)Tj +/TT12 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-39.9963 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILES?)Tj +/TT10 1 Tf +3.5999 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 193.2009 342.8 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 342.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0722 Tw +(Prints on the terminal the names of those files that have been modified but not dumped,)Tj +0 -1.2222 TD +0.1044 Tw +(dumped but not listed, dumped but not compiled, plus the names of any functions and)Tj +T* +0.0178 Tw +[(other typed definitions \(if any\) that are not contained in any file. If there are any, )]TJ +/TT10 1 Tf +36.4096 0 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +-36.4096 -1.2889 TD +(then calls )Tj +/TT10 1 Tf +4.4189 0 TD +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +( to allow you to specify where these go.)Tj +/TT10 1 Tf +-13.6867 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADDTOFILES?)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.6001 0 TD +()Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 236.4035 269.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 269.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1489 Tw +(Called from )Tj +/TT10 1 Tf +5.8354 0 TD +0 Tw +(MAKEFILES)Tj +/TT12 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.6489 0 TD +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.1489 Tw +(, and )Tj +/TT10 1 Tf +2.7406 0 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +0.1489 Tw +[( when there are typed definitions that)]TJ +-22.4271 -1.2889 TD +0.1122 Tw +(have been marked as changed which do not belong to any file. )Tj +/TT10 1 Tf +29.5351 0 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.1122 Tw +[( lists the)]TJ +-36.1361 -1.2889 TD +0.0456 Tw +(names of the changed items, and asks if you want to specify where these items should be)Tj +0 -1.2222 TD +0.13 Tw +[(put. If you answer )]TJ +/TT10 1 Tf +9.2691 0 TD +0 Tw +(N)Tj +/TT12 1 Tf +0.6001 0 TD +(\(o\), )Tj +/TT10 1 Tf +1.8419 0 TD +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.13 Tw +[( returns )]TJ +/TT10 1 Tf +3.9641 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.13 Tw +[( without taking any action. If you)]TJ +-24.0766 -1.2889 TD +0 Tw +(answer )Tj +/TT10 1 Tf +3.5272 0 TD +(])Tj +/TT12 1 Tf +0.6001 0 TD +0.0633 Tw +(, this is taken to be an answer to each question that would be asked, and all the)Tj +-4.1273 -1.2889 TD +0.1767 Tw +[(changed items are marked as dummy items to be ignored. Otherwise, )]TJ +/TT10 1 Tf +33.3973 0 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +-33.3973 -1.2889 TD +(prints the name of each changed item, and accepts one of the following responses:)Tj +5.55 -2 TD +(A file name)Tj +1.2344 -1.2222 TD +0.0467 Tw +[(A )46.7(filevar)-1333.7(If you give a file name or a variable whose value is a list)]TJ +5.2156 -1.2222 TD +0.0622 Tw +(\(a filevar\), the item is added to the corresponding file or)Tj +T* +0 Tw +(list, using )Tj +/TT10 1 Tf +4.5381 0 TD +(ADDTOFILE)Tj +/TT12 1 Tf +5.4009 0 TD +(.)Tj +-9.939 -2.0667 TD +0.0489 Tw +(If your response is not the name of a file on )Tj +/TT10 1 Tf +19.8884 0 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.0489 Tw +[( or)]TJ +-24.0891 -1.2889 TD +0.3644 Tw +(a variable whose value is a list, you will be asked)Tj +0 -1.2222 TD +0.5756 Tw +[(whether it is a new file. If you say no, then)]TJ +/TT10 1 Tf +T* +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.1167 Tw +[( will check whether the item is the name)]TJ +-6.6011 -1.2889 TD +0.0411 Tw +[(of a list, i.e., whether its value is a list. If not, youwill be)]TJ +0 -1.2222 TD +0 Tw +(asked whether it is a new list.)Tj +ET +endstream +endobj +51 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +53 0 obj +<< +/Length 5646 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-13)Tj +/TT12 1 Tf +-30.2122 60.6156 TD +[(line-feed)-1334.3(Same as your previous response.)]TJ +1.43 -2 TD +(space)Tj +-4.1433 -1 TD +[(carriage return)-1335.2(Take no action.)]TJ +/TT17 1 Tf +5.9922 -2.1489 TD +(])Tj +/TT12 1 Tf +1.9333 0 TD +0.1911 Tw +(The item is marked as a dummy item by adding it to)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(NILCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1633 Tw +[(. This tells the file manager simply to ignore)]TJ +-4.2007 -1.2889 TD +0 Tw +(this item.)Tj +/TT17 1 Tf +-1.9333 -2.1489 TD +([)Tj +/TT12 1 Tf +1.9333 0 TD +0.1211 Tw +(The "definition" of the item in question is prettyprinted)Tj +0 -1.2889 TD +0.1267 Tw +(to the terminal, and then you are asked again about its)Tj +0 -1.2222 TD +0 Tw +(disposition.)Tj +/TT17 1 Tf +-1.9333 -2.1489 TD +(\()Tj +/TT10 1 Tf +1.9333 0 TD +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.0567 Tw +[( prompts with ")]TJ +/TT10 1 Tf +7.1002 0 TD +0.1344 Tw +(LISTNAME: \()Tj +/TT12 1 Tf +6.7355 0 TD +0.0567 Tw +(", you type)Tj +-20.4368 -1.2889 TD +0.0744 Tw +(in the name of a list, i.e. a variable whose value is a list,)Tj +0 -1.2222 TD +0.0822 Tw +(terminated by a )Tj +/TT10 1 Tf +7.4781 0 TD +0 Tw +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0822 Tw +[(. The item will then only be added to)]TJ +-8.0782 -1.2889 TD +0.0233 Tw +(\(under\) a command in which the named list appears as a)Tj +0 -1.2222 TD +0.0389 Tw +[(filevar. If none are found, a message is printed, and you)]TJ +T* +0.0133 Tw +[(are asked again. For example, you define a new function)]TJ +/TT10 1 Tf +T* +0 Tw +(FOO3)Tj +/TT12 1 Tf +2.4004 0 TD +0.1389 Tw +(. When asked where it goes, you type )Tj +/TT10 1 Tf +17.8826 0 TD +0 Tw +(\(FOOFNS\))Tj +/TT12 1 Tf +4.8008 0 TD +(.)Tj +-25.0838 -1.2889 TD +0.0789 Tw +(If the command )Tj +/TT10 1 Tf +7.492 0 TD +0.1889 Tw +(\(FNS * FOOFNS\))Tj +/TT12 1 Tf +8.7791 0 TD +0.0789 Tw +[( is found, )]TJ +/TT10 1 Tf +4.6263 0 TD +0 Tw +(FOO3)Tj +/TT12 1 Tf +2.4004 0 TD +0.0789 Tw +[( will)]TJ +-23.2979 -1.2889 TD +0.16 Tw +(be added to the value of )Tj +/TT10 1 Tf +11.8799 0 TD +0 Tw +(FOOFNS)Tj +/TT12 1 Tf +3.6006 0 TD +0.16 Tw +[(. If instead you type)]TJ +/TT10 1 Tf +-15.4805 -1.2889 TD +0 Tw +(\(FOOCOMS\))Tj +/TT12 1 Tf +5.4009 0 TD +0.06 Tw +(, and the command )Tj +/TT10 1 Tf +9.0183 0 TD +0.1444 Tw +(\(COMS * FOOCOMS\))Tj +/TT12 1 Tf +9.8904 0 TD +0.06 Tw +[( is)]TJ +-24.3097 -1.2889 TD +0.3489 Tw +(found, then )Tj +/TT10 1 Tf +6.0918 0 TD +0 Tw +(FOO3)Tj +/TT12 1 Tf +2.4004 0 TD +0.3489 Tw +[( will be added to a command for)]TJ +-8.4922 -1.2889 TD +0 Tw +(dumping functions that is contained in )Tj +/TT10 1 Tf +17.4409 0 TD +(FOOCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +(. )Tj +-21.6416 -2.0667 TD +0.1244 Tw +(If the named list is not also the name of a file, you can)Tj +0 -1.2222 TD +0 Tw +(simply type it in without parenthesis as described above.)Tj +/TT17 1 Tf +-1.9333 -2 TD +(@)Tj +/TT10 1 Tf +1.9333 0 TD +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.0056 Tw +[( prompts with ")]TJ +/TT10 1 Tf +6.9468 0 TD +0.0144 Tw +(Near: \()Tj +/TT12 1 Tf +4.2151 0 TD +0.0056 Tw +(", you type in the)Tj +-17.763 -1.2889 TD +0.24 Tw +(name of an object, and the item is then inserted in a)Tj +0 -1.2222 TD +0.0622 Tw +(command for dumping objects \(of its type\) that contains)Tj +T* +0.1967 Tw +[(the indicated name. The item is inserted immediately)]TJ +T* +0 Tw +(after the indicated name.)Tj +/TT10 1 Tf +-14.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LISTFILES)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.399 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 273.0017 198.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 359.33 198.98 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0667 TD +0.0778 Tw +[(Lists each of the specified files \(unevaluated\). If no files are given, )]TJ +/TT10 1 Tf +30.5463 0 TD +0 Tw +(NOTLISTEDFILES)Tj +/TT12 1 Tf +8.4014 0 TD +0.0778 Tw +[( is)]TJ +-38.9476 -1.2889 TD +0.0533 Tw +[(used. Each file listed is removed from )]TJ +/TT10 1 Tf +17.5751 0 TD +0 Tw +(NOTLISTEDFILES)Tj +/TT12 1 Tf +8.4014 0 TD +0.0533 Tw +[( if the listing is completed. For)]TJ +-25.9765 -1.2889 TD +0.0067 Tw +(each file not found, )Tj +/TT10 1 Tf +8.8045 0 TD +0 Tw +(LISTFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.0067 Tw +[( prints the message )]TJ +/TT15 1 Tf +8.7776 0 TD +0 Tw +(FILENAME)Tj +/TT10 1 Tf +4.8008 0 TD +0.0156 Tw +[( NOT FOUND)]TJ +/TT12 1 Tf +6.0321 0 TD +0.0067 Tw +[( and proceeds)]TJ +-33.8159 -1.2889 TD +0 Tw +(to the next file.)Tj +/TT10 1 Tf +0 -2 TD +(LISTFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.4089 Tw +[( calls the function )]TJ +/TT10 1 Tf +9.6795 0 TD +0 Tw +(LISTFILES1)Tj +/TT12 1 Tf +6.001 0 TD +0.4089 Tw +[( on each file to be listed. Normally,)]TJ +/TT10 1 Tf +-21.0814 -1.2889 TD +0 Tw +(LISTFILES1)Tj +/TT12 1 Tf +6.001 0 TD +0.1578 Tw +[( is defined to simply call )]TJ +/TT10 1 Tf +11.9911 0 TD +0 Tw +(SEND.FILE.TO.PRINTER)Tj +/TT12 1 Tf +12.002 0 TD +0.1578 Tw +[( \(see Chapter 29\), but)]TJ +-29.994 -1.2889 TD +0 Tw +(you can advise or redefine )Tj +/TT10 1 Tf +11.9404 0 TD +(LISTFILES1)Tj +/TT12 1 Tf +6.001 0 TD +( for more specialized applications.)Tj +-17.9414 -2.0667 TD +0.0678 Tw +(Any lists inside the argument list to )Tj +/TT10 1 Tf +16.4896 0 TD +0 Tw +(LISTFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.0678 Tw +[( are interpreted as property lists that set)]TJ +-21.8905 -1.2889 TD +0.0233 Tw +(the various printing options, such as the printer, number of copies, banner page name, etc)Tj +0 -1.2222 TD +0 Tw +(\(see see Chapter 29\). Later properties override earlier ones. For example,)Tj +/TT10 1 Tf +5.3333 -1.9333 TD +(\(LISTFILES FOO \(HOST JEDI\) FUM \(#COPIES 3\) FIE\))Tj +ET +endstream +endobj +54 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +56 0 obj +<< +/Length 8537 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +0.0511 Tw +(will cause one copy of )Tj +/TT10 1 Tf +10.2951 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0511 Tw +[( to be printed on the default printer, and one copy of )]TJ +/TT10 1 Tf +24.106 0 TD +0 Tw +(FUM)Tj +/TT12 1 Tf +1.8003 0 TD +0.0511 Tw +[( and)]TJ +-38.0017 -1.2889 TD +0 Tw +(three copies of )Tj +/TT10 1 Tf +6.6748 0 TD +(FIE)Tj +/TT12 1 Tf +1.8003 0 TD +( to be printed on the printer )Tj +/TT10 1 Tf +12.5239 0 TD +(JEDI)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-26.0661 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(COMPILEFILES)Tj +/TT12 1 Tf +7.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 331.8008 535 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 407.33 535 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0667 TD +0.0689 Tw +(Executes the )Tj +/TT10 1 Tf +5.9068 0 TD +0 Tw +(RC)Tj +/TT12 1 Tf +1.2002 0 TD +0.0689 Tw +[( and )]TJ +/TT10 1 Tf +2.3306 0 TD +0 Tw +(C)Tj +/TT12 1 Tf +0.6001 0 TD +0.0689 Tw +[( options of )]TJ +/TT10 1 Tf +5.1515 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0689 Tw +[( for each of the specified files \(unevaluated\).)]TJ +-19.99 -1.2889 TD +0.1133 Tw +(If no files are given, )Tj +/TT10 1 Tf +9.5296 0 TD +0 Tw +(NOTCOMPILEDFILES)Tj +/TT12 1 Tf +9.6016 0 TD +0.1133 Tw +[( is used. Each file compiled is removed from)]TJ +/TT10 1 Tf +-19.1311 -1.2889 TD +0 Tw +(NOTCOMPILEDFILES)Tj +/TT12 1 Tf +9.6016 0 TD +0.1556 Tw +[(. If )]TJ +/TT15 1 Tf +2.1366 0 TD +0 Tw +(FILE)Tj +2.3985 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1556 Tw +[( is a list, it is interpreted as the )]TJ +/TT15 1 Tf +15.0543 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1556 Tw +[( argument to)]TJ +/TT10 1 Tf +-33.9916 -1.5111 TD +0 Tw +(MAKEFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.0867 Tw +[(. This feature can be used to supply an answer to the compilers )]TJ +/TT10 1 Tf +29.7978 0 TD +0 Tw +(LISTING?)Tj +/TT12 1 Tf +-35.1987 -1.2889 TD +0.0756 Tw +(question, e.g., )Tj +/TT10 1 Tf +6.4973 0 TD +0.1811 Tw +(\(COMPILEFILES \(STF\)\))Tj +/TT12 1 Tf +12.1831 0 TD +0.0756 Tw +[( will compile each file on )]TJ +/TT10 1 Tf +11.7219 0 TD +0 Tw +(NOTCOMPILEDFILES)Tj +/TT12 1 Tf +-30.4023 -1.2889 TD +(so that the functions are redefined without the )Tj +/TT10 1 Tf +20.7515 0 TD +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +(s definitions being saved.)Tj +/TT10 1 Tf +-25.8185 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(WHEREIS)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 288.614 433.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 433.46 Tm +([Function])Tj +/TT15 1 Tf +-35.4033 -1.8444 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0456 Tw +[( is a file manager type. )]TJ +/TT10 1 Tf +10.7852 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0456 Tw +[( sweeps through all the files on the list )]TJ +/TT15 1 Tf +17.6253 0 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0456 Tw +[( and)]TJ +-38.0121 -1.2889 TD +0.0578 Tw +(returns a list of all files containing )Tj +/TT15 1 Tf +15.6696 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0578 Tw +[( as a )]TJ +/TT15 1 Tf +2.3472 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0578 Tw +(. )Tj +/TT10 1 Tf +0.8656 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0578 Tw +[( knows about and expands)]TJ +-27.8838 -1.2889 TD +0.1211 Tw +(all file manager commands and file manager macros. )Tj +/TT15 1 Tf +25.0065 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3711 0 TD +0.29 Tw +(= NIL)Tj +/TT12 1 Tf +3.2905 0 TD +0.1211 Tw +[( defaults to )]TJ +/TT10 1 Tf +5.5523 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.1211 Tw +[( \(to)]TJ +-38.4211 -1.2889 TD +0 Tw +(retrieve function definitions\). If )Tj +/TT15 1 Tf +14.375 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( is not a list, the value of )Tj +/TT10 1 Tf +10.9551 0 TD +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +( is used.)Tj +-32.5312 -2.0667 TD +(If )Tj +/TT15 1 Tf +1.0133 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.0933 Tw +[( is given, it should be a function \(with arguments )]TJ +/TT15 1 Tf +22.8987 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.5933 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0933 Tw +(, and )Tj +/TT15 1 Tf +2.6295 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0933 Tw +(\) which is)Tj +-35.5362 -1.2889 TD +0.1789 Tw +(applied for every file in )Tj +/TT15 1 Tf +11.5336 0 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.1789 Tw +[( that contains )]TJ +/TT15 1 Tf +6.7159 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1789 Tw +[( as a )]TJ +/TT15 1 Tf +2.7105 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1789 Tw +[(. In this case, )]TJ +/TT10 1 Tf +7.0331 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +-35.7944 -1.2889 TD +(returns )Tj +/TT10 1 Tf +3.4541 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +-5.2544 -2.0667 TD +0.0033 Tw +(If the )Tj +/TT10 1 Tf +2.5638 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0001 Tc +0.0032 Tw +( library package has been loaded, )Tj +/TT10 1 Tf +15.0244 0 TD +0 Tc +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0002 Tc +0.0031 Tw +( is redefined so that )Tj +/TT15 1 Tf +8.9454 0 TD +0 Tc +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2533 0 TD +0.0089 Tw +(= T)Tj +/TT12 1 Tf +-38.1888 -1.2889 TD +0.0933 Tw +(means to use the whereis package data base, so )Tj +/TT10 1 Tf +21.9557 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0933 Tw +[( will find )]TJ +/TT15 1 Tf +4.5539 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0933 Tw +[( even if the file)]TJ +-33.1107 -1.2889 TD +0 Tw +(has not been loaded or noticed. )Tj +/TT15 1 Tf +14.3105 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(= NIL)Tj +/TT12 1 Tf +3.0005 0 TD +( always means use )Tj +/TT10 1 Tf +8.4785 0 TD +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 255.52 Tm +(Remaking a Symbolic File)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 252.81 m +558.01 252.81 l +S +BT +/TT12 1 Tf +9 0 0 9 126 230.86 Tm +0.1133 Tw +(Most of the time that a symbolic file is written using )Tj +/TT10 1 Tf +24.504 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1133 Tw +(, only a few of the functions that it)Tj +-29.3048 -1.2889 TD +0.0944 Tw +[(contains have been changed since the last time the file was written. Rather than prettprinting all of)]TJ +0 -1.2222 TD +0.0089 Tw +(the functions, it is often considerably faster to "remake" the file, copying the prettprinted definitions of)Tj +T* +0.2633 Tw +(unchanged functions from an earlier version of the symbolic file, and only prettyprinting those)Tj +T* +0 Tw +(functions that have been changed.)Tj +/TT10 1 Tf +0 -2.8889 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0367 Tw +[( will remake the symbolic file if the )]TJ +/TT10 1 Tf +16.0726 0 TD +0 Tw +(REMAKE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0367 Tw +[( option is specified. If the )]TJ +/TT10 1 Tf +11.8734 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.0367 Tw +[( option is given,)]TJ +-38.1477 -1.2889 TD +0.0611 Tw +[(the file is not remade, and all of the functions are prettprinted. The default action is specified by the)]TJ +0 -1.2222 TD +0.1344 Tw +(value of )Tj +/TT10 1 Tf +4.0858 0 TD +0 Tw +(MAKEFILEREMAKEFLG)Tj +/TT12 1 Tf +10.2017 0 TD +0.1344 Tw +[(: if )]TJ +/TT10 1 Tf +2.0274 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.1344 Tw +[( \(its initial value\), )]TJ +/TT10 1 Tf +8.5051 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1344 Tw +[( will remake files unless the )]TJ +/TT10 1 Tf +13.3135 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +-43.5342 -1.2889 TD +(option is given; if )Tj +/TT10 1 Tf +8.2041 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +( will not remake unless the )Tj +/TT10 1 Tf +12.1431 0 TD +(REMAKE)Tj +/TT12 1 Tf +3.6006 0 TD +( option is given.)Tj +-27.7155 -2.0667 TD +0.1511 Tw +[(Note: If the file has never been loaded or dumped, for example if the filecoms were)]TJ +3.3333 -1.2222 TD +0.0611 Tw +(simply set up in memory, then )Tj +/TT10 1 Tf +14.1797 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0611 Tw +[( will never attempt to remake the file,)]TJ +-18.9804 -1.2889 TD +0.3344 Tw +(regardless of the setting of )Tj +/TT10 1 Tf +13.6053 0 TD +0 Tw +(MAKEFILEREMAKEFLG)Tj +/TT12 1 Tf +10.2017 0 TD +0.3344 Tw +(, or whether the )Tj +/TT10 1 Tf +8.5931 0 TD +0 Tw +(REMAKE)Tj +/TT12 1 Tf +-32.4001 -1.2889 TD +(option was specified.)Tj +ET +endstream +endobj +57 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +59 0 obj +<< +/Length 8002 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-15)Tj +/TT12 1 Tf +-42.3333 60.6156 TD +(When )Tj +/TT10 1 Tf +2.9197 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0267 Tw +[( is remaking a symbolic file, you can explicitly indicate the functions which are to be)]TJ +-7.7205 -1.2889 TD +0.1844 Tw +(prettyprinted and the file to be used for copying the rest of the function definitions from via the)Tj +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +0.1778 Tw +[( and )]TJ +/TT15 1 Tf +2.5484 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.1778 Tw +[( arguments to )]TJ +/TT10 1 Tf +6.9035 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1778 Tw +[(. Normally, both of these arguments are)]TJ +-26.2546 -1.2889 TD +0.1322 Tw +(defaulted to )Tj +/TT10 1 Tf +5.8694 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1322 Tw +[(. In this case, )]TJ +/TT15 1 Tf +6.7998 0 TD +0 Tw +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +0.1322 Tw +[( will be set to those functions that have been changed)]TJ +-20.4705 -1.2889 TD +0.0067 Tw +[(since the last version of the file was written. For )]TJ +/TT15 1 Tf +21.6515 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5067 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0067 Tw +[( obtains the full name of the)]TJ +-32.9599 -1.2889 TD +0.1367 Tw +(most recent version of the file \(that it knows about\) from the )Tj +/TT10 1 Tf +28.4974 0 TD +0 Tw +(FILEDATES)Tj +/TT12 1 Tf +5.4009 0 TD +0.1367 Tw +[( property of the file, and)]TJ +-33.8983 -1.2889 TD +0.0033 Tw +(checks to make sure that the file still exists and has the same file date as that stored on the )Tj +/TT10 1 Tf +39.9207 0 TD +0 Tw +(FILEDATES)Tj +/TT12 1 Tf +-39.9207 -1.2889 TD +0.0156 Tw +[(property. If it does, )]TJ +/TT10 1 Tf +9.0739 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0156 Tw +[( uses that file as )]TJ +/TT15 1 Tf +7.3097 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.0156 Tw +[(. This procedure permits you to )]TJ +/TT10 1 Tf +14.5474 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.0156 Tw +[( or)]TJ +/TT10 1 Tf +-44.1331 -1.2889 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.0989 Tw +[( a file in a different directory, and still be able to remake the file with )]TJ +/TT10 1 Tf +32.1213 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0989 Tw +[(. In the)]TJ +-41.7229 -1.2889 TD +0.1533 Tw +(case where the most recent version of the file cannot be found, )Tj +/TT10 1 Tf +29.6056 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1533 Tw +[( will attempt to remake)]TJ +-34.4064 -1.2889 TD +0.0322 Tw +(using the )Tj +/TT8 1 Tf +4.4077 0 TD +0 Tw +(original)Tj +/TT12 1 Tf +3.1665 0 TD +0.0322 Tw +[( version of the file \(i.e., the one first loaded\), specifying as )]TJ +/TT15 1 Tf +26.0463 0 TD +0 Tw +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +0.0322 Tw +[( the union of)]TJ +-39.6215 -1.2889 TD +0.3478 Tw +(all changes that have been made since the file was first loaded, which is obtained from the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FILECHANGES)Tj +/TT12 1 Tf +6.6011 0 TD +0.0422 Tw +[( property of the file. If both of these fail, )]TJ +/TT10 1 Tf +18.5352 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0422 Tw +[( prints the message ")]TJ +/TT10 1 Tf +9.291 0 TD +0.1022 Tw +(CANT FIND)Tj +-39.2281 -1.2222 TD +0.2278 Tw +(EITHER THE PREVIOUS VERSION OR THE ORIGINAL VERSION OF )Tj +/TT15 1 Tf +35.0554 0 TD +0 Tw +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +0.2278 Tw +(, SO IT WILL)Tj +-37.4558 -1.2889 TD +0 Tw +(HAVE TO BE WRITTEN ANEW)Tj +/TT12 1 Tf +13.8022 0 TD +(", and does not remake the file, i.e. will prettyprint all of the functions.)Tj +-13.8022 -2.9556 TD +0.0878 Tw +(When a remake is specified, )Tj +/TT10 1 Tf +13.0414 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0878 Tw +[( also checks to see how the file was originally loaded. If the)]TJ +-17.8422 -1.2889 TD +0.0144 Tw +(file was originally loaded as a compiled file, )Tj +/TT10 1 Tf +19.8177 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0144 Tw +[( will call )]TJ +/TT10 1 Tf +4.0262 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0144 Tw +[( to obtain those )]TJ +/TT10 1 Tf +7.0851 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +-40.5306 -1.2889 TD +0.0156 Tw +(expressions that are contained on the symbolic file, but not the compiled file, and hence have not been)Tj +0 -1.2222 TD +0.1067 Tw +[(loaded. If the file was loaded by )]TJ +/TT10 1 Tf +15.4969 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1067 Tw +[( \(but not )]TJ +/TT10 1 Tf +4.3395 0 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.1067 Tw +(\), then )Tj +/TT10 1 Tf +3.2656 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1067 Tw +[( is called to obtain)]TJ +-36.9043 -1.2889 TD +0.0622 Tw +(any non-)Tj +/TT10 1 Tf +3.9934 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.0622 Tw +[( expressions. Before calling )]TJ +/TT10 1 Tf +12.7696 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0622 Tw +[( to re-load definitions, )]TJ +/TT10 1 Tf +10.2816 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0622 Tw +[( asks you,)]TJ +-40.8468 -1.2889 TD +0.08 Tw +(e.g. ")Tj +/TT10 1 Tf +2.2362 0 TD +0.1911 Tw +(Only the compiled version of FOO was loaded, do you want to LOADVARS)Tj +-2.2362 -1.2889 TD +0.0956 Tw +(the \(DECLARE: .. DONTCOPY ..\) expressions from {DSK}FOO.;3?")Tj +/TT12 1 Tf +40.8754 0 TD +0.04 Tw +[(. You can)]TJ +-40.8754 -1.2889 TD +0 Tw +(respond )Tj +/TT10 1 Tf +4.2433 0 TD +(Yes)Tj +/TT12 1 Tf +1.8003 0 TD +0.3556 Tw +[( to execute the )]TJ +/TT10 1 Tf +8.0077 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.3556 Tw +[( and continue the )]TJ +/TT10 1 Tf +9.3553 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.8556 0 TD +(No)Tj +/TT12 1 Tf +1.2002 0 TD +0.3556 Tw +[( to proceed with the)]TJ +/TT10 1 Tf +-35.0639 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0967 Tw +[( without performing the )]TJ +/TT10 1 Tf +11.3432 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0967 Tw +(, or )Tj +/TT10 1 Tf +1.8843 0 TD +0 Tw +(Abort)Tj +/TT12 1 Tf +3.0005 0 TD +0.0967 Tw +[( to abort the )]TJ +/TT10 1 Tf +5.9663 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0967 Tw +[(. You may wish to)]TJ +-36.5966 -1.2889 TD +0.2011 Tw +(skip the )Tj +/TT10 1 Tf +4.1615 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.2011 Tw +[( if you had circumvented the file manager in some way, and loading the old)]TJ +-8.9623 -1.2889 TD +0 Tw +(definitions would overwrite new ones.)Tj +0 -2.8889 TD +0.0078 Tw +(Remaking a symbolic file is considerably faster if the earlier version has a )Tj +/TT8 1 Tf +32.7207 0 TD +(file map)Tj +/TT12 1 Tf +3.2021 0 TD +[( indicating where the)]TJ +-35.9229 -1.2222 TD +0 Tw +(function definitions are located \(see the File Maps section\), but it does not depend on this information.)Tj +/TT4 1 Tf +10 0 0 10 54 187.6 Tm +(Loading Files in a Distributed Environment)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 184.89 m +510.01 184.89 l +S +BT +/TT12 1 Tf +9 0 0 9 78 162.94 Tm +0.0878 Tw +(Each Interlisp source and compiled code file contains the full filename of the file, including the host)Tj +T* +0.0789 Tw +(and directory names, in a )Tj +/TT10 1 Tf +11.871 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0789 Tw +[( expression at the beginning of the file. The compiled code)]TJ +-18.4721 -1.2889 TD +0.2144 Tw +[(file also contains the full file name of the source file it was created from. In earlier versions of)]TJ +0 -1.2222 TD +0.0244 Tw +(Interlisp, the file manager used this information to locate the appropriate source file when "remaking")Tj +T* +0 Tw +(or recompiling a file.)Tj +0 -2.8889 TD +0.1233 Tw +(This turned out to be a bad feature in distributed environments, where users frequently move files)Tj +0 -1.2222 TD +0.0633 Tw +[(from one place to another, or where files are stored on removable media. For example, suppose you)]TJ +/TT10 1 Tf +T* +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0367 Tw +[( to a floppy, and then copy the file to a file server. If you loaded and edited the file from a)]TJ +-4.8008 -1.2889 TD +0.12 Tw +(file server, and tried to do )Tj +/TT10 1 Tf +12.4246 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.12 Tw +(, it would try to locate the source file on the floppy, which is)Tj +-17.2254 -1.2889 TD +0 Tw +(probably no longer loaded.)Tj +ET +endstream +endobj +60 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +62 0 obj +<< +/Length 6641 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 126 569.54 Tm +0.07 Tw +(Currently, the file manager searches for sources file on the connected directory, and on the directory)Tj +0 -1.2222 TD +0.0944 Tw +(search path \(on the variable )Tj +/TT10 1 Tf +12.9776 0 TD +0 Tw +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +0.0944 Tw +[(\). If it is not found, the host/directory information from)]TJ +-19.5787 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6372 0 TD +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +( expression be used.)Tj +-4.9049 -2.0667 TD +0.27 Tw +[(Warning: One situation where the new algorithm does the wrong thing is if you)]TJ +4.6667 -1.2222 TD +0 Tw +(explicitly )Tj +/TT10 1 Tf +4.4453 0 TD +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.1089 Tw +[( a file that is not on your directory search path. Future)]TJ +/TT10 1 Tf +-9.2461 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.6222 Tw +(s and )Tj +/TT10 1 Tf +3.8611 0 TD +0 Tw +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.6222 Tw +(s will search the connected directory and)Tj +/TT10 1 Tf +-12.8626 -1.2889 TD +0 Tw +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +0.2856 Tw +[( to find the source file, rather than using the file that the)]TJ +/TT10 1 Tf +-6.6011 -1.2889 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.0867 Tw +[( was done from. Even if the correct file is on the directory search)]TJ +-4.8008 -1.2889 TD +0.0144 Tw +(path, you could still create a bad file if there is another version of the file in an)Tj +0 -1.2222 TD +0.1122 Tw +[(earlier directory on the search path. In general, you should either explicitly)]TJ +T* +0.0156 Tw +(specify the )Tj +/TT15 1 Tf +5.0462 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.0156 Tw +[( argument to )]TJ +/TT10 1 Tf +5.993 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0156 Tw +[( to tell it where to get the old)]TJ +-21.841 -1.2889 TD +0 Tw +(source, or connect to the directory where the correct source file is.)Tj +/TT4 1 Tf +10 0 0 10 102 395 Tm +(Marking Changes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 392.29 m +558.01 392.29 l +S +BT +/TT12 1 Tf +9 0 0 9 126 370.34 Tm +0.0144 Tw +(The file manager needs to know what typed definitions have been changed, so it can determine which)Tj +0 -1.2222 TD +0.0756 Tw +[(files need to be updated. This is done by "marking changes". All the system functions that perform)]TJ +T* +0.1144 Tw +(file manager operations \()Tj +/TT10 1 Tf +11.4053 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6144 0 TD +(TCOMPL)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6144 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.1144 Tw +(, etc.\), as well as those functions that define or)Tj +-24.0361 -1.2889 TD +0.2567 Tw +(change data, \()Tj +/TT10 1 Tf +6.6764 0 TD +0 Tw +(EDITF)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.7567 0 TD +(EDITV)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.7567 0 TD +(EDITP)Tj +/TT12 1 Tf +3.0005 0 TD +0.2567 Tw +(, DWIM corrections to user functions\) interact with the file)Tj +-17.1912 -1.2889 TD +0.0389 Tw +[(manager by marking changes. Also, )]TJ +/TT8 1 Tf +16.6064 0 TD +0 Tw +(typed-in)Tj +/TT12 1 Tf +3.3892 0 TD +0.0389 Tw +[( assignment of variables or property values is noticed by)]TJ +-19.9955 -1.2222 TD +0.1 Tw +[(the file manager. \(If a program modifies a variable or property value, this is not noticed.\) In some)]TJ +T* +0.1344 Tw +(cases the marking procedure can be subtle, e.g. if you edit a property list using )Tj +/TT10 1 Tf +36.9835 0 TD +0 Tw +(EDITP)Tj +/TT12 1 Tf +3.0005 0 TD +0.1344 Tw +(, only those)Tj +-39.984 -1.2889 TD +0 Tw +(properties whose values are actually changed \(or added\) are marked.)Tj +0 -2.8889 TD +0.0411 Tw +(The various system functions which create or modify objects call )Tj +/TT10 1 Tf +29.1797 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.0411 Tw +[( to mark the object)]TJ +-36.9809 -1.2889 TD +0.2144 Tw +[(as changed. For example, when a function is defined via )]TJ +/TT10 1 Tf +27.6733 0 TD +0 Tw +(DEFINE)Tj +/TT12 1 Tf +3.6006 0 TD +0.2144 Tw +[( or )]TJ +/TT10 1 Tf +1.8698 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.2144 Tw +(, or modified via)Tj +/TT10 1 Tf +-37.3444 -1.2889 TD +0 Tw +(EDITF)Tj +/TT12 1 Tf +3.0005 0 TD +0.0233 Tw +(, or a )Tj +/TT10 1 Tf +2.5109 0 TD +0 Tw +(DWIM)Tj +/TT12 1 Tf +2.4004 0 TD +0.0233 Tw +[( correction, the function is marked as being a changed object of type )]TJ +/TT10 1 Tf +30.5465 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.0233 Tw +[(. Similarly,)]TJ +-40.2586 -1.2889 TD +0.04 Tw +(whenever a new record is declared, or an existing record redeclared or edited, it is marked as being a)Tj +0 -1.2222 TD +0 Tw +(changed object of type )Tj +/TT10 1 Tf +10.1772 0 TD +(RECORDS)Tj +/TT12 1 Tf +4.2007 0 TD +(, and so on for all of the other file manager types. )Tj +-14.3779 -2.9556 TD +0.2433 Tw +(You can also call )Tj +/TT10 1 Tf +8.6018 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.2433 Tw +[( directly to mark objects of a particular file manager type as)]TJ +-16.403 -1.2889 TD +0 Tw +(changed:)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(MARKASCHANGED)Tj +/TT19 1 Tf +7.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REASON)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-19418.5([Function])]TJ +-15.4848 -1.8444 TD +(Marks )Tj +/TT15 1 Tf +3.593 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.5222 Tw +[( of type )]TJ +/TT15 1 Tf +5.158 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.5222 Tw +[( as being changed. )]TJ +/TT10 1 Tf +11.2503 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.5222 Tw +[( returns )]TJ +/TT15 1 Tf +4.7485 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-39.7523 -1.2889 TD +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +( is undoable.)Tj +/TT15 1 Tf +-7.8013 -2.0667 TD +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +0.0367 Tw +[( is a symbol that indicated how )]TJ +/TT15 1 Tf +14.3055 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0367 Tw +[( was changed. )]TJ +/TT10 1 Tf +6.9084 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.0367 Tw +[( recognizes)]TJ +-35.0161 -1.2889 TD +0 Tw +(the following values for )Tj +/TT15 1 Tf +10.793 0 TD +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +(:)Tj +/TT17 1 Tf +-7.9269 -2.0667 TD +(DEFINED)Tj +/TT12 1 Tf +5.5333 0 TD +0.0022 Tw +(Used to indicate the creation of )Tj +/TT15 1 Tf +14.0299 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0022 Tw +(, e.g. from )Tj +/TT10 1 Tf +4.6986 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +-21.1289 -1.2889 TD +(\(Chapter 10\).)Tj +/TT17 1 Tf +-5.5333 -2 TD +(CHANGED)Tj +/TT12 1 Tf +5.5333 0 TD +(Used to indicate a change to )Tj +/TT15 1 Tf +12.7026 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, e.g. from the editor.)Tj +ET +endstream +endobj +63 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +65 0 obj +<< +/Length 8700 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-17)Tj +/TT17 1 Tf +-30.5333 60.6156 TD +(DELETED)Tj +/TT12 1 Tf +5.5333 0 TD +(Used to indicate the deletion of )Tj +/TT15 1 Tf +14.0586 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, e.g. by )Tj +/TT10 1 Tf +3.6445 0 TD +(DELDEF)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT17 1 Tf +-28.0374 -2.0667 TD +(CLISP)Tj +/TT12 1 Tf +4.3333 0 TD +0.3056 Tw +(Used to indicate the modification of )Tj +/TT15 1 Tf +17.9305 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.3056 Tw +[( by CLISP)]TJ +-20.3309 -1.2889 TD +0 Tw +(translation.)Tj +-12 -2 TD +0.1211 Tw +(For backwards compatibility, )Tj +/TT10 1 Tf +13.5767 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.1211 Tw +[( also accepts a )]TJ +/TT15 1 Tf +6.963 0 TD +0 Tw +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +0.1211 Tw +[( of )]TJ +/TT10 1 Tf +1.6211 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.1211 Tc +( \()Tj +/TT10 1 Tf +0.7041 0 TD +0 Tc +(=DEFINED)Tj +/TT12 1 Tf +4.8008 0 TD +(\))Tj +-39.6677 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( \()Tj +/TT10 1 Tf +0.583 0 TD +(=CHANGED)Tj +/TT12 1 Tf +4.8008 0 TD +(\). New programs should avoid using these values.)Tj +-9.127 -2.0667 TD +0.09 Tw +(The variable )Tj +/TT10 1 Tf +5.928 0 TD +0 Tw +(MARKASCHANGEDFNS)Tj +/TT12 1 Tf +9.6016 0 TD +0.09 Tw +[( is a list of functions that )]TJ +/TT10 1 Tf +11.671 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.09 Tw +[( calls \(with)]TJ +-35.0019 -1.2889 TD +0 Tw +(arguments )Tj +/TT15 1 Tf +5.1792 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.6811 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1811 Tw +(, and )Tj +/TT15 1 Tf +2.8051 0 TD +0 Tw +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +0.1811 Tw +[(\). Functions can be added to this list to "advise")]TJ +/TT10 1 Tf +-17.0667 -1.2889 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.1156 Tw +[( to do additional work for all types of objects. The )]TJ +/TT10 1 Tf +23.8461 0 TD +0 Tw +(WHENCHANGED)Tj +/TT12 1 Tf +6.6011 0 TD +0.1156 Tw +[( file)]TJ +-38.2485 -1.2889 TD +0.0278 Tw +(manager type property \(see the Defining New File Manager Types section\) can be used to)Tj +0 -1.2222 TD +0 Tw +(specify additional actions when )Tj +/TT10 1 Tf +14.2666 0 TD +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +( gets called on specific types of objects.)Tj +/TT10 1 Tf +-24.7345 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UNMARKASCHANGED)Tj +/TT12 1 Tf +8.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 241.5079 422.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 422.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Unmarks )Tj +/TT15 1 Tf +4.5066 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1389 Tw +[( of type )]TJ +/TT15 1 Tf +4.008 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1389 Tw +[( as being changed. Returns )]TJ +/TT15 1 Tf +13.1995 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1389 Tw +[( if )]TJ +/TT15 1 Tf +1.4018 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1389 Tw +[( was marked as)]TJ +-32.7175 -1.2889 TD +0 Tw +(changed and is now unmarked, )Tj +/TT10 1 Tf +14.2324 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( otherwise. )Tj +/TT10 1 Tf +5.356 0 TD +(UNMARKASCHANGED)Tj +/TT12 1 Tf +9.0015 0 TD +( is undoable.)Tj +/TT10 1 Tf +-33.0568 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILEPKGCHANGES)Tj +/TT12 1 Tf +8.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LST)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 236.1079 371.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 401.99 371.26 Tm +([NoSpread Function])Tj +-30.6656 -1.8444 TD +(If )Tj +/TT15 1 Tf +1.0521 0 TD +(LST)Tj +/TT12 1 Tf +1.8003 0 TD +0.1322 Tw +[( is not specified \(as opposed to being )]TJ +/TT10 1 Tf +17.5773 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1322 Tw +(\), returns a list of those objects of type)Tj +/TT15 1 Tf +-22.23 -1.2889 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0689 Tw +[( that have been marked as changed but not yet associated with their corresponding)]TJ +-2.4004 -1.2889 TD +0.0589 Tw +[(files \(see the File Manager Types section\). If )]TJ +/TT15 1 Tf +20.2927 0 TD +0 Tw +(LST)Tj +/TT12 1 Tf +1.8003 0 TD +0.0589 Tw +[( is specified, )]TJ +/TT10 1 Tf +5.8441 0 TD +0 Tw +(FILEPKGCHANGES)Tj +/TT12 1 Tf +8.4014 0 TD +0.0589 Tw +[( sets the)]TJ +-36.3385 -1.2889 TD +0.0344 Tw +(corresponding list.)Tj +/TT19 1 Tf +8.3181 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2844 0 TD +(\(FILEPKGCHANGES\))Tj +/TT12 1 Tf +9.6016 0 TD +0.0344 Tw +[( returns a list of )]TJ +/TT8 1 Tf +7.3373 0 TD +0 Tw +(all)Tj +/TT12 1 Tf +0.9995 0 TD +0.0344 Tw +[( objects marked as changed as)]TJ +-26.5409 -1.2889 TD +0 Tw +(a list of elements of the form )Tj +/TT10 1 Tf +12.8267 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(TYPENAME)Tj +/TT10 1 Tf +4.8008 0 TD +( . )Tj +/TT15 1 Tf +1.8003 0 TD +(CHANGEDOBJECTS)Tj +/TT10 1 Tf +8.4014 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(.)Tj +-34.3626 -2.9556 TD +0.0122 Tw +(Some properties \(e.g. )Tj +/TT10 1 Tf +9.6246 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(ADVICE)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(MACRO)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(I.S.OPR)Tj +/TT12 1 Tf +4.2007 0 TD +0.0122 Tw +(, etc.\) are used to implement other file manager)Tj +-24.3634 -1.2889 TD +0.1333 Tw +[(types. For example, if you change the value of the property )]TJ +/TT10 1 Tf +28.1952 0 TD +0 Tw +(I.S.OPR)Tj +/TT12 1 Tf +4.2007 0 TD +0.1333 Tw +(, you are really changing an)Tj +-32.3959 -1.2889 TD +0.0844 Tw +(object of type )Tj +/TT10 1 Tf +6.4267 0 TD +0 Tw +(I.S.OPR)Tj +/TT12 1 Tf +4.2007 0 TD +0.0844 Tw +[(. The effect is the same as though you had redefined the i.s.opr via a direct)]TJ +-10.6274 -1.2889 TD +0.2444 Tw +(call to the function )Tj +/TT10 1 Tf +9.47 0 TD +0 Tw +(I.S.OPR)Tj +/TT12 1 Tf +4.2007 0 TD +0.2444 Tw +[(. If a property whose value has been changed or added does not)]TJ +-13.6707 -1.2889 TD +0.0244 Tw +(correspond to a specific file manager type, then it is marked as a changed object of type )Tj +/TT10 1 Tf +39.1944 0 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +0.0244 Tw +[( whose)]TJ +/TT8 1 Tf +-42.1949 -1.2889 TD +0 Tw +(name)Tj +/TT12 1 Tf +2.167 0 TD +0.0733 Tw +[( is )]TJ +/TT10 1 Tf +1.3615 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VARIABLENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.7757 0 TD +(PROPNAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0733 Tw +[( \(except if the property name has a property )]TJ +/TT10 1 Tf +20.6713 0 TD +0 Tw +(PROPTYPE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0733 Tw +[( with)]TJ +-42.9784 -1.2889 TD +0 Tw +(value )Tj +/TT10 1 Tf +2.688 0 TD +(IGNORE)Tj +/TT12 1 Tf +3.6006 0 TD +(\). )Tj +-6.2886 -2.9556 TD +0.07 Tw +(Similarly, if you change a variable which implements the file manager type )Tj +/TT10 1 Tf +34.2697 0 TD +0 Tw +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.07 Tw +[( \(as indicated by)]TJ +-37.8703 -1.2889 TD +0.0233 Tw +(the appearance of the property )Tj +/TT10 1 Tf +14.0005 0 TD +0 Tw +(VARTYPE)Tj +/TT12 1 Tf +4.2007 0 TD +0.0233 Tw +[( with value )]TJ +/TT10 1 Tf +5.2912 0 TD +0 Tw +(ALIST)Tj +/TT12 1 Tf +3.0005 0 TD +0.0233 Tw +[( on the variables property list\), only those)]TJ +-26.4928 -1.2889 TD +0.0211 Tw +(entries that are actually changed are marked as being changed objects of type )Tj +/TT10 1 Tf +34.6582 0 TD +0 Tw +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.0211 Tw +[(. The "name" of)]TJ +-38.2588 -1.2889 TD +0.1356 Tw +(the object will be )Tj +/TT10 1 Tf +8.2507 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VARIABLENAME)Tj +/TT10 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.9257 0 TD +(KEY)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1356 Tw +[( where )]TJ +/TT15 1 Tf +3.5402 0 TD +0 Tw +(KEY)Tj +/TT12 1 Tf +1.8003 0 TD +0.1356 Tw +[( is )]TJ +/TT10 1 Tf +1.486 0 TD +0 Tw +(CAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1356 Tw +[( of the entry on the alist that is being)]TJ +-28.0047 -1.2889 TD +0.33 Tw +[(marked. If the variable corresponds to a specific file manager type other than )]TJ +/TT10 1 Tf +39.12 0 TD +0 Tw +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.33 Tw +(, e.g.,)Tj +/TT10 1 Tf +-42.7206 -1.2889 TD +0 Tw +(USERMACROS)Tj +/TT12 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5367 0 TD +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0367 Tw +[(, etc., then an object of that type is marked. In this case, the name of the)]TJ +-13.1387 -1.2889 TD +0.2956 Tw +(changed object will be )Tj +/TT10 1 Tf +11.2574 0 TD +0 Tw +(CAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.2956 Tw +[( of the corresponding entry on the alist. For example, if you edit)]TJ +/TT10 1 Tf +-13.0577 -1.2889 TD +0 Tw +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0433 Tw +[( and change a definition for )]TJ +/TT10 1 Tf +12.7019 0 TD +0 Tw +(PL)Tj +/TT12 1 Tf +1.2002 0 TD +0.0433 Tw +(, then the object )Tj +/TT10 1 Tf +7.3618 0 TD +0 Tw +(PL)Tj +/TT12 1 Tf +1.2002 0 TD +0.0433 Tw +[( of type )]TJ +/TT10 1 Tf +3.7213 0 TD +0 Tw +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0433 Tw +[( is marked as)]TJ +-39.3876 -1.2889 TD +0 Tw +(being changed. )Tj +ET +endstream +endobj +66 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +68 0 obj +<< +/Length 6504 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Noticing Files)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT12 1 Tf +9 0 0 9 126 543.54 Tm +0.1233 Tw +(Already existing files are "noticed" by )Tj +/TT10 1 Tf +17.6375 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.1233 Tw +[( or )]TJ +/TT10 1 Tf +1.6876 0 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.1233 Tw +[( \(or by )]TJ +/TT10 1 Tf +3.5033 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1233 Tw +[( or )]TJ +/TT10 1 Tf +1.6876 0 TD +0 Tw +(LOADVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1233 Tw +[( when the)]TJ +/TT15 1 Tf +-40.7186 -1.2889 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.2422 Tw +[( argument is )]TJ +/TT10 1 Tf +6.5157 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.2422 Tw +[(. New files are noticed when they are constructed by )]TJ +/TT10 1 Tf +26.3627 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.2422 Tw +(, or when)Tj +-40.6797 -1.2889 TD +0.2167 Tw +(definitions are first associated with them via )Tj +/TT10 1 Tf +21.3692 0 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +0.2167 Tw +[( or )]TJ +/TT10 1 Tf +1.8742 0 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.2167 Tw +[(. Noticing a file updates)]TJ +-33.4451 -1.2889 TD +0.2744 Tw +(certain lists and properties so that the file manager functions know to include the file in their)Tj +0 -1.2222 TD +0 Tw +(operations. For example, )Tj +/TT10 1 Tf +11.436 0 TD +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +( will only dump files that have been noticed.)Tj +-15.6367 -2.9556 TD +0.0744 Tw +(You can explicitly tell the file manager to notice a newly-created file by defining the filecoms for the)Tj +0 -1.2222 TD +0 Tw +(file, and calling )Tj +/TT10 1 Tf +7.042 0 TD +(ADDFILE)Tj +/TT12 1 Tf +4.2007 0 TD +(:)Tj +/TT10 1 Tf +-8.576 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADDFILE)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT12 1 Tf +30.6196 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0567 Tw +(Tells the file manager that )Tj +/TT8 1 Tf +12.0416 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.0562 0 TD +0.0567 Tw +[( should be recognized as a file; it adds )]TJ +/TT15 1 Tf +17.5622 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0567 Tw +[( to )]TJ +/TT10 1 Tf +1.4854 0 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +(,)Tj +-39.7465 -1.2889 TD +0.0267 Tw +(and also sets up the )Tj +/TT10 1 Tf +9.0811 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0267 Tw +[( property of )]TJ +/TT15 1 Tf +5.6083 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0267 Tw +[( to reflect the current set of changes which are)]TJ +-19.4902 -1.2889 TD +0 Tw +("registered against" )Tj +/TT15 1 Tf +8.8564 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-16.5902 -2.9556 TD +0.0956 Tw +[(The file manager uses information stored on the property list of the root name of noticed files. The)]TJ +0 -1.2222 TD +0 Tw +(following property names are used:)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(FILE)Tj +/TT6 1 Tf +10 0 0 10 171.6035 338.8 Tm +-0.0002 Tc +( )Tj +/TT12 1 Tf +9 0 0 9 466.39 338.8 Tm +0 Tc +([Property Name])Tj +-32.4878 -1.8444 TD +0.0489 Tw +(When a file is noticed, the property )Tj +/TT10 1 Tf +16.1596 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0489 Tw +(, value )Tj +/TT10 1 Tf +3.2858 0 TD +0 Tw +(\(\()Tj +/TT15 1 Tf +1.2002 0 TD +(FILECOMS)Tj +/TT10 1 Tf +4.8008 0 TD +0.1167 Tw +[( . )]TJ +/TT15 1 Tf +2.0336 0 TD +0 Tw +(LOADTYPE)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\))Tj +/TT12 1 Tf +1.2002 0 TD +0.0489 Tw +[( is added)]TJ +-35.8813 -1.2889 TD +0.0589 Tw +(to the property list of its root name. )Tj +/TT15 1 Tf +16.6975 0 TD +0 Tw +(FILECOMS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0589 Tw +[( is the variable containing the filecoms of)]TJ +-21.4983 -1.2889 TD +0.2722 Tw +(the file. )Tj +/TT15 1 Tf +4.5979 0 TD +0 Tw +(LOADTYPE)Tj +/TT12 1 Tf +4.8008 0 TD +0.2722 Tw +[( indicates )]TJ +/TT8 1 Tf +4.9922 0 TD +0 Tw +(how)Tj +/TT12 1 Tf +1.666 0 TD +0.2722 Tw +[( the file was loaded, e.g., completely loaded, only)]TJ +-16.0569 -1.2889 TD +0 Tw +(partially loaded as with )Tj +/TT10 1 Tf +10.7461 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +(, loaded as a compiled file, etc.)Tj +-14.9468 -2.0667 TD +0.0989 Tw +(The property )Tj +/TT10 1 Tf +6.271 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0989 Tw +[( is used to determine whether or not the corresponding file has been)]TJ +-8.6714 -1.2889 TD +0.0478 Tw +(modified since the last time it was loaded or dumped. )Tj +/TT10 1 Tf +24.8381 0 TD +0 Tw +(CDR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0478 Tw +[( of the )]TJ +/TT10 1 Tf +3.1594 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0478 Tw +[( property records)]TJ +-32.1982 -1.2889 TD +0.0678 Tw +(by type those items that have been changed since the last )Tj +/TT10 1 Tf +26.1826 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0678 Tw +[(. Whenever a file is)]TJ +-30.9834 -1.2889 TD +0.1844 Tw +(dumped, these items are moved to the property )Tj +/TT10 1 Tf +22.8222 0 TD +0 Tw +(FILECHANGES)Tj +/TT12 1 Tf +6.6011 0 TD +0.1844 Tw +(, and )Tj +/TT10 1 Tf +2.8118 0 TD +0 Tw +(CDR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1844 Tw +[( of the )]TJ +/TT10 1 Tf +3.5694 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +-37.6048 -1.2889 TD +(property is reset to )Tj +/TT10 1 Tf +8.5894 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT17 1 Tf +-13.0563 -2.5489 TD +(FILECHANGES)Tj +/TT6 1 Tf +10 0 0 10 209.4 199.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 466.39 199.46 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.0633 Tw +(The property )Tj +/TT10 1 Tf +6.1999 0 TD +0 Tw +(FILECHANGES)Tj +/TT12 1 Tf +6.6011 0 TD +0.0633 Tw +[( contains a list of all changed items since the file was loaded)]TJ +-12.801 -1.2889 TD +0.0722 Tw +[(\(there may have been several sequences of editing and rewriting the file\). When a file is)]TJ +0 -1.2222 TD +0.2678 Tw +(dumped, the changes in )Tj +/TT10 1 Tf +11.9359 0 TD +0 Tw +(CDR)Tj +/TT12 1 Tf +1.8003 0 TD +0.2678 Tw +[( of the )]TJ +/TT10 1 Tf +3.8194 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2678 Tw +[( property are added to the )]TJ +/TT10 1 Tf +13.4509 0 TD +0 Tw +(FILECHANGES)Tj +/TT12 1 Tf +-33.4069 -1.2889 TD +(property.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(FILEDATES)Tj +/TT6 1 Tf +10 0 0 10 198.6 126.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 466.39 126.32 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.0444 Tw +(The property )Tj +/TT10 1 Tf +6.1621 0 TD +0 Tw +(FILEDATES)Tj +/TT12 1 Tf +5.4009 0 TD +0.0444 Tw +[( contains a list of version numbers and corresponding file dates)]TJ +-11.563 -1.2889 TD +0.1467 Tw +[(for this file. These version numbers and dates are used for various integrity checks in)]TJ +0 -1.2222 TD +0 Tw +(connection with )Tj +/TT8 1 Tf +7.355 0 TD +(re)Tj +/TT12 1 Tf +0.7783 0 TD +(making a file.)Tj +ET +endstream +endobj +69 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +71 0 obj +<< +/Length 6968 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-19)Tj +/TT17 1 Tf +-39.6667 60.4667 TD +(FILEMAP)Tj +/TT6 1 Tf +10 0 0 10 139.8 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 418.39 568.2 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.1189 Tw +(The property )Tj +/TT10 1 Tf +6.311 0 TD +0 Tw +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +0.1189 Tw +[( is used to store the filemap for the file. This is used to directly)]TJ +-10.5117 -1.2889 TD +0 Tw +(load individual functions from the middle of a file.)Tj +-5.3333 -2.8889 TD +0.1867 Tw +(To compute the root name, )Tj +/TT10 1 Tf +13.1179 0 TD +0 Tw +(ROOTFILENAME)Tj +/TT12 1 Tf +7.2012 0 TD +0.1867 Tw +[( is applied to the name of the file as indicated in the)]TJ +/TT10 1 Tf +-20.3191 -1.2889 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0667 Tw +[( expression appearing at the front of the file, since this name corresponds to the name)]TJ +-6.6011 -1.2889 TD +0.0522 Tw +[(the file was originally made under. The file manager detects that the file being noticed is a compiled)]TJ +0 -1.2222 TD +0.0744 Tw +(file \(regardless of its name\), by the appearance of more than one )Tj +/TT10 1 Tf +29.4773 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0744 Tw +[( expressions. In this)]TJ +-36.0784 -1.2889 TD +0.2978 Tw +(case, each of the files mentioned in the following )Tj +/TT10 1 Tf +24.4246 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.2978 Tw +[( expressions are noticed. For)]TJ +-31.0257 -1.2889 TD +0.03 Tw +(example, if you perform )Tj +/TT10 1 Tf +11.08 0 TD +0.0722 Tw +(\(BCOMPL \(FOO FIE\)\))Tj +/TT12 1 Tf +11.5463 0 TD +0.03 Tw +(, and subsequently loads )Tj +/TT10 1 Tf +11.3148 0 TD +0 Tw +(FOO.DCOM)Tj +/TT12 1 Tf +4.8008 0 TD +0.03 Tw +(, both )Tj +/TT10 1 Tf +2.8173 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.03 Tw +[( and)]TJ +/TT10 1 Tf +-43.3595 -1.2889 TD +0 Tw +(FIE)Tj +/TT12 1 Tf +1.8003 0 TD +( will be noticed.)Tj +-1.8003 -2.9556 TD +(When a file is noticed, its root name is added to the list )Tj +/TT10 1 Tf +24.4463 0 TD +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +(: )Tj +/TT17 1 Tf +-25.9803 -2.5489 TD +(FILELST)Tj +/TT6 1 Tf +10 0 0 10 139.8 395.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 395.46 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(Contains a list of the root names of the files that have been noticed.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(LOADEDFILELST)Tj +/TT6 1 Tf +10 0 0 10 172.2 356.52 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 356.52 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1711 Tw +(Contains a list of the actual names of the files as loaded by )Tj +/TT10 1 Tf +28.2191 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6711 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1711 Tw +[(, etc. For)]TJ +-35.4913 -1.2889 TD +0.0478 Tw +(example, if you perform )Tj +/TT10 1 Tf +11.1511 0 TD +0.1156 Tw +(\(LOAD EDITA.COM;3\), EDITA)Tj +/TT12 1 Tf +21.2345 0 TD +0.0478 Tw +[( will be added to)]TJ +/TT10 1 Tf +-32.3856 -1.2889 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +1.3533 Tw +(, but )Tj +/TT10 1 Tf +4.9391 0 TD +0 Tw +(EDITA.COM;3)Tj +/TT12 1 Tf +12.002 0 TD +1.3533 Tw +[( is added to )]TJ +/TT10 1 Tf +10.8118 0 TD +0 Tw +(LOADEDFILELST)Tj +/TT12 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-39.7548 -1.2889 TD +(LOADEDFILELST)Tj +/TT12 1 Tf +7.8013 0 TD +( is not used by the file manager; it is maintained solely for your benefit.)Tj +/TT4 1 Tf +10 0 0 10 54 262.18 Tm +(Distributing Change Information)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 259.47 m +510.01 259.47 l +S +BT +/TT12 1 Tf +9 0 0 9 78 237.52 Tm +0.0633 Tw +(Periodically, the function )Tj +/TT10 1 Tf +11.5831 0 TD +0 Tw +(UPDATEFILES)Tj +/TT12 1 Tf +6.6011 0 TD +0.0633 Tw +[( is called to find which file\(s\) contain the elements that have)]TJ +-18.1841 -1.2889 TD +0.1222 Tw +(been changed. )Tj +/TT10 1 Tf +7.2138 0 TD +0 Tw +(UPDATEFILES)Tj +/TT12 1 Tf +6.6011 0 TD +0.1222 Tw +[( is called by )]TJ +/TT10 1 Tf +5.9288 0 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6222 0 TD +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.1222 Tw +(, and )Tj +/TT10 1 Tf +2.6873 0 TD +0 Tw +(MAKEFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.1222 Tw +(, i.e., any procedure)Tj +-36.2554 -1.2889 TD +0.0222 Tw +(that requires the )Tj +/TT10 1 Tf +7.5642 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( property to be up to date. This procedure is followed rather than updating the)]TJ +/TT10 1 Tf +-9.9646 -1.2889 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2944 Tw +[( property after each change because scanning )]TJ +/TT10 1 Tf +22.3346 0 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.2944 Tw +[( and examining each file manager)]TJ +-28.9356 -1.2889 TD +0.0733 Tw +(command can be a time-consuming process; this is not so noticeable when performed in conjunction)Tj +0 -1.2222 TD +0 Tw +(with a large operation like loading or writing a file.)Tj +/TT10 1 Tf +0 -2.8889 TD +(UPDATEFILES)Tj +/TT12 1 Tf +6.6011 0 TD +0.03 Tw +[( operates by scanning )]TJ +/TT10 1 Tf +9.9403 0 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.03 Tw +[( and interrogating the file manager commands for each)]TJ +-20.7421 -1.2889 TD +0.1122 Tw +[(file. When \(if\) any files are found that contain the corresponding typed definition, the name of the)]TJ +0 -1.2222 TD +0.36 Tw +(element is added to the value of the property )Tj +/TT10 1 Tf +23.3982 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.36 Tw +[( for the corresponding file. Thus, after)]TJ +/TT10 1 Tf +-25.7986 -1.2889 TD +0 Tw +(UPDATEFILES)Tj +/TT12 1 Tf +6.6011 0 TD +0.1189 Tw +[( has completed operating, the files that need to be dumped are simply those files on)]TJ +/TT10 1 Tf +-6.6011 -1.2889 TD +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.1344 Tw +[( for which )]TJ +/TT10 1 Tf +5.1602 0 TD +0 Tw +(CDR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1344 Tw +[( of their )]TJ +/TT10 1 Tf +4.1055 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1344 Tw +[( property is non-)]TJ +/TT10 1 Tf +7.8106 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1344 Tw +[(. For example, if you load the file )]TJ +/TT10 1 Tf +16.2642 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +-43.5421 -1.2889 TD +0.04 Tw +(containing definitions for )Tj +/TT10 1 Tf +11.6 0 TD +0 Tw +(FOO1)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.54 0 TD +(FOO2)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +(, and )Tj +/TT10 1 Tf +2.5229 0 TD +0 Tw +(FOO3)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +(, edit )Tj +/TT10 1 Tf +2.537 0 TD +0 Tw +(FOO2)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +(, and then call )Tj +/TT10 1 Tf +6.598 0 TD +0 Tw +(UPDATEFILES)Tj +/TT12 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.54 0 TD +(\(GETPROP)Tj +-40.5405 -1.2889 TD +0.0144 Tw +(FOO FILE\))Tj +/TT12 1 Tf +6.6155 0 TD +0.0056 Tw +[( will be )]TJ +/TT10 1 Tf +3.5059 0 TD +0.0144 Tw +(\(\(FOOCOMS . T\) \(FNS FOO2\)\))Tj +/TT12 1 Tf +15.6603 0 TD +0.0056 Tw +[(. If any objects marked as changed have not)]TJ +-25.7818 -1.2889 TD +0.1467 Tw +(been transferred to the )Tj +/TT10 1 Tf +10.8582 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1467 Tw +[( property for some file, e.g., you define a new function but forget \(or)]TJ +-13.2585 -1.2889 TD +0.1089 Tw +(declines\) to add it to the file manager commands for the corresponding file, then both )Tj +/TT10 1 Tf +39.6817 0 TD +0 Tw +(FILES?)Tj +/TT12 1 Tf +3.6006 0 TD +0.1089 Tw +[( and)]TJ +ET +endstream +endobj +72 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +74 0 obj +<< +/Length 4583 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 126 569.54 Tm +(CLEANUP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0078 Tw +[( will print warning messages, and then call )]TJ +/TT10 1 Tf +19.3112 0 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.0078 Tw +[( to permit you to specify on which)]TJ +-30.113 -1.2889 TD +0 Tw +(files these items belong.)Tj +0 -2.8889 TD +(You can also invoke )Tj +/TT10 1 Tf +9.1216 0 TD +(UPDATEFILES)Tj +/TT12 1 Tf +6.6011 0 TD +( directly:)Tj +/TT10 1 Tf +-13.056 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UPDATEFILES)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 247.2053 509 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 509 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(\(UPDATEFILES\))Tj +/TT12 1 Tf +7.8013 0 TD +( will update the )Tj +/TT10 1 Tf +7.2144 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +( properties of the noticed files.)Tj +/TT4 1 Tf +10 0 0 10 102 449.46 Tm +(File Manager Types)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 446.75 m +558.01 446.75 l +S +BT +/TT12 1 Tf +9 0 0 9 126 424.8 Tm +0.0056 Tw +(In addition to the definitions of functions and values of variables, source files in Interlisp can contain a)Tj +0 -1.2222 TD +0.1378 Tw +(variety of other information, e.g. property lists, record declarations, macro definitions, hash arrays,)Tj +T* +0.28 Tw +[(etc. In order to treat such a diverse assortment of data uniformly from the standpoint of file)]TJ +T* +0.0311 Tw +(operations, the file manager uses the concept of a )Tj +/TT8 1 Tf +22.2639 0 TD +(typed definition)Tj +/TT12 1 Tf +6.3929 0 TD +(, of which a function definition is just)Tj +-28.6568 -1.2222 TD +0.1078 Tw +[(one example. A typed definition associates with a name \(usually a symbol\), a definition of a given)]TJ +T* +0.0156 Tw +[(type \(called the file manager type\). Note that the same name may have several definitions of different)]TJ +T* +0.0511 Tw +[(types. For example, a symbol may have both a function definition and a variable definition. The file)]TJ +T* +0.0033 Tw +(manager also keeps track of the file that a particular typed definition is stored on, so one can think of a)Tj +T* +0 Tw +(typed definition as a relation between four elements: a name, a definition, a type, and a file.)Tj +0 -2.8889 TD +0.15 Tw +(A file manager type is an abstract notion of a class of objects which share the property that every)Tj +0 -1.2222 TD +0.0344 Tw +(object of the same file manager type is stored, retrieved, edited, copied etc., by the file manager in the)Tj +T* +0.0022 Tw +(same way. Each file manager type is identified by a symbol, which can be given as an argument to the)Tj +T* +0.0433 Tw +[(functions that manipulate typed definitions. You may define new file manager types, as described in)]TJ +T* +0 Tw +(the Defining New Package Types section.)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(FILEPKGTYPES)Tj +/TT6 1 Tf +10 0 0 10 214.8 244.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 494.41 244.46 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0067 Tw +(The value of )Tj +/TT10 1 Tf +5.7607 0 TD +0 Tw +(FILEPKGTYPES)Tj +/TT12 1 Tf +7.2012 0 TD +0.0067 Tw +[( is a list of all file manager types, including any that you may)]TJ +-12.9619 -1.2889 TD +0 Tw +(have defined.)Tj +-5.3333 -2.8889 TD +(The file manager is initialized with the following built-in file manager types:)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(ADVICE)Tj +/TT6 1 Tf +10 0 0 10 182.4 167.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 167.92 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access "advice" modifying a function \(see Chapter 15\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(ALISTS)Tj +/TT6 1 Tf +10 0 0 10 182.4 128.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 128.98 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +0.2056 Tw +(Used to access objects stored on an association list that is the value of a symbol \(see)Tj +0 -1.2222 TD +0 Tw +(Chapter 3\).)Tj +0 -2 TD +0.0233 Tw +(A variable is declared to have an association list as its value by putting on its property list)Tj +0 -1.2222 TD +0.0922 Tw +(the property )Tj +/TT10 1 Tf +5.9711 0 TD +0 Tw +(VARTYPE)Tj +/TT12 1 Tf +4.2007 0 TD +0.0922 Tw +[( with value )]TJ +/TT10 1 Tf +5.4979 0 TD +0 Tw +(ALIST)Tj +/TT12 1 Tf +3.0005 0 TD +0.0922 Tw +[(. In this case, each dotted pair on the list is an)]TJ +-18.6701 -1.2889 TD +0.0056 Tw +(object of type )Tj +/TT10 1 Tf +6.19 0 TD +0 Tw +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.0056 Tw +[(. When the value of such a variable is changed, only those entries in)]TJ +-9.7906 -1.2889 TD +0.1011 Tw +(the association list that are actually changed or added are marked as changed objects of)Tj +ET +endstream +endobj +75 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +77 0 obj +<< +/Length 5528 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-21)Tj +/TT12 1 Tf +-37 60.6156 TD +(type )Tj +/TT10 1 Tf +2.2291 0 TD +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.0167 Tw +[( \(with "name" )]TJ +/TT10 1 Tf +6.3522 0 TD +0 Tw +(\(SYMBOL )Tj +/TT15 1 Tf +4.8408 0 TD +(KEY)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0167 Tw +[(\). Objects of type )]TJ +/TT10 1 Tf +8.0037 0 TD +0 Tw +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.0167 Tw +[( are dumped via the)]TJ +/TT10 1 Tf +-31.0274 -1.2889 TD +0 Tw +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(ADDVARS)Tj +/TT12 1 Tf +4.2007 0 TD +( file manager commands.)Tj +-9.2422 -2.0667 TD +0.1389 Tw +[(Note that some association lists are used to "implement" other file manager types. For)]TJ +0 -1.2222 TD +0.06 Tw +(example, the value of the global variable )Tj +/TT10 1 Tf +18.5719 0 TD +0 Tw +(USERMACROS)Tj +/TT12 1 Tf +6.001 0 TD +0.06 Tw +[( implements the file manager type)]TJ +/TT10 1 Tf +-24.5728 -1.2889 TD +0 Tw +(USERMACROS)Tj +/TT12 1 Tf +6.001 0 TD +0.1589 Tw +[( and the values of )]TJ +/TT10 1 Tf +8.8652 0 TD +0 Tw +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.1589 Tw +[( and )]TJ +/TT10 1 Tf +2.5107 0 TD +0 Tw +(LISPXHISTORYMACROS)Tj +/TT12 1 Tf +10.8018 0 TD +0.1589 Tw +[( implement)]TJ +-34.7797 -1.2889 TD +0.0656 Tw +(the file manager type )Tj +/TT10 1 Tf +9.9009 0 TD +0 Tw +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0656 Tw +[(. This is indicated by putting on the property list of)]TJ +-16.502 -1.2889 TD +0.04 Tw +(the variable the property )Tj +/TT10 1 Tf +11.408 0 TD +0 Tw +(VARTYPE)Tj +/TT12 1 Tf +4.2007 0 TD +0.04 Tw +[( with value a list of the form )]TJ +/TT10 1 Tf +13.0461 0 TD +0 Tw +(\(ALIST)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.29 0 TD +(FILEPKGTYPE)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(.)Tj +-39.7466 -1.2889 TD +0.2444 Tw +(For example, )Tj +/TT10 1 Tf +6.485 0 TD +0.5856 Tw +[(\(GETPROP LISPXHISTORYMACROS VARTYPE\) => \(ALIST)]TJ +-6.485 -1.2889 TD +0 Tw +(LISPXMACROS\))Tj +/TT12 1 Tf +7.2012 0 TD +(.)Tj +/TT17 1 Tf +-9.8678 -2.5489 TD +(COURIERPROGRAMS)Tj +/TT6 1 Tf +10 0 0 10 183 447.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 447.4 Tm +([File Manager Type])Tj +-31.01 -1.9933 TD +(Used to access Courier programs \(see Chapter 31\))Tj +/TT6 1 Tf +10 0 0 10 323.8726 429.46 Tm +(.)Tj +/TT17 1 Tf +9 0 0 9 102 407.12 Tm +(EXPRESSIONS)Tj +/TT6 1 Tf +10 0 0 10 161.4 407.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 407.12 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +0.0089 Tw +(Used to access lisp expressions that are put on a file by using the )Tj +/TT10 1 Tf +28.8832 0 TD +0 Tw +(REMEMBER)Tj +/TT12 1 Tf +4.8008 0 TD +0.0089 Tw +[( programmers)]TJ +-33.684 -1.2889 TD +0.0556 Tw +(assistant command \(Chapter 13\), or by explicitly putting the )Tj +/TT10 1 Tf +27.313 0 TD +0 Tw +(P)Tj +/TT12 1 Tf +0.6001 0 TD +0.0556 Tw +[( file manager command on)]TJ +-27.9131 -1.2889 TD +0 Tw +(the filecoms. )Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(FIELDS)Tj +/TT6 1 Tf +10 0 0 10 134.4 344.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 344.98 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +0.0144 Tw +[(Used to access fields of records. The "definition" of an object of type )]TJ +/TT10 1 Tf +30.5636 0 TD +0 Tw +(FIELDS)Tj +/TT12 1 Tf +3.6006 0 TD +0.0144 Tw +[( is a list of all)]TJ +-34.1641 -1.2889 TD +0 Tw +(the record declarations which contain the name. See Chapter 8.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(FILEPKGCOMS)Tj +/TT6 1 Tf +10 0 0 10 161.4097 294.44 Tm +-0.0008 Tc +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 294.44 Tm +0 Tc +([File Manager Type])Tj +-31.01 -1.8444 TD +0.0089 Tw +[(Used to access file manager commands and types. A single name can be defined both as a)]TJ +0 -1.2222 TD +0.1789 Tw +[(file manager type and a file manager command. The "definition" of an object of type)]TJ +/TT10 1 Tf +T* +0 Tw +(FILEPKGCOMS)Tj +/TT12 1 Tf +6.6011 0 TD +0.3089 Tw +[( is a list structure of the form )]TJ +/TT10 1 Tf +15.436 0 TD +0.7411 Tw +(\(\(COM . )Tj +/TT15 1 Tf +6.283 0 TD +0 Tw +(COMPROPS)Tj +/TT10 1 Tf +4.8008 0 TD +0.7411 Tw +(\) \(TYPE .)Tj +/TT15 1 Tf +-33.1208 -1.2889 TD +0 Tw +(TYPEPROPS)Tj +/TT10 1 Tf +5.4009 0 TD +(\)\))Tj +/TT12 1 Tf +1.2002 0 TD +0.0389 Tw +(, where )Tj +/TT15 1 Tf +3.5968 0 TD +0 Tw +(COMPROPS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0389 Tw +[( is a property list specifying how the name is defined as)]TJ +-14.9987 -1.2889 TD +0.4722 Tw +(a file manager command by )Tj +/TT10 1 Tf +14.9578 0 TD +0 Tw +(FILEPKGCOM)Tj +/TT12 1 Tf +6.001 0 TD +0.4722 Tw +[( \(see the Defining New File Manager)]TJ +-20.9588 -1.2889 TD +0.2978 Tw +(Commands section\), and )Tj +/TT15 1 Tf +12.1482 0 TD +0 Tw +(TYPEPROPS)Tj +/TT12 1 Tf +5.4009 0 TD +0.2978 Tw +[( is a property list specifying how the name is)]TJ +-17.5491 -1.2889 TD +0.1744 Tw +(defined as a file manager type by )Tj +/TT10 1 Tf +16.1415 0 TD +0 Tw +(FILEPKGTYPE)Tj +/TT12 1 Tf +6.6011 0 TD +0.1744 Tw +[( \(see the Defining New File Manager)]TJ +-22.7426 -1.2889 TD +0 Tw +(Types section\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(FILES)Tj +/TT6 1 Tf +10 0 0 10 129 175.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 175.5 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +0.2478 Tw +[(Used to access files. This file manager type is most useful for renaming files. The)]TJ +0 -1.2222 TD +0 Tw +("definition" of a file is not a useful structure.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(FILEVARS)Tj +/TT6 1 Tf +10 0 0 10 145.2 125.56 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 125.56 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access Filevars \(see the FileVars section\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(FNS)Tj +/TT6 1 Tf +10 0 0 10 118.2 86.62 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 405.09 86.62 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access function definitions.)Tj +ET +endstream +endobj +78 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +81 0 obj +<< +/Length 4521 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-22)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 568.2 Tm +(I.S.OPRS)Tj +/TT6 1 Tf +10 0 0 10 193.2 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 568.2 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access the definitions of iterative statement operators \(see Chapter 9\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(LISPXMACROS)Tj +/TT6 1 Tf +10 0 0 10 209.4 529.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 529.26 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +0.0111 Tw +(Used to access programmers assistant commands defined on the variables )Tj +/TT10 1 Tf +33.3914 0 TD +0 Tw +(LISPXMACROS)Tj +/TT12 1 Tf +-33.3914 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(LISPXHISTORYMACROS)Tj +/TT12 1 Tf +10.8018 0 TD +( \(see Chapter 13\).)Tj +/TT17 1 Tf +-15.4113 -2.5489 TD +(MACROS)Tj +/TT6 1 Tf +10 0 0 10 182.4 478.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 478.12 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access macro definitions \(see Chapter 10\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(PROPS)Tj +/TT6 1 Tf +10 0 0 10 177 439.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 439.18 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +0.1278 Tw +[(Used to access objects stored on the property list of a symbol \(see Chapter 2\). When a)]TJ +0 -1.2222 TD +0.4544 Tw +(property is changed or added, an object of type )Tj +/TT10 1 Tf +25.216 0 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +0.4544 Tw +(, with "name" )Tj +/TT10 1 Tf +7.5826 0 TD +0 Tw +(\(SYMBOL)Tj +/TT15 1 Tf +-35.799 -1.2889 TD +(PROPNAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +( is marked as being changed.)Tj +-5.4009 -2.0667 TD +0.11 Tw +[(Note that some symbol properties are used to implement other file manager types. For)]TJ +0 -1.2222 TD +0.1778 Tw +(example, the property )Tj +/TT10 1 Tf +10.569 0 TD +0 Tw +(MACRO)Tj +/TT12 1 Tf +3.0005 0 TD +0.1778 Tw +[( implements the file manager type )]TJ +/TT10 1 Tf +16.4441 0 TD +0 Tw +(MACROS)Tj +/TT12 1 Tf +3.6006 0 TD +0.1778 Tw +(, the property)Tj +/TT10 1 Tf +-33.6142 -1.2889 TD +0 Tw +(ADVICE)Tj +/TT12 1 Tf +3.6006 0 TD +0.11 Tw +[( implements )]TJ +/TT10 1 Tf +5.9588 0 TD +0 Tw +(ADVICE)Tj +/TT12 1 Tf +3.6006 0 TD +0.11 Tw +[(, etc. This is indicated by putting the property )]TJ +/TT10 1 Tf +21.7899 0 TD +0 Tw +(PROPTYPE)Tj +/TT12 1 Tf +4.8008 0 TD +(,)Tj +-39.7507 -1.2889 TD +0.2444 Tw +[(with value of the file manager type on the property list of the property name. For)]TJ +0 -1.2222 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.3135 0 TD +0.1556 Tw +[(\(GETPROP MACRO PROPTYPE\) => MACROS)]TJ +/TT12 1 Tf +23.737 0 TD +0.0644 Tw +[(. When such a property is)]TJ +-28.0505 -1.2889 TD +0.2889 Tw +[(changed or added, an object of the corresponding file manager type is marked. If)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(\(GETPROP)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.3267 0 TD +(PROPNAME)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.3267 0 TD +0.1833 Tw +[(PROPTYPE\) => IGNORE)]TJ +/TT12 1 Tf +13.9355 0 TD +0.0767 Tw +[(, the change is ignored. The )]TJ +/TT10 1 Tf +13.1656 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(,)Tj +/TT10 1 Tf +-39.7563 -1.2889 TD +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6078 0 TD +(FILEDATES)Tj +/TT12 1 Tf +5.4009 0 TD +0.1078 Tw +[(, etc. properties are all handled this way. \()]TJ +/TT10 1 Tf +19.7141 0 TD +0 Tw +(IGNORE)Tj +/TT12 1 Tf +3.6006 0 TD +0.1078 Tw +[( cannot be the)]TJ +-33.5241 -1.2889 TD +0 Tw +(name of a file manager type implemented as a property\). )Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(RECORDS)Tj +/TT6 1 Tf +10 0 0 10 187.8 268.04 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 268.04 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access record declarations \(see Chapter 8\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(RESOURCES)Tj +/TT6 1 Tf +10 0 0 10 198.6 229.1 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 229.1 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access resources \(see Chapter 12\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(TEMPLATES)Tj +/TT6 1 Tf +10 0 0 10 198.6 190.16 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 190.16 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access Masterscope templates \(see Chapter 19\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(USERMACROS)Tj +/TT6 1 Tf +10 0 0 10 204 151.22 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 151.22 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access user edit macros \(see Chapter 16\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(VARS)Tj +/TT6 1 Tf +10 0 0 10 171.6 112.28 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 453.09 112.28 Tm +([File Manager Type])Tj +-31.01 -1.8444 TD +(Used to access top-level variable values.)Tj +ET +endstream +endobj +82 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +84 0 obj +<< +/Length 5813 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-23)Tj +/TT4 1 Tf +10 0 0 10 78 568.2 Tm +(Functions for Manipulating Typed Definitions)Tj +/TT12 1 Tf +9 0 0 9 78 544.54 Tm +0.0267 Tw +(The functions described below can be used to manipulate typed definitions, without needing to know)Tj +0 -1.2222 TD +0.1367 Tw +[(how the manipulations are done. For example,)]TJ +/TT10 1 Tf +21.8136 0 TD +0.3289 Tw +[( \(GETDEF FOO FNS\))]TJ +/TT12 1 Tf +12.3885 0 TD +0.1367 Tw +[( will return the function)]TJ +-34.2021 -1.2889 TD +0.1511 Tw +(definition of )Tj +/TT10 1 Tf +6.0132 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6511 0 TD +0.3611 Tw +(\(GETDEF FOO VARS\))Tj +/TT12 1 Tf +12.1241 0 TD +0.1511 Tw +[( will return the variable value of )]TJ +/TT10 1 Tf +15.5734 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.1511 Tw +[(, etc. All of the)]TJ +-37.9623 -1.2889 TD +0 Tw +(functions use the following conventions:)Tj +2.6667 -2.3333 TD +[(1.)-1916.7(All functions which make destructive changes are undoable.)]TJ +T* +0.0356 Tw +[(2.)-1916.7(Any argument that expects a list of symbols will also accept a single symbol, operating as)]TJ +1.3333 -1.2222 TD +0.0001 Tc +0.0032 Tw +(though it were enclosed in a list. For example, if the argument )Tj +/TT15 1 Tf +27.9349 0 TD +0 Tc +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0001 Tc +0.0032 Tw +( should be a list of files,)Tj +-30.9354 -1.2889 TD +0 Tc +0 Tw +(it may also be a single file.)Tj +-1.3333 -2.3333 TD +(3.)Tj +/TT15 1 Tf +2.6667 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1078 Tw +[( is a file manager type. )]TJ +/TT15 1 Tf +11.2208 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3578 0 TD +0.26 Tw +(= NIL)Tj +/TT12 1 Tf +3.2605 0 TD +0.1078 Tw +[( is equivalent to )]TJ +/TT15 1 Tf +7.6943 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3578 0 TD +0.26 Tw +(= FNS)Tj +/TT12 1 Tf +3.2605 0 TD +0.1078 Tw +[(. The singular)]TJ +-34.6861 -1.2889 TD +0.1489 Tw +(form of a file manager type is also recognized, e.g. )Tj +/TT15 1 Tf +23.9196 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3989 0 TD +0.3578 Tw +(= VAR)Tj +/TT12 1 Tf +3.3583 0 TD +0.1489 Tw +[( is equivalent to )]TJ +/TT15 1 Tf +7.8587 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3989 0 TD +(=)Tj +-40.7351 -1.2889 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-3.7337 -2.4 TD +(4.)Tj +/TT15 1 Tf +2.6667 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(= NIL)Tj +/TT12 1 Tf +3.0005 0 TD +( is equivalent to )Tj +/TT15 1 Tf +7.2632 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(= FILELST)Tj +/TT12 1 Tf +5.4009 0 TD +(.)Tj +-24.8322 -2.4 TD +(5.)Tj +/TT15 1 Tf +2.6667 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0622 Tw +[( is used to indicate the source of a definition, that is, where the definition should)]TJ +-4.9339 -1.2889 TD +0 Tw +(be found. )Tj +/TT15 1 Tf +4.707 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +( can be one of: )Tj +/TT17 1 Tf +-1.841 -2.0667 TD +(CURRENT)Tj +/TT12 1 Tf +5.5333 0 TD +(Get the definition currently in effect.)Tj +/TT17 1 Tf +-4.3333 -2.0667 TD +(SAVED)Tj +/TT12 1 Tf +4.3333 0 TD +(Get the "saved" definition, as stored by )Tj +/TT10 1 Tf +17.4224 0 TD +(SAVEDEF)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +/TT17 1 Tf +-25.3564 -2.0667 TD +(FILE)Tj +/TT12 1 Tf +3.7333 0 TD +0.02 Tw +(Get the definition contained on the \(first\) file determined by)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +(. )Tj +/TT10 1 Tf +-4.2007 -2.0667 TD +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0511 Tw +[( is called with )]TJ +/TT15 1 Tf +6.5682 0 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.3011 0 TD +0.1233 Tw +(= T)Tj +/TT12 1 Tf +1.9236 0 TD +0.0511 Tw +(, so that if the )Tj +/TT10 1 Tf +6.4709 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +-22.465 -1.2889 TD +0.1756 Tw +(library package is loaded, the )Tj +/TT10 1 Tf +14.1351 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1756 Tw +[( data base will be)]TJ +-18.3358 -1.2889 TD +0 Tw +(used to find the file containing the definition.)Tj +/TT17 1 Tf +-1.9333 -2 TD +(?)Tj +/TT12 1 Tf +1.9333 0 TD +0.07 Tw +(Get the definition currently in effect if there is one, else the)Tj +0 -1.2889 TD +0.2778 Tw +(saved definition if there is one, otherwise the definition)Tj +0 -1.2222 TD +0.4278 Tw +(from a file determined by )Tj +/TT10 1 Tf +13.6848 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.4278 Tw +[(. Like specifying)]TJ +/TT10 1 Tf +-17.8855 -1.2889 TD +0 Tw +(CURRENT)Tj +/TT12 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6567 0 TD +(SAVED)Tj +/TT12 1 Tf +3.0005 0 TD +0.1567 Tw +(, and )Tj +/TT10 1 Tf +2.7562 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1567 Tw +[( in order, and taking the first)]TJ +-13.0144 -1.2889 TD +0 Tw +(definition that is found.)Tj +-6.1722 -2 TD +(a file name)Tj +-3.1356 -1 TD +0.1611 Tw +[(a )161.1(list )161.1(of )161.1(file )161.1(names)-1335.1(Get the definition from the first of the indicated files that)]TJ +9.3078 -1.2222 TD +0 Tw +(contains one.)Tj +/TT17 1 Tf +-3.1333 -2 TD +(NIL)Tj +/TT12 1 Tf +3.1333 0 TD +0.03 Tw +(In most cases, giving )Tj +/TT15 1 Tf +9.5795 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.28 0 TD +0.0733 Tw +(= NIL)Tj +/TT12 1 Tf +3.0738 0 TD +0.03 Tw +[( \(or not specifying it at)]TJ +-16.5339 -1.2889 TD +0.0644 Tw +(all\) is the same as giving )Tj +/TT10 1 Tf +11.4545 0 TD +0 Tw +(?)Tj +/TT12 1 Tf +0.6001 0 TD +0.0644 Tw +(, to get either the current, saved,)Tj +-12.0546 -1.2889 TD +0.0267 Tw +[(or filed definition. However, with )]TJ +/TT10 1 Tf +15.6009 0 TD +0 Tw +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT15 1 Tf +0.5267 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.2767 0 TD +0.0633 Tw +(= NIL)Tj +/TT12 1 Tf +-23.6054 -1.2889 TD +0.0767 Tw +(is interpreted as equal to )Tj +/TT15 1 Tf +11.5415 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.3267 0 TD +0.1844 Tw +(= CURRENT)Tj +/TT12 1 Tf +5.5853 0 TD +0.0767 Tw +(, which only)Tj +-21.0541 -1.2889 TD +0 Tw +(tests if there is a current definition.)Tj +ET +endstream +endobj +85 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +87 0 obj +<< +/Length 7590 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-24)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 162 569.54 Tm +0.2144 Tw +(The operation of most of the functions described below can be changed or extended by)Tj +0 -1.2222 TD +0.2333 Tw +(modifying the appropriate properties for the corresponding file manager type using the)Tj +T* +0 Tw +(function )Tj +/TT10 1 Tf +3.957 0 TD +(FILEPKGTYPE)Tj +/TT12 1 Tf +6.6011 0 TD +(, described in the Defining New File Manager Types section.)Tj +/TT10 1 Tf +-11.8914 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(GETDEF)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPTIONS)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 315.6193 524.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 524.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1689 Tw +(Returns the definition of )Tj +/TT15 1 Tf +11.7508 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1689 Tw +(, of type )Tj +/TT15 1 Tf +4.348 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1689 Tw +(, from )Tj +/TT15 1 Tf +3.2445 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.1689 Tw +[(. For most types, )]TJ +/TT10 1 Tf +8.6565 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +-36.4011 -1.2889 TD +0.0333 Tw +(returns the expression which would be pretty printed when dumping )Tj +/TT15 1 Tf +31.3841 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0333 Tw +[( as )]TJ +/TT15 1 Tf +1.4905 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0333 Tw +[(. For)]TJ +-37.6754 -1.2889 TD +0.0878 Tw +(example, for )Tj +/TT15 1 Tf +5.9485 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3378 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3378 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.0878 Tw +(, an )Tj +/TT10 1 Tf +2.0076 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0878 Tw +[( definition is returned, for )]TJ +/TT15 1 Tf +12.1298 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3378 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3378 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0878 Tw +(, the value of)Tj +/TT15 1 Tf +-34.0391 -1.2889 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( is returned, etc.)Tj +/TT15 1 Tf +-2.4004 -2.0667 TD +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +( is a list which specifies certain options:)Tj +/TT17 1 Tf +0.9326 -2.2156 TD +(NOERROR)Tj +/TT10 1 Tf +5.5333 0 TD +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.08 Tw +[( causes an error if an appropriate definition cannot)]TJ +-3.6006 -1.2889 TD +0.0856 Tw +(be found, unless )Tj +/TT15 1 Tf +7.7664 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0856 Tw +[( is or contains )]TJ +/TT10 1 Tf +6.6928 0 TD +0 Tw +(NOERROR)Tj +/TT12 1 Tf +4.2007 0 TD +0.0856 Tw +[(. In this)]TJ +-22.8606 -1.2889 TD +0 Tw +(case, )Tj +/TT10 1 Tf +2.8567 0 TD +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.51 Tw +[( returns the value of the )]TJ +/TT10 1 Tf +13.8554 0 TD +0 Tw +(NULLDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.51 Tw +[( file)]TJ +-24.5134 -1.2889 TD +0.0256 Tw +(manager type property \(see the Defining New File Manager)Tj +0 -1.2222 TD +0 Tw +(Types section\), usually )Tj +/TT10 1 Tf +10.3657 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +-16.8238 -2.0667 TD +[(a string)-1333.6(If )]TJ +/TT15 1 Tf +5.9344 0 TD +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.3567 Tw +[( is or contains a string, that string will be)]TJ +-5.4773 -1.2889 TD +0.2967 Tw +(returned if no definition is found \(and )Tj +/TT10 1 Tf +19.1963 0 TD +0 Tw +(NOERROR)Tj +/TT12 1 Tf +4.2007 0 TD +0.2967 Tw +[( is not)]TJ +-23.397 -1.2889 TD +0.0356 Tw +[(among the options\). The caller can thus determine whether)]TJ +0 -1.2222 TD +0.2133 Tw +(a definition was found, even for types for which )Tj +/TT10 1 Tf +23.4566 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2133 Tw +[( or)]TJ +/TT10 1 Tf +-25.2569 -1.2889 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +( are acceptable definitions.)Tj +/TT17 1 Tf +-8.5339 -2.2156 TD +(NOCOPY)Tj +/TT10 1 Tf +4.9333 0 TD +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.0722 Tw +[( returns a copy of the definition unless )]TJ +/TT15 1 Tf +17.8297 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0722 Tw +[( is)]TJ +-25.631 -1.2889 TD +0 Tw +(or contains )Tj +/TT10 1 Tf +5.1357 0 TD +(NOCOPY)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT17 1 Tf +-12.4697 -2.2156 TD +(EDIT)Tj +/TT12 1 Tf +3.7333 0 TD +(If )Tj +/TT15 1 Tf +1.0166 0 TD +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0967 Tw +[( is or contains )]TJ +/TT10 1 Tf +6.7373 0 TD +0 Tw +(EDIT)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5967 0 TD +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.0967 Tw +[( returns a copy of)]TJ +-18.5522 -1.2889 TD +0.1156 Tw +(the definition unless it is possible to edit the definition "in)Tj +0 -1.2222 TD +0.08 Tw +[(place." With some file manager types, such as functions, it)]TJ +T* +0.4411 Tw +(is meaningful \(and efficient\) to edit the definition by)Tj +T* +0.2167 Tw +(destructively modifying the list structure, without calling)Tj +/TT10 1 Tf +T* +0 Tw +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1067 Tw +[(. However, some file manager types \(like records\))]TJ +-3.6006 -1.2889 TD +0.1989 Tw +(need to be "installed" with )Tj +/TT10 1 Tf +12.8699 0 TD +0 Tw +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1989 Tw +[( after they are edited.)]TJ +-16.4705 -1.2889 TD +0.1178 Tw +(The default )Tj +/TT10 1 Tf +5.5525 0 TD +0 Tw +(EDITDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.1178 Tw +[( \(see the Defining New File Manager)]TJ +-9.7531 -1.2889 TD +0.4511 Tw +(Types section\) calls )Tj +/TT10 1 Tf +10.1507 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.4511 Tw +[( with )]TJ +/TT15 1 Tf +3.4354 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.4511 Tw +[( of )]TJ +/TT10 1 Tf +2.2811 0 TD +0 Tw +(\(EDIT)Tj +-23.6685 -1.2889 TD +(NOCOPY\))Tj +/TT12 1 Tf +4.2007 0 TD +0.0433 Tw +(, so it doesnt use a copy unless it has to, and only)Tj +-4.2007 -1.2889 TD +0 Tw +(calls )Tj +/TT10 1 Tf +2.2575 0 TD +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.0578 Tw +[( if the result of editing is not )]TJ +/TT10 1 Tf +13.1756 0 TD +0 Tw +(EQUAL)Tj +/TT12 1 Tf +3.0005 0 TD +0.0578 Tw +[( to the old)]TJ +-22.0342 -1.2889 TD +0 Tw +(definition.)Tj +/TT17 1 Tf +-4.9333 -2 TD +(NODWIM)Tj +/TT12 1 Tf +4.9333 0 TD +(A )Tj +/TT10 1 Tf +1.1256 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.0978 Tw +[( definition will be dwimified if it is likely to contain)]TJ +-2.9259 -1.2889 TD +0 Tw +(CLISP unless )Tj +/TT15 1 Tf +6.0884 0 TD +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +( is or contains )Tj +/TT10 1 Tf +6.3506 0 TD +(NODWIM)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-33.5736 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PUTDEF)Tj +/TT12 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(DEFINITION)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REASON)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 331.822 95.24 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 95.24 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Defines )Tj +/TT15 1 Tf +3.7574 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1456 Tw +[( of type )]TJ +/TT15 1 Tf +4.028 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1456 Tw +[( with )]TJ +/TT15 1 Tf +2.8243 0 TD +0 Tw +(DEFINITION)Tj +/TT12 1 Tf +6.001 0 TD +0.1456 Tw +[(. For )]TJ +/TT15 1 Tf +2.9337 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3956 0 TD +0.3489 Tw +(= FNS)Tj +/TT12 1 Tf +3.3494 0 TD +0.1456 Tw +(, does a )Tj +/TT10 1 Tf +3.9962 0 TD +0 Tw +(DEFINE)Tj +/TT12 1 Tf +3.6006 0 TD +0.1456 Tw +(; for)Tj +/TT15 1 Tf +-38.0873 -1.2889 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +(, does a )Tj +/TT10 1 Tf +3.5596 0 TD +(SAVESET)Tj +/TT12 1 Tf +4.2007 0 TD +(, etc.)Tj +ET +endstream +endobj +88 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +90 0 obj +<< +/Length 9948 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-25)Tj +/TT12 1 Tf +-37 60.6156 TD +(For )Tj +/TT15 1 Tf +1.8893 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3922 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3922 0 TD +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6422 0 TD +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1422 Tw +[( establishes the command list, notices )]TJ +/TT15 1 Tf +17.6356 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1422 Tw +(, and then calls)Tj +/TT10 1 Tf +-32.9535 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0833 Tw +[( to actually dump the file )]TJ +/TT15 1 Tf +11.8623 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0833 Tw +(, copying functions if necessary from the "old")Tj +-19.0635 -1.2889 TD +0 Tw +(file \(supplied as part of )Tj +/TT15 1 Tf +10.5029 0 TD +(DEFINITION)Tj +/TT12 1 Tf +6.001 0 TD +(\).)Tj +/TT10 1 Tf +-16.5039 -2.0667 TD +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.3344 Tw +[( calls )]TJ +/TT10 1 Tf +3.1186 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.3344 Tw +[( \(see the Mrking Changes section\) to mark )]TJ +/TT15 1 Tf +21.5667 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.3344 Tw +[( as)]TJ +-38.4875 -1.2889 TD +0 Tw +(changed, giving a reason of )Tj +/TT15 1 Tf +12.3999 0 TD +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +(. If )Tj +/TT15 1 Tf +1.6699 0 TD +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, the default is )Tj +/TT10 1 Tf +6.4951 0 TD +(DEFINED)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +-34.9819 -2.0667 TD +(If )Tj +/TT15 1 Tf +1.1188 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.4489 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4489 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6989 0 TD +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1989 Tw +[( prints a warning if you try to redefine a function on the list)]TJ +/TT10 1 Tf +-11.1168 -1.2889 TD +0 Tw +(UNSAFE.TO.MODIFY.FNS)Tj +/TT12 1 Tf +12.002 0 TD +( \(see Chapter 10\).)Tj +/TT10 1 Tf +-14.6686 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(HASDEF)Tj +/TT12 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SPELLFLG)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 273.0202 463 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 463 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.8459 0 TD +(\(OR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3689 0 TD +(NAME)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3689 0 TD +(T\))Tj +/TT12 1 Tf +1.2002 0 TD +0.1189 Tw +[( if )]TJ +/TT15 1 Tf +1.3618 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1189 Tw +[( is the name of something of type )]TJ +/TT15 1 Tf +15.8862 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1189 Tw +[(. If not, attempts)]TJ +-32.0333 -1.2889 TD +0.0544 Tw +(spelling correction if )Tj +/TT15 1 Tf +9.5002 0 TD +0 Tw +(SPELLFLG)Tj +/TT12 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.3044 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3044 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0544 Tw +(, and returns the spelling-corrected )Tj +/TT15 1 Tf +16.0232 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0544 Tw +[(. Otherwise)]TJ +-34.5337 -1.2889 TD +0 Tw +(returns )Tj +/TT10 1 Tf +3.5985 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(. )Tj +/TT10 1 Tf +0.6444 0 TD +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1444 Tw +[( for type FNS \(or NIL\) indicates that )]TJ +/TT15 1 Tf +17.3719 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1444 Tw +[( has an editable source)]TJ +-29.4161 -1.2889 TD +0.1011 Tw +(definition. If )Tj +/TT15 1 Tf +5.9542 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1011 Tw +[( is a function that exists on a file for which you have loaded only the)]TJ +-8.3546 -1.2889 TD +0 Tw +(compiled version and not the source, )Tj +/TT10 1 Tf +16.6021 0 TD +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +( returns NIL.)Tj +/TT10 1 Tf +-20.2026 -2.0667 TD +(\(HASDEF NIL)Tj +/TT19 1 Tf +6.6011 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +( if )Tj +/TT10 1 Tf +1.124 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( has a valid definition.)Tj +-17.0801 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9355 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.2656 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2656 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT15 1 Tf +0.5156 0 TD +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.0156 Tw +[( interprets this as equal to )]TJ +/TT15 1 Tf +11.7437 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.2656 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2656 0 TD +(CURRENT)Tj +/TT12 1 Tf +4.2007 0 TD +0.0156 Tw +(, which only tests)Tj +-32.2599 -1.2889 TD +0 Tw +(if there is a current definition.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TYPESOF)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(POSSIBLETYPES)Tj +/TT8 1 Tf +7.8013 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(IMPOSSIBLETYPES)Tj +/TT8 1 Tf +9.0015 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 364.8343 328.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 328.86 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1 Tw +(Returns a list of the types in )Tj +/TT15 1 Tf +13.2845 0 TD +0 Tw +(POSSIBLETYPES)Tj +/TT12 1 Tf +7.8013 0 TD +0.1 Tw +[( but not in )]TJ +/TT15 1 Tf +5.2096 0 TD +0 Tw +(IMPOSSIBLETYPES)Tj +/TT12 1 Tf +9.0015 0 TD +0.1 Tw +[( for which)]TJ +/TT15 1 Tf +-35.2968 -1.2889 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( has a definition. )Tj +/TT10 1 Tf +7.8379 0 TD +(FILEPKGTYPES)Tj +/TT12 1 Tf +7.2012 0 TD +( is used if )Tj +/TT15 1 Tf +4.4556 0 TD +(POSSIBLETYPES)Tj +/TT12 1 Tf +7.8013 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-35.3781 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(COPYDEF)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OLD)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NEW)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPTIONS)Tj +/TT10 1 Tf +4.2007 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 291.472 277.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 277.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Defines )Tj +/TT15 1 Tf +3.7274 0 TD +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.1156 Tw +[( to have a copy of the definition of )]TJ +/TT15 1 Tf +16.4121 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1156 Tw +[( by doing )]TJ +/TT10 1 Tf +4.792 0 TD +0 Tw +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1156 Tw +[( on a copy of the)]TJ +-32.1326 -1.2889 TD +0.1444 Tw +(definition retrieved by )Tj +/TT10 1 Tf +10.6448 0 TD +0 Tw +(\(GETDEF)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.3944 0 TD +(OLD)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3944 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.3944 0 TD +(SOURCE)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.3944 0 TD +(OPTIONS)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1444 Tw +(. )Tj +/TT15 1 Tf +1.0389 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.1444 Tw +[( is substituted for)]TJ +/TT15 1 Tf +-31.8645 -1.2889 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +( in the copied definition, in a manner that may depend on the )Tj +/TT15 1 Tf +27.4092 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(. )Tj +-31.6099 -2.0667 TD +0.2278 Tw +(For example, )Tj +/TT10 1 Tf +6.4516 0 TD +0.5467 Tw +(\(COPYDEF PDQ RST FILES\))Tj +/TT12 1 Tf +17.2425 0 TD +0.2278 Tw +[( sets up )]TJ +/TT10 1 Tf +4.2903 0 TD +0 Tw +(RSTCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2278 Tw +[( to be a copy of)]TJ +/TT10 1 Tf +-32.1851 -1.2889 TD +0 Tw +(PDQCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2067 Tw +(, changes things like )Tj +/TT10 1 Tf +10.022 0 TD +0.4944 Tw +(\(VARS * PDQVARS\))Tj +/TT12 1 Tf +10.5905 0 TD +0.2067 Tw +[( to be )]TJ +/TT10 1 Tf +3.2743 0 TD +0.4944 Tw +(\(VARS * RSTVARS\))Tj +/TT12 1 Tf +10.5905 0 TD +0.2067 Tw +[( in)]TJ +/TT10 1 Tf +-38.6779 -1.2889 TD +0 Tw +(RSTCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +0.17 Tw +(, and performs a )Tj +/TT10 1 Tf +8.1785 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.17 Tw +[( on )]TJ +/TT10 1 Tf +1.9679 0 TD +0 Tw +(RST)Tj +/TT12 1 Tf +1.8003 0 TD +0.17 Tw +[( such that the appropriate definitions get)]TJ +-20.9482 -1.2889 TD +0 Tw +(copied from )Tj +/TT10 1 Tf +5.6284 0 TD +(PDQ)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-7.4287 -2.0667 TD +(COPYDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.0678 Tw +[( disables the )]TJ +/TT10 1 Tf +5.9133 0 TD +0 Tw +(NOCOPY)Tj +/TT12 1 Tf +3.6006 0 TD +0.0678 Tw +[( option of )]TJ +/TT10 1 Tf +4.7243 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.0678 Tw +(, so )Tj +/TT8 1 Tf +1.8553 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +2.3325 0 TD +0.0678 Tw +[( will always have a )]TJ +/TT8 1 Tf +9.0269 0 TD +0 Tw +(copy)Tj +/TT12 1 Tf +1.8511 0 TD +0.0678 Tw +[( of the)]TJ +-37.1052 -1.2889 TD +0 Tw +(definition of )Tj +/TT15 1 Tf +5.7109 0 TD +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-7.5112 -2.0667 TD +(COPYDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.1178 Tw +[( substitutes )]TJ +/TT15 1 Tf +5.5149 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.1178 Tw +[( for )]TJ +/TT15 1 Tf +2.0095 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1178 Tw +[( throughout the definition of )]TJ +/TT15 1 Tf +13.5025 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1178 Tw +[(. This is usually the)]TJ +-30.6284 -1.2889 TD +0.1344 Tw +(right thing to do, but in some cases, e.g., where the old name appears within a quoted)Tj +0 -1.2222 TD +0 Tw +(expression but was not used in the same context, you must re-edit the definition.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(DELDEF)Tj +/TT12 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 192.9079 90.78 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 90.78 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Removes the definition of )Tj +/TT15 1 Tf +11.6416 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( as a )Tj +/TT15 1 Tf +2.1738 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( that is currently in effect.)Tj +ET +endstream +endobj +91 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +93 0 obj +<< +/Length 9481 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-26)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(SHOWDEF)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 270.1614 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0422 Tw +(Prettyprints the definition of )Tj +/TT15 1 Tf +13.0727 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0422 Tw +[( as a )]TJ +/TT15 1 Tf +2.3005 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0422 Tw +[( to )]TJ +/TT15 1 Tf +1.4565 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0422 Tw +[(. This shows you how )]TJ +/TT15 1 Tf +10.3896 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0422 Tw +[( would)]TJ +-36.8208 -1.2889 TD +0 Tw +(be written to a file. Used by )Tj +/TT10 1 Tf +12.6826 0 TD +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +( \(see the Storing Files section\).)Tj +/TT10 1 Tf +-21.9504 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(EDITDEF)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(EDITCOMS)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 326.4202 517.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 517.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Edits the definition of )Tj +/TT15 1 Tf +9.8608 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( as a )Tj +/TT15 1 Tf +2.1738 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(. Essentially performs)Tj +/TT10 1 Tf +-11.5021 -1.7778 TD +(\(PUTDEF )Tj +/TT15 1 Tf +4.8008 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.6001 0 TD +(TYPE)Tj +/TT10 1 Tf +-7.8013 -1 TD +( \(EDITE \(GETDEF )Tj +/TT15 1 Tf +10.8018 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.6001 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.6001 0 TD +(SOURCE)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +-20.4033 -1 TD +( )Tj +/TT15 1 Tf +5.4009 0 TD +(EDITCOMS)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\))Tj +-18.2017 -2.3267 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(SAVEDEF)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(DEFINITION)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 302.5667 445.52 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 445.52 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0956 Tw +(Sets the "saved" definition of )Tj +/TT15 1 Tf +13.4006 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0956 Tw +[( as a )]TJ +/TT15 1 Tf +2.4605 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0956 Tw +[( to )]TJ +/TT15 1 Tf +1.5632 0 TD +0 Tw +(DEFINITION)Tj +/TT12 1 Tf +6.001 0 TD +0.0956 Tw +[(. If )]TJ +/TT15 1 Tf +1.9566 0 TD +0 Tw +(DEFINITION)Tj +/TT12 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.3456 0 TD +0.2289 Tw +(= NIL)Tj +/TT12 1 Tf +3.2294 0 TD +0 Tw +(,)Tj +-39.7586 -1.2889 TD +(the current definition of )Tj +/TT15 1 Tf +10.8223 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( is saved.)Tj +-13.2227 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9366 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2667 0 TD +0.0389 Tw +(= FNS)Tj +/TT12 1 Tf +3.0394 0 TD +0.0167 Tw +[( \(or )]TJ +/TT10 1 Tf +1.8073 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0167 Tw +(\), the function definition is saved on )Tj +/TT15 1 Tf +16.2973 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0167 Tw +(s property list under the)Tj +-28.9483 -1.2889 TD +0 Tw +(property )Tj +/TT10 1 Tf +4.2505 0 TD +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.1011 Tw +(, or )Tj +/TT10 1 Tf +1.8931 0 TD +0 Tw +(CODE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1011 Tw +[( \(depending on the )]TJ +/TT10 1 Tf +9.0446 0 TD +0 Tw +(FNTYP)Tj +/TT12 1 Tf +3.0005 0 TD +0.1011 Tw +[( of the function definition\). If )]TJ +/TT10 1 Tf +14.0159 0 TD +0 Tw +(\(GETD)Tj +/TT15 1 Tf +-37.0054 -1.2889 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0056 Tw +[( is non-)]TJ +/TT10 1 Tf +3.2689 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0056 Tw +(, but )Tj +/TT10 1 Tf +2.2435 0 TD +0 Tw +(\(FNTYP)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.2556 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2556 0 TD +0.0133 Tw +(= NIL)Tj +/TT12 1 Tf +3.0138 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5056 0 TD +(SAVEDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.0056 Tw +[( saves the definition on the property)]TJ +-23.9453 -1.2889 TD +0 Tw +(name )Tj +/TT10 1 Tf +2.8472 0 TD +(LIST)Tj +/TT12 1 Tf +2.4004 0 TD +0.1533 Tw +[(. This can happen if a function was somehow defined with an illegal expr)]TJ +-5.2476 -1.2889 TD +0 Tw +(definition, such as )Tj +/TT10 1 Tf +8.3086 0 TD +(\(LAMMMMDA \(X\) ...\))Tj +/TT12 1 Tf +10.8018 0 TD +(.)Tj +-19.1104 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9544 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2844 0 TD +0.0833 Tw +(= VARS)Tj +/TT12 1 Tf +3.6839 0 TD +0.0344 Tw +(, the definition is stored as the value of the )Tj +/TT10 1 Tf +19.3244 0 TD +0 Tw +(VALUE)Tj +/TT12 1 Tf +3.0005 0 TD +0.0344 Tw +[( property of )]TJ +/TT15 1 Tf +5.6317 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0344 Tw +[(. For)]TJ +-37.6801 -1.2889 TD +0.1589 Tw +(other types, the definition is stored in an internal data structure, from where it can be)Tj +0 -1.2222 TD +0 Tw +(retrieved by )Tj +/TT10 1 Tf +5.6294 0 TD +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(UNSAVEDEF)Tj +/TT12 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-18.7384 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UNSAVEDEF)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 257.1079 288.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 288.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1544 Tw +(Restores the "saved" definition of )Tj +/TT15 1 Tf +15.6819 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1544 Tw +[( as a )]TJ +/TT15 1 Tf +2.6372 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1544 Tw +(, making it be the current definition.)Tj +-23.1198 -1.2889 TD +0 Tw +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-6.1274 -2.0667 TD +(If )Tj +/TT15 1 Tf +1.0833 0 TD +(TYPE )Tj +/TT10 1 Tf +3.3916 0 TD +0.3911 Tw +(= FNS)Tj +/TT12 1 Tf +3.3916 0 TD +0.1633 Tw +[( \(or )]TJ +/TT10 1 Tf +2.1006 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(\), )Tj +/TT10 1 Tf +0.9963 0 TD +(UNSAVEDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.1633 Tw +[( unsaves the function definition from the )]TJ +/TT10 1 Tf +19.4402 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +-37.6048 -1.2889 TD +0.2967 Tw +(property if any, else )Tj +/TT10 1 Tf +10.2711 0 TD +0 Tw +(CODE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2967 Tw +(, and returns the property name used. )Tj +/TT10 1 Tf +19.6175 0 TD +0 Tw +(UNSAVEDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.2967 Tw +[( also)]TJ +-37.6899 -1.2889 TD +0 Tw +(recognizes )Tj +/TT15 1 Tf +4.9502 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +0.0111 Tw +[( = EXPR)]TJ +/TT12 1 Tf +4.2229 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5044 0 TD +(CODE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0044 Tw +(, or )Tj +/TT10 1 Tf +1.6998 0 TD +0 Tw +(LIST)Tj +/TT12 1 Tf +2.4004 0 TD +0.0044 Tw +(, meaning to unsave the definition only from the)Tj +-18.5786 -1.2889 TD +0 Tw +(corresponding property only.)Tj +0 -2 TD +(If )Tj +/TT10 1 Tf +0.9833 0 TD +(DFNFLG)Tj +/TT12 1 Tf +3.6006 0 TD +0.0633 Tw +[( is not )]TJ +/TT10 1 Tf +3.1089 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0633 Tw +[( \(see Chapter 10\), the current definition of )]TJ +/TT15 1 Tf +19.2191 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0633 Tw +(, if any, is saved using)Tj +/TT10 1 Tf +-29.9123 -1.2889 TD +0 Tw +(SAVEDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.3767 Tw +[(. Thus one can use )]TJ +/TT10 1 Tf +10.8704 0 TD +0 Tw +(UNSAVEDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.3767 Tw +[( to switch back and forth between two)]TJ +-20.4719 -1.2889 TD +0 Tw +(definitions.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOADDEF)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 280.9632 143.04 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 143.04 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.3278 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.8357 0 TD +0 Tw +(\(PUTDEF)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.5778 0 TD +(NAME)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.5778 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.5778 0 TD +(\(GETDEF)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.5778 0 TD +(NAME)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.5778 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.5778 0 TD +(SOURCE)Tj +/TT10 1 Tf +3.6006 0 TD +(\)\))Tj +/TT12 1 Tf +1.2002 0 TD +0.3278 Tw +(. )Tj +/TT10 1 Tf +1.4056 0 TD +0 Tw +(LOADDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.3278 Tw +[( is)]TJ +-38.7123 -1.2889 TD +0.0344 Tw +(essentially a generalization of )Tj +/TT10 1 Tf +13.4781 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0344 Tw +(, e.g. it enables loading a single record declaration)Tj +-17.6788 -1.2889 TD +0.2211 Tw +(from a file. )Tj +/TT10 1 Tf +5.7141 0 TD +0 Tw +(\(LOADDEF)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.4711 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.2211 Tw +[( will give )]TJ +/TT15 1 Tf +5.0115 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.2211 Tw +[( an )]TJ +/TT10 1 Tf +2.0243 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.2211 Tw +[( definition, either obtained from its)]TJ +-23.4226 -1.2889 TD +0 Tw +(property list or a file, unless it already has one.)Tj +ET +endstream +endobj +94 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +96 0 obj +<< +/Length 9846 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-27)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CHANGECALLERS)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OLD)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NEW)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(METHOD)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 313.0702 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0467 Tw +(Finds all of the places where )Tj +/TT15 1 Tf +13.0998 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.0467 Tw +[( is used as any of the types in )]TJ +/TT15 1 Tf +13.5889 0 TD +0 Tw +(TYPES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0467 Tw +[( and changes those)]TJ +-31.4896 -1.2889 TD +0.02 Tw +(places to use )Tj +/TT15 1 Tf +5.9267 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.02 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.8261 0 TD +0.0489 Tw +(\(CHANGECALLERS NLSETQ ERSETQ\))Tj +/TT12 1 Tf +18.7008 0 TD +0.02 Tw +[( will change all)]TJ +-33.2539 -1.2889 TD +0.0289 Tw +(calls to )Tj +/TT10 1 Tf +3.3796 0 TD +0 Tw +(NLSETQ)Tj +/TT12 1 Tf +3.6006 0 TD +0.0289 Tw +[( to be calls to )]TJ +/TT10 1 Tf +6.1205 0 TD +0 Tw +(ERSETQ)Tj +/TT12 1 Tf +3.6006 0 TD +0.0289 Tw +[(. Also changes occurrences of )]TJ +/TT15 1 Tf +13.6421 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.0289 Tw +[( to )]TJ +/TT15 1 Tf +1.4298 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.0289 Tw +[( inside the)]TJ +-35.3738 -1.2889 TD +0 Tw +(filecoms of any file, inside record declarations, properties, etc. )Tj +/TT10 1 Tf +0 -2 TD +(CHANGECALLERS)Tj +/TT12 1 Tf +7.8013 0 TD +0.0656 Tw +[( attempts to determine if )]TJ +/TT15 1 Tf +11.464 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.0656 Tw +[( might be used as more than one type; for)]TJ +-21.0656 -1.2889 TD +0.1911 Tw +[(example, if it is both a function and a record field. If so, rather than performing the)]TJ +0 -1.2222 TD +0 Tw +(transformation )Tj +/TT15 1 Tf +6.9289 0 TD +(OLD)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.3 0 TD +(->)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT15 1 Tf +0.3 0 TD +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.05 Tw +[( automatically, you are allowed to edit all of the places where)]TJ +/TT15 1 Tf +-12.3297 -1.2889 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1189 Tw +[( occurs. For each occurrence of )]TJ +/TT15 1 Tf +14.8791 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1189 Tw +(, you are asked whether you want to make the)Tj +-18.4797 -1.2889 TD +0.0211 Tw +[(replacement. If you respond with anything except )]TJ +/TT10 1 Tf +22.7446 0 TD +0 Tw +(Yes)Tj +/TT12 1 Tf +1.8003 0 TD +0.0211 Tw +[( or )]TJ +/TT10 1 Tf +1.4831 0 TD +0 Tw +(No)Tj +/TT12 1 Tf +1.2002 0 TD +0.0211 Tw +(, the editor is invoked on the)Tj +-27.2282 -1.2889 TD +0 Tw +(expression containing that occurrence.)Tj +0 -2 TD +0.0744 Tw +[(There are two different methods for determining which functions are to be examined. If)]TJ +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(METHOD)Tj +/TT10 1 Tf +3.6006 0 TD +0.1989 Tw +[( = EDITCALLERS)]TJ +/TT12 1 Tf +8.7991 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5833 0 TD +(EDITCALLERS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0833 Tw +[( is used to search )]TJ +/TT15 1 Tf +8.194 0 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0833 Tw +[( \(see Chapter 16\). If)]TJ +/TT15 1 Tf +-30.7786 -1.2889 TD +0 Tw +(METHOD )Tj +/TT10 1 Tf +4.4362 0 TD +0.2356 Tw +(= MASTERSCOPE)Tj +/TT12 1 Tf +8.0368 0 TD +0.0978 Tw +(, then the Masterscope database is used instead. )Tj +/TT15 1 Tf +22.4874 0 TD +0 Tw +(METHOD)Tj +/TT10 1 Tf +3.6006 0 TD +0.2356 Tc +( =)Tj +-38.5611 -1.2889 TD +0 Tc +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1822 Tw +[( defaults to )]TJ +/TT10 1 Tf +5.7356 0 TD +0 Tw +(MASTERSCOPE)Tj +/TT12 1 Tf +6.6011 0 TD +0.1822 Tw +[( if the value of the variable )]TJ +/TT10 1 Tf +13.3151 0 TD +0 Tw +(DEFAULTRENAMEMETHOD)Tj +/TT12 1 Tf +11.4019 0 TD +0.1822 Tw +[( is)]TJ +/TT10 1 Tf +-38.854 -1.2889 TD +0 Tw +(MASTERSCOPE)Tj +/TT12 1 Tf +6.6011 0 TD +( and a Masterscope database exists, otherwise it defaults to )Tj +/TT10 1 Tf +26.2715 0 TD +(EDITCALLERS)Tj +/TT12 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-42.1403 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(RENAME)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OLD)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NEW)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(METHOD)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 275.2702 354.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 354.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.27 Tw +(First performs )Tj +/TT10 1 Tf +7.0879 0 TD +0 Tw +(\(COPYDEF)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.52 0 TD +(OLD)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.52 0 TD +(NEW)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.52 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.27 Tw +[( for all )]TJ +/TT15 1 Tf +3.916 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.27 Tw +[( inside )]TJ +/TT15 1 Tf +3.7177 0 TD +0 Tw +(TYPES)Tj +/TT12 1 Tf +3.0005 0 TD +0.27 Tw +[(. It then calls)]TJ +/TT10 1 Tf +-33.0843 -1.2889 TD +0 Tw +(CHANGECALLERS)Tj +/TT12 1 Tf +7.8013 0 TD +0.13 Tw +[( to change all occurrences of )]TJ +/TT15 1 Tf +13.4905 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.13 Tw +[( to )]TJ +/TT15 1 Tf +1.6321 0 TD +0 Tw +(NEW)Tj +/TT12 1 Tf +1.8003 0 TD +0.13 Tw +(, and then "deletes" )Tj +/TT15 1 Tf +9.2632 0 TD +0 Tw +(OLD)Tj +/TT12 1 Tf +1.8003 0 TD +0.13 Tw +[( with)]TJ +/TT10 1 Tf +-37.5878 -1.2889 TD +0 Tw +(DELDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.2011 Tw +[(. For example, if you have a function )]TJ +/TT10 1 Tf +18.4682 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.2011 Tw +[( which you now wish to call )]TJ +/TT10 1 Tf +14.0865 0 TD +0 Tw +(FIE)Tj +/TT12 1 Tf +1.8003 0 TD +(,)Tj +-39.7559 -1.2889 TD +0.06 Tw +(simply perform )Tj +/TT10 1 Tf +7.2977 0 TD +0.1444 Tw +(\(RENAME FOO FIE\))Tj +/TT12 1 Tf +11.0906 0 TD +0.06 Tw +(, and )Tj +/TT10 1 Tf +2.5629 0 TD +0 Tw +(FIE)Tj +/TT12 1 Tf +1.8003 0 TD +0.06 Tw +[( will be given )]TJ +/TT10 1 Tf +6.4524 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.06 Tw +(s definition, and all)Tj +-31.0042 -1.2889 TD +0 Tw +(places that )Tj +/TT10 1 Tf +4.9731 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +( are called will be changed to call )Tj +/TT10 1 Tf +14.8809 0 TD +(FIE)Tj +/TT12 1 Tf +1.8003 0 TD +( instead.)Tj +/TT15 1 Tf +-23.4546 -2.0667 TD +(METHOD)Tj +/TT12 1 Tf +3.6006 0 TD +( is interpreted the same as the )Tj +/TT15 1 Tf +13.4131 0 TD +(METHOD)Tj +/TT12 1 Tf +3.6006 0 TD +( argument to )Tj +/TT10 1 Tf +5.9463 0 TD +(CHANGECALLERS)Tj +/TT12 1 Tf +7.8013 0 TD +(, above.)Tj +/TT10 1 Tf +-37.0285 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(COMPARE)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +2.4 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +3.5996 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCE)Tj +3.6 -0.2222 TD +(2)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 313.0508 250.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 250.12 Tm +([Function])Tj +-35.4033 -2.0667 TD +0.36 Tw +(Compares the definition of )Tj +/TT15 1 Tf +13.5748 0 TD +0 Tw +(NAME)Tj +2.4008 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.36 Tw +[( with that of )]TJ +/TT15 1 Tf +7.0865 0 TD +0 Tw +(NAME)Tj +2.3991 -0.2222 TD +(2)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.36 Tw +(, by calling )Tj +/TT10 1 Tf +6.1445 0 TD +0 Tw +(COMPARELISTS)Tj +/TT12 1 Tf +-32.8056 -1.5111 TD +0.0311 Tw +(\(Chapter 3\) on )Tj +/TT10 1 Tf +7.0107 0 TD +0 Tw +(\(GETDEF)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.2811 0 TD +(NAME)Tj +2.3998 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.2811 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.2811 0 TD +(SOURCE)Tj +3.5996 -0.2222 TD +(1)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0311 Tw +[( and )]TJ +/TT10 1 Tf +2.2551 0 TD +0 Tw +(\(GETDEF)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT15 1 Tf +0.2811 0 TD +(NAME)Tj +2.3997 -0.2222 TD +(2)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.2811 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.2811 0 TD +(SOURCE)Tj +3.5996 -0.2222 TD +(2)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(,)Tj +-39.7534 -1.5111 TD +(which prints their differences on the terminal.)Tj +0 -2 TD +0.0078 Tw +(For example, if the current value of the variable )Tj +/TT10 1 Tf +21.3298 0 TD +0 Tw +(A)Tj +/TT12 1 Tf +0.6001 0 TD +0.0078 Tw +[( is )]TJ +/TT10 1 Tf +1.2304 0 TD +0.0178 Tw +(\(A B C \(D E F\) G\))Tj +/TT12 1 Tf +10.3083 0 TD +0.0078 Tw +(, and the value)Tj +-33.4686 -1.2889 TD +0 Tw +(of the variable )Tj +/TT10 1 Tf +6.5903 0 TD +(B)Tj +/TT12 1 Tf +0.6001 0 TD +( on the file )Tj +/TT10 1 Tf +4.9092 0 TD +(FOO)Tj +/TT12 1 Tf +5.4009 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(\(A B C \(D F E\) G\))Tj +/TT12 1 Tf +10.2017 0 TD +(, then:)Tj +/TT13 1 Tf +-23.5837 -2.0667 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(COMPARE A B VARS CURRENT FOO\))Tj +-0.9868 -1 TD +(A from CURRENT and B from TEST differ:)Tj +T* +(\(E -> F\) \(F -> E\) )Tj +T* +(T)Tj +-8 -2.3267 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(COMPAREDEFS)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCES)Tj +/TT10 1 Tf +4.2007 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 265.3649 108.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 108.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Calls )Tj +/TT10 1 Tf +2.556 0 TD +(COMPARELISTS)Tj +/TT12 1 Tf +7.2012 0 TD +0.0911 Tw +[( \(Chapter 3\) on all pairs of definitions of )]TJ +/TT15 1 Tf +18.7629 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0911 Tw +[( as a )]TJ +/TT15 1 Tf +2.4472 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0911 Tw +[( obtained)]TJ +-35.7679 -1.2889 TD +0 Tw +(from the various )Tj +/TT15 1 Tf +7.6177 0 TD +(SOURCES)Tj +/TT12 1 Tf +4.2007 0 TD +( \(interpreted as a list of source specifications\). )Tj +ET +endstream +endobj +97 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +99 0 obj +<< +/Length 7007 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-28)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Defining New File Manager Types)Tj +/TT12 1 Tf +9 0 0 9 126 544.54 Tm +0.3289 Tw +(All manipulation of typed definitions in the file manager is done using the type-independent)Tj +0 -1.2222 TD +0 Tw +(functions )Tj +/TT10 1 Tf +4.4509 0 TD +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.57 0 TD +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.07 Tw +[(, etc. Therefore, to define a new file manager type, it is only necessary to)]TJ +-12.222 -1.2889 TD +0.0867 Tw +(specify \(via the function )Tj +/TT10 1 Tf +11.2578 0 TD +0 Tw +(FILEPKGTYPE)Tj +/TT12 1 Tf +6.6011 0 TD +0.0867 Tw +(\) what these functions should do when dealing with a typed)Tj +-17.8589 -1.2889 TD +0.1367 Tw +[(definition of the new type. Each file manager type has the following properties, whose values are)]TJ +0 -1.2222 TD +0 Tw +(functions or lists of functions:)Tj +0 -2.8889 TD +0.1489 Tw +(These functions are defined to take a )Tj +/TT15 1 Tf +17.4929 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1489 Tw +[( argument so that you may have the same function for)]TJ +-19.8933 -1.2889 TD +0 Tw +(more than one type.)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(GETDEF)Tj +/TT6 1 Tf +10 0 0 10 182.4 439.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 439.4 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0822 Tw +(Value is a function of three arguments, )Tj +/TT15 1 Tf +17.9808 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.5822 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0822 Tw +(, and )Tj +/TT15 1 Tf +2.6073 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0822 Tw +(, which should return)Tj +-30.1718 -1.2889 TD +0.1256 Tw +(the current definition of )Tj +/TT15 1 Tf +11.3245 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1256 Tw +[( as a type )]TJ +/TT15 1 Tf +4.8885 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1256 Tw +[(. Used by )]TJ +/TT10 1 Tf +5.1531 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1256 Tw +[( \(see the Functions for)]TJ +-29.7674 -1.2889 TD +0 Tw +(Manipulating Typed Definitions section\), which passes its )Tj +/TT15 1 Tf +25.8984 0 TD +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +( argument.)Tj +-30.0991 -2.0667 TD +0.02 Tw +(If there is no )Tj +/TT10 1 Tf +5.8539 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.02 Tw +[( property, a file manager command for dumping )]TJ +/TT15 1 Tf +21.9476 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.02 Tw +[( is created \(by)]TJ +/TT10 1 Tf +-33.8025 -1.2889 TD +0 Tw +(MAKENEWCOM)Tj +/TT12 1 Tf +6.001 0 TD +0.0167 Tw +[(\). This command is then used to write the definition of )]TJ +/TT15 1 Tf +24.7371 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0167 Tw +[( as a type )]TJ +/TT15 1 Tf +4.4529 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +-37.5914 -1.2889 TD +0.1244 Tw +(onto the file )Tj +/TT10 1 Tf +5.9046 0 TD +0 Tw +(FILEPKG.SCRATCH)Tj +/TT12 1 Tf +9.0015 0 TD +0.1244 Tw +[( \(in Medley, this file is created on the )]TJ +/TT10 1 Tf +17.6688 0 TD +0 Tw +({CORE})Tj +/TT12 1 Tf +3.6006 0 TD +0.1244 Tw +[( device\).)]TJ +-36.1755 -1.2889 TD +0 Tw +(This expression is then read back in and returned as the current definition.)Tj +0 -2 TD +0.1611 Tw +(In some situations, the function )Tj +/TT10 1 Tf +14.9633 0 TD +0 Tw +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1611 Tw +[( needs to call )]TJ +/TT10 1 Tf +6.6171 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1611 Tw +[( to determine whether a)]TJ +-28.7815 -1.2889 TD +0.2922 Tw +[(definition exists. In this case, )]TJ +/TT15 1 Tf +14.934 0 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2922 Tw +[( will include the symbol )]TJ +/TT10 1 Tf +12.3591 0 TD +0 Tw +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.2922 Tw +(, and it is)Tj +-35.0943 -1.2889 TD +0.1678 Tw +(permissable for a )Tj +/TT10 1 Tf +8.3471 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1678 Tw +[( function to return )]TJ +/TT10 1 Tf +9.0305 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.1678 Tw +[( or )]TJ +/TT10 1 Tf +1.7765 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1678 Tw +(, rather than creating a complex)Tj +-25.155 -1.2889 TD +0 Tw +(structure which will not be used.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(NULLDEF)Tj +/TT6 1 Tf +10 0 0 10 187.8 271.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 271.06 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.3267 Tw +(The value of the )Tj +/TT10 1 Tf +8.6846 0 TD +0 Tw +(NULLDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.3267 Tw +[( property is returned by )]TJ +/TT10 1 Tf +12.4771 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.3267 Tw +[( \(see the Functions for)]TJ +-28.9629 -1.2889 TD +0.1622 Tw +(Manipulating Typed Definitions section\) when there is no definition and the )Tj +/TT10 1 Tf +35.8006 0 TD +0 Tw +(NOERROR)Tj +/TT12 1 Tf +-35.8006 -1.2889 TD +(option is supplied. For example, the )Tj +/TT10 1 Tf +16.3911 0 TD +(NULLDEF)Tj +/TT12 1 Tf +4.2007 0 TD +( of )Tj +/TT10 1 Tf +1.3789 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT17 1 Tf +-31.8532 -2.5489 TD +(FILEGETDEF)Tj +/TT6 1 Tf +10 0 0 10 204 208.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 208.32 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0067 Tw +(This enables you to provide a way of obtaining definitions from a file that is more efficient)Tj +0 -1.2222 TD +0.12 Tw +(than the default procedure used by )Tj +/TT10 1 Tf +16.5193 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.12 Tw +[( \(see the Functions for Manipulating Typed)]TJ +-20.1199 -1.2889 TD +0.2489 Tw +[(Definitions section\). Value is a function of four arguments, )]TJ +/TT15 1 Tf +28.8536 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.7489 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.7489 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2489 Tw +(, and)Tj +/TT15 1 Tf +-37.5526 -1.2889 TD +0 Tw +(OPTIONS)Tj +/TT12 1 Tf +4.2007 0 TD +0.2944 Tw +[(. The function is applied by )]TJ +/TT10 1 Tf +14.6402 0 TD +0 Tw +(GETDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.2944 Tw +[( when it is determined that a typed)]TJ +-22.4415 -1.2889 TD +0.0733 Tw +[(definition is needed from a particular file. The function must open and search the given)]TJ +0 -1.2222 TD +0 Tw +(file and return any )Tj +/TT15 1 Tf +8.5054 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( definition for )Tj +/TT15 1 Tf +6.356 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( that it finds.)Tj +/TT17 1 Tf +-22.3288 -2.5489 TD +(CANFILEDEF)Tj +/TT6 1 Tf +10 0 0 10 204 111.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 111.98 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0456 Tw +(If the value of this property is non-)Tj +/TT10 1 Tf +15.7232 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0456 Tw +(, this indicates that definitions of this file manager)Tj +-17.5235 -1.2889 TD +0.0633 Tw +(type are not loaded when a file is loaded with )Tj +/TT10 1 Tf +21.1182 0 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.0633 Tw +[( \(see the Loading Files section\).)]TJ +-25.919 -1.2889 TD +0 Tw +(The default is )Tj +/TT10 1 Tf +6.2817 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(. Initially, only )Tj +/TT10 1 Tf +6.9404 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +( has this property set to non-)Tj +/TT10 1 Tf +12.6724 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +100 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +102 0 obj +<< +/Length 8227 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-29)Tj +/TT17 1 Tf +-39.6667 60.4667 TD +(PUTDEF)Tj +/TT6 1 Tf +10 0 0 10 134.4 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 367.72 568.2 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.1922 Tw +(Value is a function of three arguments, )Tj +/TT15 1 Tf +18.7508 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.6922 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1922 Tw +(, and )Tj +/TT15 1 Tf +2.8273 0 TD +0 Tw +(DEFINITION)Tj +/TT12 1 Tf +6.001 0 TD +0.1922 Tw +(, which should)Tj +-33.0721 -1.2889 TD +0 Tw +(store )Tj +/TT15 1 Tf +2.5299 0 TD +(DEFINITION)Tj +/TT12 1 Tf +6.001 0 TD +0.11 Tw +[( as the definition of )]TJ +/TT15 1 Tf +9.322 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.11 Tw +[( as a type )]TJ +/TT15 1 Tf +4.8262 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.11 Tw +[(. Used by )]TJ +/TT10 1 Tf +5.0909 0 TD +0 Tw +(PUTDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.11 Tw +[( \(see the)]TJ +-36.1713 -1.2889 TD +0 Tw +(Functions for Manipulating Typed Definitions section\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(HASDEF)Tj +/TT6 1 Tf +10 0 0 10 134.4 506.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 367.72 506.06 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.1289 Tw +(Value is a function of three arguments, )Tj +/TT15 1 Tf +18.3075 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.6289 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1289 Tw +(, and )Tj +/TT15 1 Tf +2.7006 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.1289 Tw +(, which should return)Tj +/TT10 1 Tf +-30.0384 -1.2889 TD +0 Tw +(\(OR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.26 0 TD +(NAME)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.26 0 TD +(T\))Tj +/TT12 1 Tf +1.2002 0 TD +0.01 Tw +[( if )]TJ +/TT15 1 Tf +1.144 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.01 Tw +[( is the name of something of type )]TJ +/TT15 1 Tf +15.0151 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.01 Tw +(. )Tj +/TT15 1 Tf +0.77 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.01 Tw +[( is as interpreted by)]TJ +/TT10 1 Tf +-31.2513 -1.2889 TD +0 Tw +(HASDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.1 Tw +[( \(see the Functions for Manipulating Typed Definitions section\), which uses this)]TJ +-3.6006 -1.2889 TD +0 Tw +(property.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(EDITDEF)Tj +/TT6 1 Tf +10 0 0 10 139.8 432.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 367.72 432.32 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.2578 Tw +(Value is a function of four arguments, )Tj +/TT15 1 Tf +18.8254 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.7578 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.7578 0 TD +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.2578 Tw +(, and )Tj +/TT15 1 Tf +2.9584 0 TD +0 Tw +(EDITCOMS)Tj +/TT12 1 Tf +4.8008 0 TD +0.2578 Tw +(, which)Tj +-36.5016 -1.2889 TD +0.0978 Tw +(should edit the definition of )Tj +/TT15 1 Tf +13.1007 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0978 Tw +[( as a type )]TJ +/TT15 1 Tf +4.7773 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0978 Tw +[( from the source )]TJ +/TT15 1 Tf +7.8257 0 TD +0 Tw +(SOURCE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0978 Tw +(, interpreting)Tj +-34.1051 -1.2889 TD +0.0878 Tw +(the edit commands )Tj +/TT15 1 Tf +8.9796 0 TD +0 Tw +(EDITCOMS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0878 Tw +[(. If sucessful, should return )]TJ +/TT15 1 Tf +13.0579 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0878 Tw +[( \(or a spelling-corrected)]TJ +/TT15 1 Tf +-29.2387 -1.2889 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.2667 Tw +[(\). If it returns )]TJ +/TT10 1 Tf +7.6576 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2667 Tw +[(, the "default" editor is called. Used by )]TJ +/TT10 1 Tf +19.8019 0 TD +0 Tw +(EDITDEF)Tj +/TT12 1 Tf +4.2007 0 TD +0.2667 Tw +[( \(see the)]TJ +-35.8608 -1.2889 TD +0 Tw +(Functions for Manipulating Typed Definitions section\).)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(DELDEF)Tj +/TT6 1 Tf +10 0 0 10 134.4 346.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 367.72 346.98 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0933 Tw +(Value is a function of two arguments, )Tj +/TT15 1 Tf +17.5034 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0933 Tw +(, and )Tj +/TT15 1 Tf +2.6295 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0933 Tw +(, which removes the definition of)Tj +/TT15 1 Tf +-24.9338 -1.2889 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.25 Tw +[( as a )]TJ +/TT15 1 Tf +2.9238 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.25 Tw +[( that is currently in effect. Used by )]TJ +/TT10 1 Tf +17.9385 0 TD +0 Tw +(DELDEF)Tj +/TT12 1 Tf +3.6006 0 TD +0.25 Tw +[( \(see the Functions for)]TJ +-29.2637 -1.2889 TD +0 Tw +(Manipulating Typed Definitions section\). )Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(NEWCOM)Tj +/TT6 1 Tf +10 0 0 10 134.4 284.84 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 367.72 284.84 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.05 Tw +(Value is a function of four arguments, )Tj +/TT15 1 Tf +17.371 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.55 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.55 0 TD +(LISTNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.05 Tw +(, and )Tj +/TT15 1 Tf +2.5429 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.05 Tw +[(. Specifies how)]TJ +-33.0158 -1.2889 TD +0.1356 Tw +(to make a new \(instance of a\) file manager command to dump )Tj +/TT15 1 Tf +29.2917 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1356 Tw +(, an object of type)Tj +/TT15 1 Tf +-31.6921 -1.2889 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +[(. The function should return the new file manager command. Used by )]TJ +/TT10 1 Tf +32.1982 0 TD +0 Tw +(ADDTOFILE)Tj +/TT12 1 Tf +-34.5986 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(SHOWDEF)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +-6.1436 -2.0667 TD +(If )Tj +/TT15 1 Tf +1.2077 0 TD +(LISTNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.2878 Tw +[( is non-)]TJ +/TT10 1 Tf +3.8334 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2878 Tw +(, this means that you specified )Tj +/TT15 1 Tf +15.3595 0 TD +0 Tw +(LISTNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.2878 Tw +[( as the filevar in)]TJ +-31.8024 -1.2889 TD +0 Tw +(interaction with )Tj +/TT10 1 Tf +7.2954 0 TD +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +( \(see the FileVars section\).)Tj +-13.8965 -2.0667 TD +0.3456 Tw +(If no )Tj +/TT10 1 Tf +2.989 0 TD +0 Tw +(NEWCOM)Tj +/TT12 1 Tf +3.6006 0 TD +0.3456 Tw +[( is specified, the default is to call )]TJ +/TT10 1 Tf +17.325 0 TD +0 Tw +(DEFAULTMAKENEWCOM)Tj +/TT12 1 Tf +10.2017 0 TD +0.3456 Tw +(, which will)Tj +-34.1162 -1.2889 TD +0.0833 Tw +(construct and return a command of the form )Tj +/TT10 1 Tf +20.6007 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.3333 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0833 Tw +[(. You can advise or redefine)]TJ +/TT10 1 Tf +-26.9351 -1.2889 TD +0 Tw +(DEFAULTMAKENEWCOM)Tj +/TT12 1 Tf +10.2017 0 TD +( . )Tj +/TT17 1 Tf +-12.8683 -2.5489 TD +(WHENCHANGED)Tj +/TT6 1 Tf +10 0 0 10 161.4 138.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 367.72 138.5 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.1811 Tw +(Value is a list of functions to be applied to )Tj +/TT15 1 Tf +20.6134 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.6811 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1811 Tw +(, and )Tj +/TT15 1 Tf +2.8051 0 TD +0 Tw +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +0.1811 Tw +[( when )]TJ +/TT15 1 Tf +3.3393 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1811 Tw +(, an)Tj +-38.2406 -1.2889 TD +0.2689 Tw +(instance of type )Tj +/TT15 1 Tf +8.0259 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2689 Tw +(, is changed or defined \(see )Tj +/TT10 1 Tf +13.8736 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.2689 Tw +(, in the Marking)Tj +-32.1012 -1.2889 TD +0.1067 Tw +[(Changes section\). Used for various applications, e.g. when an object of type )]TJ +/TT10 1 Tf +35.1972 0 TD +0 Tw +(I.S.OPRS)Tj +/TT12 1 Tf +-35.1972 -1.2889 TD +(changes, it is necessary to clear the corresponding translatons from )Tj +/TT10 1 Tf +29.8042 0 TD +(CLISPARRAY)Tj +/TT12 1 Tf +6.001 0 TD +(.)Tj +-35.8052 -2.0667 TD +(The )Tj +/TT10 1 Tf +1.9927 0 TD +(WHENCHANGED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0689 Tw +[( functions are called before the object is marked as changed, so that it)]TJ +-8.5938 -1.2889 TD +0.0467 Tw +(can, in fact, decide that the object is )Tj +/TT8 1 Tf +16.2083 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0467 Tw +[( to be marked as changed, and execute )]TJ +/TT10 1 Tf +17.6482 0 TD +0 Tw +(\(RETFROM)Tj +-35.1895 -1.2889 TD +(MARKASCHANGED\))Tj +/TT12 1 Tf +9.0015 0 TD +(.)Tj +ET +endstream +endobj +103 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +105 0 obj +<< +/Length 6455 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-30)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +(The )Tj +/TT15 1 Tf +1.9238 0 TD +(REASON)Tj +/TT12 1 Tf +3.6006 0 TD +( argument passed to )Tj +/TT10 1 Tf +9.2349 0 TD +(WHENCHANGED)Tj +/TT12 1 Tf +6.6011 0 TD +( functions is either )Tj +/TT10 1 Tf +8.3979 0 TD +(DEFINED)Tj +/TT12 1 Tf +4.2007 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(CHANGED)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +/TT17 1 Tf +-42.2673 -2.5489 TD +(WHENFILED)Tj +/TT6 1 Tf +10 0 0 10 198.6079 546.6 Tm +-0.0006 Tc +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 546.6 Tm +0 Tc +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0122 Tw +(Value is a list of functions to be applied to )Tj +/TT15 1 Tf +18.9245 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.5122 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +(, and )Tj +/TT15 1 Tf +2.4673 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +[( when )]TJ +/TT15 1 Tf +3.0015 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +(, an instance)Tj +-34.5071 -1.2889 TD +0 Tw +(of type )Tj +/TT15 1 Tf +3.3413 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(, is added to )Tj +/TT15 1 Tf +5.6484 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT17 1 Tf +-16.4572 -2.5489 TD +(WHENUNFILED)Tj +/TT6 1 Tf +10 0 0 10 209.4 495.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 495.46 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0122 Tw +(Value is a list of functions to be applied to )Tj +/TT15 1 Tf +18.9245 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.5122 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +(, and )Tj +/TT15 1 Tf +2.4673 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +[( when )]TJ +/TT15 1 Tf +3.0015 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +(, an instance)Tj +-34.5071 -1.2889 TD +0 Tw +(of type )Tj +/TT15 1 Tf +3.3413 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(, is removed from )Tj +/TT15 1 Tf +8.0791 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT17 1 Tf +-18.8879 -2.5489 TD +(DESCRIPTION)Tj +/TT6 1 Tf +10 0 0 10 209.4 444.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 415.72 444.32 Tm +([File Manager Type Property])Tj +-26.8578 -1.8444 TD +0.0722 Tw +[(Value is a string which describes instances of this type. For example, for type )]TJ +/TT10 1 Tf +35.5487 0 TD +0 Tw +(RECORDS)Tj +/TT12 1 Tf +4.2007 0 TD +(,)Tj +-39.7494 -1.2889 TD +(the value of )Tj +/TT10 1 Tf +5.4541 0 TD +(DESCRIPTION)Tj +/TT12 1 Tf +6.6011 0 TD +( is the string )Tj +/TT10 1 Tf +5.6763 0 TD +("record declarations")Tj +/TT12 1 Tf +12.6021 0 TD +(.)Tj +-35.6668 -2.9556 TD +0.0811 Tw +(The function )Tj +/TT10 1 Tf +6.0431 0 TD +0 Tw +(FILEPKGTYPE)Tj +/TT12 1 Tf +6.6011 0 TD +0.0811 Tw +[( is used to define new file manager types, or to change the properties of)]TJ +-12.6442 -1.2889 TD +0.1111 Tw +[(existing types. It is possible to redefine the attributes of system file manager types, such as )]TJ +/TT10 1 Tf +42.2317 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.1111 Tw +[( or)]TJ +/TT10 1 Tf +-44.032 -1.2889 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-0.3338 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILEPKGTYPE)Tj +/TT12 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +2.3996 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 368.7009 343.38 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 449.99 343.38 Tm +([NoSpread Function])Tj +-30.6656 -2.0667 TD +0.0144 Tw +(Nospread function for defining new file manager types, or changing properties of existing)Tj +0 -1.2222 TD +0.0444 Tw +(file manager types. )Tj +/TT15 1 Tf +9.1031 0 TD +0 Tw +(PROP)Tj +2.4003 -0.2222 TD +(i)Tj +/TT10 1 Tf +0.6 0.2222 TD +( )Tj +/TT12 1 Tf +0.7068 0 TD +0.0444 Tw +(is one of the property names given above; )Tj +/TT15 1 Tf +19.3712 0 TD +0 Tw +(VAL)Tj +1.7987 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0444 Tw +[( is the value)]TJ +-34.58 -1.5111 TD +0 Tw +(to be given to that property. Returns )Tj +/TT15 1 Tf +16.6104 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-19.0107 -2.0667 TD +(\(FILEPKGTYPE)Tj +/TT19 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +( returns the value of the property )Tj +/TT15 1 Tf +14.9448 0 TD +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +(, without changing it.)Tj +/TT10 1 Tf +-30.4473 -2.0667 TD +(\(FILEPKGTYPE)Tj +/TT19 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.3989 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1489 Tw +[( returns a property list of all of the defined properties of )]TJ +/TT15 1 Tf +26.751 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(,)Tj +-39.752 -1.2889 TD +(using the property names as keys.)Tj +0 -2 TD +(Specifying )Tj +/TT15 1 Tf +5.056 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1478 Tw +[( as the symbol )]TJ +/TT10 1 Tf +7.1551 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1478 Tw +[( can be used to define one file manager type as a)]TJ +-17.0118 -1.2889 TD +0.0167 Tw +[(synonym of another. For example, )]TJ +/TT10 1 Tf +15.7641 0 TD +0.0389 Tw +(\(FILEPKGTYPE R TYPE RECORDS\))Tj +/TT12 1 Tf +18.7197 0 TD +0.0167 Tw +[( defines )]TJ +/TT10 1 Tf +3.7321 0 TD +0 Tw +(R)Tj +/TT12 1 Tf +0.6001 0 TD +0.0167 Tw +[( as)]TJ +-38.8159 -1.2889 TD +0 Tw +(a synonym for the file manager type )Tj +/TT10 1 Tf +16.2915 0 TD +(RECORDS)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 167.24 Tm +(File Manager Commands)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 164.53 m +558.01 164.53 l +S +BT +/TT12 1 Tf +9 0 0 9 126 142.58 Tm +0.2322 Tw +(The basic mechanism for creating symbolic files is the function )Tj +/TT10 1 Tf +30.2373 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.2322 Tw +[( \(see the Storing Files)]TJ +-35.038 -1.2889 TD +0.0611 Tw +[(section\). For each file, the file manager has a data structure known as the "filecoms", which specifies)]TJ +0 -1.2222 TD +0.0356 Tw +[(what typed descriptions are contained in the file. A filecoms is a list of file manager commands, each)]TJ +T* +0.0767 Tw +[(of which specifies objects of a certain file manager type which should be dumped. For example, the)]TJ +T* +0 Tw +(filecoms)Tj +/TT10 1 Tf +10.6667 -1.7111 TD +(\(\(FNS FOO\))Tj +0 -1 TD +( \(VARS FOO BAR BAZ\))Tj +T* +( \(RECORDS XYZZY\)\))Tj +ET +endstream +endobj +106 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +108 0 obj +<< +/Length 8082 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-31)Tj +/TT12 1 Tf +-42.3333 60.6156 TD +0.0767 Tw +(has a )Tj +/TT10 1 Tf +2.6592 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.0767 Tw +(, a )Tj +/TT10 1 Tf +1.4033 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0767 Tw +(, and a )Tj +/TT10 1 Tf +3.4229 0 TD +0 Tw +(RECORDS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0767 Tw +[( file manager command. This filecoms specifies that the function)]TJ +-15.8868 -1.2889 TD +0.1211 Tw +(definition for )Tj +/TT10 1 Tf +6.3482 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.1211 Tw +(, the variable values of )Tj +/TT10 1 Tf +10.8077 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6211 0 TD +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1211 Tw +(, and )Tj +/TT10 1 Tf +2.6851 0 TD +0 Tw +(BAZ)Tj +/TT12 1 Tf +1.8003 0 TD +0.1211 Tw +(, and the record declaration for )Tj +/TT10 1 Tf +14.6651 0 TD +0 Tw +(XYZZY)Tj +/TT12 1 Tf +-42.3284 -1.2889 TD +(should be dumped.)Tj +0 -2.8889 TD +0.1722 Tw +(By convention, the filecoms of a file )Tj +/TT15 1 Tf +17.166 0 TD +0 Tw +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.1722 Tw +[( is stored as the value of the symbol )]TJ +/TT15 1 Tf +17.5637 0 TD +0 Tw +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1722 Tw +[(. For example,)]TJ +/TT10 1 Tf +-38.3303 -1.2889 TD +0.0511 Tw +(\(MAKEFILE FOO.;27\))Tj +/TT12 1 Tf +11.453 0 TD +0.0211 Tw +[( will use the value of )]TJ +/TT10 1 Tf +9.5437 0 TD +0 Tw +(FOOCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0211 Tw +[( as the filecoms. This variable can be directly)]TJ +-25.1973 -1.2889 TD +0.0633 Tw +(manipulated, but the file manager contains facilities which make constructing and updating filecoms)Tj +0 -1.2222 TD +0 Tw +(easier, and in some cases automatic \(see the Functions for Manipulating File Command Lists section\).)Tj +0 -2.8889 TD +0.3533 Tw +(A file manager command is an instruction to )Tj +/TT10 1 Tf +22.8208 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.3533 Tw +[( to perform an explicit, well-defined)]TJ +-27.6216 -1.2889 TD +0.0611 Tw +[(operation, usually printing an expression. Usually there is a one-to-one correspondence between file)]TJ +0 -1.2222 TD +0.2433 Tw +(manager types and file manager commands; for each file manager type, there is a file manager)Tj +T* +0.0844 Tw +(command which is used for writing objects of that type to a file, and each file manager command is)Tj +T* +0.0389 Tw +[(used to write objects of a particular type. However, in some cases, the same file manager type can be)]TJ +T* +0.1789 Tw +[(dumped by several different file manager commands. For example, the file manager commands)]TJ +/TT10 1 Tf +T* +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5189 0 TD +(IFPROP)Tj +/TT12 1 Tf +3.6006 0 TD +0.0189 Tw +(, and )Tj +/TT10 1 Tf +2.4806 0 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +0.0189 Tw +[( all dump out objects with the file manager type )]TJ +/TT10 1 Tf +21.6215 0 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +0.0189 Tw +[(. This means if you)]TJ +-36.623 -1.2889 TD +0.03 Tw +(change an object of file manager type )Tj +/TT10 1 Tf +16.8975 0 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +0.03 Tw +[( via )]TJ +/TT10 1 Tf +1.916 0 TD +0 Tw +(EDITP)Tj +/TT12 1 Tf +3.0005 0 TD +0.03 Tw +(, a typed-in call to )Tj +/TT10 1 Tf +8.3272 0 TD +0 Tw +(PUTPROP)Tj +/TT12 1 Tf +4.2007 0 TD +0.03 Tw +(, or via an explicit)Tj +-37.3424 -1.2889 TD +0.0422 Tw +(call to )Tj +/TT10 1 Tf +2.9824 0 TD +0 Tw +(MARKASCHANGED)Tj +/TT12 1 Tf +7.8013 0 TD +0.0422 Tw +[(, this object can be written out with any of the above three commands. Thus,)]TJ +-10.7837 -1.2889 TD +0.1111 Tw +(when the file manager attempts to determine whether this typed object is contained on a particular)Tj +0 -1.2222 TD +0.0456 Tw +(file, it must look at instances of all three file manager commands )Tj +/TT10 1 Tf +29.2439 0 TD +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5456 0 TD +(IFPROP)Tj +/TT12 1 Tf +3.6006 0 TD +0.0456 Tw +(, and )Tj +/TT10 1 Tf +2.534 0 TD +0 Tw +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +0.0456 Tw +(, to see if)Tj +-41.3249 -1.2889 TD +0.1333 Tw +[(the corresponding atom and property are specified. It is also permissible for a single file manager)]TJ +0 -1.2222 TD +0.0711 Tw +[(command to dump several different file manager types. For example, you can define a file manager)]TJ +T* +0.1667 Tw +[(command which dumps both a function definition and its macro. Conversely, some file manager)]TJ +T* +0 Tw +(comands do not dump any file manager types at all, such as the )Tj +/TT10 1 Tf +28.3833 0 TD +(E)Tj +/TT12 1 Tf +0.6001 0 TD +( command. )Tj +-28.9834 -2.9556 TD +0.09 Tw +(For each file manager command, the file manager must be able to determine what typed definitions)Tj +0 -1.2222 TD +0.0622 Tw +(the command will cause to be printed so that the file manager can determine on what file \(if any\) an)Tj +T* +0.2478 Tw +[(object of a given type is contained \(by searching through the filecoms\). Similarly, for each file)]TJ +T* +0.0778 Tw +(manager type, the file manager must be able to construct a command that will print out an object of)Tj +T* +0.1478 Tw +[(that type. In other words, the file manager must be able to map file manager commands into file)]TJ +T* +0.01 Tw +[(manager types, and vice versa. Information can be provided to the file manager about a particular file)]TJ +T* +0.1411 Tw +(manager command via the function )Tj +/TT10 1 Tf +16.749 0 TD +0 Tw +(FILEPKGCOM)Tj +/TT12 1 Tf +6.001 0 TD +0.1411 Tw +[( \(see the Defining New File Manager Commands)]TJ +-22.75 -1.2889 TD +0.0289 Tw +(section\), and information about a particular file manager type via the function )Tj +/TT10 1 Tf +35.0654 0 TD +0 Tw +(FILEPKGTYPE)Tj +/TT12 1 Tf +6.6011 0 TD +0.0289 Tw +[( \(see the)]TJ +-41.6665 -1.2889 TD +0.0244 Tw +[(prior section\). In the absence of other information, the default is simply that a file manager command)]TJ +0 -1.2222 TD +0.09 Tw +(of the form )Tj +/TT10 1 Tf +5.4429 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.8145 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.09 Tw +[( prints out the definition of )]TJ +/TT15 1 Tf +12.7324 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.09 Tw +[( as a type )]TJ +/TT15 1 Tf +5.0862 0 TD +0 Tw +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.09 Tw +(, and, conversely, if )Tj +/TT15 1 Tf +9.1876 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.09 Tw +[( is an)]TJ +-42.8652 -1.2889 TD +0 Tw +(object of type )Tj +/TT15 1 Tf +6.1733 0 TD +(X)Tj +/TT12 1 Tf +0.6001 0 TD +(, then )Tj +/TT15 1 Tf +2.7192 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( can be written out by a command of the form )Tj +/TT10 1 Tf +20.4971 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.6001 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(.)Tj +-37.1909 -2.9556 TD +0.2556 Tw +(If a file manager function is given a command or type that is not defined, it attempts spelling)Tj +0 -1.2222 TD +0.0567 Tw +(correction using )Tj +/TT10 1 Tf +7.5171 0 TD +0 Tw +(FILEPKGCOMSPLST)Tj +/TT12 1 Tf +9.0015 0 TD +0.0567 Tw +[( as a spelling list \(unless )]TJ +/TT10 1 Tf +11.2467 0 TD +0 Tw +(DWIMFLG)Tj +/TT12 1 Tf +4.2007 0 TD +0.0567 Tw +[( or )]TJ +/TT10 1 Tf +1.5542 0 TD +0.1356 Tw +(NOSPELLFLG = NIL)Tj +/TT12 1 Tf +9.8727 0 TD +0.0567 Tw +(; see)Tj +-43.393 -1.2889 TD +0.0022 Tw +(Chapter 20\). If successful, the corrected version of the list of file manager commands is written \(again\))Tj +0 -1.2222 TD +0.1011 Tw +(on the output file, since at this point, the uncorrected list of file manager commands would already)Tj +T* +0.1322 Tw +[(have been printed on the output file. When the file is loaded, this will result in )]TJ +/TT15 1 Tf +37.6969 0 TD +0 Tw +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1322 Tw +[( being)]TJ +-42.4977 -1.2889 TD +0.1856 Tw +(reset, and may cause a message to be printed, e.g., )Tj +/TT10 1 Tf +24.2594 0 TD +0.4467 Tw +(\(FOOCOMS RESET\))Tj +/TT12 1 Tf +9.4481 0 TD +0.1856 Tw +[(. The value of )]TJ +/TT10 1 Tf +7.4185 0 TD +0 Tw +(FOOCOMS)Tj +/TT12 1 Tf +-41.126 -1.2889 TD +0.2222 Tw +[(would then be the corrected version. If the spelling correction is unsuccessful, the file manager)]TJ +0 -1.2222 TD +0 Tw +(functions generate an error, )Tj +/TT10 1 Tf +12.4692 0 TD +(BAD FILE PACKAGE COMMAND)Tj +/TT12 1 Tf +14.4023 0 TD +(.)Tj +ET +endstream +endobj +109 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +112 0 obj +<< +/Length 7252 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-32)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 126 569.54 Tm +0.1889 Tw +(File package commands can be used to save on the output file definitions of functions, values of)Tj +0 -1.2222 TD +0.2822 Tw +[(variables, property lists of atoms, advised functions, edit macros, record declarations, etc. The)]TJ +T* +0 Tw +(interpretation of each file manager command is documented in the following sections.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(USERMACROS)Tj +/TT19 1 Tf +5.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.6 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 313.3509 525.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 525.2 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.1122 Tw +(Each symbol )Tj +/TT15 1 Tf +6.1141 0 TD +0 Tw +(SYMBOL)Tj +3.6015 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1122 Tw +[( is the name of a user edit macro. Writes expressions to add the)]TJ +-10.3156 -1.5111 TD +0.0067 Tw +(edit macro definitions of )Tj +/TT15 1 Tf +11.136 0 TD +0 Tw +(SYMBOL)Tj +3.6017 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0067 Tw +[( to )]TJ +/TT10 1 Tf +1.3854 0 TD +0 Tw +(USERMACROS)Tj +/TT12 1 Tf +6.001 0 TD +0.0067 Tw +(, and adds the names of the commands)Tj +-22.7242 -1.5111 TD +0 Tw +(to the appropriate spelling lists.)Tj +0 -2 TD +(If )Tj +/TT15 1 Tf +0.9366 0 TD +(SYMBOL)Tj +3.6001 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0167 Tw +[( is not a user macro, a warning message ")]TJ +/TT10 1 Tf +18.3434 0 TD +0.04 Tw +(no EDIT MACRO for )Tj +/TT15 1 Tf +10.9618 0 TD +0 Tw +(SYMBOL)Tj +3.6027 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0167 Tw +(" is)Tj +-38.6444 -1.5111 TD +0 Tw +(printed.)Tj +/TT4 1 Tf +10 0 0 10 126 420.46 Tm +(Functions and Macros)Tj +/TT10 1 Tf +9 0 0 9 150 400.46 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FNS)Tj +/TT12 1 Tf +1.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.2 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 237.7517 400.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 400.46 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Writes a )Tj +/TT10 1 Tf +3.915 0 TD +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +( expression with the function definitions of )Tj +/TT15 1 Tf +19.249 0 TD +(FN)Tj +1.2019 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +(.)Tj +-33.2667 -2.2889 TD +0.1789 Tw +(You should never print a )Tj +/TT10 1 Tf +12.2123 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.1789 Tw +[( expression directly onto a file \(by using the )]TJ +/TT10 1 Tf +21.1696 0 TD +0 Tw +(P)Tj +/TT12 1 Tf +0.6001 0 TD +0.1789 Tw +[( file)]TJ +-38.1827 -1.2889 TD +0.1444 Tw +(manager command, for example\), because )Tj +/TT10 1 Tf +19.6534 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1444 Tw +[( generates the filemap of function)]TJ +-24.4542 -1.2889 TD +0 Tw +(definitions from the )Tj +/TT10 1 Tf +9.0498 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +( file manager commands \(see the File Maps section\).)Tj +/TT10 1 Tf +-13.5168 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADVISE)Tj +/TT12 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.2 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 248.5509 315.12 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 315.12 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.1822 Tw +(For each function )Tj +/TT15 1 Tf +8.5057 0 TD +0 Tw +(FN)Tj +1.201 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1822 Tw +(, writes expressions to reinstate the function to its advised state)Tj +-10.3067 -1.5111 TD +0 Tw +(when the file is loaded. See Chapter 15.)Tj +0 -2 TD +0.0322 Tw +[(When advice is applied to a function programmatically or by hand, it is additive. That is,)]TJ +0 -1.2222 TD +0.2067 Tw +(if a function already has some advice, further advice is added to the already-existing)Tj +T* +0.0133 Tw +[(advice. However, when advice is applied to a function as a result of loading a file with an)]TJ +/TT10 1 Tf +T* +0 Tw +(ADVISE)Tj +/TT12 1 Tf +3.6006 0 TD +0.2011 Tw +[( file manager command, the new advice replaces any earlier advice. )]TJ +/TT10 1 Tf +32.7932 0 TD +0 Tw +(ADVISE)Tj +/TT12 1 Tf +-36.3938 -1.2889 TD +0.0133 Tw +[(works this way to prevent problems with loading different versions of the same advice. If)]TJ +0 -1.2222 TD +0.0544 Tw +(you really want to apply additive advice, a file manager command such as )Tj +/TT10 1 Tf +33.866 0 TD +0.1311 Tw +(\(P \(ADVISE)Tj +-33.866 -1.2889 TD +0 Tw +(...\)\))Tj +/TT12 1 Tf +3.0005 0 TD +( should be used \(see the Miscellaneous File Manager Commands section\).)Tj +/TT10 1 Tf +-5.6672 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADVICE)Tj +/TT19 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.2 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 248.5509 174.78 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 174.78 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.0733 Tw +(For each function )Tj +/TT15 1 Tf +8.179 0 TD +0 Tw +(FN)Tj +1.201 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0733 Tw +(, writes a )Tj +/TT10 1 Tf +4.469 0 TD +0 Tw +(PUTPROPS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0733 Tw +[( expression which will put the advice back on)]TJ +-19.2498 -1.5111 TD +0.2856 Tw +[(the property list of the function. You can then use )]TJ +/TT10 1 Tf +25.5498 0 TD +0 Tw +(READVISE)Tj +/TT12 1 Tf +4.8008 0 TD +0.2856 Tw +[( \(see Chapter 15\) to)]TJ +-30.3506 -1.2889 TD +0 Tw +(reactivate the advice.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(MACROS)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.6 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 291.7509 108.64 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 108.64 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.5112 0 TD +(SYMBOL)Tj +3.6011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1244 Tw +[( is a symbol with a )]TJ +/TT10 1 Tf +9.2476 0 TD +0 Tw +(MACRO)Tj +/TT12 1 Tf +3.0005 0 TD +0.1244 Tw +[( definition \(and/or a )]TJ +/TT10 1 Tf +9.9026 0 TD +0 Tw +(DMACRO)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6244 0 TD +(10MACRO)Tj +/TT12 1 Tf +4.2007 0 TD +0.1244 Tw +(, etc.\).)Tj +-37.2886 -1.5111 TD +0.3267 Tw +(Writes out an expression to restore all of the macro properties for each )Tj +/TT15 1 Tf +35.5533 0 TD +0 Tw +(SYMBOL)Tj +3.6033 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +(,)Tj +-39.7567 -1.5111 TD +0.0267 Tw +(embedded in a )Tj +/TT10 1 Tf +6.9086 0 TD +0.0656 Tw +(DECLARE: EVAL@COMPILE)Tj +/TT12 1 Tf +12.6676 0 TD +0.0267 Tw +[( so the macros will be defined when the file is)]TJ +-19.5762 -1.2889 TD +0 Tw +(compiled. See Chapter 10.)Tj +ET +endstream +endobj +113 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +115 0 obj +<< +/Length 8946 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-33)Tj +/TT4 1 Tf +10 0 0 10 78 568.2 Tm +(Variables)Tj +/TT10 1 Tf +9 0 0 9 102 548.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VARS)Tj +/TT4 1 Tf +10 0 0 10 129 548.2 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 131.7783 548.2 Tm +(VAR)Tj +1.8002 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 201.0809 548.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 548.2 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.0944 Tw +(For each )Tj +/TT15 1 Tf +4.1908 0 TD +0 Tw +(VAR)Tj +1.8003 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0944 Tw +[(, writes an expression to set its top level value when the file is loaded. If)]TJ +/TT15 1 Tf +-6.5911 -1.5111 TD +0 Tw +(VAR)Tj +1.8 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0422 Tw +[( is atomic, )]TJ +/TT10 1 Tf +4.8313 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0422 Tw +[( writes out an expression to set )]TJ +/TT15 1 Tf +14.1896 0 TD +0 Tw +(VAR)Tj +1.801 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0422 Tw +[( to the top-level value it had at)]TJ +-26.2222 -1.5111 TD +0.0433 Tw +[(the time the file was written. If )]TJ +/TT15 1 Tf +14.4053 0 TD +0 Tw +(VAR)Tj +1.8003 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0433 Tw +[( is non-atomic, it is interpreted as )]TJ +/TT10 1 Tf +15.2711 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VAR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.2933 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0433 Tw +(, and)Tj +/TT10 1 Tf +-37.7709 -1.5111 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.07 Tw +[( write out an expression to set )]TJ +/TT15 1 Tf +13.9602 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.07 Tw +[( to the value of )]TJ +/TT15 1 Tf +7.1762 0 TD +0 Tw +(FORM)Tj +/TT12 1 Tf +2.4004 0 TD +0.07 Tw +[( \(evaluated when the file is)]TJ +-27.7375 -1.2889 TD +0 Tw +(loaded\).)Tj +/TT10 1 Tf +0 -2 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.19 Tw +[( prints out expressions using )]TJ +/TT10 1 Tf +13.9109 0 TD +0 Tw +(RPAQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.19 Tw +[( and )]TJ +/TT10 1 Tf +2.5729 0 TD +0 Tw +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +0.19 Tw +(, which are like )Tj +/TT10 1 Tf +7.7341 0 TD +0 Tw +(SETQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.19 Tw +[( and )]TJ +/TT10 1 Tf +2.5729 0 TD +0 Tw +(SETQ)Tj +/TT12 1 Tf +-37.5926 -1.2889 TD +0.1578 Tw +(except that they also perform some special operations with respect to the file manager)Tj +0 -1.2222 TD +0 Tw +(\(see the Functions Used within Source Files section\).)Tj +/TT10 1 Tf +0 -2 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1411 Tw +[( cannot be used for putting arbitrary variable values on files. For example, if the)]TJ +-2.4004 -1.2889 TD +0.0611 Tw +(value of a variable is an array \(or many other data types\), a symbol which represents the)Tj +0 -1.2222 TD +0.0911 Tw +[(array is dumped in the file instead of the array itself. The )]TJ +/TT10 1 Tf +26.8304 0 TD +0 Tw +(HORRIBLEVARS)Tj +/TT12 1 Tf +7.2012 0 TD +0.0911 Tw +[( file manager)]TJ +-34.0316 -1.2889 TD +0.1922 Tw +(command provides a way of saving and reloading variables whose values contain re-)Tj +0 -1.2222 TD +0 Tw +(entrant or circular list structure, user data types, arrays, or hash arrays.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(INITVARS)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 227.5517 351.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 351.06 Tm +([File Manager Command])Tj +/TT10 1 Tf +-28.5444 -2.0667 TD +(INITVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.28 Tw +[( is used for initializing variables, setting their values only when they are)]TJ +-4.8008 -1.2889 TD +0 Tw +(currently )Tj +/TT10 1 Tf +4.4091 0 TD +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +0.0878 Tw +[(. A variable value defined in an )]TJ +/TT10 1 Tf +15.0831 0 TD +0 Tw +(INITVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0878 Tw +[( command will not change)]TJ +-27.8935 -1.2889 TD +0.3756 Tw +[(an already established value. This means that re-loading files to get some other)]TJ +0 -1.2222 TD +0 Tw +(information will not automatically revert to the initialization values.)Tj +0 -2 TD +0.1511 Tw +(The format of an )Tj +/TT10 1 Tf +8.2221 0 TD +0 Tw +(INITVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1511 Tw +[( command is just like )]TJ +/TT10 1 Tf +10.3727 0 TD +0 Tw +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1511 Tw +[(. The only difference is that if)]TJ +/TT15 1 Tf +-25.796 -1.2889 TD +0 Tw +(VAR)Tj +1.8 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.39 Tw +[( is atomic, the current value is not dumped; instead )]TJ +/TT10 1 Tf +26.8233 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.39 Tw +[( is defined as the)]TJ +-31.0236 -1.5111 TD +0.0433 Tw +[(initialization value. Therefore, )]TJ +/TT10 1 Tf +14.0205 0 TD +0.1033 Tw +(\(INITVARS FOO \(FUM 2\)\))Tj +/TT12 1 Tf +13.5121 0 TD +0.0433 Tw +[( is the same as )]TJ +/TT10 1 Tf +6.7782 0 TD +0 Tw +(\(VARS)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2933 0 TD +(\(FOO)Tj +-37.6047 -1.2889 TD +(NIL\)\(FUM 2\)\))Tj +/TT12 1 Tf +7.2012 0 TD +(, if )Tj +/TT10 1 Tf +1.374 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(FUM)Tj +/TT12 1 Tf +1.8003 0 TD +( are both )Tj +/TT10 1 Tf +4.1314 0 TD +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-22.1006 -2.0667 TD +(INITVARS)Tj +/TT12 1 Tf +4.8008 0 TD +( writes out an )Tj +/TT10 1 Tf +6.3062 0 TD +(RPAQ?)Tj +/TT12 1 Tf +3.0005 0 TD +( expression on the file instead of )Tj +/TT10 1 Tf +14.4878 0 TD +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(RPAQQ.)Tj +-35.1032 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADDVARS)Tj +/TT10 1 Tf +4.1999 0 TD +( \()Tj +/TT15 1 Tf +1.2002 0 TD +(VAR)Tj +1.7998 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LST)Tj +1.7999 -0.2222 TD +(1)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT15 1 Tf +0.6001 0 TD +(...)Tj +/TT10 1 Tf +1.8003 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VAR)Tj +1.7995 -0.2222 TD +(N)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LST)Tj +1.7999 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\)\))Tj +/TT6 1 Tf +10 0 0 10 300.0017 201.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 201.92 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(For each )Tj +/TT10 1 Tf +4.0044 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VAR)Tj +1.7999 -0.2222 TD +(i)Tj +/TT19 1 Tf +0.6 0.2222 TD +( . )Tj +/TT15 1 Tf +0.7522 0 TD +(LST)Tj +1.8 -0.2222 TD +(i)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(, writes an )Tj +/TT10 1 Tf +4.8355 0 TD +(ADDTOVAR)Tj +/TT12 1 Tf +4.8008 0 TD +( \(see the Functions Used Within Source Files)Tj +-20.393 -1.5111 TD +0.0033 Tw +(section\) to add each element of )Tj +/TT15 1 Tf +13.9414 0 TD +0 Tw +(LST)Tj +1.8008 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0001 Tc +0.0032 Tw +( to the list that is the value of )Tj +/TT15 1 Tf +13.0246 0 TD +0 Tc +0 Tw +(VAR)Tj +1.7976 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0002 Tc +0.0031 Tw +( at the time the file)Tj +-31.7644 -1.5111 TD +0.0042 Tw +(is loaded. The new value of )Tj +/TT15 1 Tf +12.6693 0 TD +0 Tc +0 Tw +(VAR)Tj +1.8018 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0001 Tc +0.0043 Tw +( will be the union of its old value and )Tj +/TT15 1 Tf +16.7734 0 TD +0 Tc +0 Tw +(LST)Tj +1.801 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0003 Tc +0.0041 Tw +(. If the value)Tj +-34.2456 -1.5111 TD +0 Tc +0 Tw +(of )Tj +/TT15 1 Tf +1.1289 0 TD +(VAR)Tj +1.8 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +(, it is first set to )Tj +/TT10 1 Tf +6.9522 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +-17.0968 -2.2889 TD +0.2033 Tw +(For example, )Tj +/TT10 1 Tf +6.4028 0 TD +0.4878 Tw +(\(ADDVARS \(DIRECTORIES LISP LISPUSERS\)\))Tj +/TT12 1 Tf +24.267 0 TD +0.2033 Tw +[( will add )]TJ +/TT10 1 Tf +4.7887 0 TD +0 Tw +(LISP)Tj +/TT12 1 Tf +2.4004 0 TD +0.2033 Tw +[( and)]TJ +/TT10 1 Tf +-37.8589 -1.2889 TD +0 Tw +(LISPUSERS)Tj +/TT12 1 Tf +5.4009 0 TD +( to the value of )Tj +/TT10 1 Tf +6.8262 0 TD +(DIRECTORIES)Tj +/TT12 1 Tf +6.6011 0 TD +(.)Tj +-18.8281 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9577 0 TD +(LST)Tj +1.8001 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0378 Tw +[( is not specified, )]TJ +/TT15 1 Tf +7.5227 0 TD +0 Tw +(VAR)Tj +1.8018 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0378 Tw +[( is initialized to )]TJ +/TT10 1 Tf +7.1911 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0378 Tw +[( if its current value is )]TJ +/TT10 1 Tf +9.7687 0 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +0.0378 Tw +[(. In other)]TJ +-35.6429 -1.5111 TD +0 Tw +(words, )Tj +/TT10 1 Tf +3.3096 0 TD +(\(ADDVARS \()Tj +/TT15 1 Tf +6.001 0 TD +(VAR)Tj +/TT10 1 Tf +1.8003 0 TD +(\)\))Tj +/TT12 1 Tf +1.2002 0 TD +( will initialize )Tj +/TT15 1 Tf +6.2993 0 TD +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +( has not previously been set.)Tj +ET +endstream +endobj +116 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +118 0 obj +<< +/Length 9098 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-34)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(APPENDVARS)Tj +/TT10 1 Tf +5.9999 0 TD +( \()Tj +/TT15 1 Tf +1.2002 0 TD +(VAR)Tj +1.7998 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LST)Tj +1.7999 -0.2222 TD +(1)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT15 1 Tf +0.6001 0 TD +( ... )Tj +/TT10 1 Tf +3.0005 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VAR)Tj +1.7993 -0.2222 TD +(N)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LST)Tj +1.7999 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\)\) )Tj +/TT6 1 Tf +10 0 0 10 380.4026 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 568.2 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.1822 Tw +(The same as )Tj +/TT10 1 Tf +6.18 0 TD +0 Tw +(ADDVARS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1822 Tw +(, except that the values are added to the end of the lists \(using)Tj +/TT10 1 Tf +-10.3807 -1.2889 TD +0 Tw +(APPENDTOVAR)Tj +/TT12 1 Tf +6.6011 0 TD +0.2156 Tw +(, in the Functions Used Within Source Files section\), rather than at the)Tj +-6.6011 -1.2889 TD +0 Tw +(beginning.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(UGLYVARS)Tj +/TT4 1 Tf +10 0 0 10 198.6 504.06 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 201.3783 504.06 Tm +(VAR)Tj +1.8002 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 270.6808 504.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 504.06 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Like )Tj +/TT10 1 Tf +2.2681 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0811 Tw +(, except that the value of each )Tj +/TT15 1 Tf +13.8563 0 TD +0 Tw +(VAR)Tj +1.7974 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0811 Tw +[( may contain structures for which )]TJ +/TT10 1 Tf +15.6224 0 TD +0 Tw +(READ)Tj +/TT12 1 Tf +2.4004 0 TD +0.0811 Tw +[( is)]TJ +-38.945 -1.5111 TD +0.1333 Tw +(not an inverse of )Tj +/TT10 1 Tf +8.1632 0 TD +0 Tw +(PRINT)Tj +/TT12 1 Tf +3.0005 0 TD +0.1333 Tw +(, e.g. arrays, readtables, user data types, etc. Uses )Tj +/TT10 1 Tf +23.1409 0 TD +0 Tw +(HPRINT)Tj +/TT12 1 Tf +3.6006 0 TD +0.1333 Tw +[( \(see)]TJ +-37.9052 -1.2889 TD +0 Tw +(Chapter 25\).)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6 0 TD +(HORRIBLEVARS)Tj +/TT4 1 Tf +10 0 0 10 220.2105 437.92 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 222.9888 437.92 Tm +(VAR)Tj +1.799 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 297.6817 437.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 437.92 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Like )Tj +/TT10 1 Tf +2.2781 0 TD +(UGLYVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0911 Tw +[(, except structures may also contain circular pointers. Uses )]TJ +/TT10 1 Tf +27.2573 0 TD +0 Tw +(HPRINT)Tj +/TT12 1 Tf +3.6006 0 TD +0.0911 Tw +[( \(see)]TJ +-37.9368 -1.2889 TD +0.0111 Tw +[(Chapter 25\). The values of )]TJ +/TT15 1 Tf +12.1565 0 TD +0 Tw +(VAR)Tj +1.8013 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.2611 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.2611 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0111 Tw +[( are printed in the same operation, so that they)]TJ +-19.28 -1.5111 TD +0 Tw +(may contain pointers to common substructures. )Tj +/TT10 1 Tf +0 -2 TD +(UGLYVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0856 Tw +[( does not do any checking for circularities, which results in a large speed and)]TJ +-4.8008 -1.2889 TD +0.3278 Tw +(internal-storage advantage over )Tj +/TT10 1 Tf +15.3427 0 TD +0 Tw +(HORRIBLEVARS)Tj +/TT12 1 Tf +7.2012 0 TD +0.3278 Tw +(. Thus, if it is known that the data)Tj +-22.5439 -1.2889 TD +0.4278 Tw +(structures do )Tj +/TT8 1 Tf +6.9312 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.4278 Tw +[( contain circular pointers, )]TJ +/TT10 1 Tf +13.2389 0 TD +0 Tw +(UGLYVARS)Tj +/TT12 1 Tf +4.8008 0 TD +0.4278 Tw +[( should be used instead of)]TJ +/TT10 1 Tf +-26.304 -1.2889 TD +0 Tw +(HORRIBLEVARS)Tj +/TT12 1 Tf +7.2012 0 TD +(.)Tj +/TT10 1 Tf +-9.8678 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ALISTS)Tj +/TT10 1 Tf +3.5999 0 TD +( \()Tj +/TT15 1 Tf +1.2002 0 TD +(VAR)Tj +1.7998 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(KEY)Tj +1.8 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(KEY)Tj +1.8 -0.2222 TD +(2)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...\))Tj +/TT15 1 Tf +2.4004 0 TD +(...)Tj +/TT10 1 Tf +1.8003 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VAR)Tj +1.7992 -0.2222 TD +(N)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(KEY)Tj +1.8 -0.2222 TD +(3)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(KEY)Tj +1.8 -0.2222 TD +(4)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...\)\))Tj +/TT6 1 Tf +10 0 0 10 411.9044 318.38 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 318.38 Tm +([File Manager Command])Tj +/TT15 1 Tf +-28.5444 -2.0667 TD +(VAR)Tj +1.8 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.5856 Tw +[( is a variable whose value is an association list, such as )]TJ +/TT10 1 Tf +31.3475 0 TD +0 Tw +(EDITMACROS)Tj +/TT12 1 Tf +6.001 0 TD +(,)Tj +/TT10 1 Tf +-39.7485 -1.5111 TD +(BAKTRACELST)Tj +/TT12 1 Tf +6.6011 0 TD +0.03 Tw +[(, etc. For each )]TJ +/TT15 1 Tf +6.651 0 TD +0 Tw +(VAR)Tj +1.7991 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +(, )Tj +/TT10 1 Tf +0.53 0 TD +(ALISTS)Tj +/TT12 1 Tf +3.6006 0 TD +0.03 Tw +[( writes out expressions which will restore the)]TJ +-19.7817 -1.5111 TD +0.1022 Tw +[(values associated with the specified keys. For example, )]TJ +/TT10 1 Tf +25.7105 0 TD +0.2444 Tw +(\(ALISTS \(BREAKMACROS BT)Tj +-25.7105 -1.2889 TD +0 Tw +(BTV\)\))Tj +/TT12 1 Tf +3.0005 0 TD +( will dump the definition for the )Tj +/TT10 1 Tf +14.5352 0 TD +(BT)Tj +/TT12 1 Tf +1.2002 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(BTV)Tj +/TT12 1 Tf +1.8003 0 TD +( commands on )Tj +/TT10 1 Tf +6.75 0 TD +(BREAKMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +(.)Tj +-36.0801 -2.0667 TD +0.0022 Tw +(Some association lists \()Tj +/TT10 1 Tf +10.1517 0 TD +0 Tw +(USERMACROS)Tj +/TT12 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5022 0 TD +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.0022 Tw +(, etc.\) are used to implement other file)Tj +-23.256 -1.2889 TD +0 Tw +(manager types, and they have their own file manager commands.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(SPECVARS)Tj +/TT12 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 270.1508 208.44 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 208.44 Tm +([File Manager Command])Tj +/TT10 1 Tf +-31.2111 -1.66 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOCALVARS)Tj +/TT12 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 280.9517 193.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 193.5 Tm +([File Manager Command])Tj +/TT10 1 Tf +-31.2111 -1.66 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(GLOBALVARS)Tj +/TT12 1 Tf +5.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 286.3517 178.56 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 178.56 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.6456 Tw +(Outputs the corresponding compiler declaration embedded in a )Tj +/TT10 1 Tf +33.6459 0 TD +0 Tw +(DECLARE: )Tj +-33.6459 -1.2889 TD +(DOEVAL@COMPILE DONTCOPY)Tj +/TT12 1 Tf +13.8022 0 TD +(. See Chapter 18.)Tj +/TT10 1 Tf +-16.4689 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CONSTANTS)Tj +/TT12 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 275.5508 125.42 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 125.42 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Like )Tj +/TT10 1 Tf +2.2915 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +0.1044 Tw +(, for each )Tj +/TT15 1 Tf +4.5921 0 TD +0 Tw +(VAR)Tj +1.8005 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1044 Tw +[( writes an expression to set its top level value when the file is)]TJ +-11.6844 -1.5111 TD +0.0678 Tw +[(loaded. Also writes a )]TJ +/TT10 1 Tf +10.1641 0 TD +0 Tw +(CONSTANTS)Tj +/TT12 1 Tf +5.4009 0 TD +0.0678 Tw +[( expression to declare these variables as constants \(see)]TJ +-15.565 -1.2889 TD +0.07 Tw +[(Chapter 18\). Both of these expressions are wrapped in a )]TJ +/TT10 1 Tf +25.8579 0 TD +0.1689 Tw +[(\(DECLARE: EVAL@COMPILE)]TJ +-25.8579 -1.2889 TD +0 Tw +(...\))Tj +/TT12 1 Tf +2.4004 0 TD +( expression, so they can be used by the compiler.)Tj +ET +endstream +endobj +119 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +121 0 obj +<< +/Length 8604 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-35)Tj +/TT12 1 Tf +-37 60.6156 TD +(Like )Tj +/TT10 1 Tf +2.2803 0 TD +(VARS)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.5933 0 TD +(VAR)Tj +1.7993 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0933 Tw +[( can be non-atomic, in which case it is interpreted as )]TJ +/TT10 1 Tf +24.2903 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(VAR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3433 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0933 Tw +(, and)Tj +-37.7079 -1.5111 TD +0 Tw +(passed to )Tj +/TT10 1 Tf +4.4106 0 TD +(CONSTANTS)Tj +/TT12 1 Tf +5.4009 0 TD +( \(along with the variable being initialized to )Tj +/TT15 1 Tf +19.5894 0 TD +(FORM)Tj +/TT12 1 Tf +2.4004 0 TD +(\).)Tj +/TT4 1 Tf +10 0 0 10 78 528 Tm +(Symbol Properties)Tj +/TT10 1 Tf +9 0 0 9 102 508 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PROP)Tj +/TT19 1 Tf +2.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROPNAME)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5992 -0.2222 TD +(1)Tj +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.6001 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5996 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 281.5508 508 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 508 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.17 Tw +(Writes a )Tj +/TT10 1 Tf +4.255 0 TD +0 Tw +(PUTPROPS)Tj +/TT12 1 Tf +4.8008 0 TD +0.17 Tw +[( expression to restore the value of the )]TJ +/TT15 1 Tf +18.1041 0 TD +0 Tw +(PROPNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.17 Tw +[( property of each)]TJ +-31.9607 -1.2889 TD +0 Tw +(symbol )Tj +/TT15 1 Tf +3.5029 0 TD +(SYMBOL)Tj +3.6004 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +( when the file is loaded.)Tj +-7.7033 -2.2889 TD +(If )Tj +/TT15 1 Tf +1.1888 0 TD +(PROPNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.2689 Tw +[( is a list, expressions will be written for each property on that list. If)]TJ +/TT15 1 Tf +-5.9896 -1.2889 TD +0 Tw +(PROPNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.0111 Tw +[( is the symbol )]TJ +/TT10 1 Tf +6.3994 0 TD +0 Tw +(ALL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0111 Tw +(, the values of all user properties \(on the property list of each)Tj +/TT15 1 Tf +-13.0005 -1.2889 TD +0 Tw +(SYMBOL)Tj +3.6 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1222 Tw +(\) are saved. )Tj +/TT10 1 Tf +6.0245 0 TD +0 Tw +(SYSPROPS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1222 Tw +[( is a list of properties used by system functions. Only)]TJ +-15.0253 -1.5111 TD +0 Tw +(properties )Tj +/TT8 1 Tf +4.7871 0 TD +(not)Tj +/TT12 1 Tf +1.333 0 TD +( on that list are dumped when the )Tj +/TT10 1 Tf +15.2202 0 TD +(ALL)Tj +/TT12 1 Tf +1.8003 0 TD +( option is used.)Tj +-23.1406 -2.0667 TD +(If )Tj +/TT15 1 Tf +1.0633 0 TD +(SYMBOL)Tj +3.6001 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1433 Tw +[( does not have the property )]TJ +/TT15 1 Tf +13.2863 0 TD +0 Tw +(PROPNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.1433 Tw +[( \(as opposed to having the property)]TJ +-23.3504 -1.5111 TD +0.1078 Tw +(with value )Tj +/TT10 1 Tf +5.1867 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1078 Tw +(\), a warning message )Tj +/TT10 1 Tf +9.999 0 TD +0 Tw +("NO )Tj +/TT15 1 Tf +2.6593 0 TD +(PROPNAME)Tj +/TT10 1 Tf +4.8008 0 TD +0.2589 Tw +[( PROPERTY FOR )]TJ +/TT15 1 Tf +9.178 0 TD +0 Tw +(SYMBOL)Tj +3.5992 -0.2222 TD +(i)Tj +/TT10 1 Tf +0.6 0.2222 TD +(" )Tj +/TT12 1 Tf +1.4591 0 TD +(is)Tj +-39.2824 -1.5111 TD +0.1111 Tw +[(printed. The command )]TJ +/TT10 1 Tf +11.1017 0 TD +0 Tw +(IFPROP)Tj +/TT12 1 Tf +3.6006 0 TD +0.1111 Tw +[( can be used if it is not known whether or not an atom)]TJ +-14.7023 -1.2889 TD +0 Tw +(will have the corresponding property.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(IFPROP)Tj +/TT12 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROPNAME)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5992 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 289.2008 340.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 340.66 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.1567 Tw +(Same as the )Tj +/TT10 1 Tf +5.9178 0 TD +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +0.1567 Tw +[( file manager command, except that it only saves the properties that)]TJ +-8.3181 -1.2889 TD +0.0444 Tw +[(actually appear on the property list of the corresponding atom. For example, if )]TJ +/TT10 1 Tf +35.799 0 TD +0 Tw +(FOO1)Tj +/TT12 1 Tf +2.4004 0 TD +0.0444 Tw +[( has)]TJ +-38.1994 -1.2889 TD +0 Tw +(property )Tj +/TT10 1 Tf +4.1727 0 TD +(PROP1)Tj +/TT12 1 Tf +3.0005 0 TD +0.0233 Tw +[( and )]TJ +/TT10 1 Tf +2.2395 0 TD +0 Tw +(PROP2)Tj +/TT12 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5233 0 TD +(FOO2)Tj +/TT12 1 Tf +2.4004 0 TD +0.0233 Tw +[( has )]TJ +/TT10 1 Tf +2.0525 0 TD +0 Tw +(PROP3)Tj +/TT12 1 Tf +3.0005 0 TD +0.0233 Tw +(, and )Tj +/TT10 1 Tf +2.4895 0 TD +0 Tw +(FOO3)Tj +/TT12 1 Tf +2.4004 0 TD +0.0233 Tw +[( has property )]TJ +/TT10 1 Tf +6.2253 0 TD +0 Tw +(PROP1)Tj +/TT12 1 Tf +3.0005 0 TD +0.0233 Tw +[( and )]TJ +/TT10 1 Tf +2.2395 0 TD +0 Tw +(PROP3)Tj +/TT12 1 Tf +3.0005 0 TD +(,)Tj +-39.7457 -1.2889 TD +(then )Tj +/TT10 1 Tf +2.2715 0 TD +0.1244 Tw +(\(IFPROP \(PROP1 PROP2 PROP3\) FOO1 FOO2 FOO3\))Tj +/TT12 1 Tf +26.5509 0 TD +0.0522 Tw +[( will save only those five)]TJ +-28.8223 -1.2889 TD +0 Tw +(property values.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PROPS)Tj +/TT10 1 Tf +2.9999 0 TD +( \()Tj +/TT15 1 Tf +1.2002 0 TD +(SYMBOL)Tj +3.5998 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROPNAME)Tj +4.8 -0.2222 TD +(1)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT15 1 Tf +0.6001 0 TD +(...)Tj +/TT10 1 Tf +1.8003 0 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(SYMBOL)Tj +3.5995 -0.2222 TD +(N)Tj +0.6 0.2222 TD +( PROPNAME)Tj +5.4 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\)\))Tj +/TT6 1 Tf +10 0 0 10 363.4517 253.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 253.32 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.31 Tw +(Similar to )Tj +/TT10 1 Tf +5.1679 0 TD +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +0.31 Tw +[( command. Writes a )]TJ +/TT10 1 Tf +10.9133 0 TD +0 Tw +(PUTPROPS)Tj +/TT12 1 Tf +4.8008 0 TD +0.31 Tw +[( expression to restore the value of)]TJ +/TT15 1 Tf +-23.2823 -1.2889 TD +0 Tw +(PROPNAME)Tj +4.8 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +( for each )Tj +/TT15 1 Tf +4.0288 0 TD +(SYMBOL)Tj +3.6012 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +( when the file is loaded.)Tj +-13.63 -2.2889 TD +0.2478 Tw +(As with the )Tj +/TT10 1 Tf +6.1154 0 TD +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +0.2478 Tw +[( command, if )]TJ +/TT15 1 Tf +6.8156 0 TD +0 Tw +(SYMBOL)Tj +3.6019 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2478 Tw +[( does not have the property )]TJ +/TT15 1 Tf +13.9129 0 TD +0 Tw +(PROPNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.2478 Tw +[( \(as)]TJ +-38.2471 -1.5111 TD +0.1167 Tw +(opposed to having the property with )Tj +/TT10 1 Tf +17.2757 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1167 Tw +[( value\), a warning message )]TJ +/TT10 1 Tf +12.8392 0 TD +0 Tw +("NO )Tj +/TT15 1 Tf +2.6815 0 TD +(PROPNAME)Tj +4.7989 -0.2222 TD +(i)Tj +/TT10 1 Tf +-39.3956 -1.2889 TD +(PROPERTY FOR )Tj +/TT15 1 Tf +7.8013 0 TD +(SYMBOL)Tj +3.5987 -0.2222 TD +(i)Tj +/TT10 1 Tf +0.6 0.2222 TD +(")Tj +/TT12 1 Tf +0.6001 0 TD +( is printed.)Tj +/TT4 1 Tf +10 0 0 10 78 145.38 Tm +(Miscellaneous File Manager Commands)Tj +/TT10 1 Tf +9 0 0 9 102 125.38 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(RECORDS)Tj +/TT12 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REC)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REC)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 216.7509 125.38 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 125.38 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.6534 0 TD +(REC)Tj +1.8011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2667 Tw +[( is the name of a record \(see Chapter 8\). Writes expressions which will)]TJ +-5.0544 -1.5111 TD +0 Tw +(redeclare the records when the file is loaded.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(INITRECORDS)Tj +/TT19 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REC)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REC)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-15561([File Manager Command])]TJ +-12.4834 -2.0667 TD +0.1256 Tw +(Similar to )Tj +/TT10 1 Tf +4.799 0 TD +0 Tw +(RECORDS)Tj +/TT12 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6256 0 TD +(INITRECORDS)Tj +/TT12 1 Tf +6.6011 0 TD +0.1256 Tw +[( writes expressions on a file that will, when loaded,)]TJ +-16.2263 -1.2889 TD +0.5422 Tw +(perform whatever initialization/allocation is necessary for the indicated records.)Tj +ET +endstream +endobj +122 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +124 0 obj +<< +/Length 7652 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-36)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +0.0067 Tw +[(However, the record declarations themselves are not written out. This facility is useful for)]TJ +0 -1.2222 TD +0.0311 Tw +(building systems on top of Interlisp, in which the implementor may want to eliminate the)Tj +T* +0.0956 Tw +(record declarations from a production version of the system, but the allocation for these)Tj +T* +0 Tw +(records must still be done.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LISPXMACROS)Tj +/TT12 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.6 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 318.7509 514.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 514.2 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.4567 0 TD +(SYMBOL)Tj +3.6011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.07 Tw +[( is defined on )]TJ +/TT10 1 Tf +6.5085 0 TD +0 Tw +(LISPXMACROS)Tj +/TT12 1 Tf +6.6011 0 TD +0.07 Tw +[( or )]TJ +/TT10 1 Tf +1.5809 0 TD +0 Tw +(LISPXHISTORYMACROS)Tj +/TT12 1 Tf +10.8018 0 TD +0.07 Tw +[( \(see Chapter 13\).)]TJ +-32.15 -1.5111 TD +0.1078 Tw +(Writes expressions which will save and restore the definition for each macro, as well as)Tj +0 -1.2222 TD +0 Tw +(making the necessary additions to )Tj +/TT10 1 Tf +15.3418 0 TD +(LISPXCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +( )Tj +/TT10 1 Tf +-23.4093 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(I.S.OPRS)Tj +/TT12 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPR)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 270.1508 448.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 448.06 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.4001 0 TD +(OPR)Tj +1.8011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0133 Tw +[( is the name of a user-defined i.s.opr \(see Chapter 9\). Writes expressions which)]TJ +-4.8011 -1.5111 TD +0 Tw +(will redefine the i.s.oprs when the file is loaded.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(RESOURCES)Tj +/TT12 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(RESOURCE)Tj +4.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(RESOURCE)Tj +4.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 329.5508 393.52 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 393.52 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.4556 0 TD +(RESOURCES)Tj +5.4011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0689 Tw +[( is the name of a resource \(see Chapter 12\). Writes expressions which)]TJ +-8.4567 -1.5111 TD +0 Tw +(will redeclare the resource when the file is loaded.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(INITRESOURCES)Tj +/TT12 1 Tf +7.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(RESOURCE)Tj +4.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(RESOURCE)Tj +4.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 351.1508 338.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 338.98 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.3189 Tw +(Parallel to )Tj +/TT10 1 Tf +5.3609 0 TD +0 Tw +(INITRECORDS)Tj +/TT12 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.8189 0 TD +(INITRESOURCES)Tj +/TT12 1 Tf +7.8013 0 TD +0.3189 Tw +[( writes expressions on a file to perform)]TJ +-20.5822 -1.2889 TD +0.0044 Tw +(whatever initialization/allocation is necessary for the indicated resources, without writing)Tj +0 -1.2222 TD +0 Tw +(the resource declaration itself.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(COURIERPROGRAMS)Tj +/TT12 1 Tf +8.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 318.7509 275.44 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 275.44 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.3989 0 TD +(NAME)Tj +2.4011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0122 Tw +[( is the name of a Courier program \(see Chapter 31\). Writes expressions which)]TJ +-5.4 -1.5111 TD +0 Tw +(will redeclare the Courier program when the file is loaded.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TEMPLATES)Tj +/TT12 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.6 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 307.9508 220.9 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 220.9 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.5078 0 TD +(SYMBOL)Tj +3.6011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1211 Tw +[( is a symbol which has a Masterscope template \(see Chapter 19\). Writes)]TJ +-6.7089 -1.5111 TD +0 Tw +(expressions which will restore the templates when the file is loaded.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILES)Tj +/TT12 1 Tf +2.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 264.7509 166.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 166.36 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.2811 Tw +[(Used to specify auxiliary files to be loaded in when the file is loaded. Dumps an)]TJ +0 -1.2222 TD +0.0522 Tw +(expression calling )Tj +/TT10 1 Tf +8.2963 0 TD +0 Tw +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +0.0522 Tw +[( \(see the Loading Files section\), with )]TJ +/TT15 1 Tf +16.6634 0 TD +0 Tw +(FILE)Tj +2.4016 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3022 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0522 Tw +[( as)]TJ +-38.7667 -1.5111 TD +0.3011 Tw +(the arguments. )Tj +/TT10 1 Tf +8.0386 0 TD +0 Tw +(FILESLOAD)Tj +/TT12 1 Tf +5.4009 0 TD +0.3011 Tw +[( interprets )]TJ +/TT15 1 Tf +5.4006 0 TD +0 Tw +(FILE)Tj +2.4 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.5511 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.5511 0 TD +(FILE)Tj +2.3997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.3011 Tw +[( as files to load, possibly)]TJ +-27.7422 -1.5111 TD +0 Tw +(interspersed with lists used to specify certain loading options.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILEPKGCOMS)Tj +/TT12 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.6 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SYMBOL)Tj +3.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 318.7509 87.22 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 87.22 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.1167 Tw +(Each symbol )Tj +/TT15 1 Tf +6.123 0 TD +0 Tw +(SYMBOL)Tj +3.6015 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1167 Tw +[( is either the name of a user-defined file manager command or a)]TJ +-10.3244 -1.5111 TD +0.2244 Tw +[(user-defined file manager type \(or both\). Writes expressions which will restore each)]TJ +0 -1.2222 TD +0 Tw +(command/type.)Tj +ET +endstream +endobj +125 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +127 0 obj +<< +/Length 6936 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-37)Tj +/TT12 1 Tf +-37 60.6156 TD +(If )Tj +/TT15 1 Tf +1.1488 0 TD +(SYMBOL)Tj +3.6001 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2289 Tw +[( is not a file manager command or type, a warning message )]TJ +/TT10 1 Tf +29.2911 0 TD +0.55 Tw +("no FILE)Tj +-34.64 -1.5111 TD +0 Tw +(PACKAGE COMMAND for )Tj +/TT15 1 Tf +12.002 0 TD +(SYMBOL)Tj +3.598 -0.2222 TD +(i)Tj +/TT10 1 Tf +0.6 0.2222 TD +(")Tj +/TT12 1 Tf +0.6001 0 TD +( is printed.)Tj +/TT10 1 Tf +-19.4668 -2.7711 TD +(\()Tj +/TT17 1 Tf +0.6 0 TD +(* .)Tj +/TT15 1 Tf +1.8003 0 TD +( TEXT)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 156.0079 531 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 531 Tm +([File Manager Command])Tj +-28.5444 -1.8444 TD +0.1089 Tw +[(Used for inserting comments in a file. The file manager command is simply written on)]TJ +0 -1.2222 TD +0 Tw +(the output file; it will be ignored when the file is loaded.)Tj +0 -2 TD +0.1867 Tw +(If the first element of )Tj +/TT15 1 Tf +10.4075 0 TD +0 Tw +(TEXT)Tj +/TT12 1 Tf +2.4004 0 TD +0.1867 Tw +[( is another )]TJ +/TT10 1 Tf +5.435 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.1867 Tw +(, a form-feed is printed on the file before the)Tj +-18.8429 -1.2889 TD +0 Tw +(comment.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(P)Tj +/TT12 1 Tf +0.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(EXP)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(EXP)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 184.3509 451.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 451.46 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.1789 Tw +(Writes each of the expressions )Tj +/TT15 1 Tf +14.4911 0 TD +0 Tw +(EXP)Tj +1.8022 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.4289 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.4289 0 TD +(EXP)Tj +1.7997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1789 Tw +[( on the output file, where they will be)]TJ +-21.9511 -1.5111 TD +0 Tw +(evaluated when the file is loaded.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(E)Tj +/TT12 1 Tf +0.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FORM)Tj +2.4 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FORM)Tj +2.3997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 200.5517 396.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 396.92 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.2956 Tw +(Each of the forms )Tj +/TT15 1 Tf +9.1656 0 TD +0 Tw +(FORM)Tj +2.4022 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.5456 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.5456 0 TD +(FORM)Tj +2.3997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2956 Tw +[( is evaluated at )]TJ +/TT8 1 Tf +8.0772 0 TD +0 Tw +(output)Tj +/TT12 1 Tf +2.7222 0 TD +0.2956 Tw +[( time, when )]TJ +/TT10 1 Tf +6.3427 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +-35.201 -1.5111 TD +(interpretes this file manager command.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(COMS)Tj +/TT12 1 Tf +2.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 200.5509 342.38 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 342.38 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +(Each of the commands )Tj +/TT15 1 Tf +10.2749 0 TD +(COM)Tj +1.8029 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +( is interpreted as a file manager command.)Tj +/TT10 1 Tf +-20.0444 -2.7711 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ORIGINAL)Tj +/TT12 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 222.1509 298.84 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 298.84 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.2078 Tw +(Each of the commands )Tj +/TT15 1 Tf +11.106 0 TD +0 Tw +(COM)Tj +1.8029 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2078 Tw +[( will be interpreted as a file manager command without)]TJ +-13.5089 -1.5111 TD +0.0189 Tw +(regard to any file manager macros \(as defined by the )Tj +/TT10 1 Tf +23.7548 0 TD +0 Tw +(MACRO)Tj +/TT12 1 Tf +3.0005 0 TD +0.0189 Tw +[( property of the )]TJ +/TT10 1 Tf +7.2411 0 TD +0 Tw +(FILEPKGCOM)Tj +/TT12 1 Tf +-33.9964 -1.2889 TD +0.0633 Tw +[(function, in the Defining New File Manager Commands section\). Useful for redefining a)]TJ +0 -1.2222 TD +0 Tw +(built-in file manager command in terms of itself.)Tj +0 -2 TD +0.1767 Tw +(Some of the "built-in" file manager commands are defined by file manager macros, so)Tj +0 -1.2222 TD +0.0167 Tw +(interpreting them \(or new user-defined file manager commands\) with )Tj +/TT10 1 Tf +31.2897 0 TD +0 Tw +(ORIGINAL)Tj +/TT12 1 Tf +4.8008 0 TD +0.0167 Tw +[( will fail.)]TJ +/TT10 1 Tf +-36.0904 -1.2889 TD +0 Tw +(ORIGINAL)Tj +/TT12 1 Tf +4.8008 0 TD +( was never intended to be used outside of a file manager command macro.)Tj +/TT4 1 Tf +10 0 0 10 78 175.5 Tm +(DECLARE:)Tj +/TT10 1 Tf +9 0 0 9 102 155.5 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(DECLARE:)Tj +/TT4 1 Tf +10 0 0 10 150.6 155.5 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 153.3783 155.5 Tm +(.)Tj +/TT23 1 Tf +10 0 0 10 158.7792 155.5 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 161.5575 155.5 Tm +(FILEPKGCOMS/FLAGS)Tj +/TT10 1 Tf +10.2017 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 258.7733 155.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 155.5 Tm +([File Manager Command])Tj +-28.5444 -1.8444 TD +0.0911 Tw +(Normally expressions written onto a symbolic file are evaluated when loaded; copied to)Tj +0 -1.2222 TD +0.0767 Tw +(the compiled file when the symbolic file is compiled \(see Chapter 18\); and not evaluated)Tj +T* +0 Tw +(at compile time. )Tj +/TT10 1 Tf +7.5898 0 TD +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +( allows you to override these defaults.)Tj +/TT15 1 Tf +-12.3906 -2.0667 TD +(FILEPKGCOMS/FLAGS)Tj +/TT12 1 Tf +10.2017 0 TD +0.2256 Tw +[( is a list of file manager commands, possibly interspersed with)]TJ +-10.2017 -1.2889 TD +0.2322 Tw +[("tags". The output of those file manager commands within )]TJ +/TT15 1 Tf +28.603 0 TD +0 Tw +(FILEPKGCOMS/FLAGS)Tj +/TT12 1 Tf +10.2017 0 TD +0.2322 Tw +[( is)]TJ +-38.8046 -1.2889 TD +0.3167 Tw +(embedded in a )Tj +/TT10 1 Tf +7.7786 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.3167 Tw +[( expression, along with any tags that are specified. For)]TJ +-12.5794 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.299 0 TD +0.1189 Tw +(\(DECLARE: EVAL@COMPILE DONTCOPY \(FNS ...\) \(PROP ...\)\))Tj +/TT12 1 Tf +32.5185 0 TD +0.05 Tw +[( would)]TJ +-36.8175 -1.2889 TD +0 Tw +(produce )Tj +/TT10 1 Tf +4.1654 0 TD +0.5667 Tw +(\(DECLARE: EVAL@COMPILE DONTCOPY \(DEFINEQ ...\) \(PUTPROPS)Tj +ET +endstream +endobj +128 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT23 129 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +131 0 obj +<< +/Length 4920 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-38)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +0.3689 Tw +[(...\)\). DECLARE:)]TJ +/TT12 1 Tf +10.3393 0 TD +0.1544 Tw +[( is )]TJ +/TT8 1 Tf +1.5237 0 TD +0 Tw +(defined)Tj +/TT12 1 Tf +2.8901 0 TD +0.1544 Tw +[( as an nlambda nospread function, which processes its)]TJ +-14.7532 -1.2889 TD +0.1211 Tw +(arguments by evaluating or not evaluating each expression depending on the setting of)Tj +0 -1.2222 TD +0.1311 Tw +[(internal state variables. The initial setting is to evaluate, but this can be overridden by)]TJ +T* +0 Tw +(specifying the )Tj +/TT10 1 Tf +6.4443 0 TD +(DONTEVAL@LOAD)Tj +/TT12 1 Tf +7.8013 0 TD +( tag.)Tj +/TT10 1 Tf +-14.2456 -2.0667 TD +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.2389 Tw +[( expressions are specially processed by the compiler. For the purposes of)]TJ +-4.8008 -1.2889 TD +0 Tw +(compilation, )Tj +/TT10 1 Tf +5.9508 0 TD +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.15 Tw +[( has two principal applications: to specify forms that are to be)]TJ +-10.7516 -1.2889 TD +0.1356 Tw +(evaluated at compile time, presumably to affect the compilation, e.g., to set up macros;)Tj +0 -1.2222 TD +0.0078 Tw +(and/or to indicate which expressions appearing in the symbolic file are )Tj +/TT8 1 Tf +31.8863 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0078 Tw +[( to be copied to)]TJ +-33.2193 -1.2222 TD +0.0211 Tw +(the output file. \(Normally, expressions are )Tj +/TT8 1 Tf +19.0739 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0211 Tw +[( evaluated and )]TJ +/TT8 1 Tf +6.8602 0 TD +0 Tw +(are)Tj +/TT12 1 Tf +1.2222 0 TD +0.0211 Tw +[( copied.\) Each expression)]TJ +-28.4893 -1.2222 TD +0 Tw +(in )Tj +/TT10 1 Tf +1.3319 0 TD +(CDR)Tj +/TT12 1 Tf +1.8003 0 TD +0.2089 Tw +[( of a )]TJ +/TT10 1 Tf +2.7556 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.2089 Tw +[( form is either evaluated/not-evaluated and copied/not-copied)]TJ +-10.6886 -1.2889 TD +0.1356 Tw +(depending on the settings of two internal state variables, initially set for copy and not-)Tj +0 -1.2222 TD +0.1611 Tw +(evaluate. These state variables can be reset for the remainder of the expressions in the)Tj +/TT10 1 Tf +T* +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +( by means of the tags )Tj +/TT10 1 Tf +9.5493 0 TD +(DONTCOPY)Tj +/TT12 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(EVAL@COMPILE)Tj +/TT12 1 Tf +7.2012 0 TD +(, etc.)Tj +-26.8521 -2.0667 TD +(The tags are:)Tj +/TT17 1 Tf +5.2667 -2.1489 TD +(EVAL@LOAD)Tj +-1.2 -1.4378 TD +(DOEVAL@LOAD)Tj +/TT12 1 Tf +7.9333 0 TD +0.2756 Tw +(Evaluate the following forms when the file is loaded)Tj +0 -1.2889 TD +0 Tw +(\(unless overridden by )Tj +/TT10 1 Tf +9.9487 0 TD +(DONTEVAL@LOAD)Tj +/TT12 1 Tf +7.8013 0 TD +(\).)Tj +/TT17 1 Tf +-26.8833 -2.2156 TD +(DONTEVAL@LOAD)Tj +/TT12 1 Tf +9.1333 0 TD +0.2611 Tw +(Do not evaluate the following forms when the file is)Tj +0 -1.2889 TD +0 Tw +(loaded.)Tj +/TT17 1 Tf +-9.1333 -2.1489 TD +(EVAL@LOADWHEN)Tj +/TT12 1 Tf +9.1333 0 TD +0.1333 Tw +(This tag can be used to provide conditional evaluation.)Tj +0 -1.2889 TD +0.1744 Tw +(The value of the expression immediately following the)Tj +0 -1.2222 TD +0.2189 Tw +(tag determines whether or not to evaluate subsequent)Tj +T* +0.1889 Tw +(expressions when loading. )Tj +/TT10 1 Tf +13.0202 0 TD +0.4544 Tw +(... EVAL@LOADWHEN T)Tj +-13.0202 -1.2889 TD +0 Tw +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( is equivalent to )Tj +/TT10 1 Tf +7.2632 0 TD +(... EVAL@LOAD ...)Tj +/TT17 1 Tf +-12.7968 -2.2156 TD +(COPY)Tj +-1.2 -1.4378 TD +(DOCOPY)Tj +/TT12 1 Tf +4.9333 0 TD +0.3844 Tw +(When compiling, copy the following forms into the)Tj +0 -1.4378 TD +0 Tw +(compiled file)Tj +/TT6 1 Tf +10 0 0 10 334.1059 223.16 Tm +(.)Tj +/TT17 1 Tf +9 0 0 9 226.8 203.82 Tm +(DONTCOPY)Tj +/TT12 1 Tf +6.1333 0 TD +0.1522 Tw +(When compiling, do not copy the following forms into)Tj +0 -1.2889 TD +0 Tw +(the compiled file.)Tj +0 -2 TD +0.4756 Tw +[(Note: If the file manager commands following)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DONTCOPY)Tj +/TT12 1 Tf +4.8008 0 TD +0.1078 Tw +[( include record declarations for datatypes,)]TJ +-4.8008 -1.2889 TD +0.1 Tw +(or records with initialization forms, it is necessary to)Tj +0 -1.2222 TD +0.1067 Tw +(include a )Tj +/TT10 1 Tf +4.5141 0 TD +0 Tw +(INITRECORDS)Tj +/TT12 1 Tf +6.6011 0 TD +0.1067 Tw +[( file manager command \(see)]TJ +-11.1152 -1.2889 TD +0.1856 Tw +(the prior section\) outside of the )Tj +/TT10 1 Tf +15.1993 0 TD +0 Tw +(DONTCOPY)Tj +/TT12 1 Tf +4.8008 0 TD +0.1856 Tw +[( form so)]TJ +-20.0001 -1.2889 TD +0.4022 Tw +[(that the initialization information is copied. For)]TJ +0 -1.2222 TD +0 Tw +(example, if )Tj +/TT10 1 Tf +5.123 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +( was defined as a datatype,)Tj +/TT10 1 Tf +-6.9233 -2 TD +(\(DECLARE: DONTCOPY \(RECORDS FOO\)\))Tj +0 -1 TD +(\(INITRECORDS FOO\))Tj +/TT12 1 Tf +0 -2.0667 TD +0.2389 Tw +(would copy the data type declaration for )Tj +/TT10 1 Tf +19.9794 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.2389 Tw +(, but)Tj +-21.7796 -1.2889 TD +0 Tw +(would not copy the whole record declaration.)Tj +ET +endstream +endobj +132 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +134 0 obj +<< +/Length 5690 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-39)Tj +/TT17 1 Tf +-31.1333 60.4667 TD +(COPYWHEN)Tj +/TT12 1 Tf +6.1333 0 TD +0.0944 Tw +(When compiling, if the next form evaluates to non-)Tj +/TT10 1 Tf +23.2868 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(,)Tj +-25.0871 -1.2889 TD +(copy the following forms into the compiled file.)Tj +/TT17 1 Tf +-8.5333 -2.1489 TD +(EVAL@COMPILE)Tj +-1.2 -1.4378 TD +(DOEVAL@COMPILE)Tj +/TT12 1 Tf +9.7333 0 TD +(When compiling, evaluate the following forms.)Tj +/TT17 1 Tf +-10.9333 -2.2156 TD +(DONTEVAL@COMPILE)Tj +/TT12 1 Tf +10.9333 0 TD +(When compiling, do not evaluate the following forms.)Tj +/TT17 1 Tf +-10.9333 -2.2156 TD +(EVAL@COMPILEWHEN)Tj +/TT12 1 Tf +10.9333 0 TD +0.0944 Tw +(When compiling, if the next form evaluates to non-)Tj +/TT10 1 Tf +23.2868 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(,)Tj +-25.0871 -1.2889 TD +(evaluate the following forms.)Tj +/TT17 1 Tf +-4.3333 -2 TD +(FIRST)Tj +/TT12 1 Tf +4.3333 0 TD +0.0144 Tw +(For expressions that are to be copied to the compiled file,)Tj +0 -1.2889 TD +0.1 Tw +(the tag )Tj +/TT10 1 Tf +3.4695 0 TD +0 Tw +(FIRST)Tj +/TT12 1 Tf +3.0005 0 TD +0.1 Tw +[( can be used to specify that the following)]TJ +-6.47 -1.2889 TD +0.0011 Tw +(expressions in the )Tj +/TT10 1 Tf +8.1742 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.0011 Tw +( are to appear at the front of)Tj +-12.975 -1.2889 TD +0.5344 Tw +(the compiled file, before anything else except the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.01 Tw +[( expressions \(see the Symbolic File Format)]TJ +-6.6011 -1.2889 TD +0.1211 Tw +[(section\). For example, )]TJ +/TT10 1 Tf +10.6553 0 TD +0.2922 Tw +(\(DECLARE: COPY FIRST \(P)Tj +-10.6553 -1.2889 TD +0 Tw +(\(PRINT)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.4244 0 TD +(MESS1)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.4244 0 TD +0.42 Tw +(T\)\) NOTFIRST \(P \(PRINT)Tj +/TT19 1 Tf +14.4622 0 TD +0 Tw +( )Tj +/TT15 1 Tf +0.4244 0 TD +(MESS2)Tj +/TT10 1 Tf +-22.3366 -1.2889 TD +(T\)\)\))Tj +/TT12 1 Tf +2.4004 0 TD +0.05 Tw +[( will cause )]TJ +/TT10 1 Tf +5.0567 0 TD +0 Tw +(\(PRINT)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.3 0 TD +(MESS1)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.3 0 TD +(T\))Tj +/TT12 1 Tf +1.2002 0 TD +0.05 Tw +[( to appear first in the)]TJ +-15.8584 -1.2889 TD +0.1667 Tw +(compiled file, followed by any functions, then )Tj +/TT10 1 Tf +21.7345 0 TD +0 Tw +(\(PRINT)Tj +-21.7345 -1.2889 TD +(MESS2 T\))Tj +/TT12 1 Tf +4.8008 0 TD +(.)Tj +/TT17 1 Tf +-10.9341 -2.0667 TD +(NOTFIRST)Tj +/TT12 1 Tf +6.1333 0 TD +(Reverses the effect of )Tj +/TT10 1 Tf +9.5728 0 TD +(FIRST)Tj +/TT12 1 Tf +3.0005 0 TD +(.)Tj +-24.5732 -2.0667 TD +0.0167 Tw +(The value of )Tj +/TT10 1 Tf +5.7907 0 TD +0 Tw +(DECLARETAGSLST)Tj +/TT12 1 Tf +8.4014 0 TD +0.0167 Tw +[( is a list of all the tags used in )]TJ +/TT10 1 Tf +13.3576 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.0167 Tw +[( expressions. If a)]TJ +-32.3505 -1.2889 TD +0.0889 Tw +(tag not on this list appears in a )Tj +/TT10 1 Tf +14.5036 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.0889 Tw +[( file manager command, spelling correction is)]TJ +-19.3044 -1.2889 TD +0 Tw +(performed using )Tj +/TT10 1 Tf +7.6777 0 TD +(DECLARETAGSLST)Tj +/TT12 1 Tf +8.4014 0 TD +( as a spelling list.)Tj +-16.0791 -2.0667 TD +0.1367 Tw +(Note that the function )Tj +/TT10 1 Tf +10.5574 0 TD +0 Tw +(LOADCOMP)Tj +/TT12 1 Tf +4.8008 0 TD +0.1367 Tw +[( \(see the Loading Files section\) provides a convenient)]TJ +-15.3582 -1.2889 TD +0.07 Tw +(way of obtaining information from the )Tj +/TT10 1 Tf +17.7354 0 TD +0 Tw +(DECLARE: )Tj +/TT12 1 Tf +5.5675 0 TD +0.07 Tw +(expressions in a file, without reading)Tj +-23.303 -1.2889 TD +0 Tw +(in the entire file. This information may be used for compiling other files.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BLOCKS)Tj +/TT19 1 Tf +3.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(BLOCK)Tj +3 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(BLOCK)Tj +2.9997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 232.9509 226.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 382.9 226.5 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.2667 Tw +(For each )Tj +/TT15 1 Tf +4.5353 0 TD +0 Tw +(BLOCK)Tj +3.0003 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2667 Tw +(, writes a )Tj +/TT10 1 Tf +5.049 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.2667 Tw +[( expression which the block compile functions)]TJ +-17.9854 -1.5111 TD +0 Tw +(interpret as a block declaration. See Chapter 18.)Tj +/TT4 1 Tf +10 0 0 10 78 166.96 Tm +(Exporting Definitions)Tj +/TT12 1 Tf +9 0 0 9 78 143.3 Tm +0.0422 Tw +(When building a large system in Interlisp, it is often the case that there are record definitions, macros)Tj +0 -1.2222 TD +0.0467 Tw +(and the like that are needed by several different system files when running, analyzing and compiling)Tj +T* +0.0311 Tw +[(the source code of the system, but which are not needed for running the compiled code. By using the)]TJ +/TT10 1 Tf +T* +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.0333 Tw +[( file manager command with tag )]TJ +/TT10 1 Tf +14.8528 0 TD +0 Tw +(DONTCOPY)Tj +/TT12 1 Tf +4.8008 0 TD +0.0333 Tw +[( \(see the prior section\), these definitions can be)]TJ +-24.4544 -1.2889 TD +0.0622 Tw +(kept out of the compiled files, and hence out of the system constructed by loading the compiled files)Tj +0 -1.2222 TD +0.2633 Tw +[(files into Interlisp. This saves loading time, space in the resulting system, and whatever other)]TJ +T* +0.0656 Tw +(overhead might be incurred by keeping those definitions around, e.g., burden on the record package)Tj +T* +0.0589 Tw +(to consider more possibilities in translating record accesses, or conflicts between system record fields)Tj +T* +0 Tw +(and user record fields.)Tj +ET +endstream +endobj +135 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +137 0 obj +<< +/Length 8064 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-40)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 126 569.54 Tm +0.0567 Tw +(However, if the implementor wants to debug or compile code in the resulting system, the definitions)Tj +0 -1.2222 TD +0.0167 Tw +[(are needed. And even if the definitions )]TJ +/TT8 1 Tf +17.8409 0 TD +0 Tw +(had)Tj +/TT12 1 Tf +1.4438 0 TD +0.0167 Tw +[( been copied to the compiled files, a similar problem arises)]TJ +-19.2847 -1.2222 TD +0.0144 Tw +(if one wants to work on system code in a regular Interlisp environment where none of the system files)Tj +T* +0.0467 Tw +[(had been loaded. One could mandate that any definition needed by more than one file in the system)]TJ +T* +0.1789 Tw +(should reside on a distinguished file of definitions, to be loaded into any environment where the)Tj +T* +0.1044 Tw +[(system files are worked on. Unfortunately, this would keep the definitions away from where they)]TJ +T* +0 Tw +(logically belong. The )Tj +/TT10 1 Tf +9.6973 0 TD +(EXPORT)Tj +/TT12 1 Tf +3.6006 0 TD +( mechanism is designed to solve this problem.)Tj +-13.2979 -2.9556 TD +0.0722 Tw +(To use the mechanism, the implementor identifies any definitions needed by files other than the one)Tj +0 -1.2222 TD +0.06 Tw +(in which the definitions reside, and wraps the corresponding file manager commands in the )Tj +/TT10 1 Tf +41.7248 0 TD +0 Tw +(EXPORT)Tj +/TT12 1 Tf +-41.7248 -1.2889 TD +0.0467 Tw +[(file manager command. Thereafter, )]TJ +/TT10 1 Tf +16.3017 0 TD +0 Tw +(GATHEREXPORTS)Tj +/TT12 1 Tf +7.8013 0 TD +0.0467 Tw +[( can be used to make a single file containing all)]TJ +-24.103 -1.2889 TD +0 Tw +(the exports.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(EXPORT)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.7993 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 264.7517 420.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 430.9 420.4 Tm +([File Manager Command])Tj +-28.5444 -2.0667 TD +0.0322 Tw +[(This command is used for "exporting" definitions. Like )]TJ +/TT10 1 Tf +24.9809 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.0322 Tw +(, each of the commands )Tj +/TT15 1 Tf +10.8042 0 TD +0 Tw +(COM)Tj +1.8068 -0.2222 TD +(1)Tj +/TT10 1 Tf +-39.3922 -1.2889 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3211 0 TD +(COM)Tj +1.7997 -0.2222 TD +(N)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0711 Tw +[( is interpreted as a file manager command. The commands are also flagged in)]TJ +-4.5211 -1.5111 TD +0 Tw +(the file as being "exported" commands, for use with )Tj +/TT10 1 Tf +23.0469 0 TD +(GATHEREXPORTS)Tj +/TT12 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-33.5148 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(GATHEREXPORTS)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FROMFILES)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TOFILE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 340.3676 351.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 351.66 Tm +([Function])Tj +/TT15 1 Tf +-35.4033 -1.8444 TD +(FROMFILES)Tj +/TT12 1 Tf +5.4009 0 TD +0.0533 Tw +[( is a list of files containing )]TJ +/TT10 1 Tf +12.0672 0 TD +0 Tw +(EXPORT)Tj +/TT12 1 Tf +3.6006 0 TD +0.0533 Tw +[( commands. )]TJ +/TT10 1 Tf +6.0321 0 TD +0 Tw +(GATHEREXPORTS)Tj +/TT12 1 Tf +7.8013 0 TD +0.0533 Tw +[( extracts all)]TJ +-34.902 -1.2889 TD +0.0578 Tw +(the exported commands from those files and produces a loadable file )Tj +/TT15 1 Tf +31.39 0 TD +0 Tw +(TOFILE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0578 Tw +[( containing)]TJ +-34.9905 -1.2889 TD +0.0544 Tw +[(them. If )]TJ +/TT15 1 Tf +4.1033 0 TD +0 Tw +(FLG)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.3044 0 TD +(=)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3044 0 TD +(EVAL)Tj +/TT12 1 Tf +2.4004 0 TD +0.0544 Tw +(, the expressions are evaluated as they are gathered; i.e., the exports)Tj +-9.5129 -1.2889 TD +0 Tw +(are effectively loaded into the current environment as well as being written to )Tj +/TT15 1 Tf +34.6138 0 TD +(TOFILE)Tj +/TT12 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-40.881 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(IMPORTFILE)Tj +/TT4 1 Tf +10 0 0 10 209.4 277.32 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.1783 277.32 Tm +(FILE)Tj +/TT23 1 Tf +10 0 0 10 233.7818 277.32 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 236.5601 277.32 Tm +(RETURNFLG)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 290.5689 277.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 277.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT15 1 Tf +1.1244 0 TD +(RETURNFLG)Tj +/TT12 1 Tf +5.4009 0 TD +0.2044 Tw +[( is )]TJ +/TT10 1 Tf +1.6237 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2044 Tw +(, this loads any exported definitions from )Tj +/TT15 1 Tf +19.9296 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2044 Tw +[( into the current)]TJ +-32.2793 -1.2889 TD +0.0478 Tw +[(environment. If )]TJ +/TT15 1 Tf +7.5232 0 TD +0 Tw +(RETURNFLG)Tj +/TT12 1 Tf +5.4009 0 TD +0.0478 Tw +[( is )]TJ +/TT10 1 Tf +1.3104 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0478 Tw +(, this returns a list of the exported definitions \(evaluable)Tj +-14.8346 -1.2889 TD +0 Tw +(expressions\) without actually evaluating them.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CHECKIMPORTS)Tj +/TT4 1 Tf +10 0 0 10 220.2 215.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 222.9783 215.18 Tm +(FILES)Tj +/TT23 1 Tf +10 0 0 10 249.9827 215.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 252.761 215.18 Tm +(NOASKFLG)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 301.3689 215.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 215.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0289 Tw +(Checks each of the files in )Tj +/TT15 1 Tf +11.8291 0 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0289 Tw +[( to see if any exists in a version newer than the one from)]TJ +-14.8296 -1.2889 TD +0.1322 Tw +(which the exports in memory were taken \()Tj +/TT10 1 Tf +19.6609 0 TD +0 Tw +(GATHEREXPORTS)Tj +/TT12 1 Tf +7.8013 0 TD +0.1322 Tw +[( and )]TJ +/TT10 1 Tf +2.4573 0 TD +0 Tw +(IMPORTFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.1322 Tw +[( note the)]TJ +-35.9205 -1.2889 TD +0.0444 Tw +(creation dates of the files involved\), or if any file in the list has not had its exports loaded)Tj +0 -1.2222 TD +[(at all. If there are any such files, you are asked for permission to )]TJ +/TT10 1 Tf +29.3493 0 TD +0 Tw +(IMPORTFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.0444 Tw +[( each such)]TJ +-35.3503 -1.2889 TD +0 Tw +(file. If )Tj +/TT15 1 Tf +3.064 0 TD +(NOASKFLG)Tj +/TT12 1 Tf +4.8008 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(IMPORTFILE)Tj +/TT12 1 Tf +6.001 0 TD +( is performed without asking.)Tj +-24.7572 -2.9556 TD +0.0844 Tw +(For example, suppose file )Tj +/TT10 1 Tf +11.9057 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0844 Tw +[( contains records )]TJ +/TT10 1 Tf +7.9916 0 TD +0 Tw +(R1)Tj +/TT12 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5844 0 TD +(R2)Tj +/TT12 1 Tf +1.2002 0 TD +0.0844 Tw +(, and )Tj +/TT10 1 Tf +2.6118 0 TD +0 Tw +(R3)Tj +/TT12 1 Tf +1.2002 0 TD +0.0844 Tw +(, macros )Tj +/TT10 1 Tf +4.1103 0 TD +0 Tw +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0844 Tw +[( and )]TJ +/TT10 1 Tf +2.3618 0 TD +0 Tw +(BAZ)Tj +/TT12 1 Tf +1.8003 0 TD +0.0844 Tw +(, and constants)Tj +/TT10 1 Tf +-38.567 -1.2889 TD +0 Tw +(CON1)Tj +/TT12 1 Tf +2.4004 0 TD +0.0789 Tw +[( and )]TJ +/TT10 1 Tf +2.3506 0 TD +0 Tw +(CON2)Tj +/TT12 1 Tf +2.4004 0 TD +0.0789 Tw +[(. If the definitions of )]TJ +/TT10 1 Tf +9.9152 0 TD +0 Tw +(R1)Tj +/TT12 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5789 0 TD +(R2)Tj +/TT12 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5789 0 TD +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0789 Tw +(, and )Tj +/TT10 1 Tf +2.6006 0 TD +0 Tw +(BAZ)Tj +/TT12 1 Tf +1.8003 0 TD +0.0789 Tw +[( are needed by files other than )]TJ +/TT10 1 Tf +14.1626 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0789 Tw +(, then)Tj +-42.7889 -1.2889 TD +0 Tw +(the file commands for )Tj +/TT10 1 Tf +9.9272 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +( might contain the command)Tj +/TT10 1 Tf +-2.3942 -1.7778 TD +(\(DECLARE: EVAL@COMPILE DONTCOPY)Tj +0 -1 TD +( \(EXPORT \(RECORDS R1 R2\))Tj +T* +( \(MACROS BAR BAZ\)\))Tj +T* +( \(RECORDS R3\))Tj +T* +( \(CONSTANTS BAZ\)\))Tj +ET +endstream +endobj +138 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT23 129 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +140 0 obj +<< +/Length 4944 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-41)Tj +/TT12 1 Tf +-42.3333 60.6156 TD +0.5033 Tw +(None of the commands inside this )Tj +/TT10 1 Tf +18.397 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.5033 Tw +[( would appear on )]TJ +/TT10 1 Tf +10.1022 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.5033 Tw +(s compiled file, but)Tj +/TT10 1 Tf +-35.1002 -1.2889 TD +0.0433 Tw +(\(GATHEREXPORTS \(FOO\) MYEXPORTS\))Tj +/TT12 1 Tf +19.8899 0 TD +0.0178 Tw +[( would copy the record definitions for )]TJ +/TT10 1 Tf +17.1928 0 TD +0 Tw +(R1)Tj +/TT12 1 Tf +1.2002 0 TD +0.0178 Tw +[( and )]TJ +/TT10 1 Tf +2.2284 0 TD +0 Tw +(R2)Tj +/TT12 1 Tf +1.2002 0 TD +0.0178 Tw +[( and the)]TJ +-41.7115 -1.2889 TD +0 Tw +(macro definitions for )Tj +/TT10 1 Tf +9.5474 0 TD +(BAR)Tj +/TT12 1 Tf +1.8003 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(BAZ)Tj +/TT12 1 Tf +1.8003 0 TD +( to the file )Tj +/TT10 1 Tf +4.6533 0 TD +(MYEXPORTS)Tj +/TT12 1 Tf +5.4009 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 518.4 Tm +(FileVars)Tj +/TT12 1 Tf +9 0 0 9 78 494.74 Tm +0.1011 Tw +(In each of the file manager commands described above, if the symbol )Tj +/TT10 1 Tf +32.0083 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.1011 Tw +[( follows the command type,)]TJ +-32.6084 -1.2889 TD +0.0222 Tw +(the form following the )Tj +/TT10 1 Tf +10.2901 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.0222 Tw +(, i.e., )Tj +/TT10 1 Tf +2.3145 0 TD +0 Tw +(CADDR)Tj +/TT12 1 Tf +3.0005 0 TD +0.0222 Tw +[( of the command, is evaluated and its value used in executing the)]TJ +-16.2051 -1.2889 TD +0.1722 Tw +(command, e.g., )Tj +/TT10 1 Tf +7.3278 0 TD +0.4144 Tw +(\(FNS * \(APPEND FNS1 FNS2\)\))Tj +/TT12 1 Tf +17.2603 0 TD +0.1722 Tw +[(. When this form is a symbol, e.g. )]TJ +/TT10 1 Tf +16.7258 0 TD +0.4144 Tw +(\(FNS *)Tj +-41.3139 -1.2889 TD +0 Tw +(FOOFNS\))Tj +/TT12 1 Tf +4.2007 0 TD +0.1956 Tw +[(, we say that the variable is a "filevar". Note that )]TJ +/TT10 1 Tf +24.063 0 TD +0.4689 Tw +(\(COMS *)Tj +/TT19 1 Tf +4.6696 0 TD +0 Tw +( )Tj +/TT15 1 Tf +0.4456 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1956 Tw +[( provides a way of)]TJ +/TT8 1 Tf +-36.3793 -1.2889 TD +0 Tw +(computing)Tj +/TT12 1 Tf +4.3521 0 TD +( what should be done by )Tj +/TT10 1 Tf +11.1582 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +(.)Tj +-20.311 -2.9556 TD +(Example:)Tj +/TT13 1 Tf +5.3333 -2 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(SETQ FOOFNS \(FOO1 FOO2 FOO3\)\))Tj +3.0132 -1 TD +(\(FOO1 FOO2 FOO3\))Tj +/TT13 1 Tf +-4 -1.8444 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(SETQ FOOCOMS)Tj +3.0132 -1 TD +(\(\(FNS * FOOFNS\))Tj +T* +(\(VARS FIE\))Tj +T* +(\(PROP MACRO FOO1 FOO2\))Tj +T* +(\(P \(MOVD FOO1 FIE1\)\)])Tj +/TT13 1 Tf +-4 -1.8444 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(MAKEFILE FOO\))Tj +/TT12 1 Tf +-6.3201 -2.7333 TD +(would create a file )Tj +/TT10 1 Tf +8.4019 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +( containing:)Tj +/TT10 1 Tf +-4.8688 -2 TD +0.7778 Tw +(\(FILECREATED ")Tj +/TT15 1 Tf +9.1791 0 TD +(time and date the file was made)Tj +/TT10 1 Tf +23.2697 0 TD +(" . ")Tj +/TT15 1 Tf +4.556 0 TD +0 Tw +(other)Tj +-37.0049 -1 TD +(information)Tj +/TT10 1 Tf +6.6011 0 TD +("\))Tj +-2.6011 -1 TD +(\(PRETTYCOMPRINT FOOCOMS\))Tj +T* +(\(RPAQQ FOOCOMS \(\(FNS * FOOFNS\) ...\))Tj +T* +(\(RPAQQ FOOFNS \(FOO1 FOO3 FOO3\)\))Tj +T* +(\(DEFINEQ ")Tj +/TT15 1 Tf +6.001 0 TD +(definitions of )Tj +/TT10 1 Tf +9.0015 0 TD +(FOO1)Tj +/TT15 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +1.2002 0 TD +(FOO2)Tj +/TT15 1 Tf +2.4004 0 TD +(, and )Tj +/TT10 1 Tf +3.6006 0 TD +(FOO3"\))Tj +-24.604 -1 TD +(\(RPAQQ FIE ")Tj +/TT15 1 Tf +7.2012 0 TD +(value of )Tj +/TT10 1 Tf +5.4009 0 TD +(FIE"\))Tj +-12.6021 -1 TD +(\(PUTPROPS FOO1 MACRO )Tj +/TT15 1 Tf +12.6021 0 TD +(PROPVALUE)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +-18.0029 -1 TD +(\(PUTPROPS FOO2 MACRO )Tj +/TT15 1 Tf +12.6021 0 TD +(PROPVALUE)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +-18.0029 -1 TD +(\(MOVD \(QUOTE FOO1\) \(QUOTE FIE1\)\))Tj +T* +(STOP)Tj +/TT12 1 Tf +-9.3333 -2.7333 TD +0.0533 Tw +(For the )Tj +/TT10 1 Tf +3.4909 0 TD +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +0.0533 Tw +[( and )]TJ +/TT10 1 Tf +2.2995 0 TD +0 Tw +(IFPROP)Tj +/TT12 1 Tf +3.6006 0 TD +0.0533 Tw +[( commands \(see the Litatom Properties section\), the )]TJ +/TT10 1 Tf +23.4858 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.0533 Tw +[( follows the property)]TJ +-35.8773 -1.2889 TD +0.1933 Tw +(name instead of the command, e.g., )Tj +/TT10 1 Tf +17.0663 0 TD +0.4633 Tw +(\(PROP MACRO * FOOMACROS\))Tj +/TT12 1 Tf +15.7923 0 TD +0.1933 Tw +[(. Also, in the form )]TJ +/TT10 1 Tf +9.6156 0 TD +0.4633 Tw +(\(* *)Tj +-42.4742 -1.2889 TD +0 Tw +(comment ...\))Tj +/TT12 1 Tf +7.2012 0 TD +(, the word )Tj +/TT10 1 Tf +4.7729 0 TD +(comment)Tj +/TT12 1 Tf +4.2007 0 TD +( is not treated as a filevar.)Tj +/TT4 1 Tf +10 0 0 10 78 117.2 Tm +(Defining New File Manager Commands)Tj +/TT12 1 Tf +9 0 0 9 78 93.54 Tm +(A file manager command is defined by specifying the values of certain properties. You can specify the)Tj +0 -1.2222 TD +0.0789 Tw +(various attributes of a file manager command for a new command, or respecify them for an existing)Tj +T* +0 Tw +(command. The following properties are used:)Tj +ET +endstream +endobj +141 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +144 0 obj +<< +/Length 10992 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-42)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 568.2 Tm +(MACRO)Tj +/TT6 1 Tf +10 0 0 10 177 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 393.53 568.2 Tm +([File Manager Command Property])Tj +-24.3922 -1.8444 TD +0.1044 Tw +[(Defines how to dump the file manager command. Used by )]TJ +/TT10 1 Tf +27.5678 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1044 Tw +[(. Value is a pair)]TJ +/TT10 1 Tf +-32.3686 -1.2889 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(ARGS)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.2833 0 TD +(COMS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0333 Tw +[(. The "arguments" to the file manager command are substituted for )]TJ +/TT15 1 Tf +30.4249 0 TD +0 Tw +(ARGS)Tj +/TT12 1 Tf +-37.5927 -1.2889 TD +(throughout )Tj +/TT15 1 Tf +5.3343 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0189 Tw +[(, and the result treated as a list of file manager commands. For example,)]TJ +-7.7347 -1.2889 TD +0 Tw +(following )Tj +/TT10 1 Tf +4.7645 0 TD +0.5867 Tw +(\(FILEPKGCOM FOO MACRO \(\(X Y\) .)Tj +/TT19 1 Tf +22.7366 0 TD +0 Tw +( )Tj +/TT15 1 Tf +0.4944 0 TD +(COMS)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT12 1 Tf +1.2002 0 TD +0.2444 Tw +(, the file manager)Tj +-31.5961 -1.2889 TD +0 Tw +(command )Tj +/TT10 1 Tf +4.7494 0 TD +0.1233 Tw +(\(FOO A B\))Tj +/TT12 1 Tf +5.6475 0 TD +0.0511 Tw +[( will cause )]TJ +/TT10 1 Tf +5.0601 0 TD +0 Tw +(A)Tj +/TT12 1 Tf +0.6001 0 TD +0.0511 Tw +[( to be substituted for )]TJ +/TT10 1 Tf +9.6501 0 TD +0 Tw +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.0511 Tw +[( and )]TJ +/TT10 1 Tf +2.2951 0 TD +0 Tw +(B)Tj +/TT12 1 Tf +0.6001 0 TD +0.0511 Tw +[( for )]TJ +/TT10 1 Tf +1.8761 0 TD +0 Tw +(Y)Tj +/TT12 1 Tf +0.6001 0 TD +0.0511 Tw +[( throughout )]TJ +/TT15 1 Tf +5.6677 0 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +(,)Tj +-39.7467 -1.2889 TD +(and then )Tj +/TT15 1 Tf +4.1621 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +( treated as a list of commands.)Tj +-6.5625 -2.0667 TD +0.0344 Tw +(The substitution is carried out by )Tj +/TT10 1 Tf +15.09 0 TD +0 Tw +(SUBPAIR)Tj +/TT12 1 Tf +4.2007 0 TD +0.0344 Tw +[( \(see Chapter 3\), so that the "argument list" for)]TJ +-19.2907 -1.2889 TD +0.0578 Tw +[(the macro can also be atomic. For example, if )]TJ +/TT10 1 Tf +20.9113 0 TD +0.1378 Tw +(\(X .)Tj +/TT19 1 Tf +2.5382 0 TD +0 Tw +( )Tj +/TT15 1 Tf +0.3078 0 TD +(COMS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0578 Tw +[( was used instead of )]TJ +/TT10 1 Tf +9.5052 0 TD +0.1378 Tw +(\(\(X Y\))Tj +-36.2629 -1.2889 TD +0 Tw +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.3789 0 TD +(COMS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1289 Tw +(, then the command )Tj +/TT10 1 Tf +9.5702 0 TD +0.31 Tw +(\(FOO A B\))Tj +/TT12 1 Tf +6.0209 0 TD +0.1289 Tw +[( would cause )]TJ +/TT10 1 Tf +6.4711 0 TD +0.31 Tw +(\(A B\))Tj +/TT12 1 Tf +3.3105 0 TD +0.1289 Tw +[( to be substituted for )]TJ +/TT10 1 Tf +10.039 0 TD +0 Tw +(X)Tj +/TT12 1 Tf +-39.3912 -1.2889 TD +(throughout )Tj +/TT15 1 Tf +5.3154 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-7.7158 -2.0667 TD +0.1056 Tw +(Filevars are evaluated )Tj +/TT8 1 Tf +10.2957 0 TD +0 Tw +(before)Tj +/TT12 1 Tf +2.3521 0 TD +0.1056 Tw +[( substitution. For example, if the symbol )]TJ +/TT10 1 Tf +19.1501 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.1056 Tw +[( follows )]TJ +/TT15 1 Tf +3.9758 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1056 Tw +[( in)]TJ +-38.7741 -1.2889 TD +0 Tw +(the command, )Tj +/TT10 1 Tf +6.5854 0 TD +(CADDR)Tj +/TT12 1 Tf +3.0005 0 TD +( of the command is evaluated substituting in )Tj +/TT15 1 Tf +19.9619 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT17 1 Tf +-34.6149 -2.5489 TD +(ADD)Tj +/TT6 1 Tf +10 0 0 10 166.2 387.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 393.53 387.06 Tm +([File Manager Command Property])Tj +-24.3922 -1.8444 TD +0.0967 Tw +(Specifies how \(if possible\) to add an instance of an object of a particular type to a given)Tj +0 -1.2222 TD +0.0067 Tw +[(file manager command. Used by )]TJ +/TT10 1 Tf +14.9282 0 TD +0 Tw +(ADDTOFILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0067 Tw +[(. Value is )]TJ +/TT15 1 Tf +4.5867 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.0067 Tw +(, a function of three arguments,)Tj +/TT15 1 Tf +-26.116 -1.2889 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.0233 Tw +(, a file manager command )Tj +/TT10 1 Tf +11.854 0 TD +0 Tw +(CAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0233 Tw +[( of which is )]TJ +/TT10 1 Tf +5.42 0 TD +0 Tw +(EQ)Tj +/TT12 1 Tf +1.2002 0 TD +0.0233 Tw +[( to )]TJ +/TT15 1 Tf +1.4187 0 TD +0 Tw +(COMMANDNAME)Tj +/TT12 1 Tf +6.6011 0 TD +(, )Tj +/TT15 1 Tf +0.5233 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0233 Tw +(, a typed object,)Tj +-33.0183 -1.2889 TD +0 Tw +(and )Tj +/TT15 1 Tf +2.0106 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0678 Tw +(, its type. )Tj +/TT15 1 Tf +4.7745 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.0678 Tw +[( should return )]TJ +/TT10 1 Tf +6.7902 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0678 Tw +[( if it \(undoably\) adds )]TJ +/TT15 1 Tf +9.8838 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0678 Tw +[( to )]TJ +/TT15 1 Tf +1.5076 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5678 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0678 Tw +[( if not. If)]TJ +-35.7363 -1.2889 TD +0 Tw +(no )Tj +/TT10 1 Tf +1.4868 0 TD +(ADD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1089 Tw +[( property is specified, then the default is \(1\) if )]TJ +/TT10 1 Tf +21.4102 0 TD +0 Tw +(\(CAR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.3589 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.2622 Tw +(\) = )Tj +/TT15 1 Tf +2.9248 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1089 Tw +[( and )]TJ +/TT10 1 Tf +2.4106 0 TD +0 Tw +(\(CADR)Tj +/TT15 1 Tf +-36.9927 -1.2889 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.1878 Tw +(\) = *,)Tj +/TT12 1 Tf +3.9761 0 TD +0.0778 Tw +[( and )]TJ +/TT10 1 Tf +2.3484 0 TD +0 Tw +(\(CADDR)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.3278 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0778 Tw +[( is a filevar \(i.e. a literal atom\), add )]TJ +/TT15 1 Tf +16.2547 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0778 Tw +[( to the value of)]TJ +-33.1087 -1.2889 TD +0.1222 Tw +(the filevar, or \(2\) if )Tj +/TT10 1 Tf +9.0833 0 TD +0 Tw +(\(CAR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.3722 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.2933 Tw +(\) =)Tj +/TT15 1 Tf +2.0936 0 TD +[( TYPE)]TJ +/TT12 1 Tf +3.2938 0 TD +0.1222 Tw +[( and )]TJ +/TT19 1 Tf +2.4373 0 TD +0 Tw +(\()Tj +/TT10 1 Tf +0.333 0 TD +(CADR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.3722 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1222 Tw +[( is not )]TJ +/TT10 1 Tf +3.2856 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.1222 Tw +(, add )Tj +/TT15 1 Tf +2.7161 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1222 Tw +[( to )]TJ +/TT10 1 Tf +1.6165 0 TD +0 Tw +(\(CDR)Tj +/TT15 1 Tf +-37.6057 -1.2889 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(. )Tj +-2.4004 -2.0667 TD +0.17 Tw +(Actually, the function is given a fourth argument, )Tj +/TT15 1 Tf +23.5407 0 TD +0 Tw +(NEAR)Tj +/TT12 1 Tf +2.4004 0 TD +0.17 Tw +(, which if non-)Tj +/TT10 1 Tf +6.9099 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.17 Tw +(, means the)Tj +-34.6513 -1.2889 TD +0.0967 Tw +(function should try to add the item after )Tj +/TT15 1 Tf +18.8075 0 TD +0 Tw +(NEAR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0967 Tw +[(. See discussion of )]TJ +/TT10 1 Tf +8.9843 0 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +0.0967 Tw +(, in the)Tj +-36.7933 -1.2889 TD +0 Tw +(Storing Files section.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(DELETE)Tj +/TT6 1 Tf +10 0 0 10 182.4 225.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 393.53 225.72 Tm +([File Manager Command Property])Tj +-24.3922 -1.8444 TD +0.1333 Tw +(Specifies how \(if possible\) to delete an instance of an object of a particular type from a)Tj +0 -1.2222 TD +0.0555 Tw +[(given file manager command. Used by )]TJ +/TT10 1 Tf +18.0002 0 TD +0 Tw +(DELFROMFILES)Tj +/TT12 1 Tf +7.2012 0 TD +0.0556 Tw +[(. Value is )]TJ +/TT15 1 Tf +4.7823 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.0556 Tw +(, a function of three)Tj +-31.1839 -1.2889 TD +0 Tw +(arguments, )Tj +/TT15 1 Tf +5.3503 0 TD +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT15 1 Tf +0.6022 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1022 Tw +(, and )Tj +/TT15 1 Tf +2.6473 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1022 Tw +(, same as for )Tj +/TT10 1 Tf +6.1423 0 TD +0 Tw +(ADD)Tj +/TT12 1 Tf +1.8003 0 TD +0.1022 Tw +(. )Tj +/TT15 1 Tf +0.9544 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.1022 Tw +[( should return )]TJ +/TT10 1 Tf +6.8936 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.1022 Tw +[( if it \(undoably\))]TJ +-32.7918 -1.2889 TD +0 Tw +(deletes )Tj +/TT15 1 Tf +3.3678 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0289 Tw +[( from )]TJ +/TT15 1 Tf +2.7145 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5289 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0289 Tw +[( if not. If no )]TJ +/TT10 1 Tf +5.7993 0 TD +0 Tw +(DELETE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0289 Tw +[( property is specified, then the default is)]TJ +-22.012 -1.2889 TD +0 Tw +(either )Tj +/TT10 1 Tf +2.8722 0 TD +(\(CAR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.32 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.1689 Tw +(\) = )Tj +/TT15 1 Tf +2.7382 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.07 Tw +[( and )]TJ +/TT10 1 Tf +2.3329 0 TD +0 Tw +(\(CADR)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.32 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.1689 Tw +(\) = *)Tj +/TT12 1 Tf +3.3383 0 TD +0.07 Tw +(, and )Tj +/TT10 1 Tf +2.5829 0 TD +0 Tw +(\(CADDR)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.32 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.07 Tw +[( is a filevar \(i.e. a)]TJ +-32.2273 -1.2889 TD +0.0056 Tw +(literal atom\), and )Tj +/TT15 1 Tf +7.8707 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0056 Tw +[( is contained in the value of the filevar, then remove )]TJ +/TT15 1 Tf +23.2711 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0056 Tw +[( from the)]TJ +-35.9425 -1.2889 TD +0.1222 Tw +(filevar, or if )Tj +/TT10 1 Tf +5.7856 0 TD +0 Tw +(\(CAR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.3722 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.2933 Tw +(\) =)Tj +/TT15 1 Tf +2.0936 0 TD +[( TYPE)]TJ +/TT12 1 Tf +3.2938 0 TD +0.1222 Tw +[( and )]TJ +/TT10 1 Tf +2.4373 0 TD +0 Tw +(\(CADR)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.3722 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1222 Tw +[( is not )]TJ +/TT10 1 Tf +3.2856 0 TD +0 Tw +(*)Tj +/TT12 1 Tf +0.6001 0 TD +0.1222 Tw +(, and )Tj +/TT15 1 Tf +2.6873 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1222 Tw +[( is contained in)]TJ +/TT10 1 Tf +-32.9298 -1.2889 TD +0 Tw +(\(CDR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(, then remove )Tj +/TT15 1 Tf +6.3159 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +( from )Tj +/TT10 1 Tf +2.6567 0 TD +(\(CDR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(. )Tj +-21.4746 -2.0667 TD +(If )Tj +/TT15 1 Tf +1.0433 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.1233 Tw +[( returns the value of )]TJ +/TT10 1 Tf +9.7749 0 TD +0 Tw +(ALL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1233 Tw +(, it means that the command is now "empty", and can be)Tj +-13.8186 -1.2889 TD +0 Tw +(deleted entirely from the command list.)Tj +ET +endstream +endobj +145 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +147 0 obj +<< +/Length 9832 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-43)Tj +/TT17 1 Tf +-39.6667 60.4667 TD +(CONTENTS)Tj +/TT6 1 Tf +10 0 0 10 145.2 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 345.53 568.2 Tm +([File Manager Command Property])Tj +/TT17 1 Tf +-27.0589 -1.4378 TD +(CONTAIN)Tj +/TT6 1 Tf +10 0 0 10 139.8 555.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 345.53 555.26 Tm +([File Manager Command Property])Tj +-24.3922 -1.8444 TD +0.1144 Tw +(Determines whether an instance of an object of a given type is contained in a given file)Tj +0 -1.2222 TD +0.1367 Tw +[(manager command. Used by )]TJ +/TT10 1 Tf +13.9275 0 TD +0 Tw +(WHEREIS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1367 Tw +[( and )]TJ +/TT10 1 Tf +2.4662 0 TD +0 Tw +(INFILECOMS?)Tj +/TT12 1 Tf +6.6011 0 TD +0.1367 Tw +[(. Value is )]TJ +/TT15 1 Tf +5.1067 0 TD +0 Tw +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.1367 Tw +(, a function of)Tj +-33.5024 -1.2889 TD +0.1656 Tw +(three arguments, )Tj +/TT15 1 Tf +8.0904 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.1656 Tw +(, a file manager command )Tj +/TT10 1 Tf +12.5651 0 TD +0 Tw +(CAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1656 Tw +[( of which is )]TJ +/TT10 1 Tf +5.9889 0 TD +0 Tw +(EQ)Tj +/TT12 1 Tf +1.2002 0 TD +0.1656 Tw +[( to )]TJ +/TT15 1 Tf +1.7032 0 TD +0 Tw +(COMMANDNAME)Tj +/TT12 1 Tf +6.6011 0 TD +(,)Tj +/TT15 1 Tf +-39.7494 -1.2889 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1711 Tw +(, and )Tj +/TT15 1 Tf +2.7851 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1711 Tw +[(. The interpretation of )]TJ +/TT15 1 Tf +11.0279 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1711 Tw +[( is as follows: if )]TJ +/TT15 1 Tf +7.8829 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1711 Tw +[( is )]TJ +/TT10 1 Tf +1.5571 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT15 1 Tf +0.6711 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.1711 Tw +[( should)]TJ +-36.5261 -1.2889 TD +0.0067 Tw +(return a list of elements of type )Tj +/TT15 1 Tf +14.0721 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0067 Tw +[( contained in )]TJ +/TT15 1 Tf +6.0039 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.0067 Tw +[(. If )]TJ +/TT15 1 Tf +1.6899 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0067 Tw +[( is )]TJ +/TT10 1 Tf +1.2282 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +(, )Tj +/TT15 1 Tf +0.5067 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +0.0067 Tw +[( should return )]TJ +/TT10 1 Tf +6.6069 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0067 Tw +[( if)]TJ +-39.1091 -1.2889 TD +0.1567 Tw +(there are )Tj +/TT8 1 Tf +4.4486 0 TD +0 Tw +(any)Tj +/TT12 1 Tf +1.5 0 TD +0.1567 Tw +[( elements of type )]TJ +/TT15 1 Tf +8.4108 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1567 Tw +[( in )]TJ +/TT15 1 Tf +1.6864 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.1567 Tw +[(. If )]TJ +/TT15 1 Tf +2.1399 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.1567 Tw +[( is an atom other than )]TJ +/TT10 1 Tf +10.8101 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.1567 Tw +[( or )]TJ +/TT10 1 Tf +1.7543 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(,)Tj +-39.7516 -1.2889 TD +(return )Tj +/TT10 1 Tf +3.0525 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.0222 Tw +[( if )]TJ +/TT15 1 Tf +1.1685 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( of type )]TJ +/TT15 1 Tf +3.658 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( is contained in )]TJ +/TT15 1 Tf +7.0376 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.0222 Tw +[(. Finally, if )]TJ +/TT15 1 Tf +5.2803 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( is a list, return a list of)]TJ +-29.7984 -1.2889 TD +0 Tw +(those elements of type )Tj +/TT15 1 Tf +10.1411 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( contained in )Tj +/TT15 1 Tf +5.9839 0 TD +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +( that are also contained in )Tj +/TT15 1 Tf +11.603 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-34.3291 -2.0667 TD +0.0167 Tw +(It is sufficient for the )Tj +/TT10 1 Tf +9.4784 0 TD +0 Tw +(CONTENTS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0167 Tw +[( function to simply return the list of items of type )]TJ +/TT15 1 Tf +22.1809 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0167 Tw +[( in)]TJ +-38.8604 -1.2889 TD +0 Tw +(command )Tj +/TT15 1 Tf +4.9338 0 TD +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.2356 Tw +(, i.e. it can in fact ignore the )Tj +/TT15 1 Tf +14.2599 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.2356 Tw +[( argument. The )]TJ +/TT15 1 Tf +8.1903 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.2356 Tw +[( argument is)]TJ +-33.9851 -1.2889 TD +0.1967 Tw +(supplied mainly for those situations where producing the entire list of items involves)Tj +0 -1.2222 TD +0.0378 Tw +(significantly more computation or creates more storage than simply determining whether)Tj +T* +0 Tw +(a particular item \(or any item\) of type )Tj +/TT15 1 Tf +16.8906 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( is contained in the command.)Tj +-19.291 -2.0667 TD +0.1178 Tw +(If a )Tj +/TT10 1 Tf +1.9055 0 TD +0 Tw +(CONTENTS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1178 Tw +[( property is specified and the corresponding function application returns)]TJ +/TT10 1 Tf +-6.7063 -1.2889 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0144 Tw +[( and )]TJ +/TT10 1 Tf +2.2218 0 TD +0 Tw +(\(CAR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.2644 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.0344 Tw +(\) = )Tj +/TT15 1 Tf +2.4693 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0144 Tw +[(, then the operation indicated by )]TJ +/TT15 1 Tf +14.9678 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0144 Tw +[( is performed on the)]TJ +-30.7251 -1.2889 TD +0.0033 Tw +(value of )Tj +/TT10 1 Tf +3.8236 0 TD +0 Tw +(\(CADDR)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.2533 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0033 Tw +(, if )Tj +/TT10 1 Tf +1.3807 0 TD +0 Tw +(\(CADR)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.2533 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +0.0067 Tw +(\) = *)Tj +/TT12 1 Tf +3.0138 0 TD +0.0033 Tw +(, otherwise on )Tj +/TT10 1 Tf +6.4939 0 TD +0 Tw +(\(CDR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.2533 0 TD +(COM)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +(. In other words, by)Tj +-31.0745 -1.2889 TD +0 Tc +0.0122 Tw +(specifying a )Tj +/TT10 1 Tf +5.5816 0 TD +0 Tw +(CONTENTS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0122 Tw +[( property that returns )]TJ +/TT10 1 Tf +9.8868 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0122 Tw +(, e.g. the function )Tj +/TT10 1 Tf +7.9283 0 TD +0 Tw +(NILL)Tj +/TT12 1 Tf +2.4004 0 TD +0.0122 Tw +(, you specify that)Tj +-32.3981 -1.2889 TD +(a file manager command of name )Tj +/TT10 1 Tf +15.1334 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0122 Tw +[( produces objects of file manager type )]TJ +/TT10 1 Tf +17.0743 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0122 Tw +[( and only)]TJ +-35.8083 -1.2889 TD +0 Tw +(objects of type )Tj +/TT10 1 Tf +6.5972 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +-8.3975 -2.0667 TD +0.02 Tw +(If the )Tj +/TT10 1 Tf +2.5971 0 TD +0 Tw +(CONTENTS)Tj +/TT12 1 Tf +4.8008 0 TD +0.02 Tw +[( property is not provided, the command is simply expanded according to)]TJ +-7.3979 -1.2889 TD +0 Tw +(its )Tj +/TT10 1 Tf +1.7321 0 TD +(MACRO)Tj +/TT12 1 Tf +3.0005 0 TD +0.4411 Tw +[( definition, and each command on the resulting command list is then)]TJ +-4.7326 -1.2889 TD +0 Tw +(interrogated.)Tj +0 -2 TD +(If )Tj +/TT15 1 Tf +0.9766 0 TD +(COMMANDNAME)Tj +/TT12 1 Tf +6.6011 0 TD +0.0567 Tw +[( is a file manager command that is used frequently, its expansion by the)]TJ +-7.5777 -1.2889 TD +0.1 Tw +(various parts of the system that need to interrogate files can result in a large number of)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CONS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0456 Tw +[(es and garbage collections. By informing the file manager as to what this command)]TJ +-2.4004 -1.2889 TD +0.3322 Tw +(actually does and does not produce via the )Tj +/TT10 1 Tf +21.857 0 TD +0 Tw +(CONTENTS)Tj +/TT12 1 Tf +4.8008 0 TD +0.3322 Tw +[( property, this expansion is)]TJ +-26.6578 -1.2889 TD +0.2078 Tw +[(avoided. For example, suppose you have a file manager command called )]TJ +/TT10 1 Tf +35.2038 0 TD +0 Tw +(GRAMMARS)Tj +/TT12 1 Tf +-35.2038 -1.2889 TD +0.0522 Tw +[(which dumps various property lists but no functions. The file manager could ignore this)]TJ +0 -1.2222 TD +0 Tw +(command when seeking information about )Tj +/TT10 1 Tf +19.3457 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +-26.4793 -2.9556 TD +0.0356 Tw +(The function )Tj +/TT10 1 Tf +5.952 0 TD +0 Tw +(FILEPKGCOM)Tj +/TT12 1 Tf +6.001 0 TD +0.0355 Tw +[( is used to define new file manager commands, or to change the properties)]TJ +-11.9529 -1.2889 TD +0.0189 Tw +[(of existing commands. It is possible to redefine the attributes of system file manager commands, such)]TJ +0 -1.2222 TD +0 Tw +(as )Tj +/TT10 1 Tf +1.1738 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(PROPS)Tj +/TT12 1 Tf +3.0005 0 TD +(, and to cause unpredictable results.)Tj +/TT10 1 Tf +-4.7489 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILEPKGCOM)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COMMANDNAME)Tj +/TT8 1 Tf +6.6011 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +2.3989 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 353.1009 117.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 401.99 117.32 Tm +([NoSpread Function])Tj +-30.6656 -2.0667 TD +0.1267 Tw +(Nospread function for defining new file manager commands, or changing properties of)Tj +0 -1.2222 TD +0.2078 Tw +(existing file manager commands. )Tj +/TT15 1 Tf +15.7076 0 TD +0.5 Tw +[( PROP)]TJ +3.5024 -0.2222 TD +0 Tw +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.2078 Tw +[( is one of of the property names described)]TJ +-19.81 -1.5111 TD +0 Tw +(above; )Tj +/TT15 1 Tf +3.4753 0 TD +(VAL)Tj +1.7992 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.3322 Tw +[( is the value to be given that property of the file manager command)]TJ +/TT15 1 Tf +-5.8744 -1.5111 TD +0 Tw +(COMMANDNAME)Tj +/TT12 1 Tf +6.6011 0 TD +(. Returns )Tj +/TT15 1 Tf +4.4771 0 TD +(COMMANDNAME)Tj +/TT12 1 Tf +6.6011 0 TD +(.)Tj +ET +endstream +endobj +148 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +150 0 obj +<< +/Length 8662 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-44)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +(\(FILEPKGCOM)Tj +/TT19 1 Tf +6.6011 0 TD +( )Tj +/TT15 1 Tf +0.4444 0 TD +(COMMANDNAME)Tj +/TT19 1 Tf +6.6011 0 TD +( )Tj +/TT15 1 Tf +0.4444 0 TD +(PROP)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1944 Tw +[( returns the value of the property )]TJ +/TT15 1 Tf +16.3059 0 TD +0 Tw +(PROP)Tj +/TT12 1 Tf +2.4004 0 TD +0.1944 Tw +(, without)Tj +-35.7979 -1.2889 TD +0 Tw +(changing it.)Tj +/TT10 1 Tf +0 -2 TD +(\(FILEPKGCOM)Tj +/TT19 1 Tf +6.6011 0 TD +( )Tj +/TT15 1 Tf +0.3533 0 TD +(COMMANDNAME)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1033 Tw +[( returns a property list of all of the defined properties of)]TJ +/TT15 1 Tf +-14.1556 -1.2889 TD +0 Tw +(COMMANDNAME)Tj +/TT12 1 Tf +6.6011 0 TD +(, using the property names as keys.)Tj +-6.6011 -2.0667 TD +(Specifying )Tj +/TT15 1 Tf +4.9382 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.03 Tw +[( as the symbol )]TJ +/TT10 1 Tf +6.684 0 TD +0 Tw +(COM)Tj +/TT12 1 Tf +1.8003 0 TD +0.03 Tw +[( can be used to define one file manager command as a)]TJ +-15.8229 -1.2889 TD +0.5311 Tw +[(synonym of another. For example, )]TJ +/TT10 1 Tf +18.8507 0 TD +1.2744 Tw +(\(FILEPKGCOM INITVARIABLES COM)Tj +-18.8507 -1.2889 TD +0 Tw +(INITVARS\))Tj +/TT12 1 Tf +6.001 0 TD +0.2544 Tw +[( defines )]TJ +/TT10 1 Tf +4.2076 0 TD +0 Tw +(INITVARIABLES)Tj +/TT12 1 Tf +7.8013 0 TD +0.2544 Tw +[( as a synonym for the file manager command)]TJ +/TT10 1 Tf +-18.0099 -1.2889 TD +0 Tw +(INITVARS)Tj +/TT12 1 Tf +4.8008 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 432 Tm +(Functions for Manipulating File Command Lists)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 429.29 m +558.01 429.29 l +S +BT +/TT12 1 Tf +9 0 0 9 126 407.34 Tm +0.0944 Tw +[(The following functions may be used to manipulate filecoms. The argument )]TJ +/TT15 1 Tf +35.1626 0 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0944 Tw +[( does )]TJ +/TT8 1 Tf +2.7485 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.0944 Tw +[( have to)]TJ +-41.6445 -1.2889 TD +0.0189 Tw +[(correspond to the filecoms for some file. For example, )]TJ +/TT15 1 Tf +24.4067 0 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0189 Tw +[( can be the list of commands generated as)]TJ +-26.8071 -1.2889 TD +0 Tw +(a result of expanding a user-defined file manager command.)Tj +0 -2.8889 TD +0.0044 Tw +(The following functions will accept a file manager command as a valid value for their )Tj +/TT15 1 Tf +38.0965 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0004 Tc +0.004 Tw +( argument,)Tj +-40.4968 -1.2889 TD +0 Tc +0.0344 Tw +[(even if it does not have a corresponding file manager type. User-defined file manager commands are)]TJ +0 -1.2222 TD +0 Tw +(expanded as necessary.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(INFILECOMS)Tj +/TT10 1 Tf +6.001 0 TD +(?)Tj +/TT8 1 Tf +0.5989 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COMS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 291.7614 313.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 313.2 Tm +([Function])Tj +/TT15 1 Tf +-35.4033 -1.8444 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.2289 Tw +[( is a list of file manager commands, or a variable whose value is a list of file)]TJ +-2.4004 -1.2889 TD +0.12 Tw +(manager commands. )Tj +/TT15 1 Tf +10.1271 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.12 Tw +[( is a file manager type. )]TJ +/TT10 1 Tf +11.3063 0 TD +0 Tw +(INFILECOMS?)Tj +/TT12 1 Tf +6.6011 0 TD +0.12 Tw +[( returns )]TJ +/TT10 1 Tf +3.9441 0 TD +0 Tw +(T)Tj +/TT12 1 Tf +0.6001 0 TD +0.12 Tw +[( if )]TJ +/TT15 1 Tf +1.364 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.12 Tw +[( of)]TJ +-38.7435 -1.2889 TD +0 Tw +(type )Tj +/TT15 1 Tf +2.2124 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( is "contained" in )Tj +/TT15 1 Tf +7.6909 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-14.7041 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9199 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +( = NIL)Tj +/TT12 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(INFILECOMS?)Tj +/TT12 1 Tf +6.6011 0 TD +( returns a list of all elements of type )Tj +/TT15 1 Tf +16.0312 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +-32.4536 -2.0667 TD +(If )Tj +/TT15 1 Tf +0.9199 0 TD +(NAME )Tj +/TT10 1 Tf +3.0005 0 TD +(= T)Tj +/TT12 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(INFILECOMS?)Tj +/TT12 1 Tf +6.6011 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +( if there are )Tj +/TT8 1 Tf +5.2593 0 TD +(any)Tj +/TT12 1 Tf +1.5 0 TD +( elements of type )Tj +/TT15 1 Tf +7.7842 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( in )Tj +/TT15 1 Tf +1.373 0 TD +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-40.5099 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADDTOFILE)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NEAR)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LISTNAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 350.272 213.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 213.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Adds )Tj +/TT15 1 Tf +2.7022 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0289 Tw +[( of type )]TJ +/TT15 1 Tf +3.678 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0289 Tw +[( to the file manager commands for )]TJ +/TT15 1 Tf +15.6466 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0289 Tw +[(. If )]TJ +/TT15 1 Tf +1.7566 0 TD +0 Tw +(NEAR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0289 Tw +[( is given and it)]TJ +-33.3849 -1.2889 TD +0.0033 Tw +(is the name of an item of type )Tj +/TT15 1 Tf +13.3538 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0003 Tc +0.003 Tw +( already on )Tj +/TT15 1 Tf +5.22 0 TD +0 Tc +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0033 Tw +(, then )Tj +/TT15 1 Tf +2.7259 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( is added to the command)Tj +-28.5009 -1.2889 TD +0 Tc +0.0611 Tw +(that dumps )Tj +/TT15 1 Tf +5.4782 0 TD +0 Tw +(NEAR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0611 Tw +[(. If )]TJ +/TT15 1 Tf +1.8533 0 TD +0 Tw +(LISTNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.0611 Tw +[( is given and is the name of a list of items of )]TJ +/TT15 1 Tf +20.3428 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0611 Tw +[( items)]TJ +-37.2758 -1.2889 TD +0 Tw +(on )Tj +/TT15 1 Tf +1.4757 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0978 Tw +(, then )Tj +/TT15 1 Tf +2.9148 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0978 Tw +[( is added to that list. Uses )]TJ +/TT10 1 Tf +12.6016 0 TD +0 Tw +(ADDTOCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +0.0978 Tw +[( and )]TJ +/TT10 1 Tf +2.3884 0 TD +0 Tw +(MAKENEWCOM)Tj +/TT12 1 Tf +6.001 0 TD +0.0978 Tw +[(. Returns)]TJ +/TT15 1 Tf +-35.5831 -1.2889 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(ADDTOFILE)Tj +/TT12 1 Tf +5.4009 0 TD +( is undoable.)Tj +/TT10 1 Tf +-11.2179 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(DELFROMFILES)Tj +/TT12 1 Tf +7.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILES)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 302.5623 127.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 127.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.21 Tw +(Deletes all instances of )Tj +/TT15 1 Tf +11.1047 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.21 Tw +[( of type )]TJ +/TT15 1 Tf +4.2213 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.21 Tw +[( from the filecoms for each of the files on)]TJ +/TT15 1 Tf +-20.1267 -1.2889 TD +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0004 Tc +0.0018 Tw +(. If )Tj +/TT15 1 Tf +1.6766 0 TD +0 Tc +0 Tw +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +0.0002 Tc +0.002 Tw +( is a non-)Tj +/TT10 1 Tf +4.0145 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0002 Tc +0.002 Tw +( symbol, )Tj +/TT10 1 Tf +4.0074 0 TD +0 Tc +0 Tw +(\(LIST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT15 1 Tf +0.2522 0 TD +(FILES)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0002 Tc +0.002 Tw +( is used. )Tj +/TT15 1 Tf +4.0904 0 TD +0 Tc +0 Tw +(FILES)Tj +/TT10 1 Tf +3.0005 0 TD +0.0056 Tw +[( = NIL)]TJ +/TT12 1 Tf +3.6117 0 TD +0.0002 Tc +0.002 Tw +( defaults to)Tj +/TT10 1 Tf +-35.0556 -1.2889 TD +0 Tc +0 Tw +(FILELST)Tj +/TT12 1 Tf +4.2007 0 TD +0.3689 Tw +[(. Returns a list of files from which )]TJ +/TT15 1 Tf +18.7155 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.3689 Tw +[( was actually removed. Uses)]TJ +/TT10 1 Tf +-25.3166 -1.2889 TD +0 Tw +(DELFROMCOMS)Tj +/TT12 1 Tf +6.6011 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(DELFROMFILES)Tj +/TT12 1 Tf +7.2012 0 TD +( is undoable.)Tj +-14.5522 -2.0667 TD +0.1389 Tw +(Deleting a function will also remove the function from any )Tj +/TT10 1 Tf +27.5779 0 TD +0 Tw +(BLOCKS)Tj +/TT12 1 Tf +3.6006 0 TD +0.1389 Tw +[( declarations in the)]TJ +-31.1784 -1.2889 TD +0 Tw +(filecoms.)Tj +ET +endstream +endobj +151 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +153 0 obj +<< +/Length 9024 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-45)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADDTOCOMS)Tj +/TT12 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NEAR)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(LISTNAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 302.272 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Adds )Tj +/TT15 1 Tf +2.6956 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( as a )]TJ +/TT15 1 Tf +2.2405 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +[( to )]TJ +/TT15 1 Tf +1.4165 0 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0222 Tw +(, a list of file manager commands or a variable whose value)Tj +-13.5537 -1.2889 TD +0.1811 Tw +[(is a list of file manager commands. Returns )]TJ +/TT10 1 Tf +21.194 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.1811 Tw +[( if )]TJ +/TT10 1 Tf +1.4862 0 TD +0 Tw +(ADDTOCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +0.1811 Tw +[( was unable to find a)]TJ +-29.8814 -1.2889 TD +0.0989 Tw +(command appropriate for adding )Tj +/TT15 1 Tf +15.504 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0989 Tw +[( to )]TJ +/TT15 1 Tf +1.5699 0 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.0989 Tw +(. )Tj +/TT15 1 Tf +0.9478 0 TD +0 Tw +(NEAR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0989 Tw +[( and )]TJ +/TT15 1 Tf +2.3906 0 TD +0 Tw +(LISTNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.0989 Tw +[( are described in)]TJ +-32.4142 -1.2889 TD +0 Tw +(the discussion of )Tj +/TT10 1 Tf +7.6553 0 TD +(ADDTOFILE)Tj +/TT12 1 Tf +5.4009 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(ADDTOCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +( is undoable.)Tj +-19.207 -2.0667 TD +0.1289 Tw +[(The exact algorithm for adding commands depends the particular command itself. See)]TJ +0 -1.2222 TD +0 Tw +(discussion of the )Tj +/TT10 1 Tf +7.6553 0 TD +(ADD)Tj +/TT12 1 Tf +1.8003 0 TD +( property, in the description of )Tj +/TT10 1 Tf +13.7783 0 TD +(FILEPKGCOM)Tj +/TT12 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-29.2349 -2.0667 TD +(ADDTOCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +0.2756 Tw +[( will not attempt to add an item to any command which is inside of a)]TJ +/TT10 1 Tf +-5.4009 -1.2889 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.1989 Tw +[( unless you specified a specific name via the )]TJ +/TT10 1 Tf +21.4941 0 TD +0 Tw +(LISTNAME)Tj +/TT12 1 Tf +4.8008 0 TD +0.1989 Tw +[( or )]TJ +/TT10 1 Tf +1.8387 0 TD +0 Tw +(NEAR)Tj +/TT12 1 Tf +2.4004 0 TD +0.1989 Tw +[( option of)]TJ +/TT10 1 Tf +-35.3348 -1.2889 TD +0 Tw +(ADDTOFILES?)Tj +/TT12 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-9.2677 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(DELFROMCOMS)Tj +/TT12 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(COMS)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 243.7614 422.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 422.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Deletes )Tj +/TT15 1 Tf +3.542 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +[( as a )]TJ +/TT15 1 Tf +2.2938 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +[( from )]TJ +/TT15 1 Tf +2.7367 0 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +0.04 Tw +[(. Returns )]TJ +/TT10 1 Tf +4.5971 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.04 Tw +[( if )]TJ +/TT10 1 Tf +1.204 0 TD +0 Tw +(DELFROMCOMS)Tj +/TT12 1 Tf +6.6011 0 TD +0.04 Tw +[( was unable to modify)]TJ +/TT15 1 Tf +-29.9761 -1.2889 TD +0 Tw +(COMS)Tj +/TT12 1 Tf +2.4004 0 TD +( to delete )Tj +/TT15 1 Tf +4.2871 0 TD +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(DELFROMCOMS)Tj +/TT12 1 Tf +6.6011 0 TD +( is undoable.)Tj +/TT10 1 Tf +-19.1056 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(MAKENEWCOM)Tj +/TT12 1 Tf +5.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 214.5079 371.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 371.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.13 Tw +(Returns a file manager command for dumping )Tj +/TT15 1 Tf +21.7752 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.13 Tw +[( of type )]TJ +/TT15 1 Tf +3.9813 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.13 Tw +(. Uses the procedure)Tj +-30.5573 -1.2889 TD +0 Tw +(described in the discussion of )Tj +/TT10 1 Tf +13.3149 0 TD +(NEWCOM)Tj +/TT12 1 Tf +3.6006 0 TD +(, in the Defining New File Manager Types section.)Tj +/TT10 1 Tf +-19.5822 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(MOVETOFILE)Tj +/TT12 1 Tf +5.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TOFILE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FROMFILE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 294.6202 320.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 320.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0333 Tw +(Moves the definition of )Tj +/TT15 1 Tf +10.691 0 TD +0 Tw +(NAME)Tj +/TT12 1 Tf +2.4004 0 TD +0.0333 Tw +[( as a )]TJ +/TT15 1 Tf +2.2738 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0333 Tw +[( from )]TJ +/TT15 1 Tf +2.7234 0 TD +0 Tw +(FROMFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0333 Tw +[( to)]TJ +/TT8 1 Tf +1.1554 0 TD +0 Tw +( )Tj +/TT15 1 Tf +0.2833 0 TD +(TOFILE)Tj +/TT12 1 Tf +3.6006 0 TD +0.0333 Tw +[( by modifying the file)]TJ +-30.3291 -1.2889 TD +0 Tw +(commands in the appropriate way \(with )Tj +/TT10 1 Tf +18.124 0 TD +(DELFROMFILES)Tj +/TT12 1 Tf +7.2012 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(ADDTOFILE)Tj +/TT12 1 Tf +5.4009 0 TD +(\).)Tj +-32.9189 -2.0667 TD +0.0833 Tw +(Note that if )Tj +/TT15 1 Tf +5.5405 0 TD +0 Tw +(FROMFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0833 Tw +[( is specified, the definition will be retrieved from that file, even if)]TJ +-10.3413 -1.2889 TD +0 Tw +(there is another definition currently in your environment.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILECOMSLST)Tj +/TT4 1 Tf +10 0 0 10 166.8 239.44 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 169.5783 239.44 Tm +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 220.4362 239.44 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 239.44 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns a list of all objects of type )Tj +/TT15 1 Tf +15.1172 0 TD +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +( in )Tj +/TT15 1 Tf +1.373 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-23.9577 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILEFNSLST)Tj +/TT12 1 Tf +5.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 190.6544 199.9 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 199.9 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(\(FILECOMSLST)Tj +/TT19 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FNS\))Tj +/TT12 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-19.5793 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILECOMS)Tj +/TT12 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 203.7079 160.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 160.36 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.877 0 TD +(\(PACK*)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT15 1 Tf +0.4 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.4 0 TD +(\(OR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.4 0 TD +(TYPE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.4 0 TD +(COMS\)\))Tj +/TT12 1 Tf +4.2007 0 TD +0.15 Tw +(. Note that )Tj +/TT10 1 Tf +5.3665 0 TD +0.3611 Tw +(\(FILECOMS FOO\))Tj +/TT12 1 Tf +9.3626 0 TD +0.15 Tw +[( returns the)]TJ +-34.6085 -1.2889 TD +0 Tw +(symbol )Tj +/TT10 1 Tf +3.5029 0 TD +(FOOCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +(, not the value of )Tj +/TT10 1 Tf +7.6582 0 TD +(FOOCOMS)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-22.2292 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(SMASHFILECOMS)Tj +/TT12 1 Tf +7.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 206.8544 109.22 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 109.22 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.09 Tw +(Maps down )Tj +/TT10 1 Tf +5.7235 0 TD +0 Tw +(\(FILECOMSLST)Tj +/TT19 1 Tf +7.2012 0 TD +( )Tj +/TT15 1 Tf +0.34 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.34 0 TD +(FILEVARS\))Tj +/TT12 1 Tf +6.001 0 TD +0.09 Tw +[( and sets to )]TJ +/TT10 1 Tf +5.5778 0 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +0.09 Tw +[( all filevars \(see the)]TJ +-31.1844 -1.2889 TD +0.3178 Tw +(FileVars section\), i.e., any variable used in a command of the form )Tj +/TT10 1 Tf +33.2396 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(COMMAND)Tj +/TT10 1 Tf +4.2007 0 TD +0.7611 Tc +( *)Tj +/TT15 1 Tf +-38.0404 -1.2889 TD +0 Tc +(VARIABLE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +(. Also sets )Tj +/TT10 1 Tf +4.9414 0 TD +(\(FILECOMS)Tj +/TT19 1 Tf +5.4009 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +(. Returns )Tj +/TT15 1 Tf +4.4771 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +154 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +156 0 obj +<< +/Length 7707 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-46)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Symbolic File Format)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT12 1 Tf +9 0 0 9 126 543.54 Tm +0.0467 Tw +[(The file manager manipulates symbolic files in a particular format. This format is defined so that the)]TJ +0 -1.2222 TD +0.0367 Tw +(information in the file is easily readable when the file is listed, as well as being easily manipulated by)Tj +T* +0.0189 Tw +[(the file manager functions. In general, there is no reason for you to manually change the contents of a)]TJ +T* +0.1078 Tw +[(symbolic file. However, to allow you to extend the file manager, this section describes some of the)]TJ +T* +0 Tw +(functions used to write symbolic files, and other matters related to their format.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PRETTYDEF)Tj +/TT19 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PRTTYFNS)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PRTTYFILE)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PRTTYCOMS)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(REPRINTFNS)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(SOURCEFILE)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(CHANGES)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 509.1475 477.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 156 467.6 Tm +([Function])Tj +2 -1.7778 TD +0.06 Tw +(Writes a symbolic file in )Tj +/TT10 1 Tf +11.2199 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.06 Tw +[( format for loading, using )]TJ +/TT10 1 Tf +11.8898 0 TD +0 Tw +(FILERDTBL)Tj +/TT12 1 Tf +5.4009 0 TD +0.06 Tw +[( as its read)]TJ +-35.1117 -1.2889 TD +0 Tw +(table. )Tj +/TT10 1 Tf +2.8994 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +( returns the name of the symbolic file that was created.)Tj +/TT10 1 Tf +-8.3003 -2.0667 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.2178 Tw +[( operates under a )]TJ +/TT10 1 Tf +8.791 0 TD +0 Tw +(RESETLST)Tj +/TT12 1 Tf +4.8008 0 TD +0.2178 Tw +[( \(see Chapter 14\), so if an error occurs, or a)]TJ +-18.9927 -1.2889 TD +0.2011 Tw +(Control-D is typed, all files that )Tj +/TT10 1 Tf +15.381 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.2011 Tw +[( has opened will be closed, the \(partially)]TJ +-20.7819 -1.2889 TD +0.0111 Tw +(complete\) file being written will be deleted, and any undoable operations executed will be)Tj +0 -1.2222 TD +0.1011 Tw +[(undone. The )]TJ +/TT10 1 Tf +6.38 0 TD +0 Tw +(RESETLST)Tj +/TT12 1 Tf +4.8008 0 TD +0.1011 Tw +[( also means that any )]TJ +/TT10 1 Tf +9.7565 0 TD +0 Tw +(RESETSAVE)Tj +/TT12 1 Tf +5.4009 0 TD +0.1011 Tw +(s executed in the file manager)Tj +-26.3382 -1.2889 TD +0 Tw +(commands will also be protected.)Tj +/TT15 1 Tf +0 -2 TD +(PRTTYFNS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1467 Tw +[( is an optional list of function names. It is equivalent to including )]TJ +/TT10 1 Tf +31.2462 0 TD +0.3522 Tw +(\(FNS *)Tj +/TT15 1 Tf +-36.047 -1.2889 TD +0 Tw +(PRTTYFNS)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0267 Tw +[( in the file manager commands in )]TJ +/TT15 1 Tf +15.2311 0 TD +0 Tw +(PRTTYCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +0.0267 Tw +(. )Tj +/TT15 1 Tf +0.8033 0 TD +0 Tw +(PRTTYFNS)Tj +/TT12 1 Tf +4.8008 0 TD +0.0267 Tw +[( is an anachronism)]TJ +-31.637 -1.2889 TD +0.22 Tw +(from when )Tj +/TT10 1 Tf +5.5738 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.22 Tw +[( did not use a list of file manager commands, and should be)]TJ +-10.9747 -1.2889 TD +0 Tw +(specified as )Tj +/TT10 1 Tf +5.3765 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT15 1 Tf +-7.1768 -2.0667 TD +(PRTTYFILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0522 Tw +[( is the name of the file on which the output is to be written. )]TJ +/TT15 1 Tf +27.3976 0 TD +0 Tw +(PRTTYFILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0522 Tw +[( has)]TJ +-38.1993 -1.2889 TD +0.0333 Tw +[(to be a symbnol. If )]TJ +/TT15 1 Tf +9.1425 0 TD +0 Tw +(PRTTYFILE)Tj +/TT10 1 Tf +5.4009 0 TD +0.0811 Tw +[( = NIL)]TJ +/TT12 1 Tf +3.7628 0 TD +0.0333 Tw +[(, the primary output file is used. )]TJ +/TT15 1 Tf +15.2893 0 TD +0 Tw +(PRTTYFILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0333 Tw +[( is)]TJ +-38.9963 -1.2889 TD +0.0267 Tw +(opened if not already open, and it becomes the primary output file. )Tj +/TT15 1 Tf +30.5381 0 TD +0 Tw +(PRTTYFILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.0267 Tw +[( is closed)]TJ +-35.939 -1.2889 TD +0 Tw +(at end of )Tj +/TT10 1 Tf +4.127 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +(, and the primary output file is restored.)Tj +/TT15 1 Tf +-9.5278 -2.0667 TD +(PRTTYCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +0.2844 Tw +[( is a list of file manager commands interpreted as described in the File)]TJ +-5.4009 -1.2889 TD +0.0744 Tw +[(Manager Commands section. If )]TJ +/TT15 1 Tf +14.7292 0 TD +0 Tw +(PRTTYCOMS)Tj +/TT12 1 Tf +5.4009 0 TD +0.0744 Tw +[( is atomic, its top level value is used and an)]TJ +/TT10 1 Tf +-20.13 -1.2889 TD +0 Tw +(RPAQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.2544 Tw +[( is written which will set that atom to the list of commands when the file is)]TJ +-3.0005 -1.2889 TD +0.1522 Tw +[(subsequently loaded. A )]TJ +/TT10 1 Tf +11.5547 0 TD +0 Tw +(PRETTYCOMPRINT)Tj +/TT12 1 Tf +8.4014 0 TD +0.1522 Tw +[( expression \(see below\) will also be written)]TJ +-19.9561 -1.2889 TD +0.06 Tw +(which informs you of the named atom or list of commands when the file is subsequently)Tj +0 -1.2222 TD +0.0433 Tw +[(loaded. In addition, if any of the functions in the file are nlambda functions, )]TJ +/TT10 1 Tf +34.6026 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +-34.6026 -1.2889 TD +0.0189 Tw +(will automatically print a )Tj +/TT10 1 Tf +11.535 0 TD +0 Tw +(DECLARE:)Tj +/TT12 1 Tf +4.8008 0 TD +0.0189 Tw +[( expression suitable for informing the compiler about)]TJ +-16.3358 -1.2889 TD +0.1356 Tw +(these functions, in case you recompile the file without having first loaded the nlambda)Tj +0 -1.2222 TD +0 Tw +(functions \(see Chapter 18\).)Tj +/TT15 1 Tf +0 -2 TD +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +0.1211 Tw +[( and )]TJ +/TT15 1 Tf +2.4351 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.1211 Tw +[( are for use in conjunction with remaking a file \(see the)]TJ +-14.437 -1.2889 TD +0.3433 Tw +(Remaking a Symbolic File section\). )Tj +/TT15 1 Tf +17.956 0 TD +0 Tw +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +0.3433 Tw +[( can be a list of functions to be)]TJ +-23.957 -1.2889 TD +0.0633 Tw +(prettyprinted, or )Tj +/TT10 1 Tf +7.7863 0 TD +0 Tw +(EXPRS)Tj +/TT12 1 Tf +3.0005 0 TD +0.0633 Tw +(, meaning prettyprint all functions with )Tj +/TT10 1 Tf +18.128 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0633 Tw +[( definitions, or )]TJ +/TT10 1 Tf +6.8868 0 TD +0 Tw +(ALL)Tj +/TT12 1 Tf +-38.202 -1.2889 TD +0.0389 Tw +(meaning prettyprint all functions either defined as )Tj +/TT10 1 Tf +22.8489 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0389 Tw +(s, or with )Tj +/TT10 1 Tf +4.5146 0 TD +0 Tw +(EXPR)Tj +/TT12 1 Tf +2.4004 0 TD +0.0389 Tw +[( properties. Note)]TJ +-32.1643 -1.2889 TD +0.0133 Tw +(that doing a remake with )Tj +/TT15 1 Tf +11.4622 0 TD +0 Tw +(REPRINTFNS )Tj +/TT10 1 Tf +6.6322 0 TD +0.0311 Tw +(= NIL)Tj +/TT12 1 Tf +3.0316 0 TD +0.0133 Tw +[( makes sense if there have been changes in)]TJ +-21.126 -1.2889 TD +0.27 Tw +(the file, but not to any of the functions, e.g., changes to variables or property lists.)Tj +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.0156 Tw +[( is the name of the file from which to copy the definitions for those functions)]TJ +-6.001 -1.2889 TD +0.4389 Tw +(that are )Tj +/TT8 1 Tf +4.4862 0 TD +0 Tw +(not)Tj +/TT12 1 Tf +1.333 0 TD +0.4389 Tw +[( going to be prettyprinted, i.e., those not specified by )]TJ +/TT15 1 Tf +27.9363 0 TD +0 Tw +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +(.)Tj +/TT15 1 Tf +-39.7564 -1.2889 TD +(SOURCEFILE )Tj +/TT10 1 Tf +7.5555 0 TD +0.9544 Tw +(= T)Tj +/TT12 1 Tf +2.7547 0 TD +0.3978 Tw +[( means to use most recent version \(i.e., highest number\) of)]TJ +ET +endstream +endobj +157 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +159 0 obj +<< +/Length 7514 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-47)Tj +/TT15 1 Tf +-37 60.6156 TD +(PRTTYFILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.2433 Tw +(, the second argument to )Tj +/TT10 1 Tf +12.3856 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.2433 Tw +[(. If )]TJ +/TT15 1 Tf +2.3999 0 TD +0 Tw +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +0.2433 Tw +[( cannot be found,)]TJ +/TT10 1 Tf +-31.5883 -1.2889 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.1467 Tw +[( prints the message )]TJ +/TT10 1 Tf +9.3376 0 TD +0 Tw +(")Tj +/TT15 1 Tf +0.6001 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +0.3511 Tw +[( NOT FOUND, SO IT WILL BE WRITTEN)]TJ +-17.739 -1.2889 TD +0 Tw +(ANEW",)Tj +/TT12 1 Tf +3.6006 0 TD +( and proceeds as it does when )Tj +/TT15 1 Tf +13.499 0 TD +(REPRINTFNS)Tj +/TT12 1 Tf +6.001 0 TD +( and )Tj +/TT15 1 Tf +2.1929 0 TD +(SOURCEFILE)Tj +/TT12 1 Tf +6.001 0 TD +( are both )Tj +/TT10 1 Tf +4.1313 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-37.2261 -2.0667 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.2611 Tw +[( calls )]TJ +/TT10 1 Tf +2.9719 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.2611 Tw +[( with its second argument )]TJ +/TT15 1 Tf +13.0394 0 TD +0 Tw +(PRETTYDEFLG)Tj +/TT10 1 Tf +6.6011 0 TD +0.6267 Tw +[( = T)]TJ +/TT12 1 Tf +3.6537 0 TD +0.2611 Tw +(, so)Tj +-38.2681 -1.2889 TD +0 Tw +(whenever )Tj +/TT10 1 Tf +4.655 0 TD +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.01 Tw +[( starts a new function, it prints \(on the terminal\) the name of that)]TJ +-11.2561 -1.2889 TD +0.0389 Tw +(function if more than 30 seconds \(real time\) have elapsed since the last time it printed the)Tj +0 -1.2222 TD +0 Tw +(name of a function.)Tj +0 -2 TD +0.0467 Tw +(Note that normally if )Tj +/TT10 1 Tf +9.7711 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.0467 Tw +[( is given a symbol which is not defined as a function)]TJ +-16.3722 -1.2889 TD +0.0089 Tw +(but is known to be on one of the files noticed by the file manager, )Tj +/TT10 1 Tf +29.2183 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.0089 Tw +[( will load)]TJ +-35.8194 -1.2889 TD +0.0989 Tw +(in the definition \(using )Tj +/TT10 1 Tf +10.7769 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0989 Tw +[(\) and print it. This is not done when )]TJ +/TT10 1 Tf +17.3507 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT12 1 Tf +6.6011 0 TD +0.0989 Tw +[( is)]TJ +-38.9294 -1.2889 TD +0 Tw +(called from )Tj +/TT10 1 Tf +5.2725 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +(.)Tj +-10.6733 -2.0667 TD +(In Medley the )Tj +/TT10 1 Tf +6.418 0 TD +(SYSPRETTYFLG)Tj +/TT12 1 Tf +7.2012 0 TD +( is ignored in the Interlisp exec.)Tj +/TT10 1 Tf +-16.2858 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PRINTFNS)Tj +/TT12 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 163.6517 399.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 399.2 Tm +([Function])Tj +/TT15 1 Tf +-35.4033 -1.8444 TD +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.1967 Tw +[( is a list of functions. )]TJ +/TT10 1 Tf +10.9333 0 TD +0 Tw +(PRINTFNS)Tj +/TT12 1 Tf +4.8008 0 TD +0.1967 Tw +[( prettyprints a )]TJ +/TT10 1 Tf +7.1427 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.1967 Tw +[( epression that defines the)]TJ +-27.6776 -1.2889 TD +0.4211 Tw +[(functions to the primary output stream using the primary read table. Used by)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +( to implement the )Tj +/TT10 1 Tf +8.0742 0 TD +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +( file manager command.)Tj +/TT10 1 Tf +-17.9421 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PRINTDATE)Tj +/TT12 1 Tf +5.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(CHANGES)Tj +/TT10 1 Tf +4.2007 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 230.7114 337.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 444.63 337.06 Tm +([Function])Tj +-35.4033 -1.8445 TD +0.0478 Tw +(Prints the )Tj +/TT10 1 Tf +4.6048 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0478 Tw +[( expression at beginning of )]TJ +/TT10 1 Tf +12.4034 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.0478 Tw +[( files. )]TJ +/TT15 1 Tf +2.9612 0 TD +0 Tw +(CHANGES)Tj +/TT12 1 Tf +4.2007 0 TD +0.0478 Tw +[( used by)]TJ +-36.1721 -1.2889 TD +0 Tw +(the file manager.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILECREATED)Tj +/TT12 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 185.2526 286.52 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 359.33 286.52 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.0878 Tw +(Prints a message \(using )Tj +/TT10 1 Tf +11.0069 0 TD +0 Tw +(LISPXPRINT)Tj +/TT12 1 Tf +6.001 0 TD +0.0878 Tw +(\) followed by the time and date the file was made,)Tj +-17.0079 -1.2889 TD +0.3644 Tw +(which is )Tj +/TT10 1 Tf +4.6766 0 TD +0 Tw +(\(CAR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.6144 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.3644 Tw +[(. The message is the value of )]TJ +/TT10 1 Tf +16.003 0 TD +0 Tw +(PRETTYHEADER)Tj +/TT12 1 Tf +7.2012 0 TD +0.3644 Tw +(, initially )Tj +/TT10 1 Tf +4.8983 0 TD +0 Tw +("FILE)Tj +-36.9941 -1.2889 TD +(CREATED")Tj +/TT12 1 Tf +4.8008 0 TD +0.0122 Tw +[(. If )]TJ +/TT10 1 Tf +1.7066 0 TD +0.0289 Tw +(PRETTYHEADER = NIL)Tj +/TT12 1 Tf +10.8595 0 TD +0.0122 Tw +(, nothing is printed. )Tj +/TT10 1 Tf +9.2764 0 TD +0 Tw +(\(CDR)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.2622 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0122 Tw +[( contains information)]TJ +-30.5062 -1.2889 TD +0.4911 Tw +(about the file, e.g., full name, address of file map, list of changed items, etc.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0656 Tw +[( also stores the time and date the file was made on the property list of the)]TJ +-6.6011 -1.2889 TD +0 Tw +(file under the property )Tj +/TT10 1 Tf +10.3506 0 TD +(FILEDATES)Tj +/TT12 1 Tf +5.4009 0 TD +( and performs other initialization for the file manager.)Tj +/TT10 1 Tf +-18.4181 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PRETTYCOMPRINT)Tj +/TT8 1 Tf +8.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 196.0517 189.58 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 401.97 189.58 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +(Prints )Tj +/TT15 1 Tf +2.8721 0 TD +(X)Tj +/TT12 1 Tf +0.6001 0 TD +( \(unevaluated\) using )Tj +/TT10 1 Tf +9.4111 0 TD +(LISPXPRINT)Tj +/TT12 1 Tf +6.001 0 TD +(, unless )Tj +/TT10 1 Tf +3.5527 0 TD +(PRETTYHEADER = NIL)Tj +/TT12 1 Tf +10.8018 0 TD +(.)Tj +/TT17 1 Tf +-35.9054 -2.5489 TD +(PRETTYHEADER)Tj +/TT6 1 Tf +10 0 0 10 166.8105 150.04 Tm +-0.0009 Tc +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 150.04 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +0.2933 Tw +(Value is the message printed by )Tj +/TT10 1 Tf +16.0964 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.2933 Tw +(. )Tj +/TT10 1 Tf +1.3367 0 TD +0 Tw +(PRETTYHEADER)Tj +/TT12 1 Tf +7.2012 0 TD +0.2933 Tw +[( is initially )]TJ +/TT10 1 Tf +5.7643 0 TD +0 Tw +("FILE)Tj +-36.9996 -1.2889 TD +(CREATED")Tj +/TT12 1 Tf +4.8008 0 TD +0.01 Tw +(. If )Tj +/TT10 1 Tf +1.4399 0 TD +0.0233 Tw +(PRETTYHEADER = NIL)Tj +/TT12 1 Tf +10.8484 0 TD +0.01 Tw +(, neither )Tj +/TT10 1 Tf +3.9043 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.01 Tw +[( nor )]TJ +/TT10 1 Tf +2.0429 0 TD +0 Tw +(PRETTYCOMPRINT)Tj +/TT12 1 Tf +8.4014 0 TD +0.01 Tw +[( will)]TJ +-38.0388 -1.2889 TD +0.3667 Tw +[(print anything. Thus, setting )]TJ +/TT10 1 Tf +14.9603 0 TD +0 Tw +(PRETTYHEADER)Tj +/TT12 1 Tf +7.2012 0 TD +0.3667 Tw +[( to )]TJ +/TT10 1 Tf +2.1054 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.3667 Tw +[( will result in "silent loads".)]TJ +/TT10 1 Tf +-26.0672 -1.2889 TD +0 Tw +(PRETTYHEADER)Tj +/TT12 1 Tf +7.2012 0 TD +( is reset to )Tj +/TT10 1 Tf +4.6899 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +( during greeting \(see Chapter 12\).)Tj +ET +endstream +endobj +160 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +162 0 obj +<< +/Length 4609 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-48)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILECHANGES)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 273.3088 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1067 Tw +(Returns a list of the changed objects of file manager type )Tj +/TT15 1 Tf +26.3887 0 TD +0 Tw +(TYPE)Tj +/TT12 1 Tf +2.4004 0 TD +0.1067 Tw +[( from the )]TJ +/TT10 1 Tf +4.6139 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +-33.403 -1.2889 TD +0.0878 Tw +(expression of )Tj +/TT15 1 Tf +6.2913 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0878 Tw +[(. If )]TJ +/TT15 1 Tf +1.9333 0 TD +0 Tw +(TYPE )Tj +/TT10 1 Tf +3.2116 0 TD +0.2111 Tw +(= NIL)Tj +/TT12 1 Tf +3.2116 0 TD +0.0878 Tw +(, returns an alist of all of the changes, with the file)Tj +-17.0481 -1.2889 TD +0 Tw +(manager types as the )Tj +/TT10 1 Tf +9.5923 0 TD +(CAR)Tj +/TT12 1 Tf +1.8003 0 TD +(s of the elements..)Tj +/TT10 1 Tf +-14.0592 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FILEDATE)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-28919.5([Function])]TJ +-5.9838 -1.8444 TD +(Returns the file date contained in the )Tj +/TT10 1 Tf +16.5454 0 TD +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +( expression of )Tj +/TT15 1 Tf +6.3657 0 TD +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-34.5793 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LISPSOURCEFILEP)Tj +/TT19 1 Tf +8.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +[( )-24719.5([Function])]TJ +-10.1838 -1.8444 TD +0.2333 Tw +(Returns a non-)Tj +/TT10 1 Tf +6.9867 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.2333 Tw +[( value if )]TJ +/TT15 1 Tf +4.512 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.2333 Tw +[( is in file manager format and has a file map, )]TJ +/TT10 1 Tf +22.5032 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +-38.2026 -1.2889 TD +(otherwise.)Tj +/TT4 1 Tf +10 0 0 10 126 413.06 Tm +(Copyright Notices)Tj +/TT12 1 Tf +9 0 0 9 126 389.4 Tm +0.0122 Tw +(The system has a facility for automatically printing a copyright notice near the front of files, right after)Tj +0 -1.2222 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6383 0 TD +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0011 Tw +( expression, specifying the years it was edited and the copyright owner. The format)Tj +-8.2394 -1.2889 TD +0 Tw +(of the copyright notice is:)Tj +/TT10 1 Tf +4 -2.8222 TD +(\(* Copyright \(c\) 1981 by Foo Bars Corporation\))Tj +/TT12 1 Tf +-4 -2.9556 TD +0.0022 Tw +(Once a file has a copyright notice then every version will have a new copyright notice inserted into the)Tj +0 -1.2222 TD +0.0244 Tw +[(file without your intervention. \(The copyright information necessary to keep the copyright up to date)]TJ +T* +0 Tw +(is stored at the end of the file.\).)Tj +0 -2.8889 TD +0.2611 Tw +(Any year the file has been edited is considered a "copyright year" and therefore kept with the)Tj +0 -1.2222 TD +0.2455 Tw +[(copyright information. For example, if a file has been edited in 1981, 1982, and 1984, then the)]TJ +T* +0 Tw +(copyright notice would look like:)Tj +/TT10 1 Tf +4 -2.8222 TD +(\(* Copyright \(c\) 1981,1982,1984 by Foo Bars Corporation\))Tj +/TT12 1 Tf +-4 -2.9556 TD +0.2444 Tw +(When a file is made, if it has no copyright information, the system will ask you to specify the)Tj +0 -1.2222 TD +0.56 Tw +(copyright owner \(if )Tj +/TT10 1 Tf +10.5203 0 TD +0 Tw +(COPYRIGHTFLG)Tj +/TT12 1 Tf +7.2012 0 TD +( )Tj +/TT10 1 Tf +0.81 0 TD +1.3444 Tw +(= T)Tj +/TT12 1 Tf +3.1447 0 TD +0.56 Tw +[(\). You may specify one of the names from)]TJ +/TT10 1 Tf +-21.6762 -1.2889 TD +0 Tw +(COPYRIGHTOWNERS)Tj +/TT12 1 Tf +9.0015 0 TD +(, or give one of the following responses:)Tj +-6.3348 -2.0667 TD +0.1989 Tw +[()-2060.7(Type a left-square-bracket. The system will then prompt for an arbitrary string)]TJ +0.6667 -1.2222 TD +0 Tw +(which will be used as the owner-string)Tj +-0.6667 -2 TD +0.0167 Tw +[()-2060.7(Type a right-square-bracket, which specifies that you really do not want a copyright)]TJ +0.6667 -1.2222 TD +0 Tw +(notice.)Tj +-0.6667 -2 TD +[()-2060.7(Type )]TJ +/TT10 1 Tf +5.1657 0 TD +("NONE")Tj +/TT12 1 Tf +3.6006 0 TD +( which specifies that this file should never have a copyright notice.)Tj +-11.4329 -2.9556 TD +(For example, if )Tj +/TT10 1 Tf +6.8701 0 TD +(COPYRIGHTOWNERS)Tj +/TT12 1 Tf +9.0015 0 TD +( has the value)Tj +/TT10 1 Tf +-6.5382 -1.7778 TD +(\(\(BBN "Bolt Beranek and Newman Inc."\))Tj +0 -1 TD +( \(XEROX "Xerox Corporation"\)\))Tj +ET +endstream +endobj +163 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +165 0 obj +<< +/Length 3973 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-49)Tj +/TT12 1 Tf +-42.3333 60.6156 TD +(then for a new file )Tj +/TT10 1 Tf +8.2822 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +( the following interaction will take place:)Tj +/TT10 1 Tf +-0.7492 -1.7778 TD +(Do you want to Copyright FOO? Yes)Tj +0 -1 TD +(Copyright owner: )Tj +/TT15 1 Tf +11.4019 0 TD +(\(user typed ?\))Tj +/TT10 1 Tf +-11.4019 -1 TD +(one of:)Tj +T* +(BBN - Bolt Beranek and Newman Inc.)Tj +T* +(XEROX - Xerox Corporation)Tj +T* +(NONE - no copyright ever for this file)Tj +T* +([ - new copyright owner -- type one line of text)Tj +T* +(] - no copyright notice for this file now)Tj +0 -2 TD +(Copyright owner: BBN)Tj +/TT12 1 Tf +-9.3333 -2.7333 TD +0.0967 Tw +(Then "Foo Bars Corporation" in the above copyright notice example would have been "Bolt Beranek)Tj +0 -1.2222 TD +0 Tw +(and Newman Inc.")Tj +0 -2.8889 TD +(The following variables control the operation of the copyright facility:)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(COPYRIGHTFLG)Tj +/TT6 1 Tf +10 0 0 10 166.8 388.6 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 388.6 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0478 Tw +(The value of )Tj +/TT10 1 Tf +5.8841 0 TD +0 Tw +(COPYRIGHTFLG)Tj +/TT12 1 Tf +7.2012 0 TD +0.0478 Tw +[( determines whether copyright information is maintained in)]TJ +-13.0852 -1.2889 TD +0 Tw +(files. Its value is interpreted as follows:)Tj +/TT17 1 Tf +6.8667 -2 TD +(NIL)Tj +/TT12 1 Tf +3.1333 0 TD +0.0722 Tw +(The system will preserve old copyright information, but will)Tj +0 -1.2889 TD +0.0522 Tw +[(not ask you about copyrighting new files. This is the default)]TJ +0 -1.2222 TD +0 Tw +(value of )Tj +/TT10 1 Tf +3.8169 0 TD +(COPYRIGHTFLG)Tj +/TT12 1 Tf +7.2012 0 TD +(.)Tj +/TT17 1 Tf +-12.9514 -2.0667 TD +(T)Tj +/TT12 1 Tf +1.9333 0 TD +0.1389 Tw +(When a file is made, if it has no copyright information, the)Tj +0 -1.2889 TD +0 Tw +(system will ask you to specify the copyright owner.)Tj +/TT17 1 Tf +-4.3333 -2 TD +(NEVER)Tj +/TT12 1 Tf +4.3333 0 TD +0.7367 Tw +(The system will neither prompt for new copyright)Tj +0 -1.2889 TD +0 Tw +(information nor preserve old copyright information.)Tj +/TT17 1 Tf +-5.5333 -2 TD +(DEFAULT)Tj +/TT12 1 Tf +5.5333 0 TD +0.0733 Tw +(The value of )Tj +/TT10 1 Tf +5.9607 0 TD +0 Tw +(DEFAULTCOPYRIGHTOWNER)Tj +/TT12 1 Tf +12.6021 0 TD +0.0733 Tw +[( \(below\) is used for)]TJ +-18.5628 -1.2889 TD +0.2433 Tw +(putting copyright information in files that dont have any)Tj +0 -1.2222 TD +0.2222 Tw +[(other copyright. The prompt )]TJ +/TT10 1 Tf +14.2625 0 TD +0.5344 Tw +("Copyright owner for)Tj +-14.2625 -1.2889 TD +0.0944 Tw +(file xx:")Tj +/TT12 1 Tf +5.4953 0 TD +0.0389 Tw +[( will still be printed, but the default will be filled)]TJ +-5.4953 -1.2889 TD +0 Tw +(in immediately.)Tj +/TT17 1 Tf +-12.6667 -2.4822 TD +(COPYRIGHTOWNERS)Tj +/TT6 1 Tf +10 0 0 10 183 173.86 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 173.86 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(COPYRIGHTOWNERS)Tj +/TT12 1 Tf +9.0015 0 TD +0.1378 Tw +[( is a list of entries of the form )]TJ +/TT10 1 Tf +14.3147 0 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(KEY)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3878 0 TD +(OWNERSTRING)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.1378 Tw +(, where )Tj +/TT15 1 Tf +3.7946 0 TD +0 Tw +(KEY)Tj +/TT12 1 Tf +1.8003 0 TD +0.1378 Tw +[( is)]TJ +-38.9004 -1.2889 TD +0.3944 Tw +(used as a response to )Tj +/TT10 1 Tf +11.5645 0 TD +0 Tw +(ASKUSER)Tj +/TT12 1 Tf +4.2007 0 TD +0.3944 Tw +[( and )]TJ +/TT15 1 Tf +2.9818 0 TD +0 Tw +(OWNERSTRING)Tj +/TT12 1 Tf +6.6011 0 TD +0.3944 Tw +[( is a string which is the full)]TJ +-25.348 -1.2889 TD +0 Tw +(identification of the owner. )Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(DEFAULTCOPYRIGHTOWNER)Tj +/TT6 1 Tf +10 0 0 10 215.4 111.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 111.72 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.3278 Tw +(If you do not respond in )Tj +/TT10 1 Tf +12.9633 0 TD +0 Tw +(DWIMWAIT)Tj +/TT12 1 Tf +4.8008 0 TD +0.3278 Tw +[( seconds to the copyright query, the value of)]TJ +/TT10 1 Tf +-17.764 -1.2889 TD +0 Tw +(DEFAULTCOPYRIGHTOWNER)Tj +/TT12 1 Tf +12.6021 0 TD +( is used.)Tj +ET +endstream +endobj +166 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +168 0 obj +<< +/Length 9023 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-50)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Functions Used Within Source Files)Tj +/TT12 1 Tf +9 0 0 9 126 544.54 Tm +0.0422 Tw +(The following functions are normally only used within symbolic files, to set variable values, property)Tj +0 -1.2222 TD +0 Tw +(values, etc. Most of these have special behavior depending on file manager variables.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(RPAQ)Tj +/TT19 1 Tf +2.3999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 230.1079 511.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 449.97 511.2 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.1378 Tw +(An nlambda function like )Tj +/TT10 1 Tf +12.1551 0 TD +0 Tw +(SETQ)Tj +/TT12 1 Tf +2.4004 0 TD +0.1378 Tw +[( that sets the top level binding of )]TJ +/TT15 1 Tf +15.8 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1378 Tw +[( \(unevaluated\) to)]TJ +/TT15 1 Tf +-32.1558 -1.2889 TD +0 Tw +(VALUE)Tj +/TT12 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-5.6672 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(RPAQQ)Tj +/TT19 1 Tf +2.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 235.5079 460.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 449.97 460.06 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.0944 Tw +(An nlambda function like )Tj +/TT10 1 Tf +11.9818 0 TD +0 Tw +(SETQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.0944 Tw +[( that sets the top level binding of )]TJ +/TT15 1 Tf +15.4533 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0944 Tw +[( \(unevaluated\) to)]TJ +/TT15 1 Tf +-32.2359 -1.2889 TD +0 Tw +(VALUE)Tj +/TT12 1 Tf +3.0005 0 TD +( \(unevaluated\).)Tj +/TT10 1 Tf +-5.6672 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(RPAQ?)Tj +/TT19 1 Tf +2.9999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 235.5079 408.92 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 449.97 408.92 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.0144 Tw +(Similar to )Tj +/TT10 1 Tf +4.5767 0 TD +0 Tw +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +0.0144 Tw +(, except that it does nothing if )Tj +/TT15 1 Tf +13.4468 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0144 Tw +[( already has a top level value other than)]TJ +/TT10 1 Tf +-22.2242 -1.2889 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +(. Returns )Tj +/TT15 1 Tf +4.4771 0 TD +(VALUE)Tj +/TT12 1 Tf +3.0005 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +( is reset, otherwise )Tj +/TT10 1 Tf +8.4238 0 TD +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-29.5599 -2.9556 TD +(RPAQ)Tj +/TT12 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5133 0 TD +(RPAQQ)Tj +/TT12 1 Tf +3.0005 0 TD +0.0133 Tw +(, and )Tj +/TT10 1 Tf +2.4695 0 TD +0 Tw +(RPAQ?)Tj +/TT12 1 Tf +3.0005 0 TD +0.0133 Tw +[( generate errors if )]TJ +/TT15 1 Tf +8.1075 0 TD +0 Tw +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.0133 Tw +[( is not a symbol. All are affected by the value of )]TJ +/TT10 1 Tf +21.6475 0 TD +0 Tw +(DFNFLG)Tj +/TT12 1 Tf +-41.7393 -1.2889 TD +0.1122 Tw +[(\(see Chapter 10\). If )]TJ +/TT10 1 Tf +9.3712 0 TD +0.2689 Tw +(DFNFLG = ALLPROP)Tj +/TT12 1 Tf +10.1393 0 TD +0.1122 Tw +[( \(and the value of )]TJ +/TT15 1 Tf +8.5411 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1122 Tw +[( is other than )]TJ +/TT10 1 Tf +6.4821 0 TD +0 Tw +(NOBIND)Tj +/TT12 1 Tf +3.6006 0 TD +0.1122 Tw +(\), instead of)Tj +-39.9346 -1.2889 TD +0 Tw +(setting )Tj +/TT15 1 Tf +3.2477 0 TD +(X)Tj +/TT12 1 Tf +0.6001 0 TD +0.0133 Tw +(, the corresponding value is stored on the property list of )Tj +/TT15 1 Tf +25.5446 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0133 Tw +[( under the property )]TJ +/TT10 1 Tf +9.0099 0 TD +0 Tw +(VALUE)Tj +/TT12 1 Tf +3.0005 0 TD +0.0133 Tw +[(. All)]TJ +-43.2031 -1.2889 TD +0 Tw +(are undoable.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ADDTOVAR)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +0.5997 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +0.6 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +0.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 280.0508 296.98 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 407.33 296.98 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0667 TD +(Each )Tj +/TT15 1 Tf +2.5723 0 TD +(X)Tj +0.6011 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.1856 Tw +[( that is not a member of the value of )]TJ +/TT15 1 Tf +18.0138 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1856 Tw +[( is added to it, i.e. after )]TJ +/TT10 1 Tf +11.6177 0 TD +0 Tw +(ADDTOVAR)Tj +/TT12 1 Tf +-35.2051 -1.5111 TD +0.0522 Tw +(completes, the value of )Tj +/TT15 1 Tf +10.6356 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.0522 Tw +[( will be )]TJ +/TT10 1 Tf +3.6459 0 TD +0.1267 Tw +(\(UNION \(LIST)Tj +/TT19 1 Tf +7.3278 0 TD +0 Tw +( )Tj +/TT15 1 Tf +0.3022 0 TD +(X)Tj +0.5992 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.3022 0 TD +(X)Tj +0.6 -0.2222 TD +(2)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.3022 0 TD +(X)Tj +0.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT15 1 Tf +0.3022 0 TD +(VAR)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +0.6001 0 TD +0.0522 Tw +(. )Tj +/TT10 1 Tf +0.8544 0 TD +0 Tw +(ADDTOVAR)Tj +/TT12 1 Tf +4.8008 0 TD +0.0522 Tw +[( is)]TJ +-38.9757 -1.5111 TD +0.1767 Tw +(used by )Tj +/TT10 1 Tf +4.0794 0 TD +0 Tw +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +0.1767 Tw +[( for implementing the )]TJ +/TT10 1 Tf +10.6119 0 TD +0 Tw +(ADDVARS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1767 Tw +[( command. It performs some file)]TJ +-24.2929 -1.2889 TD +0.1133 Tw +(manager related operations, i.e. "notices" that )Tj +/TT15 1 Tf +20.9344 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +0.1133 Tw +[( has been changed. Returns the atom)]TJ +/TT15 1 Tf +-22.7347 -1.2889 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +( \(not the value of )Tj +/TT15 1 Tf +7.7412 0 TD +(VAR)Tj +/TT12 1 Tf +1.8003 0 TD +(\).)Tj +/TT10 1 Tf +-14.0085 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(APPENDTOVAR)Tj +/TT19 1 Tf +6.6011 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +0.5985 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +0.6 -0.2222 TD +(2)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(X)Tj +0.5997 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 296.2509 205.04 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 407.33 205.04 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0667 TD +0.0022 Tw +(Similar to )Tj +/TT10 1 Tf +4.5523 0 TD +0 Tw +(ADDTOVAR)Tj +/TT12 1 Tf +4.8008 0 TD +0.0022 Tw +(, except that the values are added to the end tof the list, rather than at)Tj +-9.3531 -1.2889 TD +0 Tw +(the beginning.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PUTPROPS)Tj +/TT25 1 Tf +4.7999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(ATM)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.2222 TD +(N)Tj +/TT10 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 347.1009 152.5 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 407.33 152.5 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0667 TD +0.0611 Tw +(Nlambda nospread version of )Tj +/TT10 1 Tf +13.7117 0 TD +0 Tw +(PUTPROP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0611 Tw +[( \(none of the arguments are evaluated\). For )]TJ +/TT15 1 Tf +20.1442 0 TD +0 Tw +(i )Tj +/TT10 1 Tf +1.3457 0 TD +(=)Tj +-39.4024 -1.2889 TD +(1...)Tj +/TT15 1 Tf +2.4004 0 TD +(N)Tj +/TT12 1 Tf +0.6001 0 TD +0.0233 Tw +(, puts property )Tj +/TT15 1 Tf +6.9235 0 TD +0 Tw +(PROP)Tj +2.3993 -0.2222 TD +(i)Tj +/TT12 1 Tf +0.6 0.2222 TD +0.0233 Tw +(, value )Tj +/TT15 1 Tf +3.2347 0 TD +0 Tw +(VALi)Tj +/TT12 1 Tf +2.4004 0 TD +0.0233 Tw +(, on the property list of )Tj +/TT15 1 Tf +10.5155 0 TD +0 Tw +(ATM)Tj +/TT12 1 Tf +1.8003 0 TD +0.0233 Tw +[(. Performs some file)]TJ +-30.8742 -1.5111 TD +0.19 Tw +(manager related operations, i.e., "notices" that the corresponding properties have been)Tj +0 -1.2222 TD +0 Tw +(changed.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(SAVEPUT)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(ATM)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 259.3596 75.36 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 492.6299 75.36 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0811 Tw +(Same as )Tj +/TT10 1 Tf +3.9728 0 TD +0 Tw +(PUTPROP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0811 Tw +(, but marks the corresponding property value as having been changed)Tj +-8.1735 -1.2889 TD +0 Tw +(\(used by the file manager\).)Tj +ET +endstream +endobj +169 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +/TT19 27 0 R +/TT25 170 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +172 0 obj +<< +/Length 7358 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-51)Tj +/TT4 1 Tf +10 0 0 10 78 568.2 Tm +(File Maps)Tj +/TT12 1 Tf +9 0 0 9 78 544.54 Tm +0.0178 Tw +[(A file map is a data structure which contains a symbolic map of the contents of a file. Currently, this)]TJ +0 -1.2222 TD +0.2289 Tw +(consists of the begin and end byte address \(see )Tj +/TT10 1 Tf +22.9355 0 TD +0 Tw +(GETFILEPTR)Tj +/TT12 1 Tf +6.001 0 TD +0.2289 Tw +(, in Chapter 25\) for each )Tj +/TT10 1 Tf +12.2005 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +-41.137 -1.2889 TD +0.0167 Tw +(expression in the file, the begin and end address for each function definition within the )Tj +/TT10 1 Tf +38.9092 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.0167 Tw +(, and)Tj +-43.1099 -1.2889 TD +0 Tw +(the begin and end address for each compiled function.)Tj +/TT10 1 Tf +0 -2.8889 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.8511 0 TD +(PRETTYDEF)Tj +/TT12 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.8511 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.8511 0 TD +(RECOMPILE)Tj +/TT12 1 Tf +5.4009 0 TD +0.3511 Tw +(, and numerous other system functions depend)Tj +-22.3566 -1.2889 TD +0.1167 Tw +[(heavily on the file map for efficient operation. For example, the file map enables )]TJ +/TT10 1 Tf +37.5747 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1167 Tw +[( to load)]TJ +-41.7754 -1.2889 TD +0.1789 Tw +(selected function definitions simply by setting the file pointer to the corresponding address using)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(SETFILEPTR)Tj +/TT12 1 Tf +6.001 0 TD +0.2133 Tw +(, and then performing a single )Tj +/TT10 1 Tf +14.8762 0 TD +0 Tw +(READ)Tj +/TT12 1 Tf +2.4004 0 TD +0.2133 Tw +(. Similarly, the file map is heavily used by the)Tj +-23.2776 -1.2889 TD +0.0889 Tw +("remake" option of )Tj +/TT10 1 Tf +8.8218 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0889 Tw +[( \(see the Remaking a Symbolic File section\): those function definitions)]TJ +-13.6226 -1.2889 TD +0.0622 Tw +(that have been changed since the previous version are prettyprinted; the rest are simply copied from)Tj +0 -1.2222 TD +0 Tw +(the old file to the new one, resulting in a considerable speedup.)Tj +0 -2.8889 TD +0.0456 Tw +(Whenever a file is written by )Tj +/TT10 1 Tf +13.286 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0456 Tw +[(, a file map for the new file is built. Building the map in this)]TJ +-18.0868 -1.2889 TD +0.0789 Tw +(case essentially comes for free, since it requires only reading the current file pointer before and after)Tj +0 -1.2222 TD +0.1611 Tw +[(each definition is written or copied. However, building the map does require that )]TJ +/TT10 1 Tf +38.7287 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +-38.7287 -1.2889 TD +(know)Tj +/TT12 1 Tf +2.166 0 TD +0.1222 Tw +[( that it is printing a )]TJ +/TT10 1 Tf +9.4243 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +4.2007 0 TD +0.1222 Tw +[( expression. For this reason, you should never print a )]TJ +/TT10 1 Tf +25.3342 0 TD +0 Tw +(DEFINEQ)Tj +/TT12 1 Tf +-41.1251 -1.2889 TD +0.0267 Tw +(expression onto a file yourself, but should instead always use the )Tj +/TT10 1 Tf +29.3011 0 TD +0 Tw +(FNS)Tj +/TT12 1 Tf +1.8003 0 TD +0.0267 Tw +[( file manager command \(see the)]TJ +-31.1014 -1.2889 TD +0 Tw +(Functions and Macros section\).)Tj +0 -2.8889 TD +0.0011 Tw +(The file map is stored on the property list of the root name of the file, under the property )Tj +/TT10 1 Tf +39.4547 0 TD +0 Tw +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0002 Tc +0.0009 Tw +(. In)Tj +-43.6554 -1.2889 TD +0 Tc +0 Tw +(addition, )Tj +/TT10 1 Tf +4.2889 0 TD +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.0311 Tw +[( writes the file map on the file itself. For cosmetic reasons, the file map is written)]TJ +-9.0897 -1.2889 TD +0.0711 Tw +[(as the last expression in the file. However, the )]TJ +/TT8 1 Tf +21.4714 0 TD +0 Tw +(address)Tj +/TT12 1 Tf +3.0005 0 TD +0.0711 Tw +[( of the file map in the file is \(over\)written into)]TJ +-24.4719 -1.2222 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.7994 0 TD +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.1622 Tw +[( expression that appears at the beginning of the file so that the file map can be)]TJ +-8.4005 -1.2889 TD +0.0078 Tw +[(rapidly accessed without having to scan the entire file. In most cases, )]TJ +/TT10 1 Tf +31.0083 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.0078 Tw +[( and )]TJ +/TT10 1 Tf +2.2084 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0078 Tw +[( do not have)]TJ +-39.8178 -1.2889 TD +0.0044 Tw +(to build the file map at all, since a file map will usually appear in the corresponding file, unless the file)Tj +0 -1.2222 TD +0 Tw +(was written with )Tj +/TT10 1 Tf +7.7744 0 TD +(BUILDMAPFLG = NIL)Tj +/TT12 1 Tf +10.2017 0 TD +(, or was written outside of Interlisp.)Tj +-17.9761 -2.9556 TD +0.0844 Tw +(Currently, file maps for )Tj +/TT8 1 Tf +10.9999 0 TD +0 Tw +(compiled)Tj +/TT12 1 Tf +3.5737 0 TD +0.0844 Tw +[( files are not written onto the files themselves. However, )]TJ +/TT10 1 Tf +26.3249 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.0844 Tw +[( and)]TJ +/TT10 1 Tf +-43.2989 -1.2889 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0222 Tw +[( will build maps for a compiled file when it is loaded, and store it on the property )]TJ +/TT10 1 Tf +36.6686 0 TD +0 Tw +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +(.)Tj +-45.0699 -1.2889 TD +(Similary, )Tj +/TT10 1 Tf +4.2319 0 TD +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +( will obtain and use the file map for a compiled file, when available.)Tj +-8.4326 -2.9556 TD +(The use and creation of file maps is controlled by the following variables:)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(BUILDMAPFLG)Tj +/TT6 1 Tf +10 0 0 10 161.4 139.4 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 446.41 139.4 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1889 Tw +(Whenever a file is read by )Tj +/TT10 1 Tf +12.8975 0 TD +0 Tw +(LOAD)Tj +/TT12 1 Tf +2.4004 0 TD +0.1889 Tw +[( or )]TJ +/TT10 1 Tf +1.8187 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.1889 Tw +(, or written by )Tj +/TT10 1 Tf +7.2892 0 TD +0 Tw +(MAKEFILE)Tj +/TT12 1 Tf +4.8008 0 TD +0.1889 Tw +(, a file map is)Tj +-33.4073 -1.2889 TD +0 Tw +(automatically built unless )Tj +/TT10 1 Tf +11.6743 0 TD +(BUILDMAPFLG = NIL)Tj +/TT12 1 Tf +10.2017 0 TD +(. \()Tj +/TT10 1 Tf +0.833 0 TD +(BUILDMAPFLG)Tj +/TT12 1 Tf +6.6011 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(T)Tj +/TT12 1 Tf +0.6001 0 TD +(.\))Tj +-34.7944 -2.0667 TD +0.16 Tw +(While building the map will not help the first reference to a file, it will help in future)Tj +0 -1.2222 TD +0.0311 Tw +[(references. For example, if you perform )]TJ +/TT10 1 Tf +18.1636 0 TD +0.0744 Tw +(\(LOADFROM FOO\))Tj +/TT12 1 Tf +9.0759 0 TD +0.0311 Tw +[( where )]TJ +/TT10 1 Tf +3.3313 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0311 Tw +[( does not contain)]TJ +-32.371 -1.2889 TD +0.0544 Tw +(a file map, the )Tj +/TT10 1 Tf +6.7329 0 TD +0 Tw +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +0.0544 Tw +[( will be \(slightly\) slower than if )]TJ +/TT10 1 Tf +14.4368 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0544 Tw +[( did contain a file map, but)]TJ +-27.7708 -1.2889 TD +0.0611 Tw +(subsequent calls to )Tj +/TT10 1 Tf +8.7883 0 TD +0 Tw +(LOADFNS)Tj +/TT12 1 Tf +4.2007 0 TD +0.0611 Tw +[( for this version of )]TJ +/TT10 1 Tf +8.6132 0 TD +0 Tw +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +0.0611 Tw +[( will be able to use the map that was)]TJ +-23.4025 -1.2889 TD +0 Tw +(built as the result of the )Tj +/TT10 1 Tf +10.6597 0 TD +(LOADFROM)Tj +/TT12 1 Tf +4.8008 0 TD +(, since it will be stored on )Tj +/TT10 1 Tf +11.4849 0 TD +(FOO)Tj +/TT12 1 Tf +1.8003 0 TD +(s )Tj +/TT10 1 Tf +0.9517 0 TD +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +( property.)Tj +ET +endstream +endobj +173 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +176 0 obj +<< +/Length 2539 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(17-52)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 568.2 Tm +(USEMAPFLG)Tj +/TT6 1 Tf +10 0 0 10 198.6 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 494.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9321 0 TD +0.03 Tw +(USEMAPFLG = T)Tj +/TT12 1 Tf +7.8613 0 TD +0.0122 Tw +[( \(the initial setting\), the functions that use file maps will first check the)]TJ +/TT10 1 Tf +-8.7934 -1.2889 TD +0 Tw +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0178 Tw +[( property to see if a file map for this file was previously obtained or built. If not,)]TJ +-4.2007 -1.2889 TD +0.0056 Tw +(the first expression on the file is checked to see if it is a )Tj +/TT10 1 Tf +24.3996 0 TD +0 Tw +(FILECREATED)Tj +/TT12 1 Tf +6.6011 0 TD +0.0056 Tw +[( expression that also)]TJ +-31.0006 -1.2889 TD +0.0022 Tw +(contains the address of a file map. If the file map is not on the )Tj +/TT10 1 Tf +27.6869 0 TD +0 Tw +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0001 Tc +0.0021 Tw +( property or in the)Tj +-31.8876 -1.2889 TD +0 Tc +0 Tw +(file, a file map will be built \(unless )Tj +/TT10 1 Tf +15.4614 0 TD +(BUILDMAPFLG)Tj +/TT12 1 Tf +6.6011 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(= NIL)Tj +/TT12 1 Tf +3.0005 0 TD +(\).)Tj +-25.313 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.961 0 TD +0.0989 Tw +(USEMAPFLG = NIL)Tj +/TT12 1 Tf +9.1992 0 TD +0.0411 Tw +(, the )Tj +/TT10 1 Tf +2.2194 0 TD +0 Tw +(FILEMAP)Tj +/TT12 1 Tf +4.2007 0 TD +0.0411 Tw +[( property and the file will not be checked for the file)]TJ +-16.5804 -1.2889 TD +0.0156 Tw +[(map. This allows you to recover in those cases where the file and its map for some reason)]TJ +0 -1.2222 TD +0.0011 Tw +(do not agree. For example, if you use a text editor to change a symbolic file that contains a)Tj +T* +0.0533 Tw +(map \(not recommended\), inserting or deleting just one character will throw that map off.)Tj +T* +0.2056 Tw +(The functions which use file maps contain various integrity checks to enable them to)Tj +T* +0.0567 Tw +(detect that something is wrong, and to generate the error)Tj +/TT10 1 Tf +25.6648 0 TD +0.1356 Tw +[( FILEMAP DOES NOT AGREE)]TJ +-25.6648 -1.2889 TD +(WITH CONTENTS OF )Tj +/TT15 1 Tf +10.6083 0 TD +0 Tw +(FILE)Tj +/TT12 1 Tf +2.4004 0 TD +0.0567 Tw +[(. In such cases, you can set )]TJ +/TT10 1 Tf +12.6555 0 TD +0 Tw +(USEMAPFLG)Tj +/TT12 1 Tf +5.4009 0 TD +0.0567 Tw +[( to )]TJ +/TT10 1 Tf +1.4854 0 TD +0 Tw +(NIL)Tj +/TT12 1 Tf +1.8003 0 TD +0.0567 Tw +(, causing the)Tj +-34.3508 -1.2889 TD +0 Tw +(map contained in the file to be ignored, and then reexecute the operation.)Tj +ET +endstream +endobj +177 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT15 19 0 R +/TT17 23 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +11 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +178 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +179 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +180 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +181 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +182 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +183 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +184 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBIIPG+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 185 0 R +>> +endobj +185 0 obj +<< +/Filter /FlateDecode +/Length 20018 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($C"T0`I1pbAPo#̒ (+14R))4|-*PRi nxj3wߛ{o oN~{;p>[ - +Vo~_'#M@{ưXFb-_|$@P,r[[߂PUj`PJ5M.F>& ^C3]R]Gc $ʇu`W|Ѧ"J2.؟N+"@rqCTЉ^En;:_ +uKq=?{8@m Zxpr۹8cptB&~O|tkA+tP9f5$%y8a),& hp4d ˰wn"HC=3!r6e.lqD 6r1\LrTWca +? fh 7U$a8'a4 +2VrGJtg5܆4[vn`J0Th?B>~=?Q`uPoFVPnuȪb OB gB=Z0h"y(U:@? ]la)ε;̕C\-0H=_I*&S_=bd Ɂ| FFpٸ6/gb:)BIWD:xઠ.' 1K~нpMDgB9 \cAn:_&˃f!n}u2Ka*aw1G+"}xg"wwhJkęc2m&&FijOXkOl\k36l|zq/srBT7T-Q LҨay E t%`E5RY F h FWPU"Kteވ+Az3Í)Q!W.KL7-AWT0V,iNo05F`NIuˮ-b$j\~b:QѶzhhA5Oh5 Auokkuhqճ]b@?z,SݤE U2L]<7ab˟[)* SW c/m;ř-" +E?mS"cnbkݨקӐFiOBߌrZrZ7\OA7EJ~WeX+AijXFj/?ZY-zEk]`"`b+3#~׭X >HZVI +mЯd9a,_,?M˖%'2,q]Zlѓ |JxD=N }$#A1ҧY +(!4y~sR7ɏ{Sy(MCΐ<7M^1'5zmycYHNKfrFedyElFO{1}nu&?ͮUoCoݮ47wp-=7H'𥞰bT]_ʗ2.Mթc{b詑J-S×c[O\9*RbwMjKo^5Vot%3Z/X/ΰw%H>^g]6azTY5(vn+5KmB-J-eԐ jpw-k\,{'ܻ2.o7" K 823,_ZOXSYV7N՛S:ABdow߁m%KNi̽ +z)saھm.=a",ȿAVöQL]nޙsj"kϰE+vM~H@MTGr>*$輜֜mC;μpΝw9GvITP0nP`faܵ${x/&3?sώNʚs+ +_+2|q0Z2 +*:Ok 54$j e:TFת*`@[Z &@W*ШC5sgWyy~ުΨpIVSgd/W*=5bI.l,]dz6!@esmG&}  .s >20V;f(w6YQF_N=ý  ՂF^* 5v,,8!21=5dTă_2cKgA?"ʕW79 F&\w8nVgHb7_HAr4#T|G"*n2JuBsQV5m'X2bZZeḹ=[ 2fZ}_vz]6~EOAUDZ"\*$HkN3 <|^%A^crMgw=9 r$cMKx[.Pcg_QIːQ6W:dD:LzYLOc{3kp#%bkM$g.≹ !8 2ܣ!yO[yO%Z"hvym炡EȸF;լ '$cc&_-aQ#7yIcvt vcY\t5M fN&IPNZ6D8UAYVX_sy8=E~j׉|ɘ :6GYmu=;VW5-}с]+NzOfg8FA<|Y]껲7 H\`2B}'u]"h茢65r$k;W,ES۽<&qss!QI@9)ѡAP@Ry.颥,aatȨ2 +ir; \21z4*E7"HaX7E6$q0lkU<\J6d' DlSpq\;цաSnp'4 xpI!`; 0#WLxSó]@=!>_p!N,A d +yHC,YI^& WI+I 3&4#%rj6yMGӇTt6G?Ut=ӕEZO7-5NGߢn =Ct&eư l*+f3X=5WY+kgow!!;NȮANGp7')Ǽ?ƟK%7|;wA]0?OO)#̣_|_q5M,N7t L$X37):"Pf-bTzPVj#fGFQ+,[B21˄&b%z ?b«)~-͢;Qxȅ*/NC3Vb#HЈ-vKLFLD%;̞}tTlؑ]D-z=ǰ^ÎCc,m&V3zfam,A+u;ضqSKrP0"ܾ𾂖7ۢ.2G>8kd2KU"OZ~ݍ0-BZhi.D$g0-#t-we6ϩ[LiI Nᴖը$6Zג-|}i K*꺻bR%0D?lMx A#akF(Zs?|Ƕq.8$38*(9T %M9R +]A#%4q4 C mPlv=ni-MEBH-J3jxlK$x"~w>~}Gk7ȰÒoo[m]խ/Xb@)W4=e.ąD>baru&g N8j_b[LxOfY/#qod~g>t]QL-慌()9IqyKOo'K`/TgӷgkUu?ږغ`9dmƺ"J|_Ҩk8Q+ؑr{K1)7?g$lBj/.zt$vnƦ%GG-5T& "=/Px،OdsgG:7竂IЦE.WA41 .-vqFFK}U[ka^ifmvȲo47 PK9tev|q+ Y4]c4; Y2`YX gLyB%ASJ؊hݏ[Z,ZҖ%8 ̂jԍRK¼2ټט?%UJ9C':g..?/ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStWRKAİX{== x^.wwT9sߚq?W?NhN-:zTDO!WhG,h)cxz}GGVWAhSdcE{%`нdA"mψԒn^1vt,y]4|ˊ^ox6g@EV4 @3h UFF;b|thƶorz̲[Bn+/LkI/^>aa4"$Өòd)P7~39J}Jn1 pu3dePjtL]gB6E= +UеA~%˂R*XZ:j12O-}XX5칿C-:p>'[NV-K1h2=\yhJ--h4Oj> Ma`/=0x xNïpf ,yѣգ&E} qt@@A3M[`;.kZ܌?O.Mm܋g5Nq +_")"+*"cxUOH=i -(K7>_wߑWUY < |ZGZx\Hc/v1~`ۄݰޒp-婏 r q$[*_\۱r]VykVeybmؕxa8}; &.'eusI+dO-(,5|K=FK㞎2q~adYRɝ^H)JBlJ&[[HK*pxOEw|tM hRh1)!YXq]%|t^m?YriXZƪtRޮW3@>i钙An?"^n-qx"dy phE3rCWIw򵾮&>O&x 6gygs3dUŞVpp$_X4-AE$.puh^ϽGX<&Z  K!@4کT]k'=I}!fkx4qɴ;>SoWL]r` #rO8dl?|̙|/u겏v8v:cUF/9mAb^H kA"ˑئ;+4ĥbM|gMXp|+_1yFj;M`yI}!߽V&m:<`Nm m 1UPHq$L?<,g8Wz.HDHׁHB*LBF5 f" +P̪ ^`9r4@ނȰb ]WG )|_-"I\M&ȴrI7TWH y%uME浕l'mdG!$r|HΒ_2 ʨ yh*Ll:SVt5]Khn[i2=ӃO(=Fs^tH'=-eKy#7꤈$5#GkbCRtR:,4BKX*a*C$ē)~M\ +YqVm7Gf}C_EҾ\{UMl;UO8;2_xlF>ķ:; 濔5ޕ<Yw tkn ݩ_n__6f40DawjcOJ! 3RۙS38vΘ4aVu Hlg׌LxEzcq(V4~g +m#|8{mv/6!F34QKPIH6$BMT𯵌Q +H 5bLK`нÄ@GZi9X N/o{g:}~oGC -8Yhs&nUD\D1&.I7Vn(ɻ("N[|wa< +ߗ[G*`6dҎ׿_RY}c/xf+&=7 ?ۦ/,){ԍ9,xC *;Jd;ki.̵# [r9mO}vЙu⎛xx}5սzZQ<MUHhMw?=4 Nݺ}{z[ӥh%o\r$k"s}N ϊx7_Dawqoq6ni3?ʃ<}zpWoyܴ,n2VA[k/]&C; wEvzŏRH}TM#i IT_MY'4Lb\)i&(CĮBͽ#`9Ibߞk{vWf56#G|2NF$Z9V>'(ʁ<*bPM̀RSefC5 .S?Ű +XzaX᧰A8/:*SpFM>$!\E5&*"7An%d6&Bu|Xd)4fBGIs *ߓ$ԣ#3yIΓwEh\zBz5ԤΥu.].JD=DGo8=ONA/ v5Z@5@u;fl>gF0{E6f3T_m:Pul7{u^`/b}\@o@sjTQG1+7;x&DZd%B0P<^T; +Yy.?=^}-Qi#%Gf2磙o^U;a&Ǥv$C>5Td"%&/>C  Calœ"KtZ8f{1LOaP `%KeW5#X|ty,d냤m\S7W$=Z{ 2 ĭ9. ;SJ%Ctˈj6, u,G<qk7ӊB<0= kE6Nk`MM>gQ~;FF>{,^tnKFT sskW gka\[X2,-Dr@=zZe`A }zcr/Btnu逸JEXY0pɺ̕z^a,$Τ"vAW!>$eg1eTq -xA¹#TZ(޵Pw:5.->Z$(^Êr%-HAy@OL +=4A^#n‘Bt4؋B$5,Bu~2*EFxъ-xVrVT8,& LMVH9#6YK΅(vfXMZ6Eh]Ehu2p0x6e;V k!U%i+8 b{)C!@z&'VТty,eET_PZnmrrRsKD(Nk5G_XK8V73mH\O3lmlڤǟ;: EyL\|y}.f-9^R֝X 7Ur]@g= @eúsX&&{ux 2IddQ%-ja* q3P3̳ VAN461wV.!M)^ɵ4֚K\;s-*"Zx]Z5al5QnxV oYHbȉL=ȅ{̚_c}Q栅ᦣІ1K Gh+r#ճG4(F1eKC^cxd>PRezH ynSN/CbXAhln$Ž} U~dޣlءhwa`fysR!24oqFs>l&Eji4-_e8low iظ#ZpuІvGmj[ ~C}}{"-,v\Suci\\ZwFE]6QC,m~.h;+&-V;͉-Oni*}Q: | cZ1^oB'H0(&$ Y&/ɫdKn)2+QN(_V\PkU+e_W T (0HFmYp1X$'Z$PXiTL11x ]>V14k#+YT93޹ܙvӫqf`Y"KaX\~沅f&viƇ1|:o.~*-K=%MJHä1R4EIM҇t]YN,!O_EzU#)_o*LP)?Rr,eXY|vrX9T*+R.)*SUըުxuf\Bݮ;<X 33=JT*Z*  +jEE + "=H8L`FI"U0G#HK BQĨʣ(Fx +}G辱5  +v&#Q"|E @eDpHs) P};θhz0r3<"f=bHz[zR3K$ Ї`pq +CN(!W#ZBP uD P'qB7@ۛ8[!mPWϵA“@ɶlrџۗ(ث;?}^?tJк U+>vTl\iU+ˮުY_hX>* }GU=]k3J.ۚ;2ŲǢS1:j6J+ )5ոQ~箵=V2yy{{w?Pm\꺪zNeY )\ܲw&$WSmu~[!z-q3̫8".OD{oYߐW}D Zs~ubf4ln6(tDܑ/=rc,{FO(Uɕ*n1MX}Q,խ[h\ݾ͇UIGoZ6>c9imTuf%}v4c/^u97uDVIudj3_`/K)Ƈ/|R +L"=uAlewj"."Fa!z7+bmU*q)(%9R,z=HLg5,^B1W +l,qq[5&}qNm˒jԌ/B'\>%>pAʳ֑'J=6؎NQcOb|.? T̰EV3# łP6;\W溽pm7Lz89gsޭ\CO~.PP{@hfX?slvWŢ9mX˅VwGycc1`J<^o@w-(%ǡ< X!H$Xp.1F198R+U=RSgnt|Vve]~(kmO9n-P)g@1&މ\K3z:SȣhA‡S<> #֗8IVdPޅwnlW]XOm;>(82K&i{0,ImzsDLI&˰ +> ><"(0. "Âˠ22 ]X O'Jv/Cs.W]Sʷ>$EoRrV}/Gd2 pS*c? +_=GDߏ(9݋+~HG1U)=#$7 + }L.A-DGFdnC^~ߠȗDޡJƵbC}:I9QQ_w/z̿V:߽$~HC#zP.SM"_kĿ[{s vܴ؏I~KmJ\D~>_ۇר]=BlE _+{At!!/qk+O o>/K_ыq1- ~rY/=(p*P?|~;7H,G?\\/ |Gܗ?R$qy{ 9v>!=;'o'W%Ճddz`kp!g &NY6Dnm5lQ/VXKeTFȌ . MHӁkI FvuylpvH8 Z8-fT4=d3'IK>UݥjkљD9X=n L% qؐ9KE1,5z q4`b/([Kjy.X&ueSJ0xҘZ353 +nIBPj##ޕ4[Z^U?Ds%SycӉ3_AA$X*[ 3! SgԒ.R[>j=9Iu,mk&1"9>3밳az4l4$:3(c NCqHծ?;cY ۆhF̸P;Uu! {aβ3B7m,t(摇*0Yu=޴(YI.ݘZx2^~$CDہ©u'C[T ȄU[ Ub%xֱhB|u0KѰp`.F̷mE5͝Q5v7,P4yO%Qö'հilfIkL5,k']CVƤK>R%+6I AzHBRtw$ZU^3bBl ƺ.v Z$\Y0f( ;==֪n(4aoU՝;|o]۟?^;nz%&XIe8nnkU2}T-*E` +ѭr۳ Mjޝ{@m饰[ _mޣpP:9.dU΍GUM=6NP} :v{(IE &wDÚ,2 A#5aYG+"RJ.lOYps5s|zoxA™+t5/PYyH` S i0OgUrkL%4>42Q8 !?$]FOi*鸢h(ICt]ӛQ:%''z3M{=MxJC5;9%ǞtnE"ɒy,$Hݠ | v?}x~;OΛou=-rB;2x ~ lσ;4{;G9%t_v +iȧ&5061C>VXkx\5=f_hd*rbK5#˖*Ow,23uaOi)ɖnj;yO( z(Xh?}sB'r}Ef>XN)mF0?]b{{4 +9ўȴL6{i3FpZX_us-kx'˴e`]Ě2 +Vrp},!˔ϞG|R'Ɩ> +endobj +187 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +188 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +189 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262243 +/FontBBox [-56 -250 868 801] +/FontName /Courier-BoldOblique +/ItalicAngle -15 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +190 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 96 +/FontBBox [-170 -225 1116 931] +/FontName /Helvetica-Oblique +/ItalicAngle -15 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +191 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262242 +/FontBBox [-170 -271 1073 926] +/FontName /Palatino-BoldItalic +/ItalicAngle -15 +/StemV 133 +/XHeight 469 +/StemH 122 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 178 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 0 0 0 0 556 0 0 333 0 0 0 0 0 +0 722 0 722 722 667 611 778 0 278 0 0 611 833 722 0 +667 0 722 667 611 722 667 944 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 179 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 180 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 500 0 0 0 0 0 333 333 0 0 250 333 250 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +0 0 0 0 0 611 556 0 0 333 0 0 556 944 778 0 +0 0 0 0 611 778 0 944 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 722 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 181 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 600 600 0 0 600 0 600 600 600 0 600 600 600 0 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 182 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 149 +/Widths [250 0 371 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 183 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBIIPG+Symbol +/Encoding /Identity-H +/DescendantFonts [ 192 0 R ] +/ToUnicode 193 0 R +>> +endobj +192 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBIIPG+Symbol +/FontDescriptor 184 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +19 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 600 600 0 0 600 0 600 600 +0 600 600 600 600 0 0 0 0 0 0 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 600 0 0 600 600 600 0 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 600 600 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 186 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 93 +/Widths [600 0 0 0 0 0 0 0 600 0 600 0 0 0 600 0 +0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 187 0 R +>> +endobj +27 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 46 +/Widths [250 0 0 0 0 0 0 0 333 0 0 0 0 0 250 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 188 0 R +>> +endobj +37 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 68 +/LastChar 82 +/Widths [600 0 0 0 0 600 0 0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-BoldOblique +/FontDescriptor 189 0 R +>> +endobj +129 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 190 0 R +>> +endobj +170 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [250 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-BoldItalic +/FontDescriptor 191 0 R +>> +endobj +193 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPn0 {!R - Uv%F*Nd7g?gssiEMzGq3(:nfd"qlPUB~y+ѐSvG +,B_ux#3n 8m5 R'U[o5},^T-g^azj$[pZ+vj +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +49 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 51 0 R +/Contents 50 0 R +>> +endobj +52 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 54 0 R +/Contents 53 0 R +>> +endobj +55 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 57 0 R +/Contents 56 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 60 0 R +/Contents 59 0 R +>> +endobj +61 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 63 0 R +/Contents 62 0 R +>> +endobj +64 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 66 0 R +/Contents 65 0 R +>> +endobj +67 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 69 0 R +/Contents 68 0 R +>> +endobj +70 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 72 0 R +/Contents 71 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 75 0 R +/Contents 74 0 R +>> +endobj +76 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 78 0 R +/Contents 77 0 R +>> +endobj +80 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 82 0 R +/Contents 81 0 R +>> +endobj +83 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 85 0 R +/Contents 84 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 88 0 R +/Contents 87 0 R +>> +endobj +89 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 91 0 R +/Contents 90 0 R +>> +endobj +92 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 94 0 R +/Contents 93 0 R +>> +endobj +95 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 97 0 R +/Contents 96 0 R +>> +endobj +98 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 100 0 R +/Contents 99 0 R +>> +endobj +101 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 103 0 R +/Contents 102 0 R +>> +endobj +104 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 106 0 R +/Contents 105 0 R +>> +endobj +107 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 109 0 R +/Contents 108 0 R +>> +endobj +111 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 113 0 R +/Contents 112 0 R +>> +endobj +114 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 116 0 R +/Contents 115 0 R +>> +endobj +117 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 119 0 R +/Contents 118 0 R +>> +endobj +120 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 122 0 R +/Contents 121 0 R +>> +endobj +123 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 125 0 R +/Contents 124 0 R +>> +endobj +126 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 128 0 R +/Contents 127 0 R +>> +endobj +130 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 132 0 R +/Contents 131 0 R +>> +endobj +133 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 135 0 R +/Contents 134 0 R +>> +endobj +136 0 obj +<< +/Type /Page +/Parent 110 0 R +/Resources 138 0 R +/Contents 137 0 R +>> +endobj +139 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 141 0 R +/Contents 140 0 R +>> +endobj +143 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 145 0 R +/Contents 144 0 R +>> +endobj +146 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 148 0 R +/Contents 147 0 R +>> +endobj +149 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 151 0 R +/Contents 150 0 R +>> +endobj +152 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 154 0 R +/Contents 153 0 R +>> +endobj +155 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 157 0 R +/Contents 156 0 R +>> +endobj +158 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 160 0 R +/Contents 159 0 R +>> +endobj +161 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 163 0 R +/Contents 162 0 R +>> +endobj +164 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 166 0 R +/Contents 165 0 R +>> +endobj +167 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 169 0 R +/Contents 168 0 R +>> +endobj +171 0 obj +<< +/Type /Page +/Parent 174 0 R +/Resources 173 0 R +/Contents 172 0 R +>> +endobj +175 0 obj +<< +/Type /Page +/Parent 174 0 R +/Resources 177 0 R +/Contents 176 0 R +>> +endobj +194 0 obj +<< +/S /D +>> +endobj +195 0 obj +<< +/Nums [0 194 0 R ] +>> +endobj +12 0 obj +<< +/Type /Pages +/Kids [1 0 R 13 0 R 16 0 R 20 0 R 24 0 R 28 0 R 31 0 R 34 0 R 38 0 R 41 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [44 0 R 49 0 R 52 0 R 55 0 R 58 0 R 61 0 R 64 0 R 67 0 R 70 0 R 73 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +79 0 obj +<< +/Type /Pages +/Kids [76 0 R 80 0 R 83 0 R 86 0 R 89 0 R 92 0 R 95 0 R 98 0 R 101 0 R 104 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +110 0 obj +<< +/Type /Pages +/Kids [107 0 R 111 0 R 114 0 R 117 0 R 120 0 R 123 0 R 126 0 R 130 0 R 133 0 R 136 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +142 0 obj +<< +/Type /Pages +/Kids [139 0 R 143 0 R 146 0 R 149 0 R 152 0 R 155 0 R 158 0 R 161 0 R 164 0 R 167 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +174 0 obj +<< +/Type /Pages +/Kids [171 0 R 175 0 R] +/Count 2 +/Parent 47 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [12 0 R 48 0 R 79 0 R 110 0 R 142 0 R 174 0 R ] +/Count 52 +/MediaBox [0 0 612 792] +>> +endobj +196 0 obj +<< +/CreationDate (D:20210202102657-06'00') +/ModDate (D:20210202102657-06'00') +/Producer (Apple pstopdf) +>> +endobj +197 0 obj +<< +/Type /Catalog +/Pages 47 0 R +/PageLabels 195 0 R +>> +endobj +xref +0 198 +0000000000 65535 f +0000406953 00000 n +0000000016 00000 n +0000005157 00000 n +0000402151 00000 n +0000402363 00000 n +0000402806 00000 n +0000403113 00000 n +0000403547 00000 n +0000404107 00000 n +0000404661 00000 n +0000379269 00000 n +0000411484 00000 n +0000407034 00000 n +0000005323 00000 n +0000010451 00000 n +0000407118 00000 n +0000010596 00000 n +0000016231 00000 n +0000405011 00000 n +0000407202 00000 n +0000016376 00000 n +0000021170 00000 n +0000405536 00000 n +0000407286 00000 n +0000021339 00000 n +0000029392 00000 n +0000405895 00000 n +0000407370 00000 n +0000029574 00000 n +0000036680 00000 n +0000407454 00000 n +0000036838 00000 n +0000042544 00000 n +0000407538 00000 n +0000042728 00000 n +0000048888 00000 n +0000406098 00000 n +0000407622 00000 n +0000049083 00000 n +0000054621 00000 n +0000407706 00000 n +0000054768 00000 n +0000062912 00000 n +0000407790 00000 n +0000063105 00000 n +0000070484 00000 n +0000412281 00000 n +0000411621 00000 n +0000407874 00000 n +0000070666 00000 n +0000078316 00000 n +0000407958 00000 n +0000078498 00000 n +0000084197 00000 n +0000408042 00000 n +0000084366 00000 n +0000092956 00000 n +0000408126 00000 n +0000093136 00000 n +0000101191 00000 n +0000408210 00000 n +0000101347 00000 n +0000108041 00000 n +0000408294 00000 n +0000108234 00000 n +0000116987 00000 n +0000408378 00000 n +0000117169 00000 n +0000123726 00000 n +0000408462 00000 n +0000123906 00000 n +0000130927 00000 n +0000408546 00000 n +0000131083 00000 n +0000135719 00000 n +0000408630 00000 n +0000135899 00000 n +0000141480 00000 n +0000411759 00000 n +0000408714 00000 n +0000141651 00000 n +0000146225 00000 n +0000408798 00000 n +0000146396 00000 n +0000152262 00000 n +0000408882 00000 n +0000152420 00000 n +0000160063 00000 n +0000408966 00000 n +0000160232 00000 n +0000170233 00000 n +0000409050 00000 n +0000170415 00000 n +0000179949 00000 n +0000409134 00000 n +0000180131 00000 n +0000190030 00000 n +0000409218 00000 n +0000190225 00000 n +0000197285 00000 n +0000409303 00000 n +0000197455 00000 n +0000205736 00000 n +0000409390 00000 n +0000205919 00000 n +0000212428 00000 n +0000409477 00000 n +0000212622 00000 n +0000220758 00000 n +0000411899 00000 n +0000409565 00000 n +0000220893 00000 n +0000228199 00000 n +0000409653 00000 n +0000228393 00000 n +0000237393 00000 n +0000409741 00000 n +0000237587 00000 n +0000246739 00000 n +0000409829 00000 n +0000246933 00000 n +0000255591 00000 n +0000409917 00000 n +0000255785 00000 n +0000263491 00000 n +0000410005 00000 n +0000263661 00000 n +0000270651 00000 n +0000406307 00000 n +0000410093 00000 n +0000270846 00000 n +0000275820 00000 n +0000410181 00000 n +0000275977 00000 n +0000281721 00000 n +0000410269 00000 n +0000281915 00000 n +0000290033 00000 n +0000410357 00000 n +0000290228 00000 n +0000295226 00000 n +0000412048 00000 n +0000410445 00000 n +0000295409 00000 n +0000306456 00000 n +0000410533 00000 n +0000306639 00000 n +0000316525 00000 n +0000410621 00000 n +0000316708 00000 n +0000325424 00000 n +0000410709 00000 n +0000325618 00000 n +0000334696 00000 n +0000410797 00000 n +0000334890 00000 n +0000342651 00000 n +0000410885 00000 n +0000342845 00000 n +0000350413 00000 n +0000410973 00000 n +0000350596 00000 n +0000355259 00000 n +0000411061 00000 n +0000355453 00000 n +0000359480 00000 n +0000411149 00000 n +0000359652 00000 n +0000368729 00000 n +0000406483 00000 n +0000411237 00000 n +0000368937 00000 n +0000376349 00000 n +0000412197 00000 n +0000411325 00000 n +0000376517 00000 n +0000379110 00000 n +0000379410 00000 n +0000379608 00000 n +0000379815 00000 n +0000380011 00000 n +0000380215 00000 n +0000380407 00000 n +0000380608 00000 n +0000380800 00000 n +0000400909 00000 n +0000401111 00000 n +0000401314 00000 n +0000401520 00000 n +0000401731 00000 n +0000401937 00000 n +0000404806 00000 n +0000406661 00000 n +0000411413 00000 n +0000411442 00000 n +0000412404 00000 n +0000412528 00000 n +trailer +<< +/Size 198 +/Root 197 0 R +/Info 196 0 R +/ID [<1f86b68c6c72d093dab97e5d782cd12c><1f86b68c6c72d093dab97e5d782cd12c>] +>> +startxref +412600 +%%EOF diff --git a/docs/medley-irm/18-COMPILER.TEDIT b/docs/medley-irm/18-COMPILER.TEDIT new file mode 100644 index 00000000..5acaf3bb --- /dev/null +++ b/docs/medley-irm/18-COMPILER.TEDIT @@ -0,0 +1,116 @@ +INTERLISP-D REFERENCE MANUAL COMPILER "18"18. COMPILER 2 The compiler is contained in the standard Medley system. It may be used to compile functions defined in Medley, or to compile definitions stored in a file. The resulting compiled code may be stored as it is compiled, so as to be available for immediate use, or it may be written onto a file for subsequent loading. The most common way to use the compiler is to use one of the file package functions, such as MAKEFILE (Chapter 17), which automatically updates source files, and produces compiled versions. However, it is also possible to compile individual functions defined in Medley, by directly calling the compiler using functions such as COMPILE. No matter how the compiler is called, the function COMPSET is called which asks you certain questions concerning the compilation. (COMPSET sets the free variables LAPFLG, STRF, SVFLG, LCFIL and LSTFIL which determine various modes of operation.) Those that can be answered "yes" or "no" can be answered with YES, Y, or T for "yes"; and NO, N, or NIL for "no". The questions are: LISTING? This asks whether to generate a listing of the compiled code. The LAP and machine code are usually not of interest but can be helpful in debugging macros. Possible answers are: 1 Prints output of pass 1, the LAP macro code 2 Prints output of pass 2, the machine code YES Prints output of both passes NO Prints no listings The variable LAPFLG is set to the answer. FILE: This question (which only appears if the answer to LISTING? is affirmative) ask where the compiled code listing(s) should be written. Answering T will print the listings at the terminal. The variable LSTFIL is set to the answer. REDEFINE? This question asks whether the functions compiled should be redefined to their compiled definitions. If this is answered YES, the compiled code is stored and the function definition changed, otherwise the function definition remains unchanged. The compiler does not respect the value of DFNFLG (Chapter 10) when it redefines functions to their compiled definitions. Therefore, if you set DFNFLG to PROP to completely avoid inadvertantly redefining something in your running system, you must not answer YES to this question. The variable STRF is set to T (if this is answered YES) or NIL. SAVE EXPRS? This question asks whether the original defining EXPRs of functions should be saved. If answered YES, then before redefining a function to its compiled definition, the EXPR definition is saved on the property list of the function name. Otherwise they are discarded. It is very useful to save the EXPR definitions, just in case the compiled function needs to be changed. The editing functions will retrieve this saved definition if it exists, rather than reading from a source file. The variable SVFLG is set to T (if this is answered YES) or NIL. OUTPUT FILE? This question asks whether (and where) the compiled definitions should be written into a file for later loading. If you answer with the name of a file, that file will be used. If you answer Y or YES, you will be asked the name of the file. If the file named is already open, it will continue to be used. If you answer T or TTY:, the output will be typed on the teletype (not particularly useful). If you answer N, NO, or NIL, output will not be done. The variable LCFIL is set to the name of the file. To make answering these questions easier, there are four other possible answers to the LISTING? question, which specify common compiling modes: S Same as last setting. Uses the same answers to compiler questions as given for the last compilation. F Compile to File, without redefining functions. ST STore new definitions, saving EXPR definitions. STF STore new definitions; Forget EXPR definitions. Implicit in these answers are the answers to the questions on disposition of compiled code and EXPR definitions, so the questions REDEFINE? and SAVE EXPRS? would not be asked if these answers were given. OUTPUT FILE? would still be asked, however. For example: COMPILE((FACT FACT1 FACT2)) LISTING? ST OUTPUT FILE? FACT.DCOM (FACT COMPILING) . . (FACT REDEFINED) . . (FACT2 REDEFINED) (FACT FACT1 FACT2) This process caused the functions FACT, FACT1, and FACT2 to be compiled, redefined, and the compiled definitions also written on the file FACT.DCOM for subsequent loading. Compiler(COMPILER NIL Compiler NIL ("18") 2 SUBNAME PRINTOUT SUBTEXT printout) Printout 1 In Medley, for each function FN compiled, whether by TCOMPL, RECOMPILE, or COMPILE, the compiler prints: (FN (ARG1 ... ARGN) (uses: VAR1 ... VARN) (calls: FN1 ... FNN)) The message is printed at the beginning of the second pass of the compilation of FN. (ARG1 ... ARGN) is the list of arguments to FN; following uses: are the free variables referenced or set in FN (not including global variables); following calls: are the undefined functions called within FN. If the compilation of FN causes the generation of one or more auxilary functions, a compiler message will be printed for these functions before the message for FN, e.g., (FOOA0027 (X) (uses: XX)) (FOO (A B)) When compiling a block, the compiler first prints (BLKNAME BLKFN1 BLKFN2 ...). Then the normal message is printed for the entire block. The names of the arguments to the block are generated by suffixing # and a number to the block name, e.g., (FOOBLOCK (FOOBLOCK#0 FOOBLOCK#1) FREE-VARIABLES). Then a message is printed for each entry to the block. In addition to the above output, both RECOMPILE and BRECOMPILE print the name of each function that is being copied from the old compiled file to the new compiled file. The normal compiler message is printed for each function that is actually compiled. The compiler prints out error messages when it encounters problems compiling a function. For example: ----- In BAZ: ***** (BAZ - illegal RETURN) ----- The above error message indicates that an illegal RETURN compiler error occurred while trying to compile the function BAZ. Some compiler errors cause the compilation to terminate, producing nothing; however, there are other compiler errors which do not stop compilation. The compiler error messages are described in the last section of this chapter. Compiler printout and error messages go to the file COUTFILE, initially T. COUTFILE can also be set to the name of a file opened for output, in which case all compiler printout will go to COUTFILE, i.e. the compiler will compile "silently." However, any error messages will be printed to both COUTFILE as well as T. Global(COMPILER NIL Compiler NIL ("18") 3 SUBNAME GLOBAL% VARIABLES SUBTEXT global% variables) Variables(VARIABLES NIL Variables NIL ("18") 3 SUBNAME GLOBAL SUBTEXT global) 1 Variables that appear on the list GLOBALVARS, or have the property GLOBALVAR with value T, or are declared with the GLOBALVARS file package command, are called global variables. Such variables are always accessed through their top level value when they are used freely in a compiled function. In other words, a reference to the value of a global variable is equivalent to calling GETTOPVAL on the variable, regardless of whether or not it is bound in the current access chain. Similarly, (SETQ VARIABLE VALUE) will compile as (SETTOPVAL (QUOTE VARIABLE) VALUE). All system parameters, unless otherwise specified, are declared as global variables. Thus, rebinding these variables in a deep bound system like Medley will not affect the behavior of the system: instead, the variables must be reset to their new values, and if they are to be restored to their original values, reset again. For example, you might write (SETQ GLOBALVARIABLE NEWVALUE) FORM (SETQ GLOBALVARIABLE OLDVALUE) In this case, if an error occurred during the evaluation of FORM, or a Control-D was typed, the global variable would not be restored to its original value. The function RESETVAR provides a convenient way of resetting global variables in such a way that their values are restored even if an error occurred or Control-D is typed. Note: The variables that a given function accesses as global variables can be determined by using the function CALLS. Local Variables(VARIABLES NIL Variables NIL ("18") 4 SUBNAME LOCAL SUBTEXT local)(COMPILER NIL Compiler NIL ("18") 4 SUBNAME LOCAL% VARIABLES SUBTEXT local% variables) and Special Variables(VARIABLES NIL Variables NIL ("18") 4 SUBNAME SPECIAL SUBTEXT special)(COMPILER NIL Compiler NIL ("18") 4 SUBNAME SPECIAL% VARIABLES SUBTEXT special% variables) 1 In normal compiled and interpreted code, all variable bindings are accessible by lower level functions because the variable's name is associated with its value. We call such variables special variables, or specvars. As mentioned earlier, the block compiler normally does not associate names with variable values. Such unnamed variables are not accessible from outside the function which binds them and are therefore local to that function. We call such unnamed variables local variables, or localvars. The time economies of local variables can be achieved without block compiling by use of declarations. Using local variables will increase the speed of compiled code; the price is the work of writing the necessary specvar declarations for those variables which need to be accessed from outside the block. LOCALVARS and SPECVARS are variables that affect compilation. During regular compilation, SPECVARS is normally T, and LOCALVARS is NIL or a list. This configuration causes all variables bound in the functions being compiled to be treated as special except those that appear on LOCALVARS. During block compilation, LOCALVARS is normally T and SPECVARS is NIL or a list. All variables are then treated as local except those that appear on SPECVARS. Declarations to set LOCALVARS and SPECVARS to other values, and therefore affect how variables are treated, may be used at several levels in the compilation process with varying scope. 1. The declarations may be included in the filecoms of a file, by using the LOCALVARS and SPECVARS file package commands. The scope of the declaration is then the entire file: ... (LOCALVARS . T) (SPECVARS X Y) ... 2. The declarations may be included in block declarations; the scope is then the block, e.g., (BLOCKS ((FOOBLOCK FOO FIE (SPECVARS . T) (LOCALVARS X))) 3. The declarations may also appear in individual functions, or in PROG's or LAMBDA's within a function, using the DECLARE function. In this case, the scope of the declaration is the function or the PROG or LAMBDA in which it appears. LOCALVARS and SPECVARS declarations must appear immediately after the variable list in the function, PROG, or LAMBDA, but intervening comments are permitted. For example: (DEFINEQ ((FOO (LAMBDA (X Y) (DECLARE (LOCALVARS Y)) (PROG (X Y Z) (DECLARE (LOCALVARS X)) ... ] If the above function is compiled (non-block), the outer X will be special, the X bound in the PROG will be local, and both bindings of Y will be local. Declarations for LOCALVARS and SPECVARS can be used in two ways: either to cause variables to be treated the same whether the function(s) are block compiled or compiled normally, or to affect one compilation mode while not affecting the default in the other mode. For example: (LAMBDA (X Y) (DECLARE (SPECVARS . T)) (PROG (Z) ... ] will cause X, Y, and Z to be specvars for both block and normal compilation while (LAMBDA (X Y) (DECLARE (SPECVARS X)) ... ] will make X a specvar when block compiling, but when regular compiling the declaration will have no effect, because the default value of specvars would be T, and therefore both X and Y will be specvars by default. Although LOCALVARS and SPECVARS declarations have the same form as other components of block declarations such as (LINKFNS . T), their operation is somewhat different because the two variables are not independent. (SPECVARS . T) will cause SPECVARS to be set to T, and LOCALVARS to be set to NIL. (SPECVARS V1 V2 ...) will have no effect if the value of SPECVARS is T, but if it is a list (or NIL), SPECVARS will be set to the union of its prior value and (V1 V2 ...). The operation of LOCALVARS is analogous. Thus, to affect both modes of compilation one of the two (LOCALVARS or SPECVARS) must be declared T before specifying a list for the other. Note: The variables that a given function binds as local variables or accesses as special variables can be determined by using the function CALLS. Note: LOCALVARS and SPECVARS declarations affect the compilation of local variables within a function, but the arguments to functions are always accessible as specvars. This can be changed by redefining the following function: (DASSEM.SAVELOCALVARS(DASSEM.SAVELOCALVARS (Function) NIL NIL ("18") 5) FN) [Function] This function is called by the compiler to determine whether argument information for FN should be written on the compiled file for FN. If it returns NIL, the argument information is not saved, and the function is stored with arguments U, V, W, etc instead of the originals. Initially, DASSEM.SAVELOCALVARS is defined to return T. (MOVD 'NILL 'DASSEM.SAVELOCALVARS) causes the compiler to retain no local variable or argument names. Alternatively, DASSEM.SAVELOCALVARS could be redefined as a more complex predicate, to allow finer discrimination. Constants(COMPILER NIL Compiler NIL ("18") 5 SUBNAME CONSTANTS SUBTEXT constants) 1 Interlisp allows the expression of constructions which are intended to be description of their constant values. The following functions are used to define constant values. The function SELECTC provides a mechanism for comparing a value to a number of constants. (CONSTANT(CONSTANT (Function) NIL NIL ("18") 5) X) [Function] This function enables you to define that the expression X should be treated as a "constant" value. When CONSTANT is interpreted, X is evaluted each time it is encountered. If the CONSTANT form is compiled, however, the expression will be evaluated only once. If the value of X has a readable print name, then it will be evaluated at compile-time, and the value will be saved as a literal in the compiled function's definition, as if (QUOTE VALUE-OF-EXPRESSION) had appeared instead of (CONSTANT EXPRESSION). If the value of X does not have a readable print name, then the expression X itself will be saved with the function, and it will be evaluated when the function is first loaded. The value will then be stored in the function's literals, and will be retrieved on future references. If a program needed a list of 30 NILs, you could specify (CONSTANT (to 30 collect NIL)) instead of (QUOTE (NIL NIL ...)). The former is more concise and displays the important parameter much more directly than the latter. CONSTANT can also be used to denote values that cannot be quoted directly, such as (CONSTANT (PACK NIL)), (CONSTANT (ARRAY 10)). It is also useful to parameterize quantities that are constant at run time but may differ at compile time, e.g., (CONSTANT BITSPERWORD) in a program is exactly equivalent to 36, if the variable BITSPERWORD is bound to 36 when the CONSTANT expression is evaluated at compile time. Whereas the function CONSTANT attempts to evaluate the expression as soon as possible (compile-time, load-time, or first-run-time), other options are available, using the folowing two function: (LOADTIMECONSTANT(LOADTIMECONSTANT (Function) NIL NIL ("18") 6) X) [Function] Similar to CONSTANT, except that the evaluation of X is deferred until the compiled code for the containing function is loaded in. For example, (LOADTIMECONSTANT (DATE)) will return the date the code was loaded. If LOADTIMECONSTANT is interpreted, it merely returns the value of X. (DEFERREDCONSTANT(DEFERREDCONSTANT (Function) NIL NIL ("18") 6) X) [Function] Similar to CONSTANT, except that the evaluation of X is always deferred until the compiled function is first run. This is useful when the storage for the constant is excessive so that it shouldn't be allocated until (unless) the function is actually invoked. If DEFERREDCONSTANT is interpreted, it merely returns the value of X. (CONSTANTS(CONSTANTS (Function) NIL NIL ("18") 6) VAR1 VAR2 ... VARN) [NLambda NoSpread Function] Defines VAR1, ... VARN (unevaluated) to be compile-time constants. Whenever the compiler encounters a (free) reference to one of these constants, it will compile the form (CONSTANT VARi) instead. If VARi is a list of the form (VAR FORM), a free reference to the variable will compile as (CONSTANT FORM). The compiler prints a warning if user code attempts to bind a variable previously declared as a constant. Constants can be saved using the CONSTANTS file package command. Compiling(COMPILING NIL Compiling NIL ("18") 6 SUBNAME FUNCTION% CALLS SUBTEXT function% calls) Function Calls 1 When compiling the call to a function, the compiler must know the type of the function, to determine how the arguments should be prepared (evaluated/unevaluated, spread/nospread). There are three seperate cases: lambda, nlambda spread, and nlambda nospread functions. To determine which of these three cases is appropriate, the compiler will first look for a definition among the functions in the file that is being compiled. The function can be defined anywhere in any of the files given as arguments to BCOMPL, TCOMPL, BRECOMPILE or RECOMPILE. If the function is not contained in the file, the compiler will look for other information in the variables NLAMA, NLAML, and LAMS, which can be set by you: NLAMA (NLAMA% (Variable) NIL NIL ("18") 7) [Variable] (For NLAMbda Atoms) A list of functions to be treated as nlambda nospread functions by the compiler. NLAML(NLAML (Variable) NIL NIL ("18") 7) [Variable] (For NLAMbda List) A list of functions to be treated as nlambda spread functions by the compiler. LAMS(LAMS (Variable) NIL NIL ("18") 7) [Variable] A list of functions to be treated as lambda functions by the compiler. Note that including functions on LAMS is only necessary to override in-core nlambda definitions, since in the absence of other information, the compiler assumes the function is a lambda. If the function is not contained in a file, or on the lists NLAMA, NLAML, or LAMS, the compiler will look for a current definition in the Interlisp system, and use its type. If there is no current definition, next COMPILEUSERFN is called: COMPILEUSERFN(COMPILEUSERFN (Variable) NIL NIL ("18") 7) [Variable] When compiling a function call, if the function type cannot be found by looking in files, the variables NLAMA, NLAML, or LAMS, or at a current definition, then if the value of COMPILEUSERFN is not NIL, the compiler calls (the value of) COMPILEUSERFN giving it as arguments CDR of the form and the form itself, i.e., the compiler does (APPLY* COMPILEUSERFN (CDR FORM) FORM). If a non-NIL value is returned, it is compiled instead of FORM. If NIL is returned, the compiler compiles the original expression as a call to a lambda spread that is not yet defined. COMPILEUSERFN is only called when the compiler encounters a list CAR of which is not the name of a defined function. You can instruct the compiler about how to compile other data types via COMPILETYPELST. CLISP uses COMPILEUSERFN to tell the compiler how to compile iterative statements, IF-THEN-ELSE statements, and pattern match constructs. If the compiler cannot determine the function type by any of the means above, it assumes that the function is a lambda function, and its arguments are to be evaluated. If there are nlambda functions called from the functions being compiled, and they are only defined in a separate file, they must be included on NLAMA or NLAML, or the compiler will incorrectly assume that their arguments are to be evaluated, and compile the calling function correspondingly. This is only necessary if the compiler does not "know" about the function. If the function is defined at compile time, or is handled via a macro, or is contained in the same group of files as the functions that call it, the compiler will automatically handle calls to that function correctly. FUNCTION and Functional Arguments 1 Compiling(COMPILING NIL Compiling NIL ("18") 7 SUBNAME FUNCTION% FUNCTION SUBTEXT FUNCTION% function)(COMPILING NIL Compiling NIL ("18") 7 SUBNAME FUNCTIONAL% ARGUMENTS SUBTEXT functional% arguments) the function FUNCTION may involve creating and compiling a seperate "auxiliary function", which will be called at run time. An auxiliary function is named by attaching a GENSYM to the end of the name of the function in which they appear, e.g., FOOA0003. For example, suppose FOO is defined as (LAMBDA (X) ... (FOO1 X (FUNCTION ...)) ...) and compiled. When FOO is run, FOO1 will be called with two arguments, X, and FOOA000N and FOO1 will call FOOA000N each time it uses its functional argument. Compiling FUNCTION will not create an auxiliary function if it is a functional argument to a function that compiles open, such as most of the mapping functions (MAPCAR, MAPLIST, etc.). A considerable savings in time could be achieved by making FOO1 compile open via a computed macro, e.g. (PUTPROP 'FOO1 'MACRO '(Z (LIST (SUBST (CADADR Z) (QUOTE FN) DEF) (CAR Z))) DEF is the definition of FOO1 as a function of just its first argument, and FN is the name used for its functional argument in its definition. In this case, (FOO1 X (FUNCTION ...)) would compile as an expression, containing the argument to FUNCTION as an open LAMBDA expression. Thus you save not only the function call to FOO1, but also each of the function calls to its functional argument. For example, if FOO1 operates on a list of length ten, eleven function calls will be saved. Of course, this savings in time costs space, and you must decide which is more important. Open Functions 1 When a function is called from a compiled function, a system routine is invoked that sets up the parameter and control push lists as necessary for variable bindings and return information. If the amount of time spent inside the function is small, this function calling time will be a significant percentage of the total time required to use the function. Therefore, many "small" functions, e.g., CAR, CDR, EQ, NOT, CONS are always compiled "open", i.e., they do not result in a function call. Other larger functions such as PROG, SELECTQ, MAPC, etc. are compiled open because they are frequently used. You can make other functions compile open via MACRO definitions. You can also affect the compiled code via COMPILEUSERFN and COMPILETYPELST. COMPILETYPELST 1 Most of the compiler's mechanism deals with how to handle forms (lists) and variables (symbols). You can affect the compiler's behaviour with respect to lists and literal atoms in a number of ways, e.g. macros, declarations, COMPILEUSERFN, etc. COMPILETYPELST allows you to tell the compiler what to do when it encounters a data type other than a list or an atom. It is the facility in the compiler that corresponds to DEFEVAL for the interpreter. COMPILETYPELST(COMPILETYPELST (Variable) NIL NIL ("18") 8) [Variable] A list of elements of the form (TYPENAME . FUNCTION). Whenever the compiler encounters a datum that is not a list and not an atom (or a number) in a context where the datum is being evaluated, the type name of the datum is looked up on COMPILETYPELST. If an entry appears CAR of which is equal to the type name, CDR of that entry is applied to the datum. If the value returned by this application is not EQ to the datum, then that value is compiled instead. If the value is EQ to the datum, or if there is no entry on COMPILETYPELST for this type name, the compiler simply compiles the datum as (QUOTE DATUM). Compiling(COMPILING NIL Compiling NIL ("18") 9 SUBNAME CLISP SUBTEXT CLISP) CLISP(CLISP NIL NIL NIL ("18") 9 SUBNAME COMPILING SUBTEXT compiling) 1 Since the compiler does not know about CLISP, in order to compile functions containing CLISP constructs, the definitions must first be DWIMIFYed. You can automate this process in several ways: 1. If the variable DWIMIFYCOMPFLG is T, the compiler will always DWIMIFY expressions before compiling them. DWIMIFYCOMPFLG is initially NIL. 2. If a file has the property FILETYPE with value CLISP on its property list, TCOMPL, BCOMPL, RECOMPILE, and BRECOMPILE will operate as though DWIMIFYCOMPFLG is T and DWIMIFY all expressions before compiling. 3. If the function definition has a local CLISP declaration, including a null declaration, i.e., just (CLISP:), the definition will be automatically DWIMIFYed before compiling. Note: COMPILEUSERFN is defined to call DWIMIFY on iterative statements, IF-THEN statements, and fetch, replace, and match expressions, i.e., any CLISP construct which can be recognized by its CAR of form. Thus, if the only CLISP constructs in a function appear inside of iterative statements, IF statements, etc., the function does not have to be dwimified before compiling. If DWIMIFY is ever unsuccessful in processing a CLISP expression, it will print the error message UNABLE TO DWIMIFY followed by the expression, and go into a break unless DWIMESSGAG = T. In this case, the expression is just compiled as is, i.e. as though CLISP had not been enabled. You can exit the break in one of these ways: 1. Type OK to the break, which will cause the compiler to try again, e.g. you could define some missing records while in the break, and then continue 2. Type , which will cause the compiler to simply compile the expression as is, i.e. as though CLISP had not been enabled in the first place 3. Return an expression to be compiled in its place by using the RETURN break command. Note: TCOMPL, BCOMPL, RECOMPILE, and BRECOMPILE all scan the entire file before doing any compiling, and take note of the names of all functions that are defined in the file as well as the names of all variables that are set by adding them to NOFIXFNSLST and NOFIXVARSLST, respectively. Thus, if a function is not currently defined, but is defined in the file being compiled, when DWIMIFY is called before compiling, it will not attempt to interpret the function name as CLISP when it appears as CAR of a form. DWIMIFY also takes into account variables that have been declared to be LOCALVARS, or SPECVARS, either via block declarations or DECLARE expressions in the function being compiled, and does not attempt spelling correction on these variables. The declaration USEDFREE may also be used to declare variables simply used freely in a function. These variables will also be left alone by DWIMIFY. Finally, NOSPELLFLG is reset to T when compiling functions from a file (as opposed to from their in-core definition) so as to suppress spelling correction. Compiler(COMPILER NIL Compiler NIL ("18") 9 SUBNAME FUNCTIONS SUBTEXT functions) Functions 1 Normally, the compiler is envoked through file package commands that keep track of the state of functions, and manage a set of files, such as MAKEFILE. However, it is also possible to explicitly call the compiler using one of a number of functions. Functions may be compiled from in-core definitions (via COMPILE), or from definitions in files (TCOMPL), or from a combination of in-core and file definitions (RECOMPILE). TCOMPL and RECOMPILE produce "compiled" files. Compiled files usually have the same name as the symbolic file they were made from, suffixed with DCOM (the compiled file extension is stored as the value of the variable COMPILE.EXT). The file name is constructed from the name field only, e.g., (TCOMPL 'FOO.TEM;3) produces FOO.DCOM on the connected directory. The version number will be the standard default. A "compiled file" contains the same expressions as the original symbolic file, except for the following: 1. A special FILECREATED expression appears at the front of the file which contains information used by the file package, and which causes the message COMPILED ON DATE to be printed when the file is loaded (the actual string printed is the value of COMPILEHEADER). 2. Every DEFINEQ in the symbolic file is replaced by the corresponding compiled definitions in the compiled file. 3. Expressions following a DONTCOPY tag inside of a DECLARE: that appears in the symbolic file are not copied to the compiled file. The compiled definitions appear at the front of the compiled file, i.e., before the other expressions in the symbolic file, regardless of where they appear in the symbolic file. The only exceptions are expressions that follow a FIRST tag inside of a DECLARE:. This "compiled" file can be loaded into any Interlisp system with LOAD. Note: When a function is compiled from its in-core definition (as opposed to being compiled from a definition in a file), and the function has been modified by BREAK, TRACE, BREAKIN, or ADVISE, it is first restored to its original state, and a message is printed out, e.g., FOO UNBROKEN. If the function is not defined by an expr definition, the value of the function's EXPR property is used for the compilation, if there is one. If there is no EXPR property, and the compilation is being performed by RECOMPILE, the definition of the function is obtained from the file (using LOADFNS). Otherwise, the compiler prints (FN NOT COMPILEABLE), and goes on to the next function. (COMPILE(COMPILE (Function) NIL NIL ("18") 10) X FLG) [Function] X is a list of functions (if atomic, (LIST X) is used). COMPILE first asks the standard compiler questions, and then compiles each function on X, using its in-core definition. Returns X. If compiled definitions are being written to a file, the file is closed unless FLG = T. (COMPILE1(COMPILE1 (Function) NIL NIL ("18") 10) FN DEF) [Function] Compiles DEF, redefining FN if STRF = T (STRF is one of the variables set by COMPSET). COMPILE1 is used by COMPILE, TCOMPL, and RECOMPILE. If DWIMIFYCOMPFLG is T, or DEF contains a CLISP declaration, DEF is dwimified before compiling. (TCOMPL(TCOMPL (Function) NIL NIL ("18") 10) FILES) [Function] TCOMPL is used to "compile files"; given a symbolic LOAD file (e.g., one created by MAKEFILE), it produces a "compiled file". FILES is a list of symbolic files to be compiled (if atomic, (LIST FILES) is used). TCOMPL asks the standard compiler questions, except for "OUTPUT FILE:". The output from the compilation of each symbolic file is written on a file of the same name suffixed with DCOM, e.g., (TCOMPL '(SYM1 SYM2)) produces two files, SYM1.DCOM and SYM2.DCOM. TCOMPL processes the files one at a time, reading in the entire file. For each FILECREATED expression, the list of functions that were marked as changed by the file package is noted, and the FILECREATED expression is written onto the output file. For each DEFINEQ expression, TCOMPL adds any nlambda functions defined in the DEFINEQ to NLAMA or NLAML, and adds lambda functions to LAMS, so that calls to these functions will be compiled correctly. NLAMA, NLAML, and LAMS are rebound to their top level values (using RESETVAR) by all of the compiling functions, so that any additions to these lists while inside of these functions will not propagate outside. Expressions beginning with DECLARE: are processed specially. All other expressions are collected to be subsequently written onto the output file. After processing the file in this fashion, TCOMPL compiles each function, except for those functions which appear on the list DONTCOMPILEFNS (initially NIL), and writes the compiled definition onto the output file. TCOMPL then writes onto the output file the other expressions found in the symbolic file. DONTCOMPILEFNS might be used for functions that compile open, since their definitions would be superfluous when operating with the compiled file. Note that DONTCOMPILEFNS can be set via block declarations. Note: If the rootname of a file has the property FILETYPE with value CLISP, or value a list containing CLISP, TCOMPL rebinds DWIMIFYCOMPFLG to T while compiling the functions on FILE, so the compiler will DWIMIFY all expressions before compiling them. TCOMPL returns a list of the names of the output files. All files are properly terminated and closed. If the compilation of any file is aborted via an error or Control-D, all files are properly closed, and the (partially complete) compiled file is deleted. (RECOMPILE(RECOMPILE (Function) NIL NIL ("18") 11) PFILE CFILE FNS) [Function] The purpose of RECOMPILE is to allow you to update a compiled file without recompiling every function in the file. RECOMPILE does this by using the results of a previous compilation. It produces a compiled file similar to one that would have been produced by TCOMPL, but at a considerable savings in time by only compiling selected functions, and copying the compiled definitions for the remainder of the functions in the file from an earlier TCOMPL or RECOMPILE file. PFILE is the name of the Pretty file (source file) to be compiled; CFILE is the name of the Compiled file containing compiled definitions that may be copied. FNS indicates which functions in PFILE are to be recompiled, e.g., have been changed or defined for the first time since CFILE was made. Note that PFILE, not FNS, drives RECOMPILE. RECOMPILE asks the standard compiler questions, except for "OUTPUT FILE:". As with TCOMPL, the output automatically goes to PFILE.DCOM. RECOMPILE processes PFILE the same as does TCOMPL except that DEFINEQ expressions are not actually read into core. Instead, RECOMPILE uses the filemap to obtain a list of the functions contained in PFILE. The filemap enables RECOMPILE to skip over the DEFINEQs in the file by simply resetting the file pointer, so that in most cases the scan of the symbolic file is very fast (the only processing required is the reading of the non-DEFINEQs and the processing of the DECLARE: expressions as with TCOMPL). A map is built if the symbolic file does not already contain one, for example if it was written in an earlier system, or with BUILDMAPFLG = NIL. After this initial scan of PFILE, RECOMPILE then processes the functions defined in the file. For each function in PFILE, RECOMPILE determines whether or not the function is to be (re)compiled. Functions that are members of DONTCOMPILEFNS are simply ignored. Otherwise, a function is recompiled if : 1. FNS is a list and the function is a member of that list 2. FNS = T or EXPRS and the function is defined by an expr definition 3. FNS = CHANGES and the function is marked as having been changed in the FILECREATED expression in PFILE 4. FNS = ALL If a function is not to be recompiled, RECOMPILE obtains its compiled definition from CFILE, and copies it (and all generated subfunctions) to the output file, PFILE.DCOM. If the function does not appear on CFILE, RECOMPILE simply recompiles it. Finally, after processing all functions, RECOMPILE writes out all other expressions that were collected in the prescan of PFILE. Note: If FNS = ALL, CFILE is superfluous, and does not have to be specified. This option may be used to compile a symbolic file that has never been compiled before, but which has already been loaded (since using TCOMPL would require reading the file in a second time). If CFILE = NIL, PFILE.DCOM (the old version of the output file) is used for copying from. If both FNS and CFILE are NIL, FNS is set to the value of RECOMPILEDEFAULT, which is initially CHANGES. Thus you can perform his edits, dump the file, and then simply (RECOMPILE 'FILE) to update the compiled file. The value of RECOMPILE is the file name of the new compiled file, PFILE.DCOM. If RECOMPILE is aborted due to an error or Control-D, the new (partially complete) compiled file will be closed and deleted. RECOMPILE is designed to allow you to conveniently and efficiently update a compiled file, even when the corresponding symbolic file has not been (completely) loaded. For example, you can perform a LOADFROM to "notice" a symbolic file, edit the functions he wants to change (the editor will automatically load those functions not already loaded), call MAKEFILE to update the symbolic file (MAKEFILE will copy the unchanged functions from the old symbolic file), and then perform (RECOMPILE PFILE). Note: Since PRETTYDEF automatically outputs a suitable DECLARE: expression to indicate which functions in the file (if any) are defined as NLAMBDAs, calls to these functions will be handled correctly, even though the NLAMBDA functions themselves may never be loaded, or even looked at, by RECOMPILE. Block(BLOCK NIL Block NIL ("18") 12 SUBNAME COMPILING SUBTEXT compiling) Compiling(COMPILING NIL Compiling NIL ("18") 12 SUBNAME BLOCK SUBTEXT block) 1 In Interlisp-10, block compiling provides a way of compiling several functions into a single block. Function calls between the component functions of the block are very fast. Thus, compiling a block consisting of just a single recursive function may be yield great savings if the function calls itself many times. The output of a block compilation is a single, usually large, function. Calls from within the block to functions outside of the block look like regular function calls. A block can be entered via several different functions, called entries. These must be specified when the block is compiled. In Medley, block compiling is handled somewhat differently; block compiling provides a mechanism for hiding function names internal to a block, but it does not provide a performance improvement. Block compiling in Medley works by automatically renaming the block functions with special names, and calling these functions with the normal function-calling mechanisms. Specifically, a function FN is renamed to \BLOCK-NAME/FN. For example, function FOO in block BAR is renamed to \BAR/FOO. Note that it is possible with this scheme to break functions internal to a block. Block(BLOCK NIL Block NIL ("18") 13 SUBNAME DECLARATIONS SUBTEXT declarations) Declarations Block compiling a file frequently involves giving the compiler a lot of information about the nature and structure of the compilation, e.g., block functions, entries, specvars, etc. To help with this, there is the BLOCKS file package command, which has the form: (BLOCKS BLOCK1... BLOCKN) where each BLOCKi is a block declaration. The BLOCKS command outputs a DECLARE: expression, which is noticed by BCOMPL and BRECOMPILE. BCOMPL and BRECOMPILE are sensitive to these declarations and take the appropriate action. Note: Masterscope includes a facility for checking the block declarations of a file or files for various anomalous conditions, e.g. functions in block declarations which aren't on the file(s), functions in ENTRIES not in the block, variables that may not need to be SPECVARS because they are not used freely below the places they are bound, etc. A block declaration is a list of the form: (BLKNAME BLKFN1 ... BLKFNM (VAR1 . VALUE1) ... (VARN . VALUEN)) BLKNAME is the name of a block. BLKFN1 ... BLKFNM are the functions in the block and correspond to BLKFNS in the call to BLOCKCOMPILE. The (VARi . VALUEi) expressions indicate the settings for variables affecting the compilation of that block. If VALUEi is atomic, then VARi is set to VALUEi, otherwise VARi is set to the UNION of VALUEi and the current value of the variable VARi. Also, expressions of the form (VAR * FORM) will cause FORM to be evaluated and the resulting list used as described above (e.g. (GLOBALVARS * MYGLOBALVARS)). For example, consider the block declaration below. The block name is EDITBLOCK, it includes a number of functions (EDITL0, EDITL1, ... EDITH), and it sets the variables ENTRIES, SPECVARS, RETFNS, and GLOBALVARS. (EDITBLOCK EDITL0 EDITL1 UNDOEDITL EDITCOM EDITCOMA EDITMAC EDITCOMS EDIT]UNDO UNDOEDITCOM EDITH (ENTRIES EDITL0 ## UNDOEDITL) (SPECVARS L COM LCFLG #1 #2 #3 LISPXBUFS) (RETFNS EDITL0) (GLOBALVARS EDITCOMSA EDITCOMSL EDITOPS)) Whenever BCOMPL or BRECOMPILE encounter a block declaration, they rebind RETFNS, SPECVARS, GLOBALVARS, BLKLIBRARY, and DONTCOMPILEFNS to their top level values, bind BLKAPPLYFNS and ENTRIES to NIL, and bind BLKNAME to the first element of the declaration. They then scan the rest of the declaration, setting these variables as described above. When the declaration is exhausted, the block compiler is called and given BLKNAME, the list of block functions, and ENTRIES. If a function appears in a block declaration, but is not defined in one of the files, then if it has an in-core definition, this definition is used and a message printed NOT ON FILE, COMPILING IN CORE DEFINITION. Otherwise, the message NOT COMPILEABLE, is printed and the block declaration processed as though the function were not on it, i.e. calls to the function will be compiled as external function calls. Since all compiler variables are rebound for each block declaration, the declaration only has to set those variables it wants changed. Furthermore, setting a variable in one declaration has no effect on the variable's value for another declaration. After finishing all blocks, BCOMPL and BRECOMPILE treat any functions in the file that did not appear in a block declaration in the same way as do TCOMPL and RECOMPILE. If you wish a function compiled separately as well as in a block, or if you wish to compile some functions (not blockcompile), with some compiler variables changed, you can use a special pseudo-block declaration of the form (NIL BLKFN1 ... BLKFNM (VAR1 . VALUE1) ... (VARN . VALUEN)) which means that BLKFN1 ... BLKFNM should be compiled after first setting VAR1 ... VARN as described above. The following variables control other aspects of compiling a block: RETFNS(RETFNS (Variable) NIL NIL ("18") 14) [Variable] Value is a list of internal block functions whose names must appear on the stack, e.g., if the function is to be returned from RETFROM, RETTO, RETEVAL, etc. Usually, internal calls between functions in a block are not put on the stack. BLKAPPLYFNS(BLKAPPLYFNS (Variable) NIL NIL ("18") 14) [Variable] Value is a list of internal block functions called by other functions in the same block using BLKAPPLY or BLKAPPLY* for efficiency reasons. Normally, a call to APPLY from inside a block would be the same as a call to any other function outside of the block. If the first argument to APPLY turned out to be one of the entries to the block, the block would have to be reentered. BLKAPPLYFNS enables a program to compute the name of a function in the block to be called next, without the overhead of leaving the block and reentering it. This is done by including on the list BLKAPPLYFNS those functions which will be called in this fashion, and by using BLKAPPLY in place of APPLY, and BLKAPPLY* in place of APPLY*. If BLKAPPLY or BLKAPPLY* is given a function not on BLKAPPLYFNS, the effect is the same as a call to APPLY or APPLY* and no error is generated. Note however, that BLKAPPLYFNS must be set at compile time, not run time, and furthermore, that all functions on BLKAPPLYFNS must be in the block, or an error is generated (at compile time), NOT ON BLKFNS. BLKAPPLYFNS(BLKAPPLYFNS (Variable) NIL NIL ("18") 14) [Variable] Value is a list of functions that are considered to be in the "block library" of functions that should automatically be included in the block if they are called within the block. Compiling a function open via a macro provides a way of eliminating a function call. For block compiling, the same effect can be achieved by including the function in the block. A further advantage is that the code for this function will appear only once in the block, whereas when a function is compiled open, its code appears at each place where it is called. The block library feature provides a convenient way of including functions in a block. It is just a convenience since you can always achieve the same effect by specifying the function(s) in question as one of the block functions, provided it has an expr definition at compile time. The block library feature simply eliminates the burden of supplying this definition. To use the block library feature, place the names of the functions of interest on the list BLKLIBRARY, and their expr definitions on the property list of the functions under the property BLKLIBRARYDEF. When the block compiler compiles a form, it first checks to see if the function being called is one of the block functions. If not, and the function is on BLKLIBRARY, its definition is obtained from the property value of BLKLIBRARYDEF, and it is automatically included as part of the block. Block(BLOCK NIL Block NIL ("18") 15 SUBNAME COMPILING% FUNCTIONS SUBTEXT compiling% functions) Compiling Functions There are three user level functions for block compiling, BLOCKCOMPILE, BCOMPL, and BRECOMPILE, corresponding to COMPILE, TCOMPL, and RECOMPILE. Note that all of the remarks on macros, globalvars, compiler messages, etc., all apply equally for block compiling. Using block declarations, you can intermix in a single file functions compiled normally and block compiled functions. (BLOCKCOMPILE(BLOCKCOMPILE (Function) NIL NIL ("18") 15) BLKNAME BLKFNS ENTRIES FLG) [Function] BLKNAME is the name of a block, BLKFNS is a list of the functions comprising the block, and ENTRIES a list of entries to the block. Each of the entries must also be on BLKFNS or an error is generated, NOT ON BLKFNS. If only one entry is specified, the block name can also be one of the BLKFNS, e.g., (BLOCKCOMPILE 'FOO '(FOO FIE FUM) '(FOO)). However, if more than one entry is specified, an error will be generated, CAN'T BE BOTH AN ENTRY AND THE BLOCK NAME. If ENTRIES is NIL, (LIST BLKNAME) is used, e.g., (BLOCKCOMPILE 'COUNT '(COUNT COUNT1)) If BLKFNS is NIL, (LIST BLKNAME) is used, e.g., (BLOCKCOMPILE 'EQUAL) BLOCKCOMPILE asks the standard compiler questions, and then begins compiling. As with COMPILE, if the compiled code is being written to a file, the file is closed unless FLG = T. The value of BLOCKCOMPILE is a list of the entries, or if ENTRIES = NIL, the value is BLKNAME. The output of a call to BLOCKCOMPILE is one function definition for BLKNAME, plus definitions for each of the functions on ENTRIES if any. These entry functions are very short functions which immediately call BLKNAME. (BCOMPL(BCOMPL (Function) NIL NIL ("18") 15) FILES CFILE) [Function] FILES is a list of symbolic files (if atomic, (LIST FILES) is used). BCOMPL differs from TCOMPL in that it compiles all of the files at once, instead of one at a time, in order to permit one block to contain functions in several files. (If you have several files to be BCOMPLed separately, you must make several calls to BCOMPL.) Output is to CFILE if given, otherwise to a file whose name is (CAR FILES) suffixed with DCOM. For example, (BCOMPL '(EDIT WEDIT)) produces one file, EDIT.DCOM. BCOMPL asks the standard compiler questions, except for "OUTPUT FILE:", then processes each file exactly the same as TCOMPL. BCOMPL next processes the block declarations as described above. Finally, it compiles those functions not mentioned in one of the block declarations, and then writes out all other expressions. If any of the files have property FILETYPE with value CLISP, or a list containing CLISP, then DWIMIFYCOMPFLG is rebound to T for all of the files. The value of BCOMPL is the output file (the new compiled file). If the compilation is aborted due to an error or Control-D, all files are closed and the (partially complete) output file is deleted. It is permissible to TCOMPL files set up for BCOMPL; the block declarations will simply have no effect. Similarly, you can BCOMPL a file that does not contain any block declarations and the result will be the same as having TCOMPLed it. (BRECOMPILE(BRECOMPILE (Function) NIL NIL ("18") 16) FILES CFILE FNS %) [Function] BRECOMPILE plays the same role for BCOMPL that RECOMPILE plays for TCOMPL. Its purpose is to allow you to update a compiled file without requiring an entire BCOMPL. FILES is a list of symbolic files (if atomic, (LIST FILES) is used). CFILE is the compiled file produced by BCOMPL or a previous BRECOMPILE that contains compiled definitions that may be copied. The interpretation of FNS is the same as with RECOMPILE. BRECOMPILE asks the standard compiler questions, except for "OUTPUT FILE:". As with BCOMPL, output automatically goes to FILE.DCOM, where FILE is the first file in FILES. BRECOMPILE processes each file the same as RECOMPILE, then processes each block declaration. If any of the functions in the block are to be recompiled, the entire block must be (is) recompiled. Otherwise, the block is copied from CFILE as with RECOMPILE. For pseudo-block declarations of the form (NIL FN1 ...), all variable assignments are made, but only those functions indicated by FNS are recompiled. After completing the block declarations, BRECOMPILE processes all functions that do not appear in a block declaration, recompiling those dictated by FNS, and copying the compiled definitions of the remaining from CFILE. Finally, BRECOMPILE writes onto the output file the "other expressions" collected in the initial scan of FILES. The value of BRECOMPILE is the output file (the new compiled file). If the compilation is aborted due to an error or Control-D, all files are closed and the (partially complete) output file is deleted. If CFILE = NIL, the old version of FILE.DCOM is used, as with RECOMPILE. In addition, if FNS and CFILE are both NIL, FNS is set to the value of RECOMPILEDEFAULT, initially CHANGES. Compiler(COMPILER NIL Compiler NIL ("18") 16 SUBNAME ERROR% MESSAGES SUBTEXT error% messages) Error Messages(ERROR% MESSAGES NIL Error% messages NIL ("18") 16 SUBNAME COMPILER SUBTEXT compiler) 1 Messages describing errors in the function being compiled are also printed on the terminal. These messages are always preceded by *****. Unless otherwise indicated below, the compilation will continue. (FN NOT ON FILE, COMPILING IN CORE DEFINITION(FN% NOT% ON% FILE,% COMPILING% IN% CORE% DEFINITION (Error Message) NIL NIL ("18") 16)) From calls to BCOMPL and BRECOMPILE. (FN NOT COMPILEABLE(FN% NOT% COMPILEABLE (Error Message) NIL NIL ("18") 16)) An EXPR definition for FN could not be found. In this case, no code is produced for FN, and the compiler proceeds to the next function to be compiled, if any. (FN NOT FOUND(FN% NOT% FOUND (Error Message) NIL NIL ("18") 17)) Occurs when RECOMPILE or BRECOMPILE try to copy the compiled definition of FN from CFILE, and cannot find it. In this case, no code is copied and the compiler proceeds to the next function to be compiled, if any. (FN NOT ON BLKFNS(FN% NOT% ON% BLKFNS (Error Message) NIL NIL ("18") 17)) FN was specified as an entry to a block, or else was on BLKAPPLYFNS, but did not appear on the BLKFNS. In this case, no code is produced for the entire block and the compiler proceeds to the next function to be compiled, if any. (FN CAN'T BE BOTH AN ENTRY AND THE BLOCK NAME(FN% CAN'T% BE% BOTH% AN% ENTRY% AND% THE% BLOCK% NAME (Error Message) NIL NIL ("18") 17)) In this case, no code is produced for the entire block and the compiler proceeds to the next function to be compiled, if any. (BLKNAME - USED BLKAPPLY WHEN NOT APPLICABLE(BLKNAME% -% USED% BLKAPPLY% WHEN% NOT% APPLICABLE (Error Message) NIL NIL ("18") 17)) BLKAPPLY is used in the block BLKNAME, but there are no BLKAPPLYFNS or ENTRIES declared for the block. (VAR SHOULD BE A SPECVAR - USED FREELY BY FN(VAR% SHOULD% BE% A% SPECVAR% -% USED% FREELY% BY% FN (Error Message) NIL NIL ("18") 17)) While compiling a block, the compiler has already generated code to bind VAR as a LOCALVAR, but now discovers that FN uses VAR freely. VAR should be declared a SPECVAR and the block recompiled. ((* --) COMMENT USED FOR VALUE(%(*% --%)% COMMENT% USED% FOR% VALUE (Error Message) NIL NIL ("18") 17)) A comment appears in a context where its value is being used, e.g. (LIST X (* --) Y). The compiled function will run, but the value at the point where the comment was used is undefined. ((FORM) - NON-ATOMIC CAR OF FORM(%(FORM%)% -% NON-ATOMIC% CAR% OF% FORM (Error Message) NIL NIL ("18") 17)) If you intended to treat the value of FORM as a function, you should use APPLY* (Chapter 10). FORM is compiled as if APPLY* had been used. ((SETQ VAR EXPR --) BAD SETQ(%(SETQ% VAR% EXPR% --%)% BAD% SETQ (Error Message) NIL NIL ("18") 17)) SETQ of more than two arguments. (FN - USED AS ARG TO NUMBER FN?(FN% -% USED% AS% ARG% TO% NUMBER% FN? (Error Message) NIL NIL ("18") 17)) The value of a predicate, such as GREATERP or EQ, is used as an argument to a function that expects numbers, such as IPLUS. (FN - NO LONGER INTERPRETED AS FUNCTIONAL ARGUMENT(FN% -% NO% LONGER% INTERPRETED% AS% FUNCTIONAL% ARGUMENT (Error Message) NIL NIL ("18") 17)) The compiler has assumed FN is the name of a function. If you intended to treat the value of FN as a function, APPLY* (Chapter 10) should be used. This message is printed when FN is not defined, and is also a local variable of the function being compiled. (FN - ILLEGAL RETURN(FN% -% ILLEGAL% RETURN (Error Message) NIL NIL ("18") 17)) RETURN encountered when not in PROG. (TG - ILLEGAL GO(TG% -% ILLEGAL% GO (Error Message) NIL NIL ("18") 17)) GO encountered when not in a PROG. (TG - MULTIPLY DEFINED TAG(TG% -% MULTIPLY% DEFINED% TAG (Error Message) NIL NIL ("18") 18)) TG is a PROG label that is defined more than once in a single PROG. The second definition is ignored. (TG - UNDEFINED TAG(TG% -% UNDEFINED% TAG (Error Message) NIL NIL ("18") 18)) TG is a PROG label that is referenced but not defined in a PROG. (VAR - NOT A BINDABLE VARIABLE(VAR% -% NOT% A% BINDABLE% VARIABLE (Error Message) NIL NIL ("18") 18)) VAR is NIL, T, or else not a literal atom. (VAR VAL -- BAD PROG BINDING(VAR% VAL% --% BAD% PROG% BINDING (Error Message) NIL NIL ("18") 18)) Occurs when there is a prog binding of the form (VAR VAL1 ... VALN). (TG - MULTIPLY DEFINED TAG, LAP(TG% -% MULTIPLY% DEFINED% TAG,% LAP (Error Message) NIL NIL ("18") 18)) TG is a label that was encountered twice during the second pass of the compilation. If this error occurs with no indication of a multiply defined tag during pass one, the tag is in a LAP macro. (TG - UNDEFINED TAG, LAP(TG% -% UNDEFINED% TAG,% LAP (Error Message) NIL NIL ("18") 18)) TG is a label that is referenced during the second pass of compilation and is not defined. LAP treats TG as though it were a COREVAL, and continues the compilation. (TG - MULTIPLY DEFINED TAG, ASSEMBLE(TG% -% MULTIPLY% DEFINED% TAG,% ASSEMBLE (Error Message) NIL NIL ("18") 18)) TG is a label that is defined more than once in an assemble form. (TG - UNDEFINED TAG, ASSEMBLE(TG% -% UNDEFINED% TAG,% ASSEMBLE (Error Message) NIL NIL ("18") 18)) TG is a label that is referenced but not defined in an assemble form. (OP - OPCODE? - ASSEMBLE(OP% -% OPCODE?% -% ASSEMBLE (Error Message) NIL NIL ("18") 18)) OP appears as CAR of an assemble statement, and is illegal. (NO BINARY CODE GENERATED OR LOADED FOR FN(NO% BINARY% CODE% GENERATED% OR% LOADED% FOR% FN (Error Message) NIL NIL ("18") 18)) A previous error condition was sufficiently serious that binary code for FN cannot be loaded without causing an error. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "18-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "18-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "18-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "18-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "18-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "18-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))(,HH2`~~2H``2066,``F PAGEHEADING VERSOHEAD@ PAGEHEADINGLEFTBACKT2Zll2Hll0T/HH306 +T8ZZ8ZZ26TT2Hll,xx,xx55-T,2,ll,<<,ll2l~~;ll2Hll2Hll2Hll/2Hll22,,/,3(T PALATINO PALATINO PALATINO PALATINO TITAN TITAN TITAN TITAN MODERN +MODERN +MODERN +   + + IM.CHAP.GETFNMODERN + + HRULE.GETFNMODERN + $=$]6Jm Cm   +      3V8   zx`T    1-D`    zU +!#W1  d   "         #_  2 . #"R ( +FIM.INDEX.GETFN + + HRULE.GETFNMODERN + "  +#Q>2+# #1(!&#&  +#g#*>#4 ib ( +XIM.INDEX.GETFN + +DIM.INDEX.GETFN + HRULE.GETFNMODERN + "" +   + c#\ z#<ko( +BIM.INDEX.GETFNVIM.INDEX.GETFN +FIM.INDEX.GETFNZIM.INDEX.GETFN + HRULE.GETFNMODERN + "QR#1# E  t   5# L O!(^ ;C N O8  #9%#  # < # +#  S X   1  J )  2IM.INDEX.GETFNTITAN  +  V,2  #TP( +HIM.INDEX.GETFN + HRULE.GETFNMODERN +  G &IM.INDEX.GETFNTITAN  +  802H   + : ! g Kt; *  .IM.INDEX.GETFNTITAN    ]/0 .IM.INDEX.GETFNTITAN  +   0  'IM.INDEX.GETFNTITAN  +    + 3  j ! ( +VIM.INDEX.GETFN + HRULE.GETFNMODERN + &  o  %IM.INDEX.GETFN  W #IM.INDEX.GETFNTITAN   T "IM.INDEX.GETFNTITAN   i <   +IM.INDEX.GETFNTITAN   h3 $ : .r /y  ; +  (" + HRULE.GETFNMODERN + & \IM.INDEX.GETFNbIM.INDEX.GETFND, $ , +E)  /P< :S( + HRULE.GETFNMODERN + &j j9 ( + HRULE.GETFNMODERN + & KQ ,IM.INDEX.GETFNTITAN   $VB)?( +BIM.INDEX.GETFN +@IM.INDEX.GETFN + HRULE.GETFNMODERN + &4%   +#*7' GcP X8B  +  B*l A #{u  + {( +HIM.INDEX.GETFN + HRULE.GETFNMODERN + &!:   ~E A +O i  R  bK |54ER UG5 B#$ &IM.INDEX.GETFNTITAN  $ P) O 'IM.INDEX.GETFNTITAN         %IM.INDEX.GETFNTITAN   .#8 3 n   J e 7 +@.p +M =U$2  "(   (IM.INDEX.GETFNTITAN    \   )BS   3  #   8 A   I ^?64 +:  ' &E& A H +3 : B   , q . Q +  "LGA ( +CIM.INDEX.GETFN + +CIM.INDEX.GETFN + HRULE.GETFNMODERN + $f% + +U + +IIM.INDEX.GETFN + '+% ! + +F5H%+%2 _  '! F %F % + )-**%  +, + +!  #% %~u% +b %(%D %IM.INDEX.GETFNTITAN   V  *IM.INDEX.GETFNTITAN   ^  wZ  D     &0 < B *IM.INDEX.GETFNTITAN    l q [ +V  +8 8  + +YIM.INDEX.GETFN + ':  +    +IM.INDEX.GETFNTITAN  + +  6! $ I)M    KM !   0P  %IM.INDEX.GETFNTITAN  + + +  (  +!-  3 0     I_  )IM.INDEX.GETFNTITAN  + + +    +  U ) " +O  +3   +! -  -K ) +b=  +V  +   + ( +UIM.INDEX.GETFN +UIM.INDEX.GETFN + HRULE.GETFNMODERN + 'D *WIM.INDEX.GETFN   +  +8IM.INDEX.GETFN  <I  + 2IM.INDEX.GETFN    +(~  + 7IM.INDEX.GETFN   6   +)YIM.INDEX.GETFN Q *  +!UIM.INDEX.GETFN    +%XIM.INDEX.GETFNPALATINO  I + HIM.INDEX.GETFN Cg JIM.INDEX.GETFN &  FIM.INDEX.GETFN  IIM.INDEX.GETFN "E /\IM.INDEX.GETFN :<N :IM.INDEX.GETFN   6IM.INDEX.GETFN  AIM.INDEX.GETFN 2% 9IM.INDEX.GETFN / FIM.INDEX.GETFN  DIM.INDEX.GETFN 0 GIM.INDEX.GETFN  ?IM.INDEX.GETFN Z! !LIM.INDEX.GETFN B DIM.INDEX.GETFN D ?IM.INDEX.GETFN  + (TIM.INDEX.GETFNPALATINO  I,  +z \ No newline at end of file diff --git a/docs/medley-irm/18-COMPILER.pdf b/docs/medley-irm/18-COMPILER.pdf new file mode 100644 index 00000000..4b9e3716 --- /dev/null +++ b/docs/medley-irm/18-COMPILER.pdf @@ -0,0 +1,10517 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5531 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-1)Tj +/TT4 1 Tf +10 0 0 10 54 558.2 Tm +(18. COMPILER)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 554.99 m +510.01 554.99 l +S +BT +/TT6 1 Tf +9 0 0 9 78 532.54 Tm +0.2155 Tw +[(The compiler is contained in the standard Medley system. It may be used to compile functions)]TJ +0 -1.2222 TD +0.1467 Tw +[(defined in Medley, or to compile definitions stored in a file. The resulting compiled code may be)]TJ +T* +0.1033 Tw +(stored as it is compiled, so as to be available for immediate use, or it may be written onto a file for)Tj +T* +0 Tw +(subsequent loading.)Tj +0 -2.8889 TD +0.2311 Tw +(The most common way to use the compiler is to use one of the file package functions, such as)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0978 Tw +[( \(Chapter 17\), which automatically updates source files, and produces compiled versions.)]TJ +-4.8008 -1.2889 TD +0.0411 Tw +(However, it is also possible to compile individual functions defined in Medley, by directly calling the)Tj +0 -1.2222 TD +0.2267 Tw +(compiler using functions such as )Tj +/TT8 1 Tf +15.8765 0 TD +0 Tw +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2267 Tw +[(. No matter how the compiler is called, the function)]TJ +/TT8 1 Tf +-20.0772 -1.2889 TD +0 Tw +(COMPSET)Tj +/TT6 1 Tf +4.2007 0 TD +0.0922 Tw +[( is called which asks you certain questions concerning the compilation. \()]TJ +/TT8 1 Tf +33.2029 0 TD +0 Tw +(COMPSET)Tj +/TT6 1 Tf +4.2007 0 TD +0.0922 Tw +[( sets the)]TJ +-41.6042 -1.2889 TD +0.35 Tw +(free variables )Tj +/TT8 1 Tf +6.8841 0 TD +0 Tw +(LAPFLG)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.85 0 TD +(STRF)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.85 0 TD +(SVFLG)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.85 0 TD +(LCFIL)Tj +/TT6 1 Tf +3.0005 0 TD +0.35 Tw +[( and )]TJ +/TT8 1 Tf +2.8929 0 TD +0 Tw +(LSTFIL)Tj +/TT6 1 Tf +3.6006 0 TD +0.35 Tw +[( which determine various modes of)]TJ +-27.9295 -1.2889 TD +0.0233 Tw +[(operation.\) Those that can be answered "yes" or "no" can be answered with )]TJ +/TT8 1 Tf +33.8228 0 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5233 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0233 Tw +(, or )Tj +/TT8 1 Tf +1.7376 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0233 Tw +[( for "yes"; and)]TJ +/TT8 1 Tf +-39.0842 -1.2889 TD +0 Tw +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( for "no". The questions are:)Tj +/TT10 1 Tf +2.7418 -2.2156 TD +(LISTING?)Tj +/TT6 1 Tf +6.1333 0 TD +0.1333 Tw +(This asks whether to generate a listing of the compiled code.)Tj +0 -1.2889 TD +0 Tw +(The )Tj +/TT8 1 Tf +2.0105 0 TD +(LAP)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( and machine code are usually not of interest but can)]TJ +-3.8108 -1.2889 TD +0 Tw +(be helpful in debugging macros. Possible answers are:)Tj +/TT10 1 Tf +3.4 -2.1489 TD +(1)Tj +/TT6 1 Tf +1.9333 0 TD +(Prints output of pass 1, the )Tj +/TT8 1 Tf +12.0923 0 TD +(LAP)Tj +/TT6 1 Tf +1.8003 0 TD +( macro code)Tj +/TT10 1 Tf +-15.8259 -2.2156 TD +(2)Tj +/TT6 1 Tf +1.9333 0 TD +(Prints output of pass 2, the machine code)Tj +/TT10 1 Tf +-3.1333 -2.2156 TD +(YES)Tj +/TT6 1 Tf +3.1333 0 TD +(Prints output of both passes)Tj +/TT10 1 Tf +-2.5333 -2.2156 TD +(NO)Tj +/TT6 1 Tf +2.5333 0 TD +(Prints no listings)Tj +-5.3333 -2.0667 TD +(The variable )Tj +/TT8 1 Tf +5.748 0 TD +(LAPFLG)Tj +/TT6 1 Tf +3.6006 0 TD +( is set to the answer.)Tj +/TT10 1 Tf +-13.682 -2.2156 TD +(FILE:)Tj +/TT6 1 Tf +4.3333 0 TD +0.0656 Tw +(This question \(which only appears if the answer to )Tj +/TT8 1 Tf +23.1989 0 TD +0 Tw +(LISTING?)Tj +/TT6 1 Tf +-23.1989 -1.2889 TD +0.16 Tw +(is affirmative\) ask where the compiled code listing\(s\) should)Tj +0 -1.2222 TD +0.0478 Tw +[(be written. Answering )]TJ +/TT8 1 Tf +10.6276 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0478 Tw +[( will print the listings at the terminal.)]TJ +-11.2277 -1.2889 TD +0 Tw +(The variable )Tj +/TT8 1 Tf +5.748 0 TD +(LSTFIL)Tj +/TT6 1 Tf +3.6006 0 TD +( is set to the answer.)Tj +/TT10 1 Tf +-16.082 -2.2156 TD +(REDEFINE?)Tj +/TT6 1 Tf +6.7333 0 TD +0.1178 Tw +(This question asks whether the functions compiled should be)Tj +0 -1.2889 TD +0.2311 Tw +[(redefined to their compiled definitions. If this is answered)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.1633 Tw +(, the compiled code is stored and the function definition)Tj +-1.8003 -1.2889 TD +1.0811 Tw +(changed, otherwise the function definition remains)Tj +0 -1.2222 TD +0 Tw +(unchanged.)Tj +0 -2 TD +0.1522 Tw +(The compiler does )Tj +/TT12 1 Tf +8.8698 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.1522 Tw +[( respect the value of )]TJ +/TT8 1 Tf +9.8632 0 TD +0 Tw +(DFNFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.1522 Tw +[( \(Chapter)]TJ +-23.6665 -1.2889 TD +0.1589 Tw +(10\) when it redefines functions to their compiled definitions.)Tj +0 -1.2222 TD +0.2767 Tw +(Therefore, if you set )Tj +/TT8 1 Tf +10.2156 0 TD +0 Tw +(DFNFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.2767 Tw +[( to )]TJ +/TT8 1 Tf +1.9254 0 TD +0 Tw +(PROP)Tj +/TT6 1 Tf +2.4004 0 TD +0.2767 Tw +[( to completely avoid)]TJ +-18.1419 -1.2889 TD +0.22 Tw +(inadvertantly redefining something in your running system,)Tj +0 -1.2222 TD +0 Tw +(you )Tj +/TT12 1 Tf +1.9551 0 TD +(must)Tj +/TT6 1 Tf +2.0562 0 TD +( not answer )Tj +/TT8 1 Tf +5.418 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +( to this question.)Tj +-11.2295 -2.0667 TD +(The variable )Tj +/TT8 1 Tf +5.748 0 TD +(STRF)Tj +/TT6 1 Tf +2.4004 0 TD +( is set to )Tj +/TT8 1 Tf +3.8159 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( \(if this is answered )Tj +/TT8 1 Tf +8.8486 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(\) or )Tj +/TT8 1 Tf +1.7739 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 4885 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-2)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 186.6 568.2 Tm +(SAVE EXPRS?)Tj +/TT6 1 Tf +7.9333 0 TD +0.3033 Tw +(This question asks whether the original defining )Tj +/TT8 1 Tf +23.7395 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.3033 Tw +(s of)Tj +-26.1399 -1.2889 TD +0.3244 Tw +[(functions should be saved. If answered )]TJ +/TT8 1 Tf +20.0431 0 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.3244 Tw +(, then before)Tj +-21.8434 -1.2889 TD +0.3456 Tw +(redefining a function to its compiled definition, the )Tj +/TT8 1 Tf +25.5984 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +-25.5984 -1.2889 TD +0.11 Tw +[(definition is saved on the property list of the function name.)]TJ +0 -1.2222 TD +0 Tw +(Otherwise they are discarded.)Tj +0 -2 TD +0.13 Tw +(It is very useful to save the )Tj +/TT8 1 Tf +12.993 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.13 Tw +[( definitions, just in case the)]TJ +-15.3934 -1.2889 TD +0.0522 Tw +[(compiled function needs to be changed. The editing functions)]TJ +0 -1.2222 TD +0.3867 Tw +(will retrieve this saved definition if it exists, rather than)Tj +T* +0 Tw +(reading from a source file.)Tj +0 -2 TD +(The variable )Tj +/TT8 1 Tf +5.748 0 TD +(SVFLG)Tj +/TT6 1 Tf +3.0005 0 TD +( is set to )Tj +/TT8 1 Tf +3.8159 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( \(if this is answered )Tj +/TT8 1 Tf +8.8486 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(\) or )Tj +/TT8 1 Tf +1.7739 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-35.921 -2.2156 TD +(OUTPUT FILE?)Tj +/TT6 1 Tf +8.5333 0 TD +0.6122 Tw +(This question asks whether \(and where\) the compiled)Tj +0 -1.2889 TD +0.0011 Tw +(definitions should be written into a file for later loading. If you)Tj +0 -1.2222 TD +0.1278 Tw +[(answer with the name of a file, that file will be used. If you)]TJ +T* +0 Tw +(answer )Tj +/TT8 1 Tf +3.5061 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +[( or )]TJ +/TT8 1 Tf +1.5254 0 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +[(, you will be asked the name of the file. If the)]TJ +-7.4318 -1.2889 TD +0.0744 Tw +[(file named is already open, it will continue to be used. If you)]TJ +0 -1.2222 TD +0 Tw +(answer )Tj +/TT8 1 Tf +3.4683 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0011 Tc +0.0033 Tw +( or )Tj +/TT8 1 Tf +1.4498 0 TD +0 Tc +0 Tw +(TTY)Tj +/TT10 1 Tf +1.8003 0 TD +(:)Tj +/TT6 1 Tf +0.6001 0 TD +0.0044 Tw +(, the output will be typed on the teletype \(not)Tj +-7.9186 -1.2889 TD +0.1044 Tw +[(particularly useful\). If you answer )]TJ +/TT8 1 Tf +16.2248 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.6044 0 TD +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +0.1044 Tw +(, or )Tj +/TT8 1 Tf +1.8998 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1044 Tw +(, output will)Tj +/TT12 1 Tf +-22.3296 -1.2889 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +( be done.)Tj +-1.333 -2 TD +(The variable )Tj +/TT8 1 Tf +5.748 0 TD +(LCFIL)Tj +/TT6 1 Tf +3.0005 0 TD +( is set to the name of the file.)Tj +-23.4152 -2.9556 TD +0.1511 Tw +(To make answering these questions easier, there are four other possible answers to the )Tj +/TT8 1 Tf +40.5243 0 TD +0 Tw +(LISTING?)Tj +/TT6 1 Tf +-40.5243 -1.2889 TD +(question, which specify common compiling modes:)Tj +/TT10 1 Tf +12.7333 -2.1489 TD +1.3332 Tc +(SS)Tj +/TT6 1 Tf +2.5334 0 TD +0 Tc +0.3122 Tw +[(ame as last setting. Uses the same answers to compiler)]TJ +-0.6001 -1.2889 TD +0 Tw +(questions as given for the last compilation.)Tj +/TT10 1 Tf +-1.9333 -2.1489 TD +(F)Tj +/TT6 1 Tf +1.9333 0 TD +(Compile to )Tj +/TT10 1 Tf +5.1719 0 TD +(F)Tj +/TT6 1 Tf +0.6001 0 TD +(ile, without redefining functions.)Tj +/TT10 1 Tf +-8.3053 -2.2156 TD +[(ST)-1333.1(ST)]TJ +/TT6 1 Tf +3.7335 0 TD +(ore new definitions, saving )Tj +/TT8 1 Tf +12.2388 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +( definitions)Tj +/TT14 1 Tf +10 0 0 10 445.6069 227.04 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 229.8 207.1 Tm +[(STF)-1333(ST)]TJ +/TT6 1 Tf +4.3335 0 TD +(ore new definitions; )Tj +/TT10 1 Tf +9.0708 0 TD +(F)Tj +/TT6 1 Tf +0.6001 0 TD +(orget )Tj +/TT8 1 Tf +2.5522 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +( definitions.)Tj +-30.4904 -2.9556 TD +0.0567 Tw +(Implicit in these answers are the answers to the questions on disposition of compiled code and )Tj +/TT8 1 Tf +42.9218 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +-42.9218 -1.2889 TD +0.1489 Tw +(definitions, so the questions )Tj +/TT8 1 Tf +13.1932 0 TD +0 Tw +(REDEFINE?)Tj +/TT6 1 Tf +5.4009 0 TD +0.1489 Tw +[( and )]TJ +/TT8 1 Tf +2.4906 0 TD +0.3578 Tw +(SAVE EXPRS?)Tj +/TT6 1 Tf +6.9589 0 TD +0.1489 Tw +[( would not be asked if these answers)]TJ +-28.0436 -1.2889 TD +0 Tw +(were given. )Tj +/TT8 1 Tf +5.6602 0 TD +(OUTPUT FILE?)Tj +/TT6 1 Tf +7.2012 0 TD +( would still be asked, however. For example:)Tj +/TT15 1 Tf +-2.1947 -2.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(COMPILE\(\(FACT FACT1 FACT2\)\))Tj +-0.9868 -1 TD +(LISTING? ST)Tj +T* +(OUTPUT FILE? FACT.DCOM)Tj +T* +(\(FACT COMPILING\))Tj +T* +(.)Tj +T* +(.)Tj +T* +(\(FACT REDEFINED\))Tj +T* +(.)Tj +T* +(.)Tj +T* +(\(FACT2 REDEFINED\))Tj +T* +(\(FACT FACT1 FACT2\))Tj +/TT15 1 Tf +0 -1.0667 TD +<0040>Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT15 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +18 0 obj +<< +/Length 6382 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-3)Tj +/TT6 1 Tf +-42.8333 60.6156 TD +0.2533 Tw +(This process caused the functions )Tj +/TT8 1 Tf +16.3174 0 TD +0 Tw +(FACT)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.7533 0 TD +(FACT1)Tj +/TT6 1 Tf +3.0005 0 TD +0.2533 Tw +(, and )Tj +/TT8 1 Tf +2.9495 0 TD +0 Tw +(FACT2)Tj +/TT6 1 Tf +3.0005 0 TD +0.2533 Tw +[( to be compiled, redefined, and the)]TJ +-28.4217 -1.2889 TD +0 Tw +(compiled definitions also written on the file )Tj +/TT8 1 Tf +19.5547 0 TD +(FACT.DCOM)Tj +/TT6 1 Tf +5.4009 0 TD +( for subsequent loading.)Tj +/TT4 1 Tf +10 0 0 10 54 515 Tm +(Compiler Printout)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 512.29 m +510.01 512.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 490.34 Tm +0.3 Tw +(In Medley, for each function )Tj +/TT17 1 Tf +14.2666 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.3 Tw +[( compiled, whether by )]TJ +/TT8 1 Tf +11.3821 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.8 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.3 Tw +(, or )Tj +/TT8 1 Tf +2.2909 0 TD +0 Tw +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.3 Tw +(, the)Tj +-43.142 -1.2889 TD +0 Tw +(compiler prints:)Tj +/TT8 1 Tf +9.3333 -2 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ARG)Tj +1.7996 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ARG)Tj +1.7997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\) \(uses:)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAR)Tj +1.7992 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\) \(calls: )Tj +/TT17 1 Tf +6.001 0 TD +(FN)Tj +1.199 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\)\))Tj +/TT6 1 Tf +-43.1333 -2.9556 TD +0.1522 Tw +(The message is printed at the beginning of the second pass of the compilation of )Tj +/TT17 1 Tf +37.8839 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1522 Tw +(. )Tj +/TT8 1 Tf +1.0544 0 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(ARG)Tj +1.8025 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT10 1 Tf +0.4022 0 TD +(...)Tj +/TT17 1 Tf +-43.5433 -1.5111 TD +(ARG)Tj +1.8 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( is the list of arguments to )]TJ +/TT17 1 Tf +11.9009 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +(; following uses: are the free variables referenced or set in )Tj +/TT17 1 Tf +25.956 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +[( \(not)]TJ +-43.2574 -1.5111 TD +0 Tw +(including global variables\); following calls)Tj +/TT8 1 Tf +18.7891 0 TD +(:)Tj +/TT6 1 Tf +0.6001 0 TD +( are the undefined functions called within )Tj +/TT17 1 Tf +18.7349 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +-39.3242 -2.9556 TD +0.06 Tw +(If the compilation of )Tj +/TT17 1 Tf +9.4768 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.06 Tw +[( causes the generation of one or more auxilary functions, a compiler message)]TJ +-10.677 -1.2889 TD +0 Tw +(will be printed for these functions before the message for )Tj +/TT17 1 Tf +25.4102 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(, e.g.,)Tj +/TT8 1 Tf +-17.277 -2 TD +(\(FOOA0027 \(X\) \(uses: XX\)\))Tj +0 -1.2222 TD +(\(FOO \(A B\)\))Tj +/TT6 1 Tf +-9.3333 -2.7333 TD +0.0078 Tw +(When compiling a block, the compiler first prints)Tj +/TT19 1 Tf +21.7776 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.2578 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BLKNAME)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.2578 0 TD +(BLKFN)Tj +3.0027 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT17 1 Tf +0.2578 0 TD +(BLKFN)Tj +3 -0.2222 TD +(2)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.2578 0 TD +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[(. Then the normal)]TJ +-37.2126 -1.5111 TD +0.1189 Tw +[(message is printed for the entire block. The names of the arguments to the block are generated by)]TJ +0 -1.2222 TD +0 Tw +(suffixing )Tj +/TT8 1 Tf +4.1903 0 TD +(#)Tj +/TT6 1 Tf +0.6001 0 TD +0.0111 Tw +[( and a number to the block name, e.g., )]TJ +/TT8 1 Tf +17.4275 0 TD +0.0267 Tw +(\(FOOBLOCK \(FOOBLOCK#0 FOOBLOCK#1\))Tj +/TT19 1 Tf +19.8566 0 TD +0 Tw +( )Tj +/TT17 1 Tf +0.2611 0 TD +(FREE-)Tj +-42.3356 -1.2889 TD +(VARIABLES)Tj +/TT8 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(. Then a message is printed for each )Tj +/TT12 1 Tf +16.2793 0 TD +(entry)Tj +/TT6 1 Tf +2.1675 0 TD +( to the block.)Tj +-24.4478 -2.9556 TD +0.0689 Tw +(In addition to the above output, both )Tj +/TT8 1 Tf +17.074 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0689 Tw +[( and )]TJ +/TT8 1 Tf +2.3307 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +[( print the name of each function)]TJ +-30.8065 -1.2889 TD +0.2311 Tw +[(that is being copied from the old compiled file to the new compiled file. The normal compiler)]TJ +0 -1.2222 TD +0 Tw +(message is printed for each function that is actually compiled.)Tj +0 -2.8889 TD +0.2278 Tw +[(The compiler prints out error messages when it encounters problems compiling a function. For)]TJ +0 -1.2222 TD +0 Tw +(example:)Tj +/TT8 1 Tf +9.3333 -1.9333 TD +(----- In BAZ:)Tj +0 -1.2222 TD +(***** \(BAZ - illegal RETURN\))Tj +T* +(-----)Tj +/TT6 1 Tf +-9.3333 -2.7333 TD +0.0344 Tw +(The above error message indicates that an )Tj +/TT8 1 Tf +19.0268 0 TD +0.0822 Tw +(illegal RETURN)Tj +/TT6 1 Tf +8.4836 0 TD +0.0344 Tw +[( compiler error occurred while trying to)]TJ +-27.5103 -1.2889 TD +0.25 Tw +(compile the function )Tj +/TT8 1 Tf +10.1289 0 TD +0 Tw +(BAZ)Tj +/TT6 1 Tf +1.8003 0 TD +0.25 Tw +[(. Some compiler errors cause the compilation to terminate, producing)]TJ +-11.9292 -1.2889 TD +0.04 Tw +[(nothing; however, there are other compiler errors which do not stop compilation. The compiler error)]TJ +0 -1.2222 TD +0 Tw +(messages are described in the last section of this chapter.)Tj +0 -2.8889 TD +0.0422 Tw +(Compiler printout and error messages go to the file )Tj +/TT8 1 Tf +23.3219 0 TD +0 Tw +(COUTFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0422 Tw +(, initially )Tj +/TT8 1 Tf +4.2539 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +(. )Tj +/TT8 1 Tf +0.8344 0 TD +0 Tw +(COUTFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0422 Tw +[( can also be set)]TJ +-38.6119 -1.2889 TD +0.06 Tw +(to the name of a file opened for output, in which case all compiler printout will go to )Tj +/TT8 1 Tf +38.6991 0 TD +0 Tw +(COUTFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.06 Tw +(, i.e.)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +23 0 obj +<< +/Length 5849 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-4)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0456 Tw +[(the compiler will compile "silently." However, any error messages will be printed to both )]TJ +/TT8 1 Tf +40.5247 0 TD +0 Tw +(COUTFILE)Tj +/TT6 1 Tf +-40.5247 -1.2889 TD +(as well as )Tj +/TT8 1 Tf +4.4927 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 515 Tm +(Global Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 512.29 m +558.01 512.29 l +S +BT +/TT6 1 Tf +9 0 0 9 126 490.34 Tm +0.0556 Tw +(Variables that appear on the list )Tj +/TT8 1 Tf +14.6463 0 TD +0 Tw +(GLOBALVARS)Tj +/TT6 1 Tf +6.001 0 TD +0.0556 Tw +(, or have the property )Tj +/TT8 1 Tf +10.1313 0 TD +0 Tw +(GLOBALVAR)Tj +/TT6 1 Tf +5.4009 0 TD +0.0556 Tw +[( with value )]TJ +/TT8 1 Tf +5.3879 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +(, or are)Tj +-42.1674 -1.2889 TD +0.0267 Tw +(declared with the )Tj +/TT8 1 Tf +8.06 0 TD +0 Tw +(GLOBALVARS)Tj +/TT6 1 Tf +6.001 0 TD +0.0267 Tw +[( file package command, are called global variables. Such variables are)]TJ +-14.061 -1.2889 TD +0.0967 Tw +[(always accessed through their top level value when they are used freely in a compiled function. In)]TJ +0 -1.2222 TD +0.0944 Tw +(other words, a reference to the value of a global variable is equivalent to calling )Tj +/TT8 1 Tf +36.7253 0 TD +0 Tw +(GETTOPVAL)Tj +/TT6 1 Tf +5.4009 0 TD +0.0944 Tw +[( on the)]TJ +-42.1261 -1.2889 TD +0.19 Tw +[(variable, regardless of whether or not it is bound in the current access chain. Similarly,)]TJ +/TT8 1 Tf +41.2768 0 TD +0.4556 Tw +[( \(SETQ)]TJ +/TT17 1 Tf +-41.2768 -1.2889 TD +0 Tw +(VARIABLE)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( will compile as )Tj +/TT8 1 Tf +7.1655 0 TD +(\(SETTOPVAL \(QUOTE)Tj +/TT19 1 Tf +10.2017 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VARIABLE)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-35.52 -2.9556 TD +0.12 Tw +[(All system parameters, unless otherwise specified, are declared as global variables. Thus, )]TJ +/TT12 1 Tf +41.4194 0 TD +0 Tw +(rebinding)Tj +/TT6 1 Tf +-41.4194 -1.2222 TD +0.02 Tw +(these variables in a deep bound system like Medley will not affect the behavior of the system: instead,)Tj +T* +0.0733 Tw +(the variables must be )Tj +/TT12 1 Tf +9.9467 0 TD +0 Tw +(reset)Tj +/TT6 1 Tf +1.8896 0 TD +0.0733 Tw +[( to their new values, and if they are to be restored to their original values,)]TJ +-11.8363 -1.2222 TD +0 Tw +(reset again. For example, you might write)Tj +/TT8 1 Tf +9.3333 -2 TD +(\(SETQ)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(GLOBALVARIABLE)Tj +/TT19 1 Tf +8.4014 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT17 1 Tf +-16.7026 -1.0667 TD +(FORM)Tj +/TT8 1 Tf +T* +(\(SETQ)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(GLOBALVARIABLE)Tj +/TT19 1 Tf +8.4014 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(OLDVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +-26.036 -2.7333 TD +0.06 Tw +(In this case, if an error occurred during the evaluation of )Tj +/TT17 1 Tf +25.8685 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.06 Tw +(, or a Control-D was typed, the global)Tj +-28.2689 -1.2889 TD +0.0978 Tw +[(variable would not be restored to its original value. The function )]TJ +/TT8 1 Tf +30.2075 0 TD +0 Tw +(RESETVAR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0978 Tw +[( provides a convenient)]TJ +-35.0083 -1.2889 TD +0.0289 Tw +(way of resetting global variables in such a way that their values are restored even if an error occurred)Tj +0 -1.2222 TD +0 Tw +(or Control-D is typed.)Tj +3.3333 -2 TD +0.4844 Tw +[(Note:)-901.2(The variables that a given function accesses as global variables can be)]TJ +3.3333 -1.2222 TD +0 Tw +(determined by using the function )Tj +/TT8 1 Tf +15.0454 0 TD +(CALLS)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 205.4 Tm +(Local Variables and Special Variables)Tj +ET +102.01 202.69 m +558.01 202.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 180.74 Tm +0.0311 Tw +(In normal compiled and interpreted code, all variable bindings are accessible by lower level functions)Tj +0 -1.2222 TD +0.1111 Tw +[(because the variables name is associated with its value. We call such variables )]TJ +/TT12 1 Tf +36.7216 0 TD +0 Tw +(special)Tj +/TT6 1 Tf +2.6851 0 TD +0.1111 Tw +[( variables, or)]TJ +-39.4066 -1.2222 TD +0.0811 Tw +[(specvars. As mentioned earlier, the block compiler normally does )]TJ +/TT12 1 Tf +30.2637 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0811 Tw +[( associate names with variable)]TJ +-31.5968 -1.2222 TD +0.0822 Tw +[(values. Such unnamed variables are not accessible from outside the function which binds them and)]TJ +T* +0 Tw +(are therefore )Tj +/TT12 1 Tf +5.8882 0 TD +(local)Tj +/TT6 1 Tf +1.8506 0 TD +( to that function. We call such unnamed variables local variables, or localvars.)Tj +-7.7388 -2.8889 TD +0.0189 Tw +(The time economies of local variables can be achieved without block compiling by use of declarations.)Tj +0 -1.2222 TD +0.1278 Tw +(Using local variables will increase the speed of compiled code; the price is the work of writing the)Tj +T* +0 Tw +(necessary specvar declarations for those variables which need to be accessed from outside the block.)Tj +/TT8 1 Tf +0 -2.8889 TD +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.3311 Tw +[( and )]TJ +/TT8 1 Tf +2.8551 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.3311 Tw +[( are variables that affect compilation. During regular compilation,)]TJ +/TT8 1 Tf +-13.0568 -1.2889 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1522 Tw +[( is normally )]TJ +/TT8 1 Tf +5.9655 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1522 Tw +(, and )Tj +/TT8 1 Tf +2.7473 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1522 Tw +[( is )]TJ +/TT8 1 Tf +1.5193 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1522 Tw +[( or a list. This configuration causes all variables)]TJ +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +26 0 obj +<< +/Length 4944 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-5)Tj +/TT6 1 Tf +-42.8333 60.6156 TD +(bound in the functions being compiled to be treated as special )Tj +/TT12 1 Tf +27.6172 0 TD +(except)Tj +/TT6 1 Tf +2.5186 0 TD +( those that appear on )Tj +/TT8 1 Tf +9.5454 0 TD +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-45.082 -1.2889 TD +0.0244 Tw +(During block compilation, )Tj +/TT8 1 Tf +11.9654 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0244 Tw +[( is normally )]TJ +/TT8 1 Tf +5.5821 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0244 Tw +[( and )]TJ +/TT8 1 Tf +2.2418 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0244 Tw +[( is )]TJ +/TT8 1 Tf +1.2637 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +[( or a list. All variables are)]TJ +-33.6551 -1.2889 TD +0 Tw +(then treated as local )Tj +/TT12 1 Tf +9.0811 0 TD +(except)Tj +/TT6 1 Tf +2.5186 0 TD +( those that appear on )Tj +/TT8 1 Tf +9.5454 0 TD +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-25.9458 -2.9556 TD +0.0367 Tw +(Declarations to set )Tj +/TT8 1 Tf +8.5128 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0367 Tw +[( and )]TJ +/TT8 1 Tf +2.2662 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0367 Tw +[( to other values, and therefore affect how variables are)]TJ +-20.9807 -1.2889 TD +0 Tw +(treated, may be used at several levels in the compilation process with varying scope.)Tj +2.6667 -2 TD +0.04 Tw +[(1.)-1916.7(The declarations may be included in the filecoms of a file, by using the )]TJ +/TT8 1 Tf +34.5983 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +-33.9316 -1.2889 TD +(and )Tj +/TT8 1 Tf +2.0262 0 TD +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0833 Tw +[( file package commands. The scope of the declaration is then the entire)]TJ +-6.827 -1.2889 TD +0 Tw +(file:)Tj +/TT8 1 Tf +6 -1.9333 TD +(... \(LOCALVARS . T\) \(SPECVARS X Y\) ...)Tj +/TT6 1 Tf +-6.6667 -2.0667 TD +0.0489 Tw +[(2.)-1916.7(The declarations may be included in block declarations; the scope is then the block,)]TJ +0.6667 -1.2222 TD +0 Tw +(e.g.,)Tj +/TT8 1 Tf +6 -1.9333 TD +(\(BLOCKS \(\(FOOBLOCK FOO FIE \(SPECVARS . T\) \(LOCALVARS)Tj +0 -1.2222 TD +(X\)\)\))Tj +/TT6 1 Tf +-6.6667 -2.0667 TD +0.0367 Tw +[(3.)-1916.7(The declarations may also appear in individual functions, or in )]TJ +/TT8 1 Tf +31.0753 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +(s or )Tj +/TT8 1 Tf +2.2159 0 TD +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +(s)Tj +-38.6256 -1.2889 TD +0.0311 Tw +(within a function, using the )Tj +/TT8 1 Tf +12.6121 0 TD +0 Tw +(DECLARE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( function. In this case, the scope of the declaration)]TJ +-16.8128 -1.2889 TD +0.0422 Tw +(is the function or the )Tj +/TT8 1 Tf +9.5983 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0422 Tw +[( or )]TJ +/TT8 1 Tf +1.5254 0 TD +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +0.0422 Tw +[( in which it appears. )]TJ +/TT8 1 Tf +9.7265 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0422 Tw +[( and )]TJ +/TT8 1 Tf +2.2773 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +-34.5293 -1.2889 TD +0.1589 Tw +(declarations must appear immediately after the variable list in the function, )Tj +/TT8 1 Tf +35.3323 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.1589 Tw +(, or)Tj +/TT8 1 Tf +-37.7327 -1.2889 TD +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +(, but intervening comments are permitted. For example: )Tj +/TT8 1 Tf +2.3994 -2 TD +(\(DEFINEQ \(\(FOO)Tj +2.6667 -1.2222 TD +(\(LAMBDA \(X Y\))Tj +2.6667 -1 TD +(\(DECLARE \(LOCALVARS Y\)\))Tj +-7.3333 -1 TD +[( )-6133.1(\(PROG \(X Y Z\))]TJ +T* +[( )-9399.9(\(DECLARE \(LOCALVARS X\)\))]TJ +10 -1 TD +(... ])Tj +/TT6 1 Tf +-17.3333 -2.7333 TD +0.0189 Tw +(If the above function is compiled \(non-block\), the outer )Tj +/TT8 1 Tf +24.773 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0189 Tw +[( will be special, the )]TJ +/TT8 1 Tf +8.7507 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0189 Tw +[( bound in the )]TJ +/TT8 1 Tf +6.2308 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0189 Tw +[( will)]TJ +-43.3551 -1.2889 TD +0 Tw +(be local, and both bindings of )Tj +/TT8 1 Tf +13.3232 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +( will be local.)Tj +-13.9233 -2.9556 TD +0.0633 Tw +(Declarations for )Tj +/TT8 1 Tf +7.4524 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0633 Tw +[( and )]TJ +/TT8 1 Tf +2.3195 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0633 Tw +[( can be used in two ways: either to cause variables to be)]TJ +-19.9736 -1.2889 TD +0.12 Tw +(treated the same whether the function\(s\) are block compiled or compiled normally, or to affect one)Tj +0 -1.2222 TD +0 Tw +(compilation mode while not affecting the default in the other mode. For example:)Tj +/TT8 1 Tf +7.3333 -1.9333 TD +(\(LAMBDA \(X Y\))Tj +4.6667 -1 TD +(\(DECLARE \(SPECVARS . T\)\))Tj +T* +(\(PROG \(Z\) ... ])Tj +/TT6 1 Tf +-12 -2.7333 TD +(will cause )Tj +/TT8 1 Tf +4.6567 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(Z)Tj +/TT6 1 Tf +0.6001 0 TD +( to be specvars for both block and normal compilation while)Tj +/TT8 1 Tf +-2.0666 -2 TD +(\(LAMBDA \(X Y\))Tj +4.6667 -1 TD +(\(DECLARE \(SPECVARS X\)\))Tj +T* +(... ])Tj +ET +endstream +endobj +27 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +29 0 obj +<< +/Length 7801 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-6)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0078 Tw +(will make )Tj +/TT8 1 Tf +4.6406 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0078 Tw +[( a specvar when block compiling, but when regular compiling the declaration will have no)]TJ +-5.2407 -1.2889 TD +0.0744 Tw +(effect, because the default value of specvars would be )Tj +/TT8 1 Tf +24.6417 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0744 Tw +(, and therefore )Tj +/TT12 1 Tf +6.9304 0 TD +0 Tw +(both)Tj +/TT6 1 Tf +1.7397 0 TD +( )Tj +/TT8 1 Tf +0.3244 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0744 Tw +[( and )]TJ +/TT8 1 Tf +2.3418 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0744 Tw +[( will be specvars)]TJ +-37.7783 -1.2889 TD +0 Tw +(by default.)Tj +0 -2.8889 TD +(Although )Tj +/TT8 1 Tf +4.5642 0 TD +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.05 Tw +[( and )]TJ +/TT8 1 Tf +2.2929 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.05 Tw +[( declarations have the same form as other components of block)]TJ +-17.0587 -1.2889 TD +0.2611 Tw +(declarations such as )Tj +/TT8 1 Tf +9.8986 0 TD +0.6278 Tw +(\(LINKFNS . T\))Tj +/TT6 1 Tf +9.0568 0 TD +0.2611 Tw +(, their operation is somewhat different because the two)Tj +-18.9554 -1.2889 TD +0.2778 Tw +(variables are not independent. )Tj +/TT8 1 Tf +15.3381 0 TD +0.6678 Tw +(\(SPECVARS . T\))Tj +/TT6 1 Tf +9.7369 0 TD +0.2778 Tw +[( will cause )]TJ +/TT8 1 Tf +5.7401 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.2778 Tw +[( to be set to )]TJ +/TT8 1 Tf +6.6443 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2778 Tw +(, and)Tj +/TT8 1 Tf +-42.8602 -1.2889 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0222 Tw +[( to be set to )]TJ +/TT8 1 Tf +5.3665 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT19 1 Tf +0.25 0 TD +( )Tj +/TT8 1 Tf +0.2722 0 TD +0.0544 Tw +(\(SPECVARS V1 V2 ...\))Tj +/TT6 1 Tf +12.1653 0 TD +0.0222 Tw +[( will have )]TJ +/TT12 1 Tf +4.9219 0 TD +0 Tw +(no)Tj +/TT6 1 Tf +1 0 TD +0.0222 Tw +[( effect if the value of )]TJ +/TT8 1 Tf +9.3555 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +-40.5326 -1.2889 TD +(is )Tj +/TT8 1 Tf +0.986 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0211 Tw +(, but if it is a list \(or )Tj +/TT8 1 Tf +8.9633 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\), )Tj +/TT8 1 Tf +0.8541 0 TD +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0211 Tw +[( will be set to the union of its prior value and )]TJ +/TT8 1 Tf +20.3637 0 TD +0.0522 Tw +(\(V1 V2 ...\))Tj +/TT6 1 Tf +6.7055 0 TD +0 Tw +(.)Tj +-45.0738 -1.2889 TD +0.0522 Tw +(The operation of )Tj +/TT8 1 Tf +7.7255 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0522 Tw +[( is analogous. Thus, to affect both modes of compilation one of the two)]TJ +-13.1264 -1.2889 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.333 0 TD +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +(\) must be declared )Tj +/TT8 1 Tf +8.4106 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( before specifying a list for the other.)Tj +-17.653 -2.0667 TD +0.0533 Tw +[(Note:)-901.2(The variables that a given function binds as local variables or accesses as special)]TJ +3.3333 -1.2222 TD +0 Tw +(variables can be determined by using the function )Tj +/TT8 1 Tf +22.3516 0 TD +(CALLS)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-28.6854 -2.0667 TD +(Note:)Tj +/TT8 1 Tf +3.3333 0 TD +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0456 Tw +[( and )]TJ +/TT8 1 Tf +2.284 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0456 Tw +[( declarations affect the compilation of local variables)]TJ +-12.4856 -1.2889 TD +0.3211 Tw +(within a function, but the arguments to functions are always accessible as)Tj +0 -1.2222 TD +0 Tw +(specvars. This can be changed by redefining the following function:)Tj +/TT8 1 Tf +-4 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DASSEM.SAVELOCALVARS)Tj +/TT8 1 Tf +11.9999 0 TD +( )Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +(\) )Tj +/TT14 1 Tf +10 0 0 10 290.4044 357.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 357.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0167 Tw +(This function is called by the compiler to determine whether argument information for )Tj +/TT17 1 Tf +38.7875 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +-38.7875 -1.2889 TD +0.0233 Tw +(should be written on the compiled file for )Tj +/TT17 1 Tf +18.8375 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0233 Tw +[(. If it returns )]TJ +/TT8 1 Tf +6.1079 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0233 Tw +(, the argument information)Tj +-27.9459 -1.2889 TD +0 Tw +(is )Tj +/TT12 1 Tf +0.9648 0 TD +(not)Tj +/TT6 1 Tf +1.333 0 TD +( saved, and the function is stored with arguments )Tj +/TT8 1 Tf +22.1426 0 TD +(U)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(V)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(W)Tj +/TT6 1 Tf +0.6001 0 TD +(, etc instead of the originals.)Tj +-27.2407 -2.0667 TD +(Initially, )Tj +/TT8 1 Tf +4.5353 0 TD +(DASSEM.SAVELOCALVARS)Tj +/TT6 1 Tf +12.002 0 TD +0.57 Tw +[( is defined to return )]TJ +/TT8 1 Tf +11.8529 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(. )Tj +/TT8 1 Tf +1.07 0 TD +1.3689 Tw +[( \(MOVD NILL)]TJ +-30.0603 -1.2889 TD +0 Tw +(DASSEM.SAVELOCALVARS\))Tj +/TT6 1 Tf +13.2022 0 TD +0.0622 Tw +[( causes the compiler to retain no local variable or argument)]TJ +-13.2022 -1.2889 TD +0.1 Tw +[(names. Alternatively, )]TJ +/TT8 1 Tf +10.2771 0 TD +0 Tw +(DASSEM.SAVELOCALVARS)Tj +/TT6 1 Tf +12.002 0 TD +0.1 Tw +[( could be redefined as a more complex)]TJ +-22.279 -1.2889 TD +0 Tw +(predicate, to allow finer discrimination.)Tj +/TT4 1 Tf +10 0 0 10 102 222.06 Tm +(Constants)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 219.35 m +558.01 219.35 l +S +BT +/TT6 1 Tf +9 0 0 9 126 197.4 Tm +0.0456 Tw +(Interlisp allows the expression of constructions which are intended to be description of their constant)Tj +0 -1.2222 TD +0.0422 Tw +[(values. The following functions are used to define constant values. The function )]TJ +/TT8 1 Tf +36.638 0 TD +0 Tw +(SELECTC)Tj +/TT6 1 Tf +4.2007 0 TD +0.0422 Tw +[( provides)]TJ +-40.8387 -1.2889 TD +0 Tw +(a mechanism for comparing a value to a number of constants.)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(CONSTANT)Tj +/TT4 1 Tf +10 0 0 10 198.6 152.46 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 201.3783 152.46 Tm +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 212.1801 152.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 152.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0278 Tw +(This function enables you to define that the expression )Tj +/TT17 1 Tf +24.6353 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0278 Tw +[( should be treated as a "constant")]TJ +-25.2354 -1.2889 TD +0.1011 Tw +[(value. When )]TJ +/TT8 1 Tf +6.3844 0 TD +0 Tw +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +0.1011 Tw +[( is interpreted, )]TJ +/TT17 1 Tf +6.9825 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( is evaluted each time it is encountered. If the)]TJ +/TT8 1 Tf +-18.7678 -1.2889 TD +0 Tw +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +( form is compiled, however, the expression will be evaluated only once.)Tj +-4.8008 -2.0667 TD +0.0456 Tw +(If the value of )Tj +/TT17 1 Tf +6.5562 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0456 Tw +[( has a readable print name, then it will be evaluated at compile-time, and)]TJ +-7.1563 -1.2889 TD +0.1711 Tw +(the value will be saved as a literal in the compiled functions definition, as if )Tj +/TT8 1 Tf +36.4011 0 TD +0 Tw +(\(QUOTE)Tj +/TT17 1 Tf +-36.4011 -1.2889 TD +(VALUE-OF-EXPRESSION)Tj +/TT8 1 Tf +11.4019 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( had appeared instead of )Tj +/TT8 1 Tf +11.2007 0 TD +(\(CONSTANT)Tj +/TT19 1 Tf +5.4009 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(EXPRESSION)Tj +/TT8 1 Tf +6.001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-35.4546 -2.0667 TD +0.0622 Tw +(If the value of )Tj +/TT17 1 Tf +6.6229 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( does not have a readable print name, then the expression )]TJ +/TT17 1 Tf +26.3646 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +[( itself will be)]TJ +-34.1877 -1.2889 TD +0.1011 Tw +[(saved with the function, and it will be evaluated when the function is first loaded. The)]TJ +ET +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +32 0 obj +<< +/Length 6047 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-7)Tj +/TT6 1 Tf +-37.5 60.6156 TD +0.31 Tw +(value will then be stored in the functions literals, and will be retrieved on future)Tj +0 -1.2222 TD +0 Tw +(references.)Tj +0 -2 TD +0.0411 Tw +(If a program needed a list of 30 )Tj +/TT8 1 Tf +14.3264 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0411 Tw +(s, you could specify )Tj +/TT8 1 Tf +9.1659 0 TD +0.1 Tw +(\(CONSTANT \(to 30 collect)Tj +-25.2926 -1.2889 TD +0 Tw +(NIL\)\))Tj +/TT6 1 Tf +3.0005 0 TD +0.0533 Tw +[( instead of )]TJ +/TT8 1 Tf +5.0018 0 TD +0.1289 Tw +(\(QUOTE \(NIL NIL ...\)\))Tj +/TT6 1 Tf +12.9887 0 TD +0.0533 Tw +[(. The former is more concise and displays)]TJ +-20.991 -1.2889 TD +0 Tw +(the important parameter much more directly than the latter.)Tj +/TT8 1 Tf +0 -2 TD +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +0.2156 Tw +[( can also be used to denote values that cannot be quoted directly, such as)]TJ +/TT8 1 Tf +-4.8008 -1.2889 TD +0.8389 Tw +(\(CONSTANT \(PACK NIL\)\))Tj +/TT6 1 Tf +14.2798 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.85 0 TD +0.8389 Tw +(\(CONSTANT \(ARRAY 10\)\))Tj +/TT6 1 Tf +14.2798 0 TD +0.35 Tw +[(. It is also useful to)]TJ +-29.4097 -1.2889 TD +0.0589 Tw +(parameterize quantities that are constant at run time but may differ at compile time, e.g.,)Tj +/TT8 1 Tf +0 -1.2222 TD +0.4644 Tw +(\(CONSTANT BITSPERWORD\))Tj +/TT6 1 Tf +13.6666 0 TD +0.1933 Tw +[( in a program is exactly equivalent to 36, if the variable)]TJ +/TT8 1 Tf +-13.6666 -1.2889 TD +0 Tw +(BITSPERWORD)Tj +/TT6 1 Tf +6.6011 0 TD +0.1733 Tw +[( is bound to 36 when the )]TJ +/TT8 1 Tf +12.3095 0 TD +0 Tw +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +0.1733 Tw +[( expression is evaluated at compile)]TJ +-23.7114 -1.2889 TD +0 Tw +(time.)Tj +0 -2 TD +0.09 Tw +(Whereas the function )Tj +/TT8 1 Tf +9.9731 0 TD +0 Tw +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +0.09 Tw +[( attempts to evaluate the expression as soon as possible)]TJ +-14.7739 -1.2889 TD +0.4678 Tw +(\(compile-time, load-time, or first-run-time\), other options are available, using the)Tj +0 -1.2222 TD +0 Tw +(folowing two function:)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(LOADTIMECONSTANT)Tj +/TT8 1 Tf +9.5999 0 TD +( )Tj +/TT17 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 210.0026 379 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 379 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0767 Tw +(Similar to )Tj +/TT8 1 Tf +4.7012 0 TD +0 Tw +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +0.0767 Tw +(, except that the evaluation of )Tj +/TT17 1 Tf +13.7388 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0767 Tw +[( is deferred until the compiled code)]TJ +-23.8409 -1.2889 TD +0.0856 Tw +[(for the containing function is loaded in. For example, )]TJ +/TT8 1 Tf +24.7955 0 TD +0.2044 Tw +(\(LOADTIMECONSTANT \(DATE\)\))Tj +/TT6 1 Tf +-24.7955 -1.2889 TD +0.0211 Tw +[(will return the date the code was loaded. If )]TJ +/TT8 1 Tf +19.6838 0 TD +0 Tw +(LOADTIMECONSTANT)Tj +/TT6 1 Tf +9.6016 0 TD +0.0211 Tw +[( is interpreted, it merely)]TJ +-29.2853 -1.2889 TD +0 Tw +(returns the value of )Tj +/TT17 1 Tf +8.9082 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-12.175 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DEFERREDCONSTANT)Tj +/TT4 1 Tf +10 0 0 10 193.8 304.66 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 196.5783 304.66 Tm +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 207.3801 304.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 304.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0033 Tw +(Similar to )Tj +/TT8 1 Tf +4.5545 0 TD +0 Tw +(CONSTANT)Tj +/TT6 1 Tf +4.8008 0 TD +0.0033 Tw +(, except that the evaluation of )Tj +/TT17 1 Tf +13.2988 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0001 Tc +0.0032 Tw +( is always deferred until the compiled)Tj +-23.2542 -1.2889 TD +0 Tc +0.0278 Tw +[(function is first run. This is useful when the storage for the constant is excessive so that it)]TJ +0 -1.2222 TD +0.7778 Tw +[(shouldnt be allocated until \(unless\) the function is actually invoked. If)]TJ +/TT8 1 Tf +T* +0 Tw +(DEFERREDCONSTANT)Tj +/TT6 1 Tf +9.6016 0 TD +( is interpreted, it merely returns the value of )Tj +/TT17 1 Tf +19.7876 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-32.6559 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(CONSTANTS)Tj +/TT4 1 Tf +10 0 0 10 156 231.52 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 158.7783 231.52 Tm +(VAR)Tj +1.8002 -0.2222 TD +(1)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAR)Tj +1.8 -0.2222 TD +(2)Tj +/TT12 1 Tf +0.6 0.2222 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(...)Tj +/TT12 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 251.9309 231.52 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 231.52 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.0667 TD +(Defines )Tj +/TT17 1 Tf +3.8596 0 TD +(VAR)Tj +1.8015 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +(, )Tj +/TT8 1 Tf +0.7478 0 TD +(...)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.4978 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.2478 Tw +[( \(unevaluated\) to be compile-time constants. Whenever the)]TJ +-11.7067 -1.5111 TD +0.0956 Tw +(compiler encounters a \(free\) reference to one of these constants, it will compile the form)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(\(CONSTANT)Tj +/TT19 1 Tf +5.4009 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAR)Tj +1.7991 -0.2222 TD +(i)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( instead.)Tj +-8.6501 -2.2889 TD +(If )Tj +/TT17 1 Tf +0.9821 0 TD +(VAR)Tj +1.8001 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0622 Tw +[( is a list of the form )]TJ +/TT8 1 Tf +9.1553 0 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.749 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0622 Tw +(, a free reference to the variable will compile as)Tj +/TT8 1 Tf +-18.6874 -1.5111 TD +0 Tw +(\(CONSTANT)Tj +/TT19 1 Tf +5.4009 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-8.6514 -2.0667 TD +0.0011 Tw +(The compiler prints a warning if user code attempts to bind a variable previously declared)Tj +0 -1.2222 TD +0 Tw +(as a constant.)Tj +0 -2 TD +(Constants can be saved using the )Tj +/TT8 1 Tf +14.8989 0 TD +(CONSTANTS)Tj +/TT6 1 Tf +5.4009 0 TD +( file package command.)Tj +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +35 0 obj +<< +/Length 6136 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-8)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Compiling Function Calls)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 126 543.54 Tm +0.04 Tw +(When compiling the call to a function, the compiler must know the type of the function, to determine)Tj +0 -1.2222 TD +0.0667 Tw +[(how the arguments should be prepared \(evaluated/unevaluated, spread/nospread\). There are three)]TJ +T* +0 Tw +(seperate cases: lambda, nlambda spread, and nlambda nospread functions.)Tj +0 -2.8889 TD +0.1356 Tw +(To determine which of these three cases is appropriate, the compiler will first look for a definition)Tj +0 -1.2222 TD +0.0578 Tw +[(among the functions in the file that is being compiled. The function can be defined anywhere in any)]TJ +T* +0.0267 Tw +(of the files given as arguments to )Tj +/TT8 1 Tf +15.0377 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +0.0644 Tw +(BRECOMPILE or RECOMPILE)Tj +/TT6 1 Tf +13.9311 0 TD +0.0267 Tw +[(. If the function is)]TJ +-37.2234 -1.2889 TD +0.0633 Tw +(not contained in the file, the compiler will look for other information in the variables )Tj +/TT8 1 Tf +38.5174 0 TD +0 Tw +(NLAMA)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5633 0 TD +(NLAML)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +-45.0817 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(LAMS)Tj +/TT6 1 Tf +2.4004 0 TD +(, which can be set by you:)Tj +/TT10 1 Tf +-1.6766 -2.5489 TD +(NLAMA)Tj +/TT14 1 Tf +10 0 0 10 177.0044 427.4 Tm +-0.0003 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 427.4 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +(\(For )Tj +/TT8 1 Tf +2.1612 0 TD +(NLAM)Tj +/TT6 1 Tf +2.4004 0 TD +(bda )Tj +/TT8 1 Tf +1.9952 0 TD +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0811 Tw +(toms\) A list of functions to be treated as nlambda nospread functions by)Tj +-7.1568 -1.2889 TD +0 Tw +(the compiler.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(NLAML)Tj +/TT14 1 Tf +10 0 0 10 177 376.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 376.86 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(\(For )Tj +/TT8 1 Tf +2.1967 0 TD +(NLAM)Tj +/TT6 1 Tf +2.4004 0 TD +(bda )Tj +/TT8 1 Tf +2.0307 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.1167 Tw +(ist\) A list of functions to be treated as nlambda spread functions by the)Tj +-7.228 -1.2889 TD +0 Tw +(compiler.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(LAMS)Tj +/TT14 1 Tf +10 0 0 10 171.6 326.32 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 326.32 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0389 Tw +[(A list of functions to be treated as lambda functions by the compiler. Note that including)]TJ +0 -1.2222 TD +0.0767 Tw +(functions on )Tj +/TT8 1 Tf +5.9121 0 TD +0 Tw +(LAMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0767 Tw +[( is only necessary to override in-core nlambda definitions, since in the)]TJ +-8.3125 -1.2889 TD +0 Tw +(absence of other information, the compiler assumes the function is a lambda.)Tj +0 -2 TD +0.22 Tw +(If the function is not contained in a file, or on the lists )Tj +/TT8 1 Tf +26.633 0 TD +0 Tw +(NLAMA)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.72 0 TD +(NLAML)Tj +/TT6 1 Tf +3.0005 0 TD +0.22 Tw +(, or )Tj +/TT8 1 Tf +2.1309 0 TD +0 Tw +(LAMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.22 Tw +(, the)Tj +-37.8852 -1.2889 TD +0.0078 Tw +[(compiler will look for a current definition in the Interlisp system, and use its type. If there)]TJ +0 -1.2222 TD +0 Tw +(is no current definition, next )Tj +/TT8 1 Tf +12.8022 0 TD +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +( is called:)Tj +/TT10 1 Tf +-23.2702 -2.5489 TD +(COMPILEUSERFN)Tj +/TT14 1 Tf +10 0 0 10 220.2 223.58 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 223.58 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.09 Tw +(When compiling a function call, if the function type cannot be found by looking in files,)Tj +0 -1.2222 TD +0.2267 Tw +(the variables )Tj +/TT8 1 Tf +6.3386 0 TD +0 Tw +(NLAMA)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.7267 0 TD +(NLAML)Tj +/TT6 1 Tf +3.0005 0 TD +0.2267 Tw +(, or )Tj +/TT8 1 Tf +2.1442 0 TD +0 Tw +(LAMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.2267 Tw +(, or at a current definition, then if the value of)Tj +/TT8 1 Tf +-17.6109 -1.2889 TD +0 Tw +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.09 Tw +[( is not )]TJ +/TT8 1 Tf +3.1889 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.09 Tw +(, the compiler calls \(the value of\) )Tj +/TT8 1 Tf +15.2667 0 TD +0 Tw +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.09 Tw +[( giving it)]TJ +-35.8585 -1.2889 TD +0.2767 Tw +(as arguments )Tj +/TT8 1 Tf +6.7252 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2767 Tw +[( of the form and the form itself, i.e., the compiler does )]TJ +/TT8 1 Tf +27.2702 0 TD +0 Tw +(\(APPLY*)Tj +-35.7957 -1.2889 TD +0.3644 Tw +(COMPILEUSERFN \(CDR)Tj +/TT19 1 Tf +11.1662 0 TD +0 Tw +( )Tj +/TT17 1 Tf +0.4011 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.4011 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1511 Tw +[(. If a non-)]TJ +/TT8 1 Tf +5.0673 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1511 Tw +[( value is returned, it is compiled)]TJ +-24.837 -1.2889 TD +0.0089 Tw +(instead of )Tj +/TT17 1 Tf +4.6096 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +[(. If )]TJ +/TT8 1 Tf +1.6966 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0089 Tw +[( is returned, the compiler compiles the original expression as a call)]TJ +-10.5068 -1.2889 TD +0 Tw +(to a lambda spread that is not yet defined.)Tj +/TT8 1 Tf +0 -2 TD +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.0989 Tw +[( is only called when the compiler encounters a )]TJ +/TT12 1 Tf +21.5995 0 TD +0 Tw +(list)Tj +/TT6 1 Tf +1.2778 0 TD +( )Tj +/TT8 1 Tf +0.3489 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0989 Tw +[( of which is not)]TJ +-32.8278 -1.2889 TD +0.0278 Tw +(the name of a defined function. You can instruct the compiler about how to compile other)Tj +0 -1.2222 TD +0 Tw +(data types via )Tj +/TT8 1 Tf +6.4292 0 TD +(COMPILETYPELST)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-14.8306 -2.0667 TD +0.0078 Tw +(CLISP uses )Tj +/TT8 1 Tf +5.2309 0 TD +0 Tw +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.0078 Tw +[( to tell the compiler how to compile iterative statements, )]TJ +/TT8 1 Tf +25.174 0 TD +0 Tw +(IF-)Tj +-38.2061 -1.2889 TD +(THEN-ELSE)Tj +/TT6 1 Tf +5.4009 0 TD +( statements, and pattern match constructs.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +38 0 obj +<< +/Length 6180 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-9)Tj +/TT6 1 Tf +-37.5 60.6156 TD +0.0378 Tw +(If the compiler cannot determine the function type by any of the means above, it assumes)Tj +0 -1.2222 TD +0 Tw +(that the function is a lambda function, and its arguments are to be evaluated.)Tj +0 -2 TD +(If there are nlambda functions called from the functions being compiled, and they are only)Tj +0 -1.2222 TD +0.03 Tw +(defined in a separate file, they must be included on )Tj +/TT8 1 Tf +23.1579 0 TD +0 Tw +(NLAMA)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( or )]TJ +/TT8 1 Tf +1.5009 0 TD +0 Tw +(NLAML)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +(, or the compiler will)Tj +-30.6598 -1.2889 TD +0.2444 Tw +(incorrectly assume that their arguments are to be evaluated, and compile the calling)Tj +0 -1.2222 TD +0.1344 Tw +(function correspondingly. This is only necessary if the compiler does not "know" about)Tj +T* +0.1033 Tw +[(the function. If the function is defined at compile time, or is handled via a macro, or is)]TJ +T* +0.29 Tw +(contained in the same group of files as the functions that call it, the compiler will)Tj +T* +0 Tw +(automatically handle calls to that function correctly.)Tj +/TT4 1 Tf +10 0 0 10 54 431.6 Tm +(FUNCTION and Functional Arguments)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 428.89 m +510.01 428.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 406.94 Tm +0.4033 Tw +(Compiling the function )Tj +/TT8 1 Tf +11.8042 0 TD +0 Tw +(FUNCTION)Tj +/TT6 1 Tf +4.8008 0 TD +0.4033 Tw +[( may involve creating and compiling a seperate "auxiliary)]TJ +-16.605 -1.2889 TD +0.0444 Tw +[(function", which will be called at run time. An auxiliary function is named by attaching a )]TJ +/TT8 1 Tf +40.5534 0 TD +0 Tw +(GENSYM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0444 Tw +[( to)]TJ +-44.154 -1.2889 TD +0.0222 Tw +(the end of the name of the function in which they appear, e.g., )Tj +/TT8 1 Tf +27.9417 0 TD +0 Tw +(FOOA0003)Tj +/TT6 1 Tf +4.8008 0 TD +0.0222 Tw +[(. For example, suppose )]TJ +/TT8 1 Tf +10.7849 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +-43.5275 -1.2889 TD +0.0156 Tw +(is defined as )Tj +/TT8 1 Tf +5.8211 0 TD +0.0378 Tw +(\(LAMBDA \(X\) ... \(FOO1 X \(FUNCTION ...\)\) ...\))Tj +/TT6 1 Tf +26.6687 0 TD +0.0156 Tw +[( and compiled. When )]TJ +/TT8 1 Tf +10.0592 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0156 Tw +[( is)]TJ +-44.3493 -1.2889 TD +0 Tw +(run, )Tj +/TT8 1 Tf +2.1756 0 TD +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +0.0956 Tw +[( will be called with two arguments, )]TJ +/TT8 1 Tf +16.5112 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0956 Tw +(, and )Tj +/TT8 1 Tf +2.634 0 TD +0 Tw +(FOOA000)Tj +/TT17 1 Tf +4.2007 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0956 Tw +[( and )]TJ +/TT8 1 Tf +2.384 0 TD +0 Tw +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +0.0956 Tw +[( will call )]TJ +/TT8 1 Tf +4.2696 0 TD +0 Tw +(FOOA000)Tj +/TT17 1 Tf +4.2007 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0956 Tw +[( each)]TJ +-42.9768 -1.2889 TD +0 Tw +(time it uses its functional argument.)Tj +0 -2.8889 TD +(Compiling )Tj +/TT8 1 Tf +5.0644 0 TD +(FUNCTION)Tj +/TT6 1 Tf +4.8008 0 TD +0.0644 Tw +[( will )]TJ +/TT12 1 Tf +2.3359 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0644 Tw +[( create an auxiliary function if it is a functional argument to a function)]TJ +-13.5342 -1.2889 TD +0.0511 Tw +(that compiles open, such as most of the mapping functions \()Tj +/TT8 1 Tf +27.0614 0 TD +0 Tw +(MAPCAR)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5511 0 TD +(MAPLIST)Tj +/TT6 1 Tf +4.2007 0 TD +0.0511 Tw +[(, etc.\). A considerable)]TJ +-35.4138 -1.2889 TD +0 Tw +(savings in time could be achieved by making )Tj +/TT8 1 Tf +20.1489 0 TD +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +( compile open via a computed macro, e.g.)Tj +/TT8 1 Tf +-15.216 -2 TD +(\(PUTPROP FOO1 MACRO)Tj +2 -1.2222 TD +( \(Z \(LIST \(SUBST \(CADADR Z\))Tj +0 -1 TD +[( )-6199.7(\(QUOTE FN\))]TJ +/TT17 1 Tf +8 -1 TD +(DEF)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +-4.467 -1 TD +(\(CAR Z\)\)\))Tj +/TT17 1 Tf +-14.6667 -2.7333 TD +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0811 Tw +[( is the definition of )]TJ +/TT8 1 Tf +8.9685 0 TD +0 Tw +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +0.0811 Tw +[( as a function of just its first argument, and )]TJ +/TT8 1 Tf +19.9849 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0811 Tw +[( is the name used for its)]TJ +-34.3544 -1.2889 TD +0.0644 Tw +[(functional argument in its definition. In this case, )]TJ +/TT8 1 Tf +22.787 0 TD +0.1533 Tw +(\(FOO1 X \(FUNCTION ...\)\))Tj +/TT6 1 Tf +14.2622 0 TD +0.0644 Tw +[( would compile as)]TJ +-37.0493 -1.2889 TD +0.0489 Tw +(an expression, containing the argument to )Tj +/TT8 1 Tf +19.1459 0 TD +0 Tw +(FUNCTION)Tj +/TT6 1 Tf +4.8008 0 TD +0.0489 Tw +[( as an open )]TJ +/TT8 1 Tf +5.4094 0 TD +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +0.0489 Tw +[( expression. Thus you save)]TJ +-32.9567 -1.2889 TD +0.0711 Tw +(not only the function call to )Tj +/TT8 1 Tf +12.8481 0 TD +0 Tw +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +0.0711 Tw +[(, but also each of the function calls to its functional argument. For)]TJ +-15.2484 -1.2889 TD +0.0811 Tw +(example, if )Tj +/TT8 1 Tf +5.2853 0 TD +0 Tw +(FOO1)Tj +/TT6 1 Tf +2.4004 0 TD +0.0811 Tw +[( operates on a list of length ten, eleven function calls will be saved. Of course, this)]TJ +-7.6857 -1.2889 TD +0 Tw +(savings in time costs space, and you must decide which is more important.)Tj +/TT4 1 Tf +10 0 0 10 54 118.8 Tm +(Open Functions)Tj +ET +54.01 116.09 m +510.01 116.09 l +S +BT +/TT6 1 Tf +9 0 0 9 78 94.14 Tm +0.1767 Tw +(When a function is called from a compiled function, a system routine is invoked that sets up the)Tj +0 -1.2222 TD +0.1489 Tw +[(parameter and control push lists as necessary for variable bindings and return information. If the)]TJ +T* +0.2289 Tw +(amount of time spent )Tj +/TT12 1 Tf +10.6255 0 TD +0 Tw +(inside)Tj +/TT6 1 Tf +2.3901 0 TD +0.2289 Tw +[( the function is small, this function calling time will be a significant)]TJ +-13.0157 -1.2222 TD +0.0189 Tw +[(percentage of the total time required to use the function. Therefore, many "small" functions, e.g., )]TJ +/TT8 1 Tf +43.2817 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +/TT8 1 Tf +-45.082 -1.2889 TD +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5089 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.5089 0 TD +(NOT)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5089 0 TD +(CONS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +[( are always compiled "open", i.e., they do not result in a function call. Other larger)]TJ +ET +endstream +endobj +39 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +41 0 obj +<< +/Length 6894 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-10)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0822 Tw +(functions such as )Tj +/TT8 1 Tf +8.1041 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5822 0 TD +0.1978 Tw +(SELECTQ, MAPC)Tj +/TT6 1 Tf +7.999 0 TD +0.0822 Tw +(, etc. are compiled open because they are frequently used.)Tj +-19.0858 -1.2889 TD +0.06 Tw +(You can make other functions compile open via )Tj +/TT8 1 Tf +21.7974 0 TD +0 Tw +(MACRO)Tj +/TT6 1 Tf +3.0005 0 TD +0.06 Tw +[( definitions. You can also affect the compiled)]TJ +-24.7979 -1.2889 TD +0 Tw +(code via )Tj +/TT8 1 Tf +3.9355 0 TD +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +( and )Tj +/TT8 1 Tf +2.4429 0 TD +(COMPILETYPELST)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 503.4 Tm +(COMPILETYPELST)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 500.69 m +558.01 500.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 478.74 Tm +0.1511 Tw +(Most of the compilers mechanism deals with how to handle forms \(lists\) and variables \(symbols\).)Tj +0 -1.2222 TD +0.1011 Tw +(You can affect the compilers behaviour with respect to lists and literal atoms in a number of ways,)Tj +T* +0.1333 Tw +(e.g. macros, declarations, )Tj +/TT8 1 Tf +11.7652 0 TD +0 Tw +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.1333 Tw +(, etc. )Tj +/TT8 1 Tf +2.899 0 TD +0 Tw +(COMPILETYPELST)Tj +/TT6 1 Tf +8.4014 0 TD +0.1333 Tw +[( allows you to tell the compiler)]TJ +-30.8669 -1.2889 TD +0.0244 Tw +(what to do when it encounters a data type )Tj +/TT12 1 Tf +19.0945 0 TD +0 Tw +(other)Tj +/TT6 1 Tf +2.0552 0 TD +0.0244 Tw +[( than a list or an atom. It is the facility in the compiler)]TJ +-21.1497 -1.2222 TD +0 Tw +(that corresponds to )Tj +/TT8 1 Tf +8.8027 0 TD +(DEFEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +( for the interpreter.)Tj +/TT10 1 Tf +-10.3368 -2.5489 TD +(COMPILETYPELST)Tj +/TT14 1 Tf +10 0 0 10 225.6 411.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 411.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2978 Tw +(A list of elements of the form )Tj +/TT8 1 Tf +15.1889 0 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TYPENAME)Tj +/TT19 1 Tf +4.8008 0 TD +( )Tj +/TT8 1 Tf +0.5478 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.5478 0 TD +(FUNCTION)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.2978 Tw +[(. Whenever the compiler)]TJ +-27.6863 -1.2889 TD +0.0211 Tw +(encounters a datum that is not a list and not an atom \(or a number\) in a context where the)Tj +0 -1.2222 TD +0.0067 Tw +(datum is being evaluated, the type name of the datum is looked up on )Tj +/TT8 1 Tf +31.3546 0 TD +0 Tw +(COMPILETYPELST)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-39.7559 -1.2889 TD +0.0056 Tw +(If an entry appears )Tj +/TT8 1 Tf +8.6126 0 TD +0 Tw +(CAR )Tj +/TT6 1 Tf +2.4148 0 TD +0.0056 Tw +(of which is equal to the type name, )Tj +/TT8 1 Tf +15.7197 0 TD +0 Tw +(CDR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0056 Tw +[( of that entry is applied to)]TJ +-28.5474 -1.2889 TD +0.0022 Tw +(the datum. If the value returned by this application is )Tj +/TT12 1 Tf +24.1201 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +( )Tj +/TT8 1 Tf +0.2522 0 TD +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0001 Tc +0.0021 Tw +( to the datum, then that value)Tj +-26.9056 -1.2889 TD +0 Tc +0.3044 Tw +[(is compiled instead. If the value )]TJ +/TT12 1 Tf +16.6995 0 TD +0 Tw +(is)Tj +/TT6 1 Tf +0.667 0 TD +( )Tj +/TT8 1 Tf +0.5544 0 TD +(EQ )Tj +/TT6 1 Tf +2.5303 0 TD +0.3044 Tw +(to the datum, or if there is no entry on)Tj +/TT8 1 Tf +-20.4512 -1.2889 TD +0 Tw +(COMPILETYPELST)Tj +/TT6 1 Tf +8.4014 0 TD +0.34 Tw +[( for this type name, the compiler simply compiles the datum as)]TJ +/TT8 1 Tf +-8.4014 -1.2889 TD +0 Tw +(\(QUOTE)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(DATUM)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 271.06 Tm +0.0001 Tc +-0.0001 Tw +(Compiling CLISP)Tj +ET +102.01 268.35 m +558.01 268.35 l +S +BT +/TT6 1 Tf +9 0 0 9 126 246.4 Tm +0 Tc +0.2344 Tw +(Since the compiler does not know about CLISP, in order to compile functions containing CLISP)Tj +0 -1.2222 TD +0 Tw +(constructs, the definitions must first be )Tj +/TT8 1 Tf +17.4439 0 TD +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +(ed. You can automate this process in several ways:)Tj +-18.9779 -2.0667 TD +0.49 Tw +[(1.)-1916.7(If the variable )]TJ +/TT8 1 Tf +10.518 0 TD +0 Tw +(DWIMIFYCOMPFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.49 Tw +[( is )]TJ +/TT8 1 Tf +2.1948 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.49 Tw +(, the compiler will always )Tj +/TT8 1 Tf +14.0789 0 TD +0 Tw +(DWIMIFY)Tj +/TT6 1 Tf +-35.1266 -1.2889 TD +(expressions before compiling them. )Tj +/TT8 1 Tf +16.2007 0 TD +(DWIMIFYCOMPFLG)Tj +/TT6 1 Tf +8.4014 0 TD +( is initially )Tj +/TT8 1 Tf +4.8843 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-31.9533 -2.0667 TD +0.05 Tw +[(2.)-1916.7(If a file has the property )]TJ +/TT8 1 Tf +13.8231 0 TD +0 Tw +(FILETYPE)Tj +/TT6 1 Tf +4.8008 0 TD +0.05 Tw +[( with value )]TJ +/TT8 1 Tf +5.3712 0 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +0.05 Tw +[( on its property list, )]TJ +/TT8 1 Tf +9.1504 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(,)Tj +/TT8 1 Tf +-39.0799 -1.2889 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5767 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0767 Tw +(, and )Tj +/TT8 1 Tf +2.5962 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0767 Tw +[( will operate as though )]TJ +/TT8 1 Tf +10.7857 0 TD +0 Tw +(DWIMIFYCOMPFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.0767 Tw +[( is )]TJ +/TT8 1 Tf +1.3682 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +-38.7305 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +( all expressions before compiling.)Tj +-6.8102 -2.0667 TD +0.0167 Tw +[(3.)-1916.7(If the function definition has a local )]TJ +/TT8 1 Tf +18.7072 0 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +0.0167 Tw +[( declaration, including a null declaration,)]TJ +-21.041 -1.2889 TD +0 Tw +(i.e., just )Tj +/TT8 1 Tf +3.6069 0 TD +(\(CLISP:\))Tj +/TT6 1 Tf +4.8008 0 TD +(, the definition will be automatically )Tj +/TT8 1 Tf +16.2656 0 TD +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +(ed before compiling.)Tj +-26.874 -2.0667 TD +(Note:)Tj +/TT8 1 Tf +2.6667 0 TD +(COMPILEUSERFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.26 Tw +[( is defined to call )]TJ +/TT8 1 Tf +9.0485 0 TD +0 Tw +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +0.26 Tw +[( on iterative statements, )]TJ +/TT8 1 Tf +11.8193 0 TD +0 Tw +(IF-)Tj +-32.8698 -1.2889 TD +(THEN)Tj +/TT6 1 Tf +2.4004 0 TD +0.2622 Tw +[( statements, and )]TJ +/TT8 1 Tf +8.2286 0 TD +0 Tw +(fetch)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.7622 0 TD +(replace)Tj +/TT6 1 Tf +4.2007 0 TD +0.2622 Tw +(, and )Tj +/TT8 1 Tf +2.9673 0 TD +0 Tw +(match)Tj +/TT6 1 Tf +3.0005 0 TD +0.2622 Tw +[( expressions, i.e., any)]TJ +-24.5602 -1.2889 TD +0.0111 Tw +(CLISP construct which can be recognized by its )Tj +/TT8 1 Tf +21.2886 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0111 Tw +[( of form. Thus, if the only)]TJ +-23.0889 -1.2889 TD +0.33 Tw +(CLISP constructs in a function appear inside of iterative statements, )Tj +/TT8 1 Tf +33.4636 0 TD +0 Tw +(IF)Tj +/TT6 1 Tf +-33.4636 -1.2889 TD +(statements, etc., the function does not have to be dwimified before compiling.)Tj +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +44 0 obj +<< +/Length 6110 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-11)Tj +/TT6 1 Tf +-42.3333 60.6156 TD +(If )Tj +/TT8 1 Tf +1.0977 0 TD +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +0.1778 Tw +[( is ever unsuccessful in processing a CLISP expression, it will print the error message)]TJ +/TT8 1 Tf +-5.2984 -1.2889 TD +0.0611 Tw +(UNABLE TO DWIMIFY)Tj +/TT6 1 Tf +10.3239 0 TD +0.0256 Tw +[( followed by the expression, and go into a break unless )]TJ +/TT8 1 Tf +24.7713 0 TD +0.0611 Tw +(DWIMESSGAG = T)Tj +/TT6 1 Tf +8.5236 0 TD +0.0256 Tw +[(. In)]TJ +-43.6188 -1.2889 TD +0.0022 Tw +(this case, the expression is just compiled as is, i.e. as though CLISP had not been enabled. You can exit)Tj +0 -1.2222 TD +0 Tw +(the break in one of these ways: )Tj +2.6667 -2 TD +[(1.)-1916.7(Type )]TJ +/TT8 1 Tf +5.3235 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.1578 Tw +[( to the break, which will cause the compiler to try again, e.g. you could)]TJ +-5.857 -1.2889 TD +0 Tw +(define some missing records while in the break, and then continue )Tj +-0.6667 -2 TD +[(2.)-1916.7(Type )]TJ +/TT15 1 Tf +5.2057 0 TD +<0042>Tj +/TT6 1 Tf +0.603 0 TD +0.04 Tw +(, which will cause the compiler to simply compile the expression as is, i.e. as)Tj +-5.1421 -1.2889 TD +0 Tw +(though CLISP had not been enabled in the first place)Tj +-0.6667 -2 TD +0.3 Tw +[( )300(3.)-1666.7(Return an expression to be compiled in its place by using the )]TJ +/TT8 1 Tf +33.3702 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.3 Tw +[( break)]TJ +-36.3041 -1.2889 TD +0 Tw +(command.)Tj +2 -2 TD +(Note:)Tj +/TT8 1 Tf +2.6667 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.8344 0 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.8344 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.3344 Tw +(, and )Tj +/TT8 1 Tf +3.1118 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.3344 Tw +[( all scan the entire file)]TJ +-23.3837 -1.2889 TD +0.0944 Tw +(before doing any compiling, and take note of the names of all functions that)Tj +0 -1.2222 TD +0.1778 Tw +(are defined in the file as well as the names of all variables that are set by)Tj +T* +0.1333 Tw +(adding them to )Tj +/TT8 1 Tf +7.443 0 TD +0 Tw +(NOFIXFNSLST)Tj +/TT6 1 Tf +6.6011 0 TD +0.1333 Tw +[( and )]TJ +/TT8 1 Tf +2.4595 0 TD +0 Tw +(NOFIXVARSLST)Tj +/TT6 1 Tf +7.2012 0 TD +0.1333 Tw +(, respectively. Thus, if a)Tj +-23.7048 -1.2889 TD +0.17 Tw +(function is not currently defined, but )Tj +/TT12 1 Tf +17.5854 0 TD +0 Tw +(is)Tj +/TT6 1 Tf +0.667 0 TD +0.17 Tw +[( defined in the file being compiled,)]TJ +-18.2524 -1.2222 TD +0 Tw +(when )Tj +/TT8 1 Tf +2.7926 0 TD +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +0.0656 Tw +[( is called before compiling, it will not attempt to interpret the)]TJ +-6.9933 -1.2889 TD +0.16 Tw +(function name as CLISP when it appears as )Tj +/TT8 1 Tf +20.6584 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.16 Tw +[( of a form. )]TJ +/TT8 1 Tf +5.8356 0 TD +0 Tw +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +0.16 Tw +[( also)]TJ +-32.495 -1.2889 TD +0.1989 Tw +(takes into account variables that have been declared to be )Tj +/TT8 1 Tf +27.6295 0 TD +0 Tw +(LOCALVARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1989 Tw +(, or)Tj +/TT8 1 Tf +-33.0304 -1.2889 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.3467 Tw +(, either via block declarations or )Tj +/TT8 1 Tf +16.4579 0 TD +0 Tw +(DECLARE)Tj +/TT6 1 Tf +4.2007 0 TD +0.3467 Tw +[( expressions in the)]TJ +-25.4594 -1.2889 TD +0.1567 Tw +(function being compiled, and does not attempt spelling correction on these)Tj +0 -1.2222 TD +0.1189 Tw +[(variables. The declaration )]TJ +/TT8 1 Tf +12.3623 0 TD +0 Tw +(USEDFREE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1189 Tw +[( may also be used to declare variables)]TJ +-17.1631 -1.2889 TD +0.1522 Tw +[(simply used freely in a function. These variables will also be left alone by)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +0.0556 Tw +[(. Finally, )]TJ +/TT8 1 Tf +4.4841 0 TD +0 Tw +(NOSPELLFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0556 Tw +[( is reset to )]TJ +/TT8 1 Tf +4.9122 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[( when compiling functions from)]TJ +-20.198 -1.2889 TD +0.1067 Tw +(a file \(as opposed to from their in-core definition\) so as to suppress spelling)Tj +0 -1.2222 TD +0 Tw +(correction.)Tj +/TT4 1 Tf +10 0 0 10 54 227.4 Tm +(Compiler Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 224.69 m +510.01 224.69 l +S +BT +/TT6 1 Tf +9 0 0 9 78 202.74 Tm +0.1622 Tw +(Normally, the compiler is envoked through file package commands that keep track of the state of)Tj +T* +0.0544 Tw +(functions, and manage a set of files, such as )Tj +/TT8 1 Tf +19.9661 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0544 Tw +[(. However, it is also possible to explicitly call)]TJ +-24.7669 -1.2889 TD +0.0222 Tw +[(the compiler using one of a number of functions. Functions may be compiled from in-core definitions)]TJ +0 -1.2222 TD +0 Tw +(\(via )Tj +/TT8 1 Tf +2.1967 0 TD +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2578 Tw +(\), or from definitions in files \()Tj +/TT8 1 Tf +14.5071 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.2578 Tw +(\), or from a combination of in-core and file)Tj +-24.5051 -1.2889 TD +0 Tw +(definitions \()Tj +/TT8 1 Tf +5.3389 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +(\).)Tj +/TT8 1 Tf +-10.7397 -2.9556 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +[( and )]TJ +/TT8 1 Tf +2.2195 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +[( produce "compiled" files. Compiled files usually have the same name as the)]TJ +-11.221 -1.2889 TD +0.1011 Tw +(symbolic file they were made from, suffixed with )Tj +/TT8 1 Tf +22.8235 0 TD +0 Tw +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1011 Tw +[( \(the compiled file extension is stored as the)]TJ +-25.2239 -1.2889 TD +0.1533 Tw +(value of the variable )Tj +/TT8 1 Tf +9.8917 0 TD +0 Tw +(COMPILE.EXT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1533 Tw +[(\). The file name is constructed from the name field only, e.g.,)]TJ +/TT8 1 Tf +-16.4927 -1.2889 TD +0.3622 Tw +(\(TCOMPL FOO.TEM;3\))Tj +/TT6 1 Tf +16.5649 0 TD +0.1511 Tw +[( produces )]TJ +/TT8 1 Tf +4.9048 0 TD +0 Tw +(FOO.DCOM)Tj +/TT6 1 Tf +4.8008 0 TD +0.1511 Tw +[( on the connected directory. The version)]TJ +-26.2704 -1.2889 TD +0 Tw +(number will be the standard default.)Tj +0 -2.8889 TD +(A "compiled file" contains the same expressions as the original symbolic file, except for the following:)Tj +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT15 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +49 0 obj +<< +/Length 8019 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-12)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 150 569.54 Tm +[( 1.)-1666.7(A )-100(special )]TJ +/TT8 1 Tf +7.1743 0 TD +(FILECREATED)Tj +/TT6 1 Tf +6.6011 0 TD +0.1 Tw +[( expression appears at the front of the file which contains)]TJ +-13.1087 -1.2889 TD +0.1778 Tw +(information used by the file package, and which causes the message )Tj +/TT8 1 Tf +32.3052 0 TD +0.4256 Tw +(COMPILED ON)Tj +/TT17 1 Tf +-32.3052 -1.2889 TD +0 Tw +(DATE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1922 Tw +[( to be printed when the file is loaded \(the actual string printed is the value of)]TJ +/TT8 1 Tf +-2.4004 -1.2889 TD +0 Tw +(COMPILEHEADER)Tj +/TT6 1 Tf +7.8013 0 TD +(\). )Tj +-8.4679 -2.0667 TD +[(2.)-1916.7(Every )]TJ +/TT8 1 Tf +5.7515 0 TD +(DEFINEQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.2289 Tw +[( in the symbolic file is replaced by the corresponding compiled)]TJ +-9.2855 -1.2889 TD +0 Tw +(definitions in the compiled file.)Tj +-0.6667 -2 TD +0.1411 Tw +[(3.)-1916.7(Expressions following a )]TJ +/TT8 1 Tf +13.9025 0 TD +0 Tw +(DONTCOPY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1411 Tw +[( tag inside of a )]TJ +/TT8 1 Tf +7.3945 0 TD +0 Tw +(DECLARE)Tj +/TT19 1 Tf +4.2007 0 TD +(:)Tj +/TT6 1 Tf +0.25 0 TD +0.1411 Tw +[( that appears in the)]TJ +-29.8818 -1.2889 TD +0 Tw +(symbolic file are not copied to the compiled file. )Tj +-3.3333 -2.8889 TD +0.0733 Tw +(The compiled definitions appear at the front of the compiled file, i.e., before the other expressions in)Tj +0 -1.2222 TD +0.0333 Tw +(the symbolic file, )Tj +/TT12 1 Tf +7.869 0 TD +(regardless of where they appear in the symbolic file.)Tj +/TT6 1 Tf +20.8883 0 TD +[( The only exceptions are expressions)]TJ +-28.7573 -1.2222 TD +0.0711 Tw +(that follow a )Tj +/TT8 1 Tf +6.0385 0 TD +0 Tw +(FIRST )Tj +/TT6 1 Tf +3.7706 0 TD +0.0711 Tw +(tag inside of a )Tj +/TT8 1 Tf +6.7234 0 TD +0 Tw +(DECLARE)Tj +/TT19 1 Tf +4.2007 0 TD +(:)Tj +/TT6 1 Tf +0.25 0 TD +0.0711 Tw +[(. This "compiled" file can be loaded into any Interlisp)]TJ +-20.9832 -1.2889 TD +0 Tw +(system with )Tj +/TT8 1 Tf +5.625 0 TD +(LOAD)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-2.6921 -2.0667 TD +0.2122 Tw +[(Note: )-1105.7(When a function is compiled from its in-core definition \(as opposed to)]TJ +2.6667 -1.2222 TD +0.0022 Tw +(being compiled from a definition in a file\), and the function has been modified)Tj +T* +0 Tw +(by )Tj +/TT8 1 Tf +1.3705 0 TD +(BREAK)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5111 0 TD +(TRACE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5111 0 TD +(BREAKIN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0111 Tw +(, or )Tj +/TT8 1 Tf +1.7131 0 TD +0 Tw +(ADVISE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0111 Tw +(, it is first restored to its original state,)Tj +-17.9081 -1.2889 TD +0.1678 Tw +(and a message is printed out, e.g., )Tj +/TT8 1 Tf +16.3722 0 TD +0.4022 Tw +(FOO UNBROKEN)Tj +/TT6 1 Tf +7.6034 0 TD +0.1678 Tw +[(. If the function is not)]TJ +-23.9756 -1.2889 TD +0.1667 Tw +(defined by an expr definition, the value of the functions )Tj +/TT8 1 Tf +26.8171 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.1667 Tw +[( property is)]TJ +-29.2175 -1.2889 TD +0.0067 Tw +[(used for the compilation, if there is one. If there is no)]TJ +/TT8 1 Tf +23.6396 0 TD +0.0178 Tw +[( EXPR)]TJ +/TT6 1 Tf +3.0183 0 TD +0.0067 Tw +[( property, and the)]TJ +-26.6578 -1.2889 TD +0.0511 Tw +(compilation is being performed by )Tj +/TT8 1 Tf +15.8137 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0511 Tw +(, the definition of the function)Tj +-21.2145 -1.2889 TD +0.1833 Tw +(is obtained from the file \(using )Tj +/TT8 1 Tf +14.9301 0 TD +0 Tw +(LOADFNS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1833 Tw +[(\). Otherwise, the compiler prints)]TJ +/TT8 1 Tf +-19.1308 -1.2889 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FN)Tj +/TT19 1 Tf +1.334 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(NOT COMPILEABLE\))Tj +/TT6 1 Tf +9.6016 0 TD +(, and goes on to the next function.)Tj +/TT8 1 Tf +-17.119 -2.4 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(COMPILE)Tj +/TT19 1 Tf +4.1999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(X)Tj +/TT12 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-29269.5([Function])]TJ +/TT17 1 Tf +-5.6338 -1.8444 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1511 Tw +[( is a list of functions \(if atomic, )]TJ +/TT8 1 Tf +14.9623 0 TD +0 Tw +(\(LIST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.4011 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1511 Tw +[( is used\). )]TJ +/TT8 1 Tf +5.019 0 TD +0 Tw +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1511 Tw +[( first asks the standard)]TJ +-29.3839 -1.2889 TD +0.1767 Tw +(compiler questions, and then compiles each function on )Tj +/TT17 1 Tf +26.2883 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1767 Tw +(, using its in-core definition.)Tj +-26.8884 -1.2889 TD +0 Tw +(Returns )Tj +/TT17 1 Tf +3.7271 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-4.3271 -2.0667 TD +(If compiled definitions are being written to a file, the file is closed unless )Tj +/TT17 1 Tf +32.2495 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( = T)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-39.1169 -2.4 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(COMPILE1)Tj +/TT19 1 Tf +4.7999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FN)Tj +/TT12 1 Tf +1.2002 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(DEF)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +[( )-28069.4([Function])]TJ +-6.8339 -1.8444 TD +(Compiles )Tj +/TT17 1 Tf +4.5036 0 TD +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tw +(, redefining )Tj +/TT17 1 Tf +5.4091 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.03 Tw +[( if )]TJ +/TT8 1 Tf +1.184 0 TD +0.0711 Tw +(STRF = T)Tj +/TT6 1 Tf +4.943 0 TD +0.03 Tc +0 Tw +( \()Tj +/TT8 1 Tf +0.613 0 TD +0 Tc +(STRF)Tj +/TT6 1 Tf +2.4004 0 TD +0.03 Tw +[( is one of the variables set by )]TJ +/TT8 1 Tf +13.1643 0 TD +0 Tw +(COMPSET)Tj +/TT6 1 Tf +4.2007 0 TD +(\).)Tj +/TT8 1 Tf +-39.4187 -1.2889 TD +(COMPILE1)Tj +/TT6 1 Tf +4.8008 0 TD +( is used by )Tj +/TT8 1 Tf +4.9409 0 TD +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(RECOMPILE.)Tj +/TT6 1 Tf +-20.4858 -2.0667 TD +(If )Tj +/TT8 1 Tf +1.0166 0 TD +(DWIMIFYCOMPFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.0967 Tw +[( is )]TJ +/TT8 1 Tf +1.4082 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0967 Tw +(, or )Tj +/TT17 1 Tf +1.8842 0 TD +0 Tw +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0967 Tw +[( contains a CLISP declaration, )]TJ +/TT17 1 Tf +13.9287 0 TD +0 Tw +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0967 Tw +[( is dwimified before)]TJ +-30.8397 -1.2889 TD +0 Tw +(compiling.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(TCOMPL)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT17 1 Tf +0.6001 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 225.6061 122.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 122.8 Tm +([Function])Tj +/TT8 1 Tf +-35.4033 -1.8444 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.2878 Tw +[( is used to "compile files"; given a symbolic )]TJ +/TT8 1 Tf +21.8493 0 TD +0 Tw +(LOAD)Tj +/TT6 1 Tf +2.4004 0 TD +0.2878 Tw +[( file \(e.g., one created by)]TJ +/TT8 1 Tf +-27.8503 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0367 Tw +(\), it produces a "compiled file". )Tj +/TT17 1 Tf +14.3411 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +[( is a list of symbolic files to be compiled)]TJ +-22.1424 -1.2889 TD +0.0333 Tw +(\(if atomic, )Tj +/TT8 1 Tf +4.7634 0 TD +0 Tw +(\(LIST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.2833 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is used\). )]TJ +/TT8 1 Tf +4.5479 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +[( asks the standard compiler questions, except)]TJ +-19.7963 -1.2889 TD +0.01 Tw +(for ")Tj +/TT8 1 Tf +1.905 0 TD +0.0244 Tw +(OUTPUT FILE:)Tj +/TT6 1 Tf +7.2256 0 TD +0.01 Tw +[(". The output from the compilation of each symbolic file is written on)]TJ +-9.1306 -1.2889 TD +0.1011 Tw +(a file of the same name suffixed with )Tj +/TT8 1 Tf +17.3216 0 TD +0 Tw +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1011 Tw +(, e.g., )Tj +/TT8 1 Tf +2.7374 0 TD +0.2422 Tw +(\(TCOMPL \(SYM1 SYM2\)\))Tj +/TT6 1 Tf +13.0865 0 TD +0.1011 Tw +[( produces)]TJ +-35.5459 -1.2889 TD +0 Tw +(two files, )Tj +/TT8 1 Tf +4.2739 0 TD +(SYM1.DCOM)Tj +/TT6 1 Tf +5.4009 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(SYM2.DCOM)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +50 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +52 0 obj +<< +/Length 8641 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-13)Tj +/TT8 1 Tf +-37 60.6156 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.4467 Tw +[( processes the files one at a time, reading in the entire file. For each)]TJ +/TT8 1 Tf +-3.6006 -1.2889 TD +0 Tw +(FILECREATED)Tj +/TT6 1 Tf +6.6011 0 TD +0.1167 Tw +[( expression, the list of functions that were marked as changed by the file)]TJ +-6.6011 -1.2889 TD +0.1044 Tw +(package is noted, and the )Tj +/TT8 1 Tf +11.9973 0 TD +0 Tw +(FILECREATED)Tj +/TT6 1 Tf +6.6011 0 TD +0.1044 Tw +[( expression is written onto the output file. For)]TJ +-18.5984 -1.2889 TD +0 Tw +(each )Tj +/TT8 1 Tf +2.3249 0 TD +(DEFINEQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.07 Tw +[( expression, )]TJ +/TT8 1 Tf +5.6268 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.07 Tw +[( adds any nlambda functions defined in the )]TJ +/TT8 1 Tf +20.0405 0 TD +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +-35.7934 -1.2889 TD +(to )Tj +/TT8 1 Tf +1.2154 0 TD +(NLAMA)Tj +/TT6 1 Tf +3.0005 0 TD +0.0933 Tw +[( or )]TJ +/TT8 1 Tf +1.6276 0 TD +0 Tw +(NLAML)Tj +/TT6 1 Tf +3.0005 0 TD +0.0933 Tw +(, and adds lambda functions to )Tj +/TT8 1 Tf +14.4892 0 TD +0 Tw +(LAMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0933 Tw +(, so that calls to these functions)Tj +-25.7336 -1.2889 TD +0.0078 Tw +(will be compiled correctly. )Tj +/TT8 1 Tf +12.2996 0 TD +0 Tw +(NLAMA)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5078 0 TD +(NLAML)Tj +/TT6 1 Tf +3.0005 0 TD +0.0078 Tw +(, and )Tj +/TT8 1 Tf +2.4584 0 TD +0 Tw +(LAMS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[( are rebound to their top level values)]TJ +-23.6672 -1.2889 TD +0 Tw +(\(using )Tj +/TT8 1 Tf +3.168 0 TD +(RESETVAR)Tj +/TT6 1 Tf +4.8008 0 TD +0.1289 Tw +(\) by all of the compiling functions, so that any additions to these lists)Tj +-7.9687 -1.2889 TD +[(while inside of these functions will not propagate outside. Expressions beginning with)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(DECLARE:)Tj +/TT6 1 Tf +4.8008 0 TD +0.0311 Tw +[( are processed specially. All other expressions are collected to be subsequently)]TJ +-4.8008 -1.2889 TD +0 Tw +(written onto the output file.)Tj +0 -2 TD +0.07 Tw +(After processing the file in this fashion, )Tj +/TT8 1 Tf +18.0779 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.07 Tw +[( compiles each function, except for those)]TJ +-21.6785 -1.2889 TD +0.2811 Tw +(functions which appear on the list )Tj +/TT8 1 Tf +16.9738 0 TD +0 Tw +(DONTCOMPILEFNS)Tj +/TT6 1 Tf +8.4014 0 TD +0.2811 Tw +[( \(initially )]TJ +/TT8 1 Tf +4.8147 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2811 Tw +(\), and writes the)Tj +-31.9901 -1.2889 TD +0.1789 Tw +(compiled definition onto the output file. )Tj +/TT8 1 Tf +19.5164 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1789 Tw +[( then writes onto the output file the)]TJ +-23.117 -1.2889 TD +0.29 Tw +(other expressions found in the symbolic file. )Tj +/TT8 1 Tf +22.3757 0 TD +0 Tw +(DONTCOMPILEFNS)Tj +/TT6 1 Tf +8.4014 0 TD +0.29 Tw +[( might be used for)]TJ +-30.777 -1.2889 TD +0.0333 Tw +(functions that compile open, since their definitions would be superfluous when operating)Tj +0 -1.2222 TD +0 Tw +(with the compiled file. Note that )Tj +/TT8 1 Tf +14.8765 0 TD +(DONTCOMPILEFNS)Tj +/TT6 1 Tf +8.4014 0 TD +( can be set via block declarations.)Tj +-20.6112 -2.0667 TD +0.3122 Tw +[(Note: )-339(If the rootname of a file has the property )]TJ +/TT8 1 Tf +24.2727 0 TD +0 Tw +(FILETYPE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3122 Tw +[( with value)]TJ +/TT8 1 Tf +-25.7402 -1.2889 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +0.7478 Tw +(, or value a list containing )Tj +/TT8 1 Tf +16.1478 0 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +1.2478 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.7478 Tw +[( rebinds)]TJ +/TT8 1 Tf +-26.9971 -1.2889 TD +0 Tw +(DWIMIFYCOMPFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.0344 Tw +[( to )]TJ +/TT8 1 Tf +1.441 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +[( while compiling the functions on )]TJ +/TT17 1 Tf +15.3146 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0344 Tw +(, so the)Tj +-28.1574 -1.2889 TD +0 Tw +(compiler will )Tj +/TT8 1 Tf +6.1367 0 TD +(DWIMIFY)Tj +/TT6 1 Tf +4.2007 0 TD +( all expressions before compiling them.)Tj +/TT8 1 Tf +-16.3374 -2.0667 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1 Tw +[( returns a list of the names of the output files. All files are properly terminated)]TJ +-3.6006 -1.2889 TD +0.0411 Tw +[(and closed. If the compilation of any file is aborted via an error or Control-D, all files are)]TJ +0 -1.2222 TD +0 Tw +(properly closed, and the \(partially complete\) compiled file is deleted.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(RECOMPILE)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT17 1 Tf +0.6001 0 TD +(PFILE)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(CFILE)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FNS)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 241.5132 273.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 273.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0178 Tw +(The purpose of )Tj +/TT8 1 Tf +7.005 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0178 Tw +[( is to allow you to update a compiled file without recompiling)]TJ +-12.4059 -1.2889 TD +0.26 Tw +(every function in the file. )Tj +/TT8 1 Tf +13.1454 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.26 Tw +[( does this by using the results of a previous)]TJ +-18.5463 -1.2889 TD +0.0067 Tw +[(compilation. It produces a compiled file similar to one that would have been produced by)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0867 Tw +(, but at a considerable savings in time by only compiling selected functions, and)Tj +-3.6006 -1.2889 TD +0.1478 Tw +(copying the compiled definitions for the remainder of the functions in the file from an)Tj +0 -1.2222 TD +0 Tw +(earlier )Tj +/TT8 1 Tf +3.0801 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +( file.)Tj +/TT17 1 Tf +-13.5225 -2.0667 TD +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( is the name of the )]TJ +/TT19 1 Tf +8.492 0 TD +0 Tw +(P)Tj +/TT6 1 Tf +0.6108 0 TD +0.03 Tw +(retty file \(source file\) to be compiled; )Tj +/TT17 1 Tf +16.687 0 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( is the name of the)]TJ +/TT19 1 Tf +-31.7909 -1.2889 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.7222 0 TD +0.0978 Tw +(ompiled file containing compiled definitions that may be copied. )Tj +/TT17 1 Tf +30.1023 0 TD +0 Tw +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.0978 Tw +[( indicates which)]TJ +-32.6248 -1.2889 TD +0.0789 Tw +(functions in )Tj +/TT17 1 Tf +5.6617 0 TD +0 Tw +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0789 Tw +[( are to be recompiled, e.g., have been changed or defined for the first)]TJ +-8.6622 -1.2889 TD +0 Tw +(time since )Tj +/TT17 1 Tf +4.6987 0 TD +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +( was made. Note that )Tj +/TT17 1 Tf +9.897 0 TD +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(, not )Tj +/TT17 1 Tf +2.2041 0 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +(, drives )Tj +/TT8 1 Tf +3.5146 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +-33.5166 -2.0667 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0478 Tw +[( asks the standard compiler questions, except for ")]TJ +/TT8 1 Tf +22.5268 0 TD +0.1156 Tw +(OUTPUT FILE:)Tj +/TT6 1 Tf +7.3167 0 TD +0.0478 Tw +[(". As with)]TJ +/TT8 1 Tf +-35.2444 -1.2889 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1456 Tw +(, the output automatically goes to )Tj +/TT17 1 Tf +15.95 0 TD +0 Tw +(PFILE)Tj +/TT8 1 Tf +3.0005 0 TD +(.DCOM)Tj +/TT6 1 Tf +3.0005 0 TD +0.1456 Tw +(. )Tj +/TT8 1 Tf +1.0411 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1456 Tw +[( processes )]TJ +/TT17 1 Tf +5.0064 0 TD +0 Tw +(PFILE)Tj +/TT6 1 Tf +-37 -1.2889 TD +0.0089 Tw +(the same as does )Tj +/TT8 1 Tf +7.6918 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0089 Tw +[( except that )]TJ +/TT8 1 Tf +5.3563 0 TD +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.0089 Tw +[( expressions are not actually read into core.)]TJ +-20.8493 -1.2889 TD +0 Tw +(Instead, )Tj +/TT8 1 Tf +3.7955 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0367 Tw +[( uses the filemap to obtain a list of the functions contained in )]TJ +/TT17 1 Tf +27.5548 0 TD +0 Tw +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-39.7516 -1.2889 TD +0.0233 Tw +(The filemap enables )Tj +/TT8 1 Tf +9.1799 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[( to skip over the )]TJ +/TT8 1 Tf +7.4829 0 TD +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.0233 Tw +(s in the file by simply resetting)Tj +-26.2643 -1.2889 TD +0.1244 Tw +(the file pointer, so that in most cases the scan of the symbolic file is very fast \(the only)Tj +0 -1.2222 TD +0.3256 Tw +(processing required is the reading of the non-)Tj +/TT8 1 Tf +22.4088 0 TD +0 Tw +(DEFINEQ)Tj +/TT6 1 Tf +4.2007 0 TD +0.3256 Tw +(s and the processing of the)Tj +/TT8 1 Tf +-26.6095 -1.2889 TD +0 Tw +(DECLARE:)Tj +/TT6 1 Tf +4.8008 0 TD +0.18 Tw +[( expressions as with )]TJ +/TT8 1 Tf +9.8377 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.18 Tw +[(\). A map is built if the symbolic file does not)]TJ +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +55 0 obj +<< +/Length 7057 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-14)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.4056 Tw +(already contain one, for example if it was written in an earlier system, or with)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BUILDMAPFLG = NIL)Tj +/TT6 1 Tf +10.2017 0 TD +(.)Tj +-10.2017 -2.0667 TD +0.1089 Tw +(After this initial scan of )Tj +/TT17 1 Tf +11.1294 0 TD +0 Tw +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6089 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1089 Tw +[( then processes the functions defined in the)]TJ +-20.1397 -1.2889 TD +0.0111 Tw +[(file. For each function in )]TJ +/TT17 1 Tf +11.2927 0 TD +0 Tw +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5111 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0111 Tw +[( determines whether or not the function is to)]TJ +-20.2052 -1.2889 TD +0.1189 Tw +[(be \(re\)compiled. Functions that are members of )]TJ +/TT8 1 Tf +22.3559 0 TD +0 Tw +(DONTCOMPILEFNS)Tj +/TT6 1 Tf +8.4014 0 TD +0.1189 Tw +[( are simply ignored.)]TJ +-30.7573 -1.2889 TD +0 Tw +(Otherwise, a function is recompiled if :)Tj +4 -2 TD +(1.)Tj +/TT17 1 Tf +2 0 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +( is a list and the function is a member of that list )Tj +-3.8003 -2.0667 TD +(2.)Tj +/TT17 1 Tf +2 0 TD +(FNS)Tj +/TT8 1 Tf +1.8003 0 TD +( = T)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(EXPRS)Tj +/TT6 1 Tf +3.0005 0 TD +( and the function is defined by an expr definition )Tj +-10.6421 -2.0667 TD +(3.)Tj +/TT17 1 Tf +2 0 TD +(FNS)Tj +/TT8 1 Tf +1.8003 0 TD +( = CHANGES)Tj +/TT6 1 Tf +6.001 0 TD +( and the function is marked as having been changed in the)Tj +/TT8 1 Tf +-7.8013 -1.2889 TD +(FILECREATED)Tj +/TT6 1 Tf +6.6011 0 TD +( expression in )Tj +/TT17 1 Tf +6.3599 0 TD +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +-17.9614 -2.0667 TD +(4.)Tj +/TT17 1 Tf +2 0 TD +(FNS )Tj +/TT8 1 Tf +2.4004 0 TD +(= ALL)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +-11.4009 -2.0667 TD +0.1711 Tw +(If a function is not to be recompiled, )Tj +/TT8 1 Tf +17.5886 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1711 Tw +[( obtains its compiled definition from)]TJ +/TT17 1 Tf +-22.9895 -1.2889 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +(, and copies it \(and all generated subfunctions\) to the output file, )Tj +/TT17 1 Tf +29.4658 0 TD +0 Tw +(PFILE)Tj +/TT8 1 Tf +3.0005 0 TD +(.DCOM)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +[(. If)]TJ +-38.4673 -1.2889 TD +0.0911 Tw +(the function does not appear on )Tj +/TT17 1 Tf +14.8587 0 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5911 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0911 Tw +[( simply recompiles it. Finally, after)]TJ +-23.8512 -1.2889 TD +0.0922 Tw +(processing all functions, )Tj +/TT8 1 Tf +11.2313 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0922 Tw +[( writes out all other expressions that were collected)]TJ +-16.6321 -1.2889 TD +0 Tw +(in the prescan of )Tj +/TT17 1 Tf +7.564 0 TD +(PFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-7.8978 -2.0667 TD +0.6512 Tw +(Note: If )Tj +/TT17 1 Tf +4.5244 0 TD +0 Tw +(FNS)Tj +/TT8 1 Tf +1.8003 0 TD +0.65 Tw +[( = ALL)]TJ +/TT6 1 Tf +4.9006 0 TD +0 Tw +(, )Tj +/TT17 1 Tf +0.7711 0 TD +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.2711 Tw +[( is superfluous, and does not have to be)]TJ +-11.6635 -1.2889 TD +0.0355 Tw +[(specified. This option may be used to compile a symbolic file that has)]TJ +0 -1.2222 TD +0.0322 Tw +(never been compiled before, but which has already been loaded \(since)Tj +T* +0 Tw +(using )Tj +/TT8 1 Tf +2.7061 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +( would require reading the file in a second time\).)Tj +-12.3066 -2.0667 TD +(If )Tj +/TT17 1 Tf +1.0377 0 TD +(CFILE )Tj +/TT8 1 Tf +3.8839 0 TD +0.2833 Tw +(= NIL)Tj +/TT6 1 Tf +3.2838 0 TD +0 Tw +(, )Tj +/TT17 1 Tf +0.6178 0 TD +(PFILE)Tj +/TT8 1 Tf +3.0005 0 TD +(.DCOM)Tj +/TT6 1 Tf +3.0005 0 TD +0.1178 Tw +[( \(the old version of the output file\) is used for copying)]TJ +/TT12 1 Tf +-14.8242 -1.2889 TD +0 Tw +(from)Tj +/TT6 1 Tf +1.8887 0 TD +0.1311 Tw +[(. If both )]TJ +/TT17 1 Tf +4.4517 0 TD +0 Tw +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.1311 Tw +[( and )]TJ +/TT17 1 Tf +2.4551 0 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1311 Tw +[( are )]TJ +/TT8 1 Tf +2.1362 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +0.6311 0 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.1311 Tw +[( is set to the value of )]TJ +/TT8 1 Tf +10.1878 0 TD +0 Tw +(RECOMPILEDEFAULT)Tj +/TT6 1 Tf +9.6016 0 TD +(,)Tj +-39.7535 -1.2889 TD +0.1844 Tw +(which is initially )Tj +/TT8 1 Tf +8.1705 0 TD +0 Tw +(CHANGES)Tj +/TT6 1 Tf +4.2007 0 TD +0.1844 Tw +[(. Thus you can perform his edits, dump the file, and then)]TJ +-12.3712 -1.2889 TD +0 Tw +(simply )Tj +/TT8 1 Tf +3.2959 0 TD +(\(RECOMPILE )Tj +/TT17 1 Tf +7.2012 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( to update the compiled file.)Tj +-13.4976 -2.0667 TD +0.2033 Tw +(The value of )Tj +/TT8 1 Tf +6.3507 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2033 Tw +[( is the file name of the new compiled file, )]TJ +/TT17 1 Tf +20.424 0 TD +0 Tw +(PFILE)Tj +/TT8 1 Tf +3.0005 0 TD +(.DCOM)Tj +/TT6 1 Tf +3.0005 0 TD +0.2033 Tw +[(. If)]TJ +/TT8 1 Tf +-38.1765 -1.2889 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.3478 Tw +[( is aborted due to an error or Control-D, the new \(partially complete\))]TJ +-5.4009 -1.2889 TD +0 Tw +(compiled file will be closed and deleted.)Tj +/TT8 1 Tf +0 -2 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.15 Tw +[( is designed to allow you to conveniently and )]TJ +/TT12 1 Tf +21.6747 0 TD +0 Tw +(efficiently)Tj +/TT6 1 Tf +3.9639 0 TD +0.15 Tw +[( update a compiled)]TJ +-31.0395 -1.2889 TD +0.1467 Tw +[(file, even when the corresponding symbolic file has not been \(completely\) loaded. For)]TJ +0 -1.2222 TD +0.1167 Tw +(example, you can perform a )Tj +/TT8 1 Tf +13.1952 0 TD +0 Tw +(LOADFROM)Tj +/TT6 1 Tf +4.8008 0 TD +0.1167 Tw +[( to "notice" a symbolic file, edit the functions he)]TJ +-17.9959 -1.2889 TD +0.1122 Tw +(wants to change \(the editor will automatically load those functions not already loaded\),)Tj +0 -1.2222 TD +0 Tw +(call )Tj +/TT8 1 Tf +1.8148 0 TD +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0389 Tw +[( to update the symbolic file \()]TJ +/TT8 1 Tf +12.8276 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0389 Tw +[( will copy the unchanged functions)]TJ +-24.2439 -1.2889 TD +0 Tw +(from the old symbolic file\), and then perform )Tj +/TT8 1 Tf +20.2505 0 TD +(\(RECOMPILE)Tj +/TT19 1 Tf +6.001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(PFILE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-27.4354 -2.0667 TD +0.6512 Tw +(Note: Since )Tj +/TT8 1 Tf +6.5475 0 TD +0 Tw +(PRETTYDEF)Tj +/TT6 1 Tf +5.4009 0 TD +0.6433 Tw +[( automatically outputs a suitable )]TJ +/TT8 1 Tf +17.9203 0 TD +0 Tw +(DECLARE:)Tj +/TT6 1 Tf +-26.5353 -1.2889 TD +0.0056 Tw +(expression to indicate which functions in the file \(if any\) are defined as)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(NLAMBDA)Tj +/TT6 1 Tf +4.2007 0 TD +0.26 Tw +(s, calls to these functions will be handled correctly, even)Tj +-4.2007 -1.2889 TD +0.1711 Tw +(though the )Tj +/TT8 1 Tf +5.4247 0 TD +0 Tw +(NLAMBDA)Tj +/TT6 1 Tf +4.2007 0 TD +0.1711 Tw +[( functions themselves may never be loaded, or)]TJ +-9.6254 -1.2889 TD +0 Tw +(even looked at, by )Tj +/TT8 1 Tf +8.3193 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +58 0 obj +<< +/Length 7550 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-15)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(Block Compiling)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 543.54 Tm +0.1633 Tw +(In Interlisp-10, block compiling provides a way of compiling several functions into a single block.)Tj +0 -1.2222 TD +0.0944 Tw +[(Function calls between the component functions of the block are very fast. Thus, compiling a block)]TJ +T* +0.0067 Tw +(consisting of just a single recursive function may be yield great savings if the function calls itself many)Tj +T* +0.11 Tw +[(times. The output of a block compilation is a single, usually large, function. Calls from within the)]TJ +T* +0.1322 Tw +[(block to functions outside of the block look like regular function calls. A block can be entered via)]TJ +T* +0 Tw +(several different functions, called entries. These must be specified when the block is compiled. )Tj +0 -2.8889 TD +0.0578 Tw +(In Medley, block compiling is handled somewhat differently; block compiling provides a mechanism)Tj +0 -1.2222 TD +0.1233 Tw +(for hiding function names internal to a block, but it does not provide a performance improvement.)Tj +T* +0.0489 Tw +(Block compiling in Medley works by automatically renaming the block functions with special names,)Tj +T* +0.0733 Tw +[(and calling these functions with the normal function-calling mechanisms. Specifically, a function )]TJ +/TT17 1 Tf +44.1286 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +-44.1286 -1.2889 TD +0.0522 Tw +(is renamed to )Tj +/TT8 1 Tf +6.4223 0 TD +0 Tw +(\\)Tj +/TT17 1 Tf +0.6001 0 TD +(BLOCK-NAME)Tj +/TT8 1 Tf +6.001 0 TD +(/)Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0522 Tw +[(. For example, function )]TJ +/TT8 1 Tf +10.9642 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( in block )]TJ +/TT8 1 Tf +4.1698 0 TD +0 Tw +(BAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( is renamed to )]TJ +/TT8 1 Tf +6.7245 0 TD +0 Tw +(\\BAR/FOO)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-45.0836 -1.2889 TD +(Note that it is possible with this scheme to break functions internal to a block.)Tj +/TT4 1 Tf +10 0 0 10 78 379 Tm +(Block Declarations)Tj +/TT6 1 Tf +9 0 0 9 78 355.34 Tm +0.1089 Tw +(Block compiling a file frequently involves giving the compiler a lot of information about the nature)Tj +0 -1.2222 TD +0.0122 Tw +[(and structure of the compilation, e.g., block functions, entries, specvars, etc. To help with this, there is)]TJ +T* +0 Tw +(the )Tj +/TT8 1 Tf +1.6372 0 TD +(BLOCKS)Tj +/TT6 1 Tf +3.6006 0 TD +( file package command, which has the form:)Tj +/TT8 1 Tf +-1.2378 -2.9556 TD +(\(BLOCKS)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLOCK)Tj +2.9993 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLOCK)Tj +2.9997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +-17.7 -2.9556 TD +0.1111 Tw +(where each )Tj +/TT17 1 Tf +5.4961 0 TD +0 Tw +(BLOCK)Tj +3.0016 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.1111 Tw +[( is a block declaration. The )]TJ +/TT8 1 Tf +12.6603 0 TD +0 Tw +(BLOCKS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1111 Tw +[( command outputs a )]TJ +/TT8 1 Tf +9.8219 0 TD +0 Tw +(DECLARE:)Tj +/TT6 1 Tf +4.8008 0 TD +0.1111 Tw +[( expression,)]TJ +-39.9814 -1.5111 TD +0.1978 Tw +(which is noticed by )Tj +/TT8 1 Tf +9.627 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[( and )]TJ +/TT8 1 Tf +2.5884 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1978 Tw +(. )Tj +/TT8 1 Tf +1.1456 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[( and )]TJ +/TT8 1 Tf +2.5884 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1978 Tw +[( are sensitive to these)]TJ +-35.1526 -1.2889 TD +0 Tw +(declarations and take the appropriate action.)Tj +5.3333 -2 TD +0.0633 Tw +[(Note:)-234.5(Masterscope includes a facility for checking the block declarations of a file or)]TJ +2.6667 -1.2222 TD +0.2122 Tw +(files for various anomalous conditions, e.g. functions in block declarations)Tj +T* +0.13 Tw +(which arent on the file\(s\), functions in )Tj +/TT8 1 Tf +18.2059 0 TD +0 Tw +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +0.13 Tw +[( not in the block, variables)]TJ +-22.4066 -1.2889 TD +0.0133 Tw +(that may not need to be )Tj +/TT8 1 Tf +10.7626 0 TD +0 Tw +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +0.0133 Tw +[( because they are not used freely below the)]TJ +-15.5634 -1.2889 TD +0 Tw +(places they are bound, etc.)Tj +-8 -2.8889 TD +(A block declaration is a list of the form:)Tj +/TT8 1 Tf +9.3333 -1.7778 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BLKNAME)Tj +/TT19 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLKFN)Tj +2.9992 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLKFN)Tj +2.9997 -0.2222 TD +(M)Tj +/TT19 1 Tf +-13.95 -1.0667 TD +( )Tj +/TT8 1 Tf +0.75 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +1.7999 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(. )Tj +/TT17 1 Tf +1.2002 0 TD +(VALUE)Tj +2.9998 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +1.7995 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +( . )Tj +/TT17 1 Tf +1.8003 0 TD +(VALUE)Tj +2.9997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\)\))Tj +/TT17 1 Tf +-29.4333 -2.9556 TD +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0444 Tw +[( is the name of a block. )]TJ +/TT17 1 Tf +10.9205 0 TD +0 Tw +(BLKFN)Tj +2.9999 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.2944 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.2944 0 TD +(BLKFN)Tj +2.9997 -0.2222 TD +(M)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0444 Tw +[( are the functions in the block and correspond)]TJ +-24.71 -1.5111 TD +0 Tw +(to )Tj +/TT17 1 Tf +1.141 0 TD +(BLKFNS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0189 Tw +[( in the call to )]TJ +/TT8 1 Tf +6.0026 0 TD +0 Tw +(BLOCKCOMPILE)Tj +/TT6 1 Tf +7.2012 0 TD +0.0189 Tw +[(. The \()]TJ +/TT17 1 Tf +3.0635 0 TD +0 Tw +(VAR)Tj +1.7978 -0.2222 TD +(i)Tj +/TT8 1 Tf +0.6 0.2222 TD +0.0456 Tw +[( . )]TJ +/TT17 1 Tf +1.8914 0 TD +0 Tw +(VALUE)Tj +2.9997 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.0189 Tw +(\) expressions indicate the settings for)Tj +-28.8978 -1.5111 TD +0.1389 Tw +[(variables affecting the compilation of that block. If )]TJ +/TT17 1 Tf +23.9536 0 TD +0 Tw +(VALUE)Tj +2.9997 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.1389 Tw +[( is atomic, then )]TJ +/TT17 1 Tf +7.4794 0 TD +0 Tw +(VAR)Tj +/TT12 1 Tf +1.8006 -0.3333 TD +(i)Tj +/TT6 1 Tf +0.2778 0.3333 TD +0.1389 Tw +[( is set to )]TJ +/TT17 1 Tf +4.3715 0 TD +0 Tw +(VALUE)Tj +2.9996 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +(,)Tj +-45.0822 -1.5556 TD +(otherwise )Tj +/TT17 1 Tf +4.766 0 TD +(VAR)Tj +1.8007 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.16 Tw +[( is set to the )]TJ +/TT8 1 Tf +6.2531 0 TD +0 Tw +(UNION)Tj +/TT6 1 Tf +3.0005 0 TD +0.16 Tw +[( of )]TJ +/TT17 1 Tf +1.6989 0 TD +0 Tw +(VALUE)Tj +2.9986 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.16 Tw +[( and the current value of the variable )]TJ +/TT17 1 Tf +17.8625 0 TD +0 Tw +(VAR)Tj +1.8008 -0.2222 TD +(i)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.16 Tw +[(. Also,)]TJ +-41.9811 -1.5111 TD +0.0156 Tw +(expressions of the form )Tj +/TT8 1 Tf +10.6457 0 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0378 Tw +[( * )]TJ +/TT17 1 Tf +1.8758 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0156 Tw +[( will cause )]TJ +/TT17 1 Tf +4.9534 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0156 Tw +[( to be evaluated and the resulting list used as)]TJ +-25.2762 -1.2889 TD +0 Tw +(described above \(e.g. )Tj +/TT8 1 Tf +9.5479 0 TD +(\(GLOBALVARS)Tj +/TT19 1 Tf +6.6011 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(* MYGLOBALVARS\))Tj +/TT6 1 Tf +9.0015 0 TD +(\).)Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +61 0 obj +<< +/Length 6757 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-16)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1933 Tw +[(For example, consider the block declaration below. The block name is )]TJ +/TT8 1 Tf +33.5056 0 TD +0 Tw +(EDITBLOCK)Tj +/TT6 1 Tf +5.4009 0 TD +0.1933 Tw +(, it includes a)Tj +-38.9064 -1.2889 TD +0.3 Tw +(number of functions \()Tj +/TT8 1 Tf +10.4879 0 TD +0.72 Tw +(EDITL0, EDITL1, ... EDITH)Tj +/TT6 1 Tf +17.1624 0 TD +0.3 Tw +(\), and it sets the variables )Tj +/TT8 1 Tf +13.2312 0 TD +0 Tw +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +/TT8 1 Tf +-45.0822 -1.2889 TD +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(RETFNS)Tj +/TT6 1 Tf +3.6006 0 TD +(, and )Tj +/TT8 1 Tf +2.4429 0 TD +(GLOBALVARS)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT8 1 Tf +-13.3452 -2.8889 TD +(\(EDITBLOCK)Tj +5.3333 -1 TD +(EDITL0 EDITL1 UNDOEDITL EDITCOM EDITCOMA)Tj +T* +(EDITMAC EDITCOMS EDIT]UNDO UNDOEDITCOM EDITH)Tj +T* +(\(ENTRIES EDITL0 ## UNDOEDITL\))Tj +T* +(\(SPECVARS L COM LCFLG #1 #2 #3 LISPXBUFS\))Tj +T* +(\(RETFNS EDITL0\))Tj +T* +(\(GLOBALVARS EDITCOMSA EDITCOMSL EDITOPS\)\))Tj +/TT6 1 Tf +-9.3333 -2.7333 TD +(Whenever )Tj +/TT8 1 Tf +4.9188 0 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( or )]TJ +/TT8 1 Tf +1.6565 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1078 Tw +[( encounter a block declaration, they rebind )]TJ +/TT8 1 Tf +19.9 0 TD +0 Tw +(RETFNS)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.6078 0 TD +(SPECVARS)Tj +/TT6 1 Tf +4.8008 0 TD +(,)Tj +/TT8 1 Tf +-45.0859 -1.2889 TD +(GLOBALVARS)Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT8 1 Tf +0.5022 0 TD +(BLKLIBRARY)Tj +/TT6 1 Tf +6.001 0 TD +0.0022 Tw +(, and )Tj +/TT8 1 Tf +2.4473 0 TD +0 Tw +(DONTCOMPILEFNS)Tj +/TT6 1 Tf +8.4014 0 TD +0.0001 Tc +0.0021 Tw +( to their top level values, bind )Tj +/TT8 1 Tf +13.4379 0 TD +0 Tc +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0006 Tc +0.0016 Tw +( and)Tj +/TT8 1 Tf +-43.3918 -1.2889 TD +0 Tc +0 Tw +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +0.0244 Tw +[( to )]TJ +/TT8 1 Tf +1.421 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +(, and bind )Tj +/TT8 1 Tf +4.8033 0 TD +0 Tw +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0244 Tw +[( to the first element of the declaration. They then scan the rest of)]TJ +-16.4259 -1.2889 TD +0.1422 Tw +[(the declaration, setting these variables as described above. When the declaration is exhausted, the)]TJ +0 -1.2222 TD +0 Tw +(block compiler is called and given )Tj +/TT8 1 Tf +15.3164 0 TD +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +(, the list of block functions, and )Tj +/TT8 1 Tf +14.062 0 TD +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-37.7798 -2.9556 TD +0.0733 Tw +(If a function appears in a block declaration, but is not defined in one of the files, then if it has an in-)Tj +0 -1.2222 TD +0.0522 Tw +(core definition, this definition is used and a message printed )Tj +/TT8 1 Tf +27.4773 0 TD +0.1256 Tw +(NOT ON FILE)Tj +/TT19 1 Tf +6.8522 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.5522 0 TD +0.1256 Tw +(COMPILING IN CORE)Tj +-34.8817 -1.2889 TD +0 Tw +(DEFINITION)Tj +/TT6 1 Tf +6.001 0 TD +0.1989 Tw +[(. Otherwise, the message )]TJ +/TT8 1 Tf +12.4725 0 TD +0.4778 Tw +(NOT COMPILEABLE)Tj +/TT6 1 Tf +9.4792 0 TD +0.1989 Tw +(, is printed and the block declaration)Tj +-27.9527 -1.2889 TD +0.0567 Tw +(processed as though the function were not on it, i.e. calls to the function will be compiled as external)Tj +0 -1.2222 TD +0 Tw +(function calls.)Tj +0 -2.8889 TD +0.1522 Tw +(Since all compiler variables are rebound for each block declaration, the declaration only has to set)Tj +0 -1.2222 TD +0.1 Tw +(those variables it wants )Tj +/TT12 1 Tf +11.0382 0 TD +0 Tw +(changed)Tj +/TT6 1 Tf +3.2964 0 TD +0.1 Tw +[(. Furthermore, setting a variable in one declaration has no effect on)]TJ +-14.3346 -1.2222 TD +0 Tw +(the variables value for another declaration.)Tj +0 -2.8889 TD +0.0267 Tw +(After finishing all blocks, )Tj +/TT8 1 Tf +11.4958 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0267 Tw +[( and )]TJ +/TT8 1 Tf +2.2462 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0267 Tw +[( treat any functions in the file that did not appear)]TJ +-23.3436 -1.2889 TD +0.2178 Tw +(in a block declaration in the same way as do )Tj +/TT8 1 Tf +21.9224 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.2178 Tw +[( and )]TJ +/TT8 1 Tf +2.6284 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2178 Tw +[(. If you wish a function)]TJ +-33.5523 -1.2889 TD +0.0033 Tw +(compiled separately as well as in a block, or if you wish to compile some functions \(not blockcompile\),)Tj +0 -1.2222 TD +0 Tw +(with some compiler variables changed, you can use a special pseudo-block declaration of the form)Tj +/TT8 1 Tf +5.3333 -2.8889 TD +(\(NIL)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLKFN)Tj +2.9996 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLKFN)Tj +2.9997 -0.2222 TD +(M)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +1.7999 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VALUE)Tj +2.9999 -0.2222 TD +(1)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +1.7995 -0.2222 TD +(N)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(.)Tj +/TT19 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VALUE)Tj +2.9999 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\)\))Tj +/TT6 1 Tf +-36.0333 -2.9556 TD +0.18 Tw +(which means that )Tj +/TT17 1 Tf +8.625 0 TD +0 Tw +(BLKFN)Tj +3.0017 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.43 0 TD +(...)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.43 0 TD +(BLKFN)Tj +2.9997 -0.2222 TD +(M)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.18 Tw +[( should be compiled after first setting )]TJ +/TT17 1 Tf +18.031 0 TD +0 Tw +(VAR)Tj +1.8023 -0.2222 TD +(1)Tj +/TT6 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.43 0 TD +(...)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.43 0 TD +(VAR)Tj +1.7997 -0.2222 TD +(N)Tj +/TT6 1 Tf +0.6 0.2222 TD +0.18 Tw +[( as)]TJ +-43.98 -1.5111 TD +0 Tw +(described above.)Tj +0 -2.8889 TD +(The following variables control other aspects of compiling a block:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(RETFNS)Tj +/TT14 1 Tf +10 0 0 10 182.4 101.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 101.4 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0967 Tw +(Value is a list of internal block functions whose names must appear on the stack, e.g., if)Tj +0 -1.2222 TD +0.0011 Tw +(the function is to be returned from )Tj +/TT8 1 Tf +15.498 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5011 0 TD +(RETTO)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5011 0 TD +(RETEVAL)Tj +/TT6 1 Tf +4.2007 0 TD +0.0011 Tw +(, etc. Usually, internal calls)Tj +-27.9021 -1.2889 TD +0 Tw +(between functions in a block are not put on the stack.)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +64 0 obj +<< +/Length 5975 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-17)Tj +/TT10 1 Tf +-39.6667 60.4667 TD +(BLKAPPLYFNS)Tj +/TT14 1 Tf +10 0 0 10 161.4 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0267 Tw +(Value is a list of internal block functions called by other functions in the same block using)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BLKAPPLY)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(BLKAPPLY*)Tj +/TT6 1 Tf +5.4009 0 TD +( for efficiency reasons.)Tj +-11.6426 -2.0667 TD +0.1089 Tw +(Normally, a call to )Tj +/TT8 1 Tf +8.8765 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.1089 Tw +[( from inside a block would be the same as a call to any other)]TJ +-11.877 -1.2889 TD +0.0744 Tw +[(function outside of the block. If the first argument to )]TJ +/TT8 1 Tf +24.4844 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0744 Tw +[( turned out to be one of the)]TJ +-27.4849 -1.2889 TD +0.2178 Tw +(entries to the block, the block would have to be reentered. )Tj +/TT8 1 Tf +28.6563 0 TD +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.2178 Tw +[( enables a)]TJ +-35.2574 -1.2889 TD +0.14 Tw +(program to compute the name of a function in the block to be called next, without the)Tj +0 -1.2222 TD +0.2 Tw +(overhead of leaving the block and reentering it. This is done by including on the list)Tj +/TT8 1 Tf +T* +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.38 Tw +[( those functions which will be called in this fashion, and by using)]TJ +/TT8 1 Tf +-6.6011 -1.2889 TD +0 Tw +(BLKAPPLY)Tj +/TT6 1 Tf +4.8008 0 TD +0.2111 Tw +[( in place of )]TJ +/TT8 1 Tf +5.9113 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.2111 Tw +(, and )Tj +/TT8 1 Tf +2.8651 0 TD +0 Tw +(BLKAPPLY*)Tj +/TT6 1 Tf +5.4009 0 TD +0.2111 Tw +[( in place of )]TJ +/TT8 1 Tf +5.9113 0 TD +0 Tw +(APPLY*)Tj +/TT6 1 Tf +3.6006 0 TD +0.2111 Tw +[(. If )]TJ +/TT8 1 Tf +2.3033 0 TD +0 Tw +(BLKAPPLY)Tj +/TT6 1 Tf +4.8008 0 TD +0.2111 Tw +[( or)]TJ +/TT8 1 Tf +-38.5945 -1.2889 TD +0 Tw +(BLKAPPLY*)Tj +/TT6 1 Tf +5.4009 0 TD +0.1111 Tw +[( is given a function not on )]TJ +/TT8 1 Tf +12.5048 0 TD +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.1111 Tw +(, the effect is the same as a call to)Tj +/TT8 1 Tf +-24.5068 -1.2889 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0456 Tw +[( or )]TJ +/TT8 1 Tf +1.532 0 TD +0 Tw +(APPLY*)Tj +/TT6 1 Tf +3.6006 0 TD +0.0456 Tw +[( and no error is generated. Note however, that )]TJ +/TT8 1 Tf +21.4048 0 TD +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0456 Tw +[( must be)]TJ +-36.139 -1.2889 TD +0.1611 Tw +(set at )Tj +/TT12 1 Tf +2.8774 0 TD +0 Tw +(compile)Tj +/TT6 1 Tf +3.0737 0 TD +0.1611 Tw +[( time, not run time, and furthermore, that all functions on )]TJ +/TT8 1 Tf +27.4485 0 TD +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +-33.3996 -1.2889 TD +(must be in the block, or an error is generated \(at compile time\),)Tj +/TT8 1 Tf +27.7793 0 TD +( NOT ON BLKFNS)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-38.8473 -2.5489 TD +(BLKAPPLYFNS)Tj +/TT14 1 Tf +10 0 0 10 161.4 384.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 384.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0356 Tw +(Value is a list of functions that are considered to be in the "block library" of functions that)Tj +0 -1.2222 TD +0 Tw +(should automatically be included in the block if they are called within the block.)Tj +0 -2 TD +0.03 Tw +[(Compiling a function open via a macro provides a way of eliminating a function call. For)]TJ +0 -1.2222 TD +0.01 Tw +[(block compiling, the same effect can be achieved by including the function in the block. A)]TJ +T* +0.1522 Tw +(further advantage is that the code for this function will appear only once in the block,)Tj +T* +0.1789 Tw +(whereas when a function is compiled open, its code appears at each place where it is)Tj +T* +0 Tw +(called.)Tj +0 -2 TD +(The block library feature provides a convenient way of including functions in a block. It is)Tj +0 -1.2222 TD +0.3211 Tw +(just a convenience since you can always achieve the same effect by specifying the)Tj +T* +0.05 Tw +(function\(s\) in question as one of the block functions, provided it has an expr definition at)Tj +T* +0.1244 Tw +[(compile time. The block library feature simply eliminates the burden of supplying this)]TJ +T* +0 Tw +(definition.)Tj +0 -2 TD +0.1389 Tw +(To use the block library feature, place the names of the functions of interest on the list)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BLKLIBRARY)Tj +/TT6 1 Tf +6.001 0 TD +0.1378 Tw +(, and their expr definitions on the property list of the functions under the)Tj +-6.001 -1.2889 TD +0 Tw +(property )Tj +/TT8 1 Tf +4.2572 0 TD +(BLKLIBRARYDEF)Tj +/TT6 1 Tf +7.8013 0 TD +0.1078 Tw +[(. When the block compiler compiles a form, it first checks to)]TJ +-12.0585 -1.2889 TD +0.0367 Tw +[(see if the function being called is one of the block functions. If not, and the function is on)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BLKLIBRARY)Tj +/TT6 1 Tf +6.001 0 TD +0.0478 Tw +(, its definition is obtained from the property value of )Tj +/TT8 1 Tf +23.9641 0 TD +0 Tw +(BLKLIBRARYDEF)Tj +/TT6 1 Tf +7.8013 0 TD +0.0478 Tw +(, and)Tj +-37.7664 -1.2889 TD +0 Tw +(it is automatically included as part of the block.)Tj +/TT4 1 Tf +10 0 0 10 78 130.52 Tm +(Block Compiling Functions)Tj +/TT6 1 Tf +9 0 0 9 78 106.86 Tm +0.03 Tw +(There are three user level functions for block compiling, )Tj +/TT8 1 Tf +25.2388 0 TD +0 Tw +(BLOCKCOMPILE)Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT8 1 Tf +0.53 0 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.03 Tw +(, and )Tj +/TT8 1 Tf +2.5029 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +(,)Tj +-45.0744 -1.2889 TD +0.2433 Tw +(corresponding to )Tj +/TT8 1 Tf +8.3104 0 TD +0 Tw +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.7433 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.2433 Tw +(, and )Tj +/TT8 1 Tf +2.9295 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2433 Tw +[(. Note that all of the remarks on macros,)]TJ +-25.1854 -1.2889 TD +0.0878 Tw +[(globalvars, compiler messages, etc., all apply equally for block compiling. Using block declarations,)]TJ +0 -1.3711 TD +0 Tw +(you can intermix in a single file functions compiled normally and block compiled functions)Tj +/TT14 1 Tf +10 0 0 10 440.8257 71.32 Tm +(.)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +67 0 obj +<< +/Length 8404 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-18)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(BLOCKCOMPILE)Tj +/TT4 1 Tf +10 0 0 10 220.2 568.2 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 222.9783 568.2 Tm +(BLKNAME)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLKFNS)Tj +/TT12 1 Tf +3.6006 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(ENTRIES)Tj +/TT12 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 359.3494 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +/TT17 1 Tf +-35.4033 -1.8444 TD +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.1033 Tw +[( is the name of a block, )]TJ +/TT17 1 Tf +11.0383 0 TD +0 Tw +(BLKFNS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1033 Tw +[( is a list of the functions comprising the block,)]TJ +-18.8395 -1.2889 TD +0 Tw +(and )Tj +/TT17 1 Tf +1.9429 0 TD +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +( a list of entries to the block.)Tj +-6.1436 -2.0667 TD +0.0256 Tw +(Each of the entries must also be on )Tj +/TT17 1 Tf +15.7401 0 TD +0 Tw +(BLKFNS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0256 Tw +[( or an error is generated, )]TJ +/TT8 1 Tf +11.2583 0 TD +0.0622 Tw +(NOT ON BLKFNS)Tj +/TT6 1 Tf +7.9257 0 TD +0.0256 Tw +[(. If)]TJ +-38.5247 -1.2889 TD +0.3578 Tw +(only one entry is specified, the block name can also be one of the )Tj +/TT17 1 Tf +33.7599 0 TD +0 Tw +(BLKFNS)Tj +/TT6 1 Tf +3.6006 0 TD +0.3578 Tw +(, e.g.,)Tj +/TT8 1 Tf +-37.3605 -1.2889 TD +0.02 Tw +(\(BLOCKCOMPILE FOO \(FOO FIE FUM\) \(FOO\)\))Tj +/TT6 1 Tf +24.704 0 TD +0.0078 Tw +[(. However, if more than one entry)]TJ +-24.704 -1.2889 TD +0.0622 Tw +(is specified, an error will be generated, )Tj +/TT8 1 Tf +17.7915 0 TD +0.1489 Tw +(CANT BE BOTH AN)Tj +/TT19 1 Tf +10.0482 0 TD +0 Tw +( )Tj +/TT8 1 Tf +0.3122 0 TD +0.1489 Tw +(ENTRY AND THE BLOCK)Tj +-28.152 -1.2889 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-2.4004 -2.0667 TD +(If )Tj +/TT17 1 Tf +1.0421 0 TD +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +0.1222 Tw +[( is )]TJ +/TT8 1 Tf +1.4593 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6222 0 TD +(\(LIST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.3722 0 TD +(BLKNAME)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1222 Tw +[( is used, e.g., )]TJ +/TT8 1 Tf +6.3556 0 TD +0 Tw +(\(BLOCKCOMPILE)Tj +/TT19 1 Tf +7.8013 0 TD +( )Tj +/TT8 1 Tf +0.3722 0 TD +(COUNT)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.3722 0 TD +(\(COUNT)Tj +-35.8 -1.2222 TD +(COUNT1\)\))Tj +/TT6 1 Tf +0 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.9199 0 TD +(BLKFNS)Tj +/TT6 1 Tf +3.6006 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(\(LIST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(BLKNAME)Tj +/TT8 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( is used, e.g., )Tj +/TT8 1 Tf +5.8667 0 TD +(\(BLOCKCOMPILE EQUAL\))Tj +-21.9536 -2.0667 TD +(BLOCKCOMPILE)Tj +/TT6 1 Tf +7.2012 0 TD +0.1733 Tw +[( asks the standard compiler questions, and then begins compiling. As)]TJ +-7.2012 -1.2889 TD +0 Tw +(with )Tj +/TT8 1 Tf +2.3243 0 TD +(COMPILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0411 Tw +(, if the compiled code is being written to a file, the file is closed unless )Tj +/TT17 1 Tf +31.6631 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +-38.1881 -1.2889 TD +0.0289 Tw +(= T)Tj +/TT6 1 Tf +1.8292 0 TD +0.0122 Tw +[(. The value of )]TJ +/TT8 1 Tf +6.5518 0 TD +0 Tw +(BLOCKCOMPILE)Tj +/TT6 1 Tf +7.2012 0 TD +0.0122 Tw +[( is a list of the entries, or if )]TJ +/TT17 1 Tf +11.964 0 TD +0 Tw +(ENTRIES)Tj +/TT8 1 Tf +4.2007 0 TD +0.0289 Tw +[( = NIL)]TJ +/TT6 1 Tf +3.6584 0 TD +0.0122 Tw +(, the value)Tj +-35.4052 -1.2889 TD +0 Tw +(is )Tj +/TT17 1 Tf +0.9648 0 TD +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-5.1655 -2.0667 TD +0.2378 Tw +(The output of a call to )Tj +/TT8 1 Tf +11.3827 0 TD +0 Tw +(BLOCKCOMPILE)Tj +/TT6 1 Tf +7.2012 0 TD +0.2378 Tw +[( is one function definition for )]TJ +/TT17 1 Tf +14.5614 0 TD +0 Tw +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.2378 Tw +(, plus)Tj +-37.346 -1.2889 TD +0.1044 Tw +(definitions for each of the functions on )Tj +/TT17 1 Tf +18.0407 0 TD +0 Tw +(ENTRIES)Tj +/TT6 1 Tf +4.2007 0 TD +0.1044 Tw +[( if any. These entry functions are very)]TJ +-22.2414 -1.2889 TD +0 Tw +(short functions which immediately call )Tj +/TT17 1 Tf +17.5024 0 TD +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +-24.3698 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(BCOMPL)Tj +/TT4 1 Tf +10 0 0 10 187.8 308.66 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 190.5783 308.66 Tm +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(CFILE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 252.238 308.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 308.66 Tm +([Function])Tj +/TT17 1 Tf +-35.4033 -1.8444 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.0333 Tw +[( is a list of symbolic files \(if atomic,)]TJ +/TT8 1 Tf +15.6949 0 TD +0.0789 Tw +[( \(LIST)]TJ +/TT19 1 Tf +3.6795 0 TD +0 Tw +( )Tj +/TT17 1 Tf +0.2833 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is used\). )]TJ +/TT8 1 Tf +4.5479 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0333 Tw +[( differs from)]TJ +/TT8 1 Tf +-34.4072 -1.2889 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1444 Tw +[( in that it compiles all of the files at once, instead of one at a time, in order to)]TJ +-3.6006 -1.2889 TD +0.1867 Tw +[(permit one block to contain functions in several files. \(If you have several files to be)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(ed )Tj +/TT12 1 Tf +1.5221 0 TD +(separately)Tj +/TT6 1 Tf +4.0552 0 TD +0.1822 Tw +(, you must make several calls to )Tj +/TT8 1 Tf +15.589 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1822 Tw +[(.\) Output is to )]TJ +/TT17 1 Tf +7.5766 0 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1822 Tw +[( if)]TJ +-38.9446 -1.2889 TD +0.0589 Tw +(given, otherwise to a file whose name is )Tj +/TT19 1 Tf +18.3398 0 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.333 0 TD +(CAR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.3089 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0589 Tw +[( suffixed with )]TJ +/TT8 1 Tf +6.5497 0 TD +0 Tw +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0589 Tw +[(. For example,)]TJ +/TT8 1 Tf +-33.3326 -1.2889 TD +0 Tw +(\(BCOMPL \(EDIT WEDIT\)\))Tj +/TT6 1 Tf +13.2022 0 TD +( produces one file, )Tj +/TT8 1 Tf +8.3535 0 TD +(EDIT.DCOM)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +-26.9565 -2.0667 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.37 Tw +[( asks the standard compiler questions, except for ")]TJ +/TT8 1 Tf +25.1045 0 TD +0.8867 Tw +(OUTPUT FILE:)Tj +/TT6 1 Tf +8.0878 0 TD +0.37 Tw +(", then)Tj +-36.793 -1.2889 TD +0.3133 Tw +(processes each file exactly the same as )Tj +/TT8 1 Tf +19.2666 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.3133 Tw +(. )Tj +/TT8 1 Tf +1.3767 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.3133 Tw +[( next processes the block)]TJ +-27.8444 -1.2889 TD +0.0122 Tw +[(declarations as described above. Finally, it compiles those functions not mentioned in one)]TJ +0 -1.2222 TD +0 Tw +(of the block declarations, and then writes out all other expressions.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +0.9433 0 TD +(any)Tj +/TT6 1 Tf +1.5 0 TD +0.0233 Tw +[( of the files have property)]TJ +/TT8 1 Tf +11.476 0 TD +0.0556 Tw +[( FILETYPE)]TJ +/TT6 1 Tf +5.4564 0 TD +0.0233 Tw +[( with value )]TJ +/TT8 1 Tf +5.2912 0 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +0.0233 Tw +(, or a list containing )Tj +/TT8 1 Tf +9.0898 0 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +-39.7577 -1.2889 TD +(then )Tj +/TT8 1 Tf +2.2192 0 TD +(DWIMIFYCOMPFLG)Tj +/TT6 1 Tf +8.4014 0 TD +( is rebound to )Tj +/TT8 1 Tf +6.356 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( for )Tj +/TT12 1 Tf +1.7739 0 TD +(all)Tj +/TT6 1 Tf +0.9995 0 TD +( of the files. )Tj +-20.3501 -2.0667 TD +0.1933 Tw +(The value of )Tj +/TT8 1 Tf +6.3207 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1933 Tw +[( is the output file \(the new compiled file\). If the compilation is)]TJ +-9.9213 -1.2889 TD +0.2089 Tw +(aborted due to an error or Control-D, all files are closed and the \(partially complete\))Tj +0 -1.2222 TD +0 Tw +(output file is deleted.)Tj +0 -2 TD +0.16 Tw +(It is permissible to )Tj +/TT8 1 Tf +9.0008 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.16 Tw +[( files set up for )]TJ +/TT8 1 Tf +7.5749 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.16 Tw +(; the block declarations will simply)Tj +-23.7769 -1.2889 TD +0.32 Tw +[(have no effect. Similarly, you can )]TJ +/TT8 1 Tf +17.3919 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.32 Tw +[( a file that does not contain any block)]TJ +-20.9924 -1.2889 TD +0 Tw +(declarations and the result will be the same as having )Tj +/TT8 1 Tf +23.8989 0 TD +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(ed it.)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +70 0 obj +<< +/Length 7367 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-19)Tj +/TT8 1 Tf +-39.6667 60.4667 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(BRECOMPILE)Tj +/TT4 1 Tf +10 0 0 10 161.4 568.2 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 164.1783 568.2 Tm +(FILES)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(CFILE)Tj +/TT12 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FNS)Tj +/TT21 1 Tf +10 0 0 10 238.8897 568.2 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 241.6681 568.2 Tm +()Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT14 1 Tf +10 0 0 10 252.4698 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +/TT8 1 Tf +-35.4033 -1.8444 TD +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1844 Tw +[( plays the same role for )]TJ +/TT8 1 Tf +11.6365 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1844 Tw +[( that )]TJ +/TT8 1 Tf +2.6033 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1844 Tw +[( plays for )]TJ +/TT8 1 Tf +4.9493 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1844 Tw +[(. Its)]TJ +-37.7921 -1.2889 TD +0 Tw +(purpose is to allow you to update a compiled file without requiring an entire )Tj +/TT8 1 Tf +34.2295 0 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT17 1 Tf +-37.8301 -2.0667 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0032 Tw +( is a list of symbolic files \(if atomic, )Tj +/TT8 1 Tf +15.7082 0 TD +0 Tc +0 Tw +(\(LIST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.2533 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0003 Tc +0.003 Tw +( is used\). )Tj +/TT17 1 Tf +4.4279 0 TD +0 Tc +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0002 Tc +0.0031 Tw +( is the compiled)Tj +-32.9915 -1.2889 TD +0 Tc +0.1067 Tw +(file produced by )Tj +/TT8 1 Tf +7.863 0 TD +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.1067 Tw +[( or a previous )]TJ +/TT8 1 Tf +6.7714 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1067 Tw +[( that contains compiled definitions)]TJ +-24.2359 -1.2889 TD +0 Tw +(that may be copied. The interpretation of )Tj +/TT17 1 Tf +18.5996 0 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +( is the same as with )Tj +/TT8 1 Tf +8.8447 0 TD +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +-34.6455 -2.0667 TD +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0001 Tc +0.0032 Tw +( asks the standard compiler questions, except for ")Tj +/TT8 1 Tf +22.1712 0 TD +0 Tc +0.0078 Tw +(OUTPUT FILE:)Tj +/TT6 1 Tf +7.209 0 TD +0.0003 Tc +0.003 Tw +(". As with)Tj +/TT8 1 Tf +-35.3811 -1.2889 TD +0 Tc +0 Tw +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +(, output automatically goes to )Tj +/TT17 1 Tf +13.4395 0 TD +(FILE)Tj +/TT19 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +(, where )Tj +/TT17 1 Tf +3.519 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( is the first file in )Tj +/TT17 1 Tf +7.6382 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +-38.6489 -2.0667 TD +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.2544 Tw +[( processes each file the same as )]TJ +/TT8 1 Tf +15.742 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2544 Tw +(, then processes each block)Tj +-27.1439 -1.2889 TD +0.0122 Tw +[(declaration. If )]TJ +/TT12 1 Tf +6.6714 0 TD +0 Tw +(any)Tj +/TT6 1 Tf +1.5 0 TD +0.0122 Tw +[( of the functions in the block are to be recompiled, the entire block must)]TJ +-8.1714 -1.2222 TD +0.0656 Tw +[(be \(is\) recompiled. Otherwise, the block is copied from )]TJ +/TT17 1 Tf +25.305 0 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0656 Tw +[( as with )]TJ +/TT8 1 Tf +3.9037 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0656 Tw +[(. For)]TJ +-37.61 -1.2889 TD +0.01 Tw +(pseudo-block declarations of the form )Tj +/TT8 1 Tf +17.0983 0 TD +0 Tw +(\(NIL)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT17 1 Tf +0.26 0 TD +(FN)Tj +1.2024 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.26 0 TD +(...\))Tj +/TT6 1 Tf +2.4004 0 TD +0.01 Tw +(, all variable assignments are made,)Tj +-24.2215 -1.5111 TD +0 Tw +(but only those functions indicated by )Tj +/TT17 1 Tf +16.6895 0 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +( are recompiled.)Tj +-18.4897 -2.0667 TD +0.0678 Tw +(After completing the block declarations, )Tj +/TT8 1 Tf +18.315 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0678 Tw +[( processes all functions that do not)]TJ +-24.3159 -1.2889 TD +0.3189 Tw +(appear in a block declaration, recompiling those dictated by )Tj +/TT17 1 Tf +29.5873 0 TD +0 Tw +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.3189 Tw +(, and copying the)Tj +-31.3876 -1.2889 TD +0 Tw +(compiled definitions of the remaining from )Tj +/TT17 1 Tf +19.3833 0 TD +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-22.3838 -2.0667 TD +(Finally, )Tj +/TT8 1 Tf +3.6807 0 TD +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1133 Tw +[( writes onto the output file the "other expressions" collected in the)]TJ +-9.6817 -1.2889 TD +0 Tw +(initial scan of )Tj +/TT17 1 Tf +6.1509 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-9.1514 -2.0667 TD +0.0433 Tw +(The value of )Tj +/TT8 1 Tf +5.8707 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0433 Tw +[( is the output file \(the new compiled file\). If the compilation is)]TJ +-11.8717 -1.2889 TD +0.2089 Tw +(aborted due to an error or Control-D, all files are closed and the \(partially complete\))Tj +0 -1.2222 TD +0 Tw +(output file is deleted.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +1.1577 0 TD +(CFILE )Tj +/TT8 1 Tf +4.1706 0 TD +0.57 Tw +(= NIL)Tj +/TT6 1 Tf +3.5705 0 TD +0.2378 Tw +(, the old version of )Tj +/TT17 1 Tf +9.6845 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.DCOM)Tj +/TT6 1 Tf +3.0005 0 TD +0.2378 Tw +[( is used, as with )]TJ +/TT8 1 Tf +8.4775 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2378 Tw +[(. In)]TJ +-37.8625 -1.2889 TD +0.0344 Tw +(addition, if )Tj +/TT17 1 Tf +5.2007 0 TD +0 Tw +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.0344 Tw +[( and )]TJ +/TT17 1 Tf +2.2618 0 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0344 Tw +[( are both )]TJ +/TT8 1 Tf +4.2347 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +0.5344 0 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.0344 Tw +[( is set to the value of )]TJ +/TT8 1 Tf +9.5111 0 TD +0 Tw +(RECOMPILEDEFAULT)Tj +/TT6 1 Tf +9.6016 0 TD +(,)Tj +-39.7457 -1.2889 TD +(initially )Tj +/TT8 1 Tf +3.6694 0 TD +(CHANGES)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 204.26 Tm +(Compiler Error Messages)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 201.55 m +510.01 201.55 l +S +BT +/TT6 1 Tf +9 0 0 9 78 179.6 Tm +0.1333 Tw +[(Messages describing errors in the function being compiled are also printed on the terminal. These)]TJ +0 -1.2222 TD +0.1656 Tw +(messages are always preceded by )Tj +/TT8 1 Tf +15.9333 0 TD +0 Tw +(*****)Tj +/TT6 1 Tf +3.0005 0 TD +0.1656 Tw +[(. Unless otherwise indicated below, the compilation will)]TJ +-18.9337 -1.2889 TD +0 Tw +(continue.)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( NOT ON FILE, COMPILING IN CORE DEFINITION\))Tj +/TT14 1 Tf +10 0 0 10 350.4008 134.66 Tm +0 Tc +0 Tw +( )Tj +/TT6 1 Tf +9 0 0 9 126 118.06 Tm +(From calls to )Tj +/TT8 1 Tf +5.9517 0 TD +(BCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT8 1 Tf +-20.4128 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT4 1 Tf +10 0 0 10 118.2026 95.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 120.981 95.12 Tm +-0.0001 Tc +0.0001 Tw +(NOT COMPILEABLE\) )Tj +/TT6 1 Tf +0.5577 -1.8444 TD +0 Tc +0 Tw +(An )Tj +/TT8 1 Tf +1.6899 0 TD +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.08 Tw +[( definition for )]TJ +/TT17 1 Tf +6.596 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.08 Tw +[( could not be found. In this case, no code is produced for )]TJ +/TT17 1 Tf +26.6503 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(,)Tj +-39.7369 -1.2889 TD +(and the compiler proceeds to the next function to be compiled, if any.)Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +/TT19 21 0 R +/TT21 72 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +74 0 obj +<< +/Length 6515 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-20)Tj +/TT14 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT4 1 Tf +10 0 0 10 166.2026 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 168.9809 568.2 Tm +-0.0001 Tc +0.0001 Tw +(NOT FOUND\))Tj +/TT14 1 Tf +10 0 0 10 222.9809 568.2 Tm +0 Tc +0 Tw +( )Tj +/TT6 1 Tf +9 0 0 9 174 551.6 Tm +0.0333 Tw +(Occurs when )Tj +/TT8 1 Tf +6.1394 0 TD +0 Tw +(RECOMPILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0333 Tw +[( or )]TJ +/TT8 1 Tf +1.5076 0 TD +0 Tw +(BRECOMPILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0333 Tw +[( try to copy the compiled definition of )]TJ +/TT17 1 Tf +17.3067 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0333 Tw +[( from)]TJ +/TT17 1 Tf +-37.5558 -1.2889 TD +0 Tw +(CFILE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0056 Tw +[(, and cannot find it. In this case, no code is copied and the compiler proceeds to the)]TJ +-3.0005 -1.2889 TD +0 Tw +(next function to be compiled, if any.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT4 1 Tf +10 0 0 10 166.2026 506.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 168.9809 506.06 Tm +-0.0001 Tc +0.0001 Tw +(NOT ON BLKFNS\))Tj +/TT14 1 Tf +10 0 0 10 244.5809 506.06 Tm +0 Tc +0 Tw +( )Tj +/TT17 1 Tf +9 0 0 9 174 489.46 Tm +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0356 Tw +[( was specified as an entry to a block, or else was on )]TJ +/TT8 1 Tf +23.2786 0 TD +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0356 Tw +(, but did not appear)Tj +-31.0799 -1.2889 TD +0.1356 Tw +(on the )Tj +/TT17 1 Tf +3.2862 0 TD +0 Tw +(BLKFNS)Tj +/TT6 1 Tf +3.6006 0 TD +0.1356 Tw +(. In this case, no code is produced for the entire block and the compiler)Tj +-6.8868 -1.2889 TD +0 Tw +(proceeds to the next function to be compiled, if any.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT4 1 Tf +10 0 0 10 166.2026 443.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 168.9809 443.92 Tm +-0.0001 Tc +0.0001 Tw +(CANT BE BOTH AN ENTRY AND THE BLOCK NAME\) )Tj +/TT6 1 Tf +0.5577 -1.9933 TD +0 Tc +0.0011 Tw +(In this case, no code is produced for the entire block and the compiler proceeds )Tj +/TT14 1 Tf +10 0 0 10 490.8814 425.98 Tm +0 Tw +(to )Tj +/TT6 1 Tf +9 0 0 9 502.0196 425.98 Tm +0.0011 Tw +(the next)Tj +-36.4466 -1.2222 TD +0 Tw +(function to be compiled, if any.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(-)Tj +/TT4 1 Tf +10 0 0 10 200.8579 392.64 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 203.6362 392.64 Tm +-0.0001 Tc +0.0001 Tw +(USED BLKAPPLY WHEN NOT APPLICABLE\) )Tj +-3.2929 -1.8444 TD +0 Tc +0 Tw +(BLKAPPLY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1567 Tw +[( is used in the block )]TJ +/TT17 1 Tf +9.9219 0 TD +0 Tw +(BLKNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.1567 Tw +(, but there are no )Tj +/TT8 1 Tf +8.5289 0 TD +0 Tw +(BLKAPPLYFNS)Tj +/TT6 1 Tf +6.6011 0 TD +0.1567 Tw +[( or )]TJ +/TT8 1 Tf +1.7542 0 TD +0 Tw +(ENTRIES)Tj +/TT6 1 Tf +-35.8077 -1.2889 TD +(declared for the block.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +/TT4 1 Tf +10 0 0 10 171.6035 342.1 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 174.3818 342.1 Tm +(SHOULD BE A SPECVAR - USED FREELY BY )Tj +/TT17 1 Tf +22.2036 0 TD +(FN)Tj +/TT8 1 Tf +1.1962 0 TD +(\) )Tj +/TT6 1 Tf +-23.4422 -1.8444 TD +0.2467 Tw +(While compiling a block, the compiler has already generated code to bind )Tj +/TT17 1 Tf +35.7789 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2467 Tw +[( as a)]TJ +/TT8 1 Tf +-37.5791 -1.2889 TD +0 Tw +(LOCALVAR)Tj +/TT6 1 Tf +4.8008 0 TD +0.2989 Tw +(, but now discovers that )Tj +/TT17 1 Tf +12.3514 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2989 Tw +[( uses )]TJ +/TT17 1 Tf +3.0275 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2989 Tw +[( freely. )]TJ +/TT17 1 Tf +4.4299 0 TD +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.2989 Tw +[( should be declared a)]TJ +/TT8 1 Tf +-29.4103 -1.2889 TD +0 Tw +(SPECVAR)Tj +/TT6 1 Tf +4.2007 0 TD +( and the block recompiled.)Tj +/TT8 1 Tf +-6.8674 -2.3333 TD +-0.0001 Tc +0.0001 Tw +(\(\(* --\) COMMENT USED FOR VALUE\) )Tj +/TT6 1 Tf +2.6667 -1.8444 TD +0 Tc +0.1 Tw +(A comment appears in a context where its value is being used, e.g. )Tj +/TT8 1 Tf +30.8889 0 TD +0.2389 Tw +(\(LIST X \(* --\))Tj +-30.8889 -1.2889 TD +0 Tw +(Y\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0978 Tw +[(. The compiled function will run, but the value at the point where the comment was)]TJ +-1.2002 -1.2889 TD +0 Tw +(used is undefined.)Tj +/TT8 1 Tf +-2.6667 -2.2667 TD +(\(\()Tj +/TT17 1 Tf +1.2002 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +-0.0001 Tc +0.0001 Tw +(\) - NON-ATOMIC CAR OF FORM\) )Tj +/TT6 1 Tf +-0.9339 -1.8444 TD +0 Tc +0.03 Tw +(If you intended to treat the value of )Tj +/TT17 1 Tf +16.1785 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.03 Tw +[( as a function, you should use )]TJ +/TT8 1 Tf +13.6084 0 TD +0 Tw +(APPLY*)Tj +/TT6 1 Tf +3.6006 0 TD +0.03 Tw +[( \(Chapter)]TJ +-35.7879 -1.2889 TD +0 Tw +(10\). )Tj +/TT17 1 Tf +2.083 0 TD +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +( is compiled as if )Tj +/TT8 1 Tf +7.6582 0 TD +(APPLY*)Tj +/TT6 1 Tf +3.6006 0 TD +( had been used.)Tj +/TT8 1 Tf +-18.4089 -2.4 TD +(\(\(SETQ )Tj +/TT17 1 Tf +4.2007 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +-0.0002 Tc +0.0002 Tw +( --\) BAD SETQ\) )Tj +-5.9847 -1.8444 TD +0 Tc +0 Tw +(SETQ)Tj +/TT6 1 Tf +2.4004 0 TD +( of more than two arguments.)Tj +/TT8 1 Tf +-5.0671 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - USED AS ARG TO NUMBER FN?\) )Tj +/TT6 1 Tf +0.8664 -1.8444 TD +0 Tc +0.0867 Tw +(The value of a predicate, such as )Tj +/TT8 1 Tf +15.1999 0 TD +0 Tw +(GREATERP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0867 Tw +[( or )]TJ +/TT8 1 Tf +1.6143 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0867 Tw +(, is used as an argument to a function)Tj +-22.8152 -1.2889 TD +0 Tw +(that expects numbers, such as )Tj +/TT8 1 Tf +13.3989 0 TD +(IPLUS)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +-19.0661 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - NO LONGER INTERPRETED AS FUNCTIONAL ARGUMENT\) )Tj +/TT6 1 Tf +0.8664 -1.8444 TD +0 Tc +0.0333 Tw +(The compiler has assumed )Tj +/TT17 1 Tf +12.166 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0333 Tw +[( is the name of a function. If you intended to treat the )]TJ +/TT12 1 Tf +24.4701 0 TD +0 Tw +(value)Tj +/TT6 1 Tf +-37.8363 -1.2889 TD +(of )Tj +/TT17 1 Tf +1.1967 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0678 Tw +[( as a function, )]TJ +/TT8 1 Tf +6.652 0 TD +0 Tw +(APPLY*)Tj +/TT6 1 Tf +3.6006 0 TD +0.0678 Tw +[( \(Chapter 10\) should be used. This message is printed when)]TJ +/TT17 1 Tf +-12.6494 -1.2889 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +( is not defined, and is also a local variable of the function being compiled.)Tj +ET +endstream +endobj +75 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +77 0 obj +<< +/Length 4861 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(18-21)Tj +/TT8 1 Tf +-39.6667 60.6822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - ILLEGAL RETURN\) )Tj +0.8664 -1.8444 TD +0 Tc +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +( encountered when not in )Tj +/TT8 1 Tf +11.5801 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-20.2477 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - ILLEGAL GO\) )Tj +0.8664 -1.8444 TD +0 Tc +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +( encountered when not in a )Tj +/TT8 1 Tf +12.3301 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-18.5973 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - MULTIPLY DEFINED TAG\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +0.0367 Tw +[( is a )]TJ +/TT8 1 Tf +2.0748 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +[( label that is defined more than once in a single )]TJ +/TT8 1 Tf +21.4424 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +[(. The second definition)]TJ +-29.5182 -1.2889 TD +0 Tw +(is ignored.)Tj +/TT8 1 Tf +-2.6667 -2.2667 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - UNDEFINED TAG\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +( is a )Tj +/TT8 1 Tf +1.9648 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +( label that is referenced but not defined in a )Tj +/TT8 1 Tf +19.4346 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-30.0671 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +/TT8 1 Tf +1.8003 0 TD +-0.0001 Tc +0.0001 Tw +( - NOT A BINDABLE VARIABLE\) )Tj +/TT17 1 Tf +0.2663 -1.8444 TD +0 Tc +0 Tw +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, or else not a literal atom.)Tj +/TT8 1 Tf +-8.5822 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAL)Tj +/TT8 1 Tf +1.8003 0 TD +-0.0001 Tc +0.0001 Tw +( -- BAD PROG BINDING\) )Tj +/TT6 1 Tf +-1.784 -1.8444 TD +0 Tc +0 Tw +(Occurs when there is a prog binding of the form )Tj +/TT8 1 Tf +21.5361 0 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(VAR)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAL)Tj +1.8035 -0.2222 TD +(1)Tj +/TT19 1 Tf +0.6 0.2222 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(VAL)Tj +1.7997 -0.2222 TD +(N)Tj +/TT8 1 Tf +0.6 0.2222 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-34.5568 -2.5556 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - MULTIPLY DEFINED TAG, LAP\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +0.0144 Tw +[( is a label that was encountered twice during the second pass of the compilation. If this)]TJ +-1.2002 -1.2889 TD +0.08 Tw +(error occurs with no indication of a multiply defined tag during pass one, the tag is in a)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(LAP)Tj +/TT6 1 Tf +1.8003 0 TD +( macro.)Tj +/TT8 1 Tf +-4.467 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - UNDEFINED TAG, LAP\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +0.0756 Tw +[( is a label that is referenced during the second pass of compilation and is not defined.)]TJ +/TT8 1 Tf +-1.2002 -1.2889 TD +0 Tw +(LAP)Tj +/TT6 1 Tf +1.8003 0 TD +( treats )Tj +/TT17 1 Tf +2.9502 0 TD +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +( as though it were a )Tj +/TT8 1 Tf +8.9233 0 TD +(COREVAL)Tj +/TT6 1 Tf +4.2007 0 TD +(, and continues the compilation.)Tj +/TT8 1 Tf +-21.7414 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - MULTIPLY DEFINED TAG, ASSEMBLE\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +( is a label that is defined more than once in an assemble form. )Tj +/TT8 1 Tf +-3.8669 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(TG)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - UNDEFINED TAG, ASSEMBLE\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(TG)Tj +/TT6 1 Tf +1.2002 0 TD +( is a label that is referenced but not defined in an assemble form.)Tj +/TT8 1 Tf +-3.8669 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(OP)Tj +/TT8 1 Tf +1.2002 0 TD +-0.0001 Tc +0.0001 Tw +( - OPCODE? - ASSEMBLE\) )Tj +/TT17 1 Tf +0.8664 -1.8444 TD +0 Tc +0 Tw +(OP)Tj +/TT6 1 Tf +1.2002 0 TD +( appears as )Tj +/TT8 1 Tf +5.1738 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( of an assemble statement, and is illegal.)Tj +/TT8 1 Tf +-10.841 -2.3333 TD +(\(NO BINARY CODE GENERATED OR LOADED FOR )Tj +/TT17 1 Tf +24.0039 0 TD +(FN)Tj +/TT8 1 Tf +1.1961 0 TD +(\) )Tj +/TT6 1 Tf +-22.5333 -1.8444 TD +0.1989 Tw +(A previous error condition was sufficiently serious that binary code for )Tj +/TT17 1 Tf +33.886 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1989 Tw +[( cannot be)]TJ +-35.0862 -1.2889 TD +0 Tw +(loaded without causing an error.)Tj +ET +endstream +endobj +78 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT17 20 0 R +/TT19 21 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +81 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +82 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +84 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +85 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +86 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +87 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBJGOB+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 88 0 R +>> +endobj +88 0 obj +<< +/Filter /FlateDecode +/Length 20106 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8K壂 S8-r}`flhH3iDkbJiJ)HIClQ +Q)@z&@?ޙ߻܆/'>]X܅s&}|ߕ)pBA#0i3QX4x;˗!Pd(^ivǷa{(*CKX7ǐT ܹv?6~n="lC3]ZmGc $w\behjh +`=G(ɸxLzkEy~[/AqSTлo PG\KZVbr\+Pۅ/YKNn'G\FrNP nJ,wt\WH<O2n"̄&I#釡׌3dOpgaqp_IH 0 @*>1e}JO$gݏq2$}tLGWz +JɌ~ɾ`ꙛ&2d;19Ww.cO@<'F/r6]+6;HZ~$sTU%Dcf~`bm|%6Ƨl\j2۸ƕ66qO6u6gm`m97/8$OqCb/ +50O%PMbHWLT!5)!t5sg@K_rU%p7L77F\ җ%EcnH52鲊UU>*-*[ -)h #@1nM$4SkWLg:*vOuP-B M!.P"muŃ.P4 ?x8$;Ei*:RkM%[$v/ݾRU)Gm̄HpzkI,K{=TaaT=ьv93YYiPEVh'ljQW}LM5th2Hhci!9Ӑ\Q"]~WX+A+ijXJj/?ZY ZEg7]8a00rv bg;)+$vmЯ`9e,^N3,?͔-MNeisi4ZNOK-9k5]o HߓDFOe!Dl3~d{{3Q3ޔ&?My4rD"4yǘ%eG" \";S2WeW7ʖVO3q/FVnyOn~+5{ f+/M .mv rAlɺK2ƜԱ|KvXʲbੑKX)UOF.JIv rT!5eװR%3Z)I)V#3Y-\T ;]ߵ?%{ڥ+b+ )!gb[Z'N-悔Rw#g\"xG';3.o7< K)1\ Cz2eey_;YU^5% rp r }֕gOym2Qȧu-m'8KϹ) +o[!+eYVWE{ث131>EaWȃ.Q-3x6i#9utqˇwᄡG;vNcUslf _K;]̬4 0w$[Gab.XQ.# %ҮIԺhZJPCHB(R6Cet(`" t:t[a=wI }u~ޏ;K]?;sު\$)3`JѢ*$q7.{='2#Bł܂WYG,ݭMf6 +KTѩ9`aZhK/,ٮق0R9u^Vc@"#92F1xQ&|w4xCG$8WJFhdqpXխL)_Ãi3\nSܙfJ0=^$ cUBFږ.vyNȧTM ԇLءVZ?~,nRCFŅYV8WnCG}~S@P}@-! +PI`:b|OZѹXnPɳT9T]٪4IFd]{fuKKj\=?p u˺Ogit7){r]X:gSݭjwU9Ҫu~);?SOryTYvAS%dtډy\/wo Cg,sJGp9 CbK徚=_oTC-[1O9ՐK +ϣvU-!cRYگ@w*@:Ki9TYl;tvmh? 7QI2Mtܱ9fK)Pp2ʡ|H1_/k驘d wka`Knr]%@Dg)E ֈ{#r[4˃o77N*)6H rmʛvH-u` GFw{QH;a1ѣQQg,IF2Cb)Ҍ~ [g[j*R.!%K?Y bTb$6Ȩ>\p0;amFXElN ++axLI0F>/gc02`4A+^ Spe8y)%dOj3d%yh$D^!-d'y#oϤ#Ӥ\ UJڨP7CQt}V%>GWhn[諴Eߣ]z~AAh?M03dc0eTVf0?{-`Kl5gdCCvfv]arn>OSOx?ŗov?;a~SG%~G?&j22LX'n*|?A!HPg0bZ@qpXQ3CQT Xa482RwZf8݊2 cLj"VG}X#& +ɚW2 Yt?X~' +oP%%i0HR+4b ݒ&c6S+Q'b]vdQEτ1,װc?`cEpՌިd3A> sШd +8eݎg3-G{})f2Ͷ L乑m;-ΡZRU_w3DKP)ji7Zraڭ-BesK-$IY8Dp]]i>s ȭU'npZK;~jkɒ^_RKD>4{GK{yѥhk꺺bR%8>:D/lI'F`|6q.眤<m:(5×Be+HI[uNPv#'Nr-dnV(q Nti4[`HAus{lP~i[Yݽ}ػ;na5G't%W߶߶lۺ[_~bYal `/Jpa",L +TZE״pv/]E%?VK(9$1.Hpݯ #lHleYD}!Ӭ&28|(W4<e.ąE>faru&g N8jv_b[LxOfY*!gEiPSzl L pkAE_  ,ώtnW>M ]QiYc*Z*n¼ҴۚEeyhrWMeuCmaŌ=R[,gv4ūh-˝~}tlt\nEb;aVd1tɮJX'lF<('7.&cj3BnTefUO(- +n392HIGD/ ڣWͥ4D"iWq_ZafUdŷ@y.%ؔ[Lf7qU'-!xTKkE,8O%3}堋_Ġ`=F2.]LedbY!:.I"[,W~ˤ=Y_@d|ZXY@Vo47 PK9tev|q+ Y4c4; Y2`YX gLqB%ASJ؊hݏ[Z,ZҖ%8 ̂jԍRK¸2ٸ瘱?%UJ9C':g*.?.ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStVRKAİXk== x^.wwR9sߚq?W?NhN-:zTDw!_hG,h)cxz}GGVWAhSdicEk%`еdA"mψԒn^1v缴/y]4|ˊ^ox6g@EV4 @3h UFF;b|thƖorz̲[Bn+/LkI̯/^Gދaa4"$wQ eIp>}$XhNqUblfqBҡ>r[m)1x| u(8GTA"r wj;-A^7-W^-)AyjŪfϽ^Ww[ =x +n:Y,Š ,}*:,aCpx>Mz<4Vc|肽 DE8 +'U8 _ 'x7`@ȋEu5/{h# Ao%tq)^b7f~ +wo^<'?opS*IYIVH|7Mr/q?~;jۅ2oEFE-D*~v`32JMS# lt! +$2jZLFcDg21iI;6bD^Ͻ,v={w}.*WTCP jP]V!5T;շwգjz^~^VTMZ46AM֦kOi3HxY#{ T8q1 :&VQM%VMQ +6aNlGh1ĎTj;@?):FZ[VicM^c9\Z-JQl0=|@'D1RP 7~O`n&a 諈 +H([A'N1BNqG,B@qVPGAë-uEei5pSfXǦ8!c8MQ k.|;$wFv.=g|_f4)^w$d-DB3Cِgt75uM!*y8 vХYcBF6$7׹Fkk)}⽰!H{\ 'd @ouv۳I ug"0aH\[}A*- 53d HƗh,JnZ}ė}6D;ELz3IM >Pd䍵݁޵=%r s@c/isąuH#5F#"9:ni"87Jkï.")]H&Hz5nO[xohp.Ԧs +]yd7veWakй6PIÍDvjBQ&KZlx"}{޾C/_g+3 +PKyr+$v<v޵c[ؙ*t:[vsݹPǞglO|@X Zu+fdwZWG<Wˌ8`1k2V5/ۗ|`NnoX󆥷[H|q8:\!K$-$.=+}]bL$нa_M\NjsOWLH"is27dep $_X^Qz x] 4V1c]j3/`K$Aa}gQ Pz$B0G!% : bTW^,µ`0p|:zssA̓)3vld'^`TVgN^t`wM3绺ϲNd.?`n9l*͞H'yӌ|ۗ3,۽z ΁\bG:'fnV!r1clC${8;gg +FMx!פȧFlۄ Ƕ!-L=wsQo,O"-~4$A۪Єump{oLg7I0G۸%W =To/0Džu Ố QM ȂȪrX(BfU" kx +&dX mWI)|_ M /*2YCjȫdyCz>9M>"g?ɿEFL +Qc7 d:N rZIUt nv#K?=M~z!"KP2]ɖ̬YR,CvVDF 9ZҡA9t)ǕS(+5dj5+s0'sxļƳ {l +KgY&b?bAfv<R(y K"wBIU]B̗z,[= +"v, 7ra%r( C$ {\ۄZ $| U-D8Edm+US6P,XgِHwXرE>HR5KUo Xjъa!Ue)4\Q.ʼ)x_m3,(.2_[nJTVʺv< }m{"ώۖѣfB~okh*H9?I4YwdKn _%oߘ_X6dj0dawZC'3RǩcY58vЎ]#{i8~vN~;"&dJS +_#|8{mv/6!F34QK@IH6$bM?2NA*#r4CMdZpv&dD;HE%;{ߟyB=OnX@o7ՠ/ŹB pdc"""Ҍ)eu9..3rwMgIEaXuP״yv%׿YC5sfh[vNK*Zn_a濱i|S 5z9 {nuw}C.,vC=Q7%mg@>64k&[UYHn>)[l:tρùUu; VV[J۪D'o<;0׎.lуaw?s-CWK7svT[<}MUHhϼ eivnC +[ӭh+or{~$_Vi5E\]4⨉6~o}oyi Zַݰ_={OxݵF9(;{n~ݮs튖n(-BMoiD5oNo>d + q}gHJ>cwI^qQd\(GPIE,1"vXNDUzBL$ƕљ2K^_w|-8'iTlvmfYȤDC Y#,})ȃjB(0|(E=Uzj1TMnA=X+NX kPO[`;ڠ~A8G9T]Eu[އ8H6U UE*TVu,&[n%#܅j=D&LZȃ!H7y%A{r>z$$&7y'͠~K/G}UH~Vi~+tD4B[GhғO5teTZ|T[X5e7zvk`k:\Ml3*&5jGՉ +c'X7;Z,JjXJ >(F+Jݍ Tqz㼱gM)]Ev[2\! +͝ϳEKi-%Ra+)c\ +[)؂Ue3y Pqif{JʺhG2T mSAO&)Qb3DAc.[C /+W &ǯYJPvҰ, I<E+Lxlca b `!iYl#BNbS,?O[A;y-o2g}LcA=KA<1&+cJՂl{4өxM)0(]'loFEӿ22 yc@:X'Avʹ[`v{^; j?8~x/!)<(Q'oLaOlq mEw`Ƙ{^PU"|rfF` 0g$ÍrK aW YBM,aamUmp 68-F{rnkc*5lK"<ߐt_ïp^6c,gxYsckf+YʴЧ܋qz GK} =5e1Yle1 yԹ,nzS]:XJ7-X,!z,bEٳGY%JrnX bټ0WwVaPUMd!Q}x2S+JXS^ip3hnc.٪VvYfֿɯ82nwڷ& Q"#%qTvCˆ< RIK_0|!_WH4$$^{J&m,g JyQk'm@H̃|;;:)p|lvdn|:9w--̲-M,#Yxt%Q9hhY0KYCZªp,]=.rџт Ư^Թ5ʳf!1fPUk|MϾysƵhCMw<x2ZpGpݲTicK<ʚşcМ}Û-?zqe %,fά:Y,MDVs<Е¡5眣;Έ[Lm*׹*8qWWo6=C&> À%3 Vmm0G[xKxD-p29ٜ79]Xv"=YEd1/bRѾ /A& " -=e:!"%58dj]dڹ5xc'sF-&օlRX%#f-0 %*lu1LMS,?uQżS`$BmU4(vx h)וֹ+܃LN,y6ia +fE9,pTw|GBw ǩ 6h95P" R_Y8NN!j;WV{uٍOC:dыZh+9-ZxfOxٳp{9̎->.~ 8+XXM Ż-&ʰBu'YZ jf ,Uho1+b2_hq줜:2DmuT7L~ +a/ބƐ5"#@"]hMx}yx*p;[ *5,"^"Y~-L44Y5x`jh10nZN׏dWRŚ^sˏ ˚2pbax[_OCT_f5 MT`uQ}1,P gѫ/lKw`b;ˉ6]-O+J0O_Ǣ:^ǯ/P݉,~I +Kk ׊fA2q"=.WGLGo8L>b~v6YA hYwRkᦊOYEAuAM퓅FWwyTAHe-X~06PBȳ!üll`j|JrCoiF5*vf[hvY[qtu?D3mRga>ڛ)k2G&c~ MGWwg mc=ۏHV +h#iۏhPhYeNdӡf&#d(^ 18RzH y~뿗Sx/}6+ŀ (B24Hܗ{*}edݣlءhtap͇fySVe24[lqFs=8> S"Xbh4-_flow)pm1,uh;65L>,EJ}}š{BK,v\Suc\, &!{QMl~(gq?Mnr+FW;M,OnN CCQ:4| I(`ZY^o[1Xqb`w ![fbe5ʈ2|Z9|Ir^ywKO^-PQg}¢(a,B5E۲b_+5 b]xh +k<410OkGqTԪ1&>cm|cE.N5csg柹ߢf'*`X_R2syl!gzmgmcv]ea,Cy"|gq7M|?s ~ߖ¥ޒ&Y8X*UHF-itD:/]l49KvSry^n' +S"ʏ\e2[,VV)*(;0ݫV('ʿKJTU5&^:Hf5@_OJLF™D^D%*-PBcU…^$L&0P#$*H{c=DVa(bU(P#tPb@K#&ga8C,& >a4EOA~T4TFnF`TQĬGl75CN"H F*4 WE%.`U QB}Aԉ8!ہ M\-vH׃ߠ6Oo,ԃ+ b/>,z,me~+ ;Az]۫{uVZZvݾVTցu'<7Wzֹ[;"G^!/гcc:KuxqI #K?_KsJw++ }Ҭ-yK[~m^ɲ̟,N6^幧Sge$jǎ +-_+ jeu5 $7ovTӵQ0ҽ3O\,[|,:E~kD2gҙ]ӌ U7Ϛ ^{ZKCi%Sǻל̯~g'Q +Նɵ?ȯX<_ϵ^,-{wRq5ub VJ[|^wUZo!KݢyyGĥֶ4"s/- JB!^kίNlCܔ-:K4w@`3! JKˉW &dWqXqg튾֭ 4n_}tsrLӪڤ#qT-41VYu*Ϻr> 1tHk/㾜nX"+$w2amLTͣve\uX`ܗ;93,)Hƞ,~eap7ˢ3ϕ{3%pz `?|t (z(b!C$|j0)?l y01ߚ Tnx0 kPsކfbv8 0;C;t TxFD$ē$BOP2d;%c2L&Ed)%ee2TU, Md5Yy\OdKr|y%r kJg^85hf4a4i9it:c9c ]JUtEn>.%ӣ#z~F/ޠF3cɢX֏Ų8fa,='PQ3CЇʧ(0DD9eh-F%R=r}%L#6b򨣊Qqr[^A )8ꖇ LP˔.3YWF^]paW4 + Gu!]+WV/QVIAar dIB(q|~@U3hRgv,Mͨh>p+4 pXXI g+N8q.D( "Љ¬5pNpanbf@1(3@f;̛7־\xك/޾쁏6ظvPyk_MK31<<e#v +Pv5zP(0sMw! wk].vq`䦱n 97r@~6xƒk. .Ҍ~-%dKʳ/rb}B^B}*s~Rl jʍTMwn@,g?–\]W._} +G۝ۻPO}}Oq۽a}gt|iu/|u5&B< +%cF6IWVjDoPkjmFgir8ݧ80@ϟf:yqTyVJk۔pjlt&L8=^/=;R<4ܮz&wDN1>m1ںo +v 9xی+3L{ru7/_]gJp]P}`Axޞ_ZY~v6C/2Nvsjѕ,;?sM^ufʪxe?>aGy|x&Fݞ'ϝUv:u&yR݆%ّntp,CΓU9s&]|tny}Zn:VRV2-{&_Ǚ5wXnn]YU^TX~7*gD]Je9>llcLٜ[׎ikҼˡK%foX<9|+~lXT9䱒WG&|UDy9t犄ɽR 뿸%t 94*J/;P83J(UKKoPW8%IuO(Ҧq/yB/'m7 +%7}Q'Oi:w`tUFq4Ƒ>|ADI/ȟiBr뛣\rGgiWeI +YIԠÐ%d $Aj3 7| >[>xl&.w ߦ[GR-rB{7`#x^^//G.R/Νj\gМ|OQ +'%c<VJP #^Fr*#G.)'w䲸JꮠDfli筶DG}P^[99aiQ"3ES4˻Ѧ,?C@'wAɳGC LnY[yMdڂ֛ami=\Zp zXҿ`s%JWNi9tk1K +bh m{g! Yi16f]lda.ɢylUA:Q"3GFDhWpF99ؙZĬgX::?62#B#4JOCI:rc14z. LS& N'I8p,wc{ 9?(Ho1[p8 m#Bo@:":r8h0!CA@̭esBA`4L#2 "KN^ԍ;^&=G2y~h wY:'٨gDlQй {Sᷰb+sA4 +Y6VPuBt9B@U&Q3dPRg O'6{_~9̏$i\)1yؕNvt{qM_N +o}?ּIr?N!r0' a9á:zAğX3fpP|vQMp">?'źN&WFSTjW{ҟ=_lp38RԖ!wka]u|`A!º+F"Yi{ZR+Pomla~ۚښfg9Py(7Y*dMx?*Z7[SwguOaCH:sV^Di#FSk* JkVv2Z7ZS f+IFU³Qb9-zq> +endobj +90 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +91 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 96 +/FontBBox [-170 -225 1116 931] +/FontName /Helvetica-Oblique +/ItalicAngle -15 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 80 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 117 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 0 0 0 0 0 556 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 0 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 0 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 0 611 0 278 0 556 278 889 611 611 +611 0 389 556 333 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 81 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 371 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 0 500 500 0 0 250 250 0 0 0 0 +0 778 611 709 774 611 556 0 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 82 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 600 0 0 0 0 600 600 600 0 600 600 600 600 +600 600 600 600 0 0 0 600 0 0 600 600 600 600 600 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 600 600 0 0 +0 600 0 600 0 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 83 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 +0 600 600 0 0 0 0 0 0 0 600 0 0 0 0 600 +0 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 84 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 556 0 0 0 0 0 0 0 778 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 0 278 778 556 444 +500 0 389 389 333 556 500 722 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 85 0 R +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 +0 0 0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 86 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBJGOB+Symbol +/Encoding /Identity-H +/DescendantFonts [ 92 0 R ] +/ToUnicode 93 0 R +>> +endobj +92 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBJGOB+Symbol +/FontDescriptor 87 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +20 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 89 0 R +>> +endobj +21 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 80 +/Widths [250 0 0 0 0 0 0 0 333 0 0 0 250 0 250 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +0 0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 +611 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 90 0 R +>> +endobj +72 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 91 0 R +>> +endobj +93 0 obj +<< +/Filter /FlateDecode +/Length 227 +>> +stream +HTP=O0 +<c@-@DiC=Ibg?S|F0#\,G@*pަh'gq- 6 34 9$xJɇ1Sn' h Əg/fB7oAU,%dˆq~J?Mu![l$5ڽt);mٕ(;!~82<#|m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +25 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 27 0 R +/Contents 26 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 39 0 R +/Contents 38 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +48 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 50 0 R +/Contents 49 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 75 0 R +/Contents 74 0 R +>> +endobj +76 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 78 0 R +/Contents 77 0 R +>> +endobj +94 0 obj +<< +/S /D +>> +endobj +95 0 obj +<< +/Nums [0 94 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 17 0 R 22 0 R 25 0 R 28 0 R 31 0 R 34 0 R 37 0 R 40 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [43 0 R 48 0 R 51 0 R 54 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R 73 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +79 0 obj +<< +/Type /Pages +/Kids [76 0 R] +/Count 1 +/Parent 46 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [11 0 R 47 0 R 79 0 R ] +/Count 21 +/MediaBox [0 0 612 792] +>> +endobj +96 0 obj +<< +/CreationDate (D:20210202102700-06'00') +/ModDate (D:20210202102700-06'00') +/Producer (Apple pstopdf) +>> +endobj +97 0 obj +<< +/Type /Catalog +/Pages 46 0 R +/PageLabels 95 0 R +>> +endobj +xref +0 98 +0000000000 65535 f +0000169623 00000 n +0000000016 00000 n +0000005599 00000 n +0000165224 00000 n +0000165435 00000 n +0000165859 00000 n +0000166396 00000 n +0000166921 00000 n +0000167258 00000 n +0000142692 00000 n +0000171452 00000 n +0000169704 00000 n +0000005752 00000 n +0000010690 00000 n +0000167663 00000 n +0000168039 00000 n +0000169788 00000 n +0000010859 00000 n +0000017294 00000 n +0000168394 00000 n +0000168868 00000 n +0000169872 00000 n +0000017474 00000 n +0000023376 00000 n +0000169956 00000 n +0000023557 00000 n +0000028554 00000 n +0000170040 00000 n +0000028685 00000 n +0000036539 00000 n +0000170124 00000 n +0000036732 00000 n +0000042832 00000 n +0000170208 00000 n +0000043025 00000 n +0000049214 00000 n +0000170292 00000 n +0000049407 00000 n +0000055640 00000 n +0000170376 00000 n +0000055795 00000 n +0000062742 00000 n +0000170460 00000 n +0000062935 00000 n +0000069098 00000 n +0000171801 00000 n +0000171589 00000 n +0000170544 00000 n +0000069253 00000 n +0000077325 00000 n +0000170628 00000 n +0000077507 00000 n +0000086201 00000 n +0000170712 00000 n +0000086383 00000 n +0000093493 00000 n +0000170796 00000 n +0000093663 00000 n +0000101266 00000 n +0000170880 00000 n +0000101434 00000 n +0000108244 00000 n +0000170964 00000 n +0000108426 00000 n +0000114454 00000 n +0000171048 00000 n +0000114621 00000 n +0000123078 00000 n +0000171132 00000 n +0000123271 00000 n +0000130691 00000 n +0000169149 00000 n +0000171216 00000 n +0000130897 00000 n +0000137465 00000 n +0000171300 00000 n +0000137633 00000 n +0000142547 00000 n +0000171727 00000 n +0000142833 00000 n +0000143030 00000 n +0000143236 00000 n +0000143436 00000 n +0000143627 00000 n +0000143829 00000 n +0000144032 00000 n +0000144227 00000 n +0000144417 00000 n +0000164613 00000 n +0000164814 00000 n +0000165019 00000 n +0000168182 00000 n +0000169323 00000 n +0000171384 00000 n +0000171412 00000 n +0000171900 00000 n +0000172023 00000 n +trailer +<< +/Size 98 +/Root 97 0 R +/Info 96 0 R +/ID [] +>> +startxref +172093 +%%EOF diff --git a/docs/medley-irm/19-DWIM.TEDIT b/docs/medley-irm/19-DWIM.TEDIT new file mode 100644 index 00000000..cf78df7a --- /dev/null +++ b/docs/medley-irm/19-DWIM.TEDIT @@ -0,0 +1,119 @@ +INTERLISP-D REFERENCE MANUAL DWIM "19"19. DWIM 2 A surprisingly large percentage of the errors made by Interlisp users are of the type that could be corrected by another Lisp programmer without any information about the purpose of the program or expression in question, e.g., misspellings, certain kinds of parentheses errors, etc. To correct these types of errors we have implemented in Medley a DWIM facility, short for Do-What-I-Mean. DWIM is called automatically whenever an error occurs in the evaluation of an Interlisp expression. (Currently, DWIM only operates on unbound atoms and undefined function errors.) DWIM then proceeds to try to correct the mistake using the current context of computation plus information about what you had previously been doing (and what mistakes you had been making) as guides to the remedy of the error. If DWIM is able to make the correction, the computation continues as though no error had occurred. Otherwise, the procedure is the same as though DWIM had not intervened: a break occurs, or an unwind to the last ERRORSET (see Chapter 14). The following protocol illustrates the operation of DWIM. For example, suppose you define the factorial function (FACT N) as follows: DEFINEQ((FACT (LAMBDA (N) (COND ((ZEROP N0 1) ((T (ITIMS N (FACCT 9SUB1 N] (FACT) Note that the definition of FACT contains several mistakes: ITIMES and FACT have been misspelled; the 0 in N0 was intended to be a right parenthesis, but the Shift key was not pressed; similarly, the 9 in 9SUB1 was intended to be a left parenthesis; and finally, there is an extra left parenthesis in front of the T that begins the final clause in the conditional. PRETTYPRNT((FACCT] =PRETTYPRINT =FACT (FACT [LAMBDA (N) (COND ((ZEROP N0 1) ((T (ITIMS N (FACCT 9SUB1 N]) (FACT) After defining FACT, you want to look at its definition using PRETTYPRINT, which you unfortunately misspell. Since there is no function PRETTYPRNT in the system, an undefined function error occurs, and DWIM is called. DWIM invokes its spelling corrector, which searches a list of functions frequently used (by this user) for the best possible match. Finding one that is extremely close, DWIM proceeds on the assumption that PRETTYPRNT meant PRETTYPRINT, notifies you of this, and calls PRETTYPRINT. At this point, PRETTYPRINT would normally print (FACCT NOT PRINTABLE) and exit, since FACCT has no definition. Note that this is not an Interlisp error condition, so that DWIM would not be called as described above. However, it is obviously not what you meant. This sort of mistake is corrected by having PRETTYPRINT itself explicitly invoke the spelling corrector portion of DWIM whenever given a function with no EXPR definition. Thus, with the aid of DWIM PRETTYPRINT is able to determine that you want to see the definition of the function FACT, and proceeds accordingly. FACT(3] N0 [IN FACT] -> N ) ? YES [IN FACT] (COND -- ((T --))) -> (COND -- (T --)) ITIMS [IN FACT] -> ITIMES FACCT [IN FACT] -> FACT 9SUB1 [IN FACT] -> ( SUB1 ? YES 6 PP FACT (FACT [LAMBDA (N) (COND ((ZEROP N) 1) (T (ITIMES N (FACT (SUB1 N]) FACT You now call FACT. During its execution, five errors occur, and DWIM is called five times. At each point, the error is corrected, a message is printed describing the action taken, and the computation is allowed to continue as if no error had occurred. Following the last correction, 6 is printed, the value of (FACT 3). Finally, you prettyprint the new, now correct, definition of FACT. In this particular example, you were operating in TRUSTING mode, which gives DWIM carte blanche for most corrections. You can also operate in CAUTIOUS mode, in which case DWIM will inform you of intended corrections before they are made, and allow you to approve or disapprove of them. If DWIM was operating in CAUTIOUS mode in the example above, it would proceed as follows: FACT(3) N0 [IN FACT] -> N ) ? YES U.D.F. T [IN FACT] FIX? YES [IN FACT] (COND -- ((T --))) -> (COND -- (T --)) ITIMS [IN FACT] -> ITIMES ? ...YES FACCT [IN FACT] -> FACT ? ...YES 9SUB1 [IN FACT] -> ( SUB1 ? NO U.B.A. (9SUB1 BROKEN) : For most corrections, if you do not respond in a specified interval of time, DWIM automatically proceeds with the correction, so that you need intervene only when you do not approve. In the example, you responded to the first, second, and fifth questions; DWIM responded for you on the third and fourth. DWIM uses ASKUSER for its interactions with you (see Chapter 26). Whenever an interaction is about to take place and you have typed ahead, ASKUSER types several bells to warn you to stop typing, then clears and saves the input buffers, restoring them after the interaction is complete. Thus if you typed ahead before a DWIM interaction, DWIM will not confuse your type-ahead with the answer to its question, nor will your type-ahead be lost. The bells are printed by the function PRINTBELLS, which can be advised or redefined for specialized applications, e.g. to flash the screen for a display terminal. A great deal of effort has gone into making DWIM "smart", and experience with a large number of users indicates that DWIM works very well; DWIM seldom fails to correct an error you feel it should have, and almost never mistakenly corrects an error. However, it is important to note that even when DWIM is wrong, no harm is done: since an error had occurred, you would have had to intervene anyway if DWIM took no action. Thus, if DWIM mistakenly corrects an error, you simply interrupt or abort the computation, reverse the DWIM change using UNDO (see Chapter 13), and make the correction you would have had to make without DWIM. An exception is if DWIM's correction mistakenly caused a destructive computation to be initiated, and information was lost before you could interrupt. We have not yet had such an incident occur. (DWIM(DWIM (Function) NIL NIL ("20") 2) X) [Function] Used to enable/disable DWIM. If X is the symbol C, DWIM is enabled in CAUTIOUS mode, so that DWIM will ask you before making corrections. If X is T, DWIM is enabled in TRUSTING mode, so DWIM will make most corrections automatically. If X is NIL, DWIM is disabled. Medley initially has DWIM enabled in CAUTIOUS mode. DWIM returns CAUTIOUS, TRUSTING or NIL, depending to what mode it has just been put into. For corrections to expressions typed in for immediate execution (typed into LISPX, Chapter 13), DWIM always acts as though it were in TRUSTING mode, i.e., no approval necessary. For certain types of corrections, e.g., run-on spelling corrections, 9-0 errors, etc., DWIM always acts like it was in CAUTIOUS mode, and asks for approval. In either case, DWIM always informs you of its action as described below. Spelling Correction Protocol 1 One type of error that DWIM can correct is the misspelling of a function or a variable name. When an unbound symbol or undefined function error occurs, DWIM tries to correct the spelling of the bad symbol. If a symbol is found whose spelling is "close" to the offender, DWIM proceeds as follows: If the correction occurs in the typed-in expression, DWIM prints =CORRECT-SPELLING and continues evaluating the expression. For example: (SETQ FOO (IPLUSS 1 2)) =IPLUS 3 If the correction does not occur in type-in, DWIM prints BAD-SPELLING [IN FUNCTION-NAME] -> CORRECT-SPELLING The appearance of -> is to call attention to the fact that the user's function will be or has been changed. Then, if DWIM is in TRUSTING mode, it prints a carriage return, makes the correction, and continues the computation. If DWIM is in CAUTIOUS mode, it prints a few spaces and ? and then wait for approval. The user then has six options: 1. Type Y. DWIM types es, and proceeds with the correction. 2. Type N. DWIM types o, and does not make the correction. 3. Type . DWIM does not make the correction, and furthermore guarantees that the error will not cause a break. 4. Type Control-E. For error correction, this has the same effect as typing N. 5. Do nothing. In this case DWIM waits for DWIMWAIT seconds, and if you have not responded, DWIM will type ... followed by the default answer. The default on spelling corrections is determined by the value of the variable FIXSPELLDEFAULT, whose top level value is initially Y. 6. Type space or carriage-return. In this case DWIM will wait indefinitely. This option is intended for those cases where you want to think about your answer, and want to insure that DWIM does not get "impatient" and answer for you. The procedure for spelling correction on other than Interlisp errors is analogous. If the correction is being handled as type-in, DWIM prints = followed by the correct spelling, and returns it to the function that called DWIM. Otherwise, DWIM prints the incorrect spelling, followed by the correct spelling. Then, if DWIM is in TRUSTING mode, DWIM prints a carriage-return and returns the correct spelling. Otherwise, DWIM prints a few spaces and a ? and waits for approval. You can then respond with Y, N, Control-E, space, carriage return, or do nothing as described above. The spelling corrector itself is not ERRORSET protected like the DWIM error correction routines. Therefore, typing N and typing Control-E may have different effects when the spelling corrector is called directly. The former simply instructs the spelling corrector to return NIL, and lets the calling function decide what to do next; the latter causes an error which unwinds to the last ERRORSET, however far back that may be. Parentheses Errors Protocol 1 When an unbound symbol or undefined error occurs, and the offending symbol contains 9 or 0, DWIM tries to correct errors caused by typing 9 for left parenthesis and 0 for right parenthesis. In these cases, the interaction with you is similar to that for spelling correction. If the error occurs in type-in, DWIM types =CORRECTION, and continues evaluating the expression. For example: (SETQ FOO 9IPLUS 1 2] = ( IPLUS 3 If the correction does not occur in type-in, DWIM prints BAD-ATOM [IN FUNCTION-NAME] -> CORRECTION ? and then waits for approval. You then have the same six options as for spelling correction, except the waiting time is 3*DWIMWAIT seconds. If you type Y, DWIM operates as if it were in TRUSTING mode, i.e., it makes the correction and prints its message. Actually, DWIM uses the value of the variables LPARKEY and RPARKEY to determine the corresponding lower case character for left and right parentheses. LPARKEY and RPARKEY are initially 9 and 0 respectively, but they can be reset for other keyboard layouts, e.g., on some terminals left parenthesis is over 8, and right parenthesis is over 9. Undefined Function T Errors 1 When an undefined function error occurs, and the offending function is T, DWIM tries to correct certain types of parentheses errors involving a T clause in a conditional. DWIM recognizes errors of the following forms: (COND --) (T --) The T clause appears outside and immediately following the COND. (COND -- (-- & (T --))) The T clause appears inside a previous clause. (COND -- ((T --))) The T clause has an extra pair of parentheses around it. For undefined function errors that are not one of these three types, DWIM takes no corrective action at all, and the error will occur. If the error occurs in type-in, DWIM simply types T FIXED and makes the correction. Otherwise if DWIM is in TRUSTING mode, DWIM makes the correction and prints the message: [IN FUNCTION-NAME] {BAD-COND} -> {CORRECTED-COND} If DWIM is in CAUTIOUS mode, DWIM prints UNDEFINED FUNCTION T [IN FUNCTION-NAME] FIX? and waits for approval. You then have the same options as for spelling corrections and parenthesis errors. If you type Y or default, DWIM makes the correction and prints its message. Having made the correction, DWIM must then decide how to proceed with the computation. In the first case, (COND --) (T --), DWIM cannot know whether the T clause would have been executed if it had been inside of the COND. Therefore DWIM asks you CONTINUE WITH T CLAUSE (with a default of YES). If you type N, DWIM continues with the form after the COND, i.e., the form that originally followed the T clause. In the second case, (COND -- (-- & (T --))), DWIM has a different problem. After moving the T clause to its proper place, DWIM must return as the value of & as the value of the COND. Since this value is no longer around, DWIM asks you OK TO REEVALUATE and then prints the expression corresponding to &. If you type Y, or default, DWIM continues by reevaluating &, otherwise DWIM aborts, and a U.D.F. T error will then occur (even though the COND has in fact been fixed). If DWIM can determine for itself that the form can safely be reevaluated, it does not consult you before reevaluating. DWIM can do this if the form is atomic, or CAR of the form is a member of the list OKREEVALST, and each of the arguments can safely be reevaluated. For example, (SETQ X (CONS (IPLUS Y Z) W)) is safe to reevaluate because SETQ, CONS, and IPLUS are all on OKREEVALST. In the third case, (COND -- ((T --))), there is no problem with continuation, so no further interaction is necessary. DWIM(DWIM NIL NIL NIL ("20") 5 SUBNAME OPERATION SUBTEXT operation) Operation 1 Whenever the interpreter encounters an atomic form with no binding, or a non-atomic form CAR of which is not a function or function object, it calls the function FAULTEVAL. Similarly, when APPLY is given an undefined function, FAULTAPPLY is called. When DWIM is enabled, FAULTEVAL and FAULTAPPLY are redefined to first call the DWIM package, which tries to correct the error. If DWIM cannot decide how to fix the error, or you disapprove of DWIM's correction (by typing N), or you type Control-E, then FAULTEVAL and FAULTAPPLY cause an error or break. If you type to DWIM, DWIM exits by performing (RETEVAL 'FAULTEVAL '(ERROR!)), so that an error will be generated at the position of the call to FAULTEVAL. If DWIM can (and is allowed to) correct the error, it exits by performing RETEVAL of the corrected form, as of the position of the call to FAULTEVAL or FAULTAPPLY. Thus in the example at the beginning of the chapter, when DWIM determined that ITIMS was ITIMES misspelled, DWIM called RETEVAL with (ITIMES N (FACCT 9SUB1 N)). Since the interpreter uses the value returned by FAULTEVAL exactly as though it were the value of the erroneous form, the computation will thus proceed exactly as though no error had occurred. In addition to continuing the computation, DWIM also repairs the cause of the error whenever possible; in the above example, DWIM also changed (with RPLACA) the expression (ITIMS N (FACCT 9SUB1 N)) that caused the error. Note that if your program had computed the form and called EVAL, it would not be possible to repair the cause of the error, although DWIM could correct the misspelling each time it occurred. Error correction in DWIM is divided into three categories: unbound atoms, undefined CAR of form, and undefined function in APPLY. Assuming that the user approves DWIM's corrections, the action taken by DWIM for the various types of errors in each of these categories is summarized below. DWIM Correction: Unbound Atoms If DWIM is called as the result of an unbound atom error, it proceeds as follows: 1. If the first character of the unbound atom is ', DWIM assumes that you (intentionally) typed 'ATOM for (QUOTE ATOM) and makes the appropriate change. No message is typed, and no approval is requested. If the unbound atom is just ' itself, DWIM assumes you want the next expression quoted, e.g., (CONS X '(A B C)) will be changed to (CONS X (QUOTE (A B C))). Again no message will be printed or approval asked. If no expression follows the ', DWIM gives up. Note: ' is normally defined as a read-macro character which converts 'FOO to (QUOTE FOO) on input, so DWIM will not see the ' in the case of expressions that are typed-in. 2. If CLISP (see Chapter 21) is enabled, and the atom is part of a CLISP construct, the CLISP transformation is performed and the result returned. For example, N-1 is transformed to (SUB1 N), and (... FOO_3 ...) is transformed into (... (SETQ FOO 3) ...). 3. If the atom contains an 9 (actually LPARKEY (see the DWIM Functions and Variables section below), DWIM assumes the 9 was intended to be a left parenthesis, and calls the editor to make appropriate repairs on the expression containing the atom. DWIM assumes that you did not notice the mistake, i.e., that the entire expression was affected by the missing left parenthesis. For example, if you type (SETQ X (LIST (CONS 9CAR Y) (CDR Z)) Y), the expression will be changed to (SETQ X (LIST (CONS (CAR Y) (CDR Z)) Y)). The 9 does not have to be the first character of the atom: DWIM will handle (CONS X9CAR Y) correctly. 4. If the atom contains a 0 (actually RPARKEY, see the DWIM Functions and Variables section below), DWIM assumes the 0 was intended to be a right parenthesis and operates as in the case above. 5. If the atom begins with a 7, the 7 is treated as a '. For example, 7FOO becomes 'FOO, and then (QUOTE FOO). 6. The expressions on DWIMUSERFORMS (see the DWIMUSERFORMS section below) are evaluated in the order that they appear. If any of these expressions returns a non-NIL value, this value is treated as the form to be used to continue the computation, it is evaluated and its value is returned by DWIM. 7. If the unbound atom occurs in a function, DWIM attempts spelling correction using the LAMBDA and PROG variables of the function as the spelling list. 8. If the unbound atom occurred in a type-in to a break, DWIM attempts spelling correction using the LAMBDA and PROG variables of the broken function as the spelling list. 9. Otherwise, DWIM attempts spelling correction using SPELLINGS3 (see the Spelling Lists section below). 10. If all of the above fail, DWIM gives up. Undefined CAR of Form If DWIM is called as the result of an undefined CAR of form error, it proceeds as follows: 1. If CAR of the form is T, DWIM assumes a misplaced T clause and operates as described in the Undefined Function T Errors section above. 2. If CAR of the form is F/L, DWIM changes the "F/L" to "FUNCTION(LAMBDA". For example, (F/L (Y) (PRINT (CAR Y))) is changed to (FUNCTION (LAMBDA (Y) (PRINT (CAR Y))). No message is printed and no approval requested. If you omit the variable list, DWIM supplies (X), e.g., (F/L (PRINT (CAR X))) is changed to (FUNCTION (LAMBDA (X) (PRINT (CAR X)))). DWIM determines that you have supplied the variable list when more than one expression follows F/L, CAR of the first expression is not the name of a function, and every element in the first expression is atomic. For example, DWIM will supply (X) when correcting (F/L (PRINT (CDR X)) (PRINT (CAR X))). 3. If CAR of the form is a CLISP word (IF, FOR, DO, FETCH, etc.), the indicated CLISP transformation is performed, and the result is returned as the corrected form. See Chapter 21. 4. If CAR of the form has a function definition, DWIM attempts spelling correction on CAR of the definition using as spelling list the value of LAMBDASPLST, initially (LAMBDA NLAMBDA). 5. If CAR of the form has an EXPR or CODE property, DWIM prints CAR-OF-FORM UNSAVED, performs an UNSAVEDEF, and continues. No approval is requested. 6. If CAR of the form has a FILEDEF property, the definition is loaded from a file (except when DWIMIFYing). If the value of the property is atomic, the entire file is to be loaded. If the value is a list, CAR is the name of the file and CDR the relevant functions, and LOADFNS will be used. For both cases, LDFLG will be SYSLOAD (see Chapter 17). DWIM uses FINDFILE (Chapter 24), so that the file can be on any of the directories on DIRECTORIES, initially (NIL NEWLISP LISP LISPUSERS). If the file is found, DWIM types SHALL I LOAD followed by the file name or list of functions. If you approve, DWIM loads the function(s) or file, and continues the computation. 7. If CLISP is enabled, and CAR of the form is part of a CLISP construct, the indicated transformation is performed, e.g., (NN-1) becomes (SETQ N (SUB1 N)). 8. If CAR of the form contains an 9, DWIM assumes a left parenthesis was intended e.g., (CONS9CAR X). 9. If CAR of the form contains a 0, DWIM assumes a right parenthesis was intended. 10. If CAR of the form is a list, DWIM attempts spelling correction on CAAR of the form using LAMBDASPLST as spelling list. If successful, DWIM returns the corrected expression itself. 11. The expressions on DWIMUSERFORMS are evaluated in the order they appear. If any returns a non-NIL value, this value is treated as the corrected form, it is evaluated, and DWIM returns its value. 12. Otherwise, DWIM attempts spelling correction using SPELLINGS2 as the spelling list (see the Spelling Lists section below). When DWIMIFYing, DWIM also attemps spelling correction on function names not defined but previously encountered, using NOFIXFNSLST as a spelling list (see Chapter 21). 13. If all of the above fail, DWIM gives up. Undefined Function in APPLY If DWIM is called as the result of an undefined function in APPLY error, it proceeds as follows: 1. If the function has a definition, DWIM attempts spelling correction on CAR of the definition using LAMBDASPLST as spelling list. 2. If the function has an EXPR or CODE property, DWIM prints FN UNSAVED, performs an UNSAVEDEF and continues. No approval is requested. 3. If the function has a property FILEDEF, DWIM proceeds as in case 6 of undefined CAR of form. 4. If the error resulted from type-in, and CLISP is enabled, and the function name contains a CLISP operator, DWIM performs the indicated transformation, e.g., type FOO(APPEND FIE FUM). 5. If the function name contains an 9, DWIM assumes a left parenthesis was intended, e.g., EDIT9FOO]. 6. If the "function" is a list, DWIM attempts spelling correction on CAR of the list using LAMBDASPLST as spelling list. 7. The expressions on DWIMUSERFORMS are evaluated in the order they appear, and if any returns a non-NIL value, this value is treated as the function used to continue the computation, i.e., it will be applied to its arguments. 8. DWIM attempts spelling correction using SPELLINGS1 as the spelling list. 9. DWIM attempts spelling correction using SPELLINGS2 as the spelling list. 10. If all fail, DWIM gives up. DWIMUSERFORMS 1 The variable DWIMUSERFORMS(DWIMUSERFORMS (Variable) NIL NIL ("20") 8) provides a convenient way of adding to the transformations that DWIM performs. For example, you might want to change atoms of the form $X to (QA4LOOKUP X). Before attempting spelling correction, but after performing other transformations (F/L, 9, 0, CLISP, etc.), DWIM evaluates the expressions on DWIMUSERFORMS in the order they appear. If any expression returns a non-NIL value, this value is treated as the transformed form to be used. If DWIM was called from FAULTEVAL, this form is evaluated and the resulting value is returned as the value of FAULTEVAL. If DWIM is called from FAULTAPPLY, this form is treated as a function to be applied to FAULTARGS, and the resulting value is returned as the value of FAULTAPPLY. If all of the expressions on DWIMUSERFORMS return NIL, DWIM proceeds as though DWIMUSERFORMS = NIL, and attempts spelling correction. Note that DWIM simply takes the value and returns it; the expressions on DWIMUSERFORMS are responsible for making any modifications to the original expression. The expressions on DWIMUSERFORMS should make the transformation permanent, either by associating it with FAULTX via CLISPTRAN, or by destructively changing FAULTX. In order for an expression on DWIMUSERFORMS to be able to be effective, it needs to know various things about the context of the error. Therefore, several of DWIM's internal variables have been made SPECVARS (see Chapter 18) and are therefore "visible" to DWIMUSERFORMS. Below are a list of those variables that may be useful. FAULTX(FAULTX (Variable) NIL NIL ("20") 8) [Variable] For unbound atom and undefined car of form errors, FAULTX is the atom or form. For undefined function in APPLY errors, FAULTX is the name of the function. FAULTARGS(FAULTARGS (Variable) NIL NIL ("20") 8) [Variable] For undefined function in APPLY errors, FAULTARGS is the list of arguments. FAULTARGS may be modified or reset by expressions on DWIMUSERFORMS. FAULTAPPLYFLG(FAULTAPPLYFLG (Variable) NIL NIL ("20") 8) [Variable] Value is T for undefined function in APPLY errors; NIL otherwise. The value of FAULTAPPLYFLG after an expression on DWIMUSERFORMS returns a non-NIL value determines how the latter value is to be treated. Following an undefined function in APPLY error, if an expression on DWIMUSERFORMS sets FAULTAPPLYFLG to NIL, the value returned is treated as a form to be evaluated, rather than a function to be applied. FAULTAPPLYFLG is necessary to distinguish between unbound atom and undefined function in APPLY errors, since FAULTARGS may be NIL and FAULTX atomic in both cases. TAIL(TAIL (Variable) NIL NIL ("20") 9) [Variable] For unbound atom errors, TAIL is the tail of the expression CAR of which is the unbound atom. DWIMUSERFORMS expression can replace the atom by another expression by performing (/RPLACA TAIL EXPR) PARENT(PARENT (Variable) NIL NIL ("20") 9) [Variable] For unbound atom errors, PARENT is the form in which the unbound atom appears. TAIL is a tail of PARENT. TYPE-IN?(TYPE-IN? (Variable) NIL NIL ("20") 9) [Variable] True if the error occurred in type-in. FAULTFN(FAULTFN (Variable) NIL NIL ("20") 9) [Variable] Name of the function in which error occurred. FAULTFN is TYPE-IN when the error occurred in type-in, and EVAL or APPLY when the error occurred under an explicit call to EVAL or APPLY. DWIMIFYFLG(DWIMIFYFLG (Variable) NIL NIL ("20") 9) [Variable] True if the error was encountered while DWIMIFYing (as opposed to happening while running a program). EXPR(EXPR (Variable) NIL NIL ("20") 9) [Variable] Definition of FAULTFN, or argument to EVAL, i.e., the superform in which the error occurs. The initial value of DWIMUSERFORMS is ((DWIMLOADFNS?)). DWIMLOADFNS? is a function for automatically loading functions from files. If DWIMLOADFNSFLG is T (its initial value), and CAR of the form is the name of a function, and the function is contained on a file that has been noticed by the file package, the function is loaded, and the computation continues. DWIM(DWIM NIL NIL NIL ("20") 9 SUBNAME FUNCTIONS SUBTEXT functions) Functions and Variables(DWIM NIL NIL NIL ("20") 9 SUBNAME VARIABLES SUBTEXT variables) 1 DWIMWAIT(DWIMWAIT (Variable) NIL NIL ("20") 9) [Variable] Value is the number of seconds that DWIM will wait before it assumes that you are not going to respond to a question and uses the default response FIXSPELLDEFAULT. DWIM operates by dismissing for 250 milliseconds, then checking to see if anything has been typed. If not, it dismisses again, etc. until DWIMWAIT seconds have elapsed. Thus, there will be a delay of at most 1/4 second before DWIM responds to your answer. FIXSPELLDEFAULT(FIXSPELLDEFAULT (Variable) NIL NIL ("20") 9) [Variable] If approval is requested for a spelling correction, and you do not respond, defaults to value of FIXSPELLDEFAULT, initially Y. FIXSPELLDEFAULT is rebound to N when DWIMIFYing. ADDSPELLFLG(ADDSPELLFLG (Variable) NIL NIL ("20") 9) [Variable] If NIL, suppresses calls to ADDSPELL. Initially T. NOSPELLFLG(NOSPELLFLG (Variable) NIL NIL ("20") 10) [Variable] If T, suppresses all spelling correction. If some other non-NIL value, suppresses spelling correction in programs but not type-in. NOSPELLFLG is initially NIL. It is rebound to T when compiling from a file. RUNONFLG(RUNONFLG (Variable) NIL NIL ("20") 10) [Variable] If NIL, suppresses run-on spelling corrections. Initially NIL. DWIMLOADFNSFLG(DWIMLOADFNSFLG (Variable) NIL NIL ("20") 10) [Variable] If T, tells DWIM that when it encounters a call to an undefined function contained on a file that has been noticed by the file package, to simply load the function. DWIMLOADFNSFLG is initially T (see above). LPARKEY(LPARKEY (Variable) NIL NIL ("20") 10) [Variable] RPARKEY(RPARKEY (Variable) NIL NIL ("20") 10) [Variable] DWIM uses the value of the variables LPARKEY and RPARKEY (initially 9 and 0 respectively) to determine the corresponding lower case character for left and right parentheses. LPARKEY and RPARKEY can be reset for other keyboard layouts. For example, on some terminals left parenthesis is over 8, and right parenthesis is over 9. OKREEVALST(OKREEVALST (Variable) NIL NIL ("20") 10) [Variable] The value of OKREEVALST is a list of functions that DWIM can safely reevaluate. If a form is atomic, or CAR of the form is a member of OKREEVALST, and each of the arguments can safely be reevaluated, then the form can be safely reevaluated. For example, (SETQ X (CONS (IPLUS Y Z) W)) is safe to reevaluate because SETQ, CONS, and IPLUS are all on OKREEVALST. DWIMFLG(DWIMFLG (Variable) NIL NIL ("20") 10) [Variable] DWIMFLG = NIL, all DWIM operations are disabled. (DWIM 'C) and (DWIM T) set DWIMFLG to T; (DWIM NIL) sets DWIMFLG to NIL. APPROVEFLG (APPROVEFLG% (Variable) NIL NIL ("20") 10) [Variable] APPROVEFLG = T if DWIM should ask the user for approval before making a correction that will modify the definition of one of his functions; NIL otherwise. When DWIM is put into CAUTIOUS mode with (DWIM 'C), APPROVEFLG is set to T; for TRUSTING mode, APPROVEFLG is set to NIL. LAMBDASPLST(LAMBDASPLST (Variable) NIL NIL ("20") 10) [Variable] DWIM uses the value of LAMBDASPLST as the spelling list when correcting "bad" function definitions. Initially (LAMBDA NLAMBDA). You may wish to add to LAMBDASPLST if you elect to define new "function types" via an appropriate DWIMUSERFORMS entry. For example, the QLAMBDAs of SRI's QLISP are handled in this way. Spelling Correction(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 10) 1 The spelling corrector is given as arguments a misspelled word (word means symbol), a spelling list (a list of words), and a number: XWORD, SPLST, and REL respectively. Its task is to find that word on SPLST which is closest to XWORD, in the sense described below. This word is called a respelling of XWORD. REL specifies the minimum "closeness" between XWORD and a respelling. If the spelling corrector cannot find a word on SPLST closer to XWORD than REL, or if it finds two or more words equally close, its value is NIL, otherwise its value is the respelling. The spelling corrector can also be given an optional functional argument, FN, to be used for selecting out a subset of SPLST, i.e., only those members of SPLST that satisfy FN will be considered as possible respellings. The exact algorithm for computing the spelling metric is described later, but briefly "closeness" is inversely proportional to the number of disagreements between the two words, and directly proportional to the length of the longer word. For example, PRTTYPRNT is "closer" to PRETTYPRINT than CS is to CONS even though both pairs of words have the same number of disagreements. The spelling corrector operates by proceeding down SPLST, and computing the closeness between each word and XWORD, and keeping a list of those that are closest. Certain differences between words are not counted as disagreements, for example a single transposition, e.g., CONS to CNOS, or a doubled letter, e.g., CONS to CONSS, etc. In the event that the spelling corrector finds a word on SPLST with no disagreements, it will stop searching and return this word as the respelling. Otherwise, the spelling corrector continues through the entire spelling list. Then if it has found one and only one "closest" word, it returns this word as the respelling. For example, if XWORD is VONS, the spelling corrector will probably return CONS as the respelling. However, if XWORD is CONZ, the spelling corrector will not be able to return a respelling, since CONZ is equally close to both CONS and COND. If the spelling corrector finds an acceptable respelling, it interacts with you as described earlier. In the special case that the misspelled word contains one or more $s (escape), the spelling corrector searches for those words on SPLST that match XWORD, where a $ can match any number of characters (including 0), e.g., FOO$ matches FOO1 and FOO, but not NEWFOO. $FOO$ matches all three. Both completion and correction may be involved, e.g. RPETTY$ will match PRETTYPRINT, with one mistake. The entire spelling list is always searched, and if more than one respelling is found, the spelling corrector prints AMBIGUOUS, and returns NIL. For example, CON$ would be ambiguous if both CONS and COND were on the spelling list. If the spelling corrector finds one and only one respelling, it interacts with you as described earlier. For both spelling correction and spelling completion, regardless of whether or not you approve of the spelling corrector's choice, the respelling is moved to the front of SPLST. Since many respellings are of the type with no disagreements, this procedure has the effect of considerably reducing the time required to correct the spelling of frequently misspelled words. Synonyms(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 11 SUBNAME SYNONYMS SUBTEXT synonyms) Spelling lists also provide a way of defining synonyms for a particular context. If a dotted pair appears on a spelling list (instead of just an atom), CAR is interpreted as the correct spelling of the misspelled word, and CDR as the antecedent for that word. If CAR is identical with the misspelled word, the antecedent is returned without any interaction or approval being necessary. If the misspelled word corrects to CAR of the dotted pair, the usual interaction and approval will take place, and then the antecedent, i.e., CDR of the dotted pair, is returned. For example,you could make IFLG synonymous with CLISPIFTRANFLG by adding (IFLG . CLISPIFTRANFLG) to SPELLINGS3, the spelling list for unbound atoms. Similarly, you could make OTHERWISE mean the same as ELSEIF by adding (OTHERWISE . ELSEIF) to CLISPIFWORDSPLST, or make L be synonymous with LAMBDA by adding (L . LAMBDA) to LAMBDASPLST. You can also use L as a variable without confusion, since the association of L with LAMBDA occurs only in the appropriate context. Spelling Lists(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 11 SUBNAME SPELLING% LISTS SUBTEXT spelling% lists) Any list of atoms can be used as a spelling list, e.g., BROKENFNS, FILELST, etc. Various system packages have their own spellings lists, e.g., LISPXCOMS, CLISPFORWORDSPLST, EDITCOMSA, etc. These are documented under their corresponding sections, and are also indexed under "spelling lists." In addition to these spelling lists, the system maintains, i.e., automatically adds to, and occasionally prunes, four lists used solely for spelling correction: SPELLINGS1, SPELLINGS2, SPELLINGS3, and USERWORDS. These spelling lists are maintained only when ADDSPELLFLG is non-NIL. ADDSPELLFLG is initially T. SPELLINGS1(SPELLINGS1 (Variable) NIL NIL ("20") 11) [Variable] SPELLINGS1 is a list of functions used for spelling correction when an input is typed in apply format, and the function is undefined, e.g., EDTIF(FOO). SPELLINGS1 is initialized to contain DEFINEQ, BREAK, MAKEFILE, EDITF, TCOMPL, LOAD, etc. Whenever LISPX is given an input in apply format, i.e., a function and arguments, the name of the function is added to SPELLINGS1 if the function has a definition. For example, typing CALLS(EDITF) will cause CALLS to be added to SPELLINGS1. Thus if you typed CALLS(EDITF) and later typed CALLLS(EDITV), since SPELLINGS1 would then contain CALLS, DWIM would be successful in correcting CALLLS to CALLS. SPELLINGS2(SPELLINGS2 (Variable) NIL NIL ("20") 12) [Variable] SPELLINGS2 is a list of functions used for spelling correction for all other undefined functions. It is initialized to contain functions such as ADD1, APPEND, COND, CONS, GO, LIST, NCONC, PRINT, PROG, RETURN, SETQ, etc. Whenever LISPX is given a non-atomic form, the name of the function is added to SPELLINGS2. For example, typing (RETFROM (STKPOS (QUOTE FOO) 2)) to a break would add RETFROM to SPELLINGS2. Function names are also added to SPELLINGS2 by DEFINE, DEFINEQ, LOAD (when loading compiled code), UNSAVEDEF, EDITF, and PRETTYPRINT. SPELLINGS3(SPELLINGS3 (Variable) NIL NIL ("20") 12) [Variable] SPELLINGS3 is a list of words used for spelling correction on all unbound atoms. SPELLINGS3 is initialized to EDITMACROS, BREAKMACROS, BROKENFNS, and ADVISEDFNS. Whenever LISPX is given an atom to evaluate, the name of the atom is added to SPELLINGS3 if the atom has a value. Atoms are also added to SPELLINGS3 whenever they are edited by EDITV, and whenever they are set via RPAQ or RPAQQ. For example, when a file is loaded, all of the variables set in the file are added to SPELLINGS3. Atoms are also added to SPELLINGS3 when they are set by a LISPX input, e.g., typing (SETQ FOO (REVERSE (SETQ FIE ...))) will add both FOO and FIE to SPELLINGS3. USERWORDS(USERWORDS (Variable) NIL NIL ("20") 12) [Variable] USERWORDS is a list containing both functions and variables that you have referred to, e.g., by breaking or editing. USERWORDS is used for spelling correction by ARGLIST, UNSAVEDEF, PRETTYPRINT, BREAK, EDITF, ADVISE, etc. USERWORDS is initially NIL. Function names are added to it by DEFINE, DEFINEQ, LOAD, (when loading compiled code, or loading exprs to property lists) UNSAVEDEF, EDITF, EDITV, EDITP, PRETTYPRINT, etc. Variable names are added to USERWORDS at the same time as they are added to SPELLINGS3. In addition, the variable LASTWORD is always set to the last word added to USERWORDS, i.e., the last function or variable referred to by the user, and the respelling of NIL is defined to be the value of LASTWORD. Thus, if you had just defined a function, you can then prettyprint it by typing PP(). Each of the above four spelling lists are divided into two sections separated by a special marker (the value of the variable SPELLSTR1). The first section contains the "permanent" words; the second section contains the temporary words. New words are added to the corresponding spelling list at the front of its temporary section (except that functions added to SPELLINGS1 or SPELLINGS2 by LISPX are always added to the end of the permanent section. If the word is already in the temporary section, it is moved to the front of that section; if the word is in the permanent section, no action is taken. If the length of the temporary section then exceeds a specified number, the last (oldest) word in the temporary section is forgotten, i.e., deleted. This procedure prevents the spelling lists from becoming cluttered with unimportant words that are no longer being used, and thereby slowing down spelling correction time. Since the spelling corrector usually moves each word selected as a respelling to the front of its spelling list, the word is thereby moved into the permanent section. Thus once a word is misspelled and corrected, it is considered important and will never be forgotten. The spelling correction algorithm will not alter a spelling list unless it contains the special marker (the value of SPELLSTR1). This provides a way to ensure that a spelling list will not be altered. #SPELLINGS1(#SPELLINGS1 (Variable) NIL NIL ("20") 13) [Variable] #SPELLINGS2(#SPELLINGS2 (Variable) NIL NIL ("20") 13) [Variable] #SPELLINGS3(#SPELLINGS3 (Variable) NIL NIL ("20") 13) [Variable] #USERWORDS(#USERWORDS (Variable) NIL NIL ("20") 13) [Variable] The maximum length of the temporary section for SPELLINGS1, SPELLINGS2, SPELLINGS3 and USERWORDS is given by the value of #SPELLINGS1, #SPELLINGS2, #SPELLINGS3, and #USERWORDS, initialized to 30, 30, 30, and 60 respectively. You can alter these values to modify the performance behavior of spelling correction. Generators for Spelling Correction(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 13 SUBNAME GENERATORS% FOR SUBTEXT generators% for) For some applications, it is more convenient to generate candidates for a respelling one by one, rather than construct a complete list of all possible candidates, e.g., spelling correction involving a large directory of files, or a natural language data base. For these purposes, SPLST can be an array (of any size). The first element of this array is the generator function, which is called with the array itself as its argument. Thus the function can use the remainder of the array to store "state" information, e.g., the last position on a file, a pointer into a data structure, etc. The value returned by the function is the next candidate for respelling. If NIL is returned, the spelling "list" is considered to be exhausted, and the closest match is returned. If a candidate is found with no disagreements, it is returned immediately without waiting for the "list" to exhaust. SPLST can also be a generator, i.e. the value of the function GENERATOR (Chapter 11). The generator SPLST will be started up whenever the spelling corrector needs the next candidate, and it should return candidates via the function PRODUCE. For example, the following could be used as a "spelling list" which effectively contains all functions in the system: [GENERATOR (MAPATOMS (FUNCTION (LAMBDA (X) (if (GETD X) then (PRODUCE X] Spelling Corrector Algorithm(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 13 SUBNAME ALGORITHM SUBTEXT algorithm) The basic philosophy of DWIM spelling correction is to count the number of disagreements between two words, and use this number divided by the length of the longer of the two words as a measure of their relative disagreement. One minus this number is then the relative agreement or closeness. For example, CONS and CONX differ only in their last character. Such substitution errors count as one disagreement, so that the two words are in 75% agreement. Most calls to the spelling corrector specify a relative agreement of 70, so that a single substitution error is permitted in words of four characters or longer. However, spelling correction on shorter words is possible since certain types of differences such as single transpositions are not counted as disagreements. For example, AND and NAD have a relative agreement of 100. Calls to the spelling corrector from DWIM use the value of FIXSPELLREL, which is initially 70. Note that by setting FIXSPELLREL to 100, only spelling corrections with "zero" mistakes, will be considered, e.g., transpositions, double characters, etc. The central function of the spelling corrector is CHOOZ. CHOOZ takes as arguments: a word, a minimum relative agreement, a spelling list, and an optional functional argument, XWORD, REL, SPLST, and FN respectively. CHOOZ proceeds down SPLST examining each word. Words not satisfying FN (if FN is non-NIL), or those obviously too long or too short to be sufficiently close to XWORD are immediately rejected. For example, if REL = 70, and XWORD is 5 characters long, words longer than 7 characters will be rejected. Special treatment is necessary for words shorter than XWORD, since doubled letters are not counted as disagreements. For example, CONNSSS and CONS have a relative agreement of 100. CHOOZ handles this by counting the number of doubled characters in XWORD before it begins scanning SPLST, and taking this into account when deciding whether to reject shorter words. If TWORD, the current word on SPLST, is not rejected, CHOOZ computes the number of disagreements between it and XWORD by calling a subfunction, SKOR. SKOR operates by scanning both words from left to right one character at a time. SKOR operates on the list of character codes for each word. This list is computed by CHOOZ before calling SKOR. Characters are considered to agree if they are the same characters or appear on the same key (i.e., a shift mistake). The variable SPELLCASEARRAY is a CASEARRAY which is used to determine equivalence classes for this purpose. It is initialized to equivalence lowercase and upper case letters, as well as the standard key transitions: for example, 1 with !, 3 with #, etc. If the first character in XWORD and TWORD do not agree, SKOR checks to see if either character is the same as one previously encountered, and not accounted-for at that time. (In other words, transpositions are not handled by lookahead, but by lookback.) A displacement of two or fewer positions is counted as a tranposition; a displacement by more than two positions is counted as a disagreement.In either case, both characters are now considered as accounted for and are discarded, and SKORing continues. If the first character in XWORD and TWORD do not agree, and neither agree with previously unaccounted-for characters, and TWORD has more characters remaining than XWORD, SKOR removes and saves the first character of TWORD, and continues by comparing the rest of TWORD with XWORD as described above. If TWORD has the same or fewer characters remaining than XWORD, the procedure is the same except that the character is removed from XWORD. In this case, a special check is first made to see if that character is equal to the previous character in XWORD, or to the next character in XWORD, i.e., a double character typo, and if so, the character is considered accounted-for, and not counted as a disagreement. In this case, the "length" of XWORD is also decremented. Otherwise making XWORD sufficiently long by adding double characters would make it be arbitrarily close to TWORD, e.g., XXXXXX would correct to PP. When SKOR has finished processing both XWORD and TWORD in this fashion, the value of SKOR is the number of unaccounted-for characters, plus the number of disagreements, plus the number of tranpositions, with two qualifications: 1. If both XWORD and TWORD have a character unaccounted-for in the same position, the two characters are counted only once, i.e., substitution errors count as only one disagreement, not two 2. If there are no unaccounted-for characters and no disagreements, transpositions are not counted. This permits spelling correction on very short words, such as edit commands, e.g., XRT->XTR. Transpositions are also not counted when FASTYPEFLG = T, for example, IPULX and IPLUS will be in 80% agreement with FASTYPEFLG = T, only 60% with FASTYPEFLG = NIL. The rationale behind this is that transpositions are much more common for fast typists, and should not be counted as disagreements, whereas more deliberate typists are not as likely to combine tranpositions and other mistakes in a single word, and therefore can use more conservative metric. FASTYPEFLG is initially NIL. Spelling Corrector(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 14 SUBNAME FUNCTIONS SUBTEXT functions) Functions and Variables(SPELLING% CORRECTION NIL Spelling% correction NIL ("20") 14 SUBNAME VARIABLES SUBTEXT variables) (ADDSPELL(ADDSPELL (Function) NIL NIL ("20") 14) X SPLST N) [Function] Adds X to one of the spelling lists as determined by the value of SPLST: NIL Adds X to USERWORDS and to SPELLINGS2. Used by DEFINEQ. 0 Adds X to USERWORDS. Used by LOAD when loading EXPRs to property lists. 1 Adds X to SPELLINGS1 (at end of permanent section). Used by LISPX. 2 Adds X to SPELLINGS2 (at end of permanent section). Used by LISPX. 3 Adds X to USERWORDS and SPELLINGS3. a spelling list If SPLST is a spelling list, X is added to it. In this case, N is the (optional) length of the temporary section. If X is already on the spelling list, and in its temporary section, ADDSPELL moves X to the front of that section. ADDSPELL sets LASTWORD to X when SPLST = NIL, 0 or 3. If X is not a symbol, ADDSPELL takes no action. Note that the various systems calls to ADDSPELL, e.g., from DEFINE, EDITF, LOAD, etc., can all be suppressed by setting or binding ADDSPELLFLG to NIL (see the DWIM Functions and Variables section above). (MISSPELLED?(MISSPELLED? (Function) NIL NIL ("20") 15) XWORD REL SPLST FLG TAIL FN) [Function] If XWORD = NIL or $ (), MISSPELLED? prints = followed by the value of LASTWORD, and returns this as the respelling, without asking for approval. Otherwise, MISSPELLED? checks to see if XWORD is really misspelled, i.e., if FN applied to XWORD is true, or XWORD is already contained on SPLST. In this case, MISSPELLED? simply returns XWORD. Otherwise MISSPELLED? computes and returns (FIXSPELL XWORD REL SPLST FLG TAIL FN). (FIXSPELL(FIXSPELL (Function) NIL NIL ("20") 15) XWORD REL SPLST FLG TAIL FN TIEFLG DONTMOVETOPFLG) [Function] The value of FIXSPELL is either the respelling of or NIL. If for some reason itself is on , then FIXSPELL aborts and calls ERROR!. If there is a possibility that is spelled correctly, MISSPELLED? should be used instead of FIXSPELL. FIXSPELL performs all of the interactions described earlier, including requesting your approval if necessary. If XWORD = NIL or $ (escape), the respelling is the value of LASTWORD, and no approval is requested. If XWORD contains lowercase characters, and the corresponding uppercase word is correct, i.e. on SPLST or satisfies FN, the uppercase word is returned and no interaction is performed. If FIXSPELL.UPPERCASE.QUIET is NIL (the default), a warning "=XX" is printed when coercing from "xx" to "XX". If FIXSPELL.UPPERCASE.QUIET is non-NIL, no warning is given. If REL = NIL, defaults to the value of FIXSPELLREL (initially 70). If FLG = NIL, the correction is handled in type-in mode, i.e., approval is never requested, and XWORD is not typed. If FLG = T, XWORD is typed (before the =) and approval is requested if APPROVEFLG = T. If FLG = NO-MESSAGE, the correction is returned with no further processing. In this case, a run-on correction will be returned as a dotted pair of the two parts of the word, and a synonym correction as a list of the form (WORD1 WORD2), where WORD1 is (the corrected version of) XWORD, and WORD2 is the synonym. The effect of the function CHOOZ can be obtained by calling FIXSPELL with FLG = NO-MESSAGE. If TAIL is not NIL, and the correction is successful, CAR of TAIL is replaced by the respelling (using /RPLACA). FIXSPELL will attempt to correct misspellings caused by running two words together, if the global variable RUNONFLG is non-NIL (default is NIL). In this case, approval is always requested. When a run-on error is corrected, CAR of TAIL is replaced by the two words, and the value of FIXSPELL is the first one. For example, if FIXSPELL is called to correct the edit command (MOVE TO AFTERCOND 3 2) with TAIL = (AFTERCOND 3 2), TAIL would be changed to (AFTER COND 2 3), and FIXSPELL would return AFTER (subject to yourapproval where necessary). If TAIL = T, FIXSPELL will also perform run-on corrections, returning a dotted pair of the two words in the event the correction is of this type. If TIEFLG = NIL and a tie occurs, i.e., more than one word on SPLST is found with the same degree of "closeness", FIXSPELL returns NIL, i.e., no correction. If TIEFLG = PICKONE and a tie occurs, the first word is taken as the correct spelling. If TIEFLG = LIST, the value of FIXSPELL is a list of the respellings (even if there is only one), and FIXSPELL will not perform any interaction with you, nor modify TAIL, the idea being that the calling program will handle those tasks. Similarly, if TIEFLG = EVERYTHING, a list of all candidates whose degree of closeness is above REL will be returned, regardless of whether some are better than others. No interaction will be performed. If DONTMOVETOPFLG = T and a correction occurs, it will not be moved to the front of the spelling list. Also, the spelling list will not be altered unless it contains the special marker used to separate the temporary and perminant parts of the system spelling lists (the value of SPELLSTR1). (FNCHECK(FNCHECK (Function) NIL NIL ("20") 16) FN NOERRORFLG SPELLFLG PROPFLG TAIL) [Function] The task of FNCHECK is to check whether FN is the name of a function and if not, to correct its spelling. If FN is the name of a function or spelling correction is successful, FNCHECK adds the (corrected) name of the function to USERWORDS using ADDSPELL, and returns it as its value. Since FNCHECK is called by many low level functions such as ARGLIST, UNSAVEDEF, etc., spelling correction only takes place when DWIMFLG = T, so that these functions can operate in a small Interlisp system which does not contain DWIM. NOERRORFLG informs FNCHECK whether or not the calling function wants to handle the unsuccessful case: if NOERRORFLG is T, FNCHECK simply returns NIL, otherwise it prints fn NOT A FUNCTION and generates a non-breaking error. If FN does not have a definition, but does have an EXPR property, then spelling correction is not attempted. Instead, if PROPFLG = T, FN is considered to be the name of a function, and is returned. If PROPFLG = NIL, FN is not considered to be the name of a function, and NIL is returned or an error generated, depending on the value of NOERRORFLG. FNCHECK calls MISSPELLED? to perform spelling correction, so that if FN = NIL, the value of LASTWORD will be returned. SPELLFLG corresponds to MISSPELLED?'s fourth argument, FLG. If SPELLFLG = T, approval will be asked if DWIM was enabled in CAUTIOUS mode, i.e., if APPROVEFLG = T. TAIL corresponds to the fifth argument to MISSPELLED?. FNCHECK is currently used by ARGLIST, UNSAVEDEF, PRETTYPRINT, BREAK0, BREAKIN, ADVISE, and CALLS. For example, BREAK0 calls FNCHECK with NOERRORFLG = T since if FNCHECK cannot produce a function, BREAK0 wants to define a dummy one. CALLS however calls FNCHECK with NOERRORFLG = NIL, since it cannot operate without a function. Many other system functions call MISSPELLED? or FIXSPELL directly. For example, BREAK1 calls FIXSPELL on unrecognized atomic inputs before attempting to evaluate them, using as a spelling list a list of all break commands. Similarly, LISPX calls FIXSPELL on atomic inputs using a list of all LISPX commands. When UNBREAK is given the name of a function that is not broken, it calls FIXSPELL with two different spelling lists, first with BROKENFNS, and if that fails, with USERWORDS. MAKEFILE calls MISSPELLED? using FILELST as a spelling list. Finally, LOAD, BCOMPL, BRECOMPILE, TCOMPL, and RECOMPILE all call MISSPELLED? if their input file(s) won't open. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "19-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "19-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "19-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "19-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "19-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "19-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))56065,HH56T +T//HH,HH,``,``@ PAGEHEADINGLEFTBACKT-T,306T3llT3HHT306 +T25-HHT,HH,ll/2Z2Z,HH,ll,3(T,HH,, PALATINO PALATINO PALATINO TITAN TITAN TITAN MODERN +MODERNMODERN + +  +  IM.CHAP.GETFNMODERN +   HRULE.GETFNMODERN + ]&mA>H7  + [h2  +&+ @ +9 XJ! + "  ''P, <#) J " + # 0@2>s9  %#!M,{ +s,E`ZN"IM.INDEX.GETFNTITAN  - +/$  4M"|/5   HRULE.GETFNMODERN + ~s589  X ]"= $ $ aN ) !Q%NKH4G%Gm   HRULE.GETFNMODERN + T0 +9 +-  +y = +!Vr   HRULE.GETFNMODERN + GHJ6*4249 y .K>  +#. ,) +1 (q'% +E  +Q?IM.INDEX.GETFN   HRULE.GETFNMODERN + YF ! +   +U:  +,D C:  += 4 +N7F6<$#$R K2(W U> / 7 '$(7   HK     + h.(1:(8$ +)  0(T&S +'[%}(!7     ,=i  D  $ \/ += #* ?J$ +Db &/ 5 K  +#* +%6 F  B{, +, +    HRULE.GETFNMODERN +   +IM.INDEX.GETFNAD V <F M  +6 6 +   /; ^ I  1 ;$IM.INDEX.GETFNTITAN  31   'IM.INDEX.GETFNTITAN     ,   +IM.INDEX.GETFNTITAN      ]  a L  "IM.INDEX.GETFNTITAN    E  $IM.INDEX.GETFNTITAN  1 &IM.INDEX.GETFNTITAN  & %IM.INDEX.GETFNTITAN  /)3  +(IM.INDEX.GETFNTITAN  (6 "IM.INDEX.GETFNTITAN  0   C?IM.INDEX.GETFN?IM.INDEX.GETFN  HRULE.GETFNMODERN + &IM.INDEX.GETFNTITAN  n -IM.INDEX.GETFNTITAN  a   )IM.INDEX.GETFNTITAN     +)IM.INDEX.GETFNTITAN   )E + 'IM.INDEX.GETFNTITAN  5 -IM.INDEX.GETFNTITAN   &IM.INDEX.GETFNTITAN  +  &IM.INDEX.GETFNTITAN  ! dc   +)IM.INDEX.GETFNTITAN    +1 +n  + &IM.INDEX.GETFNTITAN     +  + +IM.INDEX.GETFN  +v     +  +   *IM.INDEX.GETFNTITAN   M @ ) =IM.INDEX.GETFN  HRULE.GETFNMODERN + 17 ++D ?s+-  |4A.!HiB?  +9  +J   _IM.INDEX.GETFN D& h>  +A   +   ;)mIM.INDEX.GETFN 8 F   + + + &   +)IM.INDEX.GETFNTITAN   + + +i +#   +   +)  +)IM.INDEX.GETFNTITAN   +B +  +# +    +)IM.INDEX.GETFNTITAN   +G + +   + @ +2 + X + +# +  (IM.INDEX.GETFNTITAN    A# $   $C  # ' +) UR}  + +u M *IM.INDEX.GETFNTITAN   *IM.INDEX.GETFNTITAN   *IM.INDEX.GETFNTITAN   +)IM.INDEX.GETFNTITAN  0 + + +     +2V "mIM.INDEX.GETFN 0~9 x ?aIM.INDEX.GETFN ^ . {2q+H+H6G#>N5MQ Q$*)1FX 'U hS+ + + +( +aIM.INDEX.GETFNaIM.INDEX.GETFN 'IM.INDEX.GETFNTITAN  <  +    +) +)  + 4@ ' 4 7 *IM.INDEX.GETFNTITAN   + N          'IM.INDEX.GETFNTITAN  + +   !*9 f* YF! T + +- +#'c S0$'/ }// I?7R +>i"  &IM.INDEX.GETFNTITAN  +  DA. / 2Y + O +%.CB.> + ,  +&    + + +.! &?/    +  + $ z \ No newline at end of file diff --git a/docs/medley-irm/19-DWIM.pdf b/docs/medley-irm/19-DWIM.pdf new file mode 100644 index 00000000..a1f159d0 --- /dev/null +++ b/docs/medley-irm/19-DWIM.pdf @@ -0,0 +1,11689 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5218 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(19. DWIM)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +510.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.1433 Tw +(A surprisingly large percentage of the errors made by Interlisp users are of the type that could be)Tj +0 -1.2222 TD +0.04 Tw +(corrected by another Lisp programmer without any information about the purpose of the program or)Tj +T* +0.1489 Tw +[(expression in question, e.g., misspellings, certain kinds of parentheses errors, etc. To correct these)]TJ +T* +0.0744 Tw +(types of errors we have implemented in Medley a )Tj +/TT10 1 Tf +22.8975 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0744 Tw +[( facility, short for Do-What-I-Mean. )]TJ +/TT10 1 Tf +16.5966 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0744 Tw +[( is)]TJ +-44.2949 -1.2889 TD +0.0056 Tw +[(called automatically whenever an error occurs in the evaluation of an Interlisp expression. \(Currently,)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +[( only operates on unbound atoms and undefined function errors.\) )]TJ +/TT10 1 Tf +30.0749 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +[( then proceeds to try to)]TJ +-34.8757 -1.2889 TD +0.1278 Tw +(correct the mistake using the current context of computation plus information about what you had)Tj +0 -1.2222 TD +0.0022 Tw +(previously been doing \(and what mistakes you had been making\) as guides to the remedy of the error.)Tj +T* +0 Tw +(If )Tj +/TT10 1 Tf +1.0277 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( is able to make the correction, the computation continues as though no error had occurred.)]TJ +-3.4281 -1.2889 TD +0.2089 Tw +(Otherwise, the procedure is the same as though )Tj +/TT10 1 Tf +22.9641 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2089 Tw +[( had not intervened: a break occurs, or an)]TJ +-25.3645 -1.2889 TD +0.1378 Tw +(unwind to the last )Tj +/TT10 1 Tf +8.8543 0 TD +0 Tw +(ERRORSET)Tj +/TT8 1 Tf +4.8008 0 TD +0.1378 Tw +[( \(see Chapter 14\). The following protocol illustrates the operation of)]TJ +/TT10 1 Tf +-13.6551 -1.2889 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-2.4004 -2.9556 TD +(For example, suppose you define the factorial function )Tj +/TT10 1 Tf +24.374 0 TD +(\(FACT N)Tj +/TT8 1 Tf +4.2007 0 TD +(\) as follows:)Tj +/TT11 1 Tf +-20.5747 -1.8444 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(DEFINEQ\(\(FACT \(LAMBDA \(N\) \(COND)Tj +-0.9868 -1 TD +(\(\(ZEROP N0 1\) \(\(T \(ITIMS N \(FACCT 9SUB1 N])Tj +T* +(\(FACT\))Tj +/TT11 1 Tf +0 -1.6222 TD +<0040>Tj +/TT8 1 Tf +-8 -2.6667 TD +0.0511 Tw +(Note that the definition of )Tj +/TT10 1 Tf +12.0202 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( contains several mistakes: )]TJ +/TT10 1 Tf +12.466 0 TD +0 Tw +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.0511 Tw +[( and )]TJ +/TT10 1 Tf +2.2951 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( have been misspelled;)]TJ +-35.1827 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6928 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +[( in )]TJ +/TT10 1 Tf +1.4842 0 TD +0 Tw +(N0)Tj +/TT8 1 Tf +1.2002 0 TD +0.0556 Tw +[( was intended to be a right parenthesis, but the Shift key was not pressed; similarly, the )]TJ +/TT10 1 Tf +39.7526 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +-44.7298 -1.2889 TD +(in )Tj +/TT10 1 Tf +1.1397 0 TD +(9SUB1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0167 Tw +[( was intended to be a left parenthesis; and finally, there is an extra left parenthesis in front of)]TJ +-4.1402 -1.2889 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6372 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( that begins the final clause in the conditional.)Tj +/TT11 1 Tf +3.096 -2.9556 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(PRETTYPRNT\(\(FACCT])Tj +3.0132 -1 TD +(=PRETTYPRINT)Tj +T* +(=FACT)Tj +0 -2 TD +(\(FACT)Tj +0 -1 TD +( [LAMBDA \(N\))Tj +T* +( \(COND)Tj +T* +( \(\(ZEROP N0 1\))Tj +T* +( \(\(T \(ITIMS N \(FACCT 9SUB1 N]\))Tj +T* +(\(FACT\))Tj +/TT11 1 Tf +-4 -2.7333 TD +<0040>Tj +/TT8 1 Tf +-5.3333 -2.6667 TD +0.0233 Tw +(After defining )Tj +/TT10 1 Tf +6.5828 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +(, you want to look at its definition using )Tj +/TT10 1 Tf +18.1236 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0233 Tw +(, which you unfortunately)Tj +-33.7078 -1.2889 TD +0.0611 Tw +[(misspell. Since there is no function )]TJ +/TT10 1 Tf +16.2432 0 TD +0 Tw +(PRETTYPRNT)Tj +/TT8 1 Tf +6.001 0 TD +0.0611 Tw +[( in the system, an undefined function error occurs,)]TJ +-22.2442 -1.2889 TD +0 Tw +(and )Tj +/TT10 1 Tf +2.0129 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.07 Tw +[( is called. )]TJ +/TT10 1 Tf +4.8606 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.07 Tw +[( invokes its spelling corrector, which searches a list of functions frequently)]TJ +-11.6742 -1.2889 TD +0.0344 Tw +(used \(by )Tj +/TT13 1 Tf +4.128 0 TD +0 Tw +(this)Tj +/TT8 1 Tf +1.5 0 TD +0.0344 Tw +[( user\) for the best possible match. Finding one that is extremely close, )]TJ +/TT10 1 Tf +31.6165 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( proceeds on)]TJ +-39.6449 -1.2889 TD +0 Tw +(the assumption that )Tj +/TT10 1 Tf +9.0513 0 TD +(PRETTYPRNT)Tj +/TT8 1 Tf +6.001 0 TD +( meant )Tj +/TT10 1 Tf +3.27 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +(, notifies you of this, and calls )Tj +/TT10 1 Tf +13.3716 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +14 0 obj +<< +/Length 4444 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.01 Tw +(At this point, )Tj +/TT10 1 Tf +6.1032 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.01 Tw +[( would normally print )]TJ +/TT10 1 Tf +10.164 0 TD +0.0244 Tw +(\(FACCT NOT PRINTABLE\))Tj +/TT8 1 Tf +12.6509 0 TD +0.01 Tw +[( and exit, since )]TJ +/TT10 1 Tf +6.8149 0 TD +0 Tw +(FACCT)Tj +/TT8 1 Tf +-42.3342 -1.2889 TD +0.0011 Tw +(has no definition. Note that this is )Tj +/TT13 1 Tf +15.4791 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0011 Tw +( an Interlisp error condition, so that )Tj +/TT10 1 Tf +15.9487 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0011 Tw +( would not be called as)Tj +-35.1612 -1.2889 TD +0 Tw +(described above. However, it is obviously not what you )Tj +/TT13 1 Tf +25.168 0 TD +(meant)Tj +/TT8 1 Tf +2.5 0 TD +(.)Tj +-27.668 -2.8889 TD +0.0111 Tw +(This sort of mistake is corrected by having )Tj +/TT10 1 Tf +19.0464 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0111 Tw +[( itself explicitly invoke the spelling corrector)]TJ +-25.6475 -1.2889 TD +0.1211 Tw +(portion of )Tj +/TT10 1 Tf +4.9082 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1211 Tw +[( whenever given a function with no )]TJ +/TT10 1 Tf +16.8341 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1211 Tw +[( definition. Thus, with the aid of DWIM)]TJ +/TT10 1 Tf +-26.5431 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.1767 Tw +[( is able to determine that you want to see the definition of the function )]TJ +/TT10 1 Tf +33.963 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1767 Tw +(, and)Tj +-42.9645 -1.2889 TD +0 Tw +(proceeds accordingly.)Tj +/TT11 1 Tf +5.3333 -2.8889 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(FACT\(3])Tj +3.0132 -1 TD +(N0 [IN FACT] -> N \) ? YES)Tj +T* +([IN FACT] \(COND -- \(\(T --\)\)\) ->)Tj +T* +( \(COND -- \(T --\)\))Tj +T* +(ITIMS [IN FACT] -> ITIMES)Tj +T* +(FACCT [IN FACT] -> FACT)Tj +T* +(9SUB1 [IN FACT] -> \( SUB1 ? YES)Tj +T* +(6)Tj +/TT11 1 Tf +-4 -2.7333 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(PP FACT)Tj +3.0132 -1 TD +(\(FACT)Tj +T* +( [LAMBDA \(N\))Tj +T* +( \(COND)Tj +T* +( \(\(ZEROP N\))Tj +T* +( 1\))Tj +T* +( \(T \(ITIMES N \(FACT \(SUB1 N]\))Tj +T* +(FACT)Tj +/TT11 1 Tf +-4 -2.7333 TD +<0040>Tj +/TT8 1 Tf +-5.3333 -2.6667 TD +0.1067 Tw +(You now call )Tj +/TT10 1 Tf +6.3737 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +[(. During its execution, five errors occur, and )]TJ +/TT10 1 Tf +20.8946 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +[( is called five times. At each)]TJ +-32.0691 -1.2889 TD +0.0611 Tw +(point, the error is corrected, a message is printed describing the action taken, and the computation is)Tj +0 -1.2222 TD +0.0567 Tw +[(allowed to continue as if no error had occurred. Following the last correction, )]TJ +/TT10 1 Tf +35.4345 0 TD +0 Tw +(6)Tj +/TT8 1 Tf +0.6001 0 TD +0.0567 Tw +[( is printed, the value)]TJ +-36.0345 -1.2889 TD +0 Tw +(of )Tj +/TT10 1 Tf +1.1289 0 TD +(\(FACT 3\))Tj +/TT8 1 Tf +4.8008 0 TD +(. Finally, you prettyprint the new, now correct, definition of )Tj +/TT10 1 Tf +26.8853 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-35.2153 -2.9556 TD +0.0933 Tw +(In this particular example, you were operating in )Tj +/TT10 1 Tf +22.6754 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.0933 Tw +[( mode, which gives )]TJ +/TT10 1 Tf +9.1897 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0933 Tw +[( carte blanche)]TJ +-39.0663 -1.2889 TD +0.0111 Tw +[(for most corrections. You can also operate in )]TJ +/TT10 1 Tf +20.226 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0111 Tw +[( mode, in which case )]TJ +/TT10 1 Tf +9.5267 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( will inform you of)]TJ +-36.9539 -1.2889 TD +0.0344 Tw +[(intended corrections before they are made, and allow you to approve or disapprove of them. If )]TJ +/TT10 1 Tf +42.9347 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +-42.9347 -1.2889 TD +(was operating in )Tj +/TT10 1 Tf +7.6572 0 TD +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +( mode in the example above, it would proceed as follows:)Tj +/TT11 1 Tf +-7.1247 -2.9556 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(FACT\(3\))Tj +3.0132 -1 TD +(N0 [IN FACT] -> N \) ? YES)Tj +T* +(U.D.F. T [IN FACT] FIX? YES)Tj +T* +([IN FACT] \(COND -- \(\(T --\)\)\) ->)Tj +T* +( \(COND -- \(T --\)\))Tj +T* +(ITIMS [IN FACT] -> ITIMES ? ...YES)Tj +T* +(FACCT [IN FACT] -> FACT ? ...YES)Tj +T* +(9SUB1 [IN FACT] -> \( SUB1 ? NO)Tj +T* +(U.B.A.)Tj +T* +(\(9SUB1 BROKEN\))Tj +T* +(:)Tj +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +17 0 obj +<< +/Length 7499 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-3)Tj +/TT8 1 Tf +-42.8333 60.6156 TD +0.2589 Tw +(For most corrections, if you do not respond in a specified interval of time, )Tj +/TT10 1 Tf +36.3622 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2589 Tw +[( automatically)]TJ +-38.7626 -1.2889 TD +0.19 Tw +[(proceeds with the correction, so that you need intervene only when you do not approve. In the)]TJ +0 -1.2222 TD +0.01 Tw +[(example, you responded to the first, second, and fifth questions; )]TJ +/TT10 1 Tf +28.9484 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.01 Tw +[( responded for you on the third)]TJ +-31.3488 -1.2889 TD +0 Tw +(and fourth.)Tj +/TT10 1 Tf +0 -2.8889 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0633 Tw +[( uses )]TJ +/TT10 1 Tf +2.5596 0 TD +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.0633 Tw +[( for its interactions with you \(see Chapter 26\). Whenever an interaction is about)]TJ +-9.1607 -1.2889 TD +0.0122 Tw +(to take place and you have typed ahead, )Tj +/TT10 1 Tf +18.1652 0 TD +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.0122 Tw +[( types several bells to warn you to stop typing, then)]TJ +-22.3658 -1.2889 TD +0.0422 Tw +[(clears and saves the input buffers, restoring them after the interaction is complete. Thus if you typed)]TJ +0 -1.2222 TD +0.2422 Tw +(ahead before a )Tj +/TT10 1 Tf +7.4337 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2422 Tw +[( interaction, )]TJ +/TT10 1 Tf +5.9967 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2422 Tw +[( will not confuse your type-ahead with the answer to its)]TJ +-18.2311 -1.2889 TD +0.0344 Tw +[(question, nor will your type-ahead be lost. The bells are printed by the function )]TJ +/TT10 1 Tf +36.0689 0 TD +0 Tw +(PRINTBELLS)Tj +/TT8 1 Tf +6.001 0 TD +0.0344 Tw +(, which)Tj +-42.0699 -1.2889 TD +0 Tw +(can be advised or redefined for specialized applications, e.g. to flash the screen for a display terminal.)Tj +0 -2.8889 TD +0.0011 Tw +(A great deal of effort has gone into making )Tj +/TT10 1 Tf +19.2483 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0011 Tw +( "smart", and experience with a large number of users)Tj +-21.6487 -1.2889 TD +0.0089 Tw +(indicates that )Tj +/TT10 1 Tf +6.1999 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( works very well; )]TJ +/TT10 1 Tf +7.9306 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( seldom fails to correct an error you feel it should have, and)]TJ +-18.9313 -1.2889 TD +0.0811 Tw +[(almost never mistakenly corrects an error. However, it is important to note that even when )]TJ +/TT10 1 Tf +41.934 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT13 1 Tf +0.3311 0 TD +(is)Tj +/TT8 1 Tf +-44.6655 -1.2889 TD +0.1333 Tw +(wrong, no harm is done: since an error had occurred, you would have had to intervene anyway if)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.11 Tw +[( took no action. Thus, if )]TJ +/TT10 1 Tf +11.6567 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.11 Tw +[( mistakenly corrects an error, you simply interrupt or abort the)]TJ +-16.4575 -1.2889 TD +0.1711 Tw +(computation, reverse the )Tj +/TT10 1 Tf +11.7643 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1711 Tw +[( change using )]TJ +/TT10 1 Tf +6.8625 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.1711 Tw +[( \(see Chapter 13\), and make the correction you)]TJ +-23.4275 -1.2889 TD +0.1389 Tw +(would have had to make without )Tj +/TT10 1 Tf +15.8353 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[(. An exception is if )]TJ +/TT10 1 Tf +9.5462 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +(s correction mistakenly caused a)Tj +-30.1823 -1.2889 TD +0.1689 Tw +[(destructive computation to be initiated, and information was lost before you could interrupt. We)]TJ +0 -1.2222 TD +0 Tw +(have not yet had such an incident occur.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(DWIM)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 142.0517 312 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 312 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0633 Tw +(Used to enable/disable )Tj +/TT10 1 Tf +10.7427 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0633 Tw +[(. If )]TJ +/TT17 1 Tf +1.8599 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0633 Tw +[( is the symbol )]TJ +/TT10 1 Tf +6.6083 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5633 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0633 Tw +[( is enabled in )]TJ +/TT10 1 Tf +6.3363 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0633 Tw +[( mode,)]TJ +-36.9124 -1.2889 TD +0.2444 Tw +(so that )Tj +/TT10 1 Tf +3.693 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2444 Tw +[( will ask you before making corrections. If )]TJ +/TT17 1 Tf +21.2869 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2444 Tw +[( is )]TJ +/TT10 1 Tf +1.7037 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.7444 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2444 Tw +[( is enabled in)]TJ +/TT10 1 Tf +-33.4291 -1.2889 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.0456 Tw +[( mode, so )]TJ +/TT10 1 Tf +4.6249 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[( will make most corrections automatically. If )]TJ +/TT17 1 Tf +20.5168 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0456 Tw +[( is )]TJ +/TT10 1 Tf +1.306 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5456 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[( is)]TJ +-38.9952 -1.2889 TD +0 Tw +(disabled. Medley initially has )Tj +/TT10 1 Tf +13.5469 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( enabled in )Tj +/TT10 1 Tf +5.1182 0 TD +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +( mode.)Tj +/TT10 1 Tf +-25.8662 -2.0667 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +[( returns )]TJ +/TT10 1 Tf +3.7463 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.0211 Tw +[( or )]TJ +/TT10 1 Tf +1.4831 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0211 Tw +(, depending to what mode it has just been put)Tj +-19.5528 -1.2889 TD +0 Tw +(into.)Tj +-5.3333 -2.8889 TD +0.1878 Tw +[(For corrections to expressions typed in for immediate execution \(typed into )]TJ +/TT10 1 Tf +36.0351 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.1878 Tw +(, Chapter 13\),)Tj +/TT10 1 Tf +-39.0356 -1.2889 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0256 Tw +[( always acts as though it were in )]TJ +/TT10 1 Tf +14.7997 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.0256 Tw +[( mode, i.e., no approval necessary. For certain types)]TJ +-22.0008 -1.2889 TD +0.2722 Tw +(of corrections, e.g., run-on spelling corrections, 9-0 errors, etc., )Tj +/TT10 1 Tf +30.1292 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2722 Tw +[( always acts like it was in)]TJ +/TT10 1 Tf +-32.5296 -1.2889 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.1544 Tw +[( mode, and asks for approval. In either case, )]TJ +/TT10 1 Tf +21.5005 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1544 Tw +[( always informs you of its action as)]TJ +-28.7017 -1.2889 TD +0 Tw +(described below.)Tj +/TT4 1 Tf +10 0 0 10 54 115.66 Tm +(Spelling Correction Protocol)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 112.95 m +510.01 112.95 l +S +BT +/TT8 1 Tf +9 0 0 9 78 91 Tm +0.05 Tw +(One type of error that )Tj +/TT10 1 Tf +10.1328 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.05 Tw +[( can correct is the misspelling of a function or a variable name. When an)]TJ +-12.5332 -1.2889 TD +0.1778 Tw +(unbound symbol or undefined function error occurs, )Tj +/TT10 1 Tf +24.8616 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1778 Tw +[( tries to correct the spelling of the bad)]TJ +-27.262 -1.2889 TD +0 Tw +(symbol. If a symbol is found whose spelling is "close" to the offender, )Tj +/TT10 1 Tf +31.103 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( proceeds as follows:)Tj +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +22 0 obj +<< +/Length 6068 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0622 Tw +(If the correction occurs in the typed-in expression, )Tj +/TT10 1 Tf +22.8845 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0622 Tw +[( prints )]TJ +/TT10 1 Tf +3.2436 0 TD +0 Tw +(=)Tj +/TT17 1 Tf +0.6001 0 TD +(CORRECT-SPELLING)Tj +/TT8 1 Tf +9.6016 0 TD +0.0622 Tw +[( and continues)]TJ +-38.7301 -1.2889 TD +0 Tw +(evaluating the expression. For example:)Tj +/TT11 1 Tf +5.3333 -2.8889 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(SETQ FOO \(IPLUSS 1 2\)\))Tj +3.0132 -1 TD +(=IPLUS)Tj +T* +(3)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(If the correction does not occur in type-in, DWIM prints)Tj +/TT17 1 Tf +0 -2.8222 TD +(BAD-SPELLING)Tj +/TT10 1 Tf +7.2012 0 TD +( [IN )Tj +/TT17 1 Tf +3.0005 0 TD +(FUNCTION-NAME)Tj +/TT10 1 Tf +7.8013 0 TD +(] -> )Tj +/TT17 1 Tf +3.0005 0 TD +(CORRECT-SPELLING)Tj +/TT8 1 Tf +-21.0034 -2.9556 TD +0.2156 Tw +(The appearance of )Tj +/TT10 1 Tf +9.0305 0 TD +0 Tw +(->)Tj +/TT8 1 Tf +1.2002 0 TD +0.2156 Tw +[( is to call attention to the fact that the users function will be or has been)]TJ +-10.2307 -1.2889 TD +0 Tw +(changed.)Tj +0 -2.8889 TD +0.0889 Tw +(Then, if )Tj +/TT10 1 Tf +3.8077 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0889 Tw +[( is in )]TJ +/TT10 1 Tf +2.6046 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.0889 Tw +[( mode, it prints a carriage return, makes the correction, and continues)]TJ +-13.6134 -1.2889 TD +0.1911 Tw +[(the computation. If )]TJ +/TT10 1 Tf +9.7195 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1911 Tw +[( is in )]TJ +/TT10 1 Tf +2.9112 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.1911 Tw +[( mode, it prints a few spaces and )]TJ +/TT10 1 Tf +16.2442 0 TD +0 Tw +(?)Tj +/TT8 1 Tf +0.6001 0 TD +0.1911 Tw +[( and then wait for)]TJ +-36.6762 -1.2889 TD +0 Tw +(approval. The user then has six options:)Tj +1.9167 -2 TD +[(1.)-666.7(Type )]TJ +/TT10 1 Tf +3.9157 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( types )Tj +/TT10 1 Tf +2.8862 0 TD +(es)Tj +/TT8 1 Tf +1.2002 0 TD +(, and proceeds with the correction.)Tj +-11.7526 -2.0667 TD +[(2.)-666.7(Type )]TJ +/TT10 1 Tf +3.9157 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( types )Tj +/TT10 1 Tf +2.8862 0 TD +(o)Tj +/TT8 1 Tf +0.6001 0 TD +(, and does not make the correction.)Tj +-11.1525 -2.0667 TD +[(3.)-666.7(Type )]TJ +/TT11 1 Tf +3.989 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.0733 Tw +(. )Tj +/TT10 1 Tf +0.8967 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0733 Tw +[( does not make the correction, and furthermore guarantees that the error)]TJ +-6.4724 -1.2889 TD +0 Tw +(will not cause a break.)Tj +-1.4167 -2 TD +[(4.)-666.7(Type Control-E. For error correction, this has the same effect as typing )]TJ +/TT10 1 Tf +32.9416 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-33.5417 -2.0667 TD +0.2633 Tw +[(5.)-666.7(Do nothing. In this case )]TJ +/TT10 1 Tf +13.9205 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2633 Tw +[( waits for )]TJ +/TT10 1 Tf +5.1889 0 TD +0 Tw +(DWIMWAIT)Tj +/TT8 1 Tf +4.8008 0 TD +0.2633 Tw +[( seconds, and if you have not)]TJ +-24.8939 -1.2889 TD +0 Tw +(responded, )Tj +/TT10 1 Tf +5.2275 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( will type )Tj +/TT10 1 Tf +4.4194 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( followed by the default answer.)Tj +-13.8477 -2.0667 TD +0.4478 Tw +(The default on spelling corrections is determined by the value of the variable)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FIXSPELLDEFAULT)Tj +/TT8 1 Tf +9.0015 0 TD +(, whose top level value is initially )Tj +/TT10 1 Tf +15.0151 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-26.0334 -2.0667 TD +0.0689 Tw +[(6.)-666.7(Type space or carriage-return. In this case DWIM will wait indefinitely. This option is)]TJ +1.4167 -1.2222 TD +0.0078 Tw +(intended for those cases where you want to think about your answer, and want to insure)Tj +T* +0 Tw +(that DWIM does not get "impatient" and answer for you.)Tj +-3.3333 -2.8889 TD +0.0822 Tw +[(The procedure for spelling correction on other than Interlisp errors is analogous. If the correction is)]TJ +0 -1.2222 TD +0.0178 Tw +(being handled as type-in, )Tj +/TT10 1 Tf +11.5306 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( prints )]TJ +/TT10 1 Tf +3.1547 0 TD +0 Tw +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( followed by the correct spelling, and returns it to the function)]TJ +-17.6858 -1.2889 TD +0.1522 Tw +(that called )Tj +/TT10 1 Tf +5.1545 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1522 Tw +[(. Otherwise, )]TJ +/TT10 1 Tf +6.3029 0 TD +0 Tw +(DWIM )Tj +/TT8 1 Tf +3.3649 0 TD +0.1522 Tw +(prints the incorrect spelling, followed by the correct spelling.)Tj +-17.2227 -1.2889 TD +0.1078 Tw +(Then, if )Tj +/TT10 1 Tf +3.8454 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( is in )]TJ +/TT10 1 Tf +2.6612 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.1078 Tw +[( mode, )]TJ +/TT10 1 Tf +3.4841 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( prints a carriage-return and returns the correct spelling.)]TJ +-19.5923 -1.2889 TD +0 Tw +(Otherwise, )Tj +/TT10 1 Tf +5.1151 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( prints a few spaces and a )]TJ +/TT10 1 Tf +11.7118 0 TD +0 Tw +(?)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +[( and waits for approval. You can then respond with )]TJ +/TT10 1 Tf +23.5305 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5189 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-45.077 -1.2889 TD +(Control-E, space, carriage return, or do nothing as described above.)Tj +0 -2.8889 TD +0.23 Tw +(The spelling corrector itself is not )Tj +/TT10 1 Tf +16.3517 0 TD +0 Tw +(ERRORSET)Tj +/TT8 1 Tf +4.8008 0 TD +0.23 Tw +[( protected like the DWIM error correction routines.)]TJ +-21.1525 -1.2889 TD +0.1467 Tw +(Therefore, typing )Tj +/TT10 1 Tf +8.2567 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1467 Tw +[( and typing Control-E may have different effects when the spelling corrector is)]TJ +-8.8568 -1.2889 TD +0.0856 Tw +[(called directly. The former simply instructs the spelling corrector to return )]TJ +/TT10 1 Tf +34.3753 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0856 Tw +(, and lets the calling)Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +25 0 obj +<< +/Length 5038 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-5)Tj +/TT8 1 Tf +-42.8333 60.6156 TD +0.1811 Tw +(function decide what to do next; the latter causes an error which unwinds to the last )Tj +/TT10 1 Tf +40.2738 0 TD +0 Tw +(ERRORSET)Tj +/TT8 1 Tf +4.8008 0 TD +(,)Tj +-45.0745 -1.2889 TD +(however far back that may be.)Tj +/TT4 1 Tf +10 0 0 10 54 515.6 Tm +(Parentheses Errors Protocol)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 512.89 m +510.01 512.89 l +S +BT +/TT8 1 Tf +9 0 0 9 78 490.94 Tm +0.1967 Tw +(When an unbound symbol or undefined error occurs, and the offending symbol contains )Tj +/TT10 1 Tf +42.0327 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.1967 Tw +[( or )]TJ +/TT10 1 Tf +1.8342 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-45.0672 -1.2889 TD +0.1044 Tw +(DWIM tries to correct errors caused by typing )Tj +/TT10 1 Tf +21.4244 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.1044 Tw +[( for left parenthesis and )]TJ +/TT10 1 Tf +11.2512 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.1044 Tw +[( for right parenthesis. In)]TJ +-33.8758 -1.2889 TD +0.1256 Tw +[(these cases, the interaction with you is similar to that for spelling correction. If the error occurs in)]TJ +0 -1.2222 TD +0 Tw +(type-in, )Tj +/TT10 1 Tf +3.6685 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( types )Tj +/TT10 1 Tf +2.8862 0 TD +(=)Tj +/TT17 1 Tf +0.6001 0 TD +(CORRECTION)Tj +/TT8 1 Tf +6.001 0 TD +(, and continues evaluating the expression. For example:)Tj +/TT11 1 Tf +-10.2228 -2.9556 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(SETQ FOO 9IPLUS 1 2])Tj +3.0132 -1 TD +(= \( IPLUS)Tj +T* +(3)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(If the correction does not occur in type-in, )Tj +/TT10 1 Tf +18.7417 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( prints)Tj +/TT17 1 Tf +-15.8088 -2.8889 TD +(BAD-ATOM)Tj +/TT10 1 Tf +4.8008 0 TD +( [IN )Tj +/TT17 1 Tf +3.0005 0 TD +(FUNCTION-NAME)Tj +/TT10 1 Tf +7.8013 0 TD +(] -> )Tj +/TT17 1 Tf +3.0005 0 TD +(CORRECTION)Tj +/TT10 1 Tf +6.001 0 TD +( ?)Tj +/TT8 1 Tf +-29.9373 -2.9556 TD +0.0278 Tw +[(and then waits for approval. You then have the same six options as for spelling correction, except the)]TJ +0 -1.2222 TD +0.0533 Tw +(waiting time is 3)Tj +/TT10 1 Tf +7.4842 0 TD +0 Tw +(*DWIMWAIT)Tj +/TT8 1 Tf +5.4009 0 TD +0.0533 Tw +[( seconds. If you type )]TJ +/TT10 1 Tf +9.9167 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5533 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +[( operates as if it were in )]TJ +/TT10 1 Tf +11.0984 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.0533 Tw +[( mode,)]TJ +-42.2548 -1.2889 TD +0 Tw +(i.e., it makes the correction and prints its message.)Tj +0 -2.8889 TD +(Actually, )Tj +/TT10 1 Tf +4.2924 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( uses the value of the variables )Tj +/TT10 1 Tf +13.7924 0 TD +0 Tc +0 Tw +(LPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0007 Tc +0.0026 Tw +( and )Tj +/TT10 1 Tf +2.1995 0 TD +0 Tc +0 Tw +(RPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0001 Tc +0.0032 Tw +( to determine the corresponding)Tj +-31.0861 -1.2889 TD +0 Tc +0.1889 Tw +(lower case character for left and right parentheses. )Tj +/TT10 1 Tf +24.4739 0 TD +0 Tw +(LPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1889 Tw +[( and )]TJ +/TT10 1 Tf +2.5707 0 TD +0 Tw +(RPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1889 Tw +[( are initially )]TJ +/TT10 1 Tf +6.1101 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.1889 Tw +[( and )]TJ +/TT10 1 Tf +2.5706 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +-44.7268 -1.2889 TD +0.0467 Tw +(respectively, but they can be reset for other keyboard layouts, e.g., on some terminals left parenthesis)Tj +0 -1.2222 TD +0 Tw +(is over )Tj +/TT10 1 Tf +3.1997 0 TD +(8)Tj +/TT8 1 Tf +0.6001 0 TD +(, and right parenthesis is over )Tj +/TT10 1 Tf +13.376 0 TD +(9)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 209.2 Tm +(Undefined Function T Errors)Tj +ET +54.01 206.49 m +510.01 206.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 184.54 Tm +0.1811 Tw +(When an undefined function error occurs, and the offending function is )Tj +/TT10 1 Tf +33.8755 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1811 Tw +(, DWIM tries to correct)Tj +-34.4756 -1.2889 TD +0.0711 Tw +(certain types of parentheses errors involving a )Tj +/TT10 1 Tf +21.2038 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( clause in a conditional. DWIM recognizes errors of)]TJ +-21.8039 -1.2889 TD +0 Tw +(the following forms:)Tj +/TT10 1 Tf +11.0667 -2 TD +(\(COND --\) \(T --\))Tj +/TT8 1 Tf +11.6 0 TD +(The )Tj +/TT10 1 Tf +1.9238 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( clause appears outside and immediately)Tj +-2.5239 -1.2889 TD +(following the )Tj +/TT10 1 Tf +6.1572 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-24.3576 -2.0667 TD +(\(COND -- \(-- & \(T --\)\)\))Tj +/TT8 1 Tf +15.8 0 TD +(The )Tj +/TT10 1 Tf +1.9238 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( clause appears inside a previous clause.)Tj +/TT10 1 Tf +-15.3239 -2.0667 TD +(\(COND -- \(\(T --\)\)\))Tj +/TT8 1 Tf +12.8 0 TD +(The )Tj +/TT10 1 Tf +1.9238 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( clause has an extra pair of parentheses)Tj +-2.5239 -1.2889 TD +(around it.)Tj +-22.6667 -2.8889 TD +0.0056 Tw +(For undefined function errors that are not one of these three types, DWIM takes no corrective action at)Tj +0 -1.2222 TD +0 Tw +(all, and the error will occur.)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +28 0 obj +<< +/Length 7955 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0756 Tw +(If the error occurs in type-in, DWIM simply types )Tj +/TT10 1 Tf +22.8328 0 TD +0.1811 Tw +(T FIXED)Tj +/TT8 1 Tf +4.3818 0 TD +0.0756 Tw +[( and makes the correction. Otherwise if)]TJ +-27.2146 -1.2889 TD +0 Tw +(DWIM is in )Tj +/TT10 1 Tf +5.3945 0 TD +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +( mode, DWIM makes the correction and prints the message:)Tj +/TT10 1 Tf +-4.862 -2.8889 TD +([IN )Tj +/TT17 1 Tf +2.4004 0 TD +(FUNCTION-NAME)Tj +/TT10 1 Tf +7.8013 0 TD +(] {BAD-COND} ->)Tj +-6.2017 -1 TD +( {CORRECTED-COND})Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( is in )Tj +/TT10 1 Tf +2.3379 0 TD +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +( mode, DWIM prints)Tj +/TT10 1 Tf +-5.1257 -2.8889 TD +(UNDEFINED FUNCTION T)Tj +4 -1 TD +([IN FUNCTION-NAME] FIX?)Tj +/TT8 1 Tf +-9.3333 -2.7333 TD +0.0922 Tw +[(and waits for approval. You then have the same options as for spelling corrections and parenthesis)]TJ +0 -1.2222 TD +0 Tw +(errors. If you type )Tj +/TT10 1 Tf +8.4712 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( or default, )Tj +/TT10 1 Tf +5.084 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( makes the correction and prints its message.)Tj +-16.5557 -2.9556 TD +0.12 Tw +(Having made the correction, )Tj +/TT10 1 Tf +13.3638 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.12 Tw +[( must then decide how to proceed with the computation. In the)]TJ +-15.7642 -1.2889 TD +0.0067 Tw +(first case, )Tj +/TT10 1 Tf +4.3791 0 TD +0.0167 Tw +(\(COND --\) \(T --\))Tj +/TT8 1 Tf +9.6516 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5067 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0067 Tw +[( cannot know whether the )]TJ +/TT10 1 Tf +11.8458 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[( clause would have been executed if)]TJ +-29.3836 -1.2889 TD +0.0033 Tw +(it had been inside of the )Tj +/TT10 1 Tf +10.8672 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0003 Tc +0.003 Tw +(. Therefore )Tj +/TT10 1 Tf +5.3108 0 TD +0 Tc +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0003 Tc +0.003 Tw +( asks you )Tj +/TT10 1 Tf +4.3689 0 TD +0 Tc +0.0067 Tw +(CONTINUE WITH T CLAUSE)Tj +/TT8 1 Tf +13.2221 0 TD +0.0002 Tc +0.0031 Tw +( \(with a default)Tj +-38.5698 -1.2889 TD +0 Tc +0 Tw +(of )Tj +/TT10 1 Tf +1.2722 0 TD +(YES)Tj +/TT8 1 Tf +1.8003 0 TD +0.1433 Tw +[(\). If you type )]TJ +/TT10 1 Tf +6.8871 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6433 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1433 Tw +[( continues with the form after the )]TJ +/TT10 1 Tf +16.0277 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1433 Tw +(, i.e., the form that originally)Tj +-32.0316 -1.2889 TD +0 Tw +(followed the )Tj +/TT10 1 Tf +5.8179 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( clause.)Tj +-6.418 -2.9556 TD +0.0133 Tw +(In the second case, )Tj +/TT10 1 Tf +8.5416 0 TD +0.0311 Tw +(\(COND -- \(-- & \(T --\)\)\))Tj +/TT8 1 Tf +13.9578 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5133 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[( has a different problem. After moving the )]TJ +/TT10 1 Tf +19.3241 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +-44.7372 -1.2889 TD +0.1233 Tw +(clause to its proper place, )Tj +/TT10 1 Tf +12.1025 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1233 Tw +[( must return as the value of )]TJ +/TT10 1 Tf +13.2574 0 TD +0 Tw +(&)Tj +/TT8 1 Tf +0.6001 0 TD +0.1233 Tw +[( as the value of the )]TJ +/TT10 1 Tf +9.2551 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1233 Tw +[(. Since this)]TJ +-40.0159 -1.2889 TD +0.1933 Tw +(value is no longer around, )Tj +/TT10 1 Tf +12.8334 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1933 Tw +[( asks you )]TJ +/TT10 1 Tf +4.9389 0 TD +0.4656 Tw +(OK TO REEVALUATE)Tj +/TT8 1 Tf +10.5327 0 TD +0.1933 Tw +[( and then prints the expression)]TJ +-30.7053 -1.2889 TD +0.1678 Tw +(corresponding to )Tj +/TT10 1 Tf +8.1593 0 TD +0 Tw +(&)Tj +/TT8 1 Tf +0.6001 0 TD +0.1678 Tw +[(. If you type )]TJ +/TT10 1 Tf +6.6763 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.1678 Tw +(, or default, )Tj +/TT10 1 Tf +5.8373 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1678 Tw +[( continues by reevaluating )]TJ +/TT10 1 Tf +12.6247 0 TD +0 Tw +(&)Tj +/TT8 1 Tf +0.6001 0 TD +0.1678 Tw +(, otherwise )Tj +/TT10 1 Tf +5.4415 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +-42.9398 -1.2889 TD +0.0422 Tw +(aborts, and a )Tj +/TT10 1 Tf +6.0637 0 TD +0.1 Tw +(U.D.F. T)Tj +/TT8 1 Tf +4.9008 0 TD +0.0422 Tw +[( error will then occur \(even though the )]TJ +/TT10 1 Tf +17.6762 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.0422 Tw +[( has in fact been fixed\). If )]TJ +/TT10 1 Tf +11.8959 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +-42.9369 -1.2889 TD +0.2578 Tw +(can determine for itself that the form can safely be reevaluated, it does not consult you before)Tj +0 -1.2222 TD +0.18 Tw +(reevaluating. )Tj +/TT10 1 Tf +6.6774 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.18 Tw +[( can do this if the form is atomic, or )]TJ +/TT10 1 Tf +17.6691 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.18 Tw +[( of the form is a member of the list)]TJ +/TT10 1 Tf +-28.5472 -1.2889 TD +0 Tw +(OKREEVALST)Tj +/TT8 1 Tf +6.001 0 TD +0.0678 Tw +[(, and each of the arguments can safely be reevaluated. For example, )]TJ +/TT10 1 Tf +31.2083 0 TD +0.1622 Tw +(\(SETQ X \(CONS)Tj +-37.2092 -1.2889 TD +0 Tw +(\(IPLUS Y Z\) W\)\) )Tj +/TT8 1 Tf +9.6016 0 TD +(is safe to reevaluate because )Tj +/TT10 1 Tf +12.6719 0 TD +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(IPLUS)Tj +/TT8 1 Tf +3.0005 0 TD +( are all on )Tj +/TT10 1 Tf +4.584 0 TD +(OKREEVALST)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-43.6025 -2.9556 TD +0.1711 Tw +(In the third case, )Tj +/TT10 1 Tf +8.2924 0 TD +0.4111 Tw +(\(COND -- \(\(T --\)\)\))Tj +/TT8 1 Tf +12.0351 0 TD +0.1711 Tw +(, there is no problem with continuation, so no further)Tj +-20.3274 -1.2889 TD +0 Tw +(interaction is necessary.)Tj +/TT4 1 Tf +10 0 0 10 102 155.4 Tm +(DWIM Operation)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 152.69 m +558.01 152.69 l +S +BT +/TT8 1 Tf +9 0 0 9 126 130.74 Tm +0.1067 Tw +(Whenever the interpreter encounters an atomic form with no binding, or a non-atomic form )Tj +/TT10 1 Tf +42.2863 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1067 Tw +[( of)]TJ +-44.0866 -1.2889 TD +0.0422 Tw +(which is not a function or function object, it calls the function )Tj +/TT10 1 Tf +27.7567 0 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0422 Tw +[(. Similarly, when )]TJ +/TT10 1 Tf +8.1689 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.0422 Tw +[( is)]TJ +-44.3269 -1.2889 TD +0.2933 Tw +(given an undefined function, )Tj +/TT10 1 Tf +14.2563 0 TD +0 Tw +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +0.2933 Tw +[( is called. When )]TJ +/TT10 1 Tf +8.9403 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2933 Tw +[( is enabled, )]TJ +/TT10 1 Tf +6.09 0 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.2933 Tw +[( and)]TJ +/TT10 1 Tf +-43.0889 -1.2889 TD +0 Tw +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +0.0867 Tw +[( are redefined to first call the DWIM package, which tries to correct the error. If )]TJ +/TT10 1 Tf +36.9201 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +-42.9211 -1.2889 TD +0.0489 Tw +(cannot decide how to fix the error, or you disapprove of )Tj +/TT10 1 Tf +25.5412 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0489 Tw +(s correction \(by typing )Tj +/TT10 1 Tf +10.7 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0489 Tw +(\), or you type)Tj +-39.2416 -1.2889 TD +0.0678 Tw +(Control-E, then )Tj +/TT10 1 Tf +7.1937 0 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0678 Tw +[( and )]TJ +/TT10 1 Tf +2.3284 0 TD +0 Tw +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +0.0678 Tw +[( cause an error or break. If you type )]TJ +/TT11 1 Tf +16.9312 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.0678 Tw +[( to )]TJ +/TT10 1 Tf +1.5076 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5678 0 TD +(DWIM)Tj +/TT8 1 Tf +-42.934 -1.2889 TD +0.0311 Tw +(exits by performing )Tj +/TT10 1 Tf +9.0499 0 TD +0.0744 Tw +(\(RETEVAL FAULTEVAL \(ERROR!\)\))Tj +/TT8 1 Tf +18.1518 0 TD +0.0311 Tw +(, so that an error will be generated at the)Tj +-27.2017 -1.2889 TD +0 Tw +(position of the call to )Tj +/TT10 1 Tf +9.521 0 TD +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +31 0 obj +<< +/Length 7797 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-7)Tj +/TT8 1 Tf +-42.8333 60.6156 TD +(If )Tj +/TT10 1 Tf +0.9221 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0022 Tw +( can \(and is allowed to\) correct the error, it exits by performing )Tj +/TT10 1 Tf +28.002 0 TD +0 Tw +(RETEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0001 Tc +0.0021 Tw +( of the corrected form,)Tj +-35.5253 -1.2889 TD +0 Tc +0.0389 Tw +(as of the position of the call to )Tj +/TT10 1 Tf +13.7721 0 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0389 Tw +[( or )]TJ +/TT10 1 Tf +1.5187 0 TD +0 Tw +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +0.0389 Tw +[(. Thus in the example at the beginning of)]TJ +-26.6926 -1.2889 TD +0.0567 Tw +(the chapter, when )Tj +/TT10 1 Tf +8.3614 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0567 Tw +[( determined that )]TJ +/TT10 1 Tf +7.7901 0 TD +0 Tw +(ITIMS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0567 Tw +[( was )]TJ +/TT10 1 Tf +2.3711 0 TD +0 Tw +(ITIMES)Tj +/TT8 1 Tf +3.6006 0 TD +0.0567 Tw +[( misspelled, )]TJ +/TT10 1 Tf +5.6368 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0567 Tw +[( called )]TJ +/TT10 1 Tf +3.2291 0 TD +0 Tw +(RETEVAL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0567 Tw +[( with)]TJ +/TT10 1 Tf +-42.991 -1.2889 TD +0.2933 Tw +(\(ITIMES N \(FACCT 9SUB1 N\)\))Tj +/TT8 1 Tf +16.7759 0 TD +0.1222 Tw +[(. Since the interpreter uses the value returned by )]TJ +/TT10 1 Tf +23.1631 0 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +-39.939 -1.2889 TD +0.0633 Tw +(exactly as though it were the value of the erroneous form, the computation will thus proceed exactly)Tj +0 -1.2222 TD +0 Tw +(as though no error had occurred.)Tj +0 -2.8889 TD +0.0089 Tw +(In addition to continuing the computation, )Tj +/TT10 1 Tf +19.1905 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( also repairs the cause of the error whenever possible;)]TJ +-21.5909 -1.2889 TD +0.0411 Tw +(in the above example, )Tj +/TT10 1 Tf +10.0668 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( also changed \(with )]TJ +/TT10 1 Tf +9.0453 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +(\) the expression )Tj +/TT10 1 Tf +7.3304 0 TD +0.0978 Tw +(\(ITIMS N \(FACCT 9SUB1)Tj +-32.4434 -1.2889 TD +0 Tw +(N\)\))Tj +/TT8 1 Tf +1.8003 0 TD +( that caused the error. Note that if your program had )Tj +/TT13 1 Tf +23.8653 0 TD +(computed)Tj +/TT8 1 Tf +3.9072 0 TD +( the form and called )Tj +/TT10 1 Tf +9.1094 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +(, it would)Tj +-41.0826 -1.2889 TD +0.0289 Tw +(not be possible to repair the cause of the error, although )Tj +/TT10 1 Tf +25.2455 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[( could correct the misspelling each time)]TJ +-27.6459 -1.2889 TD +0 Tw +(it occurred.)Tj +0 -2.8889 TD +0.0189 Tw +(Error correction in )Tj +/TT10 1 Tf +8.4693 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( is divided into three categories: unbound atoms, undefined )]TJ +/TT10 1 Tf +26.8692 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +[( of form, and)]TJ +-39.5392 -1.2889 TD +0.0722 Tw +(undefined function in )Tj +/TT10 1 Tf +10.1175 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.0722 Tw +[(. Assuming that the user approves )]TJ +/TT10 1 Tf +16.1794 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0722 Tw +(s corrections, the action taken)Tj +-31.6978 -1.2889 TD +0 Tw +(by )Tj +/TT10 1 Tf +1.3594 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( for the various types of errors in each of these categories is summarized below.)Tj +/TT4 1 Tf +10 0 0 10 78 362.6 Tm +(DWIM Correction: Unbound Atoms)Tj +/TT8 1 Tf +9 0 0 9 78 338.94 Tm +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( is called as the result of an unbound atom error, it proceeds as follows:)Tj +-1.4036 -2.0667 TD +0.1344 Tw +[(1.)-666.7(If the first character of the unbound atom is )]TJ +/TT10 1 Tf +22.0837 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6344 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1344 Tw +[( assumes that you \(intentionally\))]TJ +-24.302 -1.2889 TD +0 Tw +(typed )Tj +/TT10 1 Tf +2.9966 0 TD +()Tj +/TT17 1 Tf +0.6001 0 TD +(ATOM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1733 Tw +[( for )]TJ +/TT10 1 Tf +2.1206 0 TD +0 Tw +(\(QUOTE)Tj +/TT19 1 Tf +3.6006 0 TD +( )Tj +/TT17 1 Tf +0.4233 0 TD +(ATOM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1733 Tw +[( and makes the appropriate change. No message is)]TJ +-15.1421 -1.2889 TD +0 Tw +(typed, and no approval is requested.)Tj +0 -2 TD +0.0356 Tw +(If the unbound atom is just )Tj +/TT10 1 Tf +12.4072 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.0356 Tw +[( itself, )]TJ +/TT10 1 Tf +2.9652 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0356 Tw +[( assumes you want the )]TJ +/TT13 1 Tf +10.4986 0 TD +0 Tw +(next)Tj +/TT8 1 Tf +1.7783 0 TD +0.0356 Tw +[( expression quoted,)]TJ +-30.6497 -1.2889 TD +0 Tw +(e.g., )Tj +/TT10 1 Tf +2.0563 0 TD +0.0511 Tw +(\(CONS X \(A B C\)\))Tj +/TT8 1 Tf +10.4061 0 TD +0.0211 Tw +[( will be changed to )]TJ +/TT10 1 Tf +8.7208 0 TD +0.0511 Tw +(\(CONS X \(QUOTE \(A B C\)\)\))Tj +/TT8 1 Tf +14.6579 0 TD +0.0211 Tw +[(. Again)]TJ +-35.8411 -1.2889 TD +0.1222 Tw +[(no message will be printed or approval asked. If no expression follows the )]TJ +/TT10 1 Tf +35.0544 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.1222 Tw +(, DWIM)Tj +-35.6545 -1.2889 TD +0 Tw +(gives up.)Tj +3.3333 -2 TD +(Note:)Tj +/TT10 1 Tf +4.1578 0 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +( is normally defined as a read-macro character which converts )Tj +/TT10 1 Tf +27.7124 0 TD +(FOO)Tj +/TT8 1 Tf +2.4004 0 TD +( to)Tj +/TT10 1 Tf +-34.8707 -1.2889 TD +0.0567 Tw +(\(QUOTE FOO\))Tj +/TT8 1 Tf +6.6577 0 TD +0.0233 Tw +[( on input, so )]TJ +/TT10 1 Tf +5.8443 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( will not see the )]TJ +/TT19 1 Tf +7.2968 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.2778 0 TD +0.0233 Tw +[( in the case of expressions that)]TJ +-22.4771 -1.2889 TD +0 Tw +(are typed-in.)Tj +-4.75 -2 TD +0.1878 Tw +[(2.)-666.7(If CLISP \(see Chapter 21\) is enabled, and the atom is part of a CLISP construct, the)]TJ +1.4167 -1.2222 TD +0.3122 Tw +[(CLISP transformation is performed and the result returned. For example, )]TJ +/TT10 1 Tf +36.2499 0 TD +0 Tw +(N-1)Tj +/TT8 1 Tf +1.8003 0 TD +0.3122 Tw +[( is)]TJ +-38.0502 -1.2889 TD +0.0744 Tw +(transformed to )Tj +/TT10 1 Tf +6.9946 0 TD +0.1778 Tw +(\(SUB1 N\))Tj +/TT8 1 Tf +4.9786 0 TD +0.0744 Tw +(, and )Tj +/TT10 1 Tf +2.5918 0 TD +0.1778 Tw +(\(... FOO_3 ...\))Tj +/TT8 1 Tf +9.357 0 TD +0.0744 Tw +[( is transformed into )]TJ +/TT10 1 Tf +9.2314 0 TD +0.1778 Tw +(\(... \(SETQ)Tj +-33.1533 -1.2889 TD +0 Tw +(FOO 3\) ...\))Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-8.0177 -2.0667 TD +0.1533 Tw +[(3.)-666.7(If the atom contains an )]TJ +/TT10 1 Tf +12.5222 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.1533 Tw +[( \(actually )]TJ +/TT10 1 Tf +4.6509 0 TD +0 Tw +(LPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1533 Tw +[( \(see the DWIM Functions and Variables)]TJ +-20.5572 -1.2889 TD +0.0844 Tw +(section below\), )Tj +/TT10 1 Tf +7.0468 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0844 Tw +[( assumes the )]TJ +/TT19 1 Tf +6.1269 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.5 0 TD +0.0844 Tw +[( was intended to be a left parenthesis, and calls the)]TJ +-16.0741 -1.2889 TD +0.2644 Tw +[(editor to make appropriate repairs on the expression containing the atom. DWIM)]TJ +0 -1.2222 TD +0.0522 Tw +(assumes that you did not notice the mistake, i.e., that the entire expression was affected)Tj +T* +0.1478 Tw +[(by the missing left parenthesis. For example, if you type )]TJ +/TT10 1 Tf +26.8726 0 TD +0.3544 Tw +(\(SETQ X \(LIST \(CONS)Tj +-26.8726 -1.2889 TD +0.1056 Tw +(9CAR Y\) \(CDR Z\)\) Y\))Tj +/TT8 1 Tf +11.8241 0 TD +0.0433 Tw +(, the expression will be changed to )Tj +/TT10 1 Tf +15.7926 0 TD +0.1056 Tw +(\(SETQ X \(LIST \(CONS)Tj +-27.6167 -1.2889 TD +0.18 Tw +(\(CAR Y\) \(CDR Z\)\) Y\)\))Tj +/TT8 1 Tf +12.722 0 TD +0.0756 Tw +[(. The )]TJ +/TT10 1 Tf +2.9005 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.0756 Tw +[( does not have to be the first character of the atom:)]TJ +/TT10 1 Tf +-16.2225 -1.2889 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( will handle )Tj +/TT10 1 Tf +5.502 0 TD +(\(CONS X9CAR Y\))Tj +/TT8 1 Tf +8.4014 0 TD +( correctly.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT17 20 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +35 0 obj +<< +/Length 7728 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 143.25 569.54 Tm +0.2044 Tw +[(4.)-666.7(If the atom contains a )]TJ +/TT10 1 Tf +12.1957 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.2044 Tw +[( \(actually )]TJ +/TT10 1 Tf +4.7531 0 TD +0 Tw +(RPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2044 Tw +(, see the DWIM Functions and Variables)Tj +-20.333 -1.2889 TD +0.2978 Tw +(section below\), DWIM assumes the )Tj +/TT10 1 Tf +17.297 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.2978 Tw +[( was intended to be a right parenthesis and)]TJ +-17.8971 -1.2889 TD +0 Tw +(operates as in the case above.)Tj +-1.4167 -2 TD +0.0822 Tw +[(5.)-666.7(If the atom begins with a )]TJ +/TT10 1 Tf +13.1405 0 TD +0 Tw +(7)Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +(, the )Tj +/TT10 1 Tf +2.3017 0 TD +0 Tw +(7)Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +[( is treated as a )]TJ +/TT10 1 Tf +6.916 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +[(. For example, )]TJ +/TT10 1 Tf +7.075 0 TD +0 Tw +(7FOO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[( becomes )]TJ +/TT10 1 Tf +4.4721 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +-39.0896 -1.2889 TD +(and then )Tj +/TT10 1 Tf +4.1621 0 TD +(\(QUOTE FOO\))Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-12.1799 -2.0667 TD +0.3233 Tw +[(6.)-666.7(The expressions on )]TJ +/TT10 1 Tf +11.0991 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.3233 Tw +[( \(see the )]TJ +/TT10 1 Tf +4.8221 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.3233 Tw +[( section below\) are)]TJ +-30.107 -1.2889 TD +0.09 Tw +[(evaluated in the order that they appear. If any of these expressions returns a non-)]TJ +/TT10 1 Tf +37.5287 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +-37.5287 -1.2889 TD +0.1822 Tw +(value, this value is treated as the form to be used to continue the computation, it is)Tj +0 -1.2222 TD +0 Tw +(evaluated and its value is returned by )Tj +/TT10 1 Tf +16.9702 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-20.7873 -2.0667 TD +0.11 Tw +[(7.)-666.7(If the unbound atom occurs in a function, )]TJ +/TT10 1 Tf +20.8743 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.11 Tw +[( attempts spelling correction using the)]TJ +/TT10 1 Tf +-21.858 -1.2889 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +( variables of the function as the spelling list.)Tj +-9.6105 -2.0667 TD +0.0467 Tw +[(8.)-666.7(If the unbound atom occurred in a type-in to a break, )]TJ +/TT10 1 Tf +25.6356 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0467 Tw +[( attempts spelling correction)]TJ +-26.6193 -1.2889 TD +0 Tw +(using the )Tj +/TT10 1 Tf +4.3433 0 TD +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +( variables of the broken function as the spelling list.)Tj +-13.9538 -2.0667 TD +[(9.)-666.7(Otherwise, )]TJ +/TT10 1 Tf +6.564 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( attempts spelling correction using )]TJ +/TT10 1 Tf +15.7897 0 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.0511 Tw +[( \(see the Spelling Lists)]TJ +-29.3384 -1.2889 TD +0 Tw +(section below\).)Tj +-1.9167 -2 TD +[(10.)-666.7(If all of the above fail, )]TJ +/TT10 1 Tf +11.7428 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( gives up.)Tj +/TT4 1 Tf +10 0 0 10 126 327.4 Tm +(Undefined CAR of Form)Tj +/TT8 1 Tf +9 0 0 9 126 303.74 Tm +(If DWIM is called as the result of an undefined )Tj +/TT10 1 Tf +20.918 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( of form error, it proceeds as follows:)Tj +-20.8016 -2.0667 TD +[(1.)-666.7(If )]TJ +/TT10 1 Tf +2.4021 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( of the form is )]TJ +/TT10 1 Tf +6.7155 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0656 Tw +(, DWIM assumes a misplaced )Tj +/TT10 1 Tf +13.6442 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0656 Tw +[( clause and operates as described)]TJ +-24.3456 -1.2889 TD +0 Tw +(in the Undefined Function T Errors section above.)Tj +-1.4167 -2 TD +[(2.)-666.7(If )]TJ +/TT10 1 Tf +2.5699 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.2333 Tw +[( of the form is )]TJ +/TT10 1 Tf +7.5544 0 TD +0 Tw +(F/L)Tj +/TT8 1 Tf +1.8003 0 TD +0.2333 Tw +(, DWIM changes the ")Tj +/TT10 1 Tf +10.5652 0 TD +0 Tw +(F/L)Tj +/TT8 1 Tf +1.8003 0 TD +0.2333 Tw +(" to ")Tj +/TT10 1 Tf +2.5809 0 TD +0 Tw +(FUNCTION\(LAMBDA)Tj +/TT8 1 Tf +9.0015 0 TD +0.2333 Tw +[(". For)]TJ +-36.2561 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.3079 0 TD +0.1411 Tw +(\(F/L \(Y\) \(PRINT \(CAR Y\)\)\))Tj +/TT8 1 Tf +15.5669 0 TD +0.0589 Tw +[( is changed to )]TJ +/TT10 1 Tf +6.5764 0 TD +0.1411 Tw +(\(FUNCTION \(LAMBDA \(Y\))Tj +-26.4512 -1.2889 TD +0.2167 Tw +(\(PRINT \(CAR Y\)\)\))Tj +/TT8 1 Tf +10.0349 0 TD +0.09 Tw +[(. No message is printed and no approval requested. If you omit)]TJ +-10.0349 -1.2889 TD +0.14 Tw +(the variable list, )Tj +/TT10 1 Tf +7.7135 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.14 Tw +[( supplies )]TJ +/TT10 1 Tf +4.4939 0 TD +0 Tw +(\(X\))Tj +/TT8 1 Tf +1.8003 0 TD +0.14 Tw +(, e.g., )Tj +/TT10 1 Tf +2.8152 0 TD +0.3344 Tw +(\(F/L \(PRINT \(CAR X\)\)\))Tj +/TT8 1 Tf +13.6054 0 TD +0.14 Tw +[( is changed to)]TJ +/TT10 1 Tf +-32.8286 -1.2889 TD +0.1689 Tw +(\(FUNCTION \(LAMBDA \(X\) \(PRINT \(CAR X\)\)\)\))Tj +/TT8 1 Tf +24.2483 0 TD +0.07 Tw +(. )Tj +/TT10 1 Tf +0.89 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.07 Tw +[( determines that you have)]TJ +-27.5386 -1.2889 TD +0.0978 Tw +(supplied the variable list when more than one expression follows )Tj +/TT10 1 Tf +30.0505 0 TD +0 Tw +(F/L)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5978 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0978 Tw +[( of the first)]TJ +-34.2489 -1.2889 TD +0.1556 Tw +(expression is not the name of a function, and every element in the first expression is)Tj +0 -1.2222 TD +0.1578 Tw +(atomic. For example, DWIM will supply )Tj +/TT10 1 Tf +19.0224 0 TD +0 Tw +(\(X\))Tj +/TT8 1 Tf +1.8003 0 TD +0.1578 Tw +[( when correcting )]TJ +/TT10 1 Tf +8.1584 0 TD +0.3778 Tw +(\(F/L \(PRINT \(CDR)Tj +-28.981 -1.2889 TD +0 Tw +(X\)\) \(PRINT \(CAR X\)\)\))Tj +/TT8 1 Tf +12.002 0 TD +(.)Tj +-13.4186 -2.0667 TD +[(3.)-666.7(If )]TJ +/TT10 1 Tf +2.5321 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1956 Tw +[( of the form is a CLISP word \()]TJ +/TT10 1 Tf +14.7065 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6956 0 TD +(FOR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6956 0 TD +(DO)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6956 0 TD +(FETCH)Tj +/TT8 1 Tf +3.0005 0 TD +0.1956 Tw +(, etc.\), the indicated CLISP)Tj +-26.9101 -1.2889 TD +0.2511 Tw +[(transformation is performed, and the result is returned as the corrected form. See)]TJ +0 -1.2222 TD +0 Tw +(Chapter 21.)Tj +-1.4167 -2 TD +[(4.)-666.7(If )]TJ +/TT10 1 Tf +2.3599 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[( of the form has a function definition, )]TJ +/TT10 1 Tf +16.9044 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( attempts spelling correction on )]TJ +/TT10 1 Tf +14.3227 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[( of)]TJ +-38.1714 -1.2889 TD +0.3144 Tw +(the definition using as spelling list the value of )Tj +/TT10 1 Tf +23.7304 0 TD +0 Tw +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.3144 Tw +(, initially )Tj +/TT10 1 Tf +4.7983 0 TD +0 Tw +(\(LAMBDA)Tj +-35.1298 -1.2889 TD +(NLAMBDA\))Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-6.2174 -2.0667 TD +[(5.)-666.7(If )]TJ +/TT10 1 Tf +2.3388 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0001 Tc +0.0021 Tw +( of the form has an )Tj +/TT10 1 Tf +8.5241 0 TD +0 Tc +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0006 Tc +0.0016 Tw +( or )Tj +/TT10 1 Tf +1.4454 0 TD +0 Tc +0 Tw +(CODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0002 Tc +0.002 Tw +( property, )Tj +/TT10 1 Tf +4.6539 0 TD +0 Tc +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0003 Tc +0.0019 Tw +( prints )Tj +/TT17 1 Tf +3.1236 0 TD +0 Tc +0 Tw +(CAR-OF-FORM)Tj +/TT10 1 Tf +6.6011 0 TD +0.0067 Tw +[( UNSAVED)]TJ +/TT8 1 Tf +4.8074 0 TD +0 Tw +(,)Tj +-39.079 -1.2889 TD +(performs an )Tj +/TT10 1 Tf +5.6377 0 TD +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +(, and continues. No approval is requested.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +38 0 obj +<< +/Length 6850 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-9)Tj +/TT8 1 Tf +-40.9167 60.6156 TD +[(6.)-666.7(If )]TJ +/TT10 1 Tf +2.4233 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0867 Tw +[( of the form has a )]TJ +/TT10 1 Tf +8.4487 0 TD +0 Tw +(FILEDEF)Tj +/TT8 1 Tf +4.2007 0 TD +0.0867 Tw +[( property, the definition is loaded from a file \(except)]TJ +-15.4563 -1.2889 TD +0 Tw +(when )Tj +/TT10 1 Tf +2.7593 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0322 Tw +[(ing\). If the value of the property is atomic, the entire file is to be loaded.)]TJ +-6.96 -1.2889 TD +0.1644 Tw +(If the value is a list, )Tj +/TT10 1 Tf +9.7787 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1644 Tw +[( is the name of the file and )]TJ +/TT10 1 Tf +13.2145 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1644 Tw +[( the relevant functions, and)]TJ +/TT10 1 Tf +-26.5937 -1.2889 TD +0 Tw +(LOADFNS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0478 Tw +[( will be used. For both cases, )]TJ +/TT17 1 Tf +13.5131 0 TD +0 Tw +(LDFLG)Tj +/TT8 1 Tf +3.0005 0 TD +0.0478 Tw +[( will be )]TJ +/TT10 1 Tf +3.6326 0 TD +0 Tw +(SYSLOAD)Tj +/TT8 1 Tf +4.2007 0 TD +0.0478 Tw +[( \(see Chapter 17\). )]TJ +/TT10 1 Tf +8.379 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +-36.9266 -1.2889 TD +(uses )Tj +/TT10 1 Tf +2.4775 0 TD +(FINDFILE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2978 Tw +[( \(Chapter 24\), so that the file can be on any of the directories on)]TJ +/TT10 1 Tf +-7.2782 -1.2889 TD +0 Tw +(DIRECTORIES)Tj +/TT8 1 Tf +6.6011 0 TD +0.1922 Tw +(, initially )Tj +/TT10 1 Tf +4.5539 0 TD +0.4611 Tw +(\(NIL NEWLISP LISP LISPUSERS\))Tj +/TT8 1 Tf +18.1861 0 TD +0.1922 Tw +[(. If the file is found,)]TJ +-29.341 -1.2889 TD +0.16 Tw +(DWIM types )Tj +/TT10 1 Tf +6.2629 0 TD +0.3856 Tw +(SHALL I LOAD)Tj +/TT8 1 Tf +7.9723 0 TD +0.16 Tw +[( followed by the file name or list of functions. If you)]TJ +-14.2352 -1.2889 TD +0 Tw +(approve, DWIM loads the function\(s\) or file, and continues the computation.)Tj +-1.4167 -2 TD +0.1833 Tw +[(7.)-666.7(If CLISP is enabled, and )]TJ +/TT10 1 Tf +13.1917 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1833 Tw +[( of the form is part of a CLISP construct, the indicated)]TJ +-13.5754 -1.2889 TD +0 Tw +(transformation is performed, e.g., )Tj +/TT10 1 Tf +15.1006 0 TD +(\(N)Tj +/TT11 1 Tf +1.2002 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(N-1\))Tj +/TT8 1 Tf +2.4004 0 TD +( becomes)Tj +/TT19 1 Tf +4.0576 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(SETQ N \(SUB1 N\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(.)Tj +-35.6139 -2.0667 TD +[(8.)-666.7(If )]TJ +/TT10 1 Tf +2.4966 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.16 Tw +[( of the form contains an )]TJ +/TT10 1 Tf +11.6597 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.66 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.16 Tw +[( assumes a left parenthesis was intended e.g.,)]TJ +/TT10 1 Tf +-18.2004 -1.2889 TD +0 Tw +(\(CONS9CAR X\))Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-8.6178 -2.0667 TD +[(9.)-666.7(If )]TJ +/TT10 1 Tf +2.3366 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( of the form contains a )Tj +/TT10 1 Tf +10.1177 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( assumes a right parenthesis was intended.)Tj +-18.255 -2.0667 TD +[(10.)-666.7(If )]TJ +/TT10 1 Tf +2.8421 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[( of the form is a list, DWIM attempts spelling correction on )]TJ +/TT10 1 Tf +26.2991 0 TD +0 Tw +(CAAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0056 Tw +[( of the form using)]TJ +/TT10 1 Tf +-31.4253 -1.2889 TD +0 Tw +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +( as spelling list. If successful, )Tj +/TT10 1 Tf +13.1592 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( returns the corrected expression itself.)Tj +-24.0773 -2.0667 TD +0.1789 Tw +[(11.)-666.7(The expressions on )]TJ +/TT10 1 Tf +11.1657 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1789 Tw +[( are evaluated in the order they appear. If any)]TJ +-17.0503 -1.2889 TD +0.0656 Tw +(returns a non-)Tj +/TT10 1 Tf +6.3782 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( value, this value is treated as the corrected form, it is evaluated, and)]TJ +/TT10 1 Tf +-8.1785 -1.2889 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( returns its value.)Tj +-4.3171 -2.0667 TD +[(12.)-666.7(Otherwise, )]TJ +/TT10 1 Tf +7.0284 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +[( attempts spelling correction using )]TJ +/TT10 1 Tf +15.612 0 TD +0 Tw +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +0.0156 Tw +[( as the spelling list \(see)]TJ +-29.1251 -1.2889 TD +0.3078 Tw +[(the Spelling Lists section below\). When )]TJ +/TT10 1 Tf +20.0045 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(ing, )Tj +/TT10 1 Tf +2.237 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.3078 Tw +[( also attemps spelling)]TJ +-28.8426 -1.2889 TD +0.6244 Tw +(correction on function names not defined but previously encountered, using)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(NOFIXFNSLST)Tj +/TT8 1 Tf +6.6011 0 TD +( as a spelling list \(see Chapter 21\).)Tj +-8.5177 -2.0667 TD +[(13.)-666.7(If all of the above fail, DWIM gives up.)]TJ +/TT4 1 Tf +10 0 0 10 78 239.2 Tm +(Undefined Function in APPLY)Tj +/TT8 1 Tf +9 0 0 9 78 215.54 Tm +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +( is called as the result of an undefined function in )Tj +/TT10 1 Tf +22.0215 0 TD +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +( error, it proceeds as follows:)Tj +-26.4256 -2.0667 TD +0.2811 Tw +[(1.)-666.7(If the function has a definition, DWIM attempts spelling correction on )]TJ +/TT10 1 Tf +35.6236 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.2811 Tw +[( of the)]TJ +-36.0073 -1.2889 TD +0 Tw +(definition using )Tj +/TT10 1 Tf +7.2881 0 TD +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +( as spelling list.)Tj +-15.3058 -2.0667 TD +0.05 Tw +[(2.)-666.7(If the function has an )]TJ +/TT10 1 Tf +11.2687 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.05 Tw +[( or )]TJ +/TT10 1 Tf +1.5409 0 TD +0 Tw +(CODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.05 Tw +[( property, DWIM prints )]TJ +/TT17 1 Tf +11.0252 0 TD +0 Tw +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +0.12 Tw +[( UNSAVED)]TJ +/TT8 1 Tf +4.9208 0 TD +0.05 Tw +(, performs an)Tj +/TT10 1 Tf +-33.3399 -1.2889 TD +0 Tw +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +( and continues. No approval is requested.)Tj +-6.8175 -2.0667 TD +0.0689 Tw +[(3.)-666.7(If the function has a property )]TJ +/TT10 1 Tf +14.9994 0 TD +0 Tw +(FILEDEF)Tj +/TT8 1 Tf +4.2007 0 TD +0.0689 Tw +(, DWIM proceeds as in case 6 of undefined )Tj +/TT10 1 Tf +19.7484 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +-37.5319 -1.2889 TD +(of form.)Tj +-1.4167 -2 TD +0.0367 Tw +[(4.)-666.7(If the error resulted from type-in, and CLISP is enabled, and the function name contains)]TJ +1.4167 -1.2222 TD +0.7222 Tw +(a CLISP operator, DWIM performs the indicated transformation, e.g., type)Tj +/TT10 1 Tf +T* +0 Tw +(FOO)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(APPEND FIE FUM\))Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +-13.8053 -2.0667 TD +0.0311 Tw +[(5.)-666.7(If the function name contains an )]TJ +/TT10 1 Tf +16.0882 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +(, DWIM assumes a left parenthesis was intended, e.g.,)Tj +/TT10 1 Tf +-15.2716 -1.2889 TD +0 Tw +(EDIT9FOO])Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +39 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT17 20 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +41 0 obj +<< +/Length 6673 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 143.25 569.54 Tm +0.1611 Tw +[(6.)-666.7(If the "function" is a list, DWIM attempts spelling correction on )]TJ +/TT10 1 Tf +31.2548 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1611 Tw +[( of the list using)]TJ +/TT10 1 Tf +-31.6384 -1.2889 TD +0 Tw +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +( as spelling list.)Tj +-8.0177 -2.0667 TD +0.0522 Tw +[(7.)-666.7(The expressions on )]TJ +/TT10 1 Tf +10.2857 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0522 Tw +[( are evaluated in the order they appear, and if any)]TJ +-16.6703 -1.2889 TD +0.2467 Tw +(returns a non-)Tj +/TT10 1 Tf +6.7404 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2467 Tw +[( value, this value is treated as the function used to continue the)]TJ +-8.5407 -1.2889 TD +0 Tw +(computation, i.e., it will be applied to its arguments.)Tj +-1.4167 -2 TD +[(8.)-666.7(DWIM attempts spelling correction using )]TJ +/TT10 1 Tf +20.0075 0 TD +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +( as the spelling list.)Tj +-26.0085 -2.0667 TD +[(9.)-666.7(DWIM attempts spelling correction using )]TJ +/TT10 1 Tf +20.0075 0 TD +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +( as the spelling list.)Tj +-26.5085 -2.0667 TD +[(10.)-666.7(If all fail, DWIM gives up.)]TJ +/TT4 1 Tf +10 0 0 10 102 418.6 Tm +(DWIMUSERFORMS)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 415.89 m +558.01 415.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 393.94 Tm +0.0289 Tw +(The variable )Tj +/TT10 1 Tf +5.8058 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8008 0 TD +0.0289 Tw +[( provides a convenient way of adding to the transformations that )]TJ +/TT10 1 Tf +29.3217 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +-42.9284 -1.2889 TD +0.0322 Tw +[(performs. For example, you might want to change atoms of the form )]TJ +/TT10 1 Tf +31.1728 0 TD +0 Tw +($X)Tj +/TT8 1 Tf +1.2002 0 TD +0.0322 Tw +[( to )]TJ +/TT10 1 Tf +1.4365 0 TD +0.0756 Tw +(\(QA4LOOKUP X\))Tj +/TT8 1 Tf +7.8768 0 TD +0.0322 Tw +[(. Before)]TJ +-41.6863 -1.2889 TD +0.1744 Tw +(attempting spelling correction, but after performing other transformations \()Tj +/TT10 1 Tf +34.7696 0 TD +0 Tw +(F/L)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6744 0 TD +(9)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6744 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.1744 Tw +(, CLISP, etc.\),)Tj +/TT10 1 Tf +-39.119 -1.2889 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1989 Tw +[( evaluates the expressions on )]TJ +/TT10 1 Tf +14.0872 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1989 Tw +[( in the order they appear. If any expression)]TJ +-24.2889 -1.2889 TD +0.0422 Tw +(returns a non-)Tj +/TT10 1 Tf +6.3315 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0422 Tw +[( value, this value is treated as the transformed form to be used. If )]TJ +/TT10 1 Tf +29.8457 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0422 Tw +[( was called)]TJ +-40.3779 -1.2889 TD +0 Tw +(from )Tj +/TT10 1 Tf +2.7567 0 TD +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.35 Tw +(, this form is evaluated and the resulting value is returned as the value of)Tj +/TT10 1 Tf +-8.1576 -1.2889 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0822 Tw +[(. If )]TJ +/TT10 1 Tf +1.9166 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[( is called from )]TJ +/TT10 1 Tf +6.8162 0 TD +0 Tw +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +0.0822 Tw +(, this form is treated as a function to be applied to)Tj +/TT10 1 Tf +-22.535 -1.2889 TD +0 Tw +(FAULTARGS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0189 Tw +(, and the resulting value is returned as the value of )Tj +/TT10 1 Tf +22.886 0 TD +0 Tw +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +0.0189 Tw +[(. If all of the expressions)]TJ +-34.2879 -1.2889 TD +0 Tw +(on )Tj +/TT10 1 Tf +1.5502 0 TD +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1722 Tw +[( return )]TJ +/TT10 1 Tf +3.6247 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6722 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1722 Tw +[( proceeds as though )]TJ +/TT10 1 Tf +9.7865 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +( )Tj +/TT10 1 Tf +0.4222 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4222 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1722 Tw +(, and attempts)Tj +-38.6817 -1.2889 TD +0.2967 Tw +[(spelling correction. Note that )]TJ +/TT10 1 Tf +14.8627 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2967 Tw +[( simply takes the value and returns it; the expressions on)]TJ +/TT10 1 Tf +-17.2631 -1.2889 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.2811 Tw +[( are responsible for making any modifications to the original expression. The)]TJ +-7.8013 -1.2889 TD +0.0689 Tw +(expressions on )Tj +/TT10 1 Tf +6.9264 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0689 Tw +[( should make the transformation permanent, either by associating it)]TJ +-14.7276 -1.2889 TD +0 Tw +(with )Tj +/TT10 1 Tf +2.2832 0 TD +(FAULTX)Tj +/TT8 1 Tf +3.6006 0 TD +( via )Tj +/TT10 1 Tf +1.856 0 TD +(CLISPTRAN)Tj +/TT8 1 Tf +5.4009 0 TD +(, or by destructively changing )Tj +/TT10 1 Tf +13.4336 0 TD +(FAULTX)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-30.1748 -2.9556 TD +0.13 Tw +(In order for an expression on )Tj +/TT10 1 Tf +13.8454 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.13 Tw +[( to be able to be effective, it needs to know various)]TJ +-21.6467 -1.2889 TD +0.0156 Tw +[(things about the context of the error. Therefore, several of DWIMs internal variables have been made)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(SPECVARS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0656 Tw +[( \(see Chapter 18\) and are therefore "visible" to )]TJ +/TT10 1 Tf +21.0695 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0656 Tw +[(. Below are a list of those)]TJ +-33.6715 -1.2889 TD +0 Tw +(variables that may be useful.)Tj +/TT15 1 Tf +2.6667 -2.4822 TD +(FAULTX)Tj +/TT6 1 Tf +10 0 0 10 182.4 171.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 171.6 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1144 Tw +(For unbound atom and undefined car of form errors, )Tj +/TT10 1 Tf +24.634 0 TD +0 Tw +(FAULTX)Tj +/TT8 1 Tf +3.6006 0 TD +0.1144 Tw +[( is the atom or form. For)]TJ +-28.2346 -1.2889 TD +0 Tw +(undefined function in )Tj +/TT10 1 Tf +9.9009 0 TD +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +( errors, )Tj +/TT10 1 Tf +3.3838 0 TD +(FAULTX)Tj +/TT8 1 Tf +3.6006 0 TD +( is the name of the function.)Tj +/TT15 1 Tf +-22.5524 -2.5489 TD +(FAULTARGS)Tj +/TT6 1 Tf +10 0 0 10 198.6 120.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 120.46 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0078 Tw +(For undefined function in )Tj +/TT10 1 Tf +11.6791 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.0078 Tw +[( errors, )]TJ +/TT10 1 Tf +3.3993 0 TD +0 Tw +(FAULTARGS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0078 Tw +[( is the list of arguments. )]TJ +/TT10 1 Tf +11.1155 0 TD +0 Tw +(FAULTARGS)Tj +/TT8 1 Tf +-34.5953 -1.2889 TD +(may be modified or reset by expressions on )Tj +/TT10 1 Tf +19.4575 0 TD +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT15 19 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +44 0 obj +<< +/Length 5933 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-11)Tj +/TT15 1 Tf +-39.6667 60.4667 TD +(FAULTAPPLYFLG)Tj +/TT6 1 Tf +10 0 0 10 172.2 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.3489 Tw +(Value is )Tj +/TT10 1 Tf +4.5078 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3489 Tw +[( for undefined function in )]TJ +/TT10 1 Tf +13.4193 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.3489 Tw +[( errors; )]TJ +/TT10 1 Tf +4.0816 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3489 Tw +[( otherwise. The value of)]TJ +/TT10 1 Tf +-27.4095 -1.2889 TD +0 Tw +(FAULTAPPLYFLG)Tj +/TT8 1 Tf +7.8013 0 TD +( )Tj +/TT13 1 Tf +0.6256 0 TD +(after)Tj +/TT8 1 Tf +1.833 0 TD +0.3756 Tw +[( an expression on )]TJ +/TT10 1 Tf +9.449 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.3756 Tw +[( returns a non-)]TJ +/TT10 1 Tf +7.6237 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3756 Tw +[( value)]TJ +-36.9341 -1.2889 TD +0.1956 Tw +[(determines how the latter value is to be treated. Following an undefined function in)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.2411 Tw +[( error, if an expression on )]TJ +/TT10 1 Tf +12.9774 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.2411 Tw +[( sets )]TJ +/TT10 1 Tf +2.6351 0 TD +0 Tw +(FAULTAPPLYFLG)Tj +/TT8 1 Tf +7.8013 0 TD +0.2411 Tw +[( to )]TJ +/TT10 1 Tf +1.8543 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2411 Tw +(, the)Tj +-37.8701 -1.2889 TD +0 Tw +(value returned is treated as a form to be evaluated, rather than a function to be applied.)Tj +/TT10 1 Tf +0 -2 TD +(FAULTAPPLYFLG)Tj +/TT8 1 Tf +7.8013 0 TD +0.3067 Tw +[( is necessary to distinguish between unbound atom and undefined)]TJ +-7.8013 -1.2889 TD +0.21 Tw +(function in )Tj +/TT10 1 Tf +5.5001 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.21 Tw +[( errors, since )]TJ +/TT10 1 Tf +6.4835 0 TD +0 Tw +(FAULTARGS)Tj +/TT8 1 Tf +5.4009 0 TD +0.21 Tw +[( may be )]TJ +/TT10 1 Tf +4.3512 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.21 Tw +[( and )]TJ +/TT10 1 Tf +2.6129 0 TD +0 Tw +(FAULTX)Tj +/TT8 1 Tf +3.6006 0 TD +0.21 Tw +[( atomic in both)]TJ +-32.7499 -1.2889 TD +0 Tw +(cases.)Tj +/TT15 1 Tf +-2.6667 -2.4822 TD +(TAIL)Tj +/TT6 1 Tf +10 0 0 10 123.6 442.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 442.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0478 Tw +(For unbound atom errors, )Tj +/TT10 1 Tf +11.9069 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +[( is the tail of the expression )]TJ +/TT10 1 Tf +12.5976 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0478 Tw +[( of which is the unbound)]TJ +-28.7052 -1.2889 TD +0.3167 Tw +(atom. )Tj +/TT10 1 Tf +3.6382 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.3167 Tw +[( expression can replace the atom by another expression by)]TJ +-11.4395 -1.2889 TD +0 Tw +(performing )Tj +/TT10 1 Tf +5.311 0 TD +(\(/RPLACA TAIL)Tj +/TT19 1 Tf +7.8013 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(EXPR)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT15 1 Tf +-18.4294 -2.5489 TD +(PARENT)Tj +/TT6 1 Tf +10 0 0 10 134.4 379.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 379.52 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0122 Tw +(For unbound atom errors, )Tj +/TT10 1 Tf +11.7647 0 TD +0 Tw +(PARENT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0122 Tw +[( is the form in which the unbound atom appears. )]TJ +/TT10 1 Tf +22.2214 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +-37.5867 -1.2889 TD +(is a tail of )Tj +/TT10 1 Tf +4.502 0 TD +(PARENT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT15 1 Tf +-10.7692 -2.5489 TD +(TYPE-IN?)Tj +/TT6 1 Tf +10 0 0 10 145.2 328.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 328.38 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(True if the error occurred in type-in.)Tj +/TT15 1 Tf +-2.6667 -2.4822 TD +(FAULTFN)Tj +/TT6 1 Tf +10 0 0 10 139.8 289.44 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 289.44 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.19 Tw +(Name of the function in which error occurred. )Tj +/TT10 1 Tf +22.6084 0 TD +0 Tw +(FAULTFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.19 Tw +[( is )]TJ +/TT10 1 Tf +1.5948 0 TD +0 Tw +(TYPE-IN)Tj +/TT8 1 Tf +4.2007 0 TD +0.19 Tw +[( when the error)]TJ +-32.6047 -1.2889 TD +0.0411 Tw +(occurred in type-in, and )Tj +/TT10 1 Tf +11.0653 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( or )]TJ +/TT10 1 Tf +1.5231 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.0411 Tw +[( when the error occurred under an explicit call to)]TJ +/TT10 1 Tf +-17.9893 -1.2889 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT15 1 Tf +-9.5085 -2.5489 TD +(DWIMIFYFLG)Tj +/TT6 1 Tf +10 0 0 10 156 226.7 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 226.7 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1756 Tw +(True if the error was encountered while )Tj +/TT10 1 Tf +19.0507 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1756 Tw +(ing \(as opposed to happening while)Tj +-23.2514 -1.2889 TD +0 Tw +(running a program\).)Tj +/TT15 1 Tf +-2.6667 -2.4822 TD +(EXPR)Tj +/TT6 1 Tf +10 0 0 10 123.6 176.16 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 176.16 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(Definition of )Tj +/TT10 1 Tf +5.874 0 TD +(FAULTFN)Tj +/TT8 1 Tf +4.2007 0 TD +(, or argument to )Tj +/TT10 1 Tf +7.3872 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +(, i.e., the superform in which the error occurs.)Tj +-25.1956 -2.9556 TD +0.2511 Tw +(The initial value of )Tj +/TT10 1 Tf +9.5633 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.2511 Tw +[( is )]TJ +/TT10 1 Tf +1.7143 0 TD +0 Tw +(\(\(DWIMLOADFNS?\)\))Tj +/TT8 1 Tf +9.6016 0 TD +0.2511 Tw +(. )Tj +/TT10 1 Tf +1.2484 0 TD +0 Tw +(DWIMLOADFNS?)Tj +/TT8 1 Tf +7.2012 0 TD +0.2511 Tw +[( is a function for)]TJ +-37.1301 -1.2889 TD +0.0267 Tw +[(automatically loading functions from files. If )]TJ +/TT10 1 Tf +20.3961 0 TD +0 Tw +(DWIMLOADFNSFLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.0267 Tw +[( is )]TJ +/TT10 1 Tf +1.2682 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0267 Tw +[( \(its initial value\), and )]TJ +/TT10 1 Tf +10.0435 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0267 Tw +[( of the)]TJ +-42.5096 -1.2889 TD +0.0311 Tw +(form is the name of a function, and the function is contained on a file that has been noticed by the file)Tj +0 -1.2222 TD +0 Tw +(package, the function is loaded, and the computation continues.)Tj +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +49 0 obj +<< +/Length 6595 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT4 1 Tf +0.6 -3.38 TD +(DWIM Functions and Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT15 1 Tf +9 0 0 9 150 547.2 Tm +(DWIMWAIT)Tj +/TT6 1 Tf +10 0 0 10 193.2 547.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 547.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0978 Tw +(Value is the number of seconds that DWIM will wait before it assumes that you are not)Tj +0 -1.2222 TD +0 Tw +(going to respond to a question and uses the default response )Tj +/TT10 1 Tf +27.0566 0 TD +(FIXSPELLDEFAULT)Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +-36.0581 -2.0667 TD +0.0933 Tw +(DWIM operates by dismissing for 250 milliseconds, then checking to see if anything has)Tj +0 -1.2222 TD +0.0844 Tw +[(been typed. If not, it dismisses again, etc. until )]TJ +/TT10 1 Tf +21.7736 0 TD +0 Tw +(DWIMWAIT)Tj +/TT8 1 Tf +4.8008 0 TD +0.0844 Tw +[( seconds have elapsed. Thus,)]TJ +-26.5744 -1.2889 TD +0 Tw +(there will be a delay of at most 1/4 second before DWIM responds to your answer.)Tj +/TT15 1 Tf +-2.6667 -2.4822 TD +(FIXSPELLDEFAULT)Tj +/TT6 1 Tf +10 0 0 10 231 456.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 456.06 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1744 Tw +(If approval is requested for a spelling correction, and you do not respond, defaults to)Tj +0 -1.2222 TD +0.2122 Tw +(value of )Tj +/TT10 1 Tf +4.2413 0 TD +0 Tw +(FIXSPELLDEFAULT)Tj +/TT8 1 Tf +9.0015 0 TD +0.2122 Tw +(, initially )Tj +/TT10 1 Tf +4.5939 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT10 1 Tf +0.7122 0 TD +0.5089 Tw +[( FIXSPELLDEFAULT)]TJ +/TT8 1 Tf +10.1105 0 TD +0.2122 Tw +[( is rebound to )]TJ +/TT10 1 Tf +7.2048 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2122 Tw +[( when)]TJ +/TT10 1 Tf +-37.0644 -1.2889 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(ing.)Tj +/TT15 1 Tf +-6.8674 -2.5489 TD +(ADDSPELLFLG)Tj +/TT6 1 Tf +10 0 0 10 209.4 393.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 393.92 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, suppresses calls to )Tj +/TT10 1 Tf +8.9253 0 TD +(ADDSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +(. Initially )Tj +/TT10 1 Tf +4.4653 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT15 1 Tf +-24.1784 -2.5489 TD +(NOSPELLFLG)Tj +/TT6 1 Tf +10 0 0 10 204 354.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 354.38 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.991 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +(, suppresses )Tj +/TT13 1 Tf +5.7457 0 TD +0 Tw +(all)Tj +/TT8 1 Tf +0.9995 0 TD +0.0711 Tw +[( spelling correction. If some other non-)]TJ +/TT10 1 Tf +17.8332 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0711 Tw +[( value, suppresses spelling)]TJ +-27.9699 -1.2889 TD +0.0767 Tw +(correction in programs but not type-in. )Tj +/TT10 1 Tf +18.2623 0 TD +0 Tw +(NOSPELLFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.0767 Tw +[( is initially )]TJ +/TT10 1 Tf +5.1143 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0767 Tw +[(. It is rebound to )]TJ +/TT10 1 Tf +8.229 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +-39.4068 -1.2889 TD +(when compiling from a file.)Tj +/TT15 1 Tf +-2.6667 -2.4822 TD +(RUNONFLG)Tj +/TT6 1 Tf +10 0 0 10 193.2 292.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 292.24 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, suppresses run-on spelling corrections. Initially )Tj +/TT10 1 Tf +21.9966 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT15 1 Tf +-29.1838 -2.4 TD +(DWIMLOADFNSFLG)Tj +/TT10 1 Tf +8.4 0 TD +( )Tj +/TT8 1 Tf +29.8678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9599 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +(, tells )Tj +/TT10 1 Tf +2.641 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.04 Tw +[( that when it encounters a call to an undefined function contained on a file)]TJ +-6.6014 -1.2889 TD +0.0355 Tw +(that has been noticed by the file package, to simply load the function. )Tj +/TT10 1 Tf +31.5969 0 TD +0 Tw +(DWIMLOADFNSFLG)Tj +/TT8 1 Tf +-31.5969 -1.2889 TD +(is initially )Tj +/TT10 1 Tf +4.6343 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( \(see above\). )Tj +/TT15 1 Tf +-7.901 -2.5489 TD +(LPARKEY)Tj +/TT6 1 Tf +10 0 0 10 187.8 191.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 191.3 Tm +([Variable])Tj +/TT15 1 Tf +-38.2678 -1.2156 TD +(RPARKEY)Tj +/TT10 1 Tf +4.2 0 TD +( )Tj +/TT6 1 Tf +10 0 0 10 193.2009 180.36 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 180.36 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.43 Tw +[( uses the value of the variables )]TJ +/TT10 1 Tf +16.779 0 TD +0 Tw +(LPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.43 Tw +[( and )]TJ +/TT10 1 Tf +3.0529 0 TD +0 Tw +(RPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.43 Tw +[( \(initially )]TJ +/TT10 1 Tf +5.1124 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.43 Tw +[( and )]TJ +/TT10 1 Tf +3.0529 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +-39.3991 -1.2889 TD +0.3044 Tw +(respectively\) to determine the corresponding lower case character for left and right)Tj +0 -1.2222 TD +0.2833 Tw +(parentheses. )Tj +/TT10 1 Tf +6.5877 0 TD +0 Tw +(LPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2833 Tw +[( and )]TJ +/TT10 1 Tf +2.7595 0 TD +0 Tw +(RPARKEY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2833 Tw +[( can be reset for other keyboard layouts. For)]TJ +-17.7486 -1.2889 TD +0 Tw +(example, on some terminals left parenthesis is over )Tj +/TT10 1 Tf +22.8413 0 TD +(8)Tj +/TT8 1 Tf +0.6001 0 TD +(, and right parenthesis is over )Tj +/TT10 1 Tf +13.376 0 TD +(9)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT15 1 Tf +-40.0842 -2.5489 TD +(OKREEVALST)Tj +/TT6 1 Tf +10 0 0 10 204 106.62 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 106.62 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0444 Tw +(The value of )Tj +/TT10 1 Tf +5.8741 0 TD +0 Tw +(OKREEVALST)Tj +/TT8 1 Tf +6.001 0 TD +0.0444 Tw +[( is a list of functions that )]TJ +/TT10 1 Tf +11.3521 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( can safely reevaluate. If a form)]TJ +-25.6276 -1.2889 TD +0.0222 Tw +(is atomic, or )Tj +/TT10 1 Tf +5.7122 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0222 Tw +[( of the form is a member of )]TJ +/TT10 1 Tf +12.3663 0 TD +0 Tw +(OKREEVALST)Tj +/TT8 1 Tf +6.001 0 TD +0.0222 Tw +(, and each of the arguments can)Tj +-25.8797 -1.2889 TD +0.1189 Tw +[(safely be reevaluated, then the form can be safely reevaluated. For example, )]TJ +/TT10 1 Tf +35.5172 0 TD +0.2844 Tw +(\(SETQ X)Tj +-35.5172 -1.2889 TD +0.09 Tw +(\(CONS \(IPLUS Y Z\) W\)\))Tj +/TT8 1 Tf +12.9621 0 TD +0.0378 Tw +[( is safe to reevaluate because )]TJ +/TT10 1 Tf +13.1485 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5378 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +(, and )Tj +/TT10 1 Tf +2.5184 0 TD +0 Tw +(IPLUS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0378 Tw +[( are all)]TJ +-36.9681 -1.2889 TD +0 Tw +(on )Tj +/TT10 1 Tf +1.3779 0 TD +(OKREEVALST)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +ET +endstream +endobj +50 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +52 0 obj +<< +/Length 8704 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-13)Tj +/TT15 1 Tf +-39.6667 60.4667 TD +(DWIMFLG)Tj +/TT6 1 Tf +10 0 0 10 139.8 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 568.2 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(DWIMFLG)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.4211 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4211 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1711 Tw +(, all )Tj +/TT10 1 Tf +2.1743 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1711 Tw +[( operations are disabled. )]TJ +/TT10 1 Tf +12.1793 0 TD +0.4111 Tw +(\(DWIM C\))Tj +/TT8 1 Tf +5.812 0 TD +0.1711 Tw +[( and )]TJ +/TT10 1 Tf +2.5351 0 TD +0.4111 Tw +(\(DWIM T\) )Tj +/TT8 1 Tf +6.2231 0 TD +0 Tw +(set)Tj +/TT10 1 Tf +-38.7674 -1.2889 TD +(DWIMFLG)Tj +/TT8 1 Tf +4.2007 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(\(DWIM NIL\))Tj +/TT8 1 Tf +6.001 0 TD +( sets )Tj +/TT10 1 Tf +2.1528 0 TD +(DWIMFLG)Tj +/TT8 1 Tf +4.2007 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT15 1 Tf +-24.8664 -2.5489 TD +(APPROVEFLG)Tj +/TT6 1 Tf +10 0 0 10 156.0088 517.06 Tm +-0.0007 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 517.06 Tm +0 Tc +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(APPROVEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.2556 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2556 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( if )]TJ +/TT10 1 Tf +1.1351 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0056 Tw +[( should ask the user for approval before making a correction that)]TJ +-11.2478 -1.2889 TD +0 Tw +(will modify the definition of one of his functions; )Tj +/TT10 1 Tf +21.9385 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +-23.7388 -2.0667 TD +(When )Tj +/TT10 1 Tf +2.9864 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0933 Tw +[( is put into )]TJ +/TT10 1 Tf +5.3636 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0933 Tw +[( mode with )]TJ +/TT10 1 Tf +5.5818 0 TD +0.2233 Tw +(\(DWIM C\))Tj +/TT8 1 Tf +5.6242 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5933 0 TD +(APPROVEFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.0933 Tw +[( is set to )]TJ +/TT10 1 Tf +4.1892 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +(; for)Tj +/TT10 1 Tf +-38.1408 -1.2889 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +( mode, )Tj +/TT10 1 Tf +3.2686 0 TD +(APPROVEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( is set to )Tj +/TT10 1 Tf +3.8159 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT15 1 Tf +-22.3532 -2.5489 TD +(LAMBDASPLST)Tj +/TT6 1 Tf +10 0 0 10 161.4 435.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 435.72 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.07 Tw +[( uses the value of )]TJ +/TT10 1 Tf +8.2338 0 TD +0 Tw +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.07 Tw +[( as the spelling list when correcting "bad" function)]TJ +-17.2353 -1.2889 TD +0.01 Tw +[(definitions. Initially )]TJ +/TT10 1 Tf +9.2512 0 TD +0.0233 Tw +(\(LAMBDA NLAMBDA\))Tj +/TT8 1 Tf +9.6249 0 TD +0.01 Tw +[(. You may wish to add to )]TJ +/TT10 1 Tf +11.6816 0 TD +0 Tw +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.01 Tw +[( if you)]TJ +-37.1587 -1.2889 TD +0.2533 Tw +(elect to define new "function types" via an appropriate )Tj +/TT10 1 Tf +26.5998 0 TD +0 Tw +(DWIMUSERFORMS)Tj +/TT8 1 Tf +7.8013 0 TD +0.2533 Tw +[( entry. For)]TJ +-34.4011 -1.2889 TD +0 Tw +(example, the )Tj +/TT10 1 Tf +5.8862 0 TD +(QLAMBDA)Tj +/TT8 1 Tf +4.2007 0 TD +(s of SRIs QLISP are handled in this way.)Tj +/TT4 1 Tf +10 0 0 10 54 341.38 Tm +(Spelling Correction)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 338.67 m +510.01 338.67 l +S +BT +/TT8 1 Tf +9 0 0 9 78 316.72 Tm +0.0022 Tw +(The spelling corrector is given as arguments a misspelled word \(word means symbol\), a spelling list \(a)Tj +0 -1.2222 TD +0.1011 Tw +(list of words\), and a number: )Tj +/TT17 1 Tf +13.6482 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT17 1 Tf +0.6011 0 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1011 Tw +(, and )Tj +/TT17 1 Tf +2.6451 0 TD +0 Tw +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1011 Tw +[( respectively. Its task is to find that word on)]TJ +/TT17 1 Tf +-24.6956 -1.2889 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1378 Tw +[( which is closest to )]TJ +/TT17 1 Tf +9.1923 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1378 Tw +[(, in the sense described below. This word is called a )]TJ +/TT13 1 Tf +24.917 0 TD +0 Tw +(respelling)Tj +/TT8 1 Tf +3.9463 0 TD +0.1378 Tw +[( of)]TJ +/TT17 1 Tf +-44.0566 -1.2889 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1989 Tw +(. )Tj +/TT17 1 Tf +1.1478 0 TD +0 Tw +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1989 Tw +[( specifies the minimum "closeness" between )]TJ +/TT17 1 Tf +20.8286 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1989 Tw +[( and a respelling. If the spelling)]TJ +-29.7776 -1.2889 TD +0.1122 Tw +(corrector cannot find a word on )Tj +/TT17 1 Tf +14.9536 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1122 Tw +[( closer to )]TJ +/TT17 1 Tf +4.5373 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1122 Tw +[( than )]TJ +/TT17 1 Tf +2.7147 0 TD +0 Tw +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1122 Tw +(, or if it finds two or more words)Tj +-30.0069 -1.2889 TD +0.0622 Tw +(equally close, its value is )Tj +/TT10 1 Tf +11.4688 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +(, otherwise its value is the respelling. The spelling corrector can also be)Tj +-13.2691 -1.2889 TD +0.1033 Tw +(given an optional functional argument, )Tj +/TT17 1 Tf +18.0772 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +(, to be used for selecting out a subset of )Tj +/TT17 1 Tf +18.6134 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1033 Tw +(, i.e., only)Tj +-40.8913 -1.2889 TD +0 Tw +(those members of )Tj +/TT17 1 Tf +8.0815 0 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +( that satisfy )Tj +/TT17 1 Tf +5.3384 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( will be considered as possible respellings.)Tj +-17.6206 -2.9556 TD +0.18 Tw +(The exact algorithm for computing the spelling metric is described later, but briefly "closeness" is)Tj +0 -1.2222 TD +0.3844 Tw +(inversely proportional to the number of disagreements between the two words, and directly)Tj +T* +0.0489 Tw +[(proportional to the length of the longer word. For example, )]TJ +/TT10 1 Tf +27.2306 0 TD +0 Tw +(PRTTYPRNT)Tj +/TT8 1 Tf +5.4009 0 TD +0.0489 Tw +[( is "closer" to )]TJ +/TT10 1 Tf +6.1033 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +-38.7348 -1.2889 TD +(than )Tj +/TT10 1 Tf +2.3469 0 TD +(CS)Tj +/TT8 1 Tf +1.2002 0 TD +0.1067 Tw +[( is to )]TJ +/TT10 1 Tf +2.6569 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +[( even though both pairs of words have the same number of disagreements. The)]TJ +-8.6044 -1.2889 TD +0.12 Tw +(spelling corrector operates by proceeding down )Tj +/TT17 1 Tf +22.1209 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.12 Tw +(, and computing the closeness between each)Tj +-25.1214 -1.2889 TD +0.0644 Tw +(word and )Tj +/TT17 1 Tf +4.7075 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0644 Tw +[(, and keeping a list of those that are closest. Certain differences between words are)]TJ +-7.708 -1.2889 TD +0.1244 Tw +(not counted as disagreements, for example a single transposition, e.g., )Tj +/TT10 1 Tf +32.407 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1244 Tw +[( to )]TJ +/TT10 1 Tf +1.621 0 TD +0 Tw +(CNOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1244 Tw +(, or a doubled)Tj +-38.8288 -1.2889 TD +0.0178 Tw +(letter, e.g., )Tj +/TT10 1 Tf +4.8671 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( to )]TJ +/TT10 1 Tf +1.4076 0 TD +0 Tw +(CONSS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0178 Tw +[(, etc. In the event that the spelling corrector finds a word on )]TJ +/TT17 1 Tf +27.0961 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0178 Tw +[( with )]TJ +/TT13 1 Tf +2.5688 0 TD +0 Tw +(no)Tj +/TT8 1 Tf +-44.3409 -1.2889 TD +0.0833 Tw +[(disagreements, it will stop searching and return this word as the respelling. Otherwise, the spelling)]TJ +0 -1.2222 TD +0.1156 Tw +[(corrector continues through the entire spelling list. Then if it has found one and only one "closest")]TJ +T* +0.0189 Tw +[(word, it returns this word as the respelling. For example, if )]TJ +/TT17 1 Tf +26.7628 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0189 Tw +[( is )]TJ +/TT10 1 Tf +1.2526 0 TD +0 Tw +(VONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +(, the spelling corrector will)Tj +-33.4163 -1.2889 TD +0.03 Tw +(probably return )Tj +/TT10 1 Tf +7.3359 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +[( as the respelling. However, if )]TJ +/TT17 1 Tf +13.9141 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.03 Tw +[( is )]TJ +/TT10 1 Tf +1.2748 0 TD +0 Tw +(CONZ)Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +(, the spelling corrector will not be)Tj +-30.3261 -1.2889 TD +0 Tw +(able to return a respelling, since )Tj +/TT10 1 Tf +14.3345 0 TD +(CONZ)Tj +/TT8 1 Tf +2.4004 0 TD +( is equally close to both )Tj +/TT10 1 Tf +10.5581 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(. If the spelling corrector)Tj +-34.2866 -1.2889 TD +(finds an acceptable respelling, it interacts with you as described earlier.)Tj +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +55 0 obj +<< +/Length 8816 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0989 Tw +(In the special case that the misspelled word contains one or more )Tj +/TT10 1 Tf +30.1955 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0989 Tw +(s \(escape\), the spelling corrector)Tj +-30.7956 -1.2889 TD +0.0256 Tw +(searches for those words on )Tj +/TT17 1 Tf +12.6727 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0256 Tw +[( that match )]TJ +/TT17 1 Tf +5.2959 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0256 Tw +(, where a )Tj +/TT10 1 Tf +4.3457 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0256 Tw +[( can match any number of characters)]TJ +-28.9154 -1.2889 TD +0.1389 Tw +(\(including 0\), e.g., )Tj +/TT10 1 Tf +8.6188 0 TD +0 Tw +(FOO$)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( matches )]TJ +/TT10 1 Tf +4.4155 0 TD +0 Tw +(FOO1)Tj +/TT8 1 Tf +2.4004 0 TD +0.1389 Tw +[( and )]TJ +/TT10 1 Tf +2.4706 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +(, but not )Tj +/TT10 1 Tf +4.3532 0 TD +0 Tw +(NEWFOO)Tj +/TT8 1 Tf +3.6006 0 TD +0.1389 Tw +(. )Tj +/TT10 1 Tf +1.0278 0 TD +0 Tw +($FOO$)Tj +/TT8 1 Tf +3.0005 0 TD +0.1389 Tw +[( matches all three. Both)]TJ +-34.0881 -1.2889 TD +0.2822 Tw +(completion and correction may be involved, e.g. )Tj +/TT10 1 Tf +23.541 0 TD +0 Tw +(RPETTY$)Tj +/TT8 1 Tf +4.2007 0 TD +0.2822 Tw +[( will match )]TJ +/TT10 1 Tf +6.0386 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.2822 Tw +(, with one)Tj +-40.3813 -1.2889 TD +0.1578 Tw +[(mistake. The entire spelling list is always searched, and if more than one respelling is found, the)]TJ +0 -1.2222 TD +0.1233 Tw +(spelling corrector prints )Tj +/TT10 1 Tf +11.224 0 TD +0 Tw +(AMBIGUOUS)Tj +/TT8 1 Tf +5.4009 0 TD +0.1233 Tw +(, and returns )Tj +/TT10 1 Tf +6.267 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1233 Tw +[(. For example, )]TJ +/TT10 1 Tf +7.2394 0 TD +0 Tw +(CON$)Tj +/TT8 1 Tf +2.4004 0 TD +0.1233 Tw +[( would be ambiguous if)]TJ +-34.332 -1.2889 TD +0 Tw +(both )Tj +/TT10 1 Tf +2.4718 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.2144 Tw +[( and )]TJ +/TT10 1 Tf +2.6218 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.2144 Tw +[( were on the spelling list. If the spelling corrector finds one and only one)]TJ +-9.8943 -1.2889 TD +0 Tw +(respelling, it interacts with you as described earlier.)Tj +0 -2.8889 TD +0.0333 Tw +(For both spelling correction and spelling completion, regardless of whether or not you approve of the)Tj +0 -1.2222 TD +0.0033 Tw +(spelling correctors choice, the respelling is moved to the front of )Tj +/TT17 1 Tf +28.9039 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0033 Tw +(. Since many respellings are of)Tj +-31.9043 -1.2889 TD +0.2355 Tw +(the type with no disagreements, this procedure has the effect of considerably reducing the time)Tj +0 -1.2222 TD +0 Tw +(required to correct the spelling of frequently misspelled words.)Tj +/TT4 1 Tf +10 0 0 10 126 402 Tm +(Synonyms)Tj +/TT8 1 Tf +9 0 0 9 126 378.34 Tm +0.2044 Tw +[(Spelling lists also provide a way of defining synonyms for a particular context. If a dotted pair)]TJ +T* +0.1289 Tw +(appears on a spelling list \(instead of just an atom\), )Tj +/TT10 1 Tf +23.6956 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1289 Tw +[( is interpreted as the correct spelling of the)]TJ +-25.4959 -1.2889 TD +0.1511 Tw +(misspelled word, and )Tj +/TT10 1 Tf +10.3054 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1511 Tw +[( as the antecedent for that word. If )]TJ +/TT10 1 Tf +17.0431 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1511 Tw +[( is )]TJ +/TT13 1 Tf +1.5171 0 TD +0 Tw +(identical)Tj +/TT8 1 Tf +3.4629 0 TD +0.1511 Tw +[( with the misspelled)]TJ +-35.929 -1.2889 TD +0.2844 Tw +[(word, the antecedent is returned without any interaction or approval being necessary. If the)]TJ +0 -1.2222 TD +0.0478 Tw +(misspelled word )Tj +/TT13 1 Tf +7.7547 0 TD +0 Tw +(corrects)Tj +/TT8 1 Tf +3.1479 0 TD +0.0478 Tw +[( to )]TJ +/TT10 1 Tf +1.4676 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0478 Tw +[( of the dotted pair, the usual interaction and approval will take place,)]TJ +-14.1706 -1.2889 TD +0.0656 Tw +(and then the antecedent, i.e., )Tj +/TT10 1 Tf +13.2052 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( of the dotted pair, is returned. For example,you could make )]TJ +/TT10 1 Tf +27.9376 0 TD +0 Tw +(IFLG)Tj +/TT8 1 Tf +-42.9431 -1.2889 TD +0.0489 Tw +(synonymous with )Tj +/TT10 1 Tf +8.3326 0 TD +0 Tw +(CLISPIFTRANFLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.0489 Tw +[( by adding )]TJ +/TT10 1 Tf +5.1569 0 TD +0.1178 Tw +(\(IFLG . CLISPIFTRANFLG\))Tj +/TT8 1 Tf +14.0378 0 TD +0.0489 Tw +[( to )]TJ +/TT10 1 Tf +1.4698 0 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.0489 Tw +(, the)Tj +-43.3996 -1.2889 TD +0.0278 Tw +(spelling list for unbound atoms. Similarly, you could make )Tj +/TT10 1 Tf +26.5205 0 TD +0 Tw +(OTHERWISE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0278 Tw +[( mean the same as )]TJ +/TT10 1 Tf +8.4294 0 TD +0 Tw +(ELSEIF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( by)]TJ +-43.9514 -1.2889 TD +0 Tw +(adding )Tj +/TT10 1 Tf +3.4442 0 TD +0.1033 Tw +(\(OTHERWISE . ELSEIF\))Tj +/TT8 1 Tf +12.2086 0 TD +0.0433 Tw +[( to )]TJ +/TT10 1 Tf +1.4587 0 TD +0 Tw +(CLISPIFWORDSPLST)Tj +/TT8 1 Tf +9.6016 0 TD +0.0433 Tw +(, or make )Tj +/TT10 1 Tf +4.4889 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +[( be synonymous with )]TJ +/TT10 1 Tf +9.9404 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +-41.7425 -1.2889 TD +0.1056 Tw +(by adding )Tj +/TT10 1 Tf +4.9714 0 TD +0.2522 Tw +(\(L . LAMBDA\))Tj +/TT8 1 Tf +7.7056 0 TD +0.1056 Tw +[( to )]TJ +/TT10 1 Tf +1.5832 0 TD +0 Tw +(LAMBDASPLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.1056 Tw +[(. You can also use )]TJ +/TT10 1 Tf +8.9917 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.1056 Tw +[( as a variable without confusion,)]TJ +-30.4531 -1.2889 TD +0 Tw +(since the association of )Tj +/TT10 1 Tf +10.3594 0 TD +(L)Tj +/TT8 1 Tf +0.6001 0 TD +( with )Tj +/TT10 1 Tf +2.5332 0 TD +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +( occurs only in the appropriate context.)Tj +/TT4 1 Tf +10 0 0 10 126 235.6 Tm +(Spelling Lists)Tj +/TT8 1 Tf +9 0 0 9 126 211.94 Tm +0.1833 Tw +(Any list of atoms can be used as a spelling list, e.g., )Tj +/TT10 1 Tf +24.9866 0 TD +0 Tw +(BROKENFNS)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.6833 0 TD +(FILELST)Tj +/TT8 1 Tf +4.2007 0 TD +0.1833 Tw +[(, etc. Various system)]TJ +-35.2715 -1.2889 TD +0.1633 Tw +(packages have their own spellings lists, e.g., )Tj +/TT10 1 Tf +20.8445 0 TD +0 Tw +(LISPXCOMS)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.6633 0 TD +(CLISPFORWORDSPLST)Tj +/TT8 1 Tf +10.2017 0 TD +(, )Tj +/TT10 1 Tf +0.6633 0 TD +(EDITCOMSA)Tj +/TT8 1 Tf +5.4009 0 TD +0.1633 Tw +(, etc.)Tj +-43.1746 -1.2889 TD +0.0211 Tw +(These are documented under their corresponding sections, and are also indexed under "spelling lists.")Tj +0 -1.2222 TD +0.1011 Tw +(In addition to these spelling lists, the system maintains, i.e., automatically adds to, and occasionally)Tj +T* +0.0889 Tw +(prunes, four lists used solely for spelling correction: )Tj +/TT10 1 Tf +23.8683 0 TD +0 Tw +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5889 0 TD +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5889 0 TD +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.0889 Tw +(, and)Tj +/TT10 1 Tf +-43.049 -1.2889 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0367 Tw +(. These spelling lists are maintained )Tj +/TT13 1 Tf +16.2366 0 TD +0 Tw +(only)Tj +/TT8 1 Tf +1.7778 0 TD +0.0367 Tw +[( when )]TJ +/TT10 1 Tf +3.0504 0 TD +0 Tw +(ADDSPELLFLG)Tj +/TT8 1 Tf +6.6011 0 TD +0.0367 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3311 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +/TT10 1 Tf +0.5367 0 TD +(ADDSPELLFLG)Tj +/TT8 1 Tf +-38.7349 -1.2889 TD +(is initially )Tj +/TT10 1 Tf +4.6343 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT15 1 Tf +-2.5677 -2.5489 TD +(SPELLINGS1)Tj +/TT6 1 Tf +10 0 0 10 204 120.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 120.6 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +0.0811 Tw +[( is a list of functions used for spelling correction when an input is typed in)]TJ +-6.001 -1.2889 TD +0.3989 Tw +(apply format, and the function is undefined, e.g., )Tj +/TT10 1 Tf +25.0813 0 TD +0 Tw +(EDTIF\(FOO\))Tj +/TT8 1 Tf +6.001 0 TD +0.3989 Tw +(. )Tj +/TT10 1 Tf +1.5478 0 TD +0 Tw +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +0.3989 Tw +[( is)]TJ +-38.631 -1.2889 TD +0.0344 Tw +(initialized to contain )Tj +/TT10 1 Tf +9.4495 0 TD +0 Tw +(DEFINEQ)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(MAKEFILE)Tj +/TT8 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(TCOMPL)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(LOAD)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +(, etc. Whenever)Tj +/TT10 1 Tf +-33.1252 -1.2889 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0722 Tw +[( is given an input in apply format, i.e., a function and arguments, the name of the)]TJ +-3.0005 -1.2889 TD +0 Tw +(function is added to )Tj +/TT10 1 Tf +9.1055 0 TD +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +( if the function has a definition.)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +58 0 obj +<< +/Length 9768 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-15)Tj +/TT8 1 Tf +-37 60.6156 TD +0.0144 Tw +(For example, typing )Tj +/TT10 1 Tf +9.202 0 TD +0 Tw +(CALLS\(EDITF\))Tj +/TT8 1 Tf +7.2012 0 TD +0.0144 Tw +[( will cause )]TJ +/TT10 1 Tf +4.9501 0 TD +0 Tw +(CALLS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0144 Tw +[( to be added to )]TJ +/TT10 1 Tf +6.9101 0 TD +0 Tw +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +0.0144 Tw +(. Thus)Tj +-37.2649 -1.2889 TD +0.3467 Tw +(if you typed )Tj +/TT10 1 Tf +6.6923 0 TD +0 Tw +(CALLS\(EDITF\))Tj +/TT8 1 Tf +7.2012 0 TD +0.3467 Tw +[( and later typed )]TJ +/TT10 1 Tf +8.644 0 TD +0 Tw +(CALLLS\(EDITV\))Tj +/TT8 1 Tf +7.8013 0 TD +0.3467 Tw +(, since )Tj +/TT10 1 Tf +3.6631 0 TD +0 Tw +(SPELLINGS1)Tj +/TT8 1 Tf +-34.0018 -1.2889 TD +(would then contain )Tj +/TT10 1 Tf +8.875 0 TD +(CALLS)Tj +/TT8 1 Tf +3.0005 0 TD +(, DWIM would be successful in correcting )Tj +/TT10 1 Tf +18.773 0 TD +(CALLLS)Tj +/TT8 1 Tf +3.6006 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(CALLS)Tj +/TT8 1 Tf +3.0005 0 TD +(. )Tj +/TT15 1 Tf +-41.2883 -2.5489 TD +(SPELLINGS2)Tj +/TT6 1 Tf +10 0 0 10 156 523.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 523.4 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +0.1978 Tw +[( is a list of functions used for spelling correction for all other undefined)]TJ +-6.001 -1.2889 TD +0.1567 Tw +(functions. It is initialized to contain functions such as )Tj +/TT10 1 Tf +25.1224 0 TD +0 Tw +(ADD1)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6567 0 TD +(APPEND)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6567 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6567 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6567 0 TD +(GO)Tj +/TT8 1 Tf +1.2002 0 TD +(,)Tj +/TT10 1 Tf +-39.751 -1.2889 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(RETURN)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0767 Tw +(, etc. Whenever )Tj +/TT10 1 Tf +7.2901 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0767 Tw +[( is given a non-atomic)]TJ +-29.9766 -1.2889 TD +0.0522 Tw +(form, the name of the function is added to )Tj +/TT10 1 Tf +19.3294 0 TD +0 Tw +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +0.0522 Tw +(. For example, typing )Tj +/TT10 1 Tf +9.8676 0 TD +0 Tw +(\(RETFROM)Tj +-35.1979 -1.2889 TD +0.0356 Tw +(\(STKPOS \(QUOTE FOO\) 2\)\))Tj +/TT8 1 Tf +13.9089 0 TD +0.0144 Tw +[( to a break would add )]TJ +/TT10 1 Tf +10.0486 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.0144 Tw +[( to )]TJ +/TT10 1 Tf +1.401 0 TD +0 Tw +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +0.0144 Tw +(. Function)Tj +-35.5601 -1.2889 TD +0.3244 Tw +(names are also added to )Tj +/TT10 1 Tf +12.5583 0 TD +0 Tw +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +0.3244 Tw +[( by )]TJ +/TT10 1 Tf +2.2583 0 TD +0 Tw +(DEFINE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.8244 0 TD +(DEFINEQ)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.8244 0 TD +(LOAD)Tj +/TT8 1 Tf +2.4004 0 TD +0.3244 Tw +[( \(when loading)]TJ +-32.668 -1.2889 TD +0 Tw +(compiled code\), )Tj +/TT10 1 Tf +7.3081 0 TD +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT15 1 Tf +-27.9201 -2.5489 TD +(SPELLINGS3)Tj +/TT6 1 Tf +10 0 0 10 156 414.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 414.26 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.3022 Tw +[( is a list of words used for spelling correction on all unbound atoms.)]TJ +/TT10 1 Tf +-6.001 -1.2889 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.8233 Tw +[( is initialized to )]TJ +/TT10 1 Tf +10.3334 0 TD +0 Tw +(EDITMACROS)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +1.3233 0 TD +(BREAKMACROS)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +1.3233 0 TD +(BROKENFNS)Tj +/TT8 1 Tf +5.4009 0 TD +0.8233 Tw +(, and)Tj +/TT10 1 Tf +-36.9839 -1.2889 TD +0 Tw +(ADVISEDFNS)Tj +/TT8 1 Tf +6.001 0 TD +0.16 Tw +(. Whenever )Tj +/TT10 1 Tf +5.631 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.16 Tw +[( is given an atom to evaluate, the name of the atom is)]TJ +-14.6325 -1.2889 TD +0.1489 Tw +(added to )Tj +/TT10 1 Tf +4.4814 0 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.1489 Tw +[( if the atom has a value. Atoms are also added to )]TJ +/TT10 1 Tf +23.5215 0 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +-34.0039 -1.2889 TD +0.0867 Tw +(whenever they are edited by )Tj +/TT10 1 Tf +13.302 0 TD +0 Tw +(EDITV)Tj +/TT8 1 Tf +3.0005 0 TD +0.0867 Tw +(, and whenever they are set via )Tj +/TT10 1 Tf +14.5969 0 TD +0 Tw +(RPAQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0867 Tw +[( or )]TJ +/TT10 1 Tf +1.6143 0 TD +0 Tw +(RPAQQ)Tj +/TT8 1 Tf +3.0005 0 TD +0.0867 Tw +(. For)Tj +-37.9145 -1.2889 TD +0.3967 Tw +(example, when a file is loaded, all of the variables set in the file are added to)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +(. Atoms are also added to )Tj +/TT10 1 Tf +11.6049 0 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +[( when they are set by a )]TJ +/TT10 1 Tf +10.4762 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0133 Tw +[( input,)]TJ +-37.0835 -1.2889 TD +0.0211 Tw +(e.g., typing )Tj +/TT10 1 Tf +5.24 0 TD +0.0522 Tw +(\(SETQ FOO \(REVERSE \(SETQ FIE ...\)\)\))Tj +/TT8 1 Tf +21.2645 0 TD +0.0211 Tw +[( will add both )]TJ +/TT10 1 Tf +6.5205 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0211 Tw +[( and )]TJ +/TT10 1 Tf +2.2351 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0211 Tw +[( to)]TJ +/TT10 1 Tf +-38.8607 -1.2889 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT15 1 Tf +-8.6676 -2.5489 TD +(USERWORDS)Tj +/TT6 1 Tf +10 0 0 10 150.6 282.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 282.52 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0311 Tw +[( is a list containing both functions and variables that you have )]TJ +/TT13 1 Tf +28.0149 0 TD +0 Tw +(referred)Tj +/TT8 1 Tf +3.1128 0 TD +0.0311 Tw +[( to, e.g.,)]TJ +-36.5286 -1.2889 TD +0.4433 Tw +(by breaking or editing. )Tj +/TT10 1 Tf +12.1225 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.4433 Tw +[( is used for spelling correction by )]TJ +/TT10 1 Tf +18.0311 0 TD +0 Tw +(ARGLIST)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +/TT10 1 Tf +-39.7551 -1.2889 TD +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.7022 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.7022 0 TD +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.7022 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.7022 0 TD +(ADVISE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2022 Tw +(, etc. )Tj +/TT10 1 Tf +2.6535 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.2022 Tw +[( is initially )]TJ +/TT10 1 Tf +5.4909 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-39.758 -1.2889 TD +0.1489 Tw +(Function names are added to it by )Tj +/TT10 1 Tf +16.3743 0 TD +0 Tw +(DEFINE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6489 0 TD +(DEFINEQ,)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.3989 0 TD +(LOAD)Tj +/TT8 1 Tf +2.4004 0 TD +0.1489 Tw +(, \(when loading compiled)Tj +-28.2238 -1.2889 TD +0.6178 Tw +(code, or loading exprs to property lists\) )Tj +/TT10 1 Tf +21.9973 0 TD +0 Tw +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +1.1178 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +1.1178 0 TD +(EDITV)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +1.1178 0 TD +(EDITP)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +/TT10 1 Tf +-39.753 -1.2889 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0267 Tw +(, etc. Variable names are added to )Tj +/TT10 1 Tf +15.3424 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0267 Tw +[( at the same time as they are)]TJ +-27.3444 -1.2889 TD +0.0456 Tw +(added to )Tj +/TT10 1 Tf +4.2747 0 TD +0 Tw +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.0456 Tw +(. In addition, the variable )Tj +/TT10 1 Tf +11.616 0 TD +0 Tw +(LASTWORD)Tj +/TT8 1 Tf +4.8008 0 TD +0.0456 Tw +[( is always set to the last word)]TJ +-26.6924 -1.2889 TD +0.1389 Tw +(added to )Tj +/TT10 1 Tf +4.4614 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.1389 Tw +(, i.e., the last function or variable referred to by the user, and the)Tj +-9.8623 -1.2889 TD +0.0556 Tw +(respelling of )Tj +/TT10 1 Tf +5.8792 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( is defined to be the value of )]TJ +/TT10 1 Tf +13.1534 0 TD +0 Tw +(LASTWORD)Tj +/TT8 1 Tf +4.8008 0 TD +0.0556 Tw +(. Thus, if you had just defined a)Tj +-25.6337 -1.2889 TD +0 Tw +(function, you can then prettyprint it by typing )Tj +/TT10 1 Tf +20.6753 0 TD +(PP\(\))Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-28.409 -2.9556 TD +0.0711 Tw +(Each of the above four spelling lists are divided into two sections separated by a special marker \(the)Tj +0 -1.2222 TD +0.2033 Tw +(value of the variable )Tj +/TT10 1 Tf +10.0917 0 TD +0 Tw +(SPELLSTR1)Tj +/TT8 1 Tf +5.4009 0 TD +0.2033 Tw +[(\). The first section contains the "permanent" words; the second)]TJ +-15.4925 -1.2889 TD +0.0311 Tw +[(section contains the temporary words. New words are added to the corresponding spelling list at the)]TJ +0 -1.2222 TD +0.0133 Tw +(front of its temporary section \(except that functions added to )Tj +/TT10 1 Tf +27.2354 0 TD +0 Tw +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +[( or )]TJ +/TT10 1 Tf +1.4676 0 TD +0 Tw +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +[( by )]TJ +/TT10 1 Tf +1.636 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +-42.341 -1.2889 TD +0.0222 Tw +(are always added to the end of the permanent section. If the word is already in the temporary section,)Tj +0 -1.2222 TD +0.0089 Tw +(it is moved to the front of that section; if the word is in the permanent section, no action is taken. If the)Tj +T* +0.2811 Tw +(length of the temporary section then exceeds a specified number, the last \(oldest\) word in the)Tj +T* +0.0567 Tw +(temporary section is forgotten, i.e., deleted. This procedure prevents the spelling lists from becoming)Tj +T* +0.0578 Tw +(cluttered with unimportant words that are no longer being used, and thereby slowing down spelling)Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +61 0 obj +<< +/Length 5613 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.1033 Tw +(correction time. Since the spelling corrector usually moves each word selected as a respelling to the)Tj +0 -1.2222 TD +0.0844 Tw +(front of its spelling list, the word is thereby moved into the permanent section. Thus once a word is)Tj +T* +0 Tw +(misspelled and corrected, it is considered important and will never be forgotten.)Tj +0 -2.8889 TD +0.0222 Tw +(The spelling correction algorithm will not alter a spelling list unless it contains the special marker \(the)Tj +0 -1.2222 TD +0 Tw +(value of )Tj +/TT10 1 Tf +3.8169 0 TD +(SPELLSTR1)Tj +/TT8 1 Tf +5.4009 0 TD +(\). This provides a way to ensure that a spelling list will not be altered. )Tj +/TT15 1 Tf +-6.5511 -2.5489 TD +(#SPELLINGS1)Tj +/TT6 1 Tf +10 0 0 10 209.4 487.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 487.6 Tm +([Variable])Tj +/TT15 1 Tf +-38.2678 -1.2156 TD +(#SPELLINGS2)Tj +/TT6 1 Tf +10 0 0 10 209.4 476.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 476.66 Tm +([Variable])Tj +/TT15 1 Tf +-38.2678 -1.2156 TD +(#SPELLINGS3)Tj +/TT6 1 Tf +10 0 0 10 209.4 465.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 465.72 Tm +([Variable])Tj +/TT15 1 Tf +-38.2678 -1.2156 TD +(#USERWORDS)Tj +/TT6 1 Tf +10 0 0 10 204 454.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 454.78 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.5433 Tw +(The maximum length of the temporary section for )Tj +/TT10 1 Tf +26.7085 0 TD +0 Tw +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +1.0433 0 TD +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +(,)Tj +/TT10 1 Tf +-39.7538 -1.2889 TD +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +0.1711 Tw +[( and )]TJ +/TT10 1 Tf +2.5351 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.1711 Tw +[( is given by the value of )]TJ +/TT10 1 Tf +11.9492 0 TD +0 Tw +(#SPELLINGS1)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.6711 0 TD +(#SPELLINGS2)Tj +/TT8 1 Tf +6.6011 0 TD +(,)Tj +/TT10 1 Tf +-39.7595 -1.2889 TD +(#SPELLINGS3)Tj +/TT8 1 Tf +6.6011 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(#USERWORDS)Tj +/TT8 1 Tf +6.001 0 TD +(, initialized to 30, 30, 30, and 60 respectively.)Tj +-15.0449 -2.0667 TD +(You can alter these values to modify the performance behavior of spelling correction. )Tj +/TT4 1 Tf +10 0 0 10 126 369.04 Tm +(Generators for Spelling Correction)Tj +/TT8 1 Tf +9 0 0 9 126 345.38 Tm +0.0567 Tw +(For some applications, it is more convenient to )Tj +/TT13 1 Tf +21.3117 0 TD +0 Tw +(generate)Tj +/TT8 1 Tf +3.3896 0 TD +0.0567 Tw +[( candidates for a respelling one by one, rather)]TJ +-24.7014 -1.2222 TD +0.1811 Tw +(than construct a complete list of all possible candidates, e.g., spelling correction involving a large)Tj +T* +0.0278 Tw +[(directory of files, or a natural language data base. For these purposes, )]TJ +/TT17 1 Tf +31.8371 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0278 Tw +[( can be an array \(of any)]TJ +-34.8376 -1.2889 TD +0.0667 Tw +[(size\). The first element of this array is the generator function, which is called with the array itself as)]TJ +0 -1.2222 TD +0.08 Tw +[(its argument. Thus the function can use the remainder of the array to store "state" information, e.g.,)]TJ +T* +0.0167 Tw +[(the last position on a file, a pointer into a data structure, etc. The value returned by the function is the)]TJ +T* +0.0411 Tw +[(next candidate for respelling. If )]TJ +/TT10 1 Tf +14.5767 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[( is returned, the spelling "list" is considered to be exhausted, and)]TJ +-16.377 -1.2889 TD +0.3433 Tw +[(the closest match is returned. If a candidate is found with no disagreements, it is returned)]TJ +0 -1.2222 TD +0 Tw +(immediately without waiting for the "list" to exhaust.)Tj +/TT17 1 Tf +0 -2.8889 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0689 Tw +[( can also be a generator, i.e. the value of the function )]TJ +/TT10 1 Tf +24.2222 0 TD +0 Tw +(GENERATOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0689 Tw +[( \(Chapter 11\). The generator)]TJ +/TT17 1 Tf +-32.6235 -1.2889 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1656 Tw +[( will be started up whenever the spelling corrector needs the next candidate, and it should)]TJ +-3.0005 -1.2889 TD +0.0678 Tw +(return candidates via the function )Tj +/TT10 1 Tf +15.5869 0 TD +0 Tw +(PRODUCE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0678 Tw +(. For example, the following could be used as a "spelling)Tj +-19.7876 -1.2889 TD +0 Tw +(list" which effectively contains all functions in the system:)Tj +/TT10 1 Tf +5.3333 -2.8222 TD +([GENERATOR)Tj +4 -1 TD +0.15 Tw +(\(MAPATOMS \(FUNCTION \(LAMBDA \(X\) \(if \(GETD X\) then \(PRODUCE)Tj +-4 -1 TD +0 Tw +(X])Tj +/TT4 1 Tf +10 0 0 10 126 126.04 Tm +(Spelling Corrector Algorithm)Tj +/TT8 1 Tf +9 0 0 9 126 102.38 Tm +0.1189 Tw +(The basic philosophy of )Tj +/TT10 1 Tf +11.2602 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1189 Tw +[( spelling correction is to count the number of disagreements between)]TJ +-13.6606 -1.2889 TD +0.0256 Tw +(two words, and use this number divided by the length of the longer of the two words as a measure of)Tj +0 -1.2222 TD +0.0878 Tw +[(their relative disagreement. One minus this number is then the relative agreement or closeness. For)]TJ +T* +0 Tw +(example, )Tj +/TT10 1 Tf +4.4324 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1833 Tw +[( and )]TJ +/TT10 1 Tf +2.5595 0 TD +0 Tw +(CONX)Tj +/TT8 1 Tf +2.4004 0 TD +0.1833 Tw +[( differ only in their last character. Such substitution errors count as one)]TJ +-11.7927 -1.2889 TD +0.0244 Tw +(disagreement, so that the two words are in 75% agreement. Most calls to the spelling corrector specify)Tj +0 -1.2222 TD +0.0633 Tw +(a relative agreement of 70, so that a single substitution error is permitted in words of four characters)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +64 0 obj +<< +/Length 8708 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-17)Tj +/TT8 1 Tf +-42.3333 60.6156 TD +0.0289 Tw +[(or longer. However, spelling correction on shorter words is possible since certain types of differences)]TJ +0 -1.2222 TD +0.1267 Tw +[(such as single transpositions are not counted as disagreements. For example, )]TJ +/TT10 1 Tf +35.895 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +0.1267 Tw +[( and )]TJ +/TT10 1 Tf +2.4462 0 TD +0 Tw +(NAD)Tj +/TT8 1 Tf +1.8003 0 TD +0.1267 Tw +[( have a)]TJ +-41.9418 -1.2889 TD +0.0478 Tw +(relative agreement of 100. Calls to the spelling corrector from DWIM use the value of )Tj +/TT10 1 Tf +38.4833 0 TD +0 Tw +(FIXSPELLREL)Tj +/TT8 1 Tf +6.6011 0 TD +(,)Tj +-45.0844 -1.2889 TD +0.0789 Tw +(which is initially 70. Note that by setting )Tj +/TT10 1 Tf +18.7586 0 TD +0 Tw +(FIXSPELLREL)Tj +/TT8 1 Tf +6.6011 0 TD +0.0789 Tw +[( to 100, only spelling corrections with "zero")]TJ +-25.3596 -1.2889 TD +0 Tw +(mistakes, will be considered, e.g., transpositions, double characters, etc.)Tj +0 -2.8889 TD +0.2733 Tw +(The central function of the spelling corrector is )Tj +/TT10 1 Tf +23.0504 0 TD +0 Tw +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +0.2733 Tw +(. )Tj +/TT10 1 Tf +1.2967 0 TD +0 Tw +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +0.2733 Tw +[( takes as arguments: a word, a)]TJ +-30.3481 -1.2889 TD +0.2689 Tw +(minimum relative agreement, a spelling list, and an optional functional argument, )Tj +/TT17 1 Tf +39.5061 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT17 1 Tf +0.7689 0 TD +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +/TT17 1 Tf +-45.0758 -1.2889 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +(, and )Tj +/TT17 1 Tf +2.4429 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( respectively.)Tj +/TT10 1 Tf +-6.6436 -2.9556 TD +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +0.1033 Tw +[( proceeds down )]TJ +/TT17 1 Tf +7.6113 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1033 Tw +[( examining each word. Words not satisfying )]TJ +/TT17 1 Tf +20.507 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +[( \(if )]TJ +/TT17 1 Tf +1.6637 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +[( is non-)]TJ +/TT10 1 Tf +3.4645 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1033 Tw +(\), or)Tj +-43.4481 -1.2889 TD +0.0944 Tw +(those obviously too long or too short to be sufficiently close to )Tj +/TT17 1 Tf +28.8033 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0944 Tw +[( are immediately rejected. For)]TJ +-31.8037 -1.2889 TD +0 Tw +(example, if )Tj +/TT17 1 Tf +5.123 0 TD +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(70)Tj +/TT8 1 Tf +1.2002 0 TD +(, and )Tj +/TT17 1 Tf +2.4429 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +( is 5 characters long, words longer than 7 characters will be rejected.)Tj +-14.667 -2.9556 TD +0.0467 Tw +(Special treatment is necessary for words shorter than )Tj +/TT17 1 Tf +24.0188 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0467 Tw +(, since doubled letters are not counted as)Tj +-27.0193 -1.2889 TD +0 Tw +(disagreements. For example, )Tj +/TT10 1 Tf +12.9289 0 TD +(CONNSSS)Tj +/TT8 1 Tf +4.2007 0 TD +( and )Tj +/TT10 1 Tf +2.1949 0 TD +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +( have a relative agreement of 100. )Tj +/TT10 1 Tf +15.0163 0 TD +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +( handles this)Tj +-39.7416 -1.2889 TD +0.0478 Tw +(by counting the number of doubled characters in )Tj +/TT17 1 Tf +22.2387 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0478 Tw +[( before it begins scanning )]TJ +/TT17 1 Tf +11.7374 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0478 Tw +(, and taking)Tj +-39.9771 -1.2889 TD +0 Tw +(this into account when deciding whether to reject shorter words.)Tj +0 -2.8889 TD +(If )Tj +/TT17 1 Tf +0.981 0 TD +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +(, the current word on )Tj +/TT17 1 Tf +9.9306 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +(, is not rejected, )Tj +/TT10 1 Tf +7.3602 0 TD +0 Tw +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +[( computes the number of disagreements)]TJ +-27.2732 -1.2889 TD +0 Tw +(between it and )Tj +/TT17 1 Tf +6.7925 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +( by calling a subfunction, )Tj +/TT10 1 Tf +11.3516 0 TD +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-23.5449 -2.9556 TD +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0167 Tw +[( operates by scanning both words from left to right one character at a time. )]TJ +/TT10 1 Tf +33.4727 0 TD +0 Tw +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0167 Tw +[( operates on the)]TJ +-38.2734 -1.2889 TD +0.0578 Tw +(list of character codes for each word. This list is computed by )Tj +/TT10 1 Tf +27.9458 0 TD +0 Tw +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +0.0578 Tw +[( before calling )]TJ +/TT10 1 Tf +6.6636 0 TD +0 Tw +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0578 Tw +(. Characters)Tj +-40.0102 -1.2889 TD +0.01 Tw +(are considered to agree if they are the same characters or appear on the same key \(i.e., a shift mistake\).)Tj +0 -1.2222 TD +0.1011 Tw +(The variable )Tj +/TT10 1 Tf +5.9503 0 TD +0 Tw +(SPELLCASEARRAY)Tj +/TT8 1 Tf +8.4014 0 TD +0.1011 Tw +[( is a )]TJ +/TT10 1 Tf +2.2682 0 TD +0 Tw +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.1011 Tw +[( which is used to determine equivalence classes for)]TJ +-22.0207 -1.2889 TD +0.0733 Tw +(this purpose. It is initialized to equivalence lowercase and upper case letters, as well as the standard)Tj +0 -1.2222 TD +0 Tw +(key transitions: for example, )Tj +/TT10 1 Tf +12.8013 0 TD +(1)Tj +/TT8 1 Tf +0.6001 0 TD +( with )Tj +/TT10 1 Tf +2.5332 0 TD +(!)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(3)Tj +/TT8 1 Tf +0.6001 0 TD +( with )Tj +/TT10 1 Tf +2.5332 0 TD +(#)Tj +/TT8 1 Tf +0.6001 0 TD +(, etc.)Tj +-20.7681 -2.9556 TD +0.1078 Tw +(If the first character in )Tj +/TT17 1 Tf +10.5531 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1078 Tw +[( and )]TJ +/TT17 1 Tf +2.4084 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1078 Tw +[( do )]TJ +/TT13 1 Tf +1.8723 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1078 Tw +[( agree, )]TJ +/TT10 1 Tf +3.3747 0 TD +0 Tw +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( checks to see if either character is the)]TJ +-27.9429 -1.2889 TD +0.4633 Tw +(same as one previously encountered, and not accounted-for at that time. \(In other words,)Tj +0 -1.2222 TD +0.2744 Tw +(transpositions are not handled by lookahead, but by )Tj +/TT13 1 Tf +25.4993 0 TD +0 Tw +(lookback)Tj +/TT8 1 Tf +3.3672 0 TD +0.2744 Tw +(.\) A displacement of two or fewer)Tj +-28.8665 -1.2222 TD +0.1644 Tw +(positions is counted as a tranposition; a displacement by more than two positions is counted as a)Tj +T* +0.0878 Tw +(disagreement.In either case, both characters are now considered as accounted for and are discarded,)Tj +T* +0 Tw +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +(ing continues.)Tj +-4.3433 -2.9556 TD +0.3889 Tw +(If the first character in )Tj +/TT17 1 Tf +11.9586 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.3889 Tw +[( and )]TJ +/TT17 1 Tf +2.9706 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.3889 Tw +[( do not agree, and neither agree with previously)]TJ +-20.9302 -1.2889 TD +0.1411 Tw +(unaccounted-for characters, and )Tj +/TT17 1 Tf +14.9316 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1411 Tw +[( has more characters remaining than )]TJ +/TT17 1 Tf +17.1933 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6411 0 TD +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1411 Tw +[( removes)]TJ +-41.1675 -1.2889 TD +0.0544 Tw +(and saves the first character of )Tj +/TT17 1 Tf +14.0112 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0544 Tw +(, and continues by comparing the rest of )Tj +/TT17 1 Tf +18.4526 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0544 Tw +[( with )]TJ +/TT17 1 Tf +2.6421 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0544 Tw +[( as)]TJ +-44.1074 -1.2889 TD +0.0767 Tw +(described above. If )Tj +/TT17 1 Tf +8.8296 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0767 Tw +[( has the same or fewer characters remaining than )]TJ +/TT17 1 Tf +22.6177 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0767 Tw +(, the procedure is)Tj +-37.4483 -1.2889 TD +0.0022 Tw +(the same except that the character is removed from )Tj +/TT17 1 Tf +22.8037 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0022 Tw +(. In this case, a special check is first made to)Tj +-25.8042 -1.2889 TD +0.0144 Tw +(see if that character is equal to the )Tj +/TT13 1 Tf +15.328 0 TD +0 Tw +(previous)Tj +/TT8 1 Tf +3.4453 0 TD +0.0144 Tw +[( character in )]TJ +/TT17 1 Tf +5.7313 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0144 Tw +(, or to the )Tj +/TT13 1 Tf +4.508 0 TD +0 Tw +(next)Tj +/TT8 1 Tf +1.7783 0 TD +0.0144 Tw +[( character in )]TJ +/TT17 1 Tf +5.7313 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0144 Tw +(, i.e., a)Tj +-42.5232 -1.2889 TD +0.2022 Tw +(double character typo, and if so, the character is considered accounted-for, and not counted as a)Tj +0 -1.2222 TD +0.2233 Tw +(disagreement. In this case, the "length" of )Tj +/TT17 1 Tf +20.0316 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.2233 Tw +[( is also decremented. Otherwise making )]TJ +/TT17 1 Tf +19.2975 0 TD +0 Tw +(XWORD)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +67 0 obj +<< +/Length 6979 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2522 Tw +(sufficiently long by adding double characters would make it be arbitrarily close to )Tj +/TT17 1 Tf +39.7906 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.2522 Tw +(, e.g.,)Tj +/TT10 1 Tf +-42.7911 -1.2889 TD +0 Tw +(XXXXXX)Tj +/TT8 1 Tf +3.6006 0 TD +( would correct to )Tj +/TT10 1 Tf +7.7856 0 TD +(PP)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-12.5864 -2.9556 TD +(When )Tj +/TT10 1 Tf +2.9686 0 TD +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0756 Tw +[( has finished processing both )]TJ +/TT17 1 Tf +13.4754 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0756 Tw +[( and )]TJ +/TT17 1 Tf +2.344 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0756 Tw +[( in this fashion, the value of )]TJ +/TT10 1 Tf +12.9869 0 TD +0 Tw +(SKOR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0756 Tw +[( is the)]TJ +-42.5767 -1.2889 TD +0.32 Tw +(number of unaccounted-for characters, plus the number of disagreements, plus the number of)Tj +0 -1.2222 TD +0 Tw +(tranpositions, with two qualifications: )Tj +1.9167 -2 TD +0.1467 Tw +[(1.)-666.7(If both )]TJ +/TT17 1 Tf +4.8872 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1467 Tw +[( and )]TJ +/TT17 1 Tf +2.4862 0 TD +0 Tw +(TWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1467 Tw +[( have a character unaccounted-for in the same position, the)]TJ +-11.9578 -1.2889 TD +0.37 Tw +(two characters are counted only once, i.e., substitution errors count as only one)Tj +0 -1.2222 TD +0 Tw +(disagreement, not two)Tj +-1.4167 -2 TD +0.0678 Tw +[(2.)-666.7(If there are no unaccounted-for characters and no disagreements, transpositions are not)]TJ +1.4167 -1.2222 TD +0 Tw +(counted. )Tj +-3.3333 -2.8889 TD +0.2856 Tw +(This permits spelling correction on very short words, such as edit commands, e.g., )Tj +/TT10 1 Tf +40.2801 0 TD +0 Tw +(XRT->XTR)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-45.0809 -1.2889 TD +0.0067 Tw +(Transpositions are also not counted when )Tj +/TT10 1 Tf +18.7412 0 TD +0 Tw +(FASTYPEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.2567 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2567 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +(, for example, )Tj +/TT10 1 Tf +6.2929 0 TD +0 Tw +(IPULX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0067 Tw +[( and )]TJ +/TT10 1 Tf +2.2062 0 TD +0 Tw +(IPLUS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0067 Tw +[( will be in)]TJ +-40.9558 -1.2889 TD +0.0333 Tw +(80% agreement with )Tj +/TT10 1 Tf +9.4022 0 TD +0 Tw +(FASTYPEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0333 Tw +(, only 60% with )Tj +/TT10 1 Tf +7.2315 0 TD +0 Tw +(FASTYPEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0333 Tw +[(. The rationale behind this)]TJ +-33.3696 -1.2889 TD +0.3333 Tw +(is that transpositions are much more common for fast typists, and should not be counted as)Tj +0 -1.2222 TD +0.1022 Tw +(disagreements, whereas more deliberate typists are not as likely to combine tranpositions and other)Tj +T* +0.0811 Tw +(mistakes in a single word, and therefore can use more conservative metric. )Tj +/TT10 1 Tf +34.5242 0 TD +0 Tw +(FASTYPEFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.0811 Tw +[( is initially)]TJ +/TT10 1 Tf +-40.5252 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 316.8 Tm +(Spelling Corrector Functions and Variables)Tj +/TT10 1 Tf +9 0 0 9 150 296.8 Tm +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(ADDSPELL)Tj +/TT4 1 Tf +10 0 0 10 198.6 296.8 Tm +( )Tj +/TT17 1 Tf +9 0 0 9 201.3783 296.8 Tm +(X)Tj +/TT13 1 Tf +0.6001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(SPLST)Tj +/TT13 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 249.0853 296.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 296.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Adds )Tj +/TT17 1 Tf +2.6733 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to one of the spelling lists as determined by the value of )Tj +/TT17 1 Tf +25.1392 0 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +(:)Tj +/TT10 1 Tf +-23.2131 -2.0667 TD +(NIL)Tj +/TT8 1 Tf +3.1333 0 TD +(Adds )Tj +/TT17 1 Tf +2.6733 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +( and to )Tj +/TT10 1 Tf +3.3149 0 TD +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +(. Used by)Tj +/TT10 1 Tf +-19.3623 -1.2889 TD +(DEFINEQ)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-6.134 -2.0667 TD +(0)Tj +/TT8 1 Tf +1.9333 0 TD +(Adds )Tj +/TT17 1 Tf +2.6733 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +(. Used by )Tj +/TT10 1 Tf +4.6509 0 TD +(LOAD)Tj +/TT8 1 Tf +2.4004 0 TD +( when loading)Tj +/TT10 1 Tf +-17.0977 -1.2889 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +(s to property lists.)Tj +/TT10 1 Tf +-4.3337 -2.0667 TD +(1)Tj +/TT8 1 Tf +1.9333 0 TD +(Adds )Tj +/TT17 1 Tf +2.6733 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(SPELLINGS1)Tj +/TT8 1 Tf +6.001 0 TD +( \(at end of permanent section\).)Tj +-10.6465 -1.2889 TD +(Used by )Tj +/TT10 1 Tf +3.9009 0 TD +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-8.8347 -2.0667 TD +(2)Tj +/TT8 1 Tf +1.9333 0 TD +(Adds )Tj +/TT17 1 Tf +2.6733 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(SPELLINGS2)Tj +/TT8 1 Tf +6.001 0 TD +( \(at end of permanent section\).)Tj +-10.6465 -1.2889 TD +(Used by )Tj +/TT10 1 Tf +3.9009 0 TD +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-8.8347 -2.0667 TD +(3)Tj +/TT8 1 Tf +1.9333 0 TD +(Adds )Tj +/TT17 1 Tf +2.6733 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(SPELLINGS3)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-25.4213 -2.0667 TD +[(a spelling list)-1333.9(If )]TJ +/TT17 1 Tf +8.101 0 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +( is a spelling list, )Tj +/TT17 1 Tf +7.562 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is added to it. In this case, )Tj +/TT17 1 Tf +12.1543 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is)Tj +-24.8369 -1.2889 TD +(the \(optional\) length of the temporary section.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +0.9199 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is already on the spelling list, and in its temporary)Tj +-1.52 -1.2889 TD +(section, )Tj +/TT10 1 Tf +3.5918 0 TD +(ADDSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +( moves )Tj +/TT17 1 Tf +3.3965 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( to the front of that section. )Tj +/TT10 1 Tf +-23.7225 -2.0667 TD +(ADDSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +( sets )Tj +/TT10 1 Tf +2.1528 0 TD +(LASTWORD)Tj +/TT8 1 Tf +4.8008 0 TD +( to )Tj +/TT17 1 Tf +1.3721 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( when )Tj +/TT17 1 Tf +2.9771 0 TD +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(0)Tj +/TT8 1 Tf +0.6001 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(3)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-25.7456 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.9199 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is not a symbol, )Tj +/TT10 1 Tf +7.4219 0 TD +(ADDSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +( takes no action.)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +70 0 obj +<< +/Length 11941 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-19)Tj +/TT8 1 Tf +-37 60.6156 TD +0.1 Tw +(Note that the various systems calls to )Tj +/TT10 1 Tf +17.4148 0 TD +0 Tw +(ADDSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1 Tw +(, e.g., from )Tj +/TT10 1 Tf +5.2419 0 TD +0 Tw +(DEFINE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6 0 TD +(EDITF)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6 0 TD +(LOAD)Tj +/TT8 1 Tf +2.4004 0 TD +0.1 Tw +(, etc.,)Tj +-37.659 -1.2889 TD +0.3178 Tw +(can all be suppressed by setting or binding )Tj +/TT10 1 Tf +21.7239 0 TD +0 Tw +(ADDSPELLFLG)Tj +/TT8 1 Tf +6.6011 0 TD +0.3178 Tw +[( to )]TJ +/TT10 1 Tf +2.0076 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3178 Tw +[( \(see the DWIM)]TJ +-32.1329 -1.2889 TD +0 Tw +(Functions and Variables section above\).)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(MISSPELLED?)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(XWORD)Tj +/TT13 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(REL)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(SPLST)Tj +/TT13 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FLG)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(TAIL)Tj +/TT13 1 Tf +2.4004 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 304.5202 524 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 524 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT17 1 Tf +0.9566 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2867 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2867 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0367 Tw +[( or )]TJ +/TT10 1 Tf +1.5142 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( \(\), )]TJ +/TT10 1 Tf +4.0479 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.0367 Tw +[( prints )]TJ +/TT10 1 Tf +3.1925 0 TD +0 Tw +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( followed by the value of )]TJ +/TT10 1 Tf +11.4641 0 TD +0 Tw +(LASTWORD)Tj +/TT8 1 Tf +4.8008 0 TD +(,)Tj +-39.7517 -1.2889 TD +0.0356 Tw +(and returns this as the respelling, without asking for approval. Otherwise, )Tj +/TT10 1 Tf +33.3979 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +-33.3979 -1.2889 TD +0.0233 Tw +(checks to see if )Tj +/TT17 1 Tf +6.9 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[( is really misspelled, i.e., if )]TJ +/TT17 1 Tf +12.0345 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0233 Tw +[( applied to )]TJ +/TT17 1 Tf +5.0661 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[( is true, or )]TJ +/TT17 1 Tf +4.8023 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[( is)]TJ +-39.0046 -1.2889 TD +0.4689 Tw +(already contained on )Tj +/TT17 1 Tf +10.9775 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.4689 Tw +(. In this case, )Tj +/TT10 1 Tf +7.7642 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.4689 Tw +[( simply returns )]TJ +/TT17 1 Tf +8.4067 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-39.7504 -1.2889 TD +(Otherwise )Tj +/TT10 1 Tf +5.1073 0 TD +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.2611 Tw +[( computes and returns )]TJ +/TT10 1 Tf +11.2471 0 TD +0 Tw +(\(FIXSPELL)Tj +/TT19 1 Tf +5.4009 0 TD +( )Tj +/TT17 1 Tf +0.5111 0 TD +(XWORD)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.5111 0 TD +(REL)Tj +/TT19 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.5111 0 TD +(SPLST)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.5111 0 TD +(FLG)Tj +-38.2021 -1.4378 TD +(TAIL)Tj +/TT19 1 Tf +2.4004 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 166.0561 448.06 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 102 425.12 Tm +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(FIXSPELL)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(XWORD)Tj +/TT13 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(REL)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(SPLST)Tj +/TT13 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FLG)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(TAIL)Tj +/TT13 1 Tf +2.4004 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FN)Tj +/TT13 1 Tf +1.2002 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(TIEFLG)Tj +/TT13 1 Tf +3.6006 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(DONTMOVETOPFLG)Tj +/TT10 1 Tf +8.4014 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 400.8378 425.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 425.12 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0422 Tw +(The value of )Tj +/TT10 1 Tf +5.8674 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0422 Tw +[( is either the respelling of or )]TJ +/TT10 1 Tf +13.2011 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0422 Tw +[(. If for some reason itself is on ,)]TJ +-25.6695 -1.2889 TD +0 Tw +(then )Tj +/TT10 1 Tf +2.2503 0 TD +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0311 Tw +[( aborts and calls )]TJ +/TT10 1 Tf +7.5112 0 TD +0 Tw +(ERROR!)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +[(. If there is a possibility that is spelled correctly,)]TJ +/TT10 1 Tf +-18.1629 -1.2889 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.2367 Tw +[( should be used instead of )]TJ +/TT10 1 Tf +13.2174 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.2367 Tw +(. )Tj +/TT10 1 Tf +1.2233 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.2367 Tw +[( performs all of the)]TJ +-30.6433 -1.2889 TD +0 Tw +(interactions described earlier, including requesting your approval if necessary.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +0.9499 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.28 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.28 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +[( or )]TJ +/TT10 1 Tf +1.5009 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[( \(escape\), the respelling is the value of )]TJ +/TT10 1 Tf +17.2781 0 TD +0 Tw +(LASTWORD)Tj +/TT8 1 Tf +4.8008 0 TD +0.03 Tw +(, and no approval is)Tj +-31.0907 -1.2889 TD +0 Tw +(requested.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +0.9477 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0278 Tw +[( contains lowercase characters, and the corresponding uppercase word is correct,)]TJ +-3.9482 -1.2889 TD +0.2878 Tw +(i.e. on )Tj +/TT17 1 Tf +3.4735 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.2878 Tw +[( or satisfies )]TJ +/TT17 1 Tf +6.046 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.2878 Tw +(, the uppercase word is returned and no interaction is)Tj +-13.7201 -1.2889 TD +0.1378 Tw +[(performed. If )]TJ +/TT10 1 Tf +6.8049 0 TD +0 Tw +(FIXSPELL.UPPERCASE.QUIET)Tj +/TT8 1 Tf +14.4023 0 TD +0.1378 Tw +[( is )]TJ +/TT10 1 Tf +1.4904 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1378 Tw +[( \(the default\), a warning )]TJ +/TT10 1 Tf +11.6254 0 TD +0 Tw +("=XX)Tj +/TT8 1 Tf +2.4004 0 TD +0.1378 Tw +(" is)Tj +-38.5238 -1.2889 TD +0.0644 Tw +(printed when coercing from ")Tj +/TT10 1 Tf +13.2846 0 TD +0 Tw +(xx)Tj +/TT8 1 Tf +1.2002 0 TD +0.0644 Tw +(" to ")Tj +/TT10 1 Tf +2.2431 0 TD +0 Tw +(XX)Tj +/TT8 1 Tf +1.2002 0 TD +0.0644 Tw +[(". If )]TJ +/TT10 1 Tf +2.2343 0 TD +0 Tw +(FIXSPELL.UPPERCASE.QUIET)Tj +/TT8 1 Tf +14.4023 0 TD +0.0644 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3867 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.7519 -1.2889 TD +(no warning is given. )Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +0.9199 0 TD +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, defaults to the value of )Tj +/TT10 1 Tf +10.8931 0 TD +(FIXSPELLREL)Tj +/TT8 1 Tf +6.6011 0 TD +( \(initially 70\).)Tj +-23.1147 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.971 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.3011 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3011 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0511 Tw +(, the correction is handled in type-in mode, i.e., approval is never requested,)Tj +-5.7739 -1.2889 TD +0 Tw +(and )Tj +/TT17 1 Tf +2.1784 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.2356 Tw +[( is not typed. If )]TJ +/TT17 1 Tf +8.0899 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.4856 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4856 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT17 1 Tf +0.7356 0 TD +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.2356 Tw +[( is typed \(before the )]TJ +/TT10 1 Tf +10.2212 0 TD +0 Tw +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.2356 Tw +(\) and approval is)Tj +-31.7978 -1.2889 TD +0.0611 Tw +(requested if )Tj +/TT10 1 Tf +5.6022 0 TD +0 Tw +(APPROVEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.3111 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3111 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0611 Tw +[(. If )]TJ +/TT17 1 Tf +1.8533 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.3111 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3111 0 TD +(NO-MESSAGE)Tj +/TT8 1 Tf +6.001 0 TD +0.0611 Tw +(, the correction is returned with no)Tj +-24.3024 -1.2889 TD +0.0167 Tw +(further processing. In this case, a run-on correction will be returned as a dotted pair of the)Tj +0 -1.2222 TD +0.1089 Tw +(two parts of the word, and a synonym correction as a list of the form )Tj +/TT10 1 Tf +32.1856 0 TD +0 Tw +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(WORD1)Tj +/TT19 1 Tf +3.0005 0 TD +( )Tj +/TT17 1 Tf +0.3589 0 TD +(WORD2)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-39.7456 -1.2889 TD +(where )Tj +/TT17 1 Tf +3.0813 0 TD +(WORD1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0622 Tw +[( is \(the corrected version of\) )]TJ +/TT17 1 Tf +12.9207 0 TD +0 Tw +(XWORD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0622 Tw +(, and )Tj +/TT17 1 Tf +2.5673 0 TD +0 Tw +(WORD2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0622 Tw +[( is the synonym. The effect)]TJ +-27.5707 -1.2889 TD +0 Tw +(of the function )Tj +/TT10 1 Tf +6.7231 0 TD +(CHOOZ)Tj +/TT8 1 Tf +3.0005 0 TD +( can be obtained by calling )Tj +/TT10 1 Tf +12.0107 0 TD +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +( with )Tj +/TT17 1 Tf +2.5332 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NO-MESSAGE)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-37.9697 -2.0667 TD +(If )Tj +/TT17 1 Tf +1.1489 0 TD +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.2278 Tw +[( is not )]TJ +/TT10 1 Tf +3.6052 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2278 Tw +(, and the correction is successful,)Tj +/TT19 1 Tf +15.6108 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.4789 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.2278 Tw +[( of )]TJ +/TT17 1 Tf +1.8364 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.2278 Tw +[( is replaced by the)]TJ +-31.0815 -1.2889 TD +0 Tw +(respelling \(using /)Tj +/TT10 1 Tf +8.2842 0 TD +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +(\).)Tj +/TT10 1 Tf +-11.8848 -2.0667 TD +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0644 Tw +[( will attempt to correct misspellings caused by running two words together, if)]TJ +-4.8008 -1.2889 TD +0.01 Tw +(the global variable )Tj +/TT10 1 Tf +8.4787 0 TD +0 Tw +(RUNONFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.01 Tw +[( is non-)]TJ +/TT10 1 Tf +3.2778 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.01 Tw +[( \(default is )]TJ +/TT10 1 Tf +4.9709 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.01 Tw +[(\). In this case, approval is always)]TJ +-25.1288 -1.2889 TD +0.0656 Tw +[(requested. When a run-on error is corrected, )]TJ +/TT10 1 Tf +20.6079 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( of )]TJ +/TT17 1 Tf +1.51 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( is replaced by the two words,)]TJ +-26.3186 -1.2889 TD +0.04 Tw +(and the value of )Tj +/TT10 1 Tf +7.557 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.04 Tw +[( is the first one. For example, if )]TJ +/TT10 1 Tf +14.4581 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.04 Tw +[( is called to correct)]TJ +-31.6167 -1.2889 TD +0.1222 Tw +(the edit command )Tj +/TT10 1 Tf +8.6591 0 TD +0.2944 Tw +(\(MOVE TO AFTERCOND 3 2\))Tj +/TT8 1 Tf +14.98 0 TD +0.1222 Tw +[( with )]TJ +/TT17 1 Tf +2.7776 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3722 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3722 0 TD +0.2944 Tw +(\(AFTERCOND 3 2\))Tj +/TT8 1 Tf +9.5904 0 TD +0 Tw +(,)Tj +/TT17 1 Tf +-39.7521 -1.2889 TD +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +[( would be changed to )]TJ +/TT10 1 Tf +10.243 0 TD +0.2156 Tw +(\(AFTER COND 2 3\))Tj +/TT8 1 Tf +10.2482 0 TD +0.09 Tw +(, and )Tj +/TT10 1 Tf +2.6229 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.09 Tw +[( would return )]TJ +/TT10 1 Tf +6.685 0 TD +0 Tw +(AFTER)Tj +/TT8 1 Tf +-37.0003 -1.2889 TD +0.0044 Tw +(\(subject to yourapproval where necessary\). If )Tj +/TT17 1 Tf +20.1985 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2544 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2544 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +0.25 0 TD +0.01 Tw +[( FIXSPELL)]TJ +/TT8 1 Tf +5.4109 0 TD +0.0002 Tc +0.0042 Tw +( will also perform run-)Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +/TT19 33 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +73 0 obj +<< +/Length 10383 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +0 -1 TD +(DWIM)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0911 Tw +(on corrections, returning a dotted pair of the two words in the event the correction is of)Tj +0 -1.2222 TD +0 Tw +(this type.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +1.0133 0 TD +(TIEFLG)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.3433 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3433 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0933 Tw +[( and a tie occurs, i.e., more than one word on )]TJ +/TT17 1 Tf +21.1048 0 TD +0 Tw +(SPLST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0933 Tw +[( is found with the)]TJ +-31.8062 -1.2889 TD +0.2478 Tw +(same degree of "closeness", )Tj +/TT10 1 Tf +13.2392 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.2478 Tw +[( returns )]TJ +/TT10 1 Tf +4.1997 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2478 Tw +[(, i.e., no correction. If )]TJ +/TT17 1 Tf +11.2523 0 TD +0 Tw +(TIEFLG)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.4978 0 TD +(=)Tj +-39.3905 -1.2889 TD +(PICKONE)Tj +/TT8 1 Tf +4.2007 0 TD +0.1233 Tw +[( and a tie occurs, the first word is taken as the correct spelling. If )]TJ +/TT17 1 Tf +31.2163 0 TD +0 Tw +(TIEFLG)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.3733 0 TD +(=)Tj +-39.3909 -1.2889 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +0.1222 Tw +(, the value of )Tj +/TT10 1 Tf +6.443 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1222 Tw +[( is a list of the respellings \(even if there is only one\), and)]TJ +/TT10 1 Tf +-13.6442 -1.2889 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1267 Tw +[( will not perform any interaction with you, nor modify )]TJ +/TT17 1 Tf +25.691 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1267 Tw +(, the idea being)Tj +-32.8922 -1.2889 TD +0.0789 Tw +[(that the calling program will handle those tasks. Similarly, if )]TJ +/TT17 1 Tf +28.0563 0 TD +0 Tw +(TIEFLG)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.3289 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3289 0 TD +(EVERYTHING)Tj +/TT8 1 Tf +6.001 0 TD +0.0789 Tw +(, a)Tj +-38.9157 -1.2889 TD +0.0733 Tw +(list of all candidates whose degree of closeness is above )Tj +/TT17 1 Tf +25.4867 0 TD +0 Tw +(REL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0733 Tw +[( will be returned, regardless)]TJ +-27.287 -1.2889 TD +0 Tw +(of whether some are better than others. No interaction will be performed.)Tj +0 -2 TD +(If )Tj +/TT17 1 Tf +0.9933 0 TD +(DONTMOVETOPFLG)Tj +/TT8 1 Tf +8.4014 0 TD +( )Tj +/TT10 1 Tf +0.3233 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3233 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0733 Tw +[( and a correction occurs, it will )]TJ +/TT13 1 Tf +14.3336 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0733 Tw +[( be moved to the front of the)]TJ +-26.9081 -1.2889 TD +0.0222 Tw +[(spelling list. Also, the spelling list will not be altered unless it contains the special marker)]TJ +0 -1.2222 TD +0.0267 Tw +(used to separate the temporary and perminant parts of the system spelling lists \(the value)Tj +T* +0 Tw +(of )Tj +/TT10 1 Tf +1.1289 0 TD +(SPELLSTR1)Tj +/TT8 1 Tf +5.4009 0 TD +(\).)Tj +/TT10 1 Tf +-9.1965 -2.5489 TD +(\()Tj +/TT15 1 Tf +0.6001 0 TD +(FNCHECK)Tj +/TT13 1 Tf +4.1999 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(FN)Tj +/TT13 1 Tf +1.2002 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(NOERRORFLG)Tj +/TT13 1 Tf +6.001 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(SPELLFLG)Tj +/TT13 1 Tf +4.8008 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(PROPFLG)Tj +/TT13 1 Tf +4.2007 0 TD +( )Tj +/TT17 1 Tf +0.25 0 TD +(TAIL)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 377.2781 384.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 384.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0089 Tw +(The task of )Tj +/TT10 1 Tf +5.1356 0 TD +0 Tw +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.0089 Tw +[( is to check whether )]TJ +/TT17 1 Tf +9.0635 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0089 Tw +[( is the name of a function and if not, to correct)]TJ +-19.5999 -1.2889 TD +0.0722 Tw +[(its spelling. If )]TJ +/TT17 1 Tf +6.765 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0722 Tw +[( is the name of a function or spelling correction is successful, )]TJ +/TT10 1 Tf +27.8354 0 TD +0 Tw +(FNCHECK)Tj +/TT8 1 Tf +-35.8006 -1.2889 TD +0.0556 Tw +(adds the \(corrected\) name of the function to )Tj +/TT10 1 Tf +20.0509 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0556 Tw +[( using )]TJ +/TT10 1 Tf +3.0672 0 TD +0 Tw +(ADDSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0556 Tw +(, and returns it)Tj +-33.3197 -1.2889 TD +0 Tw +(as its value.)Tj +0 -2 TD +(Since )Tj +/TT10 1 Tf +2.6119 0 TD +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.0411 Tw +[( is called by many low level functions such as )]TJ +/TT10 1 Tf +20.7554 0 TD +0 Tw +(ARGLIST)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5411 0 TD +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +0.0411 Tw +(, etc.,)Tj +-37.7106 -1.2889 TD +0.2644 Tw +(spelling correction only takes place when )Tj +/TT10 1 Tf +20.1018 0 TD +0 Tw +(DWIMFLG)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.5144 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.5144 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2644 Tw +(, so that these functions can)Tj +-26.5316 -1.2889 TD +0 Tw +(operate in a small Interlisp system which does not contain )Tj +/TT10 1 Tf +25.9233 0 TD +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT17 1 Tf +-28.3237 -2.0667 TD +(NOERRORFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.1044 Tw +[( informs )]TJ +/TT10 1 Tf +4.1625 0 TD +0 Tw +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.1044 Tw +[( whether or not the calling function wants to handle the)]TJ +-14.3642 -1.2889 TD +0.08 Tw +(unsuccessful case: if )Tj +/TT17 1 Tf +9.364 0 TD +0 Tw +(NOERRORFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.08 Tw +[( is )]TJ +/TT10 1 Tf +1.3748 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.58 0 TD +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.08 Tw +[( simply returns )]TJ +/TT10 1 Tf +7.24 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.08 Tw +(, otherwise it prints)Tj +/TT10 1 Tf +-31.1609 -1.2889 TD +0 Tw +(fn NOT A FUNCTION)Tj +/TT8 1 Tf +10.2017 0 TD +( and generates a non-breaking error.)Tj +-10.2017 -2.0667 TD +(If )Tj +/TT17 1 Tf +0.9488 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0289 Tw +[( does not have a definition, but does have an )]TJ +/TT10 1 Tf +20.2606 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[( property, then spelling correction)]TJ +-24.81 -1.2889 TD +0.0511 Tw +[(is not attempted. Instead, if )]TJ +/TT17 1 Tf +12.8897 0 TD +0 Tw +(PROPFLG)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.3011 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3011 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT17 1 Tf +0.5511 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0511 Tw +[( is considered to be the name of a function,)]TJ +-20.6441 -1.2889 TD +0.0167 Tw +[(and is returned. If )]TJ +/TT17 1 Tf +8.5311 0 TD +0 Tw +(PROPFLG)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.2667 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2667 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT17 1 Tf +0.5167 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0167 Tw +[( is )]TJ +/TT13 1 Tf +1.2482 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0167 Tw +[( considered to be the name of a function, and)]TJ +/TT10 1 Tf +-19.9635 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( is returned or an error generated, depending on the value of )Tj +/TT17 1 Tf +27.0991 0 TD +(NOERRORFLG)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-34.9004 -2.0667 TD +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.0003 Tc +0.0019 Tw +( calls )Tj +/TT10 1 Tf +2.4542 0 TD +0 Tc +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.0001 Tc +0.0021 Tw +( to perform spelling correction, so that if )Tj +/TT17 1 Tf +18.0627 0 TD +0 Tc +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.2522 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2522 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0022 Tw +(, the value)Tj +-35.4236 -1.2889 TD +0 Tw +(of )Tj +/TT10 1 Tf +1.5045 0 TD +(LASTWORD)Tj +/TT8 1 Tf +4.8008 0 TD +0.3756 Tw +[( will be returned. )]TJ +/TT17 1 Tf +9.9872 0 TD +0 Tw +(SPELLFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.3756 Tw +[( corresponds to )]TJ +/TT10 1 Tf +8.195 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.3755 Tw +(s fourth)Tj +-35.8893 -1.2889 TD +0 Tw +(argument, )Tj +/TT17 1 Tf +5.1076 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.2833 Tw +[(. If )]TJ +/TT17 1 Tf +2.5199 0 TD +0 Tw +(SPELLFLG)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.5333 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.5333 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2833 Tw +(, approval will be asked if )Tj +/TT10 1 Tf +13.3821 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2833 Tw +[( was enabled in)]TJ +/TT10 1 Tf +-32.2779 -1.2889 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.1544 Tw +[( mode, i.e., if )]TJ +/TT10 1 Tf +6.5304 0 TD +0 Tw +(APPROVEFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.4044 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4044 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1544 Tw +(. )Tj +/TT17 1 Tf +1.0589 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1544 Tw +[( corresponds to the fifth argument to)]TJ +/TT10 1 Tf +-22.8005 -1.2889 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-6.6011 -2.0667 TD +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.0322 Tw +[( is currently used by )]TJ +/TT10 1 Tf +9.4233 0 TD +0 Tw +(ARGLIST)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5322 0 TD +(UNSAVEDEF)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5322 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.5322 0 TD +(BREAK0)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5322 0 TD +(BREAKIN)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +/TT10 1 Tf +-39.7568 -1.2889 TD +(ADVISE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +(, and )Tj +/TT10 1 Tf +2.4984 0 TD +0 Tw +(CALLS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0278 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.8572 0 TD +0 Tw +(BREAK0)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( calls )]TJ +/TT10 1 Tf +2.5053 0 TD +0 Tw +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.0278 Tw +[( with )]TJ +/TT17 1 Tf +2.5888 0 TD +0 Tw +(NOERRORFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0278 Tw +[( since if)]TJ +/TT10 1 Tf +-36.6087 -1.2889 TD +0 Tw +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.2022 Tw +[( cannot produce a function, )]TJ +/TT10 1 Tf +13.3768 0 TD +0 Tw +(BREAK0)Tj +/TT8 1 Tf +3.6006 0 TD +0.2022 Tw +[( wants to define a dummy one. )]TJ +/TT10 1 Tf +15.8233 0 TD +0 Tw +(CALLS)Tj +/TT8 1 Tf +-37.0014 -1.2889 TD +0.2611 Tw +(however calls )Tj +/TT10 1 Tf +6.8518 0 TD +0 Tw +(FNCHECK)Tj +/TT8 1 Tf +4.2007 0 TD +0.2611 Tw +[( with )]TJ +/TT17 1 Tf +3.0554 0 TD +0 Tw +(NOERRORFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.5111 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.5111 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2611 Tw +(, since it cannot operate without a)Tj +-23.5315 -1.2889 TD +0 Tw +(function.)Tj +ET +endstream +endobj +74 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 19 0 R +/TT17 20 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +76 0 obj +<< +/Length 2284 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(19-21)Tj +/TT8 1 Tf +-42.3333 60.6156 TD +0.1067 Tw +(Many other system functions call )Tj +/TT10 1 Tf +15.444 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.1067 Tw +[( or )]TJ +/TT10 1 Tf +1.6543 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1067 Tw +[( directly. For example, )]TJ +/TT10 1 Tf +10.9225 0 TD +0 Tw +(BREAK1)Tj +/TT8 1 Tf +3.6006 0 TD +0.1067 Tw +[( calls)]TJ +/TT10 1 Tf +-43.0232 -1.2889 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0356 Tw +[( on unrecognized atomic inputs before attempting to evaluate them, using as a spelling list)]TJ +-4.8008 -1.2889 TD +0.1233 Tw +[(a list of all break commands. Similarly, )]TJ +/TT10 1 Tf +18.6581 0 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +0.1233 Tw +[( calls )]TJ +/TT10 1 Tf +2.6964 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.1233 Tw +[( on atomic inputs using a list of all)]TJ +/TT10 1 Tf +-29.1557 -1.2889 TD +0 Tw +(LISPX)Tj +/TT8 1 Tf +3.0005 0 TD +( commands. When )Tj +/TT10 1 Tf +8.7651 0 TD +(UNBREAK)Tj +/TT8 1 Tf +4.2007 0 TD +( is given )Tj +-15.9663 -1.2889 TD +0.0222 Tw +(the name of a function that is not broken, it calls )Tj +/TT10 1 Tf +21.743 0 TD +0 Tw +(FIXSPELL)Tj +/TT8 1 Tf +4.8008 0 TD +0.0222 Tw +[( with two different spelling lists, first with)]TJ +/TT10 1 Tf +-26.5438 -1.2889 TD +0 Tw +(BROKENFNS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0667 Tw +(, and if that fails, with )Tj +/TT10 1 Tf +10.3233 0 TD +0 Tw +(USERWORDS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0667 Tw +(. )Tj +/TT10 1 Tf +0.8833 0 TD +0 Tw +(MAKEFILE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0667 Tw +[( calls )]TJ +/TT10 1 Tf +2.583 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.0667 Tw +[( using )]TJ +/TT10 1 Tf +3.0894 0 TD +0 Tw +(FILELST)Tj +/TT8 1 Tf +4.2007 0 TD +0.0667 Tw +[( as a)]TJ +-43.2834 -1.2889 TD +0.0111 Tw +[(spelling list. Finally, )]TJ +/TT10 1 Tf +9.459 0 TD +0 Tw +(LOAD)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5111 0 TD +(BCOMPL)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5111 0 TD +(BRECOMPILE)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5111 0 TD +(TCOMPL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0111 Tw +(, and )Tj +/TT10 1 Tf +2.4651 0 TD +0 Tw +(RECOMPILE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0111 Tw +[( all call )]TJ +/TT10 1 Tf +3.3912 0 TD +0 Tw +(MISSPELLED?)Tj +/TT8 1 Tf +6.6011 0 TD +0.0111 Tw +[( if)]TJ +-44.4532 -1.2889 TD +0 Tw +(their input file\(s\) wont open.)Tj +ET +endstream +endobj +77 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT8 7 0 R +/TT10 8 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +11 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +79 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +81 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +82 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +83 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +84 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBJMJH+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 85 0 R +>> +endobj +85 0 obj +<< +/Filter /FlateDecode +/Length 20105 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8Pbԃ4NˡfwfGf?%Z%%Rh +FnRKD>iRi nxj3>yomrB{E]X;ohQ`r Wq`]Y|7>43u42/|g2#* +#mʵ 10U'wmx c[ÐpLsV!x0aE(״X@X#J2.^ZQV "@u@U"t:ԟ8:_ۈz,^ypp.Zxpr;84ptB*~XH|p4W`V l̍?GX˸ 0`6' Y#2>[Z #`MG`>#`S [ X45P-$/Lȃ&߆mfn6<\́ˀW.1PITs,LgN +)8q]EApFX-]pl'G;; {I9DyC<hI HˋQw h4r{ 7@1YcjRC 滑!K`/R8τz a%h$X[u~(Ρla ;U@5\mS~$퓩Pʯ@pE +_ +\.KY߼ʟdnA$4jh"8'q^?zp.а hL p7:@)bd _Q6Y"h7 7 U>C S7)5#}'!-72Ion+Ѻ<2>u?ɴMw3])*%segn/n83[ \ܹ_8<t8x"b]SUAl)Cظe6.q+m\ecm\cZkml\ocڸXos6ny_pNN豟ㆪŢ^"j4aҟJ5 :/hĐL5FCjT5+SBHj΀ovU%p7L7_⍸/K*13ܐ.j4de-nx}UZUD +AZSk)% (4FFbRkIh*+߯tT8*ZP ~'FBPEAh4(q#iIvTTtG|4KH^@}Rژ =Ǒ&a\Xjz*Ju z@NsflH#qҠfFN4'X`/j4d6#A9ӔCr!c(NOa7E:D5\W*Vիrհ_p>&H#>op`"`b+3#~ۭY v,SVIv9=ڠ_crBFf\7qg̥f)M~؛Fi?, ="OEh"1KnKDDewdƯd4lo^-]f^&;z1oݶNfWZ}5oCknW_\;8rF9 |',-ue9ǩcԱeVOS#헚1RS×c]kO\9.RwCj˼a8Z5RKgR/RF*gX[Jvwŧݵqk KKWVyASnC~)!$ +LO睕[l) NyG~D.goOwf\$o};yR3;/brd&ww|xlFrk*1}iwp7ؘ٫v'YiC0wD[Gab.XQ.# %ҮIԺhZJPCHB(R6Cet(`" t:t[a=wI }u~ޏ;K]?;sު\$)3`JѢ*$q7.{='2#Bł܂WYG,ݭMf6 +KTѩ9`aZhK/,ٮق0R9u^Vc@"#92F1xQ&|w4xCG$8WJFhdqpXխL)_Ãi3\nSܙfJ0=^$ cUBFږ.vyNȧTM ԇLءVZ?~,nRCFŅYV8WnCG}~S@P}@-! +PI`:b|OZѹXnPɳT9T]٪4IFd]{fuKKj\=?p u˺Ogit7){r]X:gSݭjwU9Ҫu~);?SOryTYvAS%dtډy\/wo Cg,sJGp9 CbK徚=_oTC-[1O9ՐK +ϣvU-!cRYگ@w*@:Ki9TYl;tvmh? 7QI2Mtܱ9fK)Pp2ʡ|H1_/k驘d wka`Knr]%@Dg)E ֈ{#r[4˃o77N*)6H rmʛvH-u` GFw{QH;a1ѣQQg,IF2Cb)Ҍ~ [g[j*R.!%K?Y bTb$6Ȩ>\p0;amFXElN ++axLI0F>/gc02`4A+^ Spe8y)%dOj3d%yh$D^!-d'y#oϤ#Ӥ\ UJڨP7CQt}V%>GWhn[諴Eߣ]z~AAh?M03dc0eTVf0?{-`Kl5gdCCvfv]arn>OSOx?ŗov?;a~SG%~G?&j22LX'n*|?A!HPg0bZ@qpXQ3CQT Xa482RwZf8݊2 cLj"VG}X#& +ɚW2 Yt?X~' +oP%%i0HR+4b ݒ&c6S+Q'b]vdQEτ1,װc?`cEpՌިd3A> sШd +8eݎg3-G{})f2Ͷ L乑m;-ΡZRU_w3DKP)ji7Zraڭ-BesK-$IY8Dp]]i>s ȭU'npZK;~jkɒ^_RKD>4{GK{yѥhk꺺bR%8>:D/lI'F`|6q.眤<m:(5×Be+HI[uNPv#'Nr-dnV(q Nti4[`HAus{lP~i[Yݽ}ػ;na5G't%W߶߶lۺ[_~bYal `/Jpa",L +TZE״pv/]E%?VK(9$1.Hpݯ #lHleYD}!Ӭ&28|(W4<e.ąE>faru&g N8jv_b[LxOfY*!gEiPSzl L pkAE_  ,ώtnW>M ]QiYc*Z*n¼ҴۚEeyhrWMeuCmaŌ=R[,gv4ūh-˝~}tlt\nEb;aVd1tɮJX'lF<('7.&cj3BnTefUO(- +n392HIGD/ ڣWͥ4D"iWq_ZafUdŷ@y.%ؔ[Lf7qU'-!xTKkE,8O%3}堋_Ġ`=F2.]LedbY!:.I"[,W~ˤ=Y_@d|ZXY@Vo47 PK9tev|q+ Y4c4; Y2`YX gLqB%ASJ؊hݏ[Z,ZҖ%8 ̂jԍRK¸2ٸ瘱?%UJ9C':g*.?.ѳd],KY[T~.pIGC-A]4G|$RP~+'cN9jrD-cSN٘'xzɉjjxiG(5n=,^xlCd"=C5Z'ˈ[X9`)ːHs2Mrv%U>2S/A䢶5(tziStVRKAİXk== x^.wwR9sߚq?W?NhN-:zTDw!_hG,h)cxz}GGVWAhSdicEk%`еdA"mψԒn^1v缴/y]4|ˊ^ox6g@EV4 @3h UFF;b|thƖorz̲[Bn+/LkI̯/^Gދaa4"$wQ eIp>}$XhNqUblfqBҡ>r[m)1x| u(8GTA"r wj;-A^7-W^-)AyjŪfϽ^Ww[ =x +n:Y,Š ,}*:,aCpx>Mz<4Vc|肽 DE8 +'U8 _ 'x7`@ȋEu5/{h# Ao%tq)^b7f~ +wo^<'?opS*IYIVH|7Mr/q?~;jۅ2oEFE-D*~v`32JMS# lt! +$2jZLFcDg21iI;6bD^Ͻ,v={w}.*WTCP jP]V!5T;շwգjz^~^VTMZ46AM֦kOi3HxY#{ T8q1 :&VQM%VMQ +6aNlGh1ĎTj;@?):FZ[VicM^c9\Z-JQl0=|@'D1RP 7~O`n&a 諈 +H([A'N1BNqG,B@qVPGAë-uEei5pSfXǦ8!c8MQ k.|;$wFv.=g|_f4)^w$d-DB3Cِgt75uM!*y8 vХYcBF6$7׹Fkk)}⽰!H{\ 'd @ouv۳I ug"0aH\[}A*- 53d HƗh,JnZ}ė}6D;ELz3IM >Pd䍵݁޵=%r s@c/isąuH#5F#"9:ni"87Jkï.")]H&Hz5nO[xohp.Ԧs +]yd7veWakй6PIÍDvjBQ&KZlx"}{޾C/_g+3 +PKyr+$v<v޵c[ؙ*t:[vsݹPǞglO|@X Zu+fdwZWG<Wˌ8`1k2V5/ۗ|`NnoX󆥷[H|q8:\!K$-$.=+}]bL$нa_M\NjsOWLH"is27dep $_X^Qz x] 4V1c]j3/`K$Aa}gQ Pz$B0G!% : bTW^,µ`0p|:zssA̓)3vld'^`TVgN^t`wM3绺ϲNd.?`n9l*͞H'yӌ|ۗ3,۽z ΁\bG:'fnV!r1clC${8;gg +FMx!פȧFlۄ Ƕ!-L=wsQo,O"-~4$A۪Єump{oLg7I0G۸%W =To/0Džu Ố QM ȂȪrX(BfU" kx +&dX mWI)|_ M /*2YCjȫdyCz>9M>"g?ɿEFL +Qc7 d:N rZIUt nv#K?=M~z!"KP2]ɖ̬YR,CvVDF 9ZҡA9t)ǕS(+5dj5+s0'sxļƳ {l +KgY&b?bAfv<R(y K"wBIU]B̗z,[= +"v, 7ra%r( C$ {\ۄZ $| U-D8Edm+US6P,XgِHwXرE>HR5KUo Xjъa!Ue)4\Q.ʼ)x_m3,(.2_[nJTVʺv< }m{"ώۖѣfB~okh*H9?I4YwdKn _%oߘ_X6dj0dawZC'3RǩcY58vЎ]#{i8~vN~;"&dJS +_#|8{mv/6!F34QK@IH6$bM?2NA*#r4CMdZpv&dD;HE%;{ߟyB=OnX@o7ՠ/ŹB pdc"""Ҍ)eu9..3rwMgIEaXuP״yv%׿YC5sfh[vNK*Zn_a濱i|S 5z9 {nuw}C.,vC=Q7%mg@>64k&[UYHn>)[l:tρùUu; VV[J۪D'o<;0׎.lуaw?s-CWK7svT[<}MUHhϼ eivnC +[ӭh+or{~$_Vi5E\]4⨉6~o}oyi Zַݰ_={OxݵF9(;{n~ݮs튖n(-BMoiD5oNo>d + q}gHJ>cwI^qQd\(GPIE,1"vXNDUzBL$ƕљ2K^_w|-8'iTlvmfYȤDC Y#,})ȃjB(0|(E=Uzj1TMnA=X+NX kPO[`;ڠ~A8G9T]Eu[އ8H6U UE*TVu,&[n%#܅j=D&LZȃ!H7y%A{r>z$$&7y'͠~K/G}UH~Vi~+tD4B[GhғO5teTZ|T[X5e7zvk`k:\Ml3*&5jGՉ +c'X7;Z,JjXJ >(F+Jݍ Tqz㼱gM)]Ev[2\! +͝ϳEKi-%Ra+)c\ +[)؂Ue3y Pqif{JʺhG2T mSAO&)Qb3DAc.[C /+W &ǯYJPvҰ, I<E+Lxlca b `!iYl#BNbS,?O[A;y-o2g}LcA=KA<1&+cJՂl{4өxM)0(]'loFEӿ22 yc@:X'Avʹ[`v{^; j?8~x/!)<(Q'oLaOlq mEw`Ƙ{^PU"|rfF` 0g$ÍrK aW YBM,aamUmp 68-F{rnkc*5lK"<ߐt_ïp^6c,gxYsckf+YʴЧ܋qz GK} =5e1Yle1 yԹ,nzS]:XJ7-X,!z,bEٳGY%JrnX bټ0WwVaPUMd!Q}x2S+JXS^ip3hnc.٪VvYfֿɯ82nwڷ& Q"#%qTvCˆ< RIK_0|!_WH4$$^{J&m,g JyQk'm@H̃|;;:)p|lvdn|:9w--̲-M,#Yxt%Q9hhY0KYCZªp,]=.rџт Ư^Թ5ʳf!1fPUk|MϾysƵhCMw<x2ZpGpݲTicK<ʚşcМ}Û-?zqe %,fά:Y,MDVs<Е¡5眣;Έ[Lm*׹*8qWWo6=C&> À%3 Vmm0G[xKxD-p29ٜ79]Xv"=YEd1/bRѾ /A& " -=e:!"%58dj]dڹ5xc'sF-&օlRX%#f-0 %*lu1LMS,?uQżS`$BmU4(vx h)וֹ+܃LN,y6ia +fE9,pTw|GBw ǩ 6h95P" R_Y8NN!j;WV{uٍOC:dыZh+9-ZxfOxٳp{9̎->.~ 8+XXM Ż-&ʰBu'YZ jf ,Uho1+b2_hq줜:2DmuT7L~ +a/ބƐ5"#@"]hMx}yx*p;[ *5,"^"Y~-L44Y5x`jh10nZN׏dWRŚ^sˏ ˚2pbax[_OCT_f5 MT`uQ}1,P gѫ/lKw`b;ˉ6]-O+J0O_Ǣ:^ǯ/P݉,~I +Kk ׊fA2q"=.WGLGo8L>b~v6YA hYwRkᦊOYEAuAM퓅FWwyTAHe-X~06PBȳ!üll`j|JrCoiF5*vf[hvY[qtu?D3mRga>ڛ)k2G&c~ MGWwg mc=ۏHV +h#iۏhPhYeNdӡf&#d(^ 18RzH y~뿗Sx/}6+ŀ (B24Hܗ{*}edݣlءhtap͇fySVe24[lqFs=8> S"Xbh4-_flow)pm1,uh;65L>,EJ}}š{BK,v\Suc\, &!{QMl~(gq?Mnr+FW;M,OnN CCQ:4| I(`ZY^o[1Xqb`w ![fbe5ʈ2|Z9|Ir^ywKO^-PQg}¢(a,B5E۲b_+5 b]xh +k<410OkGqTԪ1&>cm|cE.N5csg柹ߢf'*`X_R2syl!gzmgmcv]ea,Cy"|gq7M|?s ~ߖ¥ޒ&Y8X*UHF-itD:/]l49KvSry^n' +S"ʏ\e2[,VV)*(;0ݫV('ʿKJTU5&^:Hf5@_OJLF™D^D%*-PBcU…^$L&0P#$*H{c=DVa(bU(P#tPb@K#&ga8C,& >a4EOA~T4TFnF`TQĬGl75CN"H F*4 WE%.`U QB}Aԉ8!ہ M\-vH׃ߠ6Oo,ԃ+ b/>,z,me~+ ;Az]۫{uVZZvݾVTցu'<7Wzֹ[;"G^!/гcc:KuxqI #K?_KsJw++ }Ҭ-yK[~m^ɲ̟,N6^幧Sge$jǎ +-_+ jeu5 $7ovTӵQ0ҽ3O\,[|,:E~kD2gҙ]ӌ U7Ϛ ^{ZKCi%Sǻל̯~g'Q +Նɵ?ȯX<_ϵ^,-{wRq5ub VJ[|^wUZo!KݢyyGĥֶ4"s/- JB!^kίNlCܔ-:K4w@`3! JKˉW &dWqXqg튾֭ 4n_}tsrLӪڤ#qT-41VYu*Ϻr> 1tHk/㾜nX"+$w2amLTͣve\uX`ܗ;93,)Hƞ,~eap7ˢ3ϕ{3%pz `?|t (z(b!C$|j0)?l y01ߚ Tnx0 kPsކfbv8 0;C;t TxFD$ē$BOP2d;%c2L&Ed)%ee2TU, Md5Yy\OdKr|y%r kJg^85hf4a4i9it:c9c ]JUtEn>.%ӣ#z~F/ޠF3cɢX֏Ų8fa,='PQ3CЇʧ(0DD9eh-F%R=r}%L#6b򨣊Qqr[^A )8ꖇ LP˔.3YWF^]paW4 + Gu!]+WV/QVIAar dIB(q|~@U3hRgv,Mͨh>p+4 pXXI g+N8q.D( "Љ¬5pNpanbf@1(3@f;̛7־\xك/޾쁏6ظvPyk_MK31<<e#v +Pv5zP(0sMw! wk].vq`䦱n 97r@~6xƒk. .Ҍ~-%dKʳ/rb}B^B}*s~Rl jʍTMwn@,g?–\]W._} +G۝ۻPO}}Oq۽a}gt|iu/|u5&B< +%cF6IWVjDoPkjmFgir|?tMEi6,YYu}@֓)ӒU~x7fy/\m>_݇T:/[ӣaˇ,.і8OW0'KVgI\S븲s|?sȘۋq[զYi +CӞݧg6lYjّiN-y6'mNE%&95ȆQ 'JV+ Iu;XK}qq;W/kvKqwzG"ëEwGm(TR4!jh^yprKWDvlέk'4bĴhHr&m͞j?lKζ  \X{48Mq~?Cf ڵ:.uVĢ/ʮ3}yklI۬%㊴+N8TAZɆ,RdG&i +Z@4B(9YӋjI EGi;Ah}͚R x_ҸiBr뛵\GҥJ2,A!K*Hg`'o |v}]\9@M菤[,o7:x +~ l//#rek?Awe55Bn0ShBTr-X$x<VG*0X V!qUtؾTNɚKt.9He|uWP"3YWK}) a~IKI⭶I=zac-}lQsB'r^sDfHMX~>?O!~@o/F"'v]0?5i;Zo>Ms#4aJ5(];YUҕ +Ǩ.+̮xld{g YLO&jdbݖb>f.@ItZVL%A%2SxDhD"ZܝE +_:%;c-sh)42ͣ$<$'G~V? cK؄Fhg3p28 H"'".9r ƀXq0uG: +0ȡ`ٌ<=A#y y8N&?ȃAf!ɇm(9A/a''x<>ݠqt `ZN#L[Kd~ ٳ7~ 2{DencE[D54=-A PKL ]eE8HU-z0x}`"J㏡O|W!㹋D|Xg)>Oi:AٍMl&d4=_w#AMɲK F5 ~N> +endobj +87 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +88 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +89 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 79 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 0 0 0 0 0 0 0 556 333 0 0 0 0 0 +0 722 0 722 722 667 611 778 0 278 0 0 611 833 0 778 +667 0 722 667 611 722 667 944 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 0 0 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 80 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 87 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 0 944 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 81 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 371 0 0 840 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 606 0 606 0 +0 778 611 709 774 611 556 0 832 337 0 0 611 946 831 786 +604 786 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 82 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 600 600 600 0 600 0 600 600 600 0 600 600 600 600 +600 600 600 600 600 0 600 600 600 600 600 0 0 600 600 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 +0 0 0 0 0 600 600 0 600 600 0 0 0 0 600 600 +0 0 0 600 600 0 0 0 600 0 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 83 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBJMJH+Symbol +/Encoding /Identity-H +/DescendantFonts [ 90 0 R ] +/ToUnicode 91 0 R +>> +endobj +90 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBJMJH+Symbol +/FontDescriptor 84 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 0 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 86 0 R +>> +endobj +19 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 35 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 600 0 0 0 600 600 +600 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 +600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 +600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 87 0 R +>> +endobj +20 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 88 +/Widths [600 0 0 0 600 600 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 600 600 600 600 600 600 600 0 600 0 0 600 +600 600 600 600 0 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 88 0 R +>> +endobj +33 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 89 0 R +>> +endobj +91 0 obj +<< +/Filter /FlateDecode +/Length 226 +>> +stream +HTP=o [uCTXK~IsH .F~6?O}E;`Gƍ,g@*ph>L\3p7R>{| uRqApblҋYUǎ{BP czt&cL:!NBOi発.2~|fE{T.uǛ-V5nbc? m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 39 0 R +/Contents 38 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +48 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 50 0 R +/Contents 49 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +72 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 74 0 R +/Contents 73 0 R +>> +endobj +75 0 obj +<< +/Type /Page +/Parent 78 0 R +/Resources 77 0 R +/Contents 76 0 R +>> +endobj +92 0 obj +<< +/S /D +>> +endobj +93 0 obj +<< +/Nums [0 92 0 R ] +>> +endobj +12 0 obj +<< +/Type /Pages +/Kids [1 0 R 13 0 R 16 0 R 21 0 R 24 0 R 27 0 R 30 0 R 34 0 R 37 0 R 40 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [43 0 R 48 0 R 51 0 R 54 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R 72 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +78 0 obj +<< +/Type /Pages +/Kids [75 0 R] +/Count 1 +/Parent 46 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [12 0 R 47 0 R 78 0 R ] +/Count 21 +/MediaBox [0 0 612 792] +>> +endobj +94 0 obj +<< +/CreationDate (D:20210202102702-06'00') +/ModDate (D:20210202102702-06'00') +/Producer (Apple pstopdf) +>> +endobj +95 0 obj +<< +/Type /Catalog +/Pages 46 0 R +/PageLabels 93 0 R +>> +endobj +xref +0 96 +0000000000 65535 f +0000182074 00000 n +0000000016 00000 n +0000005286 00000 n +0000177932 00000 n +0000178143 00000 n +0000178579 00000 n +0000178891 00000 n +0000179442 00000 n +0000179971 00000 n +0000180325 00000 n +0000155606 00000 n +0000183903 00000 n +0000182155 00000 n +0000005452 00000 n +0000009949 00000 n +0000182239 00000 n +0000010105 00000 n +0000017657 00000 n +0000180725 00000 n +0000181061 00000 n +0000182323 00000 n +0000017838 00000 n +0000023959 00000 n +0000182407 00000 n +0000024115 00000 n +0000029206 00000 n +0000182491 00000 n +0000029362 00000 n +0000037370 00000 n +0000182575 00000 n +0000037537 00000 n +0000045387 00000 n +0000181365 00000 n +0000182659 00000 n +0000045557 00000 n +0000053338 00000 n +0000182743 00000 n +0000053493 00000 n +0000060396 00000 n +0000182827 00000 n +0000060565 00000 n +0000067291 00000 n +0000182911 00000 n +0000067446 00000 n +0000073432 00000 n +0000184252 00000 n +0000184040 00000 n +0000182995 00000 n +0000073615 00000 n +0000080263 00000 n +0000183079 00000 n +0000080431 00000 n +0000089188 00000 n +0000183163 00000 n +0000089369 00000 n +0000098238 00000 n +0000183247 00000 n +0000098419 00000 n +0000108240 00000 n +0000183331 00000 n +0000108397 00000 n +0000114063 00000 n +0000183415 00000 n +0000114244 00000 n +0000123005 00000 n +0000183499 00000 n +0000123151 00000 n +0000130183 00000 n +0000183583 00000 n +0000130364 00000 n +0000142359 00000 n +0000183667 00000 n +0000142542 00000 n +0000152979 00000 n +0000183751 00000 n +0000153149 00000 n +0000155486 00000 n +0000184178 00000 n +0000155747 00000 n +0000155944 00000 n +0000156150 00000 n +0000156345 00000 n +0000156545 00000 n +0000156736 00000 n +0000156926 00000 n +0000177121 00000 n +0000177324 00000 n +0000177526 00000 n +0000177727 00000 n +0000180113 00000 n +0000181775 00000 n +0000183835 00000 n +0000183863 00000 n +0000184351 00000 n +0000184474 00000 n +trailer +<< +/Size 96 +/Root 95 0 R +/Info 94 0 R +/ID [<83b3a4a4b1fb775d689223188b8063c6><83b3a4a4b1fb775d689223188b8063c6>] +>> +startxref +184544 +%%EOF diff --git a/docs/medley-irm/20-CLISP.TEDIT b/docs/medley-irm/20-CLISP.TEDIT new file mode 100644 index 00000000..b16edf46 --- /dev/null +++ b/docs/medley-irm/20-CLISP.TEDIT @@ -0,0 +1,107 @@ +INTERLISP-D REFERENCE MANUAL CLISP "20"20. CLISP 2 The syntax of Lisp is very simple. It can be described concisely, but it makes Lisp difficult to read and write without tools. Unlike many languages, there are no reserved words in Lisp such as IF, THEN, FOR, DO, etc., nor reserved characters like +, -, =, , etc. The only components of the language are atoms and delimiters. This eliminates the need for parsers and precedence rules, and makes Lisp programs easy to mainpuilate. For example, a Lisp interpreter can be written in one or two pages of Lisp code. This makes Lisp the most suitable programming language for writing programs that deal with other programs as data. Human language is based on more complicated structures and relies more on special words to carry the meaning. The definiton of the factorial function looks like this in Lisp: (COND ((ZEROP N) 1) (T (TIMES N (FACTORIAL ((SUB1 N)))))) This definition is easy to read for a machine but difficult to read for a human. CLISP(CLISP NIL NIL NIL ("21") 1) is designed to make Interlisp programs easier to read and write. CLISP does this by translating various operators, conditionals, and iterative statements to Interlisp. For example, factorial can be written in CLISP: (IF N = 0 THEN 1 ELSE N*(FACTORIAL N-1)) CLISP will translate this expression to the form in the example above. The translation will take place when the form is read so there are no performance penalties. You should view CLISP as a shothand for produceing Lisp programs. CLISP makes a program easy to read and sometimes more compact. CLISP is implemented via the error correction machinery in Interlisp (see Chapter 20). Any expression that Interlisp thinks is well-formed will never be seen by CLISP This means that interpreted programs that do not use CLISP constructs do not pay for its availability by slower execution time. In fact, the Interlisp interpreter does not know about CLISP at all. When the interpreter finds an error it calls an error routine which in turn invokes the Do-What-I-Mean (DWIM) analyzer. The DWIM analyzer knows how to deal with CLISP expressions. If the expression in question turns out to be a CLISP construct, the translated form is returned to the interpreter. In addition, the original CLISP expression is modified so that it becomes the correctly translated Interlisp form. In this way, the analysis and translation are done only once. Integrating CLISP into Medley makes possible Do-What-I-Mean features for CLISP constructs as well as for pure Lisp expressions. For example, if you have defined a function named GET-PARENT, CLISP would know not to attempt to interpret the form (GET-PARENT) as an arithmetic infix operation. (Actually, CLISP would never get to see this form, since it does not contain any errors.) If you mistakenly write (GET-PRAENT), CLISP would know you meant (GET-PARENT), and not (DIFFERENCE GET PRAENT), by using the information that PARENT is not the name of a variable, and that GET-PARENT is the name of a user function whose spelling is "very close" to that of GET-PRAENT. Similarly, by using information about the program's environment not readily available to a preprocessor, CLISP can successfully resolve the following sorts of ambiguities: 1. (LIST X*FACT N), where FACT is the name of a variable, means (LIST (X*FACT) N). 2. (LIST X*FACT N), where FACT is not the name of a variable but instead is the name of a function, means (LIST X*(FACT N)), i.e., N is FACT's argument. 3. (LIST X*FACT(N)), FACT the name of a function (and not the name of a variable), means (LIST X*(FACT N)). 4. Cases 1, 2 and 3 with FACT misspelled! The first expression is correct both from the standpoint of CLISP syntax and semantics so the change would be made notification. In the other cases, you would be informed or consulted about what was taking place. For example, suppose you write the expression (LIST X*FCCT N). Assume also that there was both a function named FACT and a variable named FCT. 1. You will first be asked if FCCT is a misspelling of FCT. If you say YES, the expression will be interpreted as (LIST (X*FCT) N). If you say NO, you will be asked if FCCT was a misspelling of FACT, i.e., if you intended X*FCCT N to mean X*(FACT N). 2. If you say YES to this question, the indicated transformation will be performed. If you say NO, the system will ask if X*FCCT should be treated as CLISP, since FCCT is not the name of a (bound) variable. 3. If you say YES, the expression will be transformed, if NO, it will be left alone, i.e., as (LIST X*FCCT N). Note that we have not even considered the case where X*FCCT is itself a misspelling of a variable name, e.g., a variable named XFCT (as with GET-PRAENT). This sort of transformation will be considered after you said NO to X*FCCT N -> X*(FACT N). The question of whether X*FCCT should be treated as CLISP is important because Interlisp users may have programs that employ identifiers containing CLISP operators. Thus, if CLISP encounters the expression A/B in a context where either A or B are not the names of variables, it will ask you if A/B is intended to be CLISP, in case you really do have a free variable named A/B. Note: Through the discussion above, we speak of CLISP or DWIM asking you. Actually, if you typed in the expression in question for immediate execution, you are simply informed of the transformation, on the grounds that you would prefer an occasional misinterpretation rather than being continuously bothered, especially since you can always retype what you intended if a mistake occurs, and ask the programmer's assistant to UNDO the effects of the mistaken operations if necessary. For transformations on expressions in your programs, you can tell CLISP whether you wish to operate in CAUTIOUS or TRUSTING mode. In the former case (most typical) you will be asked to approve transformations, in the latter, CLISP will operate as it does on type-in, i.e., perform the transformation after informing you. CLISP can also handle parentheses errors caused by typing 8 or 9 for ( or ). (On most terminals, 8 and 9 are the lowercase characters for ( and ), i.e., ( and 8 appear on the same key, as do ) and 9.) For example, if you write N*8FACTORIAL N-1, the parentheses error can be detected and fixed before the infix operator * is converted to the Interlisp function TIMES. CLISP is able to distinguish this situation from cases like N*8*X meaning (TIMES N 8 X), or N*8X, where 8X is the name of a variable, again by using information about the programming environment. In fact, by integrating CLISP with DWIM, CLISP has been made sufficiently tolerant of errors that almost everything can be misspelled! For example, CLISP can successfully translate the definition of FACTORIAL: (IFF N = 0 THENN1 ESLE N*8FACTTORIALNN-1) to the corresponding COND, while making five spelling corrections and fixing the parenthesis error. CLISP also contains a facility for converting from Interlisp back to CLISP, so that after running the above incorrect definition of FACTORIAL, you could "clispify" the now correct version to obtain (IF N = 0 THEN 1 ELSE N*(FACTORIAL N-1)). This sort of robustness prevails throughout CLISP. For example, the iterative statement permits you to say things like: (FOR OLD X FROM M TO N DO (PRINT X) WHILE (PRIMEP X)) However, you can also write OLD (XM), (OLD XM), (OLD (XM)), permute the order of the operators, e.g., (DO PRINT X TO N FOR OLD XM WHILE PRIMEP X), omit either or both sets of parentheses, misspell any or all of the operators FOR, OLD, FROM, TO, DO, or WHILE, or leave out the word DO entirely! And, of course, you can also misspell PRINT, PRIMEP, M or N! In this example, the only thing you could not misspell is the first X, since it specifies the name of the variable of iteration. The other two instances of X could be misspelled. CLISP is well integrated into Medley. For example, the above iterative statement translates into an equivalent Interlisp form using PROG, COND, GO, etc. When the interpreter subsequently encounters this CLISP expression, it automatically obtains and evaluates the translation. Similarly, the compiler "knows" to compile the translated form. However, if you PRETTYPRINT your program, PRETTYPRINT "knows" to print the original CLISP at the corresponding point in your function. Similarly, when you edit your program, the editor keeps the translation invisible to you. If you modify the CLISP, the translation is automatically discarded and recomputed the next time the expression is evaluated. In short, CLISP is not a language at all, but rather a system. It plays a role analagous to that of the programmer's assistant (Chapter 13). Whereas the programmer's assistant is an invisible intermediary agent between your console requests and the Interlisp executive, CLISP sits between your programs and the Interlisp interpreter. Only a small effort has been devoted to defining the core syntax of CLISP. Instead, most of the effort has been concentrated on providing a facility which "makes sense" out of the input expressions using context information as well as built-in and acquired information about user and system programs. It has been said that communication is based on the intention of the speaker to produce an effect in the recipient. CLISP operates under the assumption that what you say is intended to represent a meaningful operation, and therefore tries very hard to make sense out of it. The motivation behind CLISP is not to provide you with many different ways of saying the same thing, but to enable you to worry less about the syntactic aspects of your communication with the system. In other words, it gives you a new degree of freedom by permitting you to concentrate more on the problem at hand, rather than on translation into a formal and unambiguous language. DWIM and CLISP are invoked on iterative statements because CAR of the iterative statement is not the name of a function, and hence generates an error. If you define a function by the same name as an i.s. operator, e.g., WHILE, TO, etc., the operator will no longer have the CLISP interpretation when it appears as CAR of a form, although it will continue to be treated as an i.s. operator if it appears in the interior of an i.s. To alert you, a warning message is printed, e.g., (WHILE DEFINED, THEREFORE DISABLED IN CLISP). CLISP(CLISP NIL NIL NIL ("21") 4 SUBNAME INTERACTION% WITH% USER SUBTEXT interaction% with% user) Interaction with User 1 Syntactically and semantically well formed CLISP transformations are always performed without informing you. Other CLISP transformations described in the previous section, e.g., misspellings of operands, infix operators, parentheses errors, unary minus - binary minus errors, all follow the same protocol as other DWIM transformations (Chapter 19). That is, if DWIM has been enabled in TRUSTING mode, or the transformation is in an expression you typed in for immediate execution, your approval is not requested, but you are informed. However, if the transformation involves a user program, and DWIM was enabled in CAUTIOUS mode, you will be asked to approve. If you say NO, the transformation is not performed. Thus, in the previous section, phrases such as "one of these (transformations) succeeds" and "the transformation LAST-ELL -> LAST-EL would be found" etc., all mean if you are in CAUTIOUS mode and the error is in a program, the corresponding transformation will be performed only if you approve (or defaults by not responding). If you say NO, the procedure followed is the same as though the transformation had not been found. For example, if A*B appears in the function FOO, and B is not bound (and no other transformations are found) you would be asked A*B [IN FOO] TREAT AS CLISP ? (The waiting time on such interactions is three times as long as for simple corrections, i.e., 3*DWIMWAIT). In certain situations, DWIM asks for approval even if DWIM is enabled in TRUSTING mode. For example, you are always asked to approve a spelling correction that might also be interpreted as a CLISP transformation, as in LAST-ELL -> LAST-EL. If you approved, A*B would be transformed to (ITIMES A B), which would then cause a U.B.A.B. error in the event that the program was being run (remember the entire discussion also applies to DWIMifying). If you said NO, A*B would be left alone. If the value of CLISPHELPFLG = NIL (initally T), you will not be asked to approve any CLISP transformation. Instead, in those situations where approval would be required, the effect is the same as though you had been asked and said NO. CLISP(CLISP NIL NIL NIL ("21") 4 SUBNAME CHARACTER% OPERATORS SUBTEXT character% operators) Character Operators 1 CLISP recognizes a number of special characters operators, both prefix and infix, which are translated into common expressions. For example, the character + is recognized to represent addition, so CLISP translates the symbol A+B to the form (IPLUS A B). Note that CLISP is invoked, and this translation is made, only if an error occurs, such as an unbound atom error or an undefined function error for the perfectly legitamate symbol A+B. Therefore you may choose not to use these facilities with no penalty, similar to other CLISP facilities. You have a lot of flexability in using CLISP character operators. A list can always be substituted for a symbol, and vice versa, without changing the interpretation of a phrase. For example, if the value of (FOO X) is A, and the value of (FIE Y) is B, then (LIST (FOO X)+(FIE Y)) has the same value as (LIST A+B). Note that the first expression is a list of four elements: the atom "LIST", the list "(FOO X)", the atom "+", and the list "(FIE X)", whereas the second expression, (LIST A+B), is a list of only two elements: the symbol "LIST" and the symbol "A+B". Since (LIST (FOO X)+(FIE Y)) is indistinguishable from (LIST (FOO X) + (FIE Y)) because spaces before or after parentheses have no effect on the Interlisp READ program, to be consistent, extra spaces have no effect on atomic operands either. In other words, CLISP will treat (LIST A+ B), (LIST A +B), and (LIST A + B) the same as (LIST A+B). Note: CLISP does not use its own special READ program because this would require you to explicitly identify CLISP expressions, instead of being able to intermix Interlisp and CLISP. +(+ (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] -(- (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] *(* (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] /(/ (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] ( (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] CLISP recognizes +, -, *, /, and as the normal arithmetic infix operators. The - is also recognized as the prefix operator, unary minus. These are converted to PLUS, DIFFERENCE (or in the case of unary minus, MINUS), TIMES, QUOTIENT, and EXPT. Normally, CLISP uses the "generic" arithmetic functions PLUS, TIMES, etc. CLISP contains a facility for declaring which type of arithmetic is to be used, either by making a global declaration, or by separate declarations about individual functions or variables. The usual precedence rules apply (although you can easily change them), i.e., * has higher precedence than + so that A+B*C is the same as A+(B*C), and both * and / are lower than so that 2*X2 is the same as 2*(X2). Operators of the same precedence group from left to right, e.g., A/B/C is equivalent to (A/B)/C. Minus is binary whenever possible, i.e., except when it is the first operator in a list, as in (-A) or (-A), or when it immediately follows another operator, as in A*-B. Note that grouping with parentheses can always be used to override the normal precedence grouping, or when you are not sure how a particular expression will parse. The complete order of precedence for CLISP operators is given below. Note that + in front of a number will disappear when the number is read, e.g., (FOO X +2) is indistinguishable from (FOO X 2). This means that (FOO X +2) will not be interpreted as CLISP, or be converted to (FOO (IPLUS X 2)). Similarly, (FOO X -2) will not be interpreted the same as (FOO X-2). To circumvent this, always type a space between the + or - and a number if an infix operator is intended, e.g., write (FOO X + 2). =(= (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] GT(GT (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] LT(LT (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] GE(GE (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] LE(LE (CLISP Operator) NIL NIL ("21") 5) [CLISP Operator] These are infix operators for "Equal", "Greater Than", "Less Than", "Greater Than or Equal", and "Less Than or Equal". GT, LT, GE, and LE are all affected by the same declarations as + and *, with the initial default to use GREATERP and LESSP. Note that only single character operators, e.g., +, , =, etc., can appear in the interior of an atom. All other operators must be set off from identifiers with spaces. For example, XLTY will not be recognized as CLISP. In some cases, DWIM will be able to diagnose this situation as a run-on spelling error, in which case after the atom is split apart, CLISP will be able to perform the indicated transformation. A number of Lisp functions, such as EQUAL, MEMBER, AND, OR, etc., can also be treated as CLISP infix operators. New infix operators can be easily added (see the CLISP Internal Convetions section below). Spelling correction on misspelled infix operators is peformed using CLISPINFIXSPLST as a spelling list. AND is higher than OR, and both AND and OR are lower than the other infix operators, so (X OR Y AND Z) is the same as (X OR (Y AND Z)), and (X AND Y EQUAL Z) is the same as (X AND (Y EQUAL Z)). All of the infix predicates have lower precedence than Interlisp forms, since it is far more common to apply a predicate to two forms, than to use a Boolean as an argument to a function. Therefore, (FOO X GT FIE Y) is translated as ((FOO X) GT (FIE Y)), rather than as (FOO (X GT (FIE Y))). However, you can easily change this. :(: (CLISP Operator) NIL NIL ("21") 6) [CLISP Operator] X:N extracts the Nth element of the list X. FOO:3 specifies the third element of FOO, or (CADDR FOO). If N is less than zero, this indicates elements counting from the end of the list; i.e. FOO:-1 is the last element of FOO. : operators can be nested, so FOO:1:2 means the second element of the first element of FOO, or (CADAR FOO). The : operator can also be used for extracting substructures of records (see Chapter 8). Record operations are implemented by replacing expressions of the form X:FOO by (fetch FOO of X). Both lower- and uppercase are acceptable. : is also used to indicate operations in the pattern match facility (see Chapter 12). X:(& 'A -- 'B) translates to (match X with (& 'A -- 'B)) .(%. (CLISP Operator) NIL NIL ("21") 6) [CLISP Operator] In combination with :, a period can be used to specify the "data path" for record operations. For example, if FOO is a field of the BAR record, X:BAR.FOO is translated into (fetch (BAR FOO) of X). Subrecord fields can be specified with multiple periods: X:BAR.FOO.BAZ translates into (fetch (BAR FOO BAZ) of X). Note: If a record contains fields with periods in them, CLISPIFY will not translate a record operation into a form using periods to specify the data path. For example, CLISPIFY will NOT translate (fetch A.B of X) into X:A.B. ::(:: (CLISP Operator) NIL NIL ("21") 6) [CLISP Operator] X:N, returns the Nth tail of the list X. For example, FOO::3 is (CDDDR FOO), and FOO::-1 is (LAST FOO). [CLISP Operator] is used to indicate assignment. For example, XY translates to (SETQ X Y). If X does not have a value, and is not the name of one of the bound variables of the function in which it appears, spelling correction is attempted. However, since this may simply be a case of assigning an initial value to a new free variable, DWIM will always ask for approval before making the correction. In conjunction with : and ::, can also be used to perform a more general type of assignment, involving structure modification. For example, X:2Y means "make the second element of X be Y", in Interlisp terms (RPLACA (CDR X) Y). Note that the value of this operation is the value of RPLACA, which is (CDR X), rather than Y. Negative numbers can also be used, e.g., X:-2_Y, which translates to (RPLACA (NLEFT X 2) Y). You can indicate you want /RPLACA and /RPLACD used (undoable version of RPLACA and RPLACD, see Chapter 13), or FRPLACA and FRPLACD (fast versions of RPLACA and RPLACD, see Chapter 3), by means of CLISP declarations. The initial default is to use RPLACA and RPLACD. is also used to indicate assignment in record operations (X:FOOY translates to (replace FOO of X with Y).), and pattern match operations (Chapter 12). has different precedence on the left from on the right. On the left, is a "tight" operator, i.e., high precedence, so that A+BC is the same as A+(BC). On the right, has broader scope so that AB+C is the same as A(B+C). On type-in, $FORM (where $ is the escape key) is equivalent to set the "last thing mentioned", i.e., is equivalent to (SET LASTWORD FORM) (see Chapter 20). For example, immediately after examining the value of LONGVARIABLENAME, you could set it by typing $ followed by a form. Note that an atom of the form XY, appearing at the top level of a PROG, will not be recognized as an assignment statement because it will be interpreted as a PROG label by the Interlisp interpreter, and therefore will not cause an error, so DWIM and CLISP will never get to see it. Instead, one must write (XY). < [CLISP Operator] > [CLISP Operator] Angle brackets are used in CLISP to indicate list construction. The appearance of a "<" corresponds to a "(" and indicates that a list is to be constructed containing all the elements up to the corresponding ">". For example, > translates to (LIST A B (LIST C)). ! can be used to indicate that the next expression is to be inserted in the list as a segment, e.g., translates to (CONS A (CONS B C)) and to (APPEND A B (LIST C)). !! is used to indicate that the next expression is to be inserted as a segment, and furthermore, all list structure to its right in the angle brackets is to be physically attached to it, e.g., translates to (NCONC1 A B), and to (NCONC A (APPEND B C)). Not (NCONC (APPEND A B) C), which would have the same value, but would attach C to B, and not attach either to A. Note that <, !, !!, and > need not be separate atoms, for example, may be written equally well as < A B !C >. Also, arbitrary Interlisp or CLISP forms may be used within angle brackets. For example, one can write which translates to (CONS (SETQ FOO (FIE X)) Y). CLISPIFY converts expressions in CONS, LIST, APPEND, NCONC, NCONC1, /NCONC, and /NCONC1 into equivalent CLISP expressions using <, >, !, and !!. Note: brackets differ from other CLISP operators. For example, translates to (LIST A B (QUOTE C)) even though following ', all operators are ignored for the rest of the identifier. (This is true only if a previous unmatched < has been seen, e.g., (PRINT 'A>B) will print the atom A>B.) Note however that D> is equivalent to (LIST A B (QUOTE C>) D). ' [CLISP Operator] CLISP recognizes ' as a prefix operator. ' means QUOTE when it is the first character in an identifier, and is ignored when it is used in the interior of an identifier. Thus, X = 'Y means (EQ X (QUOTE Y)), but X = CAN'T means (EQ X CAN'T), not (EQ X CAN) followed by (QUOTE T). This enables users to have variable and function names with ' in them (so long as the ' is not the first character). Following ', all operators are ignored for the rest of the identifier, e.g., '*A means (QUOTE *A), and 'X=Y means (QUOTE X=Y), not (EQ (QUOTE X) Y). To write (EQ (QUOTE X) Y), one writes Y='X, or 'X =Y. This is one place where an extra space does make a difference. On type-in, '$ (escape) is equivalent to (QUOTE VALUE-OF-LASTWORD) (see Chapter 19). For example, after calling PRETTYPRINT on LONGFUNCTION, you could move its definition to FOO by typing (MOVD '$ 'FOO). Note that this is not (MOVD $ 'FOO), which would be equivalent to (MOVD LONGFUNCTION 'FOO), and would (probably) cause a U.B.A. LONGFUNCTION error, nor MOVD($ FOO), which would actually move the definition of $ to FOO, since DWIM and the spelling corrector would never be invoked. ~ [CLISP Operator] CLISP recognizes ~ as a prefix operator meaning NOT. ~ can negate a form, as in ~(ASSOC X Y), or ~X, or negate an infix operator, e.g., (A ~GT B) is the same as (A LEQ B). Note that ~A = B means (EQ (NOT A) B). When ~ negates an operator, e.g., ~=, ~LT, the two operators are treated as a single operator whose precedence is that of the second operator. When ~ negates a function, e.g., (~FOO X Y), it negates the whole form, i.e., (~(FOO X Y)). Order of Precedence of CLISP Operators: ' : (left precedence) - (unary), ~ *, / +, - (binary) (right precedence) = Interlisp forms LT, GT, EQUAL, MEMBER, etc. AND OR IF, THEN, ELSEIF, ELSE iterative statement operators Declarations 1 CLISP declarations are used to affect the choice of Interlisp function used as the translation of a particular operator. For example, A+B can be translated as either (PLUS A B), (FPLUS A B), or (IPLUS A B), depending on the declaration in effect. Similarly X:1Y can mean (RPLACA X Y), (FRPLACA X Y), or (/RPLACA X Y), and either (NCONC1 A B) or (/NCONC1 A B). Note that the choice of function on all CLISP transformations are affected by the CLISP declaration in effect, i.e., iterative statements, pattern matches, record operations, as well as infix and prefix operators. (CLISPDEC(CLISPDEC (Function) NIL NIL ("21") 8) DECLST) [Function] Puts into effect the declarations in DECLST. CLISPDEC performs spelling corrections on words not recognized as declarations. CLISPDEC is undoable. You can makes (changes) a global declaration by calling CLISPDEC with DECLST a list of declarations, e.g., (CLISPDEC '(FLOATING UNDOABLE)). Changing a global declaration does not affect the speed of subsequent CLISP transformations, since all CLISP transformation are table driven (i.e., property list), and global declarations are accomplished by making the appropriate internal changes to CLISP at the time of the declaration. If a function employs local declarations (described below), there will be a slight loss in efficiency owing to the fact that for each CLISP transformation, the declaration list must be searched for possibly relevant declarations. Declarations are implemented in the order that they are given, so that later declarations override earlier ones. For example, the declaration FAST specifies that FRPLACA, FRPLACD, FMEMB, and FLAST be used in place of RPLACA, RPLACD, MEMB, and LAST; the declaration RPLACA specifies that RPLACA be used. Therefore, the declarations (FAST RPLACA RPLACD) will cause FMEMB, FLAST, RPLACA, and RPLACD to be used. The initial global declaration is MIXED and STANDARD. The table below gives the declarations available in CLISP, and the Interlisp functions they indicate: Declaration: Interlisp Functions to be used: MIXED PLUS, MINUS, DIFFERENCE, TIMES, QUOTIENT, LESSP, GREATERP INTEGER or FIXED IPLUS, IMINUS, IDIFFERENCE, ITIMES, IQUOTIENT, ILESSP, IGREATERP FLOATING FPLUS, FMINUS, FDIFFERENCE, FTIMES, FQUOTIENT, LESSP, FGREATERP FAST FRPLACA, FRPLACD, FMEMB, FLAST, FASSOC UNDOABLE /RPLACA, /RPLACD, /NCONC, /NCONC1, /MAPCONC, /MAPCON STANDARD RPLACA, RPLACD, MEMB, LAST, ASSOC, NCONC, NCONC1, MAPCONC, MAPCON RPLACA, RPLACD, /RPLACA, etc. corresponding function You can also make local declarations affecting a selected function or functions by inserting an expression of the form (CLISP: . DECLARATIONS) immediately following the argument list, i.e., as CADDR of the definition. Such local declarations take precedence over global declarations. Declarations affecting selected variables can be indicated by lists, where the first element is the name of a variable, and the rest of the list the declarations for that variable. For example, (CLISP: FLOATING (X INTEGER)) specifies that in this function integer arithmetic be used for computations involving X, and floating arithmetic for all other computations, where "involving" means where the variable itself is an operand. For example, with the declaration (FLOATING (X INTEGER)) in effect, (FOO X)+(FIE X) would translate to FPLUS, i.e., use floating arithmetic, even though X appears somewhere inside of the operands, whereas X+(FIE X) would translate to IPLUS. If there are declarations involving both operands, e.g., X+Y, with (X FLOATING) (Y INTEGER), whichever appears first in the declaration list will be used. You can also make local record declarations by inserting a record declaration, e.g., (RECORD --), (ARRAYRECORD --), etc., in the local declaration list. In addition, a local declaration of the form (RECORDS A B C) is equivalent to having copies of the global declarations A, B, and C in the local declaration. Local record declarations override global record declarations for the function in which they appear. Local declarations can also be used to override the global setting of certain DWIM/CLISP parameters effective only for transformations within that function, by including in the local declaration an expression of the form (VARIABLE = VALUE), e.g., (PATVARDEFAULT = QUOTE). The CLISP: expression is converted to a comment of a special form recognized by CLISP. Whenever a CLISP transformation that is affected by declarations is about to be performed in a function, this comment will be searched for a relevant declaration, and if one is found, the corresponding function will be used. Otherwise, if none are found, the global declaration(s) currently in effect will be used. Local declarations are effective in the order that they are given, so that later declarations can be used to override earlier ones, e.g., (CLISP: FAST RPLACA RPLACD) specifies that FMEMB, FLAST, RPLACA, and RPLACD be used. An exception to this is that declarations for specific variables take precedence of general, function-wide declarations, regardless of the order of appearance, as in (CLISP: (X INTEGER) FLOATING). CLISPIFY also checks the declarations in effect before selecting an infix operator to ensure that the corresponding CLISP construct would in fact translate back to this form. For example, if a FLOATING declaration is in effect, CLISPIFY will convert (FPLUS X Y) to X+Y, but leave (IPLUS X Y) as is. If (FPLUS X Y) is CLISPIFYed while a FLOATING declaration is under effect, and then the declaration is changed to INTEGER, when X+Y is translated back to Interlisp, it will become (IPLUS X Y). CLISP Operation 1 CLISP is a part of the basic Medley system. Without any special preparations, you can include CLISP constructs in programs, or type them in directly for evaluation (in EVAL or APPLY format), then, when the "error" occurrs, and DWIM is called, it will destructively transform the CLISP to the equivalent Interlisp expression and evaluate the Interlisp expression. CLISP transformations, like all DWIM corrections, are undoable. User approval is not requested, and no message is printed. This entire discussion also applies to CLISP transformation initiated by calls to DWIM from DWIMIFY. However, if a CLISP construct contains an error, an appropriate diagnostic is generated, and the form is left unchanged. For example, if you write (LIST X+Y*), the error diagnostic MISSING OPERAND AT X+Y* IN (LIST X+Y*) would be generated. Similarly, if you write (LAST+EL X), CLISP knows that ((IPLUS LAST EL) X) is not a valid Interlisp expression, so the error diagnostic MISSING OPERATOR IN (LAST+EL X) is generated. (For example, you might have meant to say (LAST+EL*X).) If LAST+EL were the name of a defined function, CLISP would never see this form. Since the bad CLISP transformation might not be CLISP at all, for example, it might be a misspelling of a user function or variable, DWIM holds all CLISP error messages until after trying other corrections. If one of these succeeds, the CLISP message is discarded. Otherwise, if all fail, the message is printed (but no change is made). For example, suppose you type (R/PLACA X Y). CLISP generates a diagnostic, since ((IQUOTIENT R PLACA) X Y) is obviously not right. However, since R/PLACA spelling corrects to /RPLACA, this diagnostic is never printed. Note: CLISP error messages are not printed on type-in. For example, typing X+*Y will just produce a U.B.A. X+*Y message. If a CLISP infix construct is well formed from a syntactic standpoint, but one or both of its operands are atomic and not bound, it is possible that either the operand is misspelled, e.g., you wrote X+YY for X+Y, or that a CLISP transformation operation was not intended at all, but that the entire expression is a misspelling. For the purpose of DWIMIFYing, "not bound" means no top level value, not on list of bound variables built up by DWIMIFY during its analysis of the expression, and not on NOFIXVARSLST, i.e., not previously seen. For example, if you have a variable named LAST-EL, and write (LIST LAST-ELL). Therefore, CLISP computes, but does not actually perform, the indicated infix transformation. DWIM then continues, and if it is able to make another correction, does so, and ignores the CLISP interpretation. For example, with LAST-ELL, the transformation LAST-ELL -> LAST-EL would be found. If no other transformation is found, and DWIM is about to interpret a construct as CLISP for which one of the operands is not bound, DWIM will ask you whether CLISP was intended, in this case by printing LAST-ELL TREAT AS CLISP ?. Note: If more than one infix operator was involved in the CLISP construct, e.g., X+Y+Z, or the operation was an assignment to a variable already noticed, or TREATASCLISPFLG is T (initially NIL), you will simply be informed of the correction, e.g., X+Y+Z TREATED AS CLISP. Otherwise, even if DWIM was enabled in TRUSTING mode, you will be asked to approve the correction. The same sort of procedure is followed with 8 and 9 errors. For example, suppose you write FOO8*X where FOO8 is not bound. The CLISP transformation is noted, and DWIM proceeds. It next asks you to approve FOO8*X -> FOO ( *X. For example, this would make sense if you have (or plan to define) a function named *X. If you refuses, you are asked whether FOO8*X is to be treated as CLISP. Similarly, if FOO8 were the name of a variable, and you write FOOO8*X, you will first be asked to approve FOOO8*X -> FOOO ( XX, and if you refuse, then be offered the FOOO8 -> FOO8 correction. The 8-9 transformation is tried before spelling correction since it is empirically more likely that an unbound atom or undefined function containing an 8 or a 9 is a parenthesis error, rather than a spelling error. CLISP also contains provision for correcting misspellings of infix operators (other than single characters), IF words, and i.s. operators. This is implemented in such a way that the user who does not misspell them is not penalized. For example, if you write IF N = 0 THEN 1 ELSSE N*(FACT N-1) CLISP does not operate by checking each word to see if it is a misspelling of IF, THEN, ELSE, or ELSEIF, since this would seriously degrade CLISP's performance on all IF statements. Instead, CLISP assumes that all of the IF words are spelled correctly, and transforms the expression to (COND ((ZEROP N) 1 ELSSE N*(FACT N-1))). Later, after DWIM cannot find any other interpretation for ELSSE, and using the fact that this atom originally appeared in an IF statement, DWIM attempts spelling correction, using (IF THEN ELSE ELSEIF) for a spelling list. When this is successful, DWIM "fails" all the way back to the original IF statement, changes ELSSE to ELSE, and starts over. Misspellings of AND, OR, LT, GT, etc. are handled similarly. CLISP also contains many Do-What-I-Mean features besides spelling corrections. For example, the form (LIST +X Y) would generate a MISSING OPERATOR error. However, (LIST -X Y) makes sense, if the minus is unary, so DWIM offers this interpretation to you. Another common error, especially for new users, is to write (LIST X*FOO(Y)) or (LIST X*FOO Y), where FOO is the name of a function, instead of (LIST X*(FOO Y)). Therefore, whenever an operand that is not bound is also the name of a function (or corrects to one), the above interpretations are offered. CLISP Translations 1 The translation of CLISP character operators and the CLISP word IF are handled by replacing the CLISP expression with the corresponding Interlisp expression, and discarding the original CLISP. This is done because (1) the CLISP expression is easily recomputable (by CLISPIFY) and (2) the Interlisp expressions are simple and straightforward. Another reason for discarding the original CLISP is that it may contain errors that were corrected in the course of translation (e.g., FOOFOOO:1, N*8FOO X), etc.). If the original CLISP were retained, either you would have to go back and fix these errors by hand, thereby negating the advantage of having DWIM perform these corrections, or else DWIM would have to keep correcting these errors over and over. Note that CLISPIFY is sufficiently fast that it is practical for you to configure your Interlisp system so that all expressions are automatically CLISPIFYed immediately before they are presented to you. For example, you can define an edit macro to use in place of P which calls CLISPIFY on the current expression before printing it. Similarly, you can inform PRETTYPRINT to call CLISPIFY on each expression before printing it, etc. Where (1) or (2) are not the case, e.g., with iterative statements, pattern matches, record expressions, etc. the original CLISP is retained (or a slightly modified version thereof), and the translation is stored elsewhere (by the function CLISPTRAN, in the Miscellaneous Functions and Variables), usually in the hash array CLISPARRAY. The interpreter automatically checks this array when given a form CAR of which is not a function. Similarly, the compiler performs a GETHASH when given a form it does not recognize to see if it has a translation, which is then compiled instead of the form. Whenever you change a CLISP expresson by editing it, the editor automatically deletes its translation (if one exists), so that the next time it is evaluated or DWIMIFIed, the expression will be retranslated (if the value of CLISPRETRANFLG is T, DWIMIFY will also (re)translate any expressions which have translations stored remotely, see the CLISPIFY section). The function PPT and the edit commands PPT and CLISP: are available for examining translations (see the Miscellaneous Functions and Variables section). You can also indicate that you want the original CLISP retained by embedding it in an expression of the form (CLISP . CLISP-EXPRESSION), e.g., (CLISP X:5:3) or (CLISP ). In such cases, the translation will be stored remotely as described above. Furthermore, such expressions will be treated as CLISP even if infix and prefix transformations have been disabled by setting CLISPFLG to NIL (see the Miscellaneous Functions and Variables section). In other words, you can instruct the system to interpret as CLISP infix or prefix constructs only those expressions that are specifically flagged as such. You can also include CLISP declarations by writing (CLISP DECLARATIONS . FORM), e.g., (CLISP (CLISP: FLOATING) ...). These declarations will be used in place of any CLISP declarations in the function definition. This feature provides a way of including CLISP declarations in macro definitions. Note: CLISP translations can also be used to supply an interpretation for function objects, as well as forms, either for function objects that are used openly, i.e., appearing as CAR of form, function objects that are explicitly APPLYed, as with arguments to mapping functions, or function objects contained in function definition cells. In all cases, if CAR of the object is not LAMBDA or NLAMBDA, the interpreter and compiler will check CLISPARRAY. DWIMIFY 1 DWIMIFY is effectively a preprocessor for CLISP. DWIMIFY operates by scanning an expression as though it were being interpreted, and for each form that would generate an error, calling DWIM to "fix" it. DWIMIFY performs all DWIM transformations, not just CLISP transformations, so it does spelling correction, fixes 8-9 errors, handles F/L, etc. Thus you will see the same messages, and be asked for approval in the same situations, as you would if the expression were actually run. If DWIM is unable to make a correction, no message is printed, the form is left as it was, and the analysis proceeds. DWIMIFY knows exactly how the interpreter works. It knows the syntax of PROGs, SELECTQs, LAMBDA expressions, SETQs, et al. It knows how variables are bound, and that the argument of NLAMBDAs are not evaluated (you can inform DWIMIFY of a function or macro's nonstandard binding or evaluation by giving it a suitable INFO property, see below). In the course of its analysis of a particular expression, DWIMIFY builds a list of the bound variables from the LAMBDA expressions and PROGs that it encounters. It uses this list for spelling corrections. DWIMIFY also knows not to try to "correct" variables that are on this list since they would be bound if the expression were actually being run. However, note that DWIMIFY cannot, a priori, know about variables that are used freely but would be bound in a higher function if the expression were evaluated in its normal context. Therefore, DWIMIFY will try to "correct" these variables. Similarly, DWIMIFY will attempt to correct forms for which CAR is undefined, even when the form is not in error from your standpoint, but the corresponding function has simply not yet been defined. Note: DWIMIFY rebinds FIXSPELLDEFAULT to N, so that if you are not at the terminal when DWIMIFYing (or compiling), spelling corrections will not be performed. DWIMIFY will also inform you when it encounters an expression with too many arguments (unless DWIMCHECK#ARGSFLG = NIL), because such an occurrence, although does not cause an error in the Interlisp interpreter, nevertheless is frequently symptomatic of a parenthesis error. For example, if you wrote (CONS (QUOTE FOO X)) instead of (CONS (QUOTE FOO) X), DWIMIFY will print: POSSIBLE PARENTHESIS ERROR IN (QUOTE FOO X) TOO MANY ARGUMENTS (MORE THAN 1) DWIMIFY will also check to see if a PROG label contains a clisp character (unless DWIMCHECKPROGLABELSFLG = NIL, or the label is a member of NOFIXVARSLST), and if so, will alert you by printing the message SUSPICIOUS PROG LABEL, followed by the label. The PROG label will not be treated as CLISP. Note that in most cases, an attempt to transform a form that is already as you intended will have no effect (because there will be nothing to which that form could reasonably be transformed). However, in order to avoid needless calls to DWIM or to avoid possible confusion, you can inform DWIMIFY not to attempt corrections or transformations on certain functions or variables by adding them to the list NOFIXFNSLST or NOFIXVARSLST respectively. Note that you could achieve the same effect by simply setting the corresponding variables, and giving the functions dummy definitions. DWIMIFY will never attempt corrections on global variables, i.e., variables that are a member of the list GLOBALVARS, or have the property GLOBALVAR with value T, on their property list. Similarly, DWIMIFY will not attempt to correct variables declared to be SPECVARS in block declarations or via DECLARE expressions in the function body. You can also declare variables that are simply used freely in a function by using the USEDFREE declaration. DWIMIFY and DWIMIFYFNS (used to DWIMIFY several functions) maintain two internal lists of those functions and variables for which corrections were unsuccessfully attempted. These lists are initialized to the values of NOFIXFNSLST and NOFIXVARSLST. Once an attempt is made to fix a particular function or variable, and the attempt fails, the function or variable is added to the corresponding list, so that on subsequent occurrences (within this call to DWIMIFY or DWIMIFYFNS), no attempt at correction is made. For example, if FOO calls FIE several times, and FIE is undefined at the time FOO is DWIMIFYed, DWIMIFY will not bother with FIE after the first occurrence. In other words, once DWIMIFY "notices" a function or variable, it no longer attempts to correct it. DWIMIFY and DWIMIFYFNS also "notice" free variables that are set in the expression being processed. Moreover, once DWIMIFY "notices" such functions or variables, it subsequently treats them the same as though they were actually defined or set. Note that these internal lists are local to each call to DWIMIFY and DWIMIFYFNS, so that if a function containing FOOO, a misspelled call to FOO, is DWIMIFYed before FOO is defined or mentioned, if the function is DWIMIFYed again after FOO has been defined, the correction will be made. You can undo selected transformations performed by DWIMIFY, as described in Chapter 13. (DWIMIFY(DWIMIFY (Function) NIL NIL ("21") 13) X QUIETFLG L) [Function] Performs all DWIM and CLISP corrections and transformations on X that would be performed if X were run, and prints the result unless QUIETFLG = T. If X is an atom and L is NIL, X is treated as the name of a function, and its entire definition is DWIMIFYed. If X is a list or L is not NIL, X is the expression to be DWIMIFYed. If L is not NIL, it is the edit push-down list leading to X, and is used for determining context, i.e., what bound variables would be in effect when X was evaluated, whether X is a form or sequence of forms, e.g., a COND clause, etc. If X is an iterative statement and L is NIL, DWIMIFY will also print the translation, i.e., what is stored in the hash array. (DWIMIFYFNS(DWIMIFYFNS (Function) NIL NIL ("21") 13) FN1 ... FNN) [NLambda NoSpread Function] DWIMIFYs each of the functions given. If only one argument is given, it is evalued. If its value is a list, the functions on this list are DWIMIFYed. If only one argument is given, it is atomic, its value is not a list, and it is the name of a known file, DWIMIFYFNS will operate on (FILEFNSLST FN1), e.g. (DWIMIFYFNS FOO.LSP) will DWIMIFY every function in the file FOO.LSP. Every 30 seconds, DWIMIFYFNS prints the name of the function it is processing, a la PRETTYPRINT. Value is a list of the functions DWIMIFYed. DWIMINMACROSFLG(DWIMINMACROSFLG (Variable) NIL NIL ("21") 14) [Variable] Controls how DWIMIFY treats the arguments in a "call" to a macro, i.e., where the CAR of the form is undefined, but has a macro definition. If DWIMINMACROSFLG is T, then macros are treated as LAMBDA functions, i.e., the arguments are assumed to be evaluated, which means that DWIMIFY will descend into the argument list. If DWIMINMACROSFLG is NIL, macros are treated as NLAMBDA functions. DWIMINMACROSFLG is initially T. INFO(INFO (Property) NIL NIL ("21") 14) [Property Name] Used to inform DWIMIFY of nonstandard behavior of particular forms with respect to evaluation, binding of arguments, etc. The INFO property of a symbol is a single atom or list of atoms chosen from among the following: EVAL Informs DWIMIFY (and CLISP and Masterscope) that an nlambda function does evaluate its arguments. Can also be placed on a macro name to override the behavior of DWIMINMACROSFLG = NIL. NOEVAL Informs DWIMIFY that a macro does not evaluate all of its arguments, even when DWIMINMACROSFLG = T. BINDS Placed on the INFO property of a function or the CAR of a special form to inform DWIMIFY that the function or form binds variables. In this case, DWIMIFY assumes that CADR of the form is the variable list, i.e., a list of symbols, or lists of the form (VAL VALUE). LAMBDA, NLAMBDA, PROG, and RESETVARS are handled in this fashion. LABELS Informs CLISPIFY that the form interprets top-level symbols as labels, so that CLISPIFY will never introduce an atom (by packing) at the top level of the expression. PROG is handled in this fashion. NOFIXFNSLST (NOFIXFNSLST% (Variable) NIL NIL ("21") 14) [Variable] List of functions that DWIMIFY will not try to correct. NOFIXVARSLST(NOFIXVARSLST (Variable) NIL NIL ("21") 14) [Variable] List of variables that DWIMIFY will not try to correct. NOSPELLFLG(NOSPELLFLG (Variable) NIL NIL ("21") 14) [Variable] If T, DWIMIFY will not perform any spelling corrections. Initially NIL. NOSPELLFLG is reset to T when compiling functions whose definitions are obtained from a file, as opposed to being in core. CLISPHELPFLG (CLISPHELPFLG% (Variable) NIL NIL ("21") 14) [Variable] If NIL, DWIMIFY will not ask you for approval of any CLISP transformations. Instead, in those situations where approval would be required, the effect is the same as though you had been asked and said NO. Initially T. DWIMIFYCOMPFLG (DWIMIFYCOMPFLG% (Variable) NIL NIL ("21") 14) [Variable] If T, DWIMIFY is called before compiling an expression. Initially NIL. DWIMCHECK#ARGSFLG(DWIMCHECK#ARGSFLG (Variable) NIL NIL ("21") 14) [Variable] If T, causes DWIMIFY to check for too many arguments in a form. Initially T. DWIMCHECKPROGLABELSFLG(DWIMCHECKPROGLABELSFLG (Variable) NIL NIL ("21") 14) [Variable] If T, causes DWIMIFY to check whether a PROG label contains a CLISP character. Initially T. DWIMESSGAG(DWIMESSGAG (Variable) NIL NIL ("21") 15) [Variable] If T, suppresses all DWIMIFY error messages. Initially NIL. CLISPRETRANFLG(CLISPRETRANFLG (Variable) NIL NIL ("21") 15) [Variable] If T, informs DWIMIFY to (re)translate all expressions which have remote translations in the CLISP hash array. Initially NIL. CLISPIFY 1 CLISPIFY converts Interlisp expressions to CLISP. Note that the expression given to CLISPIFY need not have originally been input as CLISP, i.e., CLISPIFY can be used on functions that were written before CLISP was even implemented. CLISPIFY is cognizant of declaration rules as well as all of the precedence rules. For example, CLISPIFY will convert (IPLUS A (ITIMES B C)) into A+B*C, but (ITIMES A (IPLUS B C)) into A*(B+C). CLISPIFY handles such cases by first DWIMIFYing the expression. CLISPIFY also knows how to handle expressions consisting of a mixture of Interlisp and CLISP, e.g., (IPLUS A B*C) is converted to A+B*C, but (ITIMES A B+C) to (A*(B+C)). CLISPIFY converts calls to the six basic mapping functions, MAP, MAPC, MAPCAR, MAPLIST, MAPCONC, and MAPCON, into equivalent iterative statements. It also converts certain easily recognizable internal PROG loops to the corresponding iterative statements. CLISPIFY can convert all iterative statements input in CLISP back to CLISP, regardless of how complicated the translation was, because the original CLISP is saved. CLISPIFY is not destructive to the original Interlisp expression, i.e., CLISPIFY produces a new expression without changing the original. The new expression may however contain some "pieces" of the original, since CLISPIFY attempts to minimize the number of CONSes by not copying structure whenever possible. CLISPIFY will not convert expressions appearing as arguments to NLAMBDA functions, except for those functions whose INFO property is or contains the atom EVAL. CLISPIFY also contains built in information enabling it to process special forms such as PROG, SELECTQ, etc. If the INFO property is or contains the atom LABELS, CLISPIFY will never create an atom (by packing) at the top level of the expression. PROG is handled in this fashion. Note: Disabling a CLISP operator with CLDISABLE (see the Miscellaneous Functions and Variables section) will also disable the corresponding CLISPIFY transformation. Thus, if is "turned off", AB will not transform to (SETQ A B), nor vice versa. (CLISPIFY X EDITCHAIN) [Function] Clispifies X. If X is an atom and EDITCHAIN is NIL, X is treated as the name of a function, and its definition (or EXPR property) is clispified. After CLISPIFY has finished, X is redefined (using /PUTD) with its new CLISP definition. The value of CLISPIFY is X. If X is atomic and not the name of a function, spelling correction is attempted. If this fails, an error is generated. If X is a list, or EDITCHAIN is not NIL, X itself is the expression to be clispified. If EDITCHAIN is not NIL, it is the edit push-down list leading to X and is used to determine context as with DWIMIFY, as well as to obtain the local declarations, if any. The value of CLISPIFY is the clispified version of X. (CLISPIFYFNS FN1 ... FNN) [NLambda NoSpread Function] Like DWIMIFYFNS except calls CLISPIFY instead of DWIMIFY. CL:FLG(CL:FLG (Variable) NIL NIL ("21") 16) [Variable] Affects CLISPIFY's handling of forms beginning with CAR, CDR, ... CDDDDR, as well as pattern match and record expressions. If CL:FLG is NIL, these are not transformed into the equivalent : expressions. This will prevent CLISPIFY from constructing any expression employing a : infix operator, e.g., (CADR X) will not be transformed to X:2. If CL:FLG is T, CLISPIFY will convert to : notation only when the argument is atomic or a simple list (a function name and one atomic argument). If CL:FLG is ALL, CLISPIFY will convert to : expressions whenever possible. CL:FLG is initially T. CLREMPARSFLG (CLREMPARSFLG% (Variable) NIL NIL ("21") 16) [Variable] If T, CLISPIFY will remove parentheses in certain cases from simple forms, where "simple" means a function name and one or two atomic arguments. For example, (COND ((ATOM X) --)) will CLISPIFY to (IF ATOM X THEN --). However, if CLREMPARSFLG is set to NIL, CLISPIFY will produce (IF (ATOM X) THEN --). Regardless of the flag setting, the expression can be input in either form. CLREMPARSFLG is initially NIL. CLISPIFYPACKFLG (CLISPIFYPACKFLG% (Variable) NIL NIL ("21") 16) [Variable] CLISPIFYPACKFLG affects the treatment of infix operators with atomic operands. If CLISPIFYPACKFLG is T, CLISPIFY will pack these into single atoms, e.g., (IPLUS A (ITIMES B C)) becomes A+B*C. If CLISPIFYPACKFLG is NIL, no packing is done, e.g., the above becomes A + B * C. CLISPIFYPACKFLG is initially T. CLISPIFYUSERFN(CLISPIFYUSERFN (Variable) NIL NIL ("21") 16) [Variable] If T, causes the function CLISPIFYUSERFN, which should be a function of one argument, to be called on each form (list) not otherwise recognized by CLISPIFY. If a non-NIL value is returned, it is treated as the clispified form. Initially NIL Note that CLISPIFYUSERFN must be both set and defined to use this feature. FUNNYATOMLST(FUNNYATOMLST (Variable) NIL NIL ("21") 16) [Variable] Suppose you have variables named A, B, and A*B. If CLISPIFY were to convert (ITIMES A B) to A*B, A*B would not translate back correctly to (ITIMES A B), since it would be the name of a variable, and therefore would not cause an error. You can prevent this from happening by adding A*B to the list FUNNYATOMLST. Then, (ITIMES A B) would CLISPIFY to A * B. Note that A*B's appearance on FUNNYATOMLST would not enable DWIM and CLISP to decode A*B+C as (IPLUS A*B C); FUNNYATOMLST is used only by CLISPIFY. Thus, if an identifier contains a CLISP character, it should always be separated (with spaces) from other operators. For example, if X* is a variable, you should write (SETQ X* FORM) in CLISP as X* FORM, not X*FORM. In general, it is best to avoid use of identifiers containing CLISP character operators as much as possible. Miscellaneous Functions and Variables 1 CLISPFLG(CLISPFLG (Variable) NIL NIL ("21") 16) [Variable] If CLISPFLG = NIL, disables all CLISP infix or prefix transformations (but does not affect IF/THEN/ELSE statements, or iterative statements). If CLISPFLG = TYPE-IN, CLISP transformations are performed only on expressions that are typed in for evaluation, i.e., not on user programs. If CLISPFLG = T, CLISP transformations are performed on all expressions. The initial value for CLISPFLG is T. CLISPIFYing anything will cause CLISPFLG to be set to T. CLISPCHARS (CLISPCHARS% (Variable) NIL NIL ("21") 17) [Variable] A list of the operators that can appear in the interior of an atom. Currently (+ - * / ~ ' = : < > +- ~= @ !). CLISPCHARRAY(CLISPCHARRAY (Variable) NIL NIL ("21") 17) [Variable] A bit table of the characters on CLISPCHARS used for calls to STRPOSL (Chapter 4). CLISPCHARRAY is initialized by performing (SETQ CLISPCHARRAY (MAKEBITTABLE CLISPCHARS)). (CLISPINFIXSPLST% (Variable) NIL NIL ("21") 17)CLISPINFIXSPLST [Variable] A list of infix operators used for spelling correction. CLISPARRAY (CLISPARRAY (Variable) NIL NIL ("21") 17) [Variable] Hash array used for storing CLISP translations. CLISPARRAY is checked by FAULTEVAL and FAULTAPPLY on erroneous forms before calling DWIM, and by the compiler. (CLEARCLISPARRAY(CLEARCLISPARRAY (Function) NIL NIL (21) 17) NAME --) [Function] Macro and CLISP expansions are cached in CLISPARRAY, the systems CLISP hash array. When anything changes that would invalidate an expansion, it needs to be removed from the cache. CLEARCLISPARRAY does this for you. The system does this automatically whenever you define redefine a CLISP or macro form. If you have changed something that a CLISP word or a macro depends on the system will not be able to detect this, so you will have to invalidate the cahce by calling CLEARCLISPARRAY. You can clear the whole cache by calling (CLRHASH CLISPARRAY). (CLISPTRAN(CLISPTRAN (Function) NIL NIL ("21") 17) X TRAN) [Function] Gives X the translation TRAN by storing (key X, value TRAN) in the hash array CLISPARRAY. CLISPTRAN is called for all CLISP translations, via a non-linked, external function call, so it can be advised. (CLISPDEC(CLISPDEC (Function) NIL NIL ("21") 17) DECLST) [Function] Puts into effect the declarations in DECLST. CLISPDEC performs spelling corrections on words not recognized as declarations. CLISPDEC is undoable. (CLDISABLE(CLDISABLE (Function) NIL NIL ("21") 17) OP) [Function] Disables the CLISP operator OP. For example, (CLDISABLE '-) makes - be just another character. CLDISABLE can be used on all CLISP operators, e.g., infix operators, prefix operators, iterative statement operators, etc. CLDISABLE is undoable. Note: Simply removing a character operator from CLISPCHARS will prevent it from being treated as a CLISP operator when it appears as part of an atom, but it will continue to be an operator when it appears as a separate atom, e.g. (FOO + X) vs FOO+X. CLISPIFTRANFLG(CLISPIFTRANFLG (Variable) NIL NIL ("21") 17) [Variable] Affects handling of translations of IF-THEN-ELSE statements (see Chapter 9). If T, the translations are stored elsewhere, and the (modified) CLISP retained. If NIL, the corresponding COND expression replaces the CLISP. Initially T. CLISPIFYPRETTYFLG(CLISPIFYPRETTYFLG (Variable) NIL NIL ("21") 17) [Variable] If non-NIL, causes PRETTYPRINT (and therefore PP and MAKEFILE) to CLISPIFY selected function definitions before printing them according to the following interpretations of CLISPIFYPRETTYFLG: ALL Clispify all functions. T or EXPRS Clispify all functions currently defined as EXPRs. CHANGES Clispify all functions marked as having been changed. a list Clispify all functions in that list. CLISPIFYPRETTYFLG is (temporarily) reset to T when MAKEFILE is called with the option CLISPIFY, and reset to CHANGES when the file being dumped has the property FILETYPE value CLISP. CLISPIFYPRETTYFLG is initially NIL. Note: If CLISPIFYPRETTYFLG is non-NIL, and the only transformation performed by DWIM are well formed CLISP transformations, i.e., no spelling corrections, the function will not be marked as changed, since it would only have to be re-clispified and re-prettyprinted when the file was written out. (PPT X) [NLambda NoSpread Function] Both a function and an edit macro for prettyprinting translations. It performs a PP after first resetting PRETTYTRANFLG to T, thereby causing any translations to be printed instead of the corresponding CLISP. CLISP:(CL (Editor Command) NIL NIL ("21") 18) [Editor Command] Edit macro that obtains the translation of the correct expression, if any, from CLISPARRAY, and calls EDITE on it. CL(CL (Editor Command) NIL NIL ("21") 18) [Editor Command] Edit macro. Replaces current expression with CLISPIFYed current expression. Current expression can be an element or tail. DW(DW (Editor Command) NIL NIL ("21") 18) [Editor Command] Edit macro. DWIMIFYs current expression, which can be an element (atom or list) or tail. Both CL and DW can be called when the current expression is either an element or a tail and will work properly. Both consult the declarations in the function being edited, if any, and both are undoable. (LOWERCASE(LOWERCASE (Function) NIL NIL ("21") 18) FLG) [Function] If FLG = T, LOWERCASE makes the necessary internal modifications so that CLISPIFY will use lower case versions of AND, OR, IF, THEN, ELSE, ELSEIF, and all i.s. operators. This produces more readable output. Note that you can always type in either upper or lower case (or a combination), regardless of the action of LOWERCASE. If FLG = NIL, CLISPIFY will use uppercase versions of AND, OR, et al. The value of LOWERCASE is its previous "setting". LOWERCASE is undoable. The initial setting for LOWERCASE is T. CLISP Internal Conventions 1 CLISP is almost entirely table driven by the property lists of the corresponding infix or prefix operators. For example, much of the information used for translating the + infix operator is stored on the property list of the symbol "+". Thus it is relatively easy to add new infix or prefix operators or change old ones, simply by adding or changing selected property values. (There is some built in information for handling minus, :, ', and ~, i.e., you could not yourself add such "special" operators, although you can disable or redefine them.) Global declarations operate by changing the LISPFN and CLISPINFIX properties of the appropriate operators. CLISPTYPE(CLISPTYPE (Property) NIL NIL ("21") 18) [Property Name] The property value of the property CLISPTYPE is the precedence number of the operator: higher values have higher precedence, i.e., are tighter. Note that the actual value is unimportant, only the value relative to other operators. For example, CLISPTYPE for :, , and * are 14, 6, and 4 respectively. Operators with the same precedence group left to right, e.g., / also has precedence 4, so A/B*C is (A/B)*C. An operator can have a different left and right precedence by making the value of CLISPTYPE be a dotted pair of two numbers, e.g., CLISPTYPE of is (8 . -12). In this case, CAR is the left precedence, and CDR the right, i.e., CAR is used when comparing with operators on the left, and CDR with operators on the right. For example, A*BC+D is parsed as A*(B(C+D)) because the left precedence of is 8, which is higher than that of *, which is 4. The right precedence of is -12, which is lower than that of +, which is 2. If the CLISPTYPE property for any operator is removed, the corresponding CLISP transformation is disabled, as well as the inverse CLISPIFY transformation. UNARYOP(UNARYOP (Property) NIL NIL ("21") 19) [Property Name] The value of property UNARYOP must be T for unary operators or brackets. The operand is always on the right, i.e., unary operators or brackets are always prefix operators. BROADSCOPE(BROADSCOPE (Property) NIL NIL ("21") 19) [Property Name] The value of property BROADSCOPE is T if the operator has lower precedence than Interlisp forms, e.g., LT, EQUAL, AND, etc. For example, (FOO X AND Y) parses as ((FOO X) AND Y). If the BROADSCOPE property were removed from the property list of AND, (FOO X AND Y) would parse as (FOO (X AND Y)). LISPFN(LISPFN (Property) NIL NIL ("21") 19) [Property Name] The value of the property LISPFN is the name of the function to which the infix operator translates. For example, the value of LISPFN for is EXPT, for ' QUOTE, etc. If the value of the property LISPFN is NIL, the infix operator itself is also the function, e.g., AND, OR, EQUAL. SETFN(SETFN (Property) NIL NIL ("21") 19) [Property Name] If FOO has a SETFN property FIE, then (FOO --)X translates to (FIE -- X). For example, if you make ELT be an infix operator, e.g. #, by putting appropriate CLISPTYPE and LISPFN properties on the property list of # then you can also make # followed by translate to SETA, e.g., X#NY to (SETA X N Y), by putting SETA on the property list of ELT under the property SETFN. Putting the list (ELT) on the property list of SETA under property SETFN will enable SETA forms to CLISPIFY back to ELT's. CLISPINFIX(CLISPINFIX (Property) NIL NIL ("21") 19) [Property Name] The value of this property is the CLISP infix to be used in CLISPIFYing. This property is stored on the property list of the corresponding Interlisp function, e.g., the value of property CLISPINFIX for EXPT is , for QUOTE is ' etc. CLISPWORD(CLISPWORD (Property) NIL NIL ("21") 19) [Property Name] Appears on the property list of clisp operators which can appear as CAR of a form, such as FETCH, REPLACE, IF, iterative statement operators, etc. Value of property is of the form (KEYWORD . NAME), where NAME is the lowercase version of the operator, and KEYWORD is its type, e.g. FORWORD, IFWORD, RECORDWORD, etc. KEYWORD can also be the name of a function. When the atom appears as CAR of a form, the function is applied to the form and the result taken as the correct form. In this case, the function should either physically change the form, or call CLISPTRAN to store the translation. As an example, to make & be an infix character operator meaning OR, you could do the following: (PUTPROP '& 'CLISPTYPE (GETPROP 'OR 'CLISPTYPE)) (PUTPROP '& 'LISPFN 'OR) (PUTPROP '& 'BROADSCOPE T) (PUTPROP 'OR 'CLISPINFIX '&) (SETQ CLISPCHARS (CONS '& CLISPCHARS)) (SETQ CLISPCHARRAY (MAKEBITTABLE CLISPCHARS)) (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "20-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "20-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "20-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "20-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "20-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "20-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))F PAGEHEADING RIGHTPAGE55552`~~306 +T,HH,HH206206 +,HH56TT26TT5<0<@ PAGEHEADINGLEFTBACKT-T3(T,,ll,,3(T,3(T//,HH,,, PALATINO PALATINO PALATINO TITAN TITAN TITAN TITAN MODERNMODERN +MODERNMODERN +   + IM.CHAP.GETFNMODERN +  HRULE.GETFNMODERN %u:WIM.INDEX.GETFN!i +8    + ) +J +!E @ 2(  O"))"8D + A4K :"L(>  !  ! 9 y 5 ,,P1G;  ,P ;U  \IM.INDEX.GETFN  HRULE.GETFNMODERN + 1 .gJa +I }   VIM.INDEX.GETFN  HRULE.GETFNMODERN + E  l +/    ! + Lu     + ) %IM.INDEX.GETFNTITAN   + %IM.INDEX.GETFN  +%IM.INDEX.GETFNTITAN    +%IM.INDEX.GETFNTITAN   +%IM.INDEX.GETFNPALATINO   8Q +! 8 N  Db9 +D +  +6 +% 7<   %IM.INDEX.GETFNTITAN    +&IM.INDEX.GETFNTITAN   +&IM.INDEX.GETFNTITAN   +&IM.INDEX.GETFNTITAN   +&IM.INDEX.GETFNTITAN   w ." 1^$ .( %IM.INDEX.GETFNTITAN     T2   . V  &IM.INDEX.GETFNTITAN   o  >  :i  &IM.INDEX.GETFN     +   . +1 o## + Q ;/ E7 \ J  "X N =    +  U  e  +  U     4 *   +k )A Y      z  +  ? +B +   B /  #      .@    %    k +# (                HRULE.GETFNMODERN +  +  5 +      &IM.INDEX.GETFNMODERN + +  %H 8: '   " f.       +  +  w  3W -3 '@ U U;_         E1   HRULE.GETFNMODERN +  &. >: Gt ')$L  +V3 * RG 8*4\cW)+,%) m @<5?'>>5]$f  '  HRULE.GETFNMODERN + @  +o J  -m K +EA9{cm    + /z) +  HRULE.GETFNMODERN + + +qBF$TR/D4) .@@   !* 5 "h  c +  &6z + +   +63I +^z9 +# +-03&IM.INDEX.GETFNMODERN + +  ?( D+Z) I  +)IM.INDEX.GETFNPALATINO  o +   +8  !.IM.INDEX.GETFNPALATINO  >;N* #IM.INDEX.GETFNPALATINO  iY 6Y *;Q  ?P ,IM.INDEX.GETFN   +IM.INDEX.GETFNPALATINO   +)IM.INDEX.GETFNPALATINO  7 + c -IM.INDEX.GETFN   /IM.INDEX.GETFN  60IM.INDEX.GETFNPALATINO   75IM.INDEX.GETFNPALATINO   . +)IM.INDEX.GETFNPALATINO  -IM.INDEX.GETFNPALATINO   +e  HRULE.GETFNMODERN + M,PY\  4_3@$/8-"Q"M' ]. +   >!/t  0 +*E    + %IM.INDEX.GETFNTITAN   $70!.k    -IM.INDEX.GETFN    O  0IM.INDEX.GETFN  D* .  -IM.INDEX.GETFNTITAN   k E +3 +IM.INDEX.GETFNTITAN   ! '      + !    o &  HRULE.GETFNMODERN + 'IM.INDEX.GETFNTITAN   J ' x :   + +IM.INDEX.GETFN  O#  +IM.INDEX.GETFNMODERN +  ! + - 0IM.INDEX.GETFNTITAN   7  + )IM.INDEX.GETFNTITAN  1 +  += ,IM.INDEX.GETFNTITAN   ) +* (IM.INDEX.GETFNTITAN    + f 'IM.INDEX.GETFNTITAN   +  %I   (IM.INDEX.GETFNTITAN     s 0 + -IM.INDEX.GETFNTITAN   $ !P+ 0IM.INDEX.GETFNMODERN +    b-7- , +Cw    R T 'IM.INDEX.GETFNMODERN +  P +  'IM.INDEX.GETFNMODERN +  .E 'IM.INDEX.GETFNMODERN +   F  (IM.INDEX.GETFNTITAN      4!aE    '    HRULE.GETFNMODERN + >/i, +* (IM.INDEX.GETFNTITAN    #   _ R (  + .  $'%  r&IM.INDEX.GETFNTITAN      +)IM.INDEX.GETFNTITAN     +B   + +1  %IM.INDEX.GETFNTITAN   `%8 $IM.INDEX.GETFNTITAN    + + + $     +  +)IM.INDEX.GETFNTITAN   <x +  (IM.INDEX.GETFNTITAN    DH/ + ?  (2(/ z \ No newline at end of file diff --git a/docs/medley-irm/20-CLISP.pdf b/docs/medley-irm/20-CLISP.pdf new file mode 100644 index 00000000..c6c4d2b0 --- /dev/null +++ b/docs/medley-irm/20-CLISP.pdf @@ -0,0 +1,13584 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5349 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +[(20.)-109.9( CLISP)]TJ +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +510.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.0267 Tw +(The syntax of Lisp is very simple. It can be described concisely, but it makes Lisp difficult to read and)Tj +0 -1.2222 TD +0.0789 Tw +[(write without tools. Unlike many languages, there are no reserved words in Lisp such as )]TJ +/TT10 1 Tf +40.8936 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5789 0 TD +(THEN)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +/TT10 1 Tf +-45.0731 -1.2889 TD +(FOR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5956 0 TD +(DO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0956 Tw +(, etc., nor reserved characters like )Tj +/TT10 1 Tf +15.5279 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5956 0 TD +(-)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5956 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT11 1 Tf +0.5956 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0956 Tw +[(, etc. The only components of the language are)]TJ +-23.6977 -1.2889 TD +0.16 Tw +[(atoms and delimiters. This eliminates the need for parsers and precedence rules, and makes Lisp)]TJ +0 -1.2222 TD +0.06 Tw +[(programs easy to mainpuilate. For example, a Lisp interpreter can be written in one or two pages of)]TJ +T* +0.0589 Tw +[(Lisp code. This makes Lisp the most suitable programming language for writing programs that deal)]TJ +T* +0 Tw +(with other programs as data.)Tj +0 -2.8889 TD +0.0711 Tw +(Human language is based on more complicated structures and relies more on special words to carry)Tj +0 -1.2222 TD +0 Tw +(the meaning. The definiton of the factorial function looks like this in Lisp:)Tj +/TT10 1 Tf +5.3333 -2.8222 TD +(\(COND \(\(ZEROP N\) 1\) \(T \(TIMES N \(FACTORIAL \(\(SUB1 N\)\)\)\)\)\))Tj +/TT8 1 Tf +-5.3333 -2.9556 TD +0.0789 Tw +[(This definition is easy to read for a machine but difficult to read for a human. CLISP)-6.6( is designed to)]TJ +0 -1.2222 TD +0.1111 Tw +(make Interlisp programs easier to read and write. CLISP does this by translating various operators,)Tj +T* +0 Tw +(conditionals, and iterative statements to Interlisp. For example, factorial can be written in CLISP:)Tj +/TT10 1 Tf +5.3333 -2.8889 TD +(\(IF N)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(0 THEN 1 ELSE N*\(FACTORIAL N-1\)\))Tj +/TT8 1 Tf +-9.4339 -2.9556 TD +0.0456 Tw +[(CLISP will translate this expression to the form in the example above. The translation will take place)]TJ +0 -1.2222 TD +0 Tw +(when the form is read so there are no performance penalties.)Tj +0 -2.8889 TD +0.0144 Tw +(You should view CLISP as a shothand for produceing Lisp programs. CLISP makes a program easy to)Tj +0 -1.2222 TD +0 Tw +(read and sometimes more compact.)Tj +0 -2.8889 TD +0.35 Tw +[(CLISP is implemented via the error correction machinery in Interlisp \(see Chapter 20\). Any)]TJ +0 -1.2222 TD +0.2855 Tw +[(expression that Interlisp thinks is well-formed will never be seen by CLISP This means that)]TJ +T* +0.2367 Tw +(interpreted programs that do not use CLISP constructs do not pay for its availability by slower)Tj +T* +0.26 Tw +[(execution time. In fact, the Interlisp interpreter does not know about CLISP at all. When the)]TJ +T* +0.0389 Tw +(interpreter finds an error it calls an error routine which in turn invokes the Do-What-I-Mean \(DWIM\))Tj +T* +0.2289 Tw +[(analyzer. The DWIM analyzer knows how to deal with CLISP expressions. If the expression in)]TJ +T* +0.2156 Tw +(question turns out to be a CLISP construct, the translated form is returned to the interpreter. In)Tj +T* +0.05 Tw +(addition, the original CLISP expression is modified so that it )Tj +/TT13 1 Tf +27.4502 0 TD +0 Tw +(becomes)Tj +/TT8 1 Tf +3.2593 0 TD +0.05 Tw +[( the correctly translated Interlisp)]TJ +-30.7095 -1.2222 TD +0 Tw +(form. In this way, the analysis and translation are done only once.)Tj +0 -2.8889 TD +0.0233 Tw +[(Integrating CLISP into Medley makes possible Do-What-I-Mean features for CLISP constructs as well)]TJ +0 -1.2222 TD +0.0056 Tw +[(as for pure Lisp expressions. For example, if you have defined a function named )]TJ +/TT10 1 Tf +36.0452 0 TD +0 Tw +(GET-PARENT)Tj +/TT8 1 Tf +6.001 0 TD +0.0056 Tw +(, CLISP)Tj +-42.0462 -1.2889 TD +0.1511 Tw +(would know not to attempt to interpret the form )Tj +/TT10 1 Tf +23.0709 0 TD +0 Tw +(\(GET-PARENT\))Tj +/TT8 1 Tf +7.2012 0 TD +0.1511 Tw +[( as an arithmetic infix operation.)]TJ +-30.2721 -1.2889 TD +0.2111 Tw +[(\(Actually, CLISP would never get to see this form, since it does not contain any errors.\) If you)]TJ +0 -1.2222 TD +0.4911 Tw +(mistakenly write )Tj +/TT10 1 Tf +8.6956 0 TD +0 Tw +(\(GET-PRAENT\))Tj +/TT8 1 Tf +7.2012 0 TD +0.4911 Tw +(, CLISP would know you meant )Tj +/TT10 1 Tf +17.3602 0 TD +0 Tw +(\(GET-PARENT\))Tj +/TT8 1 Tf +7.2012 0 TD +0.4911 Tw +(, and not)Tj +/TT10 1 Tf +-40.4582 -1.2889 TD +0.1711 Tw +(\(DIFFERENCE GET PRAENT\))Tj +/TT8 1 Tf +14.1445 0 TD +0.0711 Tw +(, by using the information that )Tj +/TT10 1 Tf +14.1386 0 TD +0 Tw +(PARENT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0711 Tw +[( is not the name of a variable,)]TJ +-31.8836 -1.2889 TD +0.11 Tw +(and that )Tj +/TT10 1 Tf +4.1472 0 TD +0 Tw +(GET-PARENT)Tj +/TT8 1 Tf +6.001 0 TD +0.11 Tw +[( is the name of a user function whose spelling is "very close" to that of )]TJ +/TT10 1 Tf +32.7937 0 TD +0 Tw +(GET-)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +14 0 obj +<< +/Length 7344 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 126 569.54 Tm +(PRAENT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0533 Tw +[(. Similarly, by using information about the programs environment not readily available to a)]TJ +-3.6006 -1.2889 TD +0 Tw +(preprocessor, CLISP can successfully resolve the following sorts of ambiguities:)Tj +1.9167 -2 TD +(1.)Tj +/TT10 1 Tf +2.0833 0 TD +0.1011 Tw +(\(LIST X*FACT N\))Tj +/TT8 1 Tf +9.2037 0 TD +0.0422 Tw +(, where )Tj +/TT10 1 Tf +3.6035 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0422 Tw +[( is the name of a variable, means)]TJ +/TT15 1 Tf +14.6623 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.2922 0 TD +0.1011 Tw +(\(LIST \(X*FACT\))Tj +-30.162 -1.2889 TD +0 Tw +(N\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-3.2835 -2.0667 TD +(2.)Tj +/TT10 1 Tf +2.0833 0 TD +0.0856 Tw +(\(LIST X*FACT N\))Tj +/TT8 1 Tf +9.1726 0 TD +0.0356 Tw +(, where )Tj +/TT10 1 Tf +3.5902 0 TD +0 Tw +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0356 Tw +[( is )]TJ +/TT13 1 Tf +1.286 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0356 Tw +[( the name of a variable but instead is the name)]TJ +-17.7821 -1.2889 TD +0 Tw +(of a function, means )Tj +/TT10 1 Tf +9.2036 0 TD +(\(LIST X*\(FACT N\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(, i.e., )Tj +/TT10 1 Tf +2.27 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +(s argument.)Tj +-27.974 -2.0667 TD +(3.)Tj +/TT10 1 Tf +2.0833 0 TD +0.2189 Tw +(\(LIST X*FACT\(N\)\))Tj +/TT8 1 Tf +9.8205 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5911 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0911 Tw +[( the name of a function \(and not the name of a variable\),)]TJ +-12.812 -1.2889 TD +0 Tw +(means )Tj +/TT10 1 Tf +3.1177 0 TD +(\(LIST X*\(FACT N\)\))Tj +/TT8 1 Tf +10.2017 0 TD +(.)Tj +-15.4027 -2.0667 TD +[(4.)-1333.3(Cases 1, 2 and 3 with )]TJ +/TT10 1 Tf +11.5951 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +( misspelled!)Tj +-15.9121 -2.9556 TD +0.0589 Tw +(The first expression is correct both from the standpoint of CLISP syntax and semantics so the change)Tj +0 -1.2222 TD +0.06 Tw +(would be made notification. In the other cases, you would be informed or consulted about what was)Tj +T* +0.0389 Tw +[(taking place. For example, suppose you write the expression )]TJ +/TT10 1 Tf +27.5935 0 TD +0.0933 Tw +(\(LIST X*FCCT N\).)Tj +/TT8 1 Tf +9.7882 0 TD +0.0389 Tw +[( Assume also that)]TJ +-37.3817 -1.2889 TD +0 Tw +(there was both a function named )Tj +/TT10 1 Tf +14.7881 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +( and a variable named )Tj +/TT10 1 Tf +10.0718 0 TD +(FCT)Tj +/TT8 1 Tf +1.8003 0 TD +(. )Tj +-27.1439 -2.0667 TD +0.0533 Tw +[(1.)-1333.3(You will first be asked if )]TJ +/TT10 1 Tf +13.4214 0 TD +0 Tw +(FCCT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +[( is a misspelling of )]TJ +/TT10 1 Tf +8.7232 0 TD +0 Tw +(FCT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0533 Tw +[(. If you say )]TJ +/TT10 1 Tf +5.6216 0 TD +0 Tw +(YES)Tj +/TT8 1 Tf +1.8003 0 TD +0.0533 Tw +(, the expression)Tj +-31.6839 -1.2889 TD +0.0556 Tw +(will be interpreted as )Tj +/TT10 1 Tf +9.8497 0 TD +0.1322 Tw +(\(LIST \(X*FCT\) N\))Tj +/TT8 1 Tf +9.866 0 TD +0.0555 Tw +[(. If you say )]TJ +/TT10 1 Tf +5.6328 0 TD +0 Tw +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0556 Tw +(, you will be asked if )Tj +/TT10 1 Tf +9.7215 0 TD +0 Tw +(FCCT)Tj +/TT8 1 Tf +-36.2701 -1.2889 TD +(was a misspelling of )Tj +/TT10 1 Tf +9.2495 0 TD +(FACT)Tj +/TT8 1 Tf +2.4004 0 TD +(, i.e., if you intended )Tj +/TT10 1 Tf +9.3101 0 TD +(X*FCCT N)Tj +/TT8 1 Tf +4.8008 0 TD +( to mean )Tj +/TT10 1 Tf +4.0659 0 TD +(X*\(FACT N\).)Tj +/TT8 1 Tf +6.6011 0 TD +( )Tj +-38.5111 -2.0667 TD +0.0311 Tw +[(2.)-1333.3(If you say )]TJ +/TT10 1 Tf +6.7816 0 TD +0 Tw +(YES)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +[( to this question, the indicated transformation will be performed. If you)]TJ +-6.4986 -1.2889 TD +0 Tw +(say )Tj +/TT10 1 Tf +1.8189 0 TD +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0889 Tw +(, the system will ask if )Tj +/TT10 1 Tf +10.5734 0 TD +0 Tw +(X*FCCT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0889 Tw +[( should be treated as CLISP, since)]TJ +/TT10 1 Tf +15.4176 0 TD +0.2122 Tw +[( FCCT)]TJ +/TT8 1 Tf +3.2127 0 TD +0.0889 Tw +[( is not)]TJ +-35.8233 -1.2889 TD +0 Tw +(the name of a \(bound\) variable. )Tj +-2.0833 -2 TD +0.0956 Tw +[(3.)-1333.3( If you say )]TJ +/TT10 1 Tf +7.3205 0 TD +0 Tw +(YES)Tj +/TT8 1 Tf +1.8003 0 TD +0.0956 Tw +(, the expression will be transformed, if )Tj +/TT10 1 Tf +17.8798 0 TD +0 Tw +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0956 Tw +(, it will be left alone, i.e., as)Tj +/TT10 1 Tf +-26.1175 -1.2889 TD +0.01 Tw +(\(LIST X*FCCT N\))Tj +/TT8 1 Tf +9.0215 0 TD +0.0001 Tc +0.0043 Tw +(. Note that we have not even considered the case where )Tj +/TT10 1 Tf +25.0821 0 TD +0 Tc +0 Tw +(X*FCCT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0015 Tc +0.0029 Tw +( is)Tj +-37.7042 -1.2889 TD +0 Tc +0.1967 Tw +(itself a misspelling of a variable name, e.g., a variable named )Tj +/TT10 1 Tf +29.2312 0 TD +0 Tw +(XFCT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1967 Tw +[( \(as with )]TJ +/TT10 1 Tf +4.63 0 TD +0 Tw +(GET-)Tj +-36.2616 -1.2889 TD +(PRAENT\))Tj +/TT8 1 Tf +4.2007 0 TD +0.0544 Tw +[(. This sort of transformation will be considered after you said )]TJ +/TT10 1 Tf +28.1763 0 TD +0 Tw +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0544 Tw +[( to )]TJ +/TT10 1 Tf +1.481 0 TD +0 Tw +(X*FCCT)Tj +-35.0581 -1.2889 TD +(N -> X*\(FACT N\))Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +-13.0015 -2.9556 TD +0.0256 Tw +(The question of whether )Tj +/TT10 1 Tf +11.1432 0 TD +0 Tw +(X*FCCT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0256 Tw +[( should be treated as CLISP is important because Interlisp users may)]TJ +-14.7438 -1.2889 TD +0.1522 Tw +[(have programs that employ identifiers containing CLISP operators. Thus, if CLISP encounters the)]TJ +0 -1.2222 TD +0 Tw +(expression )Tj +/TT10 1 Tf +5.0046 0 TD +(A/B)Tj +/TT8 1 Tf +1.8003 0 TD +0.0178 Tw +[( in a context where either )]TJ +/TT10 1 Tf +11.5202 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( or )]TJ +/TT10 1 Tf +1.4765 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( are not the names of variables, it will ask you if )]TJ +/TT10 1 Tf +21.5566 0 TD +0 Tw +(A/B)Tj +/TT8 1 Tf +1.8003 0 TD +0.0178 Tw +[( is)]TJ +-44.3587 -1.2889 TD +0 Tw +(intended to be CLISP, in case you really do have a free variable named )Tj +/TT10 1 Tf +31.4356 0 TD +(A/B)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-29.9025 -2.0667 TD +0.3689 Tw +[(Note: )-282.3(Through the discussion above, we speak of CLISP or DWIM asking you.)]TJ +3.3333 -1.2222 TD +0.0111 Tw +(Actually, if you typed in the expression in question for immediate execution, you)Tj +T* +0.0056 Tw +(are simply informed of the transformation, on the grounds that you would prefer)Tj +T* +0.5333 Tw +(an occasional misinterpretation rather than being continuously bothered,)Tj +T* +0.1378 Tw +(especially since you can always retype what you intended if a mistake occurs,)Tj +T* +0.4333 Tw +(and ask the programmers assistant to )Tj +/TT10 1 Tf +19.6635 0 TD +0 Tw +(UNDO)Tj +/TT8 1 Tf +2.4004 0 TD +0.4333 Tw +[( the effects of the mistaken)]TJ +-22.0639 -1.2889 TD +0.0944 Tw +[(operations if necessary. For transformations on expressions in your programs,)]TJ +0 -1.2222 TD +0.2056 Tw +(you can tell CLISP whether you wish to operate in )Tj +/TT10 1 Tf +24.5438 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.2056 Tw +[( or )]TJ +/TT10 1 Tf +1.852 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +-31.1967 -1.2889 TD +0.4133 Tw +[(mode. In the former case \(most typical\) you will be asked to approve)]TJ +0 -1.2222 TD +0.2822 Tw +(transformations, in the latter, CLISP will operate as it does on type-in, i.e.,)Tj +T* +0 Tw +(perform the transformation after informing you.)Tj +ET +endstream +endobj +15 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +18 0 obj +<< +/Length 7995 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0933 Tw +(CLISP can also handle parentheses errors caused by typing )Tj +/TT10 1 Tf +27.1945 0 TD +0 Tw +(8)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( or )]TJ +/TT10 1 Tf +1.6276 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( for )]TJ +/TT10 1 Tf +1.9606 0 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( or )]TJ +/TT10 1 Tf +1.6276 0 TD +0 Tw +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +(. \(On most terminals, )Tj +/TT10 1 Tf +9.9241 0 TD +0 Tw +(8)Tj +/TT8 1 Tf +-44.7348 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.0095 0 TD +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( are the lowercase characters for )]TJ +/TT10 1 Tf +14.8155 0 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( and )]TJ +/TT10 1 Tf +2.3262 0 TD +0 Tw +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +(, i.e., )Tj +/TT10 1 Tf +2.4034 0 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( and )]TJ +/TT10 1 Tf +2.3262 0 TD +0 Tw +(8)Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( appear on the same key, as do )]TJ +/TT10 1 Tf +14.3322 0 TD +0 Tw +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( and )]TJ +/TT10 1 Tf +2.3262 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +(.\))Tj +-44.7399 -1.2889 TD +0.1933 Tw +(For example, if you write )Tj +/TT10 1 Tf +12.3671 0 TD +0.4644 Tw +(N*8FACTORIAL N-1)Tj +/TT8 1 Tf +10.066 0 TD +0.1933 Tw +(, the parentheses error can be detected and fixed)Tj +-22.4331 -1.2889 TD +0.0933 Tw +(before the infix operator )Tj +/TT10 1 Tf +11.347 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( is converted to the Interlisp function )]TJ +/TT10 1 Tf +17.2373 0 TD +0 Tw +(TIMES)Tj +/TT8 1 Tf +3.0005 0 TD +0.0933 Tw +(. CLISP is able to distinguish)Tj +-32.1849 -1.2889 TD +0.0589 Tw +(this situation from cases like )Tj +/TT10 1 Tf +13.1011 0 TD +0 Tw +(N*8*X)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +[( meaning )]TJ +/TT10 1 Tf +4.4908 0 TD +0.1411 Tw +(\(TIMES N 8 X\))Tj +/TT8 1 Tf +8.2246 0 TD +0.0589 Tw +(, or )Tj +/TT10 1 Tf +1.8087 0 TD +0 Tw +(N*8X)Tj +/TT8 1 Tf +2.4004 0 TD +0.0589 Tw +(, where )Tj +/TT10 1 Tf +3.6368 0 TD +0 Tw +(8X)Tj +/TT8 1 Tf +1.2002 0 TD +0.0589 Tw +[( is the name of a)]TJ +-37.8631 -1.2889 TD +0.2011 Tw +(variable, again by using information about the programming environment. In fact, by integrating)Tj +0 -1.2222 TD +0.0411 Tw +(CLISP with DWIM, CLISP has been made sufficiently tolerant of errors that almost everything can be)Tj +T* +0 Tw +(misspelled! For example, CLISP can successfully translate the definition of )Tj +/TT10 1 Tf +33.0957 0 TD +(FACTORIAL)Tj +/TT8 1 Tf +5.4009 0 TD +(:)Tj +/TT10 1 Tf +-33.1633 -2.0667 TD +(\(IFF N)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(0 THENN1 ESLE N*8FACTTORIALNN-1\))Tj +/TT8 1 Tf +-10.034 -2.7333 TD +0.1256 Tw +(to the corresponding )Tj +/TT10 1 Tf +9.8376 0 TD +0 Tw +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +0.1256 Tw +(, while making five spelling corrections and fixing the parenthesis error.)Tj +-12.238 -1.2889 TD +0.1222 Tw +(CLISP also contains a facility for converting from Interlisp back to CLISP, so that after running the)Tj +0 -1.2222 TD +0.08 Tw +(above incorrect definition of )Tj +/TT10 1 Tf +13.0759 0 TD +0 Tw +(FACTORIAL)Tj +/TT8 1 Tf +5.4009 0 TD +0.08 Tw +(, you could "clispify" the now correct version to obtain )Tj +/TT10 1 Tf +25.0529 0 TD +0 Tw +(\(IF)Tj +-43.5297 -1.2889 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(0 THEN 1 ELSE N*\(FACTORIAL N-1\)\))Tj +/TT8 1 Tf +19.2031 0 TD +(.)Tj +-20.9033 -2.9556 TD +0.07 Tw +[(This sort of robustness prevails throughout CLISP. For example, the iterative statement permits you)]TJ +0 -1.2222 TD +0 Tw +(to say things like:)Tj +/TT10 1 Tf +5.3333 -1.9333 TD +(\(FOR OLD X FROM M TO N DO \(PRINT X\) WHILE \(PRIMEP X\)\))Tj +/TT8 1 Tf +-5.3333 -2.7333 TD +0.0378 Tw +(However, you can also write )Tj +/TT10 1 Tf +13.1357 0 TD +0.0911 Tw +(OLD \(X)Tj +/TT11 1 Tf +3.6917 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.0911 Tw +(M\), \(OLD X)Tj +/TT11 1 Tf +6.1832 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(M\))Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5378 0 TD +0.0911 Tw +(\(OLD \(X)Tj +/TT11 1 Tf +4.2918 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(M\)\))Tj +/TT8 1 Tf +1.8003 0 TD +0.0378 Tw +(, permute the order of the)Tj +-33.8011 -1.2889 TD +0.0356 Tw +(operators, e.g., )Tj +/TT10 1 Tf +6.8182 0 TD +0.0856 Tw +(\(DO PRINT X TO N FOR OLD X)Tj +/TT11 1 Tf +16.2014 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.0856 Tw +(M WHILE PRIMEP X\))Tj +/TT8 1 Tf +10.4583 0 TD +0.0356 Tw +(, omit either or both sets)Tj +-34.4648 -1.2889 TD +0.0211 Tw +(of parentheses, misspell any or all of the operators )Tj +/TT10 1 Tf +22.6627 0 TD +0 Tw +(FOR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(OLD)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(DO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0211 Tw +(, or )Tj +/TT10 1 Tf +1.7331 0 TD +0 Tw +(WHILE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0211 Tw +(, or leave out the)Tj +-37.8821 -1.2889 TD +0 Tw +(word )Tj +/TT10 1 Tf +2.6857 0 TD +(DO)Tj +/TT8 1 Tf +1.2002 0 TD +0.05 Tw +[( entirely! And, of course, you can also misspell )]TJ +/TT10 1 Tf +21.2928 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.55 0 TD +(PRIMEP)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.55 0 TD +(M)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( or )]TJ +/TT10 1 Tf +1.5409 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[(! In this example, the)]TJ +-35.6209 -1.2889 TD +0.0711 Tw +(only thing you could not misspell is the first )Tj +/TT10 1 Tf +20.411 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +(, since it specifies the )Tj +/TT13 1 Tf +9.8453 0 TD +0 Tw +(name)Tj +/TT8 1 Tf +2.167 0 TD +0.0711 Tw +[( of the variable of iteration.)]TJ +-33.0234 -1.2889 TD +0 Tw +(The other two instances of )Tj +/TT10 1 Tf +11.8887 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( could be misspelled.)Tj +-12.4888 -2.9556 TD +0.1144 Tw +[(CLISP is well integrated into Medley. For example, the above iterative statement translates into an)]TJ +0 -1.2222 TD +0.1 Tw +(equivalent Interlisp form using )Tj +/TT10 1 Tf +14.4151 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6 0 TD +(GO)Tj +/TT8 1 Tf +1.2002 0 TD +0.1 Tw +[(, etc. When the interpreter subsequently encounters)]TJ +-21.6161 -1.2889 TD +0.0722 Tw +[(this CLISP expression, it automatically obtains and evaluates the translation. Similarly, the compiler)]TJ +0 -1.2222 TD +0.54 Tw +[("knows" to compile the translated form. However, if you )]TJ +/TT10 1 Tf +30.9278 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.54 Tw +[( your program,)]TJ +/TT10 1 Tf +-37.5289 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.2433 Tw +[( "knows" to print the original CLISP at the corresponding point in your function.)]TJ +-6.6011 -1.2889 TD +0.2033 Tw +[(Similarly, when you edit your program, the editor keeps the translation invisible to you. If you)]TJ +0 -1.2222 TD +0.2644 Tw +(modify the CLISP, the translation is automatically discarded and recomputed the next time the)Tj +T* +0 Tw +(expression is evaluated.)Tj +0 -2.8889 TD +0.0956 Tw +[(In short, CLISP is not a language at all, but rather a system. It plays a role analagous to that of the)]TJ +0 -1.2222 TD +0.5444 Tw +[(programmers assistant \(Chapter 13\). Whereas the programmers assistant is an invisible)]TJ +T* +0.17 Tw +(intermediary agent between your console requests and the Interlisp executive, CLISP sits between)Tj +T* +0 Tw +(your programs and the Interlisp interpreter.)Tj +0 -2.8889 TD +0.0433 Tw +[(Only a small effort has been devoted to defining the core syntax of CLISP. Instead, most of the effort)]TJ +0 -1.2222 TD +0.0467 Tw +(has been concentrated on providing a facility which "makes sense" out of the input expressions using)Tj +T* +0.0533 Tw +[(context information as well as built-in and acquired information about user and system programs. It)]TJ +T* +(has been said that communication is based on the intention of the speaker to produce an effect in the)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +21 0 obj +<< +/Length 6694 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.3178 Tw +[(recipient. CLISP operates under the assumption that what you say is )]TJ +/TT13 1 Tf +34.6004 0 TD +0 Tw +(intended)Tj +/TT8 1 Tf +3.5015 0 TD +0.3178 Tw +[( to represent a)]TJ +-38.1019 -1.2222 TD +0.0922 Tw +[(meaningful operation, and therefore tries very hard to make sense out of it. The motivation behind)]TJ +T* +0.0533 Tw +(CLISP is not to provide you with many different ways of saying the same thing, but to enable you to)Tj +T* +0.0044 Tw +(worry less about the )Tj +/TT13 1 Tf +9.2771 0 TD +0 Tw +(syntactic)Tj +/TT8 1 Tf +3.6475 0 TD +0.0001 Tc +0.0043 Tw +( aspects of your communication with the system. In other words, it gives)Tj +-12.9245 -1.2222 TD +0 Tc +0.0744 Tw +(you a new degree of freedom by permitting you to concentrate more on the problem at hand, rather)Tj +T* +0 Tw +(than on translation into a formal and unambiguous language.)Tj +0 -2.8889 TD +0.0111 Tw +(DWIM and CLISP are invoked on iterative statements because )Tj +/TT10 1 Tf +27.9003 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0111 Tw +[( of the iterative statement is not the)]TJ +-29.7006 -1.2889 TD +0.0222 Tw +[(name of a function, and hence generates an error. If you define a function by the same name as an i.s.)]TJ +0 -1.2222 TD +0.1967 Tw +(operator, e.g., )Tj +/TT10 1 Tf +6.7166 0 TD +0 Tw +(WHILE)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6967 0 TD +(TO)Tj +/TT8 1 Tf +1.2002 0 TD +0.1967 Tw +(, etc., the operator will no longer have the CLISP interpretation when it)Tj +-11.6139 -1.2889 TD +0.0422 Tw +(appears as )Tj +/TT10 1 Tf +5.0083 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0422 Tw +[( of a form, although it will continue to be treated as an i.s. operator if it appears in the)]TJ +-6.8086 -1.2889 TD +0.0656 Tw +[(interior of an i.s. To alert you, a warning message is printed, e.g., )]TJ +/TT10 1 Tf +30.0237 0 TD +0.1567 Tw +(\(WHILE DEFINED, THEREFORE)Tj +-30.0237 -1.2889 TD +0 Tw +(DISABLED IN)Tj +/TT15 1 Tf +6.6011 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(CLISP\))Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 388.2 Tm +(CLISP Interaction with User)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 385.49 m +558.01 385.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 363.54 Tm +0.2244 Tw +(Syntactically and semantically well formed CLISP transformations are always performed without)Tj +0 -1.2222 TD +0.0967 Tw +[(informing you. Other CLISP transformations described in the previous section, e.g., misspellings of)]TJ +T* +0.0656 Tw +(operands, infix operators, parentheses errors, unary minus - binary minus errors, all follow the same)Tj +T* +0.2922 Tw +[(protocol as other DWIM transformations \(Chapter 19\). That is, if DWIM has been enabled in)]TJ +/TT10 1 Tf +T* +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.1578 Tw +[( mode, or the transformation is in an expression you typed in for immediate execution,)]TJ +-4.8008 -1.2889 TD +0.0222 Tw +[(your approval is not requested, but you are informed. However, if the transformation involves a user)]TJ +0 -1.2222 TD +0.0633 Tw +(program, and DWIM was enabled in )Tj +/TT10 1 Tf +16.8815 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0633 Tw +[( mode, you will be asked to approve. If you say )]TJ +/TT10 1 Tf +22.2068 0 TD +0 Tw +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +(,)Tj +-45.0892 -1.2889 TD +0.1667 Tw +[(the transformation is not performed. Thus, in the previous section, phrases such as "one of these)]TJ +0 -1.2222 TD +0.1 Tw +(\(transformations\) succeeds" and "the transformation )Tj +/TT10 1 Tf +23.8272 0 TD +0.2389 Tw +(LAST-ELL ->)Tj +/TT8 1 Tf +6.84 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.35 0 TD +(LAST-EL)Tj +/TT8 1 Tf +4.2007 0 TD +0.1 Tw +[( would be found" etc.,)]TJ +-35.2178 -1.2889 TD +0.41 Tw +(all mean if you are in )Tj +/TT10 1 Tf +12.0621 0 TD +0 Tw +(CAUTIOUS)Tj +/TT8 1 Tf +4.8008 0 TD +0.41 Tw +[( mode and the error is in a program, the corresponding)]TJ +-16.8628 -1.2889 TD +0.0378 Tw +[(transformation will be performed only if you approve \(or defaults by not responding\). If you say )]TJ +/TT10 1 Tf +43.8825 0 TD +0 Tw +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +(,)Tj +-45.0827 -1.2889 TD +0.0233 Tw +[(the procedure followed is the same as though the transformation had not been found. For example, if)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +0.1044 Tw +[( appears in the function )]TJ +/TT10 1 Tf +11.2395 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1044 Tw +(, and )Tj +/TT10 1 Tf +2.6518 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.1044 Tw +[( is not bound \(and no other transformations are found\) you)]TJ +-18.092 -1.2889 TD +0.0756 Tw +(would be asked )Tj +/TT10 1 Tf +7.4635 0 TD +0.1811 Tw +[(A*B [IN FOO] TREAT AS CLISP)]TJ +/TT8 1 Tf +17.8894 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3256 0 TD +(?)Tj +/TT8 1 Tf +0.6001 0 TD +0.0756 Tw +[( \(The waiting time on such interactions is)]TJ +-26.2785 -1.2889 TD +0 Tw +(three times as long as for simple corrections, i.e., )Tj +/TT10 1 Tf +21.6211 0 TD +(3*DWIMWAIT)Tj +/TT8 1 Tf +6.001 0 TD +(\).)Tj +-27.6221 -2.9556 TD +0.1667 Tw +(In certain situations, DWIM asks for approval even if DWIM is enabled in )Tj +/TT10 1 Tf +35.0177 0 TD +0 Tw +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +0.1667 Tw +[( mode. For)]TJ +-39.8185 -1.2889 TD +0.1255 Tw +(example, you are always asked to approve a spelling correction that might also be interpreted as a)Tj +0 -1.2222 TD +0 Tw +(CLISP transformation, as in )Tj +/TT10 1 Tf +12.4614 0 TD +(LAST-ELL -> LAST-EL)Tj +/TT8 1 Tf +11.4019 0 TD +(.)Tj +-23.8633 -2.9556 TD +0.0033 Tw +(If you approved, )Tj +/TT10 1 Tf +7.6829 0 TD +0 Tw +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +( would be transformed to )Tj +/TT10 1 Tf +11.5294 0 TD +0 Tc +0.0078 Tw +(\(ITIMES A B\))Tj +/TT8 1 Tf +7.2167 0 TD +0.0033 Tw +(, which would then cause a )Tj +/TT10 1 Tf +12.3066 0 TD +0 Tw +(U.B.A.B.)Tj +/TT8 1 Tf +-40.5359 -1.2889 TD +0.1467 Tw +(error in the event that the program was being run \(remember the entire discussion also applies to)Tj +0 -1.2222 TD +0 Tw +(DWIMifying\). If you said )Tj +/TT10 1 Tf +11.6997 0 TD +(NO,)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +( would be left alone.)Tj +-15.5503 -2.9556 TD +0.2367 Tw +(If the value of )Tj +/TT10 1 Tf +7.3207 0 TD +0 Tw +(CLISPHELPFLG)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT10 1 Tf +0.4867 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4867 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2367 Tw +[( \(initally )]TJ +/TT10 1 Tf +4.4348 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2367 Tw +(\), you will not be asked to approve any CLISP)Tj +-22.9304 -1.2889 TD +0.0489 Tw +[(transformation. Instead, in those situations where approval would be required, the effect is the same)]TJ +0 -1.2222 TD +0 Tw +(as though you had been asked and said )Tj +/TT10 1 Tf +17.6987 0 TD +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +24 0 obj +<< +/Length 8706 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT4 1 Tf +-35.4 -4.38 TD +(CLISP Character Operators)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 543.54 Tm +0.0267 Tw +(CLISP recognizes a number of special characters operators, both prefix and infix, which are translated)Tj +0 -1.2222 TD +0.04 Tw +[(into common expressions. For example, the character )]TJ +/TT10 1 Tf +24.3073 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[( is recognized to represent addition, so CLISP)]TJ +-24.9074 -1.2889 TD +0 Tw +(translates the symbol )Tj +/TT10 1 Tf +9.6372 0 TD +(A+B)Tj +/TT8 1 Tf +1.8003 0 TD +( to the form )Tj +/TT10 1 Tf +5.416 0 TD +(\(IPLUS A B\))Tj +/TT8 1 Tf +6.602 0 TD +(. Note that CLISP is invoked, and this translation)Tj +-23.4556 -1.2889 TD +0.0189 Tw +(is made, only if an error occurs, such as an unbound atom error or an undefined function error for the)Tj +0 -1.2222 TD +0.2556 Tw +(perfectly legitamate symbol )Tj +/TT10 1 Tf +13.3052 0 TD +0 Tw +(A+B)Tj +/TT8 1 Tf +1.8003 0 TD +0.2556 Tw +[(. Therefore you may choose not to use these facilities with no)]TJ +-15.1055 -1.2889 TD +0 Tw +(penalty, similar to other CLISP facilities.)Tj +0 -2.8889 TD +0.0267 Tw +[(You have a lot of flexability in using CLISP character operators. A list can always be substituted for a)]TJ +0 -1.2222 TD +0.0555 Tw +[(symbol, and vice versa, without changing the interpretation of a phrase. For example, if the value of)]TJ +/TT10 1 Tf +T* +0.0778 Tw +(\(FOO X\))Tj +/TT8 1 Tf +4.2785 0 TD +0.0322 Tw +[( is )]TJ +/TT10 1 Tf +1.2793 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +(, and the value of )Tj +/TT10 1 Tf +8.0581 0 TD +0.0778 Tw +(\(FIE Y\))Tj +/TT8 1 Tf +4.2785 0 TD +0.0322 Tw +[( is )]TJ +/TT10 1 Tf +1.2793 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +(, then )Tj +/TT10 1 Tf +2.7837 0 TD +0.0778 Tw +(\(LIST \(FOO X\)+\(FIE Y\)\))Tj +/TT8 1 Tf +13.4355 0 TD +0.0322 Tw +[( has the same value)]TJ +-36.5929 -1.2889 TD +0 Tw +(as )Tj +/TT10 1 Tf +1.2894 0 TD +0.2767 Tw +(\(LIST A+B\))Tj +/TT8 1 Tf +6.2776 0 TD +0.1156 Tw +[(. Note that the first expression is a list of )]TJ +/TT13 1 Tf +19.5065 0 TD +0 Tw +(four)Tj +/TT8 1 Tf +1.667 0 TD +0.1156 Tw +[( elements: the atom )]TJ +/TT10 1 Tf +9.2972 0 TD +0 Tw +("LIST")Tj +/TT8 1 Tf +3.6006 0 TD +0.1156 Tw +(, the list)Tj +/TT10 1 Tf +-41.6383 -1.2889 TD +0.03 Tw +("\(FOO X\)")Tj +/TT8 1 Tf +5.4309 0 TD +0.0122 Tw +(, the atom ")Tj +/TT10 1 Tf +5.0499 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +(", and the list )Tj +/TT10 1 Tf +6.0821 0 TD +0.03 Tw +("\(FIE X\)")Tj +/TT8 1 Tf +5.4309 0 TD +0.0122 Tw +(, whereas the second expression, )Tj +/TT10 1 Tf +14.7135 0 TD +0.03 Tw +(\(LIST A+B\))Tj +/TT8 1 Tf +6.031 0 TD +0.0122 Tw +(, is a)Tj +-43.3382 -1.2889 TD +0.0533 Tw +(list of only )Tj +/TT13 1 Tf +5.096 0 TD +0 Tw +(two)Tj +/TT8 1 Tf +1.499 0 TD +0.0533 Tw +[( elements: the symbol )]TJ +/TT10 1 Tf +10.0463 0 TD +0 Tw +("LIST")Tj +/TT8 1 Tf +3.6006 0 TD +0.0533 Tw +[( and the symbol )]TJ +/TT10 1 Tf +7.5463 0 TD +0 Tw +("A+B")Tj +/TT8 1 Tf +3.0005 0 TD +0.0533 Tw +[(. Since )]TJ +/TT10 1 Tf +3.4808 0 TD +0.1289 Tw +(\(LIST \(FOO X\)+\(FIE)Tj +-34.2696 -1.2889 TD +0 Tw +(Y\)\))Tj +/TT8 1 Tf +1.8003 0 TD +0.2011 Tw +[( is indistinguishable from )]TJ +/TT10 1 Tf +12.3533 0 TD +0.4811 Tw +(\(LIST \(FOO X\) + \(FIE Y\)\))Tj +/TT8 1 Tf +16.8079 0 TD +0.2011 Tw +[( because spaces before or after)]TJ +-30.9615 -1.2889 TD +0.0211 Tw +(parentheses have no effect on the Interlisp )Tj +/TT10 1 Tf +19.0579 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +[( program, to be consistent, extra spaces have no effect)]TJ +-21.4583 -1.2889 TD +0.1244 Tw +[(on atomic operands either. In other words, CLISP will treat )]TJ +/TT10 1 Tf +28.0022 0 TD +0.2978 Tw +(\(LIST A+ B\))Tj +/TT8 1 Tf +7.1966 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.6244 0 TD +0.2978 Tw +(\(LIST A +B\))Tj +/TT8 1 Tf +7.1966 0 TD +0.1244 Tw +(, and)Tj +/TT10 1 Tf +-43.0199 -1.2889 TD +0 Tw +(\(LIST A + B\))Tj +/TT8 1 Tf +7.2012 0 TD +( the same as )Tj +/TT10 1 Tf +5.5967 0 TD +(\(LIST A+B\))Tj +/TT8 1 Tf +6.001 0 TD +(. )Tj +-15.4655 -2.0667 TD +0.1411 Tw +[(Note:)-901.2(CLISP does not use its own special )]TJ +/TT10 1 Tf +19.909 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.1411 Tw +[( program because this would require)]TJ +-18.9761 -1.2889 TD +0.1733 Tw +(you to explicitly identify CLISP expressions, instead of being able to intermix)Tj +0 -1.2222 TD +0 Tw +(Interlisp and CLISP.)Tj +/TT17 1 Tf +-4 -2.4822 TD +(+)Tj +/TT6 1 Tf +10 0 0 10 107.4 294 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 294 Tm +([CLISP Operator])Tj +/TT4 1 Tf +10 0 0 10 102 283.06 Tm +(-)Tj +/TT10 1 Tf +9 0 0 9 105.33 283.06 Tm +( )Tj +/TT6 1 Tf +10 0 0 10 110.7309 283.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 283.06 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(*)Tj +/TT6 1 Tf +10 0 0 10 107.4 272.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 272.12 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(/)Tj +/TT6 1 Tf +10 0 0 10 107.4 261.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 261.18 Tm +([CLISP Operator])Tj +/TT11 1 Tf +9.9 0 0 9 102 250.24 Tm +<0042>Tj +/TT6 1 Tf +10 0 0 10 107.43 250.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 250.24 Tm +([CLISP Operator])Tj +-32.27 -1.7778 TD +0.0367 Tw +(CLISP recognizes )Tj +/TT10 1 Tf +8.0548 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5367 0 TD +(-)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5367 0 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +0.25 0 TD +( )Tj +/TT8 1 Tf +0.6879 0 TD +0.0367 Tw +(/, and )Tj +/TT11 1 Tf +3.1222 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.0367 Tw +[( as the normal arithmetic infix operators. The )]TJ +/TT10 1 Tf +20.7538 0 TD +0 Tw +(-)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( is also)]TJ +-36.9454 -1.2889 TD +0.4656 Tw +[(recognized as the prefix operator, unary minus. These are converted to )]TJ +/TT10 1 Tf +37.3523 0 TD +0 Tw +(PLUS)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +/TT10 1 Tf +-39.7527 -1.2889 TD +(DIFFERENCE)Tj +/TT8 1 Tf +6.001 0 TD +( \(or in the case of unary minus, )Tj +/TT10 1 Tf +13.9287 0 TD +(MINUS)Tj +/TT8 1 Tf +3.0005 0 TD +(\), )Tj +/TT10 1 Tf +0.833 0 TD +(TIMES)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(QUOTIENT)Tj +/TT8 1 Tf +4.8008 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(EXPT)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-36.9077 -2.0667 TD +0.3456 Tw +(Normally, CLISP uses the "generic" arithmetic functions )Tj +/TT10 1 Tf +27.4306 0 TD +0 Tw +(PLUS)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.8456 0 TD +(TIMES)Tj +/TT8 1 Tf +3.0005 0 TD +0.3456 Tw +[(, etc. CLISP)]TJ +-33.677 -1.2889 TD +0.0467 Tw +(contains a facility for declaring which type of arithmetic is to be used, either by making a)Tj +0 -1.2222 TD +0 Tw +(global declaration, or by separate declarations about individual functions or variables.)Tj +0 -2 TD +0.0044 Tw +(The usual precedence rules apply \(although you can easily change them\), i.e., )Tj +/TT10 1 Tf +34.4894 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.0004 Tc +0.004 Tw +( has higher)Tj +-35.0895 -1.2889 TD +0 Tc +0.1289 Tw +(precedence than )Tj +/TT10 1 Tf +7.7407 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.1289 Tw +[( so that )]TJ +/TT10 1 Tf +3.8408 0 TD +0 Tw +(A+B*C)Tj +/TT8 1 Tf +3.0005 0 TD +0.1289 Tw +[( is the same as )]TJ +/TT10 1 Tf +7.206 0 TD +0 Tw +(A+\(B*C\))Tj +/TT8 1 Tf +4.2007 0 TD +0.1289 Tw +(, and both )Tj +/TT10 1 Tf +5.0869 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.1289 Tw +[( and )]TJ +/TT10 1 Tf +2.4506 0 TD +0 Tw +(/)Tj +/TT8 1 Tf +0.6001 0 TD +0.1289 Tw +[( are lower)]TJ +-35.3264 -1.2889 TD +0 Tw +(than )Tj +/TT11 1 Tf +2.3169 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.0767 Tw +[( so that )]TJ +/TT10 1 Tf +3.6841 0 TD +0 Tw +(2*X)Tj +/TT11 1 Tf +1.8003 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +(2)Tj +/TT8 1 Tf +0.6001 0 TD +0.0767 Tw +[( is the same as )]TJ +/TT10 1 Tf +6.9449 0 TD +0 Tw +(2*\(X)Tj +/TT11 1 Tf +2.4004 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +(2\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0767 Tw +[(. Operators of the same precedence group)]TJ +-20.7559 -1.2889 TD +0.2367 Tw +(from left to right, e.g., )Tj +/TT10 1 Tf +11.0769 0 TD +0 Tw +(A/B/C)Tj +/TT8 1 Tf +3.0005 0 TD +0.2367 Tw +[( is equivalent to )]TJ +/TT10 1 Tf +8.2099 0 TD +0 Tw +(\(A/B\)/C)Tj +/TT8 1 Tf +4.2007 0 TD +0.2367 Tw +[(. Minus is binary whenever)]TJ +-26.4879 -1.2889 TD +0.0789 Tw +(possible, i.e., except when it is the first operator in a list, as in )Tj +/TT10 1 Tf +28.3339 0 TD +0 Tw +(\(-A\))Tj +/TT8 1 Tf +2.4004 0 TD +0.0789 Tw +[( or )]TJ +/TT10 1 Tf +1.5987 0 TD +0 Tw +(\(-A\))Tj +/TT8 1 Tf +2.4004 0 TD +0.0789 Tw +(, or when it)Tj +-34.7334 -1.2889 TD +0.0744 Tw +(immediately follows another operator, as in )Tj +/TT10 1 Tf +20.0463 0 TD +0 Tw +(A*-B)Tj +/TT8 1 Tf +2.4004 0 TD +0.0744 Tw +[(. Note that grouping with parentheses)]TJ +-22.4467 -1.2889 TD +0.0011 Tw +(can always be used to override the normal precedence grouping, or when you are not sure)Tj +0 -1.2222 TD +0.2122 Tw +[(how a particular expression will parse. The complete order of precedence for CLISP)]TJ +T* +0 Tw +(operators is given below.)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT17 26 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +28 0 obj +<< +/Length 8080 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0944 Tw +(Note that )Tj +/TT10 1 Tf +4.6054 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.0944 Tw +[( in front of a number will disappear when the number is read, e.g., )]TJ +/TT10 1 Tf +30.9545 0 TD +0.2278 Tw +(\(FOO X)Tj +-36.16 -1.2889 TD +0 Tw +(+2\))Tj +/TT8 1 Tf +1.8003 0 TD +0.1056 Tw +[( is indistinguishable from )]TJ +/TT10 1 Tf +11.9711 0 TD +0.2544 Tw +(\(FOO X 2\))Tj +/TT8 1 Tf +5.9098 0 TD +0.1056 Tw +[(. This means that )]TJ +/TT10 1 Tf +8.5395 0 TD +0.2544 Tw +(\(FOO X +2\))Tj +/TT8 1 Tf +6.5099 0 TD +0.1056 Tw +[( will not be)]TJ +-34.7305 -1.2889 TD +0.0267 Tw +(interpreted as CLISP, or be converted to )Tj +/TT10 1 Tf +18.1325 0 TD +0.0633 Tw +(\(FOO \(IPLUS X 2\)\))Tj +/TT8 1 Tf +10.3917 0 TD +0.0267 Tw +[(. Similarly, )]TJ +/TT10 1 Tf +5.3529 0 TD +0.0633 Tw +(\(FOO X -2\))Tj +/TT8 1 Tf +-33.8771 -1.2889 TD +0.0456 Tw +(will not be interpreted the same as )Tj +/TT10 1 Tf +15.8233 0 TD +0.1078 Tw +(\(FOO X-2\))Tj +/TT8 1 Tf +5.5087 0 TD +0.0456 Tw +[(. To circumvent this, always type a space)]TJ +-21.3319 -1.2889 TD +0.0822 Tw +(between the )Tj +/TT10 1 Tf +5.7841 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +[( or )]TJ +/TT10 1 Tf +1.6054 0 TD +0 Tw +(-)Tj +/TT8 1 Tf +0.6001 0 TD +0.0822 Tw +[( and a number if an infix operator is intended, e.g., write )]TJ +/TT10 1 Tf +26.2181 0 TD +0.1967 Tw +(\(FOO X +)Tj +-34.8077 -1.2889 TD +0 Tw +(2\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT17 1 Tf +-3.8669 -2.5489 TD +(=)Tj +/TT6 1 Tf +10 0 0 10 155.4 488.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 488.6 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(GT)Tj +/TT6 1 Tf +10 0 0 10 160.8 477.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 477.66 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(LT)Tj +/TT6 1 Tf +10 0 0 10 160.8 466.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 466.72 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(GE)Tj +/TT6 1 Tf +10 0 0 10 160.8 455.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 455.78 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(LE)Tj +/TT6 1 Tf +10 0 0 10 160.8 444.84 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 444.84 Tm +([CLISP Operator])Tj +-32.27 -1.8444 TD +0.27 Tw +(These are infix operators for "Equal", "Greater Than", "Less Than", "Greater Than or)Tj +0 -1.2222 TD +0 Tw +(Equal", and "Less Than or Equal".)Tj +/TT10 1 Tf +0 -2 TD +(GT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6144 0 TD +(LT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6144 0 TD +(GE)Tj +/TT8 1 Tf +1.2002 0 TD +0.1144 Tw +(, and )Tj +/TT10 1 Tf +2.6718 0 TD +0 Tw +(LE)Tj +/TT8 1 Tf +1.2002 0 TD +0.1144 Tw +[( are all affected by the same declarations as )]TJ +/TT10 1 Tf +20.3357 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.1144 Tw +[( and )]TJ +/TT10 1 Tf +2.4218 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.1144 Tw +(, with the initial)Tj +-32.659 -1.2889 TD +0 Tw +(default to use )Tj +/TT10 1 Tf +6.271 0 TD +(GREATERP)Tj +/TT8 1 Tf +4.8008 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(LESSP)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-16.2651 -2.0667 TD +0.0211 Tw +(Note that only single character operators, e.g., )Tj +/TT10 1 Tf +20.7244 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT11 1 Tf +0.5211 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +(, etc., can appear in the )Tj +/TT13 1 Tf +10.488 0 TD +0 Tw +(interior)Tj +/TT8 1 Tf +3.0562 0 TD +0.0211 Tw +[( of an)]TJ +-37.4978 -1.2889 TD +0.0111 Tw +[(atom. All other operators must be set off from identifiers with spaces. For example, )]TJ +/TT10 1 Tf +37.6011 0 TD +0 Tw +(XLTY)Tj +/TT8 1 Tf +-37.6011 -1.2889 TD +0.1933 Tw +[(will not be recognized as CLISP. In some cases, DWIM will be able to diagnose this)]TJ +0 -1.2222 TD +0.0511 Tw +(situation as a run-on spelling error, in which case after the atom is split apart, CLISP will)Tj +T* +0 Tw +(be able to perform the indicated transformation.)Tj +-5.3333 -2.8889 TD +0.0489 Tw +(A number of Lisp functions, such as )Tj +/TT10 1 Tf +16.5283 0 TD +0 Tw +(EQUAL)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5489 0 TD +(MEMBER)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5489 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5489 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +0.0489 Tw +(, etc., can also be treated as CLISP infix)Tj +-27.7765 -1.2889 TD +0.0022 Tw +(operators. New infix operators can be easily added \(see the CLISP Internal Convetions section below\).)Tj +0 -1.2222 TD +0.0589 Tw +(Spelling correction on misspelled infix operators is peformed using )Tj +/TT10 1 Tf +30.468 0 TD +0 Tw +(CLISPINFIXSPLST)Tj +/TT8 1 Tf +9.0015 0 TD +0.0589 Tw +[( as a spelling)]TJ +-39.4695 -1.2889 TD +0 Tw +(list.)Tj +/TT10 1 Tf +0 -2.8889 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +0.1022 Tw +[( is higher than )]TJ +/TT10 1 Tf +6.9992 0 TD +0 Tw +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +0.1022 Tw +(, and both )Tj +/TT10 1 Tf +5.0069 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +0.1022 Tw +[( and )]TJ +/TT10 1 Tf +2.3973 0 TD +0 Tw +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +0.1022 Tw +[( are lower than the other infix operators, so )]TJ +/TT10 1 Tf +20.2393 0 TD +0.2455 Tw +(\(X OR Y)Tj +-40.6437 -1.2889 TD +0.06 Tw +(AND Z\))Tj +/TT8 1 Tf +3.6606 0 TD +0.0256 Tw +[( is the same as )]TJ +/TT10 1 Tf +6.6893 0 TD +0.06 Tw +(\(X OR \(Y AND Z\)\))Tj +/TT8 1 Tf +9.8416 0 TD +0.0256 Tw +(, and )Tj +/TT10 1 Tf +2.494 0 TD +0.06 Tw +(\(X AND Y EQUAL Z\))Tj +/TT8 1 Tf +10.4417 0 TD +0.0256 Tw +[( is the same as )]TJ +/TT10 1 Tf +6.6893 0 TD +0.06 Tw +(\(X AND \(Y)Tj +-39.8164 -1.2889 TD +0.3256 Tw +(EQUAL Z\)\))Tj +/TT8 1 Tf +5.7264 0 TD +0.1356 Tw +[(. All of the infix predicates have lower precedence than Interlisp forms, since it is far)]TJ +-5.7264 -1.2889 TD +0.0456 Tw +(more common to apply a predicate to two forms, than to use a Boolean as an argument to a function.)Tj +0 -1.2222 TD +0 Tw +(Therefore, )Tj +/TT10 1 Tf +4.8274 0 TD +0.0633 Tw +(\(FOO X GT FIE Y\))Tj +/TT8 1 Tf +9.8549 0 TD +0.0267 Tw +[( is translated as )]TJ +/TT10 1 Tf +7.1794 0 TD +0.0633 Tw +(\(\(FOO X\) GT \(FIE Y\)\))Tj +/TT8 1 Tf +12.2553 0 TD +0.0267 Tw +(, rather than as )Tj +/TT10 1 Tf +6.948 0 TD +0.0633 Tw +(\(FOO \(X)Tj +-41.065 -1.2889 TD +0 Tw +(GT \(FIE Y\)\)\))Tj +/TT8 1 Tf +7.2012 0 TD +(. However, you can easily change this.)Tj +/TT17 1 Tf +-4.5345 -2.5489 TD +(:)Tj +/TT6 1 Tf +10 0 0 10 155.4 157.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 157.3 Tm +([CLISP Operator])Tj +/TT19 1 Tf +-32.27 -1.8444 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(:)Tj +/TT19 1 Tf +0.6001 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1133 Tw +[( extracts the )]TJ +/TT19 1 Tf +5.8874 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1133 Tw +(th element of the list )Tj +/TT19 1 Tf +9.8421 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1133 Tw +(. )Tj +/TT10 1 Tf +0.9767 0 TD +0 Tw +(FOO:3)Tj +/TT8 1 Tf +3.0005 0 TD +0.1133 Tw +[( specifies the third element of )]TJ +/TT10 1 Tf +13.9359 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1133 Tw +(, or)Tj +/TT10 1 Tf +-38.4432 -1.2889 TD +0.06 Tw +(\(CADDR FOO\))Tj +/TT8 1 Tf +6.6611 0 TD +0.0244 Tw +[(. If )]TJ +/TT19 1 Tf +1.7433 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0244 Tw +[( is less than zero, this indicates elements counting from the end of the)]TJ +-9.0044 -1.2889 TD +0.0378 Tw +(list; i.e. )Tj +/TT10 1 Tf +3.4276 0 TD +0 Tw +(FOO:-1)Tj +/TT8 1 Tf +3.6006 0 TD +0.0378 Tw +[( is the last element of )]TJ +/TT10 1 Tf +9.7677 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0378 Tw +(. )Tj +/TT10 1 Tf +0.8256 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.0378 Tw +[( operators can be nested, so )]TJ +/TT10 1 Tf +12.6173 0 TD +0 Tw +(FOO:1:2)Tj +/TT8 1 Tf +4.2007 0 TD +0.0378 Tw +[( means)]TJ +-36.8398 -1.2889 TD +0 Tw +(the second element of the first element of )Tj +/TT10 1 Tf +18.4248 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(, or )Tj +/TT10 1 Tf +1.6909 0 TD +(\(CADAR FOO\))Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-28.5171 -2.0667 TD +0.15 Tw +(The : operator can also be used for extracting substructures of records \(see Chapter 8\).)Tj +0 -1.2222 TD +0.0367 Tw +(Record operations are implemented by replacing expressions of the form )Tj +/TT10 1 Tf +32.81 0 TD +0 Tw +(X:FOO)Tj +/TT8 1 Tf +3.0005 0 TD +0.0367 Tw +[( by \(fetch)]TJ +/TT10 1 Tf +-35.8105 -1.2889 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( of )Tj +/TT10 1 Tf +1.3789 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\). Both lower- and uppercase are acceptable.)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +32 0 obj +<< +/Length 8716 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT10 1 Tf +9 0 0 9 126 569.54 Tm +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.0744 Tw +[( is also used to indicate operations in the pattern match facility \(see Chapter 12\). )]TJ +/TT10 1 Tf +36.9963 0 TD +0 Tw +(X:\(&)Tj +-37.5964 -1.2889 TD +(A -- B\))Tj +/TT8 1 Tf +5.4009 0 TD +( translates to \(match )Tj +/TT10 1 Tf +9.187 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( with )Tj +/TT10 1 Tf +2.5332 0 TD +(\(& A -- B\))Tj +/TT8 1 Tf +7.2012 0 TD +(\))Tj +/TT17 1 Tf +-27.589 -2.5489 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 107.4 535 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 535 Tm +([CLISP Operator])Tj +-32.27 -1.8445 TD +0.3289 Tw +(In combination with :, a period can be used to specify the "data path" for record)Tj +0 -1.2222 TD +0.0278 Tw +[(operations. For example, if )]TJ +/TT10 1 Tf +12.4489 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +[( is a field of the )]TJ +/TT10 1 Tf +7.1525 0 TD +0 Tw +(BAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +[( record, )]TJ +/TT10 1 Tf +3.6752 0 TD +0 Tw +(X:BAR.FOO)Tj +/TT8 1 Tf +5.4009 0 TD +0.0278 Tw +[( is translated into)]TJ +-32.2781 -1.2889 TD +0.3067 Tw +(\(fetch \()Tj +/TT10 1 Tf +3.3867 0 TD +0.7356 Tw +(BAR FOO\))Tj +/TT8 1 Tf +5.5363 0 TD +0.3067 Tw +[( of )]TJ +/TT10 1 Tf +1.9922 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.3067 Tw +[(\). Subrecord fields can be specified with multiple periods:)]TJ +/TT10 1 Tf +-11.5154 -1.2889 TD +0 Tw +(X:BAR.FOO.BAZ)Tj +/TT8 1 Tf +7.8013 0 TD +( translates into \(fetch )Tj +/TT10 1 Tf +9.4893 0 TD +(\(BAR FOO BAZ\))Tj +/TT8 1 Tf +7.8013 0 TD +( of )Tj +/TT10 1 Tf +1.3789 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\).)Tj +-24.4041 -2.0667 TD +0.1533 Tw +[(Note: )153.3( )-247.9(If a record contains fields with periods in them, )]TJ +/TT10 1 Tf +25.8994 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1533 Tw +[( will not)]TJ +-27.3668 -1.2889 TD +0.1389 Tw +(translate a record operation into a form using periods to specify the)Tj +0 -1.2222 TD +0.0733 Tw +[(data path. For example, )]TJ +/TT10 1 Tf +11.3091 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0733 Tw +[( will NOT translate )]TJ +/TT10 1 Tf +9.0536 0 TD +0.1744 Tw +(\(fetch A.B)Tj +-25.1634 -1.2889 TD +0 Tw +(of X\))Tj +/TT8 1 Tf +3.0005 0 TD +( into )Tj +/TT10 1 Tf +2.2451 0 TD +(X:A.B)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 408.46 Tm +(::)Tj +/TT6 1 Tf +0.666 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 408.46 Tm +([CLISP Operator])Tj +/TT19 1 Tf +-32.27 -1.7778 TD +(X)Tj +/TT17 1 Tf +0.6001 0 TD +(:)Tj +/TT19 1 Tf +0.6001 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +(, returns the )Tj +/TT19 1 Tf +5.6113 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(th )Tj +/TT13 1 Tf +1.1649 0 TD +(tail)Tj +/TT8 1 Tf +1.3325 0 TD +0.0067 Tw +[( of the list )]TJ +/TT19 1 Tf +4.6248 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0067 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.7728 0 TD +0 Tw +(FOO::3)Tj +/TT8 1 Tf +3.6006 0 TD +0.0067 Tw +[( is )]TJ +/TT10 1 Tf +1.2282 0 TD +0.0144 Tw +(\(CDDDR FOO\))Tj +/TT8 1 Tf +6.6155 0 TD +0.0067 Tw +(, and )Tj +/TT10 1 Tf +2.4562 0 TD +0 Tw +(FOO::-)Tj +-36.4072 -1.2889 TD +(1)Tj +/TT8 1 Tf +0.6001 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(\(LAST FOO\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT11 1 Tf +-10.4826 -2.5489 TD +<0040>Tj +/TT6 1 Tf +10 0 0 10 110.8813 357.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 357.92 Tm +([CLISP Operator])Tj +/TT11 1 Tf +-32.27 -1.8444 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0178 Tw +[( is used to indicate assignment. For example, )]TJ +/TT10 1 Tf +20.1627 0 TD +0 Tw +(X)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( translates to )]TJ +/TT10 1 Tf +5.9225 0 TD +0.0433 Tw +(\(SETQ X Y\))Tj +/TT8 1 Tf +6.0876 0 TD +0.0178 Tw +[(. If )]TJ +/TT10 1 Tf +1.7233 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( does)]TJ +-37.67 -1.2889 TD +0.1411 Tw +(not have a value, and is not the name of one of the bound variables of the function in)Tj +0 -1.2222 TD +0.0856 Tw +[(which it appears, spelling correction is attempted. However, since this may simply be a)]TJ +T* +0.2544 Tw +(case of assigning an initial value to a new free variable, DWIM will always ask for)Tj +T* +0 Tw +(approval before making the correction.)Tj +0 -2 TD +0.1778 Tw +(In conjunction with )Tj +/TT17 1 Tf +9.4152 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +0.1778 Tw +[( and )]TJ +/TT17 1 Tf +2.5484 0 TD +0 Tw +(::)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT11 1 Tf +0.6778 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.1778 Tw +[( can also be used to perform a more general type of)]TJ +-15.4285 -1.2889 TD +0.1544 Tw +[(assignment, involving structure modification. For example,)]TJ +/TT10 1 Tf +27.3773 0 TD +0.3722 Tw +[( X:2)]TJ +/TT11 1 Tf +2.7726 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.1544 Tw +[( means "make the)]TJ +-31.7369 -1.2889 TD +0.0233 Tw +(second element of )Tj +/TT10 1 Tf +8.3034 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT13 1 Tf +0.2733 0 TD +(be)Tj +/TT8 1 Tf +0.8521 0 TD +( )Tj +/TT10 1 Tf +0.2733 0 TD +(Y")Tj +/TT8 1 Tf +1.2002 0 TD +0.0233 Tw +(, in Interlisp terms )Tj +/TT10 1 Tf +8.4493 0 TD +0.0556 Tw +(\(RPLACA \(CDR X\) Y\))Tj +/TT8 1 Tf +10.9684 0 TD +0.0233 Tw +[(. Note that the )]TJ +/TT13 1 Tf +6.9204 0 TD +0 Tw +(value)Tj +/TT8 1 Tf +-37.8405 -1.2889 TD +0.1589 Tw +(of this operation is the value of )Tj +/TT10 1 Tf +15.0492 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.1589 Tw +(, which is )Tj +/TT10 1 Tf +4.9244 0 TD +0.3822 Tw +(\(CDR X\))Tj +/TT8 1 Tf +4.5829 0 TD +0.1589 Tw +(, rather than )Tj +/TT10 1 Tf +6.1441 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.1589 Tw +[(. Negative)]TJ +-34.9014 -1.2889 TD +0.0889 Tw +(numbers can also be used, e.g.,)Tj +/TT10 1 Tf +14.0841 0 TD +0.2133 Tw +[( X:-2_Y)]TJ +/TT8 1 Tf +4.414 0 TD +0.0889 Tw +(, which translates to )Tj +/TT10 1 Tf +9.4576 0 TD +0.2133 Tw +(\(RPLACA \(NLEFT X 2\))Tj +-27.9557 -1.2889 TD +0 Tw +(Y\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-1.2002 -2.0667 TD +0.1433 Tw +(You can indicate you want )Tj +/TT10 1 Tf +12.7797 0 TD +0 Tw +(/RPLACA)Tj +/TT8 1 Tf +4.2007 0 TD +0.1433 Tw +[( and )]TJ +/TT10 1 Tf +2.4795 0 TD +0 Tw +(/RPLACD)Tj +/TT8 1 Tf +4.2007 0 TD +0.1433 Tw +[( used \(undoable version of )]TJ +/TT10 1 Tf +12.7421 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +-36.4026 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.0829 0 TD +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +0.14 Tw +(, see Chapter 13\), or )Tj +/TT10 1 Tf +9.698 0 TD +0 Tw +(FRPLACA)Tj +/TT8 1 Tf +4.2007 0 TD +0.14 Tw +[( and )]TJ +/TT10 1 Tf +2.4729 0 TD +0 Tw +(FRPLACD)Tj +/TT8 1 Tf +4.2007 0 TD +0.14 Tw +[( \(fast versions of )]TJ +/TT10 1 Tf +8.0605 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.14 Tw +[( and)]TJ +/TT10 1 Tf +-37.9168 -1.2889 TD +0 Tw +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +0.1722 Tw +[(, see Chapter 3\), by means of CLISP declarations. The initial default is to use)]TJ +/TT10 1 Tf +-3.6006 -1.2889 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT11 1 Tf +-9.394 -2.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.2922 Tw +[( is also used to indicate assignment in record operations \()]TJ +/TT10 1 Tf +28.223 0 TD +0 Tw +(X:FOO)Tj +/TT11 1 Tf +3.0005 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.2922 Tw +[( translates to)]TJ +/TT10 1 Tf +-33.7972 -1.2889 TD +0 Tw +(\(replace FOO of X with Y\))Tj +/TT8 1 Tf +15.0024 0 TD +(.\), and pattern match operations \(Chapter 12\).)Tj +/TT11 1 Tf +-15.0024 -2.0667 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.2633 Tw +[( has different precedence on the left from on the right. On the left,)]TJ +/TT11 1 Tf +32.4521 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.2633 Tw +[( is a "tight")]TJ +-34.4258 -1.2889 TD +0.05 Tw +(operator, i.e., high precedence, so that )Tj +/TT10 1 Tf +17.3161 0 TD +0 Tw +(A+B)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( is the same as )]TJ +/TT10 1 Tf +6.8115 0 TD +0 Tw +(A+\(B)Tj +/TT11 1 Tf +2.4004 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(C\))Tj +/TT8 1 Tf +1.2002 0 TD +0.05 Tw +[(. On the right, )]TJ +/TT11 1 Tf +6.9058 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +-39.008 -1.2889 TD +(has broader scope so that )Tj +/TT10 1 Tf +11.4326 0 TD +(A)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(B+C)Tj +/TT8 1 Tf +1.8003 0 TD +( is the same as )Tj +/TT10 1 Tf +6.5615 0 TD +(A)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(B+C\))Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-25.9688 -2.0667 TD +0.2467 Tw +(On type-in, )Tj +/TT10 1 Tf +5.78 0 TD +0 Tw +($)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT19 1 Tf +0.9868 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2467 Tw +[( \(where )]TJ +/TT10 1 Tf +4.0954 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.2467 Tw +[( is the escape key\) is equivalent to set the "last thing)]TJ +-14.4627 -1.2889 TD +0.0433 Tw +(mentioned", i.e., is equivalent to )Tj +/TT10 1 Tf +14.6498 0 TD +0.1056 Tw +(\(SET LASTWORD)Tj +/TT15 1 Tf +7.9068 0 TD +0 Tw +( )Tj +/TT19 1 Tf +0.2933 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +[( \(see Chapter 20\). For example,)]TJ +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +35 0 obj +<< +/Length 10617 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0067 Tw +(immediately after examining the value of )Tj +/TT10 1 Tf +18.5473 0 TD +0 Tw +(LONGVARIABLENAME)Tj +/TT8 1 Tf +9.6016 0 TD +0.0067 Tw +(, you could set it by typing)Tj +/TT10 1 Tf +-28.1489 -1.4378 TD +0 Tw +($)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT6 1 Tf +10 0 0 10 188.2822 556.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 191.0605 556.6 Tm +(followed by a form.)Tj +-1.8956 -2.0667 TD +0.16 Tw +(Note that an atom of the form )Tj +/TT10 1 Tf +14.5463 0 TD +0 Tw +(X)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.16 Tw +(, appearing at the top level of a )Tj +/TT10 1 Tf +15.2058 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.16 Tw +(, will not be)Tj +-34.3395 -1.4378 TD +0.0933 Tw +(recognized as an assignment statement because it will be interpreted as a )Tj +/TT10 1 Tf +33.6073 0 TD +0 Tw +(PROG)Tj +/TT6 1 Tf +10 0 0 10 498.0693 525.0599 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 501.8876 525.0599 Tm +0.0933 Tw +(label by)Tj +-36.432 -1.4378 TD +0.1344 Tw +(the Interlisp interpreter, and therefore will not cause an error, so )Tj +/TT10 1 Tf +30.1703 0 TD +0 Tw +(DWIM)Tj +/TT6 1 Tf +10 0 0 10 467.1362 512.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 471.4045 512.12 Tm +0.1344 Tw +(and CLISP will)Tj +-33.0449 -1.4378 TD +0 Tw +(never get to see it. Instead, one must write )Tj +/TT10 1 Tf +19.1592 0 TD +(\(X)Tj +/TT11 1 Tf +1.2002 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y\))Tj +/TT6 1 Tf +10 0 0 10 376.9175 499.18 Tm +(.)Tj +/TT17 1 Tf +9 0 0 9 150 476.24 Tm +(<)Tj +/TT6 1 Tf +10 0 0 10 155.4009 476.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 476.24 Tm +([CLISP Operator])Tj +/TT17 1 Tf +-34.9367 -1.2156 TD +(>)Tj +/TT6 1 Tf +10 0 0 10 155.4009 465.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 465.3 Tm +([CLISP Operator])Tj +-32.27 -1.9933 TD +0.1167 Tw +[(Angle brackets are used in CLISP to indicate list construction. The appearance of a )]TJ +/TT6 1 Tf +10 0 0 10 521.6997 447.36 Tm +0 Tw +(")Tj +/TT10 1 Tf +9 0 0 9 525.2495 447.36 Tm +(<)Tj +/TT8 1 Tf +0.6001 0 TD +(")Tj +-39.6278 -1.4378 TD +0.2589 Tw +(corresponds to a ")Tj +/TT10 1 Tf +8.7161 0 TD +0 Tw +(\()Tj +/TT6 1 Tf +10 0 0 10 257.8459 434.42 Tm +(")Tj +/TT8 1 Tf +9 0 0 9 261.3958 434.42 Tm +0.2589 Tw +[( and indicates that a list is to be constructed containing all the)]TJ +-9.7106 -1.4378 TD +0.0556 Tw +(elements up to the corresponding ")Tj +/TT10 1 Tf +15.7568 0 TD +0 Tw +(>)Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +[(". For example,)]TJ +/TT6 1 Tf +10 0 0 10 384.5166 421.48 Tm +0 Tw +( )Tj +/TT10 1 Tf +9 0 0 9 387.9149 421.48 Tm +0.1333 Tw +(>)Tj +/TT6 1 Tf +10 0 0 10 438.9228 421.48 Tm +0 Tw +( )Tj +/TT8 1 Tf +9 0 0 9 442.3212 421.48 Tm +(translates)Tj +/TT6 1 Tf +10 0 0 10 480.5448 421.48 Tm +0.062 Tw +[( to)]TJ +/TT8 1 Tf +9 0 0 9 492.283 421.48 Tm +0 Tw +( )Tj +/TT10 1 Tf +0.3056 0 TD +0.1333 Tw +(\(LIST A)Tj +-35.6703 -1.4378 TD +0.0889 Tw +(B \(LIST C\)\))Tj +/TT6 1 Tf +10 0 0 10 235.0097 408.54 Tm +0.041 Tw +(. )Tj +/TT10 1 Tf +9 0 0 9 244.1646 408.54 Tm +0 Tw +(!)Tj +/TT8 1 Tf +0.6001 0 TD +0.0367 Tw +[( can be used to indicate that the next expression is to be inserted in the)]TJ +-8.3962 -1.2889 TD +0.04 Tw +(list as a )Tj +/TT13 1 Tf +3.6259 0 TD +0 Tw +(segment)Tj +/TT8 1 Tf +3.3345 0 TD +0.04 Tw +(, e.g., )Tj +/TT10 1 Tf +2.6152 0 TD +0.0967 Tw +()Tj +/TT8 1 Tf +5.6909 0 TD +0.04 Tw +[( translates to )]TJ +/TT10 1 Tf +5.9891 0 TD +0.0967 Tw +(\(CONS A)Tj +/TT15 1 Tf +4.2973 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.29 0 TD +0.0967 Tw +(\(CONS B C\)\))Tj +/TT8 1 Tf +6.7944 0 TD +0.04 Tw +[( and )]TJ +/TT10 1 Tf +2.2729 0 TD +0.0967 Tw +()Tj +/TT8 1 Tf +1.2002 0 TD +0.0067 Tw +[( to )]TJ +/TT10 1 Tf +1.3854 0 TD +0.0156 Tw +(\(APPEND A B \(LIST C\)\))Tj +/TT8 1 Tf +12.6643 0 TD +0.0067 Tw +(. )Tj +/TT10 1 Tf +0.7633 0 TD +0 Tw +(!! )Tj +/TT8 1 Tf +1.8159 0 TD +0.0067 Tw +(is used to indicate that the next expression is to be)Tj +-17.8291 -1.2889 TD +(inserted as a segment, and furthermore, all list structure to its right in the angle brackets is)Tj +0 -1.2222 TD +0 Tw +(to be physically attached to it, e.g., )Tj +/TT10 1 Tf +15.4829 0 TD +()Tj +/TT8 1 Tf +4.7993 0 TD +( translates to )Tj +/TT10 1 Tf +5.8691 0 TD +(\(NCONC1 A B\))Tj +/TT8 1 Tf +7.202 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +()Tj +/TT8 1 Tf +1.8003 0 TD +0.0522 Tw +[( to )]TJ +/TT10 1 Tf +1.4765 0 TD +0.1244 Tw +(\(NCONC A \(APPEND B C\)\))Tj +/TT8 1 Tf +13.6999 0 TD +0.0522 Tw +[(. Not )]TJ +/TT10 1 Tf +2.8598 0 TD +0.1244 Tw +(\(NCONC \(APPEND A B\) C\))Tj +/TT8 1 Tf +13.6999 0 TD +0.0522 Tw +(, which would)Tj +-33.5365 -1.2889 TD +0.0722 Tw +(have the same value, but would attach )Tj +/TT10 1 Tf +17.7878 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.0722 Tw +[( to )]TJ +/TT10 1 Tf +1.5165 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0722 Tw +(, and not attach either to )Tj +/TT10 1 Tf +11.4328 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0722 Tw +[(. Note that )]TJ +/TT10 1 Tf +5.4554 0 TD +0 Tw +(<)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5722 0 TD +(!)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +-39.7653 -1.2889 TD +(!!)Tj +/TT8 1 Tf +1.2002 0 TD +0.0622 Tw +(, and )Tj +/TT10 1 Tf +2.5673 0 TD +0 Tw +(>)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[( need not be separate atoms, for example, )]TJ +/TT10 1 Tf +19.0407 0 TD +0.15 Tw +()Tj +/TT8 1 Tf +5.8509 0 TD +0.0622 Tw +[( may be written equally)]TJ +-29.2592 -1.2889 TD +0.0333 Tw +(well as )Tj +/TT10 1 Tf +3.3855 0 TD +0.08 Tw +(< A B !C >)Tj +/TT8 1 Tf +6.321 0 TD +0.0333 Tw +[(. Also, arbitrary Interlisp or CLISP forms may be used within angle)]TJ +-9.7065 -1.2889 TD +0.0511 Tw +[(brackets. For example, one can write )]TJ +/TT10 1 Tf +16.9891 0 TD +0 Tw +(Tj +/TT10 1 Tf +0.9868 0 TD +0.1222 Tw +(\(FIE X\) ! Y>)Tj +/TT8 1 Tf +7.5678 0 TD +0.0511 Tw +[( which translates to )]TJ +/TT10 1 Tf +9.0565 0 TD +0 Tw +(\(CONS)Tj +-37.0007 -1.2889 TD +0.1911 Tw +(\(SETQ FOO \(FIE X\)\) Y\))Tj +/TT8 1 Tf +13.3665 0 TD +0.08 Tw +(. )Tj +/TT10 1 Tf +0.91 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.08 Tw +[( converts expressions in )]TJ +/TT10 1 Tf +11.1144 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.58 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.58 0 TD +(APPEND)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-39.7531 -1.2889 TD +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(NCONC1)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(/NCONC)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +(, and )Tj +/TT10 1 Tf +2.574 0 TD +0 Tw +(/NCONC1)Tj +/TT8 1 Tf +4.2007 0 TD +0.0656 Tw +[( into equivalent CLISP expressions using )]TJ +/TT10 1 Tf +18.7171 0 TD +0 Tw +(<)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(>)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(!)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-39.7559 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(!!)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-0.4764 -2.0667 TD +0.0678 Tw +[(Note: )-583.4(brackets differ from other CLISP operators. For example, )]TJ +/TT10 1 Tf +29.541 0 TD +0.1622 Tw +()Tj +/TT8 1 Tf +-26.2077 -1.2889 TD +0.0578 Tw +(translates to )Tj +/TT10 1 Tf +5.7347 0 TD +0.1389 Tw +(\(LIST A B \(QUOTE C\)\))Tj +/TT8 1 Tf +12.5575 0 TD +0.0578 Tw +[( even though following )]TJ +/TT10 1 Tf +10.8014 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.0578 Tw +(, all)Tj +/TT13 1 Tf +-29.6937 -1.2889 TD +0 Tw +(operators)Tj +/TT8 1 Tf +3.7212 0 TD +0.0189 Tw +[( are ignored for the rest of the identifier. \(This is true only if a)]TJ +-3.7212 -1.2222 TD +0.0756 Tw +(previous unmatched )Tj +/TT15 1 Tf +9.5647 0 TD +0 Tw +(<)Tj +/TT8 1 Tf +0.606 0 TD +0.0756 Tw +[( has been seen, e.g., )]TJ +/TT10 1 Tf +9.2259 0 TD +0.1811 Tw +(\(PRINT A>B\))Tj +/TT8 1 Tf +7.3823 0 TD +0.0756 Tw +[( will print)]TJ +-26.7789 -1.2889 TD +0.0789 Tw +(the atom )Tj +/TT10 1 Tf +4.2999 0 TD +0 Tw +(A>B)Tj +/TT8 1 Tf +1.8003 0 TD +0.0789 Tw +[(.\) Note however that )]TJ +/TT10 1 Tf +10.0238 0 TD +0.19 Tw +( D>)Tj +/TT8 1 Tf +7.9612 0 TD +0.0789 Tw +[( is equivalent to)]TJ +/TT10 1 Tf +-24.0852 -1.2889 TD +0 Tw +(\(LIST A B \(QUOTE C>\) D\))Tj +/TT8 1 Tf +13.8022 0 TD +(.)Tj +/TT17 1 Tf +-22.4689 -2.5489 TD +()Tj +/TT6 1 Tf +10 0 0 10 155.4009 171 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 464.43 171 Tm +([CLISP Operator])Tj +-32.27 -1.8444 TD +0.0711 Tw +(CLISP recognizes )Tj +/TT10 1 Tf +8.1237 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( as a prefix operator. )]TJ +/TT10 1 Tf +10.0038 0 TD +0 Tw +()Tj +/TT8 1 Tf +0.6001 0 TD +0.0711 Tw +[( means )]TJ +/TT10 1 Tf +3.5099 0 TD +0 Tw +(QUOTE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0711 Tw +[( when it is the first character in)]TJ +-25.8381 -1.2889 TD +0.0689 Tw +[(an identifier, and is ignored when it is used in the interior of an identifier. Thus, )]TJ +/TT10 1 Tf +36.9509 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3189 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3189 0 TD +(Y)Tj +/TT8 1 Tf +-38.7889 -1.2889 TD +(means )Tj +/TT10 1 Tf +3.1832 0 TD +0.1578 Tw +(\(EQ X \(QUOTE Y\)\))Tj +/TT8 1 Tf +10.0749 0 TD +0.0656 Tw +(, but )Tj +/TT10 1 Tf +2.3635 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3156 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3156 0 TD +(CANT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0656 Tw +[( means )]TJ +/TT10 1 Tf +3.4988 0 TD +0.1578 Tw +(\(EQ X CANT\))Tj +/TT8 1 Tf +7.5167 0 TD +0 Tw +(, )Tj +/TT13 1 Tf +0.5656 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +( )Tj +/TT10 1 Tf +0.3156 0 TD +0.1578 Tw +(\(EQ X CAN\))Tj +/TT8 1 Tf +-33.6831 -1.2889 TD +0.0678 Tw +(followed by )Tj +/TT10 1 Tf +5.6756 0 TD +0.1622 Tw +(\(QUOTE T\))Tj +/TT8 1 Tf +5.5631 0 TD +0.0678 Tw +[(. This enables users to have variable and function names with )]TJ +/TT15 1 Tf +28.4789 0 TD +0 Tw +()Tj +/TT8 1 Tf +-39.7176 -1.2889 TD +(in them \(so long as the )Tj +/TT15 1 Tf +10.2319 0 TD +()Tj +/TT8 1 Tf +0.2778 0 TD +( is not the first character\).)Tj +-10.5098 -2 TD +(Following )Tj +/TT10 1 Tf +5.0076 0 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +0.2644 Tw +(, all operators are ignored for the rest of the identifier, e.g., )Tj +/TT10 1 Tf +29.2158 0 TD +0 Tw +(*A)Tj +/TT8 1 Tf +1.8003 0 TD +0.2644 Tw +[( means)]TJ +/TT10 1 Tf +-36.6238 -1.2889 TD +0.0922 Tw +(\(QUOTE *A\))Tj +/TT8 1 Tf +6.0932 0 TD +0.0389 Tw +(, and )Tj +/TT10 1 Tf +2.5206 0 TD +0 Tw +(X=Y)Tj +/TT8 1 Tf +2.4004 0 TD +0.0389 Tw +[( means )]TJ +/TT10 1 Tf +3.4455 0 TD +0.0922 Tw +(\(QUOTE X=Y\))Tj +/TT8 1 Tf +6.6933 0 TD +0.0389 Tw +(, not )Tj +/TT10 1 Tf +2.2819 0 TD +0.0922 Tw +(\(EQ \(QUOTE X\) Y\))Tj +/TT8 1 Tf +9.8782 0 TD +0.0389 Tw +[(. To write )]TJ +/TT10 1 Tf +4.8894 0 TD +0 Tw +(\(EQ)Tj +-38.2025 -1.2889 TD +0.0511 Tw +(\(QUOTE X\) Y\))Tj +/TT8 1 Tf +7.3034 0 TD +0.0211 Tw +(, one writes )Tj +/TT10 1 Tf +5.4193 0 TD +0 Tw +(Y=X)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +(, or )Tj +/TT10 1 Tf +1.7331 0 TD +0.0511 Tw +(X =Y)Tj +/TT8 1 Tf +3.0516 0 TD +0.0211 Tw +[(. This is one place where an extra space does)]TJ +-19.9078 -1.2889 TD +0 Tw +(make a difference.)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +38 0 obj +<< +/Length 6403 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0111 Tw +(On type-in, )Tj +/TT10 1 Tf +5.3088 0 TD +0 Tw +($)Tj +/TT8 1 Tf +1.2002 0 TD +0.0111 Tw +[( \(escape\) is equivalent to )]TJ +/TT10 1 Tf +11.1615 0 TD +0 Tw +(\(QUOTE)Tj +/TT15 1 Tf +3.6006 0 TD +( )Tj +/TT19 1 Tf +0.2611 0 TD +(VALUE-OF-LASTWORD)Tj +/TT10 1 Tf +10.2017 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( \(see Chapter 19\).)]TJ +-32.334 -1.2889 TD +0.4122 Tw +(For example, after calling )Tj +/TT10 1 Tf +13.1333 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.4122 Tw +[( on )]TJ +/TT10 1 Tf +2.4524 0 TD +0 Tw +(LONGFUNCTION)Tj +/TT8 1 Tf +7.2012 0 TD +0.4122 Tw +(, you could move its)Tj +-29.3879 -1.2889 TD +0 Tw +(definition to )Tj +/TT10 1 Tf +5.7041 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( by typing )Tj +/TT10 1 Tf +4.772 0 TD +(\(MOVD $ FOO\))Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +-20.6777 -2.0667 TD +0.3989 Tw +(Note that this is not )Tj +/TT10 1 Tf +10.9529 0 TD +0.9567 Tw +(\(MOVD $ FOO\))Tj +/TT8 1 Tf +9.7146 0 TD +0.3989 Tw +(, which would be equivalent to )Tj +/TT10 1 Tf +16.3416 0 TD +0 Tw +(\(MOVD)Tj +-37.0091 -1.2889 TD +0.3456 Tw +(LONGFUNCTION FOO\))Tj +/TT8 1 Tf +11.1473 0 TD +0.1444 Tw +(, and would \(probably\) cause a )Tj +/TT10 1 Tf +14.8056 0 TD +0 Tw +(U.B.A.)Tj +/TT15 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.3944 0 TD +(LONGFUNCTION)Tj +/TT8 1 Tf +7.2012 0 TD +0.1444 Tw +[( error,)]TJ +-37.1491 -1.2889 TD +0 Tw +(nor )Tj +/TT10 1 Tf +1.8618 0 TD +0.2144 Tw +(MOVD\($ FOO\))Tj +/TT8 1 Tf +6.8155 0 TD +0.0889 Tw +(, which would actually move the definition of )Tj +/TT10 1 Tf +21.1608 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.0889 Tw +[( to )]TJ +/TT10 1 Tf +1.5498 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0889 Tw +(, since DWIM)Tj +-33.7884 -1.2889 TD +0 Tw +(and the spelling corrector would never be invoked.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(~)Tj +/TT6 1 Tf +10 0 0 10 107.4009 470.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 416.43 470.6 Tm +([CLISP Operator])Tj +-32.27 -1.8444 TD +0.2756 Tw +(CLISP recognizes )Tj +/TT10 1 Tf +8.5326 0 TD +0 Tw +(~)Tj +/TT8 1 Tf +0.6001 0 TD +0.2756 Tw +[( as a prefix operator meaning )]TJ +/TT10 1 Tf +14.8535 0 TD +0 Tw +(NOT)Tj +/TT8 1 Tf +1.8003 0 TD +0.2756 Tw +(. )Tj +/TT10 1 Tf +1.3011 0 TD +0 Tw +(~)Tj +/TT8 1 Tf +0.6001 0 TD +0.2756 Tw +[( can negate a form, as in)]TJ +/TT10 1 Tf +-27.6877 -1.2889 TD +0.2 Tw +(~\(ASSOC X Y\))Tj +/TT8 1 Tf +7.6012 0 TD +0.0833 Tw +(, or )Tj +/TT10 1 Tf +1.8576 0 TD +0 Tw +(~X)Tj +/TT8 1 Tf +1.2002 0 TD +0.0833 Tw +(, or negate an infix operator, e.g., )Tj +/TT10 1 Tf +15.3651 0 TD +0.2 Tw +(\(A ~GT B\))Tj +/TT8 1 Tf +5.8009 0 TD +0.0833 Tw +[( is the same as )]TJ +/TT10 1 Tf +6.9782 0 TD +0 Tw +(\(A)Tj +-38.8031 -1.2889 TD +(LEQ B\))Tj +/TT8 1 Tf +3.6006 0 TD +(. Note that )Tj +/TT10 1 Tf +4.9165 0 TD +(~A)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(= B)Tj +/TT8 1 Tf +1.8003 0 TD +( means )Tj +/TT10 1 Tf +3.3677 0 TD +(\(EQ \(NOT A\) B\))Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +-23.5366 -2.0667 TD +(When )Tj +/TT10 1 Tf +3.1208 0 TD +(~)Tj +/TT8 1 Tf +0.6001 0 TD +0.2278 Tw +[( negates an operator, e.g., )]TJ +/TT10 1 Tf +12.6404 0 TD +0 Tw +(~=)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.7278 0 TD +(~LT)Tj +/TT8 1 Tf +1.8003 0 TD +0.2278 Tw +(, the two operators are treated as a single)Tj +-20.0896 -1.2889 TD +0.0133 Tw +(operator whose precedence is that of the second operator. When )Tj +/TT10 1 Tf +28.7608 0 TD +0 Tw +(~)Tj +/TT8 1 Tf +0.6001 0 TD +0.0133 Tw +[( negates a function, e.g.,)]TJ +/TT10 1 Tf +-29.3609 -1.2889 TD +0 Tw +(\(~FOO X Y\))Tj +/TT8 1 Tf +6.001 0 TD +(, it negates the whole form, i.e., )Tj +/TT10 1 Tf +14.0093 0 TD +(\(~\(FOO X Y\)\))Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-32.5448 -2.9556 TD +(Order of Precedence of CLISP Operators:)Tj +/TT10 1 Tf +9.3333 -1.1556 TD +()Tj +0 -1.2222 TD +(:)Tj +/TT11 1 Tf +0 -1.4378 TD +<0040>Tj +/TT4 1 Tf +10 0 0 10 170.8813 328.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 173.6597 328.06 Tm +(\(left precedence\))Tj +/TT10 1 Tf +-1.2955 -1.4378 TD +(-)Tj +/TT4 1 Tf +10 0 0 10 167.4009 315.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 170.1792 315.12 Tm +(\(unary\),)Tj +/TT4 1 Tf +10 0 0 10 202.1494 315.12 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 204.9277 315.12 Tm +(~)Tj +/TT11 1 Tf +-4.7697 -1.2222 TD +<0042>Tj +/TT10 1 Tf +T* +(*, /)Tj +0 -1.4378 TD +(+, -)Tj +/TT4 1 Tf +10 0 0 10 183.6035 280.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 186.3818 280.18 Tm +(\(binary\))Tj +/TT11 1 Tf +-2.7091 -1.4378 TD +<0040>Tj +/TT4 1 Tf +10 0 0 10 170.8813 267.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 173.6597 267.24 Tm +(\(right precedence\))Tj +/TT10 1 Tf +-1.2955 -1.2222 TD +(=)Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +(Interlisp forms)Tj +/TT10 1 Tf +9.3333 -1.3711 TD +(LT, GT, EQUAL, MEMBER,)Tj +/TT4 1 Tf +10 0 0 10 280.8193 217.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 283.5976 217.3 Tm +(etc)Tj +/TT6 1 Tf +10 0 0 10 294.8388 217.3 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 162 206.3 Tm +(AND)Tj +0 -1.2222 TD +(OR)Tj +T* +(IF, THEN, ELSEIF, ELSE)Tj +/TT8 1 Tf +0 -1.2889 TD +(iterative statement operators)Tj +/TT4 1 Tf +10 0 0 10 54 120.36 Tm +(Declarations)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 117.65 m +510.01 117.65 l +S +BT +/TT8 1 Tf +9 0 0 9 78 95.7 Tm +0.2078 Tw +(CLISP declarations are used to affect the choice of Interlisp function used as the translation of a)Tj +0 -1.2222 TD +0.0833 Tw +[(particular operator. For example, )]TJ +/TT10 1 Tf +15.547 0 TD +0 Tw +(A+B)Tj +/TT8 1 Tf +1.8003 0 TD +0.0833 Tw +[( can be translated as either )]TJ +/TT10 1 Tf +12.4683 0 TD +0.2011 Tw +(\(PLUS A B\))Tj +/TT8 1 Tf +6.4032 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5833 0 TD +0.2011 Tw +(\(FPLUS A B\))Tj +/TT8 1 Tf +7.0033 0 TD +0.0833 Tw +(, or)Tj +/TT10 1 Tf +-43.8054 -1.2889 TD +0.0956 Tw +(\(IPLUS A B\))Tj +/TT8 1 Tf +6.7922 0 TD +0.04 Tw +[(, depending on the declaration in effect. Similarly )]TJ +/TT10 1 Tf +22.672 0 TD +0 Tw +(X:1)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[( can mean )]TJ +/TT10 1 Tf +4.8397 0 TD +0.0956 Tw +(\(RPLACA X Y\))Tj +/TT8 1 Tf +7.3923 0 TD +0 Tw +(,)Tj +/TT10 1 Tf +-45.0834 -1.2889 TD +0.0789 Tw +(\(FRPLACA X Y\))Tj +/TT8 1 Tf +7.959 0 TD +0.0333 Tw +(, or )Tj +/TT10 1 Tf +1.7576 0 TD +0.0789 Tw +(\(/RPLACA X Y\))Tj +/TT8 1 Tf +7.959 0 TD +0.0333 Tw +(, and )Tj +/TT10 1 Tf +2.5095 0 TD +0.0789 Tw +()Tj +/TT8 1 Tf +4.9586 0 TD +0.0333 Tw +[( either )]TJ +/TT10 1 Tf +3.1189 0 TD +0.0789 Tw +(\(NCONC1 A B\))Tj +/TT8 1 Tf +7.359 0 TD +0.0333 Tw +[( or )]TJ +/TT10 1 Tf +1.5076 0 TD +0.0789 Tw +(\(/NCONC1 A B\))Tj +/TT8 1 Tf +7.959 0 TD +0 Tw +(.)Tj +-45.0883 -1.2889 TD +0.0378 Tw +(Note that the choice of function on all CLISP transformations are affected by the CLISP declaration in)Tj +ET +endstream +endobj +39 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +41 0 obj +<< +/Length 7102 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.33 Tw +(effect, i.e., iterative statements, pattern matches, record operations, as well as infix and prefix)Tj +0 -1.2222 TD +0 Tw +(operators.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLISPDEC)Tj +/TT13 1 Tf +4.7999 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(DECLST)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 238.6561 536.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 536.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0856 Tw +(Puts into effect the declarations in )Tj +/TT19 1 Tf +15.7585 0 TD +0 Tw +(DECLST)Tj +/TT8 1 Tf +3.6006 0 TD +0.0856 Tw +(. )Tj +/TT10 1 Tf +0.9211 0 TD +0 Tw +(CLISPDEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.0856 Tw +[( performs spelling corrections on)]TJ +-25.0809 -1.2889 TD +0 Tw +(words not recognized as declarations. )Tj +/TT10 1 Tf +16.959 0 TD +(CLISPDEC)Tj +/TT8 1 Tf +4.8008 0 TD +( is undoable.)Tj +-21.7598 -2.0667 TD +0.0478 Tw +(You can makes \(changes\) a global declaration by calling )Tj +/TT10 1 Tf +25.3631 0 TD +0 Tw +(CLISPDEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.0478 Tw +[( with )]TJ +/TT19 1 Tf +2.6288 0 TD +0 Tw +(DECLST)Tj +/TT8 1 Tf +3.6006 0 TD +0.0478 Tw +[( a list of)]TJ +-36.3932 -1.2889 TD +0.4289 Tw +(declarations, e.g., )Tj +/TT10 1 Tf +8.7816 0 TD +1.0289 Tw +(\(CLISPDEC \(FLOATING UNDOABLE\)\))Tj +/TT8 1 Tf +20.6608 0 TD +0.4289 Tw +[(. Changing a global)]TJ +-29.4424 -1.2889 TD +0.0022 Tw +(declaration does not affect the speed of subsequent CLISP transformations, since all CLISP)Tj +0 -1.2222 TD +0.5567 Tw +(transformation are table driven \(i.e., property list\), and global declarations are)Tj +T* +0.1867 Tw +(accomplished by making the appropriate internal changes to CLISP at the time of the)Tj +T* +0.2067 Tw +(declaration. If a function employs )Tj +/TT13 1 Tf +16.1549 0 TD +0 Tw +(local)Tj +/TT8 1 Tf +1.8506 0 TD +0.2067 Tw +[( declarations \(described below\), there will be a)]TJ +-18.0055 -1.2222 TD +0.3656 Tw +(slight loss in efficiency owing to the fact that for each CLISP transformation, the)Tj +T* +0 Tw +(declaration list must be searched for possibly relevant declarations.)Tj +0 -2 TD +0.1055 Tw +(Declarations are implemented in the order that they are given, so that later declarations)Tj +0 -1.2222 TD +0.38 Tw +[(override earlier ones. For example, the declaration )]TJ +/TT10 1 Tf +25.7597 0 TD +0 Tw +(FAST)Tj +/TT8 1 Tf +2.4004 0 TD +0.38 Tw +[( specifies that )]TJ +/TT10 1 Tf +7.39 0 TD +0 Tw +(FRPLACA)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +/TT10 1 Tf +-39.7508 -1.2889 TD +(FRPLACD)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5378 0 TD +(FMEMB)Tj +/TT8 1 Tf +3.0005 0 TD +0.0378 Tw +(, and )Tj +/TT10 1 Tf +2.5184 0 TD +0 Tw +(FLAST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0378 Tw +[( be used in place of )]TJ +/TT10 1 Tf +8.9425 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5378 0 TD +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5378 0 TD +(MEMB)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +(, and )Tj +/TT10 1 Tf +2.5184 0 TD +0 Tw +(LAST)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +[(; the)]TJ +-37.7963 -1.2889 TD +0 Tw +(declaration )Tj +/TT10 1 Tf +5.3837 0 TD +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.1689 Tw +[( specifies that )]TJ +/TT10 1 Tf +6.7567 0 TD +0 Tw +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.1689 Tw +[( be used. Therefore, the declarations )]TJ +/TT10 1 Tf +17.6578 0 TD +0 Tw +(\(FAST)Tj +-36.9994 -1.2889 TD +(RPLACA RPLACD\))Tj +/TT8 1 Tf +8.4014 0 TD +( will cause )Tj +/TT10 1 Tf +4.9067 0 TD +(FMEMB)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(FLAST)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +( to be used.)Tj +-29.9531 -2.0667 TD +(The initial global declaration is )Tj +/TT10 1 Tf +13.9131 0 TD +(MIXED)Tj +/TT8 1 Tf +3.0005 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(STANDARD)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +-23.9072 -2.0667 TD +0.0289 Tw +(The table below gives the declarations available in CLISP, and the Interlisp functions they)Tj +0 -1.2222 TD +0 Tw +(indicate:)Tj +8.6211 -2 TD +[(Declaration:)-1334.3(Interlisp Functions to be used:)]TJ +/TT10 1 Tf +2.3789 -2 TD +[(MIXED)-1332.8(PLUS,)]TJ +/TT8 1 Tf +7.3338 0 TD +( )Tj +/TT10 1 Tf +1.7333 0 TD +(MINUS,)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +1.7333 0 TD +(DIFFERENCE,)Tj +/TT8 1 Tf +6.6011 0 TD +( )Tj +/TT10 1 Tf +1.7333 0 TD +(TIMES,)Tj +-18.4022 -1.2889 TD +(QUOTIENT,)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(LESSP,)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(GREATERP)Tj +-19.4759 -2.0667 TD +(INTEGER)Tj +/TT8 1 Tf +4.2007 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +[(FIXED)-1332.4(IPLUS,)]TJ +/TT8 1 Tf +7.9334 0 TD +( )Tj +/TT10 1 Tf +0.9333 0 TD +(IMINUS,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.9333 0 TD +(IDIFFERENCE,)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT10 1 Tf +0.9333 0 TD +(ITIMES,)Tj +-17.8024 -1.2889 TD +(IQUOTIENT,)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(ILESSP,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(IGREATERP)Tj +-16.835 -2.0667 TD +[(FLOATING)-1332.6(FPLUS,)]TJ +/TT8 1 Tf +9.7339 0 TD +( )Tj +/TT10 1 Tf +0.9333 0 TD +(FMINUS,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.9333 0 TD +(FDIFFERENCE,)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT10 1 Tf +0.9333 0 TD +(FTIMES,)Tj +-17.8024 -1.2889 TD +(FQUOTIENT,)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(LESSP,)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FGREATERP)Tj +-13.8349 -2.0667 TD +[(FAST)-1332.9(FRPLACA,)]TJ +/TT8 1 Tf +8.5341 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FRPLACD,)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FMEMB,)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FLAST,)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FASSOC)Tj +-23.9361 -2.0667 TD +[(UNDOABLE)-1332.6(/RPLACA,)]TJ +/TT8 1 Tf +10.9341 0 TD +( )Tj +/TT10 1 Tf +1.1333 0 TD +(/RPLACD,)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +1.1333 0 TD +(/NCONC,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +1.1333 0 TD +(/NCONC1,)Tj +-17.2023 -1.2889 TD +(/MAPCONC,)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(/MAPCON)Tj +-11.7842 -2.0667 TD +[(STANDARD)-1332.6(RPLACA,)]TJ +/TT8 1 Tf +10.334 0 TD +( )Tj +/TT10 1 Tf +1 0 TD +(RPLACD,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +1 0 TD +(MEMB,)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +1 0 TD +(LAST,)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +1 0 TD +(ASSOC,)Tj +-18.4024 -1.2889 TD +(NCONC,)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NCONC1,)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(MAPCONC,)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(MAPCON)Tj +-22.6354 -2.0667 TD +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-6.2001 -1.2889 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(/RPLACA)Tj +/TT8 1 Tf +4.2007 0 TD +[(, etc.)-1332.5(corresponding function)]TJ +-12.0018 -2.0667 TD +0.0056 Tw +(You can also make local declarations affecting a selected function or functions by inserting)Tj +0 -1.2222 TD +0.2689 Tw +(an expression of the form )Tj +/TT10 1 Tf +12.8361 0 TD +0.6444 Tw +(\(CLISP: .)Tj +/TT15 1 Tf +6.0453 0 TD +0 Tw +( )Tj +/TT19 1 Tf +0.5189 0 TD +(DECLARATIONS)Tj +/TT10 1 Tf +7.2012 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.2689 Tw +[( immediately following the)]TJ +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +44 0 obj +<< +/Length 7705 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.16 Tw +(argument list, i.e., as )Tj +/TT10 1 Tf +9.9901 0 TD +0 Tw +(CADDR)Tj +/TT8 1 Tf +3.0005 0 TD +0.16 Tw +[( of the definition. Such local declarations take precedence)]TJ +-12.9906 -1.2889 TD +0.1956 Tw +[(over global declarations. Declarations affecting selected variables can be indicated by)]TJ +0 -1.2222 TD +0.2856 Tw +(lists, where the first element is the name of a variable, and the rest of the list the)Tj +T* +0.2211 Tw +[(declarations for that variable. For example, )]TJ +/TT10 1 Tf +21.0151 0 TD +0.5289 Tw +(\(CLISP: FLOATING \(X INTEGER\)\))Tj +/TT8 1 Tf +-21.0151 -1.2889 TD +0.0089 Tw +(specifies that in this function integer arithmetic be used for computations involving )Tj +/TT10 1 Tf +37.199 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0089 Tw +(, and)Tj +-37.7991 -1.2889 TD +0.3744 Tw +(floating arithmetic for all other computations, where "involving" means where the)Tj +0 -1.2222 TD +0.35 Tw +[(variable itself is an operand. For example, with the declaration )]TJ +/TT10 1 Tf +31.9604 0 TD +0.84 Tw +(\(FLOATING \(X)Tj +-31.9604 -1.2889 TD +0 Tw +(INTEGER\)\))Tj +/TT8 1 Tf +5.4009 0 TD +0.1556 Tw +[( in effect, )]TJ +/TT10 1 Tf +4.7338 0 TD +0.3733 Tw +(\(FOO X\)+\(FIE X\))Tj +/TT8 1 Tf +9.7481 0 TD +0.1556 Tw +[( would translate to )]TJ +/TT10 1 Tf +9.2023 0 TD +0 Tw +(FPLUS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1556 Tw +(, i.e., use floating)Tj +-32.0856 -1.2889 TD +0.1233 Tw +(arithmetic, even though )Tj +/TT10 1 Tf +11.1874 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1233 Tw +[( appears somewhere inside of the operands, whereas )]TJ +/TT10 1 Tf +24.6117 0 TD +0 Tw +(X+\(FIE)Tj +-36.3992 -1.2889 TD +(X\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0389 Tw +[( would translate to )]TJ +/TT10 1 Tf +8.7356 0 TD +0 Tw +(IPLUS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0389 Tw +[(. If there are declarations involving )]TJ +/TT13 1 Tf +16.2351 0 TD +0 Tw +(both)Tj +/TT8 1 Tf +1.7397 0 TD +0.0389 Tw +[( operands, e.g., )]TJ +/TT10 1 Tf +7.0395 0 TD +0 Tw +(X+Y)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.751 -1.2889 TD +(with )Tj +/TT10 1 Tf +2.3376 0 TD +0.13 Tw +(\(X FLOATING\) \(Y INTEGER\))Tj +/TT8 1 Tf +14.7923 0 TD +0.0544 Tw +(, whichever appears first in the declaration list will)Tj +-17.13 -1.2889 TD +0 Tw +(be used.)Tj +0 -2 TD +0.3111 Tw +(You can also make local record declarations by inserting a record declaration, e.g.,)Tj +/TT10 1 Tf +0 -1.2222 TD +0.0244 Tw +(\(RECORD --\))Tj +/TT8 1 Tf +6.6255 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.51 0 TD +0.0244 Tw +(\(ARRAYRECORD --\))Tj +/TT8 1 Tf +9.626 0 TD +0.01 Tw +[(, etc., in the local declaration list. In addition, a local)]TJ +-16.7615 -1.2889 TD +0.0778 Tw +(declaration of the form )Tj +/TT10 1 Tf +10.6988 0 TD +0.1856 Tw +(\(RECORDS A B C\))Tj +/TT8 1 Tf +9.5581 0 TD +0.0778 Tw +[( is equivalent to having copies of the global)]TJ +-20.2569 -1.2889 TD +0 Tw +(declarations )Tj +/TT10 1 Tf +5.6687 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.53 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +(, and )Tj +/TT10 1 Tf +2.5029 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.03 Tw +[( in the local declaration. Local record declarations override global)]TJ +-10.5018 -1.2889 TD +0.0633 Tw +[(record declarations for the function in which they appear. Local declarations can also be)]TJ +0 -1.2222 TD +0.07 Tw +(used to override the global setting of certain DWIM/CLISP parameters effective only for)Tj +T* +0.1022 Tw +(transformations within that function, by including in the local declaration an expression)Tj +T* +0 Tw +(of the form )Tj +/TT10 1 Tf +5.1729 0 TD +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(VARIABLE)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, e.g., )Tj +/TT10 1 Tf +2.5352 0 TD +(\(PATVARDEFAULT)Tj +/TT8 1 Tf +8.4014 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(QUOTE\))Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-30.9116 -2.0667 TD +(The )Tj +/TT10 1 Tf +1.9405 0 TD +(CLISP:)Tj +/TT8 1 Tf +3.6006 0 TD +0.0167 Tw +[( expression is converted to a comment of a special form recognized by CLISP.)]TJ +-5.5411 -1.2889 TD +0.41 Tw +(Whenever a CLISP transformation that is affected by declarations is about to be)Tj +0 -1.2222 TD +0.0789 Tw +(performed in a function, this comment will be searched for a relevant declaration, and if)Tj +T* +0.0667 Tw +[(one is found, the corresponding function will be used. Otherwise, if none are found, the)]TJ +T* +0 Tw +(global declaration\(s\) currently in effect will be used.)Tj +0 -2 TD +0.0767 Tw +(Local declarations are effective in the order that they are given, so that later declarations)Tj +0 -1.2222 TD +0.0978 Tw +(can be used to override earlier ones, e.g., )Tj +/TT10 1 Tf +18.9858 0 TD +0.2333 Tw +(\(CLISP: FAST RPLACA RPLACD\))Tj +/TT8 1 Tf +16.9026 0 TD +0.0978 Tw +[( specifies)]TJ +-35.8885 -1.2889 TD +0 Tw +(that )Tj +/TT10 1 Tf +2.3522 0 TD +(FMEMB)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.8678 0 TD +(FLAST)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.8678 0 TD +(RPLACA)Tj +/TT8 1 Tf +3.6006 0 TD +0.3678 Tw +(, and )Tj +/TT10 1 Tf +3.1784 0 TD +0 Tw +(RPLACD)Tj +/TT8 1 Tf +3.6006 0 TD +0.3678 Tw +[( be used. An exception to this is that)]TJ +-20.4683 -1.2889 TD +0.0689 Tw +(declarations for specific variables take precedence of general, function-wide declarations,)Tj +0 -1.2222 TD +0 Tw +(regardless of the order of appearance, as in )Tj +/TT10 1 Tf +19.2524 0 TD +(\(CLISP: \(X INTEGER\) FLOATING\))Tj +/TT8 1 Tf +17.4028 0 TD +(.)Tj +/TT10 1 Tf +-36.6553 -2.0667 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.2544 Tw +[( also checks the declarations in effect before selecting an infix operator to)]TJ +-4.8008 -1.2889 TD +0.0922 Tw +(ensure that the corresponding CLISP construct would in fact translate back to this form.)Tj +0 -1.2222 TD +0.1211 Tw +(For example, if a )Tj +/TT10 1 Tf +8.1046 0 TD +0 Tw +(FLOATING)Tj +/TT8 1 Tf +4.8008 0 TD +0.1211 Tw +[( declaration is in effect, )]TJ +/TT10 1 Tf +11.0523 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1211 Tw +[( will convert )]TJ +/TT10 1 Tf +6.1573 0 TD +0.2889 Tw +(\(FPLUS X)Tj +-34.9157 -1.2889 TD +0 Tw +(Y\))Tj +/TT8 1 Tf +1.2002 0 TD +0.1378 Tw +[( to )]TJ +/TT10 1 Tf +1.6476 0 TD +0 Tw +(X+Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.1378 Tw +(, but leave )Tj +/TT10 1 Tf +5.2097 0 TD +0.33 Tw +(\(IPLUS X Y\))Tj +/TT8 1 Tf +7.2611 0 TD +0.1378 Tw +[( as is. If )]TJ +/TT10 1 Tf +4.4975 0 TD +0.33 Tw +(\(FPLUS X Y\))Tj +/TT8 1 Tf +7.2611 0 TD +0.1378 Tw +[( is )]TJ +/TT10 1 Tf +1.4904 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1378 Tw +(ed while a)Tj +/TT10 1 Tf +-35.1686 -1.2889 TD +0 Tw +(FLOATING)Tj +/TT8 1 Tf +4.8008 0 TD +0.1167 Tw +[( declaration is under effect, and then the declaration is changed to )]TJ +/TT10 1 Tf +30.7486 0 TD +0 Tw +(INTEGER)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +-39.7501 -1.2889 TD +(when )Tj +/TT10 1 Tf +2.7271 0 TD +(X+Y)Tj +/TT8 1 Tf +1.8003 0 TD +( is translated back to Interlisp, it will become )Tj +/TT10 1 Tf +20.0083 0 TD +(\(IPLUS X Y\))Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 101.6 Tm +(CLISP Operation)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 98.89 m +510.01 98.89 l +S +BT +/TT8 1 Tf +9 0 0 9 78 76.94 Tm +0.0311 Tw +[(CLISP is a part of the basic Medley system. Without any special preparations, you can include CLISP)]TJ +0 -1.2222 TD +0.0111 Tw +(constructs in programs, or type them in directly for evaluation \(in )Tj +/TT10 1 Tf +29.4113 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( or )]TJ +/TT10 1 Tf +1.4631 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.0111 Tw +[( format\), then, when)]TJ +-36.2753 -1.2889 TD +0.12 Tw +(the "error" occurrs, and DWIM is called, it will destructively transform the CLISP to the equivalent)Tj +0 -1.2222 TD +0.2078 Tw +[(Interlisp expression and evaluate the Interlisp expression. CLISP transformations, like all DWIM)]TJ +ET +endstream +endobj +45 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +49 0 obj +<< +/Length 6865 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.1433 Tw +[(corrections, are undoable. User approval is not requested, and no message is printed. This entire)]TJ +0 -1.2222 TD +0 Tw +(discussion also applies to CLISP transformation initiated by calls to DWIM from )Tj +/TT10 1 Tf +35.7153 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-39.916 -2.9556 TD +0.0311 Tw +(However, if a CLISP construct contains an error, an appropriate diagnostic is generated, and the form)Tj +0 -1.2222 TD +0.0322 Tw +[(is left unchanged. For example, if you write )]TJ +/TT10 1 Tf +20.0234 0 TD +0.0778 Tw +(\(LIST X+Y*\))Tj +/TT8 1 Tf +6.6789 0 TD +0.0322 Tw +(, the error diagnostic )Tj +/TT10 1 Tf +9.5469 0 TD +0.0778 Tw +(MISSING OPERAND)Tj +-36.2491 -1.2889 TD +0.2722 Tw +(AT X+Y* IN \(LIST X+Y*\))Tj +/TT8 1 Tf +14.291 0 TD +0.1133 Tw +[( would be generated. Similarly, if you write )]TJ +/TT10 1 Tf +20.7715 0 TD +0.2722 Tw +(\(LAST+EL X\))Tj +/TT8 1 Tf +6.8733 0 TD +0.1133 Tw +(, CLISP)Tj +-41.9358 -1.2889 TD +0.1811 Tw +(knows that )Tj +/TT10 1 Tf +5.5385 0 TD +0.4344 Tw +(\(\(IPLUS LAST EL\) X\))Tj +/TT8 1 Tf +12.7052 0 TD +0.1811 Tw +[( is not a valid Interlisp expression, so the error diagnostic)]TJ +/TT10 1 Tf +-18.2437 -1.2889 TD +0.1389 Tw +(MISSING OPERATOR IN \(LAST+EL X\))Tj +/TT8 1 Tf +19.1586 0 TD +0.0578 Tw +[( is generated. \(For example, you might have meant to say)]TJ +/TT10 1 Tf +-19.1586 -1.2889 TD +0 Tw +(\(LAST+EL*X\))Tj +/TT8 1 Tf +6.6011 0 TD +(.\) If )Tj +/TT10 1 Tf +2.0029 0 TD +(LAST+EL)Tj +/TT8 1 Tf +4.2007 0 TD +( were the name of a defined function, CLISP would never see this form.)Tj +-12.8047 -2.9556 TD +0.0622 Tw +(Since the bad CLISP transformation might not be CLISP at all, for example, it might be a misspelling)Tj +0 -1.2222 TD +0.3278 Tw +(of a user function or variable, DWIM holds all CLISP error messages until after trying other)Tj +T* +0.2056 Tw +[(corrections. If one of these succeeds, the CLISP message is discarded. Otherwise, if all fail, the)]TJ +T* +0.1367 Tw +[(message is printed \(but no change is made\). For example, suppose you type )]TJ +/TT10 1 Tf +36.6295 0 TD +0.3278 Tw +(\(R/PLACA X Y\))Tj +/TT8 1 Tf +8.4568 0 TD +0 Tw +(.)Tj +-45.0864 -1.2889 TD +0.2467 Tw +(CLISP generates a diagnostic, since )Tj +/TT10 1 Tf +17.0297 0 TD +0.5922 Tw +(\(\(IQUOTIENT R PLACA\) X Y\))Tj +/TT8 1 Tf +17.3713 0 TD +0.2467 Tw +[( is obviously not right.)]TJ +-34.4011 -1.2889 TD +0 Tw +(However, since )Tj +/TT10 1 Tf +7.0996 0 TD +(R/PLACA)Tj +/TT8 1 Tf +4.2007 0 TD +( spelling corrects to )Tj +/TT10 1 Tf +8.8398 0 TD +(/RPLACA)Tj +/TT8 1 Tf +4.2007 0 TD +(, this diagnostic is never printed.)Tj +-21.0075 -2.0667 TD +0.0311 Tw +[(Note:)-901.2(CLISP error messages are not printed on type-in. For example, typing )]TJ +/TT10 1 Tf +34.9391 0 TD +0 Tw +(X+*Y)Tj +/TT8 1 Tf +2.4004 0 TD +0.0311 Tw +[( will)]TJ +-34.0061 -1.2889 TD +0 Tw +(just produce a )Tj +/TT10 1 Tf +6.5156 0 TD +(U.B.A. X+*Y)Tj +/TT8 1 Tf +6.6011 0 TD +( message.)Tj +-19.7834 -2.9556 TD +0.0678 Tw +(If a CLISP infix construct is well formed from a syntactic standpoint, but one or both of its operands)Tj +0 -1.2222 TD +0.02 Tw +(are atomic and not bound, it is possible that either the operand is misspelled, e.g., you wrote )Tj +/TT10 1 Tf +41.383 0 TD +0 Tw +(X+YY)Tj +/TT8 1 Tf +2.4004 0 TD +0.02 Tw +[( for)]TJ +/TT10 1 Tf +-43.7834 -1.2889 TD +0 Tw +(X+Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.0144 Tw +(, or that a CLISP transformation operation was not intended at all, but that the entire expression is)Tj +-1.8003 -1.2889 TD +0.0856 Tw +[(a misspelling. For the purpose of )]TJ +/TT10 1 Tf +15.6238 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0855 Tw +(ing, "not bound" means no top level value, not on list of)Tj +-19.8245 -1.2889 TD +0.5133 Tw +(bound variables built up by )Tj +/TT10 1 Tf +15.0877 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.5133 Tw +[( during its analysis of the expression, and not on)]TJ +/TT10 1 Tf +-19.2883 -1.2889 TD +0 Tw +(NOFIXVARSLST)Tj +/TT8 1 Tf +7.2012 0 TD +(, i.e., not previously seen.)Tj +-7.2012 -2.9556 TD +0.1422 Tw +(For example, if you have a variable named )Tj +/TT10 1 Tf +20.2179 0 TD +0 Tw +(LAST-EL)Tj +/TT8 1 Tf +4.2007 0 TD +0.1422 Tw +(, and write)Tj +/TT10 1 Tf +5.0525 0 TD +0.34 Tw +[( \(LIST LAST-ELL\))]TJ +/TT8 1 Tf +10.2816 0 TD +0.1422 Tw +[(. Therefore,)]TJ +-39.7526 -1.2889 TD +0.2233 Tw +[(CLISP computes, but does not actually perform, the indicated infix transformation. DWIM then)]TJ +0 -1.2222 TD +0.0722 Tw +(continues, and if it is able to make another correction, does so, and ignores the CLISP interpretation.)Tj +T* +0 Tw +(For example, with )Tj +/TT10 1 Tf +8.2793 0 TD +(LAST-ELL)Tj +/TT8 1 Tf +4.8008 0 TD +(, the transformation )Tj +/TT10 1 Tf +9.0161 0 TD +(LAST-ELL -> LAST-EL)Tj +/TT8 1 Tf +11.4019 0 TD +( would be found.)Tj +-33.4981 -2.9556 TD +0.0967 Tw +(If no other transformation is found, and DWIM is about to interpret a construct as CLISP for which)Tj +0 -1.2222 TD +0.0933 Tw +(one of the operands is not bound, DWIM will ask you whether CLISP was intended, in this case by)Tj +T* +0 Tw +(printing )Tj +/TT10 1 Tf +3.8745 0 TD +(LAST-ELL TREAT AS CLISP ?)Tj +/TT8 1 Tf +15.0024 0 TD +(.)Tj +-15.5436 -2.0667 TD +0.0444 Tw +[(Note: If more than one infix operator was involved in the CLISP construct, e.g., )]TJ +/TT10 1 Tf +36.0783 0 TD +0 Tw +(X+Y+Z)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +-35.7454 -1.2889 TD +0.5478 Tw +(or the operation was an assignment to a variable already noticed, or)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(TREATASCLISPFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.2656 Tw +[( is )]TJ +/TT10 1 Tf +1.746 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2656 Tw +[( \(initially )]TJ +/TT10 1 Tf +4.7836 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2656 Tw +(\), you will simply be informed of the)Tj +-17.9314 -1.2889 TD +0.11 Tw +(correction, e.g., )Tj +/TT10 1 Tf +7.2029 0 TD +0.2644 Tw +(X+Y+Z TREATED AS CLISP)Tj +/TT8 1 Tf +13.9955 0 TD +0.11 Tw +[(. Otherwise, even if DWIM was)]TJ +-21.1984 -1.2889 TD +0 Tw +(enabled in )Tj +/TT10 1 Tf +4.8682 0 TD +(TRUSTING)Tj +/TT8 1 Tf +4.8008 0 TD +( mode, you will be asked to approve the correction.)Tj +-16.3356 -2.9556 TD +0.0378 Tw +[(The same sort of procedure is followed with 8 and 9 errors. For example, suppose you write )]TJ +/TT10 1 Tf +41.7215 0 TD +0 Tw +(FOO8*X)Tj +/TT8 1 Tf +-41.7215 -1.2889 TD +(where )Tj +/TT10 1 Tf +3.0524 0 TD +(FOO8)Tj +/TT8 1 Tf +2.4004 0 TD +0.0333 Tw +[( is not bound. The CLISP transformation is noted, and DWIM proceeds. It next asks you)]TJ +-5.4528 -1.2889 TD +0.1056 Tw +(to approve )Tj +/TT10 1 Tf +5.2702 0 TD +0.2522 Tw +(FOO8*X -> FOO \( *X)Tj +/TT8 1 Tf +11.8106 0 TD +0.1056 Tw +[(. For example, this would make sense if you have \(or plan to)]TJ +-17.0808 -1.2889 TD +0.02 Tw +(define\) a function named )Tj +/TT10 1 Tf +11.4496 0 TD +0 Tw +(*X)Tj +/TT8 1 Tf +1.2002 0 TD +0.02 Tw +[(. If you refuses, you are asked whether )]TJ +/TT10 1 Tf +17.7679 0 TD +0 Tw +(FOO8*X)Tj +/TT8 1 Tf +3.6006 0 TD +0.02 Tw +[( is to be treated as CLISP.)]TJ +ET +endstream +endobj +50 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +52 0 obj +<< +/Length 7911 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-13)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.1378 Tw +(Similarly, if )Tj +/TT10 1 Tf +5.6725 0 TD +0 Tw +(FOO8)Tj +/TT8 1 Tf +2.4004 0 TD +0.1378 Tw +[( were the name of a variable, and you write )]TJ +/TT10 1 Tf +20.8221 0 TD +0 Tw +(FOOO8*X)Tj +/TT8 1 Tf +4.2007 0 TD +0.1378 Tw +(, you will first be asked to)Tj +-33.0957 -1.2889 TD +0 Tw +(approve )Tj +/TT10 1 Tf +4.1237 0 TD +0.4467 Tw +(FOOO8*X -> FOOO \( XX)Tj +/TT8 1 Tf +13.7886 0 TD +0.1867 Tw +(, and if you refuse, then be offered the )Tj +/TT10 1 Tf +18.7293 0 TD +0.4467 Tw +(FOOO8 -> FOO8)Tj +/TT8 1 Tf +-36.6416 -1.2889 TD +0.0222 Tw +[(correction. The 8-9 transformation is tried before spelling correction since it is empirically more likely)]TJ +0 -1.2222 TD +0.0033 Tw +(that an unbound atom or undefined function containing an 8 or a 9 is a parenthesis error, rather than a)Tj +T* +0 Tw +(spelling error.)Tj +0 -2.8889 TD +0.35 Tw +(CLISP also contains provision for correcting misspellings of infix operators \(other than single)Tj +0 -1.2222 TD +0 Tw +(characters\), )Tj +/TT10 1 Tf +5.3907 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0689 Tw +[( words, and i.s. operators. This is implemented in such a way that the user who does)]TJ +-6.5909 -1.2889 TD +0.0511 Tw +[(not misspell them is not penalized. For example, if you write )]TJ +/TT10 1 Tf +27.9244 0 TD +0.1222 Tw +(IF N)Tj +/TT8 1 Tf +2.5226 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3011 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3011 0 TD +0.1222 Tw +(0 THEN 1 ELSSE N*\(FACT)Tj +-31.6493 -1.2889 TD +0 Tw +(N-1\))Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +[( CLISP does )]TJ +/TT13 1 Tf +5.6852 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.03 Tw +[( operate by checking each word to see if it is a misspelling of )]TJ +/TT10 1 Tf +27.3819 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.53 0 TD +(THEN)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.53 0 TD +(ELSE)Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +(, or)Tj +/TT10 1 Tf +-43.8615 -1.2889 TD +0 Tw +(ELSEIF)Tj +/TT8 1 Tf +3.6006 0 TD +0.2233 Tw +(, since this would seriously degrade CLISPs performance on )Tj +/TT13 1 Tf +29.1291 0 TD +0 Tw +(all)Tj +/TT8 1 Tf +0.9995 0 TD +( )Tj +/TT10 1 Tf +0.4733 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.2233 Tw +[( statements. Instead,)]TJ +-35.4028 -1.2889 TD +0.0333 Tw +(CLISP assumes that all of the )Tj +/TT10 1 Tf +13.3045 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0333 Tw +[( words are spelled correctly, and transforms the expression to )]TJ +/TT10 1 Tf +27.8153 0 TD +0 Tw +(\(COND)Tj +-42.32 -1.2889 TD +0.0567 Tw +(\(\(ZEROP N\) 1 ELSSE N*\(FACT N-1\)\)\))Tj +/TT8 1 Tf +20.0866 0 TD +0.0233 Tw +[(. Later, after DWIM cannot find any other interpretation)]TJ +-20.0866 -1.2889 TD +0 Tw +(for )Tj +/TT10 1 Tf +1.5828 0 TD +(ELSSE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +(, and using the fact that this atom originally appeared in an )Tj +/TT10 1 Tf +27.1285 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0589 Tw +[( statement, DWIM attempts)]TJ +-32.912 -1.2889 TD +0.13 Tw +(spelling correction, using )Tj +/TT10 1 Tf +11.8089 0 TD +0.3111 Tw +(\(IF THEN ELSE ELSEIF\))Tj +/TT8 1 Tf +13.5354 0 TD +0.13 Tw +[( for a spelling list. When this is successful,)]TJ +-25.3443 -1.2889 TD +0.0667 Tw +(DWIM "fails" all the way back to the original)Tj +/TT15 1 Tf +20.2951 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3167 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0667 Tw +[( statement, changes )]TJ +/TT10 1 Tf +9.0921 0 TD +0 Tw +(ELSSE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0667 Tw +[( to )]TJ +/TT10 1 Tf +1.5054 0 TD +0 Tw +(ELSE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0667 Tw +(, and starts over.)Tj +-37.8103 -1.2889 TD +0 Tw +(Misspellings of )Tj +/TT10 1 Tf +6.9785 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(LT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(GT)Tj +/TT8 1 Tf +1.2002 0 TD +(, etc. are handled similarly.)Tj +-13.8794 -2.9556 TD +0.14 Tw +[(CLISP also contains many Do-What-I-Mean features besides spelling corrections. For example, the)]TJ +0 -1.2222 TD +0 Tw +(form )Tj +/TT10 1 Tf +2.4523 0 TD +0.11 Tw +(\(LIST +X Y\))Tj +/TT8 1 Tf +6.8211 0 TD +0.0456 Tw +[( would generate a )]TJ +/TT10 1 Tf +8.3634 0 TD +0.11 Tw +(MISSING OPERATOR)Tj +/TT8 1 Tf +9.7116 0 TD +0.0456 Tw +[( error. However, )]TJ +/TT10 1 Tf +8.0221 0 TD +0.11 Tw +(\(LIST -X Y\))Tj +/TT8 1 Tf +6.8211 0 TD +0.0456 Tw +[( makes)]TJ +-42.1915 -1.2889 TD +0.1978 Tw +[(sense, if the minus is unary, so DWIM offers this interpretation to you. Another common error,)]TJ +0 -1.2222 TD +0.0056 Tw +(especially for new users, is to write )Tj +/TT10 1 Tf +15.8006 0 TD +0.0122 Tw +(\(LIST X*FOO\(Y\)\))Tj +/TT8 1 Tf +9.0137 0 TD +0.0056 Tw +[( or )]TJ +/TT10 1 Tf +1.452 0 TD +0.0122 Tw +(\(LIST X*FOO Y\))Tj +/TT8 1 Tf +8.4258 0 TD +0.0056 Tw +(, where )Tj +/TT10 1 Tf +3.5302 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[( is the name)]TJ +-40.0226 -1.2889 TD +0.0533 Tw +(of a function, instead of )Tj +/TT10 1 Tf +10.9444 0 TD +0.1267 Tw +(\(LIST X*\(FOO Y\)\))Tj +/TT8 1 Tf +9.8549 0 TD +0.0533 Tw +[(. Therefore, whenever an operand that is not bound is)]TJ +-20.7993 -1.2889 TD +0 Tw +(also the name of a function \(or corrects to one\), the above interpretations are offered.)Tj +/TT4 1 Tf +10 0 0 10 54 257.2 Tm +(CLISP Translations)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 254.49 m +510.01 254.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 232.54 Tm +0.1656 Tw +(The translation of CLISP character operators and the CLISP word )Tj +/TT10 1 Tf +30.7854 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.1656 Tw +[( are handled by )]TJ +/TT13 1 Tf +7.8014 0 TD +0 Tw +(replacing)Tj +/TT8 1 Tf +3.7412 0 TD +0.1656 Tw +[( the)]TJ +-43.5282 -1.2889 TD +0.2 Tw +(CLISP expression with the corresponding Interlisp expression, and discarding the original CLISP.)Tj +0 -1.2222 TD +(This is done because \(1\) the CLISP expression is easily recomputable \(by )Tj +/TT10 1 Tf +34.5982 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.2 Tw +(\) and \(2\) the)Tj +-39.399 -1.2889 TD +0.2256 Tw +[(Interlisp expressions are simple and straightforward. Another reason for discarding the original)]TJ +0 -1.2222 TD +0.4622 Tw +(CLISP is that it may contain errors that were corrected in the course of translation \(e.g.,)Tj +/TT10 1 Tf +T* +0 Tw +(FOO)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.1122 Tw +(FOOO:1, N*8FOO X\))Tj +/TT8 1 Tf +10.4261 0 TD +0.0467 Tw +[(, etc.\). If the original CLISP were retained, either you would have to go)]TJ +-13.2132 -1.2889 TD +0.13 Tw +(back and fix these errors by hand, thereby negating the advantage of having DWIM perform these)Tj +0 -1.2222 TD +0 Tw +(corrections, or else DWIM would have to keep correcting these errors over and over.)Tj +0 -2.8889 TD +0.0167 Tw +(Note that )Tj +/TT10 1 Tf +4.4498 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0167 Tw +[( is sufficiently fast that it is practical for you to configure your Interlisp system so)]TJ +-9.2506 -1.2889 TD +0.01 Tw +(that all expressions are automatically )Tj +/TT10 1 Tf +16.7082 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.01 Tw +[(ed immediately before they are presented to you. For)]TJ +-21.509 -1.2889 TD +0.1667 Tw +(example, you can define an edit macro to use in place of )Tj +/TT10 1 Tf +27.0063 0 TD +0 Tw +(P)Tj +/TT8 1 Tf +0.6001 0 TD +0.1667 Tw +[( which calls )]TJ +/TT10 1 Tf +5.9326 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1667 Tw +[( on the current)]TJ +-38.3399 -1.2889 TD +0.1678 Tw +[(expression before printing it. Similarly, you can inform )]TJ +/TT10 1 Tf +26.3074 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.1678 Tw +[( to call )]TJ +/TT10 1 Tf +3.6513 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1678 Tw +[( on each)]TJ +-41.3605 -1.2889 TD +0 Tw +(expression before printing it, etc.)Tj +0 -2.8889 TD +0.0811 Tw +(Where \(1\) or \(2\) are not the case, e.g., with iterative statements, pattern matches, record expressions,)Tj +0 -1.2222 TD +0.0244 Tw +(etc. the original CLISP )Tj +/TT13 1 Tf +10.2218 0 TD +0 Tw +(is)Tj +/TT8 1 Tf +0.667 0 TD +0.0244 Tw +[( retained \(or a slightly modified version thereof\), and the translation is stored)]TJ +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +55 0 obj +<< +/Length 7785 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0444 Tw +(elsewhere \(by the function )Tj +/TT10 1 Tf +12.1563 0 TD +0 Tw +(CLISPTRAN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0444 Tw +(, in the Miscellaneous Functions and Variables\), usually in the)Tj +-17.5572 -1.2889 TD +0.0822 Tw +(hash array )Tj +/TT10 1 Tf +5.0985 0 TD +0 Tw +(CLISPARRAY)Tj +/TT8 1 Tf +6.001 0 TD +0.0822 Tw +[(. The interpreter automatically checks this array when given a form )]TJ +/TT10 1 Tf +31.221 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0822 Tw +[( of)]TJ +-44.1208 -1.2889 TD +0.0767 Tw +[(which is not a function. Similarly, the compiler performs a )]TJ +/TT10 1 Tf +27.0977 0 TD +0 Tw +(GETHASH)Tj +/TT8 1 Tf +4.2007 0 TD +0.0767 Tw +[( when given a form it does not)]TJ +-31.2984 -1.2889 TD +0.1289 Tw +[(recognize to see if it has a translation, which is then compiled instead of the form. Whenever you)]TJ +/TT13 1 Tf +0 -1.2222 TD +0 Tw +(change)Tj +/TT8 1 Tf +2.7964 0 TD +0.0078 Tw +[( a CLISP expresson by editing it, the editor automatically deletes its translation \(if one exists\), so)]TJ +-2.7964 -1.2222 TD +0.1222 Tw +(that the next time it is evaluated or )Tj +/TT10 1 Tf +16.6086 0 TD +0 Tw +(DWIMIFI)Tj +/TT8 1 Tf +4.2007 0 TD +0.1222 Tw +(ed, the expression will be retranslated \(if the value of)Tj +/TT10 1 Tf +-20.8093 -1.2889 TD +0 Tw +(CLISPRETRANFLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.2489 Tw +[( is )]TJ +/TT10 1 Tf +1.7126 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.7489 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2489 Tw +[( will also \(re\)translate any expressions which have translations)]TJ +-15.6637 -1.2889 TD +0.2311 Tw +[(stored remotely, see the CLISPIFY section\). The function )]TJ +/TT10 1 Tf +27.4862 0 TD +0 Tw +(PPT)Tj +/TT8 1 Tf +1.8003 0 TD +0.2311 Tw +[( and the edit commands )]TJ +/TT10 1 Tf +12.0647 0 TD +0 Tw +(PPT)Tj +/TT8 1 Tf +1.8003 0 TD +0.2311 Tw +[( and)]TJ +/TT10 1 Tf +-43.1516 -1.2889 TD +0 Tw +(CLISP:)Tj +/TT8 1 Tf +3.6006 0 TD +0.2622 Tw +[( are available for examining translations \(see the Miscellaneous Functions and Variables)]TJ +-3.6006 -1.2889 TD +0 Tw +(section\).)Tj +0 -2.8889 TD +0.0678 Tw +(You can also indicate that you want the original CLISP retained by embedding it in an expression of)Tj +0 -1.2222 TD +0.0311 Tw +(the form )Tj +/TT10 1 Tf +4.1062 0 TD +0.0744 Tw +(\(CLISP . )Tj +/TT19 1 Tf +5.5498 0 TD +0 Tw +(CLISP-EXPRESSION)Tj +/TT10 1 Tf +9.6016 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +(, e.g., )Tj +/TT10 1 Tf +2.5974 0 TD +0.0744 Tw +(\(CLISP X:5:3\))Tj +/TT8 1 Tf +7.8757 0 TD +0.0311 Tw +[( or )]TJ +/TT10 1 Tf +1.5031 0 TD +0.0744 Tw +(\(CLISP \))Tj +/TT8 1 Tf +11.7741 0 TD +0.0311 Tw +[(. In)]TJ +-43.6079 -1.2889 TD +0.03 Tw +[(such cases, the translation will be stored remotely as described above. Furthermore, such expressions)]TJ +0 -1.2222 TD +0.2556 Tw +(will be treated as CLISP even if infix and prefix transformations have been disabled by setting)Tj +/TT10 1 Tf +T* +0 Tw +(CLISPFLG )Tj +/TT8 1 Tf +5.5387 0 TD +(to )Tj +/TT10 1 Tf +1.1798 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0578 Tw +[( \(see the Miscellaneous Functions and Variables section\). In other words, you can)]TJ +-8.5188 -1.2889 TD +0.1711 Tw +(instruct the system to interpret as CLISP infix or prefix constructs only those expressions that are)Tj +0 -1.2222 TD +0.4633 Tw +[(specifically flagged as such. You can also include CLISP declarations by writing )]TJ +/TT10 1 Tf +41.7333 0 TD +0 Tw +(\(CLISP)Tj +/TT19 1 Tf +-41.7333 -1.2889 TD +(DECLARATIONS)Tj +/TT10 1 Tf +7.2012 0 TD +0.15 Tw +[( . )]TJ +/TT19 1 Tf +2.1003 0 TD +0 Tw +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +(, e.g., )Tj +/TT10 1 Tf +2.6596 0 TD +0.15 Tw +(\(CLISP \(CLISP: FLOATING\) ...\))Tj +/TT8 1 Tf +17.8528 0 TD +0.0622 Tw +[(. These declarations will be)]TJ +-32.8144 -1.2889 TD +0.1367 Tw +[(used in place of any CLISP declarations in the function definition. This feature provides a way of)]TJ +0 -1.2222 TD +0 Tw +(including CLISP declarations in macro definitions.)Tj +3.3333 -2 TD +0.2467 Tw +[(Note:)-901.2(CLISP translations can also be used to supply an interpretation for function)]TJ +3.3333 -1.2222 TD +0.1789 Tw +(objects, as well as forms, either for function objects that are used openly, i.e.,)Tj +T* +0.1067 Tw +(appearing as )Tj +/TT10 1 Tf +6.1425 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1067 Tw +[( of form, function objects that are explicitly )]TJ +/TT10 1 Tf +20.0467 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.1067 Tw +(ed, as with)Tj +-30.99 -1.2889 TD +0.3489 Tw +(arguments to mapping functions, or function objects contained in function)Tj +0 -1.2222 TD +0.05 Tw +[(definition cells. In all cases, if )]TJ +/TT10 1 Tf +13.7563 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.05 Tw +[( of the object is not )]TJ +/TT10 1 Tf +8.8171 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +[( or )]TJ +/TT10 1 Tf +1.5409 0 TD +0 Tw +(NLAMBDA,)Tj +/TT8 1 Tf +4.8008 0 TD +0.05 Tw +[( the)]TJ +-34.3159 -1.2889 TD +0 Tw +(interpreter and compiler will check )Tj +/TT10 1 Tf +15.833 0 TD +(CLISPARRAY)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 221.8 Tm +(DWIMIFY)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 219.09 m +558.01 219.09 l +S +BT +/TT10 1 Tf +9 0 0 9 126 197.14 Tm +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1456 Tw +[( is effectively a preprocessor for CLISP. )]TJ +/TT10 1 Tf +18.9935 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1455 Tw +[( operates by scanning an expression as)]TJ +-27.3949 -1.2889 TD +0.1055 Tw +(though it were being interpreted, and for each form that would generate an error, calling DWIM to)Tj +0 -1.2222 TD +0.1922 Tw +("fix" it. )Tj +/TT10 1 Tf +4.0762 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1922 Tw +[( performs )]TJ +/TT13 1 Tf +4.9401 0 TD +0 Tw +(all)Tj +/TT8 1 Tf +0.9995 0 TD +0.1922 Tw +[( DWIM transformations, not just CLISP transformations, so it does)]TJ +-14.2165 -1.2889 TD +0.1033 Tw +(spelling correction, fixes 8-9 errors, handles )Tj +/TT10 1 Tf +20.0614 0 TD +0 Tw +(F/L)Tj +/TT8 1 Tf +1.8003 0 TD +0.1033 Tw +[(, etc. Thus you will see the same messages, and be)]TJ +-21.8617 -1.2889 TD +0.02 Tw +[(asked for approval in the same situations, as you would if the expression were actually run. If DWIM)]TJ +0 -1.2222 TD +0.1767 Tw +(is unable to make a correction, no message is printed, the form is left as it was, and the analysis)Tj +T* +0 Tw +(proceeds.)Tj +/TT10 1 Tf +0 -2.8889 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2678 Tw +[( knows exactly how the interpreter works. It knows the syntax of )]TJ +/TT10 1 Tf +32.6632 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(s, )Tj +/TT10 1 Tf +1.1916 0 TD +(SELECTQ)Tj +/TT8 1 Tf +4.2007 0 TD +(s,)Tj +/TT10 1 Tf +-44.6566 -1.2889 TD +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +0.2067 Tw +[( expressions, )]TJ +/TT10 1 Tf +6.324 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.2067 Tw +[(s, et al. It knows how variables are bound, and that the argument of)]TJ +/TT10 1 Tf +-12.325 -1.2889 TD +0 Tw +(NLAMBDA)Tj +/TT8 1 Tf +4.2007 0 TD +0.0433 Tw +(s are not evaluated \(you can inform )Tj +/TT10 1 Tf +16.253 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0433 Tw +[( of a function or macros nonstandard binding)]TJ +-24.6544 -1.2889 TD +0.1656 Tw +(or evaluation by giving it a suitable )Tj +/TT10 1 Tf +17.0681 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.1656 Tw +[( property, see below\). In the course of its analysis of a)]TJ +-19.4685 -1.2889 TD +0.0378 Tw +(particular expression, )Tj +/TT10 1 Tf +9.9086 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0378 Tw +[( builds a list of the bound variables from the )]TJ +/TT10 1 Tf +20.1859 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +0.0378 Tw +[( expressions and)]TJ +/TT10 1 Tf +-37.8957 -1.2889 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0767 Tw +[(s that it encounters. It uses this list for spelling corrections. )]TJ +/TT10 1 Tf +27.5904 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0767 Tw +[( also knows not to try to)]TJ +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +58 0 obj +<< +/Length 7877 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-15)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0133 Tw +("correct" variables that are on this list since they would be bound if the expression were actually being)Tj +0 -1.2222 TD +0.1544 Tw +[(run. However, note that )]TJ +/TT10 1 Tf +11.8997 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1544 Tw +[( cannot, a priori, know about variables that are used freely but)]TJ +-16.1003 -1.2889 TD +0.3289 Tw +(would be bound in a higher function if the expression were evaluated in its normal context.)Tj +0 -1.2222 TD +0 Tw +(Therefore, )Tj +/TT10 1 Tf +4.8997 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0989 Tw +[( will try to "correct" these variables. Similarly, )]TJ +/TT10 1 Tf +21.5785 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0989 Tw +[( will attempt to correct)]TJ +-34.8795 -1.2889 TD +0.0756 Tw +(forms for which )Tj +/TT10 1 Tf +7.5641 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0756 Tw +[( is undefined, even when the form is not in error from your standpoint, but the)]TJ +-9.3644 -1.2889 TD +0 Tw +(corresponding function has simply not yet been defined.)Tj +3.3333 -2 TD +(Note: )Tj +/TT10 1 Tf +3.3333 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0522 Tw +[( rebinds )]TJ +/TT10 1 Tf +3.9394 0 TD +0 Tw +(FIXSPELLDEFAULT)Tj +/TT8 1 Tf +9.0015 0 TD +0.0522 Tw +[( to )]TJ +/TT10 1 Tf +1.4765 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0522 Tw +(, so that if you are not at the terminal)Tj +-19.2182 -1.2889 TD +0 Tw +(when )Tj +/TT10 1 Tf +2.727 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(ing \(or compiling\), spelling corrections will not be performed.)Tj +/TT10 1 Tf +-13.5944 -2.9556 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1456 Tw +[( will also inform you when it encounters an expression with too )]TJ +/TT13 1 Tf +30.1734 0 TD +0 Tw +(many)Tj +/TT8 1 Tf +2.2778 0 TD +0.1456 Tw +[( arguments \(unless)]TJ +/TT10 1 Tf +-36.6519 -1.2889 TD +0 Tw +(DWIMCHECK#ARGSFLG)Tj +/TT8 1 Tf +10.2017 0 TD +( )Tj +/TT10 1 Tf +0.3544 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3544 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1044 Tw +(\), because such an occurrence, although does not cause an error in the)Tj +-13.3109 -1.2889 TD +0.1311 Tw +[(Interlisp interpreter, nevertheless is frequently symptomatic of a parenthesis error. For example, if)]TJ +0 -1.2222 TD +0 Tw +(you wrote )Tj +/TT10 1 Tf +4.7852 0 TD +(\(CONS \(QUOTE FOO X\)\))Tj +/TT8 1 Tf +12.002 0 TD +( instead of )Tj +/TT10 1 Tf +4.8418 0 TD +(\(CONS \(QUOTE FOO\) X\), DWIMIFY)Tj +/TT8 1 Tf +17.4028 0 TD +( will print:)Tj +/TT10 1 Tf +-33.6984 -2 TD +(POSSIBLE PARENTHESIS ERROR IN)Tj +0 -1 TD +(\(QUOTE FOO X\))Tj +T* +(TOO MANY ARGUMENTS \(MORE THAN 1\))Tj +-5.3333 -2.7333 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.7367 Tw +[( will also check to see if a )]TJ +/TT10 1 Tf +17.2439 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.7367 Tw +[( label contains a clisp character \(unless)]TJ +/TT10 1 Tf +-23.845 -1.2889 TD +0 Tw +(DWIMCHECKPROGLABELSFLG)Tj +/TT8 1 Tf +13.2022 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0333 Tw +(, or the label is a member of )Tj +/TT10 1 Tf +12.7247 0 TD +0 Tw +(NOFIXVARSLST)Tj +/TT8 1 Tf +7.2012 0 TD +0.0333 Tw +(\), and if so, will alert)Tj +-36.0951 -1.2889 TD +0.0389 Tw +(you by printing the message )Tj +/TT10 1 Tf +13.0152 0 TD +0.0922 Tw +(SUSPICIOUS PROG LABEL)Tj +/TT8 1 Tf +12.7865 0 TD +0.0389 Tw +[(, followed by the label. The )]TJ +/TT10 1 Tf +12.7376 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0389 Tw +[( label will)]TJ +/TT13 1 Tf +-40.9397 -1.2889 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +( be treated as CLISP.)Tj +-1.333 -2.8889 TD +0.07 Tw +(Note that in most cases, an attempt to transform a form that is already as you intended will have no)Tj +0 -1.2222 TD +0.0411 Tw +[(effect \(because there will be nothing to which that form could reasonably be transformed\). However,)]TJ +T* +0.0244 Tw +(in order to avoid needless calls to DWIM or to avoid possible confusion, you can inform )Tj +/TT10 1 Tf +39.5176 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT13 1 Tf +0.2744 0 TD +(not)Tj +/TT8 1 Tf +-43.9927 -1.2889 TD +0.0711 Tw +(to attempt corrections or transformations on certain functions or variables by adding them to the list)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(NOFIXFNSLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.2411 Tw +[( or )]TJ +/TT10 1 Tf +1.9231 0 TD +0 Tw +(NOFIXVARSLST)Tj +/TT8 1 Tf +7.2012 0 TD +0.2411 Tw +[( respectively. Note that you could achieve the same effect by)]TJ +-15.7254 -1.2889 TD +0 Tw +(simply setting the corresponding variables, and giving the functions dummy definitions.)Tj +/TT10 1 Tf +0 -2.8889 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0067 Tw +[( will never attempt corrections on global variables, i.e., variables that are a member of the list)]TJ +/TT10 1 Tf +-4.2007 -1.2889 TD +0 Tw +(GLOBALVARS)Tj +/TT8 1 Tf +6.001 0 TD +0.2544 Tw +(, or have the property )Tj +/TT10 1 Tf +11.1179 0 TD +0 Tw +(GLOBALVAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.2544 Tw +[( with value )]TJ +/TT10 1 Tf +5.9802 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2544 Tw +[(, on their property list. Similarly,)]TJ +/TT10 1 Tf +-29.1001 -1.2889 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0944 Tw +[( will not attempt to correct variables declared to be )]TJ +/TT10 1 Tf +23.6598 0 TD +0 Tw +(SPECVARS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0944 Tw +[( in block declarations or via)]TJ +/TT10 1 Tf +-32.6612 -1.2889 TD +0 Tw +(DECLARE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0233 Tw +[( expressions in the function body. You can also declare variables that are simply used freely)]TJ +-4.2007 -1.2889 TD +0 Tw +(in a function by using the )Tj +/TT10 1 Tf +11.5327 0 TD +(USEDFREE)Tj +/TT8 1 Tf +4.8008 0 TD +( declaration.)Tj +/TT10 1 Tf +-16.3335 -2.9556 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0744 Tw +[( and )]TJ +/TT10 1 Tf +2.3418 0 TD +0 Tw +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +0.0744 Tw +[( \(used to )]TJ +/TT10 1 Tf +4.2951 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0744 Tw +[( several functions\) maintain two internal lists of those)]TJ +-21.0392 -1.2889 TD +0.37 Tw +[(functions and variables for which corrections were unsuccessfully attempted. These lists are)]TJ +0 -1.2222 TD +0.1644 Tw +(initialized to the values of )Tj +/TT10 1 Tf +12.5253 0 TD +0 Tw +(NOFIXFNSLST)Tj +/TT8 1 Tf +6.6011 0 TD +0.1644 Tw +[( and )]TJ +/TT10 1 Tf +2.5218 0 TD +0 Tw +(NOFIXVARSLST)Tj +/TT8 1 Tf +7.2012 0 TD +0.1644 Tw +[(. Once an attempt is made to fix a)]TJ +-28.8494 -1.2889 TD +0.3167 Tw +(particular function or variable, and the attempt fails, the function or variable is added to the)Tj +0 -1.2222 TD +0.0733 Tw +(corresponding list, so that on subsequent occurrences \(within this call to )Tj +/TT10 1 Tf +32.9502 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0733 Tw +[( or )]TJ +/TT10 1 Tf +1.5876 0 TD +0 Tw +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +(\),)Tj +-44.7395 -1.2889 TD +0.0122 Tw +[(no attempt at correction is made. For example, if )]TJ +/TT10 1 Tf +22.0231 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +[( calls )]TJ +/TT10 1 Tf +2.4742 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +[( several times, and )]TJ +/TT10 1 Tf +8.5274 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.0122 Tw +[( is undefined at)]TJ +-38.4255 -1.2889 TD +0.1222 Tw +(the time )Tj +/TT10 1 Tf +4.1107 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1222 Tw +[( is )]TJ +/TT10 1 Tf +1.4593 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(ed, )Tj +/TT10 1 Tf +1.7121 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1222 Tw +[( will not bother with )]TJ +/TT10 1 Tf +9.9368 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.1222 Tw +[( after the first occurrence. In other)]TJ +-29.2208 -1.2889 TD +0.1122 Tw +(words, once )Tj +/TT10 1 Tf +5.8348 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1122 Tw +[( "notices" a function or variable, it no longer attempts to correct it. )]TJ +/TT10 1 Tf +31.1048 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +-41.1403 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.334 0 TD +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +0.3911 Tw +[( also "notice" free variables that are set in the expression being processed.)]TJ +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +61 0 obj +<< +/Length 8294 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0867 Tw +(Moreover, once )Tj +/TT10 1 Tf +7.3247 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0867 Tw +[( "notices" such functions or variables, it subsequently treats them the same)]TJ +-11.5254 -1.2889 TD +0 Tw +(as though they were actually defined or set.)Tj +0 -2.8889 TD +0.0567 Tw +(Note that these internal lists are local to each call to )Tj +/TT10 1 Tf +23.5027 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0567 Tw +[( and )]TJ +/TT10 1 Tf +2.3062 0 TD +0 Tw +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +0.0567 Tw +(, so that if a function)Tj +-36.0106 -1.2889 TD +0 Tw +(containing )Tj +/TT10 1 Tf +5.0491 0 TD +(FOOO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +(, a misspelled call to )Tj +/TT10 1 Tf +9.6658 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0989 Tw +(, is )Tj +/TT10 1 Tf +1.6626 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0989 Tw +(ed before )Tj +/TT10 1 Tf +4.5728 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0989 Tw +[( is defined or mentioned, if the)]TJ +-31.152 -1.2889 TD +0 Tw +(function is )Tj +/TT10 1 Tf +4.9219 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(ed again after )Tj +/TT10 1 Tf +6.3022 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( has been defined, the correction will be made.)Tj +-17.2251 -2.9556 TD +(You can undo selected transformations performed by )Tj +/TT10 1 Tf +23.8501 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(, as described in Chapter 13.)Tj +/TT10 1 Tf +-25.3841 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(DWIMIFY)Tj +/TT13 1 Tf +4.1999 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(X)Tj +/TT13 1 Tf +0.6001 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(QUIETFLG)Tj +/TT13 1 Tf +4.8008 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(L)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 259.3596 459.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 459.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2767 Tw +(Performs all DWIM and CLISP corrections and transformations on )Tj +/TT19 1 Tf +32.1609 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2767 Tw +[( that would be)]TJ +-32.761 -1.2889 TD +0 Tw +(performed if )Tj +/TT19 1 Tf +5.8457 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( were run, and prints the result unless )Tj +/TT19 1 Tf +17.0371 0 TD +(QUIETFLG)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-29.9839 -2.0667 TD +(If )Tj +/TT19 1 Tf +0.931 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( is an atom and )]TJ +/TT19 1 Tf +7.0502 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( is )]TJ +/TT10 1 Tf +1.2371 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT19 1 Tf +0.5111 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( is treated as the name of a function, and its entire definition)]TJ +-13.33 -1.2889 TD +0 Tw +(is )Tj +/TT10 1 Tf +1.0326 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0678 Tw +[(ed. If )]TJ +/TT19 1 Tf +2.9631 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0678 Tw +[( is a list or )]TJ +/TT19 1 Tf +5.0767 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.0678 Tw +[( is not )]TJ +/TT10 1 Tf +3.1223 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT19 1 Tf +0.5678 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0678 Tw +[( is the expression to be )]TJ +/TT10 1 Tf +10.6498 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0678 Tw +[(ed. If )]TJ +/TT19 1 Tf +2.9631 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.0678 Tw +[( is)]TJ +-38.9774 -1.2889 TD +0 Tw +(not )Tj +/TT10 1 Tf +1.7085 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0044 Tw +(, it is the edit push-down list leading to )Tj +/TT19 1 Tf +17.5962 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0044 Tw +(, and is used for determining context, i.e.,)Tj +-21.7051 -1.2889 TD +0.1033 Tw +(what bound variables would be in effect when )Tj +/TT19 1 Tf +21.6231 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1033 Tw +[( was evaluated, whether )]TJ +/TT19 1 Tf +11.4524 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1033 Tw +[( is a form or)]TJ +-34.2756 -1.2889 TD +0 Tw +(sequence of forms, e.g., a )Tj +/TT10 1 Tf +11.2944 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( clause, etc.)Tj +-13.6948 -2.0667 TD +(If )Tj +/TT19 1 Tf +1.0521 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1322 Tw +[( is an iterative statement and )]TJ +/TT19 1 Tf +13.7606 0 TD +0 Tw +(L)Tj +/TT8 1 Tf +0.6001 0 TD +0.1322 Tw +[( is )]TJ +/TT10 1 Tf +1.4793 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6322 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1322 Tw +[( will also print the translation, i.e.,)]TJ +-24.1254 -1.2889 TD +0 Tw +(what is stored in the hash array.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(DWIMIFYFNS)Tj +/TT15 1 Tf +5.9999 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(FN)Tj +1.2 -0.3333 TD +(1)Tj +/TT13 1 Tf +0.6 0.3333 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(...)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-14742.1([NLambda NoSpread Function])]TJ +/TT10 1 Tf +-10.6834 -2.1778 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0511 Tw +[(s each of the functions given. If only one argument is given, it is evalued. If its)]TJ +-4.2007 -1.2889 TD +0.0078 Tw +(value is a list, the functions on this list are )Tj +/TT10 1 Tf +18.7877 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0078 Tw +[(ed. If only one argument is given, it is)]TJ +-22.9884 -1.2889 TD +0.0289 Tw +(atomic, its value is not a list, and it is the name of a known file, )Tj +/TT10 1 Tf +28.411 0 TD +0 Tw +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +0.0289 Tw +[( will operate)]TJ +-34.4119 -1.2889 TD +0 Tw +(on )Tj +/TT10 1 Tf +1.4546 0 TD +(\(FILEFNSLST)Tj +/TT15 1 Tf +6.6011 0 TD +( )Tj +/TT19 1 Tf +0.3267 0 TD +(FN)Tj +1.1988 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0767 Tw +(, e.g. )Tj +/TT10 1 Tf +2.4385 0 TD +0.1844 Tw +(\(DWIMIFYFNS FOO.LSP\))Tj +/TT8 1 Tf +12.1864 0 TD +0.0767 Tw +[( will )]TJ +/TT10 1 Tf +2.3604 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0767 Tw +[( every function in)]TJ +-31.9671 -1.6222 TD +0 Tw +(the file )Tj +/TT10 1 Tf +3.2812 0 TD +(FOO.LSP)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-7.4819 -2.0667 TD +0.2211 Tw +(Every 30 seconds, )Tj +/TT10 1 Tf +8.7786 0 TD +0 Tw +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +0.2211 Tw +[( prints the name of the function it is processing, a la)]TJ +/TT10 1 Tf +-14.7795 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-6.6011 -2.0667 TD +(Value is a list of the functions )Tj +/TT10 1 Tf +13.2891 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(ed.)Tj +/TT17 1 Tf +-20.1564 -2.4 TD +(DWIMINMACROSFLG)Tj +/TT8 1 Tf +9 0 TD +[( )-28767.8([Variable])]TJ +-6.3333 -1.8444 TD +0.0656 Tw +(Controls how )Tj +/TT10 1 Tf +6.4119 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0656 Tw +[( treats the arguments in a "call" to a macro, i.e., where the )]TJ +/TT10 1 Tf +26.3947 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( of)]TJ +-38.8076 -1.2889 TD +0.2411 Tw +[(the form is undefined, but has a macro definition. If )]TJ +/TT10 1 Tf +25.9896 0 TD +0 Tw +(DWIMINMACROSFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.2411 Tw +[( is )]TJ +/TT10 1 Tf +1.6971 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2411 Tw +(, then)Tj +-37.2883 -1.2889 TD +0.0533 Tw +(macros are treated as )Tj +/TT10 1 Tf +9.8188 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +0.0533 Tw +[( functions, i.e., the arguments are assumed to be evaluated,)]TJ +-13.4194 -1.2889 TD +0.0344 Tw +(which means that )Tj +/TT10 1 Tf +8.1883 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0344 Tw +[( will descend into the argument list. If )]TJ +/TT10 1 Tf +17.6049 0 TD +0 Tw +(DWIMINMACROSFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.0345 Tw +[( is)]TJ +/TT10 1 Tf +-38.9954 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, macros are treated as )Tj +/TT10 1 Tf +10.1055 0 TD +(NLAMBDA)Tj +/TT8 1 Tf +4.2007 0 TD +( functions. )Tj +/TT10 1 Tf +5.1309 0 TD +(DWIMINMACROSFLG)Tj +/TT8 1 Tf +9.0015 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-38.3898 -2.4 TD +(INFO)Tj +/TT8 1 Tf +2.4 0 TD +( )Tj +32.7544 0 TD +([Property Name])Tj +-32.4878 -1.8444 TD +0.1911 Tw +(Used to inform )Tj +/TT10 1 Tf +7.5167 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1911 Tw +[( of nonstandard behavior of particular forms with respect to)]TJ +-11.7174 -1.2889 TD +0.0367 Tw +[(evaluation, binding of arguments, etc. The )]TJ +/TT10 1 Tf +19.4559 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0367 Tw +[( property of a symbol is a single atom or)]TJ +-21.8563 -1.2889 TD +0 Tw +(list of atoms chosen from among the following:)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +64 0 obj +<< +/Length 6173 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-17)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT17 1 Tf +9 0 0 9 194.4 569.54 Tm +(EVAL)Tj +/TT8 1 Tf +3.7333 0 TD +(Informs )Tj +/TT10 1 Tf +3.9395 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.19 Tw +[( \(and CLISP and Masterscope\) that an)]TJ +-8.1402 -1.2889 TD +0.0033 Tw +(nlambda function )Tj +/TT13 1 Tf +8.1336 0 TD +0 Tw +(does)Tj +/TT8 1 Tf +1.7222 0 TD +0.0002 Tc +0.0031 Tw +( evaluate its arguments. Can also be)Tj +-9.8558 -1.2222 TD +0 Tc +0.3522 Tw +(placed on a macro name to override the behavior of)Tj +/TT10 1 Tf +T* +0 Tw +(DWIMINMACROSFLG)Tj +/TT8 1 Tf +9.0015 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT17 1 Tf +-16.8352 -1.8444 TD +(NOEVAL)Tj +/TT8 1 Tf +4.9333 0 TD +(Informs )Tj +/TT10 1 Tf +3.8151 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0656 Tw +[( that a macro does )]TJ +/TT13 1 Tf +8.6393 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0656 Tw +[( evaluate all of its)]TJ +-17.9881 -1.2889 TD +0 Tw +(arguments, even when )Tj +/TT10 1 Tf +10.3301 0 TD +(DWIMINMACROSFLG)Tj +/TT8 1 Tf +9.0015 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-25.3651 -1.8444 TD +(BINDS)Tj +/TT8 1 Tf +4.3333 0 TD +0.0556 Tw +(Placed on the )Tj +/TT10 1 Tf +6.3605 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0556 Tw +[( property of a function or the )]TJ +/TT10 1 Tf +13.4524 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0556 Tw +[( of a)]TJ +-24.0136 -1.2889 TD +0.0589 Tw +(special form to inform )Tj +/TT10 1 Tf +10.3239 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0589 Tw +[( that the function or form)]TJ +-14.5246 -1.2889 TD +0.0367 Tw +[(binds variables. In this case, )]TJ +/TT10 1 Tf +13.0677 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0367 Tw +[( assumes that )]TJ +/TT10 1 Tf +6.3307 0 TD +0 Tw +(CADR)Tj +/TT8 1 Tf +-23.599 -1.2889 TD +0.0167 Tw +(of the form is the variable list, i.e., a list of symbols, or lists)Tj +0 -1.2222 TD +0.0078 Tw +(of the form )Tj +/TT10 1 Tf +5.1962 0 TD +0 Tw +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(VAL)Tj +/TT10 1 Tf +1.8003 0 TD +( )Tj +/TT19 1 Tf +0.619 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0078 Tw +(. )Tj +/TT10 1 Tf +0.7656 0 TD +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5078 0 TD +(NLAMBDA)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5078 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0078 Tw +(, and)Tj +/TT10 1 Tf +-23.7989 -1.2889 TD +0 Tw +(RESETVARS)Tj +/TT8 1 Tf +5.4009 0 TD +( are handled in this fashion.)Tj +/TT17 1 Tf +-10.3342 -1.8444 TD +(LABELS)Tj +/TT8 1 Tf +4.9333 0 TD +(Informs )Tj +/TT10 1 Tf +4.2017 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.4522 Tw +[( that the form interprets top-level)]TJ +-9.0025 -1.2889 TD +0.0778 Tw +(symbols as labels, so that )Tj +/TT10 1 Tf +11.7317 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0778 Tw +[( will never introduce)]TJ +-16.5324 -1.2889 TD +0.1811 Tw +(an atom \(by packing\) at the top level of the expression.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +( is handled in this fashion.)Tj +/TT17 1 Tf +-16.4004 -2.4 TD +(NOFIXFNSLST)Tj +/TT8 1 Tf +6.6011 0 TD +-0.0001 Tc +-0.001 Tw +[( )-31168.9([Variable])]TJ +-3.9344 -1.8444 TD +0 Tc +0 Tw +(List of functions that )Tj +/TT10 1 Tf +9.396 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +( will not try to correct.)Tj +/TT17 1 Tf +-16.2633 -2.4 TD +(NOFIXVARSLST)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.8444 TD +(List of variables that )Tj +/TT10 1 Tf +9.2632 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +( will not try to correct.)Tj +/TT17 1 Tf +-16.1305 -2.4 TD +(NOSPELLFLG)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.8444 TD +(If )Tj +/TT10 1 Tf +1.0255 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6056 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1056 Tw +[( will not perform any spelling corrections. Initially )]TJ +/TT10 1 Tf +23.7332 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1056 Tw +(. )Tj +/TT10 1 Tf +0.9611 0 TD +0 Tw +(NOSPELLFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.1056 Tw +[( is)]TJ +-38.9274 -1.2889 TD +0.3056 Tw +(reset to )Tj +/TT10 1 Tf +4.0862 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3056 Tw +[( when compiling functions whose definitions are obtained from a file, as)]TJ +-4.6863 -1.2889 TD +0 Tw +(opposed to being in core.)Tj +/TT17 1 Tf +-2.6667 -2.3333 TD +(CLISPHELPFLG)Tj +/TT8 1 Tf +7.2012 0 TD +-0.0001 Tc +-0.0011 Tw +[( )-30569([Variable])]TJ +-4.5345 -1.8444 TD +0 Tc +0 Tw +(If )Tj +/TT10 1 Tf +0.9677 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5478 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0478 Tw +[( will not ask you for approval of any CLISP transformations. Instead, in)]TJ +-7.5165 -1.2889 TD +0.0778 Tw +(those situations where approval would be required, the effect is the same as though you)Tj +0 -1.2222 TD +0 Tw +(had been asked and said )Tj +/TT10 1 Tf +11.1245 0 TD +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +(. Initially )Tj +/TT10 1 Tf +4.4653 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-20.0568 -2.4 TD +(DWIMIFYCOMPFLG)Tj +/TT8 1 Tf +8.4014 0 TD +-0.0001 Tc +-0.0013 Tw +[( )-29369.2([Variable])]TJ +-5.7347 -1.8444 TD +0 Tc +0 Tw +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +( is called before compiling an expression. Initially )Tj +/TT10 1 Tf +22.3848 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT17 1 Tf +-33.0724 -2.4 TD +(DWIMCHECK#ARGSFLG)Tj +/TT8 1 Tf +10.2 0 TD +[( )-27567.8([Variable])]TJ +-7.5333 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, causes )Tj +/TT10 1 Tf +3.6235 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +( to check for too many arguments in a form. Initially )Tj +/TT10 1 Tf +23.583 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-36.194 -2.4 TD +(DWIMCHECKPROGLABELSFLG)Tj +/TT8 1 Tf +13.2 0 TD +[( )-24567.8([Variable])]TJ +-10.5333 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9744 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0544 Tw +(, causes )Tj +/TT10 1 Tf +3.7324 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0544 Tw +[( to check whether a )]TJ +/TT10 1 Tf +9.0764 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0544 Tw +[( label contains a CLISP character. Initially)]TJ +/TT10 1 Tf +-20.9844 -1.2889 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +67 0 obj +<< +/Length 8407 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 569.54 Tm +(DWIMESSGAG)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, suppresses all )Tj +/TT10 1 Tf +6.9355 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +( error messages. Initially )Tj +/TT10 1 Tf +11.3437 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT17 1 Tf +-28.467 -2.4 TD +(CLISPRETRANFLG)Tj +/TT8 1 Tf +8.4 0 TD +[( )-29367.8([Variable])]TJ +-5.7333 -1.8444 TD +(If )Tj +/TT10 1 Tf +1.0299 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.11 Tw +(, informs )Tj +/TT10 1 Tf +4.4236 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.11 Tw +[( to \(re\)translate all expressions which have remote translations in)]TJ +-10.2543 -1.2889 TD +0 Tw +(the CLISP hash array. Initially )Tj +/TT10 1 Tf +13.8223 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 460.2 Tm +(CLISPIFY)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 457.49 m +558.01 457.49 l +S +BT +/TT10 1 Tf +9 0 0 9 126 435.54 Tm +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.01 Tw +[( converts Interlisp expressions to CLISP. Note that the expression given to )]TJ +/TT10 1 Tf +33.3209 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.01 Tw +[( need)]TJ +/TT13 1 Tf +-42.9225 -1.2889 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1067 Tw +[( have originally been input as CLISP, i.e., )]TJ +/TT10 1 Tf +19.2547 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1067 Tw +[( can be used on functions that were written)]TJ +-25.3885 -1.2889 TD +0.0311 Tw +(before CLISP was even implemented. )Tj +/TT10 1 Tf +17.275 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0311 Tw +[( is cognizant of declaration rules as well as all of the)]TJ +-22.0758 -1.2889 TD +0.0067 Tw +[(precedence rules. For example, )]TJ +/TT10 1 Tf +14.214 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0067 Tw +[( will convert )]TJ +/TT10 1 Tf +5.8139 0 TD +0.0156 Tw +(\(IPLUS A \(ITIMES B C\)\))Tj +/TT8 1 Tf +13.2644 0 TD +0.0067 Tw +[( into )]TJ +/TT10 1 Tf +2.2584 0 TD +0 Tw +(A+B*C)Tj +/TT8 1 Tf +3.0005 0 TD +0.0067 Tw +(, but)Tj +/TT10 1 Tf +-43.352 -1.2889 TD +0.0811 Tw +(\(ITIMES A \(IPLUS B C\)\))Tj +/TT8 1 Tf +13.5266 0 TD +0.0333 Tw +[( into )]TJ +/TT10 1 Tf +2.3118 0 TD +0 Tw +(A*\(B+C\))Tj +/TT8 1 Tf +4.2007 0 TD +0.0333 Tw +(. )Tj +/TT10 1 Tf +0.8167 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0333 Tw +[( handles such cases by first )]TJ +/TT10 1 Tf +12.3704 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0333 Tw +(ing the)Tj +-42.2276 -1.2889 TD +0.0278 Tw +(expression. )Tj +/TT10 1 Tf +5.5424 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0278 Tw +[( also knows how to handle expressions consisting of a mixture of Interlisp and)]TJ +-10.3432 -1.2889 TD +0.2322 Tw +(CLISP, e.g., )Tj +/TT10 1 Tf +5.7852 0 TD +0.5567 Tw +(\(IPLUS A B*C\))Tj +/TT8 1 Tf +8.9146 0 TD +0.2322 Tw +[( is converted to )]TJ +/TT10 1 Tf +7.9426 0 TD +0 Tw +(A+B*C)Tj +/TT8 1 Tf +3.0005 0 TD +0.2322 Tw +(, but )Tj +/TT10 1 Tf +2.6969 0 TD +0.5567 Tw +(\(ITIMES A B+C\))Tj +/TT8 1 Tf +9.5147 0 TD +0.2322 Tw +[( to )]TJ +/TT10 1 Tf +1.8365 0 TD +0 Tw +(\(A*\(B+C\)\))Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-45.0919 -1.2889 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0022 Tw +( converts calls to the six basic mapping functions, )Tj +/TT10 1 Tf +22.0776 0 TD +0 Tw +(MAP)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5022 0 TD +(MAPC)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5022 0 TD +(MAPCAR)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5022 0 TD +(MAPLIST)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5022 0 TD +(MAPCONC)Tj +/TT8 1 Tf +4.2007 0 TD +(,)Tj +-45.0899 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.994 0 TD +(MAPCON)Tj +/TT8 1 Tf +3.6006 0 TD +0.0511 Tw +[(, into equivalent iterative statements. It also converts certain easily recognizable internal)]TJ +/TT10 1 Tf +-5.5946 -1.2889 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0589 Tw +[( loops to the corresponding iterative statements. )]TJ +/TT10 1 Tf +22.2411 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0589 Tw +[( can convert all iterative statements)]TJ +-29.4423 -1.2889 TD +0.0178 Tw +(input in CLISP back to CLISP, regardless of how complicated the translation was, because the original)Tj +0 -1.2222 TD +0 Tw +(CLISP is saved.)Tj +/TT10 1 Tf +0 -2.8889 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.2256 Tw +[( is not destructive to the original Interlisp expression, i.e., )]TJ +/TT10 1 Tf +27.8117 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.2256 Tw +[( produces a new)]TJ +-37.4133 -1.2889 TD +0.0244 Tw +[(expression without changing the original. The new expression may however contain some "pieces" of)]TJ +0 -1.2222 TD +0.1133 Tw +(the original, since )Tj +/TT10 1 Tf +8.3991 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1133 Tw +[( attempts to minimize the number of )]TJ +/TT10 1 Tf +17.2416 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1133 Tw +(es by not copying structure)Tj +-32.8418 -1.2889 TD +0 Tw +(whenever possible.)Tj +/TT10 1 Tf +0 -2.8889 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1767 Tw +[( will not convert expressions appearing as arguments to )]TJ +/TT10 1 Tf +26.548 0 TD +0 Tw +(NLAMBDA)Tj +/TT8 1 Tf +4.2007 0 TD +0.1767 Tw +[( functions, except for)]TJ +-35.5495 -1.2889 TD +0.0344 Tw +(those functions whose )Tj +/TT10 1 Tf +10.2059 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( property is or contains the atom )]TJ +/TT10 1 Tf +14.8832 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[(. )]TJ +/TT10 1 Tf +1.1033 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0344 Tw +[( also contains built in)]TJ +-35.794 -1.2889 TD +0.0533 Tw +(information enabling it to process special forms such as )Tj +/TT10 1 Tf +25.228 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5533 0 TD +(SELECTQ)Tj +/TT8 1 Tf +4.2007 0 TD +0.0533 Tw +[(, etc. If the )]TJ +/TT10 1 Tf +5.3228 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +[( property is)]TJ +-40.1057 -1.2889 TD +0.0211 Tw +(or contains the atom )Tj +/TT10 1 Tf +9.3623 0 TD +0 Tw +(LABELS)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5211 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0211 Tw +[( will never create an atom \(by packing\) at the top level of the)]TJ +-18.2848 -1.2889 TD +0 Tw +(expression. )Tj +/TT10 1 Tf +5.4868 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +( is handled in this fashion.)Tj +-4.5539 -2.0667 TD +0.1356 Tw +[(Note: )-515.6(Disabling a CLISP operator with )]TJ +/TT10 1 Tf +18.6303 0 TD +0 Tw +(CLDISABLE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1356 Tw +[( \(see the Miscellaneous Functions)]TJ +-20.6978 -1.2889 TD +0.6833 Tw +(and Variables section\) will also disable the corresponding )Tj +/TT10 1 Tf +31.1952 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +-31.1952 -1.2889 TD +0.0689 Tw +[(transformation. Thus, if )]TJ +/TT11 1 Tf +11.2502 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0689 Tw +[( is "turned off", )]TJ +/TT10 1 Tf +7.1906 0 TD +0 Tw +(A)Tj +/TT11 1 Tf +0.6001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0689 Tw +[( will not transform to )]TJ +/TT10 1 Tf +10.0114 0 TD +0.1656 Tw +(\(SETQ A)Tj +-31.626 -1.2889 TD +0 Tw +(B\))Tj +/TT8 1 Tf +1.2002 0 TD +(, nor vice versa.)Tj +/TT10 1 Tf +-5.2002 -2.4 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLISPIFY)Tj +/TT15 1 Tf +4.8008 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(X)Tj +/TT13 1 Tf +0.6001 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(EDITCHAIN)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25068([Function])]TJ +-9.8353 -1.8444 TD +(Clispifies )Tj +/TT19 1 Tf +4.3993 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[(. If )]TJ +/TT19 1 Tf +1.7166 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( is an atom and )]TJ +/TT19 1 Tf +7.0724 0 TD +0 Tw +(EDITCHAIN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0156 Tw +[( is )]TJ +/TT10 1 Tf +1.246 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT19 1 Tf +0.5156 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( is treated as the name of a function,)]TJ +-23.9513 -1.2889 TD +0.1944 Tw +(and its definition \(or )Tj +/TT10 1 Tf +10.1176 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1944 Tw +[( property\) is clispified. After )]TJ +/TT10 1 Tf +14.2306 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1944 Tw +[( has finished, )]TJ +/TT19 1 Tf +6.682 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1944 Tw +[( is)]TJ +-38.8315 -1.2889 TD +0.0233 Tw +(redefined \(using )Tj +/TT10 1 Tf +7.5955 0 TD +0 Tw +(/PUTD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[(\) with its new CLISP definition. The value of )]TJ +/TT10 1 Tf +20.394 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0233 Tw +[( is )]TJ +/TT19 1 Tf +1.2615 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[(. If )]TJ +/TT19 1 Tf +1.7399 0 TD +0 Tw +(X)Tj +ET +endstream +endobj +68 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +70 0 obj +<< +/Length 8075 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-19)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0478 Tw +[(is atomic and not the name of a function, spelling correction is attempted. If this fails, an)]TJ +0 -1.2222 TD +0 Tw +(error is generated.)Tj +0 -2 TD +(If )Tj +/TT19 1 Tf +1.1388 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2189 Tw +[( is a list, or )]TJ +/TT19 1 Tf +6.0822 0 TD +0 Tw +(EDITCHAIN)Tj +/TT8 1 Tf +5.4009 0 TD +0.2189 Tw +[( is not )]TJ +/TT10 1 Tf +3.5756 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT19 1 Tf +0.7189 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2189 Tw +[( itself is the expression to be clispified. If)]TJ +/TT19 1 Tf +-19.9169 -1.2889 TD +0 Tw +(EDITCHAIN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0322 Tw +[( is not )]TJ +/TT10 1 Tf +3.0156 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0322 Tw +(, it is the edit push-down list leading to )Tj +/TT19 1 Tf +17.8462 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +[( and is used to determine)]TJ +-28.663 -1.2889 TD +0.0656 Tw +(context as with )Tj +/TT10 1 Tf +7.1229 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0656 Tw +[(, as well as to obtain the local declarations, if any. The value of)]TJ +/TT10 1 Tf +-11.3236 -1.2889 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +( is the clispified version of )Tj +/TT19 1 Tf +11.8184 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-19.8859 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLISPIFYFNS)Tj +/TT10 1 Tf +6.6011 0 TD +( )Tj +/TT19 1 Tf +0.6001 0 TD +(FN)Tj +1.1987 -0.3333 TD +(1)Tj +/TT13 1 Tf +0.6 0.3333 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(...)Tj +/TT13 1 Tf +1.8003 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 230.7009 482.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 359.33 482.8 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +(Like )Tj +/TT10 1 Tf +2.187 0 TD +(DWIMIFYFNS)Tj +/TT8 1 Tf +6.001 0 TD +( except calls )Tj +/TT10 1 Tf +5.5449 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +( instead of )Tj +/TT10 1 Tf +4.8418 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT17 1 Tf +-30.2428 -2.5489 TD +(CL:FLG)Tj +/TT6 1 Tf +10 0 0 10 134.4 440.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 440.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(Affects )Tj +/TT10 1 Tf +3.4189 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0522 Tw +(s handling of forms beginning with )Tj +/TT10 1 Tf +16.4754 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5522 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5522 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(CDDDDR)Tj +/TT8 1 Tf +3.6006 0 TD +0.0522 Tw +(, as well as)Tj +-35.1033 -1.2889 TD +0.0856 Tw +[(pattern match and record expressions. If )]TJ +/TT10 1 Tf +18.9478 0 TD +0 Tw +(CL:FLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.0856 Tw +[( is )]TJ +/TT10 1 Tf +1.3883 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0856 Tw +(, these are not transformed into)Tj +-25.737 -1.2889 TD +0.3967 Tw +(the equivalent )Tj +/TT15 1 Tf +7.3568 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.25 0 TD +0.3967 Tw +[( expressions. This will prevent )]TJ +/TT10 1 Tf +16.3346 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.3967 Tw +[( from constructing any)]TJ +-28.7422 -1.2889 TD +0.0044 Tw +(expression employing a )Tj +/TT15 1 Tf +10.7853 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.25 0 TD +0.0002 Tc +0.0042 Tw +( infix operator, e.g., )Tj +/TT10 1 Tf +8.8542 0 TD +0 Tc +0.0111 Tw +(\(CADR X\))Tj +/TT8 1 Tf +4.8119 0 TD +0.0002 Tc +0.0042 Tw +( will not be transformed to )Tj +/TT10 1 Tf +12.0657 0 TD +0 Tc +0 Tw +(X:2)Tj +/TT8 1 Tf +1.8003 0 TD +0.0009 Tc +0.0035 Tw +(. If)Tj +/TT10 1 Tf +-38.5674 -1.2889 TD +0 Tc +0 Tw +(CL:FLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.0533 Tw +[( is )]TJ +/TT10 1 Tf +1.3215 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5533 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0533 Tw +[( will convert to )]TJ +/TT15 1 Tf +7.1294 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.25 0 TD +0.0533 Tw +[( notation only when the argument is atomic or a)]TJ +-18.2557 -1.2889 TD +0.0144 Tw +[(simple list \(a function name and one atomic argument\). If )]TJ +/TT10 1 Tf +26.0603 0 TD +0 Tw +(CL:FLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.0144 Tw +[( is )]TJ +/TT10 1 Tf +1.2437 0 TD +0 Tw +(ALL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5144 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0144 Tw +[( will)]TJ +-38.0201 -1.2889 TD +0 Tw +(convert to )Tj +/TT15 1 Tf +4.709 0 TD +(:)Tj +/TT8 1 Tf +0.25 0 TD +( expressions whenever possible.)Tj +/TT10 1 Tf +-4.959 -2 TD +(CL:FLG)Tj +/TT8 1 Tf +3.6006 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-11.7516 -2.5489 TD +(CLREMPARSFLG)Tj +/TT6 1 Tf +10 0 0 10 166.8105 313.12 Tm +-0.0009 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 313.12 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +1.2078 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.7877 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.2889 Tw +[( will remove parentheses in certain cases from simple forms, where)]TJ +-7.3963 -1.2889 TD +0.06 Tw +[("simple" means a function name and one or two atomic arguments. For example, )]TJ +/TT10 1 Tf +37.0002 0 TD +0 Tw +(\(COND)Tj +-37.0002 -1.2889 TD +0.6522 Tw +(\(\(ATOM X\) --\)\))Tj +/TT8 1 Tf +9.7058 0 TD +0.2722 Tw +[( will )]TJ +/TT10 1 Tf +2.7515 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.2722 Tw +[( to )]TJ +/TT10 1 Tf +1.9165 0 TD +0.6522 Tw +(\(IF ATOM X THEN --\))Tj +/TT8 1 Tf +14.0107 0 TD +0.2722 Tw +[(. However, if)]TJ +/TT10 1 Tf +-33.1853 -1.2889 TD +0 Tw +(CLREMPARSFLG)Tj +/TT8 1 Tf +7.2012 0 TD +0.1644 Tw +[( is set to )]TJ +/TT10 1 Tf +4.4737 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6644 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1644 Tw +[( will produce )]TJ +/TT10 1 Tf +6.6291 0 TD +0.3956 Tw +(\(IF \(ATOM X\) THEN --\))Tj +/TT8 1 Tf +14.1843 0 TD +0 Tw +(.)Tj +-39.7537 -1.2889 TD +(Regardless of the flag setting, the expression can be input in either form.)Tj +/TT10 1 Tf +0 -2 TD +(CLREMPARSFLG)Tj +/TT8 1 Tf +7.2012 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT17 1 Tf +-16.5524 -2.5489 TD +(CLISPIFYPACKFLG)Tj +/TT6 1 Tf +10 0 0 10 183.0132 209.18 Tm +-0.0012 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 209.18 Tm +0 Tc +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(CLISPIFYPACKFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.2311 Tw +[( affects the treatment of infix operators with atomic operands. If)]TJ +/TT10 1 Tf +-9.0015 -1.2889 TD +0 Tw +(CLISPIFYPACKFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.1422 Tw +[( is )]TJ +/TT10 1 Tf +1.4993 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6422 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1422 Tw +[( will pack these into single atoms, e.g., )]TJ +/TT10 1 Tf +18.318 0 TD +0.3411 Tw +(\(IPLUS A)Tj +-34.8618 -1.2889 TD +0.0111 Tw +(\(ITIMES B C\)\))Tj +/TT8 1 Tf +7.8235 0 TD +0.0005 Tc +0.0039 Tw +( becomes )Tj +/TT10 1 Tf +4.3165 0 TD +0 Tc +0 Tw +(A+B*C)Tj +/TT8 1 Tf +3.0005 0 TD +0.0007 Tc +0.0037 Tw +(. If )Tj +/TT10 1 Tf +1.6833 0 TD +0 Tc +0 Tw +(CLISPIFYPACKFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.0011 Tc +0.0033 Tw +( is )Tj +/TT10 1 Tf +1.2237 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0044 Tw +(, no packing is done, e.g.,)Tj +-28.8492 -1.2889 TD +0 Tw +(the above becomes )Tj +/TT10 1 Tf +8.5879 0 TD +(A + B * C)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-13.9888 -2.0667 TD +(CLISPIFYPACKFLG)Tj +/TT8 1 Tf +9.0015 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-17.1525 -2.5489 TD +(CLISPIFYUSERFN)Tj +/TT6 1 Tf +10 0 0 10 177.6 116.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 116.24 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +0.9599 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +(, causes the function )Tj +/TT10 1 Tf +9.3778 0 TD +0 Tw +(CLISPIFYUSERFN)Tj +/TT8 1 Tf +8.4014 0 TD +0.04 Tw +(, which should be a function of one argument,)Tj +-19.3392 -1.2889 TD +0.1711 Tw +(to be called on each form \(list\) not otherwise recognized by )Tj +/TT10 1 Tf +28.2421 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1711 Tw +[(. If a non-)]TJ +/TT10 1 Tf +5.1473 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +-38.1902 -1.2889 TD +(value is returned, it is treated as the clispified form. Initially )Tj +/TT10 1 Tf +26.96 0 TD +(NIL)Tj +/TT8 1 Tf +-26.96 -2.0667 TD +(Note that )Tj +/TT10 1 Tf +4.4165 0 TD +(CLISPIFYUSERFN)Tj +/TT8 1 Tf +8.4014 0 TD +( must be both set and defined to use this feature.)Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +73 0 obj +<< +/Length 7105 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT17 1 Tf +9 0 0 9 150 568.2 Tm +(FUNNYATOMLST)Tj +/TT6 1 Tf +10 0 0 10 214.8 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0056 Tw +(Suppose you have variables named )Tj +/TT10 1 Tf +15.9404 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5056 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +(, and )Tj +/TT10 1 Tf +2.454 0 TD +0 Tw +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[(. If )]TJ +/TT10 1 Tf +1.6866 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0056 Tw +[( were to convert )]TJ +/TT10 1 Tf +7.4182 0 TD +0 Tw +(\(ITIMES)Tj +-35.806 -1.2889 TD +0.0233 Tw +(A B\))Tj +/TT8 1 Tf +2.4237 0 TD +0.01 Tw +[( to )]TJ +/TT10 1 Tf +1.3921 0 TD +0 Tw +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.51 0 TD +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +0.01 Tw +[( would not translate back correctly to )]TJ +/TT10 1 Tf +16.7834 0 TD +0.0233 Tw +(\(ITIMES A B\))Tj +/TT8 1 Tf +7.2478 0 TD +0.01 Tw +(, since it would be)Tj +-31.9576 -1.2889 TD +0.0078 Tw +[(the name of a variable, and therefore would not cause an error. You can prevent this from)]TJ +0 -1.2222 TD +0.1767 Tw +(happening by adding )Tj +/TT10 1 Tf +10.3147 0 TD +0 Tw +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +0.1767 Tw +[( to the list )]TJ +/TT10 1 Tf +5.298 0 TD +0 Tw +(FUNNYATOMLST)Tj +/TT8 1 Tf +7.2012 0 TD +0.1767 Tw +[(. Then, )]TJ +/TT10 1 Tf +4.0359 0 TD +0.4233 Tw +(\(ITIMES A B\))Tj +/TT8 1 Tf +8.0478 0 TD +0.1767 Tw +[( would)]TJ +/TT10 1 Tf +-36.6978 -1.2889 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +( to )Tj +/TT10 1 Tf +1.3721 0 TD +(A * B)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-9.1733 -2.0667 TD +0.1389 Tw +(Note that )Tj +/TT10 1 Tf +4.6943 0 TD +0 Tw +(A*B)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +(s appearance on )Tj +/TT10 1 Tf +8.0773 0 TD +0 Tw +(FUNNYATOMLST)Tj +/TT8 1 Tf +7.2012 0 TD +0.1389 Tw +[( would )]TJ +/TT13 1 Tf +3.6625 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1389 Tw +[( enable DWIM and CLISP to)]TJ +-26.7686 -1.2889 TD +0 Tw +(decode )Tj +/TT10 1 Tf +3.455 0 TD +(A*B+C)Tj +/TT8 1 Tf +3.0005 0 TD +0.0356 Tw +[( as )]TJ +/TT10 1 Tf +1.4949 0 TD +0.0844 Tw +(\(IPLUS A*B C\))Tj +/TT8 1 Tf +7.9702 0 TD +0 Tw +(; )Tj +/TT10 1 Tf +0.5356 0 TD +(FUNNYATOMLST)Tj +/TT8 1 Tf +7.2012 0 TD +0.0356 Tw +[( is used only by )]TJ +/TT10 1 Tf +7.3438 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0355 Tw +[(. Thus, if)]TJ +-35.8019 -1.2889 TD +0.0333 Tw +(an identifier contains a CLISP character, it should always be separated \(with spaces\) from)Tj +0 -1.2222 TD +0.0767 Tw +[(other operators. For example, if )]TJ +/TT10 1 Tf +14.8702 0 TD +0 Tw +(X*)Tj +/TT8 1 Tf +1.2002 0 TD +0.0767 Tw +[( is a variable, you should write)]TJ +/TT15 1 Tf +14.086 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.3267 0 TD +0.1844 Tw +(\(SETQ X*)Tj +/TT15 1 Tf +4.9852 0 TD +0 Tw +( )Tj +/TT19 1 Tf +0.3267 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0767 Tw +[( in)]TJ +-38.7954 -1.2889 TD +0.2078 Tw +(CLISP as )Tj +/TT10 1 Tf +4.625 0 TD +0 Tw +(X*)Tj +/TT15 1 Tf +1.2002 0 TD +( )Tj +/TT11 1 Tf +0.4578 0 TD +<0040>Tj +/TT19 1 Tf +0.9868 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2078 Tw +(, not )Tj +/TT10 1 Tf +2.6197 0 TD +0 Tw +(X*)Tj +/TT11 1 Tf +1.2002 0 TD +<0040>Tj +/TT19 1 Tf +0.9868 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2078 Tw +[(. In general, it is best to avoid use of identifiers)]TJ +-16.8773 -1.2889 TD +0 Tw +(containing CLISP character operators as much as possible.)Tj +/TT4 1 Tf +10 0 0 10 102 387.46 Tm +(Miscellaneous Functions and Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 384.75 m +558.01 384.75 l +S +BT +/TT17 1 Tf +9 0 0 9 150 366.46 Tm +(CLISPFLG)Tj +/TT6 1 Tf +10 0 0 10 193.2 366.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 366.46 Tm +([Variable])Tj +-35.6011 -1.8445 TD +(If )Tj +/TT10 1 Tf +0.961 0 TD +(CLISPFLG)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.2911 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2911 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +(, disables all CLISP infix or prefix transformations \(but does not affect)Tj +/TT10 1 Tf +-8.7444 -1.2889 TD +0 Tw +(IF/THEN/ELSE)Tj +/TT8 1 Tf +7.2012 0 TD +( statements, or iterative statements\).)Tj +-7.2012 -2.0667 TD +(If )Tj +/TT10 1 Tf +0.9921 0 TD +(CLISPFLG)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.3222 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3222 0 TD +(TYPE-IN)Tj +/TT8 1 Tf +4.2007 0 TD +0.0722 Tw +(, CLISP transformations are performed only on expressions that)Tj +-11.2382 -1.2889 TD +0 Tw +(are typed in for evaluation, i.e., not on user programs.)Tj +0 -2 TD +(If )Tj +/TT10 1 Tf +0.9199 0 TD +(CLISPFLG)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, CLISP transformations are performed on all expressions.)Tj +-7.4209 -2.0667 TD +0.0789 Tw +(The initial value for )Tj +/TT10 1 Tf +9.2736 0 TD +0 Tw +(CLISPFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0789 Tw +[( is )]TJ +/TT10 1 Tf +1.3726 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +(. )Tj +/TT10 1 Tf +0.9078 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0789 Tw +(ing anything will cause )Tj +/TT10 1 Tf +10.8771 0 TD +0 Tw +(CLISPFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0789 Tw +[( to be)]TJ +-37.4335 -1.2889 TD +0 Tw +(set to )Tj +/TT10 1 Tf +2.6011 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-5.8678 -2.5489 TD +(CLISPCHARS)Tj +/TT6 1 Tf +10 0 0 10 204.0088 236.92 Tm +-0.0007 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 236.92 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +0.0278 Tw +[(A list of the operators that can appear in the interior of an atom. Currently )]TJ +/TT10 1 Tf +33.7364 0 TD +0.0656 Tw +(\(+ - * / )Tj +/TT11 1 Tf +5.6631 0 TD +0 Tw +<0042>Tj +/TT10 1 Tf +-39.3995 -1.2889 TD +(~ = )Tj +/TT11 1 Tf +3.6006 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( : < > +- ~= @ !\))Tj +/TT8 1 Tf +10.2017 0 TD +(.)Tj +/TT17 1 Tf +-17.4557 -2.5489 TD +(CLISPCHARRAY)Tj +/TT6 1 Tf +10 0 0 10 214.8 185.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 185.78 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2211 Tw +(A bit table of the characters on )Tj +/TT10 1 Tf +15.2782 0 TD +0 Tw +(CLISPCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.2211 Tw +[( used for calls to )]TJ +/TT10 1 Tf +8.568 0 TD +0 Tw +(STRPOSL)Tj +/TT8 1 Tf +4.2007 0 TD +0.2211 Tw +[( \(Chapter 4\).)]TJ +/TT10 1 Tf +-34.0479 -1.2889 TD +0 Tw +(CLISPCHARRAY)Tj +/TT8 1 Tf +7.2012 0 TD +0.1033 Tw +[( is initialized by performing )]TJ +/TT10 1 Tf +13.105 0 TD +0.2478 Tw +(\(SETQ CLISPCHARRAY \(MAKEBITTABLE)Tj +-20.3062 -1.2889 TD +0 Tw +(CLISPCHARS\)\))Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT17 1 Tf +-9.8678 -2.5489 TD +(CLISPINFIXSPLST)Tj +/TT10 1 Tf +9.0015 0 TD +( )Tj +/TT6 1 Tf +10 0 0 10 236.414 123.04 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 123.04 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(A list of infix operators used for spelling correction.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(CLISPARRAY)Tj +/TT6 1 Tf +10 0 0 10 204.0088 84.1 Tm +[( )-28219.5([Variable])]TJ +/TT8 1 Tf +9 0 0 9 174 67.5 Tm +0.0633 Tw +(Hash array used for storing CLISP translations. )Tj +/TT10 1 Tf +21.9242 0 TD +0 Tw +(CLISPARRAY)Tj +/TT8 1 Tf +6.001 0 TD +0.0633 Tw +[( is checked by )]TJ +/TT10 1 Tf +6.6723 0 TD +0 Tw +(FAULTEVAL)Tj +/TT8 1 Tf +-34.5974 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(FAULTAPPLY)Tj +/TT8 1 Tf +6.001 0 TD +( on erroneous forms before calling DWIM, and by the compiler.)Tj +ET +endstream +endobj +74 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +76 0 obj +<< +/Length 6765 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-21)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLEARCLISPARRAY)Tj +/TT10 1 Tf +8.9999 0 TD +( )Tj +/TT19 1 Tf +0.6001 0 TD +(NAME)Tj +/TT13 1 Tf +2.4004 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(--)Tj +/TT10 1 Tf +1.2002 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 239.2579 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0678 Tw +(Macro and CLISP expansions are cached in )Tj +/TT10 1 Tf +19.785 0 TD +0 Tw +(CLISPARRAY)Tj +/TT8 1 Tf +6.001 0 TD +0.0678 Tw +(, the systems CLISP hash array.)Tj +-25.786 -1.2889 TD +0.0344 Tw +(When anything changes that would invalidate an expansion, it needs to be removed from)Tj +0 -1.2222 TD +0.25 Tw +(the cache. )Tj +/TT10 1 Tf +5.0859 0 TD +0 Tw +(CLEARCLISPARRAY)Tj +/TT8 1 Tf +9.0015 0 TD +0.25 Tw +[( does this for you. The system does this automatically)]TJ +-14.0874 -1.2889 TD +0.1178 Tw +[(whenever you define redefine a CLISP or macro form. If you have changed something)]TJ +0 -1.2222 TD +0.0078 Tw +(that a CLISP word or a macro depends on the system will not be able to detect this, so you)Tj +T* +0.0411 Tw +(will have to invalidate the cahce by calling )Tj +/TT10 1 Tf +19.3704 0 TD +0 Tw +(CLEARCLISPARRAY.)Tj +/TT8 1 Tf +9.6016 0 TD +0.0411 Tw +[( You can clear the whole)]TJ +-28.972 -1.2889 TD +0 Tw +(cache by calling )Tj +/TT10 1 Tf +7.2632 0 TD +(\(CLRHASH CLISPARRAY\).)Tj +-9.9298 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLISPTRAN)Tj +/TT10 1 Tf +5.3999 0 TD +( )Tj +/TT19 1 Tf +0.6001 0 TD +(X)Tj +/TT13 1 Tf +0.6001 0 TD +( )Tj +/TT19 1 Tf +0.25 0 TD +(TRAN)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 201.457 460.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 460.86 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Gives )Tj +/TT19 1 Tf +3.1975 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.4256 Tw +[( the translation )]TJ +/TT19 1 Tf +8.1771 0 TD +0 Tw +(TRAN)Tj +/TT8 1 Tf +2.4004 0 TD +0.4256 Tw +[( by storing \(key )]TJ +/TT19 1 Tf +8.856 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.4256 Tw +(, value )Tj +/TT19 1 Tf +4.0391 0 TD +0 Tw +(TRAN)Tj +/TT8 1 Tf +2.4004 0 TD +0.4256 Tw +(\) in the hash array)Tj +/TT10 1 Tf +-30.2707 -1.2889 TD +0 Tw +(CLISPARRAY)Tj +/TT8 1 Tf +6.001 0 TD +0.0756 Tw +(. )Tj +/TT10 1 Tf +0.9011 0 TD +0 Tw +(CLISPTRAN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0756 Tw +[( is called for all CLISP translations, via a non-linked, external)]TJ +-12.303 -1.2889 TD +0 Tw +(function call, so it can be advised.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLISPDEC)Tj +/TT4 1 Tf +10 0 0 10 150.6 398.72 Tm +( )Tj +/TT19 1 Tf +9 0 0 9 153.3783 398.72 Tm +(DECLST)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 191.1844 398.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 398.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0856 Tw +(Puts into effect the declarations in )Tj +/TT19 1 Tf +15.7585 0 TD +0 Tw +(DECLST)Tj +/TT8 1 Tf +3.6006 0 TD +0.0856 Tw +(. )Tj +/TT10 1 Tf +0.9211 0 TD +0 Tw +(CLISPDEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.0856 Tw +[( performs spelling corrections on)]TJ +-25.0809 -1.2889 TD +0 Tw +(words not recognized as declarations. )Tj +/TT10 1 Tf +17.209 0 TD +(CLISPDEC)Tj +/TT8 1 Tf +4.8008 0 TD +( is undoable.)Tj +/TT10 1 Tf +-24.6764 -2.5489 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(CLDISABLE)Tj +/TT10 1 Tf +5.3999 0 TD +( )Tj +/TT19 1 Tf +0.6001 0 TD +(OP)Tj +/TT10 1 Tf +1.2002 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 183.0044 347.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 347.58 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0156 Tw +(Disables the CLISP operator )Tj +/TT19 1 Tf +12.759 0 TD +0 Tw +(OP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0156 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.8083 0 TD +0.0367 Tw +(\(CLDISABLE -\))Tj +/TT8 1 Tf +8.438 0 TD +0.0156 Tw +[( makes )]TJ +/TT10 1 Tf +3.3729 0 TD +0 Tw +(-)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( be just another)]TJ +-33.1786 -1.2889 TD +0.1556 Tw +(character. )Tj +/TT10 1 Tf +5.1261 0 TD +0 Tw +(CLDISABLE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1556 Tw +[( can be used on all CLISP operators, e.g., infix operators, prefix)]TJ +-10.5269 -1.2889 TD +0 Tw +(operators, iterative statement operators, etc. )Tj +/TT10 1 Tf +19.9004 0 TD +(CLDISABLE)Tj +/TT8 1 Tf +5.4009 0 TD +( is undoable.)Tj +-22.6346 -2.0667 TD +0.03 Tw +[(Note:)-901.2(Simply removing a character operator from )]TJ +/TT10 1 Tf +22.967 0 TD +0 Tw +(CLISPCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.03 Tw +[( will prevent)]TJ +-25.6346 -1.2889 TD +0.0133 Tw +(it from being treated as a CLISP operator when it appears as part of an)Tj +0 -1.2222 TD +0.24 Tw +(atom, but it will continue to be an operator when it appears as a)Tj +T* +0 Tw +(separate atom, e.g. \()Tj +/TT10 1 Tf +8.8272 0 TD +(FOO + X)Tj +/TT8 1 Tf +4.2007 0 TD +(\) vs )Tj +/TT10 1 Tf +1.8218 0 TD +(FOO+X)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT17 1 Tf +-26.5168 -2.5489 TD +(CLISPIFTRANFLG)Tj +/TT6 1 Tf +10 0 0 10 177.6 232.64 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 232.64 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1111 Tw +(Affects handling of translations of )Tj +/TT10 1 Tf +15.8622 0 TD +0 Tw +(IF-THEN-ELSE)Tj +/TT8 1 Tf +7.2012 0 TD +0.1111 Tw +[( statements \(see Chapter 9\). If )]TJ +/TT10 1 Tf +14.3369 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1111 Tw +(, the)Tj +-38.0003 -1.2889 TD +0.3633 Tw +[(translations are stored elsewhere, and the \(modified\) CLISP retained. If )]TJ +/TT10 1 Tf +35.9395 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3633 Tw +(, the)Tj +-37.7398 -1.2889 TD +0 Tw +(corresponding )Tj +/TT10 1 Tf +6.7017 0 TD +(COND)Tj +/TT8 1 Tf +2.4004 0 TD +( expression replaces the CLISP. Initially )Tj +/TT10 1 Tf +17.9878 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT17 1 Tf +-30.3566 -2.5489 TD +(CLISPIFYPRETTYFLG)Tj +/TT6 1 Tf +10 0 0 10 193.8 169.9 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 169.9 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.3522 Tw +(If non-)Tj +/TT10 1 Tf +3.3151 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3522 Tw +(, causes )Tj +/TT10 1 Tf +4.328 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.3522 Tw +[( \(and therefore )]TJ +/TT10 1 Tf +7.8467 0 TD +0 Tw +(PP)Tj +/TT8 1 Tf +1.2002 0 TD +0.3522 Tw +[( and )]TJ +/TT10 1 Tf +2.8973 0 TD +0 Tw +(MAKEFILE)Tj +/TT8 1 Tf +4.8008 0 TD +0.3522 Tw +(\) to )Tj +/TT10 1 Tf +2.4095 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +-35.199 -1.2889 TD +0.6856 Tw +(selected function definitions before printing them according to the following)Tj +0 -1.2222 TD +0 Tw +(interpretations of )Tj +/TT10 1 Tf +7.9224 0 TD +(CLISPIFYPRETTYFLG)Tj +/TT8 1 Tf +10.2017 0 TD +(:)Tj +/TT17 1 Tf +-6.5907 -2.0667 TD +(ALL)Tj +/TT8 1 Tf +3.1333 0 TD +(Clispify all functions.)Tj +/TT17 1 Tf +-6.3744 -2.0667 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( or )Tj +/TT17 1 Tf +1.4409 0 TD +(EXPRS)Tj +/TT8 1 Tf +4.3334 0 TD +(Clispify all functions currently defined as )Tj +/TT10 1 Tf +18.5898 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +(s.)Tj +/TT17 1 Tf +-26.5236 -2.0667 TD +(CHANGES)Tj +/TT8 1 Tf +5.5333 0 TD +0.49 Tw +(Clispify all functions marked as having been)Tj +0 -1.2889 TD +0 Tw +(changed.)Tj +-3.4156 -2 TD +[(a list)-1333.5(Clispify all functions in that list.)]TJ +ET +endstream +endobj +77 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +80 0 obj +<< +/Length 7431 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-22)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +(CLISPIFYPRETTYFLG)Tj +/TT8 1 Tf +10.2017 0 TD +0.2122 Tw +[( is \(temporarily\) reset to )]TJ +/TT10 1 Tf +11.9303 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2122 Tw +[( when )]TJ +/TT15 1 Tf +3.4015 0 TD +0 Tw +( )Tj +/TT10 1 Tf +0.4622 0 TD +(MAKEFILE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2122 Tw +[( is called with the)]TJ +-31.3965 -1.2889 TD +0 Tw +(option )Tj +/TT10 1 Tf +3.2688 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.1267 Tw +(, and reset to )Tj +/TT10 1 Tf +6.4246 0 TD +0 Tw +(CHANGES)Tj +/TT8 1 Tf +4.2007 0 TD +0.1267 Tw +[( when the file being dumped has the property)]TJ +/TT10 1 Tf +-18.6949 -1.2889 TD +0 Tw +(FILETYPE)Tj +/TT8 1 Tf +4.8008 0 TD +( value )Tj +/TT10 1 Tf +2.938 0 TD +(CLISP)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT15 1 Tf +0.25 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(CLISPIFYPRETTYFLG)Tj +/TT8 1 Tf +10.2017 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-25.4588 -2.0667 TD +[(Note: )-401.2(If )]TJ +/TT10 1 Tf +4.5699 0 TD +(CLISPIFYPRETTYFLG)Tj +/TT8 1 Tf +10.2017 0 TD +0.3167 Tw +[( is non-)]TJ +/TT10 1 Tf +3.8911 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3167 Tw +(, and the only transformation)Tj +-17.1297 -1.2889 TD +0.1533 Tw +(performed by )Tj +/TT10 1 Tf +6.6377 0 TD +0 Tw +(DWIM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1533 Tw +[( are well formed )]TJ +/TT10 1 Tf +8.129 0 TD +0 Tw +(CLISP)Tj +/TT8 1 Tf +3.0005 0 TD +0.1533 Tw +[( transformations, i.e., no)]TJ +-20.1676 -1.2889 TD +0.0456 Tw +(spelling corrections, the function will )Tj +/TT13 1 Tf +16.9158 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0456 Tw +[( be marked as changed, since)]TJ +-18.2488 -1.2222 TD +0.1333 Tw +(it would only have to be re-clispified and re-prettyprinted when the)Tj +T* +0 Tw +(file was written out.)Tj +/TT10 1 Tf +-8.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(PPT)Tj +/TT4 1 Tf +10 0 0 10 171.6035 460.2 Tm +( )Tj +/TT19 1 Tf +9 0 0 9 174.3818 460.2 Tm +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 185.1836 460.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 407.33 460.2 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.0833 Tw +[(Both a function and an edit macro for prettyprinting translations. It performs a )]TJ +/TT10 1 Tf +36.4259 0 TD +0 Tw +(PP)Tj +/TT8 1 Tf +1.2002 0 TD +0.0833 Tw +[( after)]TJ +-37.6261 -1.2889 TD +0.3011 Tw +(first resetting )Tj +/TT10 1 Tf +6.7297 0 TD +0 Tw +(PRETTYTRANFLG)Tj +/TT8 1 Tf +7.8013 0 TD +0.3011 Tw +[( to )]TJ +/TT10 1 Tf +1.9743 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3011 Tw +(, thereby causing any translations to be printed)Tj +-17.1053 -1.2889 TD +0 Tw +(instead of the corresponding CLISP.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(CLISP:)Tj +/TT6 1 Tf +10 0 0 10 182.4 398.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 398.06 Tm +([Editor Command])Tj +-31.5889 -1.8444 TD +0.5278 Tw +(Edit macro that obtains the translation of the correct expression, if any, from)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CLISPARRAY)Tj +/TT8 1 Tf +6.001 0 TD +(, and calls )Tj +/TT10 1 Tf +4.6426 0 TD +(EDITE)Tj +/TT8 1 Tf +3.0005 0 TD +( on it.)Tj +/TT17 1 Tf +-16.3107 -2.5489 TD +(CL)Tj +/TT6 1 Tf +10 0 0 10 160.8 347.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 347.52 Tm +([Editor Command])Tj +-31.5889 -1.8444 TD +0.0833 Tw +[(Edit macro. Replaces current expression with )]TJ +/TT10 1 Tf +21.0697 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0833 Tw +[(ed current expression. Current)]TJ +-25.8704 -1.2889 TD +0 Tw +(expression can be an element or tail.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(DW)Tj +/TT6 1 Tf +10 0 0 10 160.8 296.98 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 458.3 296.98 Tm +([Editor Command])Tj +-31.5889 -1.8444 TD +(Edit macro. )Tj +/TT10 1 Tf +5.6064 0 TD +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +(s current expression, which can be an element \(atom or list\) or tail.)Tj +-9.8071 -2.0667 TD +(Both )Tj +/TT10 1 Tf +2.4249 0 TD +(CL)Tj +/TT8 1 Tf +1.2002 0 TD +0.11 Tw +[( and )]TJ +/TT10 1 Tf +2.4129 0 TD +0 Tw +(DW)Tj +/TT8 1 Tf +1.2002 0 TD +0.11 Tw +[( can be called when the current expression is either an element or a tail)]TJ +-7.2382 -1.2889 TD +0.0233 Tw +[(and will work properly. Both consult the declarations in the function being edited, if any,)]TJ +0 -1.2222 TD +0 Tw +(and both are undoable.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT17 1 Tf +0.6001 0 TD +(LOWERCASE)Tj +/TT4 1 Tf +10 0 0 10 204 216.84 Tm +( )Tj +/TT19 1 Tf +9 0 0 9 206.7783 216.84 Tm +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 228.3818 216.84 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 216.84 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT19 1 Tf +0.9344 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.2644 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2644 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5144 0 TD +(LOWERCASE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0144 Tw +[( makes the necessary internal modifications so that )]TJ +/TT10 1 Tf +22.8451 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0144 Tw +[( will)]TJ +-38.0249 -1.2889 TD +0.0656 Tw +(use lower case versions of )Tj +/TT10 1 Tf +12.0597 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(THEN)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(ELSE)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5656 0 TD +(ELSEIF)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +[(, and all i.s. operators. This)]TJ +-27.4895 -1.2889 TD +0.0833 Tw +[(produces more readable output. Note that you can always type in )]TJ +/TT13 1 Tf +30.5566 0 TD +0 Tw +(either)Tj +/TT8 1 Tf +2.2783 0 TD +0.0833 Tw +[( upper or lower)]TJ +-32.835 -1.2222 TD +0.0356 Tw +(case \(or a combination\), regardless of the action of )Tj +/TT10 1 Tf +22.7053 0 TD +0 Tw +(LOWERCASE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0356 Tw +[(. If )]TJ +/TT19 1 Tf +1.7766 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.2856 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2856 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5356 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +-35.1901 -1.2889 TD +0.1422 Tw +(will use uppercase versions of )Tj +/TT10 1 Tf +14.2844 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6422 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +0.1422 Tw +[(, et al. The value of )]TJ +/TT10 1 Tf +9.8325 0 TD +0 Tw +(LOWERCASE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1422 Tw +[( is its previous)]TJ +-33.1604 -1.2889 TD +0 Tw +("setting". )Tj +/TT10 1 Tf +4.4766 0 TD +(LOWERCASE)Tj +/TT8 1 Tf +5.4009 0 TD +( is undoable. The initial setting for )Tj +/TT10 1 Tf +15.6343 0 TD +(LOWERCASE)Tj +/TT8 1 Tf +5.4009 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 99.9 Tm +(CLISP Internal Conventions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 97.19 m +558.01 97.19 l +S +BT +/TT8 1 Tf +9 0 0 9 126 75.24 Tm +0.28 Tw +(CLISP is almost entirely table driven by the property lists of the corresponding infix or prefix)Tj +0 -1.2222 TD +0.0289 Tw +[(operators. For example, much of the information used for translating the )]TJ +/TT10 1 Tf +32.9087 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +[( infix operator is stored on)]TJ +-33.5088 -1.2889 TD +0.0856 Tw +(the property list of the symbol ")Tj +/TT10 1 Tf +14.5221 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.0856 Tw +[(". Thus it is relatively easy to add new infix or prefix operators or)]TJ +-15.1222 -1.2889 TD +0.1722 Tw +[(change old ones, simply by adding or changing selected property values. \(There )]TJ +/TT13 1 Tf +38.1256 0 TD +0 Tw +(is)Tj +/TT8 1 Tf +0.667 0 TD +0.1722 Tw +[( some built in)]TJ +ET +endstream +endobj +81 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +83 0 obj +<< +/Length 9158 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-23)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(CLISP)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0433 Tw +(information for handling minus, )Tj +/TT10 1 Tf +14.75 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5433 0 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +(, and )Tj +/TT10 1 Tf +2.5295 0 TD +0 Tw +(~)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +(, i.e., you could not yourself add such "special" operators,)Tj +-19.6232 -1.2889 TD +0 Tw +(although you can disable or redefine them.\))Tj +0 -2.8889 TD +0.0622 Tw +(Global declarations operate by changing the )Tj +/TT10 1 Tf +20.1224 0 TD +0 Tw +(LISPFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0622 Tw +[( and )]TJ +/TT10 1 Tf +2.3173 0 TD +0 Tw +(CLISPINFIX)Tj +/TT8 1 Tf +6.001 0 TD +0.0622 Tw +[( properties of the appropriate)]TJ +-32.0412 -1.2889 TD +0 Tw +(operators.)Tj +/TT17 1 Tf +2.6667 -2.4822 TD +(CLISPTYPE)Tj +/TT6 1 Tf +10 0 0 10 150.6 498 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 418.39 498 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.0211 Tw +(The property value of the property )Tj +/TT10 1 Tf +15.8034 0 TD +0 Tw +(CLISPTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0211 Tw +[( is the precedence number of the operator:)]TJ +-21.2043 -1.2889 TD +0.2344 Tw +[(higher values have higher precedence, i.e., are tighter. Note that the actual value is)]TJ +0 -1.2222 TD +0.0222 Tw +[(unimportant, only the value relative to other operators. For example, )]TJ +/TT10 1 Tf +31.1644 0 TD +0 Tw +(CLISPTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0222 Tw +[( for )]TJ +/TT15 1 Tf +1.8184 0 TD +0 Tw +(:)Tj +/TT8 1 Tf +0.25 0 TD +(, )Tj +/TT11 1 Tf +0.5222 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(,)Tj +-39.7589 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.0929 0 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.15 Tw +[( are 14, 6, and 4 respectively. Operators with the same precedence group left to)]TJ +-2.693 -1.2889 TD +0 Tw +(right, e.g., )Tj +/TT10 1 Tf +4.6855 0 TD +(/)Tj +/TT8 1 Tf +0.6001 0 TD +( also has precedence 4, so )Tj +/TT10 1 Tf +11.479 0 TD +(A/B*C)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(\(A/B\)*C)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-25.1807 -2.0667 TD +0.28 Tw +(An operator can have a different left and right precedence by making the value of)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CLISPTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0622 Tw +[( be a dotted pair of two numbers, e.g., )]TJ +/TT10 1 Tf +17.5673 0 TD +0 Tw +(CLISPTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0622 Tw +[( of )]TJ +/TT11 1 Tf +1.5034 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0622 Tw +[( is )]TJ +/TT10 1 Tf +1.6515 0 TD +0.1489 Tw +(\(8 . -12\))Tj +/TT8 1 Tf +5.6987 0 TD +0.0622 Tw +[(. In)]TJ +-38.2094 -1.2889 TD +(this case, )Tj +/TT10 1 Tf +4.3442 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( is the left precedence, and )]TJ +/TT10 1 Tf +12.3401 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( the right, i.e., )]TJ +/TT10 1 Tf +6.5565 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( is used when comparing)]TJ +-28.6417 -1.2889 TD +0.0256 Tw +(with operators on the )Tj +/TT13 1 Tf +9.8625 0 TD +0 Tw +(left)Tj +/TT8 1 Tf +1.2778 0 TD +0.0256 Tw +(, and )Tj +/TT10 1 Tf +2.494 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0256 Tw +[( with operators on the )]TJ +/TT13 1 Tf +10.138 0 TD +0 Tw +(right)Tj +/TT8 1 Tf +2 0 TD +0.0256 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.8483 0 TD +0 Tw +(A*B)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(C+D)Tj +/TT8 1 Tf +1.8003 0 TD +0.0256 Tw +[( is)]TJ +-39.0083 -1.2889 TD +0.0433 Tw +(parsed as )Tj +/TT10 1 Tf +4.5203 0 TD +0 Tw +(A*\(B)Tj +/TT11 1 Tf +2.4004 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(C+D\)\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0433 Tw +[( because the left precedence of )]TJ +/TT11 1 Tf +13.9299 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0433 Tw +[( is 8, which is higher than that)]TJ +-26.4248 -1.2889 TD +0 Tw +(of )Tj +/TT10 1 Tf +1.1734 0 TD +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.0444 Tw +[(, which is 4. The right precedence of )]TJ +/TT11 1 Tf +16.7936 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +0.0444 Tw +[( is -12, which is lower than that of )]TJ +/TT10 1 Tf +15.544 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.0444 Tw +(, which is)Tj +-35.698 -1.2889 TD +0 Tw +(2.)Tj +0 -2 TD +0.3311 Tw +(If the )Tj +/TT10 1 Tf +3.2193 0 TD +0 Tw +(CLISPTYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.3311 Tw +[( property for any operator is removed, the corresponding CLISP)]TJ +-8.6202 -1.2889 TD +0 Tw +(transformation is disabled, as well as the inverse )Tj +/TT10 1 Tf +21.6982 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +( transformation.)Tj +/TT17 1 Tf +-29.1657 -2.5489 TD +(UNARYOP)Tj +/TT6 1 Tf +10 0 0 10 139.8 295.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 418.39 295.46 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.0611 Tw +(The value of property )Tj +/TT10 1 Tf +10.1346 0 TD +0 Tw +(UNARYOP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0611 Tw +[( must be )]TJ +/TT10 1 Tf +4.2014 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0611 Tw +[( for unary operators or brackets. The operand)]TJ +-19.1368 -1.2889 TD +0 Tw +(is always on the right, i.e., unary operators or brackets are always prefix operators.)Tj +/TT17 1 Tf +-2.6667 -2.4822 TD +(BROADSCOPE)Tj +/TT6 1 Tf +10 0 0 10 156 244.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 418.39 244.92 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.2856 Tw +(The value of property )Tj +/TT10 1 Tf +11.0324 0 TD +0 Tw +(BROADSCOPE)Tj +/TT8 1 Tf +6.001 0 TD +0.2856 Tw +[( is )]TJ +/TT10 1 Tf +1.786 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2856 Tw +[( if the operator has lower precedence than)]TJ +-19.4194 -1.2889 TD +0.0056 Tw +(Interlisp forms, e.g., )Tj +/TT10 1 Tf +9.1085 0 TD +0 Tw +(LT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5056 0 TD +(EQUAL)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5056 0 TD +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +0.0056 Tw +[(, etc. For example, )]TJ +/TT10 1 Tf +8.5229 0 TD +0.0133 Tw +(\(FOO X AND Y\))Tj +/TT8 1 Tf +7.8413 0 TD +0.0056 Tw +[( parses as )]TJ +/TT10 1 Tf +4.5133 0 TD +0 Tw +(\(\(FOO)Tj +-36.998 -1.2889 TD +0.1744 Tw +(X\) AND Y\))Tj +/TT8 1 Tf +5.7498 0 TD +0.0722 Tw +[(. If the )]TJ +/TT10 1 Tf +3.596 0 TD +0 Tw +(BROADSCOPE)Tj +/TT8 1 Tf +6.001 0 TD +0.0722 Tw +[( property were removed from the property list of )]TJ +/TT10 1 Tf +22.5982 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +/TT10 1 Tf +-39.7453 -1.2889 TD +(\(FOO X AND Y\))Tj +/TT8 1 Tf +7.8013 0 TD +( would parse as )Tj +/TT10 1 Tf +7.2075 0 TD +(\(FOO \(X AND Y\)\))Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +/TT17 1 Tf +-26.6769 -2.5489 TD +(LISPFN)Tj +/TT6 1 Tf +10 0 0 10 134.4 170.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 418.39 170.58 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.0511 Tw +(The value of the property )Tj +/TT10 1 Tf +11.7829 0 TD +0 Tw +(LISPFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0511 Tw +[( is the name of the function to which the infix operator)]TJ +-15.3835 -1.2889 TD +0.0122 Tw +[(translates. For example, the value of )]TJ +/TT10 1 Tf +16.5328 0 TD +0 Tw +(LISPFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0122 Tw +[( for )]TJ +/TT11 1 Tf +1.7984 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.0122 Tw +[( is )]TJ +/TT10 1 Tf +1.2393 0 TD +0 Tw +(EXPT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +(, for )Tj +/TT10 1 Tf +2.0484 0 TD +0.0289 Tw +( QUOTE)Tj +/TT8 1 Tf +4.2296 0 TD +0.0122 Tw +[(, etc. If the value)]TJ +-32.4524 -1.2889 TD +0.0644 Tw +(of the property )Tj +/TT10 1 Tf +7.1089 0 TD +0 Tw +(LISPFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0644 Tw +[( is )]TJ +/TT10 1 Tf +1.3437 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0644 Tw +(, the infix operator itself is also the function, e.g., )Tj +/TT10 1 Tf +22.3319 0 TD +0 Tw +(AND)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5644 0 TD +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +(,)Tj +/TT10 1 Tf +-39.7504 -1.2889 TD +(EQUAL)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT17 1 Tf +-5.6672 -2.5489 TD +(SETFN)Tj +/TT6 1 Tf +10 0 0 10 129 96.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 418.39 96.24 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +(If )Tj +/TT10 1 Tf +1.0244 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1044 Tw +[( has a )]TJ +/TT10 1 Tf +3.0692 0 TD +0 Tw +(SETFN)Tj +/TT8 1 Tf +3.0005 0 TD +0.1044 Tw +[( property )]TJ +/TT10 1 Tf +4.6083 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.1044 Tw +(, then )Tj +/TT10 1 Tf +2.9281 0 TD +0.25 Tw +(\(FOO --\))Tj +/TT11 1 Tf +5.0508 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1044 Tw +[( translates to )]TJ +/TT10 1 Tf +6.1825 0 TD +0.25 Tw +(\(FIE -- X\))Tj +/TT8 1 Tf +6.501 0 TD +0.1044 Tw +[(. For)]TJ +-37.5522 -1.2889 TD +0.0267 Tw +(example, if you make )Tj +/TT10 1 Tf +9.8528 0 TD +0 Tw +(ELT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0267 Tw +[( be an infix operator, e.g. )]TJ +/TT10 1 Tf +11.3607 0 TD +0 Tw +(#)Tj +/TT8 1 Tf +0.6001 0 TD +0.0267 Tw +(, by putting appropriate )Tj +/TT10 1 Tf +10.987 0 TD +0 Tw +(CLISPTYPE)Tj +/TT8 1 Tf +-34.6009 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9829 0 TD +(LISPFN)Tj +/TT8 1 Tf +3.6006 0 TD +0.04 Tw +[( properties on the property list of )]TJ +/TT10 1 Tf +15.1926 0 TD +0 Tw +(#)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[( then you can also make )]TJ +/TT10 1 Tf +11.1189 0 TD +0 Tw +(#)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[( followed by )]TJ +/TT11 1 Tf +5.91 0 TD +0 Tw +<0040>Tj +/TT8 1 Tf +-39.0052 -1.2889 TD +0.0111 Tw +(translate to )Tj +/TT10 1 Tf +5.2175 0 TD +0 Tw +(SETA)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +(, e.g., )Tj +/TT10 1 Tf +2.5574 0 TD +0 Tw +(X#N)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[( to )]TJ +/TT10 1 Tf +1.3943 0 TD +0.0278 Tw +(\(SETA X N Y\))Tj +/TT8 1 Tf +7.2845 0 TD +0.0111 Tw +(, by putting )Tj +/TT10 1 Tf +5.4283 0 TD +0 Tw +(SETA)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( on the property list of)]TJ +ET +endstream +endobj +84 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT13 10 0 R +/TT15 16 0 R +/TT17 26 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +86 0 obj +<< +/Length 4402 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(20-24)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +(ELT)Tj +/TT8 1 Tf +1.8003 0 TD +0.0178 Tw +[( under the property )]TJ +/TT10 1 Tf +9.0277 0 TD +0 Tw +(SETFN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0178 Tw +[(. Putting the list )]TJ +/TT10 1 Tf +7.5967 0 TD +0 Tw +(\(ELT\))Tj +/TT8 1 Tf +3.0005 0 TD +0.0178 Tw +[( on the property list of )]TJ +/TT10 1 Tf +10.2322 0 TD +0 Tw +(SETA)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( under)]TJ +-37.0582 -1.2889 TD +0 Tw +(property )Tj +/TT10 1 Tf +4.1494 0 TD +(SETFN)Tj +/TT8 1 Tf +3.0005 0 TD +( will enable )Tj +/TT10 1 Tf +5.3413 0 TD +(SETA)Tj +/TT8 1 Tf +2.4004 0 TD +( forms to )Tj +/TT10 1 Tf +4.2026 0 TD +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +( back to )Tj +/TT10 1 Tf +3.6753 0 TD +(ELT)Tj +/TT8 1 Tf +1.8003 0 TD +(s.)Tj +/TT17 1 Tf +-32.0373 -2.5489 TD +(CLISPINFIX)Tj +/TT6 1 Tf +10 0 0 10 204 535 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 466.39 535 Tm +([Property Name])Tj +-32.4878 -1.8445 TD +0.0256 Tw +(The value of this property is the CLISP infix to be used in )Tj +/TT10 1 Tf +25.8903 0 TD +0 Tw +(CLISPIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0256 Tw +[(ing. This property is)]TJ +-30.6911 -1.2889 TD +0.2567 Tw +(stored on the property list of the corresponding Interlisp function, e.g., the value of)Tj +0 -1.2222 TD +0 Tw +(property )Tj +/TT10 1 Tf +4.1494 0 TD +(CLISPINFIX)Tj +/TT8 1 Tf +6.001 0 TD +( for )Tj +/TT10 1 Tf +1.7739 0 TD +(EXPT)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT11 1 Tf +1.2148 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +(,)Tj +/TT8 1 Tf +0.6001 0 TD +( for )Tj +/TT10 1 Tf +1.7739 0 TD +(QUOTE)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +( etc.)Tj +/TT17 1 Tf +-25.9987 -2.5489 TD +(CLISPWORD)Tj +/TT6 1 Tf +10 0 0 10 198.6 472.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 466.39 472.86 Tm +([Property Name])Tj +-32.4878 -1.8444 TD +0.0144 Tw +(Appears on the property list of clisp operators which can appear as )Tj +/TT10 1 Tf +30.0981 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0144 Tw +[( of a form, such as)]TJ +/TT10 1 Tf +-31.8984 -1.2889 TD +0 Tw +(FETCH)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5644 0 TD +(REPLACE)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5644 0 TD +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.0644 Tw +[(, iterative statement operators, etc. Value of property is of the form)]TJ +/TT10 1 Tf +-9.5303 -1.2889 TD +0 Tw +(\()Tj +/TT19 1 Tf +0.6001 0 TD +(KEYWORD)Tj +/TT10 1 Tf +4.2007 0 TD +0.0389 Tw +[( . )]TJ +/TT19 1 Tf +1.8781 0 TD +0 Tw +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0167 Tw +(, where )Tj +/TT19 1 Tf +3.5524 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0167 Tw +[( is the lowercase version of the operator, and )]TJ +/TT19 1 Tf +20.1725 0 TD +0 Tw +(KEYWORD)Tj +/TT8 1 Tf +-35.8046 -1.2889 TD +(is its type, e.g. )Tj +/TT10 1 Tf +6.5034 0 TD +(FORWORD)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(IFWORD)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(RECORDWORD)Tj +/TT8 1 Tf +6.001 0 TD +(, etc.)Tj +/TT19 1 Tf +-21.3057 -2.0667 TD +(KEYWORD)Tj +/TT8 1 Tf +4.2007 0 TD +0.0844 Tw +[( can also be the name of a function. When the atom appears as )]TJ +/TT10 1 Tf +29.2115 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0844 Tw +[( of a form,)]TJ +-35.2125 -1.2889 TD +0.0811 Tw +[(the function is applied to the form and the result taken as the correct form. In this case,)]TJ +0 -1.2222 TD +0.1756 Tw +(the function should either physically change the form, or call )Tj +/TT10 1 Tf +28.8986 0 TD +0 Tw +(CLISPTRAN)Tj +/TT8 1 Tf +5.4009 0 TD +0.1756 Tw +[( to store the)]TJ +-34.2995 -1.2889 TD +0 Tw +(translation.)Tj +0 -2 TD +0.1111 Tw +(As an example, to make )Tj +/TT10 1 Tf +11.3783 0 TD +0 Tw +(&)Tj +/TT8 1 Tf +0.6001 0 TD +0.1111 Tw +[( be an infix character operator meaning )]TJ +/TT10 1 Tf +18.3813 0 TD +0 Tw +(OR)Tj +/TT8 1 Tf +1.2002 0 TD +0.1111 Tw +(, you could do the)Tj +-31.5599 -1.2889 TD +0 Tw +(following:)Tj +/TT11 1 Tf +8 -1.7111 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(PUTPROP & CLISPTYPE \(GETPROP OR CLISPTYPE\)\))Tj +/TT11 1 Tf +-0.9868 -1 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(PUTPROP & LISPFN OR\))Tj +/TT11 1 Tf +-0.9868 -1 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(PUTPROP & BROADSCOPE T\))Tj +/TT11 1 Tf +-0.9868 -1 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(PUTPROP OR CLISPINFIX &\))Tj +/TT11 1 Tf +-0.9868 -1 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(SETQ CLISPCHARS \(CONS & CLISPCHARS\)\))Tj +/TT11 1 Tf +-0.9868 -1 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(SETQ CLISPCHARRAY \(MAKEBITTABLE CLISPCHARS\)\))Tj +ET +endstream +endobj +87 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT11 9 0 R +/TT17 26 0 R +/TT19 30 0 R +>> +/ExtGState << +/GS1 11 0 R +>> +>> +endobj +11 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +88 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +89 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +90 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +91 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +92 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +93 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBKBNA+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 94 0 R +>> +endobj +94 0 obj +<< +/Filter /FlateDecode +/Length 20104 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8JE`BBiԃ4NˡfwfGf?%Z%%Rh +FnRKD>iRi nxj3>yomrBwE]X;ohQ`r Wq`]Y|7>4;u42/|g2#* +#mʵ 10U'wmx c[ÐpLsV!x0aE(״X@X#J2.^ZQV "@u@U"ݛԡiR~Fcʃvp֒5-Wz%TB2'yR7|za#dn%&98XM`yjj(#LG XFRj0^8X[\TUFN*>GjO> + +܎8 W$ +ڼͫ9NA8_ >KB#&2ZxH|B{"0 Fτ +X1 +'qt/Av a+f!n} bqcQE Y#[;00ucjqcL><'7Ż 7)﹬Oa5cL>v0YY<}Ҳ>qL*JOAYF>C) Y`L>I$|o.;ѕR2=owL=s$@_Lgg>&uZ}4 !~XΦkeyǃkϘdh l\dcOٸڸƥ6.q+l\i*kl\mXkl\gzl| 6zql|99~"NzAфI*i0輄mC0Xg QլL !-џ;Z+*aoĕ }YRt=VᏙtQ!.oq[]`"Ur_Kq-a0mF72 +^HB3ոV[~tmQUтj(;4j|5H/VW<|EGIKSC?z,Sݤ]Eh UrL=<7b͟RSAU>_@gw3cE5[d5v̦V>Ex{QsO!&3 ?ʙ3 {Eqz5/y%ZѿT^k5AQӅ- hG]Qn-Vjpc M1i Y;LT! 6[@d:V(QoH؀=HDPaYB4F0zM׏;c.5 ?Mio0JM!gID ^,ByI^r[XZ$%.3%3~%[e~lj4b4ыlU7p7ۭy{Zsovd҆iא+7JnN-\[S-_]:"r rrK)!Uezx8הּbk.H\p/ww;r%rw8{{½3fyḳž]|˵0'\V7EN[u\c] / r7w`])|_*o=|Y7lvpbKr檉]Oez5Zl;sSvxe{=rޱp zccg6kBX{bfa߀1k':P_6Mgsώ&e Bv8Np-vH§ֵ@CRrDB 5I*kU NG 0-d+hԡۚ cﹳMRDHHh<~Y1ޙVuF%YM1UTt׈%A;\tD?>϶)/\B$w:2fQtnm4QF_N=ý  ՂF^*|g!5v,,8!21ϑ5dTă_2c5SgA="ɕ-~W7: F&\w8nVgHd7_HAr4#T|G"*n2JֶusBG>>إjO>eRsgq{ +6*.dIu'>m j ETBHkN3ʒ eؑ}mD[ćvٍJ m*MI7;$\J0ϾحːQ4U;dD:LzYLOD cܽT)C5܈C2}x޵F3ur !8 {3c y|[yK%Z"hvym炡EȸF;դ 'x܁v7 +{z\OIc]zt vc@֬AFj3xbep}>.Hnz~ϼ=-顯;n 5t/{cRiP +$sK2@Xv|@r Xc>= 茳'scAg݆#cWӫ-ոgz=Vm9߳kYY_'uź v>c, EYt_^YUۇ{O8 H\`2BsjY [r.":(uM-ɵF,)ۢ^|ݸ䎨vR!PNAJmth3o;T @hKmdHen?2ۃBځ77!:c FEH2AF;MfI2dxއn p.7ĉ8$L!/ s|RC!+KD#! +i!;dy$&]&DPB-F4 }ΦS紊.9@tB_mw-3 GiY&{l,Ȧ"6l[ʞgY={6&{b4 +|8w |2)?_|#̷=|cB|1} ~; nZm fI#KJfo+=N-%ڋ60RzoL9].W̹CY]rsF,ᒮWlLGbN}klZrԢ~QIe[ 2/ehHT6gyvsx*(ѝt mZrJPbWodWu敦m&\.j,ˣFK$۰,Zum*j+ =@-f42f9+)^Es/KWuq'h_dYmB2sKug<j -?Z#bZ[9sQ%jrYFUdMK!^Dig,1򑩞z &AKPtеZ"EZ+YE1u}̓泍xXVl z+Ƴـ=k.*ZiGc2U7!Sk@#4D}{cEm=lOt|w_a}1dZ,Mb~}?,^ ?ߧ`!3:=, OO5#ǺG+ԍ?&翠t ڧg[7KZWnKI{^צG9 +і[N~Pi )o)~ +oN%` SK_,V4{]B Zb衅GUgGww+Xɪe)MXf_+PxcE-#iZ 4t@!/Q8i,\?7h*E^(C }} FChA'/o z.&؎K+7/'S a<4~GWuHJD^U1ROH i'ϐ9@FHLS-[$rd"n-k=}!n{)KUuϽᄋwp.}, +6*m!R!V2LDmZY` Q@%PJgL5#:IHkLڱc'zec޾swG/vPuZVKԅbJ QuuکU?TOK:Јj$ͧ $m6]{J=hE<@ ̇HRā؈N1jRU,m"JU pb8@ v|!vT 8ǀPرqMё5:Т DزJ[k"SҪh Vj%bۇ/<( 0OݘJ8D(u3QP$[E_EQD +E2:qjvO-8bR%8 +^m,,O4:6űf^_eǁlH[s-$S7sH<8[46y7|O9#!k) "̆<9]߯h +Tɓ.#ʀ7!q0R]#_K yH@س,(g8!3g^z̵sޞMl<WxI C"kRm4Ġ`&[d@6Fc(PrsKt$&K7!ޑ,bSMjb*y V"#o4G]A.[H:3xQM'.@GZp7qK%űQZ~uoIin\D2D׫tk/x{C;up-6%-ޖP C$KT/ +[SεIMZOn,$SP2YҲd3|J?+X1 P]zeӐ_$ClWy^ٲε:? +:sWkYG>|u2'ssCΙePoHtE;ɛfK?ؾak?pub0ί>׹>1cuS_ +@ggC"+Ƒ>;cP4j &E>5dC&,f8 myf#;}dyIm!)pV&l<8`M m|c*8H1$8-<(w$tM{<.$q߅djd@@VB2xaeȭ^_+PQx 6!No#: 'O2O +nn!^2LDErqC%HyTRC^%ȼm${[OCi9KIM.5bR&ӉtNgH^7Jkh t mEf^Gizt)]'JdfʕJe%4*MZK9BvF@6\Q!SƐY9ų$e~6M`cSX:2Y <6 e.(呸BσYB_L7} `coXqqcAe + 3/E`f0M2$QO?&lO'c_Ҷh%&*|?.Ѷ E6,rX$kǰ_gưb:φmPzvYEgI׏5o.i;Y31ުȺGrkI٪-eС{Tέ;YĶVV%=y!vpa43'ޞn^aH +m%ml* +EB{h(;HL{u۝W:P WݚnE]}㜈s%ഊH{.2wlPwGMy{|KO]ζ] p{_;}4E 8Us=v=~vΞkWtCijb}sGL uOys^w}!S];C +UK" LG)$> +M*&Ofٴ$v&Ҭbh&14u]ZBͽ#h9Ibߞk{vd56#G|2NF&$ZZ0VZaOI@PKB1̆9C)2Snp  +X wjXz> x 8 +ϡ:*pBM>$!\Dɥf*"WO#d1&Buu+.W&4fBDGɓ( *ߓc$$#3yA=h\z9Bz%55ԤH-t]I&JD$=JG8,]ֺ̦Pm]ZĪY-}ճX[֡溏mbQy5 W;NT`]l{=abϰg>G.PRwRRE gFG 5*^Qndդ#=mNqz-ےHU(n| w/^Jk,h +۟^I mR@܊Oܨ4摒L3hL7*՝cKMS0SRE;xeh *x2IČo!z ZE;p)0}ml^_b`U5q ~$%(6>~P6Z4T +ėE Ldq$hH⹐/]a#`P, X#h Ib?p MՈbyؒ zةP oy?84ud `\ +,ԏ1XSdۣ1-H5NKlmHG:pw8e{S7/i, Y¯8mh7SޣqfP $Q;t{ Ix@:Ic G,NbxNhc, +3"ЬjƾFu/<iS,3x6#t]9#hnӿ^2%.X  r-Xhe1 dmjw(O0el1R0s[eVSa[b~u.$uDAc=;{_3[V4 >-^,hXe1XdareYUè>B), 7t4k HqðyLqk"R-2-9 ­˻tYH~86u`qiuZ@!bp5f "@| (_,,blͭ/`cvˆAKi-Q*x% ˗ˡT2QTGSUl,>"mRHgQKZ }pZtۈS 7\c[AL ,b$8p^@20œ?Yv&YG,8Xkɭ}.b(`0vk7RImb 1c,b͞="(Uҗs#ł5mXSԵEo ;8n" cA|8>Z^P]ǔJfAuS%sV}2M~qfwN׾='56N)+BF N$^=;m,By@ !륾V2if}8cPC*E7|\;iBb~7ՉOKf# ϝwS%kogm`nbɢţ(ACϢYȂ/nOVt;g}Iukoώ<|d080~y,,|Vݔ7[&,ć$N7#Zkzksm7ElrãrK=rN^EV4t-h-Tl-9u%Գ(O@E-d1sf-ԁbi&.b? i?u qFbJ-`l[VέU&z[׶=7qnHu-Y2o[~>@Ÿ)i-_&V·SE6-5Ⱎ,Y[8KU/gSi=CߗR0cs5+/{ap=hb# BP.L:XX6Y-Yh1P3>\}L}udڰ,v-:Yp& еp$bPw,XL&p}[3q[[!£܎۴.thR +TX<Ȉu0lP\-4Pd]v -l[u] u/Z'"nEU:\q#Z9/[dzJpBR_:x +x.YHb/ZP闤LkX鱅xEFxJ,xU!;3*Dl7y.d[|*Iqx5k=΀Y(Q6Paah:Gf1`,޷.#jCDSlLG+N,pE0w~o]\` +pbqP̳M S0.5AdQǀ<E\_8N]xA}$ΩYzq +urYvHW9mWsn8x& ^zDc_5̩_h%‹-0{Z㯥̞ۋM̩8evlq[ip^oZ,ޥh1Q;ɂQ3,7Xhd0bF۴P~q^q+W~?DԌc'є!j姺ydTGgFW x&,6Ua8 FYB o#VyScXPaU X#ha)"SCY@1vw v-~$ÿ*O?[~<(XXĵ Ɠx"u@6kNx]pm5xhd1j>^}fX[YN,,o}:^Q!}?:>~}NgKU\XKV7 mH]ߐiv :2e:Ǟ?2`%g}H fsٸ +Z@sͺ%՝XE 7U. |j3h>Ȫ. +;ETwl.h,4seE:(lł X-@!!ojB}Π` ecx'UkSR-ݔ|K3jT)̷0B ]˲ު-3sĨ&Amc>7t<[ެMY<>z585k[n:;mhT~DʶYAM~D"]Fb(w" 6 6%G"%mՓG]Xr~I};y^,lEFʖF,سP+/s' -`mG Ccn>4C̛B*̖b+6YnAz}}D ,lr6+`{KkVAd!ԭCyag],R"H ,u-(h-Xf"da/0 ݋~wmbS^G%>ip^,4ߴinr]gZtwZ18kM8OB,ֲ"~ xނu+16>ƲȾ2-{w-PF1qKWӸ{]R~j8<vE1.di)ږ#Z̮IBDGPXiTL1x"]>V14k#+sYp;37̽w]O7t?=I?WiD†,6c Y=[ֳMl;kc *kgH{뼙o~_.4*=%ITBZ$5JoI#ye YC"(ˋrG>!S T P~*S\eJyW@فi^rD9U>W\R:UQ5}U A`5CTG( z-x:??`Ub0$"*QhJ+Ee*."`"F0I$@UF$J {G*~FcGX!D0a? J g0>G @ed9,R~R 䥡<wXh~0r3<"f=bSP-|¥p|Gb0RaFC.(w#ZBЧ@N< oojCA|bc,^9 v}maѓmMgn?]/[YpT ^;tJк U+>vTl\iU+ˮޮY_hX>& %mybc)^%zȕ9ΔWf\J߸yd_3ZZJ+<޽}`~<;;ύZW6\LA~u]Ue'Ʋbinٻ:Urۭ҂_x Y>̫8".OD{oYߐW}D Zs~ubf4䦼lnY騸#_{n X -NT%WZ]NXjXh4!bEò;kWmVncqu˧?϶<fV&kjČibSy֕oЌCX{t{nYq&WLo| odj++ypDEdLq%%N'Fw7d)+0. 3- ]q~?e/;lȿ{ᣓhE E qj<$SkA0O0 dHȃqdxǥr Plx^*{643a8y8pڡ3"%q$$}N$I.K&Id2)"H))#/٤,,$dw 7di"Z7";^r'3 /i'_SB%<©F0SL4Nx]NL|kRk,rQ?Fwa.yS3z^Wmh' 0昡,H~,1 gIq6=2B>T>E)$$)Ch1*1!,.aYGU=xU@k X* +|IWҵJ^ +ӕs}O$KbbD)|+6E8Gr>eIhjFE^J.ǒTOJ8{?ThS%)qfSXGAv8#dO~?_3lJṴH16BhH`-ԪDռn6R>Սӯ()Nti\w%.0%pu!BYLG@NfslvWŢ9mX˅gsO J<^o@O-hȒr]K0$X,8OXdXŕ* OI[:>Q+2{~~(k mO9n-P)g@1P&߉ZK3z:chA)l G%;oF\Y:T q m!ePBbI }p<7[;r; 7vcYk? ȵǻ|n_c~www~ lpf k/A%x_W 䅾zjtWr`3_PWntoBwsb9˿8r|r/,bݏ^W?2丼=ޅ'4}J;n:M_ {={KK{in뮓1Q@,1S4:'ȶlMztWv0l'z*XSkE7:H{s}+*b5QBp;6!Kdlqu)eCeLjX<cF.EBUp+k9{,GXGL`Kӭ4;5_X9rg;Sb$E:LnWZ{rO=L2cט&q6w0rZMQ,؟I¢Uou=w}. +u8)g+q'D(Vrܶ5דVKcXr}DJdĵzFr*)JV*Sjm-y +;UHB :|-a8μ7鎂&WNgDd⥉Ѥ S*L#;m[A:bЙbN([Ϗ_Ywpw~Eueq~V +DzZ@L+4hH `PG$ ( :Dq_&Rаb2Q#*&.h\b 6s.bU2_o;{=<0`0vz~ U[ǖ|R)Za~on>2LauR-5iv[Y1mB5FikO/^^%5ԖmSTxn6\]g +Jxݹr0;gf\1!2o<|ⰱnFFZb鵛nطfEo xڥtCi'kr2fŝW|4#sxjm9-{F_uw.XvӮ% +.,;<U+㢂Ttв#s5rn];3 FHήS/7A4okq+m~\yk!i%_W䁦Н⋛f$}qkSs.mU.?xAB7 UVr"{d\($n|q2X$WIO(¦q)/yB'94](gH:n(:xQ':@kiw`t5D14Ƒ>|AD_0Lc~ +ɝorɡ]))d%YR2CT%6'1#l=lrށ|nI Y!oux~ ^ ~~ ^'[D>;yTF9,X̯ O'/1@>0X+ +:HQ<\{-ʩܑ2*嫻ƺR\Kh ZHޓ +'퇅bEB\ K{m=)zC,FB}~FBNXχ&_ EN'42mG\23?5iZo-7>s4ua-J(];YeXӏQ'\W?ؖ@\d;80e2e|Q#b5pIJK2i[UP"3pNL*ZOPk~GvV:4u#Sc-S:rh)42ͦdl$'G~2V?cK뒰I4mtp8N']x8Ac`48+5`8| F#گH7y= r8h0C ĭesBA?4L/2 "KNL;^&=G2y4=!;' vљEBFM¢(dXA Mg@{RS_WpF(AbK%?gL}5?;)⧚-IҨE+oSĮ$vc5;}4G;ռXPQءZۑ[qҲ;q]=]9iysuOt2ugrdًo~zqsޜt}/'k^pe?' d9qHV ,?RDt1iAz B:NćQ֜ࣛ$X7]ؤajHvJMkj^! 5j\.~z}Rm7O%9EkSr^PXE֨U$;>9`QKjµT;8660qmMmM&(iB<}Y*h~zUIn&N6\yÆVQZ#ɵv4j2\6Zm]Va0P݂ܴXhlM,HUWX'Tq + RF1iD˄ٙSaSDڞ5Wcle,g5,g m6MjҬ_H>K#N`!8|/Hei +6~ޯ),OPيc"$޲{e gS#,g϶Ukr +endstream +endobj +95 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +96 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +97 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +98 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 88 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 119 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +556 0 556 0 0 0 0 0 0 0 333 0 0 0 0 0 +0 0 0 722 722 0 611 0 0 278 0 0 611 833 0 778 +667 0 0 667 611 722 667 944 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 0 0 611 278 0 0 278 0 611 611 +611 0 389 556 333 611 556 778 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 89 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [278 0 355 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 667 0 0 0 0 278 0 278 0 0 +0 556 556 0 0 556 0 0 0 222 0 0 222 0 0 556 +0 0 333 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 90 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 278 371 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 0 500 0 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 91 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 +600 600 600 600 0 600 0 0 600 600 600 0 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 +0 600 0 600 0 600 600 0 600 600 0 0 600 0 0 600 +600 0 600 0 600 0 0 600 0 0 0 0 0 0 600 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 92 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBKBNA+Symbol +/Encoding /Identity-H +/DescendantFonts [ 99 0 R ] +/ToUnicode 100 0 R +>> +endobj +99 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBKBNA+Symbol +/FontDescriptor 93 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 0 278 778 556 444 +500 0 389 389 333 556 500 722 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 95 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 250 0 606 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 96 0 R +>> +endobj +26 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 35 +/LastChar 146 +/Widths [600 0 0 0 0 0 0 600 600 0 0 600 600 0 0 0 +0 0 0 0 0 0 0 600 0 600 600 600 0 0 600 600 +600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 +600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 +] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 97 0 R +>> +endobj +30 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 89 +/Widths [600 600 0 0 600 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 98 0 R +>> +endobj +100 0 obj +<< +/Filter /FlateDecode +/Length 226 +>> +stream +HTP=o [uCTXK~IsH .F~6?O}E;`Gƍ,g@*ph>L\3p7R>{| uRqApblҋYUǎ{BP czt&cL:!NBOi発.2~|fE{T.uǛ-V5nbc? m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 15 0 R +/Contents 14 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 39 0 R +/Contents 38 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 12 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +43 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 45 0 R +/Contents 44 0 R +>> +endobj +48 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 50 0 R +/Contents 49 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +66 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 68 0 R +/Contents 67 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +72 0 obj +<< +/Type /Page +/Parent 47 0 R +/Resources 74 0 R +/Contents 73 0 R +>> +endobj +75 0 obj +<< +/Type /Page +/Parent 78 0 R +/Resources 77 0 R +/Contents 76 0 R +>> +endobj +79 0 obj +<< +/Type /Page +/Parent 78 0 R +/Resources 81 0 R +/Contents 80 0 R +>> +endobj +82 0 obj +<< +/Type /Page +/Parent 78 0 R +/Resources 84 0 R +/Contents 83 0 R +>> +endobj +85 0 obj +<< +/Type /Page +/Parent 78 0 R +/Resources 87 0 R +/Contents 86 0 R +>> +endobj +101 0 obj +<< +/S /D +>> +endobj +102 0 obj +<< +/Nums [0 101 0 R ] +>> +endobj +12 0 obj +<< +/Type /Pages +/Kids [1 0 R 13 0 R 17 0 R 20 0 R 23 0 R 27 0 R 31 0 R 34 0 R 37 0 R 40 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [43 0 R 48 0 R 51 0 R 54 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R 72 0 R] +/Count 10 +/Parent 46 0 R +>> +endobj +78 0 obj +<< +/Type /Pages +/Kids [75 0 R 79 0 R 82 0 R 85 0 R] +/Count 4 +/Parent 46 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [12 0 R 47 0 R 78 0 R ] +/Count 24 +/MediaBox [0 0 612 792] +>> +endobj +103 0 obj +<< +/CreationDate (D:20210202102703-06'00') +/ModDate (D:20210202102703-06'00') +/Producer (Apple pstopdf) +>> +endobj +104 0 obj +<< +/Type /Catalog +/Pages 46 0 R +/PageLabels 102 0 R +>> +endobj +xref +0 105 +0000000000 65535 f +0000213160 00000 n +0000000016 00000 n +0000005417 00000 n +0000208810 00000 n +0000209021 00000 n +0000209443 00000 n +0000209838 00000 n +0000210381 00000 n +0000210916 00000 n +0000211271 00000 n +0000186485 00000 n +0000215244 00000 n +0000213241 00000 n +0000005583 00000 n +0000012980 00000 n +0000211669 00000 n +0000213325 00000 n +0000013137 00000 n +0000021185 00000 n +0000213409 00000 n +0000021341 00000 n +0000028088 00000 n +0000213493 00000 n +0000028256 00000 n +0000037015 00000 n +0000212081 00000 n +0000213577 00000 n +0000037195 00000 n +0000045328 00000 n +0000212546 00000 n +0000213661 00000 n +0000045510 00000 n +0000054279 00000 n +0000213745 00000 n +0000054485 00000 n +0000065156 00000 n +0000213829 00000 n +0000065338 00000 n +0000071794 00000 n +0000213913 00000 n +0000071987 00000 n +0000079142 00000 n +0000213997 00000 n +0000079325 00000 n +0000087083 00000 n +0000215614 00000 n +0000215381 00000 n +0000214081 00000 n +0000087251 00000 n +0000094169 00000 n +0000214165 00000 n +0000094300 00000 n +0000102264 00000 n +0000214249 00000 n +0000102444 00000 n +0000110282 00000 n +0000214333 00000 n +0000110450 00000 n +0000118380 00000 n +0000214417 00000 n +0000118524 00000 n +0000126871 00000 n +0000214501 00000 n +0000127054 00000 n +0000133280 00000 n +0000214585 00000 n +0000133450 00000 n +0000141910 00000 n +0000214669 00000 n +0000142116 00000 n +0000150244 00000 n +0000214753 00000 n +0000150427 00000 n +0000157585 00000 n +0000214837 00000 n +0000157791 00000 n +0000164609 00000 n +0000215519 00000 n +0000214921 00000 n +0000164790 00000 n +0000172274 00000 n +0000215005 00000 n +0000172468 00000 n +0000181679 00000 n +0000215089 00000 n +0000181861 00000 n +0000186316 00000 n +0000186626 00000 n +0000186823 00000 n +0000187029 00000 n +0000187224 00000 n +0000187424 00000 n +0000187615 00000 n +0000187805 00000 n +0000207999 00000 n +0000208202 00000 n +0000208407 00000 n +0000208609 00000 n +0000211059 00000 n +0000212860 00000 n +0000215173 00000 n +0000215202 00000 n +0000215713 00000 n +0000215837 00000 n +trailer +<< +/Size 105 +/Root 104 0 R +/Info 103 0 R +/ID [<26bafc0e6a81375a6e1e26aee7e2035a><26bafc0e6a81375a6e1e26aee7e2035a>] +>> +startxref +215909 +%%EOF diff --git a/docs/medley-irm/21-PERFORMANCE.TEDIT b/docs/medley-irm/21-PERFORMANCE.TEDIT new file mode 100644 index 00000000..910113d2 --- /dev/null +++ b/docs/medley-irm/21-PERFORMANCE.TEDIT @@ -0,0 +1,57 @@ +INTERLISP-D REFERENCE MANUAL PERFORMANCE ISSUES "22"21. PERFORMANCE ISSUES 2 This chapter describes a number of areas that often contribute to performance problems in Medley programs. Many performance problems can be improved by optimizing the use of storage, since allocating and reclaiming large amounts of storage is expensive. Another tactic that can sometimes yield performance improvements is to change the use of variable bindings on the stack to reduce variable lookup time. There are a number of tools that can be used to determine which parts of a computation cause performance bottlenecks. Storage Allocation and Garbage Collection 1 As an Medley application program runs, it creates data structures (allocated out of free storage space), manipulates them, and then discards them. If there were no way to reclaim this space, over time the Medley memory would fill up, and the computation would come to a halt. Actually, long before this could happen the system would probably become intolerably slow, due to data fragmentation, which occurs when the data currently in use are spread over many virtual memory pages, so that most of the computer time must be spent swapping disk pages into physical memory. The problem of fragmentation will occur in any situation where the virtual memory is significantly larger than the real physical memory. To reduce swapping, you want to keep the "working set" (the set of pages containing actively referenced data) as small as possible. You can write programs that don't generate much garbage data, or which recycle data, but such programs tend to be complex and hard to debug. Spending effort writing such programs defeats the whole point of using a system with automatic storage allocation. An important part of any Lisp implementation is the garbage collector that finds discarded data and reclaims its space. There are several well-known approaches to garbage collection. One method is the traditional mark-and-sweep, which identifies garbage data by marking all accessible data structures, and then sweeping through the data spaces to find all unmarked objects (i.e., not referenced by any other object). This method is guaranteed to reclaim all garbage, but it takes time proportional to the number of allocated objects, which may be very large. Also, the time that a mark-and-sweep garbage collection takes is independent of the amount of garbage collected; it is possible to sweep through the whole virtual memory, and only recover a small amount of garbage. For interactive applications, it is not acceptable to have long interruptions in a computation for to garbage collect. Medley solves this problem by using a reference-counting garbage collector. With this scheme, there is a table containing counts of how many times each object is referenced. This table is updated as pointers are created and discarded, incurring a small overhead distributed over the computation as a whole. (Note: References from the stack are not counted, but are handled separately at "sweep" time; thus the vast majority of data manipulations do not cause updates to this table.) At opportune moments, the garbage collector scans this table, and reclaims all objects that are no longer accessible (have a reference count of zero). The pause while objects are reclaimed is only the time for scanning the reference count tables (small) plus time proportional to the amount of garbage that has to be collected (typically less than a second). Opportune times occur when a certain number of cells have been allocated or when the system has been waiting for you to type something for long enough. The frequency of garbage collection is controlled by the functions and variables described below. For the best system performance, it is desirable to adjust these parameters for frequent, short garbage collections, which will not interrupt interactive applications for very long, and which will have the added benefit of reducing data fragmentation, keeping the working set small. One problem with the Medley garbage collector is that not all garbage is guaranteed to be collected. Circular data structures, which point to themselves directly or indirectly, are never reclaimed, since their reference counts are always at least one. With time, this unreclaimable garbage may increase the working set to unacceptable levels. Some users have worked with the same Medley virtual memory for a very long time, but it is a good idea to occasionally save all of your functions in files, reinitialize Medley, and rebuild your system. Many users end their working day by issuing a command to rebuild their system and then leaving the machine to perform this task in their absence. If the system seems to be spending too much time swapping (an indication of fragmented working set), this procedure is definitely recommended. Another limitation of the reference-counting garbage collector is that the table in which reference counts are maintained is of fixed size. For typical Lisp objects that are pointed to from exactly one place (e.g., the individual conses in a list), no burden is placed on this table, since objects whose reference count is 1 are not explicitly represented in the table. However, large, "rich" data structures, with many interconnections, backward links, cross references, etc, can contribute many entries to the reference count table. For example, if you created a data structure that functioned as a doubly-linked list, such a structure would contribute an entry (reference count 2) for each element. When the reference count table fills up, the garbage collector can no longer maintain consistent reference counts, so it stops doing so altogether. At this point, a window appears on the screen with the following message, and the debugger is entered: Internal garbage collector(GARBAGE% COLLECTOR NIL garbage% collector NIL (4) NIL) tables have overflowed, due to too many pointers with reference count greater than 1. *** The garbage collector is now disabled. *** Save your work and reload as soon as possible. [This message is slightly misleading, in that it should say "count not equal to 1". In the current implementation, the garbage collection of a large pointer array whose elements are not otherwise pointed to can place a special burden on the table, as each element's reference count simultaneously drops to zero and is thus added to the reference count table for the short period before the element is itself reclaimed.] If you exit the debugger window (e.g., with the RETURN command), your computation can proceed; however, the garbage collector is no longer operating. Thus, your virtual memory will become cluttered with objects no longer accessible, and if you continue for long enough in the same virtual memory image you will eventually fill up the virtual memory backing store and grind to a halt. Garbage collection in Medley is controlled by the following functions and variables: (RECLAIM(RECLAIM (Function) NIL NIL ("22") 2)) [Function] Initiates a garbage collection. Returns 0. (RECLAIMMIN(RECLAIMMIN (Function) NIL NIL ("22") 2) N) [Function] Sets the frequency of garbage collection. Interlisp keeps track of the number of cells of any type that have been allocated; when it reaches a given number, a garbage collection occurs. If N is non-NIL, this number is set to N. Returns the current setting of the number. RECLAIMWAIT(RECLAIMWAIT (Variable) NIL NIL ("22") 2) [Variable] Medley will invoke a RECLAIM if the system is idle and waiting for your input for RECLAIMWAIT seconds (currently set for 4 seconds). (GCGAG(GCGAG (Function) NIL NIL ("22") 2) MESSAGE) [Function] Sets the behavior that occurs while a garbage collection is taking place. If MESSAGE is non-NIL, the cursor is complemented during a RECLAIM; if MESSAGE = NIL, nothing happens. The value of GCGAG is its previous setting. (GCTRP(GCGAG (Function) NIL NIL ("22") 2)) [Function] Returns the number of cells until the next garbage collection, according to the RECLAIMMIN number. The amount of storage allocated to different data types, how much of that storage is in use, and the amount of data fragmentation can be determined using the following function: (STORAGE(STORAGE (Function) NIL NIL ("22") 2) TYPES PAGETHRESHOLD) [Function] STORAGE prints out a summary, for each data type, of the amount of space allocated to the data type, and how much of that space is currently in use. If TYPES is non-NIL, STORAGE only lists statistics for the specified types. TYPES can be a symbol or a list of types. If PAGETHRESHOLD is non-NIL, then STORAGE only lists statistics for types that have at least PAGETHRESHOLD pages allocated to them. STORAGE prints out a table with the column headings Type, Assigned, Free Items, In use, and Total alloc. Type is the name of the data type. Assigned is how much of your virtual memory is set aside for items of this type. Currently, memory is allocated in quanta of two pages (1024 bytes). The numbers under Assigned show the number of pages and the total number of items that fit on those pages. Free Items shows how many items are available to be allocated (using the create construct, Chapter 8); these constitute the "free list" for that data type. In use shows how many items of this type are currently in use, i.e., have pointers to them and hence have not been garbage collected. If this number is higher than your program seems to warrant, you may want to look for storage leaks. The sum of Free Items and In use is always the same as the total Assigned items. Total alloc is the total number of items of this type that have ever been allocated (see BOXCOUNT, in the Performance Measuring section below). Note: The information about the number of items of type LISTP is only approximate, because list cells are allocated in a special way that precludes easy computation of the number of items per page. Note: When a data type is redeclared, the data type name is reassigned. Pages which were assigned to instances of the old data type are labeled **DEALLOC**. At the end of the table printout, STORAGE prints a "Data Spaces Summary" listing the number of pages allocated to the major data areas in the virtual address space: the space for fixed-length items (including datatypes), the space for variable-length items, and the space for symbols. Variable-length data types such as arrays have fixed-length "headers," which is why they also appear in the printout of fixed-length data types. Thus, the line printed for the BITMAP data type says how many bitmaps have been allocated, but the "assigned pages" column counts only the headers, not the space used by the variable-length part of the bitmap. This summary also lists "Remaining Pages" in relation to the largest possible virtual memory, not the size of the virtual memory backing file in use. This file may fill up, causing a STORAGE FULL error, long before the "Remaining Pages" numbers reach zero. STORAGE also prints out information about the sizes of the entries on the variable-length data free list. The block sizes are broken down by the value of the variable STORAGE.ARRAYSIZES, initially (4 16 64 256 1024 4096 16384 NIL), which yields a printout of the form: variable-datum free list: le 4 26 items; 104 cells. le 16 72 items; 783 cells. le 64 36 items; 964 cells. le 256 28 items; 3155 cells. le 1024 3 items; 1175 cells. le 4096 5 items; 8303 cells. le 16384 3 items; 17067 cells. others 1 items; 17559 cells. This information can be useful in determining if the variable-length data space is fragmented. If most of the free space is composed of small items, then the allocator may not be able to find room for large items, and will extend the variable datum space. If this is extended too much, this could cause an ARRAYS FULL error, even if there is a lot of space left in little chunks. (STORAGE.LEFT(STORAGE.LEFT (Function) NIL NIL ("22") 3)) [Function] Provides a programmatic way of determining how much storage is left in the major data areas in the virtual address space. Returns a list of the form (MDSFREE MDSFRAC 8MBFRAC ATOMFREE ATOMFRAC), where the elements are interpreted as follows: MDSFREE The number of free pages left in the main data space (which includes both fixed-length and variable-length data types). MDSFRAC The fraction of the total possible main data space that is free. 8MBFRAC The fraction of the total main data space that is free, relative to eight megabytes. This number is useful when using Medley on some early computers where the hardware limits the address space to eight megabytes. The function 32MBADDRESSABLE returns non-NIL if the currently running Medley system can use the full 32 megabyte address space. ATOMFREE The number of free pages left in the symbol space. ATOMFRAC The fraction of the total symbol space that is free. Note: Another important space resource is the amount of the virtual memory backing file in use (see VMEMSIZE, Chapter 12). The system will crash if the virtual memory file is full, even if the address space is not exhausted. Variable Bindings 1 Different implementations of Lisp use different methods of accessing free variables. The binding of variables occurs when a function or a PROG is entered. For example, if the function FOO has the definition (LAMBDA (A B) BODY), the variables A and B are bound so that any reference to A or B from BODY or any function called from BODY will refer to the arguments to the function FOO and not to the value of A or B from a higher level function. All variable names (symbols) have a top level value cell which is used if the variable has not been bound in any function. In discussions of variable access, it is useful to distinguish between three types of variable access: local, special and global. Local variable access is the use of a variable that is bound within the function from which it is used. Special variable access is the use of a variable that is bound by another function. Global variable access is the use of a variable that has not been bound in any function. We will often refer to a variable all of whose accesses are local as a "local variable." Similarly, a variable all of whose accesses are global we call a "global variable." In a deep bound system, a variable is bound by saving on the stack the variable's name together with a value cell which contains that variable's new value. When a variable is accessed, its value is found by searching the stack for the most recent binding (occurrence) and retrieving the value stored there. If the variable is not found on the stack, the variable's top level value cell is used. In a shallow bound system, a variable is bound by saving on the stack the variable name and the variable's old value and putting the new value in the variable's top level value cell. When a variable is accessed, its value is always found in its top level value cell. The deep binding scheme has one disadvantage: the amount of cpu time required to fetch the value of a variable depends on the stack distance between its use and its binding. The compiler can determine local variable accesses and compiles them as fetches directly from the stack. Thus this computation cost only arises in the use of variable not bound in the local frame ("free" variables). The process of finding the value of a free variable is called free variable lookup. In a shallow bound system, the amount of cpu time required to fetch the value of a variable is constant regardless of whether the variable is local, special or global. The disadvantages of this scheme are that the actual binding of a variable takes longer (thus slowing down function call), the cells that contain the current in use values are spread throughout the space of all symbol value cells (thus increasing the working set size of functions) and context switching between processes requires unwinding and rewinding the stack (thus effectively prohibiting the use of context switching for many applications). Medley uses deep binding, because of the working set considerations and the speed of context switching. The free variable lookup routine is microcoded, thus greatly reducing the search time. In benchmarks, the largest percentage of free variable lookup time was 20 percent of the total ellapsed time; the normal time was between 5 and 10 percent. Because of the deep binding, you can sometimes significantly improve performance by declaring global variables. If a variable is declared global, the compiler will compile an access to that variable as a retrieval of its top level value, completely bypassing a stack search. This should be done only for variables that are never bound in functions, such as global databases and flags. Global variable declarations should be done using the GLOBALVARS file manager command (Chapter 17). Its form is (GLOBALVARS VAR1 ... VARN). Another way of improving performance is to declare variables as local within a function. Normally, all variables bound within a function have their names put on the stack, and these names are scanned during free variable lookup. If a variable is declared to be local within a function, its name is not put on the stack, so it is not scanned during free variable lookup, which may increase the speed of lookups. The compiler can also make some other optimizations if a variable is known to be local to a function. A variable may be declared as local within a function by including the form (DECLARE (LOCALVARS VAR1 ... VARN)) following the argument list in the definition of the function. Local variable declarations only effect the compilation of a function. Interpreted functions put all of their variable names on the stack, regardless of any declarations. Performance Measuring 1 This section describes functions that gather and display statistics about a computation, such as as the elapsed time, and the number of data objects of different types allocated. TIMEALL and TIME gather statistics on the evaluation of a specified form. BREAKDOWN gathers statistics on individual functions called during a computation. These functions can be used to determine which parts of a computation are consuming the most resources (time, storage, etc.), and could most profitably be improved. (TIMEALL(TIMEALL (Function) NIL NIL ("22") 6) TIMEFORM NUMBEROFTIMES TIMEWHAT INTERPFLG) [NLambda Function] Evaluates the form TIMEFORM and prints statistics on time spent in various categories (elapsed, keyboard wait, swapping time, gc) and data type allocation. For more accurate measurement on small computations, NUMBEROFTIMES may be specified (its default is 1) to cause TIMEFORM to be executed NUMBEROFTIMES times. To improve the accuracy of timing open-coded operations in this case, TIMEALL compiles a form to execute TIMEFORM NUMBEROFTIMES times (unless INTERPFLG is non-NIL), and then times the execution of the compiled form. Note: If TIMEALL is called with NUMBEROFTIMES > 1, the dummy form is compiled with compiler optimizations on. This means that it is not meaningful to use TIMEALL with very simple forms that are optimized out by the compiler. For example, (TIMEALL '(IPLUS 2 3) 1000) will time a compiled function which simply returns the number 5, since (IPLUS 2 3) is optimized to the integer 5. TIMEWHAT restricts the statistics to specific categories. It can be an atom or list of datatypes to monitor, and/or the atom TIME to monitor time spent. Note that ordinarily, TIMEALL monitors all time and datatype usage, so this argument is rarely needed. TIMEALL returns the value of the last evaluation of TIMEFORM. (TIME(TIME (Function) NIL NIL ("22") 6) TIMEX TIMEN TIMETYP) [NLambda Function] TIME evaluates the form TIMEX, and prints out the number of CONS cells allocated and computation time. Garbage collection time is subtracted out. This function has been largely replaced by TIMEALL. If TIMEN is greater than 1, TIMEX is executed TIMEN times, and TIME prints out (number of conses)/TIMEN, and (computation time)/TIMEN. If TIMEN = NIL, it defaults to 1. This is useful for more accurate measurement on small computations. If TIMETYP is 0, TIME measures and prints total real time as well as computation time. If TIMETYP = 3, TIME measures and prints garbage collection time as well as computation time. If TIMETYP = T, TIME measures and prints the number of pagefaults. TIME returns the value of the last evaluation of TIMEX. (BOXCOUNT(BOXCOUNT (Function) NIL NIL ("22") 6) TYPE N) [Function] Returns the number of data objects of type TYPE allocated since this Interlisp system was created. TYPE can be any data type name (see TYPENAME, Chapter 8). If TYPE is NIL, it defaults to FIXP. If N is non-NIL, the corresponding counter is reset to N. (CONSCOUNT(CONSCOUNT (Function) NIL NIL ("22") 6) N) [Function] Returns the number of CONS cells allocated since this Interlisp system was created. If N is non-NIL, resets the counter to N. Equivalent to (BOXCOUNT 'LISTP N). (PAGEFAULTS(PAGEFAULTS (Function) NIL NIL ("22") 6)) [Function] Returns the number of page faults since this Interlisp system was created. BREAKDOWN 1 TIMEALL collects statistics for whole computations. BREAKDOWN is available to analyze the breakdown of computation time (or any other measureable quantity) function by function. (BREAKDOWN(BREAKDOWN (Function) NIL NIL ("22") 7) FN1 ... FNN) [NLambda NoSpread Function] You call BREAKDOWN giving it a list of function names (unevaluated). These functions are modified so that they keep track of various statistics. To remove functions from those being monitored, simply UNBREAK (Chapter 15) the functions, thereby restoring them to their original state. To add functions, call BREAKDOWN on the new functions. This will not reset the counters for any functions not on the new list. However (BREAKDOWN) will zero the counters of all functions being monitored. The procedure used for measuring is such that if one function calls other and both are "broken down", then the time (or whatever quantity is being measured) spent in the inner function is not charged to the outer function as well. BREAKDOWN will not give accurate results if a function being measured is not returned from normally, e.g., a lower RETFROM (or ERROR) bypasses it. In this case, all of the time (or whatever quantity is being measured) between the time that function is entered and the time the next function being measured is entered will be charged to the first function. (BRKDWNRESULTS(BRKDWNRESULTS (Function) NIL NIL ("22") 7) RETURNVALUESFLG) [Function] BRKDWNRESULTS prints the analysis of the statistics requested as well as the number of calls to each function. If RETURNVALUESFLG is non-NIL, BRKDWNRESULTS will not to print the results, but instead return them in the form of a list of elements of the form (FNNAME #CALLS VALUE). Example: (BREAKDOWN SUPERPRINT SUBPRINT COMMENT1) (SUPERPRINT SUBPRINT COMMENT1) (PRETTYDEF '(SUPERPRINT) 'FOO) FOO.;3 (BRKDWNRESULTS) FUNCTIONS TIME #CALLS PER CALL % SUPERPRINT 8.261 365 0.023 20 SUBPRINT 31.910 141 0.226 76 COMMENT1 1.612 8 0.201 4 TOTAL 41.783 514 0.081 NIL (BRKDWNRESULTS T) ((SUPERPRINT 365 8261) (SUBPRINT 141 31910) (COMMENT1 8 1612)) BREAKDOWN can be used to measure other statistics, by setting the following variables: BRKDWNTYPE(BRKDWNTYPE (Variable) NIL NIL ("22") 7) [Variable] To use BREAKDOWN to measure other statistics, before calling BREAKDOWN, set the variable BRKDWNTYPE to the quantity of interest, e.g., TIME, CONSES, etc, or a list of such quantities. Whenever BREAKDOWN is called with BRKDWNTYPE not NIL, BREAKDOWN performs the necessary changes to its internal state to conform to the new analysis. In particular, if this is the first time an analysis is being run with a particular statistic, a measuring function will be defined, and the compiler will be called to compile it. The functions being broken down will be redefined to call this measuring function. When BREAKDOWN is through initializing, it sets BRKDWNTYPE back to NIL. Subsequent calls to BREAKDOWN will measure the new statistic until BRKDWNTYPE is again set and a new BREAKDOWN performed. BRKDWNTYPES(BRKDWNTYPES (Variable) NIL NIL ("22") 8) [Variable] The list BRKDWNTYPES contains the information used to analyze new statistics. Each entry on BRKDWNTYPES should be of the form (TYPE FORM FUNCTION), where TYPE is a statistic name (as would appear in BRKDWNTYPE), FORM computes the statistic, and FUNCTION (optional) converts the value of form to some more interesting quantity. For example, (TIME (CLOCK 2) (LAMBDA (X) (FQUOTIENT X 1000))) measures computation time and reports the result in seconds instead of milliseconds. BRKDWNTYPES currently contains entries for TIME, CONSES, PAGEFAULTS, BOXES, and FBOXES. Example: (SETQ BRKDWNTYPE '(TIME CONSES)) (TIME CONSES) (BREAKDOWN MATCH CONSTRUCT) (MATCH CONSTRUCT) (FLIP '(A B C D E F G H C Z) '(.. $1 .. #2 ..) '(.. #3 ..)) (A B D E F G H Z) (BRKDWNRESULTS) FUNCTIONS TIME #CALLS PER CALL % MATCH 0.036 1 0.036 54 CONSTRUCT 0.031 1 0.031 46 TOTAL 0.067 2 0.033 FUNCTIONS CONSES #CALLS PER CALL % MATCH 32 1 32.000 40 CONSTRUCT 49 1 49.000 60 TOTAL 81 2 40.500 NIL Occasionally, a function being analyzed is sufficiently fast that the overhead involved in measuring it obscures the actual time spent in the function. If you were using TIME, you would specify a value for TIMEN greater than 1 to give greater accuracy. A similar option is available for BREAKDOWN. You can specify that a function(s) be executed a multiple number of times for each measurement, and the average value reported, by including a number in the list of functions given to BREAKDOWN. For example, BREAKDOWN(EDITCOM EDIT4F 10 EDIT4E EQP) means normal breakdown for EDITCOM and EDIT4F but executes (the body of) EDIT4E and EQP 10 times each time they are called. Of course, the functions so measured must not cause any harmful side effects, since they are executed more than once for each call. The printout from BRKDWNRESULTS will look the same as though each function were run only once, except that the measurement will be more accurate. Another way of obtaining more accurate measurement is to expand the call to the measuring function in-line. If the value of BRKDWNCOMPFLG is non-NIL (initially NIL), then whenever a function is broken-down, it will be redefined to call the measuring function, and then recompiled. The measuring function is expanded in-line via an appropriate macro. In addition, whenever BRKDWNTYPE is reset, the compiler is called for all functions for which BRKDWNCOMPFLG was set at the time they were originally broken-down, i.e. the setting of the flag at the time a function is broken-down determines whether the call to the measuring code is compiled in-line. GAINSPACE 1 If you have large programs and databases, you may sometimes find yourself in a situation where you need to obtain more space, and are willing to pay the price of eliminating some or all of the context information that the various user-assistance facilities such as the programmer's assistant, file package, CLISP, etc., have accumulated during the course of his session. The function GAINSPACE provides an easy way to selectively throw away accumulated data: (GAINSPACE(GAINSPACE (Function) NIL NIL ("22") 9)) [Function] Prints a list of deletable objects, allowing you to specify at each point what should be discarded and what should be retained. For example: (GAINSPACE) purge history lists ? Yes purge everything, or just the properties, e.g., SIDE, LISPXPRINT, etc. ? just the properties discard definitions on property lists ? Yes discard old values of variables ? Yes erase properties ? No erase CLISP translations? Yes GAINSPACE is driven by the list GAINSPACEFORMS. Each element on GAINSPACEFORMS is of the form (PRECHECK MESSAGE FORM KEYLST). If PRECHECK, when evaluated, returns NIL, GAINSPACE skips to the next entry. For example, you will not be asked whether or not to purge the history list if it is not enabled. Otherwise, ASKUSER (Chapter 26) is called with the indicated MESSAGE and the (optional) KEYLST. If you respond No, i.e., ASKUSER returns N, GAINSPACE skips to the next entry. Otherwise, FORM is evaluated with the variable RESPONSE bound to the value of ASKUSER. In the above example, the FORM for the "purge history lists" question calls ASKUSER to ask "purge everything, ..." only if you had responded Yes. If you had responded with Everything, the second question would not have been asked. The "erase properties" question is driven by a list SMASHPROPSMENU. Each element on this list is of the form (MESSAGE . PROPS). You are prompted with MESSAGE (by ASKUSER), and if your response is Yes, PROPS is added to the list SMASHPROPS. The "discard definitions on property lists" and "discard old values of variables" questions also add to SMASHPROPS. You will not be prompted for any entry on SMASHPROPSMENU for which all of the corresponding properties are already on SMASHPROPS. SMASHPROPS is initially set to the value of SMASHPROPSLST. This permits you to specify in advance those properties which you always want discarded, and not be asked about them subsequently. After finishing all the entries on GAINSPACEFORMS, GAINSPACE checks to see if the value of SMASHPROPS is non-NIL, and if so, does a MAPATOMS, i.e., looks at every atom in the system, and erases the indicated properties. You can change or add new entries to GAINSPACEFORMS or SMASHPROPSMENU, so that GAINSPACE can also be used to purge structures that your programs have accumulated. Using Data Types Instead of Records 1 If a program uses large numbers of large data structures, there are several advantages to representing them as user data types rather than as list structures. The primary advantage is increased speed: accessing and setting the fields of a data type can be significantly faster than walking through a list with repeated CARs and CDRs. Also, Compiled code for referencing data types is usually smaller. Finally, by reducing the number of objects created (one object against many list cells), this can reduce the expense of garbage collection. User data types are declared by using the DATATYPE record type (Chapter 8). If a list structure has been defined using the RECORD record type (Chapter 8), and all accessing operations are written using the record package's fetch, replace, and create operations, changing from RECORDs to DATATYPEs only requires editing the record declaration (using EDITREC, Chapter 8) to replace declaration type RECORD by DATATYPE, and recompiling. Note: There are some minor disadvantages: First, there is an upper limit on the number of data types that can exist. Also, space for data types is allocated two pages at a time. Each data type which has any instances allocated has at least two pages assigned to it, which may be wasteful of space if there are only a few examples of a given data type. These problems should not effect most applications programs. Using Fast and Destructive Functions 1 Among the functions used for manipulating objects of various data types, there are a number of functions which have "fast" and "destructive" versions. You should be aware of what these functions do, and when they should be used. Fast functions: By convention, a function named by prefixing an existing function name with F indicates that the new function is a "fast" version of the old. These usually have the same definitions as the slower versions, but they compile open and run without any "safety" error checks. For example, FNTH runs faster than NTH, however, it does not make as many checks (for lists ending with anything but NIL, etc). If these functions are given arguments that are not in the form that they expect, their behavior is unpredictable; they may run forever, or cause a system error. In general, you should only use "fast" functions in code that has already been completely debugged, to speed it up. Destructive functions: By convention, a function named by prefixing an existing function with D indicates the new function is a "destructive" version of the old one, which does not make any new structure but cannibalizes its argument(s). For example, REMOVE returns a copy of a list with a particular element removed, but DREMOVE actually changes the list structure of the list. (Unfortunately, not all destructive functions follow this naming convention: the destructive version of APPEND is NCONC.) You should be careful when using destructive functions that they do not inadvertantly change data structures. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "21-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "21-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "21-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "21-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "21-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "21-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))A PAGEHEADING RIGHTPAGET,~~,~~26TT52`~~,HH@ PAGEHEADINGLEFTBACKT-T,206 +306 +T,3(T,,,3(T/ PALATINO PALATINO PALATINO TITAN TITAN TITAN TITAN TITAN VH(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8) (POSTSCRIPT (GACHA 8))) +MODERN +MODERN +    IM.CHAP.GETFNMODERN + + + HRULE.GETFNMODERN + * +  HRULE.GETFNMODERN + M~G7IM.INDEX.GETFNU %IM.INDEX.GETFNTITAN  +   +(IM.INDEX.GETFNMODERN + -  )IM.INDEX.GETFNMODERN + 6 '  #IM.INDEX.GETFNTITAN  N&!  #IM.INDEX.GETFNTITAN  P +   %IM.INDEX.GETFNTITAN   1) 4 -# R +?N +!  N/9 "f > !'########4 >   *IM.INDEX.GETFNMODERN + 1yBV T46dv +  HRULE.GETFNMODERN + ++ $- i]6 +1 L + +  HRULE.GETFNMODERN + F +v %IM.INDEX.GETFNTITAN  &5 . O  6  nNH  v/L-  "IM.INDEX.GETFNTITAN  +   Y'N/-  &IM.INDEX.GETFNMODERN + +5 (   'IM.INDEX.GETFNTITAN  >   +(IM.INDEX.GETFNTITAN  J  + +  HRULE.GETFNMODERN + . u  'IM.INDEX.GETFNTITAN    7e i :* a   +IM.INDEX.GETFNTITAN   f f + ))))"?  M +(IM.INDEX.GETFNTITAN   -  +$/  + e " +  & +    )IM.INDEX.GETFNMODERN +   I ) +X0W   + "=(((#(((# M  ' s}   +&  + +  HRULE.GETFNMODERN +  B  'IM.INDEX.GETFNTITAN   I,&  +  &  +  +1, +% +-> + +"   +P% + K$ +  HRULE.GETFNMODERN + @ *J^6) ) +  HRULE.GETFNMODERN + _O! aAr z \ No newline at end of file diff --git a/docs/medley-irm/21-PERFORMANCE.pdf b/docs/medley-irm/21-PERFORMANCE.pdf new file mode 100644 index 00000000..6fb8a8e8 --- /dev/null +++ b/docs/medley-irm/21-PERFORMANCE.pdf @@ -0,0 +1,4698 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 4446 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-1)Tj +/TT4 1 Tf +10 0 0 10 54 559.2 Tm +[(21. )-76.4(PERFORMANCE ISSUES)]TJ +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 550.2 m +510.01 550.2 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 549.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 525.54 Tm +0.1322 Tw +(This chapter describes a number of areas that often contribute to performance problems in Medley)Tj +0 -1.2222 TD +0.1789 Tw +[(programs. Many performance problems can be improved by optimizing the use of storage, since)]TJ +T* +0.1078 Tw +[(allocating and reclaiming large amounts of storage is expensive. Another tactic that can sometimes)]TJ +T* +0.1767 Tw +(yield performance improvements is to change the use of variable bindings on the stack to reduce)Tj +T* +0.1333 Tw +[(variable lookup time. There are a number of tools that can be used to determine which parts of a)]TJ +T* +0 Tw +(computation cause performance bottlenecks.)Tj +/TT4 1 Tf +10 0 0 10 54 428.2 Tm +(Storage Allocation and Garbage Collection)Tj +ET +1 w +54.01 425.49 m +510.01 425.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 403.54 Tm +0.0122 Tw +(As an Medley application program runs, it creates data structures \(allocated out of free storage space\),)Tj +T* +0.0544 Tw +[(manipulates them, and then discards them. If there were no way to reclaim this space, over time the)]TJ +T* +0.0422 Tw +[(Medley memory would fill up, and the computation would come to a halt. Actually, long before this)]TJ +T* +0.2122 Tw +(could happen the system would probably become intolerably slow, due to data fragmentation,)Tj +T* +0.1478 Tw +(which occurs when the data currently in use are spread over many virtual memory pages, so that)Tj +T* +0.0078 Tw +[(most of the computer time must be spent swapping disk pages into physical memory. The problem of)]TJ +T* +0.0022 Tw +(fragmentation will occur in any situation where the virtual memory is significantly larger than the real)Tj +T* +0.31 Tw +(physical memory. To reduce swapping, you want to keep the "working set" \(the set of pages)Tj +T* +0 Tw +(containing actively referenced data\) as small as possible.)Tj +0 -2.8889 TD +0.1344 Tw +(You can write programs that dont generate much garbage data, or which recycle data, but such)Tj +0 -1.2222 TD +0.0533 Tw +[(programs tend to be complex and hard to debug. Spending effort writing such programs defeats the)]TJ +T* +0.1878 Tw +[(whole point of using a system with automatic storage allocation. An important part of any Lisp)]TJ +T* +0 Tw +(implementation is the garbage collector that finds discarded data and reclaims its space.)Tj +0 -2.8889 TD +0.0555 Tw +[(There are several well-known approaches to garbage collection. One method is the traditional mark-)]TJ +0 -1.2222 TD +0.28 Tw +(and-sweep, which identifies garbage data by marking all accessible data structures, and then)Tj +T* +0.2067 Tw +(sweeping through the data spaces to find all unmarked objects \(i.e., not referenced by any other)Tj +T* +0.21 Tw +[(object\). This method is guaranteed to reclaim all garbage, but it takes time proportional to the)]TJ +T* +0.0378 Tw +[(number of allocated objects, which may be very large. Also, the time that a mark-and-sweep garbage)]TJ +T* +0.0367 Tw +(collection takes is independent of the amount of garbage collected; it is possible to sweep through the)Tj +T* +0 Tw +(whole virtual memory, and only recover a small amount of garbage.)Tj +0 -2.8889 TD +0.1589 Tw +(For interactive applications, it is not acceptable to have long interruptions in a computation for to)Tj +0 -1.2222 TD +0.1156 Tw +[(garbage collect. Medley solves this problem by using a reference-counting garbage collector. With)]TJ +T* +0.02 Tw +[(this scheme, there is a table containing counts of how many times each object is referenced. This table)]TJ +T* +0.1733 Tw +(is updated as pointers are created and discarded, incurring a small overhead distributed over the)Tj +T* +0.0144 Tw +[(computation as a whole. \(Note: References from the stack are not counted, but are handled separately)]TJ +T* +0.0656 Tw +[(at "sweep" time; thus the vast majority of data manipulations do not cause updates to this table.\) At)]TJ +T* +0.0578 Tw +(opportune moments, the garbage collector scans this table, and reclaims all objects that are no longer)Tj +T* +0.0411 Tw +[(accessible \(have a reference count of zero\). The pause while objects are reclaimed is only the time for)]TJ +T* +0.0022 Tw +(scanning the reference count tables \(small\) plus time proportional to the amount of garbage that has to)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +11 0 obj +<< +/Length 4308 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0856 Tw +[(be collected \(typically less than a second\). Opportune times occur when a certain number of cells)]TJ +0 -1.2222 TD +0.04 Tw +(have been allocated or when the system has been waiting for you to type something for long enough.)Tj +T* +0.0355 Tw +[(The frequency of garbage collection is controlled by the functions and variables described below. For)]TJ +T* +0.1711 Tw +(the best system performance, it is desirable to adjust these parameters for frequent, short garbage)Tj +T* +0.1289 Tw +(collections, which will not interrupt interactive applications for very long, and which will have the)Tj +T* +0 Tw +(added benefit of reducing data fragmentation, keeping the working set small.)Tj +0 -2.8889 TD +0.0822 Tw +(One problem with the Medley garbage collector is that not all garbage is guaranteed to be collected.)Tj +0 -1.2222 TD +0.1067 Tw +(Circular data structures, which point to themselves directly or indirectly, are never reclaimed, since)Tj +T* +0.0178 Tw +[(their reference counts are always at least one. With time, this unreclaimable garbage may increase the)]TJ +T* +0.07 Tw +[(working set to unacceptable levels. Some users have worked with the same Medley virtual memory)]TJ +T* +0.04 Tw +(for a very long time, but it is a good idea to occasionally save all of your functions in files, reinitialize)Tj +T* +0.1989 Tw +[(Medley, and rebuild your system. Many users end their working day by issuing a command to)]TJ +T* +0.0344 Tw +[(rebuild their system and then leaving the machine to perform this task in their absence. If the system)]TJ +T* +0.2655 Tw +(seems to be spending too much time swapping \(an indication of fragmented working set\), this)Tj +T* +0 Tw +(procedure is definitely recommended.)Tj +0 -2.8889 TD +0.1933 Tw +(Another limitation of the reference-counting garbage collector is that the table in which reference)Tj +0 -1.2222 TD +0.11 Tw +[(counts are maintained is of fixed size. For typical Lisp objects that are pointed to from exactly one)]TJ +T* +0.1878 Tw +(place \(e.g., the individual conses in a list\), no burden is placed on this table, since objects whose)Tj +T* +0.0511 Tw +[(reference count is 1 are not explicitly represented in the table. However, large, "rich" data structures,)]TJ +T* +0.0667 Tw +(with many interconnections, backward links, cross references, etc, can contribute many entries to the)Tj +T* +0.0389 Tw +[(reference count table. For example, if you created a data structure that functioned as a doubly-linked)]TJ +T* +0 Tw +(list, such a structure would contribute an entry \(reference count 2\) for each element.)Tj +0 -2.8889 TD +0.2455 Tw +(When the reference count table fills up, the garbage collector can no longer maintain consistent)Tj +0 -1.2222 TD +0.0567 Tw +[(reference counts, so it stops doing so altogether. At this point, a window appears on the screen with)]TJ +T* +0 Tw +(the following message, and the debugger is entered:)Tj +/TT10 1 Tf +5.3333 -1.9333 TD +(Internal garbage collector tables have overflowed, due)Tj +0 -1.2222 TD +(to too many pointers with reference count greater than 1.)Tj +T* +(*** The garbage collector is now disabled. ***)Tj +T* +(Save your work and reload as soon as possible.)Tj +/TT8 1 Tf +-5.3333 -2.9556 TD +0.2 Tw +[([This message is slightly misleading, in that it should say "count not equal to 1". In the current)]TJ +0 -1.2222 TD +0.1878 Tw +(implementation, the garbage collection of a large pointer array whose elements are not otherwise)Tj +T* +0.0833 Tw +(pointed to can place a special burden on the table, as each elements reference count simultaneously)Tj +T* +0.0433 Tw +(drops to zero and is thus added to the reference count table for the short period before the element is)Tj +T* +0 Tw +(itself reclaimed.])Tj +0 -2.8889 TD +0.0511 Tw +(If you exit the debugger window \(e.g., with the RETURN command\), your computation can proceed;)Tj +0 -1.2222 TD +0.2444 Tw +[(however, the garbage collector is no longer operating. Thus, your virtual memory will become)]TJ +T* +0.1122 Tw +(cluttered with objects no longer accessible, and if you continue for long enough in the same virtual)Tj +T* +0 Tw +(memory image you will eventually fill up the virtual memory backing store and grind to a halt.)Tj +ET +endstream +endobj +12 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +15 0 obj +<< +/Length 6554 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PERFORMANCE ISSUES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(Garbage collection in Medley is controlled by the following functions and variables:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RECLAIM)Tj +/TT10 1 Tf +4.1999 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 150.6009 547.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 547.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Initiates a garbage collection. Returns 0.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RECLAIMMIN)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 174.4517 508.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 508.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1222 Tw +[(Sets the frequency of garbage collection. Interlisp keeps track of the number of cells of)]TJ +0 -1.2222 TD +0.0944 Tw +(any type that have been allocated; when it reaches a given number, a garbage collection)Tj +T* +0 Tw +(occurs. If )Tj +/TT14 1 Tf +4.5254 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, this number is set to )Tj +/TT14 1 Tf +9.6841 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(. Returns the current setting of the number.)Tj +/TT12 1 Tf +-23.1344 -2.5489 TD +(RECLAIMWAIT)Tj +/TT6 1 Tf +10 0 0 10 161.4 446.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 446.72 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2567 Tw +(Medley will invoke a )Tj +/TT10 1 Tf +10.6146 0 TD +0 Tw +(RECLAIM)Tj +/TT8 1 Tf +4.2007 0 TD +0.2567 Tw +[( if the system is idle and waiting for your input for)]TJ +/TT10 1 Tf +-14.8152 -1.2889 TD +0 Tw +(RECLAIMWAIT)Tj +/TT8 1 Tf +6.6011 0 TD +( seconds \(currently set for 4 seconds\).)Tj +/TT10 1 Tf +-9.2677 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GCGAG)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MESSAGE)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 179.857 395.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 395.58 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1444 Tw +[(Sets the behavior that occurs while a garbage collection is taking place. If )]TJ +/TT14 1 Tf +34.6819 0 TD +0 Tw +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.1444 Tw +[( is)]TJ +-38.8826 -1.2889 TD +0 Tw +(non-)Tj +/TT10 1 Tf +2.043 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2056 Tw +(, the cursor is complemented during a )Tj +/TT10 1 Tf +18.4892 0 TD +0 Tw +(RECLAIM)Tj +/TT8 1 Tf +4.2007 0 TD +0.2056 Tw +(; if )Tj +/TT14 1 Tf +1.7851 0 TD +0 Tw +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.4556 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4556 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2056 Tw +(, nothing)Tj +-35.8305 -1.2889 TD +0 Tw +(happens. The value of )Tj +/TT10 1 Tf +10.2598 0 TD +(GCGAG)Tj +/TT8 1 Tf +3.0005 0 TD +( is its previous setting.)Tj +/TT10 1 Tf +-15.9269 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GCTRP)Tj +/TT10 1 Tf +2.9999 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 139.8009 332.84 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 332.84 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.4822 Tw +(Returns the number of cells until the next garbage collection, according to the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RECLAIMMIN)Tj +/TT8 1 Tf +6.001 0 TD +( number.)Tj +-11.3343 -2.9556 TD +0.09 Tw +(The amount of storage allocated to different data types, how much of that storage is in use, and the)Tj +0 -1.2222 TD +0 Tw +(amount of data fragmentation can be determined using the following function:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(STORAGE)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TYPES)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PAGETHRESHOLD)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 252.3167 245.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 245.3 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(STORAGE)Tj +/TT8 1 Tf +4.2007 0 TD +( prints out a summary, for each data type, of the amount of space allocated to the)Tj +-4.2007 -1.2889 TD +0.0167 Tw +[(data type, and how much of that space is currently in use. If )]TJ +/TT14 1 Tf +27.1952 0 TD +0 Tw +(TYPES)Tj +/TT8 1 Tf +3.0005 0 TD +0.0167 Tw +[( is non-)]TJ +/TT10 1 Tf +3.2911 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5167 0 TD +(STORAGE)Tj +/TT8 1 Tf +-35.8038 -1.2889 TD +0.1167 Tw +(only lists statistics for the specified types. )Tj +/TT14 1 Tf +19.6902 0 TD +0 Tw +(TYPES)Tj +/TT8 1 Tf +3.0005 0 TD +0.1167 Tw +[( can be a symbol or a list of types. If)]TJ +/TT14 1 Tf +-22.6907 -1.2889 TD +0 Tw +(PAGETHRESHOLD)Tj +/TT8 1 Tf +7.8013 0 TD +0.0078 Tw +[( is non-)]TJ +/TT10 1 Tf +3.2734 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0078 Tw +(, then )Tj +/TT10 1 Tf +2.7348 0 TD +0 Tw +(STORAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0078 Tw +[( only lists statistics for types that have at least)]TJ +/TT14 1 Tf +-19.8104 -1.2889 TD +0 Tw +(PAGETHRESHOLD)Tj +/TT8 1 Tf +7.8013 0 TD +( pages allocated to them.)Tj +/TT10 1 Tf +-7.8013 -2.0667 TD +(STORAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.2911 Tw +[( prints out a table with the column headings )]TJ +/TT10 1 Tf +22.4076 0 TD +0.6978 Tw +(Type, Assigned, Free)Tj +-26.6083 -1.2889 TD +0.0622 Tw +(Items, In use,)Tj +/TT8 1 Tf +8.5258 0 TD +0.0256 Tw +[( and )]TJ +/TT10 1 Tf +2.244 0 TD +0.0622 Tw +[(Total alloc. Type)]TJ +/TT8 1 Tf +10.9884 0 TD +0.0256 Tw +[( is the name of the data type. )]TJ +/TT10 1 Tf +13.4414 0 TD +0 Tw +(Assigned)Tj +/TT8 1 Tf +-35.1996 -1.2889 TD +0.2433 Tw +[(is how much of your virtual memory is set aside for items of this type. Currently,)]TJ +0 -1.2222 TD +0.0456 Tw +[(memory is allocated in quanta of two pages \(1024 bytes\). The numbers under )]TJ +/TT10 1 Tf +35.1886 0 TD +0 Tw +(Assigned)Tj +/TT8 1 Tf +-35.1886 -1.2889 TD +0.1067 Tw +(show the number of pages and the total number of items that fit on those pages. )Tj +/TT10 1 Tf +37.5961 0 TD +0 Tw +(Free)Tj +-37.5961 -1.2889 TD +(Items)Tj +/TT8 1 Tf +3.0005 0 TD +0.0533 Tw +[( shows how many items are available to be allocated \(using the )]TJ +/TT10 1 Tf +28.7479 0 TD +0 Tw +(create)Tj +/TT8 1 Tf +3.6006 0 TD +0.0533 Tw +[( construct,)]TJ +-35.349 -1.2889 TD +0.1 Tw +(Chapter 8\); these constitute the "free list" for that data type. )Tj +/TT10 1 Tf +27.8177 0 TD +0.24 Tw +(In use)Tj +/TT8 1 Tf +3.8406 0 TD +0.1 Tw +[( shows how many)]TJ +-31.6583 -1.2889 TD +0.0256 Tw +(items of this type are currently in use, i.e., have pointers to them and hence have not been)Tj +0 -1.2222 TD +0.0133 Tw +[(garbage collected. If this number is higher than your program seems to warrant, you may)]TJ +T* +0.0333 Tw +[(want to look for storage leaks. The sum of )]TJ +/TT10 1 Tf +19.349 0 TD +0.08 Tw +(Free Items)Tj +/TT8 1 Tf +6.081 0 TD +0.0333 Tw +[( and )]TJ +/TT10 1 Tf +2.2595 0 TD +0.08 Tw +(In use)Tj +/TT8 1 Tf +3.6806 0 TD +0.0333 Tw +[( is always the same)]TJ +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 17 0 R +/TT14 18 0 R +/TT16 19 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +21 0 obj +<< +/Length 5247 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0311 Tw +(as the total )Tj +/TT10 1 Tf +5.1436 0 TD +0 Tw +(Assigned)Tj +/TT8 1 Tf +4.8008 0 TD +0.0311 Tw +[( items. )]TJ +/TT10 1 Tf +3.4962 0 TD +0.0756 Tw +(Total alloc)Tj +/TT8 1 Tf +6.6766 0 TD +0.0311 Tw +[( is the total number of items of this type that)]TJ +-20.1172 -1.2889 TD +0 Tw +(have ever been allocated \(see )Tj +/TT10 1 Tf +13.0898 0 TD +(BOXCOUNT)Tj +/TT8 1 Tf +4.8008 0 TD +(, in the Performance Measuring section below\).)Tj +-15.224 -2.0667 TD +0.2189 Tw +[(Note: )-432.3(The information about the number of items of type )]TJ +/TT10 1 Tf +28.0358 0 TD +0 Tw +(LISTP)Tj +/TT8 1 Tf +3.0005 0 TD +0.2189 Tw +[( is only)]TJ +-27.7029 -1.2889 TD +0.2811 Tw +(approximate, because list cells are allocated in a special way that)Tj +0 -1.2222 TD +0 Tw +(precludes easy computation of the number of items per page.)Tj +-3.3333 -2 TD +0.2233 Tw +[(Note: )223.3( )-177.9(When a data type is redeclared, the data type name is reassigned.)]TJ +3.3333 -1.2222 TD +0.3022 Tw +(Pages which were assigned to instances of the old data type are)Tj +T* +0 Tw +(labeled )Tj +/TT10 1 Tf +3.4541 0 TD +(**DEALLOC**)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-16.0552 -2.0667 TD +0.17 Tw +(At the end of the table printout, )Tj +/TT10 1 Tf +15.439 0 TD +0 Tw +(STORAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.17 Tw +[( prints a "Data Spaces Summary" listing the)]TJ +-19.6397 -1.2889 TD +0.0711 Tw +(number of pages allocated to the major data areas in the virtual address space: the space)Tj +0 -1.2222 TD +0.1033 Tw +(for fixed-length items \(including datatypes\), the space for variable-length items, and the)Tj +T* +0.0356 Tw +[(space for symbols. Variable-length data types such as arrays have fixed-length "headers,")]TJ +T* +0.0956 Tw +[(which is why they also appear in the printout of fixed-length data types. Thus, the line)]TJ +T* +0.1256 Tw +(printed for the )Tj +/TT10 1 Tf +7.073 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +[( data type says how many bitmaps have been allocated, but the)]TJ +-10.6735 -1.2889 TD +0.1856 Tw +("assigned pages" column counts only the headers, not the space used by the variable-)Tj +0 -1.2222 TD +0.1055 Tw +[(length part of the bitmap. This summary also lists "Remaining Pages" in relation to the)]TJ +T* +0.1378 Tw +(largest possible virtual memory, not the size of the virtual memory backing file in use.)Tj +T* +0.0644 Tw +(This file may fill up, causing a )Tj +/TT10 1 Tf +14.0038 0 TD +0.1556 Tw +(STORAGE FULL)Tj +/TT8 1 Tf +7.3567 0 TD +0.0644 Tw +[( error, long before the "Remaining Pages")]TJ +-21.3606 -1.2889 TD +0 Tw +(numbers reach zero.)Tj +/TT10 1 Tf +0 -2 TD +(STORAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.07 Tw +[( also prints out information about the sizes of the entries on the variable-length)]TJ +-4.2007 -1.2889 TD +0.4689 Tw +[(data free list. The block sizes are broken down by the value of the variable)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(STORAGE.ARRAYSIZES)Tj +/TT8 1 Tf +10.8018 0 TD +0.1011 Tw +(, initially )Tj +/TT10 1 Tf +4.3717 0 TD +0.2422 Tw +(\(4 16 64 256 1024 4096 16384 NIL\))Tj +/TT8 1 Tf +21.4988 0 TD +0.1011 Tw +(, which)Tj +-36.6722 -1.2889 TD +0 Tw +(yields a printout of the form:)Tj +/TT10 1 Tf +6 -1.9333 TD +(variable-datum free list: )Tj +0 -1 TD +(le 4 26 items; 104 cells.)Tj +T* +(le 16 72 items; 783 cells.)Tj +T* +(le 64 36 items; 964 cells.)Tj +T* +(le 256 28 items; 3155 cells.)Tj +T* +(le 1024 3 items; 1175 cells.)Tj +T* +(le 4096 5 items; 8303 cells.)Tj +T* +(le 16384 3 items; 17067 cells.)Tj +T* +(others 1 items; 17559 cells.)Tj +/TT8 1 Tf +-6 -1.8444 TD +0.3611 Tw +(This information can be useful in determining if the variable-length data space is)Tj +0 -1.2222 TD +0.0656 Tw +[(fragmented. If most of the free space is composed of small items, then the allocator may)]TJ +T* +0.04 Tw +[(not be able to find room for large items, and will extend the variable datum space. If this)]TJ +T* +0.1122 Tw +(is extended too much, this could cause an )Tj +/TT10 1 Tf +19.5247 0 TD +0.2689 Tw +(ARRAYS FULL)Tj +/TT8 1 Tf +6.87 0 TD +0.1122 Tw +[( error, even if there is a lot of)]TJ +-26.3947 -1.2889 TD +0 Tw +(space left in little chunks.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(STORAGE.LEFT)Tj +/TT10 1 Tf +7.1999 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 225.6009 121.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 121.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0656 Tw +(Provides a programmatic way of determining how much storage is left in the major data)Tj +0 -1.2222 TD +0.2433 Tw +[(areas in the virtual address space. Returns a list of the form )]TJ +/TT10 1 Tf +29.8157 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(MDSFREE)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +1.1834 0 TD +(MDSFRAC)Tj +-35.7999 -1.2889 TD +(8MBFRAC)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ATOMFREE)Tj +/TT10 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ATOMFRAC)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, where the elements are interpreted as follows:)Tj +/TT18 1 Tf +-8.4692 -2.0667 TD +(MDSFREE)Tj +/TT8 1 Tf +5.5333 0 TD +0.1544 Tw +(The number of free pages left in the main data space)Tj +0 -1.2889 TD +0.1644 Tw +(\(which includes both fixed-length and variable-length)Tj +0 -1.2222 TD +0 Tw +(data types\).)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 17 0 R +/TT14 18 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +25 0 obj +<< +/Length 5197 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PERFORMANCE ISSUES)Tj +/TT18 1 Tf +9 0 0 9 190.2 569.54 Tm +(MDSFRAC)Tj +/TT8 1 Tf +5.5333 0 TD +0.0122 Tw +(The fraction of the total possible main data space that is)Tj +0 -1.2889 TD +0 Tw +(free.)Tj +/TT18 1 Tf +-5.5333 -2 TD +(8MBFRAC)Tj +/TT8 1 Tf +5.5333 0 TD +0.1789 Tw +(The fraction of the total main data space that is free,)Tj +0 -1.2889 TD +0 Tw +(relative to eight megabytes.)Tj +0 -2 TD +0.2567 Tw +(This number is useful when using Medley on some)Tj +0 -1.2222 TD +0.0289 Tw +(early computers where the hardware limits the address)Tj +T* +1.2044 Tw +[(space to eight megabytes. The function)]TJ +/TT10 1 Tf +T* +0 Tw +(32MBADDRESSABLE)Tj +/TT8 1 Tf +9.0015 0 TD +0.2567 Tw +[( returns non-)]TJ +/TT10 1 Tf +6.2604 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2567 Tw +[( if the currently)]TJ +-17.0622 -1.2889 TD +0.1689 Tw +(running Medley system can use the full 32 megabyte)Tj +0 -1.2222 TD +0 Tw +(address space.)Tj +/TT18 1 Tf +-6.1333 -2 TD +(ATOMFREE)Tj +/TT8 1 Tf +6.1333 0 TD +(The number of free pages left in the symbol space.)Tj +/TT18 1 Tf +-6.1333 -2.0667 TD +(ATOMFRAC)Tj +/TT8 1 Tf +6.1333 0 TD +(The fraction of the total symbol space that is free.)Tj +-14.6667 -2.0667 TD +0.0811 Tw +[(Note:)-901.2(Another important space resource is the amount of the virtual memory backing)]TJ +3.3333 -1.2222 TD +0.2133 Tw +(file in use \(see )Tj +/TT10 1 Tf +7.3411 0 TD +0 Tw +(VMEMSIZE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2133 Tw +[(, Chapter 12\). The system will crash if the virtual)]TJ +-12.1419 -1.2889 TD +0 Tw +(memory file is full, even if the address space is not exhausted.)Tj +/TT4 1 Tf +10 0 0 10 54 334.6 Tm +(Variable Bindings)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 331.89 m +510.01 331.89 l +S +BT +/TT8 1 Tf +9 0 0 9 78 309.94 Tm +0.0989 Tw +[(Different implementations of Lisp use different methods of accessing free variables. The binding of)]TJ +0 -1.2222 TD +0.1789 Tw +(variables occurs when a function or a )Tj +/TT10 1 Tf +17.9807 0 TD +0 Tw +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1789 Tw +[( is entered. For example, if the function )]TJ +/TT10 1 Tf +19.3903 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1789 Tw +[( has the)]TJ +-41.5717 -1.2889 TD +0 Tw +(definition )Tj +/TT10 1 Tf +4.662 0 TD +0.1911 Tw +(\(LAMBDA \(A B\))Tj +/TT20 1 Tf +8.1835 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.33 0 TD +(BODY)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +(, the variables )Tj +/TT10 1 Tf +6.6253 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +[( and )]TJ +/TT10 1 Tf +2.3529 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +[( are bound so that any reference to )]TJ +/TT10 1 Tf +16.1883 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +[( or )]TJ +/TT10 1 Tf +1.6009 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +-44.7437 -1.2889 TD +(from )Tj +/TT14 1 Tf +2.4679 0 TD +(BODY)Tj +/TT8 1 Tf +2.4004 0 TD +0.0611 Tw +[( or any function called from )]TJ +/TT14 1 Tf +12.9253 0 TD +0 Tw +(BODY)Tj +/TT8 1 Tf +2.4004 0 TD +0.0611 Tw +[( will refer to the arguments to the function )]TJ +/TT10 1 Tf +19.5617 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0611 Tw +[( and not)]TJ +-41.5559 -1.2889 TD +0.1333 Tw +(to the value of )Tj +/TT10 1 Tf +7.1095 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.1333 Tw +[( or )]TJ +/TT10 1 Tf +1.7076 0 TD +0 Tw +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.1333 Tw +[( from a higher level function. All variable names \(symbols\) have a top level)]TJ +-10.0173 -1.2889 TD +0.0189 Tw +[(value cell which is used if the variable has not been bound in any function. In discussions of variable)]TJ +0 -1.2222 TD +0.1911 Tw +(access, it is useful to distinguish between three types of variable access: local, special and global.)Tj +T* +0.0733 Tw +(Local variable access is the use of a variable that is bound within the function from which it is used.)Tj +T* +0.1622 Tw +[(Special variable access is the use of a variable that is bound by another function. Global variable)]TJ +T* +0.1789 Tw +[(access is the use of a variable that has not been bound in any function. We will often refer to a)]TJ +T* +0.0278 Tw +[(variable all of whose accesses are local as a "local variable." Similarly, a variable all of whose accesses)]TJ +T* +0 Tw +(are global we call a "global variable.")Tj +0 -2.8889 TD +0.1167 Tw +(In a deep bound system, a variable is bound by saving on the stack the variables name together)Tj +0 -1.2222 TD +0.0911 Tw +[(with a value cell which contains that variables new value. When a variable is accessed, its value is)]TJ +T* +0.05 Tw +(found by searching the stack for the most recent binding \(occurrence\) and retrieving the value stored)Tj +T* +0 Tw +(there. If the variable is not found on the stack, the variables top level value cell is used.)Tj +0 -2.8889 TD +0.0967 Tw +(In a shallow bound system, a variable is bound by saving on the stack the variable name and the)Tj +0 -1.2222 TD +0.0522 Tw +[(variables old value and putting the new value in the variables top level value cell. When a variable)]TJ +T* +0 Tw +(is accessed, its value is always found in its top level value cell.)Tj +0 -2.8889 TD +(The deep binding scheme has one disadvantage: the amount of cpu time required to fetch the value of)Tj +0 -1.2222 TD +(a variable depends on the stack distance between its use and its binding. The compiler can determine)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT14 18 0 R +/TT18 23 0 R +/TT20 27 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +29 0 obj +<< +/Length 5118 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(local variable accesses and compiles them as fetches directly from the stack. Thus this computation)Tj +0 -1.2222 TD +(cost only arises in the use of variable not bound in the local frame \("free" variables\). The process of)Tj +T* +(finding the value of a free variable is called free variable lookup.)Tj +0 -2.8889 TD +0.0022 Tw +(In a shallow bound system, the amount of cpu time required to fetch the value of a variable is constant)Tj +0 -1.2222 TD +0.0044 Tw +(regardless of whether the variable is local, special or global. The disadvantages of this scheme are that)Tj +T* +0.0767 Tw +(the actual binding of a variable takes longer \(thus slowing down function call\), the cells that contain)Tj +T* +0.0089 Tw +(the current in use values are spread throughout the space of all symbol value cells \(thus increasing the)Tj +T* +0.2378 Tw +(working set size of functions\) and context switching between processes requires unwinding and)Tj +T* +0 Tw +(rewinding the stack \(thus effectively prohibiting the use of context switching for many applications\).)Tj +0 -2.8889 TD +0.2644 Tw +(Medley uses deep binding, because of the working set considerations and the speed of context)Tj +0 -1.2222 TD +0.0544 Tw +[(switching. The free variable lookup routine is microcoded, thus greatly reducing the search time. In)]TJ +T* +0.0989 Tw +(benchmarks, the largest percentage of free variable lookup time was 20 percent of the total ellapsed)Tj +T* +0 Tw +(time; the normal time was between 5 and 10 percent.)Tj +0 -2.8889 TD +0.2122 Tw +(Because of the deep binding, you can sometimes significantly improve performance by declaring)Tj +0 -1.2222 TD +0.0067 Tw +[(global variables. If a variable is declared global, the compiler will compile an access to that variable as)]TJ +T* +0.0978 Tw +[(a retrieval of its top level value, completely bypassing a stack search. This should be done only for)]TJ +T* +0 Tw +(variables that are never bound in functions, such as global databases and flags.)Tj +0 -2.8889 TD +0.0511 Tw +(Global variable declarations should be done using the )Tj +/TT10 1 Tf +24.466 0 TD +0 Tw +(GLOBALVARS)Tj +/TT8 1 Tf +6.001 0 TD +0.0511 Tw +[( file manager command \(Chapter)]TJ +-30.467 -1.2889 TD +0 Tw +(17\). Its form is )Tj +/TT10 1 Tf +6.7915 0 TD +(\(GLOBALVARS)Tj +/TT20 1 Tf +6.6011 0 TD +( )Tj +/TT14 1 Tf +0.5 0 TD +(VAR)Tj +1.8008 -0.3333 TD +(1)Tj +/TT20 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT20 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VAR)Tj +1.7997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-21.5934 -3.2889 TD +0.0722 Tw +[(Another way of improving performance is to declare variables as local within a function. Normally,)]TJ +0 -1.2222 TD +0.0311 Tw +(all variables bound within a function have their names put on the stack, and these names are scanned)Tj +T* +0.0422 Tw +[(during free variable lookup. If a variable is declared to be local within a function, its name is not put)]TJ +T* +0.2278 Tw +(on the stack, so it is not scanned during free variable lookup, which may increase the speed of)Tj +T* +0.0433 Tw +[(lookups. The compiler can also make some other optimizations if a variable is known to be local to a)]TJ +T* +0 Tw +(function.)Tj +0 -2.8889 TD +0.0422 Tw +(A variable may be declared as local within a function by including the form )Tj +/TT10 1 Tf +34.2371 0 TD +0 Tw +(\(DECLARE)Tj +/TT20 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.2922 0 TD +(\(LOCALVARS)Tj +/TT14 1 Tf +-39.3301 -1.2889 TD +(VAR)Tj +1.8 -0.3333 TD +(1)Tj +/TT20 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.4956 0 TD +(...)Tj +/TT20 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.4956 0 TD +(VAR)Tj +1.7997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +0.2456 Tw +[( following the argument list in the definition of the function. Local variable)]TJ +-8.7913 -1.6222 TD +0.1011 Tw +[(declarations only effect the compilation of a function. Interpreted functions put all of their variable)]TJ +0 -1.2222 TD +0 Tw +(names on the stack, regardless of any declarations.)Tj +/TT4 1 Tf +10 0 0 10 102 120.8 Tm +(Performance Measuring)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 118.09 m +558.01 118.09 l +S +BT +/TT8 1 Tf +9 0 0 9 126 96.14 Tm +0.0544 Tw +(This section describes functions that gather and display statistics about a computation, such as as the)Tj +T* +0.0533 Tw +(elapsed time, and the number of data objects of different types allocated. )Tj +/TT10 1 Tf +33.2861 0 TD +0 Tw +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0533 Tw +[( and )]TJ +/TT10 1 Tf +2.2995 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +[( gather)]TJ +-42.1867 -1.2889 TD +0.0556 Tw +(statistics on the evaluation of a specified form. )Tj +/TT10 1 Tf +21.4624 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0556 Tw +[( gathers statistics on individual functions)]TJ +-26.8633 -1.2889 TD +0.03 Tw +[(called during a computation. These functions can be used to determine which parts of a computation)]TJ +0 -1.2222 TD +0 Tw +(are consuming the most resources \(time, storage, etc.\), and could most profitably be improved.)Tj +ET +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT14 18 0 R +/TT20 27 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +32 0 obj +<< +/Length 8695 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PERFORMANCE ISSUES)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TIMEALL)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMEFORM)Tj +/TT16 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NUMBEROFTIMES)Tj +/TT16 1 Tf +7.8013 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMEWHAT)Tj +/TT16 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(INTERPFLG)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 364.8343 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 401.97 568.2 Tm +([NLambda Function])Tj +-30.6633 -1.8444 TD +0.1756 Tw +(Evaluates the form )Tj +/TT14 1 Tf +9.1194 0 TD +0 Tw +(TIMEFORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.1756 Tw +[( and prints statistics on time spent in various categories)]TJ +-13.9202 -1.2889 TD +0 Tw +(\(elapsed, keyboard wait, swapping time, gc\) and data type allocation.)Tj +0 -2 TD +0.4011 Tw +(For more accurate measurement on small computations, )Tj +/TT14 1 Tf +27.9196 0 TD +0 Tw +(NUMBEROFTIMES)Tj +/TT8 1 Tf +7.8013 0 TD +0.4011 Tw +[( may be)]TJ +-35.7209 -1.2889 TD +0.0644 Tw +(specified \(its default is 1\) to cause )Tj +/TT14 1 Tf +15.5405 0 TD +0 Tw +(TIMEFORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0644 Tw +[( to be executed )]TJ +/TT14 1 Tf +7.0991 0 TD +0 Tw +(NUMBEROFTIMES)Tj +/TT8 1 Tf +7.8013 0 TD +0.0644 Tw +[( times. To)]TJ +-35.2416 -1.2889 TD +0.0822 Tw +(improve the accuracy of timing open-coded operations in this case, )Tj +/TT10 1 Tf +30.6772 0 TD +0 Tw +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0822 Tw +[( compiles a)]TJ +-34.8779 -1.2889 TD +0.0767 Tw +(form to execute )Tj +/TT14 1 Tf +7.335 0 TD +0 Tw +(TIMEFORM)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.3267 0 TD +(NUMBEROFTIMES)Tj +/TT8 1 Tf +7.8013 0 TD +0.0767 Tw +[( times \(unless )]TJ +/TT14 1 Tf +6.5186 0 TD +0 Tw +(INTERPFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0767 Tw +[( is non-)]TJ +/TT10 1 Tf +3.4111 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0767 Tw +(\), and)Tj +-37.3946 -1.2889 TD +0 Tw +(then times the execution of the compiled form.)Tj +2.6667 -2 TD +[(Note:)-901.2(If )]TJ +/TT10 1 Tf +4.3799 0 TD +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +0.1267 Tw +[( is called with )]TJ +/TT14 1 Tf +6.8704 0 TD +0 Tw +(NUMBEROFTIMES)Tj +/TT8 1 Tf +7.8013 0 TD +0.1267 Tw +[( > 1, the dummy form is)]TJ +-19.919 -1.2889 TD +0.1533 Tw +[(compiled with compiler optimizations on. This means that it is not)]TJ +0 -1.2222 TD +0.5244 Tw +(meaningful to use )Tj +/TT10 1 Tf +9.8014 0 TD +0 Tw +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +0.5244 Tw +[( with very simple forms that are)]TJ +-14.002 -1.2889 TD +0.0278 Tw +[(optimized out by the compiler. For example, )]TJ +/TT10 1 Tf +20.3975 0 TD +0.0678 Tw +(\(TIMEALL \(IPLUS 2)Tj +-20.3975 -1.2889 TD +0.3933 Tw +(3\) 1000\))Tj +/TT8 1 Tf +5.1941 0 TD +0.1644 Tw +[( will time a compiled function which simply returns the)]TJ +-5.1941 -1.2889 TD +0 Tw +(number 5, since )Tj +/TT10 1 Tf +7.2148 0 TD +(\(IPLUS 2 3\))Tj +/TT8 1 Tf +6.6011 0 TD +( is optimized to the integer 5.)Tj +/TT14 1 Tf +-19.8159 -2.0667 TD +(TIMEWHAT)Tj +/TT8 1 Tf +4.8008 0 TD +0.28 Tw +[( restricts the statistics to specific categories. It can be an atom or list of)]TJ +-4.8008 -1.2889 TD +0.0356 Tw +(datatypes to monitor, and/or the atom )Tj +/TT10 1 Tf +17.6093 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0356 Tw +[( to monitor time spent. Note that ordinarily,)]TJ +/TT10 1 Tf +-20.0097 -1.2889 TD +0 Tw +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +( monitors all time and datatype usage, so this argument is rarely needed. )Tj +/TT10 1 Tf +-4.2007 -2.0667 TD +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +( returns the value of the last evaluation of )Tj +/TT14 1 Tf +18.6484 0 TD +(TIMEFORM)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT10 1 Tf +-30.3166 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TIME)Tj +/TT4 1 Tf +10 0 0 10 129 316.86 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.7783 316.86 Tm +(TIMEX)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMEN)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMETYP)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 233.4941 316.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 401.97 316.86 Tm +([NLambda Function])Tj +/TT10 1 Tf +-30.6633 -1.8444 TD +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.1122 Tw +[( evaluates the form )]TJ +/TT14 1 Tf +9.1598 0 TD +0 Tw +(TIMEX)Tj +/TT8 1 Tf +3.0005 0 TD +0.1122 Tw +(, and prints out the number of )Tj +/TT10 1 Tf +14.3339 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.1122 Tw +[( cells allocated and)]TJ +-31.295 -1.2889 TD +0.1989 Tw +[(computation time. Garbage collection time is subtracted out. This function has been)]TJ +0 -1.2222 TD +0 Tw +(largely replaced by )Tj +/TT10 1 Tf +8.7275 0 TD +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-12.9282 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9644 0 TD +(TIMEN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0444 Tw +[( is greater than 1, )]TJ +/TT14 1 Tf +8.0577 0 TD +0 Tw +(TIMEX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0444 Tw +[( is executed )]TJ +/TT14 1 Tf +5.5352 0 TD +0 Tw +(TIMEN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0444 Tw +[( times, and )]TJ +/TT10 1 Tf +5.229 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( prints out \(number)]TJ +-31.1881 -1.2889 TD +0.0267 Tw +(of conses\)/)Tj +/TT14 1 Tf +4.993 0 TD +0 Tw +(TIMEN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0267 Tw +(, and \(computation time\)/)Tj +/TT14 1 Tf +11.6718 0 TD +0 Tw +(TIMEN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0267 Tw +[(. If )]TJ +/TT14 1 Tf +1.7499 0 TD +0 Tw +(TIMEN)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2767 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2767 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0267 Tw +[(, it defaults to 1. This)]TJ +-30.3699 -1.2889 TD +0 Tw +(is useful for more accurate measurement on small computations.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9644 0 TD +(TIMETYP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0444 Tw +[( is 0, )]TJ +/TT10 1 Tf +2.3482 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( measures and prints total )]TJ +/TT16 1 Tf +11.96 0 TD +0 Tw +(real)Tj +/TT8 1 Tf +1.5 0 TD +0.0444 Tw +[( time as well as computation time. If)]TJ +/TT14 1 Tf +-23.3736 -1.2889 TD +0 Tw +(TIMETYP)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.3311 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3311 0 TD +(3)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5811 0 TD +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0811 Tw +[( measures and prints garbage collection time as well as computation)]TJ +-9.0446 -1.2889 TD +0 Tw +(time. If )Tj +/TT14 1 Tf +3.6489 0 TD +(TIMETYP)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +( measures and prints the number of pagefaults.)Tj +/TT10 1 Tf +-12.4502 -2.0667 TD +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +( returns the value of the last evaluation of )Tj +/TT14 1 Tf +18.6484 0 TD +(TIMEX)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-26.716 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BOXCOUNT)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TYPE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 187.5052 153.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 153.12 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0478 Tw +(Returns the number of data objects of type )Tj +/TT14 1 Tf +19.4047 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +[( allocated since this Interlisp system was)]TJ +-21.8051 -1.2889 TD +0.0656 Tw +(created. )Tj +/TT14 1 Tf +4.115 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( can be any data type name \(see )]TJ +/TT10 1 Tf +14.7788 0 TD +0 Tw +(TYPENAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.0656 Tw +[(, Chapter 8\). If )]TJ +/TT14 1 Tf +7.173 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( is )]TJ +/TT10 1 Tf +1.346 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +(, it)Tj +-38.8146 -1.2889 TD +0 Tw +(defaults to )Tj +/TT10 1 Tf +4.939 0 TD +(FIXP)Tj +/TT8 1 Tf +2.4004 0 TD +(. If )Tj +/TT14 1 Tf +1.6699 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the corresponding counter is reset to )Tj +/TT14 1 Tf +16.9038 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-34.8381 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(CONSCOUNT)Tj +/TT16 1 Tf +5.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 174.4526 90.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 90.38 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0344 Tw +(Returns the number of )Tj +/TT10 1 Tf +10.3761 0 TD +0 Tw +(CONS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( cells allocated since this Interlisp system was created. If )]TJ +/TT14 1 Tf +25.6177 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0344 Tw +[( is)]TJ +-38.9942 -1.2889 TD +0 Tw +(non-)Tj +/TT10 1 Tf +2.043 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, resets the counter to )Tj +/TT14 1 Tf +9.6611 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(. Equivalent to )Tj +/TT10 1 Tf +6.9302 0 TD +(\(BOXCOUNT LISTP)Tj +/TT20 1 Tf +9.6016 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 17 0 R +/TT14 18 0 R +/TT16 19 0 R +/TT20 27 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +35 0 obj +<< +/Length 5211 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PAGEFAULTS)Tj +/TT10 1 Tf +5.9999 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 220.2017 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns the number of page faults since this Interlisp system was created.)Tj +/TT4 1 Tf +10 0 0 10 102 509.26 Tm +(BREAKDOWN)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 506.55 m +558.01 506.55 l +S +BT +/TT10 1 Tf +9 0 0 9 126 484.6 Tm +(TIMEALL)Tj +/TT8 1 Tf +4.2007 0 TD +0.4189 Tw +[( collects statistics for whole computations. )]TJ +/TT10 1 Tf +22.0304 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.4189 Tw +[( is available to analyze the)]TJ +-31.6319 -1.2889 TD +0 Tw +(breakdown of computation time \(or any other measureable quantity\) function by function.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BREAKDOWN)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FN)Tj +1.2 -0.3333 TD +(1)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FN)Tj +1.1997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 264.7509 450.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 407.33 450.66 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +0.0333 Tw +(You call )Tj +/TT10 1 Tf +3.9085 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0333 Tw +[( giving it a list of function names \(unevaluated\). These functions are)]TJ +-9.3093 -1.2889 TD +0 Tw +(modified so that they keep track of various statistics.)Tj +0 -2 TD +0.2578 Tw +(To remove functions from those being monitored, simply )Tj +/TT10 1 Tf +27.6281 0 TD +0 Tw +(UNBREAK)Tj +/TT8 1 Tf +4.2007 0 TD +0.2578 Tw +[( \(Chapter 15\) the)]TJ +-31.8288 -1.2889 TD +0.4578 Tw +[(functions, thereby restoring them to their original state. To add functions, call)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.08 Tw +[( on the new functions. This will not reset the counters for any functions not)]TJ +-5.4009 -1.2889 TD +0.1722 Tw +[(on the new list. However )]TJ +/TT10 1 Tf +12.6554 0 TD +0 Tw +(\(BREAKDOWN\))Tj +/TT8 1 Tf +6.6011 0 TD +0.1722 Tw +[( will zero the counters of all functions being)]TJ +-19.2565 -1.2889 TD +0 Tw +(monitored.)Tj +0 -2 TD +0.1411 Tw +(The procedure used for measuring is such that if one function calls other and both are)Tj +0 -1.2222 TD +0.03 Tw +("broken down", then the time \(or whatever quantity is being measured\) spent in the inner)Tj +T* +0 Tw +(function is )Tj +/TT16 1 Tf +4.9219 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +( charged to the outer function as well. )Tj +/TT10 1 Tf +-6.2549 -2 TD +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.16 Tw +[( will )]TJ +/TT16 1 Tf +2.527 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.16 Tw +[( give accurate results if a function being measured is not returned)]TJ +-9.2609 -1.2889 TD +0.0511 Tw +(from normally, e.g., a lower )Tj +/TT10 1 Tf +12.7863 0 TD +0 Tw +(RETFROM)Tj +/TT8 1 Tf +4.2007 0 TD +0.0511 Tw +[( \(or )]TJ +/TT10 1 Tf +1.8761 0 TD +0 Tw +(ERROR)Tj +/TT8 1 Tf +3.0005 0 TD +0.0511 Tw +[(\) bypasses it. In this case, all of the time)]TJ +-21.8636 -1.2889 TD +0.1067 Tw +(\(or whatever quantity is being measured\) between the time that function is entered and)Tj +0 -1.2222 TD +0 Tw +(the time the next function being measured is entered will be charged to the first function.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BRKDWNRESULTS)Tj +/TT16 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(RETURNVALUESFLG)Tj +/TT10 1 Tf +9.0015 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 314.264 241.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 241.12 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(BRKDWNRESULTS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1133 Tw +[( prints the analysis of the statistics requested as well as the number of)]TJ +-7.8013 -1.2889 TD +0.1589 Tw +[(calls to each function. If )]TJ +/TT14 1 Tf +11.9069 0 TD +0 Tw +(RETURNVALUESFLG)Tj +/TT8 1 Tf +9.0015 0 TD +0.1589 Tw +[( is non-)]TJ +/TT10 1 Tf +3.5756 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6589 0 TD +(BRKDWNRESULTS)Tj +/TT8 1 Tf +7.8013 0 TD +0.1589 Tw +[( will not to)]TJ +-34.7445 -1.2889 TD +0.1678 Tw +(print the results, but instead return them in the form of a list of elements of the form)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FNNAME)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(#CALLS)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-12.6021 -2.0667 TD +(Example:)Tj +/TT21 1 Tf +6 -1.9333 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(BREAKDOWN SUPERPRINT SUBPRINT COMMENT1\))Tj +-0.9868 -1 TD +(\(SUPERPRINT SUBPRINT COMMENT1\))Tj +/TT21 1 Tf +T* +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(PRETTYDEF \(SUPERPRINT\) FOO\))Tj +-0.9868 -1 TD +(FOO.;3)Tj +/TT21 1 Tf +T* +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(BRKDWNRESULTS\))Tj +-0.9868 -1 TD +(FUNCTIONS TIME #CALLS PER CALL %)Tj +T* +(SUPERPRINT 8.261 365 0.023 20)Tj +T* +(SUBPRINT 31.910 141 0.226 76)Tj +T* +(COMMENT1 1.612 8 0.201 4)Tj +T* +(TOTAL 41.783 514 0.081)Tj +T* +(NIL)Tj +/TT21 1 Tf +T* +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(BRKDWNRESULTS T\))Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 17 0 R +/TT14 18 0 R +/TT16 19 0 R +/TT21 37 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +39 0 obj +<< +/Length 6134 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PERFORMANCE ISSUES)Tj +/TT10 1 Tf +9 0 0 9 180 570.14 Tm +(\(\(SUPERPRINT 365 8261\) \(SUBPRINT 141 31910\))Tj +0 -1 TD +(\(COMMENT1 8 1612\)\))Tj +-11.3333 -2.8822 TD +(BREAKDOWN)Tj +/TT6 1 Tf +10 0 0 10 126.6079 535.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 129.3862 535.2 Tm +(can be used to measure other statistics, by setting the following variables:)Tj +/TT12 1 Tf +-3.0429 -2.5489 TD +(BRKDWNTYPE)Tj +/TT6 1 Tf +10 0 0 10 156 512.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 512.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.03 Tw +(To use )Tj +/TT10 1 Tf +3.2246 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.03 Tw +[( to measure other statistics, before calling )]TJ +/TT10 1 Tf +18.689 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.03 Tw +(, set the variable)Tj +/TT10 1 Tf +-32.7153 -1.2889 TD +0 Tw +(BRKDWNTYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.3267 Tw +[( to the quantity of interest, e.g., )]TJ +/TT10 1 Tf +16.2569 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.8267 0 TD +(CONSES)Tj +/TT8 1 Tf +3.6006 0 TD +0.3267 Tw +(, etc, or a list of such)Tj +-29.0855 -1.2889 TD +0.2633 Tw +[(quantities. Whenever )]TJ +/TT10 1 Tf +10.7334 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.2633 Tw +[( is called with )]TJ +/TT10 1 Tf +7.4171 0 TD +0 Tw +(BRKDWNTYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.2633 Tw +[( not )]TJ +/TT10 1 Tf +2.4808 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.7633 0 TD +(BREAKDOWN)Tj +/TT8 1 Tf +-34.5967 -1.2889 TD +0.1367 Tw +[(performs the necessary changes to its internal state to conform to the new analysis. In)]TJ +0 -1.2222 TD +0.1822 Tw +(particular, if this is the first time an analysis is being run with a particular statistic, a)Tj +T* +0.1422 Tw +[(measuring function will be defined, and the compiler will be called to compile it. The)]TJ +T* +0.1644 Tw +[(functions being broken down will be redefined to call this measuring function. When)]TJ +/TT10 1 Tf +T* +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0611 Tw +[( is through initializing, it sets )]TJ +/TT10 1 Tf +13.4843 0 TD +0 Tw +(BRKDWNTYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.0611 Tw +[( back to )]TJ +/TT10 1 Tf +3.8586 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0611 Tw +[(. Subsequent calls to)]TJ +/TT10 1 Tf +-30.5451 -1.2889 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.2067 Tw +[( will measure the new statistic until )]TJ +/TT10 1 Tf +17.3939 0 TD +0 Tw +(BRKDWNTYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.2067 Tw +[( is again set and a new)]TJ +/TT10 1 Tf +-28.7958 -1.2889 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +( performed.)Tj +/TT12 1 Tf +-8.0675 -2.5489 TD +(BRKDWNTYPES)Tj +/TT6 1 Tf +10 0 0 10 161.4 370.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 370.72 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2144 Tw +(The list )Tj +/TT10 1 Tf +3.9347 0 TD +0 Tw +(BRKDWNTYPES)Tj +/TT8 1 Tf +6.6011 0 TD +0.2144 Tw +[( contains the information used to analyze new statistics. Each)]TJ +-10.5358 -1.2889 TD +0.0344 Tw +(entry on )Tj +/TT10 1 Tf +4.0352 0 TD +0 Tw +(BRKDWNTYPES)Tj +/TT8 1 Tf +6.6011 0 TD +0.0344 Tw +[( should be of the form )]TJ +/TT10 1 Tf +10.2184 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.6812 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.6812 0 TD +(FUNCTION)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0344 Tw +(, where )Tj +/TT14 1 Tf +3.5879 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( is)]TJ +-39.0072 -1.2889 TD +0.22 Tw +(a statistic name \(as would appear in )Tj +/TT10 1 Tf +17.6767 0 TD +0 Tw +(BRKDWNTYPE)Tj +/TT8 1 Tf +6.001 0 TD +(\), )Tj +/TT14 1 Tf +1.053 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.22 Tw +[( computes the statistic, and)]TJ +/TT14 1 Tf +-27.1311 -1.2889 TD +0 Tw +(FUNCTION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0967 Tw +[( \(optional\) converts the value of form to some more interesting quantity. For)]TJ +-4.8008 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.3824 0 TD +0.3211 Tw +(\(TIME \(CLOCK 2\) \(LAMBDA \(X\) \(FQUOTIENT X 1000\)\)\))Tj +/TT8 1 Tf +31.0525 0 TD +0.1333 Tw +[( measures)]TJ +-35.4348 -1.2889 TD +0.6822 Tw +(computation time and reports the result in seconds instead of milliseconds.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(BRKDWNTYPES)Tj +/TT8 1 Tf +6.6011 0 TD +0.16 Tw +[( currently contains entries for )]TJ +/TT10 1 Tf +14.0661 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.66 0 TD +(CONSES)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.66 0 TD +(PAGEFAULTS)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.66 0 TD +(BOXES)Tj +/TT8 1 Tf +3.0005 0 TD +0.16 Tw +(, and)Tj +/TT10 1 Tf +-37.6496 -1.2889 TD +0 Tw +(FBOXES)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-3.6006 -2.0667 TD +(Example:)Tj +/TT21 1 Tf +6 -1.9333 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(SETQ BRKDWNTYPE \(TIME CONSES\)\))Tj +-0.9868 -1 TD +(\(TIME CONSES\))Tj +/TT21 1 Tf +T* +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(BREAKDOWN MATCH CONSTRUCT\))Tj +-0.9868 -1 TD +(\(MATCH CONSTRUCT\))Tj +/TT21 1 Tf +T* +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(FLIP \(A B C D E F G H C Z\) \(.. $1 .. #2 ..\))Tj +-0.9868 -1 TD +(\(.. #3 ..\)\))Tj +T* +(\(A B D E F G H Z\))Tj +/TT21 1 Tf +T* +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(BRKDWNRESULTS\))Tj +-0.9868 -1 TD +(FUNCTIONS TIME #CALLS PER CALL %)Tj +T* +(MATCH 0.036 1 0.036 54)Tj +T* +(CONSTRUCT 0.031 1 0.031 46)Tj +T* +(TOTAL 0.067 2 0.033 )Tj +T* +(FUNCTIONS CONSES #CALLS PER CALL %)Tj +T* +(MATCH 32 1 32.000 40)Tj +T* +(CONSTRUCT 49 1 49.000 60)Tj +T* +(TOTAL 81 2 40.500 )Tj +T* +(NIL)Tj +/TT8 1 Tf +-6 -1.8444 TD +0.09 Tw +(Occasionally, a function being analyzed is sufficiently fast that the overhead involved in)Tj +0 -1.2222 TD +0.0478 Tw +[(measuring it obscures the actual time spent in the function. If you were using )]TJ +/TT10 1 Tf +35.3422 0 TD +0 Tw +(TIME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0478 Tw +(, you)Tj +-37.7425 -1.2889 TD +0.0233 Tw +(would specify a value for )Tj +/TT14 1 Tf +11.5913 0 TD +0 Tw +(TIMEN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0233 Tw +[( greater than 1 to give greater accuracy. A similar option)]TJ +-14.5918 -1.2889 TD +0.1533 Tw +(is available for )Tj +/TT10 1 Tf +7.169 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.1533 Tw +[(. You can specify that a function\(s\) be executed a multiple)]TJ +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 17 0 R +/TT14 18 0 R +/TT21 37 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +42 0 obj +<< +/Length 6780 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.1133 Tw +(number of times for each measurement, and the average value reported, by including a)Tj +0 -1.2222 TD +0.0178 Tw +(number in the list of functions given to )Tj +/TT10 1 Tf +17.5846 0 TD +0 Tw +(BREAKDOWN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0178 Tw +[(. For example, )]TJ +/TT10 1 Tf +6.8172 0 TD +0 Tw +(BREAKDOWN\(EDITCOM)Tj +-29.8027 -1.2889 TD +0.32 Tw +(EDIT4F 10 EDIT4E EQP\))Tj +/TT8 1 Tf +13.5621 0 TD +0.1333 Tw +[( means normal breakdown for )]TJ +/TT10 1 Tf +14.3112 0 TD +0 Tw +(EDITCOM)Tj +/TT8 1 Tf +4.2007 0 TD +0.1333 Tw +[( and )]TJ +/TT10 1 Tf +2.4595 0 TD +0 Tw +(EDIT4F)Tj +/TT8 1 Tf +3.6006 0 TD +0.1333 Tw +[( but)]TJ +-38.1341 -1.2889 TD +0.0289 Tw +(executes \(the body of\) )Tj +/TT10 1 Tf +10.0638 0 TD +0 Tw +(EDIT4E)Tj +/TT8 1 Tf +3.6006 0 TD +0.0289 Tw +[( and )]TJ +/TT10 1 Tf +2.2506 0 TD +0 Tw +(EQP)Tj +/TT8 1 Tf +1.8003 0 TD +0.0289 Tw +[( 10 times each time they are called. Of course, the)]TJ +-17.7153 -1.2889 TD +0.12 Tw +(functions so measured must not cause any harmful side effects, since they are executed)Tj +0 -1.2222 TD +0.0867 Tw +[(more than once for each call. The printout from )]TJ +/TT10 1 Tf +22.2661 0 TD +0 Tw +(BRKDWNRESULTS)Tj +/TT8 1 Tf +7.8013 0 TD +0.0867 Tw +[( will look the same as)]TJ +-30.0674 -1.2889 TD +0.2122 Tw +(though each function were run only once, except that the measurement will be more)Tj +0 -1.2222 TD +0 Tw +(accurate.)Tj +0 -2 TD +0.3067 Tw +(Another way of obtaining more accurate measurement is to expand the call to the)Tj +0 -1.2222 TD +0.1344 Tw +[(measuring function in-line. If the value of )]TJ +/TT10 1 Tf +19.9686 0 TD +0 Tw +(BRKDWNCOMPFLG)Tj +/TT8 1 Tf +7.8013 0 TD +0.1344 Tw +[( is non-)]TJ +/TT10 1 Tf +3.5267 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1344 Tw +[( \(initially )]TJ +/TT10 1 Tf +4.5213 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(\),)Tj +-39.4185 -1.2889 TD +0.2367 Tw +(then whenever a function is broken-down, it will be redefined to call the measuring)Tj +0 -1.2222 TD +0.3022 Tw +[(function, and then recompiled. The measuring function is expanded in-line via an)]TJ +T* +0.0133 Tw +[(appropriate macro. In addition, whenever )]TJ +/TT10 1 Tf +19.1547 0 TD +0 Tw +(BRKDWNTYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +[( is reset, the compiler is called for)]TJ +/TT16 1 Tf +-25.1557 -1.2889 TD +0 Tw +(all)Tj +/TT8 1 Tf +0.9995 0 TD +0.0578 Tw +[( functions for which )]TJ +/TT10 1 Tf +9.3688 0 TD +0 Tw +(BRKDWNCOMPFLG)Tj +/TT8 1 Tf +7.8013 0 TD +0.0578 Tw +[( was set at the time they were originally broken-)]TJ +-18.1696 -1.2889 TD +0.0056 Tw +(down, i.e. the setting of the flag at the time a function is broken-down determines whether)Tj +0 -1.2222 TD +0 Tw +(the call to the measuring code is compiled in-line.)Tj +/TT4 1 Tf +10 0 0 10 102 351 Tm +(GAINSPACE)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 348.29 m +558.01 348.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 326.34 Tm +0.03 Tw +(If you have large programs and databases, you may sometimes find yourself in a situation where you)Tj +T* +0.0867 Tw +(need to obtain more space, and are willing to pay the price of eliminating some or all of the context)Tj +T* +0.0233 Tw +(information that the various user-assistance facilities such as the programmers assistant, file package,)Tj +T* +0.02 Tw +[(CLISP, etc., have accumulated during the course of his session. The function )]TJ +/TT10 1 Tf +34.3962 0 TD +0 Tw +(GAINSPACE)Tj +/TT8 1 Tf +5.4009 0 TD +0.02 Tw +[( provides an)]TJ +-39.7971 -1.2889 TD +0 Tw +(easy way to selectively throw away accumulated data:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GAINSPACE)Tj +/TT10 1 Tf +5.3999 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 214.8017 259.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 259.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.17 Tw +(Prints a list of deletable objects, allowing you to specify at each point what should be)Tj +0 -1.2222 TD +0 Tw +(discarded and what should be retained. For example:)Tj +/TT21 1 Tf +6 -1.9333 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(GAINSPACE\))Tj +-0.9868 -1 TD +(purge history lists ? Yes)Tj +T* +(purge everything, or just the properties, e.g.,)Tj +T* +(SIDE, LISPXPRINT, etc. ?)Tj +T* +(just the properties)Tj +T* +(discard definitions on property lists ? Yes)Tj +T* +(discard old values of variables ? Yes)Tj +T* +(erase properties ? No)Tj +T* +(erase CLISP translations? Yes)Tj +-11.3333 -2.7333 TD +(GAINSPACE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1533 Tw +[( is driven by the list )]TJ +/TT10 1 Tf +9.8863 0 TD +0 Tw +(GAINSPACEFORMS)Tj +/TT8 1 Tf +8.4014 0 TD +0.1533 Tw +[(. Each element on )]TJ +/TT10 1 Tf +9.0504 0 TD +0 Tw +(GAINSPACEFORMS)Tj +/TT8 1 Tf +8.4014 0 TD +0.1533 Tw +[( is of the)]TJ +-41.1403 -1.2889 TD +0 Tw +(form )Tj +/TT10 1 Tf +2.7267 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRECHECK)Tj +/TT10 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +1.369 0 TD +(MESSAGE)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +1.369 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +1.369 0 TD +(KEYLST)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.32 Tw +[(. If )]TJ +/TT14 1 Tf +2.6299 0 TD +0 Tw +(PRECHECK)Tj +/TT8 1 Tf +4.8008 0 TD +0.32 Tw +(, when evaluated, returns )Tj +/TT10 1 Tf +12.8152 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +/TT10 1 Tf +-45.0825 -1.2889 TD +(GAINSPACE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0633 Tw +[( skips to the next entry. For example, you will not be asked whether or not to purge the)]TJ +-5.4009 -1.2889 TD +0.0001 Tc +0.0043 Tw +(history list if it is not enabled. Otherwise, )Tj +/TT10 1 Tf +18.7436 0 TD +0 Tc +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.0001 Tc +0.0043 Tw +( \(Chapter 26\) is called with the indicated )Tj +/TT14 1 Tf +18.1796 0 TD +0 Tc +0 Tw +(MESSAGE)Tj +/TT8 1 Tf +-41.1239 -1.2889 TD +0.0422 Tw +(and the \(optional\) )Tj +/TT14 1 Tf +8.3059 0 TD +0 Tw +(KEYLST)Tj +/TT8 1 Tf +3.6006 0 TD +0.0422 Tw +[(. If you respond )]TJ +/TT10 1 Tf +7.7238 0 TD +0 Tw +(No)Tj +/TT8 1 Tf +1.2002 0 TD +0.0422 Tw +(, i.e., )Tj +/TT10 1 Tf +2.3545 0 TD +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.0422 Tw +[( returns )]TJ +/TT10 1 Tf +3.7885 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5422 0 TD +(GAINSPACE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0422 Tw +[( skips to the next)]TJ +-37.7174 -1.2889 TD +0.0322 Tw +[(entry. Otherwise, )]TJ +/TT14 1 Tf +8.2812 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0322 Tw +[( is evaluated with the variable )]TJ +/TT10 1 Tf +13.7568 0 TD +0 Tw +(RESPONSE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0322 Tw +[( bound to the value of )]TJ +/TT10 1 Tf +10.1645 0 TD +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.0322 Tw +[(. In)]TJ +-43.6044 -1.2889 TD +0.2022 Tw +(the above example, the )Tj +/TT14 1 Tf +11.2254 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2022 Tw +[( for the ")]TJ +/TT10 1 Tf +4.3889 0 TD +0.4856 Tw +(purge history lists)Tj +/TT8 1 Tf +12.373 0 TD +0.2022 Tw +(" question calls )Tj +/TT10 1 Tf +7.4885 0 TD +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.2022 Tw +[( to ask)]TJ +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT12 17 0 R +/TT14 18 0 R +/TT16 19 0 R +/TT21 37 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +45 0 obj +<< +/Length 6322 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PERFORMANCE ISSUES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(")Tj +/TT10 1 Tf +0.3711 0 TD +0.7689 Tw +(purge everything, ...)Tj +/TT8 1 Tf +14.1398 0 TD +0.3211 Tw +(" only if you had responded )Tj +/TT10 1 Tf +14.5224 0 TD +0 Tw +(Yes)Tj +/TT8 1 Tf +1.8003 0 TD +0.3211 Tw +[(. If you had responded with)]TJ +/TT10 1 Tf +-30.8336 -1.2889 TD +0 Tw +(Everything)Tj +/TT8 1 Tf +6.001 0 TD +(, the second question would not have been asked.)Tj +-6.001 -2.9556 TD +0.0044 Tw +(The ")Tj +/TT10 1 Tf +2.2994 0 TD +0.01 Tw +(erase properties)Tj +/TT8 1 Tf +9.6116 0 TD +0.0044 Tw +(" question is driven by a list )Tj +/TT10 1 Tf +12.5423 0 TD +0 Tw +(SMASHPROPSMENU)Tj +/TT8 1 Tf +8.4014 0 TD +0.0001 Tc +0.0043 Tw +(. Each element on this list is)Tj +-32.8546 -1.2889 TD +0 Tc +0.13 Tw +(of the form )Tj +/TT10 1 Tf +5.5629 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(MESSAGE)Tj +/TT10 1 Tf +4.2007 0 TD +0.3133 Tw +[( . )]TJ +/TT14 1 Tf +2.427 0 TD +0 Tw +(PROPS)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.13 Tw +[(. You are prompted with )]TJ +/TT14 1 Tf +12.195 0 TD +0 Tw +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.13 Tw +[( \(by )]TJ +/TT10 1 Tf +2.2024 0 TD +0 Tw +(ASKUSER)Tj +/TT8 1 Tf +4.2007 0 TD +0.13 Tw +(\), and if your)Tj +-39.19 -1.2889 TD +0.24 Tw +(response is )Tj +/TT10 1 Tf +5.6245 0 TD +0 Tw +(Yes)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT14 1 Tf +0.74 0 TD +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +0.24 Tw +[( is added to the list )]TJ +/TT10 1 Tf +10.0577 0 TD +0 Tw +(SMASHPROPS)Tj +/TT8 1 Tf +6.001 0 TD +0.24 Tw +[(. The ")]TJ +/TT10 1 Tf +3.7649 0 TD +0.5744 Tw +(discard definitions on)Tj +-30.9889 -1.2889 TD +0.7244 Tw +(property lists)Tj +/TT8 1 Tf +9.1258 0 TD +0.3022 Tw +(" and ")Tj +/TT10 1 Tf +3.5395 0 TD +0.7244 Tw +(discard old values of variables)Tj +/TT8 1 Tf +21.5008 0 TD +0.3022 Tw +(" questions also add to)Tj +/TT10 1 Tf +-34.1661 -1.2889 TD +0 Tw +(SMASHPROPS)Tj +/TT8 1 Tf +6.001 0 TD +0.1567 Tw +[(. You will not be prompted for any entry on )]TJ +/TT10 1 Tf +21.5529 0 TD +0 Tw +(SMASHPROPSMENU)Tj +/TT8 1 Tf +8.4014 0 TD +0.1567 Tw +[( for which all of the)]TJ +-35.9553 -1.2889 TD +0.13 Tw +(corresponding properties are already on )Tj +/TT10 1 Tf +18.7228 0 TD +0 Tw +(SMASHPROPS)Tj +/TT8 1 Tf +6.001 0 TD +0.13 Tw +(. )Tj +/TT10 1 Tf +1.01 0 TD +0 Tw +(SMASHPROPS)Tj +/TT8 1 Tf +6.001 0 TD +0.13 Tw +[( is initially set to the value of)]TJ +/TT10 1 Tf +-31.7347 -1.2889 TD +0 Tw +(SMASHPROPSLST)Tj +/TT8 1 Tf +7.8013 0 TD +0.11 Tw +[(. This permits you to specify in advance those properties which you always want)]TJ +-7.8013 -1.2889 TD +0.48 Tw +[(discarded, and not be asked about them subsequently. After finishing all the entries on)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(GAINSPACEFORMS)Tj +/TT8 1 Tf +8.4014 0 TD +(, )Tj +/TT10 1 Tf +0.5411 0 TD +(GAINSPACE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0411 Tw +[( checks to see if the value of )]TJ +/TT10 1 Tf +12.8396 0 TD +0 Tw +(SMASHPROPS)Tj +/TT8 1 Tf +6.001 0 TD +0.0411 Tw +[( is non-)]TJ +/TT10 1 Tf +3.34 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +(, and if so, does)Tj +-38.3243 -1.2889 TD +0 Tw +(a )Tj +/TT10 1 Tf +0.75 0 TD +(MAPATOMS)Tj +/TT8 1 Tf +4.8008 0 TD +(, i.e., looks at every atom in the system, and erases the indicated properties.)Tj +-5.5508 -2.9556 TD +0.0844 Tw +(You can change or add new entries to )Tj +/TT10 1 Tf +17.5662 0 TD +0 Tw +(GAINSPACEFORMS)Tj +/TT8 1 Tf +8.4014 0 TD +0.0844 Tw +[( or )]TJ +/TT10 1 Tf +1.6098 0 TD +0 Tw +(SMASHPROPSMENU)Tj +/TT8 1 Tf +8.4014 0 TD +0.0844 Tw +(, so that )Tj +/TT10 1 Tf +3.9574 0 TD +0 Tw +(GAINSPACE)Tj +/TT8 1 Tf +-39.9362 -1.2889 TD +(can also be used to purge structures that your programs have accumulated.)Tj +/TT4 1 Tf +10 0 0 10 54 347 Tm +(Using Data Types Instead of Records)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 344.29 m +510.01 344.29 l +S +BT +/TT8 1 Tf +9 0 0 9 78 322.34 Tm +0.0322 Tw +(If a program uses large numbers of large data structures, there are several advantages to representing)Tj +0 -1.2222 TD +0.1644 Tw +[(them as user data types rather than as list structures. The primary advantage is increased speed:)]TJ +T* +0.0978 Tw +(accessing and setting the fields of a data type can be significantly faster than walking through a list)Tj +T* +0 Tw +(with repeated )Tj +/TT10 1 Tf +6.4033 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +(s and )Tj +/TT10 1 Tf +2.6167 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +(s. Also, )Tj +-12.6206 -2.9556 TD +0.1889 Tw +[(Compiled code for referencing data types is usually smaller. Finally, by reducing the number of)]TJ +0 -1.2222 TD +0 Tw +(objects created \(one object against many list cells\), this can reduce the expense of garbage collection.)Tj +0 -2.8889 TD +0.0922 Tw +(User data types are declared by using the )Tj +/TT10 1 Tf +19.2729 0 TD +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0922 Tw +[( record type \(Chapter 8\). If a list structure has)]TJ +-24.0737 -1.2889 TD +0.01 Tw +(been defined using the )Tj +/TT10 1 Tf +10.3623 0 TD +0 Tw +(RECORD)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +[( record type \(Chapter 8\), and all accessing operations are written using)]TJ +-13.9629 -1.2889 TD +0.4467 Tw +(the record packages )Tj +/TT10 1 Tf +10.6847 0 TD +0 Tw +(fetch)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.9467 0 TD +(replace)Tj +/TT8 1 Tf +4.2007 0 TD +0.4467 Tw +(, and )Tj +/TT10 1 Tf +3.3362 0 TD +0 Tw +(create)Tj +/TT8 1 Tf +3.6006 0 TD +0.4467 Tw +[( operations, changing from )]TJ +/TT10 1 Tf +13.9766 0 TD +0 Tw +(RECORD)Tj +/TT8 1 Tf +3.6006 0 TD +0.4467 Tw +(s to)Tj +/TT10 1 Tf +-43.3466 -1.2889 TD +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2856 Tw +(s only requires editing the record declaration \(using )Tj +/TT10 1 Tf +25.4563 0 TD +0 Tw +(EDITREC)Tj +/TT8 1 Tf +4.2007 0 TD +0.2856 Tw +(, Chapter 8\) to replace)Tj +-34.4578 -1.2889 TD +0 Tw +(declaration type )Tj +/TT10 1 Tf +7.4272 0 TD +(RECORD)Tj +/TT8 1 Tf +3.6006 0 TD +( by )Tj +/TT10 1 Tf +1.6094 0 TD +(DATATYPE)Tj +/TT8 1 Tf +4.8008 0 TD +(, and recompiling.)Tj +-14.1047 -2.0667 TD +0.2767 Tw +[(Note:)-901.2(There are some minor disadvantages: First, there is an upper limit on the)]TJ +3.3333 -1.2222 TD +0.0844 Tw +[(number of data types that can exist. Also, space for data types is allocated two)]TJ +T* +0.1222 Tw +[(pages at a time. Each data type which has any instances allocated has at least)]TJ +T* +0.0578 Tw +(two pages assigned to it, which may be wasteful of space if there are only a few)Tj +T* +0.4156 Tw +[(examples of a given data type. These problems should not effect most)]TJ +T* +0 Tw +(applications programs.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +/TT14 18 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +50 0 obj +<< +/Length 2706 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(21-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Using Fast and Destructive Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 543.54 Tm +0.2022 Tw +(Among the functions used for manipulating objects of various data types, there are a number of)Tj +0 -1.2222 TD +0.0511 Tw +[(functions which have "fast" and "destructive" versions. You should be aware of what these functions)]TJ +T* +0 Tw +(do, and when they should be used.)Tj +0 -2.8889 TD +0.1522 Tw +[(Fast functions: By convention, a function named by prefixing an existing function name with )]TJ +/TT10 1 Tf +44.7272 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +-44.7272 -1.2889 TD +0.0544 Tw +[(indicates that the new function is a "fast" version of the old. These usually have the same definitions)]TJ +0 -1.2222 TD +0 Tw +(as the slower versions, but they compile open and run without any "safety" error checks. For example,)Tj +/TT10 1 Tf +T* +(FNTH)Tj +/TT8 1 Tf +2.4004 0 TD +0.0389 Tw +[( runs faster than )]TJ +/TT10 1 Tf +7.6067 0 TD +0 Tw +(NTH)Tj +/TT8 1 Tf +1.8003 0 TD +0.0389 Tw +(, however, it does not make as many checks \(for lists ending with anything)Tj +-11.8074 -1.2889 TD +0 Tw +(but )Tj +/TT10 1 Tf +1.8224 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[(, etc\). If these functions are given arguments that are not in the form that they expect, their)]TJ +-3.6227 -1.2889 TD +0.03 Tw +[(behavior is unpredictable; they may run forever, or cause a system error. In general, you should only)]TJ +0 -1.2222 TD +0 Tw +(use "fast" functions in code that has already been completely debugged, to speed it up.)Tj +0 -2.8889 TD +(Destructive functions: By convention, a function named by prefixing an existing function with )Tj +/TT10 1 Tf +43.0498 0 TD +(D)Tj +/TT8 1 Tf +-43.0498 -1.2889 TD +(indicates the new function is a "destructive" version of the old one, which does not make any new)Tj +0 -1.2222 TD +(structure but cannibalizes its argument\(s\). For example, )Tj +/TT10 1 Tf +25.1157 0 TD +(REMOVE)Tj +/TT8 1 Tf +3.6006 0 TD +( returns a copy of a list with a)Tj +-28.7163 -1.2889 TD +(particular element removed, but )Tj +/TT10 1 Tf +14.5552 0 TD +(DREMOVE)Tj +/TT8 1 Tf +4.2007 0 TD +( actually changes the list structure of the list.)Tj +-18.7559 -1.2889 TD +(\(Unfortunately, not all destructive functions follow this naming convention: the destructive version of)Tj +/TT10 1 Tf +0 -1.2222 TD +(APPEND)Tj +/TT8 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +(.\) You should be careful when using destructive functions that they do not)Tj +-7.8159 -1.2889 TD +(inadvertantly change data structures.)Tj +ET +endstream +endobj +51 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 13 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +8 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +52 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +53 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +54 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +55 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +56 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +57 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +58 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +59 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +60 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262243 +/FontBBox [-56 -250 868 801] +/FontName /Courier-BoldOblique +/ItalicAngle -15 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +61 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +62 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBKKJM+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 63 0 R +>> +endobj +63 0 obj +<< +/Filter /FlateDecode +/Length 20018 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($C"T0`I1pbAPo#̒ (+14)M))4|-*PRi nxj3{ߛ{o oN~{;p>{ - +Lx+ +7s/&F`=c`,#Ch/C>bq(^i筭oA}(*Bj v(o S%x|&g#y/ Bԇሙ\.D.#aWC:Pi2p8~驈G7q s#TI|EB.n*:}!94~1_+J/Xb](8d5sqƕ)$>^M8ւW`Z Eא(3f9O0,CxMЊXs ]p5ۇ#B0 +p0JQ8n|Dzn!yfBl]@lfc% x Ge-M88~ln:Hp Nhae0ypa7"Hj =i \N7~{|`b.god5,@g ,B4fiG6.6.6.e6.q+m\ecOڸ56>e6u6>k:m\o 6蜜c? UEG$Dh¤?4jt^B6!] j,sQԨjV4!-_8Z¿T0|7J")+pcѐj&VCW<+nLR\KI0hŤe1L5UVf_1٨h[=qAU +N'4ۄ:_ ߋ55:_h4@Q8GҒlˬT7irl0&wHU 1zt3C'nSꆩ+PFӶٝFfAVY6OD^177niH4'oFrZrZ7\OA7E&D4LW*vի2հ!_p[>&H#>oD|&(aW0fF3[|ڑt[&Th~% cr̝fqomYr"ݥh=)YJx=> @24#}Bg{ǝ1)ŏzS7<Ҕ? ="OEh9ыnODD%we/g4Lo^-[f^&;z1omyϮ~+e}Лk~ԛ&N\^rcMt_ yKe%|)cNrؾ:uoc5PlԸ=5^E#5xjRw}S㩑=GRRj]\.I-| ԫ +κqP+5RS.5)vwk~&\9+s\۸F.ٍY{v !MevxY)Ŷl]e핋bpv{W 7YD=aGfw \=eUy_;YYZ! p +/^rKgM=TN CmNVwYdA] ʌOfOz)-nqو9( ;YX|i'.O_x$ Ni6 yqs`7DslnMfV ][`Hw/&3?sώ&eٹ+2|q0Z2 +*:Ok 54$j e:TFת*`@[Z &@W*ШC5&sgWyy~9AoUg]$)3`J+j8q{DٽM c\ben/TIrG#c&K~3KTѩ9`aZhK9@ ٮ91R9w^Vc@"#92Z1JxQ*|z;uFR#Rp\ *| x`ku88lխL)_#Ci3\nSܙf +0=Y$ cUBFږ[<7|3C]\&P+_;۳pQq!cU/NeG>ml_+REdqP)B%EX,9s)R}N_#ؕ6y +B= +b+[v3kόQ\Q?ci TA{mkN0[E:cnӧǿNS39nN!{Wլ#Z Y9rQK3e$Ke4QBFMArVy2:k;tR1J܌[<$ֺT۽Rpnيy|2Ĺ5-]j.s{o * z~UtT5 T +Ւxr>N3 V?|N%ANcG xrmO$>.ndTgx;6=7kvH `}[  !niz2"`|y|cܽT)C5܈É82F`Fd.IDC;XqA7f@ *5̣ؗK:iy(΅a#qvI_32NIƆ22NM4[b*z:8#qu}CcJ1&حuf}pdԬ|#'6yZv 9Ɠ$A]XuΉq> Rx8=j׉]|<<{P%$ :V}%/k!K]Tg)cE Ve{ݣ2[,Co77N*)6H rmvH-u` GFw{QH;a1ѣQQg,IF2b)Ҍ~ [g[*eR.a%[?Y jTb$6Ĩ=\p0;amFDEm+N ++a$xLI0A>?g0&hVhޅ,p BO~HG9d>&ϒe0y M?.r|LN^r\"W(jNKt }>LUZFgyi3ZI܃<]I_utB_mw-3 GiY{l,Ȧ"6ٓl[^`Y={6&{b4 +|w |2Kci?_|#̷=|ch&)ÔIx⦒n™d pf3EBʌBJoJxd Hݡ?j%VVt+ZH&{DD±6cGLx5eѯ%Yt?X~' +oP%%ih&ÊQl$)nI1)؈Ds|؁ ;EgOkرyrűDjFol2l 9hqrtndzۖܣ=3nxsI ƿ^wWRf[̅Z&wp-BZurEI ֯%[(PQK4-y0!ܥ,eA讴RQ#925rk)-)ɺz$Ҏ_5Z?t0㱒H~l7=ZRmWWBܳ_*z>_B{rV2_M\wk}9'wϹ E1 +A%m +cVF݈(I&$[ʦccS5lZ+&MV$R=FP;!_Vi{"xw>~}νdX aշ-o춮֗w,1K c2 1[c؋7\ز-6ֿE53=dsKyQĢՒ*JI R0\okzÁ3-.[cYQ_z4 N.= XvBO2 R#pVf:\\'B/Z1ۭ]&[,SlPX/ s~پs"2~ @Ԣk'd}aJvҝ:Paիk]6W C^f9է3ٛ,/8ΔOa(+aYfQ: IwQ|sF΂%:m!I7p2i~s9. Q|(wBFy $8Y'T]7ꓥEA0*}ǎ[5)XU:mKln0KYVʎ6{c]qj %/i^쵁Q|czr`=ݥꊔ36f!tR|~fc:;wc7?XcӒ#?H*Zy(CF er #$BL,NƁJ11*Be,1_D2XmTbbC V|#VT8W X96c#!kE eTk\Q0GVy 1S3a>JFqtDR&y [7mp.#u ^X 8䞅fC%I9?8?c?[kwʧC}]y;vHŒq_nAE[l HߦW@o*Jn^sēwvDRyLzJ") \!JC-+ ƛN_YKXWr}@ZRIiАV%&Dr|2YUfiZAUҝ|ϓw5ȿg{y٪l$z, YU3V-MjPozGC5;f>c׬s/ak8aq+??ꆧR5vj/UIOu_Z(Dbty2mxƎ/k*յ9SWt==Ů.w9+-sf#+3M<+NnXmbku۷gfhW#|ڼyyPH&r$=idwz7:?qX<v7JFWaL{+DN$X@R_͐T^\606x_*]nAE$8oAH3+=S|^"a$u @$w!&!Y 3UX(AfUbOgիKx  ofdX1p +>/$.&ddZ$\Y@~BKJ֒::"J6#o?wI9F> g_yOor|IneI]<4NSh6)xZI + 4L7ҭ vAGzg9O/A:$QdwIR䓞<ʑUJrdguRDjI1w!K:)AvN@6(]n SƐٙ%f^6MbcX&f9,Y2؁􍸔Dσ YB_L7}"acoqhDŽ@|#Wf^BKX*a*C$ē)~M\ +YqV-7Gf}M_EҾ\{UMl;UO8;2_xlF>ķ:; 濐5ޕ<Y7 dkn ݩ_n_6b40DawjcOJ! 3RۙS38vΘ4aVu Hlg׌LxEzcq(V4~ާG~GQq^pmBf#iHl02Ih-QH 5` LK`нÄHGZi=XN/o{g:}~o^vÂ&}˸v~})mmڜ5W*" ."_r[r+wt_v%glXk']sE엊.A8TVԿm]Rcy0/i0)9 +{ff}'kxf; xt~eGIq?ڝ󶹧m<u}%s'ymwΪUGokYL$=ruB+1M|qmO +f^Aű42ᐹ!Gq>n|{|n~EGIjm޾׏5+~c&bUEU;skH٪-eWʭ;QžVJ{ásH=hfNpίޛ.:Ny@[+J'!R* 'BٹG&){*t)lD讟+ɗ4"sCN OxpDa[OM?A˷:{^CzYvw$tqGԯ䅩n]e0#ȷ>S&C;wvEzŏRH}TM#i IT_MY'4Lb\)if(CBͽ#`9Ibߞk{vWd56#G|2NF$Z1V]>'(ʁ<*b SQMMRSefA5snS?E#6Oa;/`#pGMuUTg}HCdkQUM@]UDnBe5F,RMj Ճd YOH3i!Pa${Hy%A{r>z$$&7EyW(5A4^H z :5ish~.t]C4B[GhГO5?efcQk]騶`լcalk`+*\5l*&5jCՁ +aSB-,{ +%5x|,%EP{j{PH^8BA]Aq3&"-QYpJQ襴ϒv镔F .ʭlJC)i>4v/>t}2Xݙ<D4 3A=&e]#* Wɠ'I(1 }UM!]Ѧ+VUg jKRb e}EC%p;wI|iXHG$ *&< ł01O4ފ,6YXɍGT)' PlYϿ@ż7I>OSL|A ƥ oB!%_jA=ӌPTFAq# wS;u#y_ +P E Z &ڍva2;=j@uC7&PyMw mEw`Ɛ{^T"|r" #W `@/7_/,x^{,d Y4 胙AUK…M0h1R0r[eV/Sa[b~u$uDAb=;{_3[4>-^ ,hXe1XdateYUè> Ba`C }QrGKyϸaؼT5eag{rdnY朅{`N5Eh"yF\tZP'd=CȦ-lgl6@hasD6r]fZU™J@,B tKe*ѣca8PE&Xp}EB֘ ?-]@-F|[jawim#DL5DsmW. 3G]U5zHps6;dٹ$fe&z Dbv;,; ,.:4H^0u.˅yPwBK&2TE 5y {")iҘ'zBFYo;oelKۏBXeK-x_`(A|N`q˔ȦJfAuS%sV}2ˋſɯ82nwڷ3G.>D0GJJny@(( `DeNCr]!Q#UkABK}dRpƠ*U8nfwk'm@H̃|;;ƑfC Yp*ӕѪ׵3ɴȚ[Уxd% 4ZEMZUMÚ{)nj8K猿˳,_=.J흹/hƆKËW,LϘWʑf!K 6!pYzk1m7E|l2;ǥzr4`j)VYd5-(]?)Kny7[F v^] Df)(멢.-fϮ>ZTkG "(y|ZlXvc蔎Y٥ض2Yk-Lz[߶q壻.>g: Zl1h߱XF s P]HxJIն4Es^Ev) I{2/bŔ}Q\tZ1l[z¤! +i("!u8J:,xa3r :;2n:(-\iqD^xc^ы,rmj:r]CTsQYg=Z8.pp0I m0PlaBdA 5}X ᢦ]!sd̳]4݆Եk [Zm=¾Zh MyF=N#|S[!•ЕYLYqF,B:љSHjI=J ͩ[haۺ؂w-vm3rLuicrC8^Pz-pF/: +xw-e:]NK ׀8DG lhI RPBBfO+o}۳p -;I 6=Pu8^b0^\@c')# u!bR pk֒s!>i@-.FE>bfC+ZuZ|`],(#8^ >vYN/2ZHiIZ XyaZ`0~(8BĪs_Z1N=l⠴ Jܭ [QNB*-({֩="E߻՞CtšTz@Zㅭ}cNF=(nd*x=a-~^9dbN)#O`Π}7c +гHKqba9B@3ZB5-&XV qofNSS 6[+Ov00tVWxԍ&,5F5aYW(p "k-i -Iw NZ~ XO߅mg%Ф9vim# -Bз7J4÷<<y sX>?_K=4-x7B0F%?"E[*Y'[)gʗ)pZU~JyQq<.,b< Qh[\kE0 օ(jyhSk=`L7Hצh㨨UcL|&NJw~G8x;̽w7wnI9J;g֛%6egl.[jmbY]`WX; zxȟi|'LfQ~RS$4L#KS +i(N$}(Ke.9MΒd%\^$.[= ”#%WR(U;Lk*#I/ҩ2UUIjPj:LE*9#.U H83(ڃD2QY]@ ҃j$$Yz4ҞX$Q dhE:<+j0W(1 ~K]#Lhga8B(%‡_@ TF Ad:b . !H#7c0(b#6!'5CN"}H F*8 g>D$ap 0⬅(!u@~PGub $p;pĺ%yPP zx\$i?QߵW]=Ly宩ƅgN zPZ5goskI|nĺBbr-;1e-/sKsޙx\Mթn[Rvy^g^q-$}z%˂$мEmȵך55$7fsMG<s-g0b|gt$R\iv9caф(52]ѻYݺ/n`_<~|aZUt$e3*NYWnVgwA3jbe\q]_Kdř\1M6~5̾myԮ 4uq}"EdLq%%N'z +LK^wEG+o3S~8}=;F$D=[ CZ+ =~O C|̷&N^2̼fkbV[ Vvn8ag<\uhψhқđxDRI:LLb'd4G&L%Bf +2jԒ%5ߐ&k1@| {Ar|BN0/D|M fML1t:fR;ͣc1gt":N30w,0K2ѳ Gt݅az~DOEz^_ޢ4ccp3#YX,,%'Yʺgw$)0L$%QNJDQ1h7bAd}d]RLuA  `ݕOp+4 pXXI gR+ +R,X jjx3y5o۫ צMq'*Jqӱ,pZ|6Wj5~BeAetЉFa֑s89}{fwZ,Zof\h~w7=&8sx +V ]^pl>py]z1`ۺ t؂?YRxʓ`Kls#R#5u61vK'jeWxߵRv Y|Crca"ȵ4#p _k#?\~N5mwuBPKoQKB!Q-foSoߤ$ש#?{RG6qX!9 }~#y?n@pFx{yx/Ňz̿Q:;E5*G~\2C{H7bA<"iڔzSw? +=R>_ۇר]=BlE _+=>It!$!/qk+ +o(cZ|IjkWrfZr\@@ } ^?"G)wr|~@^Xu?zvHD"O\-|q~O'侺v4~=.k4}B}k/\2_Z=`mV g2xo!Pp.is5$ Mҁu(90qb0:L-Z6pQsȉ#ei\3 ͩ =;;VɠGHB3>"^`94wt; Zm=jq3z$Go6$Ac0eƅڱ Y .vVY'G4EZ :_Yl>PKG5a5ɅR &+qϵ C>k$9Dk,Zwx6 Ap> ܀LXP}^-V-O- j(T@gQGcȈ@ +2썐lD|VtZs^Cki~+-ED5lqrM A%1@䲀? t Yjk]i0OW3'HWS:[+_ǁd}:BI;Uӕ•d4/56Ev;>4UC_Q4@-Ą9DKb!I:3+Ь ]Xs*?7YF- j4|j[yn'[#N-\PCzJan8T]` 7s5}Q$Cː zlc/Iccfv֯m)T}SuFٞʚgq114&]"XH iC"&fA:nYV:xÈad +5Zfܚ 24jS$ʒIc sU0plHݗd{3y᯿yoOG|Wgݝ;ُ/+\U"BP hH"FTԊRh Q$&*h1h +AMjw|W4 /;Ltw~߹~ZPlʹ C_ZLv_Gҥ)qn<~.=U'?ܙ]eg13):wbжxMKBY+k5m9=zfݸZeƐumQ%{n7b@ky^N͝%;'ۿ¢iG|صbv`i Z,>v$}{cީ5W4oνwJ,NK+˻>pV:;7NehĩY-UϏy)[ve-ʝtbaő3̱ǧ0zheu*Sy%û ~soٱziK8/qWBŷejn.ײ[vmR|h鈡B.rY>]tQa]W:w9Uqde­:VMaY즣l2$$}yLy1bꤔJ[?'lьڪt'/Ӭ8イZHNd$%gJWH/8%F-TJS)Ʀqϔy"h'l7 +yJCfIECOEim޴2(F>8hh3hS1FrGg*$YHÐ%d $A1 |>{]=x;>9oBA鏤 Y _W%"- ~ ~~ w?vr `YI[lӐO jd~ la| < +!<ցty\=9k /42P59ܑcK5U +ɺ*|W0槴dޓ*~'v?}*0r=-th/-Љia)=S?B!~'z/^ BN'42mGmdb~k"mYcD/17B\7p-\j2BbXW+L0 +Y.흥2d +b>(Qu[ْK>5%s*Xdb _EBʁ/`6o,>lbfVO5F՟ K&9b3[EX؄FtIg4p*8L'ȽqNN? xȯ8p,^FeDt4(Fb6  FȵesB!0 y(841 ȁ`y +>TAA?rb$//x`2O/R;f9s*~ +7U=l.F!\N.Ghz@-ڃv˜j>]eEH-Z0} +k5ড়~4$IcKYAʏ~n%v%Sռ"Op;Zɋ%.;Tz;shz-' ;Ӈ7W_xɋ~[՟eov|ȇIW%}9iy[~TY<'`r"`C9d8 pjM">b|HPg;hESz3_BZaNė竛R-]ؤJRKv*67@3g]zg}dGw%5Yr {/$JV+$;<>`VJJEi/;_2vwtw.FcPGǻIKNjRQe%mOJI}UmG-9j> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 0 278 0 722 0 833 722 778 +667 0 722 667 611 722 667 944 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 0 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 0 0 556 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 53 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 54 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 148 +/Widths [250 0 371 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 0 250 250 0 0 606 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 55 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 600 600 600 0 0 600 600 600 0 600 600 600 0 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 56 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 46 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 600 600 600 600 600 600 600 0 600 0 600 600 600 +600 600 600 0 600 600 600 600 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 57 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 35 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 600 0 0 600 0 +0 0 0 0 0 600 0 0 0 0 0 0 0 0 600 600 +600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 +600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 58 0 R +>> +endobj +19 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 116 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 0 0 0 389 0 0 0 0 0 0 278 0 556 444 +0 0 389 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 59 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 56 +/LastChar 84 +/Widths [600 0 0 0 0 0 0 0 0 600 600 600 600 600 600 0 +0 0 0 0 0 600 0 600 0 0 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-BoldOblique +/FontDescriptor 60 0 R +>> +endobj +27 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [250 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 61 0 R +>> +endobj +37 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBKKJM+Symbol +/Encoding /Identity-H +/DescendantFonts [ 64 0 R ] +/ToUnicode 65 0 R +>> +endobj +64 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBKKJM+Symbol +/FontDescriptor 62 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +65 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPN0 91$nAK8D {.qK$Dn:IJ{lyi[ acᆣ'48omN&nN- Z<zT'WvȞ gF%o(hp8yy1LkD[_E64"JUs$~n2,m]=F/r݈]H ߉!Gu3j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +10 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 12 0 R +/Contents 11 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +49 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 51 0 R +/Contents 50 0 R +>> +endobj +66 0 obj +<< +/S /D +>> +endobj +67 0 obj +<< +/Nums [0 66 0 R ] +>> +endobj +9 0 obj +<< +/Type /Pages +/Kids [1 0 R 10 0 R 14 0 R 20 0 R 24 0 R 28 0 R 31 0 R 34 0 R 38 0 R 41 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [44 0 R 49 0 R] +/Count 2 +/Parent 47 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [9 0 R 48 0 R ] +/Count 12 +/MediaBox [0 0 612 792] +>> +endobj +68 0 obj +<< +/CreationDate (D:20210202102705-06'00') +/ModDate (D:20210202102705-06'00') +/Producer (Apple pstopdf) +>> +endobj +69 0 obj +<< +/Type /Catalog +/Pages 47 0 R +/PageLabels 67 0 R +>> +endobj +xref +0 70 +0000000000 65535 f +0000095980 00000 n +0000000016 00000 n +0000004514 00000 n +0000091814 00000 n +0000092025 00000 n +0000092521 00000 n +0000092827 00000 n +0000069366 00000 n +0000097043 00000 n +0000096060 00000 n +0000004642 00000 n +0000009003 00000 n +0000093380 00000 n +0000096143 00000 n +0000009134 00000 n +0000015741 00000 n +0000093924 00000 n +0000094223 00000 n +0000094558 00000 n +0000096226 00000 n +0000015911 00000 n +0000021211 00000 n +0000094918 00000 n +0000096309 00000 n +0000021381 00000 n +0000026631 00000 n +0000095173 00000 n +0000096392 00000 n +0000026812 00000 n +0000031983 00000 n +0000096475 00000 n +0000032151 00000 n +0000040899 00000 n +0000096558 00000 n +0000041093 00000 n +0000046357 00000 n +0000095343 00000 n +0000096641 00000 n +0000046551 00000 n +0000052738 00000 n +0000096724 00000 n +0000052908 00000 n +0000059741 00000 n +0000096807 00000 n +0000059935 00000 n +0000066310 00000 n +0000097260 00000 n +0000097179 00000 n +0000096891 00000 n +0000066465 00000 n +0000069224 00000 n +0000069506 00000 n +0000069703 00000 n +0000069909 00000 n +0000070104 00000 n +0000070304 00000 n +0000070495 00000 n +0000070697 00000 n +0000070898 00000 n +0000071101 00000 n +0000071311 00000 n +0000071516 00000 n +0000071706 00000 n +0000095486 00000 n +0000095689 00000 n +0000096975 00000 n +0000097003 00000 n +0000097351 00000 n +0000097474 00000 n +trailer +<< +/Size 70 +/Root 69 0 R +/Info 68 0 R +/ID [<1b34198b4310462266403840db83d26f><1b34198b4310462266403840db83d26f>] +>> +startxref +97544 +%%EOF diff --git a/docs/medley-irm/22-PERFORMANCE.TEDIT b/docs/medley-irm/22-PERFORMANCE.TEDIT new file mode 100644 index 00000000..aa16e1f4 --- /dev/null +++ b/docs/medley-irm/22-PERFORMANCE.TEDIT @@ -0,0 +1,64 @@ +1 Interlisp-D Reference Manual 1 Interlisp-D Reference Manual 22. PERFORMANCE ISSUES 1 22. PERFORMANCE ISSUES 1 "22"22. PERFORMANCE ISSUES 6 This chapter describes a number of areas that often contribute to performance problems in Interlisp-D programs. Many performance problems can be improved by optimizing the use of storage, since allocating and reclaiming large amounts of storage is expensive. Another tactic that can sometimes yield performance improvements is to change the use of variable bindings on the stack to reduce variable lookup time. There are a number of tools that can be used to determine which parts of a computation cause performance bottlenecks. Storage Allocation and Garbage Collection 1 As an Interlisp-D applications program runs, it creates data structures (allocated out of free storage space), manipulates them, and then discards them. If there were no way of reclaiming this space, over time the Interlisp-D memory (both the physical memory in the machine and the virtual memory stored on the disk) would fill up, and the computation would come to a halt. Actually, long before this could happen the system would probably become intolerably slow, due to "data fragmentation," which occurs when the data currently in use are spread over many virtual memory pages, so that most of the computer time must be spent swapping disk pages into physical memory. The problem of fragmentation will occur in any situation where the virtual memory is significantly larger than the real physical memory. To reduce swapping, it is desirable to keep the "working set" (the set of pages containing actively referenced data) as small as possible. It is possible to write programs that don't generate much "garbage" data, or which recycle data, but such programs tend to be overly complicated and difficult to debug. Spending effort writing such programs defeats the whole point of using a system with automatic storage allocation. An important part of any Lisp implementation is the "garbage collector" which identifies discarded data and reclaims its space. There are several well-known approaches to garbage collection. One method is the traditional mark-and-sweep garbage collection algorithm, which identifies "garbage" data by marking all accessible data structures, and then sweeping through the data spaces to find all unmarked objects (i.e., not referenced by any other object). Although this method is guaranteed to reclaim all garbage, it takes time proportional to the number of allocated objects, which may be very large. (Some allocated objects will have been marked during the "mark" phase, and the remainder will be collected during the "sweep" phase; so all will have to be touched in some way.) Also, the time that a mark-and-sweep garbage collection takes is independent of the amount of garbage collected; it is possible to sweep through the whole virtual memory, and only recover a small amount of garbage. For interactive applications, it is not acceptable to have long interruptions in a computation for the purpose of garbage collection. Interlisp-D solves this problem by using a reference-counting garbage collector. With this scheme, there is a table containing counts of how many times each object is referenced. This table is incrementally updated as pointers are created and discarded, incurring a small overhead distributed over the computation as a whole. (Note: References from the stack are not counted, but are handled separately at "sweep" time; thus the vast majority of data manipulations do not cause updates to this table.) At opportune moments, the garbage collector scans this table, and reclaims all objects that are no longer accessible (have a reference count of zero). The pause while objects are reclaimed is only the time for scanning the reference count tables (small) plus time proportional to the amount of garbage that has to be collected (typically less than a second). "Opportune" times occur when a certain number of cells have been allocated or when the system has been waiting for the user to type something for long enough. The frequency of garbage collection is controlled by the functions and variables described below. For the best system performance, it is desirable to adjust these parameters for frequent, short garbage collections, which will not interrupt interactive applications for very long, and which will have the added benefit of reducing data fragmentation, keeping the working set small. One problem with the Interlisp-D garbage collector is that not all garbage is guaranteed to be collected. Circular data structures, which point to themselves directly or indirectly, are never reclaimed, since their reference counts are always at least one. With time, this unreclaimable garbage may increase the working set to unacceptable levels. Some users have worked with the same Interlisp-D virtual memory for a very long time, but it is a good idea to occasionally save all of your functions in files, reinitialize Interlisp-D, and rebuild your system. Many users end their working day by issuing a command to rebuild their system and then leaving the machine to perform this task in their absence. If the system seems to be spending too much time swapping (an indication of fragmented working set), this procedure is definitely recommended. Garbage collection in Interlisp-D is controlled by the following functions and variables: (RECLAIM(RECLAIM (Function) NIL NIL ("22") 2)) [Function] Initiates a garbage collection. Returns 0. (RECLAIMMIN(RECLAIMMIN (Function) NIL NIL ("22") 2) N) [Function] Sets the frequency of garbage collection. Interlisp keeps track of the number of cells of any type that have been allocated; when it reaches a given number, a garbage collection occurs. If N is non-NIL, this number is set to N. Returns the current setting of the number. RECLAIMWAIT(RECLAIMWAIT (Variable) NIL NIL ("22") 2) [Variable] Interlisp-D will invoke a RECLAIM if the system is idle and waiting for your input for RECLAIMWAIT seconds (currently set for 4 seconds). (GCGAG(GCGAG (Function) NIL NIL ("22") 2) MESSAGE) [Function] Sets the behavior that occurs while a garbage collection is taking place. If MESSAGE is non-NIL, the cursor is complemented during a RECLAIM; if MESSAGE=NIL, nothing happens. The value of GCGAG is its previous setting. (GCTRP(GCGAG (Function) NIL NIL ("22") 2)) [Function] Returns the number of cells until the next garbage collection, according to the RECLAIMMIN number. The amount of storage allocated to different data types, how much of that storage is in use, and the amount of data fragmentation can be determined using the following function: (STORAGE(STORAGE (Function) NIL NIL ("22") 2) TYPES PAGETHRESHOLD) [Function] STORAGE prints out a summary, for each data type, of the amount of space allocated to the data type, and how much of that space is currently in use. If TYPES is non-NIL, STORAGE only lists statistics for the specified types. TYPES can be a litatom or a list of types. If PAGETHRESHOLD is non-NIL, then STORAGE only lists statistics for types that have at least PAGETHRESHOLD pages allocated to them. STORAGE prints out a table with the column headings Type, Assigned, Free Items, In use, and Total alloc. Type is the name of the data type. Assigned is how much of your virtual memory is set aside for items of this type. Currently, memory is allocated in quanta of two pages (1024 bytes). The numbers under Assigned show the number of pages and the total number of items that fit on those pages. Free Items shows how many items are available to be allocated (using the create construct, Chapter 8); these constitute the "free list" for that data type. In use shows how many items of this type are currently in use, i.e., have pointers to them and hence have not been garbage collected. If this number is higher than your program seems to warrant, you may want to look for storage leaks. The sum of Free Items and In use is always the same as the total Assigned items. Total alloc is the total number of items of this type that have ever been allocated (see BOXCOUNT, in the Performance Measuring section below). Note: The information about the number of items of type LISTP is only approximate, because list cells are allocated in a special way that precludes easy computation of the number of items per page. Note: When a data type is redeclared, the data type name is reassigned. Pages which were assigned to instances of the old data type are labeled **DEALLOC**. At the end of the table printout, STORAGE prints a "Data Spaces Summary" listing the number of pages allocated to the major data areas in the virtual address space: the space for fixed-length items (including datatypes), the space for variable-length items, and the space for litatoms. Variable-length data types such as arrays have fixed-length "headers," which is why they also appear in the printout of fixed-length data types. Thus, the line printed for the BITMAP data type says how many bitmaps have been allocated, but the "assigned pages" column counts only the headers, not the space used by the variable-length part of the bitmap. This summary also lists "Remaining Pages" in relation to the largest possible virtual memory, not the size of the virtual memory backing file in use. This file may fill up, causing a STORAGE FULL error, long before the "Remaining Pages" numbers reach zero. STORAGE also prints out information about the sizes of the entries on the variable-length data free list. The block sizes are broken down by the value of the variable STORAGE.ARRAYSIZES, initially (4 16 64 256 1024 4096 16384 NIL), which yields a printout of the form: variable-datum free list: le 4 26 items; 104 cells. le 16 72 items; 783 cells. le 64 36 items; 964 cells. le 256 28 items; 3155 cells. le 1024 3 items; 1175 cells. le 4096 5 items; 8303 cells. le 16384 3 items; 17067 cells. others 1 items; 17559 cells. This information can be useful in determining if the variable-length data space is fragmented. If most of the free space is composed of small items, then the allocator may not be able to find room for large items, and will extend the variable datum space. If this is extended too much, this could cause an ARRAYS FULL error, even if there is a lot of space left in little chunks. (STORAGE.LEFT(STORAGE.LEFT (Function) NIL NIL ("22") 4)) [Function] Provides a programmatic way of determining how much storage is left in the major data areas in the virtual address space. Returns a list of the form (MDSFREE MDSFRAC 8MBFRAC ATOMFREE ATOMFRAC), where the elements are interpreted as follows: MDSFREE The number of free pages left in the main data space (which includes both fixed-length and variable-length data types). MDSFRAC The fraction of the total possible main data space that is free. 8MBFRAC The fraction of the total main data space that is free, relative to eight megabytes. This number is useful when using Interlisp-D on some early computers where the hardware limits the address space to eight megabytes. The function 32MBADDRESSABLE returns non-NIL if the currently running Interlisp-D system can use the full 32 megabyte address space. ATOMFREE The number of free pages left in the litatom space. ATOMFRAC The fraction of the total litatom space that is free. Note: Another important space resource is the amount of the virtual memory backing file in use (see VMEMSIZE, Chapter 12). The system will crash if the virtual memory file is full, even if the address space is not exhausted. Variable Bindings 1 Different implementations of lisp use different methods of accessing free variables. The binding of variables occurs when a function or a PROG is entered. For example, if the function FOO has the definition (LAMBDA (A B) BODY), the variables A and B are bound so that any reference to A or B from BODY or any function called from BODY will refer to the arguments to the function FOO and not to the value of A or B from a higher level function. All variable names (litatoms) have a top level value cell which is used if the variable has not been bound in any function. In discussions of variable access, it is useful to distinquish between three types of variable access: local, special and global. Local variable access is the use of a variable that is bound within the function from which it is used. Special variable access is the use of a variable that is bound by another function. Global variable access is the use of a variable that has not been bound in any function. We will often refer to a variable all of whose accesses are local as a "local variable." Similarly, a variable all of whose accesses are global we call a "global variable." In a "deep" bound system, a variable is bound by saving on the stack the variable's name together with a value cell which contains that variable's new value. When a variable is accessed, its value is found by searching the stack for the most recent binding (occurrence) and retrieving the value stored there. If the variable is not found on the stack, the variable's top level value cell is used. In a "shallow" bound system, a variable is bound by saving on the stack the variable name and the variable's old value and putting the new value in the variable's top level value cell. When a variable is accessed, its value is always found in its top level value cell. The deep binding scheme has one disadvantage: the amount of cpu time required to fetch the value of a variable depends on the stack distance between its use and its binding. The compiler can determine local variable accesses and compiles them as fetches directly from the stack. Thus this computation cost only arises in the use of variable not bound in the local frame ("free" variables). The process of finding the value of a free variable is called free variable lookup. In a shallow bound system, the amount of cpu time required to fetch the value of a variable is constant regardless of whether the variable is local, special or global. The disadvantages of this scheme are that the actual binding of a variable takes longer (thus slowing down function call), the cells that contain the current in use values are spread throughout the space of all litatom value cells (thus increasing the working set size of functions) and context switching between processes requires unwinding and rewinding the stack (thus effectively prohibiting the use of context switching for many applications). Interlisp-D uses deep binding, because of the working set considerations and the speed of context switching. The free variable lookup routine is microcoded, thus greatly reducing the search time. In benchmarks, the largest percentage of free variable lookup time was 20 percent of the total ellapsed time; the normal time was between 5 and 10 percent. One consequence of Interlisp-D's deep binding scheme is that users may significantly improve performance by declaring global variables in certain situations. If a variable is declared global, the compiler will compile an access to that variable as a retrieval of its top level value, completely bypassing a stack search. This should be done only for variables that are never bound in functions, such as global databases and flags. Global variable declarations should be done using the GLOBALVARS file package command (Chapter 17). Its form is (GLOBALVARS VAR1 ... VARN). Another way of improving performance is to declare variables as local within a function. Normally, all variables bound within a function have their names put on the stack, and these names are scanned during free variable lookup. If a variable is declared to be local within a function, its name is not put on the stack, so it is not scanned during free variable lookup, which may increase the speed of lookups. The compiler can also make some other optimizations if a variable is known to be local to a function. A variable may be declared as local within a function by including the form (DECLARE (LOCALVARS VAR1 ... VARN)) following the argument list in the definition of the function. Local variable declarations only effect the compilation of a function. Interpreted functions put all of their variable names on the stack, regardless of any declarations. Performance Measuring 1 This section describes functions that gather and display statistics about a computation, such as as the elapsed time, and the number of data objects of different types allocated. TIMEALL and TIME gather statistics on the evaluation of a specified form. BREAKDOWN gathers statistics on individual functions called during a computation. These functions can be used to determine which parts of a computation are consuming the most resources (time, storage, etc.), and could most profitably be improved. (TIMEALL(TIMEALL (Function) NIL NIL ("22") 5) TIMEFORM NUMBEROFTIMES TIMEWHAT INTERPFLG %) [NLambda Function] Evaluates the form TIMEFORM and prints statistics on time spent in various categories (elapsed, keyboard wait, swapping time, gc) and data type allocation. For more accurate measurement on small computations, NUMBEROFTIMES may be specified (its default is 1) to cause TIMEFORM to be executed NUMBEROFTIMES times. To improve the accuracy of timing open-coded operations in this case, TIMEALL compiles a form to execute TIMEFORM NUMBEROFTIMES times (unless INTERPFLG is non-NIL), and then times the execution of the compiled form. Note: If TIMEALL is called with NUMBEROFTIMES>1, the dummy form is compiled with compiler optimizations on. This means that it is not meaningful to use TIMEALL with very simple forms that are optimized out by the compiler. For example, (TIMEALL '(IPLUS 2 3) 1000) will time a compiled function which simply returns the number 5, since (IPLUS 2 3) is optimized to the integer 5. TIMEWHAT restricts the statistics to specific categories. It can be an atom or list of datatypes to monitor, and/or the atom TIME to monitor time spent. Note that ordinarily, TIMEALL monitors all time and datatype usage, so this argument is rarely needed. TIMEALL returns the value of the last evaluation of TIMEFORM. (TIME(TIME (Function) NIL NIL ("22") 6) TIMEX TIMEN TIMETYP) [NLambda Function] TIME evaluates the form TIMEX, and prints out the number of CONS cells allocated and computation time. Garbage collection time is subtracted out. This function has been largely replaced by TIMEALL. If TIMEN is greater than 1, TIMEX is executed TIMEN times, and TIME prints out (number of conses)/TIMEN, and (computation time)/TIMEN. If TIMEN=NIL, it defaults to 1. This is useful for more accurate measurement on small computations. If TIMETYP is 0, TIME measures and prints total real time as well as computation time. If TIMETYP = 3, TIME measures and prints garbage collection time as well as computation time. If TIMETYP=T, TIME measures and prints the number of pagefaults. TIME returns the value of the last evaluation of TIMEX. (BOXCOUNT(BOXCOUNT (Function) NIL NIL ("22") 6) TYPE N) [Function] Returns the number of data objects of type TYPE allocated since this Interlisp system was created. TYPE can be any data type name (see TYPENAME, Chapter 8). If TYPE is NIL, it defaults to FIXP. If N is non-NIL, the corresponding counter is reset to N. (CONSCOUNT(CONSCOUNT (Function) NIL NIL ("22") 6) N) [Function] Returns the number of CONS cells allocated since this Interlisp system was created. If N is non-NIL, resets the counter to N. Equivalent to (BOXCOUNT 'LISTP N). (PAGEFAULTS(PAGEFAULTS (Function) NIL NIL ("22") 6)) [Function] Returns the number of page faults since this Interlisp system was created. BREAKDOWN 1 TIMEALL collects statistics for whole computations. BREAKDOWN is available to analyze the breakdown of computation time (or any other measureable quantity) function by function. (BREAKDOWN(BREAKDOWN (Function) NIL NIL ("22") 7) FN1 ... FNN) [NLambda NoSpread Function] The user calls BREAKDOWN giving it a list of function names (unevaluated). These functions are modified so that they keep track of various statistics. To remove functions from those being monitored, simply UNBREAK (Chapter 15) the functions, thereby restoring them to their original state. To add functions, call BREAKDOWN on the new functions. This will not reset the counters for any functions not on the new list. However (BREAKDOWN) will zero the counters of all functions being monitored. The procedure used for measuring is such that if one function calls other and both are "broken down", then the time (or whatever quantity is being measured) spent in the inner function is not charged to the outer function as well. BREAKDOWN will not give accurate results if a function being measured is not returned from normally, e.g., a lower RETFROM (or ERROR) bypasses it. In this case, all of the time (or whatever quantity is being measured) between the time that function is entered and the time the next function being measured is entered will be charged to the first function. (BRKDWNRESULTS(BRKDWNRESULTS (Function) NIL NIL ("22") 7) RETURNVALUESFLG) [Function] BRKDWNRESULTS prints the analysis of the statistics requested as well as the number of calls to each function. If RETURNVALUESFLG is non-NIL, BRKDWNRESULTS will not to print the results, but instead return them in the form of a list of elements of the form (FNNAME #CALLS VALUE). Example: (BREAKDOWN SUPERPRINT SUBPRINT COMMENT1) (SUPERPRINT SUBPRINT COMMENT1) (PRETTYDEF '(SUPERPRINT) 'FOO) FOO.;3 (BRKDWNRESULTS) FUNCTIONS TIME #CALLS PER CALL % SUPERPRINT 8.261 365 0.023 20 SUBPRINT 31.910 141 0.226 76 COMMENT1 1.612 8 0.201 4 TOTAL 41.783 514 0.081 NIL (BRKDWNRESULTS T) ((SUPERPRINT 365 8261) (SUBPRINT 141 31910) (COMMENT1 8 1612)) BREAKDOWN can be used to measure other statistics, by setting the following variables: BRKDWNTYPE(BRKDWNTYPE (Variable) NIL NIL ("22") 7) [Variable] To use BREAKDOWN to measure other statistics, before calling BREAKDOWN, set the variable BRKDWNTYPE to the quantity of interest, e.g., TIME, CONSES, etc, or a list of such quantities. Whenever BREAKDOWN is called with BRKDWNTYPE not NIL, BREAKDOWN performs the necessary changes to its internal state to conform to the new analysis. In particular, if this is the first time an analysis is being run with a particular statistic, a measuring function will be defined, and the compiler will be called to compile it. The functions being broken down will be redefined to call this measuring function. When BREAKDOWN is through initializing, it sets BRKDWNTYPE back to NIL. Subsequent calls to BREAKDOWN will measure the new statistic until BRKDWNTYPE is again set and a new BREAKDOWN performed. BRKDWNTYPES(BRKDWNTYPES (Variable) NIL NIL ("22") 8) [Variable] The list BRKDWNTYPES contains the information used to analyze new statistics. Each entry on BRKDWNTYPES should be of the form (TYPE FORM FUNCTION), where TYPE is a statistic name (as would appear in BRKDWNTYPE), FORM computes the statistic, and FUNCTION (optional) converts the value of form to some more interesting quantity. For example, (TIME (CLOCK 2) (LAMBDA (X) (FQUOTIENT X 1000))) measures computation time and reports the result in seconds instead of milliseconds. BRKDWNTYPES currently contains entries for TIME, CONSES, PAGEFAULTS, BOXES, and FBOXES. Example: (SETQ BRKDWNTYPE '(TIME CONSES)) (TIME CONSES) (BREAKDOWN MATCH CONSTRUCT) (MATCH CONSTRUCT) (FLIP '(A B C D E F G H C Z) '(.. $1 .. #2 ..) '(.. #3 ..)) (A B D E F G H Z) (BRKDWNRESULTS) FUNCTIONS TIME #CALLS PER CALL % MATCH 0.036 1 0.036 54 CONSTRUCT 0.031 1 0.031 46 TOTAL 0.067 2 0.033 FUNCTIONS CONSES #CALLS PER CALL % MATCH 32 1 32.000 40 CONSTRUCT 49 1 49.000 60 TOTAL 81 2 40.500 NIL Occasionally, a function being analyzed is sufficiently fast that the overhead involved in measuring it obscures the actual time spent in the function. If you were using TIME, you would specify a value for TIMEN greater than 1 to give greater accuracy. A similar option is available for BREAKDOWN. You can specify that a function(s) be executed a multiple number of times for each measurement, and the average value reported, by including a number in the list of functions given to BREAKDOWN. For example, BREAKDOWN(EDITCOM EDIT4F 10 EDIT4E EQP) means normal breakdown for EDITCOM and EDIT4F but executes (the body of) EDIT4E and EQP 10 times each time they are called. Of course, the functions so measured must not cause any harmful side effects, since they are executed more than once for each call. The printout from BRKDWNRESULTS will look the same as though each function were run only once, except that the measurement will be more accurate. Another way of obtaining more accurate measurement is to expand the call to the measuring function in-line. If the value of BRKDWNCOMPFLG is non-NIL (initially NIL), then whenever a function is broken-down, it will be redefined to call the measuring function, and then recompiled. The measuring function is expanded in-line via an appropriate macro. In addition, whenever BRKDWNTYPE is reset, the compiler is called for all functions for which BRKDWNCOMPFLG was set at the time they were originally broken-down, i.e. the setting of the flag at the time a function is broken-down determines whether the call to the measuring code is compiled in-line. GAINSPACE 1 If you have large programs and databases, you may sometimes find yourself in a situation where you need to obtain more space, and are willing to pay the price of eliminating some or all of the context information that the various user-assistance facilities such as the programmer's assistant, file package, CLISP, etc., have accumulated during the course of his session. The function GAINSPACE provides an easy way to selectively throw away accumulated data: (GAINSPACE(GAINSPACE (Function) NIL NIL ("22") 9)) [Function] Prints a list of deletable objects, allowing you to specify at each point what should be discarded and what should be retained. For example: (GAINSPACE) purge history lists ? Yes purge everything, or just the properties, e.g., SIDE, LISPXPRINT, etc. ? just the properties discard definitions on property lists ? Yes discard old values of variables ? Yes erase properties ? No erase CLISP translations? Yes GAINSPACE is driven by the list GAINSPACEFORMS. Each element on GAINSPACEFORMS is of the form (PRECHECK MESSAGE FORM KEYLST). If PRECHECK, when evaluated, returns NIL, GAINSPACE skips to the next entry. For example, you will not be asked whether or not to purge the history list if it is not enabled. Otherwise, ASKUSER (Chapter 26) is called with the indicated MESSAGE and the (optional) KEYLST. If you respond No, i.e., ASKUSER returns N, GAINSPACE skips to the next entry. Otherwise, FORM is evaluated with the variable RESPONSE bound to the value of ASKUSER. In the above example, the FORM for the "purge history lists" question calls ASKUSER to ask "purge everything, ..." only if you had responded Yes. If you had responded with Everything, the second question would not have been asked. The "erase properties" question is driven by a list SMASHPROPSMENU. Each element on this list is of the form (MESSAGE . PROPS). You are prompted with MESSAGE (by ASKUSER), and if your response is Yes, PROPS is added to the list SMASHPROPS. The "discard definitions on property lists" and "discard old values of variables" questions also add to SMASHPROPS. You will not be prompted for any entry on SMASHPROPSMENU for which all of the corresponding properties are already on SMASHPROPS. SMASHPROPS is initially set to the value of SMASHPROPSLST. This permits you to specify in advance those properties which you always want discarded, and not be asked about them subsequently. After finishing all the entries on GAINSPACEFORMS, GAINSPACE checks to see if the value of SMASHPROPS is non-NIL, and if so, does a MAPATOMS, i.e., looks at every atom in the system, and erases the indicated properties. You can change or add new entries to GAINSPACEFORMS or SMASHPROPSMENU, so that GAINSPACE can also be used to purge structures that your programs have accumulated. Using Data Types Instead of Records 1 If a program uses large numbers of large data structures, there are several advantages to representing them as user data types rather than as list structures. The primary advantage is increased speed: accessing and setting the fields of a data type can be significantly faster than walking through a list with repeated CARs and CDRs. Also, compiled code for referencing data types is usually smaller. Finally, by reducing the number of objects created (one object against many list cells), this can reduce the expense of garbage collection. User data types are declared by using the DATATYPE record type (Chapter 8). If a list structure has been defined using the RECORD record type (Chapter 8), and all accessing operations are written using the record package's fetch, replace, and create operations, changing from RECORDs to DATATYPEs only requires editing the record declaration (using EDITREC, Chapter 8) to replace declaration type RECORD by DATATYPE, and recompiling. Note: There are some minor disadvantages with allocating new data types: First, there is an upper limit on the number of data types which can exist. Also, space for data types is allocated a page at a time, so each data type has at least one page assigned to it, which may be wasteful of space if there are only a few examples of a given data type. These problems should not effect most applications programs. Using Incomplete File Names 1 Currently, Interlisp allows you to specify an open file by giving the file name. If the file name is incomplete (it doesn't have the device/host, directory, name, extension, and version number all supplied), the system converts it to a complete file name, by supplying defaults and searching through directories (which may be on remote file servers), and then searches the open streams for one corresponding to that file name. This file name-completion process happens whenever any I/O function is given an incomplete file name, which can cause a serious performance problem if I/O operations are done repeatedly. In general, it is much faster to convert an incomplete file name to a stream once, and use the stream from then on. For example, suppose a file is opened with (SETQ STRM (OPENSTREAM 'MYNAME 'INPUT)). After doing this, (READC 'MYNAME) and (READC STRM) would both work, but (READC 'MYNAME) would take longer (sometimes orders of magnitude longer). This could seriously effect the performance if a program which is doing many I/O operations. At some point in the future, when multiple streams are supported to a single file, the feature of mapping file names to streams will be removed. This is yet another reason why programs should use streams as handles to open files, instead of file names. For more information on efficiency considerations when using files, see Chapter 24. Using "Fast" and "Destructive" Functions 1 Among the functions used for manipulating objects of various data types, there are a number of functions which have "fast" and "destructive" versions. You should be aware of what these functions do, and when they should be used. "Fast" functions: By convention, a function named by prefixing an existing function name with F indicates that the new function is a "fast" version of the old. These usually have the same definitions as the slower versions, but they compile open and run without any "safety" error checks. For example, FNTH runs faster than NTH, however, it does not make as many checks (for lists ending with anything but NIL, etc). If these functions are given arguments that are not in the form that they expect, their behavior is unpredictable; they may run forever, or cause a system error. In general, you should only use "fast" functions in code that has already been completely debugged, to speed it up. "Destructive" functions: By convention, a function named by prefixing an existing function with D indicates the new function is a "destructive" version of the old one, which does not make any new structure but cannibalizes its argument(s). For example, REMOVE returns a copy of a list with a particular element removed, but DREMOVE actually changes the list structure of the list. (Unfortunately, not all destructive functions follow this naming convention: the destructive version of APPEND is NCONC.) You should be careful when using destructive functions that they do not inadvertantly change data structures. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "22-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "22-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "22-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "22-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "22-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "22-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))-HH +T-HHT5,,3HZ +T-llT2l,,3HZ +T,ll3(T,HH +,HH,HH-T3(T,/F PAGEHEADING VERSOHEADF PAGEHEADING RECTOHEADE PAGEHEADINGFOOTINGVE PAGEHEADINGFOOTINGR2 TITAN +TITAN +CLASSIC +CLASSIC +CLASSIC + HELVETICA HELVETICA HELVETICA +CLASSIC +MODERN +MODERNMODERN + HRULE.GETFNCLASSIC +   HRULE.GETFNCLASSIC +   HRULE.GETFNCLASSIC +   HRULE.GETFNCLASSIC +   IM.CHAP.GETFN HELVETICA HRULE.GETFNMODERN +  * HRULE.GETFNMODERN +    V Z  %IM.INDEX.GETFN  +   (IM.INDEX.GETFNMODERN +     -   )IM.INDEX.GETFNMODERN +   6 '   #IM.INDEX.GETFN   N  &   !    #IM.INDEX.GETFN  P +    %IM.INDEX.GETFN      1 *   4  -   +     R +? N  + !  N / 9     "  f >    !' ######## 4 >   *IM.INDEX.GETFNMODERN +  1  y  B  V   Y  5  7 e v   HRULE.GETFN HELVETICA +    $    -       j b  6 +1   L  +   HRULE.GETFNMODERN + F   + v   %IM.INDEX.GETFNTITAN + V &      5 .  O     6   l N H   v / L  -    "IM.INDEX.GETFN +                Y     '  N   /  -    &IM.INDEX.GETFNMODERN +   + 5       (    +'IM.INDEX.GETFN   >       (IM.INDEX.GETFN  J   + HRULE.GETFNMODERN + . u  +'IM.INDEX.GETFN       7 e i :  *   a     +IM.INDEX.GETFN  f   f    + )       ) ) ) ) "    ?  M  +(IM.INDEX.GETFN   -  +$  /  +  e " +  & +    )IM.INDEX.GETFNMODERN +  I   ) +  X 0W    +     + !      <    ( ( ( # ( ( ( #   M   '     s  }    +&    + HRULE.GETFNMODERN +  B  +'IM.INDEX.GETFN   +   I  , &          +      &     +     +1   ,      + %  +- > + +"    +  P %   + K  $ HRULE.GETFNMODERN + @    * J ^     6 )      HRULE.GETFNMODERN +  (     T  ) HRULE.GETFNMODERN +  _   O ! a  A   r z \ No newline at end of file diff --git a/docs/medley-irm/22-PERFORMANCE.pdf b/docs/medley-irm/22-PERFORMANCE.pdf new file mode 100644 index 00000000..a93f0001 --- /dev/null +++ b/docs/medley-irm/22-PERFORMANCE.pdf @@ -0,0 +1,4150 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 3358 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-1)Tj +/TT4 1 Tf +18 0 0 18 54 543.97 Tm +[(22. )-54.1(PERFORMANCE ISSUES)]TJ +ET +0 G +0 J 0 j 6 w 10 M []0 d +1 i +54.01 535.2 m +534.01 535.2 l +S +BT +/TT6 1 Tf +10 0 0 10 533.9999 532.2 Tm +( )Tj +/F1 1 Tf +-40.8 -3.994 TD +(This chapter describes a number of areas that often contribute to performance problems)Tj +0 -1.2 TD +(in Interlisp-D programs. Many performance problems can be improved by optimizing)Tj +T* +(the use of storage, since allocating and reclaiming large amounts of storage is)Tj +T* +(expensive. Another tactic that can sometimes yield performance improvements is to)Tj +T* +(change the use of variable bindings on the stack to reduce variable lookup time. There)Tj +T* +(are a number of tools that can be used to determine which parts of a computation cause)Tj +T* +(performance bottlenecks.)Tj +/TT4 1 Tf +14 0 0 14 54 375.08 Tm +(Storage Allocation and Garbage Collection)Tj +ET +1 w +54.01 371.49 m +534.01 371.49 l +S +BT +/F1 1 Tf +10 0 0 10 126 353.26 Tm +(As an Interlisp-D applications program runs, it creates data structures \(allocated out of)Tj +T* +(free storage space\), manipulates them, and then discards them. If there were no way of)Tj +T* +(reclaiming this space, over time the Interlisp-D memory \(both the physical memory in)Tj +T* +(the machine and the virtual memory stored on the disk\) would fill up, and the)Tj +T* +(computation would come to a halt. Actually, long before this could happen the system)Tj +T* +(would probably become intolerably slow, due to "data fragmentation," which occurs)Tj +T* +(when the data currently in use are spread over many virtual memory pages, so that)Tj +T* +(most of the computer time must be spent swapping disk pages into physical memory.)Tj +T* +(The problem of fragmentation will occur in any situation where the virtual memory is)Tj +T* +(significantly larger than the real physical memory. To reduce swapping, it is desirable)Tj +T* +(to keep the "working set" \(the set of pages containing actively referenced data\) as small)Tj +T* +(as possible.)Tj +0 -1.9 TD +(It is possible to write programs that dont generate much "garbage" data, or which)Tj +0 -1.2 TD +(recycle data, but such programs tend to be overly complicated and difficult to debug.)Tj +T* +(Spending effort writing such programs defeats the whole point of using a system with)Tj +T* +(automatic storage allocation. An important part of any Lisp implementation is the)Tj +T* +("garbage collector" which identifies discarded data and reclaims its space. There are)Tj +T* +(several well-known approaches to garbage collection. One method is the traditional)Tj +T* +(mark-and-sweep garbage collection algorithm, which identifies "garbage" data by)Tj +T* +(marking all accessible data structures, and then sweeping through the data spaces to)Tj +T* +(find all unmarked objects \(i.e., not referenced by any other object\). Although this)Tj +T* +(method is guaranteed to reclaim all garbage, it takes time proportional to the number of)Tj +T* +(allocated objects, which may be very large. \(Some allocated objects will have been)Tj +T* +(marked during the "mark" phase, and the remainder will be collected during the)Tj +T* +("sweep" phase; so all will have to be touched in some way.\) Also, the time that a mark-)Tj +T* +(and-sweep garbage collection takes is independent of the amount of garbage collected; it)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +11 0 obj +<< +/Length 3823 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-2)Tj +/F1 1 Tf +10 0 0 10 174 568.26 Tm +(is possible to sweep through the whole virtual memory, and only recover a small)Tj +0 -1.2 TD +(amount of garbage.)Tj +0 -1.9 TD +(For interactive applications, it is not acceptable to have long interruptions in a)Tj +0 -1.2 TD +(computation for the purpose of garbage collection. Interlisp-D solves this problem by)Tj +T* +(using a reference-counting garbage collector. With this scheme, there is a table)Tj +T* +(containing counts of how many times each object is referenced. This table is)Tj +T* +(incrementally updated as pointers are created and discarded, incurring a small)Tj +T* +(overhead distributed over the computation as a whole. \(Note: References from the stack)Tj +T* +(are not counted, but are handled separately at "sweep" time; thus the vast majority of)Tj +T* +(data manipulations do not cause updates to this table.\) At opportune moments, the)Tj +T* +(garbage collector scans this table, and reclaims all objects that are no longer accessible)Tj +T* +(\(have a reference count of zero\). The pause while objects are reclaimed is only the time)Tj +T* +(for scanning the reference count tables \(small\) plus time proportional to the amount of)Tj +T* +(garbage that has to be collected \(typically less than a second\). "Opportune" times occur)Tj +T* +(when a certain number of cells have been allocated or when the system has been)Tj +T* +(waiting for the user to type something for long enough. The frequency of garbage)Tj +T* +(collection is controlled by the functions and variables described below. For the best)Tj +T* +(system performance, it is desirable to adjust these parameters for frequent, short)Tj +T* +(garbage collections, which will not interrupt interactive applications for very long, and)Tj +T* +(which will have the added benefit of reducing data fragmentation, keeping the working)Tj +T* +(set small.)Tj +0 -1.9 TD +(One problem with the Interlisp-D garbage collector is that not all garbage is guaranteed)Tj +0 -1.2 TD +(to be collected. Circular data structures, which point to themselves directly or)Tj +T* +(indirectly, are never reclaimed, since their reference counts are always at least one.)Tj +T* +(With time, this unreclaimable garbage may increase the working set to unacceptable)Tj +T* +(levels. Some users have worked with the same Interlisp-D virtual memory for a very)Tj +T* +(long time, but it is a good idea to occasionally save all of your functions in files,)Tj +T* +(reinitialize Interlisp-D, and rebuild your system. Many users end their working day by)Tj +T* +(issuing a command to rebuild their system and then leaving the machine to perform)Tj +T* +(this task in their absence. If the system seems to be spending too much time swapping)Tj +T* +(\(an indication of fragmented working set\), this procedure is definitely recommended.)Tj +0 -1.9 TD +(Garbage collection in Interlisp-D is controlled by the following functions and variables:)Tj +/TT8 1 Tf +0 -2.206 TD +-0.0001 Tc +(\(RECLAIM\))Tj +/TT6 1 Tf +5.4001 0 TD +0 Tc +( )Tj +/F1 1 Tf +30.5859 0 TD +([Function])Tj +-32.386 -1.823 TD +(Initiates a garbage collection. Returns 0.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(RECLAIMMIN)Tj +/F1 1 Tf +6.6 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(N)Tj +/TT8 1 Tf +0.815 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +27.6929 0 TD +([Function])Tj +-32.386 -1.823 TD +(Sets the frequency of garbage collection. Interlisp keeps track of the number of)Tj +0 -1.2 TD +(cells of any type that have been allocated; when it reaches a given number, a)Tj +T* +(garbage collection occurs. If )Tj +/F2 1 Tf +13.333 0 TD +(N)Tj +/F1 1 Tf +0.815 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, this number is set to )Tj +/F2 1 Tf +10.354 0 TD +(N)Tj +/F1 1 Tf +0.815 0 TD +(. Returns the)Tj +-30.5063 -1.323 TD +(current setting of the number.)Tj +ET +endstream +endobj +12 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +16 0 obj +<< +/Length 2839 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-3)Tj +/TT8 1 Tf +10 0 0 10 126 568.2 Tm +(RECLAIMWAIT)Tj +/TT6 1 Tf +6.6 0 TD +( )Tj +/F1 1 Tf +29.57 0 TD +([Variable])Tj +-32.57 -1.823 TD +(Interlisp-D will invoke a )Tj +/TT8 1 Tf +11.576 0 TD +(RECLAIM)Tj +/F1 1 Tf +4.2007 0 TD +( if the system is idle and waiting for your)Tj +-15.7767 -1.323 TD +(input for )Tj +/TT8 1 Tf +4.333 0 TD +(RECLAIMWAIT)Tj +/F1 1 Tf +6.6011 0 TD +( seconds \(currently set for 4 seconds\).)Tj +/TT8 1 Tf +-14.5341 -2.329 TD +(\(GCGAG)Tj +/F1 1 Tf +3.6 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(MESSAGE)Tj +/TT8 1 Tf +5.204 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +26.3039 0 TD +([Function])Tj +-32.386 -1.823 TD +(Sets the behavior that occurs while a garbage collection is taking place. If)Tj +/F2 1 Tf +0 -1.2 TD +(MESSAGE)Tj +/F1 1 Tf +5.204 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, the cursor is complemented during a )Tj +/TT8 1 Tf +17.741 0 TD +(RECLAIM)Tj +/F1 1 Tf +4.2007 0 TD +(; if)Tj +/F2 1 Tf +-32.335 -1.323 TD +(MESSAGE)Tj +/F1 1 Tf +5.204 0 TD +(=)Tj +/TT8 1 Tf +0.606 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, nothing happens. The value of )Tj +/TT8 1 Tf +15.095 0 TD +(GCGAG)Tj +/F1 1 Tf +3.0005 0 TD +( is its previous setting.)Tj +/TT8 1 Tf +-29.3058 -2.329 TD +-0.0001 Tc +(\(GCTRP\))Tj +/TT6 1 Tf +4.2001 0 TD +0 Tc +( )Tj +/F1 1 Tf +31.7859 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns the number of cells until the next garbage collection, according to the)Tj +/TT8 1 Tf +0 -1.2 TD +(RECLAIMMIN)Tj +/F1 1 Tf +6.001 0 TD +( number.)Tj +-9.601 -2.323 TD +(The amount of storage allocated to different data types, how much of that storage is in)Tj +0 -1.2 TD +(use, and the amount of data fragmentation can be determined using the following)Tj +T* +(function:)Tj +/TT8 1 Tf +0 -2.206 TD +(\(STORAGE)Tj +/F1 1 Tf +4.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(TYPES PAGETHRESHOLD)Tj +/TT8 1 Tf +13.279 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +17.0289 0 TD +([Function])Tj +/TT8 1 Tf +-32.386 -1.823 TD +(STORAGE)Tj +/F1 1 Tf +4.2007 0 TD +( prints out a summary, for each data type, of the amount of space)Tj +-4.2007 -1.323 TD +(allocated to the data type, and how much of that space is currently in use. If)Tj +/F2 1 Tf +0 -1.2 TD +(TYPES)Tj +/F1 1 Tf +3.426 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(STORAGE)Tj +/F1 1 Tf +4.2007 0 TD +( only lists statistics for the specified types. )Tj +/F2 1 Tf +20.132 0 TD +(TYPES)Tj +/F1 1 Tf +-33.504 -1.323 TD +(can be a litatom or a list of types. If )Tj +/F2 1 Tf +16.93 0 TD +(PAGETHRESHOLD)Tj +/F1 1 Tf +9.575 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, then)Tj +/TT8 1 Tf +-31.6943 -1.323 TD +(STORAGE)Tj +/F1 1 Tf +4.2007 0 TD +( only lists statistics for types that have at least )Tj +/F2 1 Tf +21.931 0 TD +(PAGETHRESHOLD)Tj +/F1 1 Tf +-26.1317 -1.323 TD +(pages allocated to them.)Tj +ET +endstream +endobj +17 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +19 0 obj +<< +/Length 4687 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-4)Tj +/TT8 1 Tf +10 0 0 10 210 568.26 Tm +(STORAGE)Tj +/F1 1 Tf +4.2007 0 TD +( prints out a table with the column headings )Tj +/F3 1 Tf +20.8 0 TD +(Type)Tj +/F1 1 Tf +2.574 0 TD +(, )Tj +/F3 1 Tf +0.556 0 TD +(Assigned)Tj +/F1 1 Tf +4.666 0 TD +(, )Tj +/F3 1 Tf +0.556 0 TD +(Free)Tj +-33.3527 -1.323 TD +(Items)Tj +/F1 1 Tf +2.907 0 TD +(, )Tj +/F3 1 Tf +0.556 0 TD +(In use)Tj +/F1 1 Tf +3.175 0 TD +(, and )Tj +/F3 1 Tf +2.575 0 TD +(Total alloc)Tj +/F1 1 Tf +5.491 0 TD +(. )Tj +/F3 1 Tf +0.834 0 TD +(Type)Tj +/F1 1 Tf +2.574 0 TD +( is the name of the data type. )Tj +/F3 1 Tf +14.022 0 TD +(Assigned)Tj +/F1 1 Tf +-32.134 -1.2 TD +(is how much of your virtual memory is set aside for items of this type.)Tj +T* +(Currently, memory is allocated in quanta of two pages \(1024 bytes\). The)Tj +T* +(numbers under )Tj +/F3 1 Tf +7.37 0 TD +(Assigned)Tj +/F1 1 Tf +4.666 0 TD +( show the number of pages and the total number of)Tj +-12.036 -1.2 TD +(items that fit on those pages. )Tj +/F3 1 Tf +13.966 0 TD +(Free Items)Tj +/F1 1 Tf +5.583 0 TD +( shows how many items are available)Tj +-19.549 -1.2 TD +(to be allocated \(using the )Tj +/F3 1 Tf +11.854 0 TD +(create)Tj +/F1 1 Tf +3.26 0 TD +( construct, Chapter 8\); these constitute the)Tj +-15.114 -1.2 TD +("free list" for that data type. )Tj +/F3 1 Tf +13.558 0 TD +(In use)Tj +/F1 1 Tf +3.175 0 TD +( shows how many items of this type are)Tj +-16.733 -1.2 TD +(currently in use, i.e., have pointers to them and hence have not been garbage)Tj +T* +(collected. If this number is higher than your program seems to warrant, you)Tj +T* +(may want to look for storage leaks. The sum of )Tj +/F3 1 Tf +22.116 0 TD +(Free Items)Tj +/F1 1 Tf +5.583 0 TD +( and )Tj +/F3 1 Tf +2.297 0 TD +(In use)Tj +/F1 1 Tf +3.175 0 TD +( is)Tj +-33.171 -1.2 TD +(always the same as the total )Tj +/F3 1 Tf +13.449 0 TD +(Assigned)Tj +/F1 1 Tf +4.666 0 TD +( items. )Tj +/F3 1 Tf +3.668 0 TD +(Total alloc)Tj +/F1 1 Tf +5.491 0 TD +( is the total number)Tj +-27.274 -1.2 TD +(of items of this type that have ever been allocated \(see )Tj +/TT8 1 Tf +25.3 0 TD +(BOXCOUNT)Tj +/F1 1 Tf +4.8008 0 TD +(, in the)Tj +-30.1008 -1.323 TD +(Performance Measuring section below\).)Tj +0 -1.9 TD +[(Note: )-840(The information about the number of items of type )]TJ +/TT8 1 Tf +27.288 0 TD +(LISTP)Tj +/F1 1 Tf +3.0005 0 TD +( is only)Tj +-26.6885 -1.323 TD +(approximate, because list cells are allocated in a special way that)Tj +0 -1.2 TD +(precludes easy computation of the number of items per page.)Tj +-3.6 -1.9 TD +[(Note: )-562(When a data type is redeclared, the data type name is reassigned.)]TJ +3.6 -1.2 TD +(Pages which were assigned to instances of the old data type are labeled)Tj +/F3 1 Tf +T* +(**DEALLOC**)Tj +/F1 1 Tf +7.406 0 TD +(.)Tj +-11.006 -1.9 TD +(At the end of the table printout, )Tj +/TT8 1 Tf +15.002 0 TD +(STORAGE)Tj +/F1 1 Tf +4.2007 0 TD +( prints a "Data Spaces Summary")Tj +-19.2027 -1.323 TD +(listing the number of pages allocated to the major data areas in the virtual)Tj +0 -1.2 TD +(address space: the space for fixed-length items \(including datatypes\), the space)Tj +T* +(for variable-length items, and the space for litatoms. Variable-length data types)Tj +T* +(such as arrays have fixed-length "headers," which is why they also appear in the)Tj +T* +(printout of fixed-length data types. Thus, the line printed for the )Tj +/TT8 1 Tf +30.428 0 TD +(BITMAP)Tj +/F1 1 Tf +3.6006 0 TD +( data)Tj +-34.0286 -1.323 TD +(type says how many bitmaps have been allocated, but the "assigned pages")Tj +0 -1.2 TD +(column counts only the headers, not the space used by the variable-length part)Tj +T* +(of the bitmap. This summary also lists "Remaining Pages" in relation to the)Tj +T* +(largest possible virtual memory, not the size of the virtual memory backing file)Tj +T* +(in use. This file may fill up, causing a )Tj +/TT10 1 Tf +17.893 0 TD +(STORAGE FULL)Tj +/F1 1 Tf +7.2012 0 TD +( error, long before the)Tj +-25.0942 -1.323 TD +("Remaining Pages" numbers reach zero.)Tj +/TT8 1 Tf +0 -1.9 TD +(STORAGE)Tj +/F1 1 Tf +4.2007 0 TD +( also prints out information about the sizes of the entries on the)Tj +-4.2007 -1.323 TD +(variable-length data free list. The block sizes are broken down by the value of)Tj +0 -1.2 TD +(the variable )Tj +/TT8 1 Tf +5.835 0 TD +(STORAGE.ARRAYSIZES)Tj +/F1 1 Tf +10.8018 0 TD +(, initially )Tj +/TT8 1 Tf +4.502 0 TD +(\(4 16 64 256 1024 4096)Tj +-21.1388 -1.323 TD +(16384 NIL\))Tj +/F1 1 Tf +6.001 0 TD +(, which yields a printout of the form:)Tj +/TT10 1 Tf +-2.401 -1.7 TD +(variable-datum free list: )Tj +0 -1 TD +(le 4 26 items; 104 cells.)Tj +T* +(le 16 72 items; 783 cells.)Tj +T* +(le 64 36 items; 964 cells.)Tj +T* +(le 256 28 items; 3155 cells.)Tj +T* +(le 1024 3 items; 1175 cells.)Tj +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 21 0 R +/TT2 5 0 R +/TT8 14 0 R +/TT10 22 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +24 0 obj +<< +/Length 743 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-5)Tj +/TT10 1 Tf +10 0 0 10 198 569.49 Tm +(le 4096 5 items; 8303 cells.)Tj +0 -1 TD +(le 16384 3 items; 17067 cells.)Tj +T* +(others 1 items; 17559 cells.)Tj +/F1 1 Tf +-3.6 -1.823 TD +(This information can be useful in determining if the variable-length data space)Tj +0 -1.2 TD +(is fragmented. If most of the free space is composed of small items, then the)Tj +T* +(allocator may not be able to find room for large items, and will extend the)Tj +T* +(variable datum space. If this is extended too much, this could cause an )Tj +/TT8 1 Tf +33.171 0 TD +(ARRAYS)Tj +-33.171 -1.323 TD +(FULL)Tj +/F1 1 Tf +2.4004 0 TD +( error, even if there is a lot of space left in little chunks.)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT8 14 0 R +/TT10 22 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +27 0 obj +<< +/Length 4483 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-6)Tj +/TT8 1 Tf +10 0 0 10 174 568.2 Tm +-0.0001 Tc +(\(STORAGE.LEFT\))Tj +/TT6 1 Tf +8.4001 0 TD +0 Tc +( )Tj +/F1 1 Tf +27.5859 0 TD +([Function])Tj +-32.386 -1.823 TD +(Provides a programmatic way of determining how much storage is left in the)Tj +0 -1.2 TD +(major data areas in the virtual address space. Returns a list of the form)Tj +/TT8 1 Tf +T* +(\()Tj +/F2 1 Tf +0.6001 0 TD +(MDSFREE)Tj +/F3 1 Tf +5.241 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(MDSFRAC)Tj +/F3 1 Tf +5.223 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(8MBFRAC)Tj +/F3 1 Tf +5.056 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(ATOMFREE)Tj +/F3 1 Tf +5.963 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(ATOMFRAC)Tj +/TT8 1 Tf +5.945 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(, where the)Tj +-29.7762 -1.323 TD +(elements are interpreted as follows:)Tj +/F2 1 Tf +1.359 -1.9 TD +(MDSFREE)Tj +/F1 1 Tf +7.041 0 TD +(The number of free pages left in the main data space \(which)Tj +0 -1.2 TD +(includes both fixed-length and variable-length data types\).)Tj +/F2 1 Tf +-7.023 -1.9 TD +(MDSFRAC)Tj +/F1 1 Tf +7.023 0 TD +(The fraction of the total possible main data space that is free.)Tj +/F2 1 Tf +-6.856 -1.9 TD +(8MBFRAC)Tj +/F1 1 Tf +6.856 0 TD +(The fraction of the total main data space that is free, relative)Tj +0 -1.2 TD +(to eight megabytes.)Tj +0 -1.9 TD +(This number is useful when using Interlisp-D on some early)Tj +0 -1.2 TD +(computers where the hardware limits the address space to)Tj +T* +(eight megabytes. The function )Tj +/TT8 1 Tf +14.539 0 TD +(32MBADDRESSABLE)Tj +/F1 1 Tf +9.0015 0 TD +( returns)Tj +-23.5405 -1.323 TD +(non-)Tj +/TT8 1 Tf +2.055 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( if the currently running Interlisp-D system can use)Tj +-3.8553 -1.323 TD +(the full 32 megabyte address space.)Tj +/F2 1 Tf +-7.763 -1.9 TD +(ATOMFREE)Tj +/F1 1 Tf +7.763 0 TD +(The number of free pages left in the litatom space.)Tj +/F2 1 Tf +-7.745 -1.9 TD +(ATOMFRAC)Tj +/F1 1 Tf +7.745 0 TD +(The fraction of the total litatom space that is free.)Tj +-12 -2.2 TD +(Note: Another important space resource is the amount of the virtual memory backing)Tj +0 -1.2 TD +(file in use \(see )Tj +/TT8 1 Tf +6.871 0 TD +(VMEMSIZE)Tj +/F1 1 Tf +4.8008 0 TD +(, Chapter 12\). The system will crash if the virtual memory file)Tj +-11.6718 -1.323 TD +(is full, even if the address space is not exhausted.)Tj +/TT4 1 Tf +14 0 0 14 102 231.87 Tm +(Variable Bindings)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 228.28 m +582.01 228.28 l +S +BT +/F1 1 Tf +10 0 0 10 174 210.05 Tm +(Different implementations of lisp use different methods of accessing free variables. The)Tj +0 -1.2 TD +(binding of variables occurs when a function or a )Tj +/TT8 1 Tf +22.372 0 TD +(PROG)Tj +/F1 1 Tf +2.4004 0 TD +( is entered. For example, if the)Tj +-24.7724 -1.323 TD +(function )Tj +/TT8 1 Tf +4.092 0 TD +(FOO)Tj +/F1 1 Tf +1.8003 0 TD +( has the definition )Tj +/TT8 1 Tf +8.705 0 TD +(\(LAMBDA \(A B\))Tj +/F3 1 Tf +7.8013 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(BODY)Tj +/TT8 1 Tf +2.963 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(, the variables )Tj +/TT8 1 Tf +6.854 0 TD +(A)Tj +/F1 1 Tf +0.6001 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(B)Tj +/F1 1 Tf +0.6001 0 TD +( are)Tj +-36.5999 -1.323 TD +(bound so that any reference to )Tj +/TT8 1 Tf +14.297 0 TD +(A)Tj +/F1 1 Tf +0.6001 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(B)Tj +/F1 1 Tf +0.6001 0 TD +( from )Tj +/F2 1 Tf +2.722 0 TD +(BODY)Tj +/F1 1 Tf +2.963 0 TD +( or any function called from )Tj +/F2 1 Tf +13 0 TD +(BODY)Tj +/F1 1 Tf +2.963 0 TD +( will)Tj +-38.6452 -1.323 TD +(refer to the arguments to the function )Tj +/TT8 1 Tf +17.759 0 TD +(FOO)Tj +/F1 1 Tf +1.8003 0 TD +( and not to the value of )Tj +/TT8 1 Tf +10.928 0 TD +(A)Tj +/F1 1 Tf +0.6001 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(B)Tj +/F1 1 Tf +0.6001 0 TD +( from a higher)Tj +-33.1875 -1.323 TD +(level function. All variable names \(litatoms\) have a top level value cell which is used if)Tj +0 -1.2 TD +(the variable has not been bound in any function. In discussions of variable access, it is)Tj +T* +(useful to distinquish between three types of variable access: local, special and global.)Tj +T* +(Local variable access is the use of a variable that is bound within the function from)Tj +T* +(which it is used. Special variable access is the use of a variable that is bound by)Tj +T* +(another function. Global variable access is the use of a variable that has not been)Tj +T* +(bound in any function. We will often refer to a variable all of whose accesses are local)Tj +T* +(as a "local variable." Similarly, a variable all of whose accesses are global we call a)Tj +T* +("global variable.")Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +30 0 obj +<< +/Length 852 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-7)Tj +/F1 1 Tf +10 0 0 10 126 568.26 Tm +(In a "deep" bound system, a variable is bound by saving on the stack the variables)Tj +0 -1.2 TD +(name together with a value cell which contains that variables new value. When a)Tj +T* +(variable is accessed, its value is found by searching the stack for the most recent)Tj +T* +(binding \(occurrence\) and retrieving the value stored there. If the variable is not found)Tj +T* +(on the stack, the variables top level value cell is used.)Tj +0 -1.9 TD +(In a "shallow" bound system, a variable is bound by saving on the stack the variable)Tj +0 -1.2 TD +(name and the variables old value and putting the new value in the variables top level)Tj +T* +(value cell. When a variable is accessed, its value is always found in its top level value)Tj +T* +(cell.)Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +33 0 obj +<< +/Length 3887 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-8)Tj +/F1 1 Tf +10 0 0 10 174 568.26 Tm +(The deep binding scheme has one disadvantage: the amount of cpu time required to)Tj +0 -1.2 TD +(fetch the value of a variable depends on the stack distance between its use and its)Tj +T* +(binding. The compiler can determine local variable accesses and compiles them as)Tj +T* +(fetches directly from the stack. Thus this computation cost only arises in the use of)Tj +T* +(variable not bound in the local frame \("free" variables\). The process of finding the value)Tj +T* +(of a free variable is called free variable lookup.)Tj +0 -1.9 TD +(In a shallow bound system, the amount of cpu time required to fetch the value of a)Tj +0 -1.2 TD +(variable is constant regardless of whether the variable is local, special or global. The)Tj +T* +(disadvantages of this scheme are that the actual binding of a variable takes longer)Tj +T* +(\(thus slowing down function call\), the cells that contain the current in use values are)Tj +T* +(spread throughout the space of all litatom value cells \(thus increasing the working set)Tj +T* +(size of functions\) and context switching between processes requires unwinding and)Tj +T* +(rewinding the stack \(thus effectively prohibiting the use of context switching for many)Tj +T* +(applications\).)Tj +0 -1.9 TD +(Interlisp-D uses deep binding, because of the working set considerations and the speed)Tj +0 -1.2 TD +(of context switching. The free variable lookup routine is microcoded, thus greatly)Tj +T* +(reducing the search time. In benchmarks, the largest percentage of free variable lookup)Tj +T* +(time was 20 percent of the total ellapsed time; the normal time was between 5 and 10)Tj +T* +(percent.)Tj +0 -1.9 TD +(One consequence of Interlisp-Ds deep binding scheme is that users may significantly)Tj +0 -1.2 TD +(improve performance by declaring global variables in certain situations. If a variable is)Tj +T* +(declared global, the compiler will compile an access to that variable as a retrieval of its)Tj +T* +(top level value, completely bypassing a stack search. This should be done only for)Tj +T* +(variables that are never bound in functions, such as global databases and flags.)Tj +0 -1.9 TD +(Global variable declarations should be done using the )Tj +/TT8 1 Tf +25.042 0 TD +(GLOBALVARS)Tj +/F1 1 Tf +6.001 0 TD +( file package)Tj +-31.043 -1.323 TD +(command \(Chapter 17\). Its form is )Tj +/TT8 1 Tf +16.464 0 TD +(\(GLOBALVARS)Tj +/F3 1 Tf +6.6011 0 TD +( )Tj +/F2 1 Tf +0.574 0 TD +(VAR)Tj +2.1479 -0.3 TD +(1)Tj +/F3 1 Tf +0.556 0.3 TD +( ... )Tj +/F2 1 Tf +1.408 0 TD +(VAR)Tj +2.149 -0.3 TD +(N)Tj +/TT8 1 Tf +0.815 0.3 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(.)Tj +-31.3151 -2.2 TD +(Another way of improving performance is to declare variables as local within a function.)Tj +0 -1.2 TD +(Normally, all variables bound within a function have their names put on the stack, and)Tj +T* +(these names are scanned during free variable lookup. If a variable is declared to be)Tj +T* +(local within a function, its name is not put on the stack, so it is not scanned during free)Tj +T* +(variable lookup, which may increase the speed of lookups. The compiler can also make)Tj +T* +(some other optimizations if a variable is known to be local to a function.)Tj +0 -1.9 TD +(A variable may be declared as local within a function by including the form )Tj +/TT8 1 Tf +34.968 0 TD +(\(DECLARE)Tj +-34.968 -1.323 TD +(\(LOCALVARS)Tj +/F3 1 Tf +6.001 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(VAR)Tj +2.148 -0.3 TD +(1)Tj +/F3 1 Tf +0.556 0.3 TD +( ... )Tj +/F2 1 Tf +1.408 0 TD +(VAR)Tj +2.149 -0.3 TD +(N)Tj +/TT8 1 Tf +0.815 0.3 TD +(\)\))Tj +/F1 1 Tf +1.2002 0 TD +( following the argument list in the definition of the)Tj +-14.5642 -1.5 TD +(function. Local variable declarations only effect the compilation of a function.)Tj +0 -1.2 TD +(Interpreted functions put all of their variable names on the stack, regardless of any)Tj +T* +(declarations.)Tj +ET +endstream +endobj +34 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +36 0 obj +<< +/Length 4990 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-9)Tj +/TT4 1 Tf +14 0 0 14 54 565.08 Tm +(Performance Measuring)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 561.49 m +534.01 561.49 l +S +BT +/F1 1 Tf +10 0 0 10 126 543.26 Tm +(This section describes functions that gather and display statistics about a computation,)Tj +0 -1.2 TD +(such as as the elapsed time, and the number of data objects of different types allocated.)Tj +/TT8 1 Tf +T* +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( gather statistics on the evaluation of a specified form. )Tj +/TT8 1 Tf +25.633 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +-34.5311 -1.323 TD +(gathers statistics on individual functions called during a computation. These functions)Tj +0 -1.2 TD +(can be used to determine which parts of a computation are consuming the most)Tj +T* +(resources \(time, storage, etc.\), and could most profitably be improved.)Tj +/TT8 1 Tf +0 -2.206 TD +(\(TIMEALL)Tj +/F1 1 Tf +4.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(TIMEFORM NUMBEROFTIMES TIMEWHAT INTERPFLG )Tj +/TT8 1 Tf +29.684 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +-33.5621 -1.123 TD +([NLambda Function])Tj +1.8 -1.7 TD +(Evaluates the form )Tj +/F2 1 Tf +9.149 0 TD +(TIMEFORM)Tj +/F1 1 Tf +5.888 0 TD +( and prints statistics on time spent in various)Tj +-15.037 -1.2 TD +(categories \(elapsed, keyboard wait, swapping time, gc\) and data type allocation.)Tj +0 -1.9 TD +(For more accurate measurement on small computations, )Tj +/F2 1 Tf +26.354 0 TD +(NUMBEROFTIMES)Tj +/F1 1 Tf +-26.354 -1.2 TD +(may be specified \(its default is 1\) to cause )Tj +/F2 1 Tf +19.466 0 TD +(TIMEFORM)Tj +/F1 1 Tf +5.888 0 TD +( to be executed)Tj +/F2 1 Tf +-25.354 -1.2 TD +(NUMBEROFTIMES)Tj +/F1 1 Tf +9.629 0 TD +( times. To improve the accuracy of timing open-coded)Tj +-9.629 -1.2 TD +(operations in this case, )Tj +/TT8 1 Tf +10.909 0 TD +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( compiles a form to execute )Tj +/F2 1 Tf +12.76 0 TD +(TIMEFORM)Tj +-27.8697 -1.323 TD +(NUMBEROFTIMES)Tj +/F1 1 Tf +9.629 0 TD +( times \(unless )Tj +/F2 1 Tf +6.686 0 TD +(INTERPFLG)Tj +/F1 1 Tf +6.149 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(\), and then times)Tj +-27.6533 -1.323 TD +(the execution of the compiled form.)Tj +0 -1.9 TD +[(Note: )-562(If )]TJ +/TT8 1 Tf +4.618 0 TD +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( is called with )Tj +/F2 1 Tf +6.687 0 TD +(NUMBEROFTIMES)Tj +/F1 1 Tf +9.629 0 TD +(>1, the dummy form is)Tj +-21.5347 -1.323 TD +(compiled with compiler optimizations on. This means that it is not)Tj +0 -1.2 TD +(meaningful to use )Tj +/TT8 1 Tf +8.575 0 TD +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( with very simple forms that are optimized)Tj +-12.7757 -1.323 TD +(out by the compiler. For example, )Tj +/TT8 1 Tf +16.058 0 TD +(\(TIMEALL \(IPLUS 2 3\) 1000\))Tj +/F1 1 Tf +-16.058 -1.323 TD +(will time a compiled function which simply returns the number 5, since)Tj +/TT8 1 Tf +0 -1.2 TD +(\(IPLUS 2 3\))Tj +/F1 1 Tf +6.6011 0 TD +( is optimized to the integer 5.)Tj +/F2 1 Tf +-10.2011 -2.023 TD +(TIMEWHAT)Tj +/F1 1 Tf +5.906 0 TD +( restricts the statistics to specific categories. It can be an atom or)Tj +-5.906 -1.2 TD +(list of datatypes to monitor, and/or the atom )Tj +/TT8 1 Tf +20.689 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( to monitor time spent. Note)Tj +-23.0894 -1.323 TD +(that ordinarily, )Tj +/TT8 1 Tf +7.39 0 TD +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( monitors all time and datatype usage, so this)Tj +-11.5907 -1.323 TD +(argument is rarely needed. )Tj +/TT8 1 Tf +0 -1.9 TD +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( returns the value of the last evaluation of )Tj +/F2 1 Tf +19.762 0 TD +(TIMEFORM)Tj +/F1 1 Tf +5.888 0 TD +(.)Tj +/TT8 1 Tf +-33.4507 -2.329 TD +(\(TIME)Tj +/TT4 1 Tf +3 0 TD +( )Tj +/F2 1 Tf +0.2778 0 TD +(TIMEX TIMEN TIMETYP)Tj +/TT8 1 Tf +12.386 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +14.8311 0 TD +([NLambda Function])Tj +/TT8 1 Tf +-27.495 -1.823 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( evaluates the form )Tj +/F2 1 Tf +9.205 0 TD +(TIMEX)Tj +/F1 1 Tf +3.462 0 TD +(, and prints out the number of )Tj +/TT8 1 Tf +14.205 0 TD +(CONS)Tj +/F1 1 Tf +2.4004 0 TD +( cells)Tj +-31.6728 -1.323 TD +(allocated and computation time. Garbage collection time is subtracted out.)Tj +0 -1.2 TD +(This function has been largely replaced by )Tj +/TT8 1 Tf +19.817 0 TD +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +(.)Tj +-24.0177 -2.023 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(TIMEN)Tj +/F1 1 Tf +3.573 0 TD +( is greater than 1, )Tj +/F2 1 Tf +8.539 0 TD +(TIMEX)Tj +/F1 1 Tf +3.462 0 TD +( is executed )Tj +/F2 1 Tf +5.667 0 TD +(TIMEN)Tj +/F1 1 Tf +3.573 0 TD +( times, and )Tj +/TT8 1 Tf +5.409 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( prints)Tj +-33.6414 -1.323 TD +(out \(number of conses\)/)Tj +/F2 1 Tf +10.703 0 TD +(TIMEN)Tj +/F1 1 Tf +3.573 0 TD +(, and \(computation time\)/)Tj +/F2 1 Tf +11.668 0 TD +(TIMEN)Tj +/F1 1 Tf +3.573 0 TD +(. If)Tj +/F2 1 Tf +-29.517 -1.2 TD +(TIMEN)Tj +/F1 1 Tf +3.573 0 TD +(=)Tj +/TT8 1 Tf +0.606 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, it defaults to 1. This is useful for more accurate measurement on)Tj +-5.9793 -1.323 TD +(small computations.)Tj +ET +endstream +endobj +37 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +39 0 obj +<< +/Length 4831 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-10)Tj +/F1 1 Tf +10 0 0 10 210 568.26 Tm +(If )Tj +/F2 1 Tf +1.018 0 TD +(TIMETYP)Tj +/F1 1 Tf +4.795 0 TD +( is 0, )Tj +/TT8 1 Tf +2.446 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( measures and prints total )Tj +/F2 1 Tf +12.502 0 TD +(real)Tj +/F1 1 Tf +1.795 0 TD +( time as well as)Tj +-24.9564 -1.323 TD +(computation time. If )Tj +/F2 1 Tf +10.001 0 TD +(TIMETYP)Tj +/F1 1 Tf +4.795 0 TD +( = 3, )Tj +/TT8 1 Tf +2.274 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( measures and prints garbage)Tj +-19.4704 -1.323 TD +(collection time as well as computation time. If )Tj +/F2 1 Tf +21.763 0 TD +(TIMETYP)Tj +/F1 1 Tf +4.795 0 TD +(=)Tj +/TT8 1 Tf +0.606 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( measures)Tj +-30.7205 -1.323 TD +(and prints the number of pagefaults.)Tj +/TT8 1 Tf +0 -1.9 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +( returns the value of the last evaluation of )Tj +/F2 1 Tf +19.762 0 TD +(TIMEX)Tj +/F1 1 Tf +3.462 0 TD +(.)Tj +/TT8 1 Tf +-29.2244 -2.329 TD +(\(BOXCOUNT)Tj +/F1 1 Tf +5.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(TYPE N)Tj +/TT8 1 Tf +3.852 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +25.8559 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns the number of data objects of type )Tj +/F2 1 Tf +19.964 0 TD +(TYPE)Tj +/F1 1 Tf +2.759 0 TD +( allocated since this Interlisp)Tj +-22.723 -1.2 TD +(system was created. )Tj +/F2 1 Tf +9.835 0 TD +(TYPE)Tj +/F1 1 Tf +2.759 0 TD +( can be any data type name \(see )Tj +/TT8 1 Tf +15.022 0 TD +(TYPENAME)Tj +/F1 1 Tf +4.8008 0 TD +(, Chapter)Tj +-32.4168 -1.323 TD +(8\). If )Tj +/F2 1 Tf +2.741 0 TD +(TYPE)Tj +/F1 1 Tf +2.759 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, it defaults to )Tj +/TT8 1 Tf +6.724 0 TD +(FIXP)Tj +/F1 1 Tf +2.4004 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(N)Tj +/F1 1 Tf +0.815 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, the corresponding)Tj +-25.615 -1.323 TD +(counter is reset to )Tj +/F2 1 Tf +8.574 0 TD +(N)Tj +/F1 1 Tf +0.815 0 TD +(.)Tj +/TT8 1 Tf +-12.989 -2.206 TD +(\(CONSCOUNT)Tj +/F2 1 Tf +6 0 TD +( N)Tj +/TT8 1 Tf +1.093 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +27.6928 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns the number of )Tj +/TT8 1 Tf +10.796 0 TD +(CONS)Tj +/F1 1 Tf +2.4004 0 TD +( cells allocated since this Interlisp system was)Tj +-13.1964 -1.323 TD +(created. If )Tj +/F2 1 Tf +5.259 0 TD +(N)Tj +/F1 1 Tf +0.815 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, resets the counter to )Tj +/F2 1 Tf +10.315 0 TD +(N)Tj +/F1 1 Tf +0.815 0 TD +(. Equivalent to )Tj +/TT8 1 Tf +7.391 0 TD +(\(BOXCOUNT)Tj +-29.7843 -1.323 TD +(LISTP)Tj +/F3 1 Tf +3.6006 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(N)Tj +/TT8 1 Tf +0.815 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-8.9027 -2.329 TD +-0.0001 Tc +(\(PAGEFAULTS\) )Tj +/TT6 1 Tf +7.8002 0 TD +0 Tc +( )Tj +/F1 1 Tf +28.1858 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns the number of page faults since this Interlisp system was created.)Tj +/TT4 1 Tf +14 0 0 14 102 276.14 Tm +(BREAKDOWN)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 272.55 m +582.01 272.55 l +S +BT +/TT8 1 Tf +10 0 0 10 174 254.32 Tm +(TIMEALL)Tj +/F1 1 Tf +4.2007 0 TD +( collects statistics for whole computations. )Tj +/TT8 1 Tf +20.002 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( is available to analyze)Tj +-29.6036 -1.323 TD +(the breakdown of computation time \(or any other measureable quantity\) function by)Tj +0 -1.2 TD +(function.)Tj +/TT8 1 Tf +0 -2.206 TD +(\(BREAKDOWN)Tj +/F1 1 Tf +6 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(FN)Tj +1.482 -0.3 TD +(1)Tj +0.556 0.3 TD +( ... FN)Tj +2.872 -0.3 TD +(N)Tj +/TT8 1 Tf +0.815 0.3 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +13.6209 0 TD +([NLambda NoSpread Function])Tj +-22.624 -2 TD +(The user calls )Tj +/TT8 1 Tf +6.723 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( giving it a list of function names \(unevaluated\).)Tj +-12.1239 -1.323 TD +(These functions are modified so that they keep track of various statistics.)Tj +0 -1.9 TD +(To remove functions from those being monitored, simply )Tj +/TT8 1 Tf +26.279 0 TD +(UNBREAK)Tj +/F1 1 Tf +4.2007 0 TD +( \(Chapter 15\))Tj +-30.4797 -1.323 TD +(the functions, thereby restoring them to their original state. To add functions,)Tj +0 -1.2 TD +(call )Tj +/TT8 1 Tf +1.908 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( on the new functions. This will not reset the counters for any)Tj +-7.3089 -1.323 TD +(functions not on the new list. However )Tj +/TT8 1 Tf +18.353 0 TD +(\(BREAKDOWN\))Tj +/F1 1 Tf +6.6011 0 TD +( will zero the counters of)Tj +-24.9541 -1.323 TD +(all functions being monitored.)Tj +0 -1.9 TD +(The procedure used for measuring is such that if one function calls other and)Tj +0 -1.2 TD +(both are "broken down", then the time \(or whatever quantity is being measured\))Tj +T* +(spent in the inner function is )Tj +/F2 1 Tf +13.704 0 TD +(not)Tj +/F1 1 Tf +1.463 0 TD +( charged to the outer function as well. )Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +42 0 obj +<< +/Length 4472 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-11)Tj +/TT8 1 Tf +10 0 0 10 162 568.26 Tm +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( will )Tj +/F2 1 Tf +2.279 0 TD +(not)Tj +/F1 1 Tf +1.463 0 TD +( give accurate results if a function being measured is not)Tj +-9.1429 -1.323 TD +(returned from normally, e.g., a lower )Tj +/TT8 1 Tf +17.316 0 TD +(RETFROM)Tj +/F1 1 Tf +4.2007 0 TD +( \(or )Tj +/TT8 1 Tf +1.833 0 TD +(ERROR)Tj +/F1 1 Tf +3.0005 0 TD +(\) bypasses it. In this)Tj +-26.3502 -1.323 TD +(case, all of the time \(or whatever quantity is being measured\) between the time)Tj +0 -1.2 TD +(that function is entered and the time the next function being measured is)Tj +T* +(entered will be charged to the first function.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(BRKDWNRESULTS)Tj +/F2 1 Tf +8.4 0 TD +( RETURNVALUESFLG)Tj +/TT8 1 Tf +11.188 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +15.7979 0 TD +([Function])Tj +/TT8 1 Tf +-32.386 -1.823 TD +(BRKDWNRESULTS)Tj +/F1 1 Tf +7.8013 0 TD +( prints the analysis of the statistics requested as well as the)Tj +-7.8013 -1.323 TD +(number of calls to each function. If )Tj +/F2 1 Tf +16.593 0 TD +(RETURNVALUESFLG)Tj +/F1 1 Tf +10.91 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(,)Tj +/TT8 1 Tf +-32.6923 -1.323 TD +(BRKDWNRESULTS)Tj +/F1 1 Tf +7.8013 0 TD +( will not to print the results, but instead return them in the)Tj +-7.8013 -1.323 TD +(form of a list of elements of the form )Tj +/TT8 1 Tf +17.038 0 TD +(\()Tj +/F2 1 Tf +0.6001 0 TD +(FNNAME)Tj +/F3 1 Tf +4.667 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(#CALLS)Tj +/F3 1 Tf +3.983 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(VALUE)Tj +/TT8 1 Tf +3.612 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(.)Tj +-31.0742 -2.023 TD +(Example:)Tj +/TT11 1 Tf +3.6 -1.9 TD +<0040>Tj +/F1 1 Tf +0.9868 0 TD +( )Tj +/TT8 1 Tf +0.278 0 TD +(\(BREAKDOWN SUPERPRINT SUBPRINT COMMENT1\))Tj +-1.2648 -1 TD +(\(SUPERPRINT SUBPRINT COMMENT1\))Tj +/TT11 1 Tf +0 -1.123 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(PRETTYDEF \(SUPERPRINT\) FOO\))Tj +-0.9868 -1 TD +(FOO.;3)Tj +/TT11 1 Tf +0 -1.123 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(BRKDWNRESULTS\))Tj +-0.9868 -1 TD +(FUNCTIONS TIME #CALLS PER CALL %)Tj +T* +(SUPERPRINT 8.261 365 0.023 20)Tj +T* +(SUBPRINT 31.910 141 0.226 76)Tj +T* +(COMMENT1 1.612 8 0.201 4)Tj +T* +(TOTAL 41.783 514 0.081)Tj +T* +(NIL)Tj +/TT11 1 Tf +0 -1.123 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(BRKDWNRESULTS T\))Tj +-0.9868 -1 TD +(\(\(SUPERPRINT 365 8261\) \(SUBPRINT 141 31910\) \(COMMENT1 8)Tj +T* +(1612\)\))Tj +-7.2 -2.129 TD +(BREAKDOWN)Tj +/TT6 1 Tf +5.4009 0 TD +( )Tj +/F1 1 Tf +0.2778 0 TD +(can be used to measure other statistics, by setting the following variables:)Tj +/TT8 1 Tf +-5.6787 -2.329 TD +(BRKDWNTYPE)Tj +/TT6 1 Tf +6 0 TD +( )Tj +/F1 1 Tf +30.17 0 TD +([Variable])Tj +-32.57 -1.823 TD +(To use )Tj +/TT8 1 Tf +3.297 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( to measure other statistics, before calling )Tj +/TT8 1 Tf +19.632 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +(, set)Tj +-33.7308 -1.323 TD +(the variable )Tj +/TT8 1 Tf +5.835 0 TD +(BRKDWNTYPE)Tj +/F1 1 Tf +6.001 0 TD +( to the quantity of interest, e.g., )Tj +/TT8 1 Tf +14.892 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(CONSES)Tj +/F1 1 Tf +3.6006 0 TD +(, etc, or)Tj +-33.285 -1.323 TD +(a list of such quantities. Whenever )Tj +/TT8 1 Tf +16.613 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( is called with )Tj +/TT8 1 Tf +6.687 0 TD +(BRKDWNTYPE)Tj +/F1 1 Tf +6.001 0 TD +( not)Tj +/TT8 1 Tf +-34.7019 -1.323 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( performs the necessary changes to its internal state to conform)Tj +-7.7572 -1.323 TD +(to the new analysis. In particular, if this is the first time an analysis is being)Tj +0 -1.2 TD +(run with a particular statistic, a measuring function will be defined, and the)Tj +T* +(compiler will be called to compile it. The functions being broken down will be)Tj +T* +(redefined to call this measuring function. When )Tj +/TT8 1 Tf +22.593 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( is through)Tj +-27.9939 -1.323 TD +(initializing, it sets )Tj +/TT8 1 Tf +8.706 0 TD +(BRKDWNTYPE)Tj +/F1 1 Tf +6.001 0 TD +( back to )Tj +/TT8 1 Tf +3.872 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(. Subsequent calls to )Tj +/TT8 1 Tf +10.077 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +-30.4563 -1.323 TD +(will measure the new statistic until )Tj +/TT8 1 Tf +16.707 0 TD +(BRKDWNTYPE)Tj +/F1 1 Tf +6.001 0 TD +( is again set and a new)Tj +/TT8 1 Tf +-22.708 -1.323 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +( performed.)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 14 0 R +/TT11 44 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +48 0 obj +<< +/Length 4829 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-12)Tj +/TT8 1 Tf +10 0 0 10 174 568.2 Tm +(BRKDWNTYPES)Tj +/TT6 1 Tf +6.6 0 TD +( )Tj +/F1 1 Tf +29.57 0 TD +([Variable])Tj +-32.57 -1.823 TD +(The list )Tj +/TT8 1 Tf +3.816 0 TD +(BRKDWNTYPES)Tj +/F1 1 Tf +6.6011 0 TD +( contains the information used to analyze new statistics.)Tj +-10.4171 -1.323 TD +(Each entry on )Tj +/TT8 1 Tf +6.759 0 TD +(BRKDWNTYPES)Tj +/F1 1 Tf +6.6011 0 TD +( should be of the form )Tj +/F3 1 Tf +10.297 0 TD +(\()Tj +/F2 1 Tf +0.389 0 TD +(TYPE)Tj +/F3 1 Tf +2.759 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FORM)Tj +/F3 1 Tf +3.13 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FUNCTION)Tj +/F3 1 Tf +5.704 0 TD +(\))Tj +/F1 1 Tf +0.389 0 TD +(,)Tj +-36.6021 -1.323 TD +(where )Tj +/F2 1 Tf +3.111 0 TD +(TYPE)Tj +/F1 1 Tf +2.759 0 TD +( is a statistic name \(as would appear in )Tj +/TT8 1 Tf +18.375 0 TD +(BRKDWNTYPE)Tj +/F1 1 Tf +6.001 0 TD +(\), )Tj +/F2 1 Tf +0.889 0 TD +(FORM)Tj +/F1 1 Tf +-31.135 -1.323 TD +(computes the statistic, and )Tj +/F2 1 Tf +12.724 0 TD +(FUNCTION)Tj +/F1 1 Tf +5.704 0 TD +( \(optional\) converts the value of form to)Tj +-18.428 -1.2 TD +(some more interesting quantity. For example, )Tj +/TT8 1 Tf +21.707 0 TD +(\(TIME \(CLOCK 2\) \(LAMBDA)Tj +-21.707 -1.323 TD +(\(X\) \(FQUOTIENT X 1000\)\)\))Tj +/F1 1 Tf +14.4023 0 TD +( measures computation time and reports the)Tj +-14.4023 -1.323 TD +(result in seconds instead of milliseconds. )Tj +/TT8 1 Tf +19.372 0 TD +(BRKDWNTYPES)Tj +/F1 1 Tf +6.6011 0 TD +( currently contains)Tj +-25.9731 -1.323 TD +(entries for )Tj +/TT8 1 Tf +5.055 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(CONSES)Tj +/F1 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(PAGEFAULTS)Tj +/F1 1 Tf +6.001 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(BOXES)Tj +/F1 1 Tf +3.0005 0 TD +(, and )Tj +/TT8 1 Tf +2.575 0 TD +(FBOXES)Tj +/F1 1 Tf +3.6006 0 TD +(.)Tj +-27.901 -2.023 TD +(Example:)Tj +/TT11 1 Tf +3.6 -1.9 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(SETQ BRKDWNTYPE \(TIME CONSES\)\))Tj +-0.9868 -1 TD +(\(TIME CONSES\))Tj +/TT11 1 Tf +0 -1.123 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(BREAKDOWN MATCH CONSTRUCT\))Tj +-0.9868 -1 TD +(\(MATCH CONSTRUCT\))Tj +/TT11 1 Tf +0 -1.123 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(FLIP \(A B C D E F G H C Z\) \(.. $1 .. #2 ..\) \(.. #3)Tj +-0.9868 -1 TD +(..\)\))Tj +T* +(\(A B D E F G H Z\))Tj +/TT11 1 Tf +0 -1.123 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(BRKDWNRESULTS\))Tj +-0.9868 -1 TD +(FUNCTIONS TIME #CALLS PER CALL %)Tj +T* +(MATCH 0.036 1 0.036 54)Tj +T* +(CONSTRUCT 0.031 1 0.031 46)Tj +T* +(TOTAL 0.067 2 0.033 )Tj +T* +(FUNCTIONS CONSES #CALLS PER CALL %)Tj +T* +(MATCH 32 1 32.000 40)Tj +T* +(CONSTRUCT 49 1 49.000 60)Tj +T* +(TOTAL 81 2 40.500 )Tj +T* +(NIL)Tj +/F1 1 Tf +-3.6 -1.823 TD +(Occasionally, a function being analyzed is sufficiently fast that the overhead)Tj +0 -1.2 TD +(involved in measuring it obscures the actual time spent in the function. If you)Tj +T* +(were using )Tj +/TT8 1 Tf +5.315 0 TD +(TIME)Tj +/F1 1 Tf +2.4004 0 TD +(, you would specify a value for )Tj +/F2 1 Tf +14.168 0 TD +(TIMEN)Tj +/F1 1 Tf +3.573 0 TD +( greater than 1 to give)Tj +-25.4564 -1.323 TD +(greater accuracy. A similar option is available for )Tj +/TT8 1 Tf +23.355 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +(. You can specify)Tj +-28.7559 -1.323 TD +(that a function\(s\) be executed a multiple number of times for each)Tj +0 -1.2 TD +(measurement, and the average value reported, by including a number in the list)Tj +T* +(of functions given to )Tj +/TT8 1 Tf +9.611 0 TD +(BREAKDOWN)Tj +/F1 1 Tf +5.4009 0 TD +(. For example, )Tj +/TT8 1 Tf +7.15 0 TD +(BREAKDOWN\(EDITCOM EDIT4F)Tj +-22.1619 -1.323 TD +(10 EDIT4E EQP\))Tj +/F1 1 Tf +8.4014 0 TD +( means normal breakdown for )Tj +/TT8 1 Tf +14.113 0 TD +(EDITCOM)Tj +/F1 1 Tf +4.2007 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(EDIT4F)Tj +/F1 1 Tf +3.6006 0 TD +( but)Tj +-32.6126 -1.323 TD +(executes \(the body of\) )Tj +/TT8 1 Tf +10.222 0 TD +(EDIT4E)Tj +/F1 1 Tf +3.6006 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(EQP)Tj +/F1 1 Tf +1.8003 0 TD +( 10 times each time they are called. Of)Tj +-17.9199 -1.323 TD +(course, the functions so measured must not cause any harmful side effects, since)Tj +0 -1.2 TD +(they are executed more than once for each call. The printout from)Tj +/TT8 1 Tf +T* +(BRKDWNRESULTS)Tj +/F1 1 Tf +7.8013 0 TD +( will look the same as though each function were run only once,)Tj +-7.8013 -1.323 TD +(except that the measurement will be more accurate.)Tj +0 -1.9 TD +(Another way of obtaining more accurate measurement is to expand the call to)Tj +0 -1.2 TD +(the measuring function in-line. If the value of )Tj +/TT8 1 Tf +21.612 0 TD +(BRKDWNCOMPFLG)Tj +/F1 1 Tf +7.8013 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +-32.8023 -1.323 TD +(\(initially )Tj +/TT8 1 Tf +4.279 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(\), then whenever a function is broken-down, it will be redefined to)Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 14 0 R +/TT11 44 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +51 0 obj +<< +/Length 5031 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-13)Tj +/F1 1 Tf +10 0 0 10 162 568.26 Tm +(call the measuring function, and then recompiled. The measuring function is)Tj +0 -1.2 TD +(expanded in-line via an appropriate macro. In addition, whenever )Tj +/TT8 1 Tf +30.929 0 TD +(BRKDWNTYPE)Tj +/F1 1 Tf +-30.929 -1.323 TD +(is reset, the compiler is called for )Tj +/F2 1 Tf +15.538 0 TD +(all)Tj +/F1 1 Tf +1.24 0 TD +( functions for which )Tj +/TT8 1 Tf +9.425 0 TD +(BRKDWNCOMPFLG)Tj +/F1 1 Tf +7.8013 0 TD +( was)Tj +-34.0043 -1.323 TD +(set at the time they were originally broken-down, i.e. the setting of the flag at)Tj +0 -1.2 TD +(the time a function is broken-down determines whether the call to the)Tj +T* +(measuring code is compiled in-line.)Tj +/TT4 1 Tf +14 0 0 14 54 460.62 Tm +(GAINSPACE)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 457.03 m +534.01 457.03 l +S +BT +/F1 1 Tf +10 0 0 10 126 438.8 Tm +(If you have large programs and databases, you may sometimes find yourself in a)Tj +T* +(situation where you need to obtain more space, and are willing to pay the price of)Tj +T* +(eliminating some or all of the context information that the various user-assistance)Tj +T* +(facilities such as the programmers assistant, file package, CLISP, etc., have)Tj +T* +(accumulated during the course of his session. The function )Tj +/TT8 1 Tf +27.63 0 TD +(GAINSPACE)Tj +/F1 1 Tf +5.4009 0 TD +( provides an)Tj +-33.0309 -1.323 TD +(easy way to selectively throw away accumulated data:)Tj +/TT8 1 Tf +0 -2.206 TD +-0.0001 Tc +(\(GAINSPACE\) )Tj +/TT6 1 Tf +7.2002 0 TD +0 Tc +( )Tj +/F1 1 Tf +28.7858 0 TD +([Function])Tj +-32.386 -1.823 TD +(Prints a list of deletable objects, allowing you to specify at each point what)Tj +0 -1.2 TD +(should be discarded and what should be retained. For example:)Tj +/TT11 1 Tf +3.6 -1.9 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +(\(GAINSPACE\))Tj +-0.9868 -1 TD +(purge history lists ? Yes)Tj +T* +(purge everything, or just the properties, e.g., SIDE,)Tj +T* +(LISPXPRINT, etc. ?)Tj +T* +(just the properties)Tj +T* +(discard definitions on property lists ? Yes)Tj +T* +(discard old values of variables ? Yes)Tj +T* +(erase properties ? No)Tj +T* +(erase CLISP translations? Yes)Tj +-7.2 -2.123 TD +(GAINSPACE)Tj +/F1 1 Tf +5.4009 0 TD +( is driven by the list )Tj +/TT8 1 Tf +9.502 0 TD +(GAINSPACEFORMS)Tj +/F1 1 Tf +8.4014 0 TD +(. Each element on )Tj +/TT8 1 Tf +8.816 0 TD +(GAINSPACEFORMS)Tj +/F1 1 Tf +-32.1202 -1.323 TD +(is of the form )Tj +/TT8 1 Tf +6.389 0 TD +(\()Tj +/F2 1 Tf +0.6001 0 TD +(PRECHECK)Tj +/F3 1 Tf +5.87 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(MESSAGE)Tj +/F3 1 Tf +5.204 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FORM)Tj +/F3 1 Tf +3.13 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(KEYLST)Tj +/TT8 1 Tf +4.167 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(PRECHECK)Tj +/F1 1 Tf +5.87 0 TD +(, when)Tj +-34.5432 -1.323 TD +(evaluated, returns )Tj +/TT8 1 Tf +8.834 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(GAINSPACE)Tj +/F1 1 Tf +5.4009 0 TD +( skips to the next entry. For example, you will not)Tj +-16.5912 -1.323 TD +(be asked whether or not to purge the history list if it is not enabled. Otherwise,)Tj +/TT8 1 Tf +0 -1.2 TD +(ASKUSER)Tj +/F1 1 Tf +4.2007 0 TD +( \(Chapter 26\) is called with the indicated )Tj +/F2 1 Tf +19.151 0 TD +(MESSAGE)Tj +/F1 1 Tf +5.204 0 TD +( and the \(optional\))Tj +/F2 1 Tf +-28.5557 -1.323 TD +(KEYLST)Tj +/F1 1 Tf +4.167 0 TD +(. If you respond )Tj +/TT10 1 Tf +7.722 0 TD +(No)Tj +/F1 1 Tf +1.2002 0 TD +(, i.e., )Tj +/TT8 1 Tf +2.483 0 TD +(ASKUSER)Tj +/F1 1 Tf +4.2007 0 TD +( returns )Tj +/TT8 1 Tf +4.018 0 TD +(N)Tj +/F1 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(GAINSPACE)Tj +/F1 1 Tf +5.4009 0 TD +( skips to the next)Tj +-30.3479 -1.323 TD +(entry. Otherwise, )Tj +/F2 1 Tf +8.649 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( is evaluated with the variable )Tj +/TT8 1 Tf +14.356 0 TD +(RESPONSE)Tj +/F1 1 Tf +4.8008 0 TD +( bound to the value)Tj +-30.9358 -1.323 TD +(of )Tj +/TT8 1 Tf +1.111 0 TD +(ASKUSER)Tj +/F1 1 Tf +4.2007 0 TD +(. In the above example, the )Tj +/F2 1 Tf +13.04 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( for the ")Tj +/TT10 1 Tf +4 0 TD +(purge history lists)Tj +/F1 1 Tf +11.4019 0 TD +(")Tj +-36.8835 -1.323 TD +(question calls )Tj +/TT8 1 Tf +6.594 0 TD +(ASKUSER)Tj +/F1 1 Tf +4.2007 0 TD +( to ask ")Tj +/TT10 1 Tf +3.724 0 TD +(purge everything, ...)Tj +/F1 1 Tf +12.602 0 TD +(" only if you had responded)Tj +/TT10 1 Tf +-27.1207 -1.323 TD +(Yes)Tj +/F1 1 Tf +1.8003 0 TD +(. If you had responded with )Tj +/TT10 1 Tf +13.186 0 TD +(Everything)Tj +/F1 1 Tf +6.001 0 TD +(, the second question would not have been)Tj +-20.9873 -1.323 TD +(asked.)Tj +0 -1.9 TD +(The ")Tj +/TT10 1 Tf +2.445 0 TD +(erase properties)Tj +/F1 1 Tf +9.6016 0 TD +(" question is driven by a list )Tj +/TT8 1 Tf +13.17 0 TD +(SMASHPROPSMENU)Tj +/F1 1 Tf +8.4014 0 TD +(. Each element)Tj +-33.6179 -1.323 TD +(on this list is of the form )Tj +/TT8 1 Tf +11.594 0 TD +(\()Tj +/F2 1 Tf +0.6001 0 TD +(MESSAGE)Tj +/F3 1 Tf +5.204 0 TD +( )Tj +/TT8 1 Tf +0.287 0 TD +(.)Tj +/F3 1 Tf +0.6001 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(PROPS)Tj +/TT8 1 Tf +3.52 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(. You are prompted with )Tj +/F2 1 Tf +11.798 0 TD +(MESSAGE)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 14 0 R +/TT10 22 0 R +/TT11 44 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +54 0 obj +<< +/Length 2848 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-14)Tj +/F1 1 Tf +10 0 0 10 174 568.26 Tm +(\(by )Tj +/TT8 1 Tf +1.704 0 TD +(ASKUSER)Tj +/F1 1 Tf +4.2007 0 TD +(\), and if your response is )Tj +/TT10 1 Tf +11.593 0 TD +(Ye)Tj +/F3 1 Tf +1.2002 0 TD +(s)Tj +/F1 1 Tf +0.5 0 TD +(, )Tj +/F2 1 Tf +0.556 0 TD +(PROPS)Tj +/F1 1 Tf +3.52 0 TD +( is added to the list )Tj +/TT8 1 Tf +9.095 0 TD +(SMASHPROPS)Tj +/F1 1 Tf +6.001 0 TD +(.)Tj +-38.3699 -1.323 TD +(The ")Tj +/TT10 1 Tf +2.445 0 TD +(discard definitions on property lists)Tj +/F1 1 Tf +22.2036 0 TD +(" and ")Tj +/TT10 1 Tf +3.075 0 TD +(discard old values of)Tj +-27.7236 -1.323 TD +(variables)Tj +/F1 1 Tf +5.4009 0 TD +(" questions also add to )Tj +/TT8 1 Tf +10.614 0 TD +(SMASHPROPS)Tj +/F1 1 Tf +6.001 0 TD +(. You will not be prompted for any entry)Tj +-22.0159 -1.323 TD +(on )Tj +/TT8 1 Tf +1.389 0 TD +(SMASHPROPSMENU)Tj +/F1 1 Tf +8.4014 0 TD +( for which all of the corresponding properties are already on)Tj +/TT8 1 Tf +-9.7904 -1.323 TD +(SMASHPROPS)Tj +/F1 1 Tf +6.001 0 TD +(. )Tj +/TT8 1 Tf +0.834 0 TD +(SMASHPROPS)Tj +/F1 1 Tf +6.001 0 TD +( is initially set to the value of )Tj +/TT8 1 Tf +13.763 0 TD +(SMASHPROPSLST)Tj +/F1 1 Tf +7.8013 0 TD +(. This)Tj +-34.4002 -1.323 TD +(permits you to specify in advance those properties which you always want discarded,)Tj +0 -1.2 TD +(and not be asked about them subsequently. After finishing all the entries on)Tj +/TT8 1 Tf +T* +(GAINSPACEFORMS)Tj +/F1 1 Tf +8.4014 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(GAINSPACE)Tj +/F1 1 Tf +5.4009 0 TD +( checks to see if the value of )Tj +/TT8 1 Tf +13.131 0 TD +(SMASHPROPS)Tj +/F1 1 Tf +6.001 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(,)Tj +-38.6795 -1.323 TD +(and if so, does a )Tj +/TT8 1 Tf +7.613 0 TD +(MAPATOMS)Tj +/F1 1 Tf +4.8008 0 TD +(, i.e., looks at every atom in the system, and erases the)Tj +-12.4138 -1.323 TD +(indicated properties.)Tj +0 -1.9 TD +(You can change or add new entries to )Tj +/TT8 1 Tf +17.557 0 TD +(GAINSPACEFORMS)Tj +/F1 1 Tf +8.4014 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(SMASHPROPSMENU)Tj +/F1 1 Tf +8.4014 0 TD +(, so that)Tj +/TT8 1 Tf +-35.8597 -1.323 TD +(GAINSPACE)Tj +/F1 1 Tf +5.4009 0 TD +( can also be used to purge structures that your programs have accumulated.)Tj +/TT4 1 Tf +14 0 0 14 102 373.01 Tm +(Using Data Types Instead of Records)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 369.42 m +582.01 369.42 l +S +BT +/F1 1 Tf +10 0 0 10 174 351.19 Tm +(If a program uses large numbers of large data structures, there are several advantages)Tj +0 -1.2 TD +(to representing them as user data types rather than as list structures. The primary)Tj +T* +(advantage is increased speed: accessing and setting the fields of a data type can be)Tj +T* +(significantly faster than walking through a list with repeated )Tj +/TT8 1 Tf +28.671 0 TD +(CAR)Tj +/F1 1 Tf +1.8003 0 TD +(s and )Tj +/TT8 1 Tf +2.76 0 TD +(CDR)Tj +/F1 1 Tf +1.8003 0 TD +(s. Also, )Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 13 0 R +/F3 21 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT8 14 0 R +/TT10 22 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +57 0 obj +<< +/Length 3827 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-15)Tj +/F1 1 Tf +10 0 0 10 126 568.26 Tm +(compiled code for referencing data types is usually smaller. Finally, by reducing the)Tj +0 -1.2 TD +(number of objects created \(one object against many list cells\), this can reduce the)Tj +T* +(expense of garbage collection.)Tj +0 -1.9 TD +(User data types are declared by using the )Tj +/TT8 1 Tf +19.521 0 TD +(DATATYPE)Tj +/F1 1 Tf +4.8008 0 TD +( record type \(Chapter 8\). If a list)Tj +-24.3218 -1.323 TD +(structure has been defined using the )Tj +/TT8 1 Tf +17.204 0 TD +(RECORD)Tj +/F1 1 Tf +3.6006 0 TD +( record type \(Chapter 8\), and all accessing)Tj +-20.8046 -1.323 TD +(operations are written using the record packages )Tj +/TT10 1 Tf +23.094 0 TD +(fetch)Tj +/F1 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.556 0 TD +(replace)Tj +/F1 1 Tf +4.2007 0 TD +(, and )Tj +/TT10 1 Tf +2.575 0 TD +(create)Tj +/F1 1 Tf +-33.4262 -1.323 TD +(operations, changing from )Tj +/TT8 1 Tf +12.352 0 TD +(RECORD)Tj +/F1 1 Tf +3.6006 0 TD +(s to )Tj +/TT8 1 Tf +1.908 0 TD +(DATATYPE)Tj +/F1 1 Tf +4.8008 0 TD +(s only requires editing the record)Tj +-22.6614 -1.323 TD +(declaration \(using )Tj +/TT8 1 Tf +8.63 0 TD +(EDITREC)Tj +/F1 1 Tf +4.2007 0 TD +(, Chapter 8\) to replace declaration type )Tj +/TT8 1 Tf +18.335 0 TD +(RECORD)Tj +/F1 1 Tf +3.6006 0 TD +( by)Tj +/TT8 1 Tf +-34.7663 -1.323 TD +(DATATYPE)Tj +/F1 1 Tf +4.8008 0 TD +(, and recompiling.)Tj +-4.8008 -2.023 TD +(Note: There are some minor disadvantages with allocating new data types: First, there)Tj +0 -1.2 TD +(is an upper limit on the number of data types which can exist. Also, space for data)Tj +T* +(types is allocated a page at a time, so each data type has at least one page assigned to)Tj +T* +(it, which may be wasteful of space if there are only a few examples of a given data type.)Tj +T* +(These problems should not effect most applications programs.)Tj +/TT4 1 Tf +14 0 0 14 54 345.7 Tm +(Using Incomplete File Names)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 342.11 m +534.01 342.11 l +S +BT +/F1 1 Tf +10 0 0 10 126 323.88 Tm +(Currently, Interlisp allows you to specify an open file by giving the file name. If the file)Tj +T* +(name is incomplete \(it doesnt have the device/host, directory, name, extension, and)Tj +T* +(version number all supplied\), the system converts it to a complete file name, by)Tj +T* +(supplying defaults and searching through directories \(which may be on remote file)Tj +T* +(servers\), and then searches the open streams for one corresponding to that file name.)Tj +T* +(This file name-completion process happens whenever any I/O function is given an)Tj +T* +(incomplete file name, which can cause a serious performance problem if I/O operations)Tj +T* +(are done repeatedly. In general, it is much faster to convert an incomplete file name to)Tj +T* +(a stream once, and use the stream from then on. For example, suppose a file is opened)Tj +T* +(with)Tj +/TT8 1 Tf +2.093 0 TD +( \(SETQ STRM \(OPENSTREAM MYNAME INPUT\)\))Tj +/F1 1 Tf +24.0039 0 TD +(. After doing this, )Tj +/TT8 1 Tf +8.649 0 TD +(\(READC)Tj +-34.7459 -1.323 TD +(MYNAME\))Tj +/F1 1 Tf +4.8008 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(\(READC STRM\))Tj +/F1 1 Tf +7.2012 0 TD +( would both work, but )Tj +/TT8 1 Tf +10.373 0 TD +(\(READC MYNAME\))Tj +/F1 1 Tf +9.0015 0 TD +( would take)Tj +-33.6734 -1.323 TD +(longer \(sometimes orders of magnitude longer\). This could seriously effect the)Tj +0 -1.2 TD +(performance if a program which is doing many I/O operations.)Tj +0 -1.9 TD +(At some point in the future, when multiple streams are supported to a single file, the)Tj +0 -1.2 TD +(feature of mapping file names to streams will be removed. This is yet another reason)Tj +T* +(why programs should use streams as handles to open files, instead of file names.)Tj +0 -1.9 TD +(For more information on efficiency considerations when using files, see Chapter 24.)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT8 14 0 R +/TT10 22 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +60 0 obj +<< +/Length 1556 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-16)Tj +/TT4 1 Tf +14 0 0 14 102 565.08 Tm +(Using "Fast" and "Destructive" Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 561.49 m +582.01 561.49 l +S +BT +/F1 1 Tf +10 0 0 10 174 543.26 Tm +(Among the functions used for manipulating objects of various data types, there are a)Tj +0 -1.2 TD +(number of functions which have "fast" and "destructive" versions. You should be aware)Tj +T* +(of what these functions do, and when they should be used.)Tj +0 -1.9 TD +("Fast" functions: By convention, a function named by prefixing an existing function)Tj +0 -1.2 TD +(name with )Tj +/TT8 1 Tf +5.205 0 TD +(F)Tj +/F1 1 Tf +0.6001 0 TD +( indicates that the new function is a "fast" version of the old. These usually)Tj +-5.8051 -1.323 TD +(have the same definitions as the slower versions, but they compile open and run)Tj +0 -1.2 TD +(without any "safety" error checks. For example, )Tj +/TT8 1 Tf +22.502 0 TD +(FNTH)Tj +/F1 1 Tf +2.4004 0 TD +( runs faster than )Tj +/TT8 1 Tf +8.093 0 TD +(NTH)Tj +/F1 1 Tf +1.8003 0 TD +(, however, it)Tj +-34.7957 -1.323 TD +(does not make as many checks \(for lists ending with anything but )Tj +/TT8 1 Tf +30.597 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, etc\). If these)Tj +-32.3973 -1.323 TD +(functions are given arguments that are not in the form that they expect, their behavior)Tj +0 -1.2 TD +(is unpredictable; they may run forever, or cause a system error. In general, you should)Tj +T* +(only use "fast" functions in code that has already been completely debugged, to speed it)Tj +T* +(up.)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +63 0 obj +<< +/Length 1076 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-17)Tj +/F1 1 Tf +10 0 0 10 126 568.26 Tm +("Destructive" functions: By convention, a function named by prefixing an existing)Tj +0 -1.2 TD +(function with )Tj +/TT8 1 Tf +6.463 0 TD +(D)Tj +/F1 1 Tf +0.6001 0 TD +( indicates the new function is a "destructive" version of the old one,)Tj +-7.0631 -1.323 TD +(which does not make any new structure but cannibalizes its argument\(s\). For example,)Tj +/TT8 1 Tf +0 -1.2 TD +(REMOVE)Tj +/F1 1 Tf +3.6006 0 TD +( returns a copy of a list with a particular element removed, but )Tj +/TT8 1 Tf +29.337 0 TD +(DREMOVE)Tj +/F1 1 Tf +-32.9376 -1.323 TD +(actually changes the list structure of the list. \(Unfortunately, not all destructive)Tj +0 -1.2 TD +(functions follow this naming convention: the destructive version of )Tj +/TT8 1 Tf +30.982 0 TD +(APPEND)Tj +/F1 1 Tf +3.6006 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(NCONC)Tj +/F1 1 Tf +3.0005 0 TD +(.\))Tj +-38.9171 -1.323 TD +(You should be careful when using destructive functions that they do not inadvertantly)Tj +0 -1.2 TD +(change data structures.)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT8 14 0 R +>> +/ExtGState << +/GS1 8 0 R +>> +>> +endobj +8 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +65 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +66 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +67 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +68 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +69 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +70 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBKMPH+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 71 0 R +>> +endobj +71 0 obj +<< +/Filter /FlateDecode +/Length 20019 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($C"T0`IiAPo#̒ (+iDkiJ54Z +$!HG@TJA(17; ϼwf~}oル7@69!?pfarZVX`~W'# M@ưXFbX|$@ŒP,rߛ؊PUj`PJĎM-A>&>YEC3]RG $ʇw\bekph%Jo|AFP\U"tz^n.;:_ + +uq=80g8@mʿg-Y<8 +qU +qx:WA?'s? 8f5$&8a,&Lh9p43d% Q:6C5F\hp4Cx\3LRԪ%i7k$^Y8 +|:"9s).^Q@ &qS9Nα0 ;` 4@q*0S0r~X ~n9d9B%%!CARij@Omp'70NNGJ^gW}o@ 8jؿ-#В<ދY_ {)(,G Zm&*0^A8⼇#,ùqGr\|ƣ8?Id*+Qr;Ffl\—dkr&6g9"<t/ M +h!"yN2N a|#{݋naDtzJLQE8t}E0A,lvy 3ĭo2A,n, h!+c9`qnL~W-S^4s"@6S;F#UrĤ^ &Τi215ɣ}=&!-7RIG6h]_ ~1 ɴI/ft 'nSSO4 _!37: Z}4|/f/r\+46;HX~$}RY)Dcf~`bl\bRh2m\n +Wڸ6kl\k6>cc?qXgs66l|z'⌸j託MF O(F1+SE&ѐU͊!t5sg@K7?_/F\ W$EcnL552鲚fU<>*%ʣ[ -)h #@1nٵU$4SkWLg6*6OmP-B Mv!.P"m Ճ.P4 ?x8Α$;Di*2kM)[$~/]RU)Ck̄Lp0FkI,[{]BHlj0>wvo-lpW{;Yb;=ޕqyupQOXj]B&k=aahOgYU:NVoqu,<8\,Jҙ{K(0S榁gP@AۀS]zD,YsWAorm2cgX^Jv[mcxg6b齊N*_=#5dcsZs:i8Cv]-= Pa@?[Cu8vU|-m${c?ԗ lǟŹgBV8Np-vH§ֵ@CRr DB 5I*kU NG 0-d+hԡۚ ﹳMRDHHh<~ٜ3.\0YXJwX e^& LH}2*$u֑1b{wkY n%i0˰Z[-d4 ~RlB;~/1 sۃ^@F%HV:# )p)8Nho e҄ti05`c6V`~&/茍!Fz|{e.)_L3Bw,v!dm[YFF>.UFzB?.wUxϝj8Ԩ1Ӫ'#mtȶ/z"2ָ! +" Qg 9ke\VÚ.59=څrWJgi*:k}A{jI<9>S_ʒ P'Lgw<9'f72*I@3G5;$\J0ϾحːQ4UxNc0^1X*!qnD#o0Z#I 2ubQ "!8 3c yO[yK%Z2jV{<-;qAzTtM.,\:D8UAY)Q y{(]C_;w 5棾͏K%B 󧦶_"c%*u}Ag}>ɘ9k7=Rzv63zZ|Eۖ=V:q+勁xHٳ0[g˯~{eUM=Q_pAu ֒AiuSZ>ؒ\׵.3BXה˱"\{ŲνQb-7ٍ In'F9CHMOp +:D]#ʻ=(0tssѨ3`T$#baSiF[?-HƳ-VGs2)m|ذ,EAJ1 irMFbTNu.mÝа6#"ѶÕwv'0s<&$ _3q OX wJXu +a4A+^ SpeAb!'?$SȣO2TgJ2HJZNG&ɟI9F>&I/@.?P Q'ͥn:>D*-<4KA}/:n6;}vO4,}=d6MdSYI-e/լZX{IvEEv pE>>O?14_ʟ/zox1~O^e:4Qٔa$@ņEԢG3az 5✓;\~UfBȶli1i +c`nDS\B$CI`Lѭ +e1α6b+L`#nn/mHws 2Fۖ7v[Wu;%1E.lY喉UJ_h֙a9˼bjI%$)5b I,/=dP'~,MEhǧf{lx )qᇑY`XjC+\hkY.Zf.ӭY)6(z,H9el߹d`EadjDj50K%nmS UR.!/ qƜә KKmg'tX00,( {JMqCUӻ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*zh⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^)>?t1;ֱiɑPE$ n-ȼH !6#SّٜGw9iU?8*M:k CK]\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` )s]Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5/O`yY@UY-РlKI:96֩%&De1#{imcEGAdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLZc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\+~[S1?7ꧾuܩE^/5IA# +hО%-e Oo_0hc 2~=ytLW,Z1ְZR+Ʈ17f<6cY1fjh/H2VQOhX,OtW"Ah۳\,jxf{[ + &gi Ƽe9,bXxX>M4d,<Ɵ$+j +#ǺG+ԍLοAXO-f9ζnf,,C-ݖΗ^צG9 +і[:?{YPJߔ?^KCGͷܠ0A橥/Kw=_B Zb衅KUDww+Xɪe)MXf_+PxcE-#iZ 4=t@!/Q8i5,\}܀E"/zաzԄv4hEUt lǥx ^܀) ܅{0Sx 6N:^$Ed%YED"}U1ROH i'ϐ9@FHLSM;$wrd"n-k=}!n13WͽǥE{Eu]sܷ )ef.HZT6 (DhjgdL'QVFQ@%֟V:hgĤ-љLkg@[cҎ;QƟs/ h:=?|ߏ]adUNuy+VS 〫sXGEҐ5Тl2 [*y5( +0m?{#8:Nh"ub*Q +1Q'6NGNP-;XZVj%^TqJ &. D8K(XՖ$24)X ckUCށYXv?lȦG 5AhcΥ ql3tؘ޸axʿ] YKCő4-izA GSF<6,4aVPj<ɭo8s:ZN/j,cIrKA@z5}g;ӡ.~T;B$a kHu_烢-LmIo+7%WAGb˻r{;"Qc<&=Yfzk +_a!N%u > ]-kw$4hH[uV"9>a*47JC/") I⟯gE^pwi.JC% `_ԒT T/@$KWO̺*S֝8XHd'ϧeug27;r~V*kX P Ir#֮;lP}Q.ccm޼<(@${94;=`gsFT]IO P o%0&H=Vx"sIz`,O /fH*?wUISRo/0Džu Ố +QM,ȅȪx, *a13XU% 7`32txQ8}a}×pxovqd22\k.y, ?!U%RC^%kIyDym%IEȻ#/<'7L$7A2jy .dtJ')4nt]MVچnr #=Jѳ ($)EIOJR`f*ji9:)"5Iڤ;% K;' OI7cY +s3/&i,e~F}@F\J, !/&T›0_ o78TcBe + 3/r`0dH +yW>a~! ۼ*0Q1p)mPds"E6 yfI&3,sǂ{xg\X$aD} +kwyBh0!Ye\Q.ʸy_ޣm/"i_YJTTʽҪ&6|ʪ'I/7J Duoוl?I1ުȪ5{lՖnV(X|bcmaO+^%=y~vPa4_3'cWr YٍwˍWSkl%͓)STPv|#M=Y}p~܀vk FK"^tϕK{UDrp!\p'͆D[n8j[oݧ[[  ~| ;pWm}].j2VAj)]q~nw}!S؝;A +U ;J"{ LG)$> +M*&Ofٴ $v&Ҭbh&14v3]ZtjoޑSv}QoOص=+D#>lwf'fO+.XaOI@PKB1LC)2Sp7"X rXzXৰ8 +ϣ:*3pDM>$!\Eɵ&*"7Nn#d&Bu|Xd YA'Mmv="(=5=JQRwc$FU!Ơ8ohu{kݖ WGE¨Bqsg{Q%(RZgGTJJh#XzV} F!4eDfyULT\"n↙ .ڑ +C[dPI$fx у`*؁kq&.hg3C%)A놲>֢Tv$4,j`$#ACυ| b?fA'XHoE,yƈPXhFϓ(6_N}b^y˛$Yc& XPR7d~ɇʐ/E iFjl|L*^bkG 8Jב{)۝bp/ HcwX(΢f~_pnFDGs}Z :ߡMH +JIeB9w`+0g L < +=,Y Y٪%JG&t)  2԰-|C v:s{y:"۠Їud}=񯙭xRdNLr/ 4,20dpɲF}OaT!?K0K!H >yZ|E(9ңg0l^*@ܚ=T2tKhfs=`a"4 pvL#.:-O (X ٌ[d6}aw m49l"rkb`mvˆAoi-Q*x% u  TE2QTGSUl,>"OkR. #-T; " n"Y׃¶\+Lę#X.Iq*=$d`9\2q="Xpd1;Н[c\ņA$/:؂FW'G8{ImeJdSQC͠ẩd>ZeY_lGovts# Q"#%qTvCˆ< RIK_0|!͉ !륾V2if}8cPC*E7|ǵ ${۝}Aۡ,8hZl ZdZdO}lj- Z<@UZ|-̢&-*&a׽j5sR}\I`c٥ʼnftg̫‡oMqe␥wcB ֬u=5Ƙע >Y6ޝRrT9UpdqJvG,Ȉş%ȼ~ś-;zR" ZxTQgЂM -5uf -te6xx]yz,1tJǬRBcl[Vά5&ހ^]AN-o]3qnu-]X,h9\.lwY8B{B֝^QYOFH/ZE/J. Š?瑅di +)y5kɹNPl \ҢITf1h->.]F/Wyc,c'j`-ʴ$-pEg@]-0i?[ dgarbչY- +pLxQ6qPZDuֆ-(Jh!Yi"Y c]qjϿ!I|HM= -V>1~ @ 7iN0N?^x21ّ'E0hgЂʛ]Yx$ڥ8h1YUYwJ VyͰtlI JgLU+[z87d،b̩kkܕ'ydtGe:+DQ`F#Z0nG؅;G +'Z̹گ›)8\R9 -|Y1b -p?&|FZD5ojh6 i1,~tj'G쫴Xf~WeޅcF²& 5H13]Z:~dk2V Cb,ELa nd[RlaM-XK"3WN닲{_zdayecE{3?F {8dI<οƦMz# RGԟͥ_͗\nV#N,e݉^pS%On|c +$ \֝<;l.hOZhW] /쐴HF%i!ZbQxvˆ75585iZn:; mh~D.7R=~DLnC] -p:T5|O lm>FOƋ%UmQǏԿ+疻{i;!>\;;//-l%ʖF,طPWnN=ZvڎqƝ\`79'"-CWm4wm6`aY>[XJ_\}[9Wmh|Ԧ񇾅wHp?1T7:ׇZQ>Y(Ңb5[7A Eȥ!~xo^kO{??,‰ZhbiӜh;^6ۉibۇp[p<9e/%  W!d|d#iMr| e"-yw-PƔq3 ה S{*?U~jwvE1_(TS- .F"]cBD +k<450OkGqTԪ1&>cm|cE;?#j<;;?L$^3Y +IJhbn36-dl5[6}.?xw@x|&y3w(?ǿWm)\)iUzF&)RHj~'m>H2r&gy\./_˭O|SaJOLV^Vf)s*e{rV\rITFդV5KV 5S"vݑa$IATRR(VP,.UU \AD`5H=iOG(]j2"FUvF5S+?BdP@&30p/b*# FHH1LawEc$ԃQn1U1EBד!\ +'g>$#3sQh"t0F u +qB:EXN?#:b_< (n\B=Xz (:=EO5etݾoE^H{aV(֭]o஢u`] ,{ulcUu֎{f70*WHr7,ؘRd(q\Ré9h}iCI}~>e_2-%>xbY~uiϽͶ+c=1Y6ɦ'd/{ը0ӅOWqy)#aa4eW +H_YvVBQUt}(ytokNQǴ+уprTBGUb3'B]ki=z(dx75so>7b]p1uU˲ +S֋eLH<Ta ~J B~-D[t;{<3㈸>_ueA~C^IbuYhޢ6kՉUޚmP~EG#|Y}Ɩ3c1>3|@JTq|հhB}dw֮ݬn@՗O7~0/o?xh>0M:KղIlcX+7+;ߠ5}2ܮ%L Θ&Sf6D"ohfے=G͍Q~FCap/#ߕ)s}I?aǾ#uʇ{?-XP! w@?C' !@>[yx /Bf^5XUP K1Z -h?@+f`;`7p 3p.:CBYgD4MHDv 9N>!g^"W NJxS3O`LSi:B3ѱ3hJ;y?Хt]EY~\0=J?g"Lѯ NoN`11CY8晑,b}X,cϒؓ?{ +ie3;HE`TȒ( %ŨĘ^J 2]DM>.S)&WKX𠅌UNx~yJ'!{Q]H1>4~b$TeJ降3b#.SpaW4 + {uA]+hRKA/̑fIAb:s dIB(qܿR `Sdت}4)sj]TkfT48|?p8yI}},I񤄳RMt85?QrA9vwbUP{H?{,uI'gM.Bjմv)F)Z5<ߙҼ7ՆkӦq`%^8X8->+n~z?\u2:D0H9>=gb--ǷmZ\. +;R|Λs9<+./8XޮVzcGm lAt,)O<]I +A%tI6Z\葚:Ԙp+SC^,>h |!pKnJ9]\0NZP5?ӑB.@@GE3` r>ɖs_X /,ź^;$s_H'.>8?'ir_si5>5./cs6+@ą37(8s4d,*vGx֋n2EjKPIykZjS0fh"A ]KEH@4cu=~8=I;aѦ 5‰o1VͰ$ Z TEvzt櫭GgOs%˨Çii%1HԆĶ c F`zOnܤ*qBJ2Od"`/qo (`bK%1]$syٙhV.9,#Rזaq5PAKO>f-(e=F6ȱ՗ɱ13u;W6^T] GG|z*w):lOeͳ8ޘZ.HV@X$}4]! KM JM ,a02-sLt]nMjkT)peɤձ9̪Q86v{zUE2W wϽc.NFurwUL4mX&Trp#<񷛢,CH4);c4i疮RdעYi3?O[Wݖ-WVLAZu͖ùo6_uʻ% th奕r:}s<3"kE7}U }iʮ쳡kڧix.QwsWt~谵i^VFؼ?b鳉s]/G]?ސ5?YuiO8yZ㉲K7 Gt}7e6:{݊hOio<ŷƗC+oɟиOzyjLpa*[GWLoY> qB:=^zeВyS;"N3<]`(MhuFֻ[-Q|8Ga +۳.>}ޠ⢦ ˫?{U{|Ie5O߸4Həb52ǟ NɅS# iЬʼ@a4|Ƀt6+=!劢 Cr6Mo@Gj4N4u4 UInP)93w+%YIÐ%d $A |>{]{ vm|rނ|nIoLA^V*x'~^~ ~^wivqKdYIMmsς ic~Oc|<-Q<VUtbx\U=F_hd +rdK%!͖ +*Ow,23u/h9njyOC()z(XK sB'rEf>hN1mF2?=B[{49ўȴ v!L6i+fpZ_ s=x'˴e +`]ƚ2*ǖJpm!˔˞E\r'–Xr-ٴ{U"3qNXdЈh5 .%('~T&43Ř"sO\a5{r)42-4XORm̺T~*&42N28 g3`8@OC s*xp +'c&Aƀ`482t 4"#!Gf0 yk0 G&-0 /N@e@/al}ɉ9<>eC?}$7{A3rܳ<~/Jn: =-t}ȅfsA4 +Y:VPuBt9BjA5T*(E2@l)в'Yͭg7?%!I@JE~t -+XNyJ^,qءۑ[vk9iὸ;4Ń<\L,^Z^,{M@NZ޾z.Izo`͋T8CXƉ8YD!,0;Xz?!ECqQM!-| iyb8_YsndݢLR&uWZS)4%ҝo8Yl;듔ԕ.{v]n8>P=tII+{AUZ Y9{RR(BxAmjj7]L@Ic1zc}x5A)?ٺÚ??NO$B$=޶#ޜzd5K"=#+86Y16Y6Yr L|kv8na7h&l|;{KK'̲?Ԙ8 l`ǽM?)lgVeD'ժw[=^ 0S +endstream +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +74 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 146 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 481 333 606 333 606 606 +0 606 204 556 389 1000 500 500 333 1000 630 259 1000 606 611 606 +606 204 204 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 72 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 151 +/Widths [278 333 400 556 556 833 852 278 333 333 500 606 278 333 278 606 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +747 704 722 722 778 722 667 778 833 407 611 741 667 944 815 778 +667 778 741 667 685 815 704 926 704 685 667 333 606 333 606 500 +333 574 556 444 611 444 333 537 611 333 315 556 333 889 611 500 +574 556 444 444 352 611 519 778 500 500 463 333 606 333 606 606 +0 606 204 556 389 1000 500 500 333 1000 667 333 981 606 667 606 +606 204 204 389 389 606 500 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 73 0 R +>> +endobj +21 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [287 296 333 574 574 833 852 241 389 389 500 606 278 333 278 278 +574 574 574 574 574 574 574 574 574 574 278 278 606 606 606 500 +747 759 778 778 833 759 722 833 870 444 648 815 722 981 833 833 +759 833 815 667 722 833 759 981 722 722 667 389 606 389 606 500 +333 611 648 556 667 574 389 611 685 370 352 667 352 963 685 611 +667 648 519 500 426 685 611 889 611 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 74 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 65 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 474 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 0 278 0 722 0 833 722 778 +667 0 722 667 611 722 667 944 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 0 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 0 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 66 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 67 0 R +>> +endobj +14 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 0 600 600 600 0 0 600 600 0 0 600 0 600 0 +600 600 600 600 600 600 600 600 600 600 0 600 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 +600 0 600 600 600 600 600 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 68 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0 +600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 +0 600 0 0 0 600 600 600 0 0 0 0 600 0 600 600 +0 0 600 600 600 600 0 0 0 600 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 600 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 69 0 R +>> +endobj +44 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBKMPH+Symbol +/Encoding /Identity-H +/DescendantFonts [ 75 0 R ] +/ToUnicode 76 0 R +>> +endobj +75 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBKMPH+Symbol +/FontDescriptor 70 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +76 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPN0 91$nAK8D {.qK$Dn:IJ{lyi[ acᆣ'8omN&nN- Z<Z?+;dOcgF%o(hp8yy1LkD^E64"JUs$~n2,J?F/r݈]H ߉!Gsj +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +10 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 12 0 R +/Contents 11 0 R +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 17 0 R +/Contents 16 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 34 0 R +/Contents 33 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 37 0 R +/Contents 36 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 9 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +77 0 obj +<< +/S /D +>> +endobj +78 0 obj +<< +/Nums [0 77 0 R ] +>> +endobj +9 0 obj +<< +/Type /Pages +/Kids [1 0 R 10 0 R 15 0 R 18 0 R 23 0 R 26 0 R 29 0 R 32 0 R 35 0 R 38 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [41 0 R 47 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R] +/Count 7 +/Parent 45 0 R +>> +endobj +45 0 obj +<< +/Type /Pages +/Kids [9 0 R 46 0 R ] +/Count 17 +/MediaBox [0 0 612 792] +>> +endobj +79 0 obj +<< +/CreationDate (D:20210202102705-06'00') +/ModDate (D:20210202102705-06'00') +/Producer (Apple pstopdf) +>> +endobj +80 0 obj +<< +/Type /Catalog +/Pages 45 0 R +/PageLabels 78 0 R +>> +endobj +xref +0 81 +0000000000 65535 f +0000087841 00000 n +0000000016 00000 n +0000003426 00000 n +0000083576 00000 n +0000085415 00000 n +0000085626 00000 n +0000086062 00000 n +0000061516 00000 n +0000089324 00000 n +0000087921 00000 n +0000003553 00000 n +0000007429 00000 n +0000084216 00000 n +0000086227 00000 n +0000088004 00000 n +0000007569 00000 n +0000010461 00000 n +0000088087 00000 n +0000010601 00000 n +0000015341 00000 n +0000084878 00000 n +0000086757 00000 n +0000088170 00000 n +0000015483 00000 n +0000016278 00000 n +0000088253 00000 n +0000016409 00000 n +0000020945 00000 n +0000088336 00000 n +0000021107 00000 n +0000022011 00000 n +0000088419 00000 n +0000022117 00000 n +0000026057 00000 n +0000088502 00000 n +0000026197 00000 n +0000031240 00000 n +0000088585 00000 n +0000031391 00000 n +0000036275 00000 n +0000088668 00000 n +0000036437 00000 n +0000040962 00000 n +0000087204 00000 n +0000089576 00000 n +0000089460 00000 n +0000088752 00000 n +0000041126 00000 n +0000046008 00000 n +0000088836 00000 n +0000046172 00000 n +0000051256 00000 n +0000088920 00000 n +0000051444 00000 n +0000054345 00000 n +0000089004 00000 n +0000054509 00000 n +0000058389 00000 n +0000089088 00000 n +0000058531 00000 n +0000060140 00000 n +0000089172 00000 n +0000060269 00000 n +0000061398 00000 n +0000061656 00000 n +0000061853 00000 n +0000062059 00000 n +0000062254 00000 n +0000062445 00000 n +0000062647 00000 n +0000062837 00000 n +0000082946 00000 n +0000083154 00000 n +0000083364 00000 n +0000087347 00000 n +0000087550 00000 n +0000089256 00000 n +0000089284 00000 n +0000089667 00000 n +0000089790 00000 n +trailer +<< +/Size 81 +/Root 80 0 R +/Info 79 0 R +/ID [<818b9db9d7448f19dd30a29f215353b1><818b9db9d7448f19dd30a29f215353b1>] +>> +startxref +89860 +%%EOF diff --git a/docs/medley-irm/22-PROCESSES.TEDIT b/docs/medley-irm/22-PROCESSES.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..3b350df8f527cf2d2a9ec76e5d6ac163c7ba8801 GIT binary patch literal 66599 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 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/22-PROCESSES.pdf b/docs/medley-irm/22-PROCESSES.pdf new file mode 100644 index 00000000..b5229104 --- /dev/null +++ b/docs/medley-irm/22-PROCESSES.pdf @@ -0,0 +1,6969 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5846 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +[(22. )-76.4(PROCESSES)]TJ +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +510.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.0144 Tw +(The Medley Process mechanism provides an environment in which multiple Lisp processes can run in)Tj +0 -1.2222 TD +0.1833 Tw +[(parallel. Each executes in its own stack space, but all share a global address space. The current)]TJ +T* +0.2244 Tw +(process implementation is cooperative; i.e., process switches happen voluntarily, either when the)Tj +T* +0.2289 Tw +[(process in control has nothing to do or when it is in a convenient place to pause. There is no)]TJ +T* +0.0922 Tw +(preemption or guaranteed service, so you cannot run something demanding \(e.g., Chat\) at the same)Tj +T* +0.0633 Tw +[(time as something that runs for long periods without yielding control. Keyboard input and network)]TJ +T* +0.1244 Tw +(operations block with great frequency, so processes currently work best for highly interactive tasks)Tj +T* +0 Tw +(\(editing, making remote files\).)Tj +0 -2.8889 TD +0.1389 Tw +(In Medley, the process mechanism is already turned on, and is expected to stay on during normal)Tj +0 -1.2222 TD +0.15 Tw +[(operations, as some system facilities \(in particular, most network operations\) require it. However,)]TJ +T* +0 Tw +(under exceptional conditions, the following function can be used to turn the world off and on:)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESSWORLD)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT8 1 Tf +28.2197 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0333 Tw +(Starts up the process world, or if )Tj +/TT14 1 Tf +14.8749 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2833 0 TD +(OFF)Tj +/TT8 1 Tf +1.8003 0 TD +0.0333 Tw +[(, kills all processes and turns it off. Normally)]TJ +-19.6423 -1.2889 TD +0.0544 Tw +[(does not return. The environment starts out with two processes: a top-level )]TJ +/TT10 1 Tf +34.3714 0 TD +0 Tw +(EVALQT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0544 Tw +[( \(the)]TJ +-37.9719 -1.2889 TD +0.3256 Tw +(initial "tty" process\) and the "background" process, which runs the window mouse)Tj +0 -1.2222 TD +0 Tw +(handler and other system background tasks.)Tj +/TT10 1 Tf +0 -2 TD +(PROCESSWORLD)Tj +/TT8 1 Tf +7.2012 0 TD +0.1456 Tw +[( is intended to be called at the top level of Interlisp, not from within a)]TJ +-7.2012 -1.2889 TD +0.0422 Tw +[(program. It does not toggle some sort of switch; rather, it constructs some new processes)]TJ +0 -1.2222 TD +0.1367 Tw +(in a new part of the stack, leaving any callers of )Tj +/TT10 1 Tf +22.7148 0 TD +0 Tw +(PROCESSWORLD)Tj +/TT8 1 Tf +7.2012 0 TD +0.1367 Tw +[( in a now inaccessible)]TJ +-29.9159 -1.2889 TD +0.3756 Tw +[(part of the stack. Calling )]TJ +/TT10 1 Tf +13.5619 0 TD +0.9022 Tw +(\(PROCESSWORLD OFF\))Tj +/TT8 1 Tf +12.3041 0 TD +0.3756 Tw +[( is the only way the call to)]TJ +/TT10 1 Tf +-25.866 -1.2889 TD +0 Tw +(PROCESSWORLD)Tj +/TT8 1 Tf +7.2012 0 TD +( ever returns.)Tj +/TT10 1 Tf +-9.8678 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(HARDRESET)Tj +/TT10 1 Tf +5.3999 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 166.8017 251 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 251 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0667 Tw +[(Resets the whole world, and rebuilds the stack from scratch. This is "harder" than doing)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +0.23 Tw +[( to every process, because it also resets system internal processes \(such as the)]TJ +-3.0005 -1.2889 TD +0 Tw +(keyboard handler\).)Tj +/TT10 1 Tf +0 -2 TD +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +0.0422 Tw +[( automatically turns the process world on \(or resets it if it was on\), unless the)]TJ +-5.4009 -1.2889 TD +0 Tw +(variable )Tj +/TT10 1 Tf +3.8242 0 TD +(AUTOPROCESSFLG)Tj +/TT8 1 Tf +8.4014 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 139.26 Tm +(Creating and Destroying Processes)Tj +ET +1 w +54.01 136.55 m +510.01 136.55 l +S +BT +/TT10 1 Tf +9 0 0 9 102 118.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ADD.PROCESS)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROP)Tj +2.3996 -0.3333 TD +(1)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VALUE)Tj +3 -0.3333 TD +(1)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.3333 TD +(N)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VALUE)Tj +3 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 347.7017 118.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 401.99 118.26 Tm +([NoSpread Function])Tj +-30.6656 -2.1778 TD +0.1644 Tw +(Creates a new process evaluating )Tj +/TT14 1 Tf +15.7851 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1644 Tw +[(, and returns its process handle. The processs)]TJ +-18.1855 -1.2889 TD +0.2422 Tw +(stack environment is the top level, i.e., the new process does not have access to the)Tj +0 -1.2222 TD +0.0678 Tw +(environment in which )Tj +/TT10 1 Tf +10.2693 0 TD +0 Tw +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0678 Tw +[( was called; all such information must be passed as)]TJ +-16.8703 -1.2889 TD +0.2211 Tw +(arguments in )Tj +/TT14 1 Tf +6.5633 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2211 Tw +[(. The process runs until )]TJ +/TT14 1 Tf +12.1602 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.2211 Tw +[( returns or the process is explicitly)]TJ +-23.5243 -1.2889 TD +0.2778 Tw +[(deleted. An untrapped error within the process also deletes the process \(unless its)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RESTARTABLE)Tj +/TT8 1 Tf +6.6011 0 TD +( property is )Tj +/TT10 1 Tf +5.3643 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(\), in which case a message is printed to that effect.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 5463 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.6933 Tw +[(The remaining arguments are alternately property names and values. Any)]TJ +0 -1.2222 TD +0.1333 Tw +(property/value pairs acceptable to )Tj +/TT10 1 Tf +16.1769 0 TD +0 Tw +(PROCESSPROP)Tj +/TT8 1 Tf +6.6011 0 TD +0.1333 Tw +[( may be given, but the following two)]TJ +-22.778 -1.2889 TD +0 Tw +(are directly relevant to )Tj +/TT10 1 Tf +10.2563 0 TD +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +(:)Tj +/TT12 1 Tf +-9.2574 -2.0667 TD +(NAME)Tj +/TT8 1 Tf +3.7333 0 TD +0.0267 Tw +(Value can be a symbol or a string; if not given, the process)Tj +0 -1.2889 TD +0.2567 Tw +(name is taken from )Tj +/TT10 1 Tf +9.7855 0 TD +0 Tw +(\(CAR)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.5067 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.2567 Tw +(. )Tj +/TT10 1 Tf +1.2633 0 TD +0 Tw +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.2567 Tw +[( may)]TJ +-23.5574 -1.2889 TD +0.0944 Tw +(pack the name with a number to make it unique. Process)Tj +0 -1.2222 TD +0.0256 Tw +[(names are treated as case-insensitive strings. This name is)]TJ +T* +0.2289 Tw +(solely for the convenience of manipulating processes at)Tj +T* +0.28 Tw +(Lisp type-in; e.g., the name can be given as the )Tj +/TT14 1 Tf +23.6037 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +-23.6037 -1.2889 TD +0.5222 Tw +(argument to most process functions, and the name)Tj +0 -1.2222 TD +0.4111 Tw +[(appears in menus of processes. However, programs)]TJ +T* +0.2322 Tw +(should normally only deal in process handles, both for)Tj +T* +0.0344 Tw +(efficiency and to avoid the confusion that can result if two)Tj +T* +0 Tw +(processes have the same defining form.)Tj +/TT12 1 Tf +-5.5333 -2 TD +(SUSPEND)Tj +/TT8 1 Tf +5.5333 0 TD +0.2167 Tw +(If the value is non-)Tj +/TT10 1 Tf +9.1196 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2167 Tw +(, the new process is created but)Tj +-10.9199 -1.2889 TD +0.27 Tw +(then immediately suspended; i.e., the process does not)Tj +0 -1.2222 TD +0 Tw +(actually run until woken by a )Tj +/TT10 1 Tf +13.291 0 TD +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.2012 0 TD +( \(below\).)Tj +/TT10 1 Tf +-34.4922 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESSPROP)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROP)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NEWVALUE)Tj +/TT10 1 Tf +4.8008 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 318.7658 353 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 449.99 353 Tm +([NoSpread Function])Tj +-30.6656 -1.8444 TD +0.0278 Tw +(Used to get or set the values of certain properties of process )Tj +/TT14 1 Tf +26.9017 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.0278 Tw +(, in a manner analogous)Tj +-29.3021 -1.2889 TD +0 Tw +(to )Tj +/TT10 1 Tf +1.1643 0 TD +(WINDOWPROP)Tj +/TT8 1 Tf +6.001 0 TD +0.0422 Tw +[(. If )]TJ +/TT14 1 Tf +1.7966 0 TD +0 Tw +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0422 Tw +[( is supplied \(including if it is )]TJ +/TT10 1 Tf +13.2013 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0422 Tw +(\), property )Tj +/TT14 1 Tf +5.0669 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0422 Tw +[( is given)]TJ +-36.2315 -1.2889 TD +0.1056 Tw +[(that value. In all cases, returns the old value of the property. The following properties)]TJ +0 -1.2222 TD +0 Tw +(have special meaning for processes; all others are uninterpreted:)Tj +/TT12 1 Tf +7.6 -2 TD +(NAME)Tj +/TT8 1 Tf +3.7333 0 TD +0.1189 Tw +(Value is a symbol used for identifying the process to the)Tj +0 -1.2889 TD +0 Tw +(user.)Tj +/TT12 1 Tf +-3.7333 -2 TD +(FORM)Tj +/TT8 1 Tf +3.7333 0 TD +(Value is the Lisp form used to start the process \(readonly\).)Tj +/TT12 1 Tf +-7.9333 -2.0667 TD +(RESTARTABLE)Tj +/TT8 1 Tf +7.9333 0 TD +0.2089 Tw +(Value is a flag indicating the disposition of the process)Tj +0 -1.2889 TD +0 Tw +(following errors or hard resets:)Tj +/TT10 1 Tf +0 -2 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0444 Tw +[( or )]TJ +/TT10 1 Tf +1.5298 0 TD +0 Tw +(NO)Tj +/TT8 1 Tf +1.2002 0 TD +0.0444 Tw +[( \(the default\): If an untrapped error \(or Control-)]TJ +-4.5303 -1.2889 TD +0.0467 Tw +(E or Control-D\) causes its form to be exited, the process is)Tj +0 -1.2222 TD +0.1433 Tw +[(deleted. The process is also deleted if a )]TJ +/TT10 1 Tf +18.9277 0 TD +0 Tw +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +0.1433 Tw +[( \(or)]TJ +-24.3286 -1.2889 TD +0.1556 Tw +(Control-D from )Tj +/TT10 1 Tf +7.4698 0 TD +0 Tw +(RAID)Tj +/TT8 1 Tf +2.4004 0 TD +0.1556 Tw +(\) occurs, causing the entire Process)Tj +-9.8702 -1.2889 TD +0 Tw +(world to be reinitialized.)Tj +/TT10 1 Tf +0 -2 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0778 Tw +[( or )]TJ +/TT10 1 Tf +1.5965 0 TD +0 Tw +(YES)Tj +/TT8 1 Tf +1.8003 0 TD +0.0778 Tw +(: The process is automatically restarted on errors)Tj +-3.9969 -1.2889 TD +0 Tw +(or )Tj +/TT10 1 Tf +1.302 0 TD +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +0.1111 Tw +[(. This is the normal setting for persistent)]TJ +-6.7029 -1.2889 TD +0.1567 Tw +("background" processes, such as the mouse process, that)Tj +0 -1.2222 TD +0 Tw +(can safely restart themselves on errors.)Tj +/TT10 1 Tf +0 -2 TD +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +0.2067 Tw +(: The process is deleted as usual if an error)Tj +-5.4009 -1.2889 TD +0.3633 Tw +(causes its form to be exited, but it )Tj +/TT16 1 Tf +17.934 0 TD +0 Tw +(is)Tj +/TT8 1 Tf +0.667 0 TD +0.3633 Tw +[( restarted on a)]TJ +/TT10 1 Tf +-18.601 -1.2222 TD +0 Tw +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +0.46 Tw +[(. This setting is preferred for persistent)]TJ +-5.4009 -1.2889 TD +0.0833 Tw +(processes for which an error is an unusual condition, one)Tj +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +19 0 obj +<< +/Length 4518 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT8 1 Tf +9 0 0 9 228 569.54 Tm +0.08 Tw +(that might repeat itself if the process were simply blindly)Tj +0 -1.2222 TD +0 Tw +(restarted.)Tj +/TT12 1 Tf +-7.9333 -2 TD +(RESTARTFORM)Tj +/TT8 1 Tf +7.9333 0 TD +0.0311 Tw +(If the value is non)Tj +/TT18 1 Tf +8.0444 0 TD +0 Tw +(-)Tj +/TT10 1 Tf +0.333 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +(, it is the form used if the process is)Tj +-10.1777 -1.2889 TD +0.1044 Tw +(restarted \(instead of the value of the )Tj +/TT10 1 Tf +16.9323 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1044 Tw +[( property\). Of)]TJ +-19.3327 -1.2889 TD +0.8489 Tw +(course, the process must also have a non-)Tj +/TT10 1 Tf +24.1981 0 TD +0 Tw +(NIL)Tj +-24.1981 -1.2889 TD +(RESTARTABLE)Tj +/TT8 1 Tf +6.6011 0 TD +( prop for this to have any effect.)Tj +/TT12 1 Tf +-13.9344 -2.0667 TD +(BEFOREEXIT)Tj +/TT8 1 Tf +7.3333 0 TD +0.1133 Tw +(If the value is the atom )Tj +/TT10 1 Tf +11.0321 0 TD +0 Tw +(DONT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1133 Tw +(, it will not be interrupted)Tj +-14.0325 -1.2889 TD +0.1033 Tw +(by a )Tj +/TT10 1 Tf +2.316 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +[(. If )]TJ +/TT10 1 Tf +1.9799 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +[( is attempted before the process)]TJ +-11.4971 -1.2889 TD +0.2789 Tw +(finishes, a message will appear saying that Interlisp is)Tj +0 -1.2222 TD +0.06 Tw +[(waiting for the process to finish. If you want the )]TJ +/TT10 1 Tf +22.3934 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +-22.3934 -1.2889 TD +0.2856 Tw +(to proceed without waiting, you must use the process)Tj +0 -1.2222 TD +0.0833 Tw +(status window \(from the background menu\) to delete the)Tj +T* +0 Tw +(process.)Tj +/TT12 1 Tf +-6.7333 -2 TD +(AFTEREXIT)Tj +/TT8 1 Tf +6.7333 0 TD +0.0978 Tw +(Value indicates the disposition of the process following a)Tj +0 -1.2889 TD +0.3289 Tw +(resumption of Lisp after some exit \()Tj +/TT10 1 Tf +17.7189 0 TD +0 Tw +(LOGOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.8289 0 TD +(SYSOUT)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-25.749 -1.2889 TD +(MAKESYS)Tj +/TT8 1 Tf +4.2007 0 TD +(\). Possible values are:)Tj +/TT10 1 Tf +-4.2007 -2.0667 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +(: Delete the process.)Tj +/TT10 1 Tf +-3.6006 -2.0667 TD +(SUSPEND)Tj +/TT8 1 Tf +4.2007 0 TD +0.0456 Tw +[(: Suspend the process; i.e., do not let it run until)]TJ +-4.2007 -1.2889 TD +0 Tw +(it is explicitly woken.)Tj +0 -2 TD +0.0667 Tw +[(An event: Cause the process to be suspended waiting for)]TJ +0 -1.2222 TD +0 Tw +(the event \(See the Events section below\).)Tj +/TT12 1 Tf +-6.1333 -2 TD +(INFOHOOK)Tj +/TT8 1 Tf +6.1333 0 TD +0.1533 Tw +(Value is a function or form used to provide information)Tj +0 -1.2889 TD +0.0244 Tw +(about the process, in conjunction with the )Tj +/TT10 1 Tf +18.8723 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0244 Tw +[( command)]TJ +-21.2727 -1.2889 TD +0.3744 Tw +(in the process status window \(see the Process Status)Tj +0 -1.2222 TD +0 Tw +(Window section below\).)Tj +/TT12 1 Tf +-4.9333 -2 TD +(WINDOW)Tj +/TT8 1 Tf +4.9333 0 TD +0.4467 Tw +(Value is a window associated with the process, the)Tj +0 -1.2889 TD +0.09 Tw +[(processs "main" window. Used to switch the tty process)]TJ +0 -1.2222 TD +0.2189 Tw +(to this process when you click in this window \(see the)Tj +T* +0 Tw +(Switching the TTY Process section below\).)Tj +0 -2 TD +0.0333 Tw +(Setting the )Tj +/TT10 1 Tf +5.0393 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0333 Tw +[( property does not set the primary I/O)]TJ +-8.6399 -1.2889 TD +0.4378 Tw +(stream \()Tj +/TT10 1 Tf +4.0276 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.4378 Tw +(\) or the terminal I/O stream \()Tj +/TT10 1 Tf +15.6037 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.4378 Tw +(\) to the)Tj +-22.0317 -1.2889 TD +0.0222 Tw +[(window. When a process is created, I/O operations to the)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.27 Tw +[( or )]TJ +/TT10 1 Tf +1.9809 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.27 Tw +[( stream will cause a new window to appear.)]TJ +/TT10 1 Tf +-4.3813 -1.2889 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.1333 Tw +[( \(see Chapter 26\) should be used to)]TJ +-9.6016 -1.2889 TD +0.3033 Tw +(set the terminal I/O stream of a process to a specific)Tj +0 -1.2222 TD +0 Tw +(window.)Tj +/TT12 1 Tf +-7.3333 -2 TD +(TTYENTRYFN)Tj +/TT8 1 Tf +7.3333 0 TD +0.0433 Tw +(Value is a function that is applied to the process when the)Tj +0 -1.2889 TD +0.0278 Tw +(process is made the tty process \(see the Switching the TTY)Tj +0 -1.2222 TD +0 Tw +(Process section below\).)Tj +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +22 0 obj +<< +/Length 7135 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 215.4 569.54 Tm +(TTYEXITFN)Tj +/TT8 1 Tf +6.7333 0 TD +0.0433 Tw +(Value is a function that is applied to the process when the)Tj +0 -1.2889 TD +0.07 Tw +(process ceases to be the tty process \(see the Switching the)Tj +0 -1.2222 TD +0 Tw +(TTY Process section below\).)Tj +/TT10 1 Tf +-14 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(THIS.PROCESS)Tj +/TT10 1 Tf +7.1999 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 225.6009 524.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 524.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0256 Tw +(Returns the handle of the currently running process, or )Tj +/TT10 1 Tf +24.8213 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0256 Tw +[( if the Process world is turned)]TJ +-26.6216 -1.2889 TD +0 Tw +(off.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(DEL.PROCESS)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 249.4553 474.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 474.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0411 Tw +(Deletes process )Tj +/TT14 1 Tf +7.1467 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +(. )Tj +/TT14 1 Tf +0.8322 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( may be a process handle \(returned by )]TJ +/TT10 1 Tf +17.47 0 TD +0 Tw +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0411 Tw +(\), or its)Tj +-36.8508 -1.2889 TD +0 Tw +(name. If )Tj +/TT14 1 Tf +4.1138 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +( is the currently running process, )Tj +/TT10 1 Tf +14.8272 0 TD +(DEL.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +( does not return!)Tj +/TT10 1 Tf +-30.6091 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.RETURN)Tj +/TT8 1 Tf +8.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 271.0562 422.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 422.92 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2422 Tw +(Terminates the currently running process, causing it to "return" )Tj +/TT14 1 Tf +30.4256 0 TD +0 Tw +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +0.2422 Tw +[(. There is an)]TJ +-33.4261 -1.2889 TD +0 Tw +(implicit )Tj +/TT10 1 Tf +3.8113 0 TD +(PROCESS.RETURN)Tj +/TT8 1 Tf +8.4014 0 TD +0.1433 Tw +[( around the )]TJ +/TT14 1 Tf +5.804 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1433 Tw +[( argument given to )]TJ +/TT10 1 Tf +9.2428 0 TD +0 Tw +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.1433 Tw +(, so that)Tj +-36.2609 -1.2889 TD +0.2233 Tw +(normally a process can finish by simply returning; )Tj +/TT10 1 Tf +24.2867 0 TD +0 Tw +(PROCESS.RETURN)Tj +/TT8 1 Tf +8.4014 0 TD +0.2233 Tw +[( is supplied for)]TJ +-32.688 -1.2889 TD +0 Tw +(earlier termination.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.RESULT)Tj +/TT8 1 Tf +8.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROCESS)Tj +/TT16 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WAITFORRESULT)Tj +/TT10 1 Tf +7.8013 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 354.3193 349.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 349.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.0244 0 TD +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1044 Tw +[( has terminated, returns the value, if any, that it returned. This is either the)]TJ +-5.225 -1.2889 TD +0 Tw +(value of a )Tj +/TT10 1 Tf +4.5669 0 TD +(PROCESS.RETURN)Tj +/TT8 1 Tf +8.4014 0 TD +( or the value returned from the form given to )Tj +/TT10 1 Tf +20.1821 0 TD +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-39.7515 -1.2889 TD +0.6256 Tw +(If the process was aborted, the value is )Tj +/TT10 1 Tf +22.3321 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.6256 Tw +[(. If )]TJ +/TT14 1 Tf +3.5466 0 TD +0 Tw +(WAITFORRESULT)Tj +/TT8 1 Tf +7.8013 0 TD +0.6256 Tw +[( is true,)]TJ +/TT10 1 Tf +-35.4802 -1.2889 TD +0 Tw +(PROCESS.RESULT)Tj +/TT8 1 Tf +8.4014 0 TD +0.0944 Tw +[( blocks until )]TJ +/TT14 1 Tf +5.9406 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0944 Tw +[( finishes, if necessary; otherwise, it returns )]TJ +/TT10 1 Tf +19.6509 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +-38.1935 -1.2889 TD +0.1744 Tw +(immediately if )Tj +/TT14 1 Tf +7.0628 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1744 Tw +[( is still running. )]TJ +/TT14 1 Tf +8.3014 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1744 Tw +[( must be the actual process handle)]TJ +-23.7655 -1.2889 TD +0.0422 Tw +(returned from )Tj +/TT10 1 Tf +6.6113 0 TD +0 Tw +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0422 Tw +(, not a process name, as the association between handle and)Tj +-13.2124 -1.2889 TD +0.0578 Tw +(name disappears when the process finishes \(and the process handle itself is then garbage)Tj +0 -1.2222 TD +0 Tw +(collected if no one else has a pointer to it\).)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.FINISHEDP)Tj +/TT8 1 Tf +10.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROCESS)Tj +/TT10 1 Tf +4.2007 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 298.0579 229.64 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 229.64 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0767 Tw +(True if )Tj +/TT14 1 Tf +3.3672 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0767 Tw +[( has terminated. The value returned is an indication of how it finished:)]TJ +/TT10 1 Tf +-7.5679 -1.2889 TD +0 Tw +(NORMAL)Tj +/TT8 1 Tf +3.6006 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(ERROR)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-10.7087 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESSP)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 233.2552 178.5 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 178.5 Tm +([Function])Tj +-35.4033 -1.8444 TD +(True if )Tj +/TT14 1 Tf +3.2139 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +( is the handle of an active process, i.e., one that has not yet finished.)Tj +/TT10 1 Tf +-8.2809 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RELPROCESSP)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROCHANDLE)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 276.4597 138.96 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 138.96 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.03 Tw +(True if )Tj +/TT14 1 Tf +3.2739 0 TD +0 Tw +(PROCHANDLE)Tj +/TT8 1 Tf +6.001 0 TD +0.03 Tw +[( is the handle of a deleted process. This is analogous to )]TJ +/TT10 1 Tf +25.0487 0 TD +0 Tw +(RELSTKP)Tj +/TT8 1 Tf +4.2007 0 TD +0.03 Tw +[(. It)]TJ +-38.5242 -1.2889 TD +0.7656 Tw +(differs from )Tj +/TT10 1 Tf +7.0536 0 TD +0 Tw +(PROCESS.FINISHEDP)Tj +/TT8 1 Tf +10.2017 0 TD +0.7656 Tw +[( in that it never causes an error, while)]TJ +/TT10 1 Tf +-17.2552 -1.2889 TD +0 Tw +(PROCESS.FINISHEDP)Tj +/TT8 1 Tf +10.2017 0 TD +( can cause an error if its )Tj +/TT14 1 Tf +10.6826 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +( argument is not a process at all.)Tj +/TT10 1 Tf +-25.9513 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RESTART.PROCESS)Tj +/TT8 1 Tf +8.9999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 271.0553 76.22 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 76.22 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Unwinds )Tj +/TT14 1 Tf +4.8249 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.4733 Tw +[( to its top level and reevaluates its form. This is effectively a)]TJ +/TT10 1 Tf +-7.2253 -1.2889 TD +0 Tw +(DEL.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +( followed by the original )Tj +/TT10 1 Tf +11.1294 0 TD +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +25 0 obj +<< +/Length 6428 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MAP.PROCESSES)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MAPFN)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 212.2552 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2256 Tw +(Maps over all processes, calling )Tj +/TT14 1 Tf +15.3358 0 TD +0 Tw +(MAPFN)Tj +/TT8 1 Tf +3.0005 0 TD +0.2256 Tw +[( with three arguments: the process handle, its)]TJ +-18.3363 -1.2889 TD +0 Tw +(name, and its form.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FIND.PROCESS)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ERRORFLG)Tj +/TT10 1 Tf +4.8008 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 252.3123 517.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 517.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.941 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +[( is a process handle or the name of a process, returns the process handle for it, else)]TJ +/TT10 1 Tf +-3.3414 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1911 Tw +[(. If )]TJ +/TT14 1 Tf +2.2433 0 TD +0 Tw +(ERRORFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.1911 Tw +[( is )]TJ +/TT10 1 Tf +1.5971 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1911 Tw +(, generates an error if )Tj +/TT14 1 Tf +10.5918 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.1911 Tw +[( is not, and does not name, a live)]TJ +-24.0337 -1.2889 TD +0 Tw +(process.)Tj +/TT4 1 Tf +10 0 0 10 54 435.52 Tm +(Process Control Constructs)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 432.81 m +510.01 432.81 l +S +BT +/TT10 1 Tf +9 0 0 9 102 414.52 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(BLOCK)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MSECSWAIT)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMER)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 225.314 414.52 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 414.52 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0222 Tw +[(Yields control to the next waiting process, assuming any is ready to run. If )]TJ +/TT14 1 Tf +33.6102 0 TD +0 Tw +(MSECSWAIT)Tj +/TT8 1 Tf +5.4009 0 TD +0.0222 Tw +[( is)]TJ +-39.0111 -1.2889 TD +0.2033 Tw +(specified, it is a number of milliseconds to wait before returning, or )Tj +/TT10 1 Tf +32.4136 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2033 Tw +(, meaning wait)Tj +-33.0137 -1.2889 TD +0.03 Tw +[(forever \(until explicitly woken\). Alternatively, )]TJ +/TT14 1 Tf +21.074 0 TD +0 Tw +(TIMER)Tj +/TT8 1 Tf +3.0005 0 TD +0.03 Tw +[( can be given as a millisecond timer)]TJ +-24.0745 -1.2889 TD +0.11 Tw +(\(as returned by )Tj +/TT10 1 Tf +7.3163 0 TD +0 Tw +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +0.11 Tw +[(, Chapter 12\) of an absolute time at which to wake up. In)]TJ +-13.3173 -1.2889 TD +0.1 Tw +(any of those cases, the process enters the )Tj +/TT16 1 Tf +18.9665 0 TD +0 Tw +(waiting)Tj +/TT8 1 Tf +3.1108 0 TD +0.1 Tw +[( state until the time limit is up. )]TJ +/TT10 1 Tf +14.9156 0 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +-36.993 -1.2889 TD +0.0433 Tw +(with no arguments leaves the process in the )Tj +/TT16 1 Tf +19.9536 0 TD +0 Tw +(runnable)Tj +/TT8 1 Tf +3.6313 0 TD +0.0433 Tw +[( state, i.e., it returns as soon as every)]TJ +-23.5849 -1.2222 TD +0 Tw +(other runnable process of the same priority has had a chance.)Tj +/TT10 1 Tf +0 -2 TD +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.1078 Tw +[( can be aborted by interrupts such as Control-D, Control-E, or Control-B. )]TJ +/TT10 1 Tf +33.9983 0 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +-36.9988 -1.2889 TD +0.1356 Tw +(will return before its timeout is completed, if the process is woken by )Tj +/TT10 1 Tf +32.5493 0 TD +0 Tw +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.2012 0 TD +(,)Tj +/TT10 1 Tf +-39.7505 -1.2889 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +(, or )Tj +/TT10 1 Tf +1.6909 0 TD +(PROCESS.APPLY)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-19.36 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(DISMISS)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MSECSWAIT)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMER)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NOBLOCK)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 270.7693 264.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 264.78 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(DISMISS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1556 Tw +[( is used to dismiss the current process for a given period of time. Similar to)]TJ +/TT10 1 Tf +-4.2007 -1.2889 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +(, except that:)Tj +0.9995 -2.0667 TD +()Tj +/TT10 1 Tf +1.3333 0 TD +(DISMISS)Tj +/TT8 1 Tf +4.2007 0 TD +0.3522 Tw +[( is guaranteed not to return until the specified time has)]TJ +-4.2007 -1.2889 TD +0 Tw +(elapsed )Tj +-1.3333 -2 TD +()Tj +/TT14 1 Tf +1.3333 0 TD +(MSECSWAIT)Tj +/TT8 1 Tf +5.4009 0 TD +( cannot be )Tj +/TT10 1 Tf +4.7622 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( to wait forever)Tj +-12.0965 -2.0667 TD +[()-727.4(If )]TJ +/TT14 1 Tf +2.2577 0 TD +(NOBLOCK)Tj +/TT8 1 Tf +4.2007 0 TD +0.0011 Tc +0.0033 Tw +( is )Tj +/TT10 1 Tf +1.2237 0 TD +0 Tc +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5044 0 TD +(DISMISS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0001 Tc +0.0043 Tw +( will not allow other processes to run, but will)Tj +-11.654 -1.2889 TD +0 Tc +0 Tw +(busy-wait until the amount of time given has elapsed.)Tj +/TT10 1 Tf +-8 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(STATUS)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 236.1096 135.84 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 135.84 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.17 Tw +(Explicitly wakes process )Tj +/TT14 1 Tf +11.5837 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.17 Tw +(, i.e., makes it )Tj +/TT16 1 Tf +6.909 0 TD +0 Tw +(runnable)Tj +/TT8 1 Tf +3.6313 0 TD +0.17 Tw +(, and causes its call to )Tj +/TT10 1 Tf +10.7754 0 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.17 Tw +[( \(or)]TJ +-38.3003 -1.2889 TD +0.0911 Tw +(other waiting function\) to return )Tj +/TT14 1 Tf +15.1064 0 TD +0 Tw +(STATUS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0911 Tw +[(. This is one simple way to notify a process of)]TJ +-18.707 -1.2889 TD +0.0544 Tw +(some happening; however, note that if )Tj +/TT10 1 Tf +17.604 0 TD +0 Tw +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.2012 0 TD +0.0544 Tw +[( is applied to a process more than)]TJ +-24.8052 -1.2889 TD +0 Tw +(once before the process actually gets its turn to run, it sees only the latest )Tj +/TT14 1 Tf +32.3628 0 TD +(STATUS)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +28 0 obj +<< +/Length 5861 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SUSPEND.PROCESS)Tj +/TT8 1 Tf +8.9999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 265.6544 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.4189 Tw +(Blocks process )Tj +/TT14 1 Tf +7.5219 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.4189 Tw +[( indefinitely, i.e., )]TJ +/TT14 1 Tf +8.889 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.4189 Tw +[( will not run until it is woken by a)]TJ +/TT10 1 Tf +-21.2116 -1.2889 TD +0 Tw +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-12.5345 -2.9556 TD +0.0478 Tw +[(The following three functions allow access to the stack context of some other process. They require a)]TJ +0 -1.2222 TD +0.1367 Tw +(little bit of care, and are computationally non-trivial, but they do provide a more powerful way of)Tj +T* +0 Tw +(manipulating another process than )Tj +/TT10 1 Tf +15.7192 0 TD +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.2012 0 TD +( allows.)Tj +/TT10 1 Tf +-20.2537 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.EVALV)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VAR)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 278.7079 468.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 468.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Performs )Tj +/TT10 1 Tf +4.3086 0 TD +(\(EVALV)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VAR)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( in the stack context of )Tj +/TT14 1 Tf +10.1084 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-25.735 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WAITFORRESULT)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 345.7693 428.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 428.92 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Evaluates )Tj +/TT14 1 Tf +4.5999 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( in the stack context of )]TJ +/TT14 1 Tf +10.4151 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[(. If )]TJ +/TT14 1 Tf +1.8233 0 TD +0 Tw +(WAITFORRESULT)Tj +/TT8 1 Tf +7.8013 0 TD +0.0511 Tw +[( is true, blocks until the)]TJ +-29.4403 -1.2889 TD +0.1978 Tw +(evaluation returns a result, else allows the current process to run in parallel with the)Tj +0 -1.2222 TD +0.2433 Tw +[(evaluation. Any errors that occur will be in the context of )]TJ +/TT14 1 Tf +28.6666 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.2433 Tw +[(, so be careful. In)]TJ +-31.067 -1.2889 TD +0 Tw +(particular, note that)Tj +/TT10 1 Tf +8 -1.9333 TD +(\(PROCESS.EVAL )Tj +/TT14 1 Tf +8.4014 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +( \(NLSETQ \(FOO\)\)\))Tj +/TT8 1 Tf +-18.8018 -2.7333 TD +(and)Tj +/TT10 1 Tf +8 -1.9333 TD +(\(NLSETQ \(PROCESS.EVAL )Tj +/TT14 1 Tf +13.2021 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +( \(FOO\)\)\))Tj +/TT8 1 Tf +-23.6025 -2.0667 TD +0.0078 Tw +(behave quite differently if )Tj +/TT10 1 Tf +11.7489 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0078 Tw +[( causes an error. And it is quite permissible to intentionally)]TJ +-13.5492 -1.2889 TD +0 Tw +(cause an error in proc by performing)Tj +/TT10 1 Tf +8 -2 TD +(\(PROCESS.EVAL )Tj +/TT14 1 Tf +8.4014 0 TD +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(ERROR!\)\))Tj +/TT8 1 Tf +-19.0518 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.0255 0 TD +(WAITFORRESULT)Tj +/TT8 1 Tf +7.8013 0 TD +0.1056 Tw +[( is true and the computation in the other process aborts or the other)]TJ +-8.8267 -1.2889 TD +0 Tw +(process is killed )Tj +/TT10 1 Tf +7.2964 0 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(:ABORTED)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +-23.0024 -2.0667 TD +(After )Tj +/TT14 1 Tf +2.6688 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( is evaluated in )]TJ +/TT14 1 Tf +7.373 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +(, the process )Tj +/TT14 1 Tf +6.023 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.1078 Tw +[( is woken up, even if it was running)]TJ +/TT10 1 Tf +-23.266 -1.2889 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.2933 Tw +[( or )]TJ +/TT10 1 Tf +2.0276 0 TD +0 Tw +(AWAIT.EVENT)Tj +/TT8 1 Tf +6.6011 0 TD +0.2933 Tw +[(. This is necessary because an event of interest may have)]TJ +-11.6291 -1.2889 TD +0 Tw +(occurred while the process was evaluating )Tj +/TT14 1 Tf +19.0444 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-24.1115 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.APPLY)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FN)Tj +/TT16 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ARGS)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WAITFORRESULT)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 364.2211 175.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 175.58 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Performs )Tj +/TT10 1 Tf +4.4541 0 TD +(\(APPLY)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.3956 0 TD +(FN)Tj +/TT18 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.3956 0 TD +(ARGS)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1456 Tw +[( in the stack context of )]TJ +/TT14 1 Tf +10.9817 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.1456 Tw +[(. Note the same warnings as)]TJ +-26.4287 -1.2889 TD +0 Tw +(with )Tj +/TT10 1 Tf +2.2832 0 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 104.44 Tm +(Events)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 101.73 m +558.01 101.73 l +S +BT +/TT8 1 Tf +9 0 0 9 126 79.78 Tm +0.0444 Tw +(An "event" is a synchronizing primitive used to coordinate related processes, typically producers and)Tj +0 -1.2222 TD +0 Tw +(consumers. Consumer processes can "wait" on events, and producers "notify" events.)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +31 0 obj +<< +/Length 5706 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT10 1 Tf +9 0 0 9 102 569.54 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(CREATE.EVENT)Tj +/TT10 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT8 1 Tf +27.2695 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0367 Tw +(Returns an instance of the )Tj +/TT10 1 Tf +11.8865 0 TD +0 Tw +(EVENT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0367 Tw +[( datatype, to be used as the event argument to functions)]TJ +-14.8869 -1.2889 TD +0 Tw +(listed below. )Tj +/TT14 1 Tf +6.125 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( is arbitrary, and is used for debugging or status information.)Tj +/TT10 1 Tf +-11.1921 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(AWAIT.EVENT)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(EVENT)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMEOUT)Tj +/TT16 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMERP)Tj +/TT10 1 Tf +3.6006 0 TD +(\) )Tj +/TT8 1 Tf +18.9681 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.2889 Tw +(Suspends the current process until )Tj +/TT14 1 Tf +16.9601 0 TD +0 Tw +(EVENT)Tj +/TT8 1 Tf +3.0005 0 TD +0.2889 Tw +[( is notified, or until a timeout occurs. If)]TJ +/TT14 1 Tf +-19.9606 -1.2889 TD +0 Tw +(TIMEOUT)Tj +/TT8 1 Tf +4.2007 0 TD +0.3778 Tw +[( is )]TJ +/TT10 1 Tf +1.9704 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3778 Tw +[(, there is no timeout. Otherwise, timeout is either a number of)]TJ +-7.9714 -1.2889 TD +0.1256 Tw +(milliseconds to wait, or, if )Tj +/TT14 1 Tf +12.3221 0 TD +0 Tw +(TIMERP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +[( is )]TJ +/TT10 1 Tf +1.466 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1256 Tw +(, a millisecond timer set to expire at the desired)Tj +-17.9888 -1.2889 TD +0 Tw +(time using )Tj +/TT10 1 Tf +4.9351 0 TD +(SETUPTIMER)Tj +/TT8 1 Tf +6.001 0 TD +( \(see Chapter 12\).)Tj +/TT10 1 Tf +-13.6027 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(NOTIFY.EVENT)Tj +/TT10 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(EVENT)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ONCEONLY)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 255.4632 445.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 445.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0911 Tw +(If there are processes waiting for )Tj +/TT14 1 Tf +15.2215 0 TD +0 Tw +(EVENT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0911 Tw +[( to occur, causes those processes to be placed in)]TJ +-18.222 -1.2889 TD +0.0267 Tw +(the running state, with )Tj +/TT14 1 Tf +10.4236 0 TD +0 Tw +(EVENT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0267 Tw +[( returned as the value from )]TJ +/TT10 1 Tf +12.4359 0 TD +0 Tw +(AWAIT.EVENT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0267 Tw +[(. If )]TJ +/TT14 1 Tf +1.7499 0 TD +0 Tw +(ONCEONLY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0267 Tw +[( is)]TJ +-39.0117 -1.2889 TD +0.1733 Tw +(true, only runs the first process waiting for the event \(this should only be done if the)Tj +0 -1.2222 TD +0.0333 Tw +(programmer knows that there can only be one process capable of responding to the event)Tj +T* +0 Tw +(at once\).)Tj +-5.3333 -2.8889 TD +0.0233 Tw +[(The meaning of an event is up to the programmer. In general, however, the notification of an event is)]TJ +0 -1.2222 TD +0.0533 Tw +(merely a hint that something of interest to the waiting process has happened; the process should still)Tj +T* +0.0111 Tw +[(verify that the conceptual event actually occurred. That is, )]TJ +/TT16 1 Tf +26.2625 0 TD +(the process should be written so that it operates)Tj +-26.2625 -1.2222 TD +0.1811 Tw +(correctly even if woken up before the timeout and in the absence of the notified event.)Tj +/TT8 1 Tf +36.7006 0 TD +[( In particular, the)]TJ +-36.7006 -1.2222 TD +0.1278 Tw +(completion of )Tj +/TT10 1 Tf +6.6232 0 TD +0 Tw +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +0.1278 Tw +[( and related operations in effect wakes up the process in which they)]TJ +-13.8244 -1.2889 TD +0.0144 Tw +(were performed, since there is no secure way of knowing whether the event of interest occurred while)Tj +0 -1.2222 TD +0 Tw +(the process was busy performing the )Tj +/TT10 1 Tf +16.542 0 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-23.7432 -2.9556 TD +0.04 Tw +[(There is currently one class of system-defined events, used with the network code. Each Pup and NS)]TJ +0 -1.2222 TD +0.0911 Tw +(socket has associated with it an event that is notified when a packet arrives on the socket; the event)Tj +T* +0 Tw +(can be obtained by calling )Tj +/TT10 1 Tf +11.7607 0 TD +(PUPSOCKETEVENT)Tj +/TT8 1 Tf +8.4014 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NSOCKETEVENT)Tj +/TT8 1 Tf +7.2012 0 TD +(, respectively \(see Chapter 30\).)Tj +/TT4 1 Tf +10 0 0 10 54 199.46 Tm +(Monitors)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 196.75 m +510.01 196.75 l +S +BT +/TT8 1 Tf +9 0 0 9 78 174.8 Tm +0.1856 Tw +(It is often the case that cooperating processes perform operations on shared structures, and some)Tj +0 -1.2222 TD +0.0689 Tw +(mechanism is needed to prevent more than one process from altering the structure at the same time.)Tj +T* +0.1611 Tw +(Some languages have a construct called a monitor, a collection of functions that access a common)Tj +T* +0.0578 Tw +(structure with mutual exclusion provided and enforced by the compiler via the use of monitor locks.)Tj +T* +0.1056 Tw +(Medley has taken this implementation notion as the basis for a mutual exclusion capability suitable)Tj +T* +0 Tw +(for a dynamically-scoped environment.)Tj +0 -2.8889 TD +0.0644 Tw +(A monitorlock is an object created by you and associated with \(e.g., stored in\) some shared structure)Tj +0 -1.2222 TD +0.0244 Tw +[(that is to be protected from simultaneous access. To access the structure, a program waits for the lock)]TJ +T* +0.2389 Tw +[(to be free, then takes ownership of the lock, accesses the structure, then releases the lock. The)]TJ +T* +0 Tw +(functions and macros below are used:)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +34 0 obj +<< +/Length 8065 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(CREATE.MONITORLOCK)Tj +/TT8 1 Tf +10.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 287.2552 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1378 Tw +(Returns an instance of the )Tj +/TT10 1 Tf +12.392 0 TD +0 Tw +(MONITORLOCK)Tj +/TT8 1 Tf +6.6011 0 TD +0.1378 Tw +[( datatype, to be used as the lock argument to)]TJ +-18.9931 -1.2889 TD +0 Tw +(functions listed below. )Tj +/TT14 1 Tf +10.5059 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( is arbitrary, and is used for debugging or status information.)Tj +/TT10 1 Tf +-15.5729 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(WITH.MONITOR)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(LOCK)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +2.3996 -0.3333 TD +(1)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT8 1 Tf +20.1689 0 TD +([Macro])Tj +-36.5022 -2.1778 TD +(Evaluates )Tj +/TT14 1 Tf +4.6288 0 TD +(FORM)Tj +2.4001 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.33 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.33 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.08 Tw +[( while owning )]TJ +/TT14 1 Tf +6.8582 0 TD +0 Tw +(LOCK)Tj +/TT8 1 Tf +2.4004 0 TD +0.08 Tw +(, and returns the value of )Tj +/TT14 1 Tf +11.8311 0 TD +0 Tw +(FORM)Tj +2.4015 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.08 Tw +[(. This)]TJ +-37.18 -1.6222 TD +0.1078 Tw +(construct is implemented so that the lock is released even if the form is exited via error)Tj +0 -1.2222 TD +0 Tw +(\(currently implemented with )Tj +/TT10 1 Tf +13.0923 0 TD +(RESETLST)Tj +/TT8 1 Tf +4.8008 0 TD +(\).)Tj +-17.8931 -2.0667 TD +0.0889 Tw +(Ownership of a lock is dynamically scoped: if the current process already owns the lock)Tj +0 -1.2222 TD +0.1044 Tw +(\(e.g., if the caller was itself inside a )Tj +/TT10 1 Tf +16.4444 0 TD +0 Tw +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.1044 Tw +[( for this lock\), )]TJ +/TT10 1 Tf +6.7347 0 TD +0 Tw +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.1044 Tw +[( does)]TJ +-37.5815 -1.2889 TD +0 Tw +(not wait for the lock to be free before evaluating )Tj +/TT14 1 Tf +21.4722 0 TD +(FORM)Tj +2.3978 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(. )Tj +/TT10 1 Tf +-32.4367 -2.8822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(WITH.FAST.MONITOR)Tj +/TT8 1 Tf +10.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(LOCK)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +2.3996 -0.3333 TD +(1)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 358.8017 406.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 502.52 406.06 Tm +([Macro])Tj +-36.5022 -2.1778 TD +(Like )Tj +/TT10 1 Tf +2.4037 0 TD +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.2167 Tw +(, but implemented without the )Tj +/TT10 1 Tf +14.8661 0 TD +0 Tw +(RESETLST)Tj +/TT8 1 Tf +4.8008 0 TD +0.2167 Tw +[(. User interrupts \(e.g.,)]TJ +-29.2717 -1.2889 TD +0 Tw +(Control-E\) are inhibited during the evaluation of )Tj +/TT14 1 Tf +21.7896 0 TD +(FORM)Tj +2.4004 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(. )Tj +-30.09 -2.4 TD +0.1544 Tw +(Programming restriction: the evaluation of )Tj +/TT14 1 Tf +19.9114 0 TD +0 Tw +(FORM)Tj +2.4008 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.4044 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.4044 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1544 Tw +[( must not error \(the lock)]TJ +-28.5211 -1.6222 TD +0.0578 Tw +[(would not be released\). This construct is mainly useful when the forms perform a small,)]TJ +0 -1.2222 TD +0 Tw +(safe computation that never errors and need never be interrupted.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(MONITOR.AWAIT.EVENT)Tj +/TT8 1 Tf +11.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(RELEASELOCK)Tj +/TT16 1 Tf +6.6011 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(EVENT)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMEOUT)Tj +/TT16 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TIMERP)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 429.0263 305.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 305.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.3722 Tw +[(For use in blocking inside a monitor. Performs )]TJ +/TT10 1 Tf +24.3505 0 TD +0 Tw +(\(AWAIT.EVENT)Tj +/TT18 1 Tf +7.2012 0 TD +( )Tj +/TT14 1 Tf +0.6222 0 TD +(EVENT)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.6222 0 TD +(TIMEOUT)Tj +-35.7966 -1.2889 TD +(TIMERP)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1233 Tw +(, but releases )Tj +/TT14 1 Tf +6.3231 0 TD +0 Tw +(RELEASELOCK)Tj +/TT8 1 Tf +6.6011 0 TD +0.1233 Tw +[( first, and reobtains the lock \(possibly waiting\) on)]TJ +-17.1249 -1.2889 TD +0 Tw +(wakeup.)Tj +0 -2 TD +0.1156 Tw +(Typical use for )Tj +/TT10 1 Tf +7.1723 0 TD +0 Tw +(MONITOR.AWAIT.EVENT)Tj +/TT8 1 Tf +11.4019 0 TD +0.1156 Tw +[(: A function wants to perform some operation)]TJ +-18.5742 -1.2889 TD +0 Tw +(on )Tj +/TT14 1 Tf +1.3935 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0156 Tw +[(, but only if it is in a certain state. It has to obtain the lock on the structure to make)]TJ +-3.1938 -1.2889 TD +0.0544 Tw +(sure that the state of the structure does not change between the time it tests the state and)Tj +0 -1.2222 TD +0.1856 Tw +[(performs the operation. If the state turns out to be bad, it then waits for some other)]TJ +T* +0.02 Tw +(process to make the state good, meanwhile releasing the lock so that the other process can)Tj +T* +0 Tw +(alter the structure.)Tj +/TT10 1 Tf +8.6667 -1.7778 TD +(\(WITH.MONITOR)Tj +/TT18 1 Tf +7.8013 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FOO-LOCK)Tj +/TT18 1 Tf +-8.0513 -1.0667 TD +( )Tj +/TT10 1 Tf +0.75 0 TD +(\(until)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(CONDITION-OF-FOO)Tj +/TT18 1 Tf +-4.6006 -1.0667 TD +( )Tj +/TT10 1 Tf +1 0 TD +(do \(MONITOR.AWAIT.EVENT)Tj +/TT18 1 Tf +13.8022 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FOO-LOCK)Tj +/TT18 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(EVENT-FOO-)Tj +-20.103 -1 TD +(CHANGED)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(TIMEOUT)Tj +/TT10 1 Tf +4.2007 0 TD +(\)\))Tj +/TT18 1 Tf +-9.0015 -1.0667 TD +( )Tj +/TT14 1 Tf +1.75 0 TD +(OPERATE-ON-FOO)Tj +/TT10 1 Tf +8.4014 0 TD +(\))Tj +/TT8 1 Tf +-18.818 -1.8444 TD +0.0578 Tw +(It is sometimes convenient for a process to have )Tj +/TT10 1 Tf +21.8428 0 TD +0 Tw +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.0578 Tw +[( at its top level and then)]TJ +-29.0439 -1.2889 TD +0.2689 Tw +(do all its interesting waiting using )Tj +/TT10 1 Tf +16.961 0 TD +0 Tw +(MONITOR.AWAIT.EVENT)Tj +/TT8 1 Tf +11.4019 0 TD +0.2689 Tw +[(. Not only is this often)]TJ +-28.3628 -1.2889 TD +0.0556 Tw +(cleaner, but in the present implementation in cases where the lock is frequently accessed,)Tj +0 -1.2222 TD +0 Tw +(it saves the )Tj +/TT10 1 Tf +5.146 0 TD +(RESETLST)Tj +/TT8 1 Tf +4.8008 0 TD +( overhead of )Tj +/TT10 1 Tf +5.7856 0 TD +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +-22.9336 -2.0667 TD +0.3489 Tw +[(Programming restriction: There must not be an )]TJ +/TT10 1 Tf +24.0831 0 TD +0 Tw +(ERRORSET)Tj +/TT8 1 Tf +4.8008 0 TD +0.3489 Tw +[( between the enclosing)]TJ +/TT10 1 Tf +-28.8839 -1.2889 TD +0 Tw +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.0567 Tw +[( and the call to )]TJ +/TT10 1 Tf +7.0114 0 TD +0 Tw +(MONITOR.AWAIT.EVENT)Tj +/TT8 1 Tf +11.4019 0 TD +0.0567 Tw +[( such that the )]TJ +/TT10 1 Tf +6.401 0 TD +0 Tw +(ERRORSET)Tj +/TT8 1 Tf +4.8008 0 TD +0.0567 Tw +[( would)]TJ +-36.8162 -1.2889 TD +0.2167 Tw +(catch an )Tj +/TT10 1 Tf +4.3113 0 TD +0 Tw +(ERROR!)Tj +/TT8 1 Tf +3.6006 0 TD +0.2167 Tw +[( and continue inside the monitor, for the lock would not have been)]TJ +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +37 0 obj +<< +/Length 5703 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2067 Tw +[(reobtained. \(The reason for this restriction is that, although )]TJ +/TT10 1 Tf +28.593 0 TD +0 Tw +(MONITOR.AWAIT.EVENT)Tj +/TT8 1 Tf +-28.593 -1.2889 TD +0.0456 Tw +(wont itself error, you could have caused an error with an interrupt, or a )Tj +/TT10 1 Tf +32.7906 0 TD +0 Tw +(PROCESS.EVAL)Tj +/TT8 1 Tf +-32.7906 -1.2889 TD +(in the context of the waiting process that produced an error.\))Tj +-5.3333 -2.8889 TD +0.03 Tw +[(On rare occasions it may be useful to manipulate monitor locks directly. The following two functions)]TJ +0 -1.2222 TD +0 Tw +(are used in the implementation of )Tj +/TT10 1 Tf +15.1899 0 TD +(WITH.MONITOR)Tj +/TT8 1 Tf +7.2012 0 TD +(:)Tj +/TT10 1 Tf +-19.7245 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(OBTAIN.MONITORLOCK)Tj +/TT8 1 Tf +10.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(LOCK)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DONTWAIT)Tj +/TT16 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(UNWINDSAVE)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 335.5702 486.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 486.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0344 Tw +(Takes possession of )Tj +/TT14 1 Tf +9.0443 0 TD +0 Tw +(LOCK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +(, waiting if necessary until it is free, unless )Tj +/TT14 1 Tf +19.2612 0 TD +0 Tw +(DONTWAIT)Tj +/TT8 1 Tf +4.8008 0 TD +0.0344 Tw +[( is true, in)]TJ +-35.5066 -1.2889 TD +0.0133 Tw +(which case it returns )Tj +/TT10 1 Tf +9.4542 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0133 Tw +[( immediately. If )]TJ +/TT14 1 Tf +7.5631 0 TD +0 Tw +(UNWINDSAVE)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +[( is true, performs a )]TJ +/TT10 1 Tf +8.6404 0 TD +0 Tw +(RESETSAVE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0133 Tw +[( to)]TJ +-38.8599 -1.2889 TD +0.0178 Tw +(be unwound when the enclosing )Tj +/TT10 1 Tf +14.791 0 TD +0 Tw +(RESETLST)Tj +/TT8 1 Tf +4.8008 0 TD +0.0178 Tw +[( exits. Returns )]TJ +/TT14 1 Tf +6.8343 0 TD +0 Tw +(LOCK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( if )]TJ +/TT14 1 Tf +1.1596 0 TD +0 Tw +(LOCK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( was successfully)]TJ +-32.3865 -1.2889 TD +0 Tw +(obtained, )Tj +/TT10 1 Tf +4.3882 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( if the current process already owned )Tj +/TT14 1 Tf +16.6816 0 TD +(LOCK)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-26.737 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(RELEASE.MONITORLOCK)Tj +/TT8 1 Tf +11.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(LOCK)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(EVENIFNOTMINE)Tj +/TT10 1 Tf +7.8013 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 317.1167 412.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 412.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Releases )Tj +/TT14 1 Tf +4.0081 0 TD +(LOCK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0144 Tw +[( if it is owned by the current process, and wakes up the next process, if any,)]TJ +-6.4085 -1.2889 TD +0 Tw +(waiting to obtain the lock.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9721 0 TD +(EVENIFNOTMINE)Tj +/TT8 1 Tf +7.8013 0 TD +0.0522 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3623 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0522 Tw +(, the lock is released even if it is not owned by the current)Tj +-13.936 -1.2889 TD +0 Tw +(process.)Tj +-5.3333 -2.8889 TD +(When a process is deleted, any locks it owns are released.)Tj +/TT4 1 Tf +10 0 0 10 54 285.92 Tm +(Global Resources)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 283.21 m +510.01 283.21 l +S +BT +/TT8 1 Tf +9 0 0 9 78 261.26 Tm +0.0367 Tw +(The biggest source of problems in the multi-processing environment is the matter of global resources.)Tj +0 -1.2222 TD +0.02 Tw +(Two processes cannot both use the same global resource if there can be a process switch in the middle)Tj +T* +0.0878 Tw +(of their use \(currently this means calls to )Tj +/TT10 1 Tf +18.877 0 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0878 Tw +(, but ultimately with a preemptive scheduler means)Tj +-21.8775 -1.2889 TD +0.0189 Tw +[(anytime\). Thus, user code should be wary of its own use of global variables, if it ever makes sense for)]TJ +0 -1.2222 TD +0.0967 Tw +[(the code to be run in more than one process at a time. "State" variables private to a process should)]TJ +T* +0.1589 Tw +(generally be bound in that process; structures that are shared among processes \(or resources used)Tj +T* +0.1689 Tw +(privately but expensive to duplicate per process\) should be protected with monitor locks or some)Tj +T* +0 Tw +(other form of synchronization.)Tj +0 -2.8889 TD +0.0633 Tw +(Aside from user code, however, there are many )Tj +/TT16 1 Tf +21.7625 0 TD +0 Tw +(system)Tj +/TT8 1 Tf +2.7783 0 TD +0.0633 Tw +[( global variables and resources. Most of these)]TJ +-24.5408 -1.2222 TD +0.0611 Tw +(arise historically from the single-process Interlisp-10 environment, and will eventually be changed in)Tj +T* +0.3389 Tw +[(Medley to behave appropriately in a multi-processing environment. Some have already been)]TJ +T* +0.0078 Tw +[(changed, and are described below. Two other resources not generally thought of as global variables)]TJ +T* +0 Tw +(the keyboard and the mouseare particularly idosyncratic, and are discussed in the next section.)Tj +ET +78 94.1 405.99 -6.44 re +f +BT +9 0 0 9 78 76.66 Tm +0.0944 Tw +[( are allocated per process in Medley: primary input and output \(the streams affected by )]TJ +/TT10 1 Tf +40.2887 0 TD +0 Tw +(INPUT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0944 Tw +[( and)]TJ +/TT10 1 Tf +-43.2892 -1.2889 TD +0 Tw +(OUTPUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +(\), terminal input and output \(the streams designated by the name )Tj +/TT10 1 Tf +30.0607 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0844 Tw +(\), the primary read table)Tj +-34.2614 -1.2889 TD +0.0244 Tw +[(and primary terminal table, and dribble files. Thus, each process can print to its own primary output,)]TJ +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +40 0 obj +<< +/Length 5874 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2778 Tw +(print to the terminal, read from a different primary input, all without interfering with another)Tj +0 -1.2222 TD +0 Tw +(processs reading and printing.)Tj +0 -2.8889 TD +0.0578 Tw +(Each process begins life with its primary and terminal input/output streams set to a dummy stream.)Tj +0 -1.2222 TD +0.0167 Tw +(If the process attempts input or output using any of those dummy streams, e.g., by calling )Tj +/TT10 1 Tf +40.2471 0 TD +0.0389 Tw +(\(READ T\))Tj +/TT8 1 Tf +4.8397 0 TD +0 Tw +(,)Tj +-45.0868 -1.2889 TD +(or )Tj +/TT10 1 Tf +1.2687 0 TD +0.1878 Tw +(\(PRINT & T\))Tj +/TT8 1 Tf +6.9766 0 TD +0.0778 Tw +(, a tty window is automatically created for the process, and that window becomes)Tj +-8.2453 -1.2889 TD +0.1922 Tw +[(the primary input/output and terminal input/output for the process. The default tty window is)]TJ +0 -1.2222 TD +0 Tw +(created at or near the region specified in the variable )Tj +/TT10 1 Tf +23.4805 0 TD +(DEFAULTTTYREGION)Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +-33.082 -2.9556 TD +0.1278 Tw +(A process can, of course, call )Tj +/TT10 1 Tf +13.6783 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.1278 Tw +[( explicitly to give itself a tty window of its own)]TJ +-23.2799 -1.2889 TD +0.7789 Tw +[(choosing, in which case the automatic mechanism never comes into play. Calling)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.0678 Tw +[( when a process has no tty window not only sets the terminal streams, but also)]TJ +-9.6016 -1.2889 TD +0.1644 Tw +(sets the primary input and output streams to be that window, assuming they were still set to the)Tj +0 -1.2222 TD +0 Tw +(dummy streams.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(HASTTYWINDOWP)Tj +/TT16 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROCESS)Tj +/TT10 1 Tf +4.2007 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 276.4579 393.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 393.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.7459 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0189 Tw +[( if the process )]TJ +/TT14 1 Tf +6.3993 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0189 Tw +[( has a tty window; )]TJ +/TT10 1 Tf +8.5066 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +[( otherwise. If )]TJ +/TT14 1 Tf +6.3514 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0189 Tw +[( is )]TJ +/TT10 1 Tf +1.2526 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +(, it)Tj +-38.8579 -1.2889 TD +0 Tw +(defaults to the current process.)Tj +-5.3333 -2.8889 TD +0.07 Tw +(Other system resources that are typically changed by )Tj +/TT10 1 Tf +24.2368 0 TD +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.57 0 TD +(RESETLST)Tj +/TT8 1 Tf +4.8008 0 TD +0.07 Tw +(, or )Tj +/TT10 1 Tf +1.8309 0 TD +0 Tw +(RESETVARS)Tj +/TT8 1 Tf +5.4009 0 TD +0.07 Tw +[( are all)]TJ +-42.2402 -1.2889 TD +0.2489 Tw +[(global entities. In the multiprocessing environment, these constructs are suspect, as there is no)]TJ +0 -1.2222 TD +0.1144 Tw +[(provision for "undoing" them when a process switch occurs. For example, in the current release of)]TJ +T* +0.1356 Tw +(Medley, it is not possible to set the print radix to 8 inside only one process, as the print radix is a)Tj +T* +0 Tw +(global entity. )Tj +0 -2.8889 TD +0.0156 Tw +(Note that )Tj +/TT10 1 Tf +4.4476 0 TD +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +0.0156 Tw +[( and similar expressions are perfectly valid in the process world, and even quite)]TJ +-9.8485 -1.2889 TD +0.1244 Tw +[(useful, when they manipulate things strictly within one process. The process world is arranged so)]TJ +0 -1.2222 TD +0.0833 Tw +(that deleting a process also unwinds any )Tj +/TT10 1 Tf +18.8211 0 TD +0 Tw +(RESETxxx)Tj +/TT8 1 Tf +4.8008 0 TD +0.0833 Tw +[( expressions that were performed in the process)]TJ +-23.6219 -1.2889 TD +0.2278 Tw +(and are still waiting to be unwound, exactly as if a Control-D had reset the process to the top.)Tj +0 -1.2222 TD +0.1456 Tw +(Additionally, there is an implicit )Tj +/TT10 1 Tf +15.3777 0 TD +0 Tw +(RESETLST)Tj +/TT8 1 Tf +4.8008 0 TD +0.1456 Tw +[( at the top of each process, so that )]TJ +/TT10 1 Tf +16.3969 0 TD +0 Tw +(RESETSAVE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1456 Tw +[( can be)]TJ +-41.9763 -1.2889 TD +0.0478 Tw +[(used as a way of providing "cleanup" functions for when a process is deleted. For these, the value of)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RESETSTATE)Tj +/TT8 1 Tf +6.001 0 TD +0.0656 Tw +[( \(see Chapter 14\) is )]TJ +/TT10 1 Tf +8.9328 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +[( if the process finished normally, )]TJ +/TT10 1 Tf +15.1038 0 TD +0 Tw +(ERROR)Tj +/TT8 1 Tf +3.0005 0 TD +0.0656 Tw +[( if it was aborted by an)]TJ +-34.8383 -1.2889 TD +0 Tw +(error, )Tj +/TT10 1 Tf +2.8366 0 TD +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +0.1267 Tw +[( if the process was explicitly deleted, and )]TJ +/TT10 1 Tf +19.4001 0 TD +0 Tw +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +0.1267 Tw +[( if the process is being restarted)]TJ +-30.638 -1.2889 TD +0 Tw +(after a )Tj +/TT10 1 Tf +3.0332 0 TD +(HARDRESET)Tj +/TT8 1 Tf +5.4009 0 TD +( or a )Tj +/TT10 1 Tf +2.1909 0 TD +(RESTART.PROCESS)Tj +/TT8 1 Tf +9.0015 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 134.46 Tm +(Typein and the TTY Process)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 131.75 m +558.01 131.75 l +S +BT +/TT8 1 Tf +9 0 0 9 126 109.8 Tm +0.0456 Tw +(There is one global resource, the keyboard, that is particularly problematic to share among processes.)Tj +0 -1.2222 TD +0.0711 Tw +(Consider, for example, having two processes both performing )Tj +/TT10 1 Tf +28.1944 0 TD +0.1711 Tw +(\(READ T\))Tj +/TT8 1 Tf +4.9719 0 TD +0.0711 Tw +[(. Since the keyboard input)]TJ +-33.1663 -1.2889 TD +0.03 Tw +(routines block while there is no input, both processes would spend most of their time blocking, and it)Tj +0 -1.2222 TD +0 Tw +(would simply be a matter of chance which process received each character of type-in.)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +43 0 obj +<< +/Length 4586 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0656 Tw +(To resolve such dilemmas, the system designates a distinguished process, termed the )Tj +/TT16 1 Tf +38.6324 0 TD +(tty process)Tj +/TT8 1 Tf +4.3893 0 TD +(, that)Tj +-43.0217 -1.2222 TD +0.0589 Tw +[(is assumed to be the process that is involved in terminal interaction. Any type-in from the keyboard)]TJ +T* +0.0533 Tw +[(goes to that process. If a process other than the tty process requests keyboard input, it blocks until it)]TJ +T* +0.1778 Tw +[(becomes the tty process. When the tty process is switched \(in any of the ways described further)]TJ +T* +0.1278 Tw +(below\), any typeahead that occurred before the switch is saved and associated with the current tty)Tj +T* +0.0278 Tw +[(process. Thus, it is always the case that keystrokes are sent to the process that is the tty process at the)]TJ +T* +0 Tw +(time of the keystrokes, regardless of when that process actually gets around to reading them.)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(BACKGROUNDFNS)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.2711 Tw +[(A list of functions to call "in the background". The system runs a process \(called)]TJ +0 -1.2222 TD +0.4978 Tw +("BACKGROUND"\) whose sole task is to call each of the functions on the list)Tj +T* +0.0122 Tw +[(BACKGROUNDFNS repeatedly. Each element is the name of a function of no arguments.)]TJ +T* +0.0022 Tw +(This is a good place to put cheap background tasks that only do something once in a while)Tj +T* +0.0222 Tw +[(and hence do not want to spend their own separate process on it. However, note that it is)]TJ +T* +0.1867 Tw +(considered good citizenship for a background function with a time-consuming task to)Tj +T* +0 Tw +(spawn a separate process to do it, so that the other background functions are not delayed.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(TTYBACKGROUNDFNS)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.8444 TD +0.0444 Tw +(This list is like BACKGROUNDFNS, but the functions are only called while in a tty input)Tj +0 -1.2222 TD +0.0889 Tw +[(wait. That is, they always run in the tty process, and only when the user is not actively)]TJ +T* +0.0644 Tw +[(typing. For example, the flashing caret is implemented by a function on this list. Again,)]TJ +T* +0.2044 Tw +(functions on this list should spend very little time \(much less than a second\), or else)Tj +T* +0 Tw +(spawn a separate process.)Tj +-5.3333 -2.8889 TD +0.3211 Tw +(It is less immediately obvious how to handle keyboard interrupt characters, as their action is)Tj +0 -1.2222 TD +0.1811 Tw +[(asynchronous and not always tied to type-in. Interrupt handling is described in the Handling of)]TJ +T* +0 Tw +(Interrupts section below.)Tj +/TT4 1 Tf +10 0 0 10 78 217 Tm +(Switching the TTY Process)Tj +/TT8 1 Tf +9 0 0 9 78 193.34 Tm +(Any process can make itself be the tty process by calling )Tj +/TT10 1 Tf +25.0713 0 TD +(TTY.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-29.0057 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TTY.PROCESS)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 196.0544 170.4 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 170.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0189 Tw +[(Returns the handle of the current tty process. In addition, if )]TJ +/TT14 1 Tf +26.9479 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( is non-)]TJ +/TT10 1 Tf +3.2956 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +(, makes it be)Tj +-34.4441 -1.2889 TD +0.0256 Tw +[(the tty process. The special case of )]TJ +/TT14 1 Tf +15.7919 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2756 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2756 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0256 Tw +[( is interpreted to mean the executive process;)]TJ +-19.9435 -1.2889 TD +0 Tw +(this is sometimes useful when a process wants to explicitly give up being the tty process.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TTY.PROCESSP)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROC)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 201.4544 108.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 108.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.4756 Tw +(True if )Tj +/TT14 1 Tf +4.165 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.4756 Tw +[( is the tty process; )]TJ +/TT14 1 Tf +10.5008 0 TD +0 Tw +(PROC)Tj +/TT8 1 Tf +2.4004 0 TD +0.4756 Tw +[( defaults to the running process. Thus,)]TJ +/TT10 1 Tf +-19.4666 -1.2889 TD +0 Tw +(\(TTY.PROCESSP\))Tj +/TT8 1 Tf +8.4014 0 TD +( is true if the caller is the tty process.)Tj +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +48 0 obj +<< +/Length 6899 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(WAIT.FOR.TTY)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MSECS)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NEEDWINDOW)Tj +/TT10 1 Tf +6.001 0 TD +(\) )Tj +/TT8 1 Tf +20.7685 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.1033 Tw +(Efficiently waits until )Tj +/TT10 1 Tf +10.0654 0 TD +0 Tw +(\(TTY.PROCESSP\))Tj +/TT8 1 Tf +8.4014 0 TD +0.1033 Tw +[( is true. )]TJ +/TT10 1 Tf +4.1814 0 TD +0 Tw +(WAIT.FOR.TTY)Tj +/TT8 1 Tf +7.2012 0 TD +0.1033 Tw +[( is called internally by)]TJ +-29.8493 -1.2889 TD +0.0022 Tw +(the system functions that read from the terminal; user code thus need only call it in special)Tj +0 -1.2222 TD +0 Tw +(cases.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.1655 0 TD +(MSECS)Tj +/TT8 1 Tf +3.0005 0 TD +0.2456 Tw +[( is non-)]TJ +/TT10 1 Tf +3.7489 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2456 Tw +[(, it is the number of milliseconds to wait before timing out. If)]TJ +/TT10 1 Tf +-9.7152 -1.2889 TD +0 Tw +(WAIT.FOR.TTY)Tj +/TT8 1 Tf +7.2012 0 TD +0.1244 Tw +[( times out before )]TJ +/TT10 1 Tf +8.1609 0 TD +0 Tw +(\(TTY.PROCESSP\))Tj +/TT8 1 Tf +8.4014 0 TD +0.1244 Tw +[( is true, it returns )]TJ +/TT10 1 Tf +8.4616 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1244 Tw +(, otherwise it)Tj +-34.0253 -1.2889 TD +0 Tw +(returns )Tj +/TT10 1 Tf +3.4541 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(. If )Tj +/TT14 1 Tf +1.6699 0 TD +(MSECS)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(WAIT.FOR.TTY)Tj +/TT8 1 Tf +7.2012 0 TD +( will not time out.)Tj +-19.4409 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.961 0 TD +(NEEDWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.0411 Tw +[( is non-)]TJ +/TT10 1 Tf +3.34 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5411 0 TD +(WAIT.FOR.TTY)Tj +/TT8 1 Tf +7.2012 0 TD +0.0411 Tw +[( opens a )]TJ +/TT10 1 Tf +4.0052 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[( window for the current process)]TJ +-25.6501 -1.2889 TD +0 Tw +(if one isnt already open.)Tj +/TT10 1 Tf +0 -2 TD +(WAIT.FOR.TTY)Tj +/TT8 1 Tf +7.2012 0 TD +0.21 Tw +[( spawns a new mouse process if called under the mouse process \(see)]TJ +/TT10 1 Tf +-7.2012 -1.2889 TD +0 Tw +(SPAWN.MOUSE)Tj +/TT8 1 Tf +6.6011 0 TD +(, in the Keeping the Mouse Alive section below\).)Tj +-11.9344 -2.9556 TD +0.0789 Tw +(In some cases, such as in functions invoked as a result of mouse action or a users typed-in call, it is)Tj +0 -1.2222 TD +0.0533 Tw +(reasonable for the function to invoke )Tj +/TT10 1 Tf +16.8283 0 TD +0 Tw +(TTY.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0533 Tw +[( itself so that it can take subsequent user type in.)]TJ +-23.4294 -1.2889 TD +0.1256 Tw +(In other cases, however, this is too undisciplined; it is desirable to let you designate which process)Tj +0 -1.2222 TD +0 Tw +(type-in should be directed to. This is most conveniently done by mouse action.)Tj +0 -2.8889 TD +0.0189 Tw +[(The system supports the model that "to type to a process, you click in its window." To cooperate with)]TJ +0 -1.2222 TD +0.2478 Tw +(this model, any process desiring keyboard input should put its process handle as the )Tj +/TT10 1 Tf +41.1271 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +-41.1271 -1.2889 TD +0.0511 Tw +[(property of its window\(s\). To handle the common case, the function )]TJ +/TT10 1 Tf +31.4364 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.0511 Tw +[( does this)]TJ +-41.038 -1.2889 TD +0.2022 Tw +[(automatically when the ttydisplaystream is switched to a new window. A process can own any)]TJ +0 -1.2222 TD +0 Tw +(number of windows; clicking in any of those windows gives the process the tty.)Tj +0 -2.8889 TD +0.21 Tw +[(This mechanism suffices for most casual process writers. For example, if a process wants all its)]TJ +0 -1.2222 TD +0.0678 Tw +(input/output interaction to occur in a particular window that it has created, it should just make that)Tj +T* +0.0022 Tw +(window be its tty window by calling )Tj +/TT10 1 Tf +16.5073 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.0001 Tc +0.0021 Tw +(. Thereafter, it can )Tj +/TT10 1 Tf +8.4852 0 TD +0 Tc +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0006 Tc +0.0016 Tw +( or )Tj +/TT10 1 Tf +1.4454 0 TD +0 Tc +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0003 Tc +0.0019 Tw +( to/from)Tj +-41.4403 -1.2889 TD +0 Tc +0 Tw +(the )Tj +/TT10 1 Tf +1.7217 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0844 Tw +[( stream; if the process is not the tty process at the time that it calls )]TJ +/TT10 1 Tf +30.5025 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0844 Tw +(, it will block until the)Tj +-35.2246 -1.2889 TD +0 Tw +(user clicks in the window.)Tj +0 -2.8889 TD +0.4711 Tw +(For those needing tighter control over the tty, the default behavior can be overridden or)Tj +0 -1.2222 TD +0 Tw +(supplemented. The remainder of this section describes the mechanisms involved.)Tj +0 -2.8889 TD +0.0578 Tw +(There is a window property )Tj +/TT10 1 Tf +12.8988 0 TD +0 Tw +(WINDOWENTRYFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.0578 Tw +[( that controls whether and how to switch the tty to the)]TJ +-20.7 -1.2889 TD +0.27 Tw +[(process owning a window. The mouse handler, before invoking any normal )]TJ +/TT10 1 Tf +37.2791 0 TD +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +(,)Tj +-45.0803 -1.2889 TD +0.0589 Tw +(specifically notices the case of a button going down in a window that belongs to a process \(i.e., has a)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.2911 Tw +[( window property\) that is not the tty process. In this case, it invokes the windows)]TJ +/TT10 1 Tf +-4.2007 -1.2889 TD +0 Tw +(WINDOWENTRYFN)Tj +/TT8 1 Tf +7.8013 0 TD +( of one argument )Tj +/TT10 1 Tf +7.8101 0 TD +(\(WINDOW\))Tj +/TT8 1 Tf +4.8008 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(WINDOWENTRYFN)Tj +/TT8 1 Tf +7.8013 0 TD +( defaults to )Tj +/TT10 1 Tf +5.189 0 TD +(GIVE.TTY.PROCESS)Tj +/TT8 1 Tf +9.6016 0 TD +(:)Tj +/TT10 1 Tf +-41.0872 -2.5489 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(GIVE.TTY.PROCESS)Tj +/TT8 1 Tf +9.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 287.257 95 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 95 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.1055 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1856 Tw +[( has a )]TJ +/TT10 1 Tf +3.3125 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1856 Tw +[( property, performs )]TJ +/TT10 1 Tf +9.5117 0 TD +0 Tw +(\(TTY.PROCESS)Tj +/TT18 1 Tf +7.2012 0 TD +( )Tj +/TT10 1 Tf +0.4356 0 TD +(\(WINDOWPROP)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT14 1 Tf +0.4356 0 TD +(WINDOW)Tj +/TT18 1 Tf +-36.4044 -1.2889 TD +()Tj +/TT10 1 Tf +0.2778 0 TD +(PROCESS\)\))Tj +/TT8 1 Tf +5.4009 0 TD +0.0411 Tw +[( and then invokes )]TJ +/TT14 1 Tf +8.2694 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(s )Tj +/TT10 1 Tf +0.9928 0 TD +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.0411 Tw +[( function \(or )]TJ +/TT10 1 Tf +5.8543 0 TD +0 Tw +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +-32.1971 -1.2889 TD +(if the right button is down\).)Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +51 0 obj +<< +/Length 6062 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-13)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0222 Tw +(There are some cases where clicking in a window does not always imply that the user wants to talk to)Tj +0 -1.2222 TD +0.1378 Tw +[(that window. For example, clicking in a text editor window with a shift key held down means to)]TJ +T* +0.0033 Tw +("shift-select" some piece of text into the input buffer of the )Tj +/TT16 1 Tf +25.9107 0 TD +0 Tw +(current)Tj +/TT8 1 Tf +3.02 0 TD +0.0002 Tc +0.0031 Tw +( tty process. The editor supports this)Tj +-28.9307 -1.2222 TD +0 Tc +0.0144 Tw +(by supplying a )Tj +/TT10 1 Tf +6.9081 0 TD +0 Tw +(WINDOWENTRYFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.0144 Tw +[( that performs )]TJ +/TT10 1 Tf +6.5834 0 TD +0 Tw +(GIVE.TTY.PROCESS)Tj +/TT8 1 Tf +9.6016 0 TD +0.0144 Tw +[( if no shift key is down, but goes)]TJ +-30.8943 -1.2889 TD +0.1667 Tw +(into its shift-select mode, without changing the tty process, if a shift key is down. The shift-select)Tj +0 -1.2222 TD +0.0922 Tw +(mode performs a )Tj +/TT10 1 Tf +8.1009 0 TD +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +4.8008 0 TD +0.0922 Tw +[( of the selected text when the shift key is let up, the )]TJ +/TT10 1 Tf +23.9591 0 TD +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +4.8008 0 TD +0.0922 Tw +[( feeding)]TJ +-41.6616 -1.2889 TD +0 Tw +(input to the current tty process.)Tj +0 -2.8889 TD +0.1778 Tw +(Sometimes a process wants to be notified when it becomes the tty process, or stops being the tty)Tj +0 -1.2222 TD +0.2344 Tw +[(process. To support this, there are two process properties, )]TJ +/TT10 1 Tf +28.3757 0 TD +0 Tw +(TTYEXITFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.2344 Tw +[( and )]TJ +/TT10 1 Tf +2.6618 0 TD +0 Tw +(TTYENTRYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.2344 Tw +[(. The)]TJ +-42.4393 -1.2889 TD +0.0033 Tw +(actions taken by )Tj +/TT10 1 Tf +7.4255 0 TD +0 Tw +(TTY.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0033 Tw +( when it switches the tty to a new process are as follows: the former tty)Tj +-14.0266 -1.2889 TD +0 Tw +(processs )Tj +/TT10 1 Tf +4.3442 0 TD +(TTYEXITFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.08 Tw +[( is called with two arguments )]TJ +/TT10 1 Tf +13.7979 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(OLDTTYPROCESS)Tj +/TT10 1 Tf +7.8013 0 TD +( )Tj +/TT14 1 Tf +0.7923 0 TD +(NEWTTYPROCESS)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +(; the new)Tj +-41.138 -1.2889 TD +0.2833 Tw +(process is made the tty process; finally, the new tty processs )Tj +/TT10 1 Tf +30.124 0 TD +0 Tw +(TTYENTRYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.2833 Tw +[( is called with two)]TJ +-36.125 -1.2889 TD +0 Tw +(arguments )Tj +/TT10 1 Tf +4.9992 0 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(NEWTTYPROCESS)Tj +/TT10 1 Tf +7.8013 0 TD +( )Tj +/TT14 1 Tf +0.6023 0 TD +(OLDTTYPROCESS)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0001 Tc +0.001 Tw +(. Normally the )Tj +/TT10 1 Tf +6.9346 0 TD +0 Tc +0 Tw +(TTYENTRYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0002 Tc +0.0009 Tw +( and )Tj +/TT10 1 Tf +2.1951 0 TD +0 Tc +0 Tw +(TTYEXITFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0002 Tc +0.0009 Tw +( need)Tj +-42.9358 -1.2889 TD +0 Tc +0.0044 Tw +(only their first argument, but the other process involved in the switch is supplied for completeness. In)Tj +0 -1.2222 TD +0.0144 Tw +(the present system, most processes want to interpret the keyboard in the same way, so it is considered)Tj +T* +0.0878 Tw +(the responsibility of any process that changes the keyboard interpretation to restore it to the normal)Tj +T* +0 Tw +(state by its )Tj +/TT10 1 Tf +4.9556 0 TD +(TTYEXITFN)Tj +/TT8 1 Tf +5.4009 0 TD +(. )Tj +-10.3564 -2.9556 TD +0.2067 Tw +(A window is "owned" by the last process that anyone gave as the windows )Tj +/TT10 1 Tf +36.5179 0 TD +0 Tw +(PROCESS)Tj +/TT8 1 Tf +4.2007 0 TD +0.2067 Tw +[( property.)]TJ +-40.7185 -1.2889 TD +0.1556 Tw +(Ordinarily there is no conflict here, as processes tend to own disjoint sets of windows \(though, of)Tj +0 -1.2222 TD +0.0478 Tw +[(course, cooperating processes can certainly try to confuse each other\). The only likely problem arises)]TJ +T* +0.1089 Tw +(with that most global of windows, )Tj +/TT10 1 Tf +16.0874 0 TD +0 Tw +(PROMPTWINDOW)Tj +/TT8 1 Tf +7.2012 0 TD +0.1089 Tw +[(. Programs should not be tempted to read from)]TJ +/TT10 1 Tf +-23.2886 -1.2889 TD +0 Tw +(PROMPTWINDOW)Tj +/TT8 1 Tf +7.2012 0 TD +0.0078 Tw +[(. This is not usually necessary anyway, as the first attempt to read from )]TJ +/TT10 1 Tf +32.0595 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0078 Tw +[( in a process)]TJ +-39.8608 -1.2889 TD +0.0344 Tw +(that has not set its )Tj +/TT10 1 Tf +8.3866 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.0344 Tw +[( to its own window causes a tty window to be created for the)]TJ +-17.9881 -1.2889 TD +0 Tw +(process \(see the Global Resources section above\). )Tj +/TT4 1 Tf +10 0 0 10 78 252 Tm +(Handling of Interrupts)Tj +/TT8 1 Tf +9 0 0 9 78 228.34 Tm +0.2211 Tw +(At the time that a keyboard interrupt character \(see Chapter 29\) is struck, any process could be)Tj +0 -1.2222 TD +0.0056 Tw +[(running, and some decision must be made as to which process to actually interrupt. To the extent that)]TJ +T* +0.0833 Tw +(keyboard interrupts are related to type-in, most interrupts are taken in the tty process; however, the)Tj +T* +0 Tw +(following are handled specially:)Tj +/TT12 1 Tf +9.2456 -2 TD +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +( \(initially Control-D\))Tj +/TT12 1 Tf +-2.8372 -1.0667 TD +(ERROR)Tj +/TT8 1 Tf +3.0005 0 TD +0.4144 Tw +[( )414.4(\(initially )414.4(Control-E\))-1333(These interrupts are taken in the mouse)]TJ +10.2573 -1.2889 TD +0.1311 Tw +(process, if the mouse is not in its idle state;)Tj +0 -1.2222 TD +0.1578 Tw +(otherwise they are taken in the tty process.)Tj +T* +0.1767 Tw +(Thus, Control-E can be used to abort some)Tj +T* +0.17 Tw +(mouse-invoked window action, such as the)Tj +T* +0.2678 Tw +[(Shape command. As a consequence, note)]TJ +T* +0.4456 Tw +(that if the mouse invokes some lengthy)Tj +T* +0.5444 Tw +(computation that the user thinks of as)Tj +T* +0.1467 Tw +("background", Control-E still aborts it, even)Tj +T* +0.2978 Tw +(though that may not have been what the)Tj +T* +0.1578 Tw +[(user intended. Such lengthy computations,)]TJ +T* +0.4667 Tw +(for various reasons, should generally be)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +54 0 obj +<< +/Length 4189 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 330 569.54 Tm +0.2056 Tw +(performed by spawning a separate process)Tj +0 -1.2222 TD +[(to perform them.)-731.6(The )]TJ +/TT10 1 Tf +10.6627 0 TD +0 Tw +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +0.0722 Tw +[( interrupt in a)]TJ +-13.6632 -1.2889 TD +0.9667 Tw +(process other than the executive is)Tj +0 -1.2222 TD +0.2033 Tw +(interpreted exactly as if an error unwound)Tj +T* +0.0256 Tw +(the process to its top level: if the process was)Tj +T* +0 Tw +(designated )Tj +/TT10 1 Tf +5.12 0 TD +(RESTARTABLE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0111 Tw +[( = )]TJ +/TT10 1 Tf +1.1282 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +(, it is restarted;)Tj +-13.4494 -1.2889 TD +0 Tw +(otherwise it is killed.)Tj +/TT12 1 Tf +-12.81 -2 TD +(HELP)Tj +/TT8 1 Tf +2.4004 0 TD +0.01 Tw +[( )10(\(initially )10(Control-G\))-1332.9(A menu of processes is presented to the user,)]TJ +10.4096 -1.2889 TD +0.5656 Tw +(who is asked to select which one the)Tj +0 -1.2222 TD +0.2189 Tw +[(interrupt should occur in. The current tty)]TJ +T* +0.1033 Tw +(process appears with a * next to its name at)Tj +T* +0.0133 Tw +[(the top of the menu. The menu also includes)]TJ +T* +0.1389 Tw +(an entry "[Spawn Mouse]", for the common)Tj +T* +0.1 Tw +(case of needing a mouse because the mouse)Tj +T* +0.8289 Tw +(process is currently tied up running)Tj +T* +0 Tw +(someones )Tj +/TT10 1 Tf +5.2446 0 TD +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.3544 Tw +(; selecting this)Tj +-13.0459 -1.2889 TD +0.1189 Tw +(entry spawns a new mouse process, and no)Tj +0 -1.2222 TD +0 Tw +(break occurs.)Tj +/TT12 1 Tf +-13.2578 -2 TD +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +[( \(initially Control-B\))-1333(Performs )-243.3(the )]TJ +/TT10 1 Tf +16.6898 0 TD +(HELP)Tj +/TT8 1 Tf +2.4004 0 TD +0.2433 Tw +[( interrupt in the mouse)]TJ +-8.8329 -1.2889 TD +0.1311 Tw +(process, if the mouse is not in its idle state;)Tj +0 -1.2222 TD +0 Tw +(otherwise it is performed in the tty process.)Tj +/TT12 1 Tf +-13.1189 -2 TD +(RUBOUT)Tj +/TT8 1 Tf +3.6006 0 TD +( \(initially )Tj +/TT10 1 Tf +4.2524 0 TD +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.76 Tw +[(\))-1332.3(This interrupt clears typeahead in )]TJ +/TT16 1 Tf +20.6635 0 TD +0 Tw +(all)Tj +/TT8 1 Tf +-18.9982 -1.2889 TD +(processes.)Tj +/TT12 1 Tf +-13.3333 -2 TD +(RAID)Tj +/TT10 1 Tf +2.4004 0 TD +(, )Tj +/TT12 1 Tf +1.2002 0 TD +(STACK)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(OVERFLOW)Tj +-2.4012 -1.2889 TD +(STORAGE)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(FULL)Tj +/TT8 1 Tf +3.7325 0 TD +0.2356 Tw +(These interrupts always occur in whatever)Tj +0 -1.2889 TD +0.0011 Tw +(process was running at the time the interrupt)Tj +0 -1.2222 TD +0.1489 Tw +[(struck. In the cases of )]TJ +/TT10 1 Tf +11.2458 0 TD +0.3556 Tw +(STACK OVERFLOW)Tj +/TT8 1 Tf +-11.2458 -1.2889 TD +0 Tw +(and )Tj +/TT10 1 Tf +2.2129 0 TD +0.6467 Tw +(STORAGE FULL)Tj +/TT8 1 Tf +7.8478 0 TD +0.27 Tw +(, this means that the)Tj +-10.0607 -1.2889 TD +0.4522 Tw +(interrupt is more likely to strike in the)Tj +0 -1.2222 TD +0.6211 Tw +(offending process \(especially if it is a)Tj +T* +0.4833 Tw +("runaway" process that is not blocking\).)Tj +T* +0.1756 Tw +(Note, however, that this process is still not)Tj +T* +0.2167 Tw +(necessarily the guilty party; it could be an)Tj +T* +0.0178 Tw +(innocent bystander that just happened to use)Tj +T* +0.5856 Tw +(up the last of a resource prodigiously)Tj +T* +0 Tw +(consumed by some other process. )Tj +/TT4 1 Tf +10 0 0 10 102 108.2 Tm +(Keeping the Mouse Alive)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 105.49 m +558.01 105.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 83.54 Tm +0.2478 Tw +(Since the window mouse handler runs in its own process, it is not available while a windows)Tj +/TT10 1 Tf +T* +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.2944 Tw +[( function \(or any of the other window functions invoked by mouse action\) is)]TJ +-7.8013 -1.2889 TD +0.0533 Tw +[(running. This leads to two sorts of problems: \(1\) a long computation underneath a )]TJ +/TT10 1 Tf +37.5275 0 TD +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +-37.5275 -1.2889 TD +0.1978 Tw +(deprives the user of the mouse for other purposes, and \(2\) code that runs as a )Tj +/TT10 1 Tf +37.5233 0 TD +0 Tw +(BUTTONEVENTFN)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +57 0 obj +<< +/Length 3769 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-15)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0289 Tw +(cannot rely on other )Tj +/TT10 1 Tf +9.2728 0 TD +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.0289 Tw +(s running, which means that there some pieces of code that run)Tj +-17.0741 -1.2889 TD +0.1189 Tw +[(differently from normal when run under the mouse process. These problems are addressed by the)]TJ +0 -1.2222 TD +0 Tw +(following functions:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SPAWN.MOUSE)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +()Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 183.0026 524.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 524.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0278 Tw +(Spawns another mouse process, allowing the mouse to run even if it is currently "tied up")Tj +0 -1.2222 TD +0.0789 Tw +[(under the current mouse process. This function is intended mainly to be typed in at the)]TJ +T* +0 Tw +(Lisp executive when you notice the mouse is busy.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ALLOW.BUTTON.EVENTS)Tj +/TT10 1 Tf +11.3999 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 220.8017 463.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 463.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2622 Tw +(Performs a )Tj +/TT10 1 Tf +5.583 0 TD +0 Tw +(\(SPAWN.MOUSE\))Tj +/TT8 1 Tf +7.8013 0 TD +0.2622 Tw +[( only when called underneath the mouse process. This)]TJ +-13.3843 -1.2889 TD +0.1878 Tw +(should be called \(once, on entry\) by any function that relies on )Tj +/TT10 1 Tf +30.0668 0 TD +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.1878 Tw +(s for)Tj +-37.8681 -1.2889 TD +0.0867 Tw +(completion, if there is any possibility that the function will itself be invoked by a mouse)Tj +0 -1.2222 TD +0 Tw +(function.)Tj +-5.3333 -2.8889 TD +0.0744 Tw +(It never hurts, at least logically, to call )Tj +/TT10 1 Tf +17.599 0 TD +0 Tw +(SPAWN.MOUSE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0744 Tw +[( or )]TJ +/TT10 1 Tf +1.5898 0 TD +0 Tw +(ALLOW.BUTTON.EVENTS)Tj +/TT8 1 Tf +11.4019 0 TD +0.0744 Tw +[( needlessly, as the)]TJ +-37.1917 -1.2889 TD +0.1078 Tw +(mouse process arranges to quietly kill itself if it returns from the users )Tj +/TT10 1 Tf +32.8728 0 TD +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.1078 Tw +[( and finds)]TJ +-40.6741 -1.2889 TD +0.0311 Tw +[(that another mouse process has sprung up in the meantime. \(There is, of course, some computational)]TJ +0 -1.2222 TD +0 Tw +(expense.\))Tj +/TT4 1 Tf +10 0 0 10 54 310.32 Tm +(Process Status Window)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 307.61 m +510.01 307.61 l +S +BT +/TT8 1 Tf +9 0 0 9 78 285.66 Tm +0.0667 Tw +(The background menu command )Tj +/TT10 1 Tf +15.2818 0 TD +0 Tw +(PSW)Tj +/TT8 1 Tf +1.8003 0 TD +0.0667 Tw +[( \(see Chapter 27\) and the function )]TJ +/TT10 1 Tf +15.6439 0 TD +0 Tw +(PROCESS.STATUS.WINDOW)Tj +/TT8 1 Tf +-32.726 -1.2889 TD +0.2122 Tw +(\(below\) create a "Process Status Window", that allows you to examine and manipulate all of the)Tj +0 -1.2222 TD +0 Tw +(existing processes:)Tj +/TT6 1 Tf +10 0 0 10 126 110.51 Tm +( )Tj +ET +q +151.5 0 0 -138 170.49 248.51 cm +/Im1 Do +Q +BT +/TT8 1 Tf +9 0 0 9 78 84.85 Tm +0.0422 Tw +[(The window consists of two menus. The top menu lists all the processes at the moment. Commands)]TJ +T* +0.1267 Tw +(in the bottom menu operate on the process selected in the top menu \()Tj +/TT10 1 Tf +32.1838 0 TD +0 Tw +(EXEC)Tj +/TT8 1 Tf +2.4004 0 TD +0.1267 Tw +[( in the example above\).)]TJ +-34.5842 -1.2889 TD +0 Tw +(The commands are:)Tj +/TT12 1 Tf +7.3667 -2 TD +(BT)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(BTV)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(BTV*)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT12 1 Tf +0.5 0 TD +(BTV!)Tj +/TT8 1 Tf +3.7325 0 TD +(Displays a backtrace of the selected process.)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +>> +/XObject << +/Im1 59 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +61 0 obj +<< +/Length 4874 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 254.4 569.54 Tm +(WHO?)Tj +/TT8 1 Tf +3.7333 0 TD +0.1989 Tw +(Changes the selection to the tty process, i.e., the one)Tj +0 -1.2889 TD +0 Tw +(currently in control of the keyboard.)Tj +/TT12 1 Tf +-4.12 -2 TD +(KBD)Tj +/TT19 1 Tf +9.9 0 0 9 267.1226 539.9399 Tm +<0040>Tj +/TT8 1 Tf +9 0 0 9 288 539.9399 Tm +0.0944 Tw +(Associates the keyboard with the selected process; i.e.,)Tj +0 -1.2889 TD +0 Tw +(makes the selected process be the tty process.)Tj +/TT12 1 Tf +-3.7333 -2 TD +(INFO)Tj +/TT8 1 Tf +3.7333 0 TD +0.0344 Tw +(If the selected process has an )Tj +/TT10 1 Tf +13.1969 0 TD +0 Tw +(INFOHOOK)Tj +/TT8 1 Tf +4.8008 0 TD +0.0344 Tw +[( property, calls)]TJ +-17.9977 -1.2889 TD +0.0844 Tw +[(it. The hook may be a function, which is then applied)]TJ +0 -1.2222 TD +0.05 Tw +(to two arguments, the process and the button \()Tj +/TT10 1 Tf +21.0255 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +0.05 Tw +[( or)]TJ +/TT10 1 Tf +-23.4259 -1.2889 TD +0 Tw +(MIDDLE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2811 Tw +(\) used to invoke )Tj +/TT10 1 Tf +8.4653 0 TD +0 Tw +(INFO)Tj +/TT8 1 Tf +2.4004 0 TD +0.2811 Tw +(, or a form, which is)Tj +-14.4662 -1.2889 TD +0 Tw +(simply )Tj +/TT10 1 Tf +3.4415 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1456 Tw +[(ed. The )]TJ +/TT10 1 Tf +4.4782 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.1456 Tw +[( or )]TJ +/TT10 1 Tf +1.732 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1456 Tw +[( happens in the)]TJ +-17.4529 -1.2889 TD +0.0544 Tw +(context of the selected process, using )Tj +/TT10 1 Tf +16.8633 0 TD +0 Tw +(PROCESS.APPLY)Tj +/TT8 1 Tf +-16.8633 -1.2889 TD +(or )Tj +/TT10 1 Tf +1.372 0 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +0.1811 Tw +[(. The )]TJ +/TT10 1 Tf +3.2172 0 TD +0 Tw +(INFOHOOK)Tj +/TT8 1 Tf +4.8008 0 TD +0.1811 Tw +[( process property)]TJ +-16.5911 -1.2889 TD +0.1489 Tw +(can be set using )Tj +/TT10 1 Tf +7.8387 0 TD +0 Tw +(PROCESSPROP)Tj +/TT8 1 Tf +6.6011 0 TD +0.1489 Tw +[( \(see the Creating and)]TJ +-14.4398 -1.2889 TD +0 Tw +(Destroying Processes section above\).)Tj +/TT12 1 Tf +-4.3333 -2 TD +(BREAK)Tj +/TT8 1 Tf +4.3333 0 TD +0.0833 Tw +[(Enter a break under the selected process. This has the)]TJ +0 -1.2889 TD +0.4633 Tw +(side effect of waking the process with the value)Tj +0 -1.2222 TD +0 Tw +(returned from the break.)Tj +/TT12 1 Tf +-3.7333 -2 TD +(KILL)Tj +/TT8 1 Tf +3.7333 0 TD +(Deletes the selected process.)Tj +/TT12 1 Tf +-5.5333 -2.0667 TD +(RESTART)Tj +/TT8 1 Tf +5.5333 0 TD +(Restarts the selected process.)Tj +/TT12 1 Tf +-3.7333 -2.0667 TD +(WAKE)Tj +/TT8 1 Tf +3.7333 0 TD +0.2344 Tw +[(Wakes the selected process. Prompts for a value to)]TJ +0 -1.2889 TD +0 Tw +(wake it with \(see )Tj +/TT10 1 Tf +7.7344 0 TD +(WAKE.PROCESS)Tj +/TT8 1 Tf +7.2012 0 TD +(\).)Tj +/TT12 1 Tf +-20.4689 -2.0667 TD +(SUSPEND)Tj +/TT8 1 Tf +5.5333 0 TD +0.2078 Tw +(Suspends the selected process; i.e., causes it to block)Tj +0 -1.2889 TD +0 Tw +(indefinitely \(until explicitly woken\).)Tj +/TT10 1 Tf +-15.3333 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PROCESS.STATUS.WINDOW)Tj +/TT8 1 Tf +12.5999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WHERE)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 308.8561 258.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 258.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.3867 Tw +(Puts up a process status window that provides several debugging commands for)Tj +0 -1.2222 TD +1.3811 Tw +[(manipulating running processes. If the window is already up,)]TJ +/TT10 1 Tf +T* +0 Tw +(PROCESS.STATUS.WINDOW)Tj +/TT8 1 Tf +12.6021 0 TD +0.0733 Tw +[( refreshes it. If )]TJ +/TT14 1 Tf +7.1435 0 TD +0 Tw +(WHERE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0733 Tw +[( is a position, the window is placed in)]TJ +-22.7461 -1.2889 TD +0 Tw +(that position; otherwise, you are prompted for a position.)Tj +0 -2 TD +0.0355 Tw +(Currently, the process status window runs under the mouse process, like other menus, so)Tj +0 -1.2222 TD +0.4933 Tw +(if the mouse is unavailable \(e.g., a mouse function is performing an extensive)Tj +T* +0.3544 Tw +(computation\), you may be unable to use the process status window \(you can try)Tj +/TT10 1 Tf +T* +0 Tw +(SPAWN.MOUSE)Tj +/TT8 1 Tf +6.6011 0 TD +(, of course\).)Tj +/TT4 1 Tf +10 0 0 10 102 114.06 Tm +(Non-Process Compatibility)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 111.35 m +558.01 111.35 l +S +BT +/TT8 1 Tf +9 0 0 9 126 89.4 Tm +0.0667 Tw +(This section describes some considerations for authors of programs that ran in the old single-process)Tj +0 -1.2222 TD +0.0989 Tw +(Medley environment, and now want to make sure they run properly in the multi-processing world.)Tj +T* +0.1344 Tw +[(The biggest problem to watch out for is code that runs underneath the mouse handler. Writers of)]TJ +T* +0.12 Tw +(mouse handler functions should remember that in the process world the mouse handler runs in its)Tj +T* +0.13 Tw +(own process, and hence \(a\) you cannot depend on finding information on the stack \(stash it in the)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT19 63 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +65 0 obj +<< +/Length 3337 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(22-17)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(PROCESSES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0556 Tw +(window instead\), and \(b\) while your function is running, the mouse is not available \(if you have any)Tj +0 -1.2222 TD +0.0422 Tw +(non-trivial computation to do, spawn a process to do it, notify one of your existing processes to do it,)Tj +T* +0 Tw +(or use )Tj +/TT10 1 Tf +2.9468 0 TD +(PROCESS.EVAL)Tj +/TT8 1 Tf +7.2012 0 TD +( to run it under some other process\).)Tj +-10.148 -2.9556 TD +0.2144 Tw +(The following functions are meaningful even if the process world is not on: )Tj +/TT10 1 Tf +36.239 0 TD +0 Tw +(BLOCK)Tj +/TT8 1 Tf +3.0005 0 TD +0.2144 Tw +[( \(invokes the)]TJ +-39.2394 -1.2889 TD +0.1956 Tw +(system background routine, which includes handling the mouse\); )Tj +/TT10 1 Tf +30.832 0 TD +0 Tw +(TTY.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.6956 0 TD +(THIS.PROCESS)Tj +/TT8 1 Tf +-38.1287 -1.2889 TD +0.2011 Tw +(\(both return )Tj +/TT10 1 Tf +6.0228 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2011 Tw +(\); and )Tj +/TT10 1 Tf +3.1781 0 TD +0 Tw +(TTY.PROCESSP)Tj +/TT8 1 Tf +7.2012 0 TD +0.2011 Tw +[( \(returns )]TJ +/TT10 1 Tf +4.4393 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2011 Tw +[(, i.e., anyone is allowed to take tty input\). In)]TJ +-23.2418 -1.2889 TD +0 Tw +(addition, the following two functions exist in both worlds:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(EVAL.AS.PROCESS)Tj +/TT16 1 Tf +8.9999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 223.0553 463.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 463.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0067 Tw +(Same as )Tj +/TT10 1 Tf +3.8239 0 TD +0 Tw +(\(ADD.PROCESS)Tj +/TT18 1 Tf +7.2012 0 TD +( )Tj +/TT14 1 Tf +0.2567 0 TD +(FORM)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2567 0 TD +0.0167 Tw +(RESTARTABLE NO\))Tj +/TT8 1 Tf +10.2183 0 TD +0.0067 Tw +(, when processes are running, )Tj +/TT10 1 Tf +13.4411 0 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +-37.5982 -1.2889 TD +0.0489 Tw +[(when not. This is highly recommended for mouse functions that perform any non-trivial)]TJ +0 -1.2222 TD +0 Tw +(activity.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(EVAL.IN.TTY.PROCESS)Tj +/TT8 1 Tf +11.3999 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FORM)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WAITFORRESULT)Tj +/TT10 1 Tf +7.8013 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 317.1167 402.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 402.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1478 Tw +(Same as )Tj +/TT10 1 Tf +4.1061 0 TD +0.3556 Tw +(\(PROCESS.EVAL \(TTY.PROCESS\))Tj +/TT18 1 Tf +16.5582 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.3978 0 TD +(FORM)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.3978 0 TD +(WAITFORRESULT)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1478 Tw +(, when processes)Tj +-32.2616 -1.2889 TD +0 Tw +(are running, )Tj +/TT10 1 Tf +5.7153 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +( when not.)Tj +-13.4491 -2.9556 TD +0.1567 Tw +(Most of the process functions that do not take a process argument can be called even if processes)Tj +0 -1.2222 TD +0.0078 Tw +(arent running. )Tj +/TT10 1 Tf +7.1747 0 TD +0 Tw +(ADD.PROCESS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0078 Tw +[( creates, but does not run, a new process \(it runs when )]TJ +/TT10 1 Tf +24.3551 0 TD +0 Tw +(PROCESSWORLD)Tj +/TT8 1 Tf +-38.1308 -1.2889 TD +(is called\).)Tj +ET +endstream +endobj +66 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +59 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 202 +/Height 184 +/BitsPerComponent 1 +/ImageMask true +/Length 4785 +>> +stream +??????0?7?7?7oo{?7}﷿}7?7}w}?7}r}?7}?7}}?7}}}緻?7}}}o{?7?7?7?7?7o?}?7o7{?7߯nw?7߯mw/?7wWmw_?7wkwo?7Wgww?7o`ǎ a??????????۸<}݃w??7n~{ٿw??7n~{ٿo??~}տ_??z|Շ??yn~{Ϳw??n~{Ϳw??> +endobj +67 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +68 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +69 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +70 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +71 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +74 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +75 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +76 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBLCBG+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 77 0 R +>> +endobj +77 0 obj +<< +/Filter /FlateDecode +/Length 20020 +/Length1 39356 +>> +stream +HW}tovgvfwv9pA%S8-r}`flJJb)ՔҔRj)Bȇآ"-P)@z&@?ޙ߻fG3 ;wТ@3{8^nb(h +3 2*/|wr*e{Vԇ2"V˝놡0U'vmxn aq,B}uJ8rK&qU> ( Z@(ɸxTz <7BMėD*ƨ}|:@\wuۯ`ꈗz,^q`.Zxpr;8p?tB&~O~x{A+t_6p"kHM p&2XM snH6@= r6luD 6qs1R\LqTW`*?vh,7U$a8` r 6rKJCtg5GOmp70NGJ^gW}o@ 8j4ؿ-#ђ<ލY_ {)(,G Zm&*0^x꼋#,ùrGr\|ƣ8?Id+Qr;Ff(l\—d$kr&6g9*<t/ M +A"yN2^ a|#Eptl:= a%&hH" >wI"b _^6Yi 3Bfo>u'i/ ~_^LVimw"xLHR 6Vٸƥ6e6V۸6qm)ظƧm|Zd:l\omy7/:$OqCb/ 50O%PbHWLT!5 BHj΀orU%p7L7_捸H13ܘjj4de5nx|UJGAZSk)% f$4FFbRݲkIh*~+߯lTm8ڠ*ZP ~'FBP]EA]h4(q#iIvTT Ge4SH^H|R֘ =Ǚf!hDvL{*AƒX|9ND7ݶ,9Qdb i,_r %jq{/>RF fls=o~ΘG͔⇽)M~ԛFiJrD"4yǜ%e"K \";2W2mW7ʖH3I/F67pٕ2־a^B7I+!Wn\S#z"mRYw |)_ʘӺ:oNXu <5FOOjJ =:}_xjb1񌔔Z]BHlj0>wvo-lpW{G;Yb;=ޕqyuQOXj]B&k=aaXOgYU:NVoqu,<8\,Jҙ{K(0S榁gP@AS]zD,YsWAorm2cgX^Jv[mcxg6b齊O*\=ˣ5d"csZs:m8Cv]-= Pa`s[Cu8vU|-m${&`?ԗ lǟŹgBV8Np-vH§ֵ@CRr DB 5I*kU NG 0-d+hԡۚ ﹳMRDHHh<~ٜ3.\0YXJwX e^& LH}2*$u֑1b{wkY n%i0˰Z[-d4 ~RlB;~/1 sۃ^@F%HV:# )p)8Nho e҄ti05`c6V`~&/茍!Fz|{e.)_L3Bw,v!dm[YFF>.UFzB?.wUxϝj8Ԩ1Ӫ'#mtȶ/z"2ָ! +" Qg 9ke\VÚ.59=څrWJgi*:k}A{jI<9>S_ʒ P'Lgw<9'f72*I@3G5;$\J0ϾحːQ4UxNc0^1X*!qnD#o0Z#I 2ubQ "!8 3c yO[yK%Z2jV{<-;qAzTtM.,\:D8UAY)Q y{(]C_;w 5棾͏K%B 󧦶_"c%*u}Ag}>ɘ9k7=Rzv63zZ|Eۖ=V:q+勁xHٳ0[g˯~{eUM=Q_pAu ֒AiuSZ>ؒ\׵.3BXה˱"\{ŲνQb-7ٍ In'F9CHMOp +:D]#ʻ=(0tssѨ3`T$#baSiF[?-HƳ-VGs2)m|ذ,EAJ1 irMFbTNu.mÝа6#"ѶÕwv'0s<&$ _3q OX wJXu +a4A+^ SpeAb!'?$SȣO2TgJ2HJZNG&ɟI9F>&I/@.?P Q'ͥn:>D*-<4KA}/:n6;}vO4,}=d6MdSYI-e/լZX{IvEEv pE>>O?14_ʟ/zox1~O^e:4Qٔa$@ņEԢG3az 5✓;\~UfBȶli1i +c`nDS\B$CI`Lѭ +e1α6b+L`#nn/mHws 2Fۖ7v[Wu;%1E.lY喉UJ_h֙a9˼bjI%$)5b I,/=dP'~,MEhǧf{lx )qᇑY`XjC+\hkY.Zf.ӭY)6(z,H9el߹d`EadjDj50K%nmS UR.!/ qƜә KKmg'tX00,( {JMqCUӻ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*zh⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^)>?t1;ֱiɑPE$ n-ȼH !6#SّٜGw9iU?8*M:k CK]\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` )s]Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5/O`yY@UY-РlKI:96֩%&De1#{imcEGAdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLZc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\+~[S1?7ꧾuܩE^/5IA# +hО%-e Oo_0hc 2~=ytLW,Z1ְZR+Ʈ17f<6cY1fjh/H2VQOhX,OtW"Ah۳\,jxf{[ + &gi Ƽe9,bXxX>M4d,<Ɵ$+j +#ǺG+ԍLοAXO-f9ζnf,,C-ݖΗ^צG9 +і[:?{YPJߔ?^KCGͷܠ0A橥/Kw=_B Zb衅KUDww+Xɪe)MXf_+PxcE-#iZ 4=t@!/Q8i5,\}܀E"/zաzԄv4hEUt lǥx ^܀) ܅{0Sx 6N:^$Ed%YED"}U1ROH i'ϐ9@FHLSM;$wrd"n-k=}!n13WͽǥE{Eu]sܷ )ef.HZT6 (DhjgdL'QVFQ@%֟V:hgĤ-љLkg@[cҎ;QƟs/ h:=?|ߏ]adUNuy+VS 〫sXGEҐ5Тl2 [*y5( +0m?{#8:Nh"ub*Q +1Q'6NGNP-;XZVj%^TqJ &. D8K(XՖ$24)X ckUCށYXv?lȦG 5AhcΥ ql3tؘ޸axʿ] YKCő4-izA GSF<6,4aVPj<ɭo8s:ZN/j,cIrKA@z5}g;ӡ.~T;B$a kHu_烢-LmIo+7%WAGb˻r{;"Qc<&=Yfzk +_a!N%u > ]-kw$4hH[uV"9>a*47JC/") I⟯gE^pwi.JC% `_ԒT T/@$KWO̺*S֝8XHd'ϧeug27;r~V*kX P Ir#֮;lP}Q.ccm޼<(@${94;=`gsFT]IO P o%0&H=Vx"sIz`,O /fH*?wUISRo/0Džu Ố +QM,ȅȪx, *a13XU% 7`32txQ8}a}×pxovqd22\k.y, ?!U%RC^%kIyDym%IEȻ#/<'7L$7A2jy .dtJ')4nt]MVچnr #=Jѳ ($)EIOJR`f*ji9:)"5Iڤ;% K;' OI7cY +s3/&i,e~F}@F\J, !/&T›0_ o78TcBe + 3/r`0dH +yW>a~! ۼ*0Q1p)mPds"E6 yfI&3,sǂ{xg\X$aD} +kwyBh0!Ye\Q.ʸy_ޣm/"i_YJTTʽҪ&6|ʪ'I/7J Duoוl?I1ުȪ5{lՖnV(X|bcmaO+^%=y~vPa4_3'cWr YٍwˍWSkl%͓)STPv|#M=Y}p~܀vk FK"^tϕK{UDrp!\p'͆D[n8j[oݧ[[  ~| ;pWm}].j2VAj)]q~nw}!S؝;A +U ;J"{ LG)$> +M*&Ofٴ $v&Ҭbh&14v3]ZtjoޑSv}QoOص=+D#>lwf'fO+.XaOI@PKB1LC)2Sp7"X rXzXৰ8 +ϣ:*3pDM>$!\Eɵ&*"7Nn#d&Bu|Xd YA'Mmv="(=5=JQRwc$FU!Ơ8ohu{kݖ WGE¨Bqsg{Q%(RZgGTJJh#XzV} F!4eDfyULT\"n↙ .ڑ +C[dPI$fx у`*؁kq&.hg3C%)A놲>֢Tv$4,j`$#ACυ| b?fA'XHoE,yƈPXhFϓ(6_N}b^y˛$Yc& XPR7d~ɇʐ/E iFjl|L*^bkG 8Jב{)۝bp/ HcwX(΢f~_pnFDGs}Z :ߡMH +JIeB9w`+0g L < +=,Y Y٪%JG&t)  2԰-|C v:s{y:"۠Їud}=񯙭xRdNLr/ 4,20dpɲF}OaT!?K0K!H >yZ|E(9ңg0l^*@ܚ=T2tKhfs=`a"4 pvL#.:-O (X ٌ[d6}aw m49l"rkb`mvˆAoi-Q*x% u  TE2QTGSUl,>"OkR. #-T; " n"Y׃¶\+Lę#X.Iq*=$d`9\2q="Xpd1;Н[c\ņA$/:؂FW'G8{ImeJdSQC͠ẩd>ZeY_lGovts# Q"#%qTvCˆ< RIK_0|!͉ !륾V2if}8cPC*E7|ǵ ${۝}Aۡ,8hZl ZdZdO}lj- Z<@UZ|-̢&-*&a׽j5sR}\I`c٥ʼnftg̫‡oMqe␥wcB ֬u=5Ƙע >Y6ޝRrT9UpdqJvG,Ȉş%ȼ~ś-;zR" ZxTQgЂM -5uf -te6xx]yz,1tJǬRBcl[Vά5&ހ^]AN-o]3qnu-]X,h9\.lwY8B{B֝^QYOFH/ZE/J. Š?瑅di +)y5kɹNPl \ҢITf1h->.]F/Wyc,c'j`-ʴ$-pEg@]-0i?[ dgarbչY- +pLxQ6qPZDuֆ-(Jh!Yi"Y c]qjϿ!I|HM= -V>1~ @ 7iN0N?^x21ّ'E0hgЂʛ]Yx$ڥ8h1YUYwJ VyͰtlI JgLU+[z87d،b̩kkܕ'ydtGe:+DQ`F#Z0nG؅;G +'Z̹گ›)8\R9 -|Y1b -p?&|FZD5ojh6 i1,~tj'G쫴Xf~WeޅcF²& 5H13]Z:~dk2V Cb,ELa nd[RlaM-XK"3WN닲{_zdayecE{3?F {8dI<οƦMz# RGԟͥ_͗\nV#N,e݉^pS%On|c +$ \֝<;l.hOZhW] /쐴HF%i!ZbQxvˆ75585iZn:; mh~D.7R=~DLnC] -p:T5|O lm>FOƋ%UmQǏԿ+疻{i;!>\;;//-l%ʖF,طPWnN=ZvڎqƝ\`79'"-CWm4wm6`aY>[XJ_\}[9Wmh|Ԧ񇾅wHp?1T7:ׇZQ>Y(Ңb5[7A Eȥ!~xo^kO{??,‰ZhbiӜh;^6ۉibۇp[p<9e/%  W!d|d#iMr| e"-yw-PƔq3 ה S{*?U~jwvE1_(TS- .F"]cBD +k<450OkGqTԪ1&>cm|cE;?#j<;;?L$^3Y +IJhbn36-dl5[6}.?xw@x|&y3w(?ǿWm)\)iUzF&)RHj~'m>H2r&gy\./_˭O|SaJOLV^Vf)s*e{rV\rITFդV5KV 5S"vݑa$IATRR(VP,.UU \AD`5H=iOG(]j2"FUvF5S+?BdP@&30p/b*# FHH1LawEc$ԃQn1U1EBד!\ +'g>$#3sQh"t0F u +qB:EXN?#:b_< (n\B=Xz (:=EO5etݾoE^H{aV(֭]o஢u`] ,{ulcUu֎{f70*WHr7,ؘRd(q\Ré9h}iCI}~>e_2-%>xbY~uiϽͶ+c=1Y6ɦ'd/{ը0ӅOWqy)#aa4eW +H_YvVBQUt}(ytokNQǴ+уprTBGUb3'B]ki=z(dx75so>7b]p1uU˲ +S֋eLH<Ta ~J B~-D[t;{<3㈸>_ueA~C^IbuYhޢ6kՉUޚmP~EG#|Y}Ɩ3c1>3|@JTq|հhB}dw֮ݬn@՗O7~0/o?xh>0M:KղIlcX+7+;ߠ5}2ܮ%L Θ&Sf6D"ohfے=G͍Q~FCap/#ߕ)s}I?aǾ#uʇ{?-XP! w@?C' !@>[yx /Bf^5XUP K1Z -h?@+f`;`7p 3p.:CBYgD4MHDv 9N>!g^"W NJxS3O`LSi:B3ѱ3hJ;y?Хt]EY~\0=J?g"Lѯ NoN`11CY8晑,b}X,cϒؓ?{ +ie3;HE`TȒ( %ŨĘ^J 2]DM>.S)&WKX𠅌UNx~yJ'!{Q]H1>4~b$TeJ降3b#.SpaW4 + {uA]+hRKA/̑fIAb:s dIB(qܿR `Sdت}4)sj]TkfT48|?p8yI}},I񤄳RMt85?QrA9vwbUP{H?{,uI'gM.Bjմv)F)Z5<ߙҼ7ՆkӦq`%^8X8->+n~z?\u2:D0H9>=gb--ǷmZ\. +;R|Λs9<+./8XޮVzcGm lAt,)O<]I +A%tI6Z\葚:Ԙp+SC^,>h |!pKnJ9]\0NZP5?ӑB.@@GE3` r>ɖs_X /,ź^;$s_H'.>8?'ir_si5>5./cs6+@ą37(8s4d,*vGx֋n2EjKPIykZjS0fh"A ]KEH@4cu=~8=I;aѦ 5‰o1VͰ$ Z TEvzt櫭GgOs%˨Çii%1HԆĶ c F`zOnܤ*qBJ2Od"`/qo (`bK%1]$syٙhV.9,#Rזaq5PAKO>f-(e=F6ȱ՗ɱ13u;W6^T] GG|z*w):lOeͳ8ޘZ.HV@X$}4]! KM JM ,a02-sLt]nMjkT)peɤձ9̪Q86v{zUE2W w7gF4ƞ~J@ӟ^GPŸoՒ]?:S"WRdI < YR@@>_]C'x?Nlo&tD*~e5*x ^/߃߁myk+Cs4s_B%JjlМ| +lOP ȍ`xc'cQ0huA4sB#S5U=[\TQ%`aG}d~FKH6V{RDGOC9ZFGnL ȉZ[)ZXރ:n#.whXD{B#vF&&2[>Ms#4haע5,*)u%k. +G[4ֽS,S>{Z'%nK0<_[`ɣzbU^:a#B#UԢYR31޸&kfPShdGXy#V?[4uiX4MhdJEp8NSDp +Xd $0| cR! +ƀ/`8t4/"# &0  y {0 GF-(0 GϱN#gCϒ/bzs3xˤ~0H&Of䁠wwr]@g+ugȑ{T[{Soѣhu,貇/Ԃv-hj(U&Q;dPRe O'6[_~GCHM~t -+XNyJ^,qءېSv;k9i}+4ōܜL,Z^A,{I`NZ޾z.IzÚg98p<qĉ8$Ya8UKowCh'-8G/b֛s"8_?'ٲQڅMf$dR(iDS[s;t)GOVRw}ղQcuwz^!WdRAiSvjTQ&B+#]nw{wd4H`WY2<ڭH0X՞?_ +S,[-){2n^D"Lk8h˩WV&Qi7󽲂dšc,a,O̴ |E?ߠ(39<=:,/_/X0\Sc4mM]BH6(X|ryxM2?yMz5* +endstream +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 67 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 0 778 722 278 0 722 0 833 722 778 +667 0 722 667 611 0 0 944 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 68 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 69 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 278 371 0 0 0 0 0 333 333 389 0 250 333 250 606 +500 500 500 500 500 0 500 500 500 500 250 250 0 606 0 0 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 0 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 606 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 70 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 0 0 0 0 600 0 600 600 0 0 600 0 600 0 +0 0 0 0 0 0 0 0 0 0 600 0 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 600 0 0 0 0 600 0 0 600 0 600 600 +0 0 0 0 600 600 0 0 600 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 71 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 33 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 600 0 0 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 +600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 +0 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 72 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 151 +/Widths [600 600 0 0 600 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 +600 600 600 600 0 600 600 600 600 600 600 0 600 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 73 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 722 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 74 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 75 0 R +>> +endobj +63 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBLCBG+Symbol +/Encoding /Identity-H +/DescendantFonts [ 78 0 R ] +/ToUnicode 79 0 R +>> +endobj +78 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBLCBG+Symbol +/FontDescriptor 76 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +79 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPn0 [dld `xI} v+)}$Nс$x᎔!A~7-FYl88Lܺ5Q.SıCU yI)/]W'[dGCOB9_"(k y~CC% k_lA4 TJU$ivYT-g^izj$[pZq`j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +64 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 66 0 R +/Contents 65 0 R +>> +endobj +80 0 obj +<< +/S /D +>> +endobj +81 0 obj +<< +/Nums [0 80 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 18 0 R 21 0 R 24 0 R 27 0 R 30 0 R 33 0 R 36 0 R 39 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [42 0 R 47 0 R 50 0 R 53 0 R 56 0 R 60 0 R 64 0 R] +/Count 7 +/Parent 45 0 R +>> +endobj +45 0 obj +<< +/Type /Pages +/Kids [13 0 R 46 0 R ] +/Count 17 +/MediaBox [0 0 612 792] +>> +endobj +82 0 obj +<< +/CreationDate (D:20210202102706-06'00') +/ModDate (D:20210202102706-06'00') +/Producer (Apple pstopdf) +>> +endobj +83 0 obj +<< +/Type /Catalog +/Pages 45 0 R +/PageLabels 81 0 R +>> +endobj +xref +0 84 +0000000000 65535 f +0000129679 00000 n +0000000016 00000 n +0000005914 00000 n +0000125454 00000 n +0000125665 00000 n +0000126101 00000 n +0000126407 00000 n +0000126973 00000 n +0000127454 00000 n +0000127789 00000 n +0000128230 00000 n +0000103213 00000 n +0000131172 00000 n +0000129760 00000 n +0000006093 00000 n +0000011609 00000 n +0000128632 00000 n +0000129844 00000 n +0000011791 00000 n +0000016362 00000 n +0000129928 00000 n +0000016518 00000 n +0000023706 00000 n +0000130012 00000 n +0000023875 00000 n +0000030356 00000 n +0000130096 00000 n +0000030536 00000 n +0000036450 00000 n +0000130180 00000 n +0000036643 00000 n +0000042402 00000 n +0000130264 00000 n +0000042582 00000 n +0000050700 00000 n +0000130348 00000 n +0000050882 00000 n +0000056638 00000 n +0000130432 00000 n +0000056818 00000 n +0000062745 00000 n +0000130516 00000 n +0000062925 00000 n +0000067564 00000 n +0000131425 00000 n +0000131309 00000 n +0000130600 00000 n +0000067744 00000 n +0000074696 00000 n +0000130684 00000 n +0000074878 00000 n +0000080993 00000 n +0000130768 00000 n +0000081173 00000 n +0000085415 00000 n +0000130852 00000 n +0000085582 00000 n +0000089404 00000 n +0000098285 00000 n +0000130936 00000 n +0000089606 00000 n +0000094533 00000 n +0000129042 00000 n +0000131020 00000 n +0000094713 00000 n +0000098103 00000 n +0000103354 00000 n +0000103551 00000 n +0000103757 00000 n +0000103952 00000 n +0000104152 00000 n +0000104343 00000 n +0000104545 00000 n +0000104746 00000 n +0000104949 00000 n +0000105154 00000 n +0000105344 00000 n +0000129185 00000 n +0000129388 00000 n +0000131104 00000 n +0000131132 00000 n +0000131517 00000 n +0000131640 00000 n +trailer +<< +/Size 84 +/Root 83 0 R +/Info 82 0 R +/ID [] +>> +startxref +131710 +%%EOF diff --git a/docs/medley-irm/23-PROCESSES.TEDIT b/docs/medley-irm/23-PROCESSES.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..2a3c83e2ea7a862117fd4603feab5b394171d1b2 GIT binary patch literal 64295 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 RKo5xg&;Qkj&i>+W{{L?>)S>_Y literal 0 HcmV?d00001 diff --git a/docs/medley-irm/23-PROCESSES.pdf b/docs/medley-irm/23-PROCESSES.pdf new file mode 100644 index 00000000..bfa11f89 --- /dev/null +++ b/docs/medley-irm/23-PROCESSES.pdf @@ -0,0 +1,5570 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 3469 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-1)Tj +/TT4 1 Tf +18 0 0 18 54 543.97 Tm +[(23. )-54.1(PROCESSES)]TJ +ET +0 G +0 J 0 j 6 w 10 M []0 d +1 i +54.01 535.2 m +534.01 535.2 l +S +BT +/TT6 1 Tf +10 0 0 10 533.9999 532.2 Tm +( )Tj +/F1 1 Tf +-40.8 -3.994 TD +(The Interlisp-D Process mechanism provides an environment in which multiple Lisp)Tj +0 -1.2 TD +(processes can run in parallel. Each executes in its own stack space, but all share a)Tj +T* +(global address space. The current process implementation is cooperative; i.e., process)Tj +T* +(switches happen voluntarily, either when the process in control has nothing to do or)Tj +T* +(when it is in a convenient place to pause. There is no preemption or guaranteed service,)Tj +T* +(so you cannot run something demanding \(e.g., Chat\) at the same time as something)Tj +T* +(that runs for long periods without yielding control. Keyboard input and network)Tj +T* +(operations block with great frequency, so processes currently work best for highly)Tj +T* +(interactive tasks \(editing, making remote files\).)Tj +0 -1.9 TD +(In Interlisp-D, the process mechanism is already turned on, and is expected to stay on)Tj +0 -1.2 TD +(during normal operations, as some system facilities \(in particular, most network)Tj +T* +(operations\) require it. However, under exceptional conditions, the following function)Tj +T* +(can be used to turn the world off and on:)Tj +/TT8 1 Tf +0 -2.2 TD +(\(PROCESSWORLD)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(FLG)Tj +/TT8 1 Tf +2.112 0 TD +(\) )Tj +/F1 1 Tf +25.796 0 TD +([Function])Tj +-32.386 -1.823 TD +(Starts up the process world, or if )Tj +/F2 1 Tf +15.371 0 TD +(FLG)Tj +/F1 1 Tf +2.112 0 TD +( = )Tj +/TT8 1 Tf +1.162 0 TD +(OFF)Tj +/F1 1 Tf +1.8003 0 TD +(, kills all processes and turns it off.)Tj +-20.4453 -1.323 TD +(Normally does not return. The environment starts out with two processes: a)Tj +0 -1.2 TD +(top-level )Tj +/TT8 1 Tf +4.241 0 TD +(EVALQT)Tj +/F1 1 Tf +3.6006 0 TD +( \(the initial "tty" process\) and the "background" process, which)Tj +-7.8416 -1.323 TD +(runs the window mouse handler and other system background tasks.)Tj +/TT8 1 Tf +0 -1.9 TD +(PROCESSWORLD)Tj +/F1 1 Tf +7.2012 0 TD +( is intended to be called at the top level of Interlisp, not from)Tj +-7.2012 -1.323 TD +(within a program. It does not toggle some sort of switch; rather, it constructs)Tj +0 -1.2 TD +(some new processes in a new part of the stack, leaving any callers of)Tj +/TT8 1 Tf +T* +(PROCESSWORLD)Tj +/F1 1 Tf +7.2012 0 TD +( in a now inaccessible part of the stack. Calling)Tj +/TT8 1 Tf +-7.2012 -1.323 TD +(\(PROCESSWORLD OFF\))Tj +/F1 1 Tf +11.4019 0 TD +( is the only way the call to )Tj +/TT8 1 Tf +12.355 0 TD +(PROCESSWORLD)Tj +/F1 1 Tf +7.2012 0 TD +( ever)Tj +-30.958 -1.323 TD +(returns.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +-0.0001 Tc +(\(HARDRESET\) )Tj +/TT6 1 Tf +7.2002 0 TD +0 Tc +( )Tj +/F1 1 Tf +28.7858 0 TD +([Function])Tj +-32.386 -1.823 TD +(Resets the whole world, and rebuilds the stack from scratch. This is "harder")Tj +0 -1.2 TD +(than doing )Tj +/TT8 1 Tf +5.26 0 TD +(RESET)Tj +/F1 1 Tf +3.0005 0 TD +( to every process, because it also resets system internal)Tj +-8.2605 -1.323 TD +(processes \(such as the keyboard handler\).)Tj +/TT8 1 Tf +0 -1.9 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +( automatically turns the process world on \(or resets it if it was on\),)Tj +-5.4009 -1.323 TD +(unless the variable )Tj +/TT8 1 Tf +9.076 0 TD +(AUTOPROCESSFLG)Tj +/F1 1 Tf +8.4014 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 4452 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-2)Tj +/TT4 1 Tf +14 0 0 14 102 565.08 Tm +(Creating and Destroying Processes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 561.49 m +582.01 561.49 l +S +BT +/TT8 1 Tf +10 0 0 10 174 543.2 Tm +(\(ADD.PROCESS)Tj +/F1 1 Tf +7.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(FORM PROP)Tj +6.261 -0.3 TD +(1)Tj +0.556 0.3 TD +( VALUE)Tj +3.89 -0.3 TD +(1)Tj +0.556 0.3 TD +( ... PROP)Tj +4.243 -0.3 TD +(N)Tj +0.815 0.3 TD +( VALUE)Tj +3.89 -0.3 TD +(N)Tj +/TT8 1 Tf +0.815 0.3 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +1.4108 0 TD +([NoSpread Function])Tj +-27.515 -2 TD +(Creates a new process evaluating )Tj +/F2 1 Tf +15.724 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +(, and returns its process handle. The)Tj +-18.854 -1.2 TD +(processs stack environment is the top level, i.e., the new process does not have)Tj +T* +(access to the environment in which )Tj +/TT8 1 Tf +16.519 0 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( was called; all such)Tj +-23.1201 -1.323 TD +(information must be passed as arguments in )Tj +/F2 1 Tf +20.892 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +(. The process runs until)Tj +/F2 1 Tf +-24.022 -1.2 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( returns or the process is explicitly deleted. An untrapped error within)Tj +-3.13 -1.2 TD +(the process also deletes the process \(unless its )Tj +/TT8 1 Tf +21.538 0 TD +(RESTARTABLE)Tj +/F1 1 Tf +6.6011 0 TD +( property is )Tj +/TT8 1 Tf +5.574 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(\), in)Tj +-34.3132 -1.323 TD +(which case a message is printed to that effect.)Tj +0 -1.9 TD +(The remaining arguments are alternately property names and values. Any)Tj +0 -1.2 TD +(property/value pairs acceptable to )Tj +/TT8 1 Tf +15.946 0 TD +(PROCESSPROP)Tj +/F1 1 Tf +6.6011 0 TD +( may be given, but the)Tj +-22.5471 -1.323 TD +(following two are directly relevant to )Tj +/TT8 1 Tf +17.298 0 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(:)Tj +/TT8 1 Tf +-20.8991 -2.023 TD +(NAME)Tj +/F1 1 Tf +4.2 0 TD +(Value should be a litatom; if not given, the process name is)Tj +0 -1.323 TD +(taken from )Tj +/TT8 1 Tf +5.371 0 TD +(\(CAR)Tj +/F3 1 Tf +2.4004 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FORM)Tj +/TT8 1 Tf +3.13 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(. )Tj +/TT8 1 Tf +0.834 0 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( may pack the name)Tj +-19.2236 -1.323 TD +(with a number to make it unique. This name is solely for the)Tj +0 -1.2 TD +(convenience of manipulating processes at Lisp typein; e.g., the)Tj +T* +(name can be given as the )Tj +/F2 1 Tf +11.91 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( argument to most process)Tj +-14.818 -1.2 TD +(functions, and the name appears in menus of processes.)Tj +T* +(However, programs should normally only deal in process)Tj +T* +(handles, both for efficiency and to avoid the confusion that can)Tj +T* +(result if two processes have the same defining form.)Tj +/TT8 1 Tf +-6 -1.9 TD +(SUSPEND)Tj +/F1 1 Tf +6 0 TD +(If the value is non-)Tj +/TT8 1 Tf +8.704 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, the new process is created but then)Tj +-10.5043 -1.323 TD +(immediately suspended; i.e., the process does not actually run)Tj +0 -1.2 TD +(until woken by a )Tj +/TT8 1 Tf +7.984 0 TD +(WAKE.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +( \(below\).)Tj +/TT8 1 Tf +-25.9852 -2.329 TD +(\(PROCESSPROP)Tj +/F1 1 Tf +7.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC PROP NEWVALUE)Tj +/TT8 1 Tf +12.392 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +10.0448 0 TD +([NoSpread Function])Tj +-27.515 -1.823 TD +(Used to get or set the values of certain properties of process )Tj +/F2 1 Tf +27.797 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(, in a manner)Tj +-30.705 -1.2 TD +(analogous to )Tj +/TT8 1 Tf +6.094 0 TD +(WINDOWPROP)Tj +/F1 1 Tf +6.001 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(NEWVALUE)Tj +/F1 1 Tf +6.075 0 TD +( is supplied \(including if it is )Tj +/TT8 1 Tf +13.446 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(\),)Tj +-35.2683 -1.323 TD +(property )Tj +/F2 1 Tf +4.24 0 TD +(PROP)Tj +/F1 1 Tf +2.853 0 TD +( is given that value. In all cases, returns the old value of the)Tj +-7.093 -1.2 TD +(property. The following properties have special meaning for processes; all)Tj +T* +(others are uninterpreted:)Tj +/TT8 1 Tf +5.4 -1.9 TD +(NAME)Tj +/F1 1 Tf +4.2 0 TD +(Value is a litatom used for identifying the process to the)Tj +0 -1.323 TD +(user.)Tj +/TT8 1 Tf +-4.2 -1.9 TD +(FORM)Tj +/F1 1 Tf +4.2 0 TD +(Value is the Lisp form used to start the process \(readonly\).)Tj +/TT8 1 Tf +-8.4 -2.023 TD +(RESTARTABLE)Tj +/F1 1 Tf +8.4 0 TD +(Value is a flag indicating the disposition of the process)Tj +0 -1.323 TD +(following errors or hard resets:)Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +17 0 obj +<< +/Length 3938 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-3)Tj +/TT8 1 Tf +10 0 0 10 258 568.26 Tm +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(NO)Tj +/F1 1 Tf +1.2002 0 TD +( \(the default\): If an untrapped error \(or Control-E)Tj +-4.5005 -1.323 TD +(or Control-D\) causes its form to be exited, the process is)Tj +0 -1.2 TD +(deleted. The process is also deleted if a )Tj +/TT8 1 Tf +18.466 0 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +( \(or)Tj +-23.8669 -1.323 TD +(Control-D from )Tj +/TT8 1 Tf +7.314 0 TD +(RAID)Tj +/F1 1 Tf +2.4004 0 TD +(\) occurs, causing the entire Process)Tj +-9.7144 -1.323 TD +(world to be reinitialized.)Tj +/TT8 1 Tf +0 -1.9 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(YES)Tj +/F1 1 Tf +1.8003 0 TD +(: The process is automatically restarted on errors)Tj +-3.9004 -1.323 TD +(or )Tj +/TT8 1 Tf +1.222 0 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +(. This is the normal setting for persistent)Tj +-6.6229 -1.323 TD +("background" processes, such as the mouse process, that)Tj +0 -1.2 TD +(can safely restart themselves on errors.)Tj +/TT8 1 Tf +0 -1.9 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +(: The process is deleted as usual if an error)Tj +-5.4009 -1.323 TD +(causes its form to be exited, but it )Tj +/F2 1 Tf +15.892 0 TD +(is)Tj +/F1 1 Tf +0.777 0 TD +( restarted on a)Tj +/TT8 1 Tf +-16.669 -1.2 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +(. This setting is preferred for persistent)Tj +-5.4009 -1.323 TD +(processes for which an error is an unusual condition, one)Tj +0 -1.2 TD +(that might repeat itself if the process were simply blindly)Tj +T* +(restarted.)Tj +/TT8 1 Tf +-8.4 -1.9 TD +(RESTARTFORM)Tj +/F1 1 Tf +8.4 0 TD +(If the value is non)Tj +/F3 1 Tf +8.371 0 TD +(-)Tj +/TT8 1 Tf +0.333 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, it is the form used if the process is)Tj +-10.5043 -1.323 TD +(restarted \(instead of the value of the )Tj +/TT8 1 Tf +17.131 0 TD +(FORM)Tj +/F1 1 Tf +2.4004 0 TD +( property\). Of)Tj +-19.5314 -1.323 TD +(course, the process must also have a non-)Tj +/TT8 1 Tf +19.075 0 TD +(NIL)Tj +-19.075 -1.323 TD +(RESTARTABLE)Tj +/F1 1 Tf +6.6011 0 TD +( prop for this to have any effect.)Tj +/TT8 1 Tf +-14.4011 -2.023 TD +(BEFOREEXIT)Tj +/F1 1 Tf +7.8 0 TD +(If the value is the atom )Tj +/TT8 1 Tf +11.039 0 TD +(DONT)Tj +/F1 1 Tf +3.0005 0 TD +(, it will not be interrupted by)Tj +-14.0395 -1.323 TD +(a )Tj +/TT8 1 Tf +0.834 0 TD +(LOGOUT)Tj +/F1 1 Tf +3.6006 0 TD +(. If )Tj +/TT8 1 Tf +1.852 0 TD +(LOGOUT)Tj +/F1 1 Tf +3.6006 0 TD +( is attempted before the process)Tj +-9.8872 -1.323 TD +(finishes, a message will appear saying that Interlisp is)Tj +0 -1.2 TD +(waiting for the process to finish. If you want the )Tj +/TT8 1 Tf +22.761 0 TD +(LOGOUT)Tj +/F1 1 Tf +3.6006 0 TD +( to)Tj +-26.3616 -1.323 TD +(proceed without waiting, you must use the process status)Tj +0 -1.2 TD +(window \(from the background menu\) to delete the process.)Tj +/TT8 1 Tf +-7.2 -1.9 TD +(AFTEREXIT)Tj +/F1 1 Tf +7.2 0 TD +(Value indicates the disposition of the process following a)Tj +0 -1.323 TD +(resumption of Lisp after some exit \()Tj +/TT8 1 Tf +16.464 0 TD +(LOGOUT)Tj +/F1 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(SYSOUT)Tj +/F1 1 Tf +3.6006 0 TD +(,)Tj +/TT8 1 Tf +-24.2212 -1.323 TD +(MAKESYS)Tj +/F1 1 Tf +4.2007 0 TD +(\). Possible values are:)Tj +/TT8 1 Tf +-4.2007 -2.023 TD +(DELETE)Tj +/F1 1 Tf +3.6006 0 TD +(: Delete the process.)Tj +/TT8 1 Tf +-3.6006 -2.023 TD +(SUSPEND)Tj +/F1 1 Tf +4.2007 0 TD +(: Suspend the process; i.e., do not let it run until)Tj +-4.2007 -1.323 TD +(it is explicitly woken.)Tj +0 -1.9 TD +(An event: Cause the process to be suspended waiting for)Tj +0 -1.2 TD +(the event \(See the Events section below\).)Tj +/TT8 1 Tf +-6.6 -1.9 TD +(INFOHOOK)Tj +/F1 1 Tf +6.6 0 TD +(Value is a function or form used to provide information)Tj +0 -1.323 TD +(about the process, in conjunction with the )Tj +/TT8 1 Tf +19.575 0 TD +(INFO)Tj +/F1 1 Tf +2.4004 0 TD +( command)Tj +-21.9754 -1.323 TD +(in the process status window \(see the Process Status)Tj +0 -1.2 TD +(Window section below\).)Tj +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +20 0 obj +<< +/Length 4601 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-4)Tj +/TT8 1 Tf +10 0 0 10 252 568.26 Tm +(WINDOW)Tj +/F1 1 Tf +5.4 0 TD +(Value is a window associated with the process, the)Tj +0 -1.323 TD +(processs "main" window. Used to switch the tty process to)Tj +0 -1.2 TD +(this process when you click in this window \(see the)Tj +T* +(Switching the TTY Process section below\).)Tj +0 -1.9 TD +(Setting the )Tj +/TT8 1 Tf +5.427 0 TD +(WINDOW)Tj +/F1 1 Tf +3.6006 0 TD +( property does not set the primary I/O)Tj +-9.0276 -1.323 TD +(stream \()Tj +/TT8 1 Tf +3.852 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(\) or the terminal I/O stream \()Tj +/TT8 1 Tf +13.501 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(\) to the window.)Tj +-19.7534 -1.323 TD +(When a process is created, I/O operations to the )Tj +/TT8 1 Tf +22.316 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(T)Tj +/F1 1 Tf +-25.6163 -1.323 TD +(stream will cause a new window to appear.)Tj +/TT8 1 Tf +0 -1.2 TD +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +9.6016 0 TD +( \(see Chapter 28\) should be used to set)Tj +-9.6016 -1.323 TD +(the terminal i/o stream of a process to a specific window.)Tj +/TT8 1 Tf +-7.8 -1.9 TD +(TTYENTRYFN)Tj +/F1 1 Tf +7.8 0 TD +(Value is a function that is applied to the process when the)Tj +0 -1.323 TD +(process is made the tty process \(see the Switching the TTY)Tj +0 -1.2 TD +(Process section below\).)Tj +/TT8 1 Tf +-7.2 -1.9 TD +(TTYEXITFN)Tj +/F1 1 Tf +7.2 0 TD +(Value is a function that is applied to the process when the)Tj +0 -1.323 TD +(process ceases to be the tty process \(see the Switching the)Tj +0 -1.2 TD +(TTY Process section below\).)Tj +/TT8 1 Tf +-13.2 -2.206 TD +-0.0001 Tc +(\(THIS.PROCESS\))Tj +/TT6 1 Tf +8.4001 0 TD +0 Tc +( )Tj +/F1 1 Tf +27.5859 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns the handle of the currently running process, or )Tj +/TT8 1 Tf +25.887 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( if the Process world)Tj +-27.6873 -1.323 TD +(is turned off.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(DEL.PROCESS)Tj +/F1 1 Tf +7.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC )Tj +/TT8 1 Tf +4.186 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +23.1218 0 TD +([Function])Tj +-32.386 -1.823 TD +(Deletes process )Tj +/F2 1 Tf +7.389 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(. )Tj +/F2 1 Tf +0.834 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( may be a process handle \(returned by)Tj +/TT8 1 Tf +-14.039 -1.2 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(\), or its name. If )Tj +/F2 1 Tf +7.964 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is the currently running process,)Tj +/TT8 1 Tf +-17.4731 -1.323 TD +(DEL.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( does not return!)Tj +/TT8 1 Tf +-10.2011 -2.329 TD +(\(PROCESS.RETURN)Tj +/F1 1 Tf +9 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(VALUE)Tj +/TT8 1 Tf +3.612 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +21.8958 0 TD +([Function])Tj +-32.386 -1.823 TD +(Terminates the currently running process, causing it to "return" )Tj +/F2 1 Tf +29.944 0 TD +(VALUE)Tj +/F1 1 Tf +3.612 0 TD +(. There)Tj +-33.556 -1.2 TD +(is an implicit )Tj +/TT8 1 Tf +6.335 0 TD +(PROCESS.RETURN)Tj +/F1 1 Tf +8.4014 0 TD +( around the )Tj +/F2 1 Tf +5.63 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( argument given to)Tj +/TT8 1 Tf +-23.4964 -1.323 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(, so that normally a process can finish by simply returning;)Tj +/TT8 1 Tf +-6.6011 -1.323 TD +(PROCESS.RETURN)Tj +/F1 1 Tf +8.4014 0 TD +( is supplied for earlier termination.)Tj +/TT8 1 Tf +-12.0014 -2.329 TD +(\(PROCESS.RESULT)Tj +/F1 1 Tf +9 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROCESS WAITFORRESULT)Tj +/TT8 1 Tf +14.447 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +11.0608 0 TD +([Function])Tj +-32.386 -1.823 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( has terminated, returns the value, if any, that it returned. This is)Tj +-5.982 -1.2 TD +(either the value of a )Tj +/TT8 1 Tf +9.557 0 TD +(PROCESS.RETURN)Tj +/F1 1 Tf +8.4014 0 TD +( or the value returned from the form)Tj +-17.9584 -1.323 TD +(given to )Tj +/TT8 1 Tf +3.945 0 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(. If the process was aborted, the value is )Tj +/TT8 1 Tf +19.077 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(. If)Tj +/F2 1 Tf +-31.4234 -1.323 TD +(WAITFORRESULT)Tj +/F1 1 Tf +9.205 0 TD +( is true, )Tj +/TT8 1 Tf +3.834 0 TD +(PROCESS.RESULT)Tj +/F1 1 Tf +8.4014 0 TD +( blocks until )Tj +/F2 1 Tf +5.946 0 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( finishes,)Tj +-32.3504 -1.323 TD +(if necessary; otherwise, it returns )Tj +/TT8 1 Tf +15.778 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( immediately if )Tj +/F2 1 Tf +7.261 0 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( is still)Tj +-29.8033 -1.323 TD +(running. )Tj +/F2 1 Tf +4.574 0 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( must be the actual process handle returned from)Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +23 0 obj +<< +/Length 4611 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-5)Tj +/TT8 1 Tf +10 0 0 10 162 568.26 Tm +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(, not a process name, as the association between handle and name)Tj +-6.6011 -1.323 TD +(disappears when the process finishes \(and the process handle itself is then)Tj +0 -1.2 TD +(garbage collected if no one else has a pointer to it\).)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(PROCESS.FINISHEDP)Tj +/F1 1 Tf +10.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROCESS)Tj +/TT8 1 Tf +4.964 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +18.7438 0 TD +([Function])Tj +-32.386 -1.823 TD +(True if )Tj +/F2 1 Tf +3.426 0 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( has terminated. The value returned is an indication of how it)Tj +-8.39 -1.2 TD +(finished: )Tj +/TT8 1 Tf +4.278 0 TD +(NORMAL)Tj +/F1 1 Tf +3.6006 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(ERROR)Tj +/F1 1 Tf +3.0005 0 TD +(.)Tj +/TT8 1 Tf +-15.9791 -2.329 TD +(\(PROCESSP)Tj +/F1 1 Tf +5.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +26.1998 0 TD +([Function])Tj +-32.386 -1.823 TD +(True if )Tj +/F2 1 Tf +3.426 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is the handle of an active process, i.e., one that has not yet)Tj +-6.334 -1.2 TD +(finished.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(RELPROCESSP)Tj +/F1 1 Tf +7.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROCHANDLE)Tj +/TT8 1 Tf +7.427 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +20.4809 0 TD +([Function])Tj +-32.386 -1.823 TD +(True if )Tj +/F2 1 Tf +3.426 0 TD +(PROCHANDLE)Tj +/F1 1 Tf +7.427 0 TD +( is the handle of a deleted process. This is analogous to)Tj +/TT8 1 Tf +-10.853 -1.2 TD +(RELSTKP)Tj +/F1 1 Tf +4.2007 0 TD +(. It differs from )Tj +/TT8 1 Tf +7.592 0 TD +(PROCESS.FINISHEDP)Tj +/F1 1 Tf +10.2017 0 TD +( in that it never causes an error,)Tj +-21.9943 -1.323 TD +(while )Tj +/TT8 1 Tf +2.797 0 TD +(PROCESS.FINISHEDP)Tj +/F1 1 Tf +10.2017 0 TD +( can cause an error if its )Tj +/F2 1 Tf +11.445 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( argument is not a)Tj +-27.3517 -1.323 TD +(process at all.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(RESTART.PROCESS)Tj +/F1 1 Tf +9.6 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +21.9998 0 TD +([Function])Tj +-32.386 -1.823 TD +(Unwinds )Tj +/F2 1 Tf +4.445 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( to its top level and reevaluates its form. This is effectively a)Tj +/TT8 1 Tf +-7.353 -1.2 TD +(DEL.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( followed by the original )Tj +/TT8 1 Tf +11.391 0 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(.)Tj +/TT8 1 Tf +-28.1931 -2.329 TD +(\(MAP.PROCESSES)Tj +/F1 1 Tf +8.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(MAPFN)Tj +/TT8 1 Tf +3.797 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +22.9109 0 TD +([Function])Tj +-32.386 -1.823 TD +(Maps over all processes, calling )Tj +/F2 1 Tf +14.816 0 TD +(MAPFN)Tj +/F1 1 Tf +3.797 0 TD +( with three arguments: the process)Tj +-18.613 -1.2 TD +(handle, its name, and its form.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(FIND.PROCESS)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC ERRORFLG)Tj +/TT8 1 Tf +9.021 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +17.6868 0 TD +([Function])Tj +-32.386 -1.823 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is a process handle or the name of a process, returns the process)Tj +-3.926 -1.2 TD +(handle for it, else )Tj +/TT8 1 Tf +8.316 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(ERRORFLG)Tj +/F1 1 Tf +5.835 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, generates an error if )Tj +/F2 1 Tf +10.315 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is not,)Tj +-32.9604 -1.323 TD +(and does not name, a live process.)Tj +/TT4 1 Tf +14 0 0 14 54 141.96 Tm +(Process Control Constructs)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 138.37 m +534.01 138.37 l +S +BT +/TT8 1 Tf +10 0 0 10 126 120.08 Tm +(\(BLOCK)Tj +/F1 1 Tf +3.6 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(MSECSWAIT TIMER)Tj +/TT8 1 Tf +10.221 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +20.6868 0 TD +([Function])Tj +-32.386 -1.823 TD +(Yields control to the next waiting process, assuming any is ready to run. If)Tj +/F2 1 Tf +0 -1.2 TD +(MSECSWAIT)Tj +/F1 1 Tf +6.444 0 TD +( is specified, it is a number of milliseconds to wait before)Tj +-6.444 -1.2 TD +(returning, or )Tj +/TT8 1 Tf +6.24 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, meaning wait forever \(until explicitly woken\). Alternatively,)Tj +/F2 1 Tf +-6.8401 -1.323 TD +(TIMER)Tj +/F1 1 Tf +3.499 0 TD +( can be given as a millisecond timer \(as returned by )Tj +/TT8 1 Tf +24.096 0 TD +(SETUPTIMER)Tj +/F1 1 Tf +6.001 0 TD +(,)Tj +-33.596 -1.323 TD +(Chapter 12\) of an absolute time at which to wake up. In any of those cases, the)Tj +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +26 0 obj +<< +/Length 5191 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-6)Tj +/F1 1 Tf +10 0 0 10 210 568.26 Tm +(process enters the )Tj +/F2 1 Tf +8.629 0 TD +(waiting)Tj +/F1 1 Tf +3.518 0 TD +( state until the time limit is up. )Tj +/TT8 1 Tf +15.097 0 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +( with no)Tj +-30.2445 -1.323 TD +(arguments leaves the process in the )Tj +/F2 1 Tf +16.853 0 TD +(runnable)Tj +/F1 1 Tf +4.184 0 TD +( state, i.e., it returns as soon as)Tj +-21.037 -1.2 TD +(every other runnable process of the same priority has had a chance.)Tj +/TT8 1 Tf +0 -1.9 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +( can be aborted by interrupts such as Control-D, Control-E, or Control-B.)Tj +/TT8 1 Tf +-3.0005 -1.323 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +( will return before its timeout is completed, if the process is woken by)Tj +/TT8 1 Tf +-3.0005 -1.323 TD +(WAKE.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +(, or )Tj +/TT8 1 Tf +1.778 0 TD +(PROCESS.APPLY)Tj +/F1 1 Tf +7.8013 0 TD +(.)Tj +/TT8 1 Tf +-28.1376 -2.329 TD +(\(DISMISS)Tj +/F1 1 Tf +4.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(MSECSWAIT TIMER NOBLOCK)Tj +/TT8 1 Tf +15.722 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +14.5859 0 TD +([Function])Tj +/TT8 1 Tf +-32.386 -1.823 TD +(DISMISS)Tj +/F1 1 Tf +4.2007 0 TD +( is used to dismiss the current process for a given period of time.)Tj +-4.2007 -1.323 TD +(Similar to )Tj +/TT8 1 Tf +4.909 0 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +(, except that:)Tj +-7.9095 -2.023 TD +()Tj +/TT8 1 Tf +1.2 0 TD +(DISMISS)Tj +/F1 1 Tf +4.2007 0 TD +( is guaranteed not to return until the specified time has elapsed )Tj +-5.4007 -2.023 TD +()Tj +/F2 1 Tf +1.2 0 TD +(MSECSWAIT)Tj +/F1 1 Tf +6.444 0 TD +( cannot be )Tj +/TT8 1 Tf +5.001 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +( to wait forever)Tj +-13.2451 -2.023 TD +[()-594(If )]TJ +/F2 1 Tf +2.218 0 TD +(NOBLOCK)Tj +/F1 1 Tf +5.223 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(DISMISS)Tj +/F1 1 Tf +4.2007 0 TD +( will not allow other processes to run, but will)Tj +-12.9318 -1.323 TD +(busy-wait until the amount of time given has elapsed.)Tj +/TT8 1 Tf +-4.8 -2.206 TD +(\(WAKE.PROCESS)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC STATUS)Tj +/TT8 1 Tf +7.409 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +19.8989 0 TD +([Function])Tj +-32.386 -1.823 TD +(Explicitly wakes process )Tj +/F2 1 Tf +11.575 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(, i.e., makes it )Tj +/F2 1 Tf +6.744 0 TD +(runnable)Tj +/F1 1 Tf +4.184 0 TD +(, and causes its call to)Tj +/TT8 1 Tf +-25.411 -1.2 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +( \(or other waiting function\) to return )Tj +/F2 1 Tf +17.203 0 TD +(STATUS)Tj +/F1 1 Tf +4.223 0 TD +(. This is one simple way to)Tj +-24.4265 -1.323 TD +(notify a process of some happening; however, note that if )Tj +/TT8 1 Tf +26.502 0 TD +(WAKE.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +( is)Tj +-33.7032 -1.323 TD +(applied to a process more than once before the process actually gets its turn to)Tj +0 -1.2 TD +(run, it sees only the latest )Tj +/F2 1 Tf +12.317 0 TD +(STATUS)Tj +/F1 1 Tf +4.223 0 TD +(.)Tj +/TT8 1 Tf +-20.14 -2.206 TD +(\(SUSPEND.PROCESS)Tj +/F1 1 Tf +9.6 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +22.5999 0 TD +([Function])Tj +-32.386 -1.823 TD +(Blocks process )Tj +/F2 1 Tf +6.981 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( indefinitely, i.e., )Tj +/F2 1 Tf +8.076 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( will not run until it is woken by a)Tj +/TT8 1 Tf +-20.873 -1.2 TD +(WAKE.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +(.)Tj +-10.8012 -2.323 TD +(The following three functions allow access to the stack context of some other process.)Tj +0 -1.2 TD +(They require a little bit of care, and are computationally non-trivial, but they do provide)Tj +T* +(a more powerful way of manipulating another process than )Tj +/TT8 1 Tf +27.595 0 TD +(WAKE.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +( allows.)Tj +/TT8 1 Tf +-34.7962 -2.329 TD +(\(PROCESS.EVALV)Tj +/F1 1 Tf +8.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC VAR)Tj +/TT8 1 Tf +5.335 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +20.7728 0 TD +([Function])Tj +-32.386 -1.823 TD +(Performs )Tj +/TT8 1 Tf +4.518 0 TD +(\(EVALV)Tj +/F3 1 Tf +3.6006 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(VAR)Tj +/TT8 1 Tf +2.149 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +( in the stack context of )Tj +/F2 1 Tf +10.742 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(.)Tj +/TT8 1 Tf +-28.4047 -2.329 TD +(\(PROCESS.EVAL)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC FORM WAITFORRESULT)Tj +/TT8 1 Tf +15.799 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +11.5089 0 TD +([Function])Tj +-32.386 -1.823 TD +(Evaluates )Tj +/F2 1 Tf +4.927 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( in the stack context of )Tj +/F2 1 Tf +10.742 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(WAITFORRESULT)Tj +/F1 1 Tf +9.205 0 TD +( is true,)Tj +-32.764 -1.2 TD +(blocks until the evaluation returns a result, else allows the current process to)Tj +T* +(run in parallel with the evaluation. Any errors that occur will be in the context)Tj +T* +(of )Tj +/F2 1 Tf +1.111 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(, so be careful. In particular, note that)Tj +/TT8 1 Tf +-0.419 -1.9 TD +(\(PROCESS.EVAL )Tj +/F2 1 Tf +8.4014 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +( \(NLSETQ \(FOO\)\)\))Tj +ET +endstream +endobj +27 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +29 0 obj +<< +/Length 4724 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-7)Tj +/F1 1 Tf +10 0 0 10 162 568.26 Tm +(and)Tj +/TT8 1 Tf +3.6 -1.9 TD +(\(NLSETQ \(PROCESS.EVAL )Tj +/F2 1 Tf +13.2021 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +( \(FOO\)\)\))Tj +/F1 1 Tf +-19.7101 -1.823 TD +(behave quite differently if )Tj +/TT8 1 Tf +12.242 0 TD +(FOO)Tj +/F1 1 Tf +1.8003 0 TD +( causes an error. And it is quite permissible to)Tj +-14.0423 -1.323 TD +(intentionally cause an error in proc by performing)Tj +/TT8 1 Tf +3.6 -1.9 TD +(\(PROCESS.EVAL )Tj +/F2 1 Tf +8.4014 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( )Tj +/TT8 1 Tf +0.278 0 TD +(\(ERROR!\)\))Tj +/F1 1 Tf +-15.1874 -1.823 TD +(If errors are possible and )Tj +/F2 1 Tf +11.852 0 TD +(WAITFORRESULT)Tj +/F1 1 Tf +9.205 0 TD +( is true, the caller should almost)Tj +-21.057 -1.2 TD +(certainly make sure that )Tj +/F2 1 Tf +11.724 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( traps the errors; otherwise the caller could end)Tj +-14.854 -1.2 TD +(up waiting forever if )Tj +/F2 1 Tf +9.704 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( unwinds back into the pre-existing stack context of)Tj +/F2 1 Tf +-12.834 -1.2 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(.)Tj +-2.908 -1.9 TD +(After )Tj +/F2 1 Tf +2.666 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +( is evaluated in )Tj +/F2 1 Tf +7.354 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(, the process )Tj +/F2 1 Tf +6 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is woken up, even if it)Tj +-24.966 -1.2 TD +(was running )Tj +/TT8 1 Tf +6.093 0 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(AWAIT.EVENT)Tj +/F1 1 Tf +6.6011 0 TD +(. This is necessary because an event of)Tj +-17.1946 -1.323 TD +(interest may have occurred while the process was evaluating )Tj +/F2 1 Tf +28.391 0 TD +(FORM)Tj +/F1 1 Tf +3.13 0 TD +(.)Tj +/TT8 1 Tf +-35.121 -2.206 TD +(\(PROCESS.APPLY)Tj +/F1 1 Tf +8.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC FN ARGS WAITFORRESULT)Tj +/TT8 1 Tf +17.319 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +9.3889 0 TD +([Function])Tj +-32.386 -1.823 TD +(Performs )Tj +/TT8 1 Tf +4.518 0 TD +(\(APPLY)Tj +/F3 1 Tf +3.6006 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FN)Tj +/F3 1 Tf +1.482 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(ARGS)Tj +/TT8 1 Tf +2.89 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +( in the stack context of )Tj +/F2 1 Tf +10.742 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +(. Note the same)Tj +-27.3147 -1.323 TD +(warnings as with )Tj +/TT8 1 Tf +8.261 0 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +(.)Tj +/TT4 1 Tf +14 0 0 14 54 300.41 Tm +(Events)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 296.82 m +534.01 296.82 l +S +BT +/F1 1 Tf +10 0 0 10 126 278.59 Tm +(An "event" is a synchronizing primitive used to coordinate related processes, typically)Tj +0 -1.2 TD +(producers and consumers. Consumer processes can "wait" on events, and producers)Tj +T* +("notify" events.)Tj +/TT8 1 Tf +0 -2.2 TD +-0.0001 Tc +(\(CREATE.EVENT )Tj +/F2 1 Tf +8.4001 0 TD +0 Tc +(NAME)Tj +/TT8 1 Tf +3.185 0 TD +(\) )Tj +/F1 1 Tf +24.4009 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns an instance of the )Tj +/TT8 1 Tf +12.519 0 TD +(EVENT)Tj +/F1 1 Tf +3.0005 0 TD +( datatype, to be used as the event argument to)Tj +-15.5195 -1.323 TD +(functions listed below. )Tj +/F2 1 Tf +10.872 0 TD +(NAME)Tj +/F1 1 Tf +3.185 0 TD +( is arbitrary, and is used for debugging or status)Tj +-14.057 -1.2 TD +(information.)Tj +/TT8 1 Tf +-3.6 -2.2 TD +-0.0001 Tc +(\(AWAIT.EVENT )Tj +/F2 1 Tf +7.8001 0 TD +0 Tc +(EVENT TIMEOUT TIMERP)Tj +/TT8 1 Tf +13.406 0 TD +(\) )Tj +/F1 1 Tf +14.7799 0 TD +([Function])Tj +-32.386 -1.823 TD +(Suspends the current process until )Tj +/F2 1 Tf +16.388 0 TD +(EVENT)Tj +/F1 1 Tf +3.648 0 TD +( is notified, or until a timeout occurs.)Tj +-20.036 -1.2 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(TIMEOUT)Tj +/F1 1 Tf +5.036 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, there is no timeout. Otherwise, timeout is either a number)Tj +-9.1883 -1.323 TD +(of milliseconds to wait, or, if )Tj +/F2 1 Tf +13.28 0 TD +(TIMERP)Tj +/F1 1 Tf +4.166 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, a millisecond timer set to expire at)Tj +-19.3801 -1.323 TD +(the desired time using )Tj +/TT8 1 Tf +10.612 0 TD +(SETUPTIMER)Tj +/F1 1 Tf +6.001 0 TD +( \(see Chapter 12\).)Tj +/TT8 1 Tf +-20.213 -2.329 TD +-0.0001 Tc +(\(NOTIFY.EVENT )Tj +/F2 1 Tf +8.4001 0 TD +0 Tc +(EVENT ONCEONLY)Tj +/TT8 1 Tf +9.908 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +17.0778 0 TD +([Function])Tj +-32.386 -1.823 TD +(If there are processes waiting for )Tj +/F2 1 Tf +15.481 0 TD +(EVENT)Tj +/F1 1 Tf +3.648 0 TD +( to occur, causes those processes to be)Tj +-19.129 -1.2 TD +(placed in the running state, with )Tj +/F2 1 Tf +15.465 0 TD +(EVENT)Tj +/F1 1 Tf +3.648 0 TD +( returned as the value from)Tj +/TT8 1 Tf +-19.113 -1.2 TD +(AWAIT.EVENT)Tj +/F1 1 Tf +6.6011 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(ONCEONLY)Tj +/F1 1 Tf +5.982 0 TD +( is true, only runs the first process waiting for)Tj +ET +endstream +endobj +30 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +32 0 obj +<< +/Length 4117 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-8)Tj +/F1 1 Tf +10 0 0 10 210 568.26 Tm +(the event \(this should only be done if the programmer knows that there can only)Tj +0 -1.2 TD +(be one process capable of responding to the event at once\).)Tj +-3.6 -2.2 TD +(The meaning of an event is up to the programmer. In general, however, the notification)Tj +0 -1.2 TD +(of an event is merely a hint that something of interest to the waiting process has)Tj +T* +(happened; the process should still verify that the conceptual event actually occurred.)Tj +T* +(That is, )Tj +/F2 1 Tf +3.835 0 TD +(the process should be written so that it operates correctly even if woken up before)Tj +-3.835 -1.2 TD +(the timeout and in the absence of the notified event.)Tj +/F1 1 Tf +23.459 0 TD +( In particular, the completion of)Tj +/TT8 1 Tf +-23.459 -1.2 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +( and related operations in effect wakes up the process in which they)Tj +-7.2012 -1.323 TD +(were performed, since there is no secure way of knowing whether the event of interest)Tj +0 -1.2 TD +(occurred while the process was busy performing the )Tj +/TT8 1 Tf +24.203 0 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +(.)Tj +-31.4042 -2.023 TD +(There is currently one class of system-defined events, used with the network code.)Tj +0 -1.2 TD +(Each Pup and NS socket has associated with it an event that is notified when a packet)Tj +T* +(arrives on the socket; the event can be obtained by calling )Tj +/TT8 1 Tf +26.986 0 TD +(PUPSOCKETEVENT)Tj +/F1 1 Tf +8.4014 0 TD +( or)Tj +/TT8 1 Tf +-35.3874 -1.323 TD +(NSOCKETEVENT)Tj +/F1 1 Tf +7.2012 0 TD +(, respectively \(see Chapter 32\).)Tj +/TT4 1 Tf +14 0 0 14 102 345.16 Tm +(Monitors)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 341.57 m +582.01 341.57 l +S +BT +/F1 1 Tf +10 0 0 10 174 323.34 Tm +(It is often the case that cooperating processes perform operations on shared structures,)Tj +0 -1.2 TD +(and some mechanism is needed to prevent more than one process from altering the)Tj +T* +(structure at the same time. Some languages have a construct called a monitor, a)Tj +T* +(collection of functions that access a common structure with mutual exclusion provided)Tj +T* +(and enforced by the compiler via the use of monitor locks. Interlisp-D has taken this)Tj +T* +(implementation notion as the basis for a mutual exclusion capability suitable for a)Tj +T* +(dynamically-scoped environment.)Tj +0 -1.9 TD +(A monitorlock is an object created by you and associated with \(e.g., stored in\) some)Tj +0 -1.2 TD +(shared structure that is to be protected from simultaneous access. To access the)Tj +T* +(structure, a program waits for the lock to be free, then takes ownership of the lock,)Tj +T* +(accesses the structure, then releases the lock. The functions and macros below are)Tj +T* +(used:)Tj +/TT8 1 Tf +0 -2.206 TD +(\(CREATE.MONITORLOCK)Tj +/F1 1 Tf +11.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(NAME )Tj +/TT8 1 Tf +4.463 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +18.6448 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns an instance of the )Tj +/TT8 1 Tf +12.519 0 TD +(MONITORLOCK)Tj +/F1 1 Tf +6.6011 0 TD +( datatype, to be used as the lock)Tj +-19.1201 -1.323 TD +(argument to functions listed below. )Tj +/F2 1 Tf +16.854 0 TD +(NAME)Tj +/F1 1 Tf +3.185 0 TD +( is arbitrary, and is used for)Tj +-20.039 -1.2 TD +(debugging or status information.)Tj +/TT8 1 Tf +-3.6 -2.2 TD +(\(WITH.MONITOR)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(LOCK FORM)Tj +6.316 -0.3 TD +(1)Tj +0.556 0.3 TD +( ... FORM)Tj +4.52 -0.3 TD +(N)Tj +/TT8 1 Tf +0.815 0.3 TD +(\) )Tj +/F1 1 Tf +16.961 0 TD +([Macro])Tj +-33.646 -2 TD +(Evaluates )Tj +/F2 1 Tf +4.927 0 TD +(FORM)Tj +3.13 -0.3 TD +(1)Tj +/F1 1 Tf +0.556 0.3 TD +( ... )Tj +/F2 1 Tf +1.39 0 TD +(FORM)Tj +3.13 -0.3 TD +(N)Tj +/F1 1 Tf +0.815 0.3 TD +( while owning )Tj +/F2 1 Tf +6.705 0 TD +(LOCK)Tj +/F1 1 Tf +2.908 0 TD +(, and returns the value of)Tj +/F2 1 Tf +-23.561 -1.5 TD +(FORM)Tj +3.13 -0.3 TD +(N)Tj +/F1 1 Tf +0.815 0.3 TD +(. This construct is implemented so that the lock is released even if the)Tj +-3.945 -1.5 TD +(form is exited via error \(currently implemented with )Tj +/TT8 1 Tf +24.5 0 TD +(RESETLST)Tj +/F1 1 Tf +4.8008 0 TD +(\).)Tj +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +35 0 obj +<< +/Length 5378 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-9)Tj +/F1 1 Tf +10 0 0 10 162 568.26 Tm +(Ownership of a lock is dynamically scoped: if the current process already owns)Tj +0 -1.2 TD +(the lock \(e.g., if the caller was itself inside a )Tj +/TT8 1 Tf +20.504 0 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +( for this lock\),)Tj +/TT8 1 Tf +-27.7052 -1.323 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +( does not wait for the lock to be free before evaluating )Tj +/F2 1 Tf +25.022 0 TD +(FORM)Tj +3.1288 -0.3 TD +(1)Tj +/F1 1 Tf +0.556 0.3 TD +( ...)Tj +/F2 1 Tf +-35.908 -1.5 TD +(FORM)Tj +3.13 -0.3 TD +(N)Tj +/F1 1 Tf +0.815 0.3 TD +(. )Tj +/TT8 1 Tf +-7.545 -2.506 TD +(\(WITH.FAST.MONITOR)Tj +/F1 1 Tf +10.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(LOCK FORM)Tj +6.316 -0.3 TD +(1)Tj +0.556 0.3 TD +( ... FORM)Tj +4.52 -0.3 TD +(N)Tj +/TT8 1 Tf +0.815 0.3 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +12.7608 0 TD +([Macro])Tj +-33.646 -2 TD +(Like )Tj +/TT8 1 Tf +2.353 0 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +(, but implemented without the )Tj +/TT8 1 Tf +14.373 0 TD +(RESETLST)Tj +/F1 1 Tf +4.8008 0 TD +(. User interrupts)Tj +-28.728 -1.323 TD +(\(e.g., Control-E\) are inhibited during the evaluation of )Tj +/F2 1 Tf +25.298 0 TD +(FORM)Tj +3.13 -0.3 TD +(1)Tj +/F1 1 Tf +0.556 0.3 TD +( ... )Tj +/F2 1 Tf +1.39 0 TD +(FORM)Tj +3.13 -0.3 TD +(N)Tj +/F1 1 Tf +0.815 0.3 TD +(. )Tj +-34.319 -2.2 TD +(Programming restriction: the evaluation of )Tj +/F2 1 Tf +20.094 0 TD +(FORM)Tj +3.13 -0.3 TD +(1)Tj +/F1 1 Tf +0.556 0.3 TD +( ... )Tj +/F2 1 Tf +1.39 0 TD +(FORM)Tj +3.13 -0.3 TD +(N)Tj +/F1 1 Tf +0.815 0.3 TD +( must not error)Tj +-29.115 -1.5 TD +(\(the lock would not be released\). This construct is mainly useful when the forms)Tj +0 -1.2 TD +(perform a small, safe computation that never errors and need never be)Tj +T* +(interrupted.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(MONITOR.AWAIT.EVENT)Tj +/F1 1 Tf +12 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(RELEASELOCK EVENT TIMEOUT TIMERP)Tj +/TT8 1 Tf +21.537 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +1.5709 0 TD +([Function])Tj +-32.386 -1.823 TD +(For use in blocking inside a monitor. Performs )Tj +/TT8 1 Tf +21.984 0 TD +(\(AWAIT.EVENT)Tj +/F3 1 Tf +7.2012 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(EVENT)Tj +-29.4722 -1.323 TD +(TIMEOUT)Tj +/F3 1 Tf +5.036 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(TIMERP)Tj +/TT8 1 Tf +4.166 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(, but releases )Tj +/F2 1 Tf +6.409 0 TD +(RELEASELOCK)Tj +/F1 1 Tf +7.853 0 TD +( first, and reobtains the)Tj +-24.3511 -1.323 TD +(lock \(possibly waiting\) on wakeup.)Tj +0 -1.9 TD +(Typical use for )Tj +/TT8 1 Tf +7.093 0 TD +(MONITOR.AWAIT.EVENT)Tj +/F1 1 Tf +11.4019 0 TD +(: A function wants to perform some)Tj +-18.4949 -1.323 TD +(operation on )Tj +/F2 1 Tf +6.056 0 TD +(FOO)Tj +/F1 1 Tf +2.223 0 TD +(, but only if it is in a certain state. It has to obtain the lock on)Tj +-8.279 -1.2 TD +(the structure to make sure that the state of the structure does not change)Tj +T* +(between the time it tests the state and performs the operation. If the state)Tj +T* +(turns out to be bad, it then waits for some other process to make the state good,)Tj +T* +(meanwhile releasing the lock so that the other process can alter the structure.)Tj +/TT8 1 Tf +9.6 -1.7 TD +(\(WITH.MONITOR)Tj +/F3 1 Tf +7.8013 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FOO-LOCK)Tj +/F3 1 Tf +-8.0883 -1.123 TD +( )Tj +/TT8 1 Tf +0.861 0 TD +(\(until)Tj +/F3 1 Tf +3.6006 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(CONDITION-OF-FOO)Tj +/F3 1 Tf +-4.7486 -1.123 TD +( )Tj +/TT8 1 Tf +1.148 0 TD +(do \(MONITOR.AWAIT.EVENT)Tj +/F3 1 Tf +13.8022 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FOO-LOCK)Tj +/F3 1 Tf +5.464 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(EVENT-FOO-)Tj +-20.9882 -1.123 TD +(CHANGED)Tj +/F3 1 Tf +5.352 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(TIMEOUT)Tj +/TT8 1 Tf +5.036 0 TD +(\)\))Tj +/F3 1 Tf +-10.675 -1.123 TD +( )Tj +/F2 1 Tf +2.009 0 TD +(OPERATE-ON-FOO)Tj +/TT8 1 Tf +9.501 0 TD +(\))Tj +/F1 1 Tf +-21.11 -1.823 TD +(It is sometimes convenient for a process to have )Tj +/TT8 1 Tf +22.316 0 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +( at its top level)Tj +-29.5172 -1.323 TD +(and then do all its interesting waiting using )Tj +/TT8 1 Tf +20.615 0 TD +(MONITOR.AWAIT.EVENT)Tj +/F1 1 Tf +11.4019 0 TD +(. Not only)Tj +-32.0169 -1.323 TD +(is this often cleaner, but in the present implementation in cases where the lock)Tj +0 -1.2 TD +(is frequently accessed, it saves the )Tj +/TT8 1 Tf +16.187 0 TD +(RESETLST)Tj +/F1 1 Tf +4.8008 0 TD +( overhead of )Tj +/TT8 1 Tf +5.889 0 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +(.)Tj +-34.078 -2.023 TD +(Programming restriction: There must not be an )Tj +/TT8 1 Tf +22.502 0 TD +(ERRORSET)Tj +/F1 1 Tf +4.8008 0 TD +( between the)Tj +-27.3028 -1.323 TD +(enclosing )Tj +/TT8 1 Tf +4.574 0 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +( and the call to )Tj +/TT8 1 Tf +7.15 0 TD +(MONITOR.AWAIT.EVENT)Tj +/F1 1 Tf +11.4019 0 TD +( such that the)Tj +/TT8 1 Tf +-30.327 -1.323 TD +(ERRORSET)Tj +/F1 1 Tf +4.8008 0 TD +( would catch an )Tj +/TT8 1 Tf +7.501 0 TD +(ERROR!)Tj +/F1 1 Tf +3.6006 0 TD +( and continue inside the monitor, for the lock)Tj +-15.9024 -1.323 TD +(would not have been reobtained. \(The reason for this restriction is that,)Tj +0 -1.2 TD +(although )Tj +/TT8 1 Tf +4.408 0 TD +(MONITOR.AWAIT.EVENT)Tj +/F1 1 Tf +11.4019 0 TD +( wont itself error, you could have caused an)Tj +-15.8099 -1.323 TD +(error with an interrupt, or a )Tj +/TT8 1 Tf +13.315 0 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +( in the context of the waiting)Tj +-20.5162 -1.323 TD +(process that produced an error.\))Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +38 0 obj +<< +/Length 320 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-10)Tj +/F1 1 Tf +10 0 0 10 174 568.26 Tm +(On rare occasions it may be useful to manipulate monitor locks directly. The following)Tj +0 -1.2 TD +(two functions are used in the implementation of )Tj +/TT8 1 Tf +22.428 0 TD +(WITH.MONITOR)Tj +/F1 1 Tf +7.2012 0 TD +(:)Tj +ET +endstream +endobj +39 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +41 0 obj +<< +/Length 4303 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-11)Tj +/TT8 1 Tf +10 0 0 10 126 568.2 Tm +(\(OBTAIN.MONITORLOCK)Tj +/F1 1 Tf +11.4 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(LOCK DONTWAIT UNWINDSAVE)Tj +/TT8 1 Tf +16.595 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +7.1129 0 TD +([Function])Tj +-32.386 -1.823 TD +(Takes possession of )Tj +/F2 1 Tf +9.298 0 TD +(LOCK)Tj +/F1 1 Tf +2.908 0 TD +(, waiting if necessary until it is free, unless)Tj +/F2 1 Tf +-12.206 -1.2 TD +(DONTWAIT)Tj +/F1 1 Tf +5.778 0 TD +( is true, in which case it returns )Tj +/TT8 1 Tf +15.038 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( immediately. If)Tj +/F2 1 Tf +-22.6163 -1.323 TD +(UNWINDSAVE)Tj +/F1 1 Tf +7.353 0 TD +( is true, performs a )Tj +/TT8 1 Tf +9.093 0 TD +(RESETSAVE)Tj +/F1 1 Tf +5.4009 0 TD +( to be unwound when the)Tj +-21.8469 -1.323 TD +(enclosing )Tj +/TT8 1 Tf +4.574 0 TD +(RESETLST)Tj +/F1 1 Tf +4.8008 0 TD +( exits. Returns )Tj +/F2 1 Tf +7.334 0 TD +(LOCK)Tj +/F1 1 Tf +2.908 0 TD +( if )Tj +/F2 1 Tf +1.204 0 TD +(LOCK)Tj +/F1 1 Tf +2.908 0 TD +( was successfully obtained, )Tj +/TT8 1 Tf +12.687 0 TD +(T)Tj +/F1 1 Tf +-36.4158 -1.323 TD +(if the current process already owned )Tj +/F2 1 Tf +17.092 0 TD +(LOCK)Tj +/F1 1 Tf +2.908 0 TD +(.)Tj +/TT8 1 Tf +-23.6 -2.206 TD +(\(RELEASE.MONITORLOCK)Tj +/F1 1 Tf +12 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(LOCK EVENIFNOTMINE)Tj +/TT8 1 Tf +12.389 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +10.1188 0 TD +([Function])Tj +-32.386 -1.823 TD +(Releases )Tj +/F2 1 Tf +4.297 0 TD +(LOCK)Tj +/F1 1 Tf +2.908 0 TD +( if it is owned by the current process, and wakes up the next)Tj +-7.205 -1.2 TD +(process, if any, waiting to obtain the lock.)Tj +0 -1.9 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(EVENIFNOTMINE)Tj +/F1 1 Tf +9.203 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, the lock is released even if it is not owned by)Tj +-15.4103 -1.323 TD +(the current process.)Tj +-3.6 -2.2 TD +(When a process is deleted, any locks it owns are released.)Tj +/TT4 1 Tf +14 0 0 14 54 346.58 Tm +(Global Resources)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 342.99 m +534.01 342.99 l +S +BT +/F1 1 Tf +10 0 0 10 126 324.76 Tm +(The biggest source of problems in the multi-processing environment is the matter of)Tj +0 -1.2 TD +(global resources. Two processes cannot both use the same global resource if there can)Tj +T* +(be a process switch in the middle of their use \(currently this means calls to )Tj +/TT8 1 Tf +34.836 0 TD +(BLOCK)Tj +/F1 1 Tf +3.0005 0 TD +(, but)Tj +-37.8365 -1.323 TD +(ultimately with a preemptive scheduler means anytime\). Thus, user code should be)Tj +0 -1.2 TD +(wary of its own use of global variables, if it ever makes sense for the code to be run in)Tj +T* +(more than one process at a time. "State" variables private to a process should generally)Tj +T* +(be bound in that process; structures that are shared among processes \(or resources used)Tj +T* +(privately but expensive to duplicate per process\) should be protected with monitor locks)Tj +T* +(or some other form of synchronization.)Tj +0 -1.9 TD +(Aside from user code, however, there are many )Tj +/F2 1 Tf +21.963 0 TD +(system)Tj +/F1 1 Tf +3.073 0 TD +( global variables and resources.)Tj +-25.036 -1.2 TD +(Most of these arise historically from the single-process Interlisp-10 environment, and)Tj +T* +(will eventually be changed in Interlisp-D to behave appropriately in a multi-processing)Tj +T* +(environment. Some have already been changed, and are described below. Two other)Tj +T* +(resources not generally thought of as global variablesthe keyboard and the mouse)Tj +T* +(are particularly idosyncratic, and are discussed in the next section.)Tj +0 -1.9 TD +(The following resources, which are global in Interlisp-10, are allocated per process in)Tj +0 -1.2 TD +(Interlisp-D: primary input and output \(the streams affected by )Tj +/F3 1 Tf +29.242 0 TD +(INPUT)Tj +/F1 1 Tf +3.591 0 TD +( and )Tj +/F3 1 Tf +2.297 0 TD +(OUTPUT)Tj +/F1 1 Tf +4.702 0 TD +(\),)Tj +-39.832 -1.2 TD +(terminal input and output \(the streams designated by the name )Tj +/F3 1 Tf +29.819 0 TD +(T)Tj +/F1 1 Tf +0.722 0 TD +(\), the primary read)Tj +-30.541 -1.2 TD +(table and primary terminal table, and dribble files. Thus, each process can print to its)Tj +T* +(own primary output, print to the terminal, read from a different primary input, all)Tj +T* +(without interfering with another processs reading and printing.)Tj +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +46 0 obj +<< +/Length 4845 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-12)Tj +/F1 1 Tf +10 0 0 10 174 568.26 Tm +(Each process begins life with its primary and terminal input/output streams set to a)Tj +0 -1.2 TD +(dummy stream. If the process attempts input or output using any of those dummy)Tj +T* +(streams, e.g., by calling )Tj +/TT8 1 Tf +11.151 0 TD +(\(READ T\))Tj +/F1 1 Tf +4.8008 0 TD +(, or )Tj +/TT8 1 Tf +1.778 0 TD +(\(PRINT & T\))Tj +/F1 1 Tf +6.6011 0 TD +(, a tty window is automatically)Tj +-24.3309 -1.323 TD +(created for the process, and that window becomes the primary input/output and)Tj +0 -1.2 TD +(terminal input/output for the process. The default tty window is created at or near the)Tj +T* +(region specified in the variable )Tj +/TT8 1 Tf +14.52 0 TD +(DEFAULTTTYREGION)Tj +/F1 1 Tf +9.6016 0 TD +(.)Tj +-24.1216 -2.023 TD +(A process can, of course, call )Tj +/TT8 1 Tf +13.37 0 TD +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +9.6016 0 TD +( explicitly to give itself a tty window of)Tj +-22.9716 -1.323 TD +(its own choosing, in which case the automatic mechanism never comes into play.)Tj +0 -1.2 TD +(Calling )Tj +/TT8 1 Tf +3.649 0 TD +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +9.6016 0 TD +( when a process has no tty window not only sets the)Tj +-13.2506 -1.323 TD +(terminal streams, but also sets the primary input and output streams to be that)Tj +0 -1.2 TD +(window, assuming they were still set to the dummy streams.)Tj +/TT8 1 Tf +0 -2.206 TD +(\(HASTTYWINDOWP)Tj +/F2 1 Tf +8.4 0 TD +( PROCESS)Tj +/TT8 1 Tf +5.242 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +21.1438 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns )Tj +/TT8 1 Tf +4.018 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +( if the process )Tj +/F2 1 Tf +6.648 0 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( has a tty window; )Tj +/TT8 1 Tf +8.725 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( otherwise. If)Tj +/F2 1 Tf +-26.7554 -1.323 TD +(PROCESS)Tj +/F1 1 Tf +4.964 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, it defaults to the current process.)Tj +-11.6983 -2.323 TD +(Other system resources that are typically changed by )Tj +/TT8 1 Tf +24.909 0 TD +(RESETFORM)Tj +/F1 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(RESETLST)Tj +/F1 1 Tf +4.8008 0 TD +(, or)Tj +/TT8 1 Tf +-35.6667 -1.323 TD +(RESETVARS)Tj +/F1 1 Tf +5.4009 0 TD +( are all global entities. In the multiprocessing environment, these)Tj +-5.4009 -1.323 TD +(constructs are suspect, as there is no provision for "undoing" them when a process)Tj +0 -1.2 TD +(switch occurs. For example, in the current release of Interlisp-D, it is not possible to set)Tj +T* +(the print radix to 8 inside only one process, as the print radix is a global entity. )Tj +0 -1.9 TD +(Note that )Tj +/TT8 1 Tf +4.705 0 TD +(RESETFORM)Tj +/F1 1 Tf +5.4009 0 TD +( and similar expressions are perfectly valid in the process world,)Tj +-10.1059 -1.323 TD +(and even quite useful, when they manipulate things strictly within one process. The)Tj +0 -1.2 TD +(process world is arranged so that deleting a process also unwinds any )Tj +/TT8 1 Tf +32.429 0 TD +(RESETxxx)Tj +/F1 1 Tf +-32.429 -1.323 TD +(expressions that were performed in the process and are still waiting to be unwound,)Tj +0 -1.2 TD +(exactly as if a Control-D had reset the process to the top. Additionally, there is an)Tj +T* +(implicit )Tj +/TT8 1 Tf +3.834 0 TD +(RESETLST)Tj +/F1 1 Tf +4.8008 0 TD +( at the top of each process, so that )Tj +/TT8 1 Tf +15.928 0 TD +(RESETSAVE)Tj +/F1 1 Tf +5.4009 0 TD +( can be used as a way)Tj +-29.9637 -1.323 TD +(of providing "cleanup" functions for when a process is deleted. For these, the value of)Tj +/TT8 1 Tf +0 -1.2 TD +(RESETSTATE)Tj +/F1 1 Tf +6.001 0 TD +( \(see Chapter 14\) is )Tj +/TT8 1 Tf +9.205 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +( if the process finished normally, )Tj +/TT8 1 Tf +15.371 0 TD +(ERROR)Tj +/F1 1 Tf +3.0005 0 TD +( if it was)Tj +-35.3778 -1.323 TD +(aborted by an error, )Tj +/TT8 1 Tf +9.501 0 TD +(RESET)Tj +/F1 1 Tf +3.0005 0 TD +( if the process was explicitly deleted, and )Tj +/TT8 1 Tf +19.169 0 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +( if the)Tj +-37.0714 -1.323 TD +(process is being restarted after a )Tj +/TT8 1 Tf +15.39 0 TD +(HARDRESET)Tj +/F1 1 Tf +5.4009 0 TD +( or a )Tj +/TT8 1 Tf +2.334 0 TD +(RESTART.PROCESS)Tj +/F1 1 Tf +9.0015 0 TD +(.)Tj +/TT4 1 Tf +14 0 0 14 102 129.57 Tm +(Typein and the TTY Process)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 125.98 m +582.01 125.98 l +S +BT +/F1 1 Tf +10 0 0 10 174 107.75 Tm +(There is one global resource, the keyboard, that is particularly problematic to share)Tj +0 -1.2 TD +(among processes. Consider, for example, having two processes both performing )Tj +/TT8 1 Tf +37.001 0 TD +(\(READ)Tj +-37.001 -1.323 TD +(T\))Tj +/F1 1 Tf +1.2002 0 TD +(. Since the keyboard input routines block while there is no input, both processes)Tj +-1.2002 -1.323 TD +(would spend most of their time blocking, and it would simply be a matter of chance)Tj +0 -1.2 TD +(which process received each character of typein.)Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +49 0 obj +<< +/Length 4520 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-13)Tj +/F1 1 Tf +10 0 0 10 126 568.26 Tm +(To resolve such dilemmas, the system designates a distinguished process, termed the)Tj +/F2 1 Tf +0 -1.2 TD +(tty process)Tj +/F1 1 Tf +4.776 0 TD +(, that is assumed to be the process that is involved in terminal interaction.)Tj +-4.776 -1.2 TD +(Any typein from the keyboard goes to that process. If a process other than the tty)Tj +T* +(process requests keyboard input, it blocks until it becomes the tty process. When the)Tj +T* +(tty process is switched \(in any of the ways described further below\), any typeahead that)Tj +T* +(occurred before the switch is saved and associated with the current tty process. Thus, it)Tj +T* +(is always the case that keystrokes are sent to the process that is the tty process at the)Tj +T* +(time of the keystrokes, regardless of when that process actually gets around to reading)Tj +T* +(them.)Tj +0 -1.9 TD +(It is less immediately obvious how to handle keyboard interrupt characters, as their)Tj +0 -1.2 TD +(action is asynchronous and not always tied to typein. Interrupt handling is described in)Tj +T* +(the Handling of Interrupts section below.)Tj +/TT4 1 Tf +12 0 0 12 90 398.64 Tm +(Switching the TTY Process)Tj +/F1 1 Tf +10 0 0 10 126 378.26 Tm +(Any process can make itself be the tty process by calling )Tj +/TT8 1 Tf +26.225 0 TD +(TTY.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(.)Tj +/TT8 1 Tf +-32.8261 -2.329 TD +(\(TTY.PROCESS)Tj +/F1 1 Tf +7.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +24.9999 0 TD +([Function])Tj +-32.386 -1.823 TD +(Returns the handle of the current tty process. In addition, if )Tj +/F2 1 Tf +28.278 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(,)Tj +-36.3753 -1.323 TD +(makes it be the tty process. The special case of )Tj +/F2 1 Tf +22.041 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( = )Tj +/TT8 1 Tf +1.162 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +( is interpreted to)Tj +-26.7111 -1.323 TD +(mean the executive process; this is sometimes useful when a process wants to)Tj +0 -1.2 TD +(explicitly give up being the tty process.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(TTY.PROCESSP)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(PROC)Tj +/TT8 1 Tf +2.908 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +24.3999 0 TD +([Function])Tj +-32.386 -1.823 TD +(True if )Tj +/F2 1 Tf +3.426 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( is the tty process; )Tj +/F2 1 Tf +8.649 0 TD +(PROC)Tj +/F1 1 Tf +2.908 0 TD +( defaults to the running process. Thus,)Tj +/TT8 1 Tf +-17.891 -1.2 TD +(\(TTY.PROCESSP\))Tj +/F1 1 Tf +8.4014 0 TD +( is true if the caller is the tty process.)Tj +/TT8 1 Tf +-12.0014 -2.323 TD +(\(WAIT.FOR.TTY)Tj +/F1 1 Tf +7.8 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(MSECS NEEDWINDOW)Tj +/TT8 1 Tf +11.667 0 TD +(\) )Tj +/F1 1 Tf +16.241 0 TD +([Function])Tj +-32.386 -1.823 TD +(Efficiently waits until )Tj +/TT8 1 Tf +10.39 0 TD +(\(TTY.PROCESSP\))Tj +/F1 1 Tf +8.4014 0 TD +( is true. )Tj +/TT8 1 Tf +4.112 0 TD +(WAIT.FOR.TTY)Tj +/F1 1 Tf +7.2012 0 TD +( is called)Tj +-30.1045 -1.323 TD +(internally by the system functions that read from the terminal; user code thus)Tj +0 -1.2 TD +(need only call it in special cases.)Tj +0 -1.9 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(MSECS)Tj +/F1 1 Tf +3.722 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, it is the number of milliseconds to wait before timing out.)Tj +-9.9293 -1.323 TD +(If )Tj +/TT8 1 Tf +1.018 0 TD +(WAIT.FOR.TTY)Tj +/F1 1 Tf +7.2012 0 TD +( times out before )Tj +/TT8 1 Tf +8.001 0 TD +(\(TTY.PROCESSP\))Tj +/F1 1 Tf +8.4014 0 TD +( is true, it returns )Tj +/TT8 1 Tf +8.556 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(,)Tj +-34.9778 -1.323 TD +(otherwise it returns )Tj +/TT8 1 Tf +9.5 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(. If )Tj +/F2 1 Tf +1.852 0 TD +(MSECS)Tj +/F1 1 Tf +3.722 0 TD +( is )Tj +/TT8 1 Tf +1.334 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(WAIT.FOR.TTY)Tj +/F1 1 Tf +7.2012 0 TD +( will not time out.)Tj +-26.5656 -2.023 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(NEEDWINDOW)Tj +/F1 1 Tf +7.667 0 TD +( is non-)Tj +/TT8 1 Tf +3.389 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(WAIT.FOR.TTY)Tj +/F1 1 Tf +7.2012 0 TD +( opens a TTY window for the)Tj +-21.6315 -1.323 TD +(current process if one isnt already open.)Tj +/TT8 1 Tf +0 -1.9 TD +(WAIT.FOR.TTY)Tj +/F1 1 Tf +7.2012 0 TD +( spawns a new mouse process if called under the mouse process)Tj +-7.2012 -1.323 TD +(\(see )Tj +/TT8 1 Tf +2.074 0 TD +(SPAWN.MOUSE)Tj +/F1 1 Tf +6.6011 0 TD +(, in the Keeping the Mouse Alive section below\).)Tj +ET +endstream +endobj +50 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +52 0 obj +<< +/Length 5073 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-14)Tj +/F1 1 Tf +10 0 0 10 174 568.26 Tm +(In some cases, such as in functions invoked as a result of mouse action or a users typed-)Tj +0 -1.2 TD +(in call, it is reasonable for the function to invoke )Tj +/TT8 1 Tf +22.633 0 TD +(TTY.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( itself so that it can take)Tj +-29.2341 -1.323 TD +(subsequent user type in. In other cases, however, this is too undisciplined; it is)Tj +0 -1.2 TD +(desirable to let the user designate which process typein should be directed to. This is)Tj +T* +(most conveniently done by mouse action.)Tj +0 -1.9 TD +(The system supports the model that "to type to a process, you click in its window." To)Tj +0 -1.2 TD +(cooperate with this model, any process desiring keyboard input should put its process)Tj +T* +(handle as the )Tj +/TT8 1 Tf +6.52 0 TD +(PROCESS)Tj +/F1 1 Tf +4.2007 0 TD +( property of its window\(s\). To handle the common case, the)Tj +-10.7207 -1.323 TD +(function )Tj +/TT8 1 Tf +4.092 0 TD +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +9.6016 0 TD +( does this automatically when the ttydisplaystream is)Tj +-13.6936 -1.323 TD +(switched to a new window. A process can own any number of windows; clicking in any)Tj +0 -1.2 TD +(of those windows gives the process the tty.)Tj +0 -1.9 TD +(This mechanism suffices for most casual process writers. For example, if a process)Tj +0 -1.2 TD +(wants all its input/output interaction to occur in a particular window that it has)Tj +T* +(created, it should just make that window be its tty window by calling)Tj +/TT8 1 Tf +T* +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +9.6016 0 TD +(. Thereafter, it can )Tj +/TT8 1 Tf +9.205 0 TD +(PRINT)Tj +/F1 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(READ)Tj +/F1 1 Tf +2.4004 0 TD +( to/from the )Tj +/TT8 1 Tf +5.667 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +( stream; if the)Tj +-31.9745 -1.323 TD +(process is not the tty process at the time that it calls )Tj +/TT8 1 Tf +24.485 0 TD +(READ)Tj +/F1 1 Tf +2.4004 0 TD +(, it will block until the user)Tj +-26.8854 -1.323 TD +(clicks in the window.)Tj +0 -1.9 TD +(For those needing tighter control over the tty, the default behavior can be overridden or)Tj +0 -1.2 TD +(supplemented. The remainder of this section describes the mechanisms involved.)Tj +0 -1.9 TD +(There is a window property )Tj +/TT8 1 Tf +12.964 0 TD +(WINDOWENTRYFN)Tj +/F1 1 Tf +7.8013 0 TD +( that controls whether and how to switch)Tj +-20.7653 -1.323 TD +(the tty to the process owning a window. The mouse handler, before invoking any)Tj +0 -1.2 TD +(normal )Tj +/TT8 1 Tf +3.593 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +(, specifically notices the case of a button going down in a)Tj +-11.3943 -1.323 TD +(window that belongs to a process \(i.e., has a )Tj +/TT8 1 Tf +20.486 0 TD +(PROCESS)Tj +/F1 1 Tf +4.2007 0 TD +( window property\) that is not the)Tj +-24.6867 -1.323 TD +(tty process. In this case, it invokes the windows )Tj +/TT8 1 Tf +22.744 0 TD +(WINDOWENTRYFN)Tj +/F1 1 Tf +7.8013 0 TD +( of one argument)Tj +-30.5453 -1.323 TD +(\()Tj +/F2 1 Tf +0.333 0 TD +(WINDOW)Tj +/F1 1 Tf +4.63 0 TD +(\). )Tj +/TT8 1 Tf +1.167 0 TD +(WINDOWENTRYFN)Tj +/F1 1 Tf +7.8013 0 TD +( defaults to )Tj +/TT8 1 Tf +5.464 0 TD +(GIVE.TTY.PROCESS)Tj +/F1 1 Tf +9.6016 0 TD +(:)Tj +/TT8 1 Tf +-28.9968 -2.329 TD +(\(GIVE.TTY.PROCESS)Tj +/F1 1 Tf +10.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(WINDOW)Tj +/TT8 1 Tf +4.63 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +19.6778 0 TD +([Function])Tj +-32.386 -1.823 TD +(If )Tj +/F2 1 Tf +1.018 0 TD +(WINDOW)Tj +/F1 1 Tf +4.63 0 TD +( has a )Tj +/TT8 1 Tf +3.02 0 TD +(PROCESS)Tj +/F1 1 Tf +4.2007 0 TD +( property, performs )Tj +/TT8 1 Tf +9.221 0 TD +(\(TTY.PROCESS)Tj +/F3 1 Tf +7.2012 0 TD +( )Tj +/TT8 1 Tf +0.287 0 TD +(\(WINDOWPROP)Tj +/F2 1 Tf +-29.5779 -1.323 TD +(WINDOW)Tj +/F3 1 Tf +4.63 0 TD +( )Tj +/TT8 1 Tf +0.528 0 TD +(PROCESS\)\))Tj +/F1 1 Tf +5.4009 0 TD +( and then invokes )Tj +/F2 1 Tf +8.483 0 TD +(WINDOW)Tj +/F1 1 Tf +4.63 0 TD +(s )Tj +/TT8 1 Tf +0.945 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +( function)Tj +-32.4181 -1.323 TD +(\(or )Tj +/TT8 1 Tf +1.555 0 TD +(RIGHTBUTTONFN)Tj +/F1 1 Tf +7.8013 0 TD +( if the right button is down\).)Tj +-12.9563 -2.323 TD +(There are some cases where clicking in a window does not always imply that the user)Tj +0 -1.2 TD +(wants to talk to that window. For example, clicking in a text editor window with a shift)Tj +T* +(key held down means to "shift-select" some piece of text into the input buffer of the)Tj +/F2 1 Tf +T* +(current)Tj +/F1 1 Tf +3.35 0 TD +( tty process. The editor supports this by supplying a )Tj +/TT8 1 Tf +24.521 0 TD +(WINDOWENTRYFN)Tj +/F1 1 Tf +7.8013 0 TD +( that)Tj +-35.6723 -1.323 TD +(performs )Tj +/TT8 1 Tf +4.425 0 TD +(GIVE.TTY.PROCESS)Tj +/F1 1 Tf +9.6016 0 TD +( if no shift key is down, but goes into its shift-select mode,)Tj +-14.0266 -1.323 TD +(without changing the tty process, if a shift key is down. The shift-select mode performs)Tj +0 -1.2 TD +(a )Tj +/TT8 1 Tf +0.834 0 TD +(BKSYSBUF)Tj +/F1 1 Tf +4.8008 0 TD +( of the selected text when the shift key is let up, the )Tj +/TT8 1 Tf +24.133 0 TD +(BKSYSBUF)Tj +/F1 1 Tf +4.8008 0 TD +( feeding)Tj +-34.5686 -1.323 TD +(input to the current tty process.)Tj +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +55 0 obj +<< +/Length 4320 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-15)Tj +/F1 1 Tf +10 0 0 10 126 568.26 Tm +(Sometimes a process wants to be notified when it becomes the tty process, or stops)Tj +0 -1.2 TD +(being the tty process. To support this, there are two process properties, )Tj +/TT8 1 Tf +33.372 0 TD +(TTYEXITFN)Tj +/F1 1 Tf +5.4009 0 TD +( and)Tj +/TT8 1 Tf +-38.7729 -1.323 TD +(TTYENTRYFN)Tj +/F1 1 Tf +6.001 0 TD +(. The actions taken by )Tj +/TT8 1 Tf +10.744 0 TD +(TTY.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( when it switches the tty to a new)Tj +-23.3461 -1.323 TD +(process are as follows: the former tty processs )Tj +/TT8 1 Tf +21.593 0 TD +(TTYEXITFN)Tj +/F1 1 Tf +5.4009 0 TD +( is called with two arguments)Tj +-26.9939 -1.323 TD +(\()Tj +/F2 1 Tf +0.333 0 TD +(OLDTTYPROCESS)Tj +/F1 1 Tf +9.242 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(NEWTTYPROCESS)Tj +/F1 1 Tf +9.482 0 TD +(\); the new process is made the tty process;)Tj +-19.335 -1.2 TD +(finally, the new tty processs )Tj +/TT8 1 Tf +13.409 0 TD +(TTYENTRYFN)Tj +/F1 1 Tf +6.001 0 TD +( is called with two arguments)Tj +-19.41 -1.323 TD +(\()Tj +/F2 1 Tf +0.333 0 TD +(NEWTTYPROCESS)Tj +/F1 1 Tf +9.482 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(OLDTTYPROCESS)Tj +/F1 1 Tf +9.242 0 TD +(\). Normally the )Tj +/TT8 1 Tf +7.594 0 TD +(TTYENTRYFN)Tj +/F1 1 Tf +6.001 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(TTYEXITFN)Tj +/F1 1 Tf +-35.227 -1.323 TD +(need only their first argument, but the other process involved in the switch is supplied)Tj +0 -1.2 TD +(for completeness. In the present system, most processes want to interpret the keyboard)Tj +T* +(in the same way, so it is considered the responsibility of any process that changes the)Tj +T* +(keyboard interpretation to restore it to the normal state by its )Tj +/TT8 1 Tf +28.949 0 TD +(TTYEXITFN)Tj +/F1 1 Tf +5.4009 0 TD +(. )Tj +-34.3499 -2.023 TD +(A window is "owned" by the last process that anyone gave as the windows )Tj +/TT8 1 Tf +34.525 0 TD +(PROCESS)Tj +/F1 1 Tf +-34.525 -1.323 TD +(property. Ordinarily there is no conflict here, as processes tend to own disjoint sets of)Tj +0 -1.2 TD +(windows \(though, of course, cooperating processes can certainly try to confuse each)Tj +T* +(other\). The only likely problem arises with that most global of windows,)Tj +/TT8 1 Tf +T* +(PROMPTWINDOW)Tj +/F1 1 Tf +7.2012 0 TD +(. Programs should not be tempted to read from )Tj +/TT8 1 Tf +22.132 0 TD +(PROMPTWINDOW)Tj +/F1 1 Tf +7.2012 0 TD +(. This is)Tj +-36.5343 -1.323 TD +(not usually necessary anyway, as the first attempt to read from )Tj +/TT8 1 Tf +29.615 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +( in a process that has)Tj +-30.2151 -1.323 TD +(not set its )Tj +/TT8 1 Tf +4.853 0 TD +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +9.6016 0 TD +( to its own window causes a tty window to be created for)Tj +-14.4546 -1.323 TD +(the process \(see the Global Resources section above\). )Tj +/TT4 1 Tf +12 0 0 12 90 302.34 Tm +(Handling of Interrupts)Tj +/F1 1 Tf +10 0 0 10 126 281.96 Tm +(At the time that a keyboard interrupt character \(see Chapter 30\) is struck, any process)Tj +0 -1.2 TD +(could be running, and some decision must be made as to which process to actually)Tj +T* +(interrupt. To the extent that keyboard interrupts are related to typein, most interrupts)Tj +T* +(are taken in the tty process; however, the following are handled specially:)Tj +/TT8 1 Tf +2.518 -1.9 TD +(RESET)Tj +/F1 1 Tf +3.0005 0 TD +( \(initially Control-D\))Tj +/TT8 1 Tf +-2.9445 -1.323 TD +(ERROR)Tj +/F1 1 Tf +3.0005 0 TD +[( \(initially Control-E\))-1799.5(These interrupts are taken in the mouse process, if)]TJ +11.2255 -1.323 TD +(the mouse is not in its idle state; otherwise they are)Tj +0 -1.2 TD +(taken in the tty process. Thus, Control-E can be)Tj +T* +(used to abort some mouse-invoked window action,)Tj +T* +(such as the Shape command. As a consequence,)Tj +T* +(note that if the mouse invokes some lengthy)Tj +T* +(computation that the user thinks of as)Tj +T* +("background", Control-E still aborts it, even though)Tj +T* +(that may not have been what the user intended.)Tj +T* +(Such lengthy computations, for various reasons,)Tj +T* +(should generally be performed by spawning a)Tj +T* +[(separate process to perform them.)-1678(The )]TJ +/TT8 1 Tf +19.456 0 TD +(RESET)Tj +/F1 1 Tf +-19.456 -1.323 TD +(interrupt in a process other than the executive is)Tj +0 -1.2 TD +(interpreted exactly as if an error unwound the)Tj +T* +(process to its top level: if the process was)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +58 0 obj +<< +/Length 3426 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-16)Tj +/F1 1 Tf +10 0 0 10 342 568.26 Tm +(designated )Tj +/TT8 1 Tf +5.297 0 TD +(RESTARTABLE)Tj +/F1 1 Tf +6.6011 0 TD +( = )Tj +/TT8 1 Tf +1.162 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, it is restarted;)Tj +-13.6602 -1.323 TD +(otherwise it is killed.)Tj +/TT8 1 Tf +-13.682 -1.9 TD +(HELP)Tj +/F1 1 Tf +2.4004 0 TD +[( \(initially Control-G\))-1799.6(A menu of processes is presented to the user, who is)]TJ +11.2816 -1.323 TD +(asked to select which one the interrupt should)Tj +0 -1.2 TD +(occur in. The current tty process appears with a *)Tj +T* +(next to its name at the top of the menu. The menu)Tj +T* +(also includes an entry "[Spawn Mouse]", for the)Tj +T* +(common case of needing a mouse because the)Tj +T* +(mouse process is currently tied up running)Tj +T* +(someones )Tj +/TT8 1 Tf +4.908 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +(; selecting this entry)Tj +-12.7093 -1.323 TD +(spawns a new mouse process, and no break occurs.)Tj +/TT8 1 Tf +-14.226 -1.9 TD +(BREAK)Tj +/F1 1 Tf +3.0005 0 TD +[( \(initially Control-B\))-1799.5(Performs the )]TJ +/TT8 1 Tf +17.5215 0 TD +(HELP)Tj +/F1 1 Tf +2.4004 0 TD +( interrupt in the mouse process,)Tj +-8.6964 -1.323 TD +(if the mouse is not in its idle state; otherwise it is)Tj +0 -1.2 TD +(performed in the tty process.)Tj +/TT8 1 Tf +-13.89 -1.9 TD +(RUBOUT)Tj +/F1 1 Tf +3.6006 0 TD +( \(initially )Tj +/TT8 1 Tf +4.557 0 TD +(DELETE)Tj +/F1 1 Tf +3.6006 0 TD +[(\))-1798.8(This interrupt clears typeahead in )]TJ +/F2 1 Tf +18.2998 0 TD +(all)Tj +/F1 1 Tf +1.24 0 TD +( processes.)Tj +/TT8 1 Tf +-31.208 -2.023 TD +(RAID, STACK OVERFLOW)Tj +4.8 -1.123 TD +(STORAGE FULL)Tj +/F1 1 Tf +9 0 TD +(These interrupts always occur in whatever process)Tj +0 -1.323 TD +(was running at the time the interrupt struck. In)Tj +0 -1.2 TD +(the cases of )Tj +/TT8 1 Tf +5.593 0 TD +(STACK OVERFLOW)Tj +/F1 1 Tf +8.4014 0 TD +( and )Tj +/TT8 1 Tf +2.297 0 TD +(STORAGE FULL)Tj +/F1 1 Tf +7.2012 0 TD +(,)Tj +-23.4925 -1.323 TD +(this means that the interrupt is more likely to)Tj +0 -1.2 TD +(strike in the offending process \(especially if it is a)Tj +T* +("runaway" process that is not blocking\). Note,)Tj +T* +(however, that this process is still not necessarily)Tj +T* +(the guilty party; it could be an innocent bystander)Tj +T* +(that just happened to use up the last of a resource)Tj +T* +(prodigiously consumed by some other process. )Tj +/TT4 1 Tf +14 0 0 14 102 187.24 Tm +(Keeping the Mouse Alive)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 183.65 m +582.01 183.65 l +S +BT +/F1 1 Tf +10 0 0 10 174 165.42 Tm +(Since the window mouse handler runs in its own process, it is not available while a)Tj +T* +(windows )Tj +/TT8 1 Tf +4.501 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +( function \(or any of the other window functions invoked by)Tj +-12.3023 -1.323 TD +(mouse action\) is running. This leads to two sorts of problems: \(1\) a long computation)Tj +0 -1.2 TD +(underneath a )Tj +/TT8 1 Tf +6.519 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +( deprives the user of the mouse for other purposes, and)Tj +-14.3203 -1.323 TD +(\(2\) code that runs as a )Tj +/TT8 1 Tf +10.557 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +( cannot rely on other )Tj +/TT8 1 Tf +9.852 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +(s running,)Tj +-36.0115 -1.323 TD +(which means that there some pieces of code that run differently from normal when run)Tj +0 -1.2 TD +(under the mouse process. These problems are addressed by the following functions:)Tj +ET +endstream +endobj +59 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +61 0 obj +<< +/Length 2504 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-17)Tj +/TT8 1 Tf +10 0 0 10 126 568.2 Tm +-0.0001 Tc +(\(SPAWN.MOUSE )Tj +/TT10 1 Tf +7.8001 0 TD +0 Tc +()Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +26.9857 0 TD +([Function])Tj +-32.386 -1.823 TD +(Spawns another mouse process, allowing the mouse to run even if it is currently)Tj +0 -1.2 TD +("tied up" under the current mouse process. This function is intended mainly to)Tj +T* +(be typed in at the Lisp executive when the user notices the mouse is busy.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +-0.0001 Tc +(\(ALLOW.BUTTON.EVENTS\) )Tj +/TT6 1 Tf +13.2002 0 TD +0 Tc +( )Tj +/F1 1 Tf +22.7858 0 TD +([Function])Tj +-32.386 -1.823 TD +(Performs a )Tj +/TT8 1 Tf +5.352 0 TD +(\(SPAWN.MOUSE\))Tj +/F1 1 Tf +7.8013 0 TD +( only when called underneath the mouse process.)Tj +-13.1533 -1.323 TD +(This should be called \(once, on entry\) by any function that relies on)Tj +/TT8 1 Tf +0 -1.2 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +(s for completion, if there is any possibility that the function)Tj +-7.8013 -1.323 TD +(will itself be invoked by a mouse function.)Tj +-3.6 -2.2 TD +(It never hurts, at least logically, to call )Tj +/TT8 1 Tf +18.207 0 TD +(SPAWN.MOUSE)Tj +/F1 1 Tf +6.6011 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(ALLOW.BUTTON.EVENTS)Tj +/F1 1 Tf +-26.3081 -1.323 TD +(needlessly, as the mouse process arranges to quietly kill itself if it returns from the)Tj +0 -1.2 TD +(users )Tj +/TT8 1 Tf +2.963 0 TD +(BUTTONEVENTFN)Tj +/F1 1 Tf +7.8013 0 TD +( and finds that another mouse process has sprung up in the)Tj +-10.7643 -1.323 TD +(meantime. \(There is, of course, some computational expense.\))Tj +/TT4 1 Tf +14 0 0 14 54 341.58 Tm +(Process Status Window)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 337.99 m +534.01 337.99 l +S +BT +/F1 1 Tf +10 0 0 10 126 319.76 Tm +(The background menu command )Tj +/TT8 1 Tf +15.39 0 TD +(PSW)Tj +/F1 1 Tf +1.8003 0 TD +( \(see Chapter 28\) and the function)Tj +/TT8 1 Tf +-17.1903 -1.323 TD +(PROCESS.STATUS.WINDOW)Tj +/F1 1 Tf +12.602 0 TD +( \(below\) create a "Process Status Window", that allows the)Tj +-12.602 -1.323 TD +(user to examine and manipulate all of the existing processes:)Tj +ET +q +202 0 0 -184 229.01 279.03 cm +/Im1 Do +Q +BT +10 0 0 10 126 75.3 Tm +(The window consists of two menus. The top menu lists all the processes at the moment.)Tj +0 -1.2 TD +(Commands in the bottom menu operate on the process selected in the top menu \()Tj +/TT8 1 Tf +37.336 0 TD +(EXEC)Tj +/F1 1 Tf +-37.336 -1.323 TD +(in the example above\). The commands are:)Tj +ET +endstream +endobj +62 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 63 0 R +>> +/XObject << +/Im1 64 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +66 0 obj +<< +/Length 3335 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-18)Tj +/TT8 1 Tf +10 0 0 10 181.32 568.26 Tm +(BT)Tj +/F1 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(BTV)Tj +/F1 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(BTV*)Tj +/F1 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(BTV!)Tj +/F1 1 Tf +4.1991 0 TD +(Displays a backtrace of the selected process.)Tj +/TT8 1 Tf +-4.2 -2.023 TD +(WHO?)Tj +/F1 1 Tf +4.2 0 TD +(Changes the selection to the tty process, i.e., the one currently)Tj +0 -1.323 TD +(in control of the keyboard.)Tj +/TT8 1 Tf +-4.587 -1.9 TD +(KBD)Tj +/TT11 1 Tf +1.8003 0 TD +<0040>Tj +/F1 1 Tf +2.7867 0 TD +(Associates the keyboard with the selected process; i.e., makes)Tj +0 -1.323 TD +(the selected process be the tty process.)Tj +/TT8 1 Tf +-4.2 -1.9 TD +(INFO)Tj +/F1 1 Tf +4.2 0 TD +(If the selected process has an )Tj +/TT8 1 Tf +13.778 0 TD +(INFOHOOK)Tj +/F1 1 Tf +4.8008 0 TD +( property, calls it.)Tj +-18.5788 -1.323 TD +(The hook may be a function, which is then applied to two)Tj +0 -1.2 TD +(arguments, the process and the button \()Tj +/TT8 1 Tf +18.464 0 TD +(LEFT)Tj +/F1 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(MIDDLE)Tj +/F1 1 Tf +3.6006 0 TD +(\) used)Tj +-25.965 -1.323 TD +(to invoke )Tj +/TT8 1 Tf +4.501 0 TD +(INFO)Tj +/F1 1 Tf +2.4004 0 TD +(, or a form, which is simply )Tj +/TT8 1 Tf +12.798 0 TD +(EVAL)Tj +/F1 1 Tf +2.4004 0 TD +(ed. The)Tj +/TT8 1 Tf +-22.0998 -1.323 TD +(APPLY)Tj +/F1 1 Tf +3.0005 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(EVAL)Tj +/F1 1 Tf +2.4004 0 TD +( happens in the context of the selected process,)Tj +-6.9009 -1.323 TD +(using )Tj +/TT8 1 Tf +2.815 0 TD +(PROCESS.APPLY)Tj +/F1 1 Tf +7.8013 0 TD +( or )Tj +/TT8 1 Tf +1.5 0 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +(. The )Tj +/TT8 1 Tf +2.89 0 TD +(INFOHOOK)Tj +/F1 1 Tf +-22.2074 -1.323 TD +(process property can be set using )Tj +/TT8 1 Tf +15.574 0 TD +(PROCESSPROP)Tj +/F1 1 Tf +6.6011 0 TD +( \(see the)Tj +-22.1751 -1.323 TD +(Creating and Destroying Processes section above\).)Tj +/TT8 1 Tf +-4.8 -1.9 TD +(BREAK)Tj +/F1 1 Tf +4.8 0 TD +(Enter a break under the selected process. This has the side)Tj +0 -1.323 TD +(effect of waking the process with the value returned from the)Tj +0 -1.2 TD +(break.)Tj +/TT8 1 Tf +-4.2 -1.9 TD +(KILL)Tj +/F1 1 Tf +4.2 0 TD +(Deletes the selected process.)Tj +/TT8 1 Tf +-6 -2.023 TD +(RESTART)Tj +/F1 1 Tf +6 0 TD +(Restarts the selected process.)Tj +/TT8 1 Tf +-4.2 -2.023 TD +(WAKE)Tj +/F1 1 Tf +4.2 0 TD +(Wakes the selected process. Prompts for a value to wake it)Tj +0 -1.323 TD +(with \(see )Tj +/TT8 1 Tf +4.445 0 TD +(WAKE.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +(\).)Tj +/TT8 1 Tf +-17.6462 -2.023 TD +(SUSPEND)Tj +/F1 1 Tf +6 0 TD +(Suspends the selected process; i.e., causes it to block)Tj +0 -1.323 TD +(indefinitely \(until explicitly woken\).)Tj +/TT8 1 Tf +-12 -2.206 TD +(\(PROCESS.STATUS.WINDOW)Tj +/F1 1 Tf +13.2 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(WHERE)Tj +/TT8 1 Tf +3.944 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +17.3638 0 TD +([Function])Tj +-32.386 -1.823 TD +(Puts up a process status window that provides several debugging commands for)Tj +0 -1.2 TD +(manipulating running processes. If the window is already up,)Tj +/TT8 1 Tf +T* +(PROCESS.STATUS.WINDOW)Tj +/F1 1 Tf +12.602 0 TD +( refreshes it. If )Tj +/F2 1 Tf +7.37 0 TD +(WHERE)Tj +/F1 1 Tf +3.944 0 TD +( is a position, the window is)Tj +-23.9161 -1.323 TD +(placed in that position; otherwise, the user is prompted for a position.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT11 68 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +70 0 obj +<< +/Length 3812 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-19)Tj +/F1 1 Tf +10 0 0 10 162 568.26 Tm +(Currently, the process status window runs under the mouse process, like other)Tj +0 -1.2 TD +(menus, so if the mouse is unavailable \(e.g., a mouse function is performing an)Tj +T* +(extensive computation\), you may be unable to use the process status window)Tj +T* +(\(you can try )Tj +/TT8 1 Tf +5.796 0 TD +(SPAWN.MOUSE)Tj +/F1 1 Tf +6.6011 0 TD +(, of course\).)Tj +/TT4 1 Tf +14 0 0 14 54 485.85 Tm +(Non-Process Compatibility)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 482.26 m +534.01 482.26 l +S +BT +/F1 1 Tf +10 0 0 10 126 464.03 Tm +(This section describes some considerations for authors of programs that ran in the old)Tj +0 -1.2 TD +(single-process Interlisp-D environment, and now want to make sure they run properly)Tj +T* +(in the Multi-processing world. The biggest problem to watch out for is code that runs)Tj +T* +(underneath the mouse handler. Writers of mouse handler functions should remember)Tj +T* +(that in the process world the mouse handler runs in its own process, and hence \(a\) you)Tj +T* +(cannot depend on finding information on the stack \(stash it in the window instead\), and)Tj +T* +(\(b\) while your function is running, the mouse is not available \(if you have any non-)Tj +T* +(trivial computation to do, spawn a process to do it, notify one of your existing processes)Tj +T* +(to do it, or use )Tj +/TT8 1 Tf +6.853 0 TD +(PROCESS.EVAL)Tj +/F1 1 Tf +7.2012 0 TD +( to run it under some other process\).)Tj +-14.0542 -2.023 TD +(The following functions are meaningful even if the process world is not on: )Tj +/TT8 1 Tf +34.613 0 TD +(BLOCK)Tj +/F1 1 Tf +-34.613 -1.323 TD +(\(invokes the system background routine, which includes handling the mouse\);)Tj +/TT8 1 Tf +0 -1.2 TD +(TTY.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +(, )Tj +/TT8 1 Tf +0.556 0 TD +(THIS.PROCESS)Tj +/F1 1 Tf +7.2012 0 TD +( \(both return )Tj +/TT8 1 Tf +6.222 0 TD +(NIL)Tj +/F1 1 Tf +1.8003 0 TD +(\); and )Tj +/TT8 1 Tf +2.908 0 TD +(TTY.PROCESSP)Tj +/F1 1 Tf +7.2012 0 TD +( \(returns )Tj +/TT8 1 Tf +4.351 0 TD +(T)Tj +/F1 1 Tf +0.6001 0 TD +(, i.e.,)Tj +-37.4408 -1.323 TD +(anyone is allowed to take tty input\). In addition, the following two functions exist in)Tj +0 -1.2 TD +(both worlds:)Tj +/TT8 1 Tf +0 -2.206 TD +(\(EVAL.AS.PROCESS)Tj +/F2 1 Tf +9.6 0 TD +( FORM)Tj +/TT8 1 Tf +3.408 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +21.7778 0 TD +([Function])Tj +-32.386 -1.823 TD +(Same as )Tj +/TT8 1 Tf +4.15 0 TD +(\(ADD.PROCESS)Tj +/F3 1 Tf +7.2012 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FORM)Tj +/F3 1 Tf +3.13 0 TD +( )Tj +/TT8 1 Tf +0.287 0 TD +(RESTARTABLE NO\))Tj +/F1 1 Tf +10.2017 0 TD +(, when processes are)Tj +-25.2568 -1.323 TD +(running, )Tj +/TT8 1 Tf +4.296 0 TD +(EVAL)Tj +/F1 1 Tf +2.4004 0 TD +( when not. This is highly recommended for mouse functions that)Tj +-6.6964 -1.323 TD +(perform any non-trivial activity.)Tj +/TT8 1 Tf +-3.6 -2.206 TD +(\(EVAL.IN.TTY.PROCESS)Tj +/F1 1 Tf +12 0 TD +( )Tj +/F2 1 Tf +0.278 0 TD +(FORM WAITFORRESULT)Tj +/TT8 1 Tf +12.613 0 TD +(\) )Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/F1 1 Tf +9.8948 0 TD +([Function])Tj +-32.386 -1.823 TD +(Same as )Tj +/TT8 1 Tf +4.15 0 TD +(\(PROCESS.EVAL \(TTY.PROCESS\))Tj +/F3 1 Tf +16.2026 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(FORM)Tj +/F3 1 Tf +3.13 0 TD +( )Tj +/F2 1 Tf +0.287 0 TD +(WAITFORRESULT)Tj +/TT8 1 Tf +9.205 0 TD +(\))Tj +/F1 1 Tf +0.6001 0 TD +(, when)Tj +-33.8617 -1.323 TD +(processes are running, )Tj +/TT8 1 Tf +10.703 0 TD +(EVAL)Tj +/F1 1 Tf +2.4004 0 TD +( when not.)Tj +-16.7034 -2.323 TD +(Most of the process functions that do not take a process argument can be called even if)Tj +0 -1.2 TD +(processes arent running. )Tj +/TT8 1 Tf +12.185 0 TD +(ADD.PROCESS)Tj +/F1 1 Tf +6.6011 0 TD +( creates, but does not run, a new process \(it)Tj +-18.7861 -1.323 TD +(runs when )Tj +/TT8 1 Tf +5.185 0 TD +(PROCESSWORLD)Tj +/F1 1 Tf +7.2012 0 TD +( is called\).)Tj +ET +endstream +endobj +71 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 15 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +64 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 202 +/Height 184 +/BitsPerComponent 1 +/ImageMask true +/Length 4785 +>> +stream +??????0?7?7?7oo{?7}﷿}7?7}w}?7}r}?7}?7}}?7}}}緻?7}}}o{?7?7?7?7?7o?}?7o7{?7߯nw?7߯mw/?7wWmw_?7wkwo?7Wgww?7o`ǎ a??????????۸<}݃w??7n~{ٿw??7n~{ٿo??~}տ_??z|Շ??yn~{Ϳw??n~{Ϳw??> +endobj +72 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +73 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +74 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +75 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +76 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +77 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBLEPK+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 78 0 R +>> +endobj +78 0 obj +<< +/Filter /FlateDecode +/Length 20020 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($CkE`KR8-r}`flh@ _4H#ZKS))T)Bȇآ"-P)@z&@?ޙ{f3 +uТoEfdq +P w,ed( ^GT, "- ౭eZEH; EMaOXRc X041%p>0L⪜5-P;6=Qq5_JN*uPiRnVU#^xŁjp֒5Wz4|2 R<^rG7_@1H!7/P.AOrn̂f ITy.~z-8zLfw'LLKcp&&DzL𣔎ј'3zLR'I7}123O_zI̼2ɾXIWw.c|=w>~0{13ZqމE2՚s J!34CXeR#6ql\mcOڸƵ6>e6cu6>kzbcٸm|9%~*ΌzQфI&i0肄mC0X QլhBZLWp+*%aoĕ }YRt=VƔѐ+%&ݖx|u?+nL7R\KI0hIuˮb$j\~b:QѶyhhA5Oh5 Auok+uhQ8G!RMS1 =Y nN"a{MJZc&ngi'ĖxʩJu z@iNqlH#q fFOt'ؚ`7j4d7#GVe제VduӨybhF"JPņzuZ: VӇiD[->0oE; +̈bqk2ւO;ho-Bk,Ye˗4KOxӲeɌ"Kv[Ded3^(Q]oH}HD`B4f0g{M!~w|j?Mio0JS3$/t,ByI^r[XV,%.Ӓi_o^-[f^&;z1omyOo~+e}Л:fk7M .]v rc55 |',-u9˩|Kuƪkq7zj}R˪FwwzkjX0ƒ5Ȃ,-;>i/RA#9enx6 [ 8Uݥg]?LĒ776*w6:*36>~IRZm;sNUovhU<)_ ɟοp'Qd[Ӛѕ}Hs/ڵn9n8 +*؜٭ݚ>;̬2 AdVey}q.IYsvn`EkU/FKFA]'um3\P@ lRZUCQ hK+D4Ju&{l>>=w[.j RJF, z܅墋^&LȤben'TJrg۬#E&K~3 +KTѩ9`aZhK?ٮ91R9s^Vc@"#82F1JxQ&|v4BGX5PJ3&hdqpXխL)_Ci3\nWܙfJ0=Y$ cUBFڞvy^y3CݪkB\&UP+;^,7wg`BO^P}#?)Q X>PKI`M:cbBO\,^7}`Wv(Y* *ɮlUZ: Ʈ$Cl=3:R@FqEP5gF'Qls8^Keske]į35:{ܛ=5.]]VjoU튁9Ҫu~)'?SOtUYvAS$dtىy\/l[ Sg,JGpyCbK`P +lTC[1O9ՐK- +cvU-!cY:`?w*@:Ki94ԫ$:˲}Ln''"Anq#d7:Cty oC¥j,=?0i2ʡBH1_/k驘bwy&!qnġD ~7^p$EX<1A=d_S{4D1Q#LUI7$ I z*( + }k.5ǽ]-U:[w0ng^Ş'ʖΝc5t/{RP +${ԶK@Xv|Dr XNc>= 茳'cAg݆#cW3-ոgVo9:лkIc(= CuW}WV\מ@ L4@FZ}6Ö亮K-Qƺ\[#wuhjd7nn.$#껝4 ( 6:4ʷ@*ozڅS ]ԁ62,2UAF!@NwK0FFE"W$# H3$nF2m?'KiCld-Run0Nk0:tsmƵa;)`0&x|ʞ \x +bxkVW ڠ>xއ p.7ĉ8L! s|RC%+D#!*i%;dy$&&}DPB-F4h}Φg.yHF[=M?g3,=6Mel 'V*keM;>d'ia6)d>|)Fo{>.?? ?x_y<'6c>o Udi}l߱clͷ +vq=G[̒4G,XWzZCK{m`'j>ߘ;r~5\2sOw)"猄YH%]/٘N|شEd^ʐlHf|UP;ڴ*&5ҥ.hjv-+ML\YG?H.aY*/k{hTV7VF{ZhC-erfWJS^xвϹWGF7iH0o.Y-J陾3dUNCgЙJ/ey¦m˃xr2n16#48FK_6`VĎ:2PK6,$dD2K`=ze\JA-f|ɚh0XV<,]*hZc6Oܥ_r&De1#{imcEGAɺdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLZc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\*~[S1?ףꧾqܩE^/5IA# +hО%-e Oo_0hc 2~=ytLW,Z1ְZR+Ʈ17 f<6cY1fjhH2VQOhX,OtW"A_4Y.WYqKA\\\ 5s_>7)K_E{Eu]sܷ )ef.HZT6 (DhjgdL'QVFQ@֟V:hgĤ-љLkg@[c21v?^DQ;=?|ߏ]adUNuyʋ er #$BL,NƁJ11*Be,1_D2XmTbbC V|#VT8W X96c#!kE eTk\Q0GVy 1S3a>JFqtD ]-kw$4hH[uV"9>a*47JCo.") I_gE^pwi.JC% `_ԒT T/@$KWϻ̺*S֝8XHd'ϧeu27;r~V*kX P Ir#֮;lP}Q.cH3vP3ի DT>cm޼<(@${94;=`gsFT]IO P o%0&H=Vx"sIz`,O /}<$A*פM̩ 07JuP?ǻ[% tJcIݓBB:]HIȨ@LdU<JYcS,Gn:ހ[V :(>>/+Ed7;D2V. 5@* +!Iȼ";=CYWr\&_Ġ@<qR2:MMg +^Vjki Ӎt+mCf~zYzӋtI]"l)O0rfRYfhmRLtHNJg JפԀ1dkffcvd,Md4ɲYe?d~Vf>v =(y0!K0#wB =B$z,[= 3"Po +̋窼33& ?plO'c_6o +L~\JEۼ7aDl~~rFl ? ?+4Ia_aAP3Z>"Le@Dx2ׯiK!2ns*Ɨh[o(˳Hזr;uIgGf mQ3AyxGV44]~ƻҢ'= aPn ] ;SC}M\+ Ӧ׌X Nz^I)AqFj`;srjG8>7@t7V<팽)Ho,Ŋ|_Lp&h;‘&t *#DIq0Z F 5i s0H#-8Emo\ZLۿ}hhAaAeT?V6 mmCUH3Ƅ\:m5%yEÉ{A]ӂSn2VrkHEІ \K*o_]RsED0'5{Ԝ=e33}/<3GphAeGIq?ڝy'm< u%symw궙UokفL$-ߞ@GPm>hO +f^ű4<ᐹ>GvϞ>nBJ DuoukKpIoUQdS5;lՖnh{V(XrtCmaO+Z%=yЎ~vxa4_3'ޓ.:Nq@X[[+J!R* mCٹ&ݩ[=SoO~\vk D "^tϕq]q\3\d5>IY(lַ3-Ά-mq_y܃}UB9z{Nwtq-Ϝ-]PZYXߜ]* ?2|k+]d}vgNB|ⶒȮB/3SQ + BɓYbD6킡<5꫉4&I+3ehUw|,8'iTlvmʬfYD3'3sGXSR9RP S`Pz l;a܅z2X+QO= `#B;v^8%TG\Eu +ۨއ8H6UDUEFTV3ȭ&[,%zz#$&o7y(͠~KC}UHo~VҹEK%>>B4B[hcO ?efcQk]ngլga^Vըf&~ W*Nfϲ. E/+A|QBW#x51uycDcܻ^d:B(F;g=݋*yGZ?ڥWRB2+c7* y(L&ڽ|4ͫ`ugq71uюd4\§& +LR$1$gV\A@v9Lp_D?WXUM&/I _7 /Ұ, I<U3Lxlca b `!iYl#BbS,?OE;y-o2g}LcA=KA<1&*CJՂl{0Sx)0(]GlGFEӿ22 yc@:'AvMcv{^i?8~.7&PyIs mEw`Ɛ{k^Q孢"|r< #W `@/7_/,x^x,d Y4 YAUKEI0h1R0q[eV/Sa[b~u:$s:(۠Їud}=񯙭xRdNK,r/ 4,20dpɲF}OaT!?ߒa`} }UQrGKyϸaؼT5eag{JdnY朅{`N5Eh"5yF\tZP'd=Ci-lgl6oGhas6Hr˗`mvˆAsnn-Q*x- v Tź2QTGPUl,>"OoR_Ρ #T; " n"YׁҶ\+Lę5#X.H*=$d`9l2q="Xpd1'Н[c\A$/:FW'G8sAmeJdcQC͠ẩd>ZeY"(ÿɯ82nwڷ3G.>D0GJJny@(( `DeNCr]!Q# UK}dRpƠ*U8nfwk'm@H̃|;;Fۡ,8hZl ZdZdO}lj- Z<@UZ|-̢&-*&a׽j5sR}\I`c٥ʼnftg̫‡oMqe␥wcB ֬u=5Ƙע >Y6ޝRrT9UpdqJvG,Ȉş%ȼ~ś-;zR" ZxTQgЂM -5uf -te6xx]yz,1tJǬRBcl[Vά5&ހ^]AN-o]3qnu-]X,h9\.lwY8B{B֝^QYOFH/ZE/J. Š?瑅di +)y5kɹNPl \ҢITf1h->.]F/Wyc,c'j`-ʴ$-pEg@]zZ`0~(8BĪs_Z1N=l⠴ Jܭ [QNB*-({֩="E߻՞CtšTz@Zㅭ}cNF=(nd*x=a-~^9dbN)#O`Π}7c +гHKqba9B@3ZB5-&XV qofNSS 6[+Ov00tVWxԍ&,5F5aYW(p "k-i -Iw NZ~ XO߅mg%Ф9vim# -Bз7J4÷<<y sX>?_‹[=4-x7B0F%?"2yw-PƔq3 ה S{*?U~jwvE1_(TS- .F"]cBD +k<450kGqTԪ1&>cm|cE;?#j<;;?Nӓszv0 7Kd)lb\ճl=Ķ61vO/_|_工pIVi4F*H"QIP:"\6 r%;KrH~]^/{? M)J?GJ2YyYQ+wU+GYs_%SeU[/YT3LuTruG#\pf&QQJEKdYA-(WUpA 1 H"I +h=ItA:uVy4WOaPb@7FB!=DpQ>J0"u# >2A\C`PFnF`TQĬGlCIo ]Ojp)D"Tp8D} I%$*`Y QBa:>@Hvu{gK|>D7 s +`6Hxr=tM6u2{U =p燢=kuVZZvݾVTցu'<ֱ7Wz9[;"G_!/гcc:JuxqI #K?%Ż ~b|iVȴ^9Sgf$jǎ +-c_+ jeu[5 G%7飯k#`Fۥ{[sGfXXt:@G-~^te3啻:7?s"_֣ܵJ&/w}9{_;_3Ns# k_]WUoى,ky0şkX[΄j@Nw W/BE7nyyGĥֶ4"s/- JB!^kίNlCܔ%;ey [`xI*Rr"UB Q/jeYwuW_>x0ô6H\c-Ug,'MUcʳܬ|f ˸.fs.Ȋ3 .8cLmk}ۀ'U]W]!hrwD88ɢnKJO$M77vG){u½8Wfx%pZ zwI+>> (z(b!C$ܵV{ @6 <oM*7ey͂`TA-,k%p1yg5Ѥ7#$t2 %Nrh2L IJJIy"d>fmd!%Kj !+HYMb0A8&a^x\%7H;*N4>b2MtͤvGbEt*Fg`XNaXCet]g6 s(ы2F7h;E;i0 egF(֋a,YX:qJM%.`fѤ\6ΩvYRݚQ|Wh@䱒'$Ǔ>Hy6:DɱQ8މUB1s~P# ;'j?؟؂6ժUr}!VXjՆ#|gKj\WMƁOTx]O;cYlػk!pݏׅʂt¬#5psGjqGjlSc햎OʮLk7z-)-* (vr1wD;kiFbC 8XOG~ +99ỳ5_p'[g`7JX#,*ػ.M6 umgPaeAq)$mzo%iѴMoNsi4i~ܤxAqT'YEeaADtXpayA\a޹ b9P]|H=8|N%jS_=`vJ݇D߿SBʿL@2PRWzA_yJe{W!KP:_z{QS|Bq7(=*g$d&~:ۥ73R׈w˯SYb;TBpظVzH>O~ݽ#6 %zǕP*o{|]PRya/!G?9.oOwp1nO'侶vոaʳW|_dz6[x Nc܈SqVcZ\#dӌX}I3S7~"GgrG3L<㍱G +Иt Gb"郴!VIXjbUnQ˲*kF cS27mXAU+ f^Yìzcc'ZU9MJs/?x~ӝgl??:{6>k~~/+‚ٮ,j1V$*EK"Q|g4QAӈ(FԤi|`|w{gt&t:?;s{O ^=;a ߗtHX?%6:3Ϧ{D;;,[>f?&M4l״$dnUfK[XӖg&L"o)>_X` +I;sIf dow^ +SSsyn}w/;F~gZ5u?hZ`tá֯O>Mޘw2|M}Dϛsݒ7c/6շͮSD:~2eV櫕c^4^܁mGkr$_Xq87.3ԃF2_We=dx_yai;V/mI7v+T|Wf|)Zv+׵M-1~HKӥQS.kO]xD/qXbוΝ}fU{3YpkPΨUX5P3R^t22MoL)7E\R1{`ZYigF6)#Q[[neGoA%B"RJ&L`*P)MMsACȟHg׸SSHZ(}P/Oh7dA4ƙyFBӞ^GPoΆɩ٦ȓTd%YR2C%Z`7/|w;mvM|rހ|IoLC +^/;`;-x 5xޥYȹe%BnShNA> 6ǩ%&<~QxzXZə-5\[?UHU᣾1?%$mvT;QSP>QoG{iNDO{--|B,A2p71+`~y;{)4%Jhr=i;m#3C^>@m b&z zֿkXWNiú\5}ewiV2p},!T)@'Ζ|X-y{U"3sGNXdЈh5 .('~T4|sO\ga5zr)42ͥL\X22mĺ ~&42N8S)`28@OF s$p"L'`Cƃq`,8vG:Wѐ@3ٌ<5#@זy y8 +Y'S00 }-rء HL?2}$/@3rܳ~/Jy:s=-t}ȍnsC4 +Y:VPuAt9CjA't5T*(E2@l)вSXǭg?4!I[Z,e~27uKJby;6_Gh'vK\**vEsղ݉ZNvx/.뉫/' o~l"/7-/7k>/<'-o_=m=KsR` T8Yʉ8ĂYDa,G0;Xz?!E4CqQM -| iyb8_ևYsnInTvazF:*I-9J"N7nw лSԝ%{w_n8?3O=,Iɒk{!UZ I) 'GRR(JxIwa&ndru3%M@XJW<2>ޭH2Zվ?^Ҭ[i{n~T"Lꓨm8hͩGV%Q/=lšo,i,k֌9?|=?Olߠ9(38<=:,M//X0F\Sc4Mi.%W,9> +endobj +80 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +81 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 151 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 481 333 606 333 606 606 +0 606 204 556 389 1000 500 500 333 1000 630 259 1000 606 611 606 +606 204 204 389 389 606 556 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 79 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 151 +/Widths [278 333 400 556 556 833 852 278 333 333 500 606 278 333 278 606 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +747 704 722 722 778 722 667 778 833 407 611 741 667 944 815 778 +667 778 741 667 685 815 704 926 704 685 667 333 606 333 606 500 +333 574 556 444 611 444 333 537 611 333 315 556 333 889 611 500 +574 556 444 444 352 611 519 778 500 500 463 333 606 333 606 606 +0 606 204 556 389 1000 500 500 333 1000 667 333 981 606 667 606 +606 204 204 389 389 606 500 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 80 0 R +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 146 +/Widths [287 296 333 574 574 833 852 241 389 389 500 606 278 333 278 278 +574 574 574 574 574 574 574 574 574 574 278 278 606 606 606 500 +747 759 778 778 833 759 722 833 870 444 648 815 722 981 833 833 +759 833 815 667 722 833 759 981 722 722 667 389 606 389 606 500 +333 611 648 556 667 574 389 611 685 370 352 667 352 963 685 611 +667 648 519 500 426 685 611 889 611 611 537 389 606 389 606 606 +0 606 241 574 481 1000 500 500 333 1000 667 333 1000 606 667 606 +606 241 241 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 81 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 72 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 0 778 722 278 0 722 0 833 722 778 +667 0 722 667 611 0 0 944 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 73 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 74 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 0 0 0 0 600 0 600 600 600 0 600 0 600 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 600 0 0 0 0 600 0 0 600 0 600 600 +0 0 0 0 600 600 0 0 600 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 75 0 R +>> +endobj +63 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 151 +/LastChar 151 +/Widths [600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 76 0 R +>> +endobj +68 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBLEPK+Symbol +/Encoding /Identity-H +/DescendantFonts [ 82 0 R ] +/ToUnicode 83 0 R +>> +endobj +82 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBLEPK+Symbol +/FontDescriptor 77 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +83 0 obj +<< +/Filter /FlateDecode +/Length 218 +>> +stream +HTPN0 91$nAK8D {.qK$Dn:IJ{lyi[ acᆣ'8omN&nN- Z<Z?+;dOcgF%o(hp8yy1LkD^E64"JUs$~n2,J?F/r݈]H ߉!Gsj +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +25 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 27 0 R +/Contents 26 0 R +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 30 0 R +/Contents 29 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 39 0 R +/Contents 38 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +48 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 50 0 R +/Contents 49 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +57 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 59 0 R +/Contents 58 0 R +>> +endobj +60 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 62 0 R +/Contents 61 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +69 0 obj +<< +/Type /Page +/Parent 44 0 R +/Resources 71 0 R +/Contents 70 0 R +>> +endobj +84 0 obj +<< +/S /D +>> +endobj +85 0 obj +<< +/Nums [0 84 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 16 0 R 19 0 R 22 0 R 25 0 R 28 0 R 31 0 R 34 0 R 37 0 R] +/Count 10 +/Parent 43 0 R +>> +endobj +44 0 obj +<< +/Type /Pages +/Kids [40 0 R 45 0 R 48 0 R 51 0 R 54 0 R 57 0 R 60 0 R 65 0 R 69 0 R] +/Count 9 +/Parent 43 0 R +>> +endobj +43 0 obj +<< +/Type /Pages +/Kids [11 0 R 44 0 R ] +/Count 19 +/MediaBox [0 0 612 792] +>> +endobj +86 0 obj +<< +/CreationDate (D:20210202102707-06'00') +/ModDate (D:20210202102707-06'00') +/Producer (Apple pstopdf) +>> +endobj +87 0 obj +<< +/Type /Catalog +/Pages 43 0 R +/PageLabels 85 0 R +>> +endobj +xref +0 88 +0000000000 65535 f +0000111874 00000 n +0000000016 00000 n +0000003537 00000 n +0000107806 00000 n +0000108467 00000 n +0000109768 00000 n +0000109979 00000 n +0000110417 00000 n +0000110582 00000 n +0000085745 00000 n +0000113535 00000 n +0000111955 00000 n +0000003686 00000 n +0000008191 00000 n +0000109128 00000 n +0000112039 00000 n +0000008352 00000 n +0000012343 00000 n +0000112123 00000 n +0000012482 00000 n +0000017136 00000 n +0000112207 00000 n +0000017275 00000 n +0000021939 00000 n +0000112291 00000 n +0000022089 00000 n +0000027333 00000 n +0000112375 00000 n +0000027483 00000 n +0000032260 00000 n +0000112459 00000 n +0000032421 00000 n +0000036591 00000 n +0000112543 00000 n +0000036741 00000 n +0000042172 00000 n +0000112627 00000 n +0000042322 00000 n +0000042694 00000 n +0000112711 00000 n +0000042812 00000 n +0000047168 00000 n +0000113802 00000 n +0000113672 00000 n +0000112795 00000 n +0000047329 00000 n +0000052227 00000 n +0000112879 00000 n +0000052377 00000 n +0000056950 00000 n +0000112963 00000 n +0000057100 00000 n +0000062226 00000 n +0000113047 00000 n +0000062376 00000 n +0000066749 00000 n +0000113131 00000 n +0000066888 00000 n +0000070367 00000 n +0000113215 00000 n +0000070506 00000 n +0000073063 00000 n +0000111063 00000 n +0000080817 00000 n +0000113299 00000 n +0000073251 00000 n +0000076639 00000 n +0000111237 00000 n +0000113383 00000 n +0000076791 00000 n +0000080656 00000 n +0000085886 00000 n +0000086083 00000 n +0000086289 00000 n +0000086484 00000 n +0000086675 00000 n +0000086876 00000 n +0000087066 00000 n +0000107176 00000 n +0000107384 00000 n +0000107594 00000 n +0000111380 00000 n +0000111583 00000 n +0000113467 00000 n +0000113495 00000 n +0000113894 00000 n +0000114017 00000 n +trailer +<< +/Size 88 +/Root 87 0 R +/Info 86 0 R +/ID [<6854026c824afb4fabf3c5f86b373879><6854026c824afb4fabf3c5f86b373879>] +>> +startxref +114087 +%%EOF diff --git a/docs/medley-irm/23-SSTREAMS.TEDIT b/docs/medley-irm/23-SSTREAMS.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..67fedb22235f046aa418acb134b70e135bfb9b62 GIT binary patch literal 91563 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 M;P;OQ-oN> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(23. STREAMS AND FILES)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 564.99 m +510.01 564.99 l +S +BT +/TT6 1 Tf +9 0 0 9 78 542.54 Tm +0.1556 Tw +[(A stream is an object that provides an interface to a physical or logical device. The stream object)]TJ +0 -1.2222 TD +0.1244 Tw +[(contains local data and methods that operate on the stream object. Medleys general-purpose I/O)]TJ +T* +0.0222 Tw +[(functions take a stream as one of their arguments. Not every device is capable of implementing every)]TJ +T* +0.0456 Tw +[(I/O operation, while some devices offer special functions for that device alone. Such restrictions and)]TJ +T* +0.0211 Tw +(extensions are noted in the documentation of each device. The majority of the streams used in Medley)Tj +T* +0 Tw +(fall into two categories: file streams and image streams.)Tj +0 -2 TD +0.0622 Tw +(A file is a sequence of data stored on some device that allows the data to be retrieved at a later time.)Tj +0 -1.2222 TD +0.06 Tw +[(Files are identified by a name specifying their storage devices. Input or output to a file is performed)]TJ +T* +0.2722 Tw +(through a stream to the file, using )Tj +/TT8 1 Tf +17.1121 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.2722 Tw +[( \(below\). In addition, there are functions that)]TJ +-23.1131 -1.2889 TD +0 Tw +(manipulate the files themselves, rather than their data content.)Tj +0 -2 TD +0.0778 Tw +[(An image stream is an output stream to a display device, such as the display screen or a printer. In)]TJ +0 -1.2222 TD +0.2967 Tw +(addition to the standard output operations, an image stream implements a variety of graphics)Tj +T* +0.2222 Tw +[(operations, such as drawing lines and displaying characters in multiple fonts. Unlike a file, the)]TJ +T* +0 Tw +("content" of an image stream cannot be retrieved. Image streams are described in Chapter 26.)Tj +0 -2 TD +0.0933 Tw +(This chapter describes operations specific to file devices: how to name files, how to open streams to)Tj +0 -1.2222 TD +0 Tw +(files, and how to manipulate files on their devices.)Tj +/TT4 1 Tf +10 0 0 10 54 328.6 Tm +(Opening and Closing File Streams)Tj +ET +1 w +54.01 325.89 m +510.01 325.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 311.94 Tm +(To perform input from or output to a file, you must create a stream to the file, using )Tj +/TT8 1 Tf +37.2432 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(:)Tj +/TT8 1 Tf +-40.5775 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OPENSTREAM)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT14 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RECOG)Tj +/TT14 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PARAMETERS )Tj +/TT8 1 Tf +7.2012 0 TD +(\) )Tj +/TT16 1 Tf +10 0 0 10 330.1764 289 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 289 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.02 Tw +(Opens and returns a stream for the file specified by )Tj +/TT12 1 Tf +23.0931 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +(, a file name. )Tj +/TT12 1 Tf +6.1879 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +[( can be either)]TJ +-34.0817 -1.2889 TD +0.0467 Tw +[(a string or a symbol. The syntax and manipulation of file names is described at length in)]TJ +0 -1.2222 TD +0 Tw +(the )Tj +/TT8 1 Tf +1.7072 0 TD +(FILENAMES)Tj +/TT6 1 Tf +5.4009 0 TD +0.07 Tw +[( section below. Incomplete file names are interpreted with respect to the)]TJ +-7.1081 -1.2889 TD +0 Tw +(connected directory \(below\).)Tj +/TT12 1 Tf +0 -2 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.2422 Tw +[( specifies the recognition mode of )]TJ +/TT12 1 Tf +16.5417 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2422 Tw +[( \(below\). If )]TJ +/TT12 1 Tf +6.2579 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.4922 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.4922 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2422 Tw +(, it defaults)Tj +-34.5859 -1.2889 TD +0 Tw +(according to the value of )Tj +/TT12 1 Tf +11.1948 0 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT12 1 Tf +-14.7954 -2.0667 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( specifies the "access rights" to be used when opening the file. Possible values are:)Tj +/TT8 1 Tf +-2.6006 -2.2156 TD +(INPUT)Tj +/TT6 1 Tf +4.3333 0 TD +0.0656 Tw +[(Only input operations are permitted on the already existing file. Starts)]TJ +0 -1.2889 TD +0 Tw +(reading at the beginning of the file. )Tj +/TT12 1 Tf +16.0103 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( defaults to )Tj +/TT8 1 Tf +5.189 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-30.9333 -2.2156 TD +(OUTPUT)Tj +/TT6 1 Tf +4.9333 0 TD +0.0344 Tw +[(Only output operations are permitted on the initially empty file. Starts)]TJ +0 -1.2889 TD +0.0122 Tw +[(writing at the beginning of the file. While the file is open, other users or)]TJ +0 -1.2222 TD +0.0667 Tw +(processes are unable to open the file for either input or output. )Tj +/TT12 1 Tf +29.0014 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +-29.0014 -1.2889 TD +(defaults to )Tj +/TT8 1 Tf +4.939 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-10.4726 -2.2156 TD +(BOTH)Tj +/TT6 1 Tf +3.7333 0 TD +0.27 Tw +[(Both input and output operations are permitted on the file. Starts)]TJ +0 -1.2889 TD +0.2778 Tw +(reading or writing at the beginning of the file. )Tj +/TT12 1 Tf +23.5043 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.2778 Tw +[( defaults to)]TJ +/TT8 1 Tf +-26.5048 -1.2889 TD +0 Tw +(OLD/NEW)Tj +/TT6 1 Tf +4.2007 0 TD +0.1756 Tw +(. )Tj +/TT12 1 Tf +1.1011 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.4256 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.4256 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +0.1756 Tw +[( implies random access \(Chapter 25\), and)]TJ +-12.754 -1.4378 TD +0 Tw +(may not be possible for files on some devices)Tj +/TT16 1 Tf +10 0 0 10 352.9014 48.24 Tm +(.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 7184 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 85.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-2)Tj +/TT6 1 Tf +1.1667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 177.6 568.2 Tm +(APPEND)Tj +/TT6 1 Tf +4.9333 0 TD +0.2633 Tw +[(Only sequential output operations are permitted on the file. Starts)]TJ +0 -1.2889 TD +0.0956 Tw +(writing at the end of the file. )Tj +/TT12 1 Tf +13.8352 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.0956 Tw +[( defaults to )]TJ +/TT8 1 Tf +5.4756 0 TD +0 Tw +(OLD/NEW)Tj +/TT6 1 Tf +4.2007 0 TD +0.0956 Tw +(. )Tj +/TT12 1 Tf +0.9411 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.3456 0 TD +(=)Tj +-31.3993 -1.2889 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +( may not be allowed for files on some devices.)Tj +-6.2673 -2.0667 TD +(Note:)Tj +/TT12 1 Tf +3.3333 0 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.3 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3 0 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.05 Tw +[( implies that you intend to write a new or different)]TJ +-8.4013 -1.2889 TD +0.0267 Tw +(file, even if a version number was specified and the corresponding file)Tj +0 -1.2222 TD +0.0022 Tw +(already exists. Any previous contents of the file are discarded, and the)Tj +T* +0.0256 Tw +(file is empty immediately after the )Tj +/TT8 1 Tf +15.6177 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0256 Tw +[(. If you want to write)]TJ +-21.6187 -1.2889 TD +0.1233 Tw +(on an already existing file while preserving the old contents, the file)Tj +0 -1.2222 TD +0 Tw +(must be opened for access )Tj +/TT8 1 Tf +11.8042 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT12 1 Tf +-25.2461 -2.0667 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.1278 Tw +[( is a list of pairs )]TJ +/TT8 1 Tf +7.9034 0 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ATTRIB)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.9068 0 TD +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1278 Tw +(, where )Tj +/TT12 1 Tf +3.7746 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.1278 Tw +[( is a file attribute \(see)]TJ +/TT8 1 Tf +-29.9876 -1.2889 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0078 Tw +[( below\). A non-list )]TJ +/TT12 1 Tf +8.7279 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.0078 Tw +[( in )]TJ +/TT12 1 Tf +1.3886 0 TD +0 Tw +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.0078 Tw +[( is treated as the pair )]TJ +/TT8 1 Tf +9.4759 0 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ATTRIB)Tj +/TT8 1 Tf +-36.3951 -1.2889 TD +(T\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0489 Tw +[(. Generally speaking, attributes that belong to the permanent file \(e.g., )]TJ +/TT8 1 Tf +31.9763 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0489 Tw +(\) can only)Tj +-35.5769 -1.2889 TD +0.0756 Tw +(be set when creating a new file, while attributes that belong only to a particular opening)Tj +0 -1.2222 TD +0.1056 Tw +(of a file \(e.g., )Tj +/TT8 1 Tf +6.3133 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.1056 Tw +(\) can be set on any call to )Tj +/TT8 1 Tf +12.1286 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1056 Tw +[(. Not all devices)]TJ +-32.2442 -1.2889 TD +0 Tw +(honor all attributes; those not recognized by a particular device are simply ignored.)Tj +0 -2 TD +0.2267 Tw +(In addition to the attributes permitted by )Tj +/TT8 1 Tf +19.9968 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.2267 Tw +(, the following attributes are)Tj +-26.5979 -1.2889 TD +0 Tw +(accepted by )Tj +/TT8 1 Tf +5.4932 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +( as values of )Tj +/TT12 1 Tf +5.6646 0 TD +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +( in its )Tj +/TT12 1 Tf +2.6641 0 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +( argument:)Tj +/TT8 1 Tf +-35.6243 -2.0667 TD +(DONT.CHANGE.DATE)Tj +/TT6 1 Tf +11.5333 0 TD +(If )Tj +/TT12 1 Tf +0.9299 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.01 Tw +[( is non-)]TJ +/TT8 1 Tf +3.2778 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.01 Tw +(, the files creation date is not changed when the file)Tj +-9.0085 -1.2889 TD +0.0289 Tw +[(is opened. This option is meaningful only for old files opened for )]TJ +/TT8 1 Tf +29.5914 0 TD +0 Tw +(BOTH)Tj +/TT6 1 Tf +-29.5914 -1.2889 TD +0.0511 Tw +[(access. You should use this only for specialized applications where the)]TJ +0 -1.2222 TD +0.0267 Tw +(caller does not want the file system to believe the files content has been)Tj +T* +0 Tw +(changed.)Tj +/TT8 1 Tf +-7.3333 -2.1489 TD +(SEQUENTIAL)Tj +/TT6 1 Tf +7.3333 0 TD +(If )Tj +/TT12 1 Tf +1.3044 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.3844 Tw +[( is non-)]TJ +/TT8 1 Tf +4.0267 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3844 Tw +(, this opening of the file need support only)Tj +-10.1318 -1.2889 TD +0.0478 Tw +(sequential access; i.e., the caller intends never to use )Tj +/TT8 1 Tf +23.6595 0 TD +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.0478 Tw +[(. For)]TJ +-29.6605 -1.2889 TD +0.26 Tw +(some devices, sequential access to files is much more efficient than)Tj +0 -1.2222 TD +0.02 Tw +[(random access. Note that the device may choose to ignore this attribute)]TJ +T* +0.1533 Tw +[(and still open the file in a manner that permits random access. Also)]TJ +T* +0 Tw +(note that this attribute does not make sense with )Tj +/TT12 1 Tf +21.6929 0 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-34.1273 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.0966 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +[( is not recognized by the file system, )]TJ +/TT8 1 Tf +17.6975 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1767 Tw +[( causes the error )]TJ +/TT8 1 Tf +8.1774 0 TD +0 Tw +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.4267 0 TD +(NOT)Tj +-38.1999 -1.2889 TD +(FOUND)Tj +/TT6 1 Tf +3.0005 0 TD +0.0289 Tw +[(. Ordinarily, this error is intercepted via an entry on )]TJ +/TT8 1 Tf +23.7314 0 TD +0 Tw +(ERRORTYPELST)Tj +/TT6 1 Tf +7.2012 0 TD +0.0289 Tw +[( \(Chapter 24\),)]TJ +-33.933 -1.2889 TD +0.41 Tw +(which causes )Tj +/TT8 1 Tf +6.9264 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.41 Tw +[( \(see the Searching File Directories below\) to be called.)]TJ +/TT8 1 Tf +-12.3273 -1.2889 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0089 Tw +[( searches alternate directories and possibly attempts spelling correction on the)]TJ +-5.4009 -1.2889 TD +0.0644 Tw +[(file name. Only if )]TJ +/TT8 1 Tf +8.4995 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0644 Tw +[( is unsuccessful will the )]TJ +/TT8 1 Tf +11.0346 0 TD +0.1544 Tw +(FILE NOT FOUND)Tj +/TT6 1 Tf +8.7103 0 TD +0.0644 Tw +[( error actually)]TJ +-33.6452 -1.2889 TD +0 Tw +(occur.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +1.1099 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.19 Tw +[( exists but cannot be opened, )]TJ +/TT8 1 Tf +14.1424 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.19 Tw +[( causes one of several other errors:)]TJ +/TT8 1 Tf +-23.6537 -1.2889 TD +0.2289 Tw +(FILE WONT OPEN)Tj +/TT6 1 Tf +9.4592 0 TD +0.0956 Tw +[( if the file is already opened for conflicting access by someone else;)]TJ +/TT8 1 Tf +-9.4592 -1.2889 TD +0.3033 Tw +(PROTECTION VIOLATION)Tj +/TT6 1 Tf +12.3053 0 TD +0.1267 Tw +[( if the file is protected against the operation; )]TJ +/TT8 1 Tf +20.7997 0 TD +0.3033 Tw +(FILE SYSTEM)Tj +-33.105 -1.2889 TD +0 Tw +(RESOURCES EXCEEDED)Tj +/TT6 1 Tf +10.8018 0 TD +( if there is no more room in the file system.)Tj +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +19 0 obj +<< +/Length 6362 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-3)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT8 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.2493 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 169.0544 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes )Tj +/TT12 1 Tf +3.1559 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0333 Tw +[( and returns its full file name. Generates an error, )]TJ +/TT8 1 Tf +22.6299 0 TD +0.0811 Tw +(FILE NOT OPEN)Tj +/TT6 1 Tf +7.9635 0 TD +0.0333 Tw +(, if )Tj +/TT12 1 Tf +1.4407 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +-37.5903 -1.2889 TD +0.2289 Tw +[(does not designate an open stream. After closing a stream, no further input/output)]TJ +0 -1.2222 TD +0 Tw +(operations are permitted on it.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +1.1199 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2 Tw +[( is )]TJ +/TT8 1 Tf +1.6148 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2 Tw +(, it is defaulted to the primary input stream if that is not the terminal)Tj +-6.9354 -1.2889 TD +0.2189 Tw +[(stream, or else the primary output stream if that is not the terminal stream. If both)]TJ +0 -1.2222 TD +0.0078 Tw +(primary input and output streams are the terminal input/output streams, )Tj +/TT8 1 Tf +32.9347 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0078 Tw +[( returns)]TJ +/TT8 1 Tf +-36.5353 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1878 Tw +[(. If )]TJ +/TT8 1 Tf +2.2333 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1878 Tw +[( closes either the primary input stream or the primary output stream)]TJ +-7.6341 -1.2889 TD +0.0289 Tw +(\(either explicitly or in the )Tj +/TT12 1 Tf +11.5673 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.2789 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.2789 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0289 Tw +[( case\), it resets the primary stream for that direction)]TJ +-16.9259 -1.2889 TD +0.0711 Tw +[(to be the corresponding terminal stream. See Chapter 25 for information on the primary)]TJ +0 -1.2222 TD +0 Tw +(input/output streams.)Tj +/TT8 1 Tf +0 -2 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0001 Tc +0.0043 Tw +( \(below\) allows you to "advise" )Tj +/TT8 1 Tf +13.9705 0 TD +0 Tc +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0001 Tc +0.0043 Tw +( to perform various operations when a)Tj +-22.972 -1.2889 TD +0 Tc +0 Tw +(file is closed.)Tj +0 -2 TD +0.2222 Tw +(Because of buffering, the contents of a file open for output are not guaranteed to be)Tj +0 -1.2222 TD +0.1678 Tw +(written to the actual physical file device until )Tj +/TT8 1 Tf +21.5439 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1678 Tw +[( is called. Buffered data can be)]TJ +-25.1445 -1.2889 TD +0.06 Tw +(forced out to a file without closing the file by using the function )Tj +/TT8 1 Tf +29.1618 0 TD +0 Tw +(FORCEOUTPUT)Tj +/TT6 1 Tf +6.6011 0 TD +0.06 Tw +[( \(Chapter)]TJ +-35.7629 -1.2889 TD +0 Tw +(25\).)Tj +0 -2 TD +0.0467 Tw +[(Some network file devices perform their transactions in the background. As a result, it is)]TJ +0 -1.2222 TD +0.1122 Tw +(possible for a file to be closed by )Tj +/TT8 1 Tf +15.4827 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1122 Tw +[( and yet not be "fully" closed for a small time)]TJ +-19.0833 -1.2889 TD +0.0656 Tw +[(period afterward. During this time the file appears to be busy and cannot be opened for)]TJ +0 -1.2222 TD +0 Tw +(conflicting access by others.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(CLOSEF?)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 177.6053 286.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 286.86 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes )Tj +/TT12 1 Tf +3.2992 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +[( if it is open, returning the value of )]TJ +/TT8 1 Tf +17.1676 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1767 Tw +(; otherwise does nothing and)Tj +-26.4678 -1.2889 TD +0 Tw +(returns )Tj +/TT8 1 Tf +3.4541 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-10.5877 -2.0667 TD +0.0144 Tw +(In the present implementation of Medley, all open streams to files are kept in a registry of "open files".)Tj +0 -1.2222 TD +0.2211 Tw +(This registry does not include nameless streams, such as string streams \(below\), display streams)Tj +T* +0.0067 Tw +(\(Chapter 28\), and the terminal input and output streams; nor streams explicitly hidden from you, such)Tj +T* +0.0855 Tw +[(as dribble streams \(Chapter 30\). This registry may not persist in future implementations of Medley,)]TJ +T* +0 Tw +(but at the present time it is accessible by the following two functions:)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OPENP)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT8 1 Tf +3.6006 0 TD +(\) )Tj +/TT16 1 Tf +10 0 0 10 206.8614 173.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 173.72 Tm +([Function])Tj +/TT12 1 Tf +-35.4033 -1.8444 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( is an access mode for a stream opening \(see )Tj +/TT8 1 Tf +19.6626 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(\), or )Tj +/TT8 1 Tf +2.0239 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( for any access.)Tj +-33.0884 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.031 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1111 Tw +[( is a stream, returns its full name if it is open for the specified access, otherwise)]TJ +/TT8 1 Tf +-3.4314 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-1.8003 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.2066 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2867 Tw +[( is a file name \(a symbol\), )]TJ +/TT12 1 Tf +13.4783 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2867 Tw +[( is processed according to the rules of file)]TJ +-19.4857 -1.2889 TD +0.0389 Tw +[(recognition \(below\). If a stream open to a file by that name is registered and open for the)]TJ +0 -1.2222 TD +0.0256 Tw +[(specified access, then the files full name is returned. If the file name is not recognized, or)]TJ +T* +0 Tw +(no stream is open to the file with the specified access, )Tj +/TT8 1 Tf +23.7983 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( is returned.)Tj +-25.5986 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.0066 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +[( is )]TJ +/TT8 1 Tf +1.3882 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +(, returns a list of the full names of all registered streams that are open for)Tj +-6.5955 -1.2889 TD +0 Tw +(the specified access.)Tj +ET +endstream +endobj +20 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +22 0 obj +<< +/Length 5822 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 85.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-4)Tj +/TT6 1 Tf +1.1667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(CLOSEALL)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(ALLFLG)Tj +/TT8 1 Tf +3.6006 0 TD +(\) )Tj +/TT16 1 Tf +10 0 0 10 247.2079 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes all streams in the value of \()Tj +/TT8 1 Tf +15.0454 0 TD +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +(\). Returns a list of the files closed.)Tj +/TT8 1 Tf +-18.0459 -2.0667 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0078 Tw +[( \(below\) allows certain files to be "protected" from )]TJ +/TT8 1 Tf +22.4201 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0078 Tw +[(. If )]TJ +/TT12 1 Tf +1.6933 0 TD +0 Tw +(ALLFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.0078 Tw +[( is )]TJ +/TT8 1 Tf +1.2304 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +-39.7461 -1.2889 TD +(all files, including those protected by )Tj +/TT8 1 Tf +16.5742 0 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +(, are closed.)Tj +/TT4 1 Tf +10 0 0 10 102 493.46 Tm +(File Names)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 490.75 m +558.01 490.75 l +S +BT +/TT6 1 Tf +9 0 0 9 126 476.8 Tm +0.1222 Tw +(A file name in Medley is a string or symbol whose characters specify a "path" to the actual file: on)Tj +0 -1.2222 TD +0.1589 Tw +[(what host or device the file resides, in which directory, and so forth. Because Medley supports a)]TJ +T* +0.0189 Tw +[(variety of non-local file devices, parts of the path could be device-dependent. However, it is desirable)]TJ +T* +0.2044 Tw +[(for programs to be able to manipulate file names in a device-independent manner. To this end,)]TJ +T* +0.0244 Tw +(Medley specifies a uniform file name syntax over all devices; the functions that perform the actual file)Tj +T* +0.2622 Tw +(manipulation for a particular device are responsible for any translation to that devices naming)Tj +T* +0 Tw +(conventions.)Tj +0 -2 TD +0.0211 Tw +(A file name is composed of a collection of )Tj +/TT14 1 Tf +18.8013 0 TD +0 Tw +(fields)Tj +/TT6 1 Tf +2.1118 0 TD +0.0211 Tw +[(, some of which have specific meanings. The functions)]TJ +-20.9131 -1.2222 TD +0.1333 Tw +(described below refer to each field by a )Tj +/TT14 1 Tf +18.6287 0 TD +(field name)Tj +/TT6 1 Tf +4.273 0 TD +(, a literal atom from among the following: )Tj +/TT8 1 Tf +19.7757 0 TD +0 Tw +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +/TT8 1 Tf +-45.0777 -1.2889 TD +(DEVICE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.7167 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.7167 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.7167 0 TD +(EXTENSION)Tj +/TT6 1 Tf +5.4009 0 TD +0.2167 Tw +(, and )Tj +/TT8 1 Tf +2.8762 0 TD +0 Tw +(VERSION)Tj +/TT6 1 Tf +4.2007 0 TD +0.2167 Tw +[(. The standard syntax for a file name is)]TJ +/TT8 1 Tf +-26.0296 -1.2889 TD +0 Tw +({HOST}DEVICE:NAME.EXTENSION;VERSION)Tj +/TT6 1 Tf +27.6045 0 TD +0.0122 Tw +[(. Some hosts file systems do not use all)]TJ +-27.6045 -1.2889 TD +0 Tw +(of those fields in their file names.)Tj +/TT8 1 Tf +6.9333 -2.1489 TD +(HOST)Tj +/TT6 1 Tf +3.7333 0 TD +0.0133 Tw +[(Specifies the host whose file system contains the file. In the case of local)]TJ +0 -1.2889 TD +0 Tw +(file devices, the "host" is the name of the device, e.g., )Tj +/TT8 1 Tf +23.4097 0 TD +(DSK)Tj +/TT6 1 Tf +1.8003 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(FLOPPY)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT8 1 Tf +-35.1848 -2.2156 TD +(DEVICE)Tj +/TT6 1 Tf +4.9333 0 TD +0.2711 Tw +(Specifies, for those hosts that divide their file systems name space)Tj +0 -1.2889 TD +0.3044 Tw +(among mutiple physical devices, the device or logical structure on)Tj +0 -1.2222 TD +0.2556 Tw +[(which the file resides. This should not be confused with Medleys)]TJ +T* +0.2011 Tw +(abstract "file device", which denotes either a host or a local physical)Tj +T* +0 Tw +(device and is specified by the )Tj +/TT8 1 Tf +13.2256 0 TD +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +( field.)Tj +/TT8 1 Tf +-22.3593 -2.2156 TD +(DIRECTORY)Tj +/TT6 1 Tf +6.7333 0 TD +0.1978 Tw +[(Specifies the "directory" containing the file. A directory usually is a)]TJ +0 -1.2889 TD +0.0167 Tw +(grouping of a possibly large set of loosely related files, e.g., the personal)Tj +0 -1.2222 TD +0.1778 Tw +[(files of a particular user, or the files belonging to some project. The)]TJ +/TT8 1 Tf +T* +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.1389 Tw +[( field usually consists of a principal directory and zero or)]TJ +-5.4009 -1.2889 TD +0.0044 Tw +(more subdirectories that together describe a path through a file systems)Tj +0 -1.2222 TD +0.4211 Tw +[(hierarchy. Each subdirectory name is set off from the previous)]TJ +T* +1.3856 Tw +(directory or subdirectory by the character ")Tj +/TT8 1 Tf +27.3529 0 TD +0 Tw +(>)Tj +/TT6 1 Tf +0.6001 0 TD +1.3856 Tw +("; e.g.,)Tj +-27.953 -1.2889 TD +0 Tw +(")Tj +/TT8 1 Tf +0.3711 0 TD +(LISP>LIBRARY>NEW)Tj +/TT6 1 Tf +9.6016 0 TD +(".)Tj +/TT8 1 Tf +-13.706 -2.2156 TD +(NAME)Tj +/TT6 1 Tf +3.7333 0 TD +0.0567 Tw +(This field carries no specific meaning, but generally names a set of files)Tj +0 -1.2889 TD +0 Tw +(thought of as being different renditions of the "same" abstract file.)Tj +/TT8 1 Tf +-6.7333 -2.1489 TD +(EXTENSION)Tj +/TT6 1 Tf +6.7333 0 TD +0.1211 Tw +(This field also carries no specific meaning, but generally distinguishes)Tj +0 -1.2889 TD +0.0789 Tw +[(the form of files having the same name. Most files systems have some)]TJ +0 -1.2222 TD +0.1722 Tw +("conventional" extensions that denote something about the content of)Tj +T* +0.1156 Tw +[(the file. For example, in Medley, the extension )]TJ +/TT8 1 Tf +21.9145 0 TD +0 Tw +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6156 0 TD +(LCOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.1156 Tw +[( or )]TJ +/TT8 1 Tf +1.672 0 TD +0 Tw +(DFASL)Tj +/TT6 1 Tf +-29.0029 -1.2889 TD +(denotes files containing compiled function definitions.)Tj +ET +endstream +endobj +23 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +25 0 obj +<< +/Length 5641 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-5)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT8 1 Tf +9 0 0 9 124.2 568.2 Tm +(VERSION)Tj +/TT6 1 Tf +5.5333 0 TD +0.0889 Tw +(A number used to distinguish the versions or "generations" of the files)Tj +0 -1.2889 TD +0.4256 Tw +[(having a common name and extension. The version number is)]TJ +0 -1.2222 TD +0 Tw +(incremented each time a new file by the same name is created.)Tj +-10.6667 -2 TD +0.17 Tw +(Most functions that take as input "a directory" accept either a directory name \(the contents of the)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0389 Tw +[( field of a file name\) or a "full" directory specificationa file name fragment consisting of)]TJ +-5.4009 -1.2889 TD +0.09 Tw +(only the fields )Tj +/TT8 1 Tf +6.811 0 TD +0 Tw +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.59 0 TD +(DEVICE)Tj +/TT6 1 Tf +3.6006 0 TD +0.09 Tw +(, and )Tj +/TT8 1 Tf +2.6229 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.09 Tw +[(. In particular, the "connected directory" \(see below\))]TJ +-21.4257 -1.2889 TD +0 Tw +(consists, in general, of all three fields.)Tj +0 -2 TD +0.1122 Tw +(For convenience in dealing with certain operating systems, Medley also recognizes [] and \(\) as host)Tj +0 -1.2222 TD +0.0411 Tw +(delimiters \(synonymous with {}\), and / as a directory delimiter \(synonymous with < at the beginning)Tj +T* +0.0289 Tw +(of a directory specification and )Tj +/TT18 1 Tf +14.061 0 TD +0 Tw +(>)Tj +/TT6 1 Tf +0.606 0 TD +0.0289 Tw +[( to terminate directory or subdirectory specification\). For example, a)]TJ +-14.6669 -1.2222 TD +0.1556 Tw +(file on a Unix file server )Tj +/TT8 1 Tf +11.7532 0 TD +0 Tw +(UNX)Tj +/TT6 1 Tf +1.8003 0 TD +0.1556 Tw +[( with the name)]TJ +/TT8 1 Tf +7.0809 0 TD +0.3733 Tw +[( /usr/foo/bar/stuff.tedit)]TJ +/TT6 1 Tf +15.3758 0 TD +0.1556 Tw +(, whose )Tj +/TT8 1 Tf +3.9259 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +-39.936 -1.2889 TD +0.5089 Tw +(field is thus )Tj +/TT8 1 Tf +6.9315 0 TD +0 Tw +(usr/foo/bar)Tj +/TT6 1 Tf +6.6011 0 TD +0.5089 Tw +(, could be specified as )Tj +/TT8 1 Tf +12.4478 0 TD +0 Tw +({UNX}/usr/foo/bar/stuff.tedit)Tj +/TT6 1 Tf +17.4028 0 TD +0.5089 Tw +(, or)Tj +/TT8 1 Tf +-43.3831 -1.2889 TD +0 Tw +(\(UNX\)stuff.tedit)Tj +/TT6 1 Tf +17.4028 0 TD +0.0189 Tw +[(, or several other variations. Note that when using )]TJ +/TT8 1 Tf +22.8603 0 TD +0 Tw +([])Tj +/TT6 1 Tf +1.2002 0 TD +0.0189 Tw +[( or )]TJ +/TT8 1 Tf +1.4787 0 TD +0 Tw +(\(\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0189 Tw +[( as)]TJ +-44.1422 -1.2889 TD +0.1356 Tw +(host delimiters, they usually must be escaped with the readers escape character if the file name is)Tj +0 -1.2222 TD +0 Tw +(expressed as a symbol rather than a string.)Tj +0 -2 TD +0.3333 Tw +[(Different hosts have different requirements for vaild characters in file names. In Medley, all)]TJ +0 -1.2222 TD +0.0578 Tw +[(characters are valid. However, in order to be able to parse a file name into its component fields, it is)]TJ +T* +0.0922 Tw +(necessary that those characters that are conventionally used as file name delimiters be quoted when)Tj +T* +0.0756 Tw +[(they appear inside of fields where there could be ambiguity. The file name quoting character is " ")]TJ +T* +0.0489 Tw +[(\(single quote\). Thus, the following characters must be quoted when not used as delimeters: >, :, ;, /,)]TJ +T* +0.2167 Tw +[(and itself. The character . \(period\) need only be quoted if it is to be considered a part of the)]TJ +/TT8 1 Tf +T* +0 Tw +(EXTENSION)Tj +/TT6 1 Tf +5.4009 0 TD +0.0456 Tw +[( field. The characters }, ], and \) need only be quoted in a file name when the host field of)]TJ +-5.4009 -1.2889 TD +0.0522 Tw +[(the name is introduced by {, [, and \(, respectively. The characters {, [, \(, and < need only be quoted if)]TJ +0 -1.2222 TD +0.0355 Tw +(they appear as the first character of a file name fragment, where they would otherwise be assumed to)Tj +T* +0 Tw +(introduce the )Tj +/TT8 1 Tf +6.1641 0 TD +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +( fields.)Tj +-15.4063 -2.0667 TD +0.04 Tw +[(The following functions are the standard way to manipulate file names in Medley. Their operation is)]TJ +0 -1.2222 TD +0 Tw +(purely syntacticthey perform no file system operations themselves.)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(UNPACKFILENAME.STRING)Tj +/TT4 1 Tf +10 0 0 10 220.8 227.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 223.5783 227.06 Tm +(FILENAME)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 272.1862 227.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 227.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Parses )Tj +/TT12 1 Tf +3.189 0 TD +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.1133 Tw +(, returning a list in property list format of alternating field names and)Tj +-7.9898 -1.2889 TD +0.0378 Tw +[(field contents. The field contents are returned as strings. If it is a stream, its full name is)]TJ +0 -1.2222 TD +0 Tw +(used.)Tj +0 -2 TD +0.2633 Tw +(Only those fields actually present in )Tj +/TT12 1 Tf +17.7514 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.2633 Tw +[( are returned. A field is considered)]TJ +-22.5522 -1.2889 TD +0.1322 Tw +[(present if its delimiting punctuation is present, even if the field itself is empty. Empty)]TJ +0 -1.2222 TD +0 Tw +(fields are denoted by "" \(the empty string\).)Tj +0 -2 TD +(Examples:)Tj +/TT8 1 Tf +5.3333 -1.7111 TD +(\(UNPACKFILENAME.STRING "FOO.BAR"\) =>)Tj +0 -1 TD +( \(NAME "FOO" EXTENSION "BAR"\))Tj +0 -1.5556 TD +(\(UNPACKFILENAME.STRING "FOO.;2"\) =>)Tj +0 -1 TD +( \(NAME "FOO" EXTENSION "" VERSION "2"\))Tj +0 -1.5556 TD +(\(UNPACKFILENAME.STRING "FOO;"\) =>)Tj +0 -1 TD +( \(NAME "FOO" VERSION ""\))Tj +0 -1.5556 TD +(\(UNPACKFILENAME.STRING)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +28 0 obj +<< +/Length 5483 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 85.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-6)Tj +/TT6 1 Tf +1.1667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 570.14 Tm +( "{ERIS}CURRENT>IMTRAN.DCOM;21"\))Tj +0 -1 TD +( => \(HOST "ERIS" DIRECTORY "LISP>CURRENT")Tj +T* +( NAME "IMTRAN" EXTENSION "DCOM")Tj +T* +( VERSION "21"\))Tj +-8 -2.3267 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(UNPACKFILENAME)Tj +/TT6 1 Tf +8.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 260.2544 522.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 522.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0978 Tw +(Old version of )Tj +/TT8 1 Tf +6.892 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.0978 Tw +[( that returns the field values as atoms, rather)]TJ +-19.494 -1.2889 TD +0.2744 Tw +(than as strings. )Tj +/TT8 1 Tf +8.2599 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.2744 Tw +[( is now considered the "correct" way of)]TJ +-20.8619 -1.2889 TD +0.0044 Tw +(unpacking file names, because it does not lose information when the contents of a field are)Tj +0 -1.2222 TD +0 Tw +(numeric. For example, )Tj +/TT8 1 Tf +5.3333 -1.7111 TD +(\(UNPACKFILENAME STUFF.TXT\) =>)Tj +0 -1 TD +( \(NAME STUFF EXTENSION TXT\))Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(but)Tj +/TT8 1 Tf +5.3333 -1.7111 TD +(\(UNPACKFILENAME STUFF.029\) =>)Tj +0 -1 TD +( \(NAME STUFF EXTENSION 29\))Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(Explicitly omitted fields are denoted by the atom )Tj +/TT8 1 Tf +21.8682 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, rather than the empty string.)Tj +-21.0018 -2.0667 TD +[(Note:)-901.2(Both )]TJ +/TT8 1 Tf +5.9738 0 TD +(UNPACKFILENAME)Tj +/TT6 1 Tf +8.4014 0 TD +0.3256 Tw +[( and )]TJ +/TT8 1 Tf +2.844 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.3256 Tw +[( leave the)]TJ +-26.4879 -1.2889 TD +0.0167 Tw +(trailing colon on the device field, so that the Tenex device )Tj +/TT8 1 Tf +25.842 0 TD +0 Tw +(NIL:)Tj +/TT6 1 Tf +2.4004 0 TD +0.0167 Tw +[( can be)]TJ +-28.2424 -1.2889 TD +0.9367 Tw +[(distinguished from the absence of a device. Although)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.2411 Tw +[( is capable of making the distinction, it)]TJ +-12.6021 -1.2889 TD +0 Tw +(retains this behavior for backward compatibility. Thus,)Tj +/TT8 1 Tf +-0.6667 -1.7111 TD +(\(UNPACKFILENAME.STRING {TOAST}DSK:FOO\) =>)Tj +0 -1 TD +( \(HOST "TOAST" DEVICE "DSK:" NAME "FOO"\))Tj +-8 -2.3267 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FILENAMEFIELD)Tj +/TT4 1 Tf +10 0 0 10 225.6 279.66 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 228.3783 279.66 Tm +(FILENAME)Tj +/TT14 1 Tf +4.8008 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FIELDNAME)Tj +/TT8 1 Tf +5.4009 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 327.8441 279.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 279.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0233 Tw +(Returns, as an atom, the contents of the )Tj +/TT12 1 Tf +17.7868 0 TD +0 Tw +(FIELDNAME)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[( field of )]TJ +/TT12 1 Tf +3.7038 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +[(. If )]TJ +/TT12 1 Tf +1.7399 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +[( is a)]TJ +-38.2329 -1.2889 TD +0 Tw +(stream, its full name is used.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FIELD)Tj +3 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(...)Tj +/TT14 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FIELD)Tj +2.9997 -0.3333 TD +(N)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 452.8509 229.12 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 490.61 229.12 Tm +([NoSpread)Tj +-37.1789 -1.4 TD +(Function])Tj +2 -1.7778 TD +0.1855 Tw +(Takes a sequence of alternating field names and field contents \(atoms or strings\), and)Tj +0 -1.2222 TD +0 Tw +(returns the corresponding file name, as a string.)Tj +0 -2 TD +(If )Tj +/TT8 1 Tf +1.2166 0 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.2967 Tw +[( is given a single argument, it is interpreted as a list of)]TJ +-12.6184 -1.2889 TD +0.5633 Tw +[(alternating field names and field contents. Thus )]TJ +/TT8 1 Tf +26.0863 0 TD +0 Tw +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.5633 Tw +[( and)]TJ +/TT8 1 Tf +-37.4881 -1.2889 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +( operate as inverses.)Tj +-12.6021 -2.0667 TD +(If the same field name is given twice, the )Tj +/TT14 1 Tf +18.2407 0 TD +(first)Tj +/TT6 1 Tf +1.667 0 TD +( occurrence is used.)Tj +-19.9077 -2 TD +0.2189 Tw +(The contents of the field name )Tj +/TT8 1 Tf +14.911 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.2189 Tw +[( may be either a directory name or a full)]TJ +-20.3119 -1.2889 TD +0 Tw +(directory specification as described above.)Tj +/TT8 1 Tf +0 -2 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.19 Tw +[( also accepts the "field name" )]TJ +/TT8 1 Tf +14.1966 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.19 Tw +[( to mean that its contents)]TJ +-27.9989 -1.2889 TD +0.0289 Tw +[(should itself be unpacked and spliced into the argument list at that point. This feature, in)]TJ +0 -1.2222 TD +0.0389 Tw +(conjunction with the rule that fields early in the argument list override later duplicates, is)Tj +T* +0.0244 Tw +[(useful for altering existing file names. For example, to provide a default field, place )]TJ +/TT8 1 Tf +37.5898 0 TD +0 Tw +(BODY)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +31 0 obj +<< +/Length 3505 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-7)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0544 Tw +[(first in the argument list, then the default fields. To override a field, place the new fields)]TJ +0 -1.2222 TD +0 Tw +(first and )Tj +/TT8 1 Tf +3.9619 0 TD +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +( last.)Tj +-6.3623 -2.0667 TD +(If the value of the )Tj +/TT8 1 Tf +8.0112 0 TD +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +( field is a stream, its full name is used.)Tj +-10.4116 -2.0667 TD +(Examples:)Tj +/TT8 1 Tf +5.3333 -1.7111 TD +(\(PACKFILENAME.STRING DIRECTORY "LISP")Tj +0 -1 TD +( NAME "NET"\))Tj +T* +( => "NET")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING NAME "NET")Tj +0 -1 TD +( DIRECTORY "{DSK}"\))Tj +T* +( => "{DSK}NET")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING DIRECTORY "{DSK}")Tj +0 -1 TD +( BODY "{TOAST}BAR"\))Tj +T* +( => "{DSK}BAR")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING DIRECTORY "FRED")Tj +0 -1 TD +( BODY "{TOAST}BAR"\))Tj +T* +( => "{TOAST}BAR")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "{TOAST}BAR")Tj +0 -1 TD +( DIRECTORY "FRED"\))Tj +T* +( => "{TOAST}BAR")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING VERSION NIL)Tj +0 -1 TD +( BODY "{TOAST}BAR.DCOM;2"\))Tj +T* +( => "{TOAST}BAR.DCOM")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "{TOAST}BAR.DCOM")Tj +0 -1 TD +( VERSION 1\))Tj +T* +( => "{TOAST}BAR.DCOM;1")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "{TOAST}BAR.DCOM;")Tj +0 -1 TD +( VERSION 1\))Tj +T* +( => "{TOAST}BAR.DCOM;")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "BAR.;1")Tj +0 -1 TD +( EXTENSION "DCOM"\))Tj +T* +( => "BAR.;1")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "BAR;1")Tj +0 -1 TD +( EXTENSION "DCOM"\))Tj +T* +( => "BAR.DCOM;1")Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +0.13 Tw +(In the last two examples, note that in one case the extension is explicitly present in the)Tj +0 -1.2222 TD +0.0189 Tw +(body \(as indicated by the preceding period\), while in the other there is no indication of an)Tj +T* +0 Tw +(extension, so the default is used.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(PACKFILENAME)Tj +/TT6 1 Tf +7.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FIELD)Tj +3 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(...)Tj +/TT14 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FIELD)Tj +2.9997 -0.3333 TD +(N)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 367.0508 139 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 401.99 139 Tm +([NoSpread Function])Tj +-30.6656 -2.1778 TD +0.1278 Tw +(The same as )Tj +/TT8 1 Tf +6.0166 0 TD +0 Tw +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.1278 Tw +(, except that it returns the file name as a symbol,)Tj +-17.4185 -1.2889 TD +0 Tw +(instead of a string.)Tj +/TT4 1 Tf +10 0 0 10 54 80.46 Tm +(Incomplete File Names)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 77.75 m +510.01 77.75 l +S +BT +/TT6 1 Tf +9 0 0 9 78 63.8 Tm +0.0022 Tw +(In general, it is not necessary to pass a complete file name \(one containing all the fields listed above\) to)Tj +0 -1.2222 TD +0.0933 Tw +[(functions that take a file name as an argument. Interlisp supplies suitable defaults for certain fields)]TJ +T* +0 Tw +(\(below\). Functions that return names of actual files, however, always return the full file name.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +34 0 obj +<< +/Length 5612 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 85.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-8)Tj +/TT6 1 Tf +1.1667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1167 Tw +(If the version field is omitted from a file name, Interlisp performs version recognition, as described)Tj +0 -1.2222 TD +0 Tw +(below.)Tj +0 -2 TD +0.1433 Tw +(If the host, device and/or directory field are omitted from a file name, Interlisp uses the currently)Tj +0 -1.2222 TD +0.0733 Tw +[(connected directory. You can change the currently connected directory by by calling )]TJ +/TT8 1 Tf +38.6418 0 TD +0 Tw +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0733 Tw +[( \(below\))]TJ +-41.6423 -1.2889 TD +0 Tw +(or using the programmers assistant command )Tj +/TT8 1 Tf +20.8638 0 TD +(CONN)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-23.2642 -2.0667 TD +0.0011 Tw +(Defaults are added to the partially specified name "left to right" until a host, device or directory field is)Tj +0 -1.2222 TD +0 Tw +(encountered. Thus, if the connected directory is )Tj +/TT8 1 Tf +21.5093 0 TD +({TWENTY}PS:)Tj +/TT6 1 Tf +10.2017 0 TD +(, then)Tj +/TT8 1 Tf +-21.0443 -1.8444 TD +(BAR.DCOM )Tj +/TT6 1 Tf +5.4009 0 TD +(means)Tj +/TT8 1 Tf +-5.4009 -1 TD +( {TWENTY}PS:BAR.DCOM)Tj +0 -1.6222 TD +(BAR.DCOM )Tj +/TT6 1 Tf +10.8018 0 TD +(means)Tj +/TT8 1 Tf +-10.8018 -1 TD +( {TWENTY}PS:BAR.DCOM)Tj +0 -1.6222 TD +(MTA0:BAR.DCOM )Tj +/TT6 1 Tf +13.8022 0 TD +(means)Tj +/TT8 1 Tf +-13.8022 -1 TD +( {TWENTY}MTA0:BAR.DCOM)Tj +0 -1.6222 TD +({THIRTY}BAR.DCOM )Tj +/TT6 1 Tf +15.6025 0 TD +(means)Tj +/TT8 1 Tf +-15.6025 -1 TD +( {THIRTY}BAR.DCOM)Tj +/TT6 1 Tf +-10.6667 -1.8444 TD +0.0111 Tw +(In addition, if the partially specified name contains a subdirectory, but no principal directory, then the)Tj +0 -1.2222 TD +0 Tw +(subdirectory is appended to the connected directory. For example,)Tj +/TT8 1 Tf +10.6667 -1.7778 TD +(ISO>BAR.DCOM )Tj +/TT6 1 Tf +7.8013 0 TD +(means)Tj +/TT8 1 Tf +-7.8013 -1 TD +( {TWENTY}PS:ISO>BAR.DCOM)Tj +/TT6 1 Tf +-10.6667 -1.8444 TD +0.0633 Tw +(Or, if the connected directory is the Unix directory )Tj +/TT8 1 Tf +23.11 0 TD +0 Tw +({UNX}/usr/fred/)Tj +/TT6 1 Tf +9.0015 0 TD +0.0633 Tw +(, then )Tj +/TT8 1 Tf +2.8459 0 TD +0 Tw +(iso/bar.dcom)Tj +/TT6 1 Tf +7.2012 0 TD +0.0633 Tw +[( means)]TJ +/TT8 1 Tf +-42.1586 -1.2889 TD +0 Tw +({UNX}/usr/fred/iso/bar.dcom)Tj +/TT6 1 Tf +16.2026 0 TD +(, but )Tj +/TT8 1 Tf +2.2324 0 TD +(/other/bar.dcom)Tj +/TT6 1 Tf +9.0015 0 TD +( means )Tj +/TT8 1 Tf +3.3677 0 TD +({UNX}/other/bar.dcom)Tj +/TT6 1 Tf +12.002 0 TD +(.)Tj +/TT8 1 Tf +-40.1395 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(CNDIR)Tj +/TT4 1 Tf +10 0 0 10 182.4 288.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 185.1783 288.2 Tm +(HOST/DIR)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 233.7862 288.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 288.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2333 Tw +(Connects to the directory )Tj +/TT12 1 Tf +12.3274 0 TD +0 Tw +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +0.2333 Tw +(, which can either be a directory name or a full)Tj +-17.1282 -1.2889 TD +0.1244 Tw +[(directory specification including host and/or device. If the specification includes just a)]TJ +0 -1.2222 TD +0.3733 Tw +(host, and the host supports directories, the directory is defaulted to the value of)Tj +/TT8 1 Tf +T* +0 Tw +(\(USERNAME\))Tj +/TT6 1 Tf +6.001 0 TD +0.0567 Tw +(; if the host is omitted, connection is made to another directory on the same)Tj +-6.001 -1.2889 TD +0 Tw +(host as before. If )Tj +/TT12 1 Tf +7.7568 0 TD +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, connects to the value of )Tj +/TT8 1 Tf +11.1528 0 TD +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT8 1 Tf +-34.5269 -2.0667 TD +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.2122 Tw +[( returns the full name of the now-connected directory. Causes an error, )]TJ +/TT8 1 Tf +34.5895 0 TD +0 Tw +(Non-)Tj +-37.5899 -1.2889 TD +(existent directory)Tj +/TT6 1 Tf +10.8018 0 TD +(, if )Tj +/TT12 1 Tf +1.374 0 TD +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +( is not a valid directory.)Tj +-16.9766 -2.0667 TD +0.0878 Tw +(Note that )Tj +/TT8 1 Tf +4.5921 0 TD +0 Tw +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0878 Tw +[( does not necessarily require or provide any directory access privileges.)]TJ +-7.5925 -1.2889 TD +0 Tw +(Access privileges are checked when a file is opened.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(CONN)Tj +/TT6 1 Tf +2.4 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(HOST/DIR)Tj +/TT16 1 Tf +10 0 0 10 217.057 143.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 440.09 143.66 Tm +([Prog. Asst. Command])Tj +-29.5656 -1.8444 TD +0.0111 Tw +(Command form of )Tj +/TT8 1 Tf +8.5324 0 TD +0 Tw +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0111 Tw +[( for use at the executive. Connects to )]TJ +/TT12 1 Tf +16.7392 0 TD +0 Tw +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0111 Tw +(, or to the value)Tj +-33.0728 -1.2889 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.2467 0 TD +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.1178 Tw +[( if )]TJ +/TT12 1 Tf +1.3596 0 TD +0 Tw +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +0.1178 Tw +[( is omitted. This command is undoable. Undoing it)]TJ +-15.2083 -1.2889 TD +0 Tw +(causes the system to connect to the previously connected directory.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(LOGINHOST/DIR)Tj +/TT16 1 Tf +10 0 0 10 220.2 81.52 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 81.52 Tm +([Variable])Tj +/TT8 1 Tf +-35.6011 -1.8444 TD +(CONN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1067 Tw +[( with no argument connects to the value of the variable )]TJ +/TT8 1 Tf +25.7729 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.1067 Tw +(, initially)Tj +/TT8 1 Tf +-35.9746 -1.2889 TD +0 Tw +({DSK})Tj +/TT6 1 Tf +3.0005 0 TD +(, but usually reset in your greeting file \(Chapter 12\).)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +37 0 obj +<< +/Length 6989 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-9)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT8 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DIRECTORYNAME)Tj +/TT4 1 Tf +10 0 0 10 177.6 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 180.3783 568.2 Tm +(DIRNAME)Tj +/TT14 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STRPTR)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 258.2406 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.0766 0 TD +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.1567 Tw +[( is )]TJ +/TT8 1 Tf +1.5282 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1567 Tw +[(, returns the full specification of the currently connected directory. If)]TJ +/TT12 1 Tf +-7.4055 -1.2889 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0244 Tw +[( is )]TJ +/TT8 1 Tf +1.2637 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0244 Tw +(, returns the value of )Tj +/TT8 1 Tf +9.5304 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.0244 Tw +[(. For any other value of )]TJ +/TT12 1 Tf +10.9514 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +-39.7485 -1.2889 TD +0.0467 Tw +(returns a full directory specification if )Tj +/TT12 1 Tf +17.2209 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0467 Tw +[( designates an existing directory \(satisfies)]TJ +/TT8 1 Tf +-21.4216 -1.2889 TD +0 Tw +(DIRECTORYNAMEP)Tj +/TT6 1 Tf +8.4014 0 TD +(\), otherwise )Tj +/TT8 1 Tf +5.439 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-15.6406 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(STRPTR)Tj +/TT6 1 Tf +3.6006 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, the value is returned as an atom, otherwise it is returned as a string.)Tj +/TT8 1 Tf +-9.0021 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DIRECTORYNAMEP)Tj +/TT18 1 Tf +8.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DIRNAME)Tj +/TT14 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(HOSTNAME)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 273.9141 475.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 475.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.9726 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2456 Tw +[( if )]TJ +/TT12 1 Tf +1.6151 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.2456 Tw +[( is a valid directory on host )]TJ +/TT12 1 Tf +13.9904 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.2456 Tw +(, or on the host of the)Tj +-29.1797 -1.2889 TD +0.13 Tw +(currently connected directory if )Tj +/TT12 1 Tf +14.751 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.13 Tw +[( is )]TJ +/TT8 1 Tf +1.4748 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.13 Tw +(. )Tj +/TT12 1 Tf +1.01 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.13 Tw +[( may be either a directory)]TJ +-28.0376 -1.2889 TD +0 Tw +(name or a full directory specification containing host and/or device.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +0.9666 0 TD +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0467 Tw +[( includes subdirectories, this function may or may not pass judgment on their)]TJ +-5.1673 -1.2889 TD +0.0056 Tw +[(validity. Some hosts support "true" subdirectories, distinct entities manipulable by the file)]TJ +0 -1.2222 TD +0 Tw +(system, while others only provide them as a syntactic convenience.)Tj +/TT8 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(HOSTNAMEP)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 188.4052 372.52 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 372.52 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT8 1 Tf +3.9882 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2611 Tw +[( if )]TJ +/TT12 1 Tf +1.6462 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.2611 Tw +[( is recognized as a valid host or file device name at the moment)]TJ +/TT8 1 Tf +-8.6349 -1.2889 TD +0 Tw +(HOSTNAMEP)Tj +/TT6 1 Tf +5.4009 0 TD +( is called.)Tj +/TT4 1 Tf +10 0 0 10 54 316.38 Tm +(Version Recognition)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 313.67 m +510.01 313.67 l +S +BT +/TT6 1 Tf +9 0 0 9 78 299.72 Tm +0.0144 Tw +[(Most of the file devices in Interlisp support file version numbers. That is, you can have several files of)]TJ +0 -1.2222 TD +0.2344 Tw +(the exact same name, differing only in their )Tj +/TT8 1 Tf +21.2999 0 TD +0 Tw +(VERSION)Tj +/TT6 1 Tf +4.2007 0 TD +0.2344 Tw +[( field, which is incremented for each new)]TJ +-25.5006 -1.2889 TD +0.1444 Tw +[("version" of the file that is created. When the filesystem encounters a file name without a version)]TJ +0 -1.2222 TD +0 Tw +(number, it must figure out which version was intended. This process is known as )Tj +/TT14 1 Tf +36.4248 0 TD +(version recognition)Tj +/TT6 1 Tf +7.7695 0 TD +(.)Tj +-44.1943 -2 TD +(When )Tj +/TT8 1 Tf +2.8975 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0001 Tc +0.0043 Tw +( opens a file for input and no version number is given, the highest existing version)Tj +-8.8985 -1.2889 TD +0 Tc +0.0855 Tw +[(number is used. Similarly, when a file is opened for output and no version number is given, a new)]TJ +0 -1.2222 TD +0.1022 Tw +(file is created with a version number one higher than the highest one currently in use with that file)Tj +T* +0.0189 Tw +[(name. You can change he version number defaulting for )]TJ +/TT8 1 Tf +25.5517 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0189 Tw +[( by specifying a different value)]TJ +-31.5527 -1.2889 TD +0 Tw +(for its )Tj +/TT12 1 Tf +2.8149 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( argument \(see )Tj +/TT8 1 Tf +6.7891 0 TD +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +( below\).)Tj +-17.4053 -2.0667 TD +0.1411 Tw +(Other functions that accept file names as arguments generally perform default version recognition,)Tj +0 -1.2222 TD +0.06 Tw +(which is newest version for existing files, or a new version if using the file name to create a new file.)Tj +T* +0 Tw +(The one exception is )Tj +/TT8 1 Tf +9.2598 0 TD +(DELFILE)Tj +/TT6 1 Tf +4.2007 0 TD +(, which uses the oldest existing version of the file.)Tj +-13.4605 -2.0667 TD +0.0078 Tw +(The functions below can be used to perform version recognition without actually calling )Tj +/TT8 1 Tf +39.3321 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +-39.3321 -1.2889 TD +0.0589 Tw +[(to open the file. Note that these functions only tell the truth at the moment they are called, and thus)]TJ +0 -1.2222 TD +0.0144 Tw +(cannot be used to anticipate the name of the file opened by a comparable )Tj +/TT8 1 Tf +32.6339 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0144 Tw +[(. They are best)]TJ +-38.6348 -1.2889 TD +0 Tw +(used as helpful hints.)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FULLNAME)Tj +/TT6 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT14 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RECOG)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 192.9061 87.18 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 87.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT12 1 Tf +0.9533 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is an open stream, simply returns the full file name of the stream. Otherwise, if )]TJ +/TT12 1 Tf +36.0647 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is a)]TJ +-38.2182 -1.2889 TD +0 Tw +(file name given as a string or symbol, performs version recognition, as follows:)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +40 0 obj +<< +/Length 8165 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-10)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(If )Tj +/TT12 1 Tf +0.9399 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( is recognized in the recognition mode specified by )]TJ +/TT12 1 Tf +22.9066 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.02 Tw +[( as an abbreviation for some)]TJ +-27.4471 -1.2889 TD +0 Tw +(file, returns the files full name, otherwise )Tj +/TT8 1 Tf +18.6489 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. )Tj +/TT12 1 Tf +0.75 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( is one of the following:)Tj +/TT8 1 Tf +-21.9997 -2.0667 TD +(OLD)Tj +/TT6 1 Tf +3.1333 0 TD +0.1111 Tw +[(Chooses the newest existing version of the file. Returns )]TJ +/TT8 1 Tf +25.9661 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1111 Tw +[( if no file)]TJ +-27.7664 -1.2889 TD +0 Tw +(named )Tj +/TT12 1 Tf +3.3047 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( exists.)Tj +/TT8 1 Tf +-8.8381 -2.0667 TD +(OLDEST)Tj +/TT6 1 Tf +4.9333 0 TD +0.1456 Tw +[(Chooses the oldest existing version of the file. Returns )]TJ +/TT8 1 Tf +25.8633 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1456 Tw +[( if no file)]TJ +-27.6636 -1.2889 TD +0 Tw +(named )Tj +/TT12 1 Tf +3.3047 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( exists.)Tj +/TT8 1 Tf +-7.0381 -2.0667 TD +(NEW)Tj +/TT6 1 Tf +3.1333 0 TD +0.1256 Tw +[(Chooses a new version of the file. If versions of )]TJ +/TT12 1 Tf +22.6819 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.1256 Tw +[( already exist, then)]TJ +-23.282 -1.2889 TD +0.2567 Tw +(chooses a version number one higher than highest existing version;)Tj +0 -1.2222 TD +0.0667 Tw +[(otherwise chooses version 1. For some file systems, )]TJ +/TT8 1 Tf +23.6703 0 TD +0 Tw +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0667 Tw +[( returns)]TJ +/TT8 1 Tf +-28.4711 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0989 Tw +[( if you do not have the access rights necessary to create a new file)]TJ +-1.8003 -1.2889 TD +0 Tw +(named )Tj +/TT12 1 Tf +3.3047 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-9.4381 -2.0667 TD +(OLD/NEW)Tj +/TT6 1 Tf +5.5333 0 TD +(Tries )Tj +/TT8 1 Tf +2.5594 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1078 Tw +(, then )Tj +/TT8 1 Tf +2.9348 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.1078 Tw +[(. Choose the newest existing version of the file, if)]TJ +-9.0948 -1.2889 TD +0.0467 Tw +[(any; otherwise chooses version 1. This usually only makes sense if you)]TJ +0 -1.2222 TD +0 Tw +(intend to open )Tj +/TT12 1 Tf +6.7012 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( for access )Tj +/TT8 1 Tf +4.7383 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT12 1 Tf +-14.4399 -2.0667 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.3067 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3067 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0567 Tw +[( defaults to )]TJ +/TT8 1 Tf +5.359 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0567 Tw +[(. For all other values of )]TJ +/TT12 1 Tf +11.0446 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.0567 Tw +(, generates)Tj +-27.2186 -1.2889 TD +0 Tw +(an error )Tj +/TT8 1 Tf +3.792 0 TD +(ILLEGAL ARG)Tj +/TT6 1 Tf +6.6011 0 TD +(. )Tj +-10.3931 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9655 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0456 Tw +[( already contains a version number, the )]TJ +/TT12 1 Tf +18.0098 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.0456 Tw +[( argument will never)]TJ +-22.5759 -1.2889 TD +0.1989 Tw +[(change it. In particular, )]TJ +/TT12 1 Tf +11.7698 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.4489 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.4489 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.1989 Tw +[( does not require that the file)]TJ +-18.0685 -1.2889 TD +0.1967 Tw +[(actually be new. For example, )]TJ +/TT8 1 Tf +14.8646 0 TD +0.4733 Tw +(\(FULLNAME FOO.;2 NEW\))Tj +/TT6 1 Tf +14.7489 0 TD +0.1967 Tw +[( may)]TJ +-29.6135 -1.2889 TD +0 Tw +(return )Tj +/TT8 1 Tf +3.1958 0 TD +({ERIS}FOO.;2)Tj +/TT6 1 Tf +10.8018 0 TD +0.1656 Tw +[( if that file already exists, even though)]TJ +/TT8 1 Tf +-13.9976 -1.2889 TD +0.0544 Tw +(\(FULLNAME FOO NEW\))Tj +/TT6 1 Tf +12.1108 0 TD +0.0222 Tw +[( would default the version to a new number,)]TJ +-12.1108 -1.2889 TD +0 Tw +(perhaps returning )Tj +/TT8 1 Tf +8.2915 0 TD +({ERIS}FOO.;5)Tj +/TT6 1 Tf +10.8018 0 TD +(. )Tj +/TT8 1 Tf +-27.0933 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(INFILEP)Tj +/TT6 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 222.4544 262.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 262.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0044 Tw +(Equivalent to )Tj +/TT8 1 Tf +6.1891 0 TD +0 Tw +(\(FULLNAME)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.2544 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +0.0044 Tc +( )Tj +/TT8 1 Tf +0.5323 0 TD +0 Tc +(OLD\))Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0043 Tw +(. Returns the full file name of the newest version of)Tj +/TT12 1 Tf +-17.1774 -1.2889 TD +0 Tc +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( is the name of an existing file that can be opened for input, )Tj +/TT8 1 Tf +26.3838 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT8 1 Tf +-36.7756 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OUTFILEP)Tj +/TT4 1 Tf +10 0 0 10 198.6 211.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 201.3783 211.06 Tm +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 228.3827 211.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 211.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Equivalent to )Tj +/TT8 1 Tf +6.1802 0 TD +(\(FULLNAME)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(NEW\))Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-22.8153 -2.0667 TD +0.0456 Tw +(Note that )Tj +/TT8 1 Tf +4.5076 0 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5456 0 TD +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0456 Tw +[( and )]TJ +/TT8 1 Tf +2.284 0 TD +0 Tw +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0456 Tw +[( do not open any files; they are pure predicates. They)]TJ +-21.1394 -1.2889 TD +0.1478 Tw +[(are also only hints, as they do not imply that the caller has access rights to the file. For example,)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0222 Tw +[( might return non-)]TJ +/TT8 1 Tf +8.2781 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0222 Tw +(, but )Tj +/TT8 1 Tf +2.2769 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0222 Tw +[( might fail for the same file because you dont have)]TJ +-22.5569 -1.2889 TD +0.0078 Tw +[(read access to it, or the file is open for output by another user. Similarly, )]TJ +/TT8 1 Tf +32.4306 0 TD +0 Tw +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0078 Tw +[( could return non-)]TJ +/TT8 1 Tf +-37.2314 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, but )Tj +/TT8 1 Tf +2.2324 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +( could fail with a )Tj +/TT8 1 Tf +7.6929 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(SYSTEM RESOURCES EXCEEDED)Tj +/TT6 1 Tf +15.0024 0 TD +( error.)Tj +-35.3794 -2.0667 TD +0.1778 Tw +(Note also that in a shared file system, such as a remote file server, intervening file operations by)Tj +0 -1.2222 TD +0.1 Tw +[(another user could contradict the information returned by recognition. For example, a file that was)]TJ +/TT8 1 Tf +T* +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0356 Tw +[( might be deleted, or between an )]TJ +/TT8 1 Tf +14.9506 0 TD +0 Tw +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0356 Tw +[( and the subsequent )]TJ +/TT8 1 Tf +9.2555 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0356 Tw +(, another user)Tj +-39.2085 -1.2889 TD +0.1378 Tw +(might create a new version or delete the highest version, causing )Tj +/TT8 1 Tf +30.3686 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1378 Tw +[( to open a different)]TJ +-36.3696 -1.2889 TD +0.0533 Tw +(version of the file than the one returned by )Tj +/TT8 1 Tf +19.6358 0 TD +0 Tw +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0533 Tw +[(. In addition, some file servers do not support)]TJ +-24.4365 -1.2889 TD +0.0811 Tw +[(recognition of files in output context. Thus, the "truth" about a file can only be obtained by actually)]TJ +0 -1.2222 TD +0.0644 Tw +(opening the file; creators of files should rely on the name of the stream opened by )Tj +/TT8 1 Tf +37.3221 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0644 Tw +(, not)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +43 0 obj +<< +/Length 6405 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-11)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.1967 Tw +[(the value returned from these recognition functions. In particular, programmers are discouraged)]TJ +0 -1.2222 TD +0 Tw +(from using )Tj +/TT8 1 Tf +5.1128 0 TD +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(\(FULLNAME)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NAME)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(NEW\))Tj +/TT6 1 Tf +3.0005 0 TD +(. )Tj +/TT4 1 Tf +10 0 0 10 54 530.6 Tm +(Using File Names Instead of Streams)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 527.89 m +510.01 527.89 l +S +BT +/TT6 1 Tf +9 0 0 9 78 513.94 Tm +0.1633 Tw +(In earlier implementations of Interlisp, from the days of Interlisp-10 onward, the "handle" used to)Tj +0 -1.2222 TD +0.0522 Tw +[(refer to an open file was not a stream, but rather the files full name, represented as a symbol. When)]TJ +T* +0.0589 Tw +(the file name was passed to any I/O function, it was mapped to a stream by looking it up in a list of)Tj +T* +0.0644 Tw +[(open files. This scheme was sometimes convenient for typing in file commands at the executive, but)]TJ +T* +0.1022 Tw +[(was poor for serious programming in two ways. First, mapping from file name to stream on every)]TJ +T* +0.01 Tw +(input/output operation is inefficient. Second, and more importantly, using the file name as the handle)Tj +T* +0.0589 Tw +(on an open stream means that it is not possible to have more than one stream open on a given file at)Tj +T* +0 Tw +(once.)Tj +0 -2 TD +0.0133 Tw +(As of this writing, Medley is in a transition period, where it still supports the use of symbol file names)Tj +0 -1.2222 TD +0.0922 Tw +[(as synonymous with open streams, but this use is not recommended. The remainder of this section)]TJ +T* +0.1733 Tw +(discusses this usage of file names for the benefit of those reading older programs and wishing to)Tj +T* +0 Tw +(convert them to work properly when this compatibility feature is removed.)Tj +/TT4 1 Tf +10 0 0 10 78 366.6 Tm +(File Name Efficiency Considerations)Tj +/TT6 1 Tf +9 0 0 9 78 350.94 Tm +0.0756 Tw +(It is possible for a program to be seriously inefficient using a file name as a stream if the program is)Tj +T* +0.0267 Tw +(not using the name returned by )Tj +/TT8 1 Tf +14.3807 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0267 Tw +[( \(below\). Any time that an input/output function is called)]TJ +-19.1815 -1.2889 TD +0.1144 Tw +(with a file name other than the full file name, Interlisp must perform recognition on the partial file)Tj +0 -1.2222 TD +0.0411 Tw +[(name to determine which open file is intended. Thus if repeated operations are to be performed, it is)]TJ +T* +0 Tw +(considerably more efficient to use the full file name returned from )Tj +/TT8 1 Tf +29.4307 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-34.2315 -2.0667 TD +0.0167 Tw +(There is a more subtle problem with partial file names, in that recognition is performed on your entire)Tj +0 -1.2222 TD +0.1578 Tw +[(directory, not just the open files. It is possible for a file name that previously denoted one file to)]TJ +T* +0.2444 Tw +[(suddenly denote a different file. For example, suppose a program performs )]TJ +/TT8 1 Tf +36.6916 0 TD +0.5867 Tw +(\(INFILE FOO\))Tj +/TT6 1 Tf +8.3879 0 TD +0 Tw +(,)Tj +-45.0796 -1.2889 TD +(opening )Tj +/TT8 1 Tf +3.9472 0 TD +(FOO.;1)Tj +/TT6 1 Tf +3.6006 0 TD +0.06 Tw +(, and reads several expressions from )Tj +/TT8 1 Tf +16.6618 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.06 Tw +[(. Then you interrupt the program, create a)]TJ +/TT8 1 Tf +-26.0098 -1.2889 TD +0 Tw +(FOO.;2)Tj +/TT6 1 Tf +3.6006 0 TD +0.0522 Tw +[( and resume the program \(or a user at another workstation creates a )]TJ +/TT8 1 Tf +30.9318 0 TD +0 Tw +(FOO.;2)Tj +/TT6 1 Tf +3.6006 0 TD +0.0522 Tw +[(\). Now a call to)]TJ +/TT8 1 Tf +-38.133 -1.2889 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0333 Tw +[( giving it )]TJ +/TT8 1 Tf +4.3085 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( as its )]TJ +/TT12 1 Tf +2.8148 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0333 Tw +[( argument will generate a )]TJ +/TT8 1 Tf +11.7443 0 TD +0.0811 Tw +(FILE NOT OPEN)Tj +/TT6 1 Tf +7.9635 0 TD +0.0333 Tw +[( error, because )]TJ +/TT8 1 Tf +6.7919 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( will be)]TJ +-42.0244 -1.2889 TD +0 Tw +(recognized as )Tj +/TT8 1 Tf +6.3066 0 TD +(FOO.;2)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 199.4 Tm +(Obsolete File Opening Functions)Tj +/TT6 1 Tf +9 0 0 9 78 183.74 Tm +(The following functions are now obsolete, but are provided for backwards compatibility:)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT14 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RECOG)Tj +/TT14 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PARAMETERS)Tj +/TT8 1 Tf +6.001 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 300.0228 161.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 161.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT12 1 Tf +3.131 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +[( with access rights as specified by )]TJ +/TT12 1 Tf +15.1198 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0089 Tw +(, and recognition mode )Tj +/TT12 1 Tf +10.5351 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.0089 Tw +(, and)Tj +-37.7873 -1.2889 TD +0.07 Tw +[(returns the full name of the resulting stream. Equivalent to )]TJ +/TT8 1 Tf +27.2236 0 TD +0.1689 Tw +(\(FULLNAME \(OPENSTREAM)Tj +/TT12 1 Tf +-27.2236 -1.2889 TD +0 Tw +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RECOG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PARAMETERS)Tj +/TT8 1 Tf +6.001 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +-19.6193 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(INFILE)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 169.0544 98.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 98.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT12 1 Tf +3.2698 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1478 Tw +[( for input, and sets it as the primary input stream. Equivalent to )]TJ +/TT8 1 Tf +30.7315 0 TD +0 Tw +(\(INPUT)Tj +-36.4017 -1.2889 TD +(\(OPENSTREAM)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(INPUT OLD\)\))Tj +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +48 0 obj +<< +/Length 6637 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-12)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OUTFILE)Tj +/TT6 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 222.4544 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT12 1 Tf +3.1498 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( for output, and sets it as the primary output stream. Equivalent to )]TJ +/TT8 1 Tf +30.2556 0 TD +0 Tw +(\(OUTPUT)Tj +-35.8058 -1.2889 TD +(\(OPENSTREAM)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(OUTPUT NEW\)\))Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT8 1 Tf +-20.5695 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(IOFILE)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 217.0544 517.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 517.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT12 1 Tf +3.1754 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0533 Tw +[( for both input and output. Equivalent to )]TJ +/TT8 1 Tf +19.043 0 TD +0 Tw +(\(OPENFILE)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.3033 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.3033 0 TD +0.1278 Tw +(BOTH OLD\))Tj +/TT6 1 Tf +6.7289 0 TD +0 Tw +(.)Tj +-39.7556 -1.2889 TD +(Does not affect the primary input or output stream.)Tj +/TT4 1 Tf +10 0 0 10 126 469.52 Tm +(Converting Old Programs)Tj +/TT6 1 Tf +9 0 0 9 126 453.86 Tm +0.1678 Tw +(At some point in the future, the Medley file system will change so that each call to )Tj +/TT8 1 Tf +39.3254 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +-39.3254 -1.2889 TD +0.0211 Tw +[(returns a distinct stream, even if a stream is already open to the specified file. This change is required)]TJ +0 -1.2222 TD +0 Tw +(in order to deal with files in a multiprocessing environment.)Tj +0 -2 TD +(This change will produce the following incompatibilities:)Tj +1.9167 -2 TD +0.2233 Tw +[(1.)-1333.3(The functions )]TJ +/TT8 1 Tf +8.8347 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT8 1 Tf +0.7233 0 TD +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +0.2233 Tw +(, and )Tj +/TT8 1 Tf +2.8895 0 TD +0 Tw +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.2233 Tw +[( will return a stream, not a full file)]TJ +-21.7661 -1.2889 TD +0.0867 Tw +[(name. To make this less confusing in interactive situations, streams will have a print)]TJ +0 -1.2222 TD +0 Tw +(format that reveals the underlying files actual name.)Tj +-2.0833 -2 TD +0.1456 Tw +[(2.)-1333.3(Passing anything other than the object returned from )]TJ +/TT8 1 Tf +26.9187 0 TD +0 Tw +(OPENFILE )Tj +/TT6 1 Tf +5.7509 0 TD +0.1456 Tw +(to I/O operations)Tj +-30.5862 -1.2889 TD +0.0756 Tw +[(will cause problems. Passing the files name will be significantly slower than passing)]TJ +0 -1.2222 TD +0.0033 Tw +(the stream \(even when passing the "full" file name\), and in the case where there is more)Tj +T* +0 Tw +(than one stream open on the file it might even act on the wrong one.)Tj +-2.0833 -2 TD +(3.)Tj +/TT8 1 Tf +2.0833 0 TD +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +0.2756 Tw +[( will return )]TJ +/TT8 1 Tf +6.064 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2756 Tw +[( when passed the name of a file rather than the value of)]TJ +/TT8 1 Tf +-10.8648 -1.2889 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +-16.2427 -2.0667 TD +0.0078 Tw +(You should consider the following advice when writing new programs and editing existing programs,)Tj +0 -1.2222 TD +0 Tw +(so your programs will behave properly when the change occurs:)Tj +0 -2 TD +0.3089 Tw +(Because of the efficiency and ambiguity considerations described earlier, users have long been)Tj +0 -1.2222 TD +0.1144 Tw +(encouraged to use only full file names as )Tj +/TT12 1 Tf +19.167 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1144 Tw +[( arguments to I/O operations. The "proper" way to)]TJ +-21.5674 -1.2889 TD +0.0433 Tw +(have done this was to bind a variable to the value returned from )Tj +/TT8 1 Tf +29.2455 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0433 Tw +[( and pass that variable to)]TJ +-34.0462 -1.2889 TD +0.09 Tw +[(all I/O operations; such code will continue to work. A less proper way to obtain the full file name,)]TJ +0 -1.2222 TD +0.1522 Tw +(but one which has to date not incurred any obvious penalty, is that which binds a variable to the)Tj +T* +0.0244 Tw +(result of an )Tj +/TT8 1 Tf +5.3023 0 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0244 Tw +[( and passes that to )]TJ +/TT8 1 Tf +8.5231 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0244 Tw +[( and all I/O operations. This has worked because)]TJ +/TT8 1 Tf +-22.8269 -1.2889 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.1622 Tw +[( and )]TJ +/TT8 1 Tf +2.5173 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1622 Tw +[( both return a full file name, an invalid assumption in this future world.)]TJ +-11.5188 -1.4378 TD +0 Tw +(Such code should be changed to pass around the value of the )Tj +/TT8 1 Tf +27.2251 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +(, not the )Tj +/TT8 1 Tf +3.8413 0 TD +(INFILEP)Tj +/TT16 1 Tf +10 0 0 10 486.6108 163.12 Tm +(.)Tj +/TT6 1 Tf +9 0 0 9 126 144.52 Tm +0.1822 Tw +(Code that calls )Tj +/TT8 1 Tf +7.3255 0 TD +0 Tw +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +0.1822 Tw +[( to test whether a possibly incomplete file name is already open should be)]TJ +-10.326 -1.2889 TD +0 Tw +(recoded to pass to )Tj +/TT8 1 Tf +8.2573 0 TD +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +( only the value returned from )Tj +/TT8 1 Tf +13.3272 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +-36.8276 -2.0667 TD +0.29 Tw +(Code that uses ordinary string functions to manipulate file names, and in particular the value)Tj +0 -1.2222 TD +0.1611 Tw +(returned from )Tj +/TT8 1 Tf +6.8491 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1611 Tw +(, should be changed to use the the functions )Tj +/TT8 1 Tf +21.076 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +-32.7258 -1.2889 TD +(and )Tj +/TT8 1 Tf +2.2506 0 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.3078 Tw +[(. Those functions work both on file names \(strings\) and streams)]TJ +-13.6525 -1.2889 TD +0 Tw +(\(coercing the stream to the name of its file\).)Tj +0 -2 TD +0.0822 Tw +(Code that tests the value of )Tj +/TT8 1 Tf +12.7555 0 TD +0 Tw +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0822 Tw +[( for equality to some known file name or )]TJ +/TT8 1 Tf +18.9529 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +[( should be examined)]TJ +-35.9091 -1.2889 TD +0 Tw +(carefully and, if possible, recoded.)Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +51 0 obj +<< +/Length 7006 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-13)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0589 Tw +(To see more directly the effects of passing around streams instead of file names, replace your calls to)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0689 Tw +[( with calls to )]TJ +/TT8 1 Tf +6.1305 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +(. )Tj +/TT8 1 Tf +0.8878 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +[( is called in exactly the same way, but returns a)]TJ +/TT8 1 Tf +-23.8211 -1.2889 TD +0 Tw +(STREAM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1922 Tw +[(. Streams can be passed to )]TJ +/TT8 1 Tf +13.346 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.6922 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6922 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1922 Tw +(, etc just as the files full name can be)Tj +-27.3325 -1.2889 TD +0.2211 Tw +[(currently, but using them is more efficient. The function )]TJ +/TT8 1 Tf +27.4474 0 TD +0 Tw +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.2211 Tw +(, when applied to a stream,)Tj +-32.2482 -1.2889 TD +0 Tw +(returns its full file name.)Tj +/TT4 1 Tf +10 0 0 10 54 496.4 Tm +(Using Files with Processes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 493.69 m +510.01 493.69 l +S +BT +/TT6 1 Tf +9 0 0 9 78 479.74 Tm +0.2856 Tw +(Because Medley does not yet support multiple streams per file, problems can arise if different)Tj +0 -1.2222 TD +0.3089 Tw +[(processes attempt to access the same file. You have to be careful not to have two processes)]TJ +T* +0.1267 Tw +(manipulating the same file at the same time, since the two processes will be sharing a single input)Tj +T* +0.0267 Tw +[(stream and file pointer. For example, you cant have one process )]TJ +/TT8 1 Tf +29.2604 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0267 Tw +[( a file while another process)]TJ +-32.861 -1.2889 TD +0 Tw +(is running )Tj +/TT8 1 Tf +4.8062 0 TD +(LISTFILES)Tj +/TT6 1 Tf +5.4009 0 TD +( on it.)Tj +/TT4 1 Tf +10 0 0 10 54 407.2 Tm +(File Attributes)Tj +ET +54.01 404.49 m +510.01 404.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 390.54 Tm +0.0967 Tw +[(Any file has a number of "file attributes", such as the read date, protection, and bytesize. The exact)]TJ +0 -1.2222 TD +0.2022 Tw +[(attributes that a file can have is dependent on the file device. The functions )]TJ +/TT8 1 Tf +36.5846 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.2022 Tw +[( and)]TJ +/TT8 1 Tf +-43.1857 -1.2889 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +( allow you to access file attributes:)Tj +/TT8 1 Tf +-3.9344 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(GETFILEINFO)Tj +/TT6 1 Tf +6.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ATTRIB)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 230.7097 345 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 345 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns the current setting of the )Tj +/TT12 1 Tf +14.8389 0 TD +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +( attribute of )Tj +/TT12 1 Tf +5.4287 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-28.9352 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(SETFILEINFO)Tj +/TT6 1 Tf +6.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ATTRIB)Tj +/TT14 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 259.9641 305.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 305.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1011 Tw +(Sets the attribute )Tj +/TT12 1 Tf +7.9943 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.1011 Tw +[( of )]TJ +/TT12 1 Tf +1.5811 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1011 Tw +[( to be )]TJ +/TT12 1 Tf +2.9576 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1011 Tw +(. )Tj +/TT8 1 Tf +0.9522 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1011 Tw +[( returns )]TJ +/TT8 1 Tf +3.9063 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( if it is able to)]TJ +-33.5942 -1.2889 TD +0.0611 Tw +(change the attribute )Tj +/TT12 1 Tf +9.2634 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +(, and )Tj +/TT8 1 Tf +2.5651 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0611 Tw +[( if unsuccessful, either because the file device does)]TJ +-17.2294 -1.2889 TD +0.2511 Tw +(not recognize )Tj +/TT12 1 Tf +6.7283 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.2511 Tw +[( or because the file device does not permit the attribute to be)]TJ +-10.3289 -1.2889 TD +0 Tw +(modified.)Tj +-5.3333 -2 TD +(The )Tj +/TT12 1 Tf +2.076 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1522 Tw +[( argument to )]TJ +/TT8 1 Tf +6.403 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1522 Tw +[( and )]TJ +/TT8 1 Tf +2.4973 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1522 Tw +[( can be an open stream \(or an argument)]TJ +-26.5789 -1.2889 TD +0.0844 Tw +(designating an open stream, see Chapter 25\), or the name of a closed file. )Tj +/TT8 1 Tf +33.9083 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0844 Tw +[( in general)]TJ +-40.5093 -1.2889 TD +0 Tw +(requires write access to the file.)Tj +0 -2 TD +0.1733 Tw +(The attributes recognized by )Tj +/TT8 1 Tf +13.583 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1733 Tw +[( and )]TJ +/TT8 1 Tf +2.5395 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1733 Tw +[( fall into two categories: )]TJ +/TT14 1 Tf +11.6728 0 TD +0 Tw +(permanent)Tj +/TT6 1 Tf +-40.9975 -1.2889 TD +0.1089 Tw +(attributes, which are properties of the file, and )Tj +/TT14 1 Tf +21.5918 0 TD +0 Tw +(temporary)Tj +/TT6 1 Tf +4.166 0 TD +0.1089 Tw +[( attributes, which are properties only of an)]TJ +-25.7578 -1.2222 TD +0.0356 Tw +[(open stream to the file. The temporary attributes are only recognized when )]TJ +/TT12 1 Tf +34.118 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( designates an open)]TJ +-36.5184 -1.2889 TD +0.1044 Tw +[(stream; the permanent attributes are usually equally accessible for open and closed files. However,)]TJ +0 -1.2222 TD +0.2256 Tw +(some devices are willing to change the value of certain attributes of an open stream only when)Tj +T* +0.43 Tw +(specified in the )Tj +/TT8 1 Tf +8.2529 0 TD +0 Tw +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.43 Tw +[( argument to )]TJ +/TT8 1 Tf +7.2363 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.43 Tw +[( \(see above\), not on a later call to)]TJ +/TT8 1 Tf +-27.4911 -1.2889 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +-6.6011 -2.0667 TD +(The following are permanent attributes of a file:)Tj +/TT8 1 Tf +4.5333 -2 TD +(BYTESIZE)Tj +/TT6 1 Tf +6.1333 0 TD +(The byte size of the file. Medley currently only supports byte size 8.)Tj +/TT8 1 Tf +-4.9333 -2.0667 TD +(LENGTH)Tj +/TT6 1 Tf +4.9333 0 TD +0.0911 Tw +[(The number of bytes in the file. Alternatively, the byte position of the)]TJ +0 -1.2889 TD +0.1611 Tw +[(end-of-file. Like )]TJ +/TT8 1 Tf +8.0312 0 TD +0 Tw +(\(GETEOFPTR)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.4111 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1611 Tw +(, but )Tj +/TT12 1 Tf +2.5546 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1611 Tw +[( does not have to be)]TJ +-22.3988 -1.2889 TD +0 Tw +(open.)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +54 0 obj +<< +/Length 6127 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-14)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 188.4 569.54 Tm +(SIZE)Tj +/TT6 1 Tf +3.7333 0 TD +(The size of )Tj +/TT12 1 Tf +4.9966 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( in pages.)Tj +/TT8 1 Tf +-15.9303 -2.0667 TD +(CREATIONDATE)Tj +/TT6 1 Tf +8.5333 0 TD +0.1011 Tw +(The date and time, as a string, that the content of )Tj +/TT12 1 Tf +22.9076 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1011 Tw +[( was "created".)]TJ +-25.308 -1.2889 TD +0.0722 Tw +(The creation date changes whenever the content of the file is modified,)Tj +0 -1.2222 TD +0.1144 Tw +(but remains unchanged when a file is transported, unmodified, across)Tj +T* +0.2278 Tw +[(file systems. Specifically, )]TJ +/TT8 1 Tf +12.3667 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2278 Tw +[( and )]TJ +/TT8 1 Tf +2.6484 0 TD +0 Tw +(RENAMEFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.2278 Tw +[( \(see below\))]TJ +-25.8169 -1.2889 TD +0.1956 Tw +[(preserve the files creation date. Note that this is different from the)]TJ +0 -1.2222 TD +0.4178 Tw +(concept of "creation date" used by some operating systems \(e.g.,)Tj +T* +0 Tw +(Tops20\).)Tj +/TT8 1 Tf +-6.7333 -2 TD +(WRITEDATE)Tj +/TT6 1 Tf +6.7333 0 TD +0.0378 Tw +(The date and time, as a string, that the content of )Tj +/TT12 1 Tf +22.211 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0378 Tw +[( was last written)]TJ +-24.6114 -1.2889 TD +0.1678 Tw +[(to this particular file system. When a file is copied, its creation date)]TJ +0 -1.2222 TD +0.0622 Tw +(does not change, but its write date becomes the time at which the copy)Tj +T* +0 Tw +(is made.)Tj +/TT8 1 Tf +-6.1333 -2 TD +(READDATE)Tj +/TT6 1 Tf +6.1333 0 TD +0.0678 Tw +(The date and time, as a string, that )Tj +/TT12 1 Tf +16.0364 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0678 Tw +[( was last read, or )]TJ +/TT8 1 Tf +8.0635 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0678 Tw +[( if it has)]TJ +-28.3005 -1.2889 TD +0 Tw +(never been read.)Tj +/TT8 1 Tf +-9.1333 -2 TD +(ICREATIONDATE)Tj +1.8 -1.2889 TD +(IWRITEDATE)Tj +0.6 -1.2889 TD +(IREADDATE)Tj +/TT6 1 Tf +6.7333 0 TD +(The )Tj +/TT8 1 Tf +2.3872 0 TD +(CREATIONDATE)Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT8 1 Tf +0.9633 0 TD +(WRITEDATE)Tj +/TT6 1 Tf +5.4009 0 TD +0.4633 Tw +[( and )]TJ +/TT8 1 Tf +3.1195 0 TD +0 Tw +(READDATE)Tj +/TT6 1 Tf +4.8008 0 TD +0.4633 Tw +(, respectively, in)Tj +-23.8729 -1.2889 TD +0.0722 Tw +(integer form, as )Tj +/TT8 1 Tf +7.4056 0 TD +0 Tw +(IDATE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0722 Tw +[( \(Chapter 12\) would return. This form is useful)]TJ +-10.4061 -1.2889 TD +0 Tw +(for comparing dates.)Tj +/TT8 1 Tf +-4.9333 -2 TD +(AUTHOR)Tj +/TT6 1 Tf +4.9333 0 TD +(The name of the user who last wrote the file.)Tj +/TT8 1 Tf +-3.7333 -2.0667 TD +(TYPE)Tj +/TT6 1 Tf +3.7333 0 TD +0.0478 Tw +(The "type" of the file, some indication of the nature of the files content.)Tj +0 -1.2889 TD +0.1333 Tw +[(The "types" of files allowed depends on the file device. Most devices)]TJ +0 -1.2222 TD +0.0078 Tw +(recognize the symbol )Tj +/TT8 1 Tf +9.6854 0 TD +0 Tw +(TEXT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[( to mean that the file contains just characters,)]TJ +-12.0858 -1.2889 TD +0 Tw +(or )Tj +/TT8 1 Tf +1.1909 0 TD +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +( to mean that the file contains arbitrary data.)Tj +-4.7915 -2.0667 TD +0.3278 Tw +(Some devices support a wider range of file types that distinguish)Tj +0 -1.2222 TD +0.2656 Tw +(among the various sorts of files one might create whose content is)Tj +T* +0.2467 Tw +[("binary". All devices interpret any value of )]TJ +/TT8 1 Tf +21.3249 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2467 Tw +[( that they do not)]TJ +-23.7253 -1.2889 TD +0.2767 Tw +(support to be )Tj +/TT8 1 Tf +6.9804 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.2767 Tw +[(. Thus, )]TJ +/TT8 1 Tf +4.3017 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.2767 Tw +[( may return the more)]TJ +-21.4837 -1.2889 TD +0.1489 Tw +(general value )Tj +/TT8 1 Tf +6.518 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.1489 Tw +[( instead of the original type that was passed to)]TJ +/TT8 1 Tf +-10.1186 -1.2889 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.8178 Tw +[( or )]TJ +/TT8 1 Tf +3.0765 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.8178 Tw +[(. Similarly, )]TJ +/TT8 1 Tf +7.7263 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.8178 Tw +(, while)Tj +-28.2056 -1.2889 TD +0.0589 Tw +(attempting to preserve the )Tj +/TT8 1 Tf +12.1823 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0589 Tw +[( of the file it is copying, may turn, say,)]TJ +-14.5827 -1.2889 TD +0 Tw +(an )Tj +/TT8 1 Tf +1.332 0 TD +(INTERPRESS)Tj +/TT6 1 Tf +6.001 0 TD +( file into a mere )Tj +/TT8 1 Tf +7.125 0 TD +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +( file.)Tj +-18.0586 -2.0667 TD +0.1 Tw +(The way in which some file devices \(e.g., Xerox file servers\) support a)Tj +0 -1.2222 TD +0.0289 Tw +(wide range of file types is by representing the type as an integer, whose)Tj +T* +0.1244 Tw +[(interpretation is known by the client. The variable )]TJ +/TT8 1 Tf +23.7123 0 TD +0 Tw +(FILING.TYPES)Tj +/TT6 1 Tf +7.2012 0 TD +0.1244 Tw +[( is)]TJ +-30.9135 -1.2889 TD +0.0889 Tw +[(used to associate symbolic types with numbers for these devices. This)]TJ +0 -1.2222 TD +0.0367 Tw +(list initially contains some of the well-known assignments of type name)Tj +T* +0.0978 Tw +(to number; you can add additional elements to handle any private file)Tj +T* +0.1322 Tw +[(types. For example, suppose there existed an NS file type )]TJ +/TT8 1 Tf +27.1961 0 TD +0 Tw +(MAZEFILE)Tj +/TT6 1 Tf +-27.1961 -1.2889 TD +0.2767 Tw +[(with numeric value 5678. You could add the element )]TJ +/TT8 1 Tf +26.6031 0 TD +0 Tw +(\(MAZEFILE)Tj +-26.6031 -1.2889 TD +(5678\))Tj +/TT6 1 Tf +3.0005 0 TD +0.1533 Tw +[( to )]TJ +/TT8 1 Tf +1.6787 0 TD +0 Tw +(FILING.TYPES)Tj +/TT6 1 Tf +7.2012 0 TD +0.1533 Tw +[( and then use )]TJ +/TT8 1 Tf +6.7813 0 TD +0 Tw +(MAZEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1533 Tw +[( as a value for the)]TJ +/TT8 1 Tf +-23.4625 -1.2889 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( attribute to )]TJ +/TT8 1 Tf +5.5052 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0278 Tw +[( or )]TJ +/TT8 1 Tf +1.4965 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0278 Tw +[(. Other devices are, of)]TJ +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +57 0 obj +<< +/Length 5909 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-15)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.0067 Tw +(course, free to store )Tj +/TT8 1 Tf +8.8953 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0067 Tw +[( attributes in whatever manner they wish, be it)]TJ +-11.2957 -1.2889 TD +0.0678 Tw +(numeric or symbolic. )Tj +/TT8 1 Tf +10.1266 0 TD +0 Tw +(FILING.TYPES)Tj +/TT6 1 Tf +7.2012 0 TD +0.0678 Tw +[( is merely considered the official)]TJ +-17.3277 -1.2889 TD +0 Tw +(registry for Xerox file types.)Tj +0 -2 TD +0.0144 Tw +(For most file devices, the )Tj +/TT8 1 Tf +11.3217 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0144 Tw +[( of a newly created file, if not specified in)]TJ +-13.7221 -1.2889 TD +0 Tw +(the )Tj +/TT12 1 Tf +1.835 0 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.1978 Tw +[( argument to )]TJ +/TT8 1 Tf +6.5396 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1978 Tw +(, defaults to the value of)Tj +/TT8 1 Tf +-20.3766 -1.2889 TD +0 Tw +(DEFAULTFILETYPE)Tj +/TT6 1 Tf +9.0015 0 TD +(, initially )Tj +/TT8 1 Tf +4.1694 0 TD +(TEXT)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-15.5713 -2.0667 TD +0.1878 Tw +(The following are currently recognized as temporary attributes of an)Tj +0 -1.2222 TD +0 Tw +(open stream:)Tj +/TT8 1 Tf +-4.9333 -2 TD +(ACCESS)Tj +/TT6 1 Tf +4.9333 0 TD +0.3367 Tw +(The current access rights of the stream \(see the beginning of this)Tj +0 -1.2889 TD +0.0911 Tw +[(chapter\). Can be one of )]TJ +/TT8 1 Tf +11.2659 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5911 0 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5911 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5911 0 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0911 Tw +(; or )Tj +/TT8 1 Tf +1.8731 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0911 Tw +[( if the)]TJ +-29.3147 -1.2889 TD +0 Tw +(stream is not open.)Tj +/TT8 1 Tf +-9.1333 -2 TD +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +9.1333 0 TD +0.0089 Tw +(The action to be taken when a stream is at "end of file" and an attempt is)Tj +0 -1.2889 TD +0.0933 Tw +[(made to take input from it. The value of this attribute is a function of)]TJ +0 -1.2222 TD +0.0333 Tw +[(one argument, the stream. The function can examine the stream and its)]TJ +T* +0.1733 Tw +[(calling context and take any action it wishes. If the function returns)]TJ +T* +0.0544 Tw +(normally, its should return either )Tj +/TT8 1 Tf +15.2463 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0544 Tw +(, meaning to try the input operation)Tj +-15.8464 -1.2889 TD +0.11 Tw +(again, or the byte that )Tj +/TT8 1 Tf +10.4562 0 TD +0 Tw +(BIN)Tj +/TT6 1 Tf +1.8003 0 TD +0.11 Tw +[( would have returned had there been more)]TJ +-12.2565 -1.2889 TD +0.2711 Tw +[(bytes to read. Ordinarily, one should not let the )]TJ +/TT8 1 Tf +24.2057 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +-24.2057 -1.2889 TD +0.0111 Tw +(function return unless one is only performing binary input from the file,)Tj +0 -1.2222 TD +0.0089 Tw +(since there is no way in general of knowing in what state the reader was)Tj +T* +0.1344 Tw +(at the time the end of file occurred, and hence how it will interpret a)Tj +T* +0 Tw +(single byte returned to it.)Tj +0 -2 TD +0.0656 Tw +(The default )Tj +/TT8 1 Tf +5.448 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.0656 Tw +[( is a system function that causes the error)]TJ +/TT8 1 Tf +-13.2493 -1.2889 TD +0.0356 Tw +(END OF FILE)Tj +/TT6 1 Tf +6.6722 0 TD +0.0144 Tw +[(. The behavior of that error can be further modified for a)]TJ +-6.6722 -1.2889 TD +0 Tw +(particular stream by using the )Tj +/TT8 1 Tf +13.5557 0 TD +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +( option of )Tj +/TT8 1 Tf +4.521 0 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +( \(see below\).)Tj +/TT8 1 Tf +-28.4112 -2.0667 TD +(EOL)Tj +/TT6 1 Tf +3.1333 0 TD +0.03 Tw +[(The end-of-line convention for the stream. This can be )]TJ +/TT8 1 Tf +24.6623 0 TD +0 Tw +(CR)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.53 0 TD +(LF)Tj +/TT6 1 Tf +1.2002 0 TD +0.03 Tw +(, or )Tj +/TT8 1 Tf +1.7509 0 TD +0 Tw +(CRLF)Tj +/TT6 1 Tf +2.4004 0 TD +(,)Tj +-31.744 -1.2889 TD +0.3056 Tw +(indicating with what byte or sequence of bytes the "End Of Line")Tj +0 -1.2222 TD +0.0144 Tw +[(character is represented on the stream. On input, that sequence of bytes)]TJ +T* +0.0222 Tw +(on the stream is read as )Tj +/TT8 1 Tf +10.7788 0 TD +0.0522 Tw +(\(CHARCODE EOL\))Tj +/TT6 1 Tf +8.4536 0 TD +0.0222 Tw +[( by )]TJ +/TT8 1 Tf +1.6538 0 TD +0 Tw +(READCCODE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0222 Tw +[( or the string)]TJ +-26.2871 -1.2889 TD +0.0067 Tw +[(reader. On output, )]TJ +/TT8 1 Tf +8.7591 0 TD +0 Tw +(\(TERPRI\))Tj +/TT6 1 Tf +4.8008 0 TD +0.0067 Tw +[( and )]TJ +/TT8 1 Tf +2.2062 0 TD +0.0167 Tw +(\(PRINTCCODE \(CHARCODE EOL\)\))Tj +/TT6 1 Tf +-15.7661 -1.2889 TD +0 Tw +(cause that sequence of bytes to be placed on the stream.)Tj +0 -2 TD +0.2022 Tw +[(The end of line convention is usually not apparent to you. The file)]TJ +0 -1.2222 TD +0.0978 Tw +(system is usually aware of the convention used by a particular remote)Tj +T* +0.1256 Tw +[(operating system, and sets this attribute accordingly. If you believe a)]TJ +T* +0.0989 Tw +(file actually is stored with a different convention than the default, it is)Tj +T* +0.1011 Tw +(possible to modify the default behavior by including the )Tj +/TT8 1 Tf +26.0497 0 TD +0 Tw +(EOL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1011 Tw +[( attribute)]TJ +-27.8499 -1.2889 TD +0 Tw +(in the )Tj +/TT12 1 Tf +2.7603 0 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +( argument to )Tj +/TT8 1 Tf +5.9463 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT8 1 Tf +-26.2418 -2.0667 TD +(BUFFERS)Tj +/TT6 1 Tf +5.5333 0 TD +0.01 Tw +(Value is the number of 512-byte buffers that the stream maintains at one)Tj +0 -1.2889 TD +0.2767 Tw +[(time. This attribute is only used by certain random-access devices)]TJ +0 -1.2222 TD +0 Tw +(\(currently, the local disk, floppy, and Leaf servers\); all others ignore it.)Tj +0 -2 TD +0.3711 Tw +(Streams open to files generally maintain some portion of the file)Tj +0 -1.2222 TD +0.2678 Tw +(buffered in memory, so that each call to an I/O function does not)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +60 0 obj +<< +/Length 6906 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-16)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 222 569.54 Tm +0.0778 Tw +[(require accessing the actual file on disk or a file server. For files being)]TJ +0 -1.2222 TD +0.2167 Tw +(read or written sequentially, not much buffer space is needed, since)Tj +T* +0.02 Tw +[(once a byte is read or written, it will never need to be seen again. In the)]TJ +T* +0.1322 Tw +(case of random access streams, buffering is more complicated, since a)Tj +T* +0.0256 Tw +(program may jump around in the file, using )Tj +/TT8 1 Tf +19.9374 0 TD +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.0256 Tw +[( \(Chapter 25\).)]TJ +-25.9383 -1.2889 TD +0.0989 Tw +(In this case, the more buffer space the stream has, the more likely it is)Tj +0 -1.2222 TD +0.19 Tw +(that after a )Tj +/TT8 1 Tf +5.5876 0 TD +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.19 Tw +[( to a place in the file that has already been)]TJ +-11.5886 -1.2889 TD +0.0667 Tw +(accessed, the stream still has that part of the file buffered and need not)Tj +0 -1.2222 TD +0.1067 Tw +[(go out to the device again. This benefit must, of course, be traded off)]TJ +T* +0 Tw +(against the amount of memory consumed by the buffers.)Tj +-10.6667 -2 TD +0.3922 Tw +(NS servers implement the following additional attributes for )Tj +/TT8 1 Tf +30.1729 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.3922 Tw +[( \(neither of these)]TJ +-36.774 -1.2889 TD +0 Tw +(attributes are settable with )Tj +/TT8 1 Tf +12.0093 0 TD +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +(\):)Tj +/TT8 1 Tf +-12.877 -2.0667 TD +(READER)Tj +/TT6 1 Tf +4.9333 0 TD +(The name of the user who last read the file.)Tj +/TT8 1 Tf +-7.3333 -2.0667 TD +(PROTECTION)Tj +/TT6 1 Tf +7.3333 0 TD +0.01 Tw +(A list specifying the access rights to the file. Each element of the list is of)Tj +0 -1.2889 TD +0.0144 Tw +(the form \(name nametype . rights\). Name is the name of a user or group)Tj +0 -1.2222 TD +0.1733 Tw +(or a name pattern. Rights is one or more of the symbols )Tj +/TT8 1 Tf +26.7797 0 TD +0.4167 Tw +(ALL READ)Tj +-26.7797 -1.2889 TD +0.1133 Tw +(WRITE DELETE CREATE)Tj +/TT6 1 Tf +11.6285 0 TD +0.0467 Tw +[( or )]TJ +/TT8 1 Tf +1.5343 0 TD +0 Tw +(MODIFY)Tj +/TT6 1 Tf +3.6006 0 TD +0.0467 Tw +(. For servers running services 10.0)Tj +-16.7634 -1.2889 TD +(or later, nametype is the symbol "--". , In earlyer releases it is one of the)Tj +0 -1.2222 TD +0 Tw +(symbols )Tj +/TT8 1 Tf +3.9268 0 TD +(INDIVIDUAL)Tj +/TT6 1 Tf +6.001 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(GROUP)Tj +/TT4 1 Tf +10 0 0 10 102 317.8 Tm +(Closing and Reopening Files)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 315.09 m +558.01 315.09 l +S +BT +/TT6 1 Tf +9 0 0 9 126 301.14 Tm +0.0889 Tw +(The function )Tj +/TT8 1 Tf +6.0586 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0889 Tw +[( permits you to associate certain operations with open streams that govern)]TJ +-11.4595 -1.2889 TD +0.1611 Tw +[(how and when the stream will be closed. You can specify that certain functions will be executed)]TJ +0 -1.2222 TD +0 Tw +(before )Tj +/TT8 1 Tf +3.1107 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[( closes the stream and/or after )]TJ +/TT8 1 Tf +14.2277 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[( closes the stream. You can make a particular)]TJ +-24.5396 -1.2889 TD +0 Tw +(stream be invisible to )Tj +/TT8 1 Tf +9.6782 0 TD +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +(, so that it will remain open across user invocations of )Tj +/TT8 1 Tf +23.9751 0 TD +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-40.5882 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(WHENCLOSE)Tj +/TT4 1 Tf +10 0 0 10 204 244 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 206.7783 244 Tm +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PROP)Tj +2.3998 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(...)Tj +/TT14 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.3333 TD +(N)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 358.4308 244 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 244 Tm +([NoSpread Function])Tj +/TT12 1 Tf +-30.6656 -2.1778 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1722 Tw +[( must designate an open stream other than )]TJ +/TT8 1 Tf +20.4769 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1722 Tc +( \()Tj +/TT8 1 Tf +0.7552 0 TD +0 Tc +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1722 Tw +[( defaults to the primary input)]TJ +-26.0329 -1.2889 TD +0.2844 Tw +(stream, if other than )Tj +/TT8 1 Tf +10.337 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2844 Tw +(, or primary output stream if other than )Tj +/TT8 1 Tf +20.0422 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2844 Tw +[(\). The remaining)]TJ +-31.5793 -1.2889 TD +0.1211 Tw +(arguments specify properties to be associated with the full name of )Tj +/TT12 1 Tf +31.2053 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1211 Tw +(. )Tj +/TT8 1 Tf +0.9922 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +-34.5979 -1.2889 TD +(returns the full name of )Tj +/TT12 1 Tf +10.6821 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( as its value.)Tj +/TT8 1 Tf +-13.0825 -2.0667 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +( recognizes the following property names:)Tj +/TT8 1 Tf +-5.0009 -2.0667 TD +(BEFORE)Tj +/TT12 1 Tf +4.9333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( is a function that )]TJ +/TT8 1 Tf +8.3396 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0867 Tw +[( will apply to the stream just before it is)]TJ +-13.7405 -1.2889 TD +0.0433 Tw +[(closed. This might be used, for example, to copy information about the)]TJ +0 -1.2222 TD +0 Tw +(file from an in-core data structure to the file just before it is closed.)Tj +/TT8 1 Tf +-4.3333 -2 TD +(AFTER)Tj +/TT12 1 Tf +4.3333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1411 Tw +[( is a function that )]TJ +/TT8 1 Tf +8.6118 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1411 Tw +[( will apply to the stream just after it is)]TJ +-14.0127 -1.2889 TD +0.0578 Tw +[(closed. This capability permits in-core data structures that know about)]TJ +0 -1.2222 TD +0 Tw +(the stream to be cleaned up when the stream is closed. )Tj +/TT8 1 Tf +-6.1333 -2 TD +(CLOSEALL)Tj +/TT12 1 Tf +6.1333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0002 Tc +0.002 Tw +( is either )Tj +/TT8 1 Tf +4.0238 0 TD +0 Tc +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.0006 Tc +0.0016 Tw +( or )Tj +/TT8 1 Tf +1.4454 0 TD +0 Tc +0 Tw +(NO )Tj +/TT6 1 Tf +1.8047 0 TD +0.0022 Tw +(and determines whether )Tj +/TT12 1 Tf +11.0755 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +( will be closed by)Tj +/TT8 1 Tf +-24.3504 -1.2889 TD +0 Tc +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0722 Tc +( \()Tj +/TT8 1 Tf +0.6552 0 TD +0 Tc +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +(\) or whether )Tj +/TT8 1 Tf +5.9178 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0722 Tw +[( will ignore it \()]TJ +/TT8 1 Tf +6.7952 0 TD +0 Tw +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0722 Tw +(\). )Tj +/TT8 1 Tf +1.2275 0 TD +0 Tw +(CLOSEALL)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +63 0 obj +<< +/Length 5826 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-17)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(uses )Tj +/TT8 1 Tf +2.1841 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0044 Tw +(, so that any )Tj +/TT8 1 Tf +5.6101 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0043 Tw +( functions will be executed if the stream)Tj +-14.3953 -1.2889 TD +0 Tc +0 Tw +(is in fact closed. Files are initialized with )Tj +/TT8 1 Tf +18.3867 0 TD +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +( set to )Tj +/TT8 1 Tf +2.8511 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-30.9722 -2.0667 TD +(EOF)Tj +/TT12 1 Tf +3.1333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0567 Tw +[( is a function that will be applied to the stream when an end-of-file)]TJ +-1.8003 -1.2889 TD +0.0111 Tw +(error occurs, and the )Tj +/TT8 1 Tf +9.44 0 TD +0 Tw +(ERRORTYPELST)Tj +/TT6 1 Tf +7.2012 0 TD +0.0111 Tw +[( entry for that error, if any, returns)]TJ +/TT8 1 Tf +-16.6411 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0456 Tw +[(. The function can examine the context of the error, and can decide)]TJ +-1.8003 -1.2889 TD +0.0722 Tw +(whether to close the stream, )Tj +/TT8 1 Tf +12.9881 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.0722 Tw +[( some function, or perform some)]TJ +-17.1887 -1.2889 TD +0.0767 Tw +(other computation. If the function supplied returns normally \(i.e., does)Tj +0 -1.2222 TD +0 Tw +(not )Tj +/TT8 1 Tf +2.0619 0 TD +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.3578 Tw +[( some function\), the normal error machinery will be)]TJ +-6.2626 -1.2889 TD +0 Tw +(invoked.)Tj +0 -2 TD +0.4167 Tw +(The default )Tj +/TT8 1 Tf +6.1502 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.4167 Tw +[( behavior, unless overridden by this )]TJ +/TT8 1 Tf +18.6499 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +-26.6004 -1.2889 TD +(option, is to call the value of )Tj +/TT8 1 Tf +12.709 0 TD +(DEFAULTEOFCLOSE)Tj +/TT6 1 Tf +9.0015 0 TD +( \(below\).)Tj +-21.7105 -2.0667 TD +0.1533 Tw +(For some applications, the )Tj +/TT8 1 Tf +12.4761 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.1533 Tw +[( attribute \(see above\) is a)]TJ +-20.2774 -1.2889 TD +0.8767 Tw +[(more useful way to intercept the end-of-file error. The)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.0489 Tw +[( attribute comes into effect before the error machinery)]TJ +-7.8013 -1.2889 TD +0 Tw +(is ever activated.)Tj +0 -2 TD +(Multiple )Tj +/TT8 1 Tf +4.2337 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.1556 Tw +[( and )]TJ +/TT8 1 Tf +2.504 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1556 Tw +[( functions may be associated with a file;)]TJ +-13.3387 -1.2889 TD +0.4311 Tw +(they are executed in sequence with the most recently associated)Tj +0 -1.2222 TD +0.0922 Tw +[(function executed first. The )]TJ +/TT8 1 Tf +13.048 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0922 Tw +[( and )]TJ +/TT8 1 Tf +2.3773 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0922 Tw +[( values, however, will)]TJ +-22.0264 -1.2889 TD +0.2156 Tw +(override earlier values, so only the last value specified will have an)Tj +0 -1.2222 TD +0 Tw +(effect.)Tj +/TT10 1 Tf +-8 -2.3333 TD +(DEFAULTEOFCLOSE)Tj +/TT6 1 Tf +9 0 TD +[( )-28767.8([Variable])]TJ +-6.3333 -1.8444 TD +0.0767 Tw +(Value is the name of a function that is called by default when an end of file error occurs)Tj +0 -1.2222 TD +0.0589 Tw +(and no )Tj +/TT8 1 Tf +3.4386 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0589 Tw +[( option has been specified for the stream by )]TJ +/TT8 1 Tf +20.0012 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0589 Tw +[(. The initial value of)]TJ +/TT8 1 Tf +-30.6409 -1.2889 TD +0 Tw +(DEFAULTEOFCLOSE)Tj +/TT6 1 Tf +9.0015 0 TD +0.2011 Tw +[( is )]TJ +/TT8 1 Tf +1.6171 0 TD +0 Tw +(NILL)Tj +/TT6 1 Tf +2.4004 0 TD +0.2011 Tw +(, meaning take no special action \(go ahead and cause the)Tj +-13.0189 -1.2889 TD +0.1344 Tw +[(error\). Setting it to )]TJ +/TT8 1 Tf +9.2899 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1344 Tw +[( would cause the stream to be closed before the rest of the)]TJ +-12.8905 -1.2889 TD +0 Tw +(error machinery is invoked.)Tj +/TT4 1 Tf +10 0 0 10 54 214 Tm +(I/O Operations to and from Strings)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 211.29 m +510.01 211.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 197.34 Tm +(It is possible to treat a string as if it were the contents of a file by using the following function:)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(OPENSTRINGSTREAM)Tj +/TT6 1 Tf +9.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STR)Tj +/TT14 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 252.3088 175 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 175 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0267 Tw +(Returns a stream that can be used to access the characters of the string )Tj +/TT12 1 Tf +31.5691 0 TD +0 Tw +(STR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0267 Tw +(. )Tj +/TT12 1 Tf +0.8033 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0267 Tw +[( may)]TJ +-37.7734 -1.2889 TD +0.0644 Tw +(be either )Tj +/TT8 1 Tf +4.2134 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5644 0 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0644 Tw +(, or )Tj +/TT8 1 Tf +1.8198 0 TD +0 Tw +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(; )Tj +/TT8 1 Tf +0.5644 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0644 Tw +[( defaults to )]TJ +/TT8 1 Tf +5.3823 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0644 Tw +[(. The stream returned may be)]TJ +-26.3466 -1.2889 TD +0.1122 Tw +(used exactly like a file opened with the same access, except that output operations may)Tj +0 -1.2222 TD +0.0944 Tw +[(not extend past the end of the original string. Also, string streams do not appear in the)]TJ +T* +0 Tw +(value of )Tj +/TT8 1 Tf +3.8169 0 TD +(\(OPENP\))Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-8.0176 -2.0667 TD +(For example, after performing)Tj +/TT8 1 Tf +0 -2.8222 TD +(\(SETQ STRM \(OPENSTRINGSTREAM "THIS 2 \(IS A LIST\)"\)\))Tj +/TT6 1 Tf +0 -2.0667 TD +(the following succession of reads could occur:)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +66 0 obj +<< +/Length 6670 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-18)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 570.14 Tm +(\(READ STRM\) => THIS)Tj +0 -1 TD +( \(RATOM STRM\) => 2)Tj +T* +( \(READ STRM\) => \(IS A LIST\))Tj +T* +( \(EOFP STRM\) => T)Tj +/TT6 1 Tf +-10.6667 -1.8444 TD +0.0933 Tw +(Compatibility Note: In Interlisp-10 it was possible to take input from a string simply by passing the)Tj +0 -1.2222 TD +0.0033 Tw +(string as the )Tj +/TT12 1 Tf +5.6453 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( argument to an input function. In order to maintain compatibility with this feature,)Tj +-8.0456 -1.2889 TD +0 Tc +0.3789 Tw +[(Medley provides the same capability. This not terribly clean feature persists in the present)]TJ +0 -1.2222 TD +0.0711 Tw +[(implementation to give users time to convert old code. This means that strings are )]TJ +/TT14 1 Tf +37.8137 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0711 Tw +[( equivalent to)]TJ +-39.1467 -1.2222 TD +0.0989 Tw +[(symbols when specifying a file name as a stream argument. In a future release, the old Interlisp-10)]TJ +T* +0.1878 Tw +(string-reading feature will be decommissioned, and )Tj +/TT8 1 Tf +24.238 0 TD +0 Tw +(OPENSTRINGSTREAM)Tj +/TT6 1 Tf +9.6016 0 TD +0.1878 Tw +[( will be the only way to)]TJ +-33.8396 -1.2889 TD +0 Tw +(perform I/O on a string.)Tj +/TT4 1 Tf +10 0 0 10 102 432 Tm +(Temporary Files and the CORE Device)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 429.29 m +558.01 429.29 l +S +BT +/TT6 1 Tf +9 0 0 9 126 415.34 Tm +0.0689 Tw +(Many operating systems have a notion of "scratch file", a file typically used as temporary storage for)Tj +0 -1.2222 TD +0.0433 Tw +[(data most naturally maintained in the form of a file, rather than some other data structure. A scratch)]TJ +T* +0.0011 Tw +(file can be used as a normal file in most respects, but is automatically deleted from the file system after)Tj +T* +0.0167 Tw +[(its useful life is up, e.g., when the job terminates, or you log out. In normal operation, you need never)]TJ +T* +0 Tw +(explicitly delete such files, since they are guaranteed to disappear soon.)Tj +0 -2 TD +0.1522 Tw +[(A similar functionality is provided in Medley by core-resident files. Core-resident files are on the)]TJ +0 -1.2222 TD +0 Tw +(device )Tj +/TT8 1 Tf +3.2731 0 TD +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1544 Tw +[(. The directory structure for this device and all files on it are represented completely)]TJ +-5.6735 -1.2889 TD +0.0611 Tw +[(within your virtual memory. These files are treated as ordinary files by all file operations; their only)]TJ +0 -1.2222 TD +0 Tw +(distinguishing feature is that all trace of them disappears when the Medley image is abandoned.)Tj +0 -2 TD +0.4222 Tw +(Core files are opened and closed by name the same as any other file, e.g., )Tj +/TT8 1 Tf +38.7347 0 TD +0 Tw +(\(OPENSTREAM)Tj +-38.7347 -1.2889 TD +0.3544 Tw +({CORE}FIE.DCOM OUTPUT\))Tj +/TT6 1 Tf +17.7573 0 TD +0.1478 Tw +[(. Directory names are completely optional, so files can also)]TJ +-17.7573 -1.2889 TD +0.0111 Tw +(have names of the form )Tj +/TT8 1 Tf +10.7221 0 TD +0 Tw +({CORE}NAME.EXT)Tj +/TT6 1 Tf +8.4014 0 TD +0.0111 Tw +[(. Core files can be enumerated by )]TJ +/TT8 1 Tf +15.2901 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0111 Tw +[( \(see below\).)]TJ +-39.8144 -1.2889 TD +0.0944 Tw +(While open, they are registered in \()Tj +/TT8 1 Tf +16.1262 0 TD +0 Tw +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +0.0944 Tw +[(\). They do consume virtual memory space, which is only)]TJ +-19.1267 -1.2889 TD +0.0356 Tw +[(reclaimed when the file is deleted. Some caution should thus be used when creating large )]TJ +/TT8 1 Tf +40.5772 0 TD +0 Tw +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( files.)]TJ +-42.9776 -1.2889 TD +0.0067 Tw +(Since the virtual memory of an Medley workstation usually persists far longer than the typical process)Tj +0 -1.2222 TD +0 Tw +(on a mainframe computer, it is still important to delete )Tj +/TT8 1 Tf +24.4429 0 TD +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +( files after they are no longer in use.)Tj +-26.8433 -2.0667 TD +0.1089 Tw +(For many applications, the name of the scratch file is irrelevant, and there is no need for anyone to)Tj +0 -1.2222 TD +0.04 Tw +[(have access to the file independent of the program that created it. For such applications, )]TJ +/TT8 1 Tf +39.931 0 TD +0 Tw +(NODIRCORE)Tj +/TT6 1 Tf +-39.931 -1.2889 TD +0.11 Tw +[(files are preferable. Files created on the device lisp )]TJ +/TT8 1 Tf +23.8129 0 TD +0 Tw +(NODIRCORE)Tj +/TT6 1 Tf +5.4009 0 TD +0.11 Tw +[( are core-resident files that have no)]TJ +-29.2138 -1.2889 TD +0.0467 Tw +[(name and are registered in no directory. These files "disappear", and the resources they consume are)]TJ +0 -1.2222 TD +0.0089 Tw +[(reclaimed, when all pointers to the file are dropped. Hence, such files need never be explicitly deleted)]TJ +T* +0.2211 Tw +[(or, for that matter, closed. The "name" of such a file is simply the stream object returned from)]TJ +/TT8 1 Tf +T* +0.2922 Tw +(\(OPENSTREAM {NODIRCORE} OUTPUT\))Tj +/TT6 1 Tf +20.3877 0 TD +0.1222 Tw +(, and it is this stream object that must be passed to all)Tj +-20.3877 -1.4378 TD +0 Tw +(input/output operations, including )Tj +/TT8 1 Tf +15.9556 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +( and any calls to )Tj +/TT8 1 Tf +7.4028 0 TD +(OPENSTREAM)Tj +/TT16 1 Tf +10 0 0 10 422.6396 134 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 425.418 134 Tm +(to reopen the file. )Tj +/TT8 1 Tf +-30.602 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(COREDEVICE)Tj +/TT4 1 Tf +10 0 0 10 209.4 111.06 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 212.1783 111.06 Tm +(NAME)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NODIRFLG)Tj +/TT8 1 Tf +4.8008 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 284.6397 111.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 111.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1 Tw +(Creates a new device for core-resident files and assigns )Tj +/TT12 1 Tf +25.4947 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1 Tw +[( as its device name. Thus,)]TJ +-27.8951 -1.2889 TD +0.2389 Tw +(after performing )Tj +/TT8 1 Tf +8.072 0 TD +0.5733 Tw +(\(COREDEVICE FOO\))Tj +/TT6 1 Tf +10.775 0 TD +0.2389 Tw +(, one can execute )Tj +/TT8 1 Tf +8.6645 0 TD +0 Tw +(\(OPENSTREAM)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT8 1 Tf +0.4889 0 TD +({FOO}BAR)Tj +-34.6015 -1.2889 TD +(OUTPUT\))Tj +/TT6 1 Tf +4.8008 0 TD +0.0089 Tw +[( to open a file on that device. Medley is initialized with the single core-resident)]TJ +-4.8008 -1.2889 TD +0.1789 Tw +(device named )Tj +/TT8 1 Tf +6.7811 0 TD +0 Tw +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1789 Tw +(, but )Tj +/TT8 1 Tf +2.5902 0 TD +0 Tw +(COREDEVICE)Tj +/TT6 1 Tf +6.001 0 TD +0.1789 Tw +[( may be used to create any number of logically)]TJ +-17.7727 -1.2889 TD +0 Tw +(distinct core devices.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +69 0 obj +<< +/Length 6582 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-19)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(NODIRFLG)Tj +/TT6 1 Tf +4.8008 0 TD +( is non-)Tj +/TT8 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, a core device that acts like )Tj +/TT8 1 Tf +12.2778 0 TD +({NODIRCORE})Tj +/TT6 1 Tf +6.6011 0 TD +( is created.)Tj +-29.6577 -2.0667 TD +0.2155 Tw +(Compatibility note: In Interlisp-10, it was possible to create scratch files by using file)Tj +0 -1.2222 TD +0.1011 Tw +[(names with suffixes ;S or ;T. In Medley, these suffixes in file names are simply ignored)]TJ +T* +0.4444 Tw +[(when output is directed to a particular host or device. However, the function)]TJ +/TT8 1 Tf +T* +0 Tw +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.0511 Tw +[( is defined to default the device name to )]TJ +/TT8 1 Tf +18.3975 0 TD +0 Tw +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0511 Tw +[( if the file has the)]TJ +/TT8 1 Tf +-32.1997 -1.2889 TD +0 Tw +(TEMPORARY)Tj +/TT6 1 Tf +5.4009 0 TD +( attribute and no explicit host is provided.)Tj +/TT4 1 Tf +10 0 0 10 54 478.4 Tm +(NULL Device)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 475.69 m +510.01 475.69 l +S +BT +/TT6 1 Tf +9 0 0 9 78 461.74 Tm +(The )Tj +/TT8 1 Tf +2.1127 0 TD +(NULL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1889 Tw +[( device provides a source of content-free "files". )]TJ +/TT8 1 Tf +23.1141 0 TD +0.4522 Tw +(\(OPENSTREAM {NULL} OUTPUT\))Tj +/TT6 1 Tf +-27.6272 -1.2889 TD +0.1478 Tw +(creates a stream that discards all output directed at it. )Tj +/TT8 1 Tf +25.7794 0 TD +0 Tw +(\(OPENSTREAM)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT8 1 Tf +0.3978 0 TD +({NULL})Tj +/TT18 1 Tf +4.2007 0 TD +0.1478 Tc +( )Tj +/TT8 1 Tf +0.6756 0 TD +0 Tc +(INPUT)Tj +/TT18 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.333 0 TD +0.1478 Tw +[( creates a)]TJ +-40.988 -1.2889 TD +0 Tw +(stream that is perpetually at end-of-file \(i.e., has no input\). )Tj +/TT4 1 Tf +10 0 0 10 54 411.2 Tm +(Deleting, Copying, and Renaming Files)Tj +ET +54.01 408.49 m +510.01 408.49 l +S +BT +/TT8 1 Tf +9 0 0 9 102 390.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DELFILE)Tj +/TT6 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 174.4544 390.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 390.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Deletes )Tj +/TT12 1 Tf +3.6608 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1589 Tw +[( if possible. The file must be closed. Returns the full name of the file if)]TJ +-6.0612 -1.2889 TD +0.1244 Tw +(deleted, else )Tj +/TT8 1 Tf +5.9476 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1244 Tw +[(. Recognition mode for )]TJ +/TT12 1 Tf +11.2257 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1244 Tw +[( is )]TJ +/TT8 1 Tf +1.4637 0 TD +0 Tw +(OLDEST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1244 Tw +(, i.e., if )Tj +/TT12 1 Tf +3.5174 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1244 Tw +[( does not have a)]TJ +-32.3561 -1.2889 TD +0 Tw +(version number specified, then )Tj +/TT8 1 Tf +13.9487 0 TD +(DELFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( deletes the oldest version of the file.)Tj +/TT8 1 Tf +-20.8161 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(COPYFILE)Tj +/TT6 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FROMFILE)Tj +/TT14 1 Tf +4.8008 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TOFILE)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 236.1132 327.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 327.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Copies )Tj +/TT12 1 Tf +3.4009 0 TD +(FROMFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1011 Tw +[( to a new file named )]TJ +/TT12 1 Tf +9.8225 0 TD +0 Tw +(TOFILE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1011 Tw +[(. The source and destination may be on)]TJ +-21.6248 -1.2889 TD +0.3544 Tw +(any combination of hosts/devices. )Tj +/TT8 1 Tf +17.5335 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3544 Tw +[( attempts to preserve the )]TJ +/TT8 1 Tf +12.9636 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3544 Tw +[( and)]TJ +/TT8 1 Tf +-37.6983 -1.2889 TD +0 Tw +(CREATIONDATE)Tj +/TT6 1 Tf +7.2012 0 TD +0.18 Tw +[( where possible. If the original files file type is unknown, )]TJ +/TT8 1 Tf +27.9994 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +-35.2005 -1.2889 TD +0.0789 Tw +(attempts to infer the type \(file type is )Tj +/TT8 1 Tf +17.2024 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.0789 Tw +[( if any of its 8-bit bytes have their high bit)]TJ +-20.803 -1.2889 TD +0 Tw +(on\).)Tj +/TT8 1 Tf +0 -2 TD +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3522 Tw +[( uses )]TJ +/TT8 1 Tf +3.1341 0 TD +0 Tw +(COPYCHARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.3522 Tw +[( \(Chapter 25\) if the source and destination hosts have)]TJ +-13.3358 -1.2889 TD +0.02 Tw +[(different EOL conventions. Thus, it is possible for the source and destination files to be of)]TJ +0 -1.2222 TD +0 Tw +(different lengths.)Tj +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(RENAMEFILE)Tj +/TT6 1 Tf +6.0003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(OLDFILE)Tj +/TT14 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 242.1094 201.52 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 201.52 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Renames )Tj +/TT12 1 Tf +4.2958 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( to be )]TJ +/TT12 1 Tf +2.7476 0 TD +0 Tw +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[(. Causes an error, )]TJ +/TT8 1 Tf +8.3362 0 TD +0.0756 Tw +(FILE NOT FOUND)Tj +/TT6 1 Tf +8.5525 0 TD +0.0311 Tw +[( if )]TJ +/TT12 1 Tf +1.1862 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +[( does not)]TJ +-35.9201 -1.2889 TD +0.0233 Tw +[(exist. Returns the full name of the new file, if successful, else )]TJ +/TT8 1 Tf +27.486 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0233 Tw +[( if the rename cannot be)]TJ +-29.2862 -1.2889 TD +0 Tw +(performed.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +1.1133 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1933 Tw +[( and )]TJ +/TT12 1 Tf +2.5795 0 TD +0 Tw +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1933 Tw +[( are on the same host/device, and the device implements a)]TJ +-12.0942 -1.2889 TD +0.0133 Tw +(renaming primitive, )Tj +/TT8 1 Tf +9.1668 0 TD +0 Tw +(RENAMEFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0133 Tw +[( can be very fast. However, if the device does not know)]TJ +-15.1678 -1.2889 TD +0.2544 Tw +(how to rename files in place, or if )Tj +/TT12 1 Tf +17.0082 0 TD +0 Tw +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2544 Tw +[( and )]TJ +/TT12 1 Tf +2.7018 0 TD +0 Tw +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2544 Tw +[( are on different devices,)]TJ +/TT8 1 Tf +-28.1113 -1.2889 TD +0 Tw +(RENAMEFILE)Tj +/TT6 1 Tf +6.001 0 TD +( works by copying )Tj +/TT12 1 Tf +8.4404 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( to )Tj +/TT12 1 Tf +1.3721 0 TD +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( and then deleting )Tj +/TT12 1 Tf +8.2773 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +72 0 obj +<< +/Length 7274 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-20)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.375 -4.38 TD +(Searching File Directories)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +558.01 565.49 l +S +BT +/TT10 1 Tf +9 0 0 9 150 547.2 Tm +(DIRECTORIES)Tj +/TT16 1 Tf +10 0 0 10 209.4 547.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 547.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1455 Tw +(Global variable containing the list of directories searched \(in order\) by SPELLFILE and)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(FINDFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1189 Tw +[( \(below\) when not given an explicit )]TJ +/TT12 1 Tf +16.677 0 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1189 Tw +[( argument. In this list, the atom)]TJ +/TT8 1 Tf +-25.0783 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0456 Tw +[( stands for the login directory \(the value of )]TJ +/TT8 1 Tf +19.534 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.0456 Tw +(\), and the atom )Tj +/TT8 1 Tf +7.1002 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0456 Tw +[( stands)]TJ +-36.8359 -1.2889 TD +0.5178 Tw +[(for the currently connected directory. Other elements should be )]TJ +/TT14 1 Tf +33.7959 0 TD +0 Tw +(full)Tj +/TT6 1 Tf +1.3896 0 TD +0.5178 Tw +[( directory)]TJ +-35.1856 -1.2222 TD +0 Tw +(specifications, e.g., )Tj +/TT8 1 Tf +8.5107 0 TD +({TWENTY}PS:)Tj +/TT6 1 Tf +13.2022 0 TD +(, not merely )Tj +/TT8 1 Tf +5.5371 0 TD +(LISPUSERS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-35.3176 -2.5489 TD +(LISPUSERSDIRECTORIES)Tj +/TT16 1 Tf +10 0 0 10 258 462.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 462.46 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0856 Tw +[(Global variable containing a list of directories to search for "library" package files. Used)]TJ +0 -1.2222 TD +0 Tw +(by the )Tj +/TT8 1 Tf +2.9966 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( file package command \(Chapter 17\).)Tj +/TT8 1 Tf +-8.6637 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NOPRINTFLG)Tj +/TT14 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NSFLG)Tj +/TT14 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DIRLST)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 353.4229 411.92 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 411.92 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0633 Tw +(Searches for the file name )Tj +/TT14 1 Tf +11.8933 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.0562 0 TD +0.0633 Tw +(, possibly performing spelling correction \(see Chapter 20\).)Tj +-13.9495 -1.2222 TD +0 Tw +(Returns the corrected file name, if any, otherwise )Tj +/TT8 1 Tf +21.939 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-23.7393 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9877 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0678 Tw +[( has a directory field, )]TJ +/TT8 1 Tf +9.8926 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0678 Tw +[( attempts spelling correction against the files in)]TJ +-18.6816 -1.2889 TD +0.0344 Tw +[(that particular directory. Otherwise, )]TJ +/TT8 1 Tf +16.642 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0344 Tw +[( searches for the file on the directory list)]TJ +/TT12 1 Tf +-22.0428 -1.2889 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +( before attempting any spelling correction.)Tj +-3.6006 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9355 0 TD +(NOPRINTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0156 Tw +[( is )]TJ +/TT8 1 Tf +1.246 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5156 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0156 Tw +[( asks you to confirm any spelling correction done, and)]TJ +-15.8991 -1.2889 TD +0.13 Tw +[(prints out any files found, even if spelling correction is not done. If )]TJ +/TT12 1 Tf +31.7936 0 TD +0 Tw +(NOPRINTFLG)Tj +/TT6 1 Tf +6.001 0 TD +( )Tj +/TT8 1 Tf +0.38 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.38 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +/TT8 1 Tf +-39.7548 -1.2889 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +( does not do any printing, nor ask for approval.)Tj +-5.4009 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.021 0 TD +(NSFLG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.3511 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3511 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( \(or )]TJ +/TT8 1 Tf +1.9761 0 TD +0 Tw +(NOSPELLFLG)Tj +/TT6 1 Tf +6.001 0 TD +( )Tj +/TT8 1 Tf +0.3511 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3511 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +(, see Chapter 20\), no spelling correction is attempted,)Tj +-15.8035 -1.2889 TD +0 Tw +(though searching through )Tj +/TT12 1 Tf +11.7886 0 TD +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +( still occurs.)Tj +/TT12 1 Tf +-15.3892 -2.0667 TD +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.21 Tw +[( is the list of directories searched if )]TJ +/TT12 1 Tf +17.2113 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.21 Tw +[( does not have a directory field. If)]TJ +/TT12 1 Tf +-23.2122 -1.2889 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the value of the variable )Tj +/TT8 1 Tf +11.4155 0 TD +(DIRECTORIES)Tj +/TT6 1 Tf +6.6011 0 TD +( is used.)Tj +-21.9657 -2.0667 TD +[(Note:)-901.2(If )]TJ +/TT12 1 Tf +4.331 0 TD +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0778 Tw +[( is )]TJ +/TT8 1 Tf +1.3704 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0778 Tw +(, and )Tj +/TT12 1 Tf +2.5984 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +[( is not found by searching the directories)]TJ +-12.7678 -1.2889 TD +0 Tw +(on )Tj +/TT8 1 Tf +1.6824 0 TD +(DIRECTORIES)Tj +/TT6 1 Tf +6.6011 0 TD +0.3044 Tw +(, but the root name of )Tj +/TT12 1 Tf +11.582 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3044 Tw +[( has a )]TJ +/TT8 1 Tf +3.6692 0 TD +0 Tw +(FILEDATES)Tj +/TT6 1 Tf +-25.9351 -1.2889 TD +0.2211 Tw +(property \(Chapter 17\) indicating that a file by that name has been)Tj +0 -1.2222 TD +(loaded, then the directory indicated in the )Tj +/TT8 1 Tf +20.3798 0 TD +0 Tw +(FILEDATES)Tj +/TT6 1 Tf +5.4009 0 TD +0.2211 Tw +[( property is)]TJ +-25.7807 -1.2889 TD +0.1533 Tw +[(searched, too. This additional search is not done if )]TJ +/TT12 1 Tf +24.1578 0 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1533 Tw +[( is non-)]TJ +/TT8 1 Tf +-27.7584 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT8 1 Tf +-7.8003 -2.0667 TD +(ERRORTYPELST)Tj +/TT6 1 Tf +7.2012 0 TD +0.1989 Tw +[( \(Chapter 14\) initially contains the entry )]TJ +/TT8 1 Tf +19.2404 0 TD +0.4789 Tw +(\(\(23 \(SPELLFILE \(CADR)Tj +-26.4415 -1.2889 TD +0.0556 Tw +(ERRORMESS\) NIL NOFILESPELLFLG\)\)\))Tj +/TT6 1 Tf +19.3142 0 TD +0.0233 Tw +(, which causes )Tj +/TT8 1 Tf +6.6764 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[( to be called in case)]TJ +-31.3916 -1.2889 TD +0.1233 Tw +(of a )Tj +/TT8 1 Tf +2.1256 0 TD +0.2956 Tw +(FILE NOT FOUND)Tj +/TT6 1 Tf +8.9925 0 TD +0.1233 Tw +[( error. If the variable )]TJ +/TT8 1 Tf +10.3313 0 TD +0 Tw +(NOFILESPELLFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.1233 Tw +[( is )]TJ +/TT8 1 Tf +1.4615 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1233 Tw +[( \(its initial value\),)]TJ +-31.9123 -1.2889 TD +0.0711 Tw +(then spelling correction is not done on the file name, but )Tj +/TT8 1 Tf +25.9365 0 TD +0 Tw +(DIRECTORIES)Tj +/TT6 1 Tf +6.6011 0 TD +0.0711 Tw +[( is still searched.)]TJ +-32.5376 -1.2889 TD +0 Tw +(If )Tj +/TT8 1 Tf +0.9621 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0422 Tw +[( is successful, the operation will be reexecuted with the new \(corrected\) file)]TJ +-6.363 -1.2889 TD +0 Tw +(name.)Tj +ET +endstream +endobj +73 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +75 0 obj +<< +/Length 8288 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-21)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT8 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FINDFILE)Tj +/TT6 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT14 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NSFLG)Tj +/TT14 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DIRLST)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 243.764 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Uses )Tj +/TT8 1 Tf +2.4623 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1078 Tw +[( to search for a file named )]TJ +/TT12 1 Tf +12.4229 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1078 Tw +[(. If it finds one, returns its full name,)]TJ +-22.6864 -1.2889 TD +0.0256 Tw +[(with no user interaction. Specifically, it calls )]TJ +/TT8 1 Tf +20.1415 0 TD +0 Tw +(\(SPELLFILE)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.2756 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.2756 0 TD +(T)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.2756 0 TD +(NSFLG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.2756 0 TD +(DIRLST)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0256 Tw +(, after)Tj +-37.4463 -1.2889 TD +0.0556 Tw +[(first performing two simple checks: If )]TJ +/TT12 1 Tf +17.4924 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0556 Tw +[( has an explicit directory, it checks to see if a)]TJ +-19.8928 -1.2889 TD +0.04 Tw +[(file so named exists, and if so returns that file. If )]TJ +/TT12 1 Tf +22.1475 0 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.04 Tw +[( is )]TJ +/TT8 1 Tf +1.2948 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +(, it looks for )Tj +/TT12 1 Tf +5.6639 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.04 Tw +[( on the)]TJ +-36.9075 -1.2889 TD +0 Tw +(connected directory before calling )Tj +/TT8 1 Tf +15.2759 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 477.26 Tm +(Listing File Directories)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 474.55 m +510.01 474.55 l +S +BT +/TT6 1 Tf +9 0 0 9 78 460.6 Tm +0.1033 Tw +(The function )Tj +/TT8 1 Tf +6.0875 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.1033 Tw +[( allows you to conveniently specify and/or program a variety of directory)]TJ +-11.4884 -1.2889 TD +0 Tw +(operations:)Tj +/TT8 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILES)Tj +/TT14 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(COMMANDS)Tj +/TT14 1 Tf +4.8008 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DEFAULTEXT)Tj +/TT14 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DEFAULTVERS)Tj +/TT8 1 Tf +6.6011 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 354.0308 426.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 426.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1611 Tw +(Returns, lists, or performs arbitrary operations on all files specified by the "file group")Tj +/TT12 1 Tf +0 -1.2222 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.01 Tw +[(. A file group has the form of a regular file name, except that the character )]TJ +/TT8 1 Tf +33.3106 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.01 Tw +[( can be)]TJ +-36.9112 -1.2889 TD +0.1 Tw +[(used to match any number of characters, including zero, in the file name. For example,)]TJ +0 -1.2222 TD +0.04 Tw +(the file group )Tj +/TT8 1 Tf +6.3524 0 TD +0 Tw +(A*B)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +[( matches all file names beginning with the character )]TJ +/TT8 1 Tf +23.5495 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +[( and ending with)]TJ +-32.3023 -1.2889 TD +0 Tw +(the character )Tj +/TT8 1 Tf +5.9521 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(. The file group )Tj +/TT8 1 Tf +7.269 0 TD +(*.DCOM)Tj +/TT6 1 Tf +3.6006 0 TD +( matches all files with an extension of )Tj +/TT8 1 Tf +16.7568 0 TD +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-36.5791 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9866 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.0667 Tw +[( does not contain an explicit extension, it is defaulted to )]TJ +/TT12 1 Tf +25.5014 0 TD +0 Tw +(DEFAULTEXT)Tj +/TT6 1 Tf +6.001 0 TD +0.0667 Tw +(; if )Tj +/TT12 1 Tf +1.5074 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +-36.9968 -1.2889 TD +0.0867 Tw +(does not contain an explicit version, it is defaulted to )Tj +/TT12 1 Tf +24.4414 0 TD +0 Tw +(DEFAULTVERS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0867 Tw +(. )Tj +/TT12 1 Tf +0.9233 0 TD +0 Tw +(DEFAULTEXT)Tj +/TT6 1 Tf +6.001 0 TD +0.0867 Tw +[( and)]TJ +/TT12 1 Tf +-37.9668 -1.2889 TD +0 Tw +(DEFAULTVERS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0511 Tw +[( themselves default to )]TJ +/TT8 1 Tf +10.1512 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0511 Tw +[(. If the period or semicolon preceding the omitted)]TJ +-17.3524 -1.2889 TD +0.0178 Tw +(extension or version, respectively, is present, the field is explicitly empty and no default is)Tj +0 -1.2222 TD +0.1078 Tw +[(used. All other unspecified fields default to )]TJ +/TT8 1 Tf +20.4985 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1078 Tw +[(. Null version is interpreted as "highest".)]TJ +-21.0985 -1.2889 TD +0 Tw +(Thus )Tj +/TT12 1 Tf +2.5239 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.3022 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.3022 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0522 Tw +[( or )]TJ +/TT8 1 Tf +1.5454 0 TD +0 Tw +(*.*)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( or )]TJ +/TT8 1 Tf +1.5454 0 TD +0 Tw +(*.*;*)Tj +/TT6 1 Tf +3.0005 0 TD +0.0522 Tw +[( enumerates all files on the connected directory; )]TJ +/TT12 1 Tf +21.7684 0 TD +0 Tw +(FILES)Tj +/TT8 1 Tf +-36.9889 -1.2889 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.6356 0 TD +(*)Tj +/TT18 1 Tf +0.6001 0 TD +(.)Tj +/TT6 1 Tf +0.25 0 TD +0.3856 Tw +[( or )]TJ +/TT8 1 Tf +2.212 0 TD +0 Tw +(*.;*)Tj +/TT6 1 Tf +2.4004 0 TD +0.3856 Tw +[( enumerates all versions of files with null extension; )]TJ +/TT12 1 Tf +26.6297 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.6356 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +0.6356 0 TD +(*.;)Tj +/TT6 1 Tf +-38.1995 -1.2889 TD +0.3678 Tw +(enumerates the highest version of files with null extension; and )Tj +/TT12 1 Tf +31.9019 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.6178 0 TD +0.8822 Tw +(= *.*;)Tj +/TT6 1 Tf +-35.5202 -1.2889 TD +0 Tw +(enumerates the highest version of all files. If )Tj +/TT12 1 Tf +20.0078 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, it defaults to )Tj +/TT8 1 Tf +6.3062 0 TD +(*.*)Tj +/TT18 1 Tf +1.8003 0 TD +(;)Tj +/TT8 1 Tf +0.25 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-32.3133 -2.0667 TD +0.0344 Tw +[(Note:)-901.2(Some hosts/devices are not capable of supporting "highest version" in)]TJ +3.3333 -1.2222 TD +0 Tw +(enumeration. Such hosts instead enumerate )Tj +/TT14 1 Tf +19.8106 0 TD +(all)Tj +/TT6 1 Tf +0.9995 0 TD +( versions.)Tj +-26.8101 -2 TD +0.1467 Tw +(For each file that matches the file group )Tj +/TT12 1 Tf +18.9238 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.1467 Tw +(, the "file commands" in )Tj +/TT12 1 Tf +11.5019 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1467 Tw +[( are)]TJ +-38.227 -1.2889 TD +0.1156 Tw +[(executed in order. Some of the file commands allow aborting the command processing)]TJ +0 -1.2222 TD +0.0644 Tw +[(for a given file, effectively filtering the list of files. The interpretation of the different file)]TJ +T* +0.1722 Tw +[(commands is described below. If )]TJ +/TT12 1 Tf +16.0299 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1722 Tw +[( is )]TJ +/TT8 1 Tf +1.5593 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1722 Tw +(, it defaults to )Tj +/TT8 1 Tf +6.995 0 TD +0 Tw +(\(COLLECT\))Tj +/TT6 1 Tf +5.4009 0 TD +0.1722 Tw +(, which)Tj +-36.5862 -1.2889 TD +0 Tw +(collects the matching file names in a list and returns it as the value of )Tj +/TT8 1 Tf +30.6548 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-41.389 -2.0667 TD +(The "file commands" in )Tj +/TT12 1 Tf +10.5552 0 TD +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +( are interpreted as follows:)Tj +/TT8 1 Tf +-6.6226 -2.2156 TD +(P)Tj +/TT6 1 Tf +1.9333 0 TD +0.0867 Tw +[(Prints the files name. For readability, )]TJ +/TT8 1 Tf +17.696 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0867 Tw +[( strips the directory)]TJ +-23.0969 -1.2889 TD +0.2467 Tw +(from the name, printing it once as a header in front of each set of)Tj +0 -1.2222 TD +0 Tw +(consecutive files on the same directory.)Tj +/TT8 1 Tf +-2.5333 -2.1489 TD +(PP)Tj +/TT6 1 Tf +2.5333 0 TD +(Prints the files name without a version number.)Tj +-4.6578 -2.0667 TD +[(a string)-1333.6(Prints the string.)]TJ +/TT8 1 Tf +-8.0756 -1.9333 TD +(READDATE, WRITEDATE)Tj +ET +endstream +endobj +76 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +79 0 obj +<< +/Length 5686 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 81 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-22)Tj +/TT6 1 Tf +1.6667 65.3333 TD +( )Tj +/TT16 1 Tf +10 0 0 10 98.25 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 112.8 570.14 Tm +(CREATIONDATE, SIZE)Tj +1.2 -1.4378 TD +(LENGTH, BYTESIZE)Tj +-1.2 -1.4378 TD +(PROTECTION, AUTHOR)Tj +8.4 -1.4378 TD +(TYPE)Tj +/TT6 1 Tf +3.7333 0 TD +0.3478 Tw +(Prints the appropriate information returned by )Tj +/TT8 1 Tf +23.0857 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.3478 Tw +[( \(see)]TJ +-29.6868 -1.2889 TD +0 Tw +(above\).)Tj +/TT8 1 Tf +-5.5333 -2 TD +(COLLECT)Tj +/TT6 1 Tf +5.5333 0 TD +0.1578 Tw +(Adds the full name of this file to an accumulating list, which will be)Tj +0 -1.2889 TD +0 Tw +(returned as the value of )Tj +/TT8 1 Tf +10.748 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +-22.8823 -2.0667 TD +(COUNTSIZE)Tj +/TT6 1 Tf +6.7333 0 TD +0.3322 Tw +(Adds the size of this file to an accumulating sum, which will be)Tj +0 -1.2889 TD +0 Tw +(returned as the value of )Tj +/TT8 1 Tf +10.748 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +-21.0823 -2.0667 TD +(DELETE)Tj +/TT6 1 Tf +4.9333 0 TD +(Deletes the file.)Tj +/TT8 1 Tf +-4.9333 -2.0667 TD +(DELVER)Tj +/TT6 1 Tf +4.9333 0 TD +(If this file is not the highest version of files by its name, delete it.)Tj +/TT8 1 Tf +-4.3333 -2.0667 TD +(PAUSE)Tj +/TT6 1 Tf +4.3333 0 TD +0.1411 Tw +(Waits until you type any character before proceeding with the rest of)Tj +0 -1.2889 TD +0 Tw +(the commands \(good for display if you want to ponder\).)Tj +-5.3333 -2 TD +0.0844 Tw +[(The following commands are predicates to filter the list. If the predicate is not satisfied,)]TJ +0 -1.2222 TD +0.0189 Tw +(then processing for this file is aborted and no further commands \(such as those above\) are)Tj +T* +0 Tw +(executed for this file.)Tj +2.6667 -2 TD +0.1156 Tw +[(Note:)-901.2(if the )]TJ +/TT8 1 Tf +6.0757 0 TD +0 Tw +(P)Tj +/TT6 1 Tf +0.6001 0 TD +0.1156 Tw +[( and )]TJ +/TT8 1 Tf +2.424 0 TD +0 Tw +(PP)Tj +/TT6 1 Tf +1.2002 0 TD +0.1156 Tw +[( commands appear in )]TJ +/TT12 1 Tf +10.2835 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1156 Tw +[( ahead of any of the)]TJ +-22.0509 -1.2889 TD +0.1744 Tw +(filtering commands below except )Tj +/TT8 1 Tf +15.6626 0 TD +0 Tw +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1744 Tw +(, they are postponed until)Tj +-19.2632 -1.2889 TD +0.2022 Tw +[(after the filters. Thus, assuming the caller has placed the attribute)]TJ +0 -1.2222 TD +0.1933 Tw +(options after the filters as well, no printing occurs for a file that is)Tj +T* +0.0656 Tw +[(filtered out. This is principally so that functions like )]TJ +/TT8 1 Tf +24.0057 0 TD +0 Tw +(DIR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0656 Tw +[( \(below\) can)]TJ +-25.8059 -1.2889 TD +0.4433 Tw +(both request printing and pass arbitrary commands through to)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(, and have the printing happen in the appropriate place.)Tj +/TT8 1 Tf +-13.6509 -2.0667 TD +(PROMPT)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(MESS)Tj +/TT6 1 Tf +3.7327 0 TD +0.0056 Tw +(Prompts with the yes/no question )Tj +/TT12 1 Tf +15.4809 0 TD +0 Tw +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0056 Tw +(; if user responds with )Tj +/TT8 1 Tf +10.1474 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +(o, abort)Tj +-28.6288 -1.2889 TD +0 Tw +(command processing for this file.)Tj +/TT8 1 Tf +-7.5833 -2 TD +(OLDERTHAN)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +1.9325 0 TD +0.0056 Tw +(Continue command processing if the file hasnt been referenced \(read or)Tj +0 -1.2889 TD +0.1033 Tw +(written\) in )Tj +/TT12 1 Tf +5.1461 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1033 Tw +[( days. )]TJ +/TT12 1 Tf +3.4008 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1033 Tw +[( can also be a string naming an explicit date and)]TJ +-9.7471 -1.2889 TD +0 Tw +(time since which the file must not have been referenced.)Tj +/TT8 1 Tf +-7.5833 -2 TD +(NEWERTHAN)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +1.9325 0 TD +0.1656 Tw +(Continue command processing if the file has been written within the)Tj +0 -1.2889 TD +0 Tw +(last )Tj +/TT12 1 Tf +1.9388 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1478 Tw +[( days. )]TJ +/TT12 1 Tf +3.5342 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.1478 Tw +[( can also be a string naming an explicit date and time.)]TJ +-6.6731 -1.2889 TD +0.2744 Tw +(Note that this is not quite the complement of )Tj +/TT8 1 Tf +22.4676 0 TD +0 Tw +(OLDERTHAN)Tj +/TT6 1 Tf +5.4009 0 TD +0.2744 Tw +(, since it)Tj +-27.8684 -1.2889 TD +0 Tw +(ignores the read date.)Tj +/TT8 1 Tf +-5.1833 -2 TD +(BY)Tj +/TT18 1 Tf +1.2002 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(USER)Tj +/TT6 1 Tf +3.7331 0 TD +0.0933 Tw +(Continue command processing if the file was last written by the given)Tj +0 -1.2889 TD +0 Tw +(user, i.e., its )Tj +/TT8 1 Tf +5.4619 0 TD +(AUTHOR)Tj +/TT6 1 Tf +3.6006 0 TD +( attribute matches \(case insensitively\) )Tj +/TT12 1 Tf +16.7813 0 TD +(USER)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-31.0275 -2.0667 TD +(@)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +1.3331 Tc +(XX)Tj +/TT6 1 Tf +2.5333 0 TD +0 Tc +0.2467 Tw +[( is either a function of one argument \()]TJ +/TT12 1 Tf +18.5905 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.2467 Tw +(\), or an arbitrary)Tj +-23.9914 -1.2889 TD +0.0711 Tw +(expression which uses the variable )Tj +/TT8 1 Tf +15.9664 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0711 Tw +[( freely. If )]TJ +/TT12 1 Tf +4.7376 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0711 Tw +[( returns )]TJ +/TT8 1 Tf +3.8463 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(,)Tj +-31.7515 -1.2889 TD +(abort command processing for this file.)Tj +-5.3333 -2 TD +0.0522 Tw +(The following two commands apply not to any particular file, but globally to the manner)Tj +0 -1.2222 TD +0 Tw +(in which directory information is printed.)Tj +ET +endstream +endobj +80 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT12 9 0 R +/TT16 11 0 R +/TT18 17 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +82 0 obj +<< +/Length 4111 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-23)Tj +/TT16 1 Tf +10 0 0 10 384 612 Tm +(STREAMS & FILES)Tj +/TT8 1 Tf +9 0 0 9 121.95 569.54 Tm +(OUT)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT6 1 Tf +3.733 0 TD +(Directs output to )Tj +/TT12 1 Tf +7.7603 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT8 1 Tf +-16.544 -2.0667 TD +(COLUMNS)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +1.9326 0 TD +(Attempts to format output in )Tj +/TT12 1 Tf +13.1265 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +( columns \(rather than just 1\).)Tj +/TT8 1 Tf +-24.3932 -2.0667 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.3867 Tw +[( uses the variable )]TJ +/TT8 1 Tf +9.4378 0 TD +0 Tw +(DIRCOMMANDS)Tj +/TT6 1 Tf +6.6011 0 TD +0.3867 Tw +[( as a spelling list to correct spelling and define)]TJ +-21.4397 -1.2889 TD +0 Tw +(abbreviations and synonyms \(see Chapter 20\). Currently the following abbreviations are recognized:)Tj +/TT8 1 Tf +16.1333 -1.7111 TD +[(AU)-1333.1(=> AUTHOR)]TJ +0.6 -1.5556 TD +[(-)-1333.2(=> PAUSE)]TJ +-4.2 -1.5556 TD +[(COLLECT?)-1332.6(=> PROMPT " ? " COLLECT)]TJ +3.6 -1.5556 TD +(DA)Tj +-1.2 -1 TD +[(DATE)-1332.9(=> CREATIONDATE)]TJ +1.2 -1.5556 TD +[(TI)-1333.1(=> WRITEDATE)]TJ +-0.6 -1.5556 TD +[(DEL)-1333(=> DELETE)]TJ +-0.6 -1.5556 TD +(DEL?)Tj +-1.8 -1 TD +[(DELETE?)-1332.6(=> PROMPT " delete? " DELETE)]TJ +2.4 -1.5556 TD +[(OLD)-1333(=> OLDERTHAN 90)]TJ +0.6 -1.5556 TD +[(PR)-1333.1(=> PROTECTION)]TJ +T* +[(SI)-1333.1(=> SIZE)]TJ +-3 -1 TD +[(VERBOSE)-1332.6(=> AUTHOR CREATIONDATE SIZE)]TJ +9.5333 -1 TD +(READDATE WRITEDATE)Tj +-20 -2.3267 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(FILDIR)Tj +/TT6 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILEGROUP)Tj +/TT8 1 Tf +5.4009 0 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 196.0588 322.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 322.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Obsolete synonym of )Tj +/TT8 1 Tf +9.6421 0 TD +(\(DIRECTORY)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILEGROUP)Tj +/TT8 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-24.5607 -2.5489 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(DIR)Tj +/TT6 1 Tf +1.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILEGROUP)Tj +/TT14 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(COM)Tj +1.7991 -0.3333 TD +(1)Tj +/TT14 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(...)Tj +/TT14 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 246.0009 282.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 282.86 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +0.4911 Tw +(Convenient form of )Tj +/TT8 1 Tf +10.4001 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.4911 Tw +[( for use in type-in at the executive. Performs)]TJ +/TT8 1 Tf +-15.801 -1.2889 TD +0 Tw +(\(DIRECTORY )Tj +/TT12 1 Tf +7.2012 0 TD +(FILEGROUP)Tj +/TT8 1 Tf +5.4009 0 TD +( \(P)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(COM)Tj +1.7976 -0.3333 TD +(1)Tj +/TT18 1 Tf +0.6 0.3333 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(...)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT8 1 Tf +-26.2169 -2.8822 TD +(\()Tj +/TT10 1 Tf +0.6001 0 TD +(NDIR)Tj +/TT4 1 Tf +10 0 0 10 129 225.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 131.7783 225.72 Tm +(FILEGROUP)Tj +/TT20 1 Tf +10 0 0 10 180.3862 225.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 183.1645 225.72 Tm +(COM)Tj +1.7995 -0.3333 TD +(1)Tj +/TT20 1 Tf +10 0 0 10 204.76 225.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 207.5383 225.72 Tm +(...)Tj +/TT20 1 Tf +10 0 0 10 223.7409 225.72 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 226.5193 225.72 Tm +(COM)Tj +1.8001 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/TT16 1 Tf +10 0 0 10 253.5209 225.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 225.72 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +0.0967 Tw +(Version of )Tj +/TT8 1 Tf +5.0112 0 TD +0 Tw +(DIR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0967 Tw +[( that lists the file names in a multi-column format. Also, by default only)]TJ +-6.8115 -1.2889 TD +0 Tw +(lists the most recent version of files \(unless )Tj +/TT12 1 Tf +19.1411 0 TD +(FILEGROUP)Tj +/TT6 1 Tf +5.4009 0 TD +( contains an explicit version\).)Tj +ET +endstream +endobj +83 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 10 0 R +/TT16 11 0 R +/TT18 17 0 R +/TT20 84 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +85 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +86 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +87 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +88 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +89 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +90 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +91 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +92 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +93 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +94 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 96 +/FontBBox [-170 -225 1116 931] +/FontName /Helvetica-Oblique +/ItalicAngle -15 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 85 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 0 278 278 +0 0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 611 0 0 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 86 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 371 0 0 0 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 0 250 250 606 0 606 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 333 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 87 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 600 0 0 0 0 0 600 600 600 0 600 600 600 600 +600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 0 600 600 0 0 600 600 600 600 +0 0 600 600 600 600 0 0 600 600 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 88 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 46 +/LastChar 89 +/Widths [600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 0 600 0 600 600 600 600 600 600 600 0 600 600 600 +600 600 600 0 600 600 600 600 600 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 89 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 +0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 600 600 600 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 90 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 611 556 0 0 333 0 0 556 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 444 0 407 500 389 278 500 0 278 0 0 278 778 556 444 +500 0 389 389 333 556 500 0 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 91 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 667 0 0 0 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 92 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 0 0 0 333 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 250 0 0 606 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 93 0 R +>> +endobj +84 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 94 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 20 0 R +/Contents 19 0 R +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 23 0 R +/Contents 22 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 73 0 R +/Contents 72 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 76 0 R +/Contents 75 0 R +>> +endobj +78 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 80 0 R +/Contents 79 0 R +>> +endobj +81 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 83 0 R +/Contents 82 0 R +>> +endobj +95 0 obj +<< +/S /D +>> +endobj +96 0 obj +<< +/Nums [0 95 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 18 0 R 21 0 R 24 0 R 27 0 R 30 0 R 33 0 R 36 0 R 39 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [42 0 R 47 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +77 0 obj +<< +/Type /Pages +/Kids [74 0 R 78 0 R 81 0 R] +/Count 3 +/Parent 45 0 R +>> +endobj +45 0 obj +<< +/Type /Pages +/Kids [13 0 R 46 0 R 77 0 R ] +/Count 23 +/MediaBox [0 0 612 792] +>> +endobj +97 0 obj +<< +/CreationDate (D:20210202102708-06'00') +/ModDate (D:20210202102708-06'00') +/Producer (Apple pstopdf) +>> +endobj +98 0 obj +<< +/Type /Catalog +/Pages 45 0 R +/PageLabels 96 0 R +>> +endobj +xref +0 99 +0000000000 65535 f +0000155243 00000 n +0000000016 00000 n +0000005814 00000 n +0000151417 00000 n +0000151628 00000 n +0000152066 00000 n +0000152632 00000 n +0000153175 00000 n +0000153477 00000 n +0000153944 00000 n +0000154344 00000 n +0000149271 00000 n +0000157240 00000 n +0000155324 00000 n +0000005993 00000 n +0000013230 00000 n +0000154653 00000 n +0000155408 00000 n +0000013387 00000 n +0000019802 00000 n +0000155492 00000 n +0000019971 00000 n +0000025846 00000 n +0000155576 00000 n +0000026026 00000 n +0000031720 00000 n +0000155660 00000 n +0000031900 00000 n +0000037436 00000 n +0000155744 00000 n +0000037616 00000 n +0000041174 00000 n +0000155828 00000 n +0000041354 00000 n +0000047019 00000 n +0000155912 00000 n +0000047186 00000 n +0000054228 00000 n +0000155996 00000 n +0000054421 00000 n +0000062639 00000 n +0000156080 00000 n +0000062819 00000 n +0000069277 00000 n +0000157603 00000 n +0000157377 00000 n +0000156164 00000 n +0000069470 00000 n +0000076160 00000 n +0000156248 00000 n +0000076340 00000 n +0000083399 00000 n +0000156332 00000 n +0000083592 00000 n +0000089772 00000 n +0000156416 00000 n +0000089916 00000 n +0000095878 00000 n +0000156500 00000 n +0000096022 00000 n +0000102981 00000 n +0000156584 00000 n +0000103161 00000 n +0000109040 00000 n +0000156668 00000 n +0000109220 00000 n +0000115943 00000 n +0000156752 00000 n +0000116136 00000 n +0000122771 00000 n +0000156836 00000 n +0000122964 00000 n +0000130291 00000 n +0000156920 00000 n +0000130471 00000 n +0000138812 00000 n +0000157515 00000 n +0000157004 00000 n +0000139005 00000 n +0000144744 00000 n +0000157088 00000 n +0000144901 00000 n +0000149065 00000 n +0000155069 00000 n +0000149412 00000 n +0000149609 00000 n +0000149815 00000 n +0000150015 00000 n +0000150206 00000 n +0000150408 00000 n +0000150609 00000 n +0000150812 00000 n +0000151007 00000 n +0000151212 00000 n +0000157172 00000 n +0000157200 00000 n +0000157702 00000 n +0000157825 00000 n +trailer +<< +/Size 99 +/Root 98 0 R +/Info 97 0 R +/ID [<31e1339fdc5fb6293bd87cad5dc1a556><31e1339fdc5fb6293bd87cad5dc1a556>] +>> +startxref +157895 +%%EOF diff --git a/docs/medley-irm/23-STREAMS.TEDIT b/docs/medley-irm/23-STREAMS.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..f32d621e17f0839f465dbe7e30ab02afa5b8eaf6 GIT binary patch literal 134830 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 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/23-STREAMS.pdf b/docs/medley-irm/23-STREAMS.pdf new file mode 100644 index 00000000..e82807b1 --- /dev/null +++ b/docs/medley-irm/23-STREAMS.pdf @@ -0,0 +1,14529 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 4718 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(23. STREAMS AND FILES)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 564.99 m +510.01 564.99 l +S +BT +/TT6 1 Tf +9 0 0 9 78 542.54 Tm +0.1122 Tw +(Medley can perform input/output operations on a large variety of physical devices, including local)Tj +0 -1.2222 TD +0.1333 Tw +(disk drives, floppy disk drives, the keyboard and display screen, and remote file server computers)Tj +T* +0.0744 Tw +[(accessed over a network. While the low-level details of how all these devices perform input/output)]TJ +T* +0.0244 Tw +(vary considerably, the Interlisp-D language provides the programmer a small, common set of abstract)Tj +T* +0.3156 Tw +(operations whose use is largely independent of the physical input/output medium involved)Tj +T* +0.1222 Tw +(operations such as )Tj +/TT8 1 Tf +8.7832 0 TD +0 Tw +(read)Tj +/TT6 1 Tf +1.7222 0 TD +(, )Tj +/TT8 1 Tf +0.6222 0 TD +(print)Tj +/TT6 1 Tf +2.0562 0 TD +(, )Tj +/TT8 1 Tf +0.6222 0 TD +0.1222 Tw +(change font)Tj +/TT6 1 Tf +4.7795 0 TD +(, or )Tj +/TT8 1 Tf +1.9354 0 TD +(go to a new line)Tj +/TT6 1 Tf +6.8219 0 TD +[(. By merely changing the targeted I/O)]TJ +-27.3426 -1.2222 TD +0 Tw +(device, a single program can be used to produce output on the display, a file, or a printer.)Tj +0 -2.8889 TD +0.0222 Tw +(The underlying data abstraction that permits this flexibility is the )Tj +/TT8 1 Tf +29.2437 0 TD +0 Tw +(stream)Tj +/TT6 1 Tf +2.7222 0 TD +0.0222 Tw +[(. A stream is a data object \(an)]TJ +-31.9659 -1.2222 TD +0.1767 Tw +(instance of the data type )Tj +/TT10 1 Tf +11.9268 0 TD +0 Tw +(STREAM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1767 Tw +(\) that encapsulates all of the information about an input/output)Tj +-15.5274 -1.2889 TD +0.0133 Tw +[(connection to a particular I/O device. Each of Medleys general-purpose I/O functions takes a stream)]TJ +0 -1.2222 TD +0.1 Tw +[(as one of its arguments. The general-purpose function then performs action specific to the streams)]TJ +T* +0.07 Tw +[(device to carry out the requested operation. Not every device is capable of implementing every I/O)]TJ +T* +0.2389 Tw +(operation, while some devices offer additional functionality by way of special functions for that)Tj +T* +0 Tw +(device alone. Such restrictions and extensions are noted in the documentation of each device.)Tj +0 -2.8889 TD +0.0278 Tw +(The vast majority of the streams commonly used in Medley fall into two interesting categories: the )Tj +/TT8 1 Tf +44.1178 0 TD +0 Tw +(file)Tj +-44.1178 -1.2222 TD +(stream)Tj +/TT6 1 Tf +2.7222 0 TD +( and the )Tj +/TT8 1 Tf +3.8301 0 TD +(image stream)Tj +/TT6 1 Tf +5.3608 0 TD +(.)Tj +-11.9131 -2.8889 TD +0.0211 Tw +(A file is an ordered collection of data, usually a sequence of characters or bytes, stored on a file device)Tj +0 -1.2222 TD +0.0489 Tw +[(in a manner that allows the data to be retrieved at a later time. Floppy disks, hard disks, and remote)]TJ +T* +0.1689 Tw +[(file servers are among the devices used to store files. Files are identified by a "file name", which)]TJ +T* +0.0156 Tw +[(specifies the device on which the file resides and a name unique to a specific file on that device. Input)]TJ +T* +0.0689 Tw +(or output to a file is performed by obtaining a stream to the file, using )Tj +/TT10 1 Tf +32.1354 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +[( \(see below\). In)]TJ +-38.1364 -1.2889 TD +0 Tw +(addition, there are functions that manipulate the files themselves, rather than their data content.)Tj +0 -2.8889 TD +0.0778 Tw +[(An image stream is an output stream to a display device, such as the display screen or a printer. In)]TJ +0 -1.2222 TD +0.1144 Tw +(addition to the standard output operations, such as print, an image stream implements a variety of)Tj +T* +0.0611 Tw +[(graphics operations, such as drawing lines and displaying characters in multiple fonts. Unlike a file,)]TJ +T* +0 Tw +(the "content" of an image stream cannot be retrieved. Image streams are described in Chapter 26.)Tj +0 -2.8889 TD +0.0933 Tw +(The creation of other kinds of streams, such as network byte-stream connections, is described in the)Tj +0 -1.2222 TD +0.2589 Tw +[(chapters peculiar to those kinds of streams. The operations common to streams in general are)]TJ +T* +0.0522 Tw +[(described in Chapter 24. This chapter describes operations specific to file devices: how to name files,)]TJ +T* +0 Tw +(how to open streams to files, and how to manipulate files on their devices.)Tj +/TT4 1 Tf +10 0 0 10 54 105 Tm +(Opening and Closing File Streams)Tj +ET +1 w +54.01 102.29 m +510.01 102.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 80.34 Tm +0.0822 Tw +(In order to perform input from or output to a file, it is necessary to create a stream to the file, using)Tj +/TT10 1 Tf +T* +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(:)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +12 0 obj +<< +/Length 7279 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-2)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +-0.0001 Tc +(\(OPENSTREAM )Tj +/TT14 1 Tf +7.2001 0 TD +0 Tc +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(RECOG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PARAMETERS )Tj +/TT10 1 Tf +7.2012 0 TD +(\) )Tj +/TT12 1 Tf +10 0 0 10 378.1764 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.02 Tw +(Opens and returns a stream for the file specified by )Tj +/TT14 1 Tf +23.0931 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +(, a file name. )Tj +/TT14 1 Tf +6.1879 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +[( can be either)]TJ +-34.0817 -1.2889 TD +0.0467 Tw +[(a string or a symbol. The syntax and manipulation of file names is described at length in)]TJ +0 -1.2222 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.7072 0 TD +(FILENAMES)Tj +/TT6 1 Tf +5.4009 0 TD +0.07 Tw +[( section below. Incomplete file names are interpreted with respect to the)]TJ +-7.1081 -1.2889 TD +0 Tw +(connected directory \(below\).)Tj +/TT14 1 Tf +0 -2 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.2211 Tw +[( specifies the recognition mode of )]TJ +/TT14 1 Tf +16.415 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2211 Tw +(, as described in a later section of this)Tj +-21.8159 -1.2889 TD +0 Tw +(chapter. If )Tj +/TT14 1 Tf +4.9971 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, it defaults according to the value of )Tj +/TT14 1 Tf +16.3789 0 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT14 1 Tf +-30.8774 -2.0667 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.3333 Tw +[( specifies the "access rights" to be used when opening the file, one of the)]TJ +-3.6006 -1.2889 TD +0 Tw +(following:)Tj +/TT10 1 Tf +5 -2.1489 TD +(INPUT)Tj +/TT6 1 Tf +4.3333 0 TD +0.0644 Tw +[(Only input operations are permitted on the file. The file must)]TJ +0 -1.2889 TD +0.3378 Tw +[(already exist. Starts reading at the beginning of the file.)]TJ +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( defaults to )Tj +/TT10 1 Tf +5.189 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-14.9231 -2.2156 TD +(OUTPUT)Tj +/TT6 1 Tf +4.9333 0 TD +0.38 Tw +[(Only output operations are permitted on the file. Starts)]TJ +0 -1.2889 TD +0.1667 Tw +(writing at the beginning of the file, which is initially empty.)Tj +0 -1.2222 TD +0.1444 Tw +(While the file is open, other users or processes are unable to)Tj +T* +0 Tw +(open the file for either input or output. )Tj +/TT14 1 Tf +17.665 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( defaults to )Tj +/TT10 1 Tf +5.189 0 TD +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-31.3881 -2.2156 TD +(BOTH)Tj +/TT6 1 Tf +3.7333 0 TD +0.2189 Tw +(Both input and output operations are permitted on the file.)Tj +0 -1.2889 TD +0.1389 Tw +(Starts reading or writing at the beginning of the file. )Tj +/TT14 1 Tf +25.0004 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +-25.0004 -1.2889 TD +0.4667 Tw +(defaults to )Tj +/TT10 1 Tf +5.8723 0 TD +0 Tw +(OLD/NEW)Tj +/TT6 1 Tf +4.2007 0 TD +0.4667 Tw +(. )Tj +/TT14 1 Tf +1.6833 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.7167 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.7167 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +0.4667 Tw +[( implies random)]TJ +-19.7907 -1.2889 TD +0.2211 Tw +(accessibility \(Chapter 25\), and thus may not be possible for)Tj +0 -1.3711 TD +0 Tw +(files on some devices)Tj +/TT12 1 Tf +10 0 0 10 341.8784 295.04 Tm +(.)Tj +/TT10 1 Tf +9 0 0 9 213.6 275.7 Tm +(APPEND)Tj +/TT6 1 Tf +4.9333 0 TD +0.2033 Tw +(Only sequential output operations are permitted on the file.)Tj +0 -1.2889 TD +0.4067 Tw +(Starts writing at the )Tj +/TT8 1 Tf +10.6115 0 TD +0 Tw +(end)Tj +/TT6 1 Tf +1.4453 0 TD +0.4067 Tw +[( of the file. )]TJ +/TT14 1 Tf +7.1935 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.4067 Tw +[( defaults to)]TJ +/TT10 1 Tf +-22.2508 -1.2889 TD +0 Tw +(OLD/NEW)Tj +/TT6 1 Tf +4.2007 0 TD +0.0733 Tw +(. )Tj +/TT14 1 Tf +0.8967 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.3233 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3233 0 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0733 Tw +[( may not be allowed for files on)]TJ +-13.5453 -1.2889 TD +0 Tw +(some devices.)Tj +-6.6667 -2 TD +(Note:)Tj +/TT14 1 Tf +3.3333 0 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.2722 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2722 0 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0222 Tw +[( implies that one intends to write a new or different)]TJ +-8.3457 -1.2889 TD +0.0267 Tw +(file, even if a version number was specified and the corresponding file)Tj +0 -1.2222 TD +0.1289 Tw +[(already exists. Thus any previous contents of the file are discarded,)]TJ +T* +0.2533 Tw +(and the file is empty immediately after the )Tj +/TT10 1 Tf +21.0711 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.2533 Tw +[(. If it is)]TJ +-27.0721 -1.2889 TD +0.1467 Tw +(desired to write on an already existing file while preserving the old)Tj +0 -1.2222 TD +0 Tw +(contents, the file must be opened for access )Tj +/TT10 1 Tf +19.2944 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT14 1 Tf +-32.7363 -2.0667 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.0522 Tw +[( is a list of pairs )]TJ +/TT10 1 Tf +7.4501 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(ATTRIB)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.7268 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0522 Tw +(, where )Tj +/TT14 1 Tf +3.6235 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.0522 Tw +[( is any file attribute that)]TJ +-29.2031 -1.2889 TD +0.2422 Tw +(the file system is willing to allow you to set \(see )Tj +/TT10 1 Tf +23.9935 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.2422 Tw +[( below\). A non-list)]TJ +/TT14 1 Tf +-30.5946 -1.2889 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.3644 Tw +[( in )]TJ +/TT14 1 Tf +2.1019 0 TD +0 Tw +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.3644 Tw +[( is treated as the pair )]TJ +/TT10 1 Tf +11.6159 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(ATTRIB)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.6144 0 TD +(T\))Tj +/TT6 1 Tf +1.2002 0 TD +0.3644 Tw +[(. Generally speaking,)]TJ +-29.3347 -1.2889 TD +0.11 Tw +(attributes that belong to the permanent file \(e.g., )Tj +/TT10 1 Tf +22.444 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.11 Tw +(\) can only be set when creating a)Tj +-24.8444 -1.2889 TD +0.3789 Tw +(new file, while attributes that belong only to a particular opening of a file \(e.g.,)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.24 Tw +(\) can be set on any call to )Tj +/TT10 1 Tf +13.2042 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.24 Tw +[(. Not all devices honor all)]TJ +-27.0064 -1.2889 TD +0 Tw +(attributes; those not recognized by a particular device are simply ignored.)Tj +0 -2 TD +0.3456 Tw +(In addition to the attributes permitted by )Tj +/TT10 1 Tf +20.829 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.3456 Tw +(, the following tokens are)Tj +-27.4301 -1.2889 TD +0 Tw +(accepted by )Tj +/TT10 1 Tf +5.4932 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +( as values of )Tj +/TT14 1 Tf +5.6646 0 TD +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +( in its )Tj +/TT14 1 Tf +2.6641 0 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +( argument:)Tj +ET +endstream +endobj +13 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +18 0 obj +<< +/Length 6375 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-3)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT10 1 Tf +9 0 0 9 172.2 569.54 Tm +(DONT.CHANGE.DATE)Tj +/TT6 1 Tf +11.5333 0 TD +(If )Tj +/TT14 1 Tf +1.0833 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1633 Tw +[( is non-)]TJ +/TT10 1 Tf +3.5845 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1633 Tw +(, the files creation date is not)Tj +-9.4685 -1.2889 TD +0.2544 Tw +[(changed when the file is opened. This option is)]TJ +0 -1.2222 TD +0.4189 Tw +(meaningful only for old files being opened for)Tj +T* +0 Tw +(access )Tj +/TT10 1 Tf +3.5388 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +0.5744 Tw +[(. This should be used only for)]TJ +-5.9392 -1.2889 TD +0.0522 Tw +(specialized applications in which the caller does not)Tj +0 -1.2222 TD +0.0767 Tw +(want the file system to believe the files content has)Tj +T* +0 Tw +(been changed.)Tj +/TT10 1 Tf +-7.3333 -2.1489 TD +(SEQUENTIAL)Tj +/TT6 1 Tf +7.3333 0 TD +(If )Tj +/TT14 1 Tf +1.0899 0 TD +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.17 Tw +[( is non-)]TJ +/TT10 1 Tf +3.5978 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.17 Tw +(, this opening of the file need)Tj +-9.4885 -1.2889 TD +0 Tw +(support only sequential access; i.e., the caller intends)Tj +0 -1.2222 TD +0.44 Tw +(never to use )Tj +/TT10 1 Tf +6.9479 0 TD +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.44 Tw +[(. For some devices,)]TJ +-12.9489 -1.2889 TD +0.0389 Tw +(sequential access to files is much more efficient than)Tj +0 -1.2222 TD +0.0667 Tw +[(random access. Note that the device may choose to)]TJ +T* +0.3478 Tw +(ignore this attribute and still open the file in a)Tj +T* +0.0733 Tw +[(manner that permits random access. Also note that)]TJ +T* +0.17 Tw +(this attribute does not make sense with )Tj +/TT14 1 Tf +18.7154 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.42 0 TD +(=)Tj +-22.736 -1.2889 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-19.0671 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.0966 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +[( is not recognized by the file system, )]TJ +/TT10 1 Tf +17.6975 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1767 Tw +[( causes the error )]TJ +/TT10 1 Tf +8.1774 0 TD +0 Tw +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.4267 0 TD +(NOT)Tj +-38.1999 -1.2889 TD +(FOUND)Tj +/TT6 1 Tf +3.0005 0 TD +0.0289 Tw +[(. Ordinarily, this error is intercepted via an entry on )]TJ +/TT10 1 Tf +23.7314 0 TD +0 Tw +(ERRORTYPELST)Tj +/TT6 1 Tf +7.2012 0 TD +0.0289 Tw +[( \(Chapter 24\),)]TJ +-33.933 -1.2889 TD +0.0511 Tw +(which causes )Tj +/TT10 1 Tf +6.2087 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0511 Tw +[( \(see the Searching File Directories section of this chapter\) to be)]TJ +-11.6095 -1.2889 TD +0.4922 Tw +(called. )Tj +/TT10 1 Tf +4.3502 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.4922 Tw +[( searches alternate directories and possibly attempts spelling)]TJ +-9.751 -1.2889 TD +0.2067 Tw +[(correction on the file name. Only if )]TJ +/TT10 1 Tf +17.5435 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2067 Tw +[( is unsuccessful will the )]TJ +/TT10 1 Tf +11.7457 0 TD +0.4978 Tw +(FILE NOT)Tj +-34.6901 -1.2889 TD +0 Tw +(FOUND)Tj +/TT6 1 Tf +3.0005 0 TD +( error actually occur.)Tj +-3.0005 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.1099 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.19 Tw +[( exists but cannot be opened, )]TJ +/TT10 1 Tf +14.1424 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.19 Tw +[( causes one of several other errors:)]TJ +/TT10 1 Tf +-23.6537 -1.2889 TD +0.2289 Tw +(FILE WONT OPEN)Tj +/TT6 1 Tf +9.4592 0 TD +0.0956 Tw +[( if the file is already opened for conflicting access by someone else;)]TJ +/TT10 1 Tf +-9.4592 -1.2889 TD +0.3033 Tw +(PROTECTION VIOLATION)Tj +/TT6 1 Tf +12.3053 0 TD +0.1267 Tw +[( if the file is protected against the operation; )]TJ +/TT10 1 Tf +20.7997 0 TD +0.3033 Tw +(FILE SYSTEM)Tj +-33.105 -1.2889 TD +0 Tw +(RESOURCES EXCEEDED)Tj +/TT6 1 Tf +10.8018 0 TD +( if there is no more room in the file system.)Tj +/TT10 1 Tf +-13.4684 -2.5489 TD +(\(CLOSEF)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.2493 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 169.0544 240.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 240.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes )Tj +/TT14 1 Tf +3.1426 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.02 Tw +[(, and returns its full file name. Generates an error, )]TJ +/TT10 1 Tf +22.7332 0 TD +0.0489 Tw +(FILE NOT OPEN)Tj +/TT6 1 Tf +7.899 0 TD +0.02 Tw +(, if )Tj +/TT14 1 Tf +1.414 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +-37.5892 -1.2889 TD +0.2289 Tw +[(does not designate an open stream. After closing a stream, no further input/output)]TJ +0 -1.2222 TD +0 Tw +(operations are permitted on it.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.1199 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2 Tw +[( is )]TJ +/TT10 1 Tf +1.6148 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2 Tw +(, it is defaulted to the primary input stream if that is not the terminal)Tj +-6.9354 -1.2889 TD +0.2189 Tw +[(stream, or else the primary output stream if that is not the terminal stream. If both)]TJ +0 -1.2222 TD +0.0078 Tw +(primary input and output streams are the terminal input/output streams, )Tj +/TT10 1 Tf +32.9347 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0078 Tw +[( returns)]TJ +/TT10 1 Tf +-36.5353 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1878 Tw +[(. If )]TJ +/TT10 1 Tf +2.2333 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1878 Tw +[( closes either the primary input stream or the primary output stream)]TJ +-7.6341 -1.2889 TD +0.0289 Tw +(\(either explicitly or in the )Tj +/TT14 1 Tf +11.5673 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2789 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2789 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0289 Tw +[( case\), it resets the primary stream for that direction)]TJ +-16.9259 -1.2889 TD +0.0711 Tw +[(to be the corresponding terminal stream. See Chapter 25 for information on the primary)]TJ +0 -1.2222 TD +0 Tw +(input/output streams.)Tj +/TT10 1 Tf +0 -2 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1733 Tw +[( \(see below\) allows you to "advise" )]TJ +/TT10 1 Tf +16.789 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1733 Tw +[( to perform various operations)]TJ +-25.7905 -1.2889 TD +0 Tw +(when a file is closed.)Tj +0 -2 TD +0.2222 Tw +(Because of buffering, the contents of a file open for output are not guaranteed to be)Tj +0 -1.2222 TD +0.1678 Tw +(written to the actual physical file device until )Tj +/TT10 1 Tf +21.5439 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1678 Tw +[( is called. Buffered data can be)]TJ +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +21 0 obj +<< +/Length 5653 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-4)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.06 Tw +(forced out to a file without closing the file by using the function )Tj +/TT10 1 Tf +29.1618 0 TD +0 Tw +(FORCEOUTPUT)Tj +/TT6 1 Tf +6.6011 0 TD +0.06 Tw +[( \(Chapter)]TJ +-35.7629 -1.2889 TD +0 Tw +(25\).)Tj +0 -2 TD +0.0467 Tw +[(Some network file devices perform their transactions in the background. As a result, it is)]TJ +0 -1.2222 TD +0.1422 Tw +(possible for a file to be closed by )Tj +/TT10 1 Tf +15.7227 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1422 Tw +[( and yet not be "fully" closed for some small)]TJ +-19.3233 -1.2889 TD +0.0811 Tw +(period of time afterward, during which time the file appears to still be busy, and cannot)Tj +0 -1.2222 TD +0 Tw +(be opened for conflicting access by other users.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +-0.0001 Tc +(\(CLOSEF? )Tj +/TT14 1 Tf +5.4001 0 TD +0 Tc +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 225.6053 484 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 484 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes )Tj +/TT14 1 Tf +3.2992 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +[( if it is open, returning the value of )]TJ +/TT10 1 Tf +17.1676 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1767 Tw +(; otherwise does nothing and)Tj +-26.4678 -1.2889 TD +0 Tw +(returns )Tj +/TT10 1 Tf +3.4541 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-10.5877 -2.9556 TD +0.15 Tw +(In the present implementation of Medley, all streams to files are kept, while open, in a registry of)Tj +0 -1.2222 TD +0.1789 Tw +[("open files". This registry does not include nameless streams, such as string streams \(see below\),)]TJ +T* +0.2478 Tw +(display streams \(Chapter 28\), and the terminal input and output streams; nor streams explicitly)Tj +T* +0.2311 Tw +[(hidden from you, such as dribble streams \(Chapter 30\). This registry may not persist in future)]TJ +T* +0 Tw +(implementations of Medley, but at the present time it is accessible by the following two functions:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +-0.0001 Tc +(\(OPENP )Tj +/TT14 1 Tf +4.2001 0 TD +0 Tc +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT10 1 Tf +3.6006 0 TD +(\) )Tj +/TT12 1 Tf +10 0 0 10 254.8614 362.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 362.86 Tm +([Function])Tj +/TT14 1 Tf +-35.4033 -1.8444 TD +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.2811 Tw +[( is an access mode for a stream opening \(one of )]TJ +/TT10 1 Tf +24.1088 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.7811 0 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7811 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +0.2811 Tw +(, or)Tj +/TT10 1 Tf +-38.2731 -1.2889 TD +0 Tw +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +(\), or )Tj +/TT10 1 Tf +2.0239 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, meaning any access.)Tj +-7.4248 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( is a stream, returns its full name if it is open for the specified access, else )Tj +/TT10 1 Tf +32.3437 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-37.4644 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.2066 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2867 Tw +[( is a file name \(a symbol\), )]TJ +/TT14 1 Tf +13.4783 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2867 Tw +[( is processed according to the rules of file)]TJ +-19.4857 -1.2889 TD +0.0389 Tw +[(recognition \(see below\). If a stream open to a file by that name is registered and open for)]TJ +0 -1.2222 TD +0.3356 Tw +[(the specified access, then the files full name is returned. If the file name is not)]TJ +T* +0 Tw +(recognized, or no stream is open to the file with the specified access, )Tj +/TT10 1 Tf +30.3721 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( is returned.)Tj +-32.1724 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.0066 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0867 Tw +[( is )]TJ +/TT10 1 Tf +1.3882 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +(, returns a list of the full names of all registered streams that are open for)Tj +-6.5954 -1.2889 TD +0 Tw +(the specified access.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +-0.0001 Tc +(\(CLOSEALL )Tj +/TT14 1 Tf +6.0001 0 TD +0 Tc +(ALLFLG)Tj +/TT10 1 Tf +3.6006 0 TD +(\) )Tj +/TT12 1 Tf +10 0 0 10 247.2079 211.32 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 211.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes all streams in the value of )Tj +/TT10 1 Tf +14.7124 0 TD +(\(OPENP\))Tj +/TT6 1 Tf +4.2007 0 TD +(. Returns a list of the files closed.)Tj +/TT10 1 Tf +-18.9131 -2.0667 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0422 Tw +[( \(see below\) allows certain files to be "protected" from )]TJ +/TT10 1 Tf +24.4042 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0422 Tw +[(. If )]TJ +/TT14 1 Tf +1.7966 0 TD +0 Tw +(ALLFLG)Tj +/TT6 1 Tf +-36.4024 -1.4378 TD +(is )Tj +/TT10 1 Tf +0.9648 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, all files, including those protected by )Tj +/TT10 1 Tf +17.0742 0 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +(, are closed)Tj +/TT12 1 Tf +10 0 0 10 434.6265 163.18 Tm +(.)Tj +/TT4 1 Tf +-33.2626 -4.294 TD +(File Names)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 117.53 m +558.01 117.53 l +S +BT +/TT6 1 Tf +9 0 0 9 126 95.58 Tm +0.1222 Tw +(A file name in Medley is a string or symbol whose characters specify a "path" to the actual file: on)Tj +0 -1.2222 TD +0.1589 Tw +[(what host or device the file resides, in which directory, and so forth. Because Medley supports a)]TJ +T* +0.1455 Tw +[(variety of non-local file devices, parts of the path could be very device-dependent. However, it is)]TJ +T* +0.0722 Tw +[(desirable for programs to be able to manipulate file names in a device-independent manner. To this)]TJ +T* +0.1844 Tw +(end, Medley specifies a uniform file name syntax over all devices; the functions that perform the)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +24 0 obj +<< +/Length 4844 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-5)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.1778 Tw +(actual file manipulation for a particular device are responsible for any translation to that devices)Tj +0 -1.2222 TD +0 Tw +(naming conventions.)Tj +0 -2.8889 TD +0.0311 Tw +(A file name is composed of a collection of )Tj +/TT8 1 Tf +18.8913 0 TD +0 Tw +(fields)Tj +/TT6 1 Tf +2.1118 0 TD +0.0311 Tw +(, some of which have specific semantic interpretations.)Tj +-21.0031 -1.2222 TD +0.2133 Tw +(The functions described below refer to each field by a )Tj +/TT8 1 Tf +26 0 TD +(field name)Tj +/TT6 1 Tf +4.353 0 TD +(, a literal atom from among the)Tj +-30.353 -1.2222 TD +0 Tw +(following: )Tj +/TT10 1 Tf +4.8234 0 TD +0.1289 Tw +(HOST, DEVICE)Tj +/TT6 1 Tf +7.3301 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5533 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5533 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5533 0 TD +(EXTENSION)Tj +/TT6 1 Tf +5.4009 0 TD +0.0533 Tw +(, and )Tj +/TT10 1 Tf +2.5495 0 TD +0 Tw +(VERSION)Tj +/TT6 1 Tf +4.2007 0 TD +0.0533 Tw +[(. The standard syntax for)]TJ +-33.7658 -1.2889 TD +2.8722 Tw +(a file name that contains all of those fields is)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +({HOST}DEVICE:NAME.EXTENSION;VERSION)Tj +/TT6 1 Tf +27.6045 0 TD +0.0122 Tw +[(. Some hosts file systems do not use all)]TJ +-27.6045 -1.2889 TD +0 Tw +(of those fields in their file names.)Tj +/TT10 1 Tf +12.9333 -2.1489 TD +(HOST)Tj +/TT6 1 Tf +3.7333 0 TD +0.1367 Tw +[(Specifies the host whose file system contains the file. In)]TJ +0 -1.2889 TD +0.0878 Tw +(the case of local file devices, the "host" is the name of the)Tj +0 -1.2222 TD +0 Tw +(device, e.g., )Tj +/TT10 1 Tf +5.4038 0 TD +(DSK)Tj +/TT6 1 Tf +1.8003 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(FLOPPY)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-17.1789 -2.2156 TD +(DEVICE)Tj +/TT6 1 Tf +4.9333 0 TD +0.2633 Tw +(Specifies, for those hosts that divide their file systems)Tj +0 -1.2889 TD +0.0167 Tw +(name space among mutiple physical devices, the device or)Tj +0 -1.2222 TD +[(logical structure on which the file resides. This should not)]TJ +T* +0.2344 Tw +(be confused with Medleys abstract "file device", which)Tj +T* +0.2644 Tw +(denotes either a host or a local physical device and is)Tj +T* +0 Tw +(specified by the )Tj +/TT10 1 Tf +7.1992 0 TD +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +( field.)Tj +/TT10 1 Tf +-16.3329 -2.2155 TD +(DIRECTORY)Tj +/TT6 1 Tf +6.7333 0 TD +0.1756 Tw +[(Specifies the "directory" containing the file. A directory)]TJ +0 -1.2889 TD +0.2356 Tw +(usually is a grouping of a possibly large set of loosely)Tj +0 -1.2222 TD +0.0722 Tw +(related files, e.g., the personal files of a particular user, or)Tj +T* +0.0611 Tw +[(the files belonging to some project. The )]TJ +/TT10 1 Tf +18.2828 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0611 Tw +[( field)]TJ +-23.6837 -1.2889 TD +0.0822 Tw +(usually consists of a principal directory and zero or more)Tj +0 -1.2222 TD +0.0811 Tw +(subdirectories that together describe a path through a file)Tj +T* +0.2956 Tw +[(systems hierarchy. Each subdirectory name is set off)]TJ +T* +0.5278 Tw +(from the previous directory or subdirectory by the)Tj +T* +0 Tw +(character ")Tj +/TT10 1 Tf +4.686 0 TD +(>)Tj +/TT6 1 Tf +0.6001 0 TD +("; e.g., ")Tj +/TT10 1 Tf +3.2773 0 TD +(LISP>LIBRARY>NEW)Tj +/TT6 1 Tf +9.6016 0 TD +(".)Tj +/TT10 1 Tf +-21.8984 -2.2156 TD +(NAME)Tj +/TT6 1 Tf +3.7333 0 TD +0.0144 Tw +(This field carries no specific meaning, but generally names)Tj +0 -1.2889 TD +0.0378 Tw +(a set of files thought of as being different renditions of the)Tj +0 -1.2222 TD +0 Tw +("same" abstract file.)Tj +/TT10 1 Tf +-6.7333 -2.1489 TD +(EXTENSION)Tj +/TT6 1 Tf +6.7333 0 TD +0.1522 Tw +(This field also carries no specific meaning, but generally)Tj +0 -1.2889 TD +0.3033 Tw +(distinguishes the form of files having the same name.)Tj +0 -1.2222 TD +0.2233 Tw +(Most files systems have some "conventional" extensions)Tj +T* +0.1467 Tw +[(that denote something about the content of the file. For)]TJ +T* +0.5344 Tw +(example, in Medley, the extension )Tj +/TT10 1 Tf +18.0184 0 TD +0 Tw +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +0.5344 Tw +[( standardly)]TJ +-20.4188 -1.2889 TD +0 Tw +(denotes a file containing compiled function definitions.)Tj +/TT10 1 Tf +-5.5333 -2.1489 TD +(VERSION)Tj +/TT6 1 Tf +5.5333 0 TD +0.8533 Tw +(A number used to distinguish the versions or)Tj +0 -1.2889 TD +0.3022 Tw +("generations" of the files having a common name and)Tj +0 -1.2222 TD +0.0078 Tw +[(extension. The version number is incremented each time a)]TJ +T* +0 Tw +(new file by the same name is created.)Tj +-16.6667 -2.8889 TD +0.17 Tw +(Most functions that take as input "a directory" accept either a directory name \(the contents of the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0389 Tw +[( field of a file name\) or a "full" directory specificationa file name fragment consisting of)]TJ +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +27 0 obj +<< +/Length 7006 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-6)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.09 Tw +(only the fields )Tj +/TT10 1 Tf +6.811 0 TD +0 Tw +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.59 0 TD +(DEVICE)Tj +/TT6 1 Tf +3.6006 0 TD +0.09 Tw +(, and )Tj +/TT10 1 Tf +2.6229 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.09 Tw +[(. In particular, the "connected directory" \(see below\))]TJ +-21.4257 -1.2889 TD +0 Tw +(consists, in general, of all three fields.)Tj +0 -2.8889 TD +0.0411 Tw +(For convenience in dealing with certain operating systems, Medley also recognizes )Tj +/TT10 1 Tf +37.2657 0 TD +0 Tw +([])Tj +/TT6 1 Tf +1.2002 0 TD +0.0411 Tw +[( and )]TJ +/TT10 1 Tf +2.2751 0 TD +0 Tw +(\(\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0411 Tw +[( as host)]TJ +-41.9412 -1.2889 TD +0.0067 Tw +(delimiters \(synonymous with )Tj +/TT10 1 Tf +13.3076 0 TD +0 Tw +({})Tj +/TT6 1 Tf +1.2002 0 TD +0.0067 Tw +(\), and )Tj +/TT10 1 Tf +2.7892 0 TD +0 Tw +(/)Tj +/TT6 1 Tf +0.6001 0 TD +0.0067 Tw +[( as a directory delimiter \(synonymous with )]TJ +/TT10 1 Tf +19.3772 0 TD +0 Tw +(<)Tj +/TT6 1 Tf +0.6001 0 TD +0.0067 Tw +[( at the beginning)]TJ +-37.8744 -1.2889 TD +0.0289 Tw +(of a directory specification and )Tj +/TT18 1 Tf +14.061 0 TD +0 Tw +(>)Tj +/TT6 1 Tf +0.6001 0 TD +0.0289 Tw +[( to terminate directory or subdirectory specification\). For example, a)]TJ +-14.661 -1.2889 TD +0.1556 Tw +(file on a Unix file server )Tj +/TT10 1 Tf +11.7532 0 TD +0 Tw +(UNX)Tj +/TT6 1 Tf +1.8003 0 TD +0.1556 Tw +[( with the name)]TJ +/TT10 1 Tf +7.0809 0 TD +0.3733 Tw +[( /usr/foo/bar/stuff.tedit)]TJ +/TT6 1 Tf +15.3758 0 TD +0.1556 Tw +(, whose )Tj +/TT10 1 Tf +3.9259 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +-39.936 -1.2889 TD +0.5089 Tw +(field is thus )Tj +/TT10 1 Tf +6.9315 0 TD +0 Tw +(usr/foo/bar)Tj +/TT6 1 Tf +6.6011 0 TD +0.5089 Tw +(, could be specified as )Tj +/TT10 1 Tf +12.4478 0 TD +0 Tw +({UNX}/usr/foo/bar/stuff.tedit)Tj +/TT6 1 Tf +17.4028 0 TD +0.5089 Tw +(, or)Tj +/TT10 1 Tf +-43.3831 -1.2889 TD +0 Tw +(\(UNX\)stuff.tedit)Tj +/TT6 1 Tf +17.4028 0 TD +0.0189 Tw +[(, or several other variations. Note that when using )]TJ +/TT10 1 Tf +22.8603 0 TD +0 Tw +([])Tj +/TT6 1 Tf +1.2002 0 TD +0.0189 Tw +[( or )]TJ +/TT10 1 Tf +1.4787 0 TD +0 Tw +(\(\))Tj +/TT6 1 Tf +1.2002 0 TD +0.0189 Tw +[( as)]TJ +-44.1422 -1.2889 TD +0.0778 Tw +(host delimiters, they usually must be escaped with the readers )Tj +/TT10 1 Tf +28.8735 0 TD +0 Tw +(%)Tj +/TT6 1 Tf +0.6001 0 TD +0.0778 Tw +[( escape character if the file name is)]TJ +-29.4736 -1.2889 TD +0 Tw +(expressed as a symbol rather than a string.)Tj +0 -2.8889 TD +0.05 Tw +[(Different hosts have different requirements regarding which characters are valid in file names. From)]TJ +0 -1.2222 TD +0.0978 Tw +[(Medleys point of view, any characters are valid. However, in order to be able to parse a file name)]TJ +T* +0.0067 Tw +(into its component fields, it is necessary that those characters that are conventionally used as file name)Tj +T* +0.0056 Tw +[(delimiters be quoted when they appear inside of fields where there could be ambiguity. The file name)]TJ +T* +0.0389 Tw +(quoting character is ")Tj +/TT10 1 Tf +9.4819 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.6001 0 TD +0.0389 Tw +[(" \(single quote\). Thus, the following characters must be quoted when not used)]TJ +-10.082 -1.2889 TD +0.1744 Tw +(as delimeters: )Tj +/TT10 1 Tf +6.6804 0 TD +0 Tw +(:)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6744 0 TD +(>)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6744 0 TD +(;)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6744 0 TD +(/)Tj +/TT6 1 Tf +0.6001 0 TD +0.1744 Tw +(, and )Tj +/TT10 1 Tf +2.7918 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.6001 0 TD +0.1744 Tw +[( itself. The character )]TJ +/TT10 1 Tf +10.255 0 TD +0 Tw +(.)Tj +/TT6 1 Tf +0.6001 0 TD +0.1744 Tw +[( \(period\) need only be quoted if it is to be)]TJ +-25.3511 -1.2889 TD +0.1011 Tw +(considered a part of the )Tj +/TT10 1 Tf +11.2053 0 TD +0 Tw +(EXTENSION)Tj +/TT6 1 Tf +5.4009 0 TD +0.1011 Tw +[( field. The characters )]TJ +/TT10 1 Tf +10.173 0 TD +0 Tw +(})Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6011 0 TD +(])Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +(, and )Tj +/TT10 1 Tf +2.6451 0 TD +0 Tw +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( need only be quoted in a file)]TJ +-31.8257 -1.2889 TD +0.0511 Tw +(name when the host field of the name is introduced by )Tj +/TT10 1 Tf +24.925 0 TD +0 Tw +({)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5511 0 TD +([)Tj +/TT6 1 Tf +0.6001 0 TD +0.0511 Tw +(, and )Tj +/TT10 1 Tf +2.5451 0 TD +0 Tw +(\()Tj +/TT6 1 Tf +0.6001 0 TD +0.0511 Tw +[(, respectively. The characters )]TJ +/TT10 1 Tf +13.4982 0 TD +0 Tw +({)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5511 0 TD +([)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +-45.0711 -1.2889 TD +(\()Tj +/TT6 1 Tf +0.6001 0 TD +0.0444 Tw +(, and )Tj +/TT10 1 Tf +2.5318 0 TD +0 Tw +(<)Tj +/TT6 1 Tf +0.6001 0 TD +0.0444 Tw +[( need only be quoted if they appear as the first character of a file name fragment, where they)]TJ +-3.732 -1.2889 TD +0 Tw +(would otherwise be assumed to introduce the )Tj +/TT10 1 Tf +20.4824 0 TD +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +( fields.)Tj +-29.7246 -2.9556 TD +0.0167 Tw +[(The following functions are the standard way to manipulate file names in Interlisp. Their operation is)]TJ +0 -1.2222 TD +0 Tw +(purely syntacticthey perform no file system operations themselves.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(UNPACKFILENAME.STRING)Tj +/TT4 1 Tf +10 0 0 10 268.8 262.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 271.5783 262.8 Tm +(FILENAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 320.1862 262.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 262.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2867 Tw +(Parses , returning a list in property list format of alternating field names and field)Tj +0 -1.2222 TD +0 Tw +(contents. The field contents are returned as strings. If is a stream, its full name is used.)Tj +0 -2 TD +0.1578 Tw +[(Only those fields actually present in are returned. A field is considered present if its)]TJ +0 -1.2222 TD +0.0367 Tw +(delimiting punctuation \(in the case of )Tj +/TT10 1 Tf +17.0442 0 TD +0 Tw +(EXTENSION)Tj +/TT6 1 Tf +5.4009 0 TD +0.0367 Tw +[( and )]TJ +/TT10 1 Tf +2.2662 0 TD +0 Tw +(VERSION)Tj +/TT6 1 Tf +4.2007 0 TD +0.0367 Tw +(, the preceding period or)Tj +-28.912 -1.2889 TD +0.2133 Tw +[(semicolon, respectively\) is present, even if the field itself is empty. Empty fields are)]TJ +0 -1.2222 TD +0 Tw +(denoted by )Tj +/TT10 1 Tf +5.2432 0 TD +("")Tj +/TT6 1 Tf +1.2002 0 TD +( \(the empty string\).)Tj +-6.4434 -2.0667 TD +(Examples:)Tj +/TT10 1 Tf +5.3333 -1.7111 TD +(\(UNPACKFILENAME.STRING "FOO.BAR"\) =>)Tj +0 -1 TD +( \(NAME "FOO" EXTENSION "BAR"\))Tj +0 -1.5556 TD +(\(UNPACKFILENAME.STRING "FOO.;2"\) =>)Tj +0 -1 TD +( \(NAME "FOO" EXTENSION "" VERSION "2"\))Tj +0 -1.5556 TD +(\(UNPACKFILENAME.STRING "FOO;"\) =>)Tj +0 -1 TD +( \(NAME "FOO" VERSION ""\))Tj +0 -1.5556 TD +(\(UNPACKFILENAME.STRING)Tj +0 -1 TD +( "{ERIS}CURRENT>IMTRAN.DCOM;21"\))Tj +T* +( => \(HOST "ERIS" DIRECTORY "LISP>CURRENT")Tj +T* +( NAME "IMTRAN" EXTENSION "DCOM")Tj +T* +( VERSION "21"\))Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT18 29 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +31 0 obj +<< +/Length 5555 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-7)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\(UNPACKFILENAME)Tj +/TT6 1 Tf +9 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 212.2544 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0978 Tw +(Old version of )Tj +/TT10 1 Tf +6.892 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.0978 Tw +[( that returns the field values as atoms, rather)]TJ +-19.494 -1.2889 TD +0.2744 Tw +(than as strings. )Tj +/TT10 1 Tf +8.2599 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.2744 Tw +[( is now considered the "correct" way of)]TJ +-20.8619 -1.2889 TD +0.0044 Tw +(unpacking file names, because it does not lose information when the contents of a field are)Tj +0 -1.2222 TD +0 Tw +(numeric. For example, )Tj +/TT10 1 Tf +5.3333 -1.7111 TD +(\(UNPACKFILENAME STUFF.TXT\) =>)Tj +0 -1 TD +( \(NAME STUFF EXTENSION TXT\))Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(but)Tj +/TT10 1 Tf +5.3333 -1.7111 TD +(\(UNPACKFILENAME STUFF.029\) =>)Tj +0 -1 TD +( \(NAME STUFF EXTENSION 29\))Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +(Explicitly omitted fields are denoted by the atom )Tj +/TT10 1 Tf +21.8682 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, rather than the empty string.)Tj +-21.0018 -2.0667 TD +[(Note:)-901.2(Both )]TJ +/TT10 1 Tf +5.9738 0 TD +(UNPACKFILENAME)Tj +/TT6 1 Tf +8.4014 0 TD +0.3256 Tw +[( and )]TJ +/TT10 1 Tf +2.844 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.3256 Tw +[( leave the)]TJ +-26.4879 -1.2889 TD +0.0167 Tw +(trailing colon on the device field, so that the Tenex device )Tj +/TT10 1 Tf +25.842 0 TD +0 Tw +(NIL:)Tj +/TT6 1 Tf +2.4004 0 TD +0.0167 Tw +[( can be)]TJ +-28.2424 -1.2889 TD +0.9367 Tw +[(distinguished from the absence of a device. Although)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +0.2411 Tw +[( is capable of making the distinction, it)]TJ +-12.6021 -1.2889 TD +0 Tw +(retains this behavior for backward compatibility. Thus,)Tj +/TT10 1 Tf +-2 -1.7111 TD +(\(UNPACKFILENAME.STRING {TOAST}DSK:FOO\) =>)Tj +0 -1.2222 TD +( \(HOST "TOAST" DEVICE "DSK:" NAME "FOO"\))Tj +-6.6667 -2.5489 TD +(\(FILENAMEFIELD)Tj +/TT4 1 Tf +10 0 0 10 177.6 321.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 180.3783 321.66 Tm +(FILENAME)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FIELDNAME)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 279.8441 321.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 321.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0233 Tw +(Returns, as an atom, the contents of the )Tj +/TT14 1 Tf +17.7868 0 TD +0 Tw +(FIELDNAME)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[( field of )]TJ +/TT14 1 Tf +3.7038 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +[(. If )]TJ +/TT14 1 Tf +1.7399 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +[( is a)]TJ +-38.2329 -1.2889 TD +0 Tw +(stream, its full name is used.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(PACKFILENAME.STRING)Tj +/TT6 1 Tf +12 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FIELD)Tj +3 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FIELD)Tj +2.9997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 404.8509 271.12 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 442.61 271.12 Tm +([NoSpread)Tj +-37.1789 -1.4 TD +(Function])Tj +2 -1.7778 TD +0.1856 Tw +(Takes a sequence of alternating field names and field contents \(atoms or strings\), and)Tj +0 -1.2222 TD +0 Tw +(returns the corresponding file name, as a string.)Tj +0 -2 TD +(If )Tj +/TT10 1 Tf +1.2166 0 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.2967 Tw +[( is given a single argument, it is interpreted as a list of)]TJ +-12.6184 -1.2889 TD +0.5633 Tw +[(alternating field names and field contents. Thus )]TJ +/TT10 1 Tf +26.0863 0 TD +0 Tw +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.5633 Tw +[( and)]TJ +/TT10 1 Tf +-37.4881 -1.2889 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +12.6021 0 TD +( operate as inverses.)Tj +-12.6021 -2.0667 TD +(If the same field name is given twice, the )Tj +/TT8 1 Tf +18.2407 0 TD +(first)Tj +/TT6 1 Tf +1.667 0 TD +( occurrence is used.)Tj +-19.9077 -2 TD +0.2189 Tw +(The contents of the field name )Tj +/TT10 1 Tf +14.911 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.2189 Tw +[( may be either a directory name or a full)]TJ +-20.3119 -1.2889 TD +0 Tw +(directory specification as described above.)Tj +/TT10 1 Tf +0 -2 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.19 Tw +[( also accepts the "field name" )]TJ +/TT10 1 Tf +14.1966 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +0.19 Tw +[( to mean that its contents)]TJ +-27.9989 -1.2889 TD +0.0289 Tw +[(should itself be unpacked and spliced into the argument list at that point. This feature, in)]TJ +0 -1.2222 TD +0.0389 Tw +(conjunction with the rule that fields early in the argument list override later duplicates, is)Tj +T* +0.0244 Tw +[(useful for altering existing file names. For example, to provide a default field, place )]TJ +/TT10 1 Tf +37.5898 0 TD +0 Tw +(BODY)Tj +/TT6 1 Tf +-37.5898 -1.2889 TD +0.0544 Tw +[(first in the argument list, then the default fields. To override a field, place the new fields)]TJ +0 -1.2222 TD +0 Tw +(first and )Tj +/TT10 1 Tf +3.9619 0 TD +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +( last.)Tj +-6.3623 -2.0667 TD +(If the value of the )Tj +/TT10 1 Tf +8.0112 0 TD +(BODY)Tj +/TT6 1 Tf +2.4004 0 TD +( field is a stream, its full name is used.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +34 0 obj +<< +/Length 3151 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-8)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +(Examples:)Tj +/TT10 1 Tf +5.3333 -1.7111 TD +(\(PACKFILENAME.STRING DIRECTORY "LISP")Tj +0 -1 TD +( NAME "NET"\))Tj +T* +( => "NET")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING NAME "NET")Tj +0 -1 TD +( DIRECTORY "{DSK}"\))Tj +T* +( => "{DSK}NET")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING DIRECTORY "{DSK}")Tj +0 -1 TD +( BODY "{TOAST}BAR"\))Tj +T* +( => "{DSK}BAR")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING DIRECTORY "FRED")Tj +0 -1 TD +( BODY "{TOAST}BAR"\))Tj +T* +( => "{TOAST}BAR")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "{TOAST}BAR")Tj +0 -1 TD +( DIRECTORY "FRED"\))Tj +T* +( => "{TOAST}BAR")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING VERSION NIL)Tj +0 -1 TD +( BODY "{TOAST}BAR.DCOM;2"\))Tj +T* +( => "{TOAST}BAR.DCOM")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "{TOAST}BAR.DCOM")Tj +0 -1 TD +( VERSION 1\))Tj +T* +( => "{TOAST}BAR.DCOM;1")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "{TOAST}BAR.DCOM;")Tj +0 -1 TD +( VERSION 1\))Tj +T* +( => "{TOAST}BAR.DCOM;")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "BAR.;1")Tj +0 -1 TD +( EXTENSION "DCOM"\))Tj +T* +( => "BAR.;1")Tj +0 -1.5556 TD +(\(PACKFILENAME.STRING BODY "BAR;1")Tj +0 -1 TD +( EXTENSION "DCOM"\))Tj +T* +( => "BAR.DCOM;1")Tj +/TT6 1 Tf +-5.3333 -1.8444 TD +0.13 Tw +(In the last two examples, note that in one case the extension is explicitly present in the)Tj +0 -1.2222 TD +0.0189 Tw +(body \(as indicated by the preceding period\), while in the other there is no indication of an)Tj +T* +0 Tw +(extension, so the default is used.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(PACKFILENAME)Tj +/TT6 1 Tf +7.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FIELD)Tj +3 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FIELD)Tj +2.9997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(CONTENTS)Tj +4.8 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 415.0508 187.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 449.99 187.2 Tm +([NoSpread Function])Tj +-30.6656 -2.1778 TD +0.1278 Tw +(The same as )Tj +/TT10 1 Tf +6.0166 0 TD +0 Tw +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.1278 Tw +(, except that it returns the file name as a symbol,)Tj +-17.4185 -1.2889 TD +0 Tw +(instead of a string.)Tj +/TT4 1 Tf +10 0 0 10 102 113.66 Tm +(Incomplete File Names)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 110.95 m +558.01 110.95 l +S +BT +/TT6 1 Tf +9 0 0 9 126 89 Tm +0.0022 Tw +(In general, it is not necessary to pass a complete file name \(one containing all the fields listed above\) to)Tj +0 -1.2222 TD +0.0878 Tw +[(functions that take a file name as argument. Interlisp supplies suitable defaults for certain fields, as)]TJ +T* +0.2689 Tw +[(described below. Functions that return names of actual files, however, always return the fully)]TJ +T* +0 Tw +(specified name.)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +37 0 obj +<< +/Length 5076 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-9)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.1167 Tw +(If the version field is omitted from a file name, Interlisp performs version recognition, as described)Tj +0 -1.2222 TD +0 Tw +(below.)Tj +0 -2.8889 TD +0.1133 Tw +(If the host, device and/or directory field are omitted from a file name, Interlisp defaults them with)Tj +0 -1.2222 TD +0.2456 Tw +[(respect to the currently connected directory. The connected directory is changed by calling the)]TJ +T* +0 Tw +(function )Tj +/TT10 1 Tf +3.957 0 TD +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +( or using the programmers assistant command )Tj +/TT10 1 Tf +21.1138 0 TD +(CONN)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-30.4717 -2.9556 TD +0.0011 Tw +(Defaults are added to the partially specified name "left to right" until a host, device or directory field is)Tj +0 -1.2222 TD +0 Tw +(encountered. Thus, if the connected directory is )Tj +/TT10 1 Tf +21.5093 0 TD +({TWENTY}PS:)Tj +/TT6 1 Tf +10.2017 0 TD +(, then)Tj +/TT10 1 Tf +-21.0443 -1.8444 TD +(BAR.DCOM )Tj +/TT6 1 Tf +5.4009 0 TD +(means)Tj +/TT10 1 Tf +-5.4009 -1 TD +( {TWENTY}PS:BAR.DCOM)Tj +0 -1.6222 TD +(BAR.DCOM )Tj +/TT6 1 Tf +10.8018 0 TD +(means)Tj +/TT10 1 Tf +-10.8018 -1 TD +( {TWENTY}PS:BAR.DCOM)Tj +0 -1.6222 TD +(MTA0:BAR.DCOM )Tj +/TT6 1 Tf +13.8022 0 TD +(means)Tj +/TT10 1 Tf +-13.8022 -1 TD +( {TWENTY}MTA0:BAR.DCOM)Tj +0 -1.6222 TD +({THIRTY}BAR.DCOM )Tj +/TT6 1 Tf +15.6025 0 TD +(means)Tj +/TT10 1 Tf +-15.6025 -1 TD +( {THIRTY}BAR.DCOM)Tj +/TT6 1 Tf +-10.6667 -2.7333 TD +0.0111 Tw +(In addition, if the partially specified name contains a subdirectory, but no principal directory, then the)Tj +0 -1.2222 TD +0 Tw +(subdirectory is appended to the connected directory. For example,)Tj +/TT10 1 Tf +10.6667 -1.7778 TD +(ISO>BAR.DCOM )Tj +/TT6 1 Tf +7.8013 0 TD +(means)Tj +/TT10 1 Tf +-7.8013 -1 TD +( {TWENTY}PS:ISO>BAR.DCOM)Tj +/TT6 1 Tf +-10.6667 -2.7333 TD +0.0633 Tw +(Or, if the connected directory is the Unix directory )Tj +/TT10 1 Tf +23.11 0 TD +0 Tw +({UNX}/usr/fred/)Tj +/TT6 1 Tf +9.0015 0 TD +0.0633 Tw +(, then )Tj +/TT10 1 Tf +2.8459 0 TD +0 Tw +(iso/bar.dcom)Tj +/TT6 1 Tf +7.2012 0 TD +0.0633 Tw +[( means)]TJ +/TT10 1 Tf +-42.1586 -1.2889 TD +0 Tw +({UNX}/usr/fred/iso/bar.dcom)Tj +/TT6 1 Tf +16.2026 0 TD +(, but )Tj +/TT10 1 Tf +2.2324 0 TD +(/other/bar.dcom)Tj +/TT6 1 Tf +9.0015 0 TD +( means )Tj +/TT10 1 Tf +3.3677 0 TD +({UNX}/other/bar.dcom)Tj +/TT6 1 Tf +12.002 0 TD +(.)Tj +/TT10 1 Tf +-40.1395 -2.5489 TD +(\(CNDIR)Tj +/TT4 1 Tf +10 0 0 10 134.4 256.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.1783 256.8 Tm +(HOST/DIR)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 185.7862 256.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 256.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2333 Tw +(Connects to the directory )Tj +/TT14 1 Tf +12.3274 0 TD +0 Tw +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +0.2333 Tw +(, which can either be a directory name or a full)Tj +-17.1282 -1.2889 TD +0.1244 Tw +[(directory specification including host and/or device. If the specification includes just a)]TJ +0 -1.2222 TD +0.3733 Tw +(host, and the host supports directories, the directory is defaulted to the value of)Tj +/TT10 1 Tf +T* +0 Tw +(\(USERNAME\))Tj +/TT6 1 Tf +6.001 0 TD +0.0567 Tw +(; if the host is omitted, connection is made to another directory on the same)Tj +-6.001 -1.2889 TD +0 Tw +(host as before. If )Tj +/TT14 1 Tf +7.7568 0 TD +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, connects to the value of )Tj +/TT10 1 Tf +11.1528 0 TD +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-34.5269 -2.0667 TD +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.2122 Tw +[( returns the full name of the now-connected directory. Causes an error, )]TJ +/TT10 1 Tf +34.5895 0 TD +0 Tw +(Non-)Tj +-37.5899 -1.2889 TD +(existent directory)Tj +/TT6 1 Tf +10.8018 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +( is not recognized as a valid directory.)Tj +-16.9766 -2.0667 TD +0.0878 Tw +(Note that )Tj +/TT10 1 Tf +4.5921 0 TD +0 Tw +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0878 Tw +[( does not necessarily require or provide any directory access privileges.)]TJ +-7.5925 -1.2889 TD +0 Tw +(Access privileges are checked when a file is opened.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(CONN)Tj +/TT6 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(HOST/DIR)Tj +/TT12 1 Tf +10 0 0 10 169.057 112.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 392.09 112.26 Tm +([Prog. Asst. Command])Tj +-29.5656 -1.8444 TD +0.0356 Tw +(Convenient command form of )Tj +/TT10 1 Tf +13.7672 0 TD +0 Tw +(CNDIR)Tj +/TT6 1 Tf +3.0005 0 TD +0.0356 Tw +[( for use at the executive. Connects to )]TJ +/TT14 1 Tf +16.9592 0 TD +0 Tw +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0356 Tw +(, or)Tj +-38.5277 -1.2889 TD +0.0989 Tw +(to the value of )Tj +/TT10 1 Tf +6.9717 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.0989 Tw +[( if )]TJ +/TT14 1 Tf +1.3218 0 TD +0 Tw +(HOST/DIR)Tj +/TT6 1 Tf +4.8008 0 TD +0.0989 Tw +[( is omitted. This command is undoable)]TJ +-20.8956 -1.2889 TD +0 Tw +(undoing it causes the system to connect to the previously connected directory.)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6212 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-10)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(LOGINHOST/DIR)Tj +/TT12 1 Tf +10 0 0 10 220.2 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 568.2 Tm +([Variable])Tj +/TT10 1 Tf +-35.6011 -1.8444 TD +(CONN)Tj +/TT6 1 Tf +2.4004 0 TD +0.1067 Tw +[( with no argument connects to the value of the variable )]TJ +/TT10 1 Tf +25.7729 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.1067 Tw +(, initially)Tj +/TT10 1 Tf +-35.9746 -1.2889 TD +0 Tw +({DSK})Tj +/TT6 1 Tf +3.0005 0 TD +(, but usually reset in your greeting file \(Chapter 12\).)Tj +/TT10 1 Tf +-5.6672 -2.5489 TD +(\(DIRECTORYNAME)Tj +/TT4 1 Tf +10 0 0 10 225.6 517.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.3783 517.06 Tm +(DIRNAME)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(STRPTR)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 306.2406 517.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 517.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.0766 0 TD +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.1567 Tw +[( is T, returns the full specification of the currently connected directory. If)]TJ +/TT14 1 Tf +-5.2773 -1.2889 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.83 Tw +[( is )]TJ +/TT10 1 Tf +2.8748 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.83 Tw +(, returns the "login" directory specification \(the value of)Tj +/TT10 1 Tf +-8.8758 -1.2889 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.0478 Tw +[(\). For any other value of )]TJ +/TT14 1 Tf +11.4477 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0478 Tw +(, returns a full directory specification)Tj +-23.4497 -1.2889 TD +0 Tw +(if )Tj +/TT14 1 Tf +0.874 0 TD +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +( designates an existing directory \(satisfies )Tj +/TT10 1 Tf +18.5869 0 TD +(DIRECTORYNAMEP)Tj +/TT6 1 Tf +8.4014 0 TD +(\), otherwise )Tj +/TT10 1 Tf +5.439 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-39.3022 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(STRPTR)Tj +/TT6 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, the value is returned as an atom, otherwise it is returned as a string.)Tj +/TT10 1 Tf +-9.0021 -2.5489 TD +(\(DIRECTORYNAMEP)Tj +/TT16 1 Tf +9 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DIRNAME)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(HOSTNAME)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 321.9141 424.12 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 424.12 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.7515 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0244 Tw +[( if )]TJ +/TT14 1 Tf +1.1729 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0244 Tw +[( is recognized as a valid directory on host )]TJ +/TT14 1 Tf +18.7981 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0244 Tw +(, or on the host)Tj +-33.3241 -1.2889 TD +0.23 Tw +(of the currently connected directory if )Tj +/TT14 1 Tf +18.3771 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.23 Tw +[( is )]TJ +/TT10 1 Tf +1.6748 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.23 Tw +(. )Tj +/TT14 1 Tf +1.21 0 TD +0 Tw +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.23 Tw +[( may be either a)]TJ +-32.0637 -1.2889 TD +0 Tw +(directory name or a full directory specification containing host and/or device as well.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9666 0 TD +(DIRNAME)Tj +/TT6 1 Tf +4.2007 0 TD +0.0467 Tw +[( includes subdirectories, this function may or may not pass judgment on their)]TJ +-5.1673 -1.2889 TD +0.0056 Tw +[(validity. Some hosts support "true" subdirectories, distinct entities manipulable by the file)]TJ +0 -1.2222 TD +0 Tw +(system, while others only provide them as a syntactic convenience.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +-0.0001 Tc +(\(HOSTNAMEP )Tj +/TT14 1 Tf +6.6001 0 TD +0 Tc +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 236.4053 321.38 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 321.38 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.9882 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2611 Tw +[( if )]TJ +/TT14 1 Tf +1.6462 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.2611 Tw +[( is recognized as a valid host or file device name at the moment)]TJ +/TT10 1 Tf +-8.6349 -1.2889 TD +0 Tw +(HOSTNAMEP)Tj +/TT6 1 Tf +5.4009 0 TD +( is called.)Tj +/TT4 1 Tf +10 0 0 10 102 250.24 Tm +(Version Recognition)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 247.53 m +558.01 247.53 l +S +BT +/TT6 1 Tf +9 0 0 9 126 225.58 Tm +0.02 Tw +[(Most of the file devices in Interlisp support file version numbers. That is, it is possible to have several)]TJ +0 -1.2222 TD +0.0189 Tw +(files of the exact same name, differing only in their )Tj +/TT10 1 Tf +22.81 0 TD +0 Tw +(VERSION)Tj +/TT6 1 Tf +4.2007 0 TD +0.0189 Tw +[( field, which is incremented for each new)]TJ +-27.0107 -1.2889 TD +0.0244 Tw +[("version" of the file that is created. When a file name lacking a version number is presented to the file)]TJ +0 -1.2222 TD +0.1611 Tw +[(system, it is necessary to determine which version number is intended. This process is known as)]TJ +/TT8 1 Tf +T* +0 Tw +(version recognition)Tj +/TT6 1 Tf +7.7695 0 TD +(.)Tj +-7.7695 -2.8889 TD +(When )Tj +/TT10 1 Tf +2.8975 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0001 Tc +0.0043 Tw +( opens a file for input and no version number is given, the highest existing version)Tj +-8.8985 -1.2889 TD +0 Tc +0.0856 Tw +[(number is used. Similarly, when a file is opened for output and no version number is given, a new)]TJ +0 -1.2222 TD +0.1022 Tw +(file is created with a version number one higher than the highest one currently in use with that file)Tj +T* +0.1811 Tw +[(name. The version number defaulting for )]TJ +/TT10 1 Tf +20.0085 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1811 Tw +[( can be changed by specifying a different)]TJ +-26.0095 -1.2889 TD +0 Tw +(value for its )Tj +/TT14 1 Tf +5.5029 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( argument, as described under )Tj +/TT10 1 Tf +13.7046 0 TD +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +(, below.)Tj +-27.0088 -2.9556 TD +0.0044 Tw +(Other functions that accept file names as arguments generally perform the default version recognition,)Tj +0 -1.2222 TD +0.06 Tw +(which is newest version for existing files, or a new version if using the file name to create a new file.)Tj +T* +0 Tw +(The one exception is )Tj +/TT10 1 Tf +9.2598 0 TD +(DELFILE)Tj +/TT6 1 Tf +4.2007 0 TD +(, which defaults to the oldest existing version of the file.)Tj +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +43 0 obj +<< +/Length 6248 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-11)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0078 Tw +(The functions below can be used to perform version recognition without actually calling )Tj +/TT10 1 Tf +39.3321 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +-39.3321 -1.2889 TD +0.14 Tw +[(to open the file. Note that these functions only tell the truth about the moment at which they are)]TJ +0 -1.2222 TD +0.07 Tw +(called, and thus cannot in general be used to anticipate the name of the file opened by a comparable)Tj +/TT10 1 Tf +T* +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(. They are sometimes, however, helpful hints.)Tj +/TT10 1 Tf +-3.3343 -2.5489 TD +(\(FULLNAME)Tj +/TT6 1 Tf +5.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(RECOG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 192.9061 513 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 513 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9533 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is an open stream, simply returns the full file name of the stream. Otherwise, if )]TJ +/TT14 1 Tf +36.0647 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +[( is a)]TJ +-38.2182 -1.2889 TD +0 Tw +(file name given as a string or symbol, performs version recognition, as follows:)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9399 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.02 Tw +[( is recognized in the recognition mode specified by )]TJ +/TT14 1 Tf +22.9066 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.02 Tw +[( as an abbreviation for some)]TJ +-27.4471 -1.2889 TD +0 Tw +(file, returns the files full name, otherwise )Tj +/TT10 1 Tf +18.6489 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(. )Tj +/TT14 1 Tf +0.75 0 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( is one of the following:)Tj +/TT10 1 Tf +-15.9997 -2.0667 TD +(OLD)Tj +/TT6 1 Tf +3.1333 0 TD +0.0189 Tw +[(Choose the newest existing version of the file. Return )]TJ +/TT10 1 Tf +24.1962 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +-24.1962 -1.2889 TD +(if no file named )Tj +/TT14 1 Tf +7.2007 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( exists.)Tj +/TT10 1 Tf +-12.7341 -2.0667 TD +(OLDEST)Tj +/TT6 1 Tf +4.9333 0 TD +0.0644 Tw +[(Choose the oldest existing version of the file. Return )]TJ +/TT10 1 Tf +24.2045 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +-24.2045 -1.2889 TD +(if no file named )Tj +/TT14 1 Tf +7.2007 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +( exists.)Tj +/TT10 1 Tf +-10.9341 -2.0667 TD +(NEW)Tj +/TT6 1 Tf +3.1333 0 TD +0.0167 Tw +[(Choose a new \(not yet existing\) version of the file. That is,)]TJ +0 -1.2889 TD +0.3944 Tw +(if versions of )Tj +/TT14 1 Tf +7.1418 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.3944 Tw +[( already exist, then choose a version)]TJ +-7.7419 -1.2889 TD +0.3378 Tw +(number one higher than highest existing version; else)Tj +0 -1.2222 TD +0.3944 Tw +[(choose version 1. For some file systems, )]TJ +/TT10 1 Tf +21.1961 0 TD +0 Tw +(FULLNAME)Tj +/TT6 1 Tf +-21.1961 -1.2889 TD +(returns )Tj +/TT10 1 Tf +3.5008 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0467 Tw +[( if you do not have the access rights necessary)]TJ +-5.3011 -1.2889 TD +0 Tw +(for creating a new file named )Tj +/TT14 1 Tf +13.1909 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-19.3244 -2.0667 TD +(OLD/NEW)Tj +/TT6 1 Tf +5.5333 0 TD +(Try )Tj +/TT10 1 Tf +2.0017 0 TD +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.1878 Tw +(, then )Tj +/TT10 1 Tf +3.0948 0 TD +0 Tw +(NEW)Tj +/TT6 1 Tf +1.8003 0 TD +0.1878 Tw +[(. That is, choose the newest existing)]TJ +-8.6971 -1.2889 TD +0.2644 Tw +[(version of the file, if any; else choose version 1. This)]TJ +0 -1.2222 TD +0.1344 Tw +(usually only makes sense if you are intending to open )Tj +/TT14 1 Tf +25.4006 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +-25.4006 -1.2889 TD +(for access )Tj +/TT10 1 Tf +4.4883 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT14 1 Tf +-6.8887 -2.0667 TD +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.4967 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4967 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2467 Tw +[( defaults to )]TJ +/TT10 1 Tf +5.929 0 TD +0 Tw +(OLD)Tj +/TT6 1 Tf +1.8003 0 TD +0.2467 Tw +[(. For all other values of)]TJ +/TT14 1 Tf +-14.1235 -1.2889 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +(, generates an error )Tj +/TT10 1 Tf +8.7622 0 TD +(ILLEGAL ARG)Tj +/TT6 1 Tf +6.6011 0 TD +(. )Tj +-18.3638 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.3933 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.4733 Tw +[( already contains a version number, the )]TJ +/TT14 1 Tf +21.0043 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +-22.9976 -1.2889 TD +0.0001 Tc +0.0043 Tw +(argument will never change it. In particular, )Tj +/TT14 1 Tf +20.0922 0 TD +0 Tc +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.2544 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2544 0 TD +(NEW)Tj +/TT6 1 Tf +-24.2017 -1.2889 TD +0.4078 Tw +[(does not require that the file actually be new. For)]TJ +0 -1.2222 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.599 0 TD +0.84 Tw +(\(FULLNAME FOO.;2 NEW\))Tj +/TT6 1 Tf +15.4822 0 TD +0.35 Tw +[( may return)]TJ +/TT10 1 Tf +-20.0813 -1.2889 TD +0 Tw +({ERIS}FOO.;2)Tj +/TT6 1 Tf +10.8018 0 TD +0.3 Tw +[( if that file already exists, even)]TJ +-10.8018 -1.2889 TD +0 Tw +(though )Tj +/TT10 1 Tf +3.7164 0 TD +0.6522 Tw +(\(FULLNAME FOO NEW\))Tj +/TT6 1 Tf +13.3064 0 TD +0.2711 Tw +[( would default the)]TJ +-17.0228 -1.2889 TD +1.0689 Tw +(version to a new number, perhaps returning)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +({ERIS}FOO.;5)Tj +/TT6 1 Tf +10.8018 0 TD +(. )Tj +/TT10 1 Tf +-24.8018 -2.5489 TD +(\(INFILEP)Tj +/TT6 1 Tf +4.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 174.4544 114.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 114.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1011 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.3824 0 TD +0 Tw +(\(FULLNAME)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.3511 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +0.1011 Tc +( )Tj +/TT10 1 Tf +0.6289 0 TD +0 Tc +(OLD\))Tj +/TT6 1 Tf +2.4004 0 TD +0.1011 Tw +[(. That is, returns the full file name of the newest)]TJ +-17.5641 -1.2889 TD +0.0278 Tw +(version of )Tj +/TT14 1 Tf +4.7162 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( if )]TJ +/TT14 1 Tf +1.1796 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( is recognized as specifying the name of an existing file that could)]TJ +-10.6966 -1.2889 TD +0 Tw +(potentially be opened for input, )Tj +/TT10 1 Tf +14.2969 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( otherwise.)Tj +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +48 0 obj +<< +/Length 6167 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-12)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\(OUTFILEP)Tj +/TT4 1 Tf +10 0 0 10 198.6 568.2 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.3783 568.2 Tm +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 228.3827 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Equivalent to )Tj +/TT10 1 Tf +6.1802 0 TD +(\(FULLNAME)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NEW\))Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +-22.8153 -2.9556 TD +0.1278 Tw +(Note that )Tj +/TT10 1 Tf +4.6721 0 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.6278 0 TD +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.1278 Tw +[( and )]TJ +/TT10 1 Tf +2.4484 0 TD +0 Tw +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.1278 Tw +[( do not open any files; they are pure predicates. In)]TJ +-21.5505 -1.2889 TD +0.0133 Tw +(general they are also only hints, as they do not necessarily imply that the caller has access rights to the)Tj +0 -1.2222 TD +0.19 Tw +[(file. For example, )]TJ +/TT10 1 Tf +8.9001 0 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.19 Tw +[( might return non-)]TJ +/TT10 1 Tf +8.7814 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.19 Tw +(, but )Tj +/TT10 1 Tf +2.6124 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.19 Tw +[( might fail for the same file)]TJ +-32.2959 -1.2889 TD +0.12 Tw +(because the file is read-protected against you, or the file happens to be open for output by another)Tj +0 -1.2222 TD +0.0133 Tw +[(user at the time. Similarly, )]TJ +/TT10 1 Tf +12.1962 0 TD +0 Tw +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0133 Tw +[( could return non-)]TJ +/TT10 1 Tf +8.1079 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0133 Tw +(, but )Tj +/TT10 1 Tf +2.2591 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0133 Tw +[( could fail with a )]TJ +/TT10 1 Tf +7.7595 0 TD +0 Tw +(FILE)Tj +-42.9248 -1.2889 TD +(SYSTEM RESOURCES EXCEEDED)Tj +/TT6 1 Tf +15.0024 0 TD +( error.)Tj +-15.0024 -3.1045 TD +0.1711 Tw +(Note also that in a shared file system, such as a remote file server, intervening file)Tj +/TT12 1 Tf +10 0 0 10 473.2318 440.26 Tm +0 Tw +( )Tj +/TT6 1 Tf +9 0 0 9 477.9201 440.26 Tm +0.1711 Tw +(operations by)Tj +-39.1022 -1.2222 TD +0.1 Tw +[(another user could contradict the information returned by recognition. For example, a file that was)]TJ +/TT10 1 Tf +T* +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0356 Tw +[( might be deleted, or between an )]TJ +/TT10 1 Tf +14.9506 0 TD +0 Tw +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.0356 Tw +[( and the subsequent )]TJ +/TT10 1 Tf +9.2555 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0356 Tw +(, another user)Tj +-39.2085 -1.2889 TD +0.1378 Tw +(might create a new version or delete the highest version, causing )Tj +/TT10 1 Tf +30.3686 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1378 Tw +[( to open a different)]TJ +-36.3696 -1.2889 TD +0.1422 Tw +(version of the file than the one returned by )Tj +/TT10 1 Tf +20.4358 0 TD +0 Tw +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +0.1422 Tw +[(. In addition, some file servers do not well)]TJ +-25.2365 -1.2889 TD +0.1144 Tw +[(support recognition of files in output context. Thus, in general, the "truth" about a file can only be)]TJ +0 -1.2222 TD +0.0022 Tw +(obtained by actually opening the file; creators of files should rely on the name of the stream opened by)Tj +/TT10 1 Tf +T* +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0744 Tw +[(, not the value returned from these recognition functions. In particular, for the reasons)]TJ +-6.001 -1.2889 TD +0 Tw +(described earlier, programmers are discouraged from using )Tj +/TT10 1 Tf +26.6196 0 TD +(OUTFILEP)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(\(FULLNAME)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NAME)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NEW\))Tj +/TT6 1 Tf +3.0005 0 TD +(. )Tj +/TT4 1 Tf +10 0 0 10 102 306.92 Tm +(Using File Names Instead of Streams)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 304.21 m +558.01 304.21 l +S +BT +/TT6 1 Tf +9 0 0 9 126 282.26 Tm +0.1633 Tw +(In earlier implementations of Interlisp, from the days of Interlisp-10 onward, the "handle" used to)Tj +0 -1.2222 TD +0.0522 Tw +[(refer to an open file was not a stream, but rather the files full name, represented as a symbol. When)]TJ +T* +0.0589 Tw +(the file name was passed to any I/O function, it was mapped to a stream by looking it up in a list of)Tj +T* +0.0644 Tw +[(open files. This scheme was sometimes convenient for typing in file commands at the executive, but)]TJ +T* +0.1411 Tw +[(was very poor for serious programming in two major ways. First, the mapping from file name to)]TJ +T* +0.1211 Tw +(stream on every input/output operation is inefficient. Second, and more importantly, using the file)Tj +T* +0.1289 Tw +(name as the handle on an open stream means that it is not possible to have more than one stream)Tj +T* +0 Tw +(open on a given file at once.)Tj +0 -2.8889 TD +0.0133 Tw +(As of this writing, Medley is in a transition period, where it still supports the use of symbol file names)Tj +0 -1.2222 TD +0.0922 Tw +[(as synonymous with open streams, but this use is not recommended. The remainder of this section)]TJ +T* +0.1733 Tw +(discusses this usage of file names for the benefit of those reading older programs and wishing to)Tj +T* +0 Tw +(convert them as necessary to work properly when this compatibility feature is removed.)Tj +/TT4 1 Tf +10 0 0 10 126 118.92 Tm +(File Name Efficiency Considerations)Tj +/TT6 1 Tf +9 0 0 9 126 95.26 Tm +0.0755 Tw +(It is possible for a program to be seriously inefficient using a file name as a stream if the program is)Tj +T* +0.3611 Tw +(not using the files full name, the name returned by )Tj +/TT10 1 Tf +26.5266 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3611 Tw +[( \(below\). Any time that an)]TJ +-31.3274 -1.2889 TD +0.0622 Tw +(input/output function is called with a file name other than the full file name, Interlisp must perform)Tj +0 -1.2222 TD +0.2344 Tw +[(recognition on the partial file name in order to determine which open file is intended. Thus if)]TJ +T* +0.1578 Tw +(repeated operations are to be performed, it is considerably more efficient to use the full file name)Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +51 0 obj +<< +/Length 6401 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-13)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0356 Tw +(returned from )Tj +/TT10 1 Tf +6.598 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0355 Tw +[( than to repeatedly use the possibly incomplete name that was used to open)]TJ +-11.3988 -1.2889 TD +0 Tw +(the file.)Tj +0 -2.8889 TD +0.0167 Tw +(There is a more subtle problem with partial file names, in that recognition is performed on your entire)Tj +0 -1.2222 TD +0.18 Tw +[(directory, not just the open files. It is possible for a file name that was previously recognized to)]TJ +T* +0.2622 Tw +[(denote one file to suddenly denote a different file. For example, suppose a program performs)]TJ +/TT10 1 Tf +T* +0.0922 Tw +(\(INFILE FOO\))Tj +/TT6 1 Tf +7.8935 0 TD +0.0389 Tw +(, opening )Tj +/TT10 1 Tf +4.465 0 TD +0 Tw +(FOO.;1)Tj +/TT6 1 Tf +3.6006 0 TD +0.0389 Tw +(, and reads several expressions from )Tj +/TT10 1 Tf +16.5351 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0389 Tw +[(. Then you interrupt the)]TJ +-34.2944 -1.2889 TD +0.2489 Tw +(program, create a )Tj +/TT10 1 Tf +8.7457 0 TD +0 Tw +(FOO.;2)Tj +/TT6 1 Tf +3.6006 0 TD +0.2489 Tw +[( and resume the program \(or a user at another workstation creates a)]TJ +/TT10 1 Tf +-12.3463 -1.2889 TD +0 Tw +(FOO.;2)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[(\). Now a call to )]TJ +/TT10 1 Tf +7.6452 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0756 Tw +[( giving it )]TJ +/TT10 1 Tf +4.4352 0 TD +0 Tw +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +0.0756 Tw +[( as its )]TJ +/TT14 1 Tf +2.9415 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0756 Tw +[( argument will generate a )]TJ +/TT10 1 Tf +11.9554 0 TD +0.1811 Tw +(FILE NOT OPEN)Tj +/TT6 1 Tf +-37.179 -1.2889 TD +0 Tw +(error, because )Tj +/TT10 1 Tf +6.4419 0 TD +(FOO)Tj +/TT6 1 Tf +1.8003 0 TD +( will be recognized as )Tj +/TT10 1 Tf +9.7959 0 TD +(FOO.;2)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 436.2 Tm +(Obsolete File Opening Functions)Tj +/TT6 1 Tf +9 0 0 9 78 412.54 Tm +(The following functions are now considered obsolete, but are provided for backwards compatibility:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(OPENFILE)Tj +/TT6 1 Tf +5.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(RECOG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PARAMETERS)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 300.0228 390.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 390.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT14 1 Tf +3.131 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +[( with access rights as specified by )]TJ +/TT14 1 Tf +15.1198 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0089 Tw +(, and recognition mode )Tj +/TT14 1 Tf +10.5351 0 TD +0 Tw +(RECOG)Tj +/TT6 1 Tf +3.0005 0 TD +0.0089 Tw +(, and)Tj +-37.7873 -1.2889 TD +0.07 Tw +[(returns the full name of the resulting stream. Equivalent to )]TJ +/TT10 1 Tf +27.2236 0 TD +0.1689 Tw +(\(FULLNAME \(OPENSTREAM)Tj +/TT14 1 Tf +-27.2236 -1.2889 TD +0 Tw +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(RECOG)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PARAMETERS)Tj +/TT10 1 Tf +6.001 0 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-19.6193 -2.5489 TD +(\(INFILE)Tj +/TT6 1 Tf +4.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 169.0544 327.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 327.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT14 1 Tf +3.2698 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1478 Tw +[( for input, and sets it as the primary input stream. Equivalent to )]TJ +/TT10 1 Tf +30.7315 0 TD +0 Tw +(\(INPUT)Tj +-36.4017 -1.2889 TD +(\(OPENSTREAM)Tj +/TT16 1 Tf +6.6011 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(INPUT OLD\)\))Tj +-12.1681 -2.5489 TD +(\(OUTFILE)Tj +/TT6 1 Tf +4.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 174.4544 276.32 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 276.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Opens )Tj +/TT14 1 Tf +3.1498 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( for output, and sets it as the primary output stream. Equivalent to )]TJ +/TT10 1 Tf +30.2556 0 TD +0 Tw +(\(OUTPUT)Tj +-35.8058 -1.2889 TD +(\(OPENSTREAM)Tj +/TT16 1 Tf +6.6011 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(OUTPUT NEW\)\))Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-20.5695 -2.5489 TD +(\(IOFILE)Tj +/TT6 1 Tf +4.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 169.0544 225.18 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 225.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0933 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.3668 0 TD +0 Tw +(\(OPENFILE)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.3433 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3433 0 TD +0.2256 Tw +(BOTH OLD\))Tj +/TT6 1 Tf +6.8266 0 TD +0.0933 Tw +(; opens )Tj +/TT14 1 Tf +3.5685 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0933 Tw +[( for both input and output.)]TJ +-27.6503 -1.2889 TD +0 Tw +(Does not affect the primary input or output stream.)Tj +/TT4 1 Tf +10 0 0 10 78 169.64 Tm +(Converting Old Programs)Tj +/TT6 1 Tf +9 0 0 9 78 145.98 Tm +0.1678 Tw +(At some point in the future, the Medley file system will change so that each call to )Tj +/TT10 1 Tf +39.3254 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +-39.3254 -1.2889 TD +0.0211 Tw +[(returns a distinct stream, even if a stream is already open to the specified file. This change is required)]TJ +0 -1.2222 TD +0 Tw +(in order to deal rationally with files in a multiprocessing environment.)Tj +0 -2.8889 TD +(This change will of necessity produce the following incompatibilities:)Tj +1.9167 -2 TD +0.1778 Tw +[(1.)-1333.3(The functions )]TJ +/TT10 1 Tf +8.7436 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.6778 0 TD +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +0.1778 Tw +(, and )Tj +/TT10 1 Tf +2.7984 0 TD +0 Tw +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1778 Tw +[( will return a )]TJ +/TT10 1 Tf +6.6984 0 TD +0 Tw +(STREAM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1778 Tw +(, not a full file)Tj +-31.8373 -1.2889 TD +0.0444 Tw +[(name. To make this less confusing in interactive situations, )]TJ +/TT10 1 Tf +26.9308 0 TD +0 Tw +(STREAM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0444 Tw +(s will have a print)Tj +-30.5314 -1.2889 TD +0 Tw +(format that reveals the underlying files actual name,)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +54 0 obj +<< +/Length 6059 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-14)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 143.25 569.54 Tm +0.2244 Tw +[(2.)-1333.3(A greater penalty will ensue for passing as the )]TJ +/TT14 1 Tf +24.8338 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.2244 Tw +[( argument to I/O operations)]TJ +-25.1509 -1.2889 TD +0.0811 Tw +(anything other than the object returned from )Tj +/TT10 1 Tf +20.6078 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0811 Tw +[(. Passing the files name will)]TJ +-25.4086 -1.2889 TD +0.2578 Tw +(be significantly slower than passing the stream \(even when passing the "full" file)Tj +0 -1.2222 TD +0.0922 Tw +(name\), and in the case where there is more than one stream open on the file it might)Tj +T* +0 Tw +(even act on the wrong one.)Tj +-2.0833 -2 TD +(3.)Tj +/TT10 1 Tf +2.0833 0 TD +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +0.0578 Tw +[( will return )]TJ +/TT10 1 Tf +5.4106 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0578 Tw +[( when passed the name of a file rather than a stream \(the value)]TJ +-10.2114 -1.2889 TD +0 Tw +(of )Tj +/TT10 1 Tf +1.1289 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(\).)Tj +-17.3716 -2.9556 TD +0.3511 Tw +(Users should consider the following advice when writing new programs and editing existing)Tj +0 -1.2222 TD +0 Tw +(programs, in order that they will continue to operate well when this change is made:)Tj +0 -2.8889 TD +0.3089 Tw +(Because of the efficiency and ambiguity considerations described earlier, users have long been)Tj +0 -1.2222 TD +0.1344 Tw +(encouraged to use only full file names as )Tj +/TT8 1 Tf +19.327 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.0562 0 TD +0.1344 Tw +[( arguments to I/O operations. The "proper" way to)]TJ +-21.3832 -1.2222 TD +0.0433 Tw +(have done this was to bind a variable to the value returned from )Tj +/TT10 1 Tf +29.2455 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0433 Tw +[( and pass that variable to)]TJ +-34.0462 -1.2889 TD +0.09 Tw +[(all I/O operations; such code will continue to work. A less proper way to obtain the full file name,)]TJ +0 -1.2222 TD +0.1522 Tw +(but one which has to date not incurred any obvious penalty, is that which binds a variable to the)Tj +T* +0.0244 Tw +(result of an )Tj +/TT10 1 Tf +5.3023 0 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.0244 Tw +[( and passes that to )]TJ +/TT10 1 Tf +8.5231 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0244 Tw +[( and all I/O operations. This has worked because)]TJ +/TT10 1 Tf +-22.8269 -1.2889 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.1622 Tw +[( and )]TJ +/TT10 1 Tf +2.5173 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1622 Tw +[( both return a full file name, an invalid assumption in this future world.)]TJ +-11.5188 -1.4378 TD +0 Tw +(Such code should be changed to pass around the value of the )Tj +/TT10 1 Tf +27.2251 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +(, not the )Tj +/TT10 1 Tf +3.8413 0 TD +(INFILEP)Tj +/TT12 1 Tf +10 0 0 10 486.6108 351 Tm +(.)Tj +/TT6 1 Tf +9 0 0 9 126 324.4 Tm +0.1822 Tw +(Code that calls )Tj +/TT10 1 Tf +7.3255 0 TD +0 Tw +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +0.1822 Tw +[( to test whether a possibly incomplete file name is already open should be)]TJ +-10.326 -1.2889 TD +0 Tw +(recoded to pass to )Tj +/TT10 1 Tf +8.2573 0 TD +(OPENP)Tj +/TT6 1 Tf +3.0005 0 TD +( only the value returned from )Tj +/TT10 1 Tf +13.3272 0 TD +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +-36.8276 -2.9556 TD +0.29 Tw +(Code that uses ordinary string functions to manipulate file names, and in particular the value)Tj +0 -1.2222 TD +0.1611 Tw +(returned from )Tj +/TT10 1 Tf +6.8491 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1611 Tw +(, should be changed to use the the functions )Tj +/TT10 1 Tf +21.076 0 TD +0 Tw +(UNPACKFILENAME.STRING)Tj +/TT6 1 Tf +-32.7258 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.2506 0 TD +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.3078 Tw +[(. Those functions work both on file names \(strings\) and streams)]TJ +-13.6525 -1.2889 TD +0 Tw +(\(coercing the stream to the name of its file\).)Tj +0 -2.8889 TD +0.0822 Tw +(Code that tests the value of )Tj +/TT10 1 Tf +12.7555 0 TD +0 Tw +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0822 Tw +[( for equality to some known file name or )]TJ +/TT10 1 Tf +18.9529 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +[( should be examined)]TJ +-35.9091 -1.2889 TD +0 Tw +(carefully and, if possible, recoded.)Tj +0 -2.8889 TD +0.0233 Tw +(To see more directly the effects of passing around )Tj +/TT10 1 Tf +22.3951 0 TD +0 Tw +(STREAM)Tj +/TT6 1 Tf +3.6006 0 TD +0.0233 Tw +(s instead of file names, replace your calls to)Tj +/TT10 1 Tf +-25.9956 -1.2889 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0689 Tw +[( with calls to )]TJ +/TT10 1 Tf +6.1305 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +(. )Tj +/TT10 1 Tf +0.8878 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.0689 Tw +[( is called in exactly the same way, but returns a)]TJ +/TT10 1 Tf +-23.8211 -1.2889 TD +0 Tw +(STREAM)Tj +/TT6 1 Tf +3.6006 0 TD +0.1922 Tw +[(. Streams can be passed to )]TJ +/TT10 1 Tf +13.346 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6922 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6922 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1922 Tw +(, etc just as the files full name can be)Tj +-27.3325 -1.2889 TD +0.2211 Tw +[(currently, but using them is more efficient. The function )]TJ +/TT10 1 Tf +27.4474 0 TD +0 Tw +(FULLNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.2211 Tw +(, when applied to a stream,)Tj +-32.2482 -1.2889 TD +0 Tw +(returns its full file name.)Tj +/TT4 1 Tf +10 0 0 10 102 99.66 Tm +(Using Files with Processes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 96.95 m +558.01 96.95 l +S +BT +/TT6 1 Tf +9 0 0 9 126 75 Tm +0.2855 Tw +(Because Medley does not yet support multiple streams per file, problems can arise if different)Tj +0 -1.2222 TD +0.3089 Tw +[(processes attempt to access the same file. You have to be careful not to have two processes)]TJ +T* +0.1267 Tw +(manipulating the same file at the same time, since the two processes will be sharing a single input)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +57 0 obj +<< +/Length 6016 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-15)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0056 Tw +[(stream and file pointer. For example, it will not work to have one process )]TJ +/TT10 1 Tf +32.9202 0 TD +0 Tw +(TCOMPL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0056 Tw +[( a file while another)]TJ +-36.5208 -1.2889 TD +0 Tw +(process is running )Tj +/TT10 1 Tf +8.3687 0 TD +(LISTFILES)Tj +/TT6 1 Tf +5.4009 0 TD +( on it.)Tj +/TT4 1 Tf +10 0 0 10 54 515 Tm +(File Attributes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 512.29 m +510.01 512.29 l +S +BT +/TT6 1 Tf +9 0 0 9 78 490.34 Tm +0.0967 Tw +[(Any file has a number of "file attributes", such as the read date, protection, and bytesize. The exact)]TJ +0 -1.2222 TD +0.2022 Tw +[(attributes that a file can have is dependent on the file device. The functions )]TJ +/TT10 1 Tf +36.5846 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.2022 Tw +[( and)]TJ +/TT10 1 Tf +-43.1857 -1.2889 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +( allow you to conveniently access file attributes:)Tj +/TT10 1 Tf +-3.9344 -2.5489 TD +(\(GETFILEINFO)Tj +/TT6 1 Tf +7.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ATTRIB)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 230.7097 444.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 444.8 Tm +([Function])Tj +-35.4033 -1.8445 TD +(Returns the current setting of the )Tj +/TT14 1 Tf +14.8389 0 TD +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +( attribute of )Tj +/TT14 1 Tf +5.4287 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-28.9352 -2.5489 TD +(\(SETFILEINFO)Tj +/TT6 1 Tf +7.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ATTRIB)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VALUE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 259.9641 405.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 405.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1011 Tw +(Sets the attribute )Tj +/TT14 1 Tf +7.9943 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.1011 Tw +[( of )]TJ +/TT14 1 Tf +1.5811 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1011 Tw +[( to be )]TJ +/TT14 1 Tf +2.9576 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1011 Tw +(. )Tj +/TT10 1 Tf +0.9522 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1011 Tw +[( returns )]TJ +/TT10 1 Tf +3.9063 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( if it is able to)]TJ +-33.5942 -1.2889 TD +0.0611 Tw +(change the attribute )Tj +/TT14 1 Tf +9.2634 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +(, and )Tj +/TT10 1 Tf +2.5651 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0611 Tw +[( if unsuccessful, either because the file device does)]TJ +-17.2294 -1.2889 TD +0.2511 Tw +(not recognize )Tj +/TT14 1 Tf +6.7283 0 TD +0 Tw +(ATTRIB)Tj +/TT6 1 Tf +3.6006 0 TD +0.2511 Tw +[( or because the file device does not permit the attribute to be)]TJ +-10.3289 -1.2889 TD +0 Tw +(modified.)Tj +-5.3333 -2.8889 TD +(The )Tj +/TT14 1 Tf +2.076 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1522 Tw +[( argument to )]TJ +/TT10 1 Tf +6.403 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1522 Tw +[( and )]TJ +/TT10 1 Tf +2.4973 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1522 Tw +[( can be an open stream \(or an argument)]TJ +-26.5789 -1.2889 TD +0.0844 Tw +(designating an open stream, see Chapter 25\), or the name of a closed file. )Tj +/TT10 1 Tf +33.9083 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0844 Tw +[( in general)]TJ +-40.5093 -1.2889 TD +0 Tw +(requires write access to the file.)Tj +0 -2.8889 TD +0.1733 Tw +(The attributes recognized by )Tj +/TT10 1 Tf +13.583 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1733 Tw +[( and )]TJ +/TT10 1 Tf +2.5395 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1733 Tw +[( fall into two categories: )]TJ +/TT8 1 Tf +11.6728 0 TD +0 Tw +(permanent)Tj +/TT6 1 Tf +-40.9975 -1.2889 TD +0.1089 Tw +(attributes, which are properties of the file, and )Tj +/TT8 1 Tf +21.5918 0 TD +0 Tw +(temporary)Tj +/TT6 1 Tf +4.166 0 TD +0.1089 Tw +[( attributes, which are properties only of an)]TJ +-25.7578 -1.2222 TD +0.0356 Tw +[(open stream to the file. The temporary attributes are only recognized when )]TJ +/TT14 1 Tf +34.118 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( designates an open)]TJ +-36.5184 -1.2889 TD +0.1044 Tw +[(stream; the permanent attributes are usually equally accessible for open and closed files. However,)]TJ +0 -1.2222 TD +0.2256 Tw +(some devices are willing to change the value of certain attributes of an open stream only when)Tj +T* +0.43 Tw +(specified in the )Tj +/TT14 1 Tf +8.2529 0 TD +0 Tw +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.43 Tw +[( argument to )]TJ +/TT10 1 Tf +7.2363 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.43 Tw +[( \(see above\), not on a later call to)]TJ +/TT10 1 Tf +-27.4911 -1.2889 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +-6.6011 -2.9556 TD +(The following are currently recognized as permanent attributes of a file:)Tj +/TT10 1 Tf +13.2 -2 TD +(BYTESIZE)Tj +/TT6 1 Tf +6.1333 0 TD +0.2756 Tw +[(The byte size of the file. Medley currently only)]TJ +0 -1.2889 TD +0 Tw +(supports byte size 8.)Tj +/TT10 1 Tf +-4.9333 -2 TD +(LENGTH)Tj +/TT6 1 Tf +4.9333 0 TD +0.1444 Tw +[(The number of bytes in the file. Alternatively, the)]TJ +0 -1.2889 TD +0.1422 Tw +[(byte position of the end-of-file. Like )]TJ +/TT10 1 Tf +17.331 0 TD +0 Tw +(\(GETEOFPTR)Tj +/TT14 1 Tf +-17.331 -1.2889 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(, but )Tj +/TT14 1 Tf +2.2324 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( does not have to be open.)Tj +/TT10 1 Tf +-11.3666 -2.0667 TD +(SIZE)Tj +/TT6 1 Tf +3.7333 0 TD +(The size of )Tj +/TT14 1 Tf +4.9966 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( in pages.)Tj +/TT10 1 Tf +-15.9303 -2.0667 TD +(CREATIONDATE)Tj +/TT6 1 Tf +8.5333 0 TD +0.1789 Tw +(The date and time, as a string, that the content of)Tj +/TT14 1 Tf +0 -1.2889 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3533 Tw +[( was "created". The creation date changes)]TJ +-2.4004 -1.2889 TD +0.2644 Tw +(whenever the content of the file is modified, but)Tj +0 -1.2222 TD +0.4689 Tw +(remains unchanged when a file is transported,)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +60 0 obj +<< +/Length 4826 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-16)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 300 569.54 Tm +0.6822 Tw +[(unmodified, across file systems. Specifically,)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1278 Tw +[( and )]TJ +/TT10 1 Tf +2.4484 0 TD +0 Tw +(RENAMEFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1278 Tw +[( \(see below\) preserve)]TJ +-13.2502 -1.2889 TD +0.1989 Tw +[(the files creation date. Note that this is different)]TJ +0 -1.2222 TD +0.2133 Tw +(from the concept of "creation date" used by some)Tj +T* +0 Tw +(operating systems \(e.g., Tops20\).)Tj +/TT10 1 Tf +-6.7333 -2 TD +(WRITEDATE)Tj +/TT6 1 Tf +6.7333 0 TD +0.1789 Tw +(The date and time, as a string, that the content of)Tj +/TT14 1 Tf +0 -1.2889 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1022 Tw +[( was last written to this particular file system.)]TJ +-2.4004 -1.2889 TD +0.2856 Tw +(When a file is copied, its creation date does not)Tj +0 -1.2222 TD +0.0211 Tw +(change, but its write date becomes the time at which)Tj +T* +0 Tw +(the copy is made.)Tj +/TT10 1 Tf +-6.1333 -2 TD +(READDATE)Tj +/TT6 1 Tf +6.1333 0 TD +0.1633 Tw +(The date and time, as a string, that )Tj +/TT14 1 Tf +16.8008 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1633 Tw +[( was last)]TJ +-19.2012 -1.2889 TD +0 Tw +(read, or )Tj +/TT10 1 Tf +3.6758 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( if it has never been read.)Tj +/TT10 1 Tf +-14.6094 -2.0667 TD +(ICREATIONDATE)Tj +1.8 -1.0667 TD +(IWRITEDATE)Tj +0.6 -1.0667 TD +(IREADDATE)Tj +/TT6 1 Tf +6.7333 0 TD +(The )Tj +/TT10 1 Tf +2.1905 0 TD +(CREATIONDATE)Tj +/TT6 1 Tf +7.2012 0 TD +(, )Tj +/TT10 1 Tf +0.7667 0 TD +(WRITEDATE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2667 Tw +[( and )]TJ +/TT10 1 Tf +2.7262 0 TD +0 Tw +(READDATE)Tj +/TT6 1 Tf +4.8008 0 TD +(,)Tj +-23.0862 -1.2889 TD +0.0611 Tw +(respectively, in integer form, as )Tj +/TT10 1 Tf +14.4476 0 TD +0 Tw +(IDATE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0611 Tw +[( \(Chapter 12\))]TJ +-17.4481 -1.2889 TD +0.2278 Tw +[(would return. This form is useful for comparing)]TJ +0 -1.2222 TD +0 Tw +(dates.)Tj +/TT10 1 Tf +-4.9333 -2 TD +(AUTHOR)Tj +/TT6 1 Tf +4.9333 0 TD +(The name of the user who last wrote the file.)Tj +/TT10 1 Tf +-3.7333 -2.0667 TD +(TYPE)Tj +/TT6 1 Tf +3.7333 0 TD +0.0944 Tw +(The "type" of the file, some indication of the nature)Tj +0 -1.2889 TD +0.2367 Tw +[(of the files content. The "types" of files allowed)]TJ +0 -1.2222 TD +0.0889 Tw +[(depends on the file device. Most devices recognize)]TJ +T* +0.1033 Tw +(the symbol )Tj +/TT10 1 Tf +5.3468 0 TD +0 Tw +(TEXT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1033 Tw +[( to mean that the file contains just)]TJ +-7.7472 -1.2889 TD +0.0656 Tw +(characters, or )Tj +/TT10 1 Tf +6.3108 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.0656 Tw +[( to mean that the file contains)]TJ +-9.9114 -1.2889 TD +0 Tw +(arbitrary data.)Tj +0 -2 TD +0.2289 Tw +(Some devices support a wider range of file types)Tj +0 -1.2222 TD +0.0522 Tw +(that distinguish among the various sorts of files one)Tj +T* +0.0856 Tw +[(might create whose content is "binary". All devices)]TJ +T* +0.0078 Tw +(interpret any value of )Tj +/TT10 1 Tf +9.8607 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0078 Tw +[( that they do not support)]TJ +-12.2611 -1.2889 TD +0.05 Tw +(to be )Tj +/TT10 1 Tf +2.5043 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.05 Tw +[(. Thus, )]TJ +/TT10 1 Tf +3.6217 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.05 Tw +[( may return the)]TJ +-16.3276 -1.2889 TD +0.1467 Tw +(more general value )Tj +/TT10 1 Tf +9.2129 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.1467 Tw +[( instead of the original)]TJ +-12.8135 -1.2889 TD +0.8211 Tw +(type that was passed to )Tj +/TT10 1 Tf +14.7208 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.8211 Tw +[( or)]TJ +/TT10 1 Tf +-21.3219 -1.2889 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +1.07 Tw +[(. Similarly, )]TJ +/TT10 1 Tf +8.483 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +1.07 Tw +(, while)Tj +-19.2847 -1.2889 TD +0.3056 Tw +(attempting to preserve the )Tj +/TT10 1 Tf +13.169 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3056 Tw +[( of the file it is)]TJ +-15.5694 -1.2889 TD +0.12 Tw +(copying, may turn, say, an )Tj +/TT10 1 Tf +12.5834 0 TD +0 Tw +(INTERPRESS)Tj +/TT6 1 Tf +6.001 0 TD +0.12 Tw +[( file into a)]TJ +-18.5844 -1.2889 TD +0 Tw +(mere )Tj +/TT10 1 Tf +2.4858 0 TD +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +( file.)Tj +-6.0864 -2.0667 TD +0.0867 Tw +(The way in which some file devices \(e.g., Xerox file)Tj +0 -1.2222 TD +0.2644 Tw +(servers\) support a wide range of file types is by)Tj +T* +0.7778 Tw +(representing the type as an integer, whose)Tj +T* +0.1233 Tw +[(interpretation is known by the client. The variable)]TJ +/TT10 1 Tf +T* +0 Tw +(FILING.TYPES)Tj +/TT6 1 Tf +7.2012 0 TD +0.1033 Tw +[( is used to associate symbolic types)]TJ +-7.2012 -1.2889 TD +0.2011 Tw +[(with numbers for these devices. This list initially)]TJ +0 -1.2222 TD +0.31 Tw +(contains some of the well-known assignments of)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +63 0 obj +<< +/Length 5305 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-17)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 252 569.54 Tm +0.4367 Tw +(type name to number; you can add additional)Tj +0 -1.2222 TD +0.3944 Tw +[(elements to handle any private file types. For)]TJ +T* +0.3889 Tw +(example, suppose there existed an NS file type)Tj +/TT10 1 Tf +T* +0 Tw +(MAZEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0122 Tw +[( with numeric value 5678. You could add)]TJ +-4.8008 -1.2889 TD +0.0556 Tw +(the element )Tj +/TT10 1 Tf +5.5174 0 TD +0.1333 Tw +(\(MAZEFILE 5678\))Tj +/TT6 1 Tf +9.1348 0 TD +0.0556 Tw +[( to )]TJ +/TT10 1 Tf +1.4832 0 TD +0 Tw +(FILING.TYPES)Tj +/TT6 1 Tf +-16.1353 -1.2889 TD +0.2433 Tw +(and then use )Tj +/TT10 1 Tf +6.648 0 TD +0 Tw +(MAZEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2433 Tw +[( as a value for the )]TJ +/TT10 1 Tf +9.4829 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +-20.9317 -1.2889 TD +0.1344 Tw +(attribute to )Tj +/TT10 1 Tf +5.4408 0 TD +0 Tw +(SETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.1344 Tw +[( or )]TJ +/TT10 1 Tf +1.7098 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1344 Tw +[(. Other)]TJ +-19.7526 -1.2889 TD +0.13 Tw +(devices are, of course, free to store )Tj +/TT10 1 Tf +16.3241 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.13 Tw +[( attributes)]TJ +-18.7245 -1.2889 TD +0.2856 Tw +(in whatever manner they wish, be it numeric or)Tj +0 -1.2222 TD +0.0578 Tw +(symbolic. )Tj +/TT10 1 Tf +4.8533 0 TD +0 Tw +(FILING.TYPES)Tj +/TT6 1 Tf +7.2012 0 TD +0.0578 Tw +[( is merely considered the)]TJ +-12.0545 -1.2889 TD +0 Tw +(official registry for Xerox file types.)Tj +0 -2 TD +0.1478 Tw +(For most file devices, the )Tj +/TT10 1 Tf +11.9884 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1478 Tw +[( of a newly created)]TJ +-14.3888 -1.2889 TD +0.0256 Tw +(file, if not specified in the )Tj +/TT14 1 Tf +11.5884 0 TD +0 Tw +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +0.0256 Tw +[( argument to)]TJ +/TT10 1 Tf +-17.5894 -1.2889 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +1.3378 Tw +(, defaults to the value of)Tj +/TT10 1 Tf +-6.001 -1.2889 TD +0 Tw +(DEFAULTFILETYPE)Tj +/TT6 1 Tf +9.0015 0 TD +(, initially )Tj +/TT10 1 Tf +4.1694 0 TD +(TEXT)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-15.5713 -2.0667 TD +0.9767 Tw +(The following are currently recognized as)Tj +0 -1.2222 TD +0 Tw +(temporary attributes of an open stream:)Tj +/TT10 1 Tf +-4.9333 -2 TD +(ACCESS)Tj +/TT6 1 Tf +4.9333 0 TD +0.3456 Tw +(The current access rights of the stream \(see the)Tj +0 -1.2889 TD +0.1822 Tw +[(beginning of this chapter\). Can be one of )]TJ +/TT10 1 Tf +20.0838 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +/TT10 1 Tf +-23.0843 -1.2889 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5889 0 TD +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5889 0 TD +(APPEND)Tj +/TT6 1 Tf +3.6006 0 TD +0.0889 Tw +(; or )Tj +/TT10 1 Tf +1.8687 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0889 Tw +[( if the stream is not)]TJ +-14.4483 -1.2889 TD +0 Tw +(open.)Tj +/TT10 1 Tf +-9.1333 -2 TD +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +9.1333 0 TD +0.13 Tw +(The action to be taken when a stream is at "end of)Tj +0 -1.2889 TD +0.15 Tw +(file" and an attempt is made to take input from it.)Tj +0 -1.2222 TD +0.3622 Tw +(The value of this attribute is a function of one)Tj +T* +0.0111 Tw +[(argument, the stream. The function can examine the)]TJ +T* +0.0744 Tw +(stream and its calling context and take any action it)Tj +T* +0.0856 Tw +[(wishes. If the function returns normally, its should)]TJ +T* +0.1344 Tw +(return either )Tj +/TT10 1 Tf +6.1014 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1344 Tw +(, meaning to try the input operation)Tj +-6.7015 -1.2889 TD +0.0056 Tw +(again, or the byte that )Tj +/TT10 1 Tf +9.934 0 TD +0 Tw +(BIN)Tj +/TT6 1 Tf +1.8003 0 TD +0.0056 Tw +[( would have returned had)]TJ +-11.7343 -1.2889 TD +0.3344 Tw +[(there been more bytes to read. Ordinarily, one)]TJ +0 -1.2222 TD +0.0922 Tw +(should not let the )Tj +/TT10 1 Tf +8.363 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.0922 Tw +[( function return)]TJ +-16.1643 -1.2889 TD +0.0433 Tw +(unless one is only performing binary input from the)Tj +0 -1.2222 TD +0.1122 Tw +(file, since there is no way in general of knowing in)Tj +T* +0.0689 Tw +(what state the reader was at the time the end of file)Tj +T* +0.2022 Tw +(occurred, and hence how it will interpret a single)Tj +T* +0 Tw +(byte returned to it.)Tj +0 -2 TD +0.2 Tw +(The default )Tj +/TT10 1 Tf +5.7169 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.2 Tw +[( is a system function)]TJ +-13.5182 -1.2889 TD +0.08 Tw +(that causes the error )Tj +/TT10 1 Tf +9.5251 0 TD +0.1911 Tw +(END OF FILE)Tj +/TT6 1 Tf +6.9833 0 TD +0.08 Tw +[(. The behavior)]TJ +-16.5084 -1.2889 TD +0.0467 Tw +(of that error can be further modified for a particular)Tj +0 -1.2222 TD +0.0856 Tw +(stream by using the )Tj +/TT10 1 Tf +9.3017 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0856 Tw +[( option of )]TJ +/TT10 1 Tf +4.7777 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0856 Tw +[( \(see)]TJ +-21.2805 -1.2889 TD +0 Tw +(below\).)Tj +/TT10 1 Tf +-3.1333 -2 TD +(EOL)Tj +/TT6 1 Tf +3.1333 0 TD +0.0622 Tw +[(The end-of-line convention for the stream. This can)]TJ +0 -1.2889 TD +0 Tw +(be )Tj +/TT10 1 Tf +1.5 0 TD +(CR)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.7178 0 TD +(LF)Tj +/TT6 1 Tf +1.2002 0 TD +0.2178 Tw +(, or )Tj +/TT10 1 Tf +2.1265 0 TD +0 Tw +(CRLF)Tj +/TT6 1 Tf +2.4004 0 TD +0.2178 Tw +(, indicating with what byte or)Tj +-9.145 -1.2889 TD +0.2833 Tw +(sequence of bytes the "End Of Line" character is)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +66 0 obj +<< +/Length 4207 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-18)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 300 569.54 Tm +0.0633 Tw +[(represented on the stream. On input, that sequence)]TJ +0 -1.2222 TD +0.0544 Tw +(of bytes on the stream is read as )Tj +/TT10 1 Tf +14.7984 0 TD +0.1311 Tw +(\(CHARCODE EOL\))Tj +/TT6 1 Tf +-14.7984 -1.2889 TD +0 Tw +(by )Tj +/TT10 1 Tf +1.6327 0 TD +(READCCODE)Tj +/TT6 1 Tf +5.4009 0 TD +0.2733 Tw +[( or the string reader. On output,)]TJ +/TT10 1 Tf +-7.0336 -1.2889 TD +0 Tw +(\(TERPRI\))Tj +/TT6 1 Tf +4.8008 0 TD +0.0211 Tw +[( and )]TJ +/TT10 1 Tf +2.2351 0 TD +0.0489 Tw +(\(PRINTCCODE \(CHARCODE EOL\)\))Tj +/TT6 1 Tf +-7.0359 -1.2889 TD +0.2544 Tw +(cause that sequence of bytes to be placed on the)Tj +0 -1.2222 TD +0 Tw +(stream.)Tj +0 -2 TD +0.1378 Tw +(The end of line convention is usually not apparent)Tj +0 -1.2222 TD +0.2889 Tw +[(to you. The file system is usually aware of the)]TJ +T* +0.2389 Tw +(convention used by a particular remote operating)Tj +T* +0.1722 Tw +[(system, and sets this attribute accordingly. If you)]TJ +T* +0.3667 Tw +(believe a file actually is stored with a different)Tj +T* +0.0733 Tw +(convention than the default, it is possible to modify)Tj +T* +0.1133 Tw +(the default behavior by including the )Tj +/TT10 1 Tf +17.369 0 TD +0 Tw +(EOL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1133 Tw +[( attribute)]TJ +-19.1693 -1.2889 TD +0 Tw +(in the )Tj +/TT14 1 Tf +2.7603 0 TD +(PARAMETERS)Tj +/TT6 1 Tf +6.001 0 TD +( argument to )Tj +/TT10 1 Tf +5.9463 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-26.2418 -2.0667 TD +(BUFFERS)Tj +/TT6 1 Tf +5.5333 0 TD +0.2833 Tw +(Value is the number of 512-byte buffers that the)Tj +0 -1.2889 TD +0.07 Tw +[(stream maintains at one time. This attribute is only)]TJ +0 -1.2222 TD +0.2644 Tw +(used by certain random-access devices \(currently,)Tj +T* +0.1711 Tw +(the local disk, floppy, and Leaf servers\); all others)Tj +T* +0 Tw +(ignore it.)Tj +0 -2 TD +0.4978 Tw +(Streams open to files generally maintain some)Tj +0 -1.2222 TD +0.0856 Tw +(portion of the file buffered in memory, so that each)Tj +T* +0.1944 Tw +(call to an I/O function does not require accessing)Tj +T* +0.0233 Tw +[(the actual file on disk or a file server. For files being)]TJ +T* +0.0967 Tw +(read or written sequentially, not much buffer space)Tj +T* +0.0222 Tw +(is needed, since once a byte is read or written, it will)Tj +T* +0.0756 Tw +[(never need to be seen again. In the case of random)]TJ +T* +0.0667 Tw +(access streams, buffering is more complicated, since)Tj +T* +0.3867 Tw +(a program may jump around in the file, using)Tj +/TT10 1 Tf +T* +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.1867 Tw +[( \(Chapter 25\). In this case, the more)]TJ +-6.001 -1.2889 TD +0.0322 Tw +(buffer space the stream has, the more likely it is that)Tj +0 -1.2222 TD +0.1722 Tw +(after a )Tj +/TT10 1 Tf +3.3776 0 TD +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.1722 Tw +[( to a place in the file that has)]TJ +-9.3786 -1.2889 TD +0.0967 Tw +(already been accessed, the stream still has that part)Tj +0 -1.2222 TD +0.0122 Tw +(of the file buffered and need not go out to the device)Tj +T* +0.1978 Tw +[(again. This benefit must, of course, be traded off)]TJ +T* +0.27 Tw +(against the amount of memory consumed by the)Tj +T* +0 Tw +(buffers.)Tj +/TT4 1 Tf +10 0 0 10 102 116.4 Tm +(Closing and Reopening Files)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 113.69 m +558.01 113.69 l +S +BT +/TT6 1 Tf +9 0 0 9 126 91.74 Tm +0.0889 Tw +(The function )Tj +/TT10 1 Tf +6.0586 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0889 Tw +[( permits you to associate certain operations with open streams that govern)]TJ +-11.4595 -1.2889 TD +0.1611 Tw +[(how and when the stream will be closed. You can specify that certain functions will be executed)]TJ +0 -1.2222 TD +0 Tw +(before )Tj +/TT10 1 Tf +3.1107 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[( closes the stream and/or after )]TJ +/TT10 1 Tf +14.2277 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[( closes the stream. You can make a particular)]TJ +-24.5396 -1.2889 TD +0 Tw +(stream be invisible to )Tj +/TT10 1 Tf +9.6782 0 TD +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +(, so that it will remain open across user invocations of )Tj +/TT10 1 Tf +23.9751 0 TD +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +69 0 obj +<< +/Length 6161 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-19)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\(WHENCLOSE)Tj +/TT4 1 Tf +10 0 0 10 156 568.2 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 158.7783 568.2 Tm +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROP)Tj +2.3998 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PROP)Tj +2.3997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VAL)Tj +1.8 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 310.4308 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 401.99 568.2 Tm +([NoSpread Function])Tj +/TT14 1 Tf +-30.6656 -2.1778 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1722 Tw +[( must designate an open stream other than )]TJ +/TT10 1 Tf +20.4769 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1722 Tc +( \()Tj +/TT10 1 Tf +0.7552 0 TD +0 Tc +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1722 Tw +[( defaults to the primary input)]TJ +-26.0329 -1.2889 TD +0.2844 Tw +(stream, if other than )Tj +/TT10 1 Tf +10.337 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2844 Tw +(, or primary output stream if other than )Tj +/TT10 1 Tf +20.0422 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2844 Tw +[(\). The remaining)]TJ +-31.5793 -1.2889 TD +0.1211 Tw +(arguments specify properties to be associated with the full name of )Tj +/TT14 1 Tf +31.2053 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1211 Tw +(. )Tj +/TT10 1 Tf +0.9922 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +-34.5979 -1.2889 TD +(returns the full name of )Tj +/TT14 1 Tf +10.6821 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +( as its value.)Tj +/TT10 1 Tf +-13.0825 -2.0667 TD +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +( recognizes the following property names:)Tj +/TT10 1 Tf +3.6658 -2.0667 TD +(BEFORE)Tj +/TT14 1 Tf +4.9333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2789 Tw +[( is a function that )]TJ +/TT10 1 Tf +9.3007 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.2789 Tw +[( will apply to the)]TJ +-14.7016 -1.2889 TD +0.1122 Tw +[(stream just before it is closed. This might be used,)]TJ +0 -1.2222 TD +0.0378 Tw +(for example, to copy information about the file from)Tj +T* +0.1389 Tw +(an in-core data structure to the file just before it is)Tj +T* +0 Tw +(closed.)Tj +/TT10 1 Tf +-4.3333 -2 TD +(AFTER)Tj +/TT14 1 Tf +4.3333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2789 Tw +[( is a function that )]TJ +/TT10 1 Tf +9.3007 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.2789 Tw +[( will apply to the)]TJ +-14.7016 -1.2889 TD +0.0456 Tw +[(stream just after it is closed. This capability permits)]TJ +0 -1.2222 TD +0.14 Tw +(in-core data structures that know about the stream)Tj +T* +0 Tw +(to be cleaned up when the stream is closed. )Tj +/TT10 1 Tf +-6.1333 -2 TD +(CLOSEALL)Tj +/TT14 1 Tf +6.1333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1756 Tw +[( is either )]TJ +/TT10 1 Tf +4.5438 0 TD +0 Tw +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.1756 Tw +[( or )]TJ +/TT10 1 Tf +1.792 0 TD +0 Tw +(NO )Tj +/TT6 1 Tf +2.2225 0 TD +0.1756 Tw +(and determines whether)Tj +/TT14 1 Tf +-12.1589 -1.2889 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.05 Tw +[( will be closed by )]TJ +/TT10 1 Tf +8.1431 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.05 Tc +( \()Tj +/TT10 1 Tf +0.633 0 TD +0 Tc +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +0.05 Tw +(\) or whether)Tj +/TT10 1 Tf +-17.7775 -1.2889 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.3944 Tw +[( will ignore it \()]TJ +/TT10 1 Tf +8.0841 0 TD +0 Tw +(NO)Tj +/TT6 1 Tf +1.2002 0 TD +0.3944 Tw +(\). )Tj +/TT10 1 Tf +1.8719 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.3944 Tw +[( uses)]TJ +/TT10 1 Tf +-20.7578 -1.2889 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.5033 Tw +(, so that any )Tj +/TT10 1 Tf +7.6056 0 TD +0 Tw +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.5033 Tw +[( functions will be)]TJ +-14.2067 -1.2889 TD +0.2222 Tw +[(executed if the stream is in fact closed. Files are)]TJ +0 -1.2222 TD +0 Tw +(initialized with )Tj +/TT10 1 Tf +6.9863 0 TD +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +( set to )Tj +/TT10 1 Tf +2.8511 0 TD +(YES)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-19.5718 -2.0667 TD +(EOF)Tj +/TT14 1 Tf +3.1333 0 TD +(VAL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1 Tw +[( is a function that will be applied to the stream)]TJ +-1.8003 -1.2889 TD +0.8767 Tw +(when an end-of-file error occurs, and the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(ERRORTYPELST)Tj +/TT6 1 Tf +7.2012 0 TD +0.1222 Tw +[( entry for that error, if any, returns)]TJ +/TT10 1 Tf +-7.2012 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1689 Tw +[(. The function can examine the context of the)]TJ +-1.8003 -1.2889 TD +0.17 Tw +(error, and can decide whether to close the stream,)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.3511 Tw +[( some function, or perform some other)]TJ +-4.2007 -1.2889 TD +0.6622 Tw +(computation. If the function supplied returns)Tj +0 -1.2222 TD +0.2667 Tw +(normally \(i.e., does not )Tj +/TT10 1 Tf +11.4773 0 TD +0 Tw +(RETFROM)Tj +/TT6 1 Tf +4.2007 0 TD +0.2667 Tw +[( some function\),)]TJ +-15.678 -1.2889 TD +0 Tw +(the normal error machinery will be invoked.)Tj +0 -2 TD +0.0444 Tw +(The default )Tj +/TT10 1 Tf +5.4058 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0444 Tw +[( behavior, unless overridden by this)]TJ +/TT10 1 Tf +-7.2061 -1.2889 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.7467 Tw +[( option, is to call the value of)]TJ +/TT10 1 Tf +-5.4009 -1.2889 TD +0 Tw +(DEFAULTEOFCLOSE)Tj +/TT6 1 Tf +9.0015 0 TD +( \(below\).)Tj +-9.0015 -2.0667 TD +0.9178 Tw +(For some applications, the )Tj +/TT10 1 Tf +15.5339 0 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +-15.5339 -1.2889 TD +0.4789 Tw +(attribute \(see above\) is a more useful way to)Tj +0 -1.2222 TD +1.6056 Tw +[(intercept the end-of-file error. The)]TJ +/TT10 1 Tf +T* +0 Tw +(ENDOFSTREAMOP)Tj +/TT6 1 Tf +7.8013 0 TD +0.1567 Tw +[( attribute comes into effect before)]TJ +-7.8013 -1.2889 TD +0 Tw +(the error machinery is ever activated.)Tj +0 -2 TD +(Multiple )Tj +/TT10 1 Tf +4.5126 0 TD +(AFTER)Tj +/TT6 1 Tf +3.0005 0 TD +0.4344 Tw +[( and )]TJ +/TT10 1 Tf +3.0618 0 TD +0 Tw +(BEFORE)Tj +/TT6 1 Tf +3.6006 0 TD +0.4344 Tw +[( functions may be)]TJ +-14.1754 -1.2889 TD +0.0544 Tw +(associated with a file; they are executed in sequence)Tj +0 -1.2222 TD +0.0822 Tw +(with the most recently associated function executed)Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +72 0 obj +<< +/Length 5460 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-20)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 300 569.54 Tm +0.05 Tw +[(first. The )]TJ +/TT10 1 Tf +4.5929 0 TD +0 Tw +(CLOSEALL)Tj +/TT6 1 Tf +4.8008 0 TD +0.05 Tw +[( and )]TJ +/TT10 1 Tf +2.2929 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.05 Tw +[( values, however, will)]TJ +-13.4868 -1.2889 TD +0.51 Tw +(override earlier values, so only the last value)Tj +0 -1.2222 TD +0 Tw +(specified will have an effect.)Tj +/TT10 1 Tf +-16.6667 -2.3333 TD +(DEFAULTEOFCLOSE)Tj +/TT6 1 Tf +9 0 TD +[( )-28767.8([Variable])]TJ +-6.3333 -1.8444 TD +0.0767 Tw +(Value is the name of a function that is called by default when an end of file error occurs)Tj +0 -1.2222 TD +0.0589 Tw +(and no )Tj +/TT10 1 Tf +3.4386 0 TD +0 Tw +(EOF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0589 Tw +[( option has been specified for the stream by )]TJ +/TT10 1 Tf +20.0012 0 TD +0 Tw +(WHENCLOSE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0589 Tw +[(. The initial value of)]TJ +/TT10 1 Tf +-30.6409 -1.2889 TD +0 Tw +(DEFAULTEOFCLOSE)Tj +/TT6 1 Tf +9.0015 0 TD +0.2011 Tw +[( is )]TJ +/TT10 1 Tf +1.6171 0 TD +0 Tw +(NILL)Tj +/TT6 1 Tf +2.4004 0 TD +0.2011 Tw +(, meaning take no special action \(go ahead and cause the)Tj +-13.0189 -1.2889 TD +0.1344 Tw +[(error\). Setting it to )]TJ +/TT10 1 Tf +9.2899 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.1344 Tw +[( would cause the stream to be closed before the rest of the)]TJ +-12.8905 -1.2889 TD +0 Tw +(error machinery is invoked.)Tj +/TT4 1 Tf +10 0 0 10 102 421.2 Tm +(Local Hard Disk Device)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 418.49 m +558.01 418.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 396.54 Tm +0.0844 Tw +[(Warning: This section describes the Medley functions that control the local hard disk drive available on some)]TJ +0 -1.2222 TD +0.0867 Tw +[(computers. All of these functions may not work on all computers running Medley. For more information on)]TJ +T* +0 Tw +(using the local hard disk facilities, see the users guide for your computer.)Tj +/TT6 1 Tf +0 -2.8889 TD +0.0078 Tw +(This section describes the local file system currently supported on the Xerox 1108 and 1186 computers.)Tj +0 -1.2222 TD +0.1278 Tw +[(The Xerox 1132 supports a simpler local file system. The functions below are no-ops on the Xerox)]TJ +T* +0.0167 Tw +(1132, except for )Tj +/TT10 1 Tf +7.1691 0 TD +0 Tw +(DISKPARTITION)Tj +/TT6 1 Tf +7.8013 0 TD +0.0167 Tw +[( \(which returns a disk partition number\), and )]TJ +/TT10 1 Tf +20.4146 0 TD +0 Tw +(DISKFREEPAGES)Tj +/TT6 1 Tf +7.8013 0 TD +0.0167 Tw +[(. On)]TJ +-43.1863 -1.2889 TD +0.2622 Tw +(the Xerox 1132, different numbered partitions are referenced by using devices such as )Tj +/TT10 1 Tf +41.4797 0 TD +0 Tw +({DSK1})Tj +/TT6 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-45.0803 -1.2889 TD +({DSK2})Tj +/TT6 1 Tf +3.6006 0 TD +0.0178 Tw +(, etc. )Tj +/TT10 1 Tf +2.5524 0 TD +0 Tw +({DSK})Tj +/TT6 1 Tf +3.0005 0 TD +0.0178 Tw +[( always refers to the disk partition that Interlisp is running on. The 1132 local file)]TJ +-9.1534 -1.2889 TD +0 Tw +(system does not support the use of directories.)Tj +0 -2.8889 TD +0.0678 Tw +(The hard disk used with the Xerox 1108 or 1186 may be partitioned into a number of named "logical)Tj +0 -1.2222 TD +0.0355 Tw +[(volumes." Logical volumes may be used to hold the Interlisp virtual memory file \(see Chapter 12\), or)]TJ +T* +0.1022 Tw +[(Interlisp files. For information on intializing and partitioning the hard disk, see the users guide for)]TJ +T* +0.05 Tw +[(your computer. In order to store Interlisp files on a logical volume, it is necessary to create a lisp file)]TJ +T* +0 Tw +(directory on that volume \(see )Tj +/TT10 1 Tf +13.2368 0 TD +(CREATEDSKDIRECTORY)Tj +/TT6 1 Tf +10.8018 0 TD +(, below\). )Tj +-24.0386 -2.9556 TD +0.0033 Tw +(So long as there exists a logical volume with a Lisp directory on it, files on this volume can be accessed)Tj +0 -1.2222 TD +0.0333 Tw +(by using the file device called )Tj +/TT10 1 Tf +13.5311 0 TD +0 Tw +({DSK})Tj +/TT6 1 Tf +3.0005 0 TD +0.0333 Tw +[(. Medley can be used to read, write, and otherwise interact with)]TJ +-16.5315 -1.2889 TD +0.0344 Tw +[(files on local disk disks through standard Interlisp input/output functions. All I/O functions such as)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(LOAD)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +(, etc., work with files on the local disk.)Tj +-27.7041 -2.9556 TD +0.0056 Tw +(If you do not have a logical volume with a Lisp directory on it, Interlisp emulates the )Tj +/TT10 1 Tf +37.8381 0 TD +0 Tw +({DSK})Tj +/TT6 1 Tf +3.0005 0 TD +0.0056 Tw +[( device by)]TJ +-40.8386 -1.2889 TD +0.0378 Tw +[(a core device, a file device whose backing store is entirely within the Lisp virtual memory. However,)]TJ +0 -1.2222 TD +0.1078 Tw +(this is not recommended because the core device only provides limited scratch space, and since the)Tj +T* +0.1656 Tw +(core device is contained in virtual memory, it \(and the files stored on it\) will be erased when the)Tj +T* +0 Tw +(virtual memory file is reloaded.)Tj +0 -2.8889 TD +0.0989 Tw +(Each logical volume with a Lisp directory on it serves as a directory of the device )Tj +/TT10 1 Tf +37.6198 0 TD +0 Tw +({DSK})Tj +/TT6 1 Tf +3.0005 0 TD +0.0989 Tw +[(. Files are)]TJ +-40.6203 -1.2889 TD +0 Tw +(referred to by forms such as)Tj +ET +endstream +endobj +73 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +75 0 obj +<< +/Length 5879 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-21)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT10 1 Tf +9 0 0 9 144 570.14 Tm +({DSK}<)Tj +/TT14 1 Tf +3.6006 0 TD +(VOLUMENAME)Tj +/TT10 1 Tf +6.001 0 TD +(>)Tj +/TT14 1 Tf +0.6001 0 TD +(FILENAME)Tj +/TT6 1 Tf +-17.535 -2.9556 TD +1.4367 Tw +(Thus, the file )Tj +/TT10 1 Tf +10.3129 0 TD +0 Tw +(INIT.LISP)Tj +/TT6 1 Tf +5.4009 0 TD +1.4367 Tw +[( on the volume )]TJ +/TT10 1 Tf +12.6285 0 TD +0 Tw +(LISPFILES)Tj +/TT6 1 Tf +5.4009 0 TD +1.4367 Tw +[( would be called)]TJ +/TT10 1 Tf +-33.7432 -1.2889 TD +0 Tw +({DSK}INIT.LISP)Tj +/TT6 1 Tf +15.0024 0 TD +(. )Tj +-15.0024 -2.9556 TD +0.1078 Tw +(Subdirectories within a logical volume are supported, using the > character in file names to delimit)Tj +0 -1.2222 TD +0.5833 Tw +[(subdirectory names. For example, the file name )]TJ +/TT10 1 Tf +26.1286 0 TD +0 Tw +({DSK}DOC>DESIGN.TEDIT)Tj +/TT6 1 Tf +-26.1286 -1.2889 TD +(designates the file names )Tj +/TT10 1 Tf +11.3208 0 TD +(DESIGN.TEDIT)Tj +/TT6 1 Tf +7.2012 0 TD +( on the subdirectory )Tj +/TT10 1 Tf +9.1382 0 TD +(DOC)Tj +/TT6 1 Tf +1.8003 0 TD +( on the logical volume )Tj +/TT10 1 Tf +10.0508 0 TD +(LISPFILES)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-44.9121 -2.9556 TD +0.03 Tw +(If a logical volume name is not specified, it defaults in an unusual but simple way: the logical volume)Tj +0 -1.2222 TD +0.1278 Tw +(defaults to the next logical volume that has a lisp file directory on it including or after the volume)Tj +T* +0.24 Tw +[(containing the currently running virtual memory. For example, if the local disk has the logical)]TJ +T* +0 Tw +(volumes )Tj +/TT10 1 Tf +4.1305 0 TD +(LISP)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.59 0 TD +(TEMP)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +(, and )Tj +/TT10 1 Tf +2.6229 0 TD +0 Tw +(LISPFILES)Tj +/TT6 1 Tf +5.4009 0 TD +0.09 Tw +(, the )Tj +/TT10 1 Tf +2.3172 0 TD +0 Tw +(LISP)Tj +/TT6 1 Tf +2.4004 0 TD +0.09 Tw +[( volume contains the running virtual memory, and)]TJ +-22.2627 -1.2889 TD +0.27 Tw +(only the )Tj +/TT10 1 Tf +4.4023 0 TD +0 Tw +(LISP)Tj +/TT6 1 Tf +2.4004 0 TD +0.27 Tw +[( volume has a Lisp file directory on it, then )]TJ +/TT10 1 Tf +21.9007 0 TD +0 Tw +({DSK}INIT.LISP)Tj +/TT6 1 Tf +8.4014 0 TD +0.27 Tw +[( refers to the file)]TJ +/TT10 1 Tf +-37.1048 -1.2889 TD +0 Tw +({DSK}INIT.LISP)Tj +/TT6 1 Tf +15.0024 0 TD +0.0633 Tw +[(. All the functions below default logical volume names in a similar)]TJ +-15.0024 -1.2889 TD +0.1967 Tw +(way, except for those such as )Tj +/TT10 1 Tf +14.2728 0 TD +0 Tw +(CREATEDSKDIRECTORY)Tj +/TT6 1 Tf +10.8018 0 TD +0.1967 Tw +[(. To determine the current default lisp file)]TJ +-25.0745 -1.2889 TD +0 Tw +(directory, evaluate )Tj +/TT10 1 Tf +8.5361 0 TD +(\(DIRECTORYNAME {DSK}\))Tj +/TT6 1 Tf +13.2022 0 TD +(.)Tj +/TT10 1 Tf +-19.0716 -2.5489 TD +(\(CREATEDSKDIRECTORY)Tj +/TT4 1 Tf +10 0 0 10 204.6 353.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.3783 353.8 Tm +(VOLUMENAME)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 266.788 353.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 353.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0478 Tw +(Creates a Lisp file directory on the logical volume )Tj +/TT14 1 Tf +22.6566 0 TD +0 Tw +(VOLUMENAME)Tj +/TT6 1 Tf +6.001 0 TD +0.0478 Tw +(, and returns the name of)Tj +-28.6575 -1.2889 TD +0.0778 Tw +[(the directory created. It is only necessary to create a Lisp file directory the first time the)]TJ +0 -1.2222 TD +0.0622 Tw +[(logical volume is used. After that, the system automatically recognizes and opens access)]TJ +T* +0 Tw +(to the logical volumes that have Lisp file directories on them.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(PURGEDSKDIRECTORY)Tj +/TT4 1 Tf +10 0 0 10 199.2 281.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 201.9783 281.26 Tm +(VOLUMENAME)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 261.388 281.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 281.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Erases all Lisp files on the volume )Tj +/TT14 1 Tf +15.291 0 TD +(VOLUMENAME)Tj +/TT6 1 Tf +6.001 0 TD +(, and deletes the Lisp file directory.)Tj +/TT10 1 Tf +-23.9587 -2.5489 TD +(\(LISPDIRECTORYP)Tj +/TT4 1 Tf +10 0 0 10 183 241.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.7783 241.72 Tm +(VOLUMENAME)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 245.188 241.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 241.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.7271 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if the logical volume )Tj +/TT8 1 Tf +9.5469 0 TD +(VOLUMENAME)Tj +/TT6 1 Tf +7.4434 0 TD +( has a lisp file directory on it.)Tj +/TT10 1 Tf +-23.9841 -2.5489 TD +-0.0001 Tc +(\(VOLUMES\) )Tj +/TT12 1 Tf +10 0 0 10 156.0017 202.18 Tm +0 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 202.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1056 Tw +(Returns a list of the names of all of the logical volumes on the local hard disk \(whether)Tj +0 -1.2222 TD +0 Tw +(they have lisp file directories or not\).)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(VOLUMESIZE)Tj +/TT6 1 Tf +6.6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VOLUMENAME)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 223.0596 152.24 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 152.24 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns the total size of the logical volume )Tj +/TT14 1 Tf +19.0991 0 TD +(VOLUMENAME)Tj +/TT6 1 Tf +6.001 0 TD +( in disk pages.)Tj +/TT10 1 Tf +-27.7668 -2.5489 TD +(\(DISKFREEPAGES)Tj +/TT4 1 Tf +10 0 0 10 177.6 112.7 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 180.3783 112.7 Tm +(VOLUMENAME)Tj +/TT10 1 Tf +6.001 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 239.788 112.7 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 112.7 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns the total number of free disk pages left on the logical volume )Tj +/TT14 1 Tf +30.8355 0 TD +(VOLUMENAME)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-39.5031 -2.4 TD +-0.0001 Tc +0.0001 Tw +(\(DISKPARTITION\) )Tj +/TT6 1 Tf +38.07 0 TD +0 Tc +0 Tw +([Function])Tj +-35.4033 -1.8444 TD +0.0189 Tw +(Returns the name of the logical volume containing the virtual memory file that Interlisp is)Tj +0 -1.2222 TD +0 Tw +(currently running in \(see Chapter 12\).)Tj +ET +endstream +endobj +76 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +79 0 obj +<< +/Length 5917 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-22)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\(DSKDISPLAY)Tj +/TT6 1 Tf +6.6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NEWSTATE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 260.2579 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1556 Tw +(Controls a display window that displays information about the logical volumes on the)Tj +0 -1.2222 TD +0.1878 Tw +(local hard disk \(logical volume names, sizes, free pages, etc.\). )Tj +/TT10 1 Tf +29.5392 0 TD +0 Tw +(DSKDISPLAY)Tj +/TT6 1 Tf +6.001 0 TD +0.1878 Tw +[( opens or)]TJ +-35.5402 -1.2889 TD +0.1867 Tw +(closes this display window depending on the value of )Tj +/TT14 1 Tf +25.7562 0 TD +0 Tw +(NEWSTATE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1867 Tw +[( \(one of )]TJ +/TT10 1 Tf +4.1288 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6867 0 TD +(OFF)Tj +/TT6 1 Tf +1.8003 0 TD +0.1867 Tw +(, or)Tj +/TT10 1 Tf +-38.373 -1.2889 TD +0 Tw +(CLOSED)Tj +/TT6 1 Tf +3.6006 0 TD +(\), and returns the previous state of the display window.)Tj +-3.6006 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.2033 0 TD +(NEWSTATE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2833 Tw +[( is )]TJ +/TT10 1 Tf +1.7815 0 TD +0 Tw +(ON)Tj +/TT6 1 Tf +1.2002 0 TD +0.2833 Tw +(, the display window is opened, and it is automatically updated)Tj +-8.9857 -1.2889 TD +0.19 Tw +[(whenever the file system state changes \(this can slow file operations significantly\). If)]TJ +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(NEWSTATE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0722 Tw +[( is )]TJ +/TT10 1 Tf +1.3593 0 TD +0 Tw +(OFF)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +[(, the display window is opened, but it is not automatically updated. If)]TJ +/TT14 1 Tf +-7.9604 -1.2889 TD +0 Tw +(NEWSTATE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0711 Tw +[( is )]TJ +/TT10 1 Tf +1.3571 0 TD +0 Tw +(CLOSED)Tj +/TT6 1 Tf +3.6006 0 TD +0.0711 Tw +[(, the display window is closed. The display mode is initially set to)]TJ +/TT10 1 Tf +-9.7584 -1.2889 TD +0 Tw +(CLOSED)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-3.6006 -2.0667 TD +0.0889 Tw +(Once the display window is open, you can update it or change its state with the mouse.)Tj +0 -1.2222 TD +0.0833 Tw +(Left-buttoning the display window updates it, and middle-buttoning the window brings)Tj +T* +0 Tw +(up a menu that allows you to change the display state.)Tj +2.6667 -2 TD +(Note:)Tj +/TT10 1 Tf +3.3333 0 TD +(DSKDISPLAY)Tj +/TT6 1 Tf +6.001 0 TD +0.0844 Tw +[( uses the value of the variable )]TJ +/TT10 1 Tf +13.9363 0 TD +0 Tw +(DSKDISPLAY.POSITION)Tj +/TT6 1 Tf +-19.9373 -1.2889 TD +0.1622 Tw +(for the position of the lower-left corner of the disk display window)Tj +0 -1.2222 TD +0.3211 Tw +[(when it is opened. This variable is changed if the disk display)]TJ +T* +0 Tw +(window is moved.)Tj +/TT10 1 Tf +-8.6667 -2.4822 TD +(\(SCAVENGEDSKDIRECTORY)Tj +/TT6 1 Tf +12.6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(VOLUMENAME)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SILENT)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 359.7149 338.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 338.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2067 Tw +(Rebuilds the lisp file directory for the logical volume )Tj +/TT14 1 Tf +25.4079 0 TD +0 Tw +(VOLUMENAME)Tj +/TT6 1 Tf +6.001 0 TD +0.2067 Tw +[(. This may repair)]TJ +-31.4088 -1.2889 TD +0.0256 Tw +(damage in the unlikely event of file system failure, signified by symptoms such as infinite)Tj +0 -1.2222 TD +0.1111 Tw +[(looping or other strange behavior while the system is doing a directory search. Calling)]TJ +/TT10 1 Tf +T* +0 Tw +(SCAVENGEDSKDIRECTORY)Tj +/TT6 1 Tf +12.002 0 TD +( will not harm an intact volume.)Tj +-12.002 -2.0667 TD +(Normally, )Tj +/TT10 1 Tf +4.8019 0 TD +(SCAVENGEDSKDIRECTORY)Tj +/TT6 1 Tf +12.002 0 TD +0.0089 Tw +[( prints out messages as it scavenges the directory. If)]TJ +/TT14 1 Tf +-16.8038 -1.2889 TD +0 Tw +(SILENT)Tj +/TT6 1 Tf +3.6006 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, these messages are not printed.)Tj +-5.992 -2.0667 TD +0.0911 Tw +[(Note:)-901.2(Some low-level disk failures may cause ")]TJ +/TT10 1 Tf +21.879 0 TD +0.2189 Tw +(HARD DISK ERROR)Tj +/TT6 1 Tf +9.4392 0 TD +0.0911 Tw +(" errors)Tj +-27.9849 -1.2889 TD +0.2367 Tw +[(to occur. To fix such a failure, it may be necessary to log out of)]TJ +0 -1.2222 TD +0.2022 Tw +(Interlisp, scavenge the logical volume in question using Pilot tools,)Tj +T* +(and then call )Tj +/TT10 1 Tf +6.5447 0 TD +0 Tw +(SCAVENGEDSKDIRECTORY)Tj +/TT6 1 Tf +12.002 0 TD +0.2022 Tw +[( from within Interlisp. See)]TJ +-18.5466 -1.2889 TD +0 Tw +(the users guide for your computer for more information. )Tj +/TT4 1 Tf +10 0 0 10 102 151.92 Tm +(Floppy Disk Device)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 149.21 m +558.01 149.21 l +S +BT +/TT8 1 Tf +9 0 0 9 126 127.26 Tm +0.1789 Tw +[(Warning: This section describes the Medley functions that control the floppy disk drive available on some)]TJ +0 -1.2222 TD +0.0867 Tw +[(computers. All of these functions may not work on all computers running Medley. For more information on)]TJ +T* +0 Tw +(using the floppy disk facilities, see the users guide for your computer.)Tj +/TT6 1 Tf +0 -2.8889 TD +0.0656 Tw +(The floppy disk drive is accessed through the device )Tj +/TT10 1 Tf +24.0299 0 TD +0 Tw +({FLOPPY})Tj +/TT6 1 Tf +4.8008 0 TD +0.0656 Tw +[(. Medley can be used to read, write,)]TJ +-28.8307 -1.2889 TD +0.0889 Tw +(and otherwise interact with files on floppy disks through standard Interlisp input/output functions.)Tj +0 -1.2222 TD +0.1133 Tw +(All I/O functions such as )Tj +/TT10 1 Tf +12.013 0 TD +0 Tw +(LOAD)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6133 0 TD +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.6133 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6133 0 TD +(PRINT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6133 0 TD +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.6133 0 TD +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1133 Tw +(, etc., work)Tj +-40.2837 -1.2889 TD +0 Tw +(with files on floppies.)Tj +ET +endstream +endobj +80 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +82 0 obj +<< +/Length 4142 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-23)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0578 Tw +[(Note that floppy disks are a removable storage medium. Therefore, it is only meaningful to perform)]TJ +0 -1.2222 TD +0.0355 Tw +[(I/O operations to the floppy disk drive, rather than to a given floppy disk. In this section, the phrase)]TJ +T* +0 Tw +("the floppy" is used to mean "the floppy that is currently in the floppy disk drive.")Tj +0 -2.8889 TD +0.2144 Tw +(For example, the following sequence could be used to open a file )Tj +/TT10 1 Tf +31.3941 0 TD +0 Tw +(XXX.TXT)Tj +/TT6 1 Tf +4.2007 0 TD +0.2144 Tw +[( on the floppy, print)]TJ +-35.5948 -1.2889 TD +0 Tw +("Hello" on it, and close it:)Tj +/TT10 1 Tf +7.3333 -2.8222 TD +(\(SETQ XXX \(OPENSTREAM {FLOPPY}XXX.TXT OUTPUT NEW\))Tj +2 -1.2222 TD +(\(PRINT "Hello" XXX\))Tj +T* +(\(CLOSEF XXX\))Tj +-6.6667 -2.5489 TD +(\(FLOPPY.MODE)Tj +/TT6 1 Tf +7.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MODE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 196.0544 439.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 439.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.19 Tw +(Medley can currently read and write files on floppies stored in a number of different)Tj +0 -1.2222 TD +0.2067 Tw +[(formats. At any point, the floppy is considered to be in one of four "modes," which)]TJ +T* +0.1456 Tw +(determines how it reads and writes files on the floppy. )Tj +/TT10 1 Tf +26.2408 0 TD +0 Tw +(FLOPPY.MODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.1456 Tw +[( sets the floppy)]TJ +-32.8418 -1.2889 TD +0.0667 Tw +(mode to the value of )Tj +/TT14 1 Tf +9.6781 0 TD +0 Tw +(MODE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0667 Tw +(, one of )Tj +/TT10 1 Tf +3.6858 0 TD +0 Tw +(PILOT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5667 0 TD +(HUGEPILOT)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5667 0 TD +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0667 Tw +(, or )Tj +/TT10 1 Tf +1.8242 0 TD +0 Tw +(CPM)Tj +/TT6 1 Tf +1.8003 0 TD +0.0667 Tw +(, and returns the)Tj +-32.5241 -1.2889 TD +0 Tw +(previous floppy mode. The floppy modes are interpreted as follows:)Tj +/TT10 1 Tf +9.6667 -2.1489 TD +(PILOT)Tj +/TT6 1 Tf +4.3333 0 TD +0.1911 Tw +(This is the normal floppy mode, using floppies in)Tj +0 -1.2889 TD +0.0778 Tw +[(the Xerox Pilot floppy disk format. This file format)]TJ +0 -1.2222 TD +0.3033 Tw +(allows all of the normal Medley I/O operations.)Tj +T* +0.1144 Tw +(This format also supports file names with arbitrary)Tj +T* +0.1222 Tw +[(levels of subdirectories. For example, it is possible)]TJ +T* +3.4722 Tw +(to create a file named)Tj +/TT10 1 Tf +T* +0 Tw +({FLOPPY}Project>FOO.TXT)Tj +/TT6 1 Tf +17.4028 0 TD +(. )Tj +/TT10 1 Tf +-24.1362 -2.0667 TD +(HUGEPILOT)Tj +/TT6 1 Tf +6.7333 0 TD +0.2644 Tw +(This floppy mode is used to access files that are)Tj +0 -1.2889 TD +0.4289 Tw +(larger than a single floppy, stored on multiple)Tj +0 -1.2222 TD +0.3 Tw +[(floppies. There are some restrictions with using)]TJ +T* +0.6967 Tw +[("huge" files. Some I/O operations are not)]TJ +T* +0.3822 Tw +[(meaningful for "huge" files. When a stream is)]TJ +T* +0.2711 Tw +(created for output in this mode, the )Tj +/TT10 1 Tf +17.8128 0 TD +0 Tw +(LENGTH)Tj +/TT6 1 Tf +3.6006 0 TD +0.2711 Tw +[( file)]TJ +-21.4134 -1.2889 TD +0.0989 Tw +(attribute must be specified when the file is opened,)Tj +0 -1.2222 TD +0.3511 Tw +(so that it is known how many floppies will be)Tj +T* +0.1056 Tw +[(needed. When an output file is created, the floppy)]TJ +T* +0.9789 Tw +(\(or floppies\) are automatically erased and)Tj +T* +0 Tw +(reformatted \(after confirmation from you\).)Tj +/TT10 1 Tf +0 -2 TD +(HUGEPILOT)Tj +/TT6 1 Tf +5.4009 0 TD +0.06 Tw +[( mode is primarily useful for saving big)]TJ +-5.4009 -1.2889 TD +0.5122 Tw +[(files to and from floppies. For example, the)]TJ +0 -1.2222 TD +0.8389 Tw +(following could be used to copy the file)Tj +/TT10 1 Tf +T* +0 Tw +({ERIS}Bigfile.txt )Tj +/TT6 1 Tf +14.6335 0 TD +0.0967 Tw +(onto the huge Pilot)Tj +-14.6335 -1.2889 TD +0 Tw +(file )Tj +/TT10 1 Tf +1.644 0 TD +({FLOPPY}BigFile.save)Tj +/TT6 1 Tf +12.002 0 TD +(:)Tj +/TT10 1 Tf +-11.646 -2 TD +(\(FLOPPY.MODE HUGEPILOT\))Tj +-2 -2 TD +2.9333 Tw +(\(COPYFILE {ERIS}Bigfile.txt)Tj +0 -1.2222 TD +0 Tw +({FLOPPY}BigFile.save\))Tj +ET +endstream +endobj +83 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +85 0 obj +<< +/Length 3985 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-24)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 300 569.54 Tm +(and the following would restore the file:)Tj +/TT10 1 Tf +0 -1.9333 TD +(\(FLOPPY.MODE HUGEPILOT\))Tj +0 -2 TD +4.7333 Tw +(\(COPYFILE {FLOPPY}BigFile.save)Tj +0 -1.2222 TD +0 Tw +({ERIS}Bigfile.txt\))Tj +/TT6 1 Tf +0 -2.0667 TD +0.6811 Tw +(During each copying operation, you will be)Tj +0 -1.2222 TD +1.0733 Tw +(prompted to insert "the next floppy" if)Tj +/TT10 1 Tf +T* +0 Tw +({ERIS}Bigfile.txt )Tj +/TT6 1 Tf +16.2612 0 TD +0.7744 Tw +(takes multiple)Tj +-16.2612 -1.2889 TD +0 Tw +(floppies.)Tj +/TT10 1 Tf +-4.9333 -2 TD +(SYSOUT)Tj +/TT6 1 Tf +4.9333 0 TD +0.0589 Tw +(Similar to )Tj +/TT10 1 Tf +4.6656 0 TD +0 Tw +(HUGEPILOT)Tj +/TT6 1 Tf +5.4009 0 TD +0.0589 Tw +[( mode, )]TJ +/TT10 1 Tf +3.3863 0 TD +0 Tw +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0589 Tw +[( mode is used)]TJ +-17.0534 -1.2889 TD +0.3344 Tw +(for storing sysout files \(Chapter 12\) on multiple)Tj +0 -1.2222 TD +0.3689 Tw +[(floppy disks. You are prompted to insert new)]TJ +T* +0 Tw +(floppies as they are needed.)Tj +0 -2 TD +0.3044 Tw +(This mode is set automatically when )Tj +/TT10 1 Tf +18.2329 0 TD +0 Tw +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.3044 Tw +[( or)]TJ +/TT10 1 Tf +-21.8335 -1.2889 TD +0 Tw +(MAKESYS)Tj +/TT6 1 Tf +4.2007 0 TD +0.2122 Tw +[( is done to the floppy device: )]TJ +/TT10 1 Tf +14.9366 0 TD +0 Tw +(\(SYSOUT)Tj +-19.1372 -1.2889 TD +({FLOPPY}\))Tj +/TT6 1 Tf +6.001 0 TD +0.1289 Tw +[( or )]TJ +/TT10 1 Tf +1.6987 0 TD +0.31 Tw +(\(MAKESYS {FLOPPY}\))Tj +/TT6 1 Tf +11.7119 0 TD +0.1289 Tw +[(. Notice)]TJ +-19.4115 -1.2889 TD +0.1767 Tw +(that the file name does not need to be specifed in)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.2856 Tw +[( mode; unlike )]TJ +/TT10 1 Tf +7.1775 0 TD +0 Tw +(HUGEPILOT)Tj +/TT6 1 Tf +5.4009 0 TD +0.2856 Tw +[( mode, the file)]TJ +-16.1789 -1.2889 TD +0 Tw +(name )Tj +/TT10 1 Tf +2.6938 0 TD +(Lisp.sysout)Tj +/TT6 1 Tf +6.6011 0 TD +( is always used.)Tj +-9.2949 -2.0667 TD +0.1456 Tw +[(Note: The procedure for loading sysout files from)]TJ +0 -1.2222 TD +0.1467 Tw +(floppies depends on the particular computer being)Tj +T* +0.1044 Tw +[(used. For information on loading sysout files from)]TJ +T* +0 Tw +(floppies, see the users guide for your computer.)Tj +0 -2 TD +0.3656 Tw +(Explicitly setting the mode to )Tj +/TT10 1 Tf +15.0583 0 TD +0 Tw +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.3656 Tw +[( is useful)]TJ +-18.6588 -1.2889 TD +0.0722 Tw +[(when copying a sysout file to or from floppies. For)]TJ +0 -1.2222 TD +0.3244 Tw +(example, the following can be used to copy the)Tj +T* +0.8367 Tw +(sysout file )Tj +/TT10 1 Tf +6.4463 0 TD +0 Tw +({ERIS}Lisp.sysout)Tj +/TT6 1 Tf +13.8023 0 TD +0.8367 Tw +[( onto)]TJ +-20.2485 -1.2889 TD +0.0456 Tw +(floppies \(it is important to set the floppy mode back)Tj +0 -1.2222 TD +0 Tw +(when done\):)Tj +/TT10 1 Tf +0 -1.9333 TD +(\(FLOPPY.MODE SYSOUT\))Tj +0 -1.2222 TD +2.9333 Tw +(\(COPYFILE {ERIS}Lisp.sysout)Tj +T* +0 Tw +({FLOPPY}\))Tj +T* +(\(FLOPPY.MODE PILOT\))Tj +-3.1333 -2.0667 TD +(CPM)Tj +/TT6 1 Tf +3.1333 0 TD +0.5167 Tw +(Medley supports the single-density single-sided)Tj +0 -1.2889 TD +0.3411 Tw +(\(SDSS\) CPM floppy format \(a standard used by)Tj +0 -1.2222 TD +0.4689 Tw +[(many computers\). CPM-formatted floppies are)]TJ +T* +0.1889 Tw +(totally different than Pilot floppies, so you should)Tj +T* +0 Tw +(call )Tj +/TT10 1 Tf +2.0637 0 TD +(FLOPPY.MODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.2878 Tw +[( to switch to )]TJ +/TT10 1 Tf +6.7961 0 TD +0 Tw +(CPM)Tj +/TT6 1 Tf +1.8003 0 TD +0.2878 Tw +[( mode when)]TJ +-17.2612 -1.2889 TD +0.1722 Tw +[(planning to use CPM floppies. After switching to)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CPM)Tj +/TT6 1 Tf +1.8003 0 TD +0.1489 Tw +[( mode, )]TJ +/TT10 1 Tf +3.5663 0 TD +0 Tw +(FLOPPY.FORMAT)Tj +/TT6 1 Tf +7.8013 0 TD +0.1489 Tw +[( can be used to create)]TJ +-13.1679 -1.2889 TD +1.5056 Tw +(CPM-formatted floppies, and the usual)Tj +0 -1.2222 TD +0.3656 Tw +(input/output operations work with CPM floppy)Tj +T* +0 Tw +(files.)Tj +ET +endstream +endobj +86 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +88 0 obj +<< +/Length 5630 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-25)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 252 569.54 Tm +0.1689 Tw +[(Note: There are a few limitations on CPM floppy)]TJ +0 -1.2222 TD +0.0444 Tw +[(format files: \(1\) CPM file names are limited to eight)]TJ +T* +0.3733 Tw +(or fewer characters, with extensions of three or)Tj +T* +0.2933 Tw +[(fewer characters; \(2\) CPM floppies do not have)]TJ +T* +0.2244 Tw +(directories or version numbers; and \(3\) CPM files)Tj +T* +0.0633 Tw +(are padded out with blanks to make the file lengths)Tj +T* +0 Tw +(multiples of 128.)Tj +/TT10 1 Tf +-16.6667 -2.4822 TD +(\(FLOPPY.FORMAT)Tj +/TT4 1 Tf +10 0 0 10 177.6 481.2 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 180.3783 481.2 Tm +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(AUTOCONFIRMFLG)Tj +/TT8 1 Tf +8.4014 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(SLOWFLG)Tj +/TT10 1 Tf +4.2007 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 325.3011 481.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 481.2 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(FLOPPY.FORMAT)Tj +/TT6 1 Tf +7.8013 0 TD +0.0433 Tw +[( erases and initializes the track information on a floppy disk. This must)]TJ +-7.8013 -1.2889 TD +[(be done when new floppy disks are to be used for the first time. This can also be used to)]TJ +0 -1.2222 TD +0 Tw +(erase the information on used floppy disks.)Tj +/TT14 1 Tf +0 -2 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0389 Tw +[( should be a string that is used as the name of the floppy \(106 characters max\). This)]TJ +-2.4004 -1.2889 TD +0 Tw +(name can be read and set using )Tj +/TT10 1 Tf +14.1147 0 TD +(FLOPPY.NAME)Tj +/TT6 1 Tf +6.6011 0 TD +( \(below\).)Tj +-20.7158 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.091 0 TD +(AUTOCONFIRMFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.1711 Tw +[( is )]TJ +/TT10 1 Tf +1.5571 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1711 Tw +(, you will be prompted to confirm erasing the floppy, if it)Tj +-12.8498 -1.2889 TD +0.0422 Tw +[(appears to contain valid information. If )]TJ +/TT14 1 Tf +18.1413 0 TD +0 Tw +(AUTOCONFIRMFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.0422 Tw +[( is )]TJ +/TT10 1 Tf +1.2993 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0422 Tw +(, you are not prompted to)Tj +-28.442 -1.2889 TD +0 Tw +(confirm.)Tj +0 -2 TD +(If )Tj +/TT8 1 Tf +0.9488 0 TD +(SLOWFLG)Tj +/TT6 1 Tf +4.6685 0 TD +0.0289 Tw +[( is )]TJ +/TT10 1 Tf +1.2726 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0289 Tw +(, only the Pilot records needed to give your floppy an empty directory)Tj +-8.6902 -1.2889 TD +0.0722 Tw +[(are written. If )]TJ +/TT14 1 Tf +6.8162 0 TD +0 Tw +(SLOWFLG)Tj +/TT6 1 Tf +4.2007 0 TD +0.0722 Tw +[( is )]TJ +/TT10 1 Tf +1.3593 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5722 0 TD +(FLOPPY.FORMAT)Tj +/TT6 1 Tf +7.8013 0 TD +0.0722 Tw +[( will completely erase the floppy, writing)]TJ +-21.3498 -1.2889 TD +0.2178 Tw +(track information and critical Pilot records on it. )Tj +/TT14 1 Tf +23.7276 0 TD +0 Tw +(SLOWFLG)Tj +/TT6 1 Tf +4.2007 0 TD +0.2178 Tw +[( should be set to )]TJ +/TT10 1 Tf +8.5288 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.2178 Tw +[( when)]TJ +-37.0572 -1.2889 TD +0 Tw +(formatting a brand-new floppy.)Tj +2.6667 -2 TD +0.0344 Tw +[(Note:)-901.2(Formatting a floppy is a very compute-intensive operation for the I/O)]TJ +3.3333 -1.2222 TD +0.2033 Tw +[(hardware. Therefore, the cursor may stop tracking the mouse and)]TJ +T* +0.0511 Tw +[(keystrokes may be lost while formatting a floppy. This behavior goes)]TJ +T* +0 Tw +(away when the formatting is finished.)Tj +-6 -2 TD +0.1022 Tw +[(Warning: The floppy mode set by )]TJ +/TT10 1 Tf +16.0808 0 TD +0 Tw +(FLOPPY.MODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.1022 Tw +[( \(above\) affects how )]TJ +/TT10 1 Tf +9.5188 0 TD +0 Tw +(FLOPPY.FORMAT)Tj +/TT6 1 Tf +-32.2006 -1.2889 TD +0.0267 Tw +[(formats the floppy. If the floppy is going to be used in Pilot mode, it should be formatted)]TJ +0 -1.2222 TD +0 Tw +(under )Tj +/TT10 1 Tf +3.1344 0 TD +0.5156 Tw +(\(FLOPPY.MODE PILOT\))Tj +/TT6 1 Tf +12.5175 0 TD +0.2144 Tw +[(. If it is to be used as a CMP floppy, it should be)]TJ +-15.6519 -1.2889 TD +0 Tw +(formatted under )Tj +/TT10 1 Tf +7.5688 0 TD +(\(FLOPPY.MODE CPM\))Tj +/TT6 1 Tf +10.8018 0 TD +(. The two types of formatting are incompatible.)Tj +/TT10 1 Tf +-21.0373 -2.5489 TD +(\(FLOPPY.NAME)Tj +/TT4 1 Tf +10 0 0 10 166.8 191.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 169.5783 191.66 Tm +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 196.5827 191.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 191.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9788 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0589 Tw +[( is NIL, returns the name stored on the floppy disk. If )]TJ +/TT14 1 Tf +24.8202 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.0589 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3756 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0589 Tw +(, then the)Tj +-35.7757 -1.2889 TD +0 Tw +(name of the floppy disk is set to )Tj +/TT14 1 Tf +14.3359 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-19.403 -2.5489 TD +-0.0001 Tc +(\(FLOPPY.FREE.PAGES\))Tj +/TT6 1 Tf +11.4001 0 TD +0 Tc +( )Tj +/TT12 1 Tf +10 0 0 10 206.8509 140.52 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 140.52 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns the number of unallocated free pages on the floppy disk in the floppy disk drive.)Tj +2.6667 -2 TD +0.2256 Tw +[(Note:)-901.2(Pilot floppy files are represented by contiguous pages on a floppy)]TJ +3.3333 -1.2222 TD +0.13 Tw +[(disk. If you are creating and deleting a lot of files on a floppy, it is)]TJ +T* +0 Tw +(advisable to keep such a floppy less than 75 percent full.)Tj +/TT10 1 Tf +-8.6667 -2.3333 TD +-0.0001 Tc +0.0001 Tw +(\(FLOPPY.CAN.READP\) )Tj +/TT6 1 Tf +38.07 0 TD +0 Tc +0 Tw +([Function])Tj +-35.4033 -1.8444 TD +(Returns non-NIL if there is a floppy in the floppy drive.)Tj +ET +endstream +endobj +89 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +91 0 obj +<< +/Length 5212 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-26)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 198 569.54 Tm +(Note:)Tj +/TT10 1 Tf +3.3333 0 TD +(FLOPPY.CAN.READP)Tj +/TT6 1 Tf +9.6016 0 TD +0.2467 Tw +[( does not provide any debouncing \(protection)]TJ +-9.6016 -1.2889 TD +0.0178 Tw +[(against not fully closing the floppy drive door\). It may be more useful)]TJ +0 -1.2222 TD +0 Tw +(to use )Tj +/TT10 1 Tf +2.8779 0 TD +(FLOPPY.WAIT.FOR.FLOPPY)Tj +/TT6 1 Tf +13.2022 0 TD +( \(below\).)Tj +/TT10 1 Tf +-24.7467 -2.4 TD +-0.0001 Tc +0.0001 Tw +(\(FLOPPY.CAN.WRITEP\) )Tj +/TT6 1 Tf +38.07 0 TD +0 Tc +0 Tw +([Function])Tj +-35.4033 -1.8444 TD +0.0333 Tw +(Returns non-NIL if there is a floppy in the floppy drive and the floppy drive can write on)Tj +0 -1.2222 TD +0 Tw +(this floppy.)Tj +0 -2 TD +0.0211 Tw +(It is not possible to write on a floppy disk if the "write-protect notch" on the floppy disk is)Tj +0 -1.2222 TD +0 Tw +(punched out.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(FLOPPY.WAIT.FOR.FLOPPY)Tj +/TT6 1 Tf +13.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NEWFLG)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 314.2561 446.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 446.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(NEWFLG)Tj +/TT6 1 Tf +3.6006 0 TD +( is NIL, waits until a floppy is in the floppy drive before returning.)Tj +-4.5205 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9477 0 TD +(NEWFLG)Tj +/TT6 1 Tf +3.6006 0 TD +0.0278 Tw +[( is T, waits until the existing floppy in the floppy drive, if any, is removed, then)]TJ +-4.5483 -1.2889 TD +0 Tw +(waits for a floppy to be inserted into the drive before returning.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +-0.0001 Tc +0.0001 Tw +(\(FLOPPY.SCAVENGE\) )Tj +/TT6 1 Tf +38.07 0 TD +0 Tc +0 Tw +([Function])Tj +-35.4033 -1.8444 TD +0.0711 Tw +(Attempts to repair a floppy whose critical records have become confused \(causing errors)Tj +0 -1.2222 TD +0.0667 Tw +[(when file operations are attempted\). May also retrieve accidently-deleted files, provided)]TJ +T* +0 Tw +(they havent been overwritten by new files. )Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(FLOPPY.TO.FILE)Tj +/TT6 1 Tf +9 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TOFILE)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 271.0562 317.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 317.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0789 Tw +(Copies the entire contents of the floppy to the "floppy image" file )Tj +/TT14 1 Tf +29.872 0 TD +0 Tw +(TOFILE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0789 Tw +(, which can be)Tj +-33.4725 -1.2889 TD +0.0711 Tw +[(on a file server, local disk, etc. This can be used to create a centralized copy of a floppy,)]TJ +0 -1.2222 TD +0 Tw +(that different users can copy to their own floppy disks \(using )Tj +/TT10 1 Tf +27.2412 0 TD +(FLOPPY.FROM.FILE)Tj +/TT6 1 Tf +9.6016 0 TD +(\).)Tj +-34.1761 -2.0667 TD +0.2067 Tw +[(Note:)-901.2(A floppy image file for an 8-inch floppy is about 2500 pages long,)]TJ +3.3333 -1.2222 TD +0 Tw +(regardless of the number of pages in use on the floppy.)Tj +/TT10 1 Tf +-8.6667 -2.4822 TD +(\(FLOPPY.FROM.FILE)Tj +/TT6 1 Tf +10.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FROMFILE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 292.6579 226.52 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 226.52 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2922 Tw +(Copies the "floppy image" file )Tj +/TT14 1 Tf +14.9216 0 TD +0 Tw +(FROMFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2922 Tw +[( to the floppy. )]TJ +/TT14 1 Tf +8.1486 0 TD +0 Tw +(FROMFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2922 Tw +[( must be a file)]TJ +-32.6717 -1.2889 TD +0 Tw +(produced by )Tj +/TT10 1 Tf +5.8989 0 TD +(FLOPPY.TO.FILE)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +-16.967 -2.5489 TD +(\(FLOPPY.ARCHIVE)Tj +/TT6 1 Tf +9 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 289.5088 175.38 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 175.38 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(FLOPPY.ARCHIVE)Tj +/TT6 1 Tf +8.4014 0 TD +0.0822 Tw +[( formats a floppy inserted into the floppy drive, giving the floppy the)]TJ +-8.4014 -1.2889 TD +0 Tw +(name )Tj +/TT14 1 Tf +2.7172 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(#1)Tj +/TT6 1 Tf +1.2002 0 TD +0.0233 Tw +(. )Tj +/TT10 1 Tf +0.7967 0 TD +0 Tw +(FLOPPY.ARCHIVE)Tj +/TT6 1 Tf +8.4014 0 TD +0.0233 Tw +[( then copies each file in )]TJ +/TT14 1 Tf +10.6659 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.0233 Tw +[( to the freshly formatted)]TJ +-29.1822 -1.2889 TD +0.2444 Tw +[(floppy. If the first floppy fills up, )]TJ +/TT10 1 Tf +16.9722 0 TD +0 Tw +(FLOPPY.ARCHIVE)Tj +/TT6 1 Tf +8.4014 0 TD +0.2444 Tw +[( uses multiple floppies \(named)]TJ +/TT14 1 Tf +-25.3735 -1.2889 TD +0 Tw +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(#2)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(#3)Tj +/TT6 1 Tf +1.2002 0 TD +(, etc.\), each time prompting you to insert a new floppy.)Tj +-7.7012 -2.0667 TD +0.0322 Tw +(The function )Tj +/TT10 1 Tf +5.9453 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0322 Tw +[( \(see below\) is convenient for generating a list of files to archive.)]TJ +-11.3462 -1.2889 TD +0 Tw +(For example,)Tj +/TT10 1 Tf +5.3333 -1.9333 TD +(\(FLOPPY.ARCHIVE)Tj +0 -1 TD +( \(DIRECTORY {ERIS}Project>*\))Tj +T* +( Project\))Tj +ET +endstream +endobj +92 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +94 0 obj +<< +/Length 4944 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-27)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.3256 Tw +(will archive all files on the directory )Tj +/TT10 1 Tf +18.4498 0 TD +0 Tw +({ERIS}Project>)Tj +/TT6 1 Tf +12.002 0 TD +0.3256 Tw +[( to floppies \(named)]TJ +/TT10 1 Tf +-30.4517 -1.2889 TD +0 Tw +(Project#1)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(Project#2)Tj +/TT6 1 Tf +5.4009 0 TD +(, etc.\).)Tj +/TT10 1 Tf +-13.9684 -2.5489 TD +(\(FLOPPY.UNARCHIVE)Tj +/TT6 1 Tf +10.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(HOST/DIRECTORY)Tj +/TT10 1 Tf +8.4014 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 277.0632 535 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 535 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8445 TD +(FLOPPY.UNARCHIVE)Tj +/TT6 1 Tf +9.6016 0 TD +0.7244 Tw +[( copies all files on the current floppy to the directory)]TJ +/TT14 1 Tf +-9.6016 -1.2889 TD +0 Tw +(HOST/DIRECTORY)Tj +/TT6 1 Tf +8.4014 0 TD +0.1333 Tw +[(. For example, )]TJ +/TT10 1 Tf +7.2794 0 TD +0.32 Tw +(\(FLOPPY.UNARCHIVE {ERIS}Project>\))Tj +/TT6 1 Tf +-15.6808 -1.2889 TD +0.1233 Tw +(will copy each file on the current floppy to the directory )Tj +/TT10 1 Tf +26.3293 0 TD +0 Tw +({ERIS}Project>)Tj +/TT6 1 Tf +12.002 0 TD +0.1233 Tw +[(. If)]TJ +-38.3313 -1.2889 TD +0.16 Tw +(there is more than one floppy to restore from archive, )Tj +/TT10 1 Tf +25.4828 0 TD +0 Tw +(FLOPPY.UNARCHIVE)Tj +/TT6 1 Tf +9.6016 0 TD +0.16 Tw +[( should be)]TJ +-35.0844 -1.2889 TD +0 Tw +(called on each floppy disk.)Tj +/TT4 1 Tf +10 0 0 10 54 429.66 Tm +(I/O Operations to and from Strings)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 426.95 m +510.01 426.95 l +S +BT +/TT6 1 Tf +9 0 0 9 78 405 Tm +(It is possible to treat a string as if it were the contents of a file by using the following function:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(OPENSTRINGSTREAM)Tj +/TT6 1 Tf +10.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 252.3088 382.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 382.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0267 Tw +(Returns a stream that can be used to access the characters of the string )Tj +/TT14 1 Tf +31.5691 0 TD +0 Tw +(STR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0267 Tw +(. )Tj +/TT14 1 Tf +0.8033 0 TD +0 Tw +(ACCESS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0267 Tw +[( may)]TJ +-37.7734 -1.2889 TD +0.0644 Tw +(be either )Tj +/TT10 1 Tf +4.2134 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5644 0 TD +(OUTPUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0644 Tw +(, or )Tj +/TT10 1 Tf +1.8198 0 TD +0 Tw +(BOTH)Tj +/TT6 1 Tf +2.4004 0 TD +(; )Tj +/TT10 1 Tf +0.5644 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0644 Tw +[( defaults to )]TJ +/TT10 1 Tf +5.3823 0 TD +0 Tw +(INPUT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0644 Tw +[(. The stream returned may be)]TJ +-26.3466 -1.2889 TD +0.1122 Tw +(used exactly like a file opened with the same access, except that output operations may)Tj +0 -1.2222 TD +0.0944 Tw +[(not extend past the end of the original string. Also, string streams do not appear in the)]TJ +T* +0 Tw +(value of )Tj +/TT10 1 Tf +3.8169 0 TD +(\(OPENP\))Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-8.0176 -2.0667 TD +(For example, after performing)Tj +/TT10 1 Tf +0 -2.8222 TD +(\(SETQ STRM \(OPENSTRINGSTREAM "THIS 2 \(IS A LIST\)"\)\))Tj +/TT12 1 Tf +10 0 0 10 126 256.92 Tm +(the following succession of reads could occur:)Tj +/TT10 1 Tf +9 0 0 9 174 239.86 Tm +(\(READ STRM\) => THIS)Tj +0 -1 TD +( \(RATOM STRM\) => 2)Tj +T* +( \(READ STRM\) => \(IS A LIST\))Tj +T* +( \(EOFP STRM\) => T)Tj +/TT6 1 Tf +-10.6667 -2.7333 TD +0.0933 Tw +(Compatibility Note: In Interlisp-10 it was possible to take input from a string simply by passing the)Tj +0 -1.2222 TD +0.0033 Tw +(string as the )Tj +/TT14 1 Tf +5.6453 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( argument to an input function. In order to maintain compatibility with this feature,)Tj +-8.0456 -1.2889 TD +0 Tc +0.3789 Tw +[(Medley provides the same capability. This not terribly clean feature persists in the present)]TJ +0 -1.2222 TD +0.0711 Tw +[(implementation to give users time to convert old code. This means that strings are )]TJ +/TT8 1 Tf +37.8137 0 TD +0 Tw +(not)Tj +/TT6 1 Tf +1.333 0 TD +0.0711 Tw +[( equivalent to)]TJ +-39.1468 -1.2222 TD +0.0989 Tw +[(symbols when specifying a file name as a stream argument. In a future release, the old Interlisp-10)]TJ +T* +0.1878 Tw +(string-reading feature will be decommissioned, and )Tj +/TT10 1 Tf +24.238 0 TD +0 Tw +(OPENSTRINGSTREAM)Tj +/TT6 1 Tf +9.6016 0 TD +0.1878 Tw +[( will be the only way to)]TJ +-33.8396 -1.2889 TD +0 Tw +(perform I/O on a string.)Tj +/TT4 1 Tf +10 0 0 10 54 78.72 Tm +(Temporary Files and the CORE Device)Tj +ET +54.01 76.01 m +510.01 76.01 l +S +BT +/TT6 1 Tf +9 0 0 9 78 54.06 Tm +0.0689 Tw +(Many operating systems have a notion of "scratch file", a file typically used as temporary storage for)Tj +0 -1.2222 TD +0.0433 Tw +[(data most naturally maintained in the form of a file, rather than some other data structure. A scratch)]TJ +ET +endstream +endobj +95 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +97 0 obj +<< +/Length 6189 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-28)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0011 Tw +(file can be used as a normal file in most respects, but is automatically deleted from the file system after)Tj +0 -1.2222 TD +0.0167 Tw +[(its useful life is up, e.g., when the job terminates, or you log out. In normal operation, you need never)]TJ +T* +0 Tw +(explicitly delete such files, since they are guaranteed to disappear soon.)Tj +0 -2.8889 TD +0.1522 Tw +[(A similar functionality is provided in Medley by core-resident files. Core-resident files are on the)]TJ +0 -1.2222 TD +0 Tw +(device )Tj +/TT10 1 Tf +3.2731 0 TD +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1544 Tw +[(. The directory structure for this device and all files on it are represented completely)]TJ +-5.6735 -1.2889 TD +0.0611 Tw +[(within your virtual memory. These files are treated as ordinary files by all file operations; their only)]TJ +0 -1.2222 TD +0 Tw +(distinguishing feature is that all trace of them disappears when the virtual memory is abandoned.)Tj +0 -2.8889 TD +0.4222 Tw +(Core files are opened and closed by name the same as any other file, e.g., )Tj +/TT10 1 Tf +38.7347 0 TD +0 Tw +(\(OPENSTREAM)Tj +-38.7347 -1.2889 TD +0.3544 Tw +({CORE}FIE.DCOM OUTPUT\))Tj +/TT6 1 Tf +17.7573 0 TD +0.1478 Tw +[(. Directory names are completely optional, so files can also)]TJ +-17.7573 -1.2889 TD +0.0111 Tw +(have names of the form )Tj +/TT10 1 Tf +10.7221 0 TD +0 Tw +({CORE}NAME.EXT)Tj +/TT6 1 Tf +8.4014 0 TD +0.0111 Tw +[(. Core files can be enumerated by )]TJ +/TT10 1 Tf +15.2901 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0111 Tw +[( \(see below\).)]TJ +-39.8144 -1.2889 TD +0.0611 Tw +(While open, they are registered in )Tj +/TT10 1 Tf +15.5932 0 TD +0 Tw +(\(OPENP\))Tj +/TT6 1 Tf +4.2007 0 TD +0.0611 Tw +[(. They do consume virtual memory space, which is only)]TJ +-19.7939 -1.2889 TD +0.0356 Tw +[(reclaimed when the file is deleted. Some caution should thus be used when creating large )]TJ +/TT10 1 Tf +40.5772 0 TD +0 Tw +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0356 Tw +[( files.)]TJ +-42.9776 -1.2889 TD +0.0067 Tw +(Since the virtual memory of an Medley workstation usually persists far longer than the typical process)Tj +0 -1.2222 TD +0 Tw +(on a mainframe computer, it is still important to delete )Tj +/TT10 1 Tf +24.4429 0 TD +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +( files after they are no longer in use.)Tj +-26.8433 -2.9556 TD +0.1089 Tw +(For many applications, the name of the scratch file is irrelevant, and there is no need for anyone to)Tj +0 -1.2222 TD +0.04 Tw +[(have access to the file independent of the program that created it. For such applications, )]TJ +/TT10 1 Tf +39.931 0 TD +0 Tw +(NODIRCORE)Tj +/TT6 1 Tf +-39.931 -1.2889 TD +0.11 Tw +[(files are preferable. Files created on the device lisp )]TJ +/TT10 1 Tf +23.8129 0 TD +0 Tw +(NODIRCORE)Tj +/TT6 1 Tf +5.4009 0 TD +0.11 Tw +[( are core-resident files that have no)]TJ +-29.2138 -1.2889 TD +0.0467 Tw +[(name and are registered in no directory. These files "disappear", and the resources they consume are)]TJ +0 -1.2222 TD +0.0089 Tw +[(reclaimed, when all pointers to the file are dropped. Hence, such files need never be explicitly deleted)]TJ +T* +0.2211 Tw +[(or, for that matter, closed. The "name" of such a file is simply the stream object returned from)]TJ +/TT10 1 Tf +T* +0.2922 Tw +(\(OPENSTREAM {NODIRCORE} OUTPUT\))Tj +/TT6 1 Tf +20.3877 0 TD +0.1222 Tw +(, and it is this stream object that must be passed to all)Tj +-20.3877 -1.4378 TD +0 Tw +(input/output operations, including )Tj +/TT10 1 Tf +15.9556 0 TD +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +( and any )Tj +/TT12 1 Tf +10 0 0 10 338.7349 286.2 Tm +(calls to )Tj +/TT10 1 Tf +9 0 0 9 372.6362 286.2 Tm +(OPENSTREAM)Tj +/TT12 1 Tf +10 0 0 10 426.645 286.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 429.4233 286.2 Tm +(to reopen the file. )Tj +/TT10 1 Tf +-31.047 -2.5489 TD +(\(COREDEVICE)Tj +/TT4 1 Tf +10 0 0 10 209.4 263.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.1783 263.26 Tm +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NODIRFLG)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 284.6397 263.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 263.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1 Tw +(Creates a new device for core-resident files and assigns )Tj +/TT14 1 Tf +25.4947 0 TD +0 Tw +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +0.1 Tw +[( as its device name. Thus,)]TJ +-27.8951 -1.2889 TD +0.2389 Tw +(after performing )Tj +/TT10 1 Tf +8.072 0 TD +0.5733 Tw +(\(COREDEVICE FOO\))Tj +/TT6 1 Tf +10.775 0 TD +0.2389 Tw +(, one can execute )Tj +/TT10 1 Tf +8.6645 0 TD +0 Tw +(\(OPENSTREAM)Tj +/TT16 1 Tf +6.6011 0 TD +( )Tj +/TT10 1 Tf +0.4889 0 TD +({FOO}BAR)Tj +-34.6015 -1.2889 TD +(OUTPUT\))Tj +/TT6 1 Tf +4.8008 0 TD +0.0089 Tw +[( to open a file on that device. Medley is initialized with the single core-resident)]TJ +-4.8008 -1.2889 TD +0.1789 Tw +(device named )Tj +/TT10 1 Tf +6.7811 0 TD +0 Tw +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1789 Tw +(, but )Tj +/TT10 1 Tf +2.5902 0 TD +0 Tw +(COREDEVICE)Tj +/TT6 1 Tf +6.001 0 TD +0.1789 Tw +[( may be used to create any number of logically)]TJ +-17.7727 -1.2889 TD +0 Tw +(distinct core devices.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(NODIRFLG)Tj +/TT6 1 Tf +4.8008 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, a core device that acts like )Tj +/TT10 1 Tf +12.2778 0 TD +({NODIRCORE})Tj +/TT6 1 Tf +6.6011 0 TD +( is created.)Tj +-29.6577 -2.0667 TD +0.2155 Tw +(Compatibility note: In Interlisp-10, it was possible to create scratch files by using file)Tj +0 -1.2222 TD +0.0533 Tw +(names with suffixes )Tj +/TT10 1 Tf +9.2137 0 TD +0 Tw +(;S)Tj +/TT6 1 Tf +1.2002 0 TD +0.0533 Tw +[( or )]TJ +/TT10 1 Tf +1.5476 0 TD +0 Tw +(;T)Tj +/TT6 1 Tf +1.2002 0 TD +0.0533 Tw +[(. In Medley, these suffixes in file names are simply ignored)]TJ +-13.1617 -1.2889 TD +0.4444 Tw +[(when output is directed to a particular host or device. However, the function)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(PACKFILENAME.STRING)Tj +/TT6 1 Tf +11.4019 0 TD +0.0511 Tw +[( is defined to default the device name to )]TJ +/TT10 1 Tf +18.3975 0 TD +0 Tw +(CORE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0511 Tw +[( if the file has the)]TJ +/TT10 1 Tf +-32.1997 -1.2889 TD +0 Tw +(TEMPORARY)Tj +/TT6 1 Tf +5.4009 0 TD +( attribute and no explicit host is provided.)Tj +ET +endstream +endobj +98 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +100 0 obj +<< +/Length 6945 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-29)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT4 1 Tf +-35.4 -4.38 TD +(NULL Device)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 543.54 Tm +(The )Tj +/TT10 1 Tf +2.0749 0 TD +(NULL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1511 Tw +[( device provides a source of content-free "files". )]TJ +/TT10 1 Tf +22.373 0 TD +0.3611 Tw +[( \(OPENSTREAM {NULL} OUTPUT\))]TJ +/TT6 1 Tf +-26.8483 -1.2889 TD +0.1478 Tw +(creates a stream that discards all output directed at it. )Tj +/TT10 1 Tf +25.7794 0 TD +0 Tw +(\(OPENSTREAM)Tj +/TT16 1 Tf +6.6011 0 TD +( )Tj +/TT10 1 Tf +0.3978 0 TD +({NULL})Tj +/TT16 1 Tf +4.2007 0 TD +0.1478 Tc +( )Tj +/TT10 1 Tf +0.6756 0 TD +0 Tc +(INPUT)Tj +/TT16 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +0.333 0 TD +0.1478 Tw +[( creates a)]TJ +-40.988 -1.2889 TD +0 Tw +(stream that is perpetually at end-of-file \(i.e., has no input\). )Tj +/TT4 1 Tf +10 0 0 10 54 478 Tm +(Deleting, Copying, and Renaming Files)Tj +ET +54.01 475.29 m +510.01 475.29 l +S +BT +/TT10 1 Tf +9 0 0 9 102 457 Tm +(\(DELFILE)Tj +/TT6 1 Tf +4.8 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 174.4544 457 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 457 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Deletes )Tj +/TT14 1 Tf +3.6608 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1589 Tw +[( if possible. The file must be closed. Returns the full name of the file if)]TJ +-6.0612 -1.2889 TD +0.1244 Tw +(deleted, else )Tj +/TT10 1 Tf +5.9476 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1244 Tw +[(. Recognition mode for )]TJ +/TT14 1 Tf +11.2257 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1244 Tw +[( is )]TJ +/TT10 1 Tf +1.4637 0 TD +0 Tw +(OLDEST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1244 Tw +(, i.e., if )Tj +/TT14 1 Tf +3.5174 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1244 Tw +[( does not have a)]TJ +-32.3561 -1.2889 TD +0 Tw +(version number specified, then )Tj +/TT10 1 Tf +13.9487 0 TD +(DELFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( deletes the oldest version of the file.)Tj +/TT10 1 Tf +-20.8161 -2.5489 TD +(\(COPYFILE)Tj +/TT6 1 Tf +5.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FROMFILE)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(TOFILE)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 236.1132 394.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 394.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Copies )Tj +/TT14 1 Tf +3.4009 0 TD +(FROMFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1011 Tw +[( to a new file named )]TJ +/TT14 1 Tf +9.8225 0 TD +0 Tw +(TOFILE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1011 Tw +[(. The source and destination may be on)]TJ +-21.6248 -1.2889 TD +0.3544 Tw +(any combination of hosts/devices. )Tj +/TT10 1 Tf +17.5335 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3544 Tw +[( attempts to preserve the )]TJ +/TT10 1 Tf +12.9636 0 TD +0 Tw +(TYPE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3544 Tw +[( and)]TJ +/TT10 1 Tf +-37.6983 -1.2889 TD +0 Tw +(CREATIONDATE)Tj +/TT6 1 Tf +7.2012 0 TD +0.18 Tw +[( where possible. If the original files file type is unknown, )]TJ +/TT10 1 Tf +27.9994 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +-35.2005 -1.2889 TD +0.0789 Tw +(attempts to infer the type \(file type is )Tj +/TT10 1 Tf +17.2024 0 TD +0 Tw +(BINARY)Tj +/TT6 1 Tf +3.6006 0 TD +0.0789 Tw +[( if any of its 8-bit bytes have their high bit)]TJ +-20.803 -1.2889 TD +0 Tw +(on\).)Tj +/TT10 1 Tf +0 -2 TD +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.3522 Tw +[( uses )]TJ +/TT10 1 Tf +3.1341 0 TD +0 Tw +(COPYCHARS)Tj +/TT6 1 Tf +5.4009 0 TD +0.3522 Tw +[( \(Chapter 25\) if the source and destination hosts have)]TJ +-13.3358 -1.2889 TD +0 Tw +(different )Tj +/TT10 1 Tf +4.1124 0 TD +(EOL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0333 Tw +[( conventions. Thus, it is possible for the source and destination files to be of)]TJ +-5.9127 -1.2889 TD +0 Tw +(different lengths.)Tj +-2.6667 -2.4822 TD +(\()Tj +/TT10 1 Tf +0.333 0 TD +(RENAMEFILE)Tj +/TT6 1 Tf +6.0003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(OLDFILE)Tj +/TT8 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 242.1094 267.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 267.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Renames )Tj +/TT14 1 Tf +4.2958 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( to be )]TJ +/TT14 1 Tf +2.7476 0 TD +0 Tw +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[(. Causes an error, )]TJ +/TT10 1 Tf +8.3362 0 TD +0.0756 Tw +(FILE NOT FOUND)Tj +/TT6 1 Tf +8.5525 0 TD +0.0311 Tw +[( if )]TJ +/TT14 1 Tf +1.1862 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +[( does not)]TJ +-35.9201 -1.2889 TD +0.0244 Tw +[(exist. Returns the full name of the new file, if successful, else NIL if the rename cannot be)]TJ +0 -1.2222 TD +0 Tw +(performed.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.1133 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1933 Tw +[( and )]TJ +/TT14 1 Tf +2.5795 0 TD +0 Tw +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.1933 Tw +[( are on the same host/device, and the device implements a)]TJ +-12.0942 -1.2889 TD +0.0133 Tw +(renaming primitive, )Tj +/TT10 1 Tf +9.1668 0 TD +0 Tw +(RENAMEFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0133 Tw +[( can be very fast. However, if the device does not know)]TJ +-15.1678 -1.2889 TD +0.2544 Tw +(how to rename files in place, or if )Tj +/TT14 1 Tf +17.0082 0 TD +0 Tw +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2544 Tw +[( and )]TJ +/TT14 1 Tf +2.7018 0 TD +0 Tw +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +0.2544 Tw +[( are on different devices,)]TJ +/TT10 1 Tf +-28.1113 -1.2889 TD +0 Tw +(RENAMEFILE)Tj +/TT6 1 Tf +6.001 0 TD +( works by copying )Tj +/TT14 1 Tf +8.4404 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( to )Tj +/TT14 1 Tf +1.3721 0 TD +(NEWFILE)Tj +/TT6 1 Tf +4.2007 0 TD +( and then deleting )Tj +/TT14 1 Tf +8.2773 0 TD +(OLDFILE)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 132.78 Tm +(Searching File Directories)Tj +ET +54.01 130.07 m +510.01 130.07 l +S +BT +/TT10 1 Tf +9 0 0 9 102 111.78 Tm +(DIRECTORIES)Tj +/TT12 1 Tf +10 0 0 10 161.4 111.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 111.78 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1178 Tw +(Global variable containing the list of directories searched \(in order\) by )Tj +/TT10 1 Tf +32.5309 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1178 Tw +[( and)]TJ +/TT10 1 Tf +-37.9318 -1.2889 TD +0 Tw +(FINDFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1189 Tw +[( \(below\) when not given an explicit )]TJ +/TT14 1 Tf +16.6769 0 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1189 Tw +[( argument. In this list, the atom)]TJ +/TT10 1 Tf +-25.0783 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0456 Tw +[( stands for the login directory \(the value of )]TJ +/TT10 1 Tf +19.534 0 TD +0 Tw +(LOGINHOST/DIR)Tj +/TT6 1 Tf +7.8013 0 TD +0.0456 Tw +(\), and the atom )Tj +/TT10 1 Tf +7.1002 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0456 Tw +[( stands)]TJ +-36.8359 -1.2889 TD +0.5178 Tw +[(for the currently connected directory. Other elements should be )]TJ +/TT8 1 Tf +33.7959 0 TD +0 Tw +(full)Tj +/TT6 1 Tf +1.3896 0 TD +0.5178 Tw +[( directory)]TJ +-35.1856 -1.2222 TD +0 Tw +(specifications, e.g., )Tj +/TT10 1 Tf +8.5107 0 TD +({TWENTY}PS:)Tj +/TT6 1 Tf +13.2022 0 TD +(, not merely )Tj +/TT10 1 Tf +5.5371 0 TD +(LISPUSERS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +101 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +103 0 obj +<< +/Length 7739 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-30)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(LISPUSERSDIRECTORIES)Tj +/TT12 1 Tf +10 0 0 10 258 568.2 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0856 Tw +[(Global variable containing a list of directories to search for "library" package files. Used)]TJ +0 -1.2222 TD +0 Tw +(by the )Tj +/TT10 1 Tf +2.9966 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( file package command \(Chapter 17\).)Tj +/TT10 1 Tf +-8.6637 -2.5489 TD +(\(SPELLFILE)Tj +/TT6 1 Tf +6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NOPRINTFLG)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NSFLG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DIRLST)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 353.4229 517.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 517.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0633 Tw +(Searches for the file name )Tj +/TT8 1 Tf +11.8933 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.0562 0 TD +0.0633 Tw +(, possibly performing spelling correction \(see Chapter 20\).)Tj +-13.9495 -1.2222 TD +0 Tw +(Returns the corrected file name, if any, otherwise )Tj +/TT10 1 Tf +21.939 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-23.7393 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9877 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0678 Tw +[( has a directory field, )]TJ +/TT10 1 Tf +9.8926 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0678 Tw +[( attempts spelling correction against the files in)]TJ +-18.6816 -1.2889 TD +0.0344 Tw +[(that particular directory. Otherwise, )]TJ +/TT10 1 Tf +16.642 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0344 Tw +[( searches for the file on the directory list)]TJ +/TT14 1 Tf +-22.0428 -1.2889 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +( before attempting any spelling correction.)Tj +-3.6006 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9355 0 TD +(NOPRINTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0156 Tw +[( is )]TJ +/TT10 1 Tf +1.246 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5156 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0156 Tw +[( asks you to confirm any spelling correction done, and)]TJ +-15.8991 -1.2889 TD +0.13 Tw +[(prints out any files found, even if spelling correction is not done. If )]TJ +/TT14 1 Tf +31.7936 0 TD +0 Tw +(NOPRINTFLG)Tj +/TT6 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.38 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.38 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +/TT10 1 Tf +-39.7548 -1.2889 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +( does not do any printing, nor ask for approval.)Tj +-5.4009 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.021 0 TD +(NSFLG)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.3511 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3511 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +[( \(or )]TJ +/TT10 1 Tf +1.9761 0 TD +0 Tw +(NOSPELLFLG)Tj +/TT6 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.3511 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3511 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1011 Tw +(, see Chapter 20\), no spelling correction is attempted,)Tj +-15.8035 -1.2889 TD +0 Tw +(though searching through )Tj +/TT14 1 Tf +11.7886 0 TD +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +( still occurs.)Tj +/TT14 1 Tf +-15.3892 -2.0667 TD +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.21 Tw +[( is the list of directories searched if )]TJ +/TT14 1 Tf +17.2113 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.21 Tw +[( does not have a directory field. If)]TJ +/TT14 1 Tf +-23.2122 -1.2889 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the value of the variable )Tj +/TT10 1 Tf +11.4155 0 TD +(DIRECTORIES)Tj +/TT6 1 Tf +6.6011 0 TD +( is used.)Tj +-21.9657 -2.0667 TD +[(Note:)-901.2(If )]TJ +/TT14 1 Tf +4.331 0 TD +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0778 Tw +[( is )]TJ +/TT10 1 Tf +1.3704 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0778 Tw +(, and )Tj +/TT14 1 Tf +2.5984 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0778 Tw +[( is not found by searching the directories)]TJ +-12.7678 -1.2889 TD +0 Tw +(on )Tj +/TT10 1 Tf +1.6824 0 TD +(DIRECTORIES)Tj +/TT6 1 Tf +6.6011 0 TD +0.3044 Tw +(, but the root name of )Tj +/TT14 1 Tf +11.582 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.3044 Tw +[( has a )]TJ +/TT10 1 Tf +3.6692 0 TD +0 Tw +(FILEDATES)Tj +/TT6 1 Tf +-25.9351 -1.2889 TD +0.2211 Tw +(property \(Chapter 17\) indicating that a file by that name has been)Tj +0 -1.3711 TD +0.2089 Tw +(loaded, then the directory)Tj +/TT12 1 Tf +10 0 0 10 336.5731 291.92 Tm +0 Tw +( )Tj +/TT6 1 Tf +9 0 0 9 341.6714 291.92 Tm +0.2089 Tw +(indicated in the )Tj +/TT10 1 Tf +7.7717 0 TD +0 Tw +(FILEDATES)Tj +/TT6 1 Tf +5.4009 0 TD +0.2089 Tw +[( property is)]TJ +-25.8027 -1.2889 TD +0.1533 Tw +[(searched, too. This additional search is not done if )]TJ +/TT14 1 Tf +24.1578 0 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1533 Tw +[( is non-)]TJ +/TT10 1 Tf +-27.7584 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-7.8003 -2.0667 TD +(ERRORTYPELST)Tj +/TT6 1 Tf +7.2012 0 TD +0.1989 Tw +[( \(Chapter 14\) initially contains the entry )]TJ +/TT10 1 Tf +19.2404 0 TD +0.4789 Tw +(\(\(23 \(SPELLFILE \(CADR)Tj +-26.4415 -1.2889 TD +0.0556 Tw +(ERRORMESS\) NIL NOFILESPELLFLG\)\)\))Tj +/TT6 1 Tf +19.3142 0 TD +0.0233 Tw +(, which causes )Tj +/TT10 1 Tf +6.6764 0 TD +0 Tw +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +[( to be called in case)]TJ +-31.3916 -1.2889 TD +0.1233 Tw +(of a )Tj +/TT10 1 Tf +2.1256 0 TD +0.2956 Tw +(FILE NOT FOUND)Tj +/TT6 1 Tf +8.9925 0 TD +0.1233 Tw +[( error. If the variable )]TJ +/TT10 1 Tf +10.3313 0 TD +0 Tw +(NOFILESPELLFLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.1233 Tw +[( is )]TJ +/TT10 1 Tf +1.4615 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1233 Tw +[( \(its initial value\),)]TJ +-31.9123 -1.2889 TD +0.0711 Tw +(then spelling correction is not done on the file name, but )Tj +/TT10 1 Tf +25.9365 0 TD +0 Tw +(DIRECTORIES)Tj +/TT6 1 Tf +6.6011 0 TD +0.0711 Tw +[( is still searched.)]TJ +-32.5376 -1.2889 TD +0 Tw +(If )Tj +/TT10 1 Tf +0.9621 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.0422 Tw +[( is successful, the operation will be reexecuted with the new \(corrected\) file)]TJ +-6.363 -1.2889 TD +0 Tw +(name.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(FINDFILE)Tj +/TT6 1 Tf +5.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NSFLG)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DIRLST)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 291.764 169.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 169.78 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Uses )Tj +/TT10 1 Tf +2.4623 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +0.1078 Tw +[( to search for a file named )]TJ +/TT14 1 Tf +12.4229 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1078 Tw +[(. If it finds one, returns its full name,)]TJ +-22.6864 -1.2889 TD +0.0256 Tw +[(with no user interaction. Specifically, it calls )]TJ +/TT10 1 Tf +20.1415 0 TD +0 Tw +(\(SPELLFILE)Tj +/TT16 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.2756 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.2756 0 TD +(T)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.2756 0 TD +(NSFLG)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.2756 0 TD +(DIRLST)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0256 Tw +(, after)Tj +-37.4463 -1.2889 TD +0.0556 Tw +[(first performing two simple checks: If )]TJ +/TT14 1 Tf +17.4924 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0556 Tw +[( has an explicit directory, it checks to see if a)]TJ +-19.8928 -1.2889 TD +0.04 Tw +[(file so named exists, and if so returns that file. If )]TJ +/TT14 1 Tf +22.1475 0 TD +0 Tw +(DIRLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.04 Tw +[( is )]TJ +/TT10 1 Tf +1.2948 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +(, it looks for )Tj +/TT14 1 Tf +5.6639 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.04 Tw +[( on the)]TJ +-36.9075 -1.2889 TD +0 Tw +(connected directory before calling )Tj +/TT10 1 Tf +15.2759 0 TD +(SPELLFILE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +104 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +106 0 obj +<< +/Length 6817 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-31)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT4 1 Tf +-35.4 -4.38 TD +(Listing File Directories)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +510.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 543.54 Tm +0.1033 Tw +(The function )Tj +/TT10 1 Tf +6.0875 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.1033 Tw +[( allows you to conveniently specify and/or program a variety of directory)]TJ +-11.4884 -1.2889 TD +0 Tw +(operations:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(DIRECTORY)Tj +/TT6 1 Tf +6 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COMMANDS)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DEFAULTEXT)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DEFAULTVERS)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 354.0308 509.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 509.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1611 Tw +(Returns, lists, or performs arbitrary operations on all files specified by the "file group")Tj +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.01 Tw +[(. A file group has the form of a regular file name, except that the character )]TJ +/TT10 1 Tf +33.3106 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.01 Tw +[( can be)]TJ +-36.9112 -1.2889 TD +0.1 Tw +[(used to match any number of characters, including zero, in the file name. For example,)]TJ +0 -1.2222 TD +0.04 Tw +(the file group )Tj +/TT10 1 Tf +6.3524 0 TD +0 Tw +(A*B)Tj +/TT6 1 Tf +1.8003 0 TD +0.04 Tw +[( matches all file names beginning with the character )]TJ +/TT10 1 Tf +23.5495 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +[( and ending with)]TJ +-32.3023 -1.2889 TD +0 Tw +(the character )Tj +/TT10 1 Tf +5.9521 0 TD +(B)Tj +/TT6 1 Tf +0.6001 0 TD +(. The file group )Tj +/TT10 1 Tf +7.269 0 TD +(*.DCOM)Tj +/TT6 1 Tf +3.6006 0 TD +( matches all files with an extension of )Tj +/TT10 1 Tf +16.7568 0 TD +(DCOM)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-36.5791 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9866 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.0667 Tw +[( does not contain an explicit extension, it is defaulted to )]TJ +/TT14 1 Tf +25.5014 0 TD +0 Tw +(DEFAULTEXT)Tj +/TT6 1 Tf +6.001 0 TD +0.0667 Tw +(; if )Tj +/TT14 1 Tf +1.5074 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +-36.9968 -1.2889 TD +0.0867 Tw +(does not contain an explicit version, it is defaulted to )Tj +/TT14 1 Tf +24.4414 0 TD +0 Tw +(DEFAULTVERS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0867 Tw +(. )Tj +/TT14 1 Tf +0.9233 0 TD +0 Tw +(DEFAULTEXT)Tj +/TT6 1 Tf +6.001 0 TD +0.0867 Tw +[( and)]TJ +/TT14 1 Tf +-37.9668 -1.2889 TD +0 Tw +(DEFAULTVERS)Tj +/TT6 1 Tf +6.6011 0 TD +0.0511 Tw +[( themselves default to )]TJ +/TT10 1 Tf +10.1512 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0511 Tw +[(. If the period or semicolon preceding the omitted)]TJ +-17.3524 -1.2889 TD +0.0178 Tw +(extension or version, respectively, is present, the field is explicitly empty and no default is)Tj +0 -1.2222 TD +0.1078 Tw +[(used. All other unspecified fields default to )]TJ +/TT10 1 Tf +20.4985 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1078 Tw +[(. Null version is interpreted as "highest".)]TJ +-21.0985 -1.2889 TD +0 Tw +(Thus )Tj +/TT14 1 Tf +2.5239 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3022 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0522 Tw +[( or )]TJ +/TT10 1 Tf +1.5454 0 TD +0 Tw +(*.*)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( or )]TJ +/TT10 1 Tf +1.5454 0 TD +0 Tw +(*.*;*)Tj +/TT6 1 Tf +3.0005 0 TD +0.0522 Tw +[( enumerates all files on the connected directory; )]TJ +/TT14 1 Tf +21.7684 0 TD +0 Tw +(FILES)Tj +/TT10 1 Tf +-36.9889 -1.2889 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.6356 0 TD +(*)Tj +/TT16 1 Tf +0.6001 0 TD +(.)Tj +/TT6 1 Tf +0.25 0 TD +0.3856 Tw +[( or )]TJ +/TT10 1 Tf +2.212 0 TD +0 Tw +(*.;*)Tj +/TT6 1 Tf +2.4004 0 TD +0.3856 Tw +[( enumerates all versions of files with null extension; )]TJ +/TT14 1 Tf +26.6297 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.6356 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.6356 0 TD +(*.;)Tj +/TT6 1 Tf +-38.1995 -1.2889 TD +0.3678 Tw +(enumerates the highest version of files with null extension; and )Tj +/TT14 1 Tf +31.9019 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.6178 0 TD +0.8822 Tw +(= *.*;)Tj +/TT6 1 Tf +-35.5202 -1.2889 TD +0 Tw +(enumerates the highest version of all files. If )Tj +/TT14 1 Tf +20.0078 0 TD +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, it defaults to )Tj +/TT10 1 Tf +6.3062 0 TD +(*.*)Tj +/TT16 1 Tf +1.8003 0 TD +(;)Tj +/TT10 1 Tf +0.25 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-32.3133 -2.0667 TD +0.0344 Tw +[(Note:)-901.2(Some hosts/devices are not capable of supporting "highest version" in)]TJ +3.3333 -1.2222 TD +0 Tw +(enumeration. Such hosts instead enumerate )Tj +/TT8 1 Tf +19.8106 0 TD +(all)Tj +/TT6 1 Tf +0.9995 0 TD +( versions.)Tj +-26.8101 -2 TD +0.1467 Tw +(For each file that matches the file group )Tj +/TT14 1 Tf +18.9238 0 TD +0 Tw +(FILES)Tj +/TT6 1 Tf +3.0005 0 TD +0.1467 Tw +(, the "file commands" in )Tj +/TT14 1 Tf +11.5019 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1467 Tw +[( are)]TJ +-38.227 -1.2889 TD +0.1156 Tw +[(executed in order. Some of the file commands allow aborting the command processing)]TJ +0 -1.2222 TD +0.0644 Tw +[(for a given file, effectively filtering the list of files. The interpretation of the different file)]TJ +T* +0.1722 Tw +[(commands is described below. If )]TJ +/TT14 1 Tf +16.0299 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1722 Tw +[( is )]TJ +/TT10 1 Tf +1.5593 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1722 Tw +(, it defaults to )Tj +/TT10 1 Tf +6.995 0 TD +0 Tw +(\(COLLECT\))Tj +/TT6 1 Tf +5.4009 0 TD +0.1722 Tw +(, which)Tj +-36.5862 -1.2889 TD +0 Tw +(collects the matching file names in a list and returns it as the value of )Tj +/TT10 1 Tf +30.6548 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-41.389 -2.9556 TD +(The "file commands" in )Tj +/TT14 1 Tf +10.5552 0 TD +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +( are interpreted as follows:)Tj +/TT10 1 Tf +1.3774 -2.2156 TD +(P)Tj +/TT6 1 Tf +1.9333 0 TD +0.2156 Tw +[(Prints the files name. For readability, )]TJ +/TT10 1 Tf +18.5982 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +-18.5982 -1.2889 TD +0.0444 Tw +(strips the directory from the name, printing it once as)Tj +0 -1.2222 TD +0.0122 Tw +(a header in front of each set of consecutive files on the)Tj +T* +0 Tw +(same directory.)Tj +/TT10 1 Tf +-2.5333 -2.1489 TD +(PP)Tj +/TT6 1 Tf +2.5333 0 TD +(Prints the files name without a version number.)Tj +-4.6578 -2.0667 TD +[(a string)-1333.6(Prints the string.)]TJ +/TT10 1 Tf +-8.0756 -1.9333 TD +(READDATE, WRITEDATE)Tj +0.6 -1 TD +(CREATIONDATE, SIZE)Tj +1.2 -1.2156 TD +(LENGTH, BYTESIZE)Tj +-1.2 -1.2156 TD +(PROTECTION, AUTHOR)Tj +8.4 -1.2156 TD +(TYPE)Tj +/TT6 1 Tf +3.7333 0 TD +0.65 Tw +(Prints the appropriate information returned by)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +6.6011 0 TD +( \(see above\).)Tj +ET +endstream +endobj +107 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +110 0 obj +<< +/Length 5340 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-32)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 244.2 569.54 Tm +(COLLECT)Tj +/TT6 1 Tf +5.5333 0 TD +0.0267 Tw +(Adds the full name of this file to an accumulating list,)Tj +0 -1.2889 TD +0 Tw +(which will be returned as the value of )Tj +/TT10 1 Tf +16.9702 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-29.1044 -2.0667 TD +(COUNTSIZE)Tj +/TT6 1 Tf +6.7333 0 TD +0.2456 Tw +(Adds the size of this file to an accumulating sum,)Tj +0 -1.2889 TD +0 Tw +(which will be returned as the value of )Tj +/TT10 1 Tf +16.9702 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-27.3044 -2.0667 TD +(DELETE)Tj +/TT6 1 Tf +4.9333 0 TD +(Deletes the file.)Tj +/TT10 1 Tf +-4.9333 -2.0667 TD +(DELVER)Tj +/TT6 1 Tf +4.9333 0 TD +0.24 Tw +(If this file is not the highest version of files by its)Tj +0 -1.2889 TD +0 Tw +(name, delete it.)Tj +/TT10 1 Tf +-4.3333 -2 TD +(PAUSE)Tj +/TT6 1 Tf +4.3333 0 TD +0.0678 Tw +(Waits until you type any character before proceeding)Tj +0 -1.2889 TD +0.2 Tw +(with the rest of the commands \(good for display if)Tj +0 -1.2222 TD +0 Tw +(you want to ponder\).)Tj +-13.3333 -2 TD +0.0844 Tw +[(The following commands are predicates to filter the list. If the predicate is not satisfied,)]TJ +0 -1.2222 TD +0.0189 Tw +(then processing for this file is aborted and no further commands \(such as those above\) are)Tj +T* +0 Tw +(executed for this file.)Tj +2.6667 -2 TD +0.1156 Tw +[(Note:)-901.2(if the )]TJ +/TT10 1 Tf +6.0757 0 TD +0 Tw +(P)Tj +/TT6 1 Tf +0.6001 0 TD +0.1156 Tw +[( and )]TJ +/TT10 1 Tf +2.424 0 TD +0 Tw +(PP)Tj +/TT6 1 Tf +1.2002 0 TD +0.1156 Tw +[( commands appear in )]TJ +/TT14 1 Tf +10.2835 0 TD +0 Tw +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1156 Tw +[( ahead of any of the)]TJ +-22.0509 -1.2889 TD +0.1744 Tw +(filtering commands below except )Tj +/TT10 1 Tf +15.6626 0 TD +0 Tw +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1744 Tw +(, they are postponed until)Tj +-19.2632 -1.2889 TD +0.2022 Tw +[(after the filters. Thus, assuming the caller has placed the attribute)]TJ +0 -1.2222 TD +0.1933 Tw +(options after the filters as well, no printing occurs for a file that is)Tj +T* +0.0656 Tw +[(filtered out. This is principally so that functions like )]TJ +/TT10 1 Tf +24.0057 0 TD +0 Tw +(DIR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0656 Tw +[( \(below\) can)]TJ +-25.8059 -1.2889 TD +0.4433 Tw +(both request printing and pass arbitrary commands through to)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +(, and have the printing happen in the appropriate place.)Tj +/TT10 1 Tf +-5.6509 -2.0667 TD +(PROMPT)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MESS)Tj +/TT6 1 Tf +3.7327 0 TD +0.41 Tw +(Prompts with the yes/no question )Tj +/TT14 1 Tf +17.5031 0 TD +0 Tw +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.41 Tw +(; if user)Tj +-19.9035 -1.2889 TD +0.05 Tw +(responds with )Tj +/TT10 1 Tf +6.6947 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +(o, abort command processing for this)Tj +-7.2948 -1.2889 TD +0 Tw +(file.)Tj +/TT10 1 Tf +-7.5833 -2 TD +(OLDERTHAN)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +1.9324 0 TD +0.1067 Tw +(Continue command processing if the file hasnt been)Tj +0 -1.2889 TD +0.0222 Tw +(referenced \(read or written\) in )Tj +/TT14 1 Tf +13.7351 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0222 Tw +[( days. )]TJ +/TT14 1 Tf +3.1575 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0222 Tw +[( can also be a)]TJ +-18.0928 -1.2889 TD +0.1456 Tw +(string naming an explicit date and time since which)Tj +0 -1.2222 TD +0 Tw +(the file must not have been referenced.)Tj +/TT10 1 Tf +-7.5833 -2 TD +(NEWERTHAN)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +1.9324 0 TD +0.2767 Tw +(Continue command processing if the file has been)Tj +0 -1.2889 TD +0.0833 Tw +(written within the last )Tj +/TT14 1 Tf +10.4012 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0833 Tw +[( days. )]TJ +/TT14 1 Tf +3.3408 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0833 Tw +[( can also be a string)]TJ +-14.9422 -1.2889 TD +0.1689 Tw +[(naming an explicit date and time. Note that this is)]TJ +0 -1.2222 TD +0.3244 Tw +(not quite the complement of )Tj +/TT10 1 Tf +14.3654 0 TD +0 Tw +(OLDERTHAN)Tj +/TT6 1 Tf +5.4009 0 TD +0.3244 Tw +(, since it)Tj +-19.7663 -1.2889 TD +0 Tw +(ignores the read date.)Tj +/TT10 1 Tf +-5.1833 -2 TD +(BY)Tj +/TT16 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(USER)Tj +/TT6 1 Tf +3.7331 0 TD +0.3189 Tw +(Continue command processing if the file was last)Tj +0 -1.2889 TD +0.2111 Tw +(written by the given user, i.e., its )Tj +/TT10 1 Tf +16.1428 0 TD +0 Tw +(AUTHOR)Tj +/TT6 1 Tf +3.6006 0 TD +0.2111 Tw +[( attribute)]TJ +-19.7434 -1.2889 TD +0 Tw +(matches \(case insensitively\) )Tj +/TT14 1 Tf +12.4814 0 TD +(USER)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-17.6652 -2.0667 TD +(@)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +1.3331 Tc +(XX)Tj +/TT6 1 Tf +2.5333 0 TD +0 Tc +0.0233 Tw +[( is either a function of one argument \()]TJ +/TT14 1 Tf +16.8039 0 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0233 Tw +(\), or)Tj +-22.2047 -1.2889 TD +0.5233 Tw +(an arbitrary expression which uses the variable)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FILENAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.14 Tw +[( freely. If )]TJ +/TT14 1 Tf +5.0131 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.14 Tw +[( returns )]TJ +/TT10 1 Tf +3.9841 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.14 Tw +(, abort command)Tj +-16.1984 -1.2889 TD +0 Tw +(processing for this file.)Tj +ET +endstream +endobj +111 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +113 0 obj +<< +/Length 4691 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-33)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0522 Tw +(The following two commands apply not to any particular file, but globally to the manner)Tj +0 -1.2222 TD +0 Tw +(in which directory information is printed.)Tj +/TT10 1 Tf +7.55 -2 TD +(OUT)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILE)Tj +/TT6 1 Tf +3.733 0 TD +(Directs output to )Tj +/TT14 1 Tf +7.7603 0 TD +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-16.544 -2.0667 TD +(COLUMNS)Tj +/TT16 1 Tf +4.2007 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(N)Tj +/TT6 1 Tf +1.9326 0 TD +0.0933 Tw +(Attempts to format output in )Tj +/TT14 1 Tf +13.5931 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0933 Tw +[( columns \(rather than)]TJ +-14.1932 -1.2889 TD +0 Tw +(just 1\).)Tj +/TT10 1 Tf +-18.6667 -2.8889 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.3867 Tw +[( uses the variable )]TJ +/TT10 1 Tf +9.4378 0 TD +0 Tw +(DIRCOMMANDS)Tj +/TT6 1 Tf +6.6011 0 TD +0.3867 Tw +[( as a spelling list to correct spelling and define)]TJ +-21.4397 -1.2889 TD +0 Tw +(abbreviations and synonyms \(see Chapter 20\). Currently the following abbreviations are recognized:)Tj +/TT10 1 Tf +16.1333 -1.7111 TD +[(AU)-1333.1(=> AUTHOR)]TJ +0.6 -1.5556 TD +[(-)-1333.2(=> PAUSE)]TJ +-4.2 -1.5556 TD +[(COLLECT?)-1332.6(=> PROMPT " ? " COLLECT)]TJ +3.6 -1.5556 TD +(DA)Tj +-1.2 -1.5556 TD +[(DATE)-1332.9(=> CREATIONDATE)]TJ +1.2 -1.5556 TD +[(TI)-1333.1(=> WRITEDATE)]TJ +-0.6 -1.5556 TD +[(DEL)-1333(=> DELETE)]TJ +-0.6 -1.5556 TD +(DEL?)Tj +-1.8 -1.5556 TD +[(DELETE?)-1332.6(=> PROMPT " delete? " DELETE)]TJ +2.4 -1.5556 TD +[(OLD)-1333(=> OLDERTHAN 90)]TJ +0.6 -1.5556 TD +[(PR)-1333.1(=> PROTECTION)]TJ +T* +[(SI)-1333.1(=> SIZE)]TJ +-3 -1.5556 TD +[(VERBOSE)-1332.6(=> AUTHOR CREATIONDATE SIZE )]TJ +5.5333 -1 TD +(READDATE WRITEDATE)Tj +-16 -2.3267 TD +(\(FILDIR)Tj +/TT6 1 Tf +4.2 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILEGROUP)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 196.0588 259.4 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 259.4 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Obsolete synonym of )Tj +/TT10 1 Tf +9.6421 0 TD +(\(DIRECTORY)Tj +/TT16 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILEGROUP)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-24.5607 -2.5489 TD +(\(DIR)Tj +/TT6 1 Tf +2.4 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FILEGROUP)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +1.7991 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 246.0009 219.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 219.86 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +0.4911 Tw +(Convenient form of )Tj +/TT10 1 Tf +10.4001 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.4911 Tw +[( for use in type-in at the executive. Performs)]TJ +/TT10 1 Tf +-15.801 -1.2889 TD +0 Tw +(\(DIRECTORY )Tj +/TT14 1 Tf +7.2012 0 TD +(FILEGROUP)Tj +/TT10 1 Tf +5.4009 0 TD +( \(P)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +1.7976 -0.3333 TD +(1)Tj +/TT16 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(COM)Tj +1.7997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\)\))Tj +/TT6 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-26.2169 -2.8822 TD +(\(NDIR)Tj +/TT4 1 Tf +10 0 0 10 129 162.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 131.7783 162.72 Tm +(FILEGROUP)Tj +/TT20 1 Tf +10 0 0 10 180.3862 162.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 183.1645 162.72 Tm +(COM)Tj +1.7995 -0.3333 TD +(1)Tj +/TT20 1 Tf +10 0 0 10 204.76 162.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.5383 162.72 Tm +(...)Tj +/TT20 1 Tf +10 0 0 10 223.7409 162.72 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 226.5193 162.72 Tm +(COM)Tj +1.8001 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 253.5209 162.72 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 162.72 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +0.0967 Tw +(Version of )Tj +/TT10 1 Tf +5.0112 0 TD +0 Tw +(DIR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0967 Tw +[( that lists the file names in a multi-column format. Also, by default only)]TJ +-6.8115 -1.2889 TD +0 Tw +(lists the most recent version of files \(unless )Tj +/TT14 1 Tf +19.1411 0 TD +(FILEGROUP)Tj +/TT6 1 Tf +5.4009 0 TD +( contains an explicit version\).)Tj +/TT4 1 Tf +10 0 0 10 54 88.58 Tm +(File Servers)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 85.87 m +510.01 85.87 l +S +BT +/TT6 1 Tf +9 0 0 9 78 63.92 Tm +0.0044 Tw +(A file server is a shared resource on a local communications network which provides large amounts of)Tj +0 -1.2222 TD +0.0467 Tw +[(file storage. Different file servers honor a variety of access protocols. Medley supports the following)]TJ +ET +endstream +endobj +114 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT20 115 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +117 0 obj +<< +/Length 5538 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-34)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.08 Tw +[(protocols: PUP-FTP, PUP-Leaf, and NS Filing. In addition, there are library packages available that)]TJ +0 -1.2222 TD +0 Tw +(support other communications protocols, such as TCP/IP and RS232.)Tj +0 -2.8889 TD +0.1889 Tw +(With the exception of the RS232-based protocols, which exist only for file transfer, these network)Tj +0 -1.2222 TD +0.0133 Tw +(protocols are integrated into the Medley file system to allow files on a file server to be treated in much)Tj +T* +0.2611 Tw +[(the same way files are accessed on local devices, such as the disk. Thus, it is possible to call)]TJ +/TT10 1 Tf +T* +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.05 Tw +[( on the file )]TJ +/TT10 1 Tf +5.1092 0 TD +0 Tw +({ERIS}FOO.DCOM;3)Tj +/TT6 1 Tf +13.2021 0 TD +0.05 Tw +[( and read from it or write to it just as if the file)]TJ +-24.3123 -1.2889 TD +0.1989 Tw +(had been on the local disk )Tj +/TT10 1 Tf +12.9482 0 TD +0 Tw +(\({DSK}FOO.DCOM;3\))Tj +/TT6 1 Tf +13.8022 0 TD +0.1989 Tw +(, rather than on a remote server named)Tj +-26.7505 -1.2889 TD +0.0967 Tw +[(ERIS. However, the protocols vary in how much control they give the workstation over file system)]TJ +0 -1.2222 TD +0 Tw +(operations. Hence, some restrictions apply, as described in the following sections.)Tj +/TT4 1 Tf +10 0 0 10 126 438 Tm +(PUP File Server Protocols)Tj +/TT6 1 Tf +9 0 0 9 126 414.34 Tm +0.1878 Tw +[(There are two file server protocols in the family of PUP protocols: Leaf and FTP. Some servers)]TJ +T* +0.2311 Tw +[(support both, while others support only one of them. Medley uses whichever protocol is more)]TJ +T* +0 Tw +(appropriate for the requested operation.)Tj +0 -2.8889 TD +0.0978 Tw +(Leaf is a random access protocol, so files opened using these protocols are )Tj +/TT10 1 Tf +34.1588 0 TD +0 Tw +(RANDACCESSP)Tj +/TT6 1 Tf +6.6011 0 TD +0.0978 Tw +(, and thus)Tj +-40.7599 -1.2889 TD +0.4156 Tw +[(most normal I/O operations can be performed. However, Leaf does not support directory)]TJ +0 -1.2222 TD +0.0333 Tw +[(enumeration. Hence, )]TJ +/TT10 1 Tf +9.8319 0 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.0333 Tw +[( cannot be used on a Leaf file server unless the server also supports)]TJ +-15.2328 -1.2889 TD +0.03 Tw +[(FTP. In addition, Leaf does not supply easy access to a files attributes. )]TJ +/TT10 1 Tf +32.2771 0 TD +0 Tw +(INFILEP)Tj +/TT6 1 Tf +4.2007 0 TD +0.03 Tw +[( and )]TJ +/TT10 1 Tf +2.2529 0 TD +0 Tw +(GETFILEINFO)Tj +/TT6 1 Tf +-38.7307 -1.2889 TD +0.0522 Tw +(have to open the file for input in order to obtain their information, and hence the files read date will)Tj +0 -1.2222 TD +0 Tw +(change, even though the semantics of these functions do not imply it.)Tj +0 -2.8889 TD +0.4144 Tw +[(FTP is a file transfer protocol that only permits sequential access to files. However, most)]TJ +0 -1.2222 TD +0.1367 Tw +[(implementations of it are considerably more efficient than Leaf. Medley uses FTP in preference to)]TJ +T* +0.1089 Tw +(Leaf whenever the call to )Tj +/TT10 1 Tf +11.8975 0 TD +0 Tw +(OPENSTREAM)Tj +/TT6 1 Tf +6.001 0 TD +0.1089 Tw +[( requests sequential access only. In particular, the functions)]TJ +/TT10 1 Tf +-17.8985 -1.2889 TD +0 Tw +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1389 Tw +[( and )]TJ +/TT10 1 Tf +2.4706 0 TD +0 Tw +(COPYFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1389 Tw +[( open their files for sequential access. If a file server supports FTP but for)]TJ +-10.872 -1.2889 TD +0.0822 Tw +(some reason it is undesirable for Lisp to use it, one can set the internal variable \\)Tj +/TT10 1 Tf +36.9342 0 TD +0 Tw +(FTPAVAILABLE)Tj +/TT6 1 Tf +7.2012 0 TD +0.0822 Tw +[( to)]TJ +/TT10 1 Tf +-44.1354 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-1.8003 -2.9556 TD +0.0144 Tw +[(The system normally maintains a Leaf connection to a host in the background. This connection can be)]TJ +0 -1.2222 TD +0.0133 Tw +(broken by calling )Tj +/TT10 1 Tf +7.9658 0 TD +0 Tw +(\(BREAKCONNECTION)Tj +/TT6 1 Tf +9.6016 0 TD +( )Tj +/TT14 1 Tf +0.2633 0 TD +(HOST)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.0133 Tw +[(. Any subsequent reference to files on that host will re-)]TJ +-20.8312 -1.2889 TD +0.0222 Tw +[(establish the connection. The principal use for this function arises when you interrupt a file operation)]TJ +0 -1.2222 TD +0.0733 Tw +(in such a way that the file server thinks the file is open but Lisp thinks it is closed \(or not yet open\).)Tj +T* +0 Tw +(As a result, the next time Lisp tries to open the file, it gets a file busy error.)Tj +/TT4 1 Tf +10 0 0 10 126 128.2 Tm +(Xerox NS File Server Protocols)Tj +/TT6 1 Tf +9 0 0 9 126 104.54 Tm +0.2422 Tw +(Interlisp supports file access to Xerox 803x file servers, using the Filing Protocol built on Xerox)Tj +T* +0.0622 Tw +[(Network Systems protocols. Medley determines that a host is an NS File Server by the presense of a)]TJ +T* +0.4244 Tw +(colon in its name, e.g., )Tj +/TT10 1 Tf +12.174 0 TD +0 Tw +({PHYLEX:})Tj +/TT6 1 Tf +5.4009 0 TD +0.4244 Tw +[(. The general format of NS fileserver device names is)]TJ +/TT10 1 Tf +-17.5749 -1.2889 TD +0 Tw +({)Tj +/TT14 1 Tf +0.6001 0 TD +(SERVERNAME:DOMAIN:ORGANIZATION)Tj +/TT10 1 Tf +18.0029 0 TD +(})Tj +/TT6 1 Tf +0.6001 0 TD +0.2489 Tw +[(; the device specification for an 8000-series product in)]TJ +-19.2031 -1.2889 TD +0.1389 Tw +[(general includes the ClearingHouse domain and organization. If domain and organization are not)]TJ +0 -1.2222 TD +0.02 Tw +(supplied directly, then they are obtained from the defaults, which themselves are found by consulting)Tj +ET +endstream +endobj +118 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +120 0 obj +<< +/Length 5359 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-35)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0411 Tw +[(the nearest ClearingHouse if you have not defined them in an init file. However, note that the server)]TJ +0 -1.2222 TD +0.1022 Tw +(name must still have a colon in it to distinguish it from other types of host names \(e.g., PUP server)Tj +T* +0 Tw +(names\).)Tj +0 -2.8889 TD +0.1022 Tw +[(NS file servers in general permit arbitrary characters in file names. You should be cognizant of file)]TJ +0 -1.2222 TD +0.2056 Tw +(name quoting conventions, and the fact that any file name presented as a symbol needs to have)Tj +T* +0.0855 Tw +[(characters of significance to the reader, such as space, escaped with a %. Of course, one can always)]TJ +T* +0 Tw +(present the file name as a string, in which case only the quoting conventions are important.)Tj +0 -2.8889 TD +0.1078 Tw +(NS file servers support a true hierarchical file system, where subdirectories are just another kind of)Tj +0 -1.2222 TD +0.19 Tw +[(file, which needs to be explicitly created. In Interlisp, subdirectories are created automatically as)]TJ +T* +0.0956 Tw +[(needed: A call to )]TJ +/TT10 1 Tf +8.3943 0 TD +0 Tw +(OPENFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0956 Tw +[( to create a file in a non-existent subdirectory automatically creates the)]TJ +-13.1951 -1.2889 TD +0.0178 Tw +(subdirectory. )Tj +/TT10 1 Tf +6.4086 0 TD +0 Tw +(CONN)Tj +/TT6 1 Tf +2.4004 0 TD +0.0178 Tw +[( to a non-existent subdirectory asks you whether to create the directory. For those)]TJ +-8.809 -1.2889 TD +0.0344 Tw +(using Star software, a directory corresponds to a "File Drawer," while a subdirectory corresponds to a)Tj +0 -1.2222 TD +0 Tw +("File Folder.")Tj +0 -2.8889 TD +0.16 Tw +[(Because of their hierarchical structure, NS directories can be enumeerated to arbitrary levels. The)]TJ +0 -1.2222 TD +0.36 Tw +(default is to enumerate all the files \(the leaves of the tree\), omitting the subdirectory nodes)Tj +T* +0 Tw +(themselves. This default can be changed by the following variable:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(FILING.ENUMERATION.DEPTH)Tj +/TT12 1 Tf +10 0 0 10 231.6211 336 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 336 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0078 Tw +(This variable is either a number, specifying the number of levels deep to enumeerate, or )Tj +/TT10 1 Tf +39.1479 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +-39.748 -1.2889 TD +0.1078 Tw +[(meaning enumerate to all levels. In the former case, when the enumeration reaches the)]TJ +0 -1.2222 TD +0.0844 Tw +(specified depth, only the subdirectory name rooted at that level is listed, and none of its)Tj +T* +0.0744 Tw +[(descendants is listed. When )]TJ +/TT10 1 Tf +13.1134 0 TD +0 Tw +(FILING.ENUMERATION.DEPTH)Tj +/TT6 1 Tf +14.4023 0 TD +0.0744 Tw +[( is )]TJ +/TT10 1 Tf +1.3637 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0744 Tw +(, all files are listed, and)Tj +-29.4796 -1.2889 TD +0 Tw +(no subdirectory names are listed. )Tj +/TT10 1 Tf +15.1646 0 TD +(FILING.ENUMERATION.DEPTH)Tj +/TT6 1 Tf +14.4023 0 TD +( is initially )Tj +/TT10 1 Tf +4.8843 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-35.0513 -2.0667 TD +0.0011 Tw +(Independent of )Tj +/TT10 1 Tf +7.3012 0 TD +0 Tw +(FILING.ENUMERATION.DEPTH)Tj +/TT6 1 Tf +14.4023 0 TD +0.0011 Tw +(, a request to enumerate the top-level of a)Tj +-21.7035 -1.2889 TD +0.1567 Tw +[(file servers hierarchy lists only the top level, i.e., assumes a depth of 1. For example,)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(\(DIRECTORY {PHYLEX:}\))Tj +/TT6 1 Tf +13.2021 0 TD +( lists exactly the top-level directories of the server )Tj +/TT10 1 Tf +22.1001 0 TD +(PHYLEX:)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-44.8363 -2.9556 TD +0.25 Tw +[(NS file servers do not currently support random access. Therefore, )]TJ +/TT10 1 Tf +32.6206 0 TD +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.25 Tw +[( of an NS file)]TJ +-38.6216 -1.2889 TD +0.0222 Tw +[(generally causes an error. However, )]TJ +/TT10 1 Tf +16.5581 0 TD +0 Tw +(GETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.0222 Tw +[( returns the correct character position for open files)]TJ +-22.5591 -1.2889 TD +0.0001 Tc +0.0032 Tw +(on NS file servers. In addition, )Tj +/TT10 1 Tf +13.9887 0 TD +0 Tc +0 Tw +(SETFILEPTR)Tj +/TT6 1 Tf +6.001 0 TD +0.0001 Tc +0.0032 Tw +( works in the special case where the file is open for input,)Tj +-19.9896 -1.2889 TD +0 Tc +0.1089 Tw +[(and the file pointer is being set forward. In this case, the intervening charactgers are automatically)]TJ +0 -1.2222 TD +0 Tw +(read.)Tj +0 -2.8889 TD +0.0044 Tw +(Even while Interlisp has no file open on an NS Server, the system maintains a "session" with the server)Tj +0 -1.2222 TD +0.0744 Tw +[(for a while in order to improve the speed of subsequent requests to the server. While this session is)]TJ +T* +0.0078 Tw +(open, it is possible for some nodes of the servers file system to appear "busy" or inaccessible to certain)Tj +T* +0.1278 Tw +[(clients on other workstations \(such as Star\). If this happens, the following function can be used to)]TJ +T* +0 Tw +(terminate any open sessions immediately.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(BREAK.NSFILING.CONNECTION )Tj +/TT14 1 Tf +16.2026 0 TD +(HOST)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 274.8281 68.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 68.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Closes any open connections to NS file server )Tj +/TT14 1 Tf +20.3232 0 TD +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +121 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +123 0 obj +<< +/Length 4548 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-36)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Operating System Designations)Tj +/TT6 1 Tf +9 0 0 9 126 544.54 Tm +0.0656 Tw +[(Some of the network server protocols are implemented on more than one kind of foreign host. Such)]TJ +0 -1.2222 TD +0.04 Tw +[(hosts vary in their conventions for logging in, naming files, representing end-of-line, etc. In order for)]TJ +T* +0.5222 Tw +(Interlisp to communicate gracefully with all these hosts, it is necessary that the variable)Tj +/TT10 1 Tf +T* +0 Tw +(NETWORKOSTYPES)Tj +/TT6 1 Tf +8.4014 0 TD +0.2522 Tw +[( be set correctly.The following functions are now considered obsolete, but are)]TJ +-8.4014 -1.2889 TD +0 Tw +(provided for backwards compatibility:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(NETWORKOSTYPES)Tj +/TT12 1 Tf +10 0 0 10 225.6123 477.6 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 477.6 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0056 Tw +[(An association-list that associates a host name with its operating system type. Elements in)]TJ +0 -1.2222 TD +0.16 Tw +(this list are of the form )Tj +/TT10 1 Tf +11.212 0 TD +0 Tw +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(HOSTNAME)Tj +/TT8 1 Tf +4.8008 0 TD +0.16 Tw +[( . )]TJ +/TT14 1 Tf +1.07 0 TD +0 Tw +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +0.16 Tw +[(. For example, )]TJ +/TT10 1 Tf +7.3861 0 TD +0 Tw +(\(MAXC2)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.41 0 TD +0.3833 Tw +(. TENEX\))Tj +/TT6 1 Tf +5.1841 0 TD +0.16 Tw +[(. The)]TJ +-37.2641 -1.2889 TD +0.1289 Tw +(operating system types currently known to Lisp are TENEX, TOPS20, UNIX, and VMS.)Tj +0 -1.2222 TD +0.2867 Tw +(The host names in this list should be the "canonical" host name, represented as an)Tj +T* +0.0078 Tw +[(uppercase atom. For PUP and NS hosts, the function )]TJ +/TT10 1 Tf +23.7863 0 TD +0 Tw +(CANONICAL.HOSTNAME)Tj +/TT6 1 Tf +10.8018 0 TD +0.0078 Tw +[( \(below\) can)]TJ +-34.588 -1.2889 TD +0 Tw +(be used to determine which of several aliases of a server is the canonical name.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\(CANONICAL.HOSTNAME)Tj +/TT12 1 Tf +10 0 0 10 252.6167 382.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 255.395 382.46 Tm +(HOSTNAME)Tj +/TT12 1 Tf +10 0 0 10 298.602 382.46 Tm +(\) )Tj +/TT6 1 Tf +9 0 0 9 492.6299 382.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1778 Tw +(Returns the "canonical" name of the server )Tj +/TT14 1 Tf +20.2274 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.1778 Tw +(, or )Tj +/TT10 1 Tf +2.0465 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1778 Tw +[( if )]TJ +/TT14 1 Tf +1.4796 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.1778 Tw +[( is not the)]TJ +-35.1553 -1.2889 TD +0 Tw +(name of a server.)Tj +/TT4 1 Tf +10 0 0 10 126 326.92 Tm +(Logging In)Tj +/TT6 1 Tf +9 0 0 9 126 303.26 Tm +0.1967 Tw +[(Most file servers require a user name and password for access. Medley maintains an ephemeral)]TJ +0 -1.2222 TD +0.0622 Tw +[(database of user names and passwords for each host accessed recently. The database vanishes when)]TJ +/TT10 1 Tf +T* +0 Tw +(LOGOUT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6167 0 TD +(SAVEVM)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6167 0 TD +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1167 Tw +(, or )Tj +/TT10 1 Tf +1.9243 0 TD +0 Tw +(MAKESYS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1167 Tw +[( is executed, so that the passwords remain secure from any)]TJ +-18.16 -1.2889 TD +0.0722 Tw +[(subsequent user of the same virtual memory image. Medley also maintains a notion of the "default")]TJ +0 -1.2222 TD +0 Tw +(user name and password, which are generally those with which you initially log in.)Tj +0 -2.8889 TD +0.0033 Tw +(When a file server for which the system does not yet have an entry in its password database requests a)Tj +0 -1.2222 TD +0.03 Tw +[(name and password, the system first tries the default user name and password. If the file server does)]TJ +T* +0.04 Tw +(not recognize that name/password, the system prompts you for a name and password to use for that)Tj +T* +0 Tw +(host. It suggests a default name:)Tj +/TT10 1 Tf +9.3333 -2.8889 TD +({ERIS} Login: Green)Tj +/TT6 1 Tf +-9.3333 -2.9556 TD +0.0167 Tw +(which you can accept by pressing [Return}, or replace the name by typing a new name or backspacing)Tj +0 -1.2222 TD +0 Tw +(over it. Following the name, you are prompted for a password:)Tj +/TT10 1 Tf +9.3333 -2.8889 TD +({ERIS} Login: Verdi \(password\))Tj +/TT6 1 Tf +-9.3333 -2.9556 TD +0.1767 Tw +[(which is not echoed, terminated by another [Return]. This information is stored in the password)]TJ +0 -1.2222 TD +0 Tw +(database so that you are prompted only once, until the database is again cleared.)Tj +ET +endstream +endobj +124 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +126 0 obj +<< +/Length 6551 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-37)Tj +/TT12 1 Tf +10 0 0 10 408 612 Tm +(STREAMS & FILES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.17 Tw +(Medley also prompts for password information when a protection violation occurs on accessing a)Tj +0 -1.2222 TD +0.0544 Tw +[(directory on certain kinds of servers that support password-protected directories. Some such servers)]TJ +T* +0.0889 Tw +(allow one to protect a file in a way that is inaccessible to even its owner until the files protection is)Tj +T* +0.1267 Tw +[(changed. In such cases, no password would help, and the system causes the normal )]TJ +/TT10 1 Tf +39.3258 0 TD +0 Tw +(PROTECTION)Tj +-39.3258 -1.2889 TD +(VIOLATION)Tj +/TT6 1 Tf +5.4009 0 TD +( error.)Tj +-5.4009 -2.9555 TD +0.2556 Tw +(You can abort a password interaction by typing the )Tj +/TT10 1 Tf +25.218 0 TD +0 Tw +(ERROR)Tj +/TT6 1 Tf +3.0005 0 TD +0.2556 Tw +[( interrupt, initially Cosntrol-E. This)]TJ +-28.2185 -1.2889 TD +0.06 Tw +(generally either causes a )Tj +/TT10 1 Tf +11.2952 0 TD +0.1456 Tw +(PROTECTION VIOLATION)Tj +/TT6 1 Tf +12.1475 0 TD +0.06 Tw +[( error, if the password was requested in order to)]TJ +-23.4427 -1.2889 TD +0.0411 Tw +(gain access to a protected file on an otherwise accessible server; or to act as though the server did not)Tj +0 -1.2222 TD +0 Tw +(exist, in the case where the password was needed to gain any access to the server.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\(LOGIN)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(HOSTNAME)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DIRECTORY)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(MSG)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 273.0264 441.8 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 441.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2556 Tw +(Forces Medley to ask for your name and password to be used when accessing host)Tj +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0122 Tw +[(. Any previous login information for )]TJ +/TT14 1 Tf +16.7203 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0122 Tw +[( is overridden. If )]TJ +/TT14 1 Tf +7.8995 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.0122 Tw +[( is)]TJ +/TT10 1 Tf +-39.0222 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.19 Tw +(, it overrides login information for all hosts and resets the default user name and)Tj +-1.8003 -1.2889 TD +0.1178 Tw +[(password to be those typed in by you. The special value )]TJ +/TT14 1 Tf +26.6614 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +0.3678 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3678 0 TD +(NS::)Tj +/TT6 1 Tf +2.4004 0 TD +0.1178 Tw +[( is used to)]TJ +-35.1982 -1.2889 TD +0 Tw +(obtain the default user name and password for all logins for NS Servers.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.2121 0 TD +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.2922 Tw +[( is the atom )]TJ +/TT10 1 Tf +6.5258 0 TD +0 Tw +(QUIET)Tj +/TT6 1 Tf +3.0005 0 TD +0.2922 Tw +(, only prompts you if there is no cached information for)Tj +/TT14 1 Tf +-12.5387 -1.2889 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-4.8008 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.0355 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.1156 Tw +[( is specified, it is the name of a directory on )]TJ +/TT14 1 Tf +20.6515 0 TD +0 Tw +(HOSTNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.1156 Tw +[(. In this case, the)]TJ +-31.8886 -1.2889 TD +0.1189 Tw +[(information requested is the "connect" password for that directory. Connect passwords)]TJ +0 -1.2222 TD +0 Tw +(for any number of different directories on a host can be maintained.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9977 0 TD +(MSG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0778 Tw +[( is non-)]TJ +/TT10 1 Tf +3.4134 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0778 Tw +(, it is a message \(a string\) to be printed before the name and password)Tj +-8.0117 -1.2889 TD +0 Tw +(information is requested.)Tj +/TT10 1 Tf +0 -2 TD +(LOGIN)Tj +/TT6 1 Tf +3.0005 0 TD +( returns the user name with which you completed the login.)Tj +/TT10 1 Tf +-5.6672 -2.5489 TD +(\(SETPASSWORD)Tj +/TT6 1 Tf +7.2012 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(USER)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PASSWORD)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DIRECTORY)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 316.2334 238.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 238.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2444 Tw +(Sets the values in the internal password database exactly as if the strings )Tj +/TT14 1 Tf +35.4102 0 TD +0 Tw +(USER)Tj +/TT6 1 Tf +2.4004 0 TD +0.2444 Tw +[( and)]TJ +/TT14 1 Tf +-37.8106 -1.2889 TD +0 Tw +(PASSWORD)Tj +/TT6 1 Tf +4.8008 0 TD +( were typed in via )Tj +/TT10 1 Tf +8.2393 0 TD +(\(LOGIN)Tj +/TT6 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(HOST)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(DIRECTORY)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-30.259 -2.5489 TD +(\(SETUSERNAME)Tj +/TT6 1 Tf +7.2012 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(NAME)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 196.0649 186.92 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 186.92 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Sets the default uer name to )Tj +/TT14 1 Tf +12.5771 0 TD +(NAME)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-17.6442 -2.5489 TD +(\(USERNAME)Tj +/TT6 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(STRPTR)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(PRESERVECASE)Tj +/TT10 1 Tf +7.2012 0 TD +(\))Tj +/TT12 1 Tf +10 0 0 10 276.1772 147.38 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 147.38 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT14 1 Tf +1.1699 0 TD +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.5 0 TD +(=)Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.25 Tw +[(, returns the default user name. This is the only value of )]TJ +/TT14 1 Tf +28.3828 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.25 Tw +[( that is)]TJ +-36.5537 -1.2889 TD +0 Tw +(meaningful in Medley.)Tj +/TT10 1 Tf +0 -2 TD +(USERNAME)Tj +/TT6 1 Tf +4.8008 0 TD +0.1567 Tw +[( returns the value as a string, unless )]TJ +/TT14 1 Tf +17.3334 0 TD +0 Tw +(STRPTR)Tj +/TT6 1 Tf +3.6006 0 TD +0.1567 Tw +[( is )]TJ +/TT10 1 Tf +1.5282 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1567 Tw +(, in which case )Tj +/TT10 1 Tf +7.3293 0 TD +0 Tw +(USERNAME)Tj +/TT6 1 Tf +-35.1924 -1.2889 TD +0.0422 Tw +[(returns the value as an atom. The name is returned in uppercase, unless )]TJ +/TT14 1 Tf +32.7854 0 TD +0 Tw +(PRESERVECASE)Tj +/TT6 1 Tf +-32.7854 -1.2889 TD +(is true.)Tj +ET +endstream +endobj +127 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 14 0 R +/TT14 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +129 0 obj +<< +/Length 3105 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(23-38)Tj +/TT12 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Abnormal Conditions)Tj +/TT6 1 Tf +9 0 0 9 126 544.54 Tm +0.0344 Tw +(If Medley tries to access a file and does not get a response from the file server in a areasonable period)Tj +0 -1.2222 TD +0.0811 Tw +[(of time, it prints a message that the file server is not responding, and keeps trying. If the file server)]TJ +T* +0.1244 Tw +[(has actually crashed, this may continue indefinitely. A Control-E or similar interrupt aborts out of)]TJ +T* +0 Tw +(this state.)Tj +0 -2.8889 TD +0.0156 Tw +(If the file server crashes but is restarted before you attempt to do anything, file operations will usually)Tj +0 -1.2222 TD +0.1033 Tw +(proceed normally, except for a brief pause while Medley tries to re-establish any connections it had)Tj +T* +0.1267 Tw +[(open before the crash. However, this is not always possible. For example, when a file is open for)]TJ +T* +0 Tw +(sequential output and the server crashes, there is no way to recover the output already written, since it)Tj +T* +(vanished with the crash. In such cases, the system will cause an error such as )Tj +/TT10 1 Tf +34.4453 0 TD +(Connection Lost)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT10 1 Tf +-43.4468 -2.9556 TD +(LOGOUT)Tj +/TT6 1 Tf +3.6006 0 TD +0.2189 Tw +[( closes any file server connections that are currently open. On return, it attempts to re-)]TJ +-3.6006 -1.2889 TD +0.0211 Tw +[(establish connections for any files that were open before logging out. If a file has disappeared or been)]TJ +0 -1.2222 TD +0.1633 Tw +[(modified, Medley reports this fact. Files that were open for sequential access generally cannot be)]TJ +T* +0 Tw +(reopened after )Tj +/TT10 1 Tf +6.7051 0 TD +(LOGOUT)Tj +/TT6 1 Tf +3.6006 0 TD +(.)Tj +-10.3057 -2.9556 TD +0.2867 Tw +(Interlisp supports simultaneous access to the same server from different processes and permits)Tj +0 -1.2222 TD +0.1989 Tw +(overlapping of Lisp computation with file server operations, allowing for improved performance.)Tj +T* +0.0144 Tw +(However, as a corollary of this, a file is not closed the instant that )Tj +/TT10 1 Tf +29.232 0 TD +0 Tw +(CLOSEF)Tj +/TT6 1 Tf +3.6006 0 TD +0.0144 Tw +[( returns; Interlisp closes the)]TJ +-32.8326 -1.2889 TD +0.2178 Tw +[(file "in the bckground". It is therefore very important that you exit Interlisp via)]TJ +/TT10 1 Tf +38.0128 0 TD +0.5211 Tw +[( \(LOGOUT\))]TJ +/TT6 1 Tf +5.922 0 TD +0.2178 Tw +[( or)]TJ +/TT10 1 Tf +-43.9347 -1.2889 TD +0 Tw +(\(LOGOUT T\))Tj +/TT6 1 Tf +6.001 0 TD +(, rather than boot the machine.)Tj +-6.001 -2.9556 TD +0.0778 Tw +(On rare occasions, the Ethernet may appear completely unresponsive, due to Interlisp having gotten)Tj +0 -1.2222 TD +0.1111 Tw +[(into a bad state. Type )]TJ +/TT10 1 Tf +10.63 0 TD +0 Tw +(\(RESTART.ETHER\))Tj +/TT6 1 Tf +9.0015 0 TD +0.1111 Tw +[( to reinitialize Lisps Ethernet driver\(s\), just as when the)]TJ +-19.6315 -1.2889 TD +0 Tw +(Lisp system is started up following a )Tj +/TT10 1 Tf +16.5186 0 TD +(LOGOUT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(SYSOUT)Tj +/TT6 1 Tf +3.6006 0 TD +(, etc.)Tj +ET +endstream +endobj +130 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT10 8 0 R +/TT12 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +9 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +131 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +132 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +133 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +134 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +135 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +136 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +137 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +138 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +139 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +140 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 96 +/FontBBox [-170 -225 1116 931] +/FontName /Helvetica-Oblique +/ItalicAngle -15 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 131 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 0 278 278 +0 0 556 556 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 0 722 722 667 611 0 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 0 667 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 132 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 0 371 0 0 840 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 0 250 250 0 0 606 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 133 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 250 0 250 0 +0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 0 +0 722 0 0 0 611 556 722 0 333 0 0 556 944 778 778 +0 0 0 556 611 778 722 944 0 0 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 0 444 278 778 556 444 +500 0 389 389 333 556 500 722 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 134 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 600 600 0 600 0 0 600 600 600 0 600 600 600 600 +600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 135 0 R +>> +endobj +14 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 119 +/Widths [278 0 0 0 0 0 667 0 0 333 0 0 0 333 278 0 +0 0 0 0 0 0 0 0 0 0 278 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 0 +667 0 722 667 611 722 0 0 0 0 0 0 0 0 0 0 +0 556 0 500 556 556 278 556 556 222 0 0 222 0 556 556 +0 0 333 500 278 556 0 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 136 0 R +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 +0 600 0 0 0 0 0 0 0 0 600 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 137 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 0 0 0 0 0 0 0 333 0 0 0 0 250 0 +0 0 0 0 0 0 0 0 0 0 0 250 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 138 0 R +>> +endobj +29 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 62 +/LastChar 62 +/Widths [600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 139 0 R +>> +endobj +115 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 140 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +11 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 13 0 R +/Contents 12 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 73 0 R +/Contents 72 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 76 0 R +/Contents 75 0 R +>> +endobj +78 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 80 0 R +/Contents 79 0 R +>> +endobj +81 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 83 0 R +/Contents 82 0 R +>> +endobj +84 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 86 0 R +/Contents 85 0 R +>> +endobj +87 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 89 0 R +/Contents 88 0 R +>> +endobj +90 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 92 0 R +/Contents 91 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 95 0 R +/Contents 94 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 98 0 R +/Contents 97 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 101 0 R +/Contents 100 0 R +>> +endobj +102 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 104 0 R +/Contents 103 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 107 0 R +/Contents 106 0 R +>> +endobj +109 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 111 0 R +/Contents 110 0 R +>> +endobj +112 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 114 0 R +/Contents 113 0 R +>> +endobj +116 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 118 0 R +/Contents 117 0 R +>> +endobj +119 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 121 0 R +/Contents 120 0 R +>> +endobj +122 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 124 0 R +/Contents 123 0 R +>> +endobj +125 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 127 0 R +/Contents 126 0 R +>> +endobj +128 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 130 0 R +/Contents 129 0 R +>> +endobj +141 0 obj +<< +/S /D +>> +endobj +142 0 obj +<< +/Nums [0 141 0 R ] +>> +endobj +10 0 obj +<< +/Type /Pages +/Kids [1 0 R 11 0 R 17 0 R 20 0 R 23 0 R 26 0 R 30 0 R 33 0 R 36 0 R 39 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [42 0 R 47 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +77 0 obj +<< +/Type /Pages +/Kids [74 0 R 78 0 R 81 0 R 84 0 R 87 0 R 90 0 R 93 0 R 96 0 R 99 0 R 102 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +108 0 obj +<< +/Type /Pages +/Kids [105 0 R 109 0 R 112 0 R 116 0 R 119 0 R 122 0 R 125 0 R 128 0 R] +/Count 8 +/Parent 45 0 R +>> +endobj +45 0 obj +<< +/Type /Pages +/Kids [10 0 R 46 0 R 77 0 R 108 0 R ] +/Count 38 +/MediaBox [0 0 612 792] +>> +endobj +143 0 obj +<< +/CreationDate (D:20210202102710-06'00') +/ModDate (D:20210202102710-06'00') +/Producer (Apple pstopdf) +>> +endobj +144 0 obj +<< +/Type /Catalog +/Pages 45 0 R +/PageLabels 142 0 R +>> +endobj +xref +0 145 +0000000000 65535 f +0000225489 00000 n +0000000016 00000 n +0000004786 00000 n +0000221618 00000 n +0000221830 00000 n +0000222277 00000 n +0000222844 00000 n +0000223278 00000 n +0000219463 00000 n +0000228786 00000 n +0000225570 00000 n +0000004926 00000 n +0000012258 00000 n +0000223836 00000 n +0000224253 00000 n +0000224728 00000 n +0000225654 00000 n +0000012427 00000 n +0000018855 00000 n +0000225738 00000 n +0000019013 00000 n +0000024719 00000 n +0000225822 00000 n +0000024886 00000 n +0000029783 00000 n +0000225906 00000 n +0000029926 00000 n +0000036985 00000 n +0000225143 00000 n +0000225990 00000 n +0000037154 00000 n +0000042762 00000 n +0000226074 00000 n +0000042929 00000 n +0000046133 00000 n +0000226158 00000 n +0000046300 00000 n +0000051429 00000 n +0000226242 00000 n +0000051585 00000 n +0000057850 00000 n +0000226326 00000 n +0000058030 00000 n +0000064331 00000 n +0000229332 00000 n +0000228923 00000 n +0000226410 00000 n +0000064500 00000 n +0000070720 00000 n +0000226494 00000 n +0000070889 00000 n +0000077343 00000 n +0000226578 00000 n +0000077523 00000 n +0000083635 00000 n +0000226662 00000 n +0000083802 00000 n +0000089871 00000 n +0000226746 00000 n +0000090038 00000 n +0000094917 00000 n +0000226830 00000 n +0000095062 00000 n +0000100420 00000 n +0000226914 00000 n +0000100565 00000 n +0000104825 00000 n +0000226998 00000 n +0000104981 00000 n +0000111195 00000 n +0000227082 00000 n +0000111362 00000 n +0000116875 00000 n +0000227166 00000 n +0000117029 00000 n +0000122961 00000 n +0000229061 00000 n +0000227250 00000 n +0000123128 00000 n +0000129098 00000 n +0000227334 00000 n +0000129265 00000 n +0000133460 00000 n +0000227418 00000 n +0000133605 00000 n +0000137643 00000 n +0000227502 00000 n +0000137775 00000 n +0000143458 00000 n +0000227586 00000 n +0000143625 00000 n +0000148890 00000 n +0000227670 00000 n +0000149046 00000 n +0000154043 00000 n +0000227754 00000 n +0000154210 00000 n +0000160452 00000 n +0000227838 00000 n +0000160632 00000 n +0000167631 00000 n +0000227924 00000 n +0000167812 00000 n +0000175605 00000 n +0000228011 00000 n +0000175775 00000 n +0000182646 00000 n +0000229200 00000 n +0000228099 00000 n +0000182827 00000 n +0000188221 00000 n +0000228187 00000 n +0000188380 00000 n +0000193125 00000 n +0000225313 00000 n +0000228275 00000 n +0000193320 00000 n +0000198912 00000 n +0000228363 00000 n +0000199069 00000 n +0000204482 00000 n +0000228451 00000 n +0000204628 00000 n +0000209230 00000 n +0000228539 00000 n +0000209398 00000 n +0000216003 00000 n +0000228627 00000 n +0000216160 00000 n +0000219319 00000 n +0000219603 00000 n +0000219801 00000 n +0000220008 00000 n +0000220209 00000 n +0000220413 00000 n +0000220605 00000 n +0000220801 00000 n +0000221003 00000 n +0000221209 00000 n +0000221412 00000 n +0000228715 00000 n +0000228744 00000 n +0000229439 00000 n +0000229563 00000 n +trailer +<< +/Size 145 +/Root 144 0 R +/Info 143 0 R +/ID [<835ce4cd2a632e392baecfd39996735d><835ce4cd2a632e392baecfd39996735d>] +>> +startxref +229635 +%%EOF diff --git a/docs/medley-irm/24-IO.TEDIT b/docs/medley-irm/24-IO.TEDIT new file mode 100644 index 00000000..519b9b5c --- /dev/null +++ b/docs/medley-irm/24-IO.TEDIT @@ -0,0 +1,141 @@ + INTERLISP-D REFERENCE MANUAL I/O FUNCTIONS "25"24. INPUT/OUTPUT FUNCTIONS 2 This chapter describes the standard I/O functions used for reading and printing characters and Interlisp expressions on files and other streams. First, the primitive input functions are presented, then the output functions, then functions for random-access operations (such as searching a file for a given stream, or changing the "next-character" pointer to a position in a file). Next, the PRINTOUT statement is documented (see below), which provides an easy way to write complex output operations. Finally, read tables, used to parse characters as Interlisp expressions, are documented. Specifying Streams for Input/Output Functions(INPUT/OUTPUT% FUNCTIONS NIL Input/Output% Functions NIL ("25") 1 SUBNAME SPECIFYING% STREAMS% FOR SUBTEXT specifying% streams% for) 1 Most of the input/output functions in Interlisp-D have an argument named STREAM or FILE, specifying on which open stream the function's action should occur (the name FILE is used in older functions that predate the concept of stream; the two should, however, be treated synonymously). The value of this argument should be one of the following: a stream An object of type STREAM, as returned by OPENSTREAM (Chapter 23) or other stream-producing functions, is always the most precise and efficient way to designate a stream argument. T The litatom T designates the terminal input or output stream of the currently running process, controlling input from the keyboard and output to the display screen. For functions where the direction (input or output) is ambiguous, T is taken to designate the terminal output stream. The T streams are always open; they cannot be closed. The terminal output stream can be set to a given window or display stream by using TTYDISPLAYSTREAM (Chapter 28). The terminal input stream cannot be changed. For more information on terminal I/O, see Chapter 30. NIL The litatom NIL designates the "primary" input or output stream. These streams are initially the same as the terminal input/output streams, but they can be changed by using the functions INPUT and OUTPUT. For functions where the direction (input or output) is ambiguous, e.g., GETFILEPTR, the argument NIL is taken to mean the primary input stream, if that stream is not identical to the terminal input stream, else the primary output stream. a window Uses the display stream of the window . Valid for output only. a file name As of this writing, the name of an open file (as a litatom) can be used as a stream argument. However, there are inefficiencies and possible future incompatibilities associated with doing so. See Chapter 24 for details. (GETSTREAM(GETSTREAM (Function) NIL NIL ("25") 2) FILE ACCESS) [Function] Coerces the argument FILE to a stream by the above rules. If ACCESS is INPUT, OUTPUT, or BOTH, produces the stream designated by FILE that is open for ACCESS. If ACCESS=NIL, returns a stream for FILE open for any kind of input/output (see the list above for the ambiguous cases). If FILE does not designate a stream open in the specified mode, causes an error, FILE NOT OPEN. (STREAMP(STREAMP (Function) NIL NIL ("25") 2) X) [Function] Returns X if X is a STREAM, otherwise NIL. Input Functions 1 While the functions described below can take input from any stream, some special actions occur when the input is from the terminal (the T input stream, see above). When reading from the terminal, the input is buffered a line at a time, unless buffering has been inhibited by CONTROL (Chapter 30) or the input is being read by READC or PEEKC. Using specified editing characters, you can erase a character at a time, a word at a time, or the whole line. The keys that perform these editing functions are assignable via SETSYNTAX, with the initial settings chosen to be those most natural for the given operating system. In Interlisp-D, the initial settings are as follows: characters are deleted one at a time by Backspace; words are erased by control-W; the whole line is erased by Control-Q. On the Interlisp-D display, deleting a character or a line causes the characters to be physically erased from the screen. In Interlisp-10, the deleting action can be modified for various types of display terminals by using DELETECONTROL (Chapter 30). Unless otherwise indicated, when the end of file is encountered while reading from a file, all input functions generate an error, END OF FILE. Note that this does not close the input file. The ENDOFSTREAMOP stream attribute (Chapter 24) is useful for changing the behavior at end of file. Most input functions have a RDTBL argument, which specifies the read table to be used for input. Unless otherwise specified, if RDTBL is NIL, the primary read table is used. If the FILE or STREAM argument to an input function is NIL, the primary input stream is used. (INPUT(INPUT (Function) NIL NIL ("25") 2) FILE) [Function] Sets FILE as the primary input stream; returns the old primary input stream. FILE must be open for input. (INPUT) returns the current primary input stream, which is not changed. Note: If the primary input stream is set to a file, the file's full name, rather than the stream itself, is returned. See discussion in Chapter 24. (READ(READ (Function) NIL NIL ("25") 3) FILE RDTBL FLG) [Function] Reads one expression from FILE. Atoms are delimited by the break and separator characters as defined in RDTBL. To include a break or separator character in an atom, the character must be preceded by the character %, e.g., AB%(C is the atom AB(C, %% is the atom %, %control-K is the atom Control-K. For input from the terminal, an atom containing an interrupt character can be input by typing instead the corresponding alphabetic character preceded by Control-V, e.g., ^VD for Control-D. Strings are delimited by double quotes. To input a string containing a double quote or a %, precede it by %, e.g., "AB%"C" is the string AB"C. Note that % can always be typed even if next character is not "special", e.g., %A%B%C is read as ABC. If an atom is interpretable as a number, READ creates a number, e.g., 1E3 reads as a floating point number, 1D3 as a literal atom, 1.0 as a number, 1,0 as a literal atom, etc. An integer can be input in a non-decimal radix by using syntax such as 123Q, |b10101, |5r1234 (see Chapter 7). The function RADIX, sets the radix used to print integers. When reading from the terminal, all input is line-buffered to enable the action of the backspacing control characters, unless inhibited by CONTROL (Chapter 30). Thus no characters are actually seen by the program until a carriage-return (actually the character with terminal syntax class EOL, see Chapter 30), is typed. However, for reading by READ, when a matching right parenthesis is encountered, the effect is the same as though a carriage-return were typed, i.e., the characters are transmitted. To indicate this, Interlisp also prints a carriage-return line-feed on the terminal. The line buffer is also transmitted to READ whenever an IMMEDIATE read macro character is typed (see below). FLG=T suppresses the carriage-return normally typed by READ following a matching right parenthesis. (However, the characters are still given to READ; i.e., you do not have to type the carriage-return.) (RATOM FILE RDTBL) [Function] Reads in one atom from FILE. Separation of atoms is defined by RDTBL. % is also defined for RATOM, and the remarks concerning line-buffering and editing control characters also apply. If the characters comprising the atom would normally be interpreted as a number by READ, that number is returned by RATOM. Note however that RATOM takes no special action for " whether or not it is a break character, i.e., RATOM never makes a string. (RSTRING(RSTRING (Function) NIL NIL ("25") 3) FILE RDTBL) [Function] Reads characters from FILE up to, but not including, the next break or separator character, and returns them as a string. Backspace, Control-W, Control-Q, Control-V, and % have the same effect as with READ. Note that the break or separator character that terminates a call to RATOM or RSTRING is not read by that call, but remains in the buffer to become the first character seen by the next reading function that is called. If that function is RSTRING, it will return the null string. This is a common source of program bugs. (RATOMS(RATOMS (Function) NIL NIL ("25") 4) A FILE RDTBL) [Function] Calls RATOM repeatedly until the atom A is read. Returns a list of the atoms read, not including A. (RATEST(RATEST (Function) NIL NIL ("25") 4) FLG) [Function] If FLG = T, RATEST returns T if a separator was encountered immediately prior to the atom returned by the last RATOM or READ, NIL otherwise. If FLG = NIL, RATEST returns T if last atom read by RATOM or READ was a break character, NIL otherwise. If FLG = 1, RATEST returns T if last atom read (by READ or RATOM) contained a % used to quote the next character (as in %[ or %A%B%C), NIL otherwise. (READC (READC% (Function) NIL NIL ("25") 4)FILE RDTBL) [Function] Reads and returns the next character, including %, ", etc, i.e., is not affected by break or separator characters. The action of READC is subject to line-buffering, i.e., READC does not return a value until the line has been terminated even if a character has been typed. Thus, the editing control characters have their usual effect. RDTBL does not directly affect the value returned, but is used as usual in line-buffering, e.g., determining when input has been terminated. If (CONTROL T) has been executed (Chapter 30), defeating line-buffering, the RDTBL argument is irrelevant, and READC returns a value as soon as a character is typed (even if the character typed is one of the editing characters, which ordinarily would never be seen in the input buffer). (PEEKC (PEEKC% (Function) NIL NIL ("25") 4)FILE) [Function] Returns the next character, but does not actually read it and remove it from the buffer. If reading from the terminal, the character is echoed as soon as PEEKC reads it, even though it is then "put back" into the system buffer, where Backspace, Control-W, etc. could change it. Thus it is possible for the value returned by PEEKC to "disagree" in the first character with a subsequent READ. (LASTC(LASTC (Function) NIL NIL ("25") 4) FILE) [Function] Returns the last character read from FILE. LASTC can return an incorrect result when called immediatley following a PEEKC on a file that contains run-coded NS characters. (READCCODE(READCCODE (Function) NIL NIL ("25") 4) FILE RDTBL) [Function] Returns the next character code from STREAM; thus, this operation is equivalent to, but more efficient than, (CHCON1 (READC FILE RDTBL)). (PEEKCCODE(PEEKCCODE (Function) NIL NIL ("25") 5) FILE) [Function] Returns, without consuming, the next character code from STREAM; thus, this operation is equivalent to, but more efficient than, (CHCON1 (PEEKC FILE)). (BIN(BIN (Function) NIL NIL ("25") 5) STREAM) [Function] Returns the next byte from STREAM. This operation is useful for reading streams of binary, rather than character, data. Note: BIN is similar to READCCODE, except that BIN always reads a single byte, whereas READCCODE reads a "character" that can consist of more than one byte, depending on the character and its encoding. READ, RATOM, RATOMS, PEEKC, READC all wait for input if there is none. The only way to test whether or not there is input is to use READP: (READP(READP (Function) NIL NIL ("25") 5) FILE FLG) [Function] Returns T if there is anything in the input buffer of FILE, NIL otherwise. This operation is only interesting for streams whose source of data is dynamic, e.g., the terminal or a byte stream over a network; for other streams, such as to files, (READP FILE) is equivalent to (NOT (EOFP FILE)). Note that because of line-buffering, READP may return T, indicating there is input in the buffer, but READ may still have to wait. Frequently, the terminal's input buffer contains a single EOL character left over from a previous input. For most applications, this situation wants to be treated as though the buffer were empty, and so READP returns NIL in this case. However, if FLG=T, READP returns T if there is any character in the input buffer, including a single EOL. FLG is ignored for streams other than the terminal. (EOFP(EOFP (Function) NIL NIL ("25") 5) FILE) [Function] Returns true if FILE is at "end of file", i.e., the next call to an input function would cause an END OF FILE error; NIL otherwise. For randomly accessible files, this can also be thought of as the file pointer pointing beyond the last byte of the file. FILE must be open for (at least) input, or an error is generated, FILE NOT OPEN. Note that EOFP can return NIL and yet the next call to READ might still cause an END OF FILE error, because the only characters remaining in the input were separators or otherwise constituted an incomplete expression. The function SKIPSEPRS is sometimes more useful as a way of detecting end of file when it is known that all the expressions in the file are well formed. (WAITFORINPUT (WAITFORINPUT% (Function) NIL NIL ("25") 5)FILE) [Function] Waits until input is available from FILE or from the terminal, i.e. from T. WAITFORINPUT is functionally equivalent to (until (OR (READP T) (READP FILE)) do NIL), except that it does not use up machine cycles while waiting. Returns the device for which input is now available, i.e. FILE or T. FILE can also be an integer, in which case WAITFORINPUT waits until there is input available from the terminal, or until FILE milliseconds have elapsed. Value is T if input is now available, NIL in the case that WAITFORINPUT timed out. (SKREAD(SKREAD (Function) NIL NIL ("25") 6) FILE REREADSTRING RDTBL) [Function] "Skip Read". SKREAD consumes characters from FILE as if one call to READ had been performed, without paying the storage and compute cost to really read in the structure. REREADSTRING is for the case where the caller has already performed some READC's and RATOM's before deciding to skip this expression. In this case, REREADSTRING should be the material already read (as a string), and SKREAD operates as though it had seen that material first, thus setting up its parenthesis count, double-quote count, etc. The read table RDTBL is used for reading from FILE. If RDTBL is NIL, it defaults to the value of FILERDTBL. SKREAD may have difficulties if unusual read macros are defined in RDTBL. SKREAD does not recognize read macro characters in REREADSTRING, nor SPLICE or INFIX read macros. This is only a problem if the read macros are defined to parse subsequent input in the stream that does not follow the normal parenthesis and string-quote conventions. SKREAD returns %) if the read terminated on an unbalanced closing parenthesis; %] if the read terminated on an unbalanced %], i.e., one which also would have closed any extant open left parentheses; otherwise NIL. (SKIPSEPRS(SKIPSEPRS (Function) NIL NIL ("25") 6) FILE RDTBL) [Function] Consumes characters from FILE until it encounters a non-separator character (as defined by RDTBL). SKIPSEPRS returns, but does not consume, the terminating character, so that the next call to READC would return the same character. If no non-separator character is found before the end of file is reached, SKIPSEPRS returns NIL and leaves the stream at end of file. This function is useful for skipping over "white space" when scanning a stream character by character, or for detecting end of file when reading expressions from a stream with no pre-arranged terminating expression. Output Functions(OUTPUT% FUNCTIONS NIL Output% Functions NIL ("25") 6) 1 Unless otherwise specified by DEFPRINT, pointers other than lists, strings, atoms, or numbers, are printed in the form {DATATYPE} followed by the octal representation of the address of the pointer (regardless of radix). For example, an array pointer might print as {ARRAYP}#43,2760. This printed representation is for compactness of display on your terminal, and will not read back in correctly; if the form above is read, it will produce the litatom {ARRAYP}#43,2760. Note: The term "end-of-line" appearing in the description of an output function means the character or characters used to terminate a line in the file system being used by the given implementation of Interlisp. For example, in Interlisp-D end-of-line is indicated by the character carriage-return. Some of the functions described below have a RDTBL argument, which specifies the read table to be used for output. If RDTBL is NIL, the primary read table is used. Most of the functions described below have an argument FILE, which specifies the stream on which the operation is to take place. If FILE is NIL, the primary output stream is used . (OUTPUT(OUTPUT (Function) NIL NIL ("25") 7) FILE) [Function] Sets FILE as the primary output stream; returns the old primary output stream. FILE must be open for output. (OUTPUT) returns the current primary output stream, which is not changed. Note: If the primary output stream is set to a file, the file's full name, rather than the stream itself, is returned. See the discussion in Chapter 24. (PRIN1(PRIN1 (Function) NIL NIL ("25") 7) X FILE) [Function] Prints X on FILE. (PRIN2(PRIN2 (Function) NIL NIL ("25") 7) X FILE RDTBL) [Function] Prints X on FILE with %'s and "'s inserted where required for it to read back in properly by READ, using RDTBL. Both PRIN1 and PRIN2 print any kind of Lisp expression, including lists, atoms, numbers, and strings. PRIN1 is generally used for printing expressions where human readability, rather than machine readability, is important, e.g., when printing text rather than program fragments. PRIN1 does not print double quotes around strings, or % in front of special characters. PRIN2 is used for printing Interlisp expressions which can then be read back into Interlisp with READ; i.e., break and separator characters in atoms will be preceded by %'s. For example, the atom "()" is printed as %(%) by PRIN2. If the integer output radix (as set by RADIX) is not 10, PRIN2 prints the integer using the input syntax for non-decimal integers (see Chapter 7) but PRIN1 does not (but both print the integer in the output radix). (PRIN3(PRIN3 (Function) NIL NIL ("25") 7) X FILE) [Function] (PRIN4(PRIN4 (Function) NIL NIL ("25") 7) X FILE RDTBL) [Function] PRIN3 and PRIN4 are the same as PRIN1 and PRIN2 respectively, except that they do not increment the horizontal position counter nor perform any linelength checks. They are useful primarily for printing control characters. (PRINT(PRINT (Function) NIL NIL ("25") 7) X FILE RDTBL) [Function] Prints the expression X using PRIN2 followed by an end-of-line. Returns X. (PRINTCCODE(PRINT (Function) NIL NIL ("25") 8) CHARCODE FILE) [Function] Outputs a single character whose code is CHARCODE to FILE. This is similar to (PRIN1 (CHARACTER CHARCODE)), except that numeric characters are guaranteed to print "correctly"; e.g., (PRINTCCODE (CHARCODE 9)) always prints "9", independent of the setting of RADIX. PRINTCCODE may actually print more than one byte on FILE, due to character encoding and end of line conventions; thus, no assumptions should be made about the relative motion of the file pointer (see GETFILEPTR) during this operation. (BOUT(BOUT (Function) NIL NIL ("25") 8) STREAM BYTE) [Function] Outputs a single 8-bit byte to STREAM. This is similar to PRINTCCODE, but for binary streams the character position in STREAM is not updated (as with PRIN3), and end of line conventions are ignored. Note: BOUT is similar to PRINTCCODE, except that BOUT always writes a single byte, whereas PRINTCCODE writes a "character" that can consist of more than one byte, depending on the character and its encoding. (SPACES(SPACES (Function) NIL NIL ("25") 8) N FILE) [Function] Prints N spaces. Returns NIL. (TERPRI (TERPRI% (Function) NIL NIL ("25") 8)FILE) [Function] Prints an end-of-line character. Returns NIL. (FRESHLINE(FRESHLINE (Function) NIL NIL ("25") 8) STREAM) [Function] Equivalent to TERPRI, except it does nothing if it is already at the beginning of the line. Returns T if it prints an end-of-line, NIL otherwise. (TAB(TAB (Function) NIL NIL ("25") 8) POS MINSPACES FILE) [Function] Prints the appropriate number of spaces to move to position POS. MINSPACES indicates how many spaces must be printed (if NIL, 1 is used). If the current position plus MINSPACES is greater than POS, TAB does a TERPRI and then (SPACES POS). If MINSPACES is T, and the current position is greater than POS, then TAB does nothing. Note: A sequence of PRINT, PRIN2, SPACES, and TERPRI expressions can often be more conveniently coded with a single PRINTOUT statement. (SHOWPRIN2(SHOWPRIN2 (Function) NIL NIL ("25") 8) X FILE RDTBL) [Function] Like PRIN2 except if SYSPRETTYFLG=T, prettyprints X instead. Returns X. (SHOWPRINT(SHOWPRINT (Function) NIL NIL ("25") 9) X FILE RDTBL) [Function] Like PRINT except if SYSPRETTYFLG=T, prettyprints X instead, followed by an end-of-line. Returns X. SHOWPRINT and SHOWPRIN2 are used by the programmer's assistant (Chapter 13) for printing the values of expressions and for printing the history list, by various commands of the break package (Chapter 14), e.g. ?= and BT commands, and various other system packages. The idea is that by simply settting or binding SYSPRETTYFLG to T (initially NIL), you instruct the system when interacting with you to PRETTYPRINT expressions (Chapter 26) instead of printing them. (PRINTBELLS(PRINTBELLS (Function) NIL NIL ("25") 9) ) [Function] Used by DWIM (Chapter 19) to print a sequence of bells to alert you to stop typing. Can be advised or redefined for special applications, e.g., to flash the screen on a display terminal. (FORCEOUTPUT(FORCEOUTPUT (Function) NIL NIL ("25") 9) STREAM WAITFORFINISH) [Function] Forces any buffered output data in STREAM to be transmitted. If WAITFORFINISH is non-NIL, this doesn't return until the data has been forced out. (POSITION(POSITION (Function) NIL NIL ("25") 9) FILE N) [Function] Returns the column number at which the next character will be read or printed. After a end of line, the column number is 0. If N is non-NIL, resets the column number to be N. Note that resetting POSITION only changes Lisp's belief about the current column number; it does not cause any horizontal motion. Also note that (POSITION FILE) is not the same as (GETFILEPTR FILE) which gives the position in the file, not on the line. (LINELENGTH(LINELENGTH (Function) NIL NIL ("25") 9) N FILE) [Function] Sets the length of the print line for the output file FILE to N; returns the former setting of the line length. FILE defaults to the primary output stream. (LINELENGTH NIL FILE) returns the current setting for FILE. When a file is first opened, its line length is set to the value of the variable FILELINELENGTH. Whenever printing an atom or string would increase a file's position beyond the line length of the file, an end of line is automatically inserted first. This action can be defeated by using PRIN3 and PRIN4. (SETLINELENGTH(SETLINELENGTH (Function) NIL NIL ("25") 9) N) [Function] Sets the line length for the terminal by doing (LINELENGTH N T). If N is NIL, it determines N by consulting the operating system's belief about the terminal's characteristics. In Interlisp-D, this is a no-op. PRINTLEVEL When using Interlisp one often has to handle large, complicated lists, which are difficult to understand when printed out. PRINTLEVEL allows you to specify in how much detail lists should be printed. The print functions PRINT, PRIN1, and PRIN2 are all affected by level parameters set by: (PRINTLEVEL(PRINTLEVEL (Function) NIL NIL ("25") 10) CARVAL CDRVAL) [Function] Sets the CAR print level to CARVAL, and the CDR print level to CDRVAL. Returns a list cell whose CAR and CDR are the old settings. PRINTLEVEL is initialized with the value (1000 . -1). In order that PRINTLEVEL can be used with RESETFORM or RESETSAVE, if CARVAL is a list cell it is equivalent to (PRINTLEVEL (CAR CARVAL) (CDR CARVAL)). (PRINTLEVEL N NIL) changes the CAR printlevel without affecting the CDR printlevel. (PRINTLEVEL NIL N) changes the CDR printlevel with affecting the CAR printlevel. (PRINTLEVEL) gives the current setting without changing either. Note: Control-P (Chapter 30) can be used to change the PRINTLEVEL setting dynamically, even while Interlisp is printing. The CAR printlevel specifies how "deep" to print a list. Specifically, it is the number of unpaired left parentheses which will be printed. Below that level, all lists will be printed as &. If the CAR printlevel is negative, the action is similar except that an end-of-line is inserted after each right parentheses that would be immediately followed by a left parenthesis. The CDR printlevel specifies how "long" to print a list. It is the number of top level list elements that will be printed before the printing is terminated with --. For example, if CDRVAL=2, (A B C D E) will print as (A B --). For sublists, the number of list elements printed is also affected by the depth of printing in the CAR direction: Whenever the sum of the depth of the sublist (i.e. the number of unmatched left parentheses) and the number of elements is greater than the CDR printlevel, -- is printed. This gives a "triangular" effect in that less is printed the farther one goes in either CAR or CDR direction. If the CDR printlevel is negative, then it is the same as if the CDR printlevel were infinite. Examples: After: (A (B C (D (E F) G) H) K L) prints as: (PRINTLEVEL 3 -1) (A (B C (D & G) H) K L) (PRINTLEVEL 2 -1) (A (B C & H) K L) (PRINTLEVEL 1 -1) (A & K L) (PRINTLEVEL 0 -1) & (PRINTLEVEL 1000 2) (A (B --) --) (PRINTLEVEL 1000 3) (A (B C --) K --) (PRINTLEVEL 1 3) (A & K --) PLVLFILEFLG (PLVLFILEFLG% (Variable) NIL NIL ("25") 11) [Variable] Normally, PRINTLEVEL only affects terminal output. Output to all other files acts as though the print level is infinite. However, if PLVLFILEFLG is T (initially NIL), then PRINTLEVEL affects output to files as well. The following three functions are useful for printing isolated expressions at a specified print level without going to the overhead of resetting the global print level. (LVLPRINT (LVLPRINT% (Function) NIL NIL ("25") 11)X FILE CARLVL CDRLVL TAIL) [Function] Performs PRINT of X to FILE, using as CAR and CDR print levels the values CARLVL and CDRLVL, respectively. Uses the T read table. If TAIL is specified, and X is a tail of it, then begins its printing with "...", rather than on open parenthesis. (LVLPRIN2(LVLPRIN2 (Function) NIL NIL ("25") 11) X FILE CARLVL CDRLVL TAIL) [Function] Similar to LVLPRIN2, but performs a PRIN2. (LVLPRIN1(LVLPRIN1 (Function) NIL NIL ("25") 11) X FILE CARLVL CDRLVL TAIL) [Function] Similar to LVLPRIN1, but performs a PRIN1. Printing Numbers(PRINTING% NUMBERS NIL Printing% Numbers NIL ("25") 11) How the ordinary printing functions (PRIN1, PRIN2, etc.) print numbers can be affected in several ways. RADIX influences the printing of integers, and FLTFMT influences the printing of floating point numbers. The setting of the variable PRXFLG determines how the symbol-manipulation functions handle numbers. The PRINTNUM package permits greater controls on the printed appearance of numbers, allowing such things as left-justification, suppression of trailing decimals, etc. (RADIX(RADIX (Function) NIL NIL ("25") 11) N) [Function] Resets the output radix for integers to the absolute value of N. The value of RADIX is its previous setting. (RADIX) gives the current setting without changing it. The initial setting is 10. Note that RADIX affects output only. There is no input radix; on input, numbers are interpreted as decimal unless they are entered in a non-decimal radix with syntax such as 123Q, |b10101, |5r1234 (see Chapter 7). RADIX does not affect the behavior of UNPACK, etc., unless the value of PRXFLG (below) is T. For example, if PRXFLG is NIL and the radix is set to 8 with (RADIX 8), the value of (UNPACK 9) is (9), not (1 1). Using PRINTNUM (below) or the PRINTOUT command .I (below) is often a more convenient and appropriate way to print a single number in a specified radix than to globally change RADIX. (FLTFMT(FLTFMT (Function) NIL NIL ("25") 12) FORMAT) [Function] Resets the output format for floating point numbers to the FLOAT format FORMAT (see PRINTNUM below for a description of FLOAT formats). FORMAT=T specifies the default "free" formatting: some number of significant digits (a function of the implementation) are printed, with trailing zeros suppressed; numbers with sufficiently large or small exponents are instead printed in exponent notation. FLTFMT returns its current setting. (FLTFMT) returns the current setting without changing it. The initial setting is T. Note: In Interlisp-D, FLTFMT ignores the WIDTH and PAD fields of the format (they are implemented only by PRINTNUM). Whether print name manipulation functions (UNPACK, NCHARS, etc.) use the values of RADIX and FLTFMT is determined by the variable PRXFLG: PRXFLG(PRXFLG (Variable) NIL NIL ("25") 12) [Variable] If PRXFLG=NIL (the initial setting), then the "PRIN1" name used by PACK, UNPACK, MKSTRING, etc., is computed using base 10 for integers and the system default floating format for floating point numbers, independent of the current setting of RADIX or FLTFMT. If PRXFLG=T, then RADIX and FLTFMT do dictate the "PRIN1" name of numbers. Note that in this case, PACK and UNPACK are not inverses. Examples with (RADIX 8), (FLTFMT '(FLOAT 4 2)): With PRXFLG=NIL, (UNPACK 13) => (1 3) (PACK '(A 9)) => A9 (UNPACK 1.2345) => (1 %. 2 3 4 5) With PRXFLG=T, (UNPACK 13) => (1 5) (PACK '(A 9)) => A11 (UNPACK 1.2345) => (1 %. 2 3) Note that PRXFLG does not effect the radix of "PRIN2" names, so with (RADIX 8), (NCHARS 9 T), which uses PRIN2 names, would return 3, (since 9 would print as 11Q) for either setting of PRXFLG. Warning: Some system functions will not work correctly if PRXFLG is not NIL. Therefore, resetting the global value of PRXFLG is not recommended. It is much better to rebind PRXFLG as a SPECVAR for that part of a program where it needs to be non-NIL. The basic function for printing numbers under format control is PRINTNUM. Its utility is considerably enhanced when used in conjunction with the PRINTOUT package, which implements a compact language for specifying complicated sequences of elementary printing operations, and makes fancy output formats easy to design and simple to program. (PRINTNUM FORMAT NUMBER FILE) [Function] Prints NUMBER on FILE according to the format FORMAT. FORMAT is a list structure with one of the forms described below. If FORMAT is a list of the form (FIX WIDTH RADIX PAD0 LEFTFLUSH), this specifies a FIX format. NUMBER is rounded to the nearest integer, and then printed in a field WIDTH characters long with radix set to RADIX (or 10 if RADIX=NIL; note that the setting from the function RADIX is not used as the default). If PAD0 and LEFTFLUSH are both NIL, the number is right-justified in the field, and the padding characters to the left of the leading digit are spaces. If PAD0 is T, the character "0" is used for padding. If LEFTFLUSH is T, then the number is left-justified in the field, with trailing spaces to fill out WIDTH characters. The following examples illustrate the effects of the FIX format options on the number 9 (the vertical bars indicate the field width): FORMAT: (PRINTNUM FORMAT 9) prints: (FIX 2) | 9| (FIX 2 NIL T) |09| (FIX 12 8 T) |000000000011| (FIX 5 NIL NIL T) |9 | If FORMAT is a list of the form (FLOAT WIDTH DECPART EXPPART PAD0 ROUND), this specifies a FLOAT format. NUMBER is printed as a decimal number in a field WIDTH characters wide, with DECPART digits to the right of the decimal point. If EXPPART is not 0 (or NIL), the number is printed in exponent notation, with the exponent occupying EXPPART characters in the field. EXPPART should allow for the character E and an optional sign to be printed before the exponent digits. As with FIX format, padding on the left is with spaces, unless PAD0 is T. If ROUND is given, it indicates the digit position at which rounding is to take place, counting from the leading digit of the number. Interlisp-D interprets WIDTH=NIL to mean no padding, i.e., to use however much space the number needs, and interprets DECPART=NIL to mean as many decimal places as needed. The following examples illustrate the effects of the FLOAT format options on the number 27.689 (the vertical bars indicate the field width): FORMAT: (PRINTNUM FORMAT 27.689) prints: (FLOAT 7 2) | 27.69| (FLOAT 7 2 NIL 0) |0027.69| (FLOAT 7 2 2) | 2.77E1| (FLOAT 11 2 4) | 2.77E+01| (FLOAT 7 2 NIL NIL 1) | 30.00| (FLOAT 7 2 NIL NIL 2) | 28.00| NILNUMPRINTFLG(NILNUMPRINTFLG (Variable) NIL NIL ("25") 14) [Variable] If PRINTNUM's NUMBER argument is not a number and not NIL, a NON-NUMERIC ARG error is generated. If NUMBER is NIL, the effect depends on the setting of the variable NILNUMPRINTFLG. If NILNUMPRINTFLG is NIL, then the error occurs as usual. If it is non-NIL, then no error occurs, and the value of NILNUMPRINTFLG is printed right-justified in the field described by FORMAT. This option facilitates the printing of numbers in aggregates with missing values coded as NIL. User Defined Printing Initially, Interlisp only knows how to print in an interesting way objects of type litatom, number, string, list and stackp. All other types of objects are printed in the form {datatype} followed by the octal representation of the address of the pointer, a format that cannot be read back in to produce an equivalent object. When defining user data types (using the DATATYPE record type, Chapter 8), it is often desirable to specify as well how objects of that type should be printed, so as to make their contents readable, or at least more informative to the viewer. The function DEFPRINT is used to specify the printing format of a data type. (DEFPRINT(DEFPRINT (Function) NIL NIL ("25") 14) TYPE FN) [Function] TYPE is a type name. Whenever a printing function (PRINT, PRIN1, PRIN2, etc.) or a function requiring a print name (CHCON, NCHARS, etc.) encounters an object of the indicated type, FN is called with two arguments: the item to be printed and the name of the stream, if any, to which the object is to be printed. The second argument is NIL on calls that request the print name of an object without actually printing it. If FN returns a list of the form (ITEM1 . ITEM2), ITEM1 is printed using PRIN1 (unless it is NIL), and then ITEM2 is printed using PRIN2 (unless it is NIL). No spaces are printed between the two items. Typically, ITEM1 is a read macro character. If FN returns NIL, the datum is printed in the system default manner. If FN returns T, nothing further is printed; FN is assumed to have printed the object to the stream itself. Note that this case if permitted only when the second argument passed to FN is non-NIL; otherwise, there is no destination for FN to do its printing, so it must return as in one of the other two cases. Printing Unusual Data Structures HPRINT (for "Horrible Print") and HREAD provide a mechanism for printing and reading back in general data structures that cannot normally be dumped and loaded easily, such as (possibly re-entrant or circular) structures containing user datatypes, arrays, hash tables, as well as list structures. HPRINT will correctly print and read back in any structure containing any or all of the above, chasing all pointers down to the level of literal atoms, numbers or strings. HPRINT currently cannot handle compiled code arrays, stack positions, or arbitrary unboxed numbers. HPRINT operates by simulating the Interlisp PRINT routine for normal list structures. When it encounters a user datatype (see Chapter 8), or an array or hash array, it prints the data contained therein, surrounded by special characters defined as read macro characters. While chasing the pointers of a structure, it also keeps a hash table of those items it encounters, and if any item is encountered a second time, another read macro character is inserted before the first occurrence (by resetting the file pointer with SETFILEPTR) and all subsequent occurrences are printed as a back reference using an appropriate macro character. Thus the inverse function, HREAD merely calls the Interlisp READ routine with the appropriate read table. (HPRINT(HPRINT (Function) NIL NIL ("25") 15) EXPR FILE UNCIRCULAR DATATYPESEEN) [Function] Prints EXPR on FILE. If UNCIRCULAR is non-NIL, HPRINT does no checking for any circularities in EXPR (but is still useful for dumping arbitrary structures of arrays, hash arrays, lists, user data types, etc., that do not contain circularities). Specifying UNCIRCULAR as non-NIL results in a large speed and internal-storage advantage. Normally, when HPRINT encounters a user data type for the first time, it outputs a summary of the data type's declaration. When this is read in, the data type is redeclared. If DATATYPESEEN is non-NIL, HPRINT assumes that the same data type declarations will be in force at read time as were at HPRINT time, and not output declarations. HPRINT is intended primarily for output to random access files, since the algorithm depends on being able to reset the file pointer. If FILE is not a random access file (and UNCIRCULAR = NIL), a temporary file, HPRINT.SCRATCH, is opened, EXPR is HPRINTed on it, and then that file is copied to the final output file and the temporary file is deleted. You can not use HPRINT to save things that contains pointers to raw storage. Fontdescriptors contain pointers to raw storage and windows contain pointers to fontdescriptors. Netiher can therefor be saved with HPRINT. (HREAD(HREAD (Function) NIL NIL ("25") 15) FILE) [Function] Reads and returns an HPRINT-ed expression from FILE. (HCOPYALL(HCOPYALL (Function) NIL NIL ("25") 15) X) [Function] Copies data structure X. X may contain circular pointers as well as arbitrary structures. Note: HORRIBLEVARS and UGLYVARS (Chapter 17) are two file package commands for dumping and reloading circular and re-entrant data structures. They provide a convenient interface to HPRINT and HREAD. When HPRINT is dumping a data structure that contains an instance of an Interlisp datatype, the datatype declaration is also printed onto the file. Reading such a data structure with HREAD can cause problems if it redefines a system datatype. Redefining a system datatype will almost definitely cause serious errors. The Interlisp system datatypes do not change very often, but there is always a possibility when loading in old files created under an old Interlisp release. To prevent accidental system crashes, HREAD will not redefine datatypes. Instead, it will cause an error "attempt to read DATATYPE with different field specification than currently defined". Continuing from this error will redefine the datatype. Random Access File Operations 1 For most applications, files are read starting at their beginning and proceeding sequentially, i.e., the next character read is the one immediately following the last character read. Similarly, files are written sequentially. However, for files on some devices, it is also possible to read/write characters at arbitrary positions in a file, essentially treating the file as a large block of auxiliary storage. For example, one application might involve writing an expression at the beginning of the file, and then reading an expression from a specified point in its middle. This particular example requires the file be open for both input and output. However, random file input or output can also be performed on files that have been opened for only input or only output. Associated with each file is a "file pointer" that points to the location where the next character is to be read from or written to. The file position of a byte is the number of bytes that precede it in the file, i.e., 0 is the position of the beginning of the file. The file pointer to a file is automatically advanced after each input or output operation. This section describes functions which can be used to reposition the file pointer on those files that can be randomly accessed. A file used in this fashion is much like an array in that it has a certain number of addressable locations that characters can be put into or taken from. However, unlike arrays, files can be enlarged. For example, if the file pointer is positioned at the end of a file and anything is written, the file "grows." It is also possible to position the file pointer beyond the end of file and then to write. (If the program attempts to read beyond the end of file, an END OF FILE error occurs.) In this case, the file is enlarged, and a "hole" is created, which can later be written into. Note that this enlargement only takes place at the end of a file; it is not possible to make more room in the middle of a file. In other words, if expression A begins at position 1000, and expression B at 1100, and the program attempts to overwrite A with expression C, whose printed representation is 200 bytes long, part of B will be altered. Warning: File positions are always in terms of bytes, not characters. You should thus be very careful about computing the space needed for an expression. In particular, NS characters may take multiple bytes (see below). Also, the end-of-line character (see Chapter 24) may be represented by a different number of characters in different implementations. Output functions may also introduce end-of-line's as a result of LINELENGTH considerations. Therefore NCHARS (see Chapter 2) does not specify how many bytes an expression takes to print, even ignoring line length considerations. (GETFILEPTR(GETFILEPTR (Function) NIL NIL ("25") 16) FILE) [Function] Returns the current position of the file pointer for FILE, i.e., the byte address at which the next input/output operation will commence. (SETFILEPTR(SETFILEPTR (Function) NIL NIL ("25") 16) FILE ADR) [Function] Sets the file pointer for FILE to the position ADR; returns ADR. The special value ADR=-1 is interpreted to mean the address of the end of file. Note: If a file is opened for output only, the end of file is initially zero, even if an old file by the same name had existed (see OPENSTREAM, Chapter 24). If a file is opened for both input and output, the initial file pointer is the beginning of the file, but (SETFILEPTR FILE -1) sets it to the end of the file. If the file had been opened in append mode by (OPENSTREAM FILE 'APPEND), the file pointer right after opening would be set to the end of the existing file, in which case a SETFILEPTR to position the file at the end would be unnecessary. (GETEOFPTR(GETEOFPTR (Function) NIL NIL ("25") 17) FILE) [Function] Returns the byte address of the end of file, i.e., the number of bytes in the file. Equivalent to performing (SETFILEPTR FILE -1) and returning (GETFILEPTR FILE) except that it does not change the current file pointer. (RANDACCESSP(RANDACCESSP (Function) NIL NIL ("25") 17) FILE) [Function] Returns FILE if FILE is randomly accessible, NIL otherwise. The file T is not randomly accessible, nor are certain network file connections in Interlisp-D. FILE must be open or an error is generated, FILE NOT OPEN. (COPYBYTES(COPYBYTES (Function) NIL NIL ("25") 17) SRCFIL DSTFIL START END) [Function] Copies bytes from SRCFIL to DSTFIL, starting from position START and up to but not including position END. Both SRCFIL and DSTFIL must be open. Returns T. If END=NIL, START is interpreted as the number of bytes to copy (starting at the current position). If START is also NIL, bytes are copied until the end of the file is reached. Warning: COPYBYTES does not take any account of multi-byte NS characters (see Chapter 2). COPYCHARS (below) should be used whenever copying information that might include NS characters. (COPYCHARS(COPYCHARS (Function) NIL NIL ("25") 17) SRCFIL DSTFIL START END) [Function] Like COPYBYTES except that it copies NS characters (see Chapter 2), and performs the proper conversion if the end-of-line conventions of SRCFIL and DSTFIL are not the same (see Chapter 24). START and END are interpreted the same as with COPYBYTES, i.e., as byte (not character) specifications in SRCFIL. The number of bytes actually output to DSTFIL might be more or less than the number of bytes specified by START and END, depending on what the end-of-line conventions are. In the case where the end-of-line conventions happen to be the same, COPYCHARS simply calls COPYBYTES. (FILEPOS(FILEPOS (Function) NIL NIL ("25") 17) STR FILE START END SKIP TAIL CASEARRAY) [Function] Analogous to STRPOS (see Chapter 4), but searches a file rather than a string. FILEPOS searches FILE for the string STR. Search begins at START (or the current position of the file pointer, if START=NIL), and goes to END (or the end of FILE, if END=NIL). Returns the address of the start of the match, or NIL if not found. SKIP can be used to specify a character which matches any character in the file. If TAIL is T, and the search is successful, the value is the address of the first character after the sequence of characters corresponding to STR, instead of the starting address of the sequence. In either case, the file is left so that the next i/o operation begins at the address returned as the value of FILEPOS. CASEARRAY should be a "case array" that specifies that certain characters should be transformed to other characters before matching. Case arrays are returned by CASEARRAY or SEPRCASE below. CASEARRAY=NIL means no transformation will be performed. A case array is an implementation-dependent object that is logically an array of character codes with one entry for each possible character. FILEPOS maps each character in the file "through" CASEARRAY in the sense that each character code is transformed into the corresponding character code from CASEARRAY before matching. Thus if two characters map into the same value, they are treated as equivalent by FILEPOS. CASEARRAY and SETCASEARRAY provide an implementation-independent interface to case arrays. For example, to search without regard to upper and lower case differences, CASEARRAY would be a case array where all characters map to themselves, except for lower case characters, whose corresponding elements would be the upper case characters. To search for a delimited atom, one could use " ATOM " as the pattern, and specify a case array in which all of the break and separator characters mapped into the same code as space. For applications calling for extensive file searches, the function FFILEPOS is often faster than FILEPOS. (FFILEPOS(FFILEPOS (Function) NIL NIL ("25") 18) PATTERN FILE START END SKIP TAIL CASEARRAY) [Function] Like FILEPOS, except much faster in most applications. FFILEPOS is an implementation of the Boyer-Moore fast string searching algorithm. This algorithm preprocesses the string being searched for and then scans through the file in steps usually equal to the length of the string. Thus, FFILEPOS speeds up roughly in proportion to the length of the string, e.g., a string of length 10 will be found twice as fast as a string of length 5 in the same position. Because of certain fixed overheads, it is generally better to use FILEPOS for short searches or short strings. (CASEARRAY(CASEARRAY (Function) NIL NIL ("25") 18) OLDARRAY) [Function] Creates and returns a new case array, with all elements set to themselves, to indicate the identity mapping. If OLDARRAY is given, it is reused. (SETCASEARRAY(SETCASEARRAY (Function) NIL NIL ("25") 18) CASEARRAY FROMCODE TOCODE) [Function] Modifies the case array CASEARRAY so that character code FROMCODE is mapped to character code TOCODE. (GETCASEARRAY(GETCASEARRAY (Function) NIL NIL ("25") 19) CASEARRAY FROMCODE) [Function] Returns the character code that FROMCODE is mapped to in CASEARRAY. (SEPRCASE(SEPRCASE (Function) NIL NIL ("25") 19) CLFLG) [Function] Returns a new case array suitable for use by FILEPOS or FFILEPOS in which all of the break/separators of FILERDTBL are mapped into character code zero. If CLFLG is non-NIL, then all CLISP characters are mapped into this character as well. This is useful for finding a delimited atom in a file. For example, if PATTERN is " FOO ", and (SEPRCASE T) is used for CASEARRAY, then FILEPOS will find "(FOO_". UPPERCASEARRAY(UPPERCASEARRAY (Variable) NIL NIL ("25") 19) [Variable] Value is a case array in which every lowercase character is mapped into the corresponding uppercase character. Useful for searching text files. Input/Output Operations with Characters and Bytes 1 Interlisp-D supports the 16-bit NS character set (see Chapter 2). All of the standard string and print name functions accept litatoms and strings containing NS characters. In almost all cases, a program does not have to distinguish between NS characters or 8-bit characters. The exception to this rule is the handling of input/output operations. Interlisp-D uses two ways of writing 16-bit NS characters on files. One way is to write the full 16-bits (two bytes) every time a character is output. The other way is to use "run-encoding." Each 16 NS character can be decoded into a character set (an integer from 0 to 254 inclusive) and a character number (also an integer from 0 to 254 inclusive). In run-encoding, the byte 255 (illegal as either a character set number or a character number) is used to signal a change to a given character set, and the following bytes are all assumed to come from the same character set (until the next change-character set sequence). Run-encoding can reduce the number of bytes required to encode a string of NS characters, as long as there are long sequences of characters from the same character set (usually the case). Note that characters are not the same as bytes. A single character can take anywhere from one to four bytes bytes, depending on whether it is in the same character set as the preceeding character, and whether run-encoding is enabled. Programs which assume that characters are equal to bytes must be changed to work with NS characters. The functions BIN and BOUT (see above) should only be used to read and write single eight-bit bytes. The functions READCCODE and PRINTCCODE (see above) should be used to read and write single character codes, interpreting run-encoded NS characters. COPYBYTES should only be used to copy blocks of 8-bit data; COPYCHARS should be used to copy characters. Most I/O functions (READC, PRIN1, etc.) read or write 16-bit NS characters. The use of NS characters has serious consequences for any program that uses file pointers to access a file in a random access manner. At any point when a file is being read or written, it has a "current character set." If the file pointer is changed with SETFILEPTR to a part of the file with a different character set, any characters read or written may have the wrong character set. The current character set can be accessed with the following function: (CHARSET(CHARSET (Function) NIL NIL ("25") 20) STREAM CHARACTERSET) [Function] Returns the current character set of the stream STREAM. If CHARACTERSET is non-NIL, the current character set for STREAM is set. Note that for output streams this may cause bytes to be written to the stream. If CHARACTERSET is T, run encoding for STREAM is disabled: both the character set and the character number (two bytes total) will be written to the stream for each character printed. PRINTOUT 1 Interlisp provides many facilities for controlling the format of printed output. By executing various sequences of PRIN1, PRIN2, TAB, TERPRI, SPACES, PRINTNUM, and PRINTDEF, almost any effect can be achieved. PRINTOUT implements a compact language for specifying complicated sequences of these elementary printing functions. It makes fancy output formats easy to design and simple to program. PRINTOUT is a CLISP word (like FOR and IF) for interpreting a special printing language in which you can describe the kinds of printing desired. The description is translated by DWIMIFY to the appropriate sequence of PRIN1, TAB, etc., before it is evaluated or compiled. PRINTOUT printing descriptions have the following general form: (PRINTOUT STREAM PRINTCOM1 ... PRINTCOMN) STREAM is evaluated to obtain the stream to which the output from this specification is directed. The PRINTOUT commands are strung together, one after the other without punctuation, after STREAM. Some commands occupy a single position in this list, but many commands expect to find arguments following the command name in the list. The commands fall into several logical groups: one set deals with horizontal and vertical spacing, another group provides controls for certain formatting capabilities (font changes and subscripting), while a third set is concerned with various ways of actually printing items. Finally, there is a command that permits escaping to a simple Lisp evaluation in the middle of a PRINTOUT form. The various commands are described below. The following examples give a general flavor of how PRINTOUT is used: Example 1: Suppose you want to print out on the terminal the values of three variables, X, Y, and Z, separated by spaces and followed by a carriage return. This could be done by: (PRIN1 X T) (SPACES 1 T) (PRIN1 Y T) (SPACES 1 T) (PRIN1 Z T) (TERPRI T) or by the more concise PRINTOUT form: (PRINTOUT T X , Y , Z T) Here the first T specifies output to the terminal, the commas cause single spaces to be printed, and the final T specifies a TERPRI. The variable names are not recognized as special PRINTOUT commands, so they are printed using PRIN1 by default. Example 2: Suppose the values of X and Y are to be pretty-printed lined up at position 10, preceded by identifying strings. If the output is to go to the primary output stream, you could write either: (PRIN1 "X =") (PRINTDEF X 10 T) (TERPRI ) (PRIN1 "Y =") (PRINTDEF Y 10 T) (TERPRI) or the equivalent: (PRINTOUT NIL "X =" 10 .PPV X T "Y =" 10 .PPV Y T) Since strings are not recognized as special commands, "X =" is also printed with PRIN1 by default. The positive integer means TAB to position 10, where the .PPV command causes the value of X to be prettyprinted as a variable. By convention, special atoms used as PRINTOUT commands are prefixed with a period. The T causes a carriage return, so the Y information is printed on the next line. Example 3. As a final example, suppose that the value of X is an integer and the value of Y is a floating-point number. X is to be printed right-flushed in a field of width 5 beginning at position 15, and Y is to be printed in a field of width 10 also starting at position 15 with 2 places to the right of the decimal point. Furthermore, suppose that the variable names are to appear in the font class named BOLDFONT and the values in font class SMALLFONT. The program in ordinary Interlisp that would accomplish these effects is too complicated to include here. With PRINTOUT, one could write: (PRINTOUT NIL .FONT BOLDFONT "X =" 15 .FONT SMALLFONT .I5 X T .FONT BOLDFONT "Y =" 15 .FONT SMALLFONT .F10.2 Y T .FONT BOLDFONT) The .FONT commands do whatever is necessary to change the font on a multi-font output device. The .I5 command sets up a FIX format for a call to the function PRINTNUM (see above) to print X in the desired format. The .F10.2 specifies a FLOAT format for PRINTNUM. Horizontal Spacing Commands The horizontal spacing commands provide convenient ways of calling TAB and SPACES. In the following descriptions, N stands for a literal positive integer (not for a variable or expression whose value is an integer). N (N a number) [PRINTOUT Command] Used for absolute spacing. It results in a TAB to position N (literally, a (TAB N)). If the line is currently at position N or beyond, the file will be positioned at position N on the next line. .TAB(TAB (Command) .TAB NIL ("25") 22)(.TAB (Command) NIL NIL ("25") 22) POS [PRINTOUT Command] Specifies TAB to position (the value of) POS. This is one of several commands whose effect could be achieved by simply escaping to Lisp, and executing the corresponding form. It is provided as a separate command so that the PRINTOUT form is more concise and is prettyprinted more compactly. Note that .TAB N and N, where N is an integer, are equivalent. .TAB0(TAB0 (Command) .TAB0 NIL ("25") 22)(.TAB0 (Command) NIL NIL ("25") 22) POS [PRINTOUT Command] Like .TAB except that it can result in zero spaces (i.e. the call to TAB specifies MINSPACES=0). -N (N a number) [PRINTOUT Command] Negative integers indicate relative (as opposed to absolute) spacing. Translates as (SPACES |N|). ,(, (Command) NIL NIL ("25") 22) [PRINTOUT Command] ,,(,, (Command) NIL NIL ("25") 22) [PRINTOUT Command] ,,,(,,, (Command) NIL NIL ("25") 22) [PRINTOUT Command] (1, 2 or 3 commas) Provides a short-hand way of specifying 1, 2 or 3 spaces, i.e., these commands are equivalent to -1, -2, and -3, respectively. .SP(SP (Command) .SP NIL ("25") 22)(.SP (Command) NIL NIL ("25") 22) DISTANCE [PRINTOUT Command] Translates as (SPACES DISTANCE). Note that .SP N and -N, where N is an integer, are equivalent. Vertical Spacing Commands Vertical spacing is obtained by calling TERPRI or printing form-feeds. The relevant commands are: T(T (Command) NIL NIL ("25") 23) [PRINTOUT Command] Translates as (TERPRI), i.e., move to position 0 (the first column) of the next line. To print the letter T, use the string "T". .SKIP(SKIP (Command) .SKIP NIL ("25") 23)(.SKIP (Command) NIL NIL ("25") 23) LINES [PRINTOUT Command] Equivalent to a sequence of LINES (TERPRI)'s. The .SKIP command allows for skipping large constant distances and for computing the distance to be skipped. .PAGE(PAGE (Command) .PAGE NIL ("25") 23)(.PAGE (Command) NIL NIL ("25") 23) [PRINTOUT Command] Puts a form-feed (Control-L) out on the file. Care is taken to make sure that Interlisp's view of the current line position is correctly updated. Special Formatting Controls There are a small number of commands for invoking some of the formatting capabilities of multi-font output devices. The available commands are: .FONT(FONT (Command) .FONT NIL ("25") 23)(.FONT (Command) NIL NIL ("25") 23) FONTSPEC [PRINTOUT Command] Changes printing to the font FONTSPEC, which can be a font descriptor, a "font list" such as '(MODERN 10), an image stream (coerced to its current font), or a windows (coerced to the current font of its display stream). The DSPFONT is changed permanently. See fonts (Chapter 27) for more information. FONTSPEC may also be a positive integer N, which is taken as an abbreviated reference to the font class named FONTN (e.g. 1 => FONT1). .SUP(SUP (Command) .SUP NIL ("25") 23)(.SUP (Command) NIL NIL ("25") 23) [PRINTOUT Command] Specifies superscripting. All subsequent characters are printed above the base of the current line. Note that this is absolute, not relative: a .SUP following a .SUP is a no-op. .SUB(SUB (Command) .SUB NIL ("25") 23)(.SUB (Command) NIL NIL ("25") 23) [PRINTOUT Command] Specifies subscripting. Subsequent printing is below the base of the current line. As with superscripting, the effect is absolute. .BASE(BASE (Command) .BASE NIL ("25") 23)(.BASE (Command) NIL NIL ("25") 23) [PRINTOUT Command] Moves printing back to the base of the current line. Un-does a previous .SUP or .SUB; a no-op, if printing is currently at the base. Printing Specifications The value of any expression in a PRINTOUT form that is not recognized as a command itself or as a command argument is printed using PRIN1 by default. For example, title strings can be printed by simply including the string as a separate PRINTOUT command, and the values of variables and forms can be printed in much the same way. Note that a literal integer, say 51, cannot be printed by including it as a command, since it would be interpreted as a TAB; the desired effect can be obtained by using instead the string specification "51", or the form (QUOTE 51). For those instances when PRIN1 is not appropriate, e.g., PRIN2 is required, or a list structures must be prettyprinted, the following commands are available: .P2(P2 (Command) .P2 NIL ("25") 24)(.P2 (Command) NIL NIL ("25") 24) THING [PRINTOUT Command] Causes THING to be printed using PRIN2; translates as (PRIN2 THING). .PPF(PPF (Command) .PPF NIL ("25") 24)(.PPF (Command) NIL NIL ("25") 24) THING [PRINTOUT Command] Causes THING to be prettyprinted at the current line position via PRINTDEF (see Chapter 26). The call to PRINTDEF specifies that THING is to be printed as if it were part of a function definition. That is, SELECTQ, PROG, etc., receive special treatment. .PPV(PPV (Command) .PPV NIL ("25") 24)(.PPV (Command) NIL NIL ("25") 24) THING [PRINTOUT Command] Prettyprints THING as a variable; no special interpretation is given to SELECTQ, PROG, etc. .PPFTL(PPFTL (Command) .PPFTL NIL ("25") 24)(.PPFTL (Command) NIL NIL ("25") 24) THING [PRINTOUT Command] Like .PPF, but prettyprints THING as a tail, that is, without the initial and final parentheses if it is a list. Useful for prettyprinting sub-lists of a list whose other elements are formatted with other commands. .PPVTL(PPVTL (Command) .PPVTL NIL ("25") 24)(.PPVTL (Command) NIL NIL ("25") 24) THING [PRINTOUT Command] Like .PPV, but prettyprints THING as a tail. Paragraph Format Interlisp's prettyprint routines are designed to display the structure of expressions, but they are not really suitable for formatting unstructured text. If a list is to be printed as a textual paragraph, its internal structure is less important than controlling its left and right margins, and the indentation of its first line. The .PARA and .PARA2 commands allow these parameters to be conveniently specified. .PARA(PARA (Command) .PARA NIL ("25") 24)(.PARA (Command) NIL NIL ("25") 24) LMARG RMARG LIST [PRINTOUT Command] Prints LIST in paragraph format, using PRIN1. Translates as (PRINTPARA LMARG RMARG LIST) (see below). Example: (PRINTOUT T 10 .PARA 5 -5 LST) will print the elements of LST as a paragraph with left margin at 5, right margin at (LINELENGTH)-5, and the first line indented to 10. .PARA2(PARA2 (Command) .PARA2 NIL ("25") 25)(.PARA2 (Command) NIL NIL ("25") 25) LMARG RMARG LIST [PRINTOUT Command] Print as paragraph using PRIN2 instead of PRIN1. Translates as (PRINTPARA LMARG RMARG LIST T). Right-Flushing Two commands are provided for printing simple expressions flushed-right against a specified line position, using the function FLUSHRIGHT (see below). They take into account the current position, the number of characters in the print-name of the expression, and the position the expression is to be flush against, and then print the appropriate number of spaces to achieve the desired effect. Note that this might entail going to a new line before printing. Note also that right-flushing of expressions longer than a line (e.g. a large list) makes little sense, and the appearance of the output is not guaranteed. .FR(FR (Command) .FR NIL ("25") 25)(.FR (Command) NIL NIL ("25") 25) POS EXPR [PRINTOUT Command] Flush-right using PRIN1. The value of POS determines the position that the right end of EXPR will line up at. As with the horizontal spacing commands, a negative position number means |POS| columns from the current position, a positive number specifies the position absolutely. POS=0 specifies the right-margin, i.e. is interpreted as (LINELENGTH). .FR2(FR2 (Command) .FR2 NIL ("25") 25)(.FR2 (Command) NIL NIL ("25") 25) POS EXPR [PRINTOUT Command] Flush-right using PRIN2 instead of PRIN1. Centering Commands for centering simple expressions between the current line position and another specified position are also available. As with right flushing, centering of large expressions is not guaranteed. .CENTER(CENTER (Command) .CENTER NIL ("25") 25)(.CENTER (Command) NIL NIL ("25") 25) POS EXPR [PRINTOUT Command] Centers EXPR between the current line position and the position specified by the value of POS. A positive POS is an absolute position number, a negative POS specifies a position relative to the current position, and 0 indicates the right-margin. Uses PRIN1 for printing. .CENTER2(CENTER2 (Command) .CENTER2 NIL ("25") 25)(.CENTER2 (Command) NIL NIL ("25") 25) POS EXPR [PRINTOUT Command] Centers using PRIN2 instead of PRIN1. Numbering The following commands provide FORTRAN-like formatting capabilities for integer and floating-point numbers. Each command specifies a printing format and a number to be printed. The format specification translates into a format-list for the function PRINTNUM. .I(I (Command) .I NIL ("25") 26)(.I (Command) NIL NIL ("25") 26)FORMAT NUMBER [PRINTOUT Command] Specifies integer printing. Translates as a call to the function PRINTNUM with a FIX format-list constructed from FORMAT. The atomic format is broken apart at internal periods to form the format-list. For example, .I5.8.T yields the format-list (FIX 5 8 T), and the command sequence (PRINTOUT T .I5.8.T FOO) translates as (PRINTNUM '(FIX 5 8 T) FOO). This expression causes the value of FOO to be printed in radix 8 right-flushed in a field of width 5, with 0's used for padding on the left. Internal NIL's in the format specification may be omitted, e.g., the commands .I5..T and .I5.NIL.T are equivalent. The format specification .I1 is often useful for forcing a number to be printed in radix 10 (but not otherwise specially formatted), independent of the current setting of RADIX. .F(F (Command) .F NIL ("25") 26)(.F (Command) NIL NIL ("25") 26) FORMAT NUMBER [PRINTOUT Command] Specifies floating-number printing. Like the .I format command, except translates with a FLOAT format-list. .N(N (Command) .N NIL ("25") 26)(.N (Command) NIL NIL ("25") 26) FORMAT NUMBER [PRINTOUT Command] The .I and .F commands specify calls to PRINTNUM with quoted format specifications. The .N command translates as (PRINTNUM FORMAT NUMBER), i.e., it permits the format to be the value of some expression. Note that, unlike the .I and .F commands, FORMAT is a separate element in the command list, not part of an atom beginning with .N. Escaping to Lisp There are many reasons for taking control away from PRINTOUT in the middle of a long printing expression. Common situations involve temporary changes to system printing parameters (e.g. LINELENGTH), conditional printing (e.g. print FOO only if FIE is T), or lower-level iterative printing within a higher-level print specification. #(# (Command) NIL NIL ("25") 26) FORM [PRINTOUT Command] The escape command. FORM is an arbitrary Lisp expression that is evaluated within the context established by the PRINTOUT form, i.e., FORM can assume that the primary output stream has been set to be the FILE argument to PRINTOUT. Note that nothing is done with the value of FORM; any printing desired is accomplished by FORM itself, and the value is discarded. Note: Although PRINTOUT logically encloses its translation in a RESETFORM (Chapter 14) to change the primary output file to the FILE argument (if non-NIL), in most cases it can actually pass FILE (or a locally bound variable if FILE is a non-trivial expression) to each printing function. Thus, the RESETFORM is only generated when the # command is used, or user-defined commands (below) are used. If many such occur in repeated PRINTOUT forms, it may be more efficient to embed them all in a single RESETFORM which changes the primary output file, and then specify FILE=NIL in the PRINTOUT expressions themselves. User-Defined Commands The collection of commands and options outlined above is aimed at fulfilling all common printing needs. However, certain applications might have other, more specialized printing idioms, so a facility is provided whereby you can define new commands. This is done by adding entries to the global list PRINTOUTMACROS to define how the new commands are to be translated. PRINTOUTMACROS(PRINTOUTMACROS (Variable) NIL NIL ("25") 27) [Variable] PRINTOUTMACROS is an association-list whose elements are of the form (COMM FN). Whenever COMM appears in command position in the sequence of PRINTOUT commands (as opposed to an argument position of another command), FN is applied to the tail of the command-list (including the command). After inspecting as much of the tail as necessary, the function must return a list whose CAR is the translation of the user-defined command and its arguments, and whose CDR is the list of commands still remaining to be translated in the normal way. For example, suppose you want to define a command "?", which will cause its single argument to be printed with PRIN1 only if it is not NIL. This can be done by entering (? ?TRAN) on PRINTOUTMACROS, and defining the function ?TRAN as follows: (DEFINEQ (?TRAN (COMS) (CONS (SUBST (CADR COMS) 'ARG '(PROG ((TEMP ARG)) (COND (TEMP (PRIN1 TEMP))))) (CDDR COMS))] Note that ?TRAN does not do any printing itself; it returns a form which, when evaluated in the proper context, will perform the desired action. This form should direct all printing to the primary output file. Special Printing Functions The paragraph printing commands are translated into calls on the function PRINTPARA, which may also be called directly: (PRINTPARA(PRINTPARA (Function) NIL NIL ("25") 27) LMARG RMARG LIST P2FLAG PARENFLAG FILE) [Function] Prints LIST on FILE in line-filled paragraph format with its first element beginning at the current line position and ending at or before RMARG, and with subsequent lines appearing between LMARG and RMARG. If P2FLAG is non-NIL, prints elements using PRIN2, otherwise PRIN1. If PARENFLAG is non-NIL, then parentheses will be printed around the elements of LIST. If LMARG is zero or positive, it is interpreted as an absolute column position. If it is negative, then the left margin will be at |LMARG|+(POSITION). If LMARG=NIL, the left margin will be at (POSITION), and the paragraph will appear in block format. If RMARG is positive, it also is an absolute column position (which may be greater than the current (LINELENGTH)). Otherwise, it is interpreted as relative to (LINELENGTH), i.e., the right margin will be at (LINELENGTH)+|RMARG|. Example: (TAB 10) (PRINTPARA 5 -5 LST T) will PRIN2 the elements of LST in a paragraph with the first line beginning at column 10, subsequent lines beginning at column 5, and all lines ending at or before (LINELENGTH)-5. The current (LINELENGTH) is unaffected by PRINTPARA, and upon completion, FILE will be positioned immediately after the last character of the last item of LIST. PRINTPARA is a no-op if LIST is not a list. The right-flushing and centering commands translate as calls to the function FLUSHRIGHT: (FLUSHRIGHT(FLUSHRIGHT (Function) NIL NIL ("25") 28) POS X MIN P2FLAG CENTERFLAG FILE) [Function] If CENTERFLAG=NIL, prints X right-flushed against position POS on FILE; otherwise, centers X between the current line position and POS. Makes sure that it spaces over at least MIN spaces before printing by doing a TERPRI if necessary; MIN=NIL is equivalent to MIN=1. A positive POS indicates an absolute position, while a negative POS signifies the position which is |POS| to the right of the current line position. POS=0 is interpreted as (LINELENGTH), the right margin. READFILE and WRITEFILE 1 For those applications where you simply want to simply read all of the expressions on a file, and not evaluate them, the function READFILE is available: (READFILE(READFILE (Function) NIL NIL ("25") 28) FILE RDTBL ENDTOKEN) [NoSpread Function] Reads successive expressions from file using READ (with read table RDTBL) until the single litatom ENDTOKEN is read, or an end of file encountered. Returns a list of these expressions. If RDTBL is not specified, it defaults to FILERDTBL. If ENDTOKEN is not specified, it defaults to the litatom STOP. (WRITEFILE(WRITEFILE (Function) NIL NIL ("25") 28) X FILE) [Function] Writes a date expression onto FILE, followed by successive expressions from X, using FILERDTBL as a read table. If X is atomic, its value is used. If FILE is not open, it is opened. If FILE is a list, (CAR FILE) is used and the file is left opened. Otherwise, when X is finished, the litatom STOP is printed on FILE and it is closed. Returns FILE. (ENDFILE(ENDFILE (Function) NIL NIL ("25") 29) FILE) [Function] Prints STOP on FILE and closes it. Read Tables 1 Many Interlisp input functions treat certain characters in special ways. For example, READ recognizes that the right and left parenthesis characters are used to specify list structures, and that the quote character is used to delimit text strings. The Interlisp input and (to a certain extent) output routines are table driven by read tables. Read tables are objects that specify the syntactic properties of characters for input routines. Since the input routines parse character sequences into objects, the read table in use determines which sequences are recognized as literal atoms, strings, list structures, etc. Most Interlisp input functions take an optional read table argument, which specifies the read table to use when reading an expression. If NIL is given as the read table, the "primary read table" is used. If T is specified, the system terminal read table is used. Some functions will also accept the atom ORIG (not the value of ORIG) as indicating the "original" system read table. Some output functions also take a read table argument. For example, PRIN2 prints an expression so that it would be read in correctly using a given read table. The Interlisp-D system uses the following read tables: T for input/output from terminals, the value of FILERDTBL for input/output from files, the value of EDITRDTBL for input from terminals while in the tty-based editor, the value of DEDITRDTBL for input from terminals while in the display-based editor, and the value of CODERDTBL for input/output from compiled files. These five read tables are initially copies of the ORIG read table, with changes made to some of them to provide read macros that are specific to terminal input or file input. Using the functions described below, you may further change, reset, or copy these tables. However, in the case of FILERDTBL and CODERDTBL, you are cautioned that changing these tables may prevent the system from being able to read files made with the original tables, or prevent users possessing only the standard tables from reading files made using the modified tables. You can also create new read tables, and either explicitly pass them to input/output functions as arguments, or install them as the primary read table, via SETREADTABLE, and then not specify a RDTBL argument, i.e., use NIL. Read Table Functions (READTABLEP(READTABLEP (Function) NIL NIL ("25") 29) RDTBL) [Function] Returns RDTBL if RDTBL is a real read table (not T or ORIG), otherwise NIL. (GETREADTABLE(GETREADTABLE (Function) NIL NIL ("25") 30) RDTBL) [Function] If RDTBL=NIL, returns the primary read table. If RDTBL=T, returns the system terminal read table. If RDTBL is a real read table, returns RDTBL. Otherwise, generates an ILLEGAL READTABLE error. (SETREADTABLE(SETREADTABLE (Function) NIL NIL ("25") 30) RDTBL FLG) [Function] Sets the primary read table to RDTBL. If FLG=T, SETREADTABLE sets the system terminal read table, T. Note that you can reset the other system read tables with SETQ, e.g., (SETQ FILERDTBL (GETREADTABLE)). Generates an ILLEGAL READTABLE error if RDTBL is not NIL, T, or a real read table. Returns the previous setting of the primary read table, so SETREADTABLE is suitable for use with RESETFORM (Chapter 14). (COPYREADTABLE(COPYREADTABLE (Function) NIL NIL ("25") 30) RDTBL) [Function] Returns a copy of RDTBL. RDTBL can be a real read table, NIL, T, or ORIG (in which case COPYREADTABLE returns a copy of the original system read table), otherwise COPYREADTABLE generates an ILLEGAL READTABLE error. Note that COPYREADTABLE is the only function that creates a read table. (RESETREADTABLE(RESETREADTABLE (Function) NIL NIL ("25") 30) RDTBL FROM) [Function] Copies (smashes) FROM into RDTBL. FROM and RDTBL can be NIL, T, or a real read table. In addition, FROM can be ORIG, meaning use the system's original read table. Syntax Classes A read table is an object that contains information about the "syntax class" of each character. There are nine basic syntax classes: LEFTPAREN, RIGHTPAREN, LEFTBRACKET, RIGHTBRACKET, STRINGDELIM, ESCAPE, BREAKCHAR, SEPRCHAR, and OTHER, each associated with a primitive syntactic property. In addition, there is an unlimited assortment of user-defined syntax classes, known as "read macros". The basic syntax classes are interpreted as follows: LEFTPAREN (normally left parenthesis) Begins list structure. RIGHTPAREN (normally right parenthesis) Ends list structure. LEFTBRACKET (normally left bracket) Begins list structure. Also matches RIGHTBRACKET characters. RIGHTBRACKET (normally left bracket) Ends list structure. Can close an arbitrary numbers of LEFTPAREN lists, back to the last LEFTBRACKET. STRINGDELIM (normally double quote) Begins and ends text strings. Within the string, all characters except for the one(s) with class ESCAPE are treated as ordinary, i.e., interpreted as if they were of syntax class OTHER. To include the string delimiter inside a string, prefix it with the ESCAPE character. ESCAPE (normally percent sign) Inhibits any special interpretation of the next character, i.e., the next character is interpreted to be of class OTHER, independent of its normal syntax class. BREAKCHAR (None initially) Is a break character, i.e., delimits atoms, but is otherwise an ordinary character. SEPRCHAR (space, carriage return, etc.) Delimits atoms, and is otherwise ignored. OTHER Characters that are not otherwise special belong to the class OTHER. Characters of syntax class LEFTPAREN, RIGHTPAREN, LEFTBRACKET, RIGHTBRACKET, and STRINGDELIM are all break characters. That is, in addition to their interpretation as delimiting list or string structures, they also terminate the reading of an atom. Characters of class BREAKCHAR serve only to terminate atoms, with no other special meaning. In addition, if a break character is the first non-separator encountered by RATOM, it is read as a one-character atom. In order for a break character to be included in an atom, it must be preceded by the ESCAPE character. Characters of class SEPRCHAR also terminate atoms, but are otherwise completely ignored; they can be thought of as logically spaces. As with break characters, they must be preceded by the ESCAPE character in order to appear in an atom. For example, if $ were a break character and * a separator character, the input stream ABC**DEF$GH*$$ would be read by six calls to RATOM returning respectively ABC, DEF, $, GH, $, $. Although normally there is only one character in a read table having each of the list- and string-delimiting syntax classes (such as LEFTPAREN), it is perfectly acceptable for any character to have any syntax class, and for more than one to have the same class. Note that a "syntax class" is an abstraction: there is no object referencing a collection of characters called a syntax class. Instead, a read table provides the association between a character and its syntax class, and the input/output routines enforce the abstraction by using read tables to drive the parsing. The functions below are used to obtain and set the syntax class of a character in a read table. CH can either be a character code (a integer), or a character (a single-character atom). Single-digit integers are interpreted as character codes, rather than as characters. For example, 1 indicates Control-A, and 49 indicates the character 1. Note that CH can be a full sixteen-bit NS character (see Chapter 2). Note: Terminal tables, described in Chapter 30, also associate characters with syntax classes, and they can also be manipulated with the functions below. The set of read table and terminal table syntax classes are disjoint, so there is never any ambiguity about which type of table is being referred to. (GETSYNTAX CH TABLE) [Function] Returns the syntax class of CH, a character or a character code, with respect to TABLE. TABLE can be NIL, T, ORIG, or a real read table or terminal table. CH can also be a syntax class, in which case GETSYNTAX returns a list of the character codes in TABLE that have that syntax class. (SETSYNTAX CHAR CLASS TABLE) [Function] Sets the syntax class of CHAR, a character or character code, in TABLE. TABLE can be either NIL, T, or a real read table or terminal table. SETSYNTAX returns the previous syntax class of CHAR. CLASS can be any one of the following: f The name of one of the basic syntax classes. f A list, which is interpreted as a read macro (see below). f NIL, T, ORIG, or a real read table or terminal table, which means to give CHAR the syntax class it has in the table indicated by CLASS. For example, (SETSYNTAX '%( 'ORIG TABLE) gives the left parenthesis character in TABLE the same syntax class that it has in the original system read table. f A character code or character, which means to give CHAR the same syntax class as the character CHAR in TABLE. For example, (SETSYNTAX '{ '%[ TABLE) gives the left brace character the same syntax class as the left bracket. (SYNTAXP(SYNTAXP (Function) NIL NIL ("25") 32) CODE CLASS TABLE) [Function] CODE is a character code; TABLE is NIL, T, or a real read table or terminal table. Returns T if CODE has the syntax class CLASS in TABLE; NIL otherwise. CLASS can also be a read macro type (MACRO, SPLICE, INFIX), or a read macro option (FIRST, IMMEDIATE, etc.), in which case SYNTAXP returns T if the syntax class is a read macro with the specified property. SYNTAXP will not accept a character as an argument, only a character code. For convenience in use with SYNTAXP, the atom BREAK may be used to refer to all break characters, i.e., it is the union of LEFTPAREN, RIGHTPAREN, LEFTBRACKET, RIGHTBRACKET, STRINGDELIM, and BREAKCHAR. For purely symmetrical reasons, the atom SEPR corresponds to all separator characters. However, since the only separator characters are those that also appear in SEPRCHAR, SEPR and SEPRCHAR are equivalent. Note that GETSYNTAX never returns BREAK or SEPR as a value although SETSYNTAX and SYNTAXP accept them as arguments. Instead, GETSYNTAX returns one of the disjoint basic syntax classes that comprise BREAK. BREAK as an argument to SETSYNTAX is interpreted to mean BREAKCHAR if the character is not already of one of the BREAK classes. Thus, if %( is of class LEFTPAREN, then (SETSYNTAX '%( 'BREAK) doesn't do anything, since %( is already a break character, but (SETSYNTAX '%( 'BREAKCHAR) means make %( be just a break character, and therefore disables the LEFTPAREN function of %(. Similarly, if one of the format characters is disabled completely, e.g., by (SETSYNTAX '%( 'OTHER), then (SETSYNTAX '%( 'BREAK) would make %( be only a break character; it would not restore %( as LEFTPAREN. The following functions provide a way of collectively accessing and setting the separator and break characters in a read table: (GETSEPR(GETSEPR (Function) NIL NIL ("25") 33) RDTBL) [Function] Returns a list of separator character codes in RDTBL. Equivalent to (GETSYNTAX 'SEPR RDTBL). (GETBRK(GETBRK (Function) NIL NIL ("25") 33) RDTBL) [Function] Returns a list of break character codes in RDTBL. Equivalent to (GETSYNTAX 'BREAK RDTBL). (SETSEPR(SETSEPR (Function) NIL NIL ("25") 33) LST FLG RDTBL) [Function] Sets or removes the separator characters for RDTBL. LST is a list of charactors or character codes. FLG determines the action of SETSEPR as follows: If FLG=NIL, makes RDTBL have exactly the elements of LST as separators, discarding from RDTBL any old separator characters not in LST. If FLG=0, removes from RDTBL as separator characters all elements of LST. This provides an "UNSETSEPR". If FLG=1, makes each of the characters in LST be a separator in RDTBL. If LST=T, the separator characters are reset to be those in the system's read table for terminals, regardless of the value of FLG, i.e., (SETSEPR T) is equivalent to (SETSEPR (GETSEPR T)). If RDTBL is T, then the characters are reset to those in the original system table. Returns NIL. (SETBRK(SETBRK (Function) NIL NIL ("25") 33) LST FLG RDTBL) [Function] Sets the break characters for RDTBL. Similar to SETSEPR. As with SETSYNTAX to the BREAK class, if any of the list- or string-delimiting break characters are disabled by an appropriate SETBRK (or by making it be a separator character), its special action for READ will not be restored by simply making it be a break character again with SETBRK. However, making these characters be break characters when they already are will have no effect. The action of the ESCAPE character (normally %) is not affected by SETSEPR or SETBRK. It can be disabled by setting its syntax to the class OTHER, and other characters can be used for escape on input by assigning them the class ESCAPE. As of this writing, however, there is no way to change the output escape character; it is "hardwired" as %. That is, on output, characters of special syntax that need to be preceded by the ESCAPE character will always be preceded by %, independent of the syntax of % or which, if any characters, have syntax ESCAPE. The following function can be used for defeating the action of the ESCAPE character or characters: (ESCAPE(ESCAPE (Function) NIL NIL ("25") 34) FLG RDTBL) [Function] If FLG=NIL, makes characters of class ESCAPE behave like characters of class OTHER on input. Normal setting is (ESCAPE T). ESCAPE returns the previous setting. Read Macros This is a description of the OLD-INTERLISP-T read macros. Read macros are user-defined syntax classes that can cause complex operations when certain characters are read. Read macro characters are defined by specifying as a syntax class an expression of the form: (TYPE OPTION1 ... OPTIONN FN) where TYPE is one of MACRO, SPLICE, or INFIX, and FN is the name of a function or a lambda expression. Whenever READ encounters a read macro character, it calls the associated function, giving it as arguments the input stream and read table being used for that call to READ. The interpretation of the value returned depends on the type of read macro: MACRO This is the simplest type of read macro. The result returned from the macro is treated as the expression to be read, instead of the read macro character. Often the macro reads more input itself. For example, in order to cause ~EXPR to be read as (NOT EXPR), one could define ~ as the read macro: [MACRO (LAMBDA (FL RDTBL) (LIST 'NOT (READ FL RDTBL] SPLICE The result (which should be a list or NIL) is spliced into the input using NCONC. For example, if $ is defined by the read macro: (SPLICE (LAMBDA NIL (APPEND FOO))) and the value of FOO is (A B C), then when you input (X $ Y), the result will be (X A B C Y). INFIX The associated function is called with a third argument, which is a list, in TCONC format (Chapter 3), of what has been read at the current level of list nesting. The function's value is taken as a new TCONC list which replaces the old one. For example, the infix operator + could be defined by the read macro: (INFIX (LAMBDA (FL RDTBL Z) (RPLACA (CDR Z) (LIST (QUOTE IPLUS) (CADR Z) (READ FL RDTBL))) Z)) If an INFIX read macro character is encountered not in a list, the third argument to its associated function is NIL. If the function returns NIL, the read macro character is essentially ignored and reading continues. Otherwise, if the function returns a TCONC list of one element, that element is the value of the READ. If it returns a TCONC list of more than one element, the list is the value of the READ. The specification for a read macro character can be augmented to specify various options OPTION1 ... OPTIONN, e.g., (MACRO FIRST IMMEDIATE FN). The following three disjoint options specify when the read macro character is to be effective: ALWAYS The default. The read macro character is always effective (except when preceded by the % character), and is a break character, i.e., a member of (GETSYNTAX 'BREAK RDTBL). FIRST The character is interpreted as a read macro character only when it is the first character seen after a break or separator character; in all other situations, the character is treated as having class OTHER. The read macro character is not a break character. For example, the quote character is a FIRST read macro character, so that DON'T is read as the single atom DON'T, rather than as DON followed by (QUOTE T). ALONE The read macro character is not a break character, and is interpreted as a read macro character only when the character would have been read as a separate atom if it were not a read macro character, i.e., when its immediate neighbors are both break or separator characters. Making a FIRST or ALONE read macro character be a break character (with SETBRK) disables the read macro interpretation, i.e., converts it to syntax class BREAKCHAR. Making an ALWAYS read macro character be a break character is a no-op. The following two disjoint options control whether the read macro character is to be protected by the ESCAPE character on output when a litatom containing the character is printed: ESCQUOTE or ESC The default. When printed with PRIN2, the read macro character will be preceded by the output escape character (%) as needed to permit the atom containing it to be read correctly. Note that for FIRST macros, this means that the character need be quoted only when it is the first character of the atom. NOESCQUOTE or NOESC The read macro character will always be printed without an escape. For example, the ? read macro in the T read table is a NOESCQUOTE character. Unless you are very careful what you are doing, read macro characters in FILERDTBL should never be NOESCQUOTE, since symbols that happen to contain the read macro character will not read back in correctly. The following two disjoint options control when the macro's function is actually executed: IMMEDIATE or IMMED The read macro character is immediately activated, i.e., the current line is terminated, as if an EOL had been typed, a carriage-return line-feed is printed, and the entire line (including the macro character) is passed to the input function. IMMEDIATE read macro characters enable you to specify a character that will take effect immediately, as soon as it is encountered in the input, rather than waiting for the line to be terminated. Note that this is not necessarily as soon as the character is typed. Characters that cause action as soon as they are typed are interrupt characters (see Chapter 30). Note that since an IMMEDIATE macro causes any input before it to be sent to the reader, characters typed before an IMMEDIATE read macro character cannot be erased by Control-A or Control-Q once the IMMEDIATE character has been typed, since they have already passed through the line buffer. However, an INFIX read macro can still alter some of what has been typed earlier, via its third argument. NONIMMEDIATE or NONIMMED The default. The read macro character is a normal character with respect to the line buffering, and so will not be activated until a carriage-return or matching right parenthesis or bracket is seen. Making a read macro character be both ALONE and IMMEDIATE is a contradiction, since ALONE requires that the next character be input in order to see if it is a break or separator character. Thus, ALONE read macros are always NONIMMEDIATE, regardless of whether or not IMMEDIATE is specified. Read macro characters can be "nested". For example, if = is defined by (MACRO (LAMBDA (FL RDTBL) (EVAL (READ FL RDTBL)))) and ! is defined by (SPLICE (LAMBDA (FL RDTBL) (READ FL RDTBL))) then if the value of FOO is (A B C), and (X =FOO Y) is input, (X (A B C) Y) will be returned. If (X !=FOO Y) is input, (X A B C Y) will be returned. Note: If a read macro's function calls READ, and the READ returns NIL, the function cannot distinguish the case where a RIGHTPAREN or RIGHTBRACKET followed the read macro character, (e.g. "(A B ')"), from the case where the atom NIL (or "()") actually appeared. In Interlisp-D, a READ inside of a read macro when the next input character is a RIGHTPAREN or RIGHTBRACKET reads the character and returns NIL, just as if the READ had not occurred inside a read macro. If a call to READ from within a read macro encounters an unmatched RIGHTBRACKET within a list, the bracket is simply put back into the buffer to be read (again) at the higher level. Thus, inputting an expression such as (A B '(C D] works correctly. (INREADMACROP(INREADMACROP (Function) NIL NIL ("25") 37)) [Function] Returns NIL if currently not under a read macro function, otherwise the number of unmatched left parentheses or brackets. (READMACROS(READMACROS (Function) NIL NIL ("25") 37) FLG RDTBL) [Function] If FLG=NIL, turns off action of read macros in read table RDTBL. If FLG=T, turns them on. Returns previous setting. The following read macros are standardly defined in Interlisp in the T and EDITRDTBL read tables: ' (single-quote) Returns the next expression, wrapped in a call to QUOTE; e.g., 'FOO reads as (QUOTE FOO). The macro is defined as a FIRST read macro, so that the quote character has no effect in the middle of a symbol. The macro is also ignored if the quote character is immediately followed by a separator character. Control-Y Defined in T and EDITRDTBL. Returns the result of evaluating the next expression. For example, if the value of FOO is (A B), then (LIST 1 control-YFOO 2) is read as (LIST 1 (A B) 2). Note that no structure is copied; the third element of that input expression is still EQ to the value of FOO. Control-Y can thus be used to read structures that ordinarily have no read syntax. For example, the value returned from reading (KEY1 Control-Y(ARRAY 10)) has an array as its second element. Control-Y can be thought of as an "un-quote" character. The choice of character to perform this function is changeable with SETTERMCHARS (see Chapter 16). ` (backquote) Backquote makes it easier to write programs to construct complex data structures. Backquote is like quote, except that within the backquoted expression, forms can be evaluated. The general idea is that the backquoted expression is a "template" containing some constant parts (as with a quoted form) and some parts to be filled in by evaluating something. Unlike with control-Y, however, the evaluation occurs not at the time the form is read, but at the time the backquoted expression is evaluated. That is, the backquote macro returns an expression which, when evaluated, produces the desired structure. Within the backquoted expression, the character "," (comma) introduces a form to be evaluated. The value of a form preceded by ",@" is to be spliced in, using APPEND. If it is permissible to destroy the list being spliced in (i.e., NCONC may be used in the translation), then ",." can be used instead of ",@". For example, if the value of FOO is (1 2 3 4), then the form `(A ,(CAR FOO) ,@(CDDR FOO) D E) evaluates to (A 1 3 4 D E); it is logically equivalent to writing (CONS 'A (CONS (CAR FOO) (APPEND (CDDR FOO) '(D E)))) . Backquote is particularly useful for writing macros. For example, the body of a macro that refers to X as the macro's argument list might be `(COND ((FIXP ,(CAR X)) ,(CADR X)) (T .,(CDDR X))) which is equivalent to writing (LIST 'COND (LIST (LIST 'FIXP (CAR X)) (CADR X)) (CONS 'T (CDDR X))) Note that comma does not have any special meaning outside of a backquote context. For users without a backquote character on their keyboards, backquote can also be written as |' (vertical-bar, quote). ? Implements the ?= command for on-line help regarding the function currently being "called" in the typein (see Chapter 26). | (vertical bar) When followed by an end of line, tab or space, | is ignored, i.e., treated as a separator character, enabling the editor's CHANGECHAR feature (see Chapter 26). Otherwise it is a "dispatching" read macro whose meaning depends on the character(s) following it. The following are currently defined: ' (quote) -- A synonym for backquote. . (period) -- Returns the evaluation of the next expression, i.e., this is a synonym for Control-Y. , (comma) -- Returns the evaluation of the next expression at load time, i.e., the following expression is quoted in such a manner that the compiler treats it as a literal whose value is not determined until the compiled expression is loaded. O or o (the letter O) -- Treats the next number as octal, i.e., reads it in radix 8. For example, |o12 = 10 (decimal). B or b -- Treats the next number as binary, i.e., reads it in radix 2. For example, |b101 = 5 (decimal). X or x -- Treats the next number as hexadecimal, i.e., reads it in radix 16. The uppercase letters A though F are used as the digits after 9. For example, |x1A = 26 (decimal). R or r -- Reads the next number in the radix specified by the (decimal) number that appears between the | and the R. When inputting a number in a radix above ten, the upper-case letters A through Z can be used as the digits after 9 (but there is no digit above Z, so it is not possible to type all base-99 digits). For example, |3r120 reads 120 in radix 3, returning 15. (, {, ^ -- Used internally by HPRINT and HREAD (see above) to print and read unusual expressions. The dispatching characters that are letters can appear in either upper- or lowercase. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "24-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "24-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "24-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "24-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "24-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "24-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))25xlx2lxx2Hll5xlx3(T/HHF PAGEHEADING RIGHTPAGE@ PAGEHEADINGLEFTBACKT-T,3T206 +306T306 +T306 +T2/52HHl2l/2(,2l,,HH/5,2lll2HHl2l22l2l5,,52l +2Hll3(T2Hl +l,HH,,3(T,,, TITAN PALATINO PALATINO PALATINO TITAN TITAN TITAN MODERN +MODERN +   IM.CHAP.GETFN + HRULE.GETFNMODERN + 0*-IM.INDEX.GETFN  HRULE.GETFNMODERN + -IO + 81Ut J +J 'IM.INDEX.GETFNTITAN  ,%$UJ %IM.INDEX.GETFNTITAN  , /  HRULE.GETFNMODERN + .,  - - 6 S-a"-"$#IM.INDEX.GETFNTITAN  ,E,A,"IM.INDEX.GETFNTITAN  ,Ki   ,tR ,)#a ),6  ,,2V6 ,%W,S/%IM.INDEX.GETFNTITAN  ,.EL$IM.INDEX.GETFNTITAN ,;$IM.INDEX.GETFNTITAN  , S ,  , ) %IM.INDEX.GETFN ,0N% ? +%IM.INDEX.GETFNTITAN  ,8#IM.INDEX.GETFNTITAN  ,%E2 'IM.INDEX.GETFNTITAN  ,B'IM.INDEX.GETFNTITAN  ,/B!IM.INDEX.GETFNMODERN + ,X+ % j.c#IM.INDEX.GETFNTITAN  ,- +,% /,:   31"IM.INDEX.GETFNTITAN  ,N > , +    ,IM.INDEX.GETFNMODERN + ,$! *z,' B%  $IM.INDEX.GETFNMODERN +  ,c =; 8u, =- , >)U 'IM.INDEX.GETFNMODERN + ,> Tm  *6IM.INDEX.GETFN  HRULE.GETFNMODERN + .RXP),--E"-7J&$IM.INDEX.GETFNTITAN  ,G,B"#IM.INDEX.GETFNTITAN  ,#IM.INDEX.GETFNTITAN  ,>.S1"\D* X<#IM.INDEX.GETFNTITAN  +  #IM.INDEX.GETFNTITAN  ,#IM.INDEX.GETFNTITAN  ,& +#IM.INDEX.GETFNTITAN  ,)L!, +* +"IM.INDEX.GETFNTITAN  , +3.( +& +j $IM.INDEX.GETFNTITAN  ,&IM.INDEX.GETFN ,* 'IM.INDEX.GETFNTITAN  ,Q !IM.INDEX.GETFNTITAN   ,< /,  + ++@  'IM.INDEX.GETFNTITAN  ,  'IM.INDEX.GETFNTITAN  , /. + I  +Y  ;(IM.INDEX.GETFNMODERN + , )IM.INDEX.GETFNMODERN +  ,#, :&IM.INDEX.GETFNMODERN + ,,v   !  +(IM.INDEX.GETFNPALATINO  ,62)!T,Et +IM.INDEX.GETFNPALATINO  ,/ u .| +X. +)IM.INDEX.GETFNMODERN + ,  + + , +  $  "  4(8 +7 , +, f| f7, +'  '+'%'''#'''  ,IM.INDEX.GETFN , + +s   +".)IM.INDEX.GETFN ,  0" 'IM.INDEX.GETFNMODERN + , 'IM.INDEX.GETFNMODERN + ,  7IM.INDEX.GETFN .%8*QG$IM.INDEX.GETFNMODERN + ,>L, +!    +, ~ %IM.INDEX.GETFNTITAN  ,; ,J, 4.+%IM.INDEX.GETFNMODERN +  , +",  !& %$& +% , +   K,;,25.@J ,; ,  +@# *  +z S ,5N$    $ $$ $, ++/K K4~,V+,5S$   $ $$$ $$-IM.INDEX.GETFNMODERN + ,"40)6^  . +8'IM.INDEX.GETFNMODERN + ,0.4Q, =, 5, )H   .^-& +*%IM.INDEX.GETFNMODERN + +  , ++ +:, W$," + b , $IM.INDEX.GETFNMODERN + , 'IM.INDEX.GETFNMODERN + ,? , , ,&7R;/  HRULE.GETFNMODERN + - K9- +A i)0:- +` +)IM.INDEX.GETFNTITAN  ,5Q +)IM.INDEX.GETFNTITAN  , +8 +z P e +7 (IM.INDEX.GETFNTITAN  ,n  : *IM.INDEX.GETFNPALATINO ,W(  (IM.INDEX.GETFNMODERN + ,&,W 9, + I W (IM.INDEX.GETFNMODERN + , {%" 2*={  &IM.INDEX.GETFNMODERN +  , = +26,QP-,    ,,+ a e  C,K  !C'IM.INDEX.GETFNMODERN +  ,,,B& (IM.INDEX.GETFNMODERN + ,q +IM.INDEX.GETFNMODERN +  ,  +IM.INDEX.GETFNMODERN +  ,  'IM.INDEX.GETFNMODERN + ,-) *     -IM.INDEX.GETFNTITAN  ,/2  HRULE.GETFNMODERN + .]-0-/"-Z  +o 3 9,- +&IM.INDEX.GETFNMODERN +  ,0  Y,  *   HRULE.GETFNMODERN + .t&- -8 +-aNg +- PQ      --_ 4% -  + - -6)J+"*- 1 T s-Z#   .C"(: + ,, )4"IM.INDEX.GETFNMODERN +"IM.INDEX.GETFN , +F $IM.INDEX.GETFNMODERN +#IM.INDEX.GETFN ,<    ,UIM.INDEX.GETFN   IM.INDEX.GETFN   !IM.INDEX.GETFN ,t IM.INDEX.GETFNTITAN !IM.INDEX.GETFNPALATINO ,  .(5IM.INDEX.GETFNPALATINO ,U$IM.INDEX.GETFNTITAN #IM.INDEX.GETFNPALATINO , d$IM.INDEX.GETFNTITAN #IM.INDEX.GETFNPALATINO ,.$IM.INDEX.GETFNTITAN #IM.INDEX.GETFN,8 xF, E "IM.INDEX.GETFNTITAN "IM.INDEX.GETFNPALATINO ,  "IM.INDEX.GETFNTITAN "IM.INDEX.GETFNPALATINO ,$IM.INDEX.GETFNPALATINO #IM.INDEX.GETFN,I1 .![ea +-a IM.INDEX.GETFNTITAN !IM.INDEX.GETFNPALATINO ,"IM.INDEX.GETFNTITAN "IM.INDEX.GETFNPALATINO ,6 I#"IM.INDEX.GETFNTITAN "IM.INDEX.GETFNPALATINO , 6&IM.INDEX.GETFNTITAN $IM.INDEX.GETFNPALATINO ,&IM.INDEX.GETFNPALATINO $IM.INDEX.GETFN, .PA$IM.INDEX.GETFNTITAN #IM.INDEX.GETFNPALATINO , +, +7 (&IM.INDEX.GETFNTITAN $IM.INDEX.GETFNPALATINO ,  +.~ + IM.INDEX.GETFNTITAN !IM.INDEX.GETFNPALATINO ,/^[6 "IM.INDEX.GETFNPALATINO "IM.INDEX.GETFN,  +.(IM.INDEX.GETFNTITAN %IM.INDEX.GETFNPALATINO ,N,`*IM.INDEX.GETFNPALATINO &IM.INDEX.GETFN,   .IM.INDEX.GETFNTITAN IM.INDEX.GETFN,B` 'pB ,IM.INDEX.GETFNTITAN IM.INDEX.GETFN,.* IM.INDEX.GETFNTITAN IM.INDEX.GETFN ,) Y O .4 +$ PIM.INDEX.GETFNMODERN + ,Y B &*%+) 7&!D ]? 9.-8-IM.INDEX.GETFNTITAN ,6 0CE,YMM,3;    +, +.J % (IM.INDEX.GETFNTITAN  ,w.  :,} + +1,\ 0 % ,   M .M + +)IM.INDEX.GETFNTITAN  +, +  '+#2".    HRULE.GETFNMODERN + .'IM.INDEX.GETFNMODERN + ,-O," . (IM.INDEX.GETFNMODERN + ,* #  7&IM.INDEX.GETFNMODERN + ,*   HRULE.GETFNMODERN + .W-CaxV-8/ + F +N [  -   +)IM.INDEX.GETFNTITAN   +IM.INDEX.GETFNTITAN &. +IM.INDEX.GETFNTITAN  &=  +T   ,IM.INDEX.GETFNTITAN    + -IM.INDEX.GETFNTITAN &/  .  +     5 +4 ?   R   |LG * gK?  +     | *) zr & b 92 ,3*,+ * $+ &"0=>3)F7(K&IM.INDEX.GETFNPALATINO 3    B5 ,  +    ,v +  % @  /  # /  O   &IM.INDEX.GETFNPALATINO /%IM.INDEX.GETFNPALATINO + +&IM.INDEX.GETFNPALATINO -. %) #v G%IM.INDEX.GETFNPALATINO  aDAJ9SlT&*C%IM.INDEX.GETFNPALATINO ! +    # =O21$'"% NyC%211 11$1 %=o7=YbY98;   1L  7hI!LRg +V +V  +a] c e W J `Y ( k  8      ( + 3 + +!); + !' 2    +IM.INDEX.GETFNTITAN  ]   +)IM.INDEX.GETFNMODERN +  0,E A   W  Y   n3OD( # ( %h'211122 1 11:`  j +%c: ^ P ^ lH !D%5Xz \ No newline at end of file diff --git a/docs/medley-irm/24-IO.pdf b/docs/medley-irm/24-IO.pdf new file mode 100644 index 00000000..aed620de --- /dev/null +++ b/docs/medley-irm/24-IO.pdf @@ -0,0 +1,19565 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 4812 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-1)Tj +/TT4 1 Tf +10 0 0 10 54 558.2 Tm +( 24. INPUT/OUTPUT FUNCTIONS)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 549.2 m +510.01 549.2 l +S +BT +/TT6 1 Tf +10 0 0 10 509.9999 548.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 524.54 Tm +0.2489 Tw +(This chapter describes the standard I/O functions used for reading and printing characters and)Tj +0 -1.2222 TD +0.1433 Tw +[(Interlisp expressions on files and other streams. First, the primitive input functions are presented,)]TJ +T* +0.0644 Tw +(then the output functions, then functions for random-access operations \(such as searching a file for a)Tj +T* +0.1256 Tw +[(given stream, or changing the "next-character" pointer to a position in a file\). Next, the )]TJ +/TT10 1 Tf +40.5426 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +-40.5426 -1.2889 TD +0.38 Tw +(statement is documented \(see below\), which provides an easy way to write complex output)Tj +0 -1.2222 TD +0 Tw +(operations. Finally, read tables, used to parse characters as Interlisp expressions, are documented.)Tj +/TT4 1 Tf +10 0 0 10 54 426.6 Tm +(Specifying Streams for Input/Output Functions)Tj +ET +1 w +54.01 423.89 m +510.01 423.89 l +S +BT +/TT8 1 Tf +9 0 0 9 78 401.94 Tm +0.3033 Tw +(Most of the input/output functions in Interlisp-D have an argument named )Tj +/TT12 1 Tf +37.033 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.3033 Tw +[( or )]TJ +/TT12 1 Tf +2.0476 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +-45.0815 -1.2889 TD +0.07 Tw +(specifying on which open stream the functions action should occur \(the name )Tj +/TT12 1 Tf +35.61 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.07 Tw +[( is used in older)]TJ +-38.0104 -1.2889 TD +0.1589 Tw +(functions that predate the concept of stream; the two should, however, be treated synonymously\).)Tj +0 -1.2222 TD +0 Tw +(The value of this argument should be one of the following:)Tj +5.5756 -2 TD +0.0467 Tw +[(a )46.7(stream)-1334.3(An object of type )]TJ +/TT10 1 Tf +13.061 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0467 Tw +(, as returned by )Tj +/TT10 1 Tf +7.34 0 TD +0 Tw +(OPENSTREAM)Tj +/TT8 1 Tf +6.001 0 TD +0.0467 Tw +[( \(Chapter 23\) or)]TJ +-24.9114 -1.2889 TD +0.39 Tw +(other stream-producing functions, is always the most precise and)Tj +0 -1.2222 TD +0 Tw +(efficient way to designate a stream argument.)Tj +/TT10 1 Tf +-1.9333 -2 TD +(T)Tj +/TT8 1 Tf +1.9333 0 TD +0.2167 Tw +(The litatom )Tj +/TT10 1 Tf +5.7702 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2167 Tw +[( designates the terminal input or output stream of the)]TJ +-6.3703 -1.2889 TD +0.2611 Tw +(currently running process, controlling input from the keyboard and)Tj +0 -1.2222 TD +0.1067 Tw +[(output to the display screen. For functions where the direction \(input)]TJ +T* +0.1844 Tw +(or output\) is ambiguous, )Tj +/TT10 1 Tf +11.9409 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1844 Tw +[( is taken to designate the terminal output)]TJ +-12.541 -1.2889 TD +0 Tw +(stream. The )Tj +/TT10 1 Tf +5.6807 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( streams are always open; they cannot be closed.)Tj +-6.2808 -2.0667 TD +0.1678 Tw +(The terminal output stream can be set to a given window or display)Tj +0 -1.2222 TD +0.0267 Tw +(stream by using )Tj +/TT10 1 Tf +7.4023 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9.6016 0 TD +0.0267 Tw +[( \(Chapter 28\). The terminal input)]TJ +-17.0038 -1.2889 TD +0.0833 Tw +[(stream cannot be changed. For more information on terminal I/O, see)]TJ +0 -1.2222 TD +0 Tw +(Chapter 30.)Tj +/TT10 1 Tf +-3.1333 -2 TD +(NIL)Tj +/TT8 1 Tf +3.1333 0 TD +(The litatom )Tj +/TT10 1 Tf +5.3369 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( designates the "primary" input or output stream. These)Tj +-7.1372 -1.2889 TD +0.0367 Tw +(streams are initially the same as the terminal input/output streams, but)Tj +0 -1.2222 TD +0 Tw +(they can be changed by using the functions )Tj +/TT10 1 Tf +19.3389 0 TD +(INPUT)Tj +/TT8 1 Tf +3.0005 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(OUTPUT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-28.1328 -2.0667 TD +0.1022 Tw +(For functions where the direction \(input or output\) is ambiguous, e.g.,)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(GETFILEPTR)Tj +/TT8 1 Tf +6.001 0 TD +0.1856 Tw +(, the argument )Tj +/TT10 1 Tf +7.2681 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1856 Tw +[( is taken to mean the primary input)]TJ +-15.0694 -1.2889 TD +0.0878 Tw +(stream, if that stream is not identical to the terminal input stream, else)Tj +0 -1.2222 TD +0 Tw +(the primary output stream. )Tj +-5.7822 -2 TD +[(a window)-1334.5(Uses the display stream of the window . Valid for output only.)]TJ +-0.39 -2 TD +0.0322 Tw +[(a )32.2(file )32.2(name)-1334.3(As of this writing, the name of an open file \(as a litatom\) can be used as)]TJ +6.1722 -1.2222 TD +0.2889 Tw +[(a stream argument. However, there are inefficiencies and possible)]TJ +T* +0.1611 Tw +[(future incompatibilities associated with doing so. See Chapter 24 for)]TJ +T* +0 Tw +(details.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 6201 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETSTREAM)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ACCESS)Tj +/TT10 1 Tf +3.6006 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 273.3105 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0233 Tw +(Coerces the argument )Tj +/TT12 1 Tf +10.007 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( to a stream by the above rules. If )]TJ +/TT12 1 Tf +15.3637 0 TD +0 Tw +(ACCESS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0233 Tw +[( is )]TJ +/TT10 1 Tf +1.2615 0 TD +0 Tw +(INPUT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5233 0 TD +(OUTPUT)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-39.7576 -1.2889 TD +(or )Tj +/TT10 1 Tf +1.5898 0 TD +(BOTH)Tj +/TT8 1 Tf +2.4004 0 TD +0.3989 Tw +(, produces the stream designated by )Tj +/TT12 1 Tf +18.6082 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.3989 Tw +[( that is open for )]TJ +/TT12 1 Tf +9.1756 0 TD +0 Tw +(ACCESS)Tj +/TT8 1 Tf +3.6006 0 TD +0.3989 Tw +[(. If)]TJ +/TT12 1 Tf +-37.775 -1.2889 TD +0 Tw +(ACCESS)Tj +/TT10 1 Tf +3.6006 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0978 Tw +(, returns a stream for )Tj +/TT12 1 Tf +9.9738 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0978 Tw +[( open for any kind of input/output \(see the list)]TJ +-18.3751 -1.2889 TD +0.0078 Tw +[(above for the ambiguous cases\). If )]TJ +/TT12 1 Tf +15.5911 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0078 Tw +[( does not designate a stream open in the specified)]TJ +-17.9915 -1.2889 TD +0 Tw +(mode, causes an error, )Tj +/TT10 1 Tf +10.1841 0 TD +(FILE NOT OPEN)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-20.652 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(STREAMP)Tj +/TT10 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT8 1 Tf +32.0698 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a )Tj +/TT10 1 Tf +1.9648 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(, otherwise )Tj +/TT10 1 Tf +5.106 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 424.06 Tm +(Input Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 421.35 m +558.01 421.35 l +S +BT +/TT8 1 Tf +9 0 0 9 126 399.4 Tm +0.0133 Tw +(While the functions described below can take input from any stream, some special actions occur when)Tj +0 -1.2222 TD +0.0633 Tw +(the input is from the terminal \(the )Tj +/TT10 1 Tf +16.0233 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0633 Tw +[( input stream, see above\). When reading from the terminal, the)]TJ +-16.6234 -1.2889 TD +0.0444 Tw +(input is buffered a line at a time, unless buffering has been inhibited by )Tj +/TT10 1 Tf +32.3678 0 TD +0 Tw +(CONTROL)Tj +/TT8 1 Tf +4.2007 0 TD +0.0444 Tw +[( \(Chapter 30\) or the)]TJ +-36.5685 -1.2889 TD +0.04 Tw +(input is being read by )Tj +/TT10 1 Tf +10.1238 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.04 Tw +[( or )]TJ +/TT10 1 Tf +1.5209 0 TD +0 Tw +(PEEKC)Tj +/TT8 1 Tf +3.0005 0 TD +0.04 Tw +[(. Using specified editing characters, you can erase a character)]TJ +-17.6457 -1.2889 TD +0.17 Tw +[(at a time, a word at a time, or the whole line. The keys that perform these editing functions are)]TJ +0 -1.2222 TD +0.1833 Tw +(assignable via )Tj +/TT10 1 Tf +6.8227 0 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.1833 Tw +(, with the initial settings chosen to be those most natural for the given)Tj +-12.2236 -1.2889 TD +0.0133 Tw +[(operating system. In Interlisp-D, the initial settings are as follows: characters are deleted one at a time)]TJ +0 -1.2222 TD +0 Tw +(by Backspace; words are erased by control-W; the whole line is erased by Control-Q.)Tj +0 -2.8889 TD +0.0544 Tw +(On the Interlisp-D display, deleting a character or a line causes the characters to be physically erased)Tj +0 -1.2222 TD +0.1922 Tw +[(from the screen. In Interlisp-10, the deleting action can be modified for various types of display)]TJ +T* +0 Tw +(terminals by using )Tj +/TT10 1 Tf +8.4863 0 TD +(DELETECONTROL)Tj +/TT8 1 Tf +7.8013 0 TD +( \(Chapter 30\).)Tj +-16.2876 -2.9556 TD +0.1178 Tw +(Unless otherwise indicated, when the end of file is encountered while reading from a file, all input)Tj +0 -1.2222 TD +0.2244 Tw +(functions generate an error, )Tj +/TT10 1 Tf +13.367 0 TD +0.5389 Tw +(END OF FILE)Tj +/TT8 1 Tf +7.6789 0 TD +0.2244 Tw +[(. Note that this does not close the input file. The)]TJ +/TT10 1 Tf +-21.0459 -1.2889 TD +0 Tw +(ENDOFSTREAMOP)Tj +/TT8 1 Tf +7.8013 0 TD +( stream attribute \(Chapter 24\) is useful for changing the behavior at end of file.)Tj +-7.8013 -2.9556 TD +0.1489 Tw +(Most input functions have a )Tj +/TT12 1 Tf +13.3963 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.1489 Tw +[( argument, which specifies the read table to be used for input.)]TJ +-16.3968 -1.2889 TD +0 Tw +(Unless otherwise specified, if )Tj +/TT12 1 Tf +13.1602 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the primary read table is used.)Tj +-19.1758 -2.9556 TD +(If the )Tj +/TT12 1 Tf +2.5571 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( or )Tj +/TT12 1 Tf +1.4409 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( argument to an input function is )Tj +/TT10 1 Tf +14.8535 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the primary input stream is used.)Tj +/TT10 1 Tf +-23.9862 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(INPUT)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 217.0553 135.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 135.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Sets )Tj +/TT12 1 Tf +2.0406 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0367 Tw +[( as the primary input stream; returns the old primary input stream. )]TJ +/TT12 1 Tf +30.6393 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0367 Tw +[( must)]TJ +-37.4806 -1.2889 TD +0 Tw +(be open for input.)Tj +/TT10 1 Tf +0 -2 TD +(\(INPUT\))Tj +/TT8 1 Tf +4.2007 0 TD +( returns the current primary input stream, which is not changed.)Tj +-4.2007 -2.0667 TD +(Note: If the primary input stream is set to a file, the files full name, rather than the stream)Tj +0 -1.2222 TD +(itself, is returned. See discussion in Chapter 24.)Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +18 0 obj +<< +/Length 7998 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READ)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 211.3623 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2678 Tw +(Reads one expression from )Tj +/TT12 1 Tf +13.2532 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2678 Tw +[(. Atoms are delimited by the break and separator)]TJ +-15.6536 -1.2889 TD +0.0378 Tw +(characters as defined in )Tj +/TT12 1 Tf +10.8225 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0378 Tw +[(. To include a break or separator character in an atom, the)]TJ +-13.823 -1.2889 TD +0.1289 Tw +(character must be preceded by the character )Tj +/TT10 1 Tf +20.6454 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.1289 Tw +(, e.g., )Tj +/TT10 1 Tf +2.7929 0 TD +0 Tw +(AB%\(C)Tj +/TT8 1 Tf +3.0005 0 TD +0.1289 Tw +[( is the atom )]TJ +/TT10 1 Tf +5.8725 0 TD +0 Tw +(AB\(C)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6289 0 TD +(%%)Tj +/TT8 1 Tf +1.2002 0 TD +0.1289 Tw +[( is the)]TJ +-37.1409 -1.2889 TD +0 Tw +(atom )Tj +/TT10 1 Tf +2.5149 0 TD +(%)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.51 0 TD +(%)Tj +/TT16 1 Tf +0.6001 0 TD +(control-K)Tj +/TT8 1 Tf +3.8511 0 TD +0.01 Tw +[( is the atom Control-K. For input from the terminal, an atom containing)]TJ +-8.0762 -1.2889 TD +0.3178 Tw +(an interrupt character can be input by typing instead the corresponding alphabetic)Tj +0 -1.2222 TD +0 Tw +(character preceded by Control-V, e.g., )Tj +/TT10 1 Tf +17.0083 0 TD +(^VD)Tj +/TT8 1 Tf +1.8003 0 TD +( for Control-D.)Tj +-18.8086 -2.0667 TD +0.0633 Tw +[(Strings are delimited by double quotes. To input a string containing a double quote or a)]TJ +0 -1.2222 TD +0.1 Tw +(%, precede it by %, e.g., )Tj +/TT10 1 Tf +11.2792 0 TD +0 Tw +("AB%"C")Tj +/TT8 1 Tf +4.2007 0 TD +0.1 Tw +[( is the string )]TJ +/TT10 1 Tf +6.0763 0 TD +0 Tw +(AB"C)Tj +/TT8 1 Tf +2.4004 0 TD +0.1 Tw +[(. Note that % can always be typed)]TJ +-23.9565 -1.2889 TD +0 Tw +(even if next character is not "special", e.g., )Tj +/TT10 1 Tf +18.6733 0 TD +(%A%B%C)Tj +/TT8 1 Tf +3.6006 0 TD +( is read as )Tj +/TT10 1 Tf +4.6235 0 TD +(ABC)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-28.6978 -2.0667 TD +0.2056 Tw +(If an atom is interpretable as a number, )Tj +/TT10 1 Tf +19.2328 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.2056 Tw +[( creates a number, e.g., )]TJ +/TT10 1 Tf +11.3549 0 TD +0 Tw +(1E3)Tj +/TT8 1 Tf +1.8003 0 TD +0.2056 Tw +[( reads as a)]TJ +-34.7884 -1.2889 TD +0.0678 Tw +(floating point number, )Tj +/TT10 1 Tf +10.4699 0 TD +0 Tw +(1D3)Tj +/TT8 1 Tf +1.8003 0 TD +0.0678 Tw +[( as a literal atom, )]TJ +/TT10 1 Tf +8.0908 0 TD +0 Tw +(1.0)Tj +/TT8 1 Tf +1.8003 0 TD +0.0678 Tw +[( as a number, )]TJ +/TT10 1 Tf +6.4401 0 TD +0 Tw +(1,0)Tj +/TT8 1 Tf +1.8003 0 TD +0.0678 Tw +[( as a literal atom, etc.)]TJ +-30.4017 -1.2889 TD +0.0689 Tw +(An integer can be input in a non-decimal radix by using syntax such as )Tj +/TT10 1 Tf +32.568 0 TD +0 Tw +(123Q)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +(, |)Tj +/TT10 1 Tf +1.1748 0 TD +0 Tw +(b10101)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-39.7438 -1.2889 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +(5r1234)Tj +/TT8 1 Tf +3.6006 0 TD +( \(see Chapter 7\). The function )Tj +/TT10 1 Tf +13.521 0 TD +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +(, sets the radix used to print integers.)Tj +-20.728 -2.0667 TD +0.2022 Tw +(When reading from the terminal, all input is line-buffered to enable the action of the)Tj +0 -1.2222 TD +0.2678 Tw +(backspacing control characters, unless inhibited by )Tj +/TT10 1 Tf +24.345 0 TD +0 Tw +(CONTROL)Tj +/TT8 1 Tf +4.2007 0 TD +0.2678 Tw +[( \(Chapter 30\). Thus no)]TJ +-28.5456 -1.2889 TD +0.06 Tw +(characters are actually seen by the program until a carriage-return \(actually the character)Tj +0 -1.2222 TD +0.0333 Tw +(with terminal syntax class )Tj +/TT10 1 Tf +11.9004 0 TD +0 Tw +(EOL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0333 Tw +[(, see Chapter 30\), is typed. However, for reading by )]TJ +/TT10 1 Tf +23.6391 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +-39.7402 -1.2889 TD +0.2033 Tw +(when a matching right parenthesis is encountered, the effect is the same as though a)Tj +0 -1.2222 TD +0.0722 Tw +[(carriage-return were typed, i.e., the characters are transmitted. To indicate this, Interlisp)]TJ +T* +0.0656 Tw +[(also prints a carriage-return line-feed on the terminal. The line buffer is also transmitted)]TJ +T* +0 Tw +(to )Tj +/TT10 1 Tf +1.1221 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +( whenever an )Tj +/TT10 1 Tf +6.2271 0 TD +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +( read macro character is typed \(see below\).)Tj +/TT12 1 Tf +-15.1504 -2.0667 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +0.0111 Tw +[( suppresses the carriage-return normally typed by )]TJ +/TT10 1 Tf +22.4684 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( following a matching right)]TJ +-27.8693 -1.2889 TD +0.0178 Tw +[(parenthesis. \(However, the characters are still given to )]TJ +/TT10 1 Tf +24.6742 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +(; i.e., you do not have to type)Tj +-27.0746 -1.2889 TD +0 Tw +(the carriage-return.\))Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 192.9141 238.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 238.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0022 Tw +(Reads in one atom from )Tj +/TT12 1 Tf +10.8344 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +(. Separation of atoms is defined by )Tj +/TT12 1 Tf +15.7805 0 TD +0 Tc +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0022 Tw +(. )Tj +/TT10 1 Tf +0.7544 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.0001 Tc +0.0021 Tw +( is also defined)Tj +-33.3703 -1.2889 TD +0 Tc +0 Tw +(for )Tj +/TT10 1 Tf +1.5961 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0722 Tw +(, and the remarks concerning line-buffering and editing control characters also)Tj +-4.5966 -1.2889 TD +0 Tw +(apply.)Tj +0 -2 TD +0.1989 Tw +(If the characters comprising the atom would normally be interpreted as a number by)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.1744 Tw +(, that number is returned by )Tj +/TT10 1 Tf +13.7205 0 TD +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.1744 Tw +[(. Note however that )]TJ +/TT10 1 Tf +10.1686 0 TD +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.1744 Tw +[( takes no special)]TJ +-32.2905 -1.2889 TD +0 Tw +(action for )Tj +/TT10 1 Tf +4.4629 0 TD +(")Tj +/TT8 1 Tf +0.6001 0 TD +( whether or not it is a break character, i.e., )Tj +/TT10 1 Tf +18.7227 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +( never makes a string.)Tj +/TT10 1 Tf +-29.4528 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RSTRING)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 203.7088 135.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 135.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.3367 Tw +(Reads characters from )Tj +/TT12 1 Tf +11.0871 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.3367 Tw +[( up to, but not including, the next break or separator)]TJ +-13.4875 -1.2889 TD +0.0267 Tw +[(character, and returns them as a string. Backspace, Control-W, Control-Q, Control-V, and)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +( have the same effect as with )Tj +/TT10 1 Tf +12.8999 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-21.2337 -2.9556 TD +0.0711 Tw +(Note that the break or separator character that terminates a call to )Tj +/TT10 1 Tf +30.1297 0 TD +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0711 Tw +[( or )]TJ +/TT10 1 Tf +1.5831 0 TD +0 Tw +(RSTRING)Tj +/TT8 1 Tf +4.2007 0 TD +0.0711 Tw +[( is )]TJ +/TT16 1 Tf +1.3571 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0711 Tw +[( read by)]TJ +-41.6041 -1.2889 TD +0.0356 Tw +(that call, but remains in the buffer to become the first character seen by the next reading function that)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +21 0 obj +<< +/Length 7998 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.18 Tw +[(is called. If that function is )]TJ +/TT10 1 Tf +13.4167 0 TD +0 Tw +(RSTRING)Tj +/TT8 1 Tf +4.2007 0 TD +0.18 Tw +[(, it will return the null string. This is a common source of)]TJ +-17.6174 -1.2889 TD +0 Tw +(program bugs.)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RATOMS)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(A)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +[(\) )-23915.4([Function])]TJ +/TT8 1 Tf +-8.2843 -1.8444 TD +(Calls )Tj +/TT10 1 Tf +2.6171 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.1522 Tw +[( repeatedly until the atom )]TJ +/TT12 1 Tf +12.4637 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.1522 Tw +[( is read. Returns a list of the atoms read, not)]TJ +-18.6814 -1.2889 TD +0 Tw +(including )Tj +/TT12 1 Tf +4.501 0 TD +(A)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-7.7677 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RATEST)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 217.0544 485.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 485.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.071 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.4011 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.4011 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6511 0 TD +(RATEST)Tj +/TT8 1 Tf +3.6006 0 TD +0.1511 Tw +[( returns )]TJ +/TT10 1 Tf +4.0063 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1511 Tw +[( if a separator was encountered immediately prior to the)]TJ +-13.7319 -1.2889 TD +0 Tw +(atom returned by the last )Tj +/TT10 1 Tf +11.4126 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +-20.5547 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9233 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.2533 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.2533 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5033 0 TD +(RATEST)Tj +/TT8 1 Tf +3.6006 0 TD +0.0004 Tc +0.0029 Tw +( returns )Tj +/TT10 1 Tf +3.7108 0 TD +0 Tc +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0002 Tc +0.0031 Tw +( if last atom read by )Tj +/TT10 1 Tf +9.0342 0 TD +0 Tc +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0008 Tc +0.0025 Tw +( or )Tj +/TT10 1 Tf +1.4476 0 TD +0 Tc +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( was a break character,)Tj +/TT10 1 Tf +-29.928 -1.2889 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +-1.8003 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9699 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT10 1 Tf +0.3 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3 0 TD +(1)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.55 0 TD +(RATEST)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +[( returns )]TJ +/TT10 1 Tf +3.8041 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( if last atom read \(by )]TJ +/TT10 1 Tf +9.6472 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.05 Tw +[( or )]TJ +/TT10 1 Tf +1.5409 0 TD +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.05 Tw +(\) contained a )Tj +/TT10 1 Tf +6.0938 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( used to)]TJ +-36.4081 -1.2889 TD +0 Tw +(quote the next character \(as in )Tj +/TT10 1 Tf +13.4995 0 TD +(%[)Tj +/TT8 1 Tf +1.2002 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(%A%B%C)Tj +/TT8 1 Tf +3.6006 0 TD +(\), )Tj +/TT10 1 Tf +0.833 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-25.0412 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READC)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.5994 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 249.4597 374.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 374.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1022 Tw +(Reads and returns the next character, including )Tj +/TT10 1 Tf +21.9006 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.6022 0 TD +(")Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +(, etc, i.e., is not affected by break or)Tj +-23.703 -1.2889 TD +0.0222 Tw +[(separator characters. The action of )]TJ +/TT10 1 Tf +15.7798 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0222 Tw +[( is subject to line-buffering, i.e., )]TJ +/TT10 1 Tf +14.1548 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0222 Tw +[( does not)]TJ +-35.9356 -1.2889 TD +0.0144 Tw +[(return a value until the line has been terminated even if a character has been typed. Thus,)]TJ +0 -1.2222 TD +0.0989 Tw +(the editing control characters have their usual effect. )Tj +/TT12 1 Tf +24.5463 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0989 Tw +[( does not directly affect the)]TJ +-27.5467 -1.2889 TD +0.1278 Tw +(value returned, but is used as usual in line-buffering, e.g., determining when input has)Tj +0 -1.2222 TD +0.2678 Tw +[(been terminated. If )]TJ +/TT10 1 Tf +9.9564 0 TD +0.6422 Tw +(\(CONTROL T\))Tj +/TT8 1 Tf +7.2433 0 TD +0.2678 Tw +[( has been executed \(Chapter 30\), defeating line-)]TJ +-17.1997 -1.2889 TD +0.2044 Tw +(buffering, the )Tj +/TT12 1 Tf +6.6716 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.2044 Tw +[( argument is irrelevant, and )]TJ +/TT10 1 Tf +13.5574 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.2044 Tw +[( returns a value as soon as a)]TJ +-26.2299 -1.2889 TD +(character is typed \(even if the character typed is one of the editing characters, which)Tj +0 -1.2222 TD +0 Tw +(ordinarily would never be seen in the input buffer\).)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PEEKC)Tj +/TT10 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.5994 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 220.2053 244.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 244.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0433 Tw +[(Returns the next character, but does not actually read it and remove it from the buffer. If)]TJ +0 -1.2222 TD +0.0311 Tw +(reading from the terminal, the character is echoed as soon as )Tj +/TT10 1 Tf +27.3002 0 TD +0 Tw +(PEEKC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0311 Tw +[( reads it, even though)]TJ +-30.3007 -1.2889 TD +0 Tw +(it is then "put back" into the system buffer, where Backspace, Control-W, etc. could change)Tj +0 -1.2222 TD +0.07 Tw +[(it. Thus it is possible for the value returned by )]TJ +/TT10 1 Tf +21.6284 0 TD +0 Tw +(PEEKC)Tj +/TT8 1 Tf +3.0005 0 TD +0.07 Tw +[( to "disagree" in the first character)]TJ +-24.6289 -1.2889 TD +0 Tw +(with a subsequent )Tj +/TT10 1 Tf +8.3164 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-13.3835 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(LASTC)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 217.0553 159.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 159.58 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.04 Tw +(Returns the last character read from )Tj +/TT12 1 Tf +16.3518 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(. )Tj +/TT10 1 Tf +0.54 0 TD +0.0956 Tw +[( LASTC)]TJ +/TT8 1 Tf +4.3918 0 TD +0.04 Tw +[( can return an incorrect result when)]TJ +-23.684 -1.2889 TD +0 Tw +(called immediatley following a )Tj +/TT10 1 Tf +13.9756 0 TD +(PEEKC)Tj +/TT8 1 Tf +3.0005 0 TD +( on a file that contains run-coded NS characters.)Tj +/TT10 1 Tf +-19.6427 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READCCODE)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 262.5088 108.44 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 108.44 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1611 Tw +(Returns the next character )Tj +/TT16 1 Tf +12.477 0 TD +0 Tw +(code)Tj +/TT8 1 Tf +1.7402 0 TD +0.1611 Tw +[( from )]TJ +/TT12 1 Tf +2.979 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1611 Tw +(; thus, this operation is equivalent to, but)Tj +-20.7967 -1.2889 TD +0 Tw +(more efficient than, )Tj +/TT10 1 Tf +8.8511 0 TD +(\(CHCON1 \(READC)Tj +/TT18 1 Tf +8.4014 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +25 0 obj +<< +/Length 7797 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PEEKCCODE)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 190.6552 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0589 Tw +(Returns, without consuming, the next character )Tj +/TT16 1 Tf +21.6048 0 TD +0 Tw +(code)Tj +/TT8 1 Tf +1.7402 0 TD +0.0589 Tw +[( from )]TJ +/TT12 1 Tf +2.7745 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0589 Tw +(; thus, this operation is)Tj +-29.7201 -1.2889 TD +0 Tw +(equivalent to, but more efficient than, )Tj +/TT10 1 Tf +16.8818 0 TD +(\(CHCON1 \(PEEKC)Tj +/TT18 1 Tf +8.4014 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-31.8005 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(BIN)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STREAM)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 163.6561 517.06 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 517.06 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2278 Tw +(Returns the next byte from )Tj +/TT12 1 Tf +13.2278 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.2278 Tw +[(. This operation is useful for reading streams of)]TJ +-16.8283 -1.2889 TD +0 Tw +(binary, rather than character, data.)Tj +0 -2.3333 TD +(Note: )Tj +/TT10 1 Tf +4 0 TD +(BIN)Tj +/TT8 1 Tf +1.8003 0 TD +( is similar to )Tj +/TT10 1 Tf +5.6616 0 TD +(READCCODE)Tj +/TT8 1 Tf +5.4009 0 TD +(, except that )Tj +/TT10 1 Tf +5.5796 0 TD +(BIN)Tj +/TT8 1 Tf +1.8003 0 TD +( always reads a single byte,)Tj +-20.2427 -1.2889 TD +(whereas )Tj +/TT10 1 Tf +3.9429 0 TD +(READCCODE)Tj +/TT8 1 Tf +5.4009 0 TD +( reads a "character" that can consist of more than one byte,)Tj +-9.3437 -1.2889 TD +(depending on the character and its encoding.)Tj +/TT10 1 Tf +-9.3333 -2.8889 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5244 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5244 0 TD +(RATOMS)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5244 0 TD +(PEEKC)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5244 0 TD +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0244 Tw +[( all wait for input if there is none. The only way to test whether)]TJ +-17.1002 -1.2889 TD +0 Tw +(or not there is input is to use )Tj +/TT10 1 Tf +12.8672 0 TD +(READP)Tj +/TT8 1 Tf +3.0005 0 TD +(:)Tj +/TT10 1 Tf +-13.201 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READP)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 182.107 384.12 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 384.12 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.7815 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0544 Tw +[( if there is anything in the input buffer of )]TJ +/TT12 1 Tf +18.8589 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5544 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0544 Tw +[( otherwise. This operation)]TJ +-27.9956 -1.2889 TD +0.0122 Tw +(is only interesting for streams whose source of data is dynamic, e.g., the terminal or a byte)Tj +0 -1.2222 TD +0.0478 Tw +(stream over a network; for other streams, such as to files, )Tj +/TT10 1 Tf +25.9347 0 TD +0 Tw +(\(READP)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.2978 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0478 Tw +[( is equivalent to)]TJ +/TT10 1 Tf +-32.8336 -1.2889 TD +0 Tw +(\(NOT \(EOFP)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-9.8516 -2.0667 TD +0.0844 Tw +(Note that because of line-buffering, )Tj +/TT10 1 Tf +16.3011 0 TD +0 Tw +(READP)Tj +/TT8 1 Tf +3.0005 0 TD +0.0844 Tw +[( may return )]TJ +/TT10 1 Tf +5.7226 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0844 Tw +(, indicating there is input in the)Tj +-25.6243 -1.2889 TD +0 Tw +(buffer, but )Tj +/TT10 1 Tf +4.9287 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +( may still have to wait.)Tj +-7.3291 -2.0667 TD +0.1522 Tw +(Frequently, the terminals input buffer contains a single )Tj +/TT10 1 Tf +26.0488 0 TD +0 Tw +(EOL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1522 Tw +[( character left over from a)]TJ +-27.8491 -1.2889 TD +0.1367 Tw +[(previous input. For most applications, this situation wants to be treated as though the)]TJ +0 -1.2222 TD +0.1167 Tw +(buffer were empty, and so )Tj +/TT10 1 Tf +12.4744 0 TD +0 Tw +(READP)Tj +/TT8 1 Tf +3.0005 0 TD +0.1167 Tw +[( returns )]TJ +/TT10 1 Tf +3.9374 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1167 Tw +[( in this case. However, if )]TJ +/TT12 1 Tf +12.1633 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6167 0 TD +(READP)Tj +/TT8 1 Tf +-36.9932 -1.2889 TD +(returns )Tj +/TT10 1 Tf +3.6441 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.19 Tw +[( if there is )]TJ +/TT16 1 Tf +5.3601 0 TD +0 Tw +(any)Tj +/TT8 1 Tf +1.5 0 TD +0.19 Tw +[( character in the input buffer, including a single )]TJ +/TT10 1 Tf +23.0088 0 TD +0 Tw +(EOL)Tj +/TT8 1 Tf +1.8003 0 TD +0.19 Tw +(. )Tj +/TT12 1 Tf +1.13 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.19 Tw +[( is)]TJ +-38.8437 -1.2889 TD +0 Tw +(ignored for streams other than the terminal.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(EOFP)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 163.6553 216.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 216.38 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0544 Tw +(Returns true if )Tj +/TT12 1 Tf +6.8176 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0544 Tw +[( is at "end of file", i.e., the next call to an input function would cause)]TJ +-9.218 -1.2889 TD +0 Tw +(an )Tj +/TT10 1 Tf +1.4443 0 TD +0.2689 Tw +(END OF FILE)Tj +/TT8 1 Tf +7.1389 0 TD +0.1122 Tw +[( error; )]TJ +/TT10 1 Tf +3.1844 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1122 Tw +[( otherwise. For randomly accessible files, this can also be)]TJ +-13.5678 -1.2889 TD +0.0244 Tw +(thought of as the file pointer pointing beyond the last byte of the file. )Tj +/TT12 1 Tf +31.2978 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0244 Tw +[( must be open)]TJ +-33.6982 -1.2889 TD +0 Tw +(for \(at least\) input, or an error is generated, )Tj +/TT10 1 Tf +19.2944 0 TD +(FILE NOT OPEN)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +-27.0957 -2.0667 TD +0.0411 Tw +(Note that )Tj +/TT10 1 Tf +4.4987 0 TD +0 Tw +(EOFP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( can return )]TJ +/TT10 1 Tf +5.1795 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[( and yet the next call to )]TJ +/TT10 1 Tf +10.7805 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( might still cause an )]TJ +/TT10 1 Tf +9.2485 0 TD +0.0978 Tw +(END OF)Tj +-36.3083 -1.2889 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.3211 Tw +[( error, because the only characters remaining in the input were separators or)]TJ +-2.4004 -1.2889 TD +0.0956 Tw +[(otherwise constituted an incomplete expression. The function )]TJ +/TT10 1 Tf +28.45 0 TD +0 Tw +(SKIPSEPRS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0956 Tw +[( is sometimes)]TJ +-33.8509 -1.2889 TD +0.06 Tw +(more useful as a way of detecting end of file when it is known that all the expressions in)Tj +0 -1.2222 TD +0 Tw +(the file are well formed.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(WAITFORINPUT)Tj +/TT10 1 Tf +7.2012 0 TD +( )Tj +/TT12 1 Tf +0.5987 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 204.6044 78.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 78.24 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Waits until input is available from )Tj +/TT12 1 Tf +15.3794 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( or from the terminal, i.e. from )Tj +/TT10 1 Tf +13.6587 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT10 1 Tf +0.75 0 TD +(WAITFORINPUT)Tj +/TT8 1 Tf +-32.7886 -1.2889 TD +0.0933 Tw +(is functionally equivalent to )Tj +/TT10 1 Tf +12.9817 0 TD +0.2244 Tw +(\(until \(OR \(READP T\) \(READP FILE\)\) do NIL\))Tj +/TT8 1 Tf +26.7752 0 TD +0 Tw +(,)Tj +ET +endstream +endobj +26 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +28 0 obj +<< +/Length 7645 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0211 Tw +[(except that it does not use up machine cycles while waiting. Returns the device for which)]TJ +0 -1.2222 TD +0 Tw +(input is now available, i.e. )Tj +/TT12 1 Tf +11.8203 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT12 1 Tf +-16.2617 -2.0667 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2022 Tw +[( can also be an integer, in which case )]TJ +/TT10 1 Tf +18.2819 0 TD +0 Tw +(WAITFORINPUT)Tj +/TT8 1 Tf +7.2012 0 TD +0.2022 Tw +[( waits until there is input)]TJ +-27.8835 -1.2889 TD +0.0222 Tw +(available from the terminal, or until )Tj +/TT12 1 Tf +16.1787 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0222 Tw +[( milliseconds have elapsed. Value is )]TJ +/TT10 1 Tf +16.2603 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0222 Tw +[( if input is)]TJ +-35.4395 -1.2889 TD +0 Tw +(now available, )Tj +/TT10 1 Tf +6.6821 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( in the case that )Tj +/TT10 1 Tf +7.0913 0 TD +(WAITFORINPUT)Tj +/TT8 1 Tf +7.2012 0 TD +( timed out.)Tj +/TT10 1 Tf +-25.4416 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SKREAD)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(REREADSTRING)Tj +/TT16 1 Tf +7.2012 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 313.3693 493.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 493.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.15 Tw +("Skip Read". )Tj +/TT10 1 Tf +6.4231 0 TD +0 Tw +(SKREAD)Tj +/TT8 1 Tf +3.6006 0 TD +0.15 Tw +[( consumes characters from )]TJ +/TT12 1 Tf +12.6298 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.15 Tw +[( as if one call to )]TJ +/TT10 1 Tf +7.9527 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.15 Tw +[( had been)]TJ +-35.407 -1.2889 TD +0.1067 Tw +(performed, without paying the storage and compute cost to really read in the structure.)Tj +/TT12 1 Tf +0 -1.2222 TD +0 Tw +(REREADSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +0.0367 Tw +[( is for the case where the caller has already performed some )]TJ +/TT10 1 Tf +27.1099 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0367 Tw +(s and)Tj +/TT10 1 Tf +-37.3116 -1.2889 TD +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0856 Tw +[(s before deciding to skip this expression. In this case, )]TJ +/TT12 1 Tf +25.0354 0 TD +0 Tw +(REREADSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +0.0856 Tw +[( should be)]TJ +-35.237 -1.2889 TD +0.12 Tw +(the material already read \(as a string\), and )Tj +/TT10 1 Tf +19.9361 0 TD +0 Tw +(SKREAD)Tj +/TT8 1 Tf +3.6006 0 TD +0.12 Tw +[( operates as though it had seen that)]TJ +-23.5367 -1.2889 TD +0 Tw +(material first, thus setting up its parenthesis count, double-quote count, etc.)Tj +0 -2 TD +0.0822 Tw +(The read table )Tj +/TT12 1 Tf +6.8048 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0822 Tw +[( is used for reading from )]TJ +/TT12 1 Tf +11.6696 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[(. If )]TJ +/TT12 1 Tf +1.9166 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0822 Tw +[( is )]TJ +/TT10 1 Tf +1.3793 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0822 Tw +(, it defaults to the)Tj +-31.9719 -1.2889 TD +0.0078 Tw +(value of )Tj +/TT10 1 Tf +3.8324 0 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0078 Tw +(. )Tj +/TT10 1 Tf +0.7656 0 TD +0 Tw +(SKREAD)Tj +/TT8 1 Tf +3.6006 0 TD +0.0078 Tw +[( may have difficulties if unusual read macros are defined in)]TJ +/TT12 1 Tf +-13.5995 -1.2889 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.32 Tw +(. )Tj +/TT10 1 Tf +1.39 0 TD +0 Tw +(SKREAD)Tj +/TT8 1 Tf +3.6006 0 TD +0.32 Tw +[( does not recognize read macro characters in )]TJ +/TT12 1 Tf +22.4599 0 TD +0 Tw +(REREADSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +0.32 Tw +(, nor)Tj +/TT10 1 Tf +-37.6522 -1.2889 TD +0 Tw +(SPLICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +[( or )]TJ +/TT10 1 Tf +1.572 0 TD +0 Tw +(INFIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0656 Tw +[( read macros. This is only a problem if the read macros are defined to)]TJ +-8.1731 -1.2889 TD +0.1689 Tw +(parse subsequent input in the stream that does not follow the normal parenthesis and)Tj +0 -1.2222 TD +0 Tw +(string-quote conventions. )Tj +/TT10 1 Tf +0 -2 TD +(SKREAD)Tj +/TT8 1 Tf +3.6006 0 TD +0.0422 Tw +[( returns )]TJ +/TT10 1 Tf +3.7885 0 TD +0 Tw +(%\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0422 Tw +[( if the read terminated on an unbalanced closing parenthesis; )]TJ +/TT10 1 Tf +27.6122 0 TD +0 Tw +(%])Tj +/TT8 1 Tf +1.2002 0 TD +0.0422 Tw +[( if the)]TJ +-37.4017 -1.2889 TD +0.0744 Tw +(read terminated on an unbalanced )Tj +/TT10 1 Tf +15.8341 0 TD +0 Tw +(%])Tj +/TT8 1 Tf +1.2002 0 TD +0.0744 Tw +(, i.e., one which also would have closed any extant)Tj +-17.0343 -1.2889 TD +0 Tw +(open left parentheses; otherwise )Tj +/TT10 1 Tf +14.5142 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-18.9811 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SKIPSEPRS)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 262.5088 280.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 280.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0511 Tw +(Consumes characters from )Tj +/TT12 1 Tf +12.1983 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( until it encounters a non-separator character \(as defined)]TJ +-14.5986 -1.2889 TD +0 Tw +(by )Tj +/TT12 1 Tf +1.3883 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0289 Tw +(\). )Tj +/TT10 1 Tf +1.1408 0 TD +0 Tw +(SKIPSEPRS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0289 Tw +[( returns, but does not consume, the terminating character, so that)]TJ +-10.9304 -1.2889 TD +0.0744 Tw +(the next call to )Tj +/TT10 1 Tf +6.9863 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0744 Tw +[( would return the same character. If no non-separator character is)]TJ +-9.9867 -1.2889 TD +0.0633 Tw +(found before the end of file is reached, )Tj +/TT10 1 Tf +17.7533 0 TD +0 Tw +(SKIPSEPRS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0633 Tw +[( returns )]TJ +/TT10 1 Tf +3.8308 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +[( and leaves the stream at)]TJ +-28.7852 -1.2889 TD +0.2122 Tw +[(end of file. This function is useful for skipping over "white space" when scanning a)]TJ +0 -1.2222 TD +0.0022 Tw +(stream character by character, or for detecting end of file when reading expressions from a)Tj +T* +0 Tw +(stream with no pre-arranged terminating expression. )Tj +/TT4 1 Tf +10 0 0 10 102 152.92 Tm +(Output Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 150.21 m +558.01 150.21 l +S +BT +/TT8 1 Tf +9 0 0 9 126 128.26 Tm +0.1256 Tw +(Unless otherwise specified by )Tj +/TT10 1 Tf +13.8977 0 TD +0 Tw +(DEFPRINT)Tj +/TT8 1 Tf +4.8008 0 TD +0.1256 Tw +[(, pointers other than lists, strings, atoms, or numbers, are)]TJ +-18.6985 -1.2889 TD +0.1167 Tw +(printed in the form )Tj +/TT10 1 Tf +9.1688 0 TD +0 Tw +({)Tj +/TT12 1 Tf +0.6001 0 TD +(DATATYPE)Tj +/TT10 1 Tf +4.8008 0 TD +(})Tj +/TT8 1 Tf +0.6001 0 TD +0.1167 Tw +[( followed by the octal representation of the address of the pointer)]TJ +-15.1698 -1.2889 TD +0.25 Tw +[(\(regardless of radix\). For example, an array pointer might print as )]TJ +/TT10 1 Tf +32.5635 0 TD +0 Tw +({ARRAYP}#43,2760)Tj +/TT8 1 Tf +9.6016 0 TD +0.25 Tw +[(. This)]TJ +-42.165 -1.2889 TD +0.2144 Tw +(printed representation is for compactness of display on your terminal, and will )Tj +/TT16 1 Tf +37.6827 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.2144 Tw +[( read back in)]TJ +-39.0157 -1.2222 TD +0 Tw +(correctly; if the form above is read, it will produce the litatom )Tj +/TT10 1 Tf +27.4399 0 TD +({ARRAYP}#43,2760)Tj +/TT8 1 Tf +9.6016 0 TD +(.)Tj +-31.7082 -2.0667 TD +[(Note: )-1317.9(The term "end-of-line" appearing in the description of an output function means)]TJ +4 -1.2222 TD +(the character or characters used to terminate a line in the file system being used)Tj +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +31 0 obj +<< +/Length 7231 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +(by the given implementation of Interlisp. For example, in Interlisp-D end-of-line)Tj +0 -1.2222 TD +(is indicated by the character carriage-return.)Tj +-9.3333 -2.8889 TD +0.0867 Tw +(Some of the functions described below have a )Tj +/TT12 1 Tf +21.1386 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0867 Tw +[( argument, which specifies the read table to be)]TJ +-24.1391 -1.2889 TD +0 Tw +(used for output. If )Tj +/TT12 1 Tf +8.5659 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the primary read table is used.)Tj +-14.5815 -2.9556 TD +0.0678 Tw +(Most of the functions described below have an argument )Tj +/TT12 1 Tf +26.0206 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0678 Tw +(, which specifies the stream on which)Tj +-28.421 -1.2889 TD +0 Tw +(the operation is to take place. If )Tj +/TT12 1 Tf +14.3364 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the primary output stream is used .)Tj +/TT10 1 Tf +-17.0853 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(OUTPUT)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 174.4552 459.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 459.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Sets )Tj +/TT12 1 Tf +2.1339 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.13 Tw +[( as the primary output stream; returns the old primary output stream. )]TJ +/TT12 1 Tf +33.0567 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +-37.591 -1.2889 TD +(must be open for output.)Tj +/TT10 1 Tf +0 -2 TD +(\(OUTPUT\))Tj +/TT8 1 Tf +4.8008 0 TD +( returns the current primary output stream, which is not changed.)Tj +-0.8008 -2.0667 TD +[(Note: )-1317.9(If the primary output stream is set to a file, the files full name, rather)]TJ +4 -1.2222 TD +(than the stream itself, is returned. See the discussion in Chapter 24.)Tj +/TT10 1 Tf +-10.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRIN1)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 176.7061 361.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 361.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +2.8721 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( on )Tj +/TT12 1 Tf +1.6279 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-10.1672 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRIN2)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT8 1 Tf +27.719 0 TD +([Function])Tj +-35.4033 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +2.9287 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0567 Tw +[( on )]TJ +/TT12 1 Tf +1.7413 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0567 Tw +[( with )]TJ +/TT10 1 Tf +2.6465 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.0567 Tw +(s and )Tj +/TT10 1 Tf +3.0079 0 TD +0 Tw +(")Tj +/TT8 1 Tf +0.6001 0 TD +0.0567 Tw +(s inserted where required for it to read back in properly)Tj +-14.5251 -1.2889 TD +0 Tw +(by )Tj +/TT10 1 Tf +1.3594 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(, using )Tj +/TT12 1 Tf +3.2061 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-15.2996 -2.9556 TD +(Both )Tj +/TT10 1 Tf +2.5549 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.24 Tw +[( and )]TJ +/TT10 1 Tf +2.6729 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.24 Tw +[( print any kind of Lisp expression, including lists, atoms, numbers, and)]TJ +-11.2288 -1.2889 TD +0.2444 Tw +(strings. )Tj +/TT10 1 Tf +4.2369 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.2444 Tw +[( is generally used for printing expressions where human readability, rather than)]TJ +-7.2374 -1.2889 TD +0.1578 Tw +(machine readability, is important, e.g., when printing text rather than program fragments. )Tj +/TT10 1 Tf +42.326 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +-42.326 -1.2889 TD +0.1256 Tw +(does not print double quotes around strings, or )Tj +/TT10 1 Tf +22.1602 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.1256 Tw +[( in front of special characters. )]TJ +/TT10 1 Tf +14.3315 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.1256 Tw +[( is used for)]TJ +-40.0923 -1.2889 TD +0.1278 Tw +(printing Interlisp expressions which can then be read back into Interlisp with )Tj +/TT10 1 Tf +35.8473 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.1278 Tw +(; i.e., break and)Tj +-38.2477 -1.2889 TD +0.04 Tw +(separator characters in atoms will be preceded by )Tj +/TT10 1 Tf +22.4738 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[(s. For example, the atom ")]TJ +/TT10 1 Tf +12.2009 0 TD +0 Tw +(\(\))Tj +/TT8 1 Tf +1.2002 0 TD +0.04 Tw +(" is printed as )Tj +/TT10 1 Tf +6.4549 0 TD +0 Tw +(%\(%\))Tj +/TT8 1 Tf +-42.93 -1.2889 TD +(by )Tj +/TT10 1 Tf +1.4183 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +[(. If the integer output radix \(as set by )]TJ +/TT10 1 Tf +17.418 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +(\) is not 10, )Tj +/TT10 1 Tf +4.9875 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +[( prints the integer using the)]TJ +-32.8252 -1.2889 TD +0.0644 Tw +(input syntax for non-decimal integers \(see Chapter 7\) but )Tj +/TT10 1 Tf +26.1078 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0644 Tw +[( does not \(but both print the integer)]TJ +-29.1083 -1.2889 TD +0 Tw +(in the output radix\).)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRIN3)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 176.7061 152.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 152.18 Tm +([Function])Tj +/TT10 1 Tf +-38.07 -1.2156 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRIN4)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 205.9605 141.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 141.24 Tm +([Function])Tj +/TT10 1 Tf +-35.4033 -1.8444 TD +(PRIN3)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[( and )]TJ +/TT10 1 Tf +2.2173 0 TD +0 Tw +(PRIN4)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[( are the same as )]TJ +/TT10 1 Tf +7.2818 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[( and )]TJ +/TT10 1 Tf +2.2173 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[( respectively, except that they do not)]TJ +-23.7184 -1.2889 TD +0.1311 Tw +[(increment the horizontal position counter nor perform any linelength checks. They are)]TJ +0 -1.2222 TD +0 Tw +(useful primarily for printing control characters.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRINT)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 200.5596 79.7 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 79.7 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Prints the expression )Tj +/TT12 1 Tf +9.4961 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( using )Tj +/TT10 1 Tf +2.9561 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +( followed by an end-of-line. Returns )Tj +/TT12 1 Tf +16.459 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +34 0 obj +<< +/Length 7491 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRINTCCODE)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CHARCODE)Tj +/TT16 1 Tf +4.8008 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 284.1114 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0822 Tw +(Outputs a single character whose code is )Tj +/TT12 1 Tf +18.8422 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0822 Tw +[( to )]TJ +/TT12 1 Tf +1.5365 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0822 Tw +[(. This is similar to )]TJ +/TT10 1 Tf +8.8146 0 TD +0 Tw +(\(PRIN1)Tj +-36.3945 -1.2889 TD +(\(CHARACTER)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.6144 0 TD +(CHARCODE)Tj +/TT10 1 Tf +4.8008 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +0.3644 Tw +(, except that numeric characters are guaranteed to print)Tj +-12.6164 -1.2889 TD +0.0889 Tw +("correctly"; e.g., )Tj +/TT10 1 Tf +7.3311 0 TD +0.2133 Tw +(\(PRINTCCODE \(CHARCODE 9\)\))Tj +/TT8 1 Tf +15.4291 0 TD +0.0889 Tw +[( always prints ")]TJ +/TT10 1 Tf +7.1119 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.0889 Tw +(", independent of the)Tj +-30.4722 -1.2889 TD +0 Tw +(setting of )Tj +/TT10 1 Tf +4.3633 0 TD +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-7.3638 -2.0667 TD +(PRINTCCODE)Tj +/TT8 1 Tf +6.001 0 TD +0.0611 Tw +[( may actually print more than one byte on )]TJ +/TT12 1 Tf +19.3879 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0611 Tw +(, due to character encoding)Tj +-27.7893 -1.2889 TD +0.1944 Tw +(and end of line conventions; thus, no assumptions should be made about the relative)Tj +0 -1.2222 TD +0 Tw +(motion of the file pointer \(see )Tj +/TT10 1 Tf +13.269 0 TD +(GETFILEPTR)Tj +/TT8 1 Tf +6.001 0 TD +(\) during this operation.)Tj +/TT10 1 Tf +-21.9367 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(BOUT)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STREAM)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(BYTE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 240.9097 452.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 452.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1578 Tw +(Outputs a single 8-bit byte to )Tj +/TT12 1 Tf +14.0292 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1578 Tw +[(. This is similar to )]TJ +/TT10 1 Tf +9.268 0 TD +0 Tw +(PRINTCCODE)Tj +/TT8 1 Tf +6.001 0 TD +0.1578 Tw +(, but for binary)Tj +-32.8987 -1.2889 TD +0.0411 Tw +(streams the character position in )Tj +/TT12 1 Tf +14.8183 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +[( is not updated \(as with )]TJ +/TT10 1 Tf +10.9366 0 TD +0 Tw +(PRIN3)Tj +/TT8 1 Tf +3.0005 0 TD +0.0411 Tw +(\), and end of line)Tj +-32.356 -1.2889 TD +0 Tw +(conventions are ignored. )Tj +4 -2.3333 TD +(Note: )Tj +/TT10 1 Tf +4 0 TD +(BOUT)Tj +/TT8 1 Tf +2.4004 0 TD +( is similar to )Tj +/TT10 1 Tf +5.6616 0 TD +(PRINTCCODE)Tj +/TT8 1 Tf +6.001 0 TD +(, except that )Tj +/TT10 1 Tf +5.5796 0 TD +(BOUT)Tj +/TT8 1 Tf +2.4004 0 TD +( always writes a)Tj +-22.043 -1.2889 TD +(single byte, whereas )Tj +/TT10 1 Tf +9.2305 0 TD +(PRINTCCODE)Tj +/TT8 1 Tf +6.001 0 TD +( writes a "character" that can consist)Tj +-15.2314 -1.2889 TD +(of more than one byte, depending on the character and its encoding.)Tj +/TT10 1 Tf +-10.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SPACES)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 224.7053 346.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 346.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +2.8721 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( spaces. Returns )Tj +/TT10 1 Tf +7.5986 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-15.5378 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(TERPRI)Tj +/TT10 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.5993 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 225.6053 306.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 306.78 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Prints an end-of-line character. Returns )Tj +/TT10 1 Tf +17.856 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-22.3229 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FRESHLINE)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STREAM)Tj +/TT10 1 Tf +3.6006 0 TD +(\) )Tj +/TT8 1 Tf +28.2194 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0844 Tw +(Equivalent to )Tj +/TT10 1 Tf +6.3491 0 TD +0 Tw +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +(, except it does nothing if it is already at the beginning of the line.)Tj +-9.9497 -1.2889 TD +0 Tw +(Returns )Tj +/TT10 1 Tf +3.7271 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( if it prints an end-of-line, )Tj +/TT10 1 Tf +11.5522 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT10 1 Tf +-20.3464 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(TAB)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(MINSPACES)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 275.5658 216.1 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 216.1 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.08 Tw +(Prints the appropriate number of spaces to move to position )Tj +/TT12 1 Tf +27.614 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.08 Tw +(. )Tj +/TT12 1 Tf +0.91 0 TD +0 Tw +(MINSPACES)Tj +/TT8 1 Tf +5.4009 0 TD +0.08 Tw +[( indicates)]TJ +-35.7251 -1.2889 TD +0.2722 Tw +(how many spaces must be printed \(if )Tj +/TT10 1 Tf +18.5203 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2722 Tw +[(, 1 is used\). If the current position plus)]TJ +/TT16 1 Tf +-20.3206 -1.2889 TD +0 Tw +(MINSPACES)Tj +/TT8 1 Tf +5.7778 0 TD +0.2633 Tw +[( is greater than )]TJ +/TT12 1 Tf +7.8888 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.7633 0 TD +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.2633 Tw +[( does a )]TJ +/TT10 1 Tf +4.0996 0 TD +0 Tw +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +0.2633 Tw +[( and then )]TJ +/TT10 1 Tf +5.2021 0 TD +0 Tw +(\(SPACES)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.5133 0 TD +(POS)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.2633 Tw +[(. If)]TJ +/TT12 1 Tf +-38.0472 -1.2889 TD +0 Tw +(MINSPACES)Tj +/TT8 1 Tf +5.4009 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, and the current position is greater than )Tj +/TT12 1 Tf +17.9966 0 TD +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +(, then )Tj +/TT10 1 Tf +2.7192 0 TD +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +( does nothing.)Tj +-31.5322 -2.4 TD +[(Note: )-1067.9(A sequence of )]TJ +/TT10 1 Tf +10.4565 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(SPACES)Tj +/TT8 1 Tf +3.6006 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +( expressions can often be)Tj +-23.1016 -1.2889 TD +(more conveniently coded with a single )Tj +/TT10 1 Tf +17.3726 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +( statement.)Tj +/TT10 1 Tf +-28.84 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SHOWPRIN2)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 275.5605 108.56 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 108.56 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.187 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +( except if )Tj +/TT10 1 Tf +4.2192 0 TD +(SYSPRETTYFLG=T)Tj +/TT8 1 Tf +8.4014 0 TD +(, prettyprints )Tj +/TT12 1 Tf +6.0527 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( instead. Returns )Tj +/TT12 1 Tf +7.9399 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +37 0 obj +<< +/Length 7597 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SHOWPRINT)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 227.5605 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.3226 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1356 Tw +[( except if )]TJ +/TT10 1 Tf +4.6259 0 TD +0 Tw +(SYSPRETTYFLG=T)Tj +/TT8 1 Tf +8.4014 0 TD +0.1356 Tw +(, prettyprints )Tj +/TT12 1 Tf +6.3238 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1356 Tw +[( instead, followed by an end-of-)]TJ +-25.2743 -1.2889 TD +0 Tw +(line. Returns )Tj +/TT12 1 Tf +6.1201 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-12.0535 -2.9556 TD +(SHOWPRINT )Tj +/TT8 1 Tf +6.2632 0 TD +(and )Tj +/TT10 1 Tf +2.0518 0 TD +(SHOWPRIN2)Tj +/TT8 1 Tf +5.4009 0 TD +0.1089 Tw +[( are used by the programmers assistant \(Chapter 13\) for printing the)]TJ +-13.7158 -1.2889 TD +0.1533 Tw +(values of expressions and for printing the history list, by various commands of the break package)Tj +0 -1.2222 TD +0.1744 Tw +(\(Chapter 14\), e.g. )Tj +/TT10 1 Tf +8.3168 0 TD +0 Tw +(?=)Tj +/TT8 1 Tf +1.2002 0 TD +0.1744 Tw +[( and )]TJ +/TT10 1 Tf +2.5418 0 TD +0 Tw +(BT)Tj +/TT8 1 Tf +1.2002 0 TD +0.1744 Tw +[( commands, and various other system packages. The idea is that by)]TJ +-13.2589 -1.2889 TD +0.3433 Tw +(simply settting or binding )Tj +/TT10 1 Tf +13.137 0 TD +0 Tw +(SYSPRETTYFLG)Tj +/TT8 1 Tf +7.2012 0 TD +0.3433 Tw +[( to )]TJ +/TT10 1 Tf +2.0587 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.3433 Tw +[( \(initially )]TJ +/TT10 1 Tf +4.9391 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3433 Tw +(\), you instruct the system when)Tj +-29.7364 -1.2889 TD +0 Tw +(interacting with you to )Tj +/TT10 1 Tf +10.3828 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.6011 0 TD +( expressions \(Chapter 26\) instead of printing them.)Tj +/TT10 1 Tf +-14.3172 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRINTBELLS)Tj +/TT4 1 Tf +10 0 0 10 161.4 444.66 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 164.1783 444.66 Tm +(\))Tj +/TT6 1 Tf +10 0 0 10 169.5792 444.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 444.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0533 Tw +[(Used by DWIM \(Chapter 19\) to print a sequence of bells to alert you to stop typing. Can)]TJ +0 -1.2222 TD +0.2111 Tw +(be advised or redefined for special applications, e.g., to flash the screen on a display)Tj +T* +0 Tw +(terminal.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FORCEOUTPUT)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STREAM)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(WAITFORFINISH)Tj +/TT10 1 Tf +7.8013 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 279.3176 383.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 383.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Forces any buffered output data in )Tj +/TT12 1 Tf +15.5835 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( to be transmitted.)Tj +-19.1841 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(WAITFORFINISH)Tj +/TT8 1 Tf +7.8013 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, this doesnt return until the data has been forced out.)Tj +/TT10 1 Tf +-16.446 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(POSITION)Tj +/TT4 1 Tf +10 0 0 10 150.6 325.58 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 153.3783 325.58 Tm +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 188.0336 325.58 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 325.58 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0856 Tw +[(Returns the column number at which the next character will be read or printed. After a)]TJ +0 -1.2222 TD +0 Tw +(end of line, the column number is 0. If )Tj +/TT12 1 Tf +17.3096 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +( is non-)Tj +/TT10 1 Tf +3.2578 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT16 1 Tf +0.5 0 TD +(resets)Tj +/TT8 1 Tf +2.2788 0 TD +( the column number to be )Tj +/TT12 1 Tf +11.6353 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-37.9819 -2.0667 TD +0.3267 Tw +(Note that resetting )Tj +/TT10 1 Tf +9.5049 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.3267 Tw +[( only changes Lisps belief about the current column)]TJ +-14.3057 -1.2889 TD +0.01 Tw +[(number; it does not cause any horizontal motion. Also note that )]TJ +/TT10 1 Tf +28.7728 0 TD +0 Tw +(\(POSITION)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.26 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.01 Tw +[( is )]TJ +/TT16 1 Tf +1.2348 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +-38.669 -1.2889 TD +(the same as )Tj +/TT10 1 Tf +5.3467 0 TD +(\(GETFILEPTR)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( which gives the position in the )Tj +/TT16 1 Tf +14.0522 0 TD +(file)Tj +/TT8 1 Tf +1.2227 0 TD +(, not on the )Tj +/TT16 1 Tf +5.2192 0 TD +(line)Tj +/TT8 1 Tf +1.501 0 TD +(.)Tj +/TT10 1 Tf +-39.86 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(LINELENGTH)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 198.3053 233.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 233.24 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0433 Tw +(Sets the length of the print line for the output file )Tj +/TT12 1 Tf +22.3492 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0433 Tw +[( to )]TJ +/TT12 1 Tf +1.4587 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +(; returns the former setting of)Tj +-26.8085 -1.2889 TD +0.0356 Tw +(the line length. )Tj +/TT12 1 Tf +7.2389 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0356 Tw +[( defaults to the primary output stream. )]TJ +/TT10 1 Tf +17.9939 0 TD +0.0844 Tw +(\(LINELENGTH NIL)Tj +/TT18 1 Tf +9.0859 0 TD +0 Tw +( )Tj +/TT12 1 Tf +0.2856 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +-39.4051 -1.2889 TD +0.0133 Tw +(returns the current setting for )Tj +/TT12 1 Tf +13.3904 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[(. When a file is first opened, its line length is set to the)]TJ +-15.7908 -1.2889 TD +0 Tw +(value of the variable )Tj +/TT10 1 Tf +9.2783 0 TD +(FILELINELENGTH)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +-17.6797 -2.0667 TD +0.0056 Tw +(Whenever printing an atom or string would increase a files position )Tj +/TT16 1 Tf +30.5299 0 TD +0 Tw +(beyond)Tj +/TT8 1 Tf +2.8521 0 TD +0.0056 Tw +[( the line length)]TJ +-33.3819 -1.2222 TD +0.1233 Tw +[(of the file, an end of line is automatically inserted first. This action can be defeated by)]TJ +T* +0 Tw +(using )Tj +/TT10 1 Tf +2.7061 0 TD +(PRIN3)Tj +/TT8 1 Tf +3.0005 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(PRIN4)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-13.5666 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETLINELENGTH)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 190.6517 118.3 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 118.3 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2789 Tw +(Sets the line length for the terminal by doing )Tj +/TT10 1 Tf +22.4641 0 TD +0 Tw +(\(LINELENGTH)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.5289 0 TD +(N)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.5289 0 TD +(T\))Tj +/TT8 1 Tf +1.2002 0 TD +0.2789 Tw +[(. If )]TJ +/TT12 1 Tf +2.5066 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.2789 Tw +[( is )]TJ +/TT10 1 Tf +1.7726 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2789 Tw +(, it)Tj +-38.6029 -1.2889 TD +0 Tw +(determines )Tj +/TT12 1 Tf +5.7932 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.5944 Tw +[( by consulting the operating systems belief about the terminals)]TJ +-6.3933 -1.2889 TD +0 Tw +(characteristics. In Interlisp-D, this is a no-op.)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6898 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(PRINTLEVEL)Tj +/TT8 1 Tf +9 0 0 9 126 544.54 Tm +0.3789 Tw +(When using Interlisp one often has to handle large, complicated lists, which are difficult to)Tj +0 -1.2222 TD +0.0278 Tw +(understand when printed out. )Tj +/TT10 1 Tf +13.989 0 TD +0 Tw +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +0.0278 Tw +[( allows you to specify in how much detail lists should be)]TJ +-19.99 -1.2889 TD +0 Tw +(printed. The print functions )Tj +/TT10 1 Tf +12.7852 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +( are all affected by level parameters set by:)Tj +/TT10 1 Tf +-22.0628 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRINTLEVEL)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CARVAL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CDRVAL)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 284.1114 499 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 499 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0456 Tw +(Sets the )Tj +/TT10 1 Tf +3.7322 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +[( print level to )]TJ +/TT12 1 Tf +6.3546 0 TD +0 Tw +(CARVAL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +(, and the )Tj +/TT10 1 Tf +4.2167 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +[( print level to )]TJ +/TT12 1 Tf +6.3546 0 TD +0 Tw +(CDRVAL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +[(. Returns a list cell)]TJ +-31.4599 -1.2889 TD +0 Tw +(whose )Tj +/TT10 1 Tf +3.1281 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0133 Tw +[( and )]TJ +/TT10 1 Tf +2.2195 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0133 Tw +[( are the old settings. )]TJ +/TT10 1 Tf +9.4472 0 TD +0 Tw +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +0.0133 Tw +[( is initialized with the value )]TJ +/TT10 1 Tf +12.6064 0 TD +0 Tw +(\(1000)Tj +-37.0027 -1.2889 TD +(. -1\))Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-3.0005 -2.0667 TD +0.0911 Tw +(In order that )Tj +/TT10 1 Tf +6.1024 0 TD +0 Tw +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +0.0911 Tw +[( can be used with )]TJ +/TT10 1 Tf +8.4136 0 TD +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +0.0911 Tw +[( or )]TJ +/TT10 1 Tf +1.6231 0 TD +0 Tw +(RESETSAVE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0911 Tw +(, if )Tj +/TT12 1 Tf +1.5562 0 TD +0 Tw +(CARVAL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0911 Tw +[( is a)]TJ +-38.0987 -1.2889 TD +0 Tw +(list cell it is equivalent to )Tj +/TT10 1 Tf +11.2173 0 TD +(\(PRINTLEVEL \(CAR)Tj +/TT18 1 Tf +9.6016 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CARVAL)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(\(CDR)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CARVAL)Tj +/TT10 1 Tf +3.6006 0 TD +(\)\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT10 1 Tf +-32.9707 -2.0667 TD +(\(PRINTLEVEL)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT18 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NIL\))Tj +/TT8 1 Tf +2.4004 0 TD +( changes the )Tj +/TT10 1 Tf +5.7041 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( printlevel without affecting the )Tj +/TT10 1 Tf +14.29 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +( printlevel.)Tj +/TT10 1 Tf +-33.6963 -1.2889 TD +(\(PRINTLEVEL NIL)Tj +/TT18 1 Tf +9.0015 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( changes the )Tj +/TT10 1 Tf +5.7041 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +( printlevel with affecting the )Tj +/TT10 1 Tf +12.8149 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( printlevel.)Tj +/TT10 1 Tf +-32.5713 -1.2889 TD +(\(PRINTLEVEL\))Tj +/TT8 1 Tf +7.2012 0 TD +( gives the current setting without changing either.)Tj +-3.2012 -2.4 TD +[(Note: )-1317.9(Control-P \(Chapter 30\) can be used to change the )]TJ +/TT10 1 Tf +25.9175 0 TD +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +( setting)Tj +-27.9185 -1.2889 TD +(dynamically, even while Interlisp is printing.)Tj +-8 -2 TD +(The )Tj +/TT10 1 Tf +2.0516 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1278 Tw +[( printlevel specifies how "deep" to print a list. Specifically, it is the number of)]TJ +-3.8519 -1.2889 TD +0.0511 Tw +[(unpaired left parentheses which will be printed. Below that level, all lists will be printed)]TJ +0 -1.2222 TD +0 Tw +(as )Tj +/TT10 1 Tf +1.3127 0 TD +(&)Tj +/TT8 1 Tf +0.6001 0 TD +0.1389 Tw +[(. If the )]TJ +/TT10 1 Tf +3.8627 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1389 Tw +[( printlevel is )]TJ +/TT16 1 Tf +6.1818 0 TD +0 Tw +(negative)Tj +/TT8 1 Tf +3.3892 0 TD +0.1389 Tw +(, the action is similar except that an end-of-line is)Tj +-17.1468 -1.2889 TD +0.3122 Tw +(inserted after each right parentheses that would be immediately followed by a left)Tj +0 -1.2222 TD +0 Tw +(parenthesis.)Tj +0 -2 TD +(The )Tj +/TT10 1 Tf +2.0394 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1156 Tw +[( printlevel specifies how "long" to print a list. It is the number of top level list)]TJ +-3.8397 -1.2889 TD +0.14 Tw +(elements that will be printed before the printing is terminated with )Tj +/TT18 1 Tf +31.4087 0 TD +0 Tw +(--)Tj +/TT8 1 Tf +0.666 0 TD +0.14 Tw +[(. For example, if)]TJ +/TT12 1 Tf +-32.0747 -1.2222 TD +0 Tw +(CDRVAL)Tj +/TT10 1 Tf +3.6006 0 TD +(=2)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.6244 0 TD +0.2989 Tw +(\(A B C D E\))Tj +/TT8 1 Tf +7.7966 0 TD +0.1244 Tw +[( will print as )]TJ +/TT10 1 Tf +6.324 0 TD +0.2989 Tw +(\(A B --\))Tj +/TT8 1 Tf +5.3986 0 TD +0.1244 Tw +[(. For sublists, the number of list)]TJ +-24.9444 -1.2889 TD +0.04 Tw +(elements printed is also affected by the depth of printing in the )Tj +/TT10 1 Tf +28.5479 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.04 Tw +[( direction: Whenever)]TJ +-30.3482 -1.2889 TD +0 Tw +(the )Tj +/TT16 1 Tf +1.6594 0 TD +(sum)Tj +/TT8 1 Tf +1.7231 0 TD +0.0222 Tw +[( of the depth of the sublist \(i.e. the number of unmatched left parentheses\) and the)]TJ +-3.3826 -1.2222 TD +0.3144 Tw +(number of elements is greater than the )Tj +/TT10 1 Tf +19.4907 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.3144 Tw +[( printlevel, )]TJ +/TT18 1 Tf +5.6792 0 TD +0 Tw +(--)Tj +/TT8 1 Tf +0.666 0 TD +0.3144 Tw +[( is printed. This gives a)]TJ +-27.6362 -1.2889 TD +0 Tw +("triangular" effect in that less is printed the farther one goes in either )Tj +/TT10 1 Tf +30.4854 0 TD +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +( direction.)Tj +-35.5269 -1.2889 TD +(If the )Tj +/TT10 1 Tf +2.5571 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +( printlevel is negative, then it is the same as if the )Tj +/TT10 1 Tf +21.9526 0 TD +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +( printlevel were infinite.)Tj +-28.1104 -2.0667 TD +(Examples:)Tj +12.7722 -2.1489 TD +(After:)Tj +/TT10 1 Tf +4.5611 0 TD +(\(A \(B C \(D \(E F\) G\) H\) K L\))Tj +/TT8 1 Tf +16.2026 0 TD +( prints as:)Tj +/TT10 1 Tf +-28.4026 -2 TD +[(\(PRINTLEVEL 3 -1\))-1998.3(\(A \(B C \(D & G\) H\) K L\))]TJ +T* +[(\(PRINTLEVEL 2 -1\))-1998.3(\(A \(B C & H\) K L\))]TJ +T* +[(\(PRINTLEVEL 1 -1\))-1998.3(\(A & K L\))]TJ +T* +[(\(PRINTLEVEL 0 -1\))-1998.3(&)]TJ +-1.2 -2 TD +[(\(PRINTLEVEL 1000 2\))-1998.1(\(A \(B --\) --\))]TJ +T* +[(\(PRINTLEVEL 1000 3\))-1998.1(\(A \(B C --\) K --\))]TJ +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +43 0 obj +<< +/Length 8122 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 177.6 570.14 Tm +[(\(PRINTLEVEL 1 3\))-1998.4(\(A & K --\))]TJ +/TT14 1 Tf +-8.4 -2.5489 TD +(PLVLFILEFLG)Tj +/TT6 1 Tf +10 0 0 10 161.4097 547.2 Tm +-0.0008 Tc +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 547.2 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +(Normally, )Tj +/TT10 1 Tf +4.9796 0 TD +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +0.1867 Tw +[( only affects terminal output. Output to all other files acts as)]TJ +-10.9806 -1.2889 TD +0.1756 Tw +[(though the print level is infinite. However, if )]TJ +/TT10 1 Tf +21.8569 0 TD +0 Tw +(PLVLFILEFLG)Tj +/TT8 1 Tf +6.6011 0 TD +0.1756 Tw +[( is )]TJ +/TT10 1 Tf +1.566 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1756 Tw +[( \(initially )]TJ +/TT10 1 Tf +4.6035 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1756 Tw +(\), then)Tj +/TT10 1 Tf +-37.0278 -1.2889 TD +0 Tw +(PRINTLEVEL)Tj +/TT8 1 Tf +6.001 0 TD +( affects output to files as well.)Tj +-11.3343 -2.9556 TD +0.1622 Tw +(The following three functions are useful for printing isolated expressions at a specified print level)Tj +0 -1.2222 TD +0 Tw +(without going to the overhead of resetting the global print level.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(LVLPRINT)Tj +/TT4 1 Tf +10 0 0 10 150.6079 447.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 153.38 447.46 Tm +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CARLVL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CDRLVL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TAIL)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 281.1993 447.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 447.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Performs )Tj +/TT10 1 Tf +4.3708 0 TD +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0622 Tw +[( of )]TJ +/TT12 1 Tf +1.5034 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[( to )]TJ +/TT12 1 Tf +1.4965 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0622 Tw +(, using as )Tj +/TT10 1 Tf +4.5665 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( and )]TJ +/TT10 1 Tf +2.3173 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +[( print levels the values )]TJ +/TT12 1 Tf +10.5343 0 TD +0 Tw +(CARLVL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0622 Tw +[( and)]TJ +/TT12 1 Tf +-37.991 -1.2889 TD +0 Tw +(CDRLVL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0233 Tw +[(, respectively. Uses the )]TJ +/TT10 1 Tf +10.6884 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[( read table. If )]TJ +/TT12 1 Tf +6.4209 0 TD +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( is specified, and )]TJ +/TT12 1 Tf +7.7037 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +[( is a tail of it, then)]TJ +-32.0142 -1.2889 TD +0 Tw +(begins its printing with )Tj +/TT10 1 Tf +10.584 0 TD +("...")Tj +/TT8 1 Tf +3.0005 0 TD +(, rather than on open parenthesis.)Tj +/TT10 1 Tf +-16.2511 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(LVLPRIN2)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CARLVL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CDRLVL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TAIL)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 280.6693 384.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 384.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(LVLPRIN2)Tj +/TT8 1 Tf +4.8008 0 TD +(, but performs a )Tj +/TT10 1 Tf +7.2881 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +-22.3039 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(LVLPRIN1)Tj +/TT4 1 Tf +10 0 0 10 150.6 345.18 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 153.3783 345.18 Tm +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CARLVL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CDRLVL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TAIL)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 281.1976 345.18 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 345.18 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(LVLPRIN1)Tj +/TT8 1 Tf +4.8008 0 TD +(, but performs a )Tj +/TT10 1 Tf +7.2881 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 298.64 Tm +(Printing Numbers)Tj +/TT8 1 Tf +9 0 0 9 78 274.98 Tm +0.1244 Tw +(How the ordinary printing functions \()Tj +/TT10 1 Tf +17.4357 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6244 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.1244 Tw +(, etc.\) print numbers can be affected in several)Tj +-24.0611 -1.2889 TD +0.0244 Tw +(ways. )Tj +/TT10 1 Tf +3.1129 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0244 Tw +[( influences the printing of integers, and )]TJ +/TT10 1 Tf +17.7946 0 TD +0 Tw +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0244 Tw +[( influences the printing of floating point)]TJ +-27.5086 -1.2889 TD +0.1711 Tw +[(numbers. The setting of the variable )]TJ +/TT10 1 Tf +17.6153 0 TD +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.1711 Tw +[( determines how the symbol-manipulation functions)]TJ +-21.2158 -1.2889 TD +0.2244 Tw +[(handle numbers. The )]TJ +/TT10 1 Tf +10.7855 0 TD +0 Tw +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.2244 Tw +[( package permits greater controls on the printed appearance of)]TJ +-15.5863 -1.2889 TD +0 Tw +(numbers, allowing such things as left-justification, suppression of trailing decimals, etc.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RADIX)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 152.8526 206.24 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 206.24 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0722 Tw +(Resets the output radix for integers to the absolute value of )Tj +/TT12 1 Tf +27.1543 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0722 Tw +[(. The value of )]TJ +/TT10 1 Tf +6.8518 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0722 Tw +[( is its)]TJ +-37.6067 -1.2889 TD +0.2144 Tw +(previous setting. )Tj +/TT10 1 Tf +8.5315 0 TD +0 Tw +(\(RADIX\))Tj +/TT8 1 Tf +4.2007 0 TD +0.2144 Tw +[( gives the current setting without changing it. The initial)]TJ +-12.7322 -1.2889 TD +0 Tw +(setting is 10.)Tj +0 -2 TD +0.2022 Tw +(Note that )Tj +/TT10 1 Tf +4.8209 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.2022 Tw +[( affects output )]TJ +/TT16 1 Tf +7.2009 0 TD +0 Tw +(only)Tj +/TT8 1 Tf +1.7778 0 TD +0.2022 Tw +[(. There is no input radix; on input, numbers are)]TJ +-16.8002 -1.2889 TD +0.0355 Tw +(interpreted as decimal unless they are entered in a non-decimal radix with syntax such as)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(123Q)Tj +/TT8 1 Tf +2.4004 0 TD +0.3033 Tw +(, |)Tj +/TT10 1 Tf +1.4093 0 TD +0 Tw +(b10101)Tj +/TT8 1 Tf +3.6006 0 TD +0.3033 Tw +(, |)Tj +/TT10 1 Tf +1.4093 0 TD +0 Tw +(5r1234)Tj +/TT8 1 Tf +3.6006 0 TD +0.3033 Tw +[( \(see Chapter 7\). )]TJ +/TT10 1 Tf +9.1568 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.3033 Tw +[( does not affect the behavior of)]TJ +/TT10 1 Tf +-24.5774 -1.2889 TD +0 Tw +(UNPACK)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +(, etc., unless the value of )Tj +/TT10 1 Tf +11.0659 0 TD +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +[( \(below\) is )]TJ +/TT10 1 Tf +4.864 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.01 Tw +[(. For example, if )]TJ +/TT10 1 Tf +7.6701 0 TD +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +[( is )]TJ +/TT10 1 Tf +1.2348 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.01 Tw +[( and)]TJ +-38.037 -1.2889 TD +0 Tw +(the radix is set to 8 with )Tj +/TT10 1 Tf +10.7993 0 TD +(\(RADIX 8\))Tj +/TT8 1 Tf +5.4009 0 TD +(, the value of )Tj +/TT10 1 Tf +5.9541 0 TD +(\(UNPACK 9\))Tj +/TT8 1 Tf +6.001 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(\(9\))Tj +/TT8 1 Tf +1.8003 0 TD +(, not )Tj +/TT10 1 Tf +2.2041 0 TD +(\(1 1\))Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-36.375 -2.0667 TD +(Using )Tj +/TT10 1 Tf +3.2364 0 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.3556 Tw +[( \(below\) or the )]TJ +/TT10 1 Tf +8.1195 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.3556 Tw +[( command )]TJ +/TT10 1 Tf +5.6594 0 TD +0 Tw +(.I)Tj +/TT8 1 Tf +1.2002 0 TD +0.3556 Tw +[( \(below\) is often a more)]TJ +-27.817 -1.2889 TD +0.1867 Tw +(convenient and appropriate way to print a single number in a specified radix than to)Tj +0 -1.2222 TD +0 Tw +(globally change )Tj +/TT10 1 Tf +7.2275 0 TD +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +48 0 obj +<< +/Length 6751 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FLTFMT)Tj +/TT4 1 Tf +10 0 0 10 187.8 568.2 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 190.5783 568.2 Tm +(FORMAT)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 228.3845 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1578 Tw +(Resets the output format for floating point numbers to the )Tj +/TT10 1 Tf +27.4767 0 TD +0 Tw +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1578 Tw +[( format )]TJ +/TT12 1 Tf +3.7985 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1578 Tw +[( \(see)]TJ +/TT10 1 Tf +-37.8762 -1.2889 TD +0 Tw +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.1467 Tw +[( below for a description of )]TJ +/TT10 1 Tf +12.7257 0 TD +0 Tw +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1467 Tw +[( formats\). )]TJ +/TT12 1 Tf +5.1797 0 TD +0 Tw +(FORMAT)Tj +/TT10 1 Tf +3.6006 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +0.1467 Tw +[( specifies the default)]TJ +-30.5075 -1.2889 TD +0.0155 Tw +("free" formatting: some number of significant digits \(a function of the implementation\) are)Tj +0 -1.2222 TD +0.46 Tw +(printed, with trailing zeros suppressed; numbers with sufficiently large or small)Tj +T* +0 Tw +(exponents are instead printed in exponent notation.)Tj +/TT10 1 Tf +0 -2 TD +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +0.3489 Tw +[( returns its current setting. )]TJ +/TT10 1 Tf +14.2969 0 TD +0 Tw +(\(FLTFMT\))Tj +/TT8 1 Tf +4.8008 0 TD +0.3489 Tw +[( returns the current setting without)]TJ +-22.6983 -1.2889 TD +0 Tw +(changing it. The initial setting is )Tj +/TT10 1 Tf +14.6558 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-15.2559 -2.0667 TD +0.0922 Tw +[(Note: In Interlisp-D, )]TJ +/TT10 1 Tf +10.1452 0 TD +0 Tw +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0922 Tw +[( ignores the )]TJ +/TT12 1 Tf +5.6868 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.0922 Tw +[( and )]TJ +/TT12 1 Tf +2.3773 0 TD +0 Tw +(PAD)Tj +/TT8 1 Tf +1.8003 0 TD +0.0922 Tw +[( fields of the format \(they are)]TJ +-26.6107 -1.2889 TD +0 Tw +(implemented only by )Tj +/TT10 1 Tf +9.7393 0 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +(\).)Tj +-19.8734 -2.9556 TD +0.1756 Tw +(Whether print name manipulation functions \()Tj +/TT10 1 Tf +21.0702 0 TD +0 Tw +(UNPACK)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6756 0 TD +(NCHARS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1756 Tw +(, etc.\) use the values of )Tj +/TT10 1 Tf +11.2692 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.1756 Tw +[( and)]TJ +/TT10 1 Tf +-43.2165 -1.2889 TD +0 Tw +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +( is determined by the variable )Tj +/TT10 1 Tf +13.4214 0 TD +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +(:)Tj +/TT14 1 Tf +-17.9559 -2.5489 TD +(PRXFLG)Tj +/TT6 1 Tf +10 0 0 10 182.4 385.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 385.46 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +1.1866 0 TD +(PRXFLG=NIL)Tj +/TT8 1 Tf +6.001 0 TD +0.2667 Tw +[( \(the initial setting\), then the ")]TJ +/TT10 1 Tf +14.6874 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.2667 Tw +(" name used by )Tj +/TT10 1 Tf +8.1077 0 TD +0 Tw +(PACK)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.7667 0 TD +(UNPACK)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-39.7508 -1.2889 TD +(MKSTRING)Tj +/TT8 1 Tf +4.8008 0 TD +0.1367 Tw +(, etc., is computed using base 10 for integers and the system default floating)Tj +-4.8008 -1.2889 TD +0.3233 Tw +(format for floating point numbers, independent of the current setting of )Tj +/TT10 1 Tf +35.4805 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.3233 Tw +[( or)]TJ +/TT10 1 Tf +-38.481 -1.2889 TD +0 Tw +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +0.3333 Tw +[(. If )]TJ +/TT10 1 Tf +2.6699 0 TD +0 Tw +(PRXFLG=T)Tj +/TT8 1 Tf +4.8008 0 TD +0.3333 Tw +(, then )Tj +/TT10 1 Tf +3.3859 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.3333 Tw +[( and )]TJ +/TT10 1 Tf +2.8595 0 TD +0 Tw +(FLTFMT)Tj +/TT8 1 Tf +3.6006 0 TD +0.3333 Tw +[( do dictate the ")]TJ +/TT10 1 Tf +8.2254 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.3333 Tw +(" name of)Tj +-35.1437 -1.2889 TD +0 Tw +(numbers. Note that in this case, )Tj +/TT10 1 Tf +14.4282 0 TD +(PACK)Tj +/TT8 1 Tf +2.4004 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(UNPACK)Tj +/TT8 1 Tf +3.6006 0 TD +( are )Tj +/TT16 1 Tf +1.874 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +( inverses.)Tj +-25.8291 -2.0667 TD +(Examples with)Tj +/TT10 1 Tf +6.5879 0 TD +( \(RADIX 8\), \(FLTFMT \(FLOAT 4 2\)\))Tj +/TT8 1 Tf +19.8032 0 TD +(:)Tj +-18.3911 -2.0667 TD +(With )Tj +/TT10 1 Tf +2.4492 0 TD +(PRXFLG=NIL,)Tj +0.2174 -1.7778 TD +(\(UNPACK 13\) => \(1 3\))Tj +0 -1 TD +(\(PACK \(A 9\)\) => A9)Tj +T* +(\(UNPACK 1.2345\) => \(1 %. 2 3 4 5\))Tj +/TT8 1 Tf +-2.6667 -1.8444 TD +(With )Tj +/TT10 1 Tf +2.4492 0 TD +(PRXFLG=T,)Tj +0.2174 -1.7778 TD +(\(UNPACK 13\) => \(1 5\))Tj +0 -1 TD +(\(PACK \(A 9\)\) => A11)Tj +T* +(\(UNPACK 1.2345\) => \(1 %. 2 3\))Tj +/TT8 1 Tf +-10.6667 -1.8444 TD +0.21 Tw +(Note that )Tj +/TT10 1 Tf +4.8365 0 TD +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.21 Tw +[( does not effect the radix of ")]TJ +/TT10 1 Tf +14.0779 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.21 Tw +(" names, so with )Tj +/TT10 1 Tf +8.3317 0 TD +0.5044 Tw +(\(RADIX 8\))Tj +/TT8 1 Tf +5.9053 0 TD +0 Tw +(,)Tj +/TT10 1 Tf +-39.7525 -1.2889 TD +0.1244 Tw +(\(NCHARS 9 T\))Tj +/TT8 1 Tf +7.4501 0 TD +0.0522 Tw +(, which uses )Tj +/TT10 1 Tf +5.8193 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0522 Tw +[( names, would return 3, \(since 9 would print as 11Q\))]TJ +-16.2698 -1.2889 TD +0 Tw +(for either setting of )Tj +/TT10 1 Tf +8.6895 0 TD +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-12.29 -2.0667 TD +0.0001 Tc +0.0043 Tw +(Warning: Some system functions will not work correctly if )Tj +/TT10 1 Tf +26.3482 0 TD +0 Tc +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.0006 Tc +0.0038 Tw +( is not )Tj +/TT10 1 Tf +2.9323 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0003 Tc +0.0041 Tw +(. Therefore,)Tj +-34.6813 -1.2889 TD +0 Tc +0.1533 Tw +(resetting the global value of )Tj +/TT10 1 Tf +13.3165 0 TD +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +0.1533 Tw +[( is not recommended. It is much better to rebind)]TJ +/TT10 1 Tf +-16.9171 -1.2889 TD +0 Tw +(PRXFLG)Tj +/TT8 1 Tf +3.6006 0 TD +( as a )Tj +/TT10 1 Tf +2.1738 0 TD +(SPECVAR)Tj +/TT8 1 Tf +4.2007 0 TD +( for that part of a program where it needs to be non-)Tj +/TT10 1 Tf +22.9937 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-40.1024 -2.9556 TD +0.0311 Tw +(The basic function for printing numbers under format control is )Tj +/TT10 1 Tf +28.7188 0 TD +0 Tw +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0311 Tw +[(. Its utility is considerably)]TJ +-33.5196 -1.2889 TD +0.2578 Tw +(enhanced when used in conjunction with the )Tj +/TT10 1 Tf +21.8801 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.2578 Tw +[( package, which implements a compact)]TJ +-26.6809 -1.2889 TD +0.13 Tw +(language for specifying complicated sequences of elementary printing operations, and makes fancy)Tj +0 -1.2222 TD +0 Tw +(output formats easy to design and simple to program.)Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +51 0 obj +<< +/Length 8586 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-13)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRINTNUM)Tj +/TT4 1 Tf +10 0 0 10 150.6079 568.2 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 156.1645 568.2 Tm +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(FILE\))Tj +/TT6 1 Tf +10 0 0 10 252.4795 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +2.9298 0 TD +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0578 Tw +[( on )]TJ +/TT12 1 Tf +1.7435 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0578 Tw +[( according to the format )]TJ +/TT12 1 Tf +11.1497 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0578 Tw +(. )Tj +/TT12 1 Tf +0.8656 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0578 Tw +[( is a list structure with)]TJ +-29.8908 -1.2889 TD +0 Tw +(one of the forms described below.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +0.921 0 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0011 Tw +( is a list of the form )Tj +/TT10 1 Tf +8.7275 0 TD +0 Tw +(\(FIX)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.2511 0 TD +(WIDTH)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.2511 0 TD +(RADIX)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.2511 0 TD +(PAD0)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.2511 0 TD +(LEFTFLUSH)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0011 Tw +(, this specifies a )Tj +/TT10 1 Tf +7.1431 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +-38.1994 -1.2889 TD +0.1833 Tw +(format. )Tj +/TT12 1 Tf +4.0996 0 TD +0 Tw +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1833 Tw +[( is rounded to the nearest integer, and then printed in a field )]TJ +/TT12 1 Tf +29.3028 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +-37.0029 -1.2889 TD +0.1067 Tw +(characters long with radix set to )Tj +/TT12 1 Tf +15.0511 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.1067 Tw +[( \(or 10 if )]TJ +/TT12 1 Tf +4.3246 0 TD +0 Tw +(RADIX)Tj +/TT10 1 Tf +3.0005 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +(; note that the setting from)Tj +-27.7771 -1.2889 TD +0.0278 Tw +(the function )Tj +/TT10 1 Tf +5.6498 0 TD +0 Tw +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.0278 Tw +[( is )]TJ +/TT16 1 Tf +1.2704 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0278 Tw +[( used as the default\). If )]TJ +/TT12 1 Tf +10.7682 0 TD +0 Tw +(PAD0)Tj +/TT8 1 Tf +2.4004 0 TD +0.0278 Tw +[( and )]TJ +/TT12 1 Tf +2.2484 0 TD +0 Tw +(LEFTFLUSH)Tj +/TT8 1 Tf +5.4009 0 TD +0.0278 Tw +[( are both )]TJ +/TT10 1 Tf +4.2147 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +(, the)Tj +-38.0865 -1.2889 TD +0.0578 Tw +(number is right-justified in the field, and the padding characters to the left of the leading)Tj +0 -1.2222 TD +0.0789 Tw +[(digit are spaces. If )]TJ +/TT12 1 Tf +8.8852 0 TD +0 Tw +(PAD0)Tj +/TT8 1 Tf +2.4004 0 TD +0.0789 Tw +[( is )]TJ +/TT10 1 Tf +1.3726 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +(, the character ")Tj +/TT10 1 Tf +7.0599 0 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.0789 Tw +[(" is used for padding. If )]TJ +/TT12 1 Tf +11.4507 0 TD +0 Tw +(LEFTFLUSH)Tj +/TT8 1 Tf +5.4009 0 TD +0.0789 Tw +[( is )]TJ +/TT10 1 Tf +1.3726 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-39.7425 -1.2889 TD +0.3122 Tw +(then the number is left-justified in the field, with trailing spaces to fill out )Tj +/TT12 1 Tf +36.9971 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +-36.9971 -1.2889 TD +(characters.)Tj +0 -2 TD +0.0978 Tw +(The following examples illustrate the effects of the )Tj +/TT10 1 Tf +23.2964 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0978 Tw +[( format options on the number 9)]TJ +-25.0967 -1.2889 TD +0 Tw +(\(the vertical bars indicate the field width\):)Tj +/TT12 1 Tf +14.15 -1.9267 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +(:)Tj +/TT10 1 Tf +2.2494 0 TD +(\(PRINTNUM)Tj +/TT4 1 Tf +10 0 0 10 354.6079 394.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 357.3862 394.46 Tm +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(9\))Tj +/TT6 1 Tf +10 0 0 10 402.8432 394.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 405.6216 394.46 Tm +(prints:)Tj +/TT10 1 Tf +-17.2691 -1.7711 TD +(\(FIX 2\))Tj +/TT8 1 Tf +6.2 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +( 9)Tj +/TT8 1 Tf +1.2002 0 TD +(|)Tj +/TT10 1 Tf +-11.6062 -1.6222 TD +(\(FIX 2 NIL T\))Tj +/TT8 1 Tf +9.8 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +(09)Tj +/TT8 1 Tf +1.2002 0 TD +(|)Tj +/TT10 1 Tf +-11.0062 -1.6222 TD +(\(FIX 12 8 T\))Tj +/TT8 1 Tf +9.2 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +(000000000011)Tj +/TT8 1 Tf +7.2012 0 TD +(|)Tj +/TT10 1 Tf +-20.0071 -1.6222 TD +(\(FIX 5 NIL NIL T\))Tj +/TT8 1 Tf +12.2 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +(9 )Tj +/TT8 1 Tf +3.0005 0 TD +(|)Tj +-23.6064 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.0899 0 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.17 Tw +[( is a list of the form )]TJ +/TT10 1 Tf +9.9097 0 TD +0 Tw +(\(FLOAT)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.42 0 TD +(WIDTH)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.42 0 TD +(DECPART)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.42 0 TD +(EXPPART)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.42 0 TD +(PAD0)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.42 0 TD +(ROUND)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.17 Tw +(, this)Tj +-37.7037 -1.2889 TD +0.2233 Tw +(specifies a )Tj +/TT10 1 Tf +5.2123 0 TD +0 Tw +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +0.2233 Tw +[( format. )]TJ +/TT12 1 Tf +4.6529 0 TD +0 Tw +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.2233 Tw +[( is printed as a decimal number in a field )]TJ +/TT12 1 Tf +20.5287 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +-36.995 -1.2889 TD +0.0311 Tw +(characters wide, with )Tj +/TT12 1 Tf +9.8301 0 TD +0 Tw +(DECPART)Tj +/TT8 1 Tf +4.2007 0 TD +0.0311 Tw +[( digits to the right of the decimal point. If )]TJ +/TT12 1 Tf +19.0317 0 TD +0 Tw +(EXPPART)Tj +/TT8 1 Tf +4.2007 0 TD +0.0311 Tw +[( is not)]TJ +/TT10 1 Tf +-37.2632 -1.2889 TD +0 Tw +(0)Tj +/TT8 1 Tf +0.6001 0 TD +0.1944 Tw +[( \(or )]TJ +/TT10 1 Tf +2.1628 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1944 Tw +(\), the number is printed in exponent notation, with the exponent occupying)Tj +/TT12 1 Tf +-4.5632 -1.2889 TD +0 Tw +(EXPPART)Tj +/TT8 1 Tf +4.2007 0 TD +0.2478 Tw +[( characters in the field. )]TJ +/TT12 1 Tf +11.9906 0 TD +0 Tw +(EXPPART)Tj +/TT8 1 Tf +4.2007 0 TD +0.2478 Tw +[( should allow for the character )]TJ +/TT10 1 Tf +15.2313 0 TD +0 Tw +(E)Tj +/TT8 1 Tf +0.6001 0 TD +0.2478 Tw +[( and an)]TJ +-36.2233 -1.2889 TD +0.05 Tw +[(optional sign to be printed before the exponent digits. As with )]TJ +/TT10 1 Tf +29.1932 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +0.05 Tw +[( format, padding on)]TJ +-30.9935 -1.2889 TD +0.0122 Tw +(the left is with spaces, unless )Tj +/TT12 1 Tf +13.0621 0 TD +0 Tw +(PAD0)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +[( is )]TJ +/TT10 1 Tf +1.2393 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +[(. If )]TJ +/TT12 1 Tf +1.7066 0 TD +0 Tw +(ROUND)Tj +/TT8 1 Tf +3.0005 0 TD +0.0122 Tw +[( is given, it indicates the digit position at)]TJ +-22.009 -1.2889 TD +0 Tw +(which rounding is to take place, counting from the leading digit of the number.)Tj +0 -2 TD +0.1067 Tw +(Interlisp-D interprets )Tj +/TT12 1 Tf +9.8447 0 TD +0 Tw +(WIDTH)Tj +/TT10 1 Tf +3.0005 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1067 Tw +[( to mean no padding, i.e., to use however much space)]TJ +-15.2456 -1.2889 TD +0.2311 Tw +(the number needs, and interprets )Tj +/TT12 1 Tf +16.1038 0 TD +0 Tw +(DECPART)Tj +/TT10 1 Tf +4.2007 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.2311 Tw +[( to mean as many decimal places as)]TJ +-22.7049 -1.2889 TD +0 Tw +(needed.)Tj +0 -2 TD +0.0711 Tw +(The following examples illustrate the effects of the )Tj +/TT10 1 Tf +23.083 0 TD +0 Tw +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0711 Tw +[( format options on the number)]TJ +-26.0835 -1.2889 TD +0 Tw +(27.689 \(the vertical bars indicate the field width\):)Tj +/TT12 1 Tf +14.15 -1.9267 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +(:)Tj +/TT10 1 Tf +2.2494 0 TD +(\(PRINTNUM)Tj +/TT8 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(27.689\))Tj +/TT8 1 Tf +4.2007 0 TD +( prints:)Tj +/TT10 1 Tf +-22.3021 -1.6222 TD +(\(FLOAT 7 2\))Tj +/TT8 1 Tf +8.6 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +( 27.69)Tj +/TT8 1 Tf +4.2007 0 TD +(|)Tj +/TT10 1 Tf +-17.0066 -1.6222 TD +(\(FLOAT 7 2 NIL 0\))Tj +/TT8 1 Tf +12.2 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +(0027.69)Tj +/TT8 1 Tf +4.2007 0 TD +(|)Tj +/TT10 1 Tf +-14.6066 -1.6222 TD +(\(FLOAT 7 2 2\))Tj +/TT8 1 Tf +9.8 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +( 2.77E1)Tj +/TT8 1 Tf +4.2007 0 TD +(|)Tj +/TT10 1 Tf +-15.2066 -1.6222 TD +(\(FLOAT 11 2 4\))Tj +/TT8 1 Tf +10.4 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +( 2.77E+01)Tj +/TT8 1 Tf +6.6011 0 TD +(|)Tj +/TT10 1 Tf +-21.807 -1.6222 TD +(\(FLOAT 7 2 NIL NIL 1\))Tj +/TT8 1 Tf +14.6 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +( 30.00)Tj +/TT8 1 Tf +4.2007 0 TD +(|)Tj +/TT10 1 Tf +-19.4066 -1.6222 TD +(\(FLOAT 7 2 NIL NIL 2\))Tj +/TT8 1 Tf +14.6 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +( 28.00)Tj +/TT8 1 Tf +4.2007 0 TD +(|)Tj +ET +endstream +endobj +52 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +54 0 obj +<< +/Length 7477 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT14 1 Tf +9 0 0 9 150 568.2 Tm +(NILNUMPRINTFLG)Tj +/TT6 1 Tf +10 0 0 10 225.6 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 494.41 568.2 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT10 1 Tf +1.0621 0 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +(s )Tj +/TT12 1 Tf +1.0939 0 TD +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1422 Tw +[( argument is not a number and not )]TJ +/TT10 1 Tf +16.773 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1422 Tw +(, a )Tj +/TT10 1 Tf +1.5344 0 TD +0.34 Tw +(NON-NUMERIC ARG)Tj +/TT8 1 Tf +-30.6652 -1.2889 TD +0.1544 Tw +[(error is generated. If )]TJ +/TT12 1 Tf +10.2742 0 TD +0 Tw +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1544 Tw +[( is )]TJ +/TT10 1 Tf +1.5237 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1544 Tw +(, the effect depends on the setting of the variable)Tj +/TT10 1 Tf +-17.1988 -1.2889 TD +0 Tw +(NILNUMPRINTFLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.1156 Tw +[(. If )]TJ +/TT10 1 Tf +2.0166 0 TD +0 Tw +(NILNUMPRINTFLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.1156 Tw +[( is )]TJ +/TT10 1 Tf +1.446 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1156 Tw +[(, then the error occurs as usual. If it is)]TJ +-22.0656 -1.2889 TD +0 Tw +(non-)Tj +/TT10 1 Tf +2.043 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2678 Tw +(, then no error occurs, and the value of )Tj +/TT10 1 Tf +19.7196 0 TD +0 Tw +(NILNUMPRINTFLG)Tj +/TT8 1 Tf +8.4014 0 TD +0.2678 Tw +[( is printed right-)]TJ +-31.9642 -1.2889 TD +0.0411 Tw +(justified in the field described by )Tj +/TT12 1 Tf +14.9996 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +[(. This option facilitates the printing of numbers)]TJ +-18.6002 -1.2889 TD +0 Tw +(in aggregates with missing values coded as )Tj +/TT10 1 Tf +19.3545 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 463.66 Tm +(User Defined Printing)Tj +/TT8 1 Tf +9 0 0 9 126 440 Tm +0.1744 Tw +(Initially, Interlisp only knows how to print in an interesting way objects of type litatom, number,)Tj +0 -1.2222 TD +0.0233 Tw +[(string, list and stackp. All other types of objects are printed in the form )]TJ +/TT10 1 Tf +32.0854 0 TD +0 Tw +({datatype})Tj +/TT8 1 Tf +6.001 0 TD +0.0233 Tw +[( followed by the)]TJ +-38.0863 -1.2889 TD +0.0611 Tw +(octal representation of the address of the pointer, a format that cannot be read back in to produce an)Tj +0 -1.2222 TD +0.0733 Tw +[(equivalent object. When defining user data types \(using the )]TJ +/TT10 1 Tf +27.5102 0 TD +0 Tw +(DATATYPE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0733 Tw +[( record type, Chapter 8\), it is)]TJ +-32.311 -1.2889 TD +0.1833 Tw +(often desirable to specify as well how objects of that type should be printed, so as to make their)Tj +0 -1.2222 TD +0.1778 Tw +[(contents readable, or at least more informative to the viewer. The function )]TJ +/TT10 1 Tf +35.5421 0 TD +0 Tw +(DEFPRINT)Tj +/TT8 1 Tf +4.8008 0 TD +0.1778 Tw +[( is used to)]TJ +-40.3429 -1.2889 TD +0 Tw +(specify the printing format of a data type.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(DEFPRINT)Tj +/TT18 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TYPE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 240.9061 349.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 349.86 Tm +([Function])Tj +/TT12 1 Tf +-35.4033 -1.8444 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1489 Tw +[( is a type name. Whenever a printing function \()]TJ +/TT10 1 Tf +22.5856 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6489 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6489 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.1489 Tw +(, etc.\) or a)Tj +-35.2852 -1.2889 TD +0.3289 Tw +(function requiring a print name \()Tj +/TT10 1 Tf +16.226 0 TD +0 Tw +(CHCON)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.8289 0 TD +(NCHARS)Tj +/TT8 1 Tf +3.6006 0 TD +0.3289 Tw +(, etc.\) encounters an object of the)Tj +-23.656 -1.2889 TD +0.0889 Tw +(indicated type, )Tj +/TT12 1 Tf +7.0249 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0889 Tw +[( is called with two arguments: the item to be printed and the name of)]TJ +-8.2251 -1.2889 TD +0.1044 Tw +[(the stream, if any, to which the object is to be printed. The second argument is )]TJ +/TT10 1 Tf +36.7087 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1044 Tw +[( on)]TJ +-38.509 -1.2889 TD +0 Tw +(calls that request the print name of an object without actually printing it.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +0.9366 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0167 Tw +[( returns a list of the form )]TJ +/TT10 1 Tf +11.3257 0 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(ITEM1)Tj +/TT10 1 Tf +3.0005 0 TD +0.0411 Tw +[( . )]TJ +/TT12 1 Tf +1.8825 0 TD +0 Tw +(ITEM2)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT12 1 Tf +0.5167 0 TD +(ITEM1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0167 Tw +[( is printed using )]TJ +/TT10 1 Tf +7.5227 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0167 Tw +[( \(unless)]TJ +-36.5865 -1.2889 TD +0.2022 Tw +(it is )Tj +/TT10 1 Tf +2.2365 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2022 Tw +(\), and then )Tj +/TT12 1 Tf +5.6018 0 TD +0 Tw +(ITEM2)Tj +/TT8 1 Tf +3.0005 0 TD +0.2022 Tw +[( is printed using )]TJ +/TT10 1 Tf +8.2649 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.2022 Tw +[( \(unless it is )]TJ +/TT10 1 Tf +6.2767 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2022 Tw +[(\). No spaces are)]TJ +-31.9814 -1.2889 TD +0 Tw +(printed between the two items. Typically, )Tj +/TT12 1 Tf +18.9067 0 TD +(ITEM1)Tj +/TT8 1 Tf +3.0005 0 TD +( is a read macro character.)Tj +-21.9072 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9199 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( returns )Tj +/TT10 1 Tf +3.7041 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the datum is printed in the system default manner.)Tj +-7.6245 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9577 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0378 Tw +[( returns )]TJ +/TT10 1 Tf +3.7797 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0378 Tw +(, nothing further is printed; )Tj +/TT12 1 Tf +12.5175 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0378 Tw +[( is assumed to have printed the object to the)]TJ +-20.2553 -1.2889 TD +0.0855 Tw +[(stream itself. Note that this case if permitted only when the second argument passed to)]TJ +/TT12 1 Tf +0 -1.2222 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0004 Tc +0.0029 Tw +( is non-)Tj +/TT10 1 Tf +3.2645 0 TD +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0033 Tw +(; otherwise, there is no destination for )Tj +/TT12 1 Tf +16.9652 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.0001 Tc +0.0032 Tw +( to do its printing, so it must return)Tj +-24.4304 -1.2889 TD +0 Tc +0 Tw +(as in one of the other two cases.)Tj +/TT4 1 Tf +10 0 0 10 126 144.92 Tm +(Printing Unusual Data Structures)Tj +/TT10 1 Tf +9 0 0 9 126 121.26 Tm +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2056 Tw +[( \(for "Horrible Print"\) and )]TJ +/TT10 1 Tf +12.6332 0 TD +0 Tw +(HREAD)Tj +/TT8 1 Tf +3.0005 0 TD +0.2056 Tw +[( provide a mechanism for printing and reading back in)]TJ +-19.2343 -1.2889 TD +(general data structures that cannot normally be dumped and loaded easily, such as \(possibly re-)Tj +0 -1.2222 TD +0.0522 Tw +(entrant or circular\) structures containing user datatypes, arrays, hash tables, as well as list structures.)Tj +/TT10 1 Tf +T* +0 Tw +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0333 Tw +[( will correctly print and read back in any structure containing any or all of the above, chasing)]TJ +-3.6006 -1.2889 TD +0.0922 Tw +(all pointers down to the level of literal atoms, numbers or strings. )Tj +/TT10 1 Tf +30.6007 0 TD +0 Tw +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0922 Tw +[( currently cannot handle)]TJ +-34.2013 -1.2889 TD +0 Tw +(compiled code arrays, stack positions, or arbitrary unboxed numbers.)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +57 0 obj +<< +/Length 7547 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-15)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 78 569.54 Tm +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2544 Tw +[( operates by simulating the Interlisp )]TJ +/TT10 1 Tf +17.7464 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.2544 Tw +[( routine for normal list structures. When it)]TJ +-24.3475 -1.2889 TD +0.1533 Tw +(encounters a user datatype \(see Chapter 8\), or an array or hash array, it prints the data contained)Tj +0 -1.2222 TD +0.2767 Tw +[(therein, surrounded by special characters defined as read macro characters. While chasing the)]TJ +T* +0.1922 Tw +(pointers of a structure, it also keeps a hash table of those items it encounters, and if any item is)Tj +T* +0.1256 Tw +(encountered a second time, another read macro character is inserted before the first occurrence \(by)Tj +T* +0.1733 Tw +(resetting the file pointer with )Tj +/TT10 1 Tf +14.0097 0 TD +0 Tw +(SETFILEPTR)Tj +/TT8 1 Tf +6.001 0 TD +0.1733 Tw +(\) and all subsequent occurrences are printed as a back)Tj +-20.0107 -1.2889 TD +0.1211 Tw +[(reference using an appropriate macro character. Thus the inverse function, )]TJ +/TT10 1 Tf +34.7839 0 TD +0 Tw +(HREAD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1211 Tw +[( merely calls the)]TJ +-37.7844 -1.2889 TD +0 Tw +(Interlisp )Tj +/TT10 1 Tf +3.9761 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +( routine with the appropriate read table.)Tj +/TT10 1 Tf +-3.7098 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(EXPR)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(UNCIRCULAR)Tj +/TT16 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DATATYPESEEN)Tj +/TT10 1 Tf +7.2012 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 316.2272 467.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 467.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +3.0565 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1844 Tw +[( on )]TJ +/TT12 1 Tf +1.9968 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1844 Tw +[(. If )]TJ +/TT12 1 Tf +2.2233 0 TD +0 Tw +(UNCIRCULAR)Tj +/TT8 1 Tf +6.001 0 TD +0.1844 Tw +[( is non-)]TJ +/TT10 1 Tf +3.6267 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6844 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1844 Tw +[( does no checking for any)]TJ +-27.7904 -1.2889 TD +0.13 Tw +(circularities in )Tj +/TT12 1 Tf +6.8069 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.13 Tw +[( \(but is still useful for dumping arbitrary structures of arrays, hash)]TJ +-9.2073 -1.2889 TD +0.4767 Tw +[(arrays, lists, user data types, etc., that do not contain circularities\). Specifying)]TJ +/TT12 1 Tf +0 -1.2222 TD +0 Tw +(UNCIRCULAR)Tj +/TT8 1 Tf +6.001 0 TD +( as non-)Tj +/TT10 1 Tf +3.4668 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( results in a large speed and internal-storage advantage.)Tj +-11.2681 -2.0667 TD +0.2511 Tw +(Normally, when )Tj +/TT10 1 Tf +8.0222 0 TD +0 Tw +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2511 Tw +[( encounters a user data type for the first time, it outputs a)]TJ +-11.6228 -1.2889 TD +0.04 Tw +[(summary of the data types declaration. When this is read in, the data type is redeclared.)]TJ +0 -1.2222 TD +0 Tw +(If )Tj +/TT12 1 Tf +0.9677 0 TD +(DATATYPESEEN)Tj +/TT8 1 Tf +7.2012 0 TD +0.0478 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3534 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5478 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0478 Tw +[( assumes that the same data type declarations will)]TJ +-17.4709 -1.2889 TD +0 Tw +(be in force at read time as were at )Tj +/TT10 1 Tf +15.0791 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +( time, and not output declarations.)Tj +/TT10 1 Tf +-18.6797 -2.0667 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2578 Tw +[( is intended primarily for output to random access files, since the algorithm)]TJ +-3.6006 -1.2889 TD +0.0933 Tw +[(depends on being able to reset the file pointer. If )]TJ +/TT12 1 Tf +22.8724 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0933 Tw +[( is not a random access file \(and)]TJ +/TT12 1 Tf +-25.2728 -1.2889 TD +0 Tw +(UNCIRCULAR)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.3156 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +/TT10 1 Tf +0.3156 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +(\), a temporary file, )Tj +/TT10 1 Tf +8.6704 0 TD +0 Tw +(HPRINT.SCRATCH)Tj +/TT8 1 Tf +8.4014 0 TD +0.0656 Tw +(, is opened, )Tj +/TT12 1 Tf +5.4594 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( is )]TJ +/TT10 1 Tf +1.346 0 TD +0 Tw +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +(ed)Tj +-38.9106 -1.2889 TD +(on it, and then that file is copied to the final output file and the temporary file is deleted.)Tj +0 -2 TD +0.4689 Tw +(You can not use )Tj +/TT10 1 Tf +9.1773 0 TD +0 Tw +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.4689 Tw +[( to save things that contains pointers to raw storage.)]TJ +-12.7779 -1.2889 TD +0.4211 Tw +(Fontdescriptors contain pointers to raw storage and windows contain pointers to)Tj +0 -1.2222 TD +0 Tw +(fontdescriptors. Netiher can therefor be saved with )Tj +/TT10 1 Tf +22.811 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +-29.0783 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(HREAD)Tj +/TT8 1 Tf +2.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 163.6544 247.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 247.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Reads and returns an )Tj +/TT10 1 Tf +9.6606 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +(-ed expression from )Tj +/TT12 1 Tf +9.0664 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-27.3947 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(HCOPYALL)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 163.6517 207.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 207.72 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Copies data structure )Tj +/TT12 1 Tf +9.7319 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT12 1 Tf +0.75 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( may contain circular pointers as well as arbitrary structures.)Tj +-11.6821 -2.0667 TD +(Note: )Tj +/TT10 1 Tf +2.8288 0 TD +(HORRIBLEVARS)Tj +/TT8 1 Tf +7.2012 0 TD +0.1467 Tw +[( and )]TJ +/TT10 1 Tf +2.4862 0 TD +0 Tw +(UGLYVARS)Tj +/TT8 1 Tf +4.8008 0 TD +0.1467 Tw +[( \(Chapter 17\) are two file package commands for)]TJ +-17.317 -1.2889 TD +0.4455 Tw +[(dumping and reloading circular and re-entrant data structures. They provide a)]TJ +0 -1.2222 TD +0 Tw +(convenient interface to )Tj +/TT10 1 Tf +10.3271 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(HREAD)Tj +/TT8 1 Tf +3.0005 0 TD +(. )Tj +-19.1211 -2.0667 TD +(When )Tj +/TT10 1 Tf +3.1553 0 TD +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2622 Tw +[( is dumping a data structure that contains an instance of an Interlisp)]TJ +-6.7559 -1.2889 TD +0.2233 Tw +[(datatype, the datatype declaration is also printed onto the file. Reading such a data)]TJ +0 -1.2222 TD +0.0633 Tw +(structure with )Tj +/TT10 1 Tf +6.655 0 TD +0 Tw +(HREAD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0633 Tw +[( can cause problems if it redefines a system datatype. Redefining a)]TJ +-9.6555 -1.2889 TD +0.3955 Tw +[(system datatype will almost definitely cause serious errors. The Interlisp system)]TJ +0 -1.2222 TD +0.0556 Tw +(datatypes do not change very often, but there is always a possibility when loading in old)Tj +T* +0 Tw +(files created under an old Interlisp release.)Tj +0 -2 TD +0.0778 Tw +(To prevent accidental system crashes, )Tj +/TT10 1 Tf +17.282 0 TD +0 Tw +(HREAD)Tj +/TT8 1 Tf +3.0005 0 TD +0.0778 Tw +[( will )]TJ +/TT16 1 Tf +2.3626 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0778 Tw +[( redefine datatypes. Instead, it will)]TJ +-23.978 -1.2889 TD +0.3522 Tw +(cause an error ")Tj +/TT10 1 Tf +7.9195 0 TD +0.8467 Tw +(attempt to read DATATYPE with different field)Tj +ET +endstream +endobj +58 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +60 0 obj +<< +/Length 6433 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +0.6389 Tw +(specification than currently defined)Tj +/TT8 1 Tf +23.5202 0 TD +0.2656 Tw +[(". Continuing from this error will)]TJ +-23.5202 -1.2889 TD +0 Tw +(redefine the datatype.)Tj +/TT4 1 Tf +10 0 0 10 102 515.6 Tm +(Random Access File Operations)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 512.89 m +558.01 512.89 l +S +BT +/TT8 1 Tf +9 0 0 9 126 490.94 Tm +0.0956 Tw +(For most applications, files are read starting at their beginning and proceeding sequentially, i.e., the)Tj +0 -1.2222 TD +0.2244 Tw +[(next character read is the one immediately following the last character read. Similarly, files are)]TJ +T* +0.0111 Tw +[(written sequentially. However, for files on some devices, it is also possible to read/write characters at)]TJ +T* +0.2011 Tw +[(arbitrary positions in a file, essentially treating the file as a large block of auxiliary storage. For)]TJ +T* +0.14 Tw +(example, one application might involve writing an expression at the )Tj +/TT16 1 Tf +31.7438 0 TD +0 Tw +(beginning)Tj +/TT8 1 Tf +4.0762 0 TD +0.14 Tw +[( of the file, and then)]TJ +-35.8199 -1.2222 TD +0.0322 Tw +(reading an expression from a specified point in its )Tj +/TT16 1 Tf +22.6425 0 TD +0 Tw +(middle)Tj +/TT8 1 Tf +2.7227 0 TD +0.0322 Tw +[(. This particular example requires the file be)]TJ +-25.3652 -1.2222 TD +0.0344 Tw +(open for )Tj +/TT16 1 Tf +4.0508 0 TD +0 Tw +(both)Tj +/TT8 1 Tf +1.7397 0 TD +0.0344 Tw +[( input and output. However, random file input or output can also be performed on files)]TJ +-5.7906 -1.2222 TD +0 Tw +(that have been opened for only input or only output.)Tj +0 -2.8889 TD +0.0378 Tw +(Associated with each file is a "file pointer" that points to the location where the next character is to be)Tj +0 -1.2222 TD +0.0044 Tw +(read from or written to. The file position of a byte is the number of bytes that precede it in the file, i.e.,)Tj +T* +0.0667 Tw +[(0 is the position of the beginning of the file. The file pointer to a file is automatically advanced after)]TJ +T* +0.0978 Tw +[(each input or output operation. This section describes functions which can be used to )]TJ +/TT16 1 Tf +39.599 0 TD +0 Tw +(reposition)Tj +/TT8 1 Tf +4 0 TD +0.0978 Tw +[( the)]TJ +-43.599 -1.2222 TD +0.0867 Tw +[(file pointer on those files that can be randomly accessed. A file used in this fashion is much like an)]TJ +T* +0.0667 Tw +(array in that it has a certain number of addressable locations that characters can be put into or taken)Tj +T* +0.0744 Tw +[(from. However, unlike arrays, files can be enlarged. For example, if the file pointer is positioned at)]TJ +T* +0.03 Tw +[(the end of a file and anything is written, the file "grows." It is also possible to position the file pointer)]TJ +/TT16 1 Tf +T* +0 Tw +(beyond)Tj +/TT8 1 Tf +2.8521 0 TD +0.0011 Tw +( the end of file and then to write. \(If the program attempts to )Tj +/TT16 1 Tf +27.2115 0 TD +0 Tw +(read)Tj +/TT8 1 Tf +1.7222 0 TD +0.0011 Tw +( beyond the end of file, an )Tj +/TT10 1 Tf +11.749 0 TD +0 Tw +(END)Tj +-43.5347 -1.2889 TD +0.2389 Tw +(OF FILE)Tj +/TT8 1 Tf +4.4396 0 TD +0.1 Tw +[( error occurs.\) In this case, the file is enlarged, and a "hole" is created, which can later be)]TJ +-4.4396 -1.2889 TD +0.0389 Tw +[(written into. Note that this enlargement only takes place at the )]TJ +/TT16 1 Tf +28.5756 0 TD +0 Tw +(end)Tj +/TT8 1 Tf +1.4453 0 TD +0.0389 Tw +[( of a file; it is not possible to make)]TJ +-30.0209 -1.2222 TD +0.2067 Tw +[(more room in the middle of a file. In other words, if expression )]TJ +/TT10 1 Tf +31.1819 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.2067 Tw +[( begins at position 1000, and)]TJ +-31.782 -1.2889 TD +0 Tw +(expression )Tj +/TT10 1 Tf +5.1735 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.1867 Tw +[( at 1100, and the program attempts to overwrite )]TJ +/TT10 1 Tf +23.0096 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.1867 Tw +[( with expression )]TJ +/TT10 1 Tf +8.08 0 TD +0 Tw +(C)Tj +/TT8 1 Tf +0.6001 0 TD +0.1867 Tw +(, whose printed)Tj +-38.0634 -1.2889 TD +0 Tw +(representation is 200 bytes long, part of )Tj +/TT10 1 Tf +17.6348 0 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +( will be altered.)Tj +-18.2349 -2.9556 TD +0.0344 Tw +[(Warning: File positions are always in terms of bytes, not characters. You should thus be very careful)]TJ +0 -1.2222 TD +0.0389 Tw +[(about computing the space needed for an expression. In particular, NS characters may take multiple)]TJ +T* +0.0678 Tw +[(bytes \(see below\). Also, the end-of-line character \(see Chapter 24\) may be represented by a different)]TJ +T* +0.0089 Tw +[(number of characters in different implementations. Output functions may also introduce end-of-lines)]TJ +T* +0.1022 Tw +(as a result of )Tj +/TT10 1 Tf +6.2297 0 TD +0 Tw +(LINELENGTH)Tj +/TT8 1 Tf +6.001 0 TD +0.1022 Tw +[( considerations. Therefore )]TJ +/TT10 1 Tf +12.4001 0 TD +0 Tw +(NCHARS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1022 Tw +[( \(see Chapter 2\) does )]TJ +/TT16 1 Tf +9.9608 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1022 Tw +[( specify how)]TJ +-39.5252 -1.2889 TD +0 Tw +(many bytes an expression takes to print, even ignoring line length considerations.)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETFILEPTR)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 238.6544 138 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 138 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0178 Tw +(Returns the current position of the file pointer for )Tj +/TT12 1 Tf +22.2596 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +(, i.e., the byte address at which the)Tj +-24.66 -1.2889 TD +0 Tw +(next input/output operation will commence.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETFILEPTR)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ADR)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 257.107 87.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 87.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0411 Tw +(Sets the file pointer for )Tj +/TT12 1 Tf +10.4849 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( to the position )]TJ +/TT12 1 Tf +7.0307 0 TD +0 Tw +(ADR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +(; returns )Tj +/TT12 1 Tf +4.0363 0 TD +0 Tw +(ADR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[(. The special value )]TJ +/TT12 1 Tf +8.8472 0 TD +0 Tw +(ADR)Tj +/TT10 1 Tf +1.8003 0 TD +(=-1)Tj +/TT8 1 Tf +-38.2003 -1.2889 TD +(is interpreted to mean the address of the end of file.)Tj +ET +endstream +endobj +61 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +63 0 obj +<< +/Length 8986 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-17)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +[(Note: )-1317.9(If a file is opened for output only, the end of file is initially zero, even if)]TJ +4 -1.2222 TD +(an old file by the same name had existed \(see )Tj +/TT10 1 Tf +20.1836 0 TD +(OPENSTREAM)Tj +/TT8 1 Tf +6.001 0 TD +(, Chapter)Tj +-26.1846 -1.2889 TD +(24\). If a file is opened for both input and output, the initial file pointer)Tj +0 -1.2222 TD +(is the beginning of the file, but )Tj +/TT10 1 Tf +13.7173 0 TD +(\(SETFILEPTR)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(-1\))Tj +/TT8 1 Tf +1.8003 0 TD +( sets it to the)Tj +-25.019 -1.2889 TD +(end of the file. If the file had been opened in append mode by)Tj +/TT10 1 Tf +0 -1.2222 TD +(\(OPENSTREAM)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(APPEND\))Tj +/TT8 1 Tf +4.8008 0 TD +(, the file pointer right after opening)Tj +-14.3022 -1.2889 TD +(would be set to the end of the existing file, in which case a )Tj +/TT10 1 Tf +25.9053 0 TD +(SETFILEPTR)Tj +/TT8 1 Tf +-25.9053 -1.2889 TD +(to position the file at the end would be unnecessary.)Tj +/TT10 1 Tf +-10.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETEOFPTR)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 185.2544 467.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 467.8 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0267 Tw +[(Returns the byte address of the end of file, i.e., the number of bytes in the file. Equivalent)]TJ +0 -1.2222 TD +0.0689 Tw +(to performing )Tj +/TT10 1 Tf +6.5709 0 TD +0 Tw +(\(SETFILEPTR)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.3189 0 TD +(FILE)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.3189 0 TD +(-1\))Tj +/TT8 1 Tf +1.8003 0 TD +0.0689 Tw +[( and returning )]TJ +/TT10 1 Tf +6.859 0 TD +0 Tw +(\(GETFILEPTR)Tj +/TT18 1 Tf +6.6011 0 TD +( )Tj +/TT12 1 Tf +0.3189 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0689 Tw +[( except that)]TJ +-34.7899 -1.2889 TD +0 Tw +(it does not change the current file pointer.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RANDACCESSP)Tj +/TT18 1 Tf +6.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27119.5([Function])]TJ +-7.7838 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7993 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0722 Tw +[( if )]TJ +/TT12 1 Tf +1.2685 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0722 Tw +[( is randomly accessible, )]TJ +/TT10 1 Tf +10.9461 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0722 Tw +[( otherwise. The file )]TJ +/TT10 1 Tf +9.2849 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0722 Tw +[( is not randomly)]TJ +-32.5 -1.2889 TD +0.0622 Tw +(accessible, nor are certain network file connections in Interlisp-D. )Tj +/TT12 1 Tf +29.9289 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0622 Tw +[( must be open or)]TJ +-32.3293 -1.2889 TD +0 Tw +(an error is generated, )Tj +/TT10 1 Tf +9.6641 0 TD +(FILE NOT OPEN)Tj +/TT8 1 Tf +7.8013 0 TD +(.)Tj +/TT10 1 Tf +-20.132 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(COPYBYTES)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(SRCFIL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DSTFIL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(START)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(END)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 278.4185 344.86 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 344.86 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1256 Tw +(Copies bytes from )Tj +/TT12 1 Tf +8.6716 0 TD +0 Tw +(SRCFIL)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +[( to )]TJ +/TT12 1 Tf +1.6232 0 TD +0 Tw +(DSTFIL)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +(, starting from position )Tj +/TT12 1 Tf +10.9163 0 TD +0 Tw +(START)Tj +/TT8 1 Tf +3.0005 0 TD +0.1256 Tw +[( and up to but not)]TJ +-31.4127 -1.2889 TD +0 Tw +(including position )Tj +/TT12 1 Tf +8.3579 0 TD +(END)Tj +/TT8 1 Tf +1.8003 0 TD +(. Both )Tj +/TT12 1 Tf +3.0649 0 TD +(SRCFIL)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT12 1 Tf +2.1929 0 TD +(DSTFIL)Tj +/TT8 1 Tf +3.6006 0 TD +( must be open. Returns )Tj +/TT10 1 Tf +10.7031 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-33.9204 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.0021 0 TD +(END)Tj +/TT10 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT12 1 Tf +0.5822 0 TD +(START)Tj +/TT8 1 Tf +3.0005 0 TD +0.0822 Tw +[( is interpreted as the number of bytes to copy \(starting at the current)]TJ +-8.7855 -1.2889 TD +0 Tw +(position\). If )Tj +/TT12 1 Tf +5.6099 0 TD +(START)Tj +/TT8 1 Tf +3.0005 0 TD +( is also )Tj +/TT10 1 Tf +3.2256 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, bytes are copied until the end of the file is reached.)Tj +-13.6362 -2.0667 TD +0.0044 Tw +(Warning: )Tj +/TT10 1 Tf +4.6651 0 TD +0 Tw +(COPYBYTES)Tj +/TT8 1 Tf +5.4009 0 TD +0.0001 Tc +0.0043 Tw +( does not take any account of multi-byte NS characters \(see Chapter)Tj +-10.066 -1.2889 TD +0 Tc +0.0011 Tw +(2\). )Tj +/TT10 1 Tf +1.5852 0 TD +0 Tw +(COPYCHARS)Tj +/TT8 1 Tf +5.4009 0 TD +0.0011 Tw +( \(below\) should be used whenever copying information that might include)Tj +-6.9861 -1.2889 TD +0 Tw +(NS characters.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(COPYCHARS)Tj +/TT4 1 Tf +10 0 0 10 156 222.32 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 158.7783 222.32 Tm +(SRCFIL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DSTFIL)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(START)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(END)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 278.9468 222.32 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 222.32 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.3448 0 TD +(COPYBYTES)Tj +/TT8 1 Tf +5.4009 0 TD +0.1578 Tw +[( except that it copies NS characters \(see Chapter 2\), and performs the)]TJ +-7.7457 -1.2889 TD +0.0278 Tw +(proper conversion if the end-of-line conventions of )Tj +/TT12 1 Tf +22.9317 0 TD +0 Tw +(SRCFIL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( and )]TJ +/TT12 1 Tf +2.2484 0 TD +0 Tw +(DSTFIL)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( are not the same)]TJ +-32.3813 -1.2889 TD +0.12 Tw +(\(see Chapter 24\). )Tj +/TT12 1 Tf +8.3701 0 TD +0 Tw +(START)Tj +/TT8 1 Tf +3.0005 0 TD +0.12 Tw +[( and )]TJ +/TT12 1 Tf +2.4329 0 TD +0 Tw +(END)Tj +/TT8 1 Tf +1.8003 0 TD +0.12 Tw +[( are interpreted the same as with )]TJ +/TT10 1 Tf +15.5583 0 TD +0 Tw +(COPYBYTES)Tj +/TT8 1 Tf +5.4009 0 TD +0.12 Tw +(, i.e., as)Tj +-36.5629 -1.2889 TD +0.1678 Tw +(byte \(not character\) specifications in )Tj +/TT12 1 Tf +17.0371 0 TD +0 Tw +(SRCFIL)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +[(. The number of bytes actually output to)]TJ +/TT12 1 Tf +-20.6377 -1.2889 TD +0 Tw +(DSTFIL)Tj +/TT8 1 Tf +3.6006 0 TD +0.1478 Tw +[( might be more or less than the number of bytes specified by )]TJ +/TT12 1 Tf +28.8547 0 TD +0 Tw +(START)Tj +/TT8 1 Tf +3.0005 0 TD +0.1478 Tw +[( and )]TJ +/TT12 1 Tf +2.4884 0 TD +0 Tw +(END)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.7445 -1.2889 TD +0.1678 Tw +[(depending on what the end-of-line conventions are. In the case where the end-of-line)]TJ +0 -1.2222 TD +0 Tw +(conventions happen to be the same, )Tj +/TT10 1 Tf +16.0391 0 TD +(COPYCHARS)Tj +/TT8 1 Tf +5.4009 0 TD +( simply calls )Tj +/TT10 1 Tf +5.7456 0 TD +(COPYBYTES)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-35.2531 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FILEPOS)Tj +/TT18 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STR )Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(START)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(END)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(SKIP)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TAIL)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CASEARRAY)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 344.5799 113.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 113.78 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0844 Tw +(Analogous to )Tj +/TT10 1 Tf +6.3666 0 TD +0 Tw +(STRPOS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +[( \(see Chapter 4\), but searches a file rather than a string. )]TJ +/TT10 1 Tf +25.8326 0 TD +0 Tw +(FILEPOS)Tj +/TT8 1 Tf +-35.7999 -1.2889 TD +(searches )Tj +/TT12 1 Tf +4.0721 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0956 Tw +[( for the string )]TJ +/TT12 1 Tf +6.6176 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0956 Tw +(. Search begins at )Tj +/TT12 1 Tf +8.2685 0 TD +0 Tw +(START)Tj +/TT8 1 Tf +3.0005 0 TD +0.0956 Tw +[( \(or the current position of the)]TJ +-26.1593 -1.2889 TD +0.0878 Tw +(file pointer, if )Tj +/TT12 1 Tf +6.5016 0 TD +0 Tw +(START)Tj +/TT10 1 Tf +3.0005 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +(\), and goes to )Tj +/TT12 1 Tf +6.5039 0 TD +0 Tw +(END)Tj +/TT8 1 Tf +1.8003 0 TD +0.0878 Tw +[( \(or the end of )]TJ +/TT12 1 Tf +6.9008 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +(, if )Tj +/TT12 1 Tf +1.5496 0 TD +0 Tw +(END)Tj +/TT10 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0878 Tw +[(\). Returns)]TJ +-35.2582 -1.2889 TD +0 Tw +(the address of the start of the match, or )Tj +/TT10 1 Tf +17.5098 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( if not found.)Tj +ET +endstream +endobj +64 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +66 0 obj +<< +/Length 6718 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +(SKIP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0043 Tw +( can be used to specify a character which matches any character in the file. If )Tj +/TT12 1 Tf +34.2133 0 TD +0 Tc +0 Tw +(TAIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0015 Tc +0.0029 Tw +( is)Tj +/TT10 1 Tf +-39.014 -1.2889 TD +0 Tc +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1944 Tw +(, and the search is successful, the value is the address of the first character )Tj +/TT16 1 Tf +35.7243 0 TD +0 Tw +(after)Tj +/TT8 1 Tf +1.833 0 TD +0.1944 Tw +[( the)]TJ +-38.1574 -1.2889 TD +0.3011 Tw +(sequence of characters corresponding to )Tj +/TT12 1 Tf +19.4968 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.3011 Tw +(, instead of the starting address of the)Tj +-21.2971 -1.2889 TD +0.0256 Tw +[(sequence. In either case, the file is left so that the next i/o operation begins at the address)]TJ +0 -1.2222 TD +0 Tw +(returned as the value of )Tj +/TT10 1 Tf +10.748 0 TD +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT12 1 Tf +-14.9487 -2.0667 TD +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.27 Tw +[( should be a "case array" that specifies that certain characters should be)]TJ +-5.4009 -1.2889 TD +0.5133 Tw +[(transformed to other characters before matching. Case arrays are returned by)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.2233 Tw +[( or )]TJ +/TT10 1 Tf +1.8876 0 TD +0 Tw +(SEPRCASE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2233 Tw +[( below. )]TJ +/TT12 1 Tf +4.3731 0 TD +0 Tw +(CASEARRAY)Tj +/TT10 1 Tf +5.4009 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.2233 Tw +[( means no transformation will be)]TJ +-24.2636 -1.2889 TD +0 Tw +(performed.)Tj +0 -2 TD +0.0511 Tw +(A case array is an implementation-dependent object that is logically an array of character)Tj +0 -1.2222 TD +0.0156 Tw +(codes with one entry for each possible character. )Tj +/TT10 1 Tf +22.0746 0 TD +0 Tw +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0156 Tw +[( maps each character in the file)]TJ +-26.2753 -1.2889 TD +0 Tw +("through" )Tj +/TT12 1 Tf +4.867 0 TD +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.2844 Tw +[( in the sense that each character code is transformed into the)]TJ +-10.2678 -1.2889 TD +0.0767 Tw +(corresponding character code from )Tj +/TT12 1 Tf +16.0596 0 TD +0 Tw +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.0767 Tw +[( before matching. Thus if two characters)]TJ +-21.4605 -1.2889 TD +0.1233 Tw +(map into the same value, they are treated as equivalent by )Tj +/TT10 1 Tf +27.3396 0 TD +0 Tw +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1233 Tw +(. )Tj +/TT10 1 Tf +0.9967 0 TD +0 Tw +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.1233 Tw +[( and)]TJ +/TT10 1 Tf +-37.9378 -1.2889 TD +0 Tw +(SETCASEARRAY)Tj +/TT8 1 Tf +7.2012 0 TD +( provide an implementation-independent interface to case arrays. )Tj +-7.2012 -2.0667 TD +0.1022 Tw +(For example, to search without regard to upper and lower case differences, )Tj +/TT12 1 Tf +34.5983 0 TD +0 Tw +(CASEARRAY)Tj +/TT8 1 Tf +-34.5983 -1.2889 TD +0.2144 Tw +(would be a case array where all characters map to themselves, except for lower case)Tj +0 -1.2222 TD +0.0367 Tw +[(characters, whose corresponding elements would be the upper case characters. To search)]TJ +T* +0.1133 Tw +(for a delimited atom, one could use " )Tj +/TT12 1 Tf +17.4257 0 TD +0 Tw +(ATOM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1133 Tw +[( " as the pattern, and specify a case array in)]TJ +-19.8261 -1.2889 TD +0 Tw +(which all of the break and separator characters mapped into the same code as space.)Tj +-5.3333 -2.8889 TD +0.3167 Tw +(For applications calling for extensive file searches, the function )Tj +/TT10 1 Tf +30.829 0 TD +0 Tw +(FFILEPOS)Tj +/TT8 1 Tf +4.8008 0 TD +0.3167 Tw +[( is often faster than)]TJ +/TT10 1 Tf +-35.6298 -1.2889 TD +0 Tw +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT10 1 Tf +-1.534 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FFILEPOS)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PATTERN)Tj +/TT16 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(START)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(END)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(SKIP)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TAIL)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CASEARRAY)Tj +/TT10 1 Tf +5.4009 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 414.1825 271.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 271.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.2237 0 TD +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0367 Tw +(, except much faster in most applications. )Tj +/TT10 1 Tf +19.056 0 TD +0 Tw +(FFILEPOS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0367 Tw +[( is an implementation)]TJ +-30.2812 -1.2889 TD +0.2511 Tw +[(of the Boyer-Moore fast string searching algorithm. This algorithm preprocesses the)]TJ +0 -1.2222 TD +0.1689 Tw +(string being searched for and then scans through the file in steps usually equal to the)Tj +T* +0.0001 Tc +0.0021 Tw +(length of the string. Thus, )Tj +/TT10 1 Tf +11.8918 0 TD +0 Tc +0 Tw +(FFILEPOS)Tj +/TT8 1 Tf +4.8008 0 TD +0.0022 Tw +( speeds up roughly in proportion to the length of the)Tj +-16.6925 -1.2889 TD +0.0933 Tw +(string, e.g., a string of length 10 will be found twice as fast as a string of length 5 in the)Tj +0 -1.2222 TD +0 Tw +(same position.)Tj +0 -2 TD +0.0089 Tw +(Because of certain fixed overheads, it is generally better to use )Tj +/TT10 1 Tf +27.7418 0 TD +0 Tw +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0089 Tw +[( for short searches)]TJ +-31.9425 -1.2889 TD +0 Tw +(or short strings.)Tj +/TT10 1 Tf +-2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(CASEARRAY)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(OLDARRAY)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 254.8579 146.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 146.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0722 Tw +(Creates and returns a new case array, with all elements set to themselves, to indicate the)Tj +0 -1.2222 TD +0 Tw +(identity mapping. If )Tj +/TT12 1 Tf +9.3965 0 TD +(OLDARRAY)Tj +/TT8 1 Tf +4.8008 0 TD +( is given, it is reused.)Tj +/TT10 1 Tf +-16.8639 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETCASEARRAY)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CASEARRAY)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FROMCODE)Tj +/TT16 1 Tf +4.8008 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TOCODE)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 356.5711 95.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 95.92 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.2656 Tw +(Modifies the case array )Tj +/TT12 1 Tf +11.5627 0 TD +0 Tw +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +0.2656 Tw +[( so that character code )]TJ +/TT12 1 Tf +11.4264 0 TD +0 Tw +(FROMCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2656 Tw +[( is mapped to)]TJ +-33.1908 -1.2889 TD +0 Tw +(character code )Tj +/TT12 1 Tf +6.6445 0 TD +(TOCODE)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +ET +endstream +endobj +67 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +69 0 obj +<< +/Length 5709 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-19)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 102 568.2 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETCASEARRAY)Tj +/TT8 1 Tf +7.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CASEARRAY)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FROMCODE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 273.9158 568.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns the character code that )Tj +/TT12 1 Tf +13.9932 0 TD +(FROMCODE)Tj +/TT8 1 Tf +4.8008 0 TD +( is mapped to in )Tj +/TT12 1 Tf +7.3848 0 TD +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-34.2463 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SEPRCASE)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CLFLG)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 185.2552 528.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 528.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1044 Tw +(Returns a new case array suitable for use by )Tj +/TT10 1 Tf +20.6114 0 TD +0 Tw +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1044 Tw +[( or )]TJ +/TT10 1 Tf +1.6498 0 TD +0 Tw +(FFILEPOS)Tj +/TT8 1 Tf +4.8008 0 TD +0.1044 Tw +[( in which all of the)]TJ +-31.2627 -1.2889 TD +0.0967 Tw +(break/separators of )Tj +/TT10 1 Tf +9.2514 0 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.0967 Tw +[( are mapped into character code zero. If )]TJ +/TT12 1 Tf +18.8983 0 TD +0 Tw +(CLFLG)Tj +/TT8 1 Tf +3.0005 0 TD +0.0967 Tw +[( is non-)]TJ +/TT10 1 Tf +-36.5511 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[(, then all CLISP characters are mapped into this character as well. This is useful for)]TJ +-1.8003 -1.2889 TD +0.02 Tw +[(finding a delimited atom in a file. For example, if )]TJ +/TT12 1 Tf +22.3699 0 TD +0 Tw +(PATTERN)Tj +/TT8 1 Tf +4.2007 0 TD +0.02 Tw +[( is )]TJ +/TT10 1 Tf +1.2548 0 TD +0.0478 Tw +(" FOO ")Tj +/TT8 1 Tf +4.2962 0 TD +0.02 Tw +(, and )Tj +/TT10 1 Tf +2.4829 0 TD +0 Tw +(\(SEPRCASE)Tj +-34.6045 -1.2889 TD +(T\))Tj +/TT8 1 Tf +1.2002 0 TD +( is used for )Tj +/TT12 1 Tf +5.1055 0 TD +(CASEARRAY)Tj +/TT8 1 Tf +5.4009 0 TD +(, then )Tj +/TT10 1 Tf +2.7192 0 TD +(FILEPOS)Tj +/TT8 1 Tf +4.2007 0 TD +( will find )Tj +/TT10 1 Tf +4.2739 0 TD +("\(FOO_")Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +/TT14 1 Tf +-29.7677 -2.5489 TD +(UPPERCASEARRAY)Tj +/TT6 1 Tf +10 0 0 10 177.6 442.72 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 446.41 442.72 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.5144 Tw +(Value is a case array in which every lowercase character is mapped into the)Tj +0 -1.2222 TD +0 Tw +(corresponding uppercase character. Useful for searching text files.)Tj +/TT4 1 Tf +10 0 0 10 54 372.78 Tm +(Input/Output Operations with Characters and Bytes)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 370.07 m +510.01 370.07 l +S +BT +/TT8 1 Tf +9 0 0 9 78 348.12 Tm +0.08 Tw +[(Interlisp-D supports the 16-bit NS character set \(see Chapter 2\). All of the standard string and print)]TJ +T* +0.0844 Tw +[(name functions accept litatoms and strings containing NS characters. In almost all cases, a program)]TJ +T* +0.0833 Tw +[(does not have to distinguish between NS characters or 8-bit characters. The exception to this rule is)]TJ +T* +0 Tw +(the handling of input/output operations.)Tj +0 -2.8889 TD +0.0322 Tw +[(Interlisp-D uses two ways of writing 16-bit NS characters on files. One way is to write the full 16-bits)]TJ +0 -1.2222 TD +0.1267 Tw +[(\(two bytes\) every time a character is output. The other way is to use "run-encoding." Each 16 NS)]TJ +T* +0.1778 Tw +(character can be decoded into a character set \(an integer from 0 to 254 inclusive\) and a character)Tj +T* +0.1378 Tw +[(number \(also an integer from 0 to 254 inclusive\). In run-encoding, the byte 255 \(illegal as either a)]TJ +T* +0.09 Tw +(character set number or a character number\) is used to signal a change to a given character set, and)Tj +T* +0.2133 Tw +(the following bytes are all assumed to come from the same character set \(until the next change-)Tj +T* +0.0444 Tw +[(character set sequence\). Run-encoding can reduce the number of bytes required to encode a string of)]TJ +T* +0.0767 Tw +(NS characters, as long as there are long sequences of characters from the same character set \(usually)Tj +T* +0 Tw +(the case\).)Tj +/TT16 1 Tf +0 -2.8889 TD +0.1167 Tw +(Note that characters are not the same as bytes.)Tj +/TT8 1 Tf +19.5134 0 TD +[( A single character can take anywhere from one to four)]TJ +-19.5134 -1.2222 TD +0.15 Tw +(bytes bytes, depending on whether it is in the same character set as the preceeding character, and)Tj +T* +0.0389 Tw +[(whether run-encoding is enabled. Programs which assume that characters are equal to bytes must be)]TJ +T* +0 Tw +(changed to work with NS characters.)Tj +0 -2.8889 TD +0.04 Tw +(The functions )Tj +/TT10 1 Tf +6.3847 0 TD +0 Tw +(BIN)Tj +/TT8 1 Tf +1.8003 0 TD +0.04 Tw +[( and )]TJ +/TT10 1 Tf +2.2729 0 TD +0 Tw +(BOUT)Tj +/TT8 1 Tf +2.4004 0 TD +0.04 Tw +[( \(see above\) should only be used to read and write single eight-bit bytes.)]TJ +-12.8582 -1.2889 TD +0.1811 Tw +(The functions )Tj +/TT10 1 Tf +6.6669 0 TD +0 Tw +(READCCODE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1811 Tw +[( and )]TJ +/TT10 1 Tf +2.5551 0 TD +0 Tw +(PRINTCCODE)Tj +/TT8 1 Tf +6.001 0 TD +0.1811 Tw +[( \(see above\) should be used to read and write single)]TJ +-20.6239 -1.2889 TD +0.1222 Tw +(character codes, interpreting run-encoded NS characters. )Tj +/TT10 1 Tf +26.4869 0 TD +0 Tw +(COPYBYTES)Tj +/TT8 1 Tf +5.4009 0 TD +0.1222 Tw +[( should only be used to copy)]TJ +-31.8878 -1.2889 TD +0.1767 Tw +(blocks of 8-bit data; )Tj +/TT10 1 Tf +9.59 0 TD +0 Tw +(COPYCHARS)Tj +/TT8 1 Tf +5.4009 0 TD +0.1767 Tw +[( should be used to copy characters. Most I/O functions \()]TJ +/TT10 1 Tf +27.0913 0 TD +0 Tw +(READC)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +/TT10 1 Tf +-45.0826 -1.2889 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(, etc.\) read or write 16-bit NS characters.)Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +72 0 obj +<< +/Length 6401 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0522 Tw +(The use of NS characters has serious consequences for any program that uses file pointers to access a)Tj +0 -1.2222 TD +0.1022 Tw +[(file in a random access manner. At any point when a file is being read or written, it has a "current)]TJ +T* +0.12 Tw +[(character set." If the file pointer is changed with )]TJ +/TT10 1 Tf +22.7884 0 TD +0 Tw +(SETFILEPTR)Tj +/TT8 1 Tf +6.001 0 TD +0.12 Tw +[( to a part of the file with a different)]TJ +-28.7894 -1.2889 TD +0.0389 Tw +[(character set, any characters read or written may have the wrong character set. The current character)]TJ +0 -1.2222 TD +0 Tw +(set can be accessed with the following function:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(CHARSET)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STREAM)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CHARACTERSET)Tj +/TT10 1 Tf +7.2012 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 300.3167 502.6 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 502.6 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.12 Tw +(Returns the current character set of the stream )Tj +/TT12 1 Tf +21.6153 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.12 Tw +[(. If )]TJ +/TT12 1 Tf +2.0299 0 TD +0 Tw +(CHARACTERSET)Tj +/TT8 1 Tf +7.2012 0 TD +0.12 Tw +[( is non-)]TJ +/TT10 1 Tf +3.4978 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.7451 -1.2889 TD +0.0867 Tw +(the current character set for )Tj +/TT12 1 Tf +12.8625 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0867 Tw +[( is set. Note that for output streams this may cause)]TJ +-16.4631 -1.2889 TD +0 Tw +(bytes to be written to the stream.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +1.021 0 TD +(CHARACTERSET)Tj +/TT8 1 Tf +7.2012 0 TD +0.1011 Tw +[( is )]TJ +/TT10 1 Tf +1.4171 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1011 Tw +(, run encoding for )Tj +/TT12 1 Tf +8.5993 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( is disabled: both the character set and)]TJ +-22.4392 -1.2889 TD +0.1622 Tw +(the character number \(two bytes total\) will be written to the stream for each character)Tj +0 -1.2222 TD +0 Tw +(printed. )Tj +/TT4 1 Tf +10 0 0 10 102 379.86 Tm +(PRINTOUT)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 377.15 m +558.01 377.15 l +S +BT +/TT8 1 Tf +9 0 0 9 126 355.2 Tm +0.0944 Tw +[(Interlisp provides many facilities for controlling the format of printed output. By executing various)]TJ +T* +0.0122 Tw +(sequences of )Tj +/TT10 1 Tf +5.877 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(SPACES)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5122 0 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0122 Tw +(, and )Tj +/TT10 1 Tf +2.4673 0 TD +0 Tw +(PRINTDEF)Tj +/TT8 1 Tf +4.8008 0 TD +0.0122 Tw +(, almost any effect can)Tj +-35.5094 -1.2889 TD +0.1789 Tw +(be achieved. )Tj +/TT10 1 Tf +6.5196 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.1789 Tw +[( implements a compact language for specifying complicated sequences of)]TJ +-11.3204 -1.2889 TD +[(these elementary printing functions. It makes fancy output formats easy to design and simple to)]TJ +0 -1.2222 TD +0 Tw +(program.)Tj +/TT10 1 Tf +0 -2.8889 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.11 Tw +[( is a CLISP word \(like )]TJ +/TT10 1 Tf +10.4964 0 TD +0 Tw +(FOR)Tj +/TT8 1 Tf +1.8003 0 TD +0.11 Tw +[( and )]TJ +/TT10 1 Tf +2.4129 0 TD +0 Tw +(IF)Tj +/TT8 1 Tf +1.2002 0 TD +0.11 Tw +(\) for interpreting a special printing language in which)Tj +-20.7106 -1.2889 TD +0.1967 Tw +[(you can describe the kinds of printing desired. The description is translated by )]TJ +/TT10 1 Tf +37.976 0 TD +0 Tw +(DWIMIFY)Tj +/TT8 1 Tf +4.2007 0 TD +0.1967 Tw +[( to the)]TJ +-42.1767 -1.2889 TD +0.17 Tw +(appropriate sequence of )Tj +/TT10 1 Tf +11.4241 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.67 0 TD +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.17 Tw +(, etc., before it is evaluated or compiled. )Tj +/TT10 1 Tf +19.5866 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.17 Tw +[( printing)]TJ +-41.2823 -1.2889 TD +0 Tw +(descriptions have the following general form:)Tj +/TT10 1 Tf +9.3333 -2.8889 TD +(\(PRINTOUT)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(STREAM)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PRINTCOM)Tj +4.7985 -0.3333 TD +(1)Tj +/TT18 1 Tf +0.6 0.3333 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(...)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PRINTCOM)Tj +4.7997 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +(\))Tj +/TT12 1 Tf +-31.9333 -3.2889 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0433 Tw +[( is evaluated to obtain the stream to which the output from this specification is directed. The)]TJ +/TT10 1 Tf +-3.6006 -1.2889 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.1722 Tw +[( commands are strung together, one after the other without punctuation, after )]TJ +/TT12 1 Tf +36.6897 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-45.0911 -1.2889 TD +0.0744 Tw +(Some commands occupy a single position in this list, but many commands expect to find arguments)Tj +0 -1.2222 TD +0.0089 Tw +[(following the command name in the list. The commands fall into several logical groups: one set deals)]TJ +T* +0.4322 Tw +(with horizontal and vertical spacing, another group provides controls for certain formatting)Tj +T* +0.2244 Tw +(capabilities \(font changes and subscripting\), while a third set is concerned with various ways of)Tj +T* +0.0211 Tw +[(actually printing items. Finally, there is a command that permits escaping to a simple Lisp evaluation)]TJ +T* +0.18 Tw +(in the middle of a )Tj +/TT10 1 Tf +8.9547 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.18 Tw +[( form. The various commands are described below. The following)]TJ +-13.7555 -1.2889 TD +0 Tw +(examples give a general flavor of how )Tj +/TT10 1 Tf +17.0669 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +( is used:)Tj +/TT18 1 Tf +-21.8677 -2.9556 TD +0.0611 Tw +(Example 1)Tj +/TT8 1 Tf +4.755 0 TD +[(: Suppose you want to print out on the terminal the values of three variables, )]TJ +/TT10 1 Tf +35.3957 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5611 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0611 Tw +(, and )Tj +/TT10 1 Tf +2.5651 0 TD +0 Tw +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +(,)Tj +-45.0772 -1.2889 TD +(separated by spaces and followed by a carriage return. This could be done by:)Tj +ET +endstream +endobj +73 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +75 0 obj +<< +/Length 4399 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-21)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 126 570.14 Tm +(\(PRIN1 X T\))Tj +4 -1.2222 TD +(\(SPACES 1 T\))Tj +T* +(\(PRIN1 Y T\))Tj +T* +(\(SPACES 1 T\))Tj +T* +(\(PRIN1 Z T\))Tj +T* +(\(TERPRI T\))Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +(or by the more concise )Tj +/TT10 1 Tf +10.1997 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +( form:)Tj +/TT10 1 Tf +-9.6672 -2.8889 TD +(\(PRINTOUT T X , Y , Z T\))Tj +/TT8 1 Tf +-5.3333 -2.9556 TD +0.0178 Tw +(Here the first )Tj +/TT10 1 Tf +6.1446 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( specifies output to the terminal, the commas cause single spaces to be printed, and the)]TJ +-6.7447 -1.2889 TD +0 Tw +(final )Tj +/TT10 1 Tf +2.3248 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0778 Tw +[( specifies a )]TJ +/TT10 1 Tf +5.249 0 TD +0 Tw +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +0.0778 Tw +[(. The variable names are not recognized as special )]TJ +/TT10 1 Tf +23.3081 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.0778 Tw +[( commands,)]TJ +-39.8833 -1.2889 TD +0 Tw +(so they are printed using )Tj +/TT10 1 Tf +11.2783 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +( by default.)Tj +/TT18 1 Tf +-14.2788 -2.9556 TD +0.0667 Tw +(Example 2)Tj +/TT8 1 Tf +4.7605 0 TD +[(: Suppose the values of )]TJ +/TT10 1 Tf +11.0567 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( and )]TJ +/TT10 1 Tf +2.3262 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( are to be pretty-printed lined up at position 10, preceded)]TJ +-19.3437 -1.2889 TD +0 Tw +(by identifying strings. If the output is to go to the primary output stream, you could write either:)Tj +/TT10 1 Tf +5.3333 -2.8222 TD +(\(PRIN1 "X ="\))Tj +4 -1.2222 TD +(\(PRINTDEF X 10 T\))Tj +T* +(\(TERPRI \))Tj +T* +(\(PRIN1 "Y ="\))Tj +T* +(\(PRINTDEF Y 10 T\))Tj +T* +(\(TERPRI\))Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +(or the equivalent:)Tj +/TT10 1 Tf +5.3333 -2.8222 TD +(\(PRINTOUT NIL "X =" 10 .PPV X T)Tj +4 -1.2222 TD +( "Y =" 10 .PPV Y T\))Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +0.0678 Tw +(Since strings are not recognized as special commands, )Tj +/TT10 1 Tf +24.6477 0 TD +0.1622 Tw +("X =")Tj +/TT8 1 Tf +3.1627 0 TD +0.0678 Tw +[( is also printed with )]TJ +/TT10 1 Tf +9.3828 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0678 Tw +[( by default.)]TJ +-40.1937 -1.2889 TD +0.0578 Tw +(The positive integer means )Tj +/TT10 1 Tf +12.404 0 TD +0 Tw +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.0578 Tw +[( to position 10, where the )]TJ +/TT10 1 Tf +11.7319 0 TD +0 Tw +(.PPV)Tj +/TT8 1 Tf +2.4004 0 TD +0.0578 Tw +[( command causes the value of )]TJ +/TT10 1 Tf +13.8725 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0578 Tw +[( to be)]TJ +-42.8092 -1.2889 TD +0.0533 Tw +[(prettyprinted as a variable. By convention, special atoms used as )]TJ +/TT10 1 Tf +29.6624 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.0533 Tw +[( commands are prefixed)]TJ +-34.4631 -1.2889 TD +0 Tw +(with a period. The )Tj +/TT10 1 Tf +8.6299 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( causes a carriage return, so the )Tj +/TT10 1 Tf +14.0708 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( information is printed on the next line.)Tj +/TT18 1 Tf +-23.9009 -2.9556 TD +0.1644 Tw +(Example 3)Tj +/TT8 1 Tf +4.8583 0 TD +[(. As a final example, suppose that the value of )]TJ +/TT10 1 Tf +22.6229 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1644 Tw +[( is an integer and the value of )]TJ +/TT10 1 Tf +14.6178 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.1644 Tw +[( is a)]TJ +-43.2991 -1.2889 TD +0.0622 Tw +(floating-point number. )Tj +/TT10 1 Tf +10.7863 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0622 Tw +[( is to be printed right-flushed in a field of width 5 beginning at position 15,)]TJ +-11.3864 -1.2889 TD +0 Tw +(and )Tj +/TT10 1 Tf +1.9718 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +[( is to be printed in a field of width 10 also starting at position 15 with 2 places to the right of the)]TJ +-2.5719 -1.2889 TD +0.1 Tw +[(decimal point. Furthermore, suppose that the variable names are to appear in the font class named)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(BOLDFONT)Tj +/TT8 1 Tf +4.8008 0 TD +0.12 Tw +[( and the values in font class )]TJ +/TT10 1 Tf +13.2746 0 TD +0 Tw +(SMALLFONT)Tj +/TT8 1 Tf +5.4009 0 TD +0.12 Tw +[(. The program in ordinary Interlisp that would)]TJ +-23.4762 -1.2889 TD +0 Tw +(accomplish these effects is too complicated to include here. With )Tj +/TT10 1 Tf +28.9688 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +(, one could write:)Tj +/TT10 1 Tf +-28.4362 -2.8889 TD +(\(PRINTOUT NIL)Tj +4 -1.2222 TD +( .FONT BOLDFONT "X =" 15)Tj +ET +endstream +endobj +76 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +79 0 obj +<< +/Length 6911 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-22)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 210 570.14 Tm +( .FONT SMALLFONT .I5 X T)Tj +0 -1.2222 TD +( .FONT BOLDFONT "Y =" 15)Tj +T* +( .FONT SMALLFONT .F10.2 Y T)Tj +T* +( .FONT BOLDFONT\))Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +(The )Tj +/TT10 1 Tf +1.9294 0 TD +(.FONT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0056 Tw +[( commands do whatever is necessary to change the font on a multi-font output device. The)]TJ +/TT10 1 Tf +-4.9299 -1.2889 TD +0 Tw +(.I5)Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +[( command sets up a )]TJ +/TT10 1 Tf +9.3718 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +1.8003 0 TD +0.0633 Tw +[( format for a call to the function )]TJ +/TT10 1 Tf +14.7557 0 TD +0 Tw +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0633 Tw +[( \(see above\) to print )]TJ +/TT10 1 Tf +9.325 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0633 Tw +[( in the)]TJ +-42.454 -1.2889 TD +0 Tw +(desired format. The )Tj +/TT10 1 Tf +9.1963 0 TD +(.F10.2)Tj +/TT8 1 Tf +3.6006 0 TD +( specifies a )Tj +/TT10 1 Tf +5.0156 0 TD +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +( format for )Tj +/TT10 1 Tf +5.0068 0 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 457.4 Tm +(Horizontal Spacing Commands)Tj +/TT8 1 Tf +9 0 0 9 126 433.74 Tm +0.2256 Tw +(The horizontal spacing commands provide convenient ways of calling )Tj +/TT10 1 Tf +33.2947 0 TD +0 Tw +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.2256 Tw +[( and )]TJ +/TT10 1 Tf +2.644 0 TD +0 Tw +(SPACES)Tj +/TT8 1 Tf +3.6006 0 TD +0.2256 Tw +[(. In the)]TJ +-41.3395 -1.2889 TD +0.0978 Tw +(following descriptions, )Tj +/TT16 1 Tf +10.6291 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.0978 Tw +[( stands for a literal positive integer \()]TJ +/TT16 1 Tf +16.6127 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0978 Tw +[( for a variable or expression whose)]TJ +-29.3527 -1.2222 TD +0 Tw +(value is an integer\).)Tj +/TT14 1 Tf +2.6667 -2.4822 TD +(N)Tj +/TT4 1 Tf +10 0 0 10 155.4009 388.8 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 158.1792 388.8 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(N)Tj +/TT4 1 Tf +10 0 0 10 168.9809 388.8 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 171.7593 388.8 Tm +(a number\) )Tj +/TT6 1 Tf +10 0 0 10 225.7681 388.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 388.8 Tm +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +0.0811 Tw +[(Used for absolute spacing. It results in a )]TJ +/TT10 1 Tf +18.8936 0 TD +0 Tw +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.0811 Tw +[( to position )]TJ +/TT16 1 Tf +5.4723 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.0811 Tw +[( \(literally, a )]TJ +/TT10 1 Tf +5.4968 0 TD +0 Tw +(\(TAB)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.3311 0 TD +(N)Tj +/TT10 1 Tf +0.6001 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0811 Tw +[(\). If the)]TJ +-36.3725 -1.2889 TD +0.1078 Tw +(line is currently at position )Tj +/TT16 1 Tf +12.6512 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.1078 Tw +[( or beyond, the file will be positioned at position )]TJ +/TT12 1 Tf +22.7462 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.1078 Tw +[( on the)]TJ +-36.7754 -1.2889 TD +0 Tw +(next line.)Tj +/TT14 1 Tf +-2.6667 -2.4822 TD +(.TAB)Tj +/TT18 1 Tf +2.4 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT6 1 Tf +10 0 0 10 190.0526 326.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 326.66 Tm +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +(Specifies )Tj +/TT10 1 Tf +4.12 0 TD +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +( to position \(the value of\) )Tj +/TT12 1 Tf +11.3691 0 TD +0 Tc +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0001 Tc +0.0032 Tw +(. This is one of several commands whose effect)Tj +-19.0897 -1.2889 TD +0 Tc +0.0067 Tw +[(could be achieved by simply escaping to Lisp, and executing the corresponding form. It is)]TJ +0 -1.2222 TD +0.2244 Tw +(provided as a separate command so that the )Tj +/TT10 1 Tf +21.5617 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.2244 Tw +[( form is more concise and is)]TJ +-26.3625 -1.2889 TD +0.2167 Tw +[(prettyprinted more compactly. Note that )]TJ +/TT10 1 Tf +19.8288 0 TD +0 Tw +(.TAB)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT16 1 Tf +0.4667 0 TD +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.2167 Tw +[( and )]TJ +/TT16 1 Tf +2.6262 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.2167 Tw +(, where )Tj +/TT16 1 Tf +3.9524 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.7778 0 TD +0.2167 Tw +[( is an integer, are)]TJ +-31.6079 -1.2889 TD +0 Tw +(equivalent.)Tj +/TT14 1 Tf +-2.6667 -2.4822 TD +(.TAB0)Tj +/TT18 1 Tf +3 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT6 1 Tf +10 0 0 10 195.4526 241.92 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 241.92 Tm +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.5903 0 TD +(.TAB)Tj +/TT8 1 Tf +2.4004 0 TD +0.4033 Tw +[( except that it can result in zero spaces \(i.e. the call to )]TJ +/TT10 1 Tf +28.7868 0 TD +0 Tw +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.4033 Tw +[( specifies)]TJ +/TT12 1 Tf +-35.5778 -1.2889 TD +0 Tw +(MINSPACES)Tj +/TT10 1 Tf +5.4009 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +(0\).)Tj +/TT14 1 Tf +-8.6676 -2.5489 TD +(-N)Tj +/TT4 1 Tf +10 0 0 10 160.8017 190.78 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 163.5801 190.78 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(N)Tj +/TT4 1 Tf +10 0 0 10 174.3818 190.78 Tm +( )Tj +/TT10 1 Tf +9 0 0 9 177.1601 190.78 Tm +(a number\))Tj +/TT6 1 Tf +10 0 0 10 225.7681 190.78 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 190.78 Tm +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +0.34 Tw +[(Negative integers indicate relative \(as opposed to absolute\) spacing. Translates as)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(\(SPACES)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT8 1 Tf +0.25 0 TD +(|)Tj +/TT12 1 Tf +0.606 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(|)Tj +/TT10 1 Tf +0.606 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 150 140.24 Tm +(,)Tj +/TT6 1 Tf +0.278 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 140.24 Tm +([PRINTOUT Command])Tj +/TT4 1 Tf +10 0 0 10 150 129.9 Tm +(,,)Tj +/TT6 1 Tf +0.556 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 129.9 Tm +([PRINTOUT Command])Tj +/TT4 1 Tf +10 0 0 10 150 119.56 Tm +(,,,)Tj +/TT6 1 Tf +0.834 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 119.56 Tm +([PRINTOUT Command])Tj +-29.1389 -1.7778 TD +0.1444 Tw +(\(1, 2 or 3 commas\) Provides a short-hand way of specifying 1, 2 or 3 spaces, i.e., these)Tj +0 -1.2222 TD +0 Tw +(commands are equivalent to )Tj +/TT10 1 Tf +12.7944 0 TD +(-1)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(-2)Tj +/TT8 1 Tf +1.2002 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(-3)Tj +/TT8 1 Tf +1.2002 0 TD +(, respectively.)Tj +/TT14 1 Tf +-22.0046 -2.4 TD +(.SP)Tj +/TT18 1 Tf +1.8 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(DISTANCE)Tj +/TT8 1 Tf +4.8008 0 TD +[( )-24454.8([PRINTOUT Command])]TJ +-4.1841 -1.8444 TD +0.0833 Tw +(Translates as )Tj +/TT10 1 Tf +6.1242 0 TD +0 Tw +(\(SPACES)Tj +/TT18 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.3333 0 TD +(DISTANCE)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[(. Note that )]TJ +/TT10 1 Tf +5.4998 0 TD +0 Tw +(.SP)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.3333 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[( and )]TJ +/TT10 1 Tf +2.3595 0 TD +0 Tw +(-)Tj +/TT12 1 Tf +0.6001 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +(, where )Tj +/TT12 1 Tf +3.6857 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0833 Tw +[( is an integer, are)]TJ +-32.1382 -1.2889 TD +0 Tw +(equivalent.)Tj +ET +endstream +endobj +80 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +82 0 obj +<< +/Length 4359 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-23)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT4 1 Tf +-33 -4.38 TD +(Vertical Spacing Commands)Tj +/TT8 1 Tf +9 0 0 9 78 544.54 Tm +(Vertical spacing is obtained by calling )Tj +/TT10 1 Tf +17.0137 0 TD +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +( or printing form-feeds. The relevant commands are:)Tj +/TT14 1 Tf +-17.9476 -2.4 TD +(T)Tj +/TT8 1 Tf +0.6 0 TD +[( )-30705.6([PRINTOUT Command])]TJ +2.0667 -1.8444 TD +0.1333 Tw +(Translates as )Tj +/TT10 1 Tf +6.2242 0 TD +0 Tw +(\(TERPRI\))Tj +/TT8 1 Tf +4.8008 0 TD +0.1333 Tw +[(, i.e., move to position 0 \(the first column\) of the next line. To)]TJ +-11.025 -1.2889 TD +0 Tw +(print the letter )Tj +/TT10 1 Tf +6.6289 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, use the string )Tj +/TT10 1 Tf +6.7173 0 TD +("T")Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT14 1 Tf +-18.4133 -2.4 TD +(.SKIP)Tj +/TT18 1 Tf +3 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LINES)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-25055.1([PRINTOUT Command])]TJ +-3.5838 -1.8444 TD +0.3211 Tw +(Equivalent to a sequence of )Tj +/TT12 1 Tf +13.9644 0 TD +0 Tw +(LINES)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT10 1 Tf +0.5711 0 TD +(\(TERPRI\))Tj +/TT8 1 Tf +4.8008 0 TD +0.3211 Tw +[(s. The )]TJ +/TT10 1 Tf +4.3388 0 TD +0 Tw +(.SKIP)Tj +/TT8 1 Tf +3.0005 0 TD +0.3211 Tw +[( command allows for)]TJ +-29.6761 -1.2889 TD +0 Tw +(skipping large constant distances and for computing the distance to be skipped.)Tj +/TT14 1 Tf +-2.6667 -2.3333 TD +(.PAGE)Tj +/TT8 1 Tf +3 0 TD +[( )-28305.6([PRINTOUT Command])]TJ +-0.3333 -1.8444 TD +0.12 Tw +[(Puts a form-feed \(Control-L\) out on the file. Care is taken to make sure that Interlisps)]TJ +0 -1.2222 TD +0 Tw +(view of the current line position is correctly updated.)Tj +/TT4 1 Tf +10 0 0 10 78 367 Tm +(Special Formatting Controls)Tj +/TT8 1 Tf +9 0 0 9 78 343.34 Tm +0.0367 Tw +(There are a small number of commands for invoking some of the formatting capabilities of multi-font)Tj +T* +0 Tw +(output devices. The available commands are:)Tj +/TT14 1 Tf +2.6667 -2.3333 TD +(.FONT)Tj +/TT18 1 Tf +3 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FONTSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +[( )-23254.8([PRINTOUT Command])]TJ +-5.3841 -1.8444 TD +0.0622 Tw +(Changes printing to the font )Tj +/TT12 1 Tf +13.064 0 TD +0 Tw +(FONTSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.0622 Tw +(, which can be a font descriptor, a "font list" such)Tj +-17.8648 -1.2889 TD +0 Tw +(as )Tj +/TT10 1 Tf +1.2416 0 TD +0.1622 Tw +(\(MODERN 10\))Tj +/TT8 1 Tf +7.3634 0 TD +0.0678 Tw +(, an image stream \(coerced to its current font\), or a windows \(coerced)Tj +-8.605 -1.2889 TD +0.0156 Tw +[(to the current font of its display stream\). The )]TJ +/TT10 1 Tf +20.3836 0 TD +0 Tw +(DSPFONT)Tj +/TT8 1 Tf +4.2007 0 TD +0.0156 Tw +[( is changed permanently. See fonts)]TJ +-24.5843 -1.2889 TD +0 Tw +(\(Chapter 27\) for more information.)Tj +/TT12 1 Tf +0 -2 TD +(FONTSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.0433 Tw +[( may also be a positive integer )]TJ +/TT12 1 Tf +13.9166 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0433 Tw +(, which is taken as an abbreviated reference to)Tj +-19.3175 -1.2889 TD +0 Tw +(the font class named )Tj +/TT10 1 Tf +9.3115 0 TD +(FONT)Tj +/TT16 1 Tf +2.4004 0 TD +(N)Tj +/TT8 1 Tf +0.7778 0 TD +( \(e.g. 1 =>)Tj +/TT10 1 Tf +4.3301 0 TD +( FONT1)Tj +/TT8 1 Tf +3.6006 0 TD +(\).)Tj +/TT14 1 Tf +-23.0871 -2.4 TD +(.SUP)Tj +/TT8 1 Tf +2.4 0 TD +[( )-28905.6([PRINTOUT Command])]TJ +0.2667 -1.8444 TD +0.2222 Tw +[(Specifies superscripting. All subsequent characters are printed above the base of the)]TJ +0 -1.2222 TD +0 Tw +(current line. Note that this is absolute, not relative: a )Tj +/TT10 1 Tf +23.874 0 TD +(.SUP)Tj +/TT8 1 Tf +2.4004 0 TD +( following a )Tj +/TT10 1 Tf +5.52 0 TD +(.SUP)Tj +/TT8 1 Tf +2.4004 0 TD +( is a no-op.)Tj +/TT14 1 Tf +-36.8615 -2.4 TD +(.SUB)Tj +/TT8 1 Tf +2.4 0 TD +[( )-28905.6([PRINTOUT Command])]TJ +0.2667 -1.8444 TD +0.0333 Tw +[(Specifies subscripting. Subsequent printing is below the base of the current line. As with)]TJ +0 -1.2222 TD +0 Tw +(superscripting, the effect is absolute.)Tj +/TT14 1 Tf +-2.6667 -2.3333 TD +(.BASE)Tj +/TT8 1 Tf +3 0 TD +[( )-28305.6([PRINTOUT Command])]TJ +-0.3333 -1.8444 TD +0.0511 Tw +[(Moves printing back to the base of the current line. Un-does a previous )]TJ +/TT10 1 Tf +32.6077 0 TD +0 Tw +(.SUP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( or )]TJ +/TT10 1 Tf +1.5431 0 TD +0 Tw +(.SUB)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +(; a)Tj +-38.9516 -1.2889 TD +0 Tw +(no-op, if printing is currently at the base.)Tj +ET +endstream +endobj +83 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +85 0 obj +<< +/Length 5843 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-24)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Printing Specifications)Tj +/TT8 1 Tf +9 0 0 9 126 544.54 Tm +0.09 Tw +(The value of any expression in a )Tj +/TT10 1 Tf +15.1188 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.09 Tw +[( form that is not recognized as a command itself or as a)]TJ +-19.9196 -1.2889 TD +(command argument is printed using )Tj +/TT10 1 Tf +16.9285 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.09 Tw +[( by default. For example, title strings can be printed by)]TJ +-19.929 -1.2889 TD +0.04 Tw +(simply including the string as a separate )Tj +/TT10 1 Tf +18.4162 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.04 Tw +[( command, and the values of variables and forms)]TJ +-23.217 -1.2889 TD +0.2133 Tw +[(can be printed in much the same way. Note that a literal integer, say 51, cannot be printed by)]TJ +0 -1.2222 TD +0.0622 Tw +(including it as a command, since it would be interpreted as a )Tj +/TT10 1 Tf +27.879 0 TD +0 Tw +(TAB)Tj +/TT8 1 Tf +1.8003 0 TD +0.0622 Tw +(; the desired effect can be obtained)Tj +-29.6793 -1.2889 TD +0 Tw +(by using instead the string specification "51", or the form )Tj +/TT10 1 Tf +25.2686 0 TD +(\(QUOTE 51\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-31.2695 -2.9556 TD +(For those instances when )Tj +/TT10 1 Tf +11.3889 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +( is not appropriate, e.g., )Tj +/TT10 1 Tf +10.694 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +( is required, or a list structures must be)Tj +-28.0838 -1.2889 TD +(prettyprinted, the following commands are available: )Tj +/TT14 1 Tf +2.6667 -2.3333 TD +(.P2)Tj +/TT18 1 Tf +1.8 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-26255.1([PRINTOUT Command])]TJ +-2.3838 -1.8444 TD +(Causes )Tj +/TT12 1 Tf +3.3887 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +( to be printed using )Tj +/TT10 1 Tf +8.8955 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +(; translates as )Tj +/TT10 1 Tf +6.1709 0 TD +(\(PRIN2)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(THING)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT14 1 Tf +-34.5739 -2.4 TD +(.PPF)Tj +/TT18 1 Tf +2.4 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-25655.1([PRINTOUT Command])]TJ +-2.9838 -1.8444 TD +(Causes )Tj +/TT12 1 Tf +3.4342 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +0.0456 Tw +[( to be prettyprinted at the current line position via )]TJ +/TT10 1 Tf +22.8721 0 TD +0 Tw +(PRINTDEF)Tj +/TT8 1 Tf +4.8008 0 TD +0.0456 Tw +[( \(see Chapter)]TJ +-34.1076 -1.2889 TD +0.1489 Tw +[(26\). The call to )]TJ +/TT10 1 Tf +7.6492 0 TD +0 Tw +(PRINTDEF)Tj +/TT8 1 Tf +4.8008 0 TD +0.1489 Tw +[( specifies that )]TJ +/TT12 1 Tf +6.6967 0 TD +0 Tw +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +0.1489 Tw +[( is to be printed as if it were part of a)]TJ +-22.1472 -1.2889 TD +0 Tw +(function definition. That is, )Tj +/TT10 1 Tf +12.5249 0 TD +(SELECTQ)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(, etc., receive special treatment.)Tj +/TT14 1 Tf +-22.2926 -2.4 TD +(.PPV)Tj +/TT18 1 Tf +2.4 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-25655.1([PRINTOUT Command])]TJ +-2.9838 -1.8444 TD +(Prettyprints )Tj +/TT12 1 Tf +5.5557 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +( as a variable; no special interpretation is given to )Tj +/TT10 1 Tf +22.0855 0 TD +(SELECTQ)Tj +/TT8 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(PROG)Tj +/TT8 1 Tf +2.4004 0 TD +(, etc.)Tj +/TT14 1 Tf +-40.4093 -2.4 TD +(.PPFTL)Tj +/TT18 1 Tf +3.6 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-24455.1([PRINTOUT Command])]TJ +-4.1838 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.5626 0 TD +(.PPF)Tj +/TT8 1 Tf +2.4004 0 TD +0.3756 Tw +(, but prettyprints )Tj +/TT12 1 Tf +8.9118 0 TD +0 Tw +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +0.3756 Tw +[( as a )]TJ +/TT16 1 Tf +3.3005 0 TD +0 Tw +(tail)Tj +/TT8 1 Tf +1.3325 0 TD +0.3756 Tw +(, that is, without the initial and final)Tj +-21.5083 -1.2889 TD +0.0422 Tw +[(parentheses if it is a list. Useful for prettyprinting sub-lists of a list whose other elements)]TJ +0 -1.2222 TD +0 Tw +(are formatted with other commands.)Tj +/TT14 1 Tf +-2.6667 -2.3333 TD +(.PPVTL)Tj +/TT18 1 Tf +3.6 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-24455.1([PRINTOUT Command])]TJ +-4.1838 -1.8444 TD +(Like )Tj +/TT10 1 Tf +2.187 0 TD +(.PPV)Tj +/TT8 1 Tf +2.4004 0 TD +(, but prettyprints )Tj +/TT12 1 Tf +7.7852 0 TD +(THING)Tj +/TT8 1 Tf +3.0005 0 TD +( as a tail.)Tj +/TT4 1 Tf +10 0 0 10 126 183.4 Tm +(Paragraph Format)Tj +/TT8 1 Tf +9 0 0 9 126 159.74 Tm +0.1 Tw +(Interlisps prettyprint routines are designed to display the structure of expressions, but they are not)Tj +0 -1.2222 TD +0.1311 Tw +[(really suitable for formatting unstructured text. If a list is to be printed as a textual paragraph, its)]TJ +T* +0.0833 Tw +(internal structure is less important than controlling its left and right margins, and the indentation of)Tj +T* +0 Tw +(its first line. The )Tj +/TT10 1 Tf +7.627 0 TD +(.PARA)Tj +/TT8 1 Tf +3.0005 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(.PARA2)Tj +/TT8 1 Tf +3.6006 0 TD +( commands allow these parameters to be conveniently specified. )Tj +/TT14 1 Tf +-13.7542 -2.4 TD +(.PARA)Tj +/TT18 1 Tf +3 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LMARG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RMARG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +[( )-19154.2([PRINTOUT Command])]TJ +-9.4847 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +2.8776 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +0.0056 Tw +[( in paragraph format, using )]TJ +/TT10 1 Tf +12.4702 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0056 Tw +[(. Translates as )]TJ +/TT10 1 Tf +6.7297 0 TD +0 Tw +(\(PRINTPARA)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.2556 0 TD +(LMARG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.2556 0 TD +(RMARG)Tj +-36.991 -1.2889 TD +(LIST)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( \(see below\).)Tj +ET +endstream +endobj +86 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +88 0 obj +<< +/Length 5427 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-25)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0833 Tw +(Example: )Tj +/TT10 1 Tf +4.7975 0 TD +0.2 Tw +(\(PRINTOUT T 10 .PARA 5 -5 LST\))Tj +/TT8 1 Tf +19.2029 0 TD +0.0833 Tw +[( will print the elements of )]TJ +/TT10 1 Tf +12.1113 0 TD +0 Tw +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.0833 Tw +[( as a)]TJ +-37.9121 -1.2889 TD +0.2244 Tw +(paragraph with left margin at 5, right margin at )Tj +/TT10 1 Tf +23.3296 0 TD +0 Tw +(\(LINELENGTH\))Tj +/TT8 1 Tf +7.2012 0 TD +0.2244 Tw +(-5, and the first line)Tj +-30.5307 -1.2889 TD +0 Tw +(indented to 10. )Tj +/TT14 1 Tf +-2.6667 -2.3333 TD +(.PARA2)Tj +/TT18 1 Tf +3.6 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LMARG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RMARG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +[( )-18554.2([PRINTOUT Command])]TJ +-10.0847 -1.8444 TD +0.1656 Tw +(Print as paragraph using )Tj +/TT10 1 Tf +11.8707 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.1656 Tw +[( instead of )]TJ +/TT10 1 Tf +5.3385 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.1656 Tw +[(. Translates as )]TJ +/TT10 1 Tf +7.3697 0 TD +0 Tw +(\(PRINTPARA)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.4156 0 TD +(LMARG)Tj +-36.9964 -1.2889 TD +(RMARG)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LIST)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T\))Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 467.2 Tm +(Right-Flushing)Tj +/TT8 1 Tf +9 0 0 9 78 443.54 Tm +0.1567 Tw +(Two commands are provided for printing simple expressions flushed-right against a specified line)Tj +0 -1.2222 TD +0.0022 Tw +(position, using the function )Tj +/TT10 1 Tf +12.4161 0 TD +0 Tw +(FLUSHRIGHT)Tj +/TT8 1 Tf +6.001 0 TD +0.0001 Tc +0.0021 Tw +( \(see below\). They take into account the current position, the)Tj +-18.4171 -1.2889 TD +0 Tc +0.0033 Tw +(number of characters in the print-name of the expression, and the position the expression is to be flush)Tj +0 -1.2222 TD +0.05 Tw +[(against, and then print the appropriate number of spaces to achieve the desired effect. Note that this)]TJ +T* +0.0889 Tw +[(might entail going to a new line before printing. Note also that right-flushing of expressions longer)]TJ +T* +0 Tw +(than a line \(e.g. a large list\) makes little sense, and the appearance of the output is not guaranteed.)Tj +/TT14 1 Tf +2.6667 -2.3333 TD +(.FR)Tj +/TT18 1 Tf +1.8 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +[( )-24804.9([PRINTOUT Command])]TJ +-3.834 -1.8444 TD +0.07 Tw +(Flush-right using )Tj +/TT10 1 Tf +8.0355 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.07 Tw +[(. The value of )]TJ +/TT12 1 Tf +6.8407 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.07 Tw +[( determines the position that the right end of)]TJ +/TT12 1 Tf +-19.677 -1.2889 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.2056 Tw +[( will line up at. As with the horizontal spacing commands, a negative position)]TJ +-2.4004 -1.2889 TD +0.0456 Tw +(number means |)Tj +/TT12 1 Tf +7.5599 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +(| columns from the current position, a positive number specifies the)Tj +-9.3602 -1.2889 TD +0.6322 Tw +(position absolutely. )Tj +/TT12 1 Tf +11.0729 0 TD +0 Tw +(POS)Tj +/TT10 1 Tf +1.8003 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.6322 Tw +[(0 specifies the right-margin, i.e. is interpreted as)]TJ +/TT10 1 Tf +-13.4733 -1.2889 TD +0 Tw +(\(LINELENGTH\))Tj +/TT8 1 Tf +7.2012 0 TD +(.)Tj +/TT14 1 Tf +-9.8678 -2.4 TD +(.FR2)Tj +/TT18 1 Tf +2.4 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +[( )-24204.9([PRINTOUT Command])]TJ +-4.434 -1.8444 TD +(Flush-right using )Tj +/TT10 1 Tf +7.8955 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +( instead of )Tj +/TT10 1 Tf +4.8418 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 235.8 Tm +(Centering)Tj +/TT8 1 Tf +9 0 0 9 78 212.14 Tm +0.0833 Tw +(Commands for centering simple expressions between the current line position and another specified)Tj +0 -1.2222 TD +0 Tw +(position are also available. As with right flushing, centering of large expressions is not guaranteed.)Tj +/TT14 1 Tf +2.6667 -2.3333 TD +(.CENTER)Tj +/TT18 1 Tf +4.2 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +[( )-22404.9([PRINTOUT Command])]TJ +-6.234 -1.8444 TD +(Centers )Tj +/TT12 1 Tf +3.6907 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0467 Tw +[( between the current line position and the position specified by the value of)]TJ +/TT12 1 Tf +-6.0911 -1.2889 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0856 Tw +[(. A positive )]TJ +/TT12 1 Tf +5.893 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0856 Tw +[( is an absolute position number, a negative )]TJ +/TT12 1 Tf +19.8339 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0856 Tw +[( specifies a position)]TJ +-31.1277 -1.2889 TD +0 Tw +(relative to the current position, and 0 indicates the right-margin. Uses )Tj +/TT10 1 Tf +31.2393 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +( for printing.)Tj +/TT14 1 Tf +-36.9064 -2.4 TD +(.CENTER2)Tj +/TT18 1 Tf +4.8 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT18 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +[( )-21804.9([PRINTOUT Command])]TJ +-6.834 -1.8444 TD +(Centers using )Tj +/TT10 1 Tf +6.3501 0 TD +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +( instead of )Tj +/TT10 1 Tf +4.8418 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +ET +endstream +endobj +89 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +91 0 obj +<< +/Length 7385 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-26)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Numbering)Tj +/TT8 1 Tf +9 0 0 9 126 544.54 Tm +0.2111 Tw +(The following commands provide FORTRAN-like formatting capabilities for integer and floating-)Tj +0 -1.2222 TD +0.0778 Tw +[(point numbers. Each command specifies a printing format and a number to be printed. The format)]TJ +T* +0 Tw +(specification translates into a format-list for the function )Tj +/TT10 1 Tf +25.0601 0 TD +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +/TT14 1 Tf +-27.1942 -2.4 TD +(.I)Tj +/TT12 1 Tf +1.2 0 TD +(FORMAT)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +[( )-22654.4([PRINTOUT Command])]TJ +-5.9845 -1.8444 TD +0.2189 Tw +[(Specifies integer printing. Translates as a call to the function )]TJ +/TT10 1 Tf +29.4571 0 TD +0 Tw +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.2189 Tw +[( with a )]TJ +/TT10 1 Tf +3.9399 0 TD +0 Tw +(FIX)Tj +/TT8 1 Tf +-38.1978 -1.2889 TD +0.2578 Tw +(format-list constructed from )Tj +/TT12 1 Tf +13.5077 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.2578 Tw +[(. The atomic format is broken apart at internal)]TJ +-17.1083 -1.2889 TD +0.0689 Tw +[(periods to form the format-list. For example, )]TJ +/TT10 1 Tf +20.7078 0 TD +0 Tw +(.I5.8.T)Tj +/TT8 1 Tf +4.2007 0 TD +0.0689 Tw +[( yields the format-list )]TJ +/TT10 1 Tf +9.9626 0 TD +0.1644 Tw +(\(FIX 5 8)Tj +-34.8711 -1.2889 TD +0 Tw +(T\))Tj +/TT8 1 Tf +1.2002 0 TD +0.3978 Tw +(, and the command sequence )Tj +/TT10 1 Tf +15.067 0 TD +0.9544 Tw +(\(PRINTOUT T .I5.8.T FOO\))Tj +/TT8 1 Tf +17.2657 0 TD +0.3978 Tw +[( translates as)]TJ +/TT10 1 Tf +-33.5329 -1.2889 TD +0.34 Tw +(\(PRINTNUM \(FIX 5 8 T\) FOO\))Tj +/TT8 1 Tf +17.9026 0 TD +0.1422 Tw +[(. This expression causes the value of )]TJ +/TT10 1 Tf +17.6119 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.1422 Tw +[( to be)]TJ +-37.3148 -1.2889 TD +0.0278 Tw +(printed in radix 8 right-flushed in a field of width 5, with 0s used for padding on the left.)Tj +0 -1.2222 TD +0 Tw +(Internal )Tj +/TT10 1 Tf +3.7911 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +(s in the format specification may be omitted, e.g., the commands )Tj +/TT10 1 Tf +29.5119 0 TD +0 Tw +(.I5)Tj +/TT18 1 Tf +1.8003 0 TD +(..)Tj +/TT10 1 Tf +0.5 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0489 Tw +[( and)]TJ +/TT10 1 Tf +-38.0037 -1.2889 TD +0 Tw +(.I5.NIL.T)Tj +/TT8 1 Tf +5.4009 0 TD +( are equivalent.)Tj +-5.4009 -2.0667 TD +0.03 Tw +(The format specification )Tj +/TT10 1 Tf +11.0485 0 TD +0 Tw +(.I1)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +[( is often useful for forcing a number to be printed in radix 10)]TJ +-12.8488 -1.2889 TD +0 Tw +(\(but not otherwise specially formatted\), independent of the current setting of )Tj +/TT10 1 Tf +34.2109 0 TD +(RADIX)Tj +/TT8 1 Tf +3.0005 0 TD +(. )Tj +/TT14 1 Tf +-39.8781 -2.4 TD +(.F)Tj +/TT10 1 Tf +1.2 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(FORMAT)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NUMBER)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT8 1 Tf +22.5543 0 TD +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +0.0144 Tw +[(Specifies floating-number printing. Like the )]TJ +/TT10 1 Tf +19.9055 0 TD +0 Tw +(.I)Tj +/TT8 1 Tf +1.2002 0 TD +0.0144 Tw +[( format command, except translates with a)]TJ +/TT10 1 Tf +-21.1057 -1.2889 TD +0 Tw +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +( format-list.)Tj +/TT14 1 Tf +-5.6672 -2.5489 TD +(.N)Tj +/TT16 1 Tf +1.2 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FORMAT)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(NUMBER)Tj +/TT6 1 Tf +10 0 0 10 230.1105 300.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 300.8 Tm +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +(The )Tj +/TT10 1 Tf +2.0272 0 TD +(.I)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +[( and )]TJ +/TT10 1 Tf +2.3995 0 TD +0 Tw +(.F)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +[( commands specify calls to )]TJ +/TT10 1 Tf +12.5884 0 TD +0 Tw +(PRINTNUM)Tj +/TT8 1 Tf +4.8008 0 TD +0.1033 Tw +[( with quoted format specifications.)]TJ +-24.2163 -1.2889 TD +0 Tw +(The )Tj +/TT10 1 Tf +1.9261 0 TD +(.N)Tj +/TT8 1 Tf +1.2002 0 TD +0.0001 Tc +0.0021 Tw +( command translates as )Tj +/TT10 1 Tf +10.628 0 TD +0 Tc +0 Tw +(\(PRINTNUM)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.2522 0 TD +(FORMAT)Tj +/TT18 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.2522 0 TD +(NUMBER)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0022 Tw +(, i.e., it permits the format to)Tj +-27.4609 -1.2889 TD +0.0178 Tw +[(be the value of some expression. Note that, unlike the )]TJ +/TT10 1 Tf +24.3562 0 TD +0 Tw +(.I)Tj +/TT8 1 Tf +1.2002 0 TD +0.0178 Tw +[( and )]TJ +/TT10 1 Tf +2.2284 0 TD +0 Tw +(.F)Tj +/TT8 1 Tf +1.2002 0 TD +0.0178 Tw +[( commands, )]TJ +/TT12 1 Tf +5.6576 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0178 Tw +[( is a)]TJ +-38.2432 -1.2889 TD +0 Tw +(separate element in the command list, not part of an atom beginning with )Tj +/TT10 1 Tf +32.7617 0 TD +(.N)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 219.46 Tm +(Escaping to Lisp)Tj +/TT8 1 Tf +9 0 0 9 126 195.8 Tm +0.1611 Tw +(There are many reasons for taking control away from )Tj +/TT10 1 Tf +25.2547 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.1611 Tw +[( in the middle of a long printing)]TJ +-30.0555 -1.2889 TD +0.2844 Tw +[(expression. Common situations involve temporary changes to system printing parameters \(e.g.)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(LINELENGTH)Tj +/TT8 1 Tf +6.001 0 TD +0.09 Tw +(\), conditional printing \(e.g. print )Tj +/TT10 1 Tf +14.9808 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( only if )]TJ +/TT10 1 Tf +3.6191 0 TD +0 Tw +(FIE)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +[( is )]TJ +/TT10 1 Tf +1.3948 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.09 Tw +(\), or lower-level iterative printing)Tj +-30.1964 -1.2889 TD +0 Tw +(within a higher-level print specification.)Tj +/TT14 1 Tf +2.6667 -2.4822 TD +(#)Tj +/TT4 1 Tf +10 0 0 10 155.4 139.26 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 158.1783 139.26 Tm +(FORM)Tj +/TT6 1 Tf +10 0 0 10 179.7818 139.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 436.25 139.26 Tm +([PRINTOUT Command])Tj +-29.1389 -1.8444 TD +0.0944 Tw +(The escape command. )Tj +/TT12 1 Tf +10.6766 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0944 Tw +[( is an arbitrary Lisp expression that is evaluated within the)]TJ +-13.077 -1.2889 TD +0.0278 Tw +(context established by the )Tj +/TT10 1 Tf +11.7869 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.0278 Tw +[( form, i.e., )]TJ +/TT12 1 Tf +4.7601 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0278 Tw +[( can assume that the primary output)]TJ +-23.7482 -1.2889 TD +0.12 Tw +(stream has been set to be the )Tj +/TT12 1 Tf +13.7165 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.12 Tw +[( argument to )]TJ +/TT10 1 Tf +6.3063 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.12 Tw +[(. Note that nothing is done)]TJ +-27.2239 -1.2889 TD +0.0233 Tw +(with the )Tj +/TT16 1 Tf +3.9671 0 TD +0 Tw +(value)Tj +/TT8 1 Tf +2.167 0 TD +0.0233 Tw +[( of )]TJ +/TT12 1 Tf +1.4256 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +(; any printing desired is accomplished by )Tj +/TT12 1 Tf +18.635 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0233 Tw +[( itself, and the value)]TJ +-30.9954 -1.2889 TD +0 Tw +(is discarded.)Tj +0 -2.3333 TD +[(Note:)-1567.9( Although )]TJ +/TT10 1 Tf +8.7642 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +( logically encloses its translation in a )Tj +/TT10 1 Tf +16.3618 0 TD +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +( \(Chapter)Tj +-31.3276 -1.2889 TD +(14\) to change the primary output file to the )Tj +/TT12 1 Tf +19.2651 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( argument \(if non-)Tj +/TT10 1 Tf +8.0742 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(\), in most)Tj +ET +endstream +endobj +92 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +94 0 obj +<< +/Length 5787 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-27)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 162 569.54 Tm +(cases it can actually pass )Tj +/TT12 1 Tf +11.1235 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( \(or a locally bound variable if )Tj +/TT12 1 Tf +13.5361 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( is a non-)Tj +-29.4605 -1.2889 TD +(trivial expression\) to each printing function. Thus, the )Tj +/TT10 1 Tf +24.2964 0 TD +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +( is only)Tj +-29.6973 -1.2889 TD +(generated when the )Tj +/TT10 1 Tf +9.0215 0 TD +(#)Tj +/TT8 1 Tf +0.6001 0 TD +( command is used, or user-defined commands \(below\) are)Tj +-9.6216 -1.2889 TD +(used. If many such occur in repeated )Tj +/TT10 1 Tf +16.7852 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +( forms, it may be more efficient)Tj +-21.5859 -1.2889 TD +(to embed them all in a single )Tj +/TT10 1 Tf +12.9751 0 TD +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +( which changes the primary output file,)Tj +-18.376 -1.2889 TD +(and then specify )Tj +/TT12 1 Tf +7.54 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +( in the )Tj +/TT10 1 Tf +3.0103 0 TD +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +( expressions themselves. )Tj +/TT4 1 Tf +10 0 0 10 78 481.6 Tm +(User-Defined Commands)Tj +/TT8 1 Tf +9 0 0 9 78 457.94 Tm +0.1444 Tw +(The collection of commands and options outlined above is aimed at fulfilling all common printing)Tj +0 -1.2222 TD +0.0167 Tw +[(needs. However, certain applications might have other, more specialized printing idioms, so a facility)]TJ +T* +0.0389 Tw +[(is provided whereby you can define new commands. This is done by adding entries to the global list)]TJ +/TT10 1 Tf +T* +0 Tw +(PRINTOUTMACROS)Tj +/TT8 1 Tf +8.4014 0 TD +( to define how the new commands are to be translated. )Tj +/TT14 1 Tf +-5.7347 -2.4 TD +(PRINTOUTMACROS)Tj +/TT8 1 Tf +8.4 0 TD +[( )-29367.8([Variable])]TJ +/TT10 1 Tf +-5.7333 -1.8444 TD +(PRINTOUTMACROS)Tj +/TT8 1 Tf +8.4014 0 TD +0.2233 Tw +[( is an association-list whose elements are of the form)]TJ +/TT18 1 Tf +25.1999 0 TD +0.2233 Tc +0 Tw +( \()Tj +/TT12 1 Tf +0.8063 0 TD +0 Tc +(COMM)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +1.1368 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-39.7451 -1.2889 TD +(Whenever )Tj +/TT12 1 Tf +4.901 0 TD +(COMM)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +[( appears in command position in the sequence of )]TJ +/TT10 1 Tf +22.6772 0 TD +0 Tw +(PRINTOUT)Tj +/TT8 1 Tf +4.8008 0 TD +0.09 Tw +[( commands)]TJ +-34.7794 -1.2889 TD +0.0233 Tw +(\(as opposed to an argument position of another command\), )Tj +/TT16 1 Tf +26.73 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.334 0 TD +0.0233 Tw +[( is applied to the tail of the)]TJ +-28.064 -1.2222 TD +0 Tw +(command-list \(including the command\).)Tj +0 -2 TD +0.1322 Tw +(After inspecting as much of the tail as necessary, the function must return a list whose)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +[( is the translation of the user-defined command and its arguments, and whose )]TJ +/TT10 1 Tf +35.3743 0 TD +0 Tw +(CDR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0489 Tw +[( is)]TJ +-38.9749 -1.2889 TD +0 Tw +(the list of commands still remaining to be translated in the normal way.)Tj +0 -2 TD +0.1878 Tw +(For example, suppose you want to define a command ")Tj +/TT10 1 Tf +26.0274 0 TD +0 Tw +(?)Tj +/TT8 1 Tf +0.6001 0 TD +0.1878 Tw +(", which will cause its single)Tj +-26.6275 -1.2889 TD +0.0311 Tw +(argument to be printed with )Tj +/TT10 1 Tf +12.9524 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0311 Tw +[( only if it is not )]TJ +/TT10 1 Tf +7.0719 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +[(. This can be done by entering )]TJ +/TT10 1 Tf +13.9842 0 TD +0 Tw +(\(?)Tj +-38.8094 -1.2889 TD +(?TRAN\))Tj +/TT8 1 Tf +3.6006 0 TD +( on )Tj +/TT10 1 Tf +1.6279 0 TD +(PRINTOUTMACROS)Tj +/TT8 1 Tf +8.4014 0 TD +(, and defining the function )Tj +/TT10 1 Tf +12.0122 0 TD +(?TRAN)Tj +/TT8 1 Tf +3.0005 0 TD +( as follows:)Tj +/TT10 1 Tf +-20.6426 -2 TD +(\(DEFINEQ \(?TRAN \(COMS\))Tj +0 -1.2222 TD +( \(CONS)Tj +T* +( \(SUBST \(CADR COMS\) ARG)Tj +T* +( \(PROG \(\(TEMP ARG\)\))Tj +T* +( \(COND \(TEMP \(PRIN1 TEMP\)\)\)\)\))Tj +T* +( \(CDDR COMS\)\)])Tj +/TT8 1 Tf +-8 -2.0667 TD +0.0478 Tw +(Note that )Tj +/TT10 1 Tf +4.5121 0 TD +0 Tw +(?TRAN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0478 Tw +[( does not do any printing itself; it returns a form which, when evaluated)]TJ +-7.5125 -1.2889 TD +0.0111 Tw +[(in the proper context, will perform the desired action. This form should direct all printing)]TJ +0 -1.2222 TD +0 Tw +(to the primary output file.)Tj +/TT4 1 Tf +10 0 0 10 78 127.2 Tm +(Special Printing Functions)Tj +/TT8 1 Tf +9 0 0 9 78 103.54 Tm +0.0944 Tw +(The paragraph printing commands are translated into calls on the function )Tj +/TT10 1 Tf +34.3148 0 TD +0 Tw +(PRINTPARA)Tj +/TT8 1 Tf +5.4009 0 TD +0.0944 Tw +(, which may)Tj +-39.7156 -1.2889 TD +0 Tw +(also be called directly:)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(PRINTPARA)Tj +/TT18 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LMARG)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RMARG)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LIST)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(P2FLAG)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(PARENFLAG)Tj +/TT16 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-9666.7([Function])]TJ +-25.2367 -1.8444 TD +(Prints )Tj +/TT12 1 Tf +2.8821 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +0.01 Tw +[( on )]TJ +/TT12 1 Tf +1.6479 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.01 Tw +[( in line-filled paragraph format with its first element beginning at the)]TJ +-9.3308 -1.2889 TD +0.0267 Tw +(current line position and ending at or before )Tj +/TT12 1 Tf +20.0336 0 TD +0 Tw +(RMARG)Tj +/TT8 1 Tf +3.0005 0 TD +0.0267 Tw +(, and with subsequent lines appearing)Tj +ET +endstream +endobj +95 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +97 0 obj +<< +/Length 8591 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-28)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +(between )Tj +/TT12 1 Tf +4.3135 0 TD +(LMARG)Tj +/TT8 1 Tf +3.0005 0 TD +0.3311 Tw +[( and )]TJ +/TT12 1 Tf +2.8551 0 TD +0 Tw +(RMARG)Tj +/TT8 1 Tf +3.0005 0 TD +0.3311 Tw +[(. If )]TJ +/TT12 1 Tf +2.6633 0 TD +0 Tw +(P2FLAG)Tj +/TT8 1 Tf +3.6006 0 TD +0.3311 Tw +[( is non-)]TJ +/TT10 1 Tf +3.92 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3311 Tw +(, prints elements using )Tj +/TT10 1 Tf +11.5925 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +-39.7468 -1.2889 TD +(otherwise )Tj +/TT10 1 Tf +4.6348 0 TD +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0289 Tw +[(. If )]TJ +/TT12 1 Tf +1.7566 0 TD +0 Tw +(PARENFLAG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0289 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3156 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0289 Tw +(, then parentheses will be printed around the)Tj +-19.9087 -1.2889 TD +0 Tw +(elements of )Tj +/TT12 1 Tf +5.3218 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-7.7222 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.1255 0 TD +(LMARG)Tj +/TT8 1 Tf +3.0005 0 TD +0.2056 Tw +[( is zero or positive, it is interpreted as an absolute column position. If it is)]TJ +-4.126 -1.2889 TD +0.0744 Tw +(negative, then the left margin will be at |)Tj +/TT12 1 Tf +18.7879 0 TD +0 Tw +(LMARG)Tj +/TT8 1 Tf +3.0005 0 TD +(|+)Tj +/TT10 1 Tf +1.2119 0 TD +(\(POSITION\))Tj +/TT8 1 Tf +6.001 0 TD +0.0744 Tw +[(. If )]TJ +/TT12 1 Tf +1.8933 0 TD +0 Tw +(LMARG)Tj +/TT10 1 Tf +3.0005 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0744 Tw +(, the left)Tj +-36.2955 -1.2889 TD +0 Tw +(margin will be at )Tj +/TT10 1 Tf +7.7725 0 TD +(\(POSITION\))Tj +/TT8 1 Tf +6.001 0 TD +(, and the paragraph will appear in block format.)Tj +-13.7734 -2.0667 TD +(If )Tj +/TT12 1 Tf +0.9477 0 TD +(RMARG)Tj +/TT8 1 Tf +3.0005 0 TD +0.0278 Tw +[( is positive, it also is an absolute column position \(which may be greater than the)]TJ +-3.9482 -1.2889 TD +0 Tw +(current )Tj +/TT10 1 Tf +3.5652 0 TD +(\(LINELENGTH\))Tj +/TT8 1 Tf +7.2012 0 TD +0.0911 Tw +[(\). Otherwise, it is interpreted as relative to )]TJ +/TT10 1 Tf +19.9177 0 TD +0 Tw +(\(LINELENGTH\))Tj +/TT8 1 Tf +7.2012 0 TD +0.0911 Tw +(, i.e.,)Tj +-37.8852 -1.2889 TD +0.4833 Tw +(the right margin will be at )Tj +/TT10 1 Tf +14.7101 0 TD +0 Tw +(\(LINELENGTH\))Tj +/TT8 1 Tf +7.2012 0 TD +(+|)Tj +/TT12 1 Tf +1.2119 0 TD +(RMARG)Tj +/TT8 1 Tf +3.0005 0 TD +0.4833 Tw +[(|. Example: )]TJ +/TT10 1 Tf +7.9202 0 TD +1.16 Tw +(\(TAB 10\))Tj +-34.0438 -1.2889 TD +0.2222 Tw +(\(PRINTPARA 5 -5 LST T\))Tj +/TT8 1 Tf +14.091 0 TD +0.0922 Tw +[( will )]TJ +/TT10 1 Tf +2.3915 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.0922 Tw +[( the elements of )]TJ +/TT10 1 Tf +7.5779 0 TD +0 Tw +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.0922 Tw +[( in a paragraph with the)]TJ +-28.8612 -1.2889 TD +0.1322 Tw +(first line beginning at column 10, subsequent lines beginning at column 5, and all lines)Tj +0 -1.2222 TD +0 Tw +(ending at or before )Tj +/TT10 1 Tf +8.6533 0 TD +(\(LINELENGTH\)-5)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +-17.0547 -2.0667 TD +0.1567 Tw +(The current )Tj +/TT10 1 Tf +5.7113 0 TD +0 Tw +(\(LINELENGTH\))Tj +/TT8 1 Tf +7.2012 0 TD +0.1567 Tw +[( is unaffected by )]TJ +/TT10 1 Tf +8.1408 0 TD +0 Tw +(PRINTPARA)Tj +/TT8 1 Tf +5.4009 0 TD +0.1567 Tw +(, and upon completion, )Tj +/TT12 1 Tf +11.1403 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +-37.5945 -1.2889 TD +0.4144 Tw +(will be positioned immediately after the last character of the last item of )Tj +/TT12 1 Tf +37.3551 0 TD +0 Tw +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-39.7555 -1.2889 TD +(PRINTPARA)Tj +/TT8 1 Tf +5.4009 0 TD +( is a no-op if )Tj +/TT12 1 Tf +5.6968 0 TD +(LIST)Tj +/TT8 1 Tf +2.4004 0 TD +( is not a list. )Tj +-18.8314 -2.9556 TD +(The right-flushing and centering commands translate as calls to the function )Tj +/TT10 1 Tf +33.9316 0 TD +(FLUSHRIGHT)Tj +/TT8 1 Tf +6.001 0 TD +(:)Tj +/TT10 1 Tf +-37.266 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(FLUSHRIGHT)Tj +/TT18 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(POS)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(MIN)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(P2FLAG)Tj +/TT16 1 Tf +3.6006 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CENTERFLAG)Tj +/TT16 1 Tf +6.001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-12667.3([Function])]TJ +-22.2361 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.1377 0 TD +(CENTERFLAG)Tj +/TT10 1 Tf +6.001 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.2178 Tw +(, prints )Tj +/TT12 1 Tf +3.8047 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2178 Tw +[( right-flushed against position )]TJ +/TT12 1 Tf +14.4634 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.2178 Tw +[( on )]TJ +/TT12 1 Tf +2.0635 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2178 Tw +(; otherwise,)Tj +-34.6714 -1.2889 TD +0 Tw +(centers )Tj +/TT12 1 Tf +3.51 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1311 Tw +[( between the current line position and )]TJ +/TT12 1 Tf +17.9544 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.1311 Tw +[(. Makes sure that it spaces over at)]TJ +-23.8648 -1.2889 TD +0 Tw +(least )Tj +/TT12 1 Tf +2.3545 0 TD +(MIN)Tj +/TT8 1 Tf +1.8003 0 TD +0.0844 Tw +[( spaces before printing by doing a )]TJ +/TT10 1 Tf +15.8177 0 TD +0 Tw +(TERPRI)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +[( if necessary; )]TJ +/TT12 1 Tf +6.1601 0 TD +0 Tw +(MIN)Tj +/TT10 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0844 Tw +[( is equivalent)]TJ +-33.9338 -1.2889 TD +0 Tw +(to )Tj +/TT12 1 Tf +1.2087 0 TD +(MIN)Tj +/TT10 1 Tf +1.8003 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.0867 Tw +[(1. A positive )]TJ +/TT12 1 Tf +6.7341 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0867 Tw +[( indicates an absolute position, while a negative )]TJ +/TT12 1 Tf +22.0576 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0867 Tw +[( signifies)]TJ +-36.0014 -1.2889 TD +0.0356 Tw +(the position which is |)Tj +/TT12 1 Tf +10.1901 0 TD +0 Tw +(POS)Tj +/TT8 1 Tf +1.8003 0 TD +0.0356 Tw +(| to the right of the current line position. )Tj +/TT12 1 Tf +18.8614 0 TD +0 Tw +(POS)Tj +/TT10 1 Tf +1.8003 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.0356 Tw +(0 is interpreted)Tj +-33.2522 -1.2889 TD +0 Tw +(as )Tj +/TT10 1 Tf +1.1738 0 TD +(\(LINELENGTH)Tj +/TT8 1 Tf +6.6011 0 TD +(\), the right margin.)Tj +/TT4 1 Tf +10 0 0 10 102 221 Tm +(READFILE and WRITEFILE)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 218.29 m +558.01 218.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 196.34 Tm +0.0544 Tw +(For those applications where you simply want to simply read all of the expressions on a file, and not)Tj +0 -1.2222 TD +0 Tw +(evaluate them, the function READFILE is available:)Tj +/TT10 1 Tf +2.6667 -2.4822 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READFILE)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(ENDTOKEN)Tj +/TT10 1 Tf +4.8008 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 302.5658 163 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 449.99 163 Tm +([NoSpread Function])Tj +-30.6656 -1.8444 TD +0.2378 Tw +(Reads successive expressions from file using )Tj +/TT10 1 Tf +21.352 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.2378 Tw +[( \(with read table )]TJ +/TT12 1 Tf +8.4516 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.2378 Tw +(\) until the)Tj +-35.2044 -1.2889 TD +0.14 Tw +(single litatom )Tj +/TT12 1 Tf +6.5661 0 TD +0 Tw +(ENDTOKEN)Tj +/TT8 1 Tf +4.8008 0 TD +0.14 Tw +[( is read, or an end of file encountered. Returns a list of these)]TJ +-11.3669 -1.2889 TD +0 Tw +(expressions.)Tj +0 -2 TD +(If )Tj +/TT12 1 Tf +1.1221 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.2022 Tw +[( is not specified, it defaults to )]TJ +/TT10 1 Tf +14.5933 0 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.2022 Tw +[(. If )]TJ +/TT12 1 Tf +2.2766 0 TD +0 Tw +(ENDTOKEN)Tj +/TT8 1 Tf +4.8008 0 TD +0.2022 Tw +[( is not specified, it)]TJ +-31.1942 -1.2889 TD +0 Tw +(defaults to the litatom )Tj +/TT10 1 Tf +9.9893 0 TD +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-15.0563 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(WRITEFILE)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(X)Tj +/TT16 1 Tf +0.6001 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 240.9053 70.66 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 70.66 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.17 Tw +(Writes a date expression onto )Tj +/TT12 1 Tf +14.1679 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.17 Tw +(, followed by successive expressions from )Tj +/TT12 1 Tf +19.7036 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.17 Tw +(, using)Tj +/TT10 1 Tf +-36.872 -1.2889 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.13 Tw +[( as a read table. If )]TJ +/TT12 1 Tf +9.138 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.13 Tw +[( is atomic, its value is used. If )]TJ +/TT12 1 Tf +14.6051 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.13 Tw +[( is not open, it is)]TJ +ET +endstream +endobj +98 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +100 0 obj +<< +/Length 6303 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-29)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0056 Tw +[(opened. If )]TJ +/TT12 1 Tf +4.9844 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0056 Tw +[( is a list, )]TJ +/TT10 1 Tf +3.8191 0 TD +0 Tw +(\(CAR)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.2556 0 TD +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0056 Tw +[( is used and the file is left opened. Otherwise, when)]TJ +/TT16 1 Tf +-16.8604 -1.2889 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.7222 0 TD +( is finished, the litatom )Tj +/TT10 1 Tf +10.3579 0 TD +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +( is printed on )Tj +/TT12 1 Tf +6.1279 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( and it is closed. Returns )Tj +/TT12 1 Tf +11.2964 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +-38.3722 -2.5489 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(ENDFILE)Tj +/TT4 1 Tf +10 0 0 10 145.2 535 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 147.9783 535 Tm +(FILE)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 174.9827 535 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 535 Tm +([Function])Tj +-35.4033 -1.8445 TD +(Prints )Tj +/TT10 1 Tf +2.8721 0 TD +(STOP)Tj +/TT8 1 Tf +2.4004 0 TD +( on )Tj +/TT12 1 Tf +1.6279 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( and closes it.)Tj +/TT4 1 Tf +10 0 0 10 54 475.46 Tm +(Read Tables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 472.75 m +510.01 472.75 l +S +BT +/TT8 1 Tf +9 0 0 9 78 450.8 Tm +0.0278 Tw +[(Many Interlisp input functions treat certain characters in special ways. For example, )]TJ +/TT10 1 Tf +37.9505 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0278 Tw +[( recognizes)]TJ +-40.3509 -1.2889 TD +0.1589 Tw +(that the right and left parenthesis characters are used to specify list structures, and that the quote)Tj +0 -1.2222 TD +0.0789 Tw +[(character is used to delimit text strings. The Interlisp input and \(to a certain extent\) output routines)]TJ +T* +0.2622 Tw +[(are table driven by read tables. Read tables are objects that specify the syntactic properties of)]TJ +T* +0.03 Tw +[(characters for input routines. Since the input routines parse character sequences into objects, the read)]TJ +T* +0 Tw +(table in use determines which sequences are recognized as literal atoms, strings, list structures, etc.)Tj +0 -2.8889 TD +0.0567 Tw +(Most Interlisp input functions take an optional read table argument, which specifies the read table to)Tj +0 -1.2222 TD +0.03 Tw +[(use when reading an expression. If )]TJ +/TT10 1 Tf +16.0957 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.03 Tw +[( is given as the read table, the "primary read table" is used. If)]TJ +/TT10 1 Tf +-17.896 -1.2889 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0556 Tw +[( is specified, the system terminal read table is used. Some functions will also accept the atom )]TJ +/TT10 1 Tf +42.3267 0 TD +0 Tw +(ORIG)Tj +/TT8 1 Tf +-42.9268 -1.2889 TD +(\()Tj +/TT16 1 Tf +0.333 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0356 Tw +[( the )]TJ +/TT16 1 Tf +1.9583 0 TD +0 Tw +(value)Tj +/TT8 1 Tf +2.167 0 TD +0.0356 Tw +[( of )]TJ +/TT10 1 Tf +1.45 0 TD +0 Tw +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0355 Tw +[(\) as indicating the "original" system read table. Some output functions also take)]TJ +-9.6417 -1.2889 TD +0.04 Tw +[(a read table argument. For example, )]TJ +/TT10 1 Tf +16.7346 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.04 Tw +[( prints an expression so that it would be read in correctly)]TJ +-19.7351 -1.2889 TD +0 Tw +(using a given read table.)Tj +0 -2.8889 TD +0.01 Tw +(The Interlisp-D system uses the following read tables: )Tj +/TT10 1 Tf +24.3337 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.01 Tw +[( for input/output from terminals, the value of)]TJ +/TT10 1 Tf +-24.9338 -1.2889 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.1044 Tw +[( for input/output from files, the value of )]TJ +/TT10 1 Tf +19.0528 0 TD +0 Tw +(EDITRDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.1044 Tw +[( for input from terminals while in)]TJ +-29.8546 -1.2889 TD +0.13 Tw +(the tty-based editor, the value of )Tj +/TT10 1 Tf +15.3777 0 TD +0 Tw +(DEDITRDTBL)Tj +/TT8 1 Tf +6.001 0 TD +0.13 Tw +[( for input from terminals while in the display-based)]TJ +-21.3786 -1.2889 TD +0.05 Tw +(editor, and the value of )Tj +/TT10 1 Tf +10.7949 0 TD +0 Tw +(CODERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.05 Tw +[( for input/output from compiled files. These five read tables are)]TJ +-16.1958 -1.2889 TD +0.11 Tw +(initially copies of the )Tj +/TT10 1 Tf +9.9102 0 TD +0 Tw +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +0.11 Tw +[( read table, with changes made to some of them to provide read macros)]TJ +-12.3106 -1.2889 TD +0.03 Tw +[(that are specific to terminal input or file input. Using the functions described below, you may further)]TJ +0 -1.2222 TD +0.1378 Tw +[(change, reset, or copy these tables. However, in the case of )]TJ +/TT10 1 Tf +27.9663 0 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.1378 Tw +[( and )]TJ +/TT10 1 Tf +2.4684 0 TD +0 Tw +(CODERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.1378 Tw +(, you are)Tj +-41.2365 -1.2889 TD +0.05 Tw +(cautioned that changing these tables may prevent the system from being able to read files made with)Tj +0 -1.2222 TD +0.0178 Tw +(the original tables, or prevent users possessing only the standard tables from reading files made using)Tj +T* +0 Tw +(the modified tables.)Tj +0 -2.8889 TD +0.1778 Tw +(You can also create new read tables, and either explicitly pass them to input/output functions as)Tj +0 -1.2222 TD +0.1867 Tw +(arguments, or install them as the primary read table, via )Tj +/TT10 1 Tf +26.9531 0 TD +0 Tw +(SETREADTABLE)Tj +/TT8 1 Tf +7.2012 0 TD +0.1867 Tw +(, and then not specify a)Tj +/TT16 1 Tf +-34.1543 -1.2889 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.2227 0 TD +( argument, i.e., use )Tj +/TT10 1 Tf +8.6001 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 104.66 Tm +(Read Table Functions)Tj +/TT10 1 Tf +9 0 0 9 102 86 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READTABLEP)Tj +/TT18 1 Tf +5.9999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27119.4([Function])]TJ +-7.7839 -1.8444 TD +(Returns )Tj +/TT12 1 Tf +3.7271 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +( if )Tj +/TT12 1 Tf +1.124 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +( is a real read table \()Tj +/TT16 1 Tf +8.8472 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +(\), otherwise )Tj +/TT10 1 Tf +5.439 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +101 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +103 0 obj +<< +/Length 7700 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-30)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETREADTABLE)Tj +/TT18 1 Tf +7.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25919.4([Function])]TJ +-8.9839 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.0188 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +[(, returns the primary read table. If )]TJ +/TT12 1 Tf +16.3077 0 TD +0 Tw +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +0.0989 Tw +(, returns the system terminal)Tj +-26.9281 -1.2889 TD +0.0089 Tw +[(read table. If )]TJ +/TT12 1 Tf +6.0898 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0089 Tw +[( is a real read table, returns )]TJ +/TT12 1 Tf +12.2805 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0089 Tw +(. Otherwise, generates an )Tj +/TT10 1 Tf +11.434 0 TD +0 Tw +(ILLEGAL)Tj +-35.8052 -1.2889 TD +(READTABLE)Tj +/TT8 1 Tf +5.4009 0 TD +( error.)Tj +/TT10 1 Tf +-8.0675 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETREADTABLE)Tj +/TT18 1 Tf +7.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23869.1([Function])]TJ +-11.0342 -1.8444 TD +0.0344 Tw +(Sets the primary read table to )Tj +/TT12 1 Tf +13.4752 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0344 Tw +[(. If )]TJ +/TT12 1 Tf +1.7733 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5344 0 TD +(SETREADTABLE)Tj +/TT8 1 Tf +7.2012 0 TD +0.0344 Tw +[( sets the system terminal)]TJ +-28.9851 -1.2889 TD +0.0256 Tw +(read table, )Tj +/TT10 1 Tf +4.9354 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0256 Tw +[(. Note that you can reset the other system read tables with )]TJ +/TT10 1 Tf +26.4812 0 TD +0 Tw +(SETQ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0256 Tw +(, e.g., )Tj +/TT10 1 Tf +2.5863 0 TD +0 Tw +(\(SETQ)Tj +-37.0033 -1.2889 TD +(FILERDTBL \(GETREADTABLE\)\))Tj +/TT8 1 Tf +15.0024 0 TD +(.)Tj +-15.0024 -2.0667 TD +0.1456 Tw +(Generates an )Tj +/TT10 1 Tf +6.3004 0 TD +0.35 Tw +(ILLEGAL READTABLE)Tj +/TT8 1 Tf +10.5517 0 TD +0.1456 Tw +[( error if )]TJ +/TT12 1 Tf +4.0207 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.1456 Tw +[( is not )]TJ +/TT10 1 Tf +3.3556 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6456 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1456 Tw +(, or a real read table.)Tj +-30.2747 -1.2889 TD +0.0844 Tw +(Returns the previous setting of the primary read table, so )Tj +/TT10 1 Tf +26.3381 0 TD +0 Tw +(SETREADTABLE)Tj +/TT8 1 Tf +7.2012 0 TD +0.0844 Tw +[( is suitable for)]TJ +-33.5393 -1.2889 TD +0 Tw +(use with )Tj +/TT10 1 Tf +4.0391 0 TD +(RESETFORM)Tj +/TT8 1 Tf +5.4009 0 TD +( \(Chapter 14\).)Tj +/TT10 1 Tf +-12.1066 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(COPYREADTABLE)Tj +/TT18 1 Tf +7.7999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25319.4([Function])]TJ +-9.5839 -1.8444 TD +0.0456 Tw +(Returns a copy of )Tj +/TT12 1 Tf +8.1852 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0456 Tw +(. )Tj +/TT12 1 Tf +0.8411 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0456 Tw +[( can be a real read table, )]TJ +/TT10 1 Tf +11.1763 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5456 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0456 Tw +(, or )Tj +/TT10 1 Tf +1.782 0 TD +0 Tw +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0456 Tw +[( \(in which case)]TJ +/TT10 1 Tf +-33.3319 -1.2889 TD +0 Tw +(COPYREADTABLE)Tj +/TT8 1 Tf +7.8013 0 TD +0.6244 Tw +[( returns a copy of the )]TJ +/TT16 1 Tf +13.3639 0 TD +0 Tw +(original)Tj +/TT8 1 Tf +3.1665 0 TD +0.6244 Tw +[( system read table\), otherwise)]TJ +/TT10 1 Tf +-24.3316 -1.2889 TD +0 Tw +(COPYREADTABLE)Tj +/TT8 1 Tf +7.8013 0 TD +( generates an )Tj +/TT10 1 Tf +6.0522 0 TD +(ILLEGAL READTABLE)Tj +/TT8 1 Tf +10.2017 0 TD +( error.)Tj +-24.0552 -2.0667 TD +(Note that )Tj +/TT10 1 Tf +4.4165 0 TD +(COPYREADTABLE)Tj +/TT8 1 Tf +7.8013 0 TD +( is the only function that )Tj +/TT16 1 Tf +11.0186 0 TD +(creates)Tj +/TT8 1 Tf +2.7407 0 TD +( a read table.)Tj +/TT10 1 Tf +-28.6437 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(RESETREADTABLE)Tj +/TT18 1 Tf +8.3999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FROM)Tj +/TT10 1 Tf +2.4004 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22069([Function])]TJ +-12.8343 -1.8444 TD +0.0511 Tw +(Copies \(smashes\) )Tj +/TT12 1 Tf +8.0334 0 TD +0 Tw +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( into )]TJ +/TT12 1 Tf +2.3473 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0511 Tw +(. )Tj +/TT12 1 Tf +0.8522 0 TD +0 Tw +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0511 Tw +[( and )]TJ +/TT12 1 Tf +2.2951 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0511 Tw +[( can be )]TJ +/TT10 1 Tf +3.4614 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5511 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0511 Tw +(, or a real read table.)Tj +-30.7427 -1.2889 TD +0 Tw +(In addition, )Tj +/TT12 1 Tf +5.4268 0 TD +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +( can be )Tj +/TT10 1 Tf +3.3081 0 TD +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +(, meaning use the systems original read table.)Tj +/TT4 1 Tf +10 0 0 10 126 266.8 Tm +(Syntax Classes)Tj +/TT8 1 Tf +9 0 0 9 126 243.14 Tm +0.0033 Tw +(A read table is an object that contains information about the "syntax class" of each character. There are)Tj +0 -1.2222 TD +0.8556 Tw +(nine basic syntax classes: )Tj +/TT10 1 Tf +15.8134 0 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +1.3556 0 TD +(RIGHTPAREN)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +1.3556 0 TD +(LEFTBRACKET)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +1.3556 0 TD +(RIGHTBRACKET)Tj +/TT8 1 Tf +7.2012 0 TD +(,)Tj +/TT10 1 Tf +-45.0842 -1.2889 TD +(STRINGDELIM)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +0.8278 0 TD +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.8283 0 TD +(BREAKCHAR)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.828 0 TD +(SEPRCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +0.3278 Tw +(, and )Tj +/TT10 1 Tf +3.1003 0 TD +0 Tw +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +0.3278 Tw +(, each associated with a primitive)Tj +-28.9883 -1.2889 TD +0.2433 Tw +[(syntactic property. In addition, there is an unlimited assortment of user-defined syntax classes,)]TJ +0 -1.2222 TD +0 Tw +(known as "read macros". The basic syntax classes are interpreted as follows:)Tj +/TT10 1 Tf +3.9333 -2 TD +(LEFTPAREN)Tj +/TT8 1 Tf +6.7333 0 TD +(\(normally left parenthesis\) Begins list structure.)Tj +/TT10 1 Tf +-7.3333 -2.0667 TD +(RIGHTPAREN)Tj +/TT8 1 Tf +7.3333 0 TD +(\(normally right parenthesis\) Ends list structure.)Tj +/TT10 1 Tf +-7.9333 -2.0667 TD +(LEFTBRACKET)Tj +/TT8 1 Tf +7.9333 0 TD +0.1378 Tw +[(\(normally left bracket\) Begins list structure. Also matches )]TJ +/TT10 1 Tf +27.4667 0 TD +0 Tw +(RIGHTBRACKET)Tj +/TT8 1 Tf +-27.4667 -1.2889 TD +(characters.)Tj +/TT10 1 Tf +-8.5333 -2 TD +(RIGHTBRACKET)Tj +/TT8 1 Tf +8.5333 0 TD +0.0344 Tw +[(\(normally left bracket\) Ends list structure. Can close an arbitrary numbers of)]TJ +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +( lists, back to the last )Tj +/TT10 1 Tf +9.3594 0 TD +(LEFTBRACKET)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-29.2947 -2.0667 TD +(STRINGDELIM)Tj +/TT8 1 Tf +7.9333 0 TD +0.0856 Tw +[(\(normally double quote\) Begins and ends text strings. Within the string, all)]TJ +0 -1.2889 TD +0.0167 Tw +(characters except for the one\(s\) with class )Tj +/TT10 1 Tf +18.6743 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0167 Tw +[( are treated as ordinary, i.e.,)]TJ +-22.2749 -1.2889 TD +0.2489 Tw +(interpreted as if they were of syntax class )Tj +/TT10 1 Tf +20.4994 0 TD +0 Tw +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +0.2489 Tw +[(. To include the string)]TJ +-23.4999 -1.2889 TD +0 Tw +(delimiter inside a string, prefix it with the )Tj +/TT10 1 Tf +18.7007 0 TD +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +( character.)Tj +ET +endstream +endobj +104 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +106 0 obj +<< +/Length 6516 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-31)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 129.6 569.54 Tm +(ESCAPE)Tj +/TT8 1 Tf +4.9333 0 TD +0.3956 Tw +[(\(normally percent sign\) Inhibits any special interpretation of the next)]TJ +0 -1.2889 TD +0.4478 Tw +(character, i.e., the next character is interpreted to be of class )Tj +/TT10 1 Tf +31.4109 0 TD +0 Tw +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +(,)Tj +-34.4114 -1.2889 TD +(independent of its normal syntax class.)Tj +/TT10 1 Tf +-6.7333 -2 TD +(BREAKCHAR)Tj +/TT8 1 Tf +6.7333 0 TD +0.0889 Tw +[(\(None initially\) Is a break character, i.e., delimits atoms, but is otherwise an)]TJ +0 -1.2889 TD +0 Tw +(ordinary character.)Tj +/TT10 1 Tf +-6.1333 -2 TD +(SEPRCHAR)Tj +/TT8 1 Tf +6.1333 0 TD +(\(space, carriage return, etc.\) Delimits atoms, and is otherwise ignored.)Tj +/TT10 1 Tf +-4.3333 -2.0667 TD +(OTHER)Tj +/TT8 1 Tf +4.3333 0 TD +(Characters that are not otherwise special belong to the class )Tj +/TT10 1 Tf +26.5513 0 TD +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-40.2184 -2.9556 TD +0.6022 Tw +(Characters of syntax class )Tj +/TT10 1 Tf +14.0285 0 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +1.1022 0 TD +(RIGHTPAREN)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +1.1022 0 TD +(LEFTBRACKET)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT10 1 Tf +1.1022 0 TD +(RIGHTBRACKET)Tj +/TT8 1 Tf +7.2012 0 TD +0.6022 Tw +(, and)Tj +/TT10 1 Tf +-42.5393 -1.2889 TD +0 Tw +(STRINGDELIM)Tj +/TT8 1 Tf +6.6011 0 TD +0.0578 Tw +[( are all )]TJ +/TT16 1 Tf +3.3794 0 TD +0 Tw +(break)Tj +/TT8 1 Tf +2.1289 0 TD +0.0578 Tw +[( characters. That is, in addition to their interpretation as delimiting list or)]TJ +-12.1094 -1.2889 TD +0.11 Tw +[(string structures, they also terminate the reading of an atom. Characters of class )]TJ +/TT10 1 Tf +37.2309 0 TD +0 Tw +(BREAKCHAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.11 Tw +[( serve)]TJ +/TT16 1 Tf +-42.6318 -1.2889 TD +0 Tw +(only)Tj +/TT8 1 Tf +1.7778 0 TD +0.1044 Tw +[( to terminate atoms, with no other special meaning. In addition, if a break character is the first)]TJ +-1.7778 -1.2222 TD +0.0033 Tw +(non-separator encountered by )Tj +/TT10 1 Tf +13.6042 0 TD +0 Tw +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +0.0033 Tw +(, it is read as a one-character atom. In order for a break character)Tj +-16.6047 -1.2889 TD +0 Tw +(to be included in an atom, it must be preceded by the )Tj +/TT10 1 Tf +23.7563 0 TD +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +( character.)Tj +-27.3569 -2.9556 TD +0.0033 Tw +(Characters of class )Tj +/TT10 1 Tf +8.4753 0 TD +0 Tw +(SEPRCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +0.0033 Tw +( also terminate atoms, but are otherwise completely ignored; they can be)Tj +-13.2761 -1.2889 TD +0.2033 Tw +[(thought of as logically spaces. As with break characters, they must be preceded by the )]TJ +/TT10 1 Tf +41.7289 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +-41.7289 -1.2889 TD +(character in order to appear in an atom.)Tj +0 -2.8889 TD +0.5033 Tw +(For example, if )Tj +/TT10 1 Tf +8.3801 0 TD +0 Tw +($)Tj +/TT8 1 Tf +0.6001 0 TD +0.5033 Tw +[( were a break character and )]TJ +/TT10 1 Tf +15.4482 0 TD +0 Tw +(*)Tj +/TT8 1 Tf +0.6001 0 TD +0.5033 Tw +[( a separator character, the input stream)]TJ +/TT10 1 Tf +-25.0285 -1.2889 TD +0 Tw +(ABC**DEF$GH*$$)Tj +/TT8 1 Tf +8.4014 0 TD +( would be read by six calls to )Tj +/TT10 1 Tf +13.064 0 TD +(RATOM)Tj +/TT8 1 Tf +3.0005 0 TD +( returning respectively )Tj +/TT10 1 Tf +10.2896 0 TD +(ABC)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(DEF)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(GH)Tj +/TT8 1 Tf +1.2002 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-43.8565 -2.9556 TD +0.1778 Tw +(Although normally there is only one character in a read table having each of the list- and string-)Tj +0 -1.2222 TD +0.0222 Tw +(delimiting syntax classes \(such as )Tj +/TT10 1 Tf +15.1614 0 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0222 Tw +(\), it is perfectly acceptable for any character to have any)Tj +-20.5623 -1.2889 TD +0 Tw +(syntax class, and for more than one to have the same class. )Tj +0 -2.8889 TD +0.1289 Tw +[(Note that a "syntax class" is an abstraction: there is no object referencing a collection of characters)]TJ +0 -1.2222 TD +0.0767 Tw +(called a )Tj +/TT16 1 Tf +3.7691 0 TD +(syntax class)Tj +/TT8 1 Tf +4.9561 0 TD +[(. Instead, a read table provides the )]TJ +/TT16 1 Tf +16.3052 0 TD +0 Tw +(association)Tj +/TT8 1 Tf +4.4058 0 TD +0.0767 Tw +[( between a character and its syntax)]TJ +-29.4361 -1.2222 TD +0 Tw +(class, and the input/output routines enforce the abstraction by using read tables to drive the parsing.)Tj +0 -2.8889 TD +0.0422 Tw +[(The functions below are used to obtain and set the syntax class of a character in a read table. )]TJ +/TT12 1 Tf +42.3027 0 TD +0 Tw +(CH)Tj +/TT8 1 Tf +1.2002 0 TD +0.0422 Tw +[( can)]TJ +-43.5029 -1.2889 TD +0.0211 Tw +[(either be a character code \(a integer\), or a character \(a single-character atom\). Single-digit integers are)]TJ +0 -1.2222 TD +0.0767 Tw +[(interpreted as character codes, rather than as characters. For example, 1 indicates Control-A, and 49)]TJ +T* +0 Tw +(indicates the )Tj +/TT16 1 Tf +5.835 0 TD +(character)Tj +/TT8 1 Tf +3.7026 0 TD +( 1. Note that )Tj +/TT12 1 Tf +5.9165 0 TD +(CH)Tj +/TT8 1 Tf +1.2002 0 TD +( can be a full sixteen-bit NS character \(see Chapter 2\).)Tj +-11.321 -2.0667 TD +0.1511 Tw +[(Note: )-1166.8(Terminal tables, described in Chapter 30, also associate characters with syntax)]TJ +4 -1.2222 TD +0.0967 Tw +[(classes, and they can also be manipulated with the functions below. The set of)]TJ +T* +0.1633 Tw +(read table and terminal table syntax classes are disjoint, so there is never any)Tj +T* +0 Tw +(ambiguity about which type of table is being referred to.)Tj +/TT10 1 Tf +-6.6667 -2.3333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETSYNTAX)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CH)Tj +/TT16 1 Tf +1.2002 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TABLE)Tj +/TT18 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.333 0 TD +[( )-26535.3([Function])]TJ +-8.368 -1.8444 TD +0.1578 Tw +(Returns the syntax class of )Tj +/TT12 1 Tf +12.7689 0 TD +0 Tw +(CH)Tj +/TT8 1 Tf +1.2002 0 TD +0.1578 Tw +(, a character or a character code, with respect to )Tj +/TT12 1 Tf +22.7814 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT12 1 Tf +-39.7509 -1.2889 TD +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +( can be )Tj +/TT10 1 Tf +3.3081 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +(, or a real read table or terminal table.)Tj +ET +endstream +endobj +107 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +110 0 obj +<< +/Length 9670 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-32)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 174 569.54 Tm +(CH)Tj +/TT8 1 Tf +1.2002 0 TD +0.1578 Tw +[( can also be a syntax class, in which case )]TJ +/TT10 1 Tf +19.5861 0 TD +0 Tw +(GETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.1578 Tw +[( returns a list of the character)]TJ +-26.1872 -1.2889 TD +0 Tw +(codes in )Tj +/TT12 1 Tf +3.8765 0 TD +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +( that have that syntax class.)Tj +/TT10 1 Tf +-9.5436 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETSYNTAX)Tj +/TT18 1 Tf +5.4009 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CHAR)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CLASS)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TABLE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21817.6([Function])]TJ +-13.0858 -1.8444 TD +0.1722 Tw +(Sets the syntax class of )Tj +/TT12 1 Tf +11.1179 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1722 Tw +(, a character or character code, in )Tj +/TT12 1 Tf +15.979 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1722 Tw +(. )Tj +/TT12 1 Tf +1.0944 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1722 Tw +[( can be)]TJ +-36.5928 -1.2889 TD +0 Tw +(either )Tj +/TT10 1 Tf +2.9734 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6711 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1711 Tw +(, or a real read table or terminal table. )Tj +/TT10 1 Tf +18.7887 0 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.1711 Tw +[( returns the previous)]TJ +-30.2345 -1.2889 TD +0 Tw +(syntax class of )Tj +/TT12 1 Tf +6.6157 0 TD +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +(. )Tj +/TT12 1 Tf +0.75 0 TD +(CLASS)Tj +/TT8 1 Tf +3.0005 0 TD +( can be any one of the following:)Tj +-8.7666 -2.0667 TD +[()-727.4(The name of one of the basic syntax classes.)]TJ +0 -2 TD +[()-727.4(A)0( list, which is interpreted as a read macro \(see below\).)]TJ +T* +()Tj +/TT10 1 Tf +1.3333 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5178 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT10 1 Tf +0.5178 0 TD +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +(, or a real read table or terminal table, which means to give )Tj +/TT12 1 Tf +26.4225 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +-32.2589 -1.2889 TD +0.3478 Tw +(the syntax class it has in the table indicated by )Tj +/TT12 1 Tf +24.1287 0 TD +0 Tw +(CLASS)Tj +/TT8 1 Tf +3.0005 0 TD +0.3478 Tw +[(. For example,)]TJ +/TT10 1 Tf +-27.1291 -1.2889 TD +0.44 Tw +(\(SETSYNTAX %\( ORIG)Tj +/TT18 1 Tf +12.882 0 TD +0 Tw +( )Tj +/TT12 1 Tf +0.4333 0 TD +(TABLE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.1833 Tw +[( gives the left parenthesis character in)]TJ +/TT12 1 Tf +-16.9159 -1.2889 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +( the same syntax class that it has in the original system read table.)Tj +-4.3338 -2.0667 TD +0.1689 Tw +[()-838.5(A)0( character code or character, which means to give )]TJ +/TT12 1 Tf +25.7564 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1689 Tw +[( the same syntax)]TJ +-26.8235 -1.2889 TD +0.07 Tw +(class as the character )Tj +/TT12 1 Tf +9.7385 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.07 Tw +[( in )]TJ +/TT12 1 Tf +1.5131 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.07 Tw +[(. For example,)]TJ +/TT10 1 Tf +6.7061 0 TD +0.1678 Tw +[( \(SETSYNTAX { %[)]TJ +/TT12 1 Tf +-23.3585 -1.2889 TD +0 Tw +(TABLE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +( gives the left brace character the same syntax class as the left bracket.)Tj +/TT10 1 Tf +-11.6006 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SYNTAXP)Tj +/TT18 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CODE)Tj +/TT16 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(CLASS)Tj +/TT16 1 Tf +3.0005 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(TABLE)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23018.5([Function])]TJ +/TT12 1 Tf +-11.8848 -1.8444 TD +(CODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( is a character code; )]TJ +/TT12 1 Tf +8.9149 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0111 Tw +[( is )]TJ +/TT10 1 Tf +1.2371 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5111 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0111 Tw +[(, or a real read table or terminal table. Returns )]TJ +/TT10 1 Tf +20.9269 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +-39.3913 -1.2889 TD +(if )Tj +/TT12 1 Tf +0.874 0 TD +(CODE)Tj +/TT8 1 Tf +2.4004 0 TD +( has the syntax class )Tj +/TT12 1 Tf +9.1299 0 TD +(CLASS)Tj +/TT8 1 Tf +3.0005 0 TD +( in )Tj +/TT12 1 Tf +1.373 0 TD +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +(; )Tj +/TT10 1 Tf +0.5 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT12 1 Tf +-22.0786 -2.0667 TD +(CLASS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0767 Tw +[( can also be a read macro type \()]TJ +/TT10 1 Tf +14.48 0 TD +0 Tw +(MACRO)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.5767 0 TD +(SPLICE)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +0.25 0 TD +0.1844 Tw +[( INFIX)]TJ +/TT8 1 Tf +3.785 0 TD +0.0767 Tw +(\), or a read macro option)Tj +/TT10 1 Tf +-28.6933 -1.2889 TD +0 Tw +(\(FIRST)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5667 0 TD +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0667 Tw +(, etc.\), in which case )Tj +/TT10 1 Tf +9.368 0 TD +0 Tw +(SYNTAXP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0667 Tw +[( returns )]TJ +/TT10 1 Tf +3.8374 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0667 Tw +[( if the syntax class is a read)]TJ +-27.5744 -1.2889 TD +0 Tw +(macro with the specified property.)Tj +/TT10 1 Tf +0 -2 TD +(SYNTAXP)Tj +/TT8 1 Tf +4.2007 0 TD +( will )Tj +/TT16 1 Tf +2.207 0 TD +(not)Tj +/TT8 1 Tf +1.333 0 TD +( accept a character as an argument, only a character )Tj +/TT16 1 Tf +22.979 0 TD +(code)Tj +/TT8 1 Tf +1.7402 0 TD +(.)Tj +-32.46 -2.0667 TD +0.07 Tw +(For convenience in use with )Tj +/TT10 1 Tf +12.9818 0 TD +0 Tw +(SYNTAXP)Tj +/TT8 1 Tf +4.2007 0 TD +0.07 Tw +(, the atom )Tj +/TT10 1 Tf +4.8521 0 TD +0 Tw +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.07 Tw +[( may be used to refer to )]TJ +/TT16 1 Tf +11.1531 0 TD +0 Tw +(all)Tj +/TT8 1 Tf +0.9995 0 TD +0.07 Tw +[( break)]TJ +-37.1877 -1.2889 TD +0.7267 Tw +(characters, i.e., it is the union of )Tj +/TT10 1 Tf +19.2976 0 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +1.2267 0 TD +(RIGHTPAREN)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +1.2267 0 TD +(LEFTBRACKET)Tj +/TT8 1 Tf +6.6011 0 TD +(,)Tj +/TT10 1 Tf +-39.7539 -1.2889 TD +(RIGHTBRACKET)Tj +/TT8 1 Tf +7.2012 0 TD +(, )Tj +/TT10 1 Tf +0.6356 0 TD +(STRINGDELIM)Tj +/TT8 1 Tf +6.6011 0 TD +0.1356 Tw +(, and )Tj +/TT10 1 Tf +2.714 0 TD +0 Tw +(BREAKCHAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1356 Tw +[(. For purely symmetrical reasons, the)]TJ +-22.5527 -1.2889 TD +0 Tw +(atom )Tj +/TT10 1 Tf +2.6638 0 TD +(SEPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1589 Tw +[( corresponds to all separator characters. However, since the only separator)]TJ +-5.0642 -1.2889 TD +0 Tw +(characters are those that also appear in )Tj +/TT10 1 Tf +17.4141 0 TD +(SEPRCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(SEPR)Tj +/TT8 1 Tf +2.4004 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(SEPRCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +( are equivalent.)Tj +-32.1089 -2.0667 TD +0.0344 Tw +(Note that )Tj +/TT10 1 Tf +4.4854 0 TD +0 Tw +(GETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.0344 Tw +[( never returns )]TJ +/TT10 1 Tf +6.5574 0 TD +0 Tw +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0344 Tw +[( or )]TJ +/TT10 1 Tf +1.5098 0 TD +0 Tw +(SEPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0344 Tw +[( as a value although )]TJ +/TT10 1 Tf +9.2704 0 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.0344 Tw +[( and)]TJ +/TT10 1 Tf +-38.0256 -1.2889 TD +0 Tw +(SYNTAXP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0002 Tc +0.0042 Tw +( accept them as arguments. Instead, )Tj +/TT10 1 Tf +16.2757 0 TD +0 Tc +0 Tw +(GETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.0001 Tc +0.0043 Tw +( returns one of the disjoint basic)Tj +-25.8773 -1.2889 TD +0 Tc +0.0411 Tw +(syntax classes that comprise )Tj +/TT10 1 Tf +12.851 0 TD +0 Tw +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0411 Tw +(. )Tj +/TT10 1 Tf +0.8322 0 TD +0 Tw +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.0411 Tw +[( as an argument to )]TJ +/TT10 1 Tf +8.6577 0 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.0411 Tw +[( is interpreted)]TJ +-33.7428 -1.2889 TD +0.01 Tw +(to mean )Tj +/TT10 1 Tf +3.8359 0 TD +0 Tw +(BREAKCHAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.01 Tw +[( if the character is not already of one of the )]TJ +/TT10 1 Tf +19.1891 0 TD +0 Tw +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.01 Tw +[( classes. Thus, if )]TJ +/TT10 1 Tf +7.3711 0 TD +0 Tw +(%\()Tj +/TT8 1 Tf +-38.7974 -1.2889 TD +0.0644 Tw +(is of class )Tj +/TT10 1 Tf +4.6196 0 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0644 Tw +(, then )Tj +/TT10 1 Tf +2.8481 0 TD +0.1544 Tw +(\(SETSYNTAX %\( BREAK\))Tj +/TT8 1 Tf +13.511 0 TD +0.0644 Tw +[( doesnt do anything, since )]TJ +/TT10 1 Tf +12.4199 0 TD +0 Tw +(%\()Tj +/TT8 1 Tf +-38.7995 -1.2889 TD +0.1044 Tw +(is already a break character, but )Tj +/TT10 1 Tf +14.9543 0 TD +0.2511 Tw +(\(SETSYNTAX %\( BREAKCHAR\))Tj +/TT8 1 Tf +16.1048 0 TD +0.1044 Tw +[( means make )]TJ +/TT10 1 Tf +6.349 0 TD +0 Tw +(%\()Tj +/TT8 1 Tf +1.2002 0 TD +0.1044 Tw +[( be)]TJ +/TT16 1 Tf +-38.6082 -1.2889 TD +0 Tw +(just)Tj +/TT8 1 Tf +1.5562 0 TD +0.0456 Tw +[( a break character, and therefore disables the )]TJ +/TT10 1 Tf +20.3298 0 TD +0 Tw +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0456 Tw +[( function of )]TJ +/TT10 1 Tf +5.4726 0 TD +0 Tw +(%\()Tj +/TT8 1 Tf +1.2002 0 TD +0.0456 Tw +[(. Similarly, if)]TJ +-33.9596 -1.2889 TD +0.0122 Tw +(one of the format characters is disabled completely, e.g., by )Tj +/TT10 1 Tf +26.4821 0 TD +0.03 Tw +(\(SETSYNTAX %\( OTHER\))Tj +/TT8 1 Tf +13.2621 0 TD +0 Tw +(,)Tj +-39.7442 -1.2889 TD +(then )Tj +/TT10 1 Tf +2.2415 0 TD +0.0544 Tw +(\(SETSYNTAX %\( BREAK\))Tj +/TT8 1 Tf +13.311 0 TD +0.0222 Tw +[( would make )]TJ +/TT10 1 Tf +6.1194 0 TD +0 Tw +(%\()Tj +/TT8 1 Tf +1.2002 0 TD +0.0222 Tw +[( be )]TJ +/TT16 1 Tf +1.5767 0 TD +0 Tw +(only)Tj +/TT8 1 Tf +1.7778 0 TD +0.0222 Tw +[( a break character; it would )]TJ +/TT16 1 Tf +12.4336 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +-38.6602 -1.2889 TD +(restore )Tj +/TT10 1 Tf +3.2939 0 TD +(%\()Tj +/TT8 1 Tf +1.2002 0 TD +( as )Tj +/TT10 1 Tf +1.4238 0 TD +(LEFTPAREN)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +ET +endstream +endobj +111 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +113 0 obj +<< +/Length 7866 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-33)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0656 Tw +(The following functions provide a way of collectively accessing and setting the separator)Tj +0 -1.2222 TD +0 Tw +(and break characters in a read table:)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETSEPR)Tj +/TT18 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-28919.4([Function])]TJ +-5.9839 -1.8444 TD +0.0467 Tw +(Returns a list of separator character codes in )Tj +/TT12 1 Tf +20.1687 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0467 Tw +[(. Equivalent to )]TJ +/TT10 1 Tf +7.1168 0 TD +0.1122 Tw +(\(GETSYNTAX SEPR)Tj +/TT12 1 Tf +-30.2861 -1.2889 TD +0 Tw +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +/TT10 1 Tf +-6.2673 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(GETBRK)Tj +/TT18 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29519.4([Function])]TJ +-5.3839 -1.8444 TD +0.1622 Tw +(Returns a list of break character codes in )Tj +/TT12 1 Tf +19.4106 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.1622 Tw +[(. Equivalent to )]TJ +/TT10 1 Tf +7.5791 0 TD +0 Tw +(\(GETSYNTAX)Tj +/TT18 1 Tf +6.001 0 TD +( )Tj +/TT10 1 Tf +0.4122 0 TD +(BREAK)Tj +/TT12 1 Tf +-36.4033 -1.2889 TD +(RDTBL)Tj +/TT18 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.333 0 TD +(.)Tj +/TT10 1 Tf +-6.0002 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETSEPR)Tj +/TT18 1 Tf +4.1999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LST)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24818.8([Function])]TJ +-10.0845 -1.8444 TD +0.0111 Tw +(Sets or removes the separator characters for )Tj +/TT12 1 Tf +19.609 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0111 Tw +(. )Tj +/TT12 1 Tf +0.7722 0 TD +0 Tw +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.0111 Tw +[( is a list of charactors or character)]TJ +-25.182 -1.2889 TD +0.0044 Tw +(codes. )Tj +/TT12 1 Tf +3.2623 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0002 Tc +0.0042 Tw +( determines the action of )Tj +/TT10 1 Tf +11.176 0 TD +0 Tc +0 Tw +(SETSEPR)Tj +/TT8 1 Tf +4.2007 0 TD +0.0005 Tc +0.0039 Tw +( as follows: If )Tj +/TT12 1 Tf +6.3806 0 TD +0 Tc +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0044 Tw +(, makes )Tj +/TT12 1 Tf +3.6007 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0009 Tc +0.0035 Tw +( have)Tj +-37.6218 -1.2889 TD +0 Tc +0.25 Tw +(exactly the elements of )Tj +/TT12 1 Tf +11.3213 0 TD +0 Tw +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.25 Tw +[( as separators, discarding from )]TJ +/TT12 1 Tf +15.125 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.25 Tw +[( any old separator)]TJ +-31.2471 -1.2889 TD +0.02 Tw +(characters not in )Tj +/TT12 1 Tf +7.6259 0 TD +0 Tw +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.02 Tw +[(. If )]TJ +/TT12 1 Tf +1.7299 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.02 Tw +(0, removes from )Tj +/TT12 1 Tf +7.4872 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.02 Tw +[( as separator characters all elements)]TJ +-24.0443 -1.2889 TD +0 Tw +(of )Tj +/TT12 1 Tf +1.1522 0 TD +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[(. This provides an ")]TJ +/TT10 1 Tf +8.8911 0 TD +0 Tw +(UNSETSEPR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0233 Tw +[(". If )]TJ +/TT12 1 Tf +2.111 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +0.0233 Tw +(1, makes each of the characters in )Tj +/TT12 1 Tf +15.1379 0 TD +0 Tw +(LST)Tj +/TT8 1 Tf +1.8003 0 TD +0.0233 Tw +[( be)]TJ +-38.6941 -1.2889 TD +0 Tw +(a separator in )Tj +/TT12 1 Tf +6.2891 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +-9.2896 -2.0667 TD +(If )Tj +/TT12 1 Tf +1.1255 0 TD +(LST)Tj +/TT10 1 Tf +1.8003 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +0.2056 Tw +(, the separator characters are reset to be those in the systems read table for)Tj +-4.126 -1.2889 TD +0.0833 Tw +(terminals, regardless of the value of )Tj +/TT12 1 Tf +16.5576 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0833 Tw +(, i.e., )Tj +/TT10 1 Tf +2.4367 0 TD +0.2011 Tw +(\(SETSEPR T\))Tj +/TT8 1 Tf +6.8022 0 TD +0.0833 Tw +[( is equivalent to )]TJ +/TT10 1 Tf +7.5965 0 TD +0 Tw +(\(SETSEPR)Tj +-35.1933 -1.2889 TD +0.4556 Tw +(\(GETSEPR T\)\))Tj +/TT8 1 Tf +7.6567 0 TD +0.19 Tw +[(. If )]TJ +/TT12 1 Tf +2.2399 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.19 Tw +[( is )]TJ +/TT10 1 Tf +1.5948 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.19 Tw +(, then the characters are reset to those in the original)Tj +-15.0921 -1.2889 TD +0 Tw +(system table.)Tj +0 -2 TD +(Returns )Tj +/TT10 1 Tf +3.7271 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-8.194 -2.4 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(SETBRK)Tj +/TT18 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(LST)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25418.8([Function])]TJ +-9.4845 -1.8444 TD +(Sets the break characters for )Tj +/TT12 1 Tf +12.6372 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +(. Similar to )Tj +/TT10 1 Tf +5.2979 0 TD +(SETSEPR)Tj +/TT8 1 Tf +4.2007 0 TD +(.)Tj +-25.1362 -2.0667 TD +0.2244 Tw +(As with )Tj +/TT10 1 Tf +4.1838 0 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.2244 Tw +[( to the )]TJ +/TT10 1 Tf +3.6826 0 TD +0 Tw +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.2244 Tw +[( class, if any of the list- or string-delimiting break)]TJ +-16.2677 -1.2889 TD +0.31 Tw +(characters are disabled by an appropriate )Tj +/TT10 1 Tf +20.4093 0 TD +0 Tw +(SETBRK)Tj +/TT8 1 Tf +3.6006 0 TD +0.31 Tw +[( \(or by making it be a separator)]TJ +-24.0099 -1.2889 TD +0.0644 Tw +(character\), its special action for )Tj +/TT10 1 Tf +14.2539 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0644 Tw +[( will )]TJ +/TT16 1 Tf +2.3359 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0644 Tw +[( be restored by simply making it be a break)]TJ +-20.3232 -1.2889 TD +0.2122 Tw +(character again with )Tj +/TT10 1 Tf +9.914 0 TD +0 Tw +(SETBRK)Tj +/TT8 1 Tf +3.6006 0 TD +0.2122 Tw +[(. However, making these characters be break characters)]TJ +-13.5146 -1.2889 TD +0 Tw +(when they already )Tj +/TT16 1 Tf +8.5024 0 TD +(are)Tj +/TT8 1 Tf +1.2222 0 TD +( will have no effect.)Tj +-9.7246 -2 TD +0.08 Tw +(The action of the )Tj +/TT10 1 Tf +7.9489 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( character \(normally )]TJ +/TT10 1 Tf +9.4319 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.08 Tw +(\) is not affected by )Tj +/TT10 1 Tf +8.7662 0 TD +0 Tw +(SETSEPR)Tj +/TT8 1 Tf +4.2007 0 TD +0.08 Tw +[( or )]TJ +/TT10 1 Tf +1.6009 0 TD +0 Tw +(SETBRK)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-39.7499 -1.2889 TD +0.1444 Tw +(It can be disabled by setting its syntax to the class )Tj +/TT10 1 Tf +23.7007 0 TD +0 Tw +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +0.1444 Tw +(, and other characters can be)Tj +-26.7012 -1.2889 TD +0.2844 Tw +(used for escape on input by assigning them the class )Tj +/TT10 1 Tf +26.2483 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2844 Tw +[(. As of this writing,)]TJ +-29.8488 -1.2889 TD +0.1289 Tw +(however, there is no way to change the output escape character; it is "hardwired" as )Tj +/TT10 1 Tf +39.1526 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-39.7527 -1.2889 TD +0.1067 Tw +(That is, on output, characters of special syntax that need to be preceded by the )Tj +/TT10 1 Tf +36.4057 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +-36.4057 -1.2889 TD +0.0978 Tw +(character will always be preceded by )Tj +/TT10 1 Tf +17.2039 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +(, independent of the syntax of )Tj +/TT10 1 Tf +14.009 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.0978 Tw +[( or which, if any)]TJ +-32.4131 -1.2889 TD +0 Tw +(characters, have syntax )Tj +/TT10 1 Tf +10.519 0 TD +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-14.1196 -2.0667 TD +0.1278 Tw +(The following function can be used for defeating the action of the )Tj +/TT10 1 Tf +30.6325 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1278 Tw +[( character or)]TJ +-34.233 -1.2889 TD +0 Tw +(characters:)Tj +ET +endstream +endobj +114 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +116 0 obj +<< +/Length 6166 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-34)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(ESCAPE)Tj +/TT18 1 Tf +3.5999 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(FLG)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27469.1([Function])]TJ +-7.4342 -1.8444 TD +(If )Tj +/TT12 1 Tf +1.0255 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1056 Tw +(, makes characters of class )Tj +/TT10 1 Tf +12.3198 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1056 Tw +[( behave like characters of class )]TJ +/TT10 1 Tf +14.3589 0 TD +0 Tw +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +0.1056 Tw +[( on)]TJ +-38.5059 -1.2889 TD +0 Tw +(input. Normal setting is )Tj +/TT10 1 Tf +11.0483 0 TD +(\(ESCAPE T\))Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT18 1 Tf +0.25 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +( returns the previous setting.)Tj +/TT4 1 Tf +10 0 0 10 126 511.4 Tm +(Read Macros)Tj +/TT8 1 Tf +9 0 0 9 126 487.74 Tm +0.1489 Tw +[(This is a description of the OLD-INTERLISP-T read macros. Read macros are user-defined syntax)]TJ +0 -1.2222 TD +0.1122 Tw +[(classes that can cause complex operations when certain characters are read. Read macro characters)]TJ +T* +0 Tw +(are defined by specifying as a syntax class an expression of the form:)Tj +/TT10 1 Tf +9.3333 -2.8222 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TYPE)Tj +/TT10 1 Tf +2.4004 0 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(OPTION)Tj +3.5994 -0.3333 TD +(1)Tj +/TT10 1 Tf +0.6 0.3333 TD +( ... )Tj +/TT12 1 Tf +3.0005 0 TD +(OPTION)Tj +3.5995 -0.3333 TD +(N)Tj +/TT10 1 Tf +0.6 0.3333 TD +( )Tj +/TT12 1 Tf +0.6001 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT8 1 Tf +-26.1336 -3.0667 TD +(where )Tj +/TT12 1 Tf +3.209 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.19 Tw +[( is one of )]TJ +/TT10 1 Tf +4.9607 0 TD +0 Tw +(MACRO)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.69 0 TD +(SPLICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.19 Tw +(, or )Tj +/TT10 1 Tf +2.0709 0 TD +0 Tw +(INFIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.19 Tw +(, and )Tj +/TT12 1 Tf +2.8229 0 TD +0 Tw +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +0.19 Tw +[( is the name of a function or a lambda)]TJ +-26.9557 -1.2889 TD +0.0111 Tw +[(expression. Whenever )]TJ +/TT10 1 Tf +10.3312 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( encounters a read macro character, it calls the associated function, giving)]TJ +-12.7316 -1.2889 TD +0.0189 Tw +(it as arguments the input stream and read table being used for that call to )Tj +/TT10 1 Tf +32.9313 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[(. The interpretation of)]TJ +-35.3317 -1.2889 TD +0 Tw +(the value returned depends on the type of read macro:)Tj +/TT10 1 Tf +6.3333 -2 TD +(MACRO)Tj +/TT8 1 Tf +4.3333 0 TD +0.0167 Tw +[(This is the simplest type of read macro. The result returned from the macro is)]TJ +0 -1.2889 TD +0.2344 Tw +(treated as the expression to be read, instead of the read macro character.)Tj +0 -1.2222 TD +0.24 Tw +[(Often the macro reads more input itself. For example, in order to cause)]TJ +/TT18 1 Tf +T* +0 Tw +(~)Tj +/TT10 1 Tf +0.606 0 TD +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +( to be read as )Tj +/TT10 1 Tf +6.063 0 TD +(\(NOT)Tj +/TT18 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +0.25 0 TD +(EXPR\))Tj +/TT8 1 Tf +3.0005 0 TD +(, one could define )Tj +/TT18 1 Tf +8.1265 0 TD +(~)Tj +/TT8 1 Tf +0.606 0 TD +( as the read macro:)Tj +/TT10 1 Tf +-14.1193 -1.7778 TD +([MACRO \(LAMBDA \(FL RDTBL\))Tj +0 -1 TD +( \(LIST NOT \(READ FL RDTBL])Tj +-14.2667 -1.8444 TD +(SPLICE)Tj +/TT8 1 Tf +4.9333 0 TD +0.2189 Tw +(The result \(which should be a list or )Tj +/TT10 1 Tf +17.8707 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2189 Tw +(\) is spliced into the input using)Tj +/TT10 1 Tf +-19.671 -1.2889 TD +0 Tw +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +(. For example, if )Tj +/TT10 1 Tf +7.6201 0 TD +($)Tj +/TT8 1 Tf +0.6001 0 TD +( is defined by the read macro:)Tj +/TT10 1 Tf +-1.8874 -2 TD +(\(SPLICE \(LAMBDA NIL \(APPEND FOO\)\)\))Tj +/TT8 1 Tf +-9.3333 -2.0667 TD +0.0511 Tw +(and the value of )Tj +/TT10 1 Tf +7.6014 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0511 Tw +[( is )]TJ +/TT10 1 Tf +1.3171 0 TD +0.1211 Tw +(\(A B C\))Tj +/TT8 1 Tf +4.4429 0 TD +0.0511 Tw +(, then when you input )Tj +/TT10 1 Tf +10.3102 0 TD +0.1211 Tw +(\(X $ Y\))Tj +/TT8 1 Tf +4.4429 0 TD +0.0511 Tw +(, the result)Tj +-29.9148 -1.2889 TD +0 Tw +(will be )Tj +/TT10 1 Tf +3.2393 0 TD +(\(X A B C Y\))Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-14.1737 -2.0667 TD +(INFIX)Tj +/TT8 1 Tf +4.3333 0 TD +0.1878 Tw +(The associated function is called with a third argument, which is a list, in)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(TCONC)Tj +/TT8 1 Tf +3.0005 0 TD +0.1222 Tw +[( format \(Chapter 3\), of what has been read at the current level of list)]TJ +-3.0005 -1.2889 TD +0.0433 Tw +[(nesting. The functions value is taken as a new )]TJ +/TT10 1 Tf +21.4211 0 TD +0 Tw +(TCONC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +[( list which replaces the)]TJ +-24.4216 -1.2889 TD +0.2278 Tw +[(old one. For example, the infix operator )]TJ +/TT10 1 Tf +19.8115 0 TD +0 Tw +(+)Tj +/TT8 1 Tf +0.6001 0 TD +0.2278 Tw +[( could be defined by the read)]TJ +-20.4116 -1.2889 TD +0 Tw +(macro:)Tj +/TT10 1 Tf +9.3333 -1.7111 TD +(\(INFIX \(LAMBDA \(FL RDTBL Z\))Tj +0 -1 TD +( \(RPLACA \(CDR Z\))Tj +T* +( \(LIST \(QUOTE IPLUS\))Tj +T* +( \(CADR Z\))Tj +T* +( \(READ FL RDTBL\)\)\))Tj +T* +( Z\)\))Tj +/TT8 1 Tf +-9.3333 -1.8444 TD +0.2867 Tw +(If an )Tj +/TT10 1 Tf +2.8253 0 TD +0 Tw +(INFIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.2867 Tw +[( read macro character is encountered )]TJ +/TT16 1 Tf +18.2781 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.2867 Tw +[( in a list, the third)]TJ +-25.4369 -1.2889 TD +0.1344 Tw +(argument to its associated function is )Tj +/TT10 1 Tf +17.5103 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1344 Tw +[(. If the function returns )]TJ +/TT10 1 Tf +11.5249 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1344 Tw +(, the)Tj +-32.6358 -1.2889 TD +0.0001 Tc +0.0043 Tw +(read macro character is essentially ignored and reading continues. Otherwise,)Tj +0 -1.2222 TD +0 Tc +0.0156 Tw +(if the function returns a )Tj +/TT10 1 Tf +10.7501 0 TD +0 Tw +(TCONC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0156 Tw +[( list of one element, that element is the value of)]TJ +ET +endstream +endobj +117 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +119 0 obj +<< +/Length 6534 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-35)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +(the )Tj +/TT10 1 Tf +1.7361 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +[(. If it returns a )]TJ +/TT10 1 Tf +7.3345 0 TD +0 Tw +(TCONC)Tj +/TT8 1 Tf +3.0005 0 TD +0.0989 Tw +[( list of more than one element, the list is the)]TJ +-14.4715 -1.2889 TD +0 Tw +(value of the )Tj +/TT10 1 Tf +5.4541 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-18.5212 -2.9556 TD +0.1133 Tw +(The specification for a read macro character can be augmented to specify various options )Tj +/TT12 1 Tf +41.1204 0 TD +0 Tw +(OPTION)Tj +3.6074 -0.3333 TD +(1)Tj +/TT10 1 Tf +-44.7278 -1.2889 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.3356 0 TD +(OPTION)Tj +3.5997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0856 Tw +(, e.g., )Tj +/TT10 1 Tf +2.7063 0 TD +0.2044 Tw +(\(MACRO FIRST IMMEDIATE)Tj +/TT18 1 Tf +13.611 0 TD +0 Tw +( )Tj +/TT12 1 Tf +0.3356 0 TD +(FN)Tj +/TT10 1 Tf +1.2002 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +0.0856 Tw +[(. The following three disjoint options specify)]TJ +-24.7887 -1.6222 TD +0 Tw +(when the read macro character is to be effective:)Tj +/TT10 1 Tf +5.7333 -2 TD +(ALWAYS)Tj +/TT8 1 Tf +4.9333 0 TD +0.2867 Tw +[(The default. The read macro character is always effective \(except when)]TJ +0 -1.2889 TD +0.2533 Tw +(preceded by the )Tj +/TT10 1 Tf +8.1052 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.2533 Tw +[( character\), and is a break character, i.e., a member of)]TJ +/TT10 1 Tf +-8.7053 -1.2889 TD +0 Tw +(\(GETSYNTAX BREAK)Tj +/TT18 1 Tf +10.2017 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +(. )Tj +/TT10 1 Tf +-18.3856 -2.0667 TD +(FIRST)Tj +/TT8 1 Tf +4.3333 0 TD +0.0544 Tw +(The character is interpreted as a read macro character )Tj +/TT16 1 Tf +24.3992 0 TD +0 Tw +(only)Tj +/TT8 1 Tf +1.7778 0 TD +0.0544 Tw +[( when it is the first)]TJ +-26.177 -1.2889 TD +0.08 Tw +(character seen after a break or separator character; in all other situations, the)Tj +0 -1.2222 TD +0.0633 Tw +(character is treated as having class )Tj +/TT10 1 Tf +15.8585 0 TD +0 Tw +(OTHER)Tj +/TT8 1 Tf +3.0005 0 TD +0.0633 Tw +[(. The read macro character is )]TJ +/TT16 1 Tf +13.6494 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0633 Tc +( a)Tj +-33.8414 -1.2889 TD +0 Tc +0.2033 Tw +[(break character. For example, the quote character is a )]TJ +/TT10 1 Tf +26.0089 0 TD +0 Tw +(FIRST)Tj +/TT8 1 Tf +3.0005 0 TD +0.2033 Tw +[( read macro)]TJ +-29.0094 -1.2889 TD +0.0433 Tw +(character, so that )Tj +/TT10 1 Tf +7.899 0 TD +0 Tw +(DONT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +[( is read as the single atom )]TJ +/TT10 1 Tf +11.942 0 TD +0 Tw +(DONT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +(, rather than as )Tj +/TT10 1 Tf +7.0146 0 TD +0 Tw +(DON)Tj +/TT8 1 Tf +-32.8567 -1.2889 TD +(followed by )Tj +/TT10 1 Tf +5.54 0 TD +(\(QUOTE T\))Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-15.2743 -2.0667 TD +(ALONE)Tj +/TT8 1 Tf +4.3333 0 TD +0.0389 Tw +(The read macro character is )Tj +/TT16 1 Tf +12.6505 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.0389 Tw +[( a break character, and is interpreted as a read)]TJ +-13.9835 -1.2889 TD +0.0589 Tw +(macro character only when the character would have been read as a separate)Tj +0 -1.2222 TD +0.04 Tw +(atom if it were not a read macro character, i.e., when its immediate neighbors)Tj +T* +0 Tw +(are both break or separator characters.)Tj +-10.4444 -2.8889 TD +0.0056 Tw +(Making a )Tj +/TT10 1 Tf +4.4423 0 TD +0 Tw +(FIRST)Tj +/TT8 1 Tf +3.0005 0 TD +0.0056 Tw +[( or )]TJ +/TT10 1 Tf +1.452 0 TD +0 Tw +(ALONE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0056 Tw +[( read macro character be a break character \(with )]TJ +/TT10 1 Tf +21.5642 0 TD +0 Tw +(SETBRK)Tj +/TT8 1 Tf +3.6006 0 TD +0.0056 Tw +(\) disables the read)Tj +-37.2822 -1.2889 TD +0.1733 Tw +(macro interpretation, i.e., converts it to syntax class )Tj +/TT10 1 Tf +24.2807 0 TD +0 Tw +(BREAKCHAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1733 Tw +[(. Making an )]TJ +/TT10 1 Tf +6.4565 0 TD +0 Tw +(ALWAYS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1733 Tw +[( read macro)]TJ +-39.7387 -1.2889 TD +0 Tw +(character be a break character is a no-op.)Tj +0.2222 -2.8889 TD +0.0311 Tw +(The following two disjoint options control whether the read macro character is to be protected by the)Tj +/TT10 1 Tf +-0.2222 -1.2222 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +3.6006 0 TD +( character on output when a litatom containing the character is printed:)Tj +/TT10 1 Tf +-2.3084 -2.0667 TD +(ESCQUOTE)Tj +/TT8 1 Tf +4.8008 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(ESC)Tj +/TT8 1 Tf +3.1327 0 TD +0.2033 Tw +[(The default. When printed with )]TJ +/TT10 1 Tf +15.7483 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +3.0005 0 TD +0.2033 Tw +(, the read macro character will be)Tj +-18.7488 -1.2889 TD +0.1789 Tw +(preceded by the output escape character \()Tj +/TT10 1 Tf +19.4986 0 TD +0 Tw +(%)Tj +/TT8 1 Tf +0.6001 0 TD +0.1789 Tw +(\) as needed to permit the atom)Tj +-20.0987 -1.2889 TD +0.1511 Tw +[(containing it to be read correctly. Note that for )]TJ +/TT10 1 Tf +22.5341 0 TD +0 Tw +(FIRST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1511 Tw +[( macros, this means)]TJ +-25.5345 -1.2889 TD +0.1711 Tw +(that the character need be quoted only when it is the first character of the)Tj +0 -1.2222 TD +0 Tw +(atom.)Tj +/TT10 1 Tf +-11.7744 -2 TD +(NOESCQUOTE)Tj +/TT8 1 Tf +6.001 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NOESC)Tj +/TT8 1 Tf +4.3326 0 TD +0.2311 Tw +[(The read macro character will always be printed without an escape. For)]TJ +0 -1.2889 TD +0.1778 Tw +(example, the )Tj +/TT18 1 Tf +6.2418 0 TD +0 Tw +(?)Tj +/TT8 1 Tf +0.4438 0 TD +0.1778 Tw +[( read macro in the )]TJ +/TT10 1 Tf +9.1516 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1778 Tw +[( read table is a )]TJ +/TT10 1 Tf +7.488 0 TD +0 Tw +(NOESCQUOTE)Tj +/TT8 1 Tf +6.001 0 TD +0.1778 Tw +[( character.)]TJ +-29.9263 -1.2889 TD +0.1911 Tw +(Unless you are very careful what you are doing, read macro characters in)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.2589 Tw +[( should never be )]TJ +/TT10 1 Tf +8.6244 0 TD +0 Tw +(NOESCQUOTE)Tj +/TT8 1 Tf +6.001 0 TD +0.2589 Tw +(, since symbols that happen to)Tj +-20.0263 -1.2889 TD +0 Tw +(contain the read macro character will not read back in correctly.)Tj +-10.4444 -2.8889 TD +(The following two disjoint options control when the macros function is actually executed:)Tj +/TT10 1 Tf +-0.73 -2 TD +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(IMMED)Tj +/TT8 1 Tf +4.3326 0 TD +0.2122 Tw +(The read macro character is immediately activated, i.e., the current line is)Tj +0 -1.2889 TD +0.0167 Tw +(terminated, as if an )Tj +/TT10 1 Tf +8.8186 0 TD +0 Tw +(EOL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0167 Tw +[( had been typed, a carriage-return line-feed is printed,)]TJ +ET +endstream +endobj +120 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +122 0 obj +<< +/Length 5626 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-36)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 569.54 Tm +0.2367 Tw +(and the entire line \(including the macro character\) is passed to the input)Tj +0 -1.2222 TD +0 Tw +(function.)Tj +/TT10 1 Tf +0 -2 TD +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0611 Tw +[( read macro characters enable you to specify a character that will)]TJ +-5.4009 -1.2889 TD +0.0722 Tw +(take effect immediately, as soon as it is encountered in the input, rather than)Tj +0 -1.2222 TD +0.0411 Tw +[(waiting for the line to be terminated. Note that this is not necessarily as soon)]TJ +T* +0.1933 Tw +(as the character is )Tj +/TT16 1 Tf +8.8642 0 TD +0 Tw +(typed)Tj +/TT8 1 Tf +2.2222 0 TD +0.1933 Tw +[(. Characters that cause action as soon as they are)]TJ +-11.0863 -1.2222 TD +0 Tw +(typed are interrupt characters \(see Chapter 30\).)Tj +0 -2 TD +0.0622 Tw +(Note that since an )Tj +/TT10 1 Tf +8.4672 0 TD +0 Tw +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0622 Tw +[( macro causes any input before it to be sent to)]TJ +-13.868 -1.2889 TD +0.3078 Tw +(the reader, characters typed before an )Tj +/TT10 1 Tf +18.772 0 TD +0 Tw +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +0.3078 Tw +[( read macro character)]TJ +-24.1728 -1.2889 TD +0.1289 Tw +(cannot be erased by Control-A or Control-Q once the )Tj +/TT10 1 Tf +24.8182 0 TD +0 Tw +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1289 Tw +[( character)]TJ +-30.2191 -1.2889 TD +0.2967 Tw +(has been typed, since they have already passed through the line buffer.)Tj +0 -1.2222 TD +0.11 Tw +(However, an )Tj +/TT10 1 Tf +6.1819 0 TD +0 Tw +(INFIX)Tj +/TT8 1 Tf +3.0005 0 TD +0.11 Tw +[( read macro can still alter some of what has been typed)]TJ +-9.1824 -1.2889 TD +0 Tw +(earlier, via its third argument.)Tj +/TT10 1 Tf +-13.33 -2 TD +(NONIMMEDIATE)Tj +/TT8 1 Tf +7.2012 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NONIMMED)Tj +/TT8 1 Tf +5.3546 0 TD +0.05 Tw +[(The default. The read macro character is a normal character with respect to)]TJ +-0.6667 -1.2889 TD +0.2622 Tw +(the line buffering, and so will not be activated until a carriage-return or)Tj +0 -1.2222 TD +0 Tw +(matching right parenthesis or bracket is seen.)Tj +0 -2 TD +0.4378 Tw +(Making a read macro character be both )Tj +/TT10 1 Tf +20.6025 0 TD +0 Tw +(ALONE)Tj +/TT8 1 Tf +3.0005 0 TD +0.4378 Tw +[( and )]TJ +/TT10 1 Tf +3.0684 0 TD +0 Tw +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +0.4378 Tw +[( is a)]TJ +-32.0723 -1.2889 TD +0.1011 Tw +(contradiction, since )Tj +/TT10 1 Tf +9.0557 0 TD +0 Tw +(ALONE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1011 Tw +[( requires that the next character be input in order)]TJ +-12.0562 -1.2889 TD +0.1511 Tw +[(to see if it is a break or separator character. Thus, )]TJ +/TT10 1 Tf +23.9002 0 TD +0 Tw +(ALONE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1511 Tw +[( read macros are)]TJ +-26.9007 -1.2889 TD +0 Tw +(always )Tj +/TT10 1 Tf +3.355 0 TD +(NONIMMEDIATE)Tj +/TT8 1 Tf +7.2012 0 TD +(, regardless of whether or not )Tj +/TT10 1 Tf +13.2549 0 TD +(IMMEDIATE)Tj +/TT8 1 Tf +5.4009 0 TD +( is specified.)Tj +-39.8786 -2.9556 TD +(Read macro characters can be "nested". For example, if )Tj +/TT10 1 Tf +24.5855 0 TD +(=)Tj +/TT8 1 Tf +0.6001 0 TD +( is defined by)Tj +/TT10 1 Tf +-15.8522 -2.8889 TD +(\(MACRO \(LAMBDA \(FL RDTBL\))Tj +0 -1.2222 TD +( \(EVAL \(READ FL RDTBL\)\)\)\))Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(!)Tj +/TT8 1 Tf +0.6001 0 TD +( is defined by)Tj +/TT10 1 Tf +6.7904 -2.8889 TD +(\(SPLICE \(LAMBDA \(FL RDTBL\))Tj +0 -1.2222 TD +( \(READ FL RDTBL\)\)\))Tj +/TT8 1 Tf +-9.3333 -2.9556 TD +0.0022 Tw +(then if the value of )Tj +/TT10 1 Tf +8.5585 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0006 Tc +0.0016 Tw +( is )Tj +/TT10 1 Tf +1.2193 0 TD +0 Tc +0.0044 Tw +(\(A B C\))Tj +/TT8 1 Tf +4.2096 0 TD +0.0022 Tw +(, and)Tj +/TT10 1 Tf +2.1951 0 TD +0.0004 Tc +0.004 Tw +( \(X =FOO Y\))Tj +/TT8 1 Tf +6.6144 0 TD +0.0002 Tc +0.002 Tw +( is input, )Tj +/TT10 1 Tf +4.1248 0 TD +0 Tc +0.0044 Tw +(\(X \(A B C\) Y\))Tj +/TT8 1 Tf +7.819 0 TD +0.0002 Tc +0.002 Tw +( will be returned. If)Tj +/TT10 1 Tf +-36.541 -1.2889 TD +0 Tc +0 Tw +(\(X !=FOO Y\))Tj +/TT8 1 Tf +6.6011 0 TD +( is input, )Tj +/TT10 1 Tf +4.1182 0 TD +(\(X A B C Y\))Tj +/TT8 1 Tf +6.6011 0 TD +( will be returned.)Tj +-17.3203 -2.9556 TD +0.3222 Tw +[(Note: If a read macros function calls )]TJ +/TT10 1 Tf +19.2907 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.3222 Tw +(, and the )Tj +/TT10 1 Tf +5.0467 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.3222 Tw +[( returns )]TJ +/TT10 1 Tf +4.3485 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3222 Tw +(, the function cannot)Tj +-35.287 -1.2889 TD +0.0156 Tw +(distinguish the case where a )Tj +/TT10 1 Tf +12.8117 0 TD +0 Tw +(RIGHTPAREN)Tj +/TT8 1 Tf +6.001 0 TD +0.0156 Tw +[( or )]TJ +/TT10 1 Tf +1.472 0 TD +0 Tw +(RIGHTBRACKET)Tj +/TT8 1 Tf +7.2012 0 TD +0.0156 Tw +[( followed the read macro character, \(e.g.)]TJ +-27.4858 -1.2889 TD +0 Tw +(")Tj +/TT10 1 Tf +0.3711 0 TD +0.21 Tw +(\(A B \))Tj +/TT8 1 Tf +4.6207 0 TD +0.0878 Tw +("\), from the case where the atom )Tj +/TT10 1 Tf +15.1203 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0878 Tw +[( \(or ")]TJ +/TT10 1 Tf +2.3206 0 TD +0 Tw +(\(\))Tj +/TT8 1 Tf +1.2002 0 TD +0.0878 Tw +[("\) actually appeared. In Interlisp-D, a )]TJ +/TT10 1 Tf +17.4977 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +-42.9309 -1.2889 TD +0.0711 Tw +(inside of a read macro when the next input character is a )Tj +/TT10 1 Tf +26.1131 0 TD +0 Tw +(RIGHTPAREN)Tj +/TT8 1 Tf +6.001 0 TD +0.0711 Tw +[( or )]TJ +/TT10 1 Tf +1.5831 0 TD +0 Tw +(RIGHTBRACKET)Tj +/TT8 1 Tf +7.2012 0 TD +0.0711 Tw +[( reads the)]TJ +-40.8984 -1.2889 TD +0 Tw +(character and returns )Tj +/TT10 1 Tf +9.7119 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, just as if the )Tj +/TT10 1 Tf +6.022 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +( had not occurred inside a read macro.)Tj +ET +endstream +endobj +123 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 16 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +125 0 obj +<< +/Length 6759 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-37)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.03 Tw +(If a call to )Tj +/TT10 1 Tf +4.6879 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.03 Tw +[( from within a read macro encounters an unmatched )]TJ +/TT10 1 Tf +23.7871 0 TD +0 Tw +(RIGHTBRACKET)Tj +/TT8 1 Tf +7.2012 0 TD +( )Tj +/TT16 1 Tf +0.28 0 TD +(within)Tj +/TT8 1 Tf +2.667 0 TD +0.03 Tw +[( a list, the)]TJ +-41.0235 -1.2889 TD +0.1056 Tw +[(bracket is simply put back into the buffer to be read \(again\) at the higher level. Thus, inputting an)]TJ +0 -1.2222 TD +0 Tw +(expression such as )Tj +/TT10 1 Tf +8.4634 0 TD +(\(A B \(C D])Tj +/TT8 1 Tf +6.6011 0 TD +( works correctly.)Tj +/TT10 1 Tf +-15.0645 -3.1044 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(INREADMACROP)Tj +/TT10 1 Tf +7.1999 0 TD +(\) )Tj +/TT6 1 Tf +10 0 0 10 159.0017 519 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 519 Tm +([Function])Tj +-35.4033 -1.8444 TD +(Returns )Tj +/TT10 1 Tf +3.9915 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2644 Tw +[( if currently )]TJ +/TT16 1 Tf +6.2386 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.2644 Tw +[( under a read macro function, otherwise the number of)]TJ +-13.3634 -1.2889 TD +0 Tw +(unmatched left parentheses or brackets.)Tj +/TT10 1 Tf +-5.3333 -3.0378 TD +(\()Tj +/TT14 1 Tf +0.6001 0 TD +(READMACROS)Tj +/TT4 1 Tf +10 0 0 10 137.4 463.46 Tm +( )Tj +/TT12 1 Tf +9 0 0 9 140.1783 463.46 Tm +(FLG)Tj +/TT16 1 Tf +1.8003 0 TD +( )Tj +/TT12 1 Tf +0.25 0 TD +(RDTBL)Tj +/TT10 1 Tf +3.0005 0 TD +(\))Tj +/TT6 1 Tf +10 0 0 10 191.0362 463.46 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 463.46 Tm +([Function])Tj +-35.4033 -1.8445 TD +(If )Tj +/TT12 1 Tf +0.931 0 TD +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=NIL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +(, turns off action of read macros in read table )Tj +/TT12 1 Tf +20.1546 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0111 Tw +[(. If )]TJ +/TT12 1 Tf +1.7033 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +1.8003 0 TD +(=T)Tj +/TT8 1 Tf +1.2002 0 TD +0.0111 Tw +(, turns them on.)Tj +-32.9905 -1.2889 TD +0 Tw +(Returns previous setting.)Tj +0 -2 TD +0.1167 Tw +(The following read macros are standardly defined in Interlisp in the )Tj +/TT10 1 Tf +31.5685 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1167 Tw +[( and )]TJ +/TT10 1 Tf +2.4262 0 TD +0 Tw +(EDITRDTBL)Tj +/TT8 1 Tf +-34.5948 -1.2889 TD +(read tables:)Tj +/TT10 1 Tf +-3.3367 -2 TD +( )Tj +/TT8 1 Tf +1.2002 0 TD +0.0844 Tw +[(\(single-quote\))-1333.6(Returns the next expression, wrapped in a call to )]TJ +/TT10 1 Tf +30.0262 0 TD +0 Tw +(QUOTE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0844 Tw +(; e.g., )Tj +/TT10 1 Tf +2.704 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +2.4004 0 TD +0.0844 Tw +[( reads as)]TJ +/TT10 1 Tf +-30.6613 -1.2889 TD +0.39 Tw +(\(QUOTE FOO\))Tj +/TT8 1 Tf +6.9911 0 TD +0.1622 Tw +[(. The macro is defined as a )]TJ +/TT10 1 Tf +13.5136 0 TD +0 Tw +(FIRST)Tj +/TT8 1 Tf +3.0005 0 TD +0.1622 Tw +[( read macro, so that the)]TJ +-23.5052 -1.2889 TD +0.1389 Tw +[(quote character has no effect in the middle of a symbol. The macro is also)]TJ +0 -1.2222 TD +0.41 Tw +(ignored if the quote character is immediately followed by a separator)Tj +T* +0 Tw +(character.)Tj +-5.7278 -2 TD +0.2544 Tw +[(Control-Y)-1332.8(Defined in )]TJ +/TT10 1 Tf +11.1585 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.2544 Tw +[( and )]TJ +/TT10 1 Tf +2.7018 0 TD +0 Tw +(EDITRDTBL)Tj +/TT8 1 Tf +5.4009 0 TD +0.2544 Tw +[(. Returns the result of evaluating the next)]TJ +-14.1335 -1.2889 TD +0.0278 Tw +[(expression. For example, if the value of )]TJ +/TT10 1 Tf +18.0333 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +0.0278 Tw +[( is )]TJ +/TT10 1 Tf +1.2704 0 TD +0.0656 Tw +(\(A B\))Tj +/TT8 1 Tf +3.066 0 TD +0.0278 Tw +(, then )Tj +/TT10 1 Tf +2.7748 0 TD +0.0656 Tw +(\(LIST 1)Tj +/TT18 1 Tf +4.2662 0 TD +0 Tw +( )Tj +/TT16 1 Tf +0.2778 0 TD +(control-)Tj +-31.4888 -1.2889 TD +(Y)Tj +/TT10 1 Tf +0.667 0 TD +0.1244 Tw +(FOO 2\))Tj +/TT8 1 Tf +3.725 0 TD +0.0522 Tw +[( is read as )]TJ +/TT10 1 Tf +4.8324 0 TD +0.1244 Tw +(\(LIST 1 \(A B\) 2\))Tj +/TT8 1 Tf +10.0993 0 TD +0.0522 Tw +[(. Note that no structure is copied;)]TJ +-19.3238 -1.2889 TD +0.2244 Tw +(the third element of that input expression is still )Tj +/TT10 1 Tf +23.4726 0 TD +0 Tw +(EQ)Tj +/TT8 1 Tf +1.2002 0 TD +0.2244 Tw +[( to the value of )]TJ +/TT10 1 Tf +7.9484 0 TD +0 Tw +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-34.4215 -1.2889 TD +0.1622 Tw +(Control-Y can thus be used to read structures that ordinarily have no read)Tj +0 -1.2222 TD +0.3811 Tw +[(syntax. For example, the value returned from reading )]TJ +/TT10 1 Tf +27.5965 0 TD +0 Tw +(\(KEY1)Tj +/TT18 1 Tf +3.0005 0 TD +( )Tj +/TT16 1 Tf +0.6311 0 TD +(Control-)Tj +-31.2281 -1.2889 TD +(Y)Tj +/TT10 1 Tf +0.667 0 TD +0.0289 Tw +(\(ARRAY 10\)\))Tj +/TT8 1 Tf +6.63 0 TD +0.0122 Tw +[( has an array as its second element. Control-Y can be thought)]TJ +-7.297 -1.2889 TD +0.0156 Tw +[(of as an "un-quote" character. The choice of character to perform this function)]TJ +0 -1.2222 TD +0 Tw +(is changeable with )Tj +/TT10 1 Tf +8.4644 0 TD +(SETTERMCHARS)Tj +/TT8 1 Tf +7.2012 0 TD +( \(see Chapter 16\).)Tj +/TT10 1 Tf +-23.0822 -2.0667 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +0.3356 Tw +[( )335.6(\(backquote\))-1333.2(Backquote makes it easier to write programs to construct complex data)]TJ +6.8166 -1.2889 TD +0.3722 Tw +[(structures. Backquote is like quote, except that within the backquoted)]TJ +0 -1.2222 TD +0.09 Tw +[(expression, forms can be evaluated. The general idea is that the backquoted)]TJ +T* +0.1289 Tw +(expression is a "template" containing some constant parts \(as with a quoted)Tj +T* +0.1422 Tw +[(form\) and some parts to be filled in by evaluating something. Unlike with)]TJ +T* +0.0278 Tw +(control-Y, however, the evaluation occurs not at the time the form is read, but)Tj +T* +0.16 Tw +[(at the time the backquoted expression is evaluated. That is, the backquote)]TJ +T* +0.1967 Tw +(macro returns an expression which, when evaluated, produces the desired)Tj +T* +0 Tw +(structure.)Tj +0 -2 TD +0.2467 Tw +(Within the backquoted expression, the character ")Tj +/TT18 1 Tf +23.4278 0 TD +0 Tw +(,)Tj +/TT8 1 Tf +0.25 0 TD +0.2467 Tw +(" \(comma\) introduces a)Tj +-23.6778 -1.2222 TD +0.0001 Tc +0.0043 Tw +(form to be evaluated. The value of a form preceded by ")Tj +/TT10 1 Tf +24.9449 0 TD +0 Tc +0 Tw +(,@)Tj +/TT8 1 Tf +1.2002 0 TD +0.0044 Tw +(" is to be spliced in,)Tj +-26.1451 -1.2889 TD +0 Tw +(using )Tj +/TT10 1 Tf +2.8838 0 TD +(APPEND)Tj +/TT8 1 Tf +3.6006 0 TD +0.1778 Tw +[(. If it is permissible to destroy the list being spliced in \(i.e.,)]TJ +/TT10 1 Tf +-6.4844 -1.2889 TD +0 Tw +(NCONC)Tj +/TT8 1 Tf +3.0005 0 TD +( may be used in the translation\), then ")Tj +/TT10 1 Tf +17.0347 0 TD +(,.)Tj +/TT8 1 Tf +1.2002 0 TD +(" can be used instead of ")Tj +/TT10 1 Tf +11.0088 0 TD +(,@)Tj +/TT8 1 Tf +1.2002 0 TD +(".)Tj +-33.4443 -2.0667 TD +(For example, if the value of )Tj +/TT10 1 Tf +12.3242 0 TD +(FOO)Tj +/TT8 1 Tf +1.8003 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(\(1 2 3 4\))Tj +/TT8 1 Tf +5.4009 0 TD +(, then the form)Tj +ET +endstream +endobj +126 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 15 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +128 0 obj +<< +/Length 3902 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-38)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 306 570.14 Tm +(\(A ,\(CAR FOO\) ,@\(CDDR FOO\) D E\))Tj +/TT8 1 Tf +-9.3333 -2.0667 TD +(evaluates to )Tj +/TT10 1 Tf +5.5391 0 TD +(\(A 1 3 4 D E\))Tj +/TT8 1 Tf +7.8013 0 TD +(; it is logically equivalent to writing)Tj +/TT10 1 Tf +-4.007 -2 TD +(\(CONS A)Tj +0 -1.2222 TD +( \(CONS \(CAR FOO\))Tj +T* +( \(APPEND \(CDDR FOO\) \(D E\)\)\)\))Tj +T* +(.)Tj +/TT8 1 Tf +-9.3333 -2.0667 TD +0.0311 Tw +[(Backquote is particularly useful for writing macros. For example, the body of)]TJ +0 -1.2222 TD +0 Tw +(a macro that refers to )Tj +/TT10 1 Tf +9.6289 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( as the macros argument list might be)Tj +/TT10 1 Tf +-0.8957 -1.7778 TD +(\(COND)Tj +0 -1 TD +( \(\(FIXP ,\(CAR X\)\))Tj +T* +( ,\(CADR X\)\))Tj +T* +( \(T .,\(CDDR X\)\)\))Tj +/TT8 1 Tf +0 -1.6222 TD +(which is equivalent to writing)Tj +/TT10 1 Tf +0 -1.4889 TD +(\(LIST COND)Tj +0 -1 TD +( \(LIST \(LIST FIXP \(CAR X\)\))Tj +T* +( \(CADR X\)\))Tj +T* +( \(CONS T \(CDDR X\)\)\))Tj +/TT8 1 Tf +-9.3333 -1.8444 TD +0.1011 Tw +(Note that comma does )Tj +/TT16 1 Tf +10.6359 0 TD +0 Tw +(not)Tj +/TT8 1 Tf +1.333 0 TD +0.1011 Tw +[( have any special meaning outside of a backquote)]TJ +-11.9689 -1.2222 TD +0 Tw +(context.)Tj +0 -2 TD +0.1533 Tw +(For users without a backquote character on their keyboards, backquote can)Tj +0 -1.2222 TD +0 Tw +(also be written as |)Tj +/TT10 1 Tf +8.5562 0 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +( \(vertical-bar, quote\).)Tj +/TT10 1 Tf +-11.0896 -2.2156 TD +(?)Tj +/TT8 1 Tf +1.9333 0 TD +0.4778 Tw +(Implements the )Tj +/TT10 1 Tf +8.1274 0 TD +0 Tw +(?=)Tj +/TT8 1 Tf +1.2002 0 TD +0.4778 Tw +[( command for on-line help regarding the function)]TJ +-9.3276 -1.2889 TD +0 Tw +(currently being "called" in the typein \(see Chapter 26\).)Tj +-7.8456 -2 TD +0.0844 Tw +[(| )84.4(\(vertical )84.4(bar\))-1334.3(When followed by an end of line, tab or space, | is ignored, i.e., treated as a)]TJ +7.8456 -1.2222 TD +0.1489 Tw +(separator character, enabling the editors )Tj +/TT10 1 Tf +19.0467 0 TD +0 Tw +(CHANGECHAR)Tj +/TT8 1 Tf +6.001 0 TD +0.1489 Tw +[( feature \(see Chapter)]TJ +-25.0477 -1.2889 TD +0.1078 Tw +[(26\). Otherwise it is a "dispatching" read macro whose meaning depends on)]TJ +0 -1.2222 TD +0 Tw +(the character\(s\) following it. The following are currently defined:)Tj +/TT10 1 Tf +0 -2 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +( \(quote\) -- A synonym for backquote.)Tj +/TT10 1 Tf +-0.6001 -2.0667 TD +(.)Tj +/TT8 1 Tf +0.6001 0 TD +0.2689 Tw +[( \(period\) -- Returns the evaluation of the next expression, i.e., this is a)]TJ +-0.6001 -1.2889 TD +0 Tw +(synonym for Control-Y.)Tj +/TT18 1 Tf +0 -2 TD +(,)Tj +/TT8 1 Tf +0.25 0 TD +0.0356 Tw +[( \(comma\) -- Returns the evaluation of the next expression )]TJ +/TT16 1 Tf +25.8966 0 TD +(at load time)Tj +/TT8 1 Tf +4.7913 0 TD +(, i.e., the)Tj +-30.9379 -1.2889 TD +0.0522 Tw +(following expression is quoted in such a manner that the compiler treats it as)Tj +0 -1.2222 TD +0.2867 Tw +(a literal whose value is not determined until the compiled expression is)Tj +T* +0 Tw +(loaded.)Tj +/TT10 1 Tf +0 -2 TD +(O)Tj +/TT8 1 Tf +0.6001 0 TD +0.0522 Tw +[( or )]TJ +/TT10 1 Tf +1.5454 0 TD +0 Tw +(o)Tj +/TT8 1 Tf +0.6001 0 TD +0.0522 Tw +[( \(the letter O\) -- Treats the next number as octal, i.e., reads it in radix 8.)]TJ +-2.7456 -1.2889 TD +0 Tw +(For example, |)Tj +/TT10 1 Tf +6.6021 0 TD +(o12)Tj +/TT8 1 Tf +1.8003 0 TD +( = )Tj +/TT10 1 Tf +1.106 0 TD +(10)Tj +/TT8 1 Tf +1.2002 0 TD +( \(decimal\).)Tj +/TT10 1 Tf +-10.7085 -2.0667 TD +(B)Tj +/TT8 1 Tf +0.6001 0 TD +0.2389 Tw +[( or )]TJ +/TT10 1 Tf +1.9187 0 TD +0 Tw +(b)Tj +/TT8 1 Tf +0.6001 0 TD +0.2389 Tw +[( -- Treats the next number as binary, i.e., reads it in radix 2. For)]TJ +-3.1189 -1.2889 TD +0 Tw +(example, |)Tj +/TT10 1 Tf +4.855 0 TD +(b101)Tj +/TT8 1 Tf +2.4004 0 TD +( = )Tj +/TT10 1 Tf +1.106 0 TD +(5)Tj +/TT8 1 Tf +0.6001 0 TD +( \(decimal\).)Tj +ET +endstream +endobj +129 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT16 16 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +131 0 obj +<< +/Length 2413 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(24-39)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(I/O FUNCTIONS)Tj +/TT10 1 Tf +9 0 0 9 174 569.54 Tm +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[( or )]TJ +/TT10 1 Tf +1.5209 0 TD +0 Tw +(x)Tj +/TT8 1 Tf +0.6001 0 TD +0.04 Tw +[( -- Treats the next number as hexadecimal, i.e., reads it in radix 16. The)]TJ +-2.7211 -1.2889 TD +0.0122 Tw +(uppercase letters )Tj +/TT10 1 Tf +7.7705 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +[( though )]TJ +/TT10 1 Tf +3.7198 0 TD +0 Tw +(F)Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +[( are used as the digits after )]TJ +/TT10 1 Tf +12.1695 0 TD +0 Tw +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.0122 Tw +[(. For example, |)]TJ +/TT10 1 Tf +7.4009 0 TD +0 Tw +(x1A)Tj +/TT8 1 Tf +-32.8611 -1.2889 TD +(= )Tj +/TT10 1 Tf +0.856 0 TD +(26)Tj +/TT8 1 Tf +1.2002 0 TD +( \(decimal\).)Tj +/TT10 1 Tf +-2.0562 -2.0667 TD +(R)Tj +/TT8 1 Tf +0.6001 0 TD +0.2644 Tw +[( or )]TJ +/TT10 1 Tf +1.9698 0 TD +0 Tw +(r)Tj +/TT8 1 Tf +0.6001 0 TD +0.2644 Tw +[( -- Reads the next number in the radix specified by the \(decimal\))]TJ +-3.17 -1.2889 TD +0.0244 Tw +(number that appears between the | and the )Tj +/TT10 1 Tf +19.7307 0 TD +0 Tw +(R)Tj +/TT8 1 Tf +0.6001 0 TD +0.0244 Tw +[(. When inputting a number in a)]TJ +-20.3308 -1.2889 TD +0.0944 Tw +(radix above ten, the upper-case letters )Tj +/TT10 1 Tf +17.6262 0 TD +0 Tw +(A)Tj +/TT8 1 Tf +0.6001 0 TD +0.0944 Tw +[( through )]TJ +/TT10 1 Tf +4.2792 0 TD +0 Tw +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +0.0944 Tw +[( can be used as the digits)]TJ +-23.1057 -1.2889 TD +0 Tw +(after )Tj +/TT10 1 Tf +2.3843 0 TD +(9)Tj +/TT8 1 Tf +0.6001 0 TD +0.1011 Tw +[( \(but there is no digit above )]TJ +/TT10 1 Tf +13.0955 0 TD +0 Tw +(Z)Tj +/TT8 1 Tf +0.6001 0 TD +0.1011 Tw +(, so it is not possible to type all base-99)Tj +-16.68 -1.2889 TD +0 Tw +(digits\). For example, |)Tj +/TT10 1 Tf +10.1841 0 TD +(3r120)Tj +/TT8 1 Tf +3.0005 0 TD +( reads 120 in radix 3, returning 15.)Tj +/TT10 1 Tf +-13.1846 -2.0667 TD +0.2656 Tw +(\(, {,)Tj +/TT8 1 Tf +3.266 0 TD +0 Tw +( )Tj +/TT18 1 Tf +0.3611 0 TD +(^)Tj +/TT8 1 Tf +0.606 0 TD +0.1111 Tw +[( -- Used internally by )]TJ +/TT10 1 Tf +10.1659 0 TD +0 Tw +(HPRINT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1111 Tw +[( and )]TJ +/TT10 1 Tf +2.4151 0 TD +0 Tw +(HREAD)Tj +/TT8 1 Tf +3.0005 0 TD +0.1111 Tw +[( \(see above\) to print and)]TJ +-23.4152 -1.2889 TD +0 Tw +(read unusual expressions. )Tj +0 -2 TD +0.2478 Tw +(The dispatching characters that are letters can appear in either upper- or)Tj +0 -1.2222 TD +0 Tw +(lowercase.)Tj +ET +endstream +endobj +132 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT18 23 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +133 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +134 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +135 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +136 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +137 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +138 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +139 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +140 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +141 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 133 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 333 278 278 +0 0 556 0 556 0 0 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 0 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 667 944 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 0 778 556 556 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 134 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 278 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 135 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 149 +/Widths [250 0 371 0 0 840 0 0 333 333 0 606 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 0 606 606 0 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 786 668 525 613 778 722 1000 0 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 606 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 136 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 0 +600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 +0 600 600 600 600 600 600 0 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 0 600 600 600 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 137 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 138 0 R +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 35 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 600 600 0 600 600 600 +600 600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 +600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 +600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 139 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 333 250 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 611 667 778 611 556 0 0 333 0 667 556 944 778 0 +611 0 667 556 611 0 0 0 722 667 0 0 0 0 0 0 +0 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 +500 0 389 389 333 556 500 722 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 140 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 126 +/Widths [250 0 0 0 0 0 0 0 333 333 0 0 250 333 250 0 +0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 444 +0 0 0 0 0 611 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 606 0 +0 500 0 0 0 500 0 0 0 0 0 0 333 889 0 0 +611 0 0 0 0 0 0 0 500 0 0 0 0 0 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 141 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 26 0 R +/Contents 25 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +50 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 52 0 R +/Contents 51 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +56 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 58 0 R +/Contents 57 0 R +>> +endobj +59 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 61 0 R +/Contents 60 0 R +>> +endobj +62 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 64 0 R +/Contents 63 0 R +>> +endobj +65 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 67 0 R +/Contents 66 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +71 0 obj +<< +/Type /Page +/Parent 46 0 R +/Resources 73 0 R +/Contents 72 0 R +>> +endobj +74 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 76 0 R +/Contents 75 0 R +>> +endobj +78 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 80 0 R +/Contents 79 0 R +>> +endobj +81 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 83 0 R +/Contents 82 0 R +>> +endobj +84 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 86 0 R +/Contents 85 0 R +>> +endobj +87 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 89 0 R +/Contents 88 0 R +>> +endobj +90 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 92 0 R +/Contents 91 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 95 0 R +/Contents 94 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 98 0 R +/Contents 97 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 101 0 R +/Contents 100 0 R +>> +endobj +102 0 obj +<< +/Type /Page +/Parent 77 0 R +/Resources 104 0 R +/Contents 103 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 107 0 R +/Contents 106 0 R +>> +endobj +109 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 111 0 R +/Contents 110 0 R +>> +endobj +112 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 114 0 R +/Contents 113 0 R +>> +endobj +115 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 117 0 R +/Contents 116 0 R +>> +endobj +118 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 120 0 R +/Contents 119 0 R +>> +endobj +121 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 123 0 R +/Contents 122 0 R +>> +endobj +124 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 126 0 R +/Contents 125 0 R +>> +endobj +127 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 129 0 R +/Contents 128 0 R +>> +endobj +130 0 obj +<< +/Type /Page +/Parent 108 0 R +/Resources 132 0 R +/Contents 131 0 R +>> +endobj +142 0 obj +<< +/S /D +>> +endobj +143 0 obj +<< +/Nums [0 142 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 17 0 R 20 0 R 24 0 R 27 0 R 30 0 R 33 0 R 36 0 R 39 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +46 0 obj +<< +/Type /Pages +/Kids [42 0 R 47 0 R 50 0 R 53 0 R 56 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +77 0 obj +<< +/Type /Pages +/Kids [74 0 R 78 0 R 81 0 R 84 0 R 87 0 R 90 0 R 93 0 R 96 0 R 99 0 R 102 0 R] +/Count 10 +/Parent 45 0 R +>> +endobj +108 0 obj +<< +/Type /Pages +/Kids [105 0 R 109 0 R 112 0 R 115 0 R 118 0 R 121 0 R 124 0 R 127 0 R 130 0 R] +/Count 9 +/Parent 45 0 R +>> +endobj +45 0 obj +<< +/Type /Pages +/Kids [11 0 R 46 0 R 77 0 R 108 0 R ] +/Count 39 +/MediaBox [0 0 612 792] +>> +endobj +144 0 obj +<< +/CreationDate (D:20210202102712-06'00') +/ModDate (D:20210202102712-06'00') +/Producer (Apple pstopdf) +>> +endobj +145 0 obj +<< +/Type /Catalog +/Pages 45 0 R +/PageLabels 143 0 R +>> +endobj +xref +0 146 +0000000000 65535 f +0000277262 00000 n +0000000016 00000 n +0000004880 00000 n +0000273636 00000 n +0000273848 00000 n +0000274299 00000 n +0000274608 00000 n +0000275176 00000 n +0000275736 00000 n +0000271686 00000 n +0000280647 00000 n +0000277343 00000 n +0000005033 00000 n +0000011287 00000 n +0000276077 00000 n +0000276418 00000 n +0000277427 00000 n +0000011467 00000 n +0000019518 00000 n +0000277511 00000 n +0000019687 00000 n +0000027738 00000 n +0000276861 00000 n +0000277595 00000 n +0000027920 00000 n +0000035770 00000 n +0000277679 00000 n +0000035952 00000 n +0000043650 00000 n +0000277763 00000 n +0000043830 00000 n +0000051114 00000 n +0000277847 00000 n +0000051283 00000 n +0000058827 00000 n +0000277931 00000 n +0000059009 00000 n +0000066659 00000 n +0000278015 00000 n +0000066852 00000 n +0000073803 00000 n +0000278099 00000 n +0000073996 00000 n +0000082171 00000 n +0000281201 00000 n +0000280784 00000 n +0000278183 00000 n +0000082351 00000 n +0000089155 00000 n +0000278267 00000 n +0000089335 00000 n +0000097974 00000 n +0000278351 00000 n +0000098167 00000 n +0000105697 00000 n +0000278435 00000 n +0000105890 00000 n +0000113490 00000 n +0000278519 00000 n +0000113659 00000 n +0000120145 00000 n +0000278603 00000 n +0000120325 00000 n +0000129364 00000 n +0000278687 00000 n +0000129557 00000 n +0000136328 00000 n +0000278771 00000 n +0000136497 00000 n +0000142259 00000 n +0000278855 00000 n +0000142439 00000 n +0000148893 00000 n +0000278939 00000 n +0000149086 00000 n +0000153538 00000 n +0000280922 00000 n +0000279023 00000 n +0000153682 00000 n +0000160646 00000 n +0000279107 00000 n +0000160839 00000 n +0000165251 00000 n +0000279191 00000 n +0000165444 00000 n +0000171340 00000 n +0000279275 00000 n +0000171533 00000 n +0000177013 00000 n +0000279359 00000 n +0000177193 00000 n +0000184631 00000 n +0000279443 00000 n +0000184824 00000 n +0000190664 00000 n +0000279527 00000 n +0000190857 00000 n +0000199501 00000 n +0000279611 00000 n +0000199694 00000 n +0000206051 00000 n +0000279697 00000 n +0000206245 00000 n +0000213999 00000 n +0000279784 00000 n +0000214193 00000 n +0000220763 00000 n +0000281061 00000 n +0000279872 00000 n +0000220946 00000 n +0000230670 00000 n +0000279960 00000 n +0000230853 00000 n +0000238773 00000 n +0000280048 00000 n +0000238956 00000 n +0000245176 00000 n +0000280136 00000 n +0000245370 00000 n +0000251958 00000 n +0000280224 00000 n +0000252128 00000 n +0000257808 00000 n +0000280312 00000 n +0000257953 00000 n +0000264766 00000 n +0000280400 00000 n +0000264960 00000 n +0000268916 00000 n +0000280488 00000 n +0000269074 00000 n +0000271541 00000 n +0000271827 00000 n +0000272025 00000 n +0000272232 00000 n +0000272428 00000 n +0000272629 00000 n +0000272821 00000 n +0000273023 00000 n +0000273226 00000 n +0000273430 00000 n +0000280576 00000 n +0000280605 00000 n +0000281308 00000 n +0000281432 00000 n +trailer +<< +/Size 146 +/Root 145 0 R +/Info 144 0 R +/ID [<86c205726a981af932f6adc88a72e803><86c205726a981af932f6adc88a72e803>] +>> +startxref +281504 +%%EOF diff --git a/docs/medley-irm/25-USERIO-PACKAGES.TEDIT b/docs/medley-irm/25-USERIO-PACKAGES.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..23cd7dcd946522a28bbae0f1113cbe49e6b21a1e GIT binary patch literal 159972 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 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/25-USERIO-PACKAGES.pdf b/docs/medley-irm/25-USERIO-PACKAGES.pdf new file mode 100644 index 00000000..e273ad01 --- /dev/null +++ b/docs/medley-irm/25-USERIO-PACKAGES.pdf @@ -0,0 +1,17949 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 3999 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(25. USER/ INPUT/OUTPUT PACKAGES)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 564.99 m +534.01 564.99 l +S +BT +/TT6 1 Tf +9 0 0 9 78 542.54 Tm +(Interlisp-D can perform input/output operations on a large variety of physical devices. )Tj +0 -2.8889 TD +0.0089 Tw +(This chapter presents a number of packages that have been developed for displaying and allowing the)Tj +0 -1.2222 TD +0.0844 Tw +[(user to enter information. These packages are used to implement the user interface of many system)]TJ +T* +0 Tw +(facilities.)Tj +/TT8 1 Tf +4 -2 TD +(INSPECT)Tj +/TT6 1 Tf +4.2007 0 TD +0.3211 Tw +[( \(see the )]TJ +/TT8 1 Tf +4.8154 0 TD +0 Tw +(INSPECT)Tj +/TT6 1 Tf +4.2007 0 TD +0.3211 Tw +[( section below\) provides a window-based facility for)]TJ +-13.2168 -1.2889 TD +0 Tw +(displaying and changing the fields of a data object.)Tj +/TT8 1 Tf +0 -2.1422 TD +(PROMPTFORWORD)Tj +/F1 1 Tf +10 0 0 10 184.2114 445.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 190.2114 445.66 Tm +0.2889 Tw +(\(see the )Tj +/TT8 1 Tf +4.1798 0 TD +0 Tw +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.2889 Tw +[( section below\) is a function used for)]TJ +-20.449 -1.2889 TD +0.2822 Tw +[(entering a simple string of characters. Basic editing and prompting facilities are)]TJ +0 -1.2222 TD +0 Tw +(provided.)Tj +/TT8 1 Tf +0 -2 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1622 Tw +[( \(see the )]TJ +/TT8 1 Tf +4.3387 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1622 Tw +[( section below\) provides a more complicated prompting)]TJ +-12.7401 -1.2889 TD +0.2222 Tw +[(and answering facility, allowing a series of questions to be printed. Prompts and)]TJ +0 -1.2222 TD +0 Tw +(argument completion are supported.)Tj +/TT8 1 Tf +0 -2 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0478 Tw +[( \(see the )]TJ +/TT8 1 Tf +3.9954 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0478 Tw +[( Display Typein Editor section below\) is a display typein editor,)]TJ +-9.9964 -1.2889 TD +0 Tw +(that provides complex text editing facilities when entering an input line.)Tj +/TT8 1 Tf +0 -2 TD +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.4011 Tw +[( \(see the Prettyprint section below\) is used for printing function)]TJ +-6.6011 -1.2889 TD +0.0944 Tw +(definitions and other list structures, using multiple fonts and indenting lines to show)Tj +0 -1.2222 TD +0 Tw +(the structure of the list.)Tj +/TT4 1 Tf +10 0 0 10 54 269.92 Tm +(Inspector)Tj +ET +1 w +54.01 267.21 m +534.01 267.21 l +S +BT +/TT6 1 Tf +9 0 0 9 78 245.26 Tm +0.1467 Tw +(The Inspector provides a display-oriented facility for looking at and changing arbitrary Interlisp-D)Tj +T* +0.0833 Tw +[(data structures. The inspector can be used to inspect all user datatypes and many system datatypes)]TJ +T* +0.1156 Tw +[(\(although some objects such as numbers have no inspectable structure\). The inspector displays the)]TJ +T* +0.1189 Tw +(field names and values of an arbitrary object in a window that allows setting of the properties and)Tj +T* +0.0578 Tw +[(further inspection of the values. This latter feature makes it possible to "walk" around all of the data)]TJ +T* +0.15 Tw +[(structures in the system at the touch of a button. In addition, the inspector is integrated with the)]TJ +T* +0.24 Tw +(break package to allow inspection of any object on the stack and with the display and teletype)Tj +T* +0.0522 Tw +(structural editors to allow the editors to be used to "inspect" list structures and the inspector to "edit")Tj +T* +0 Tw +(datatypes. )Tj +0 -2.8889 TD +0.0111 Tw +(The underlying mechanisms of the data inspector have been designed to allow their use as specialized)Tj +0 -1.2222 TD +0 Tw +(editors in user applications. This functionality is described at the end of this section.)Tj +5.3333 -2 TD +0.0644 Tw +[(Note: Currently, the inspector does not have )]TJ +/TT8 1 Tf +20.6489 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0644 Tw +[(ing. Also, variables whose values are)]TJ +-19.0492 -1.2889 TD +0 Tw +(changed will not be marked as such.)Tj +/TT4 1 Tf +10 0 0 10 78 61.32 Tm +(Calling the Inspector)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +12 0 obj +<< +/Length 5805 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-2)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1233 Tw +[(There are several ways to open an inspect window onto an object. In addition to calling )]TJ +/TT8 1 Tf +41.1401 0 TD +0 Tw +(INSPECT)Tj +/TT6 1 Tf +-41.1401 -1.2889 TD +0.0489 Tw +(directly \(below\), the inspector can also be called by buttoning an Inspect command inside an existing)Tj +0 -1.2222 TD +0.1656 Tw +[(inspector window. Finally, if a non-list is edited with )]TJ +/TT8 1 Tf +25.5525 0 TD +0 Tw +(EDITDEF)Tj +/TT6 1 Tf +4.2007 0 TD +0.1656 Tw +[( \(see Chapter 17\), the inspector is)]TJ +-29.7532 -1.2889 TD +0.0878 Tw +[(called. This also causes the inspector to be called by the Dedit command from the display editor or)]TJ +0 -1.2222 TD +0 Tw +(the )Tj +/TT8 1 Tf +1.6372 0 TD +(EV)Tj +/TT6 1 Tf +1.2002 0 TD +( command from the teletype editor if the selected piece of structure is a non-list.)Tj +/TT8 1 Tf +-0.1707 -2.5422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(INSPECT)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(OBJECT)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ASTYPE)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WHERE)Tj +/TT8 1 Tf +3.0005 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 306.6184 501.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 501.46 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1933 Tw +(Creates an inspect window onto )Tj +/TT14 1 Tf +15.4554 0 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1933 Tw +[(. If )]TJ +/TT14 1 Tf +2.2499 0 TD +0 Tw +(ASTYPE)Tj +/TT6 1 Tf +3.6006 0 TD +0.1933 Tw +[( is given, it will be taken as the)]TJ +-24.9065 -1.2889 TD +0.0256 Tw +(record type of )Tj +/TT14 1 Tf +6.5376 0 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0256 Tw +[(. This allows records to be inspected with their property names. If)]TJ +/TT14 1 Tf +-10.1382 -1.2889 TD +0 Tw +(ASTYPE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0589 Tw +[( is )]TJ +/TT8 1 Tf +1.3326 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0589 Tw +(, the data type of )Tj +/TT14 1 Tf +7.96 0 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0589 Tw +[( will be used to determine its property names in)]TJ +-18.2941 -1.2889 TD +0 Tw +(the inspect window.)Tj +/TT14 1 Tf +0 -2 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1556 Tw +[( specifies the location of the inspect window. If )]TJ +/TT14 1 Tf +22.765 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1556 Tw +[( is )]TJ +/TT8 1 Tf +1.526 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1556 Tw +(, the user will be)Tj +-32.0923 -1.2889 TD +0.0456 Tw +[(prompted for a location. If )]TJ +/TT14 1 Tf +12.435 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0456 Tw +[( is a window, it will be used as the inspect window. If)]TJ +/TT14 1 Tf +-15.4354 -1.2889 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1633 Tw +[( is a region, the inspect window will be created in that region of the screen. If)]TJ +/TT14 1 Tf +-3.0005 -1.2889 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0444 Tw +[( is a position, the inspect window will have its lower left corner at that position on)]TJ +-3.0005 -1.2889 TD +0 Tw +(the screen.)Tj +/TT8 1 Tf +0 -2 TD +(INSPECT)Tj +/TT6 1 Tf +4.2007 0 TD +( returns the inspect window onto )Tj +/TT14 1 Tf +14.936 0 TD +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +(, or )Tj +/TT8 1 Tf +1.6909 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( if no inspection took place.)Tj +/TT8 1 Tf +-28.8952 -2.5422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(INSPECTCODE)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FN)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WHERE )Tj +/TT8 1 Tf +7.8013 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 312.0158 344.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 344.78 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1067 Tw +(Opens a window and displays the compiled code of the function )Tj +/TT14 1 Tf +29.9692 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.1067 Tw +[( using )]TJ +/TT8 1 Tf +3.1694 0 TD +0 Tw +(PRINTCODE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-39.7397 -1.2889 TD +(The window is scrollable.)Tj +/TT8 1 Tf +0 -2 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0744 Tw +[( determines where the window should appear. It can be a position, a region, or a)]TJ +-3.0005 -1.2889 TD +0 Tw +(window. If )Tj +/TT8 1 Tf +5.3677 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the user is prompted to specify the position of the window.)Tj +-7.168 -2.0667 TD +0.1811 Tw +[(Note: If the Tedit library package is loaded, )]TJ +/TT8 1 Tf +21.3092 0 TD +0 Tw +(INSPECTCODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.1811 Tw +[( uses it to create the code)]TJ +-23.9103 -1.2889 TD +0.0422 Tw +[(inspector window. Also, if )]TJ +/TT8 1 Tf +12.4094 0 TD +0 Tw +(INSPECTCODE)Tj +/TT6 1 Tf +6.6011 0 TD +0.0422 Tw +[( is called to inspect the frame name in)]TJ +-19.0104 -1.2889 TD +0.1389 Tw +(a break window \(see Chapter 14\), the location in the code that the frames PC)Tj +0 -1.2222 TD +0 Tw +(indicates it was executing at the time is highlighted.)Tj +/TT4 1 Tf +10 0 0 10 126 204.84 Tm +(Multiple Ways of Inspecting)Tj +/TT6 1 Tf +9 0 0 9 126 181.18 Tm +0.1811 Tw +(For some datatypes there is more than one aspect that is of interest or more than one method of)Tj +T* +0.0744 Tw +[(inspecting the object. In these cases, the inspector will bring up a menu of the possibilities and wait)]TJ +T* +0 Tw +(for the user to select one.)Tj +0 -2.8889 TD +0.2744 Tw +(If the object is a litatom, the commands are the types for which the litatom has definitions as)Tj +0 -1.2222 TD +0 Tw +(determined by )Tj +/TT8 1 Tf +6.7451 0 TD +(HASDEF)Tj +/TT6 1 Tf +3.6006 0 TD +(. Some typical commands are:)Tj +/TT8 1 Tf +-2.8124 -2.0667 TD +(FNS)Tj +/TT6 1 Tf +3.1333 0 TD +(Edit the definition of the selected litatom.)Tj +ET +102 91.42 6.99 -6.44 re +f +BT +/TT8 1 Tf +9 0 0 9 188.4 84.98 Tm +(VARS)Tj +/TT6 1 Tf +3.7333 0 TD +(Inspect the value.)Tj +/TT8 1 Tf +-4.3333 -2.0667 TD +(PROPS)Tj +/TT6 1 Tf +4.3333 0 TD +(Inspect the property list.)Tj +-5.3333 -2.0667 TD +(If the object is a list, there will be choice of how to inspect the list:)Tj +ET +endstream +endobj +13 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +18 0 obj +<< +/Length 4773 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-3)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 124.2 569.54 Tm +(Inspect)Tj +/TT6 1 Tf +5.5333 0 TD +0.0078 Tw +(Opens an inspect window in which the properties are numbers and the values)Tj +0 -1.2889 TD +0 Tw +(are the elements of the list.)Tj +/TT8 1 Tf +-5.5333 -2 TD +(TtyEdit)Tj +/TT6 1 Tf +5.5333 0 TD +(Calls the teletype list structure editor on the list \(see Chapter 16\).)Tj +/TT8 1 Tf +-7.9333 -2.0667 TD +(DisplayEdit)Tj +/TT6 1 Tf +7.9333 0 TD +(Calls the DEdit display editor on the list \(see Chapter 16\).)Tj +-6.5356 -2.0667 TD +(As a )Tj +/TT8 1 Tf +2.2017 0 TD +(PLIST)Tj +/TT6 1 Tf +4.3339 0 TD +0.06 Tw +(Inspects the list as a property list, if the list is in property list form: )Tj +/TT8 1 Tf +30.4606 0 TD +0 Tw +(\(\(PROP)Tj +3.6028 -0.2222 TD +(1)Tj +-34.0633 -1.2222 TD +(VAL)Tj +1.8 -0.2222 TD +(1)Tj +0.6 0.2222 TD +(\) ... \(PROP)Tj +6.6 -0.2222 TD +(N)Tj +0.6 0.2222 TD +( VAL)Tj +2.4 -0.2222 TD +(N)Tj +0.6 0.2222 TD +(\)\).)Tj +/TT6 1 Tf +-19.7178 -2.2889 TD +(As an )Tj +/TT8 1 Tf +2.7837 0 TD +(ALIST)Tj +/TT6 1 Tf +4.3341 0 TD +0.0544 Tw +(Inspects the list as an association-list, if the list is in )Tj +/TT8 1 Tf +23.4104 0 TD +0 Tw +(ASSOC)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +[( list form: )]TJ +/TT8 1 Tf +4.6521 0 TD +0 Tw +(\(PROP)Tj +3.0048 -0.2222 TD +(1)Tj +-34.0678 -1.2222 TD +(VAL)Tj +1.8 -0.2222 TD +(1)Tj +0.6 0.2222 TD +( ... PROP)Tj +5.4 -0.2222 TD +(N)Tj +0.6 0.2222 TD +( VAL)Tj +2.4 -0.2222 TD +(N)Tj +0.6 0.2222 TD +(\).)Tj +/TT6 1 Tf +-17.8067 -2.2889 TD +0.1067 Tw +[(As )106.7(a )106.7(record)-1335.4(Brings up a submenu with all of the )]TJ +/TT8 1 Tf +23.3313 0 TD +0 Tw +(RECORD)Tj +/TT6 1 Tf +3.6006 0 TD +0.1067 Tw +(s in the system and inspect the)Tj +-20.5252 -1.2889 TD +0 Tw +(list with the one chosen.)Tj +-9.36 -2 TD +0.0922 Tw +[(As )92.2(a )92.2("record )92.2(type")-1334.1(Inspects the list as the record of the type named in its )]TJ +/TT8 1 Tf +34.1805 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0922 Tw +(, if the )Tj +/TT8 1 Tf +3.2879 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0922 Tw +[( of the)]TJ +-31.709 -1.2889 TD +0 Tw +(list is the name of a )Tj +/TT8 1 Tf +8.7568 0 TD +(TYPERECORD)Tj +/TT6 1 Tf +6.001 0 TD +( \(see Chapter 8\).)Tj +-25.4245 -2.9556 TD +0.0267 Tw +(If the object is a bitmap, the choice is between inspecting the bitmaps contents with the bitmap editor)Tj +0 -1.2222 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.333 0 TD +(EDITBM)Tj +/TT6 1 Tf +3.6006 0 TD +(\) or inspecting the bitmaps fields.)Tj +-3.9336 -2.9556 TD +(Other datatypes may include multiple methods for inspecting objects of that type.)Tj +/TT4 1 Tf +10 0 0 10 78 300.8 Tm +(Inspect Windows)Tj +/TT6 1 Tf +9 0 0 9 78 277.14 Tm +0.0278 Tw +[(An inspect window displays two columns of values. The lefthand column lists the property names of)]TJ +0 -1.2222 TD +0.0578 Tw +[(the structure being inspected. The righthand column contains the values of the properties named on)]TJ +T* +0.0278 Tw +[(the left. For variable length data such as lists and arrays, the "property names" are numbers from 1 to)]TJ +T* +0.2122 Tw +[(the length of the inspected item and the values are the corresponding elements. For arrays, the)]TJ +T* +0.06 Tw +(property names are the array element numbers and the values are the corresponding elements of the)Tj +T* +0 Tw +(array.)Tj +0 -2.8889 TD +0.0178 Tw +(For large lists or arrays, or datatypes with many fields, the initial window may be too small to contain)Tj +0 -1.2222 TD +0.1167 Tw +[(all of them. In these cases, the unseen elements can be scrolled into view \(from the bottom\) or the)]TJ +T* +0 Tw +(window can be reshaped to increase its size.)Tj +0 -2.8889 TD +0.2844 Tw +(In an inspect window, the )Tj +/TT8 1 Tf +13.1551 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2844 Tw +[( button is used to select things, the )]TJ +/TT8 1 Tf +17.757 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.2844 Tw +[( button to invoke)]TJ +-36.9131 -1.2889 TD +0.1378 Tw +[(commands that apply to the selected item. Any property or value can be selected by pointing the)]TJ +0 -1.2222 TD +0.0189 Tw +(cursor directly at the text representing it, and clicking the )Tj +/TT8 1 Tf +25.7411 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0189 Tw +[( button. There is one selected item per)]TJ +-28.1415 -1.2889 TD +0 Tw +(window and it is marked by having its surrounding box inverted.)Tj +0 -2.8889 TD +0.0033 Tw +(The options offered by the )Tj +/TT8 1 Tf +11.9288 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0001 Tc +0.0032 Tw +( button depend on whether the selection is a property or a value. If)Tj +-15.5294 -1.2889 TD +0 Tc +0.1211 Tw +(the selected item is a value, the options provide different ways of inspecting the selected structure.)Tj +0 -1.2222 TD +0.1122 Tw +(The exact commands that are given depend on the type of the value. An example of the menu you)Tj +T* +0 Tw +(may see is:)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +21 0 obj +<< +/Length 3870 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-4)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +ET +q +56.25 0 0 -46.5 301.88 575.99 cm +/Im1 Do +Q +BT +/TT6 1 Tf +9 0 0 9 126 506.04 Tm +0.1078 Tw +(If the selected item is a property name, the command )Tj +/TT8 1 Tf +24.7902 0 TD +0 Tw +(SET)Tj +/TT6 1 Tf +1.8003 0 TD +0.1078 Tw +[( will appear. If selected, the user will be)]TJ +-26.5905 -1.2889 TD +0.0022 Tw +(asked to type in an expression, and the selected property will be set to the result of evaluating the read)Tj +0 -1.2222 TD +0.0533 Tw +[(form. The evaluation of the read form and the replacement of the selected item property will appear)]TJ +T* +0.0556 Tw +[(as their own history events and are individually undoable. Properties of system datatypes cannot be)]TJ +T* +0.0289 Tw +[(set. \(There are often consistency requirements which can be inadvertently violated in ways that crash)]TJ +T* +0.0033 Tw +(the system. This may be true of some user datatypes as well, however the system doesnt know which)Tj +T* +0 Tw +(ones. Users are advised to exercise caution.\))Tj +0 -2.8889 TD +0.0856 Tw +[(It is possible to copy-select property names or values out of an inspect window. Litatoms, numbers)]TJ +0 -1.2222 TD +0.0633 Tw +[(and strings are copied as they are displayed. Unprintable objects \(such as bitmaps, etc.\) come out as)]TJ +T* +0 Tw +(an appropriate system expression, such that if is evaluated, the object is re-created.)Tj +/TT4 1 Tf +10 0 0 10 126 362.1 Tm +(Inspect Window Commands)Tj +/TT6 1 Tf +9 0 0 9 126 338.44 Tm +0.0389 Tw +(By pressing the )Tj +/TT8 1 Tf +7.1728 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0389 Tw +[( button in the title of the inspect window, a menu of commands that apply to)]TJ +-10.7734 -1.2889 TD +0 Tw +(the inspect window is brought up:)Tj +ET +q +61.5 0 0 -28.5 299.26 307.29 cm +/Im2 Do +Q +BT +/TT12 1 Tf +9 0 0 9 150 259.06 Tm +(ReFetch)Tj +/F1 1 Tf +10 0 0 10 187.8 259.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 417.55 259.06 Tm +([Inspect Window Command])Tj +-27.0611 -1.8444 TD +0.1611 Tw +(An inspect window is not automatically updated when the structure it is inspecting is)Tj +0 -1.2222 TD +0.0467 Tw +[(changed. The )]TJ +/TT8 1 Tf +6.5677 0 TD +0 Tw +(ReFetch)Tj +/TT6 1 Tf +4.2007 0 TD +0.0467 Tw +[( command will refetch and redisplay all of the fields of the object)]TJ +-10.7684 -1.2889 TD +0 Tw +(being inspected in the inspect window.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(IT)Tj +/TT15 1 Tf +9.9 0 0 9 160.8017 197.58 Tm +<0040>Tj +/TT12 1 Tf +9 0 0 9 170.5712 197.58 Tm +(datum)Tj +/F1 1 Tf +10 0 0 10 196.68 197.58 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 417.55 197.58 Tm +([Inspect Window Command])Tj +-27.0611 -1.8444 TD +(Sets the variable )Tj +/TT8 1 Tf +7.4653 0 TD +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +( to object being inspected in the inspect window.)Tj +/TT12 1 Tf +-11.3322 -2.5422 TD +(IT)Tj +/TT15 1 Tf +9.9 0 0 9 160.8017 158.1 Tm +<0040>Tj +/TT12 1 Tf +9 0 0 9 170.5712 158.1 Tm +(selection)Tj +/F1 1 Tf +10 0 0 10 218.28 158.1 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 417.55 158.1 Tm +([Inspect Window Command])Tj +-27.0611 -1.8444 TD +0.2567 Tw +(Sets the variable )Tj +/TT8 1 Tf +8.2353 0 TD +0 Tw +(IT)Tj +/TT6 1 Tf +1.2002 0 TD +0.2567 Tw +[( to the property name or value currently selected in the inspect)]TJ +-9.4355 -1.2889 TD +0 Tw +(window.)Tj +/TT4 1 Tf +10 0 0 10 126 100.56 Tm +(Interaction With Break Windows)Tj +/TT6 1 Tf +9 0 0 9 126 76.9 Tm +0.0556 Tw +(The break window facility \(see Chapter 14\) knows about the inspector in the sense that the backtrace)Tj +0 -1.2222 TD +0.0044 Tw +(frame window is an inspect window onto the frame selected from the back trace menu during a break.)Tj +T* +0.1055 Tw +(Thus you can call the inspector on an object that is bound on the stack by selecting its frame in the)Tj +T* +0.2211 Tw +(back trace menu, selecting its value with the )Tj +/TT8 1 Tf +21.5345 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2211 Tw +[( button in the back trace frame window, and)]TJ +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT15 23 0 R +>> +/XObject << +/Im1 24 0 R +/Im2 25 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +27 0 obj +<< +/Length 6045 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-5)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0611 Tw +(selecting the inspect command with the )Tj +/TT8 1 Tf +18.1416 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +[( button in the back trace frame window. The values)]TJ +-21.7422 -1.2889 TD +0.1156 Tw +(of variables in frames can be set by selecting the variable name with the )Tj +/TT8 1 Tf +33.4757 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1156 Tw +[( button and then the)]TJ +-35.8761 -1.2889 TD +0 Tw +("Set" command with the )Tj +/TT8 1 Tf +10.9409 0 TD +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +( button.)Tj +-9.2082 -2.0667 TD +0.2311 Tw +[(Note: The inspector will only allow the setting of named variables. Even with this)]TJ +4 -1.2222 TD +0.01 Tw +(restriction it is still possible to crash the system by setting variables inside system)Tj +T* +0 Tw +(frames. Exercise caution in setting variables in other than your own code.)Tj +/TT4 1 Tf +10 0 0 10 78 476.4 Tm +(Controlling the Amount Displayed During Inspection)Tj +/TT6 1 Tf +9 0 0 9 78 452.74 Tm +0.3256 Tw +(The amount of information displayed during inspection can be controlled using the following)Tj +T* +0 Tw +(variables:)Tj +/TT12 1 Tf +2.6667 -2.4756 TD +(MAXINSPECTCDRLEVEL)Tj +/F1 1 Tf +10 0 0 10 199.2 419.46 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 419.46 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0122 Tw +(The inspector prints only the first )Tj +/TT8 1 Tf +15.0855 0 TD +0 Tw +(MAXINSPECTCDRLEVEL)Tj +/TT6 1 Tf +10.8018 0 TD +0.0122 Tw +[( elements of a long list, and will)]TJ +-25.8873 -1.2889 TD +0.2422 Tw +[(make the tail containing the unprinted elements the last item. The last item can be)]TJ +0 -1.2222 TD +0 Tw +(inspected to see further elements. Initially 50.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(MAXINSPECTARRAYLEVEL)Tj +/F1 1 Tf +10 0 0 10 210 357.98 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 357.98 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1089 Tw +(The inspector prints only the first )Tj +/TT8 1 Tf +15.6655 0 TD +0 Tw +(MAXINSPECTARRAYLEVEL)Tj +/TT6 1 Tf +12.002 0 TD +0.1089 Tw +[( elements of an array. The)]TJ +-27.6675 -1.2889 TD +0.1133 Tw +(remaining elements can be inspected by calling the function )Tj +/TT8 1 Tf +27.7256 0 TD +0.2722 Tw +(\(INSPECT/ARRAY ARRAY)Tj +-27.7256 -1.2889 TD +0 Tw +(BEGINOFFSET\))Tj +/TT6 1 Tf +7.2012 0 TD +0.4233 Tw +[( which inspects the )]TJ +/TT8 1 Tf +10.3843 0 TD +0 Tw +(BEGINOFFSET)Tj +/TT6 1 Tf +6.6011 0 TD +0.4233 Tw +[( through the )]TJ +/TT8 1 Tf +6.9975 0 TD +1.0167 Tw +(BEGINOFFSET +)Tj +-31.184 -1.2889 TD +0 Tw +(MAXINSPECTARRAYLEVEL)Tj +/TT6 1 Tf +12.002 0 TD +( elements of )Tj +/TT8 1 Tf +5.5718 0 TD +(ARRAY)Tj +/TT6 1 Tf +3.0005 0 TD +(. Initially 300.)Tj +/TT12 1 Tf +-23.2409 -2.5422 TD +(INSPECTPRINTLEVEL)Tj +/F1 1 Tf +10 0 0 10 193.8149 283.7 Tm +-0.0015 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 283.7 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +0.05 Tw +(When printing the values, the inspector resets )Tj +/TT8 1 Tf +20.8686 0 TD +0 Tw +(PRINTLEVEL)Tj +/TT6 1 Tf +6.001 0 TD +0.05 Tw +[( \(see Chapter 25\) to the value)]TJ +-26.8695 -1.2889 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.1289 0 TD +(INSPECTPRINTLEVEL)Tj +/TT6 1 Tf +10.2017 0 TD +(. Initially \(2 . 5\).)Tj +/TT12 1 Tf +-13.9972 -2.5422 TD +(INSPECTALLFIELDSFLG)Tj +/F1 1 Tf +10 0 0 10 204.6 232.62 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 232.62 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT8 1 Tf +1.0588 0 TD +(INSPECTALLFIELDSFLG)Tj +/TT6 1 Tf +11.4019 0 TD +0.1389 Tw +[( is )]TJ +/TT8 1 Tf +1.4926 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1389 Tw +(, the inspector will show computed fields \()Tj +/TT8 1 Tf +19.7945 0 TD +0 Tw +(ACCESSFNS)Tj +/TT6 1 Tf +5.4009 0 TD +(,)Tj +-39.7488 -1.2889 TD +(Chapter 8\) as well as regular fields for structures that have a record definition. Initially )Tj +/TT8 1 Tf +38.7861 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 174.48 Tm +(Inspect Macros)Tj +/TT6 1 Tf +9 0 0 9 78 150.82 Tm +0.1067 Tw +(The Inspector can be extended to inspect new structures and datatypes by adding entries to the list)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(INSPECTMACROS)Tj +/TT6 1 Tf +7.8013 0 TD +0.03 Tw +[(. An entry should be of the form )]TJ +/TT8 1 Tf +14.98 0 TD +0.0722 Tw +(\(OBJECTTYPE . INSPECTINFO\))Tj +/TT6 1 Tf +15.747 0 TD +0.03 Tw +(. )Tj +/TT8 1 Tf +0.81 0 TD +0 Tw +(OBJECTTYPE)Tj +/TT6 1 Tf +-39.3382 -1.2889 TD +0.1689 Tw +[(is used to determine the types of objects that are inspected with this macro. If )]TJ +/TT8 1 Tf +37.2779 0 TD +0 Tw +(OBJECTTYPE)Tj +/TT6 1 Tf +6.001 0 TD +0.1689 Tw +[( is a)]TJ +-43.2789 -1.2889 TD +0.2667 Tw +(litatom, the )Tj +/TT8 1 Tf +5.8336 0 TD +0 Tw +(INSPECTINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.2667 Tw +[( will be used to inspect items whose type name is )]TJ +/TT8 1 Tf +24.947 0 TD +0 Tw +(OBJECTTYPE)Tj +/TT6 1 Tf +6.001 0 TD +0.2667 Tw +[(. If)]TJ +/TT8 1 Tf +-43.3827 -1.2889 TD +0 Tw +(OBJECTTYPE)Tj +/TT6 1 Tf +6.001 0 TD +0.1833 Tw +[( is a list of the form )]TJ +/TT8 1 Tf +10.0031 0 TD +0.44 Tw +(\(FUNCTION DATUM-PREDICATE\))Tj +/TT6 1 Tf +16.0425 0 TD +0 Tw +(, )Tj +/TT8 1 Tf +0.6833 0 TD +(DATUM-PREDICATE)Tj +/TT6 1 Tf +9.0015 0 TD +0.1833 Tw +[( will be)]TJ +/TT8 1 Tf +-41.7314 -1.2889 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +(ed to the item and if it returns non-)Tj +/TT8 1 Tf +15.5093 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the )Tj +/TT8 1 Tf +2.1372 0 TD +(INSPECTINFO)Tj +/TT6 1 Tf +6.6011 0 TD +( will be used to inspect the item.)Tj +/TT8 1 Tf +-29.0483 -2.9556 TD +(INSPECTINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0078 Tw +[( can be one of two forms. If )]TJ +/TT8 1 Tf +12.5705 0 TD +0 Tw +(INSPECTINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0078 Tw +[( is a litatom, it should be a function that will)]TJ +-25.7726 -1.2889 TD +0.2322 Tw +(be applied to three arguments \(the item being inspected, )Tj +/TT8 1 Tf +27.2751 0 TD +0 Tw +(OBJECTTYPE)Tj +/TT6 1 Tf +6.001 0 TD +0.2322 Tw +(, and the value of )Tj +/TT8 1 Tf +9.0581 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +-42.3341 -1.2889 TD +0.0056 Tw +(passed to )Tj +/TT8 1 Tf +4.4218 0 TD +0 Tw +(INSPECT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0056 Tw +[(\) that should do the inspection. If )]TJ +/TT8 1 Tf +15.1983 0 TD +0 Tw +(INSPECTINFO)Tj +/TT6 1 Tf +6.6011 0 TD +0.0056 Tw +[( is not a litatom, it should be a list)]TJ +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +30 0 obj +<< +/Length 7716 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-6)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +(of )Tj +/TT8 1 Tf +1.2522 0 TD +0.2967 Tw +(\(PROPERTIES FETCHFN STOREFN PROPCOMMANDFN VALUECOMMANDFN TITLECOMMANDFN)Tj +-1.2522 -1.2889 TD +0.0722 Tw +(TITLE SELECTIONFN WHERE PROPPRINTFN\))Tj +/TT6 1 Tf +21.8202 0 TD +0.03 Tw +[( where the elements of this list are the arguments for)]TJ +/TT8 1 Tf +-21.8202 -1.2889 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(CREATE)Tj +/TT6 1 Tf +3.6006 0 TD +0.2244 Tw +[(, described below. From this list, the )]TJ +/TT8 1 Tf +18.2575 0 TD +0 Tw +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.2244 Tw +[( argument will be evaluated; the)]TJ +-29.9093 -1.2889 TD +0 Tw +(others will not. If )Tj +/TT8 1 Tf +8.083 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, the value of )Tj +/TT8 1 Tf +5.9541 0 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +( that was passed to )Tj +/TT8 1 Tf +8.6528 0 TD +(INSPECT)Tj +/TT6 1 Tf +4.2007 0 TD +( will be used.)Tj +-35.9067 -2.9556 TD +(Examples:)Tj +0 -2.8889 TD +0.0456 Tw +(The entry )Tj +/TT8 1 Tf +4.6033 0 TD +0.1078 Tw +(\(\(FUNCTION MYATOMP\) PROPNAMES GETPROP PUTPROP\))Tj +/TT6 1 Tf +28.0356 0 TD +0.0456 Tw +[( on )]TJ +/TT8 1 Tf +1.719 0 TD +0 Tw +(INSPECTMACROS)Tj +/TT6 1 Tf +7.8013 0 TD +0.0456 Tw +[( would)]TJ +-42.1592 -1.2889 TD +0.1133 Tw +(cause all objects satisfying the predicate )Tj +/TT8 1 Tf +18.514 0 TD +0 Tw +(MYATOMP)Tj +/TT6 1 Tf +4.2007 0 TD +0.1133 Tw +[( to have their properties inspected with )]TJ +/TT8 1 Tf +18.4218 0 TD +0 Tw +(GETPROP)Tj +/TT6 1 Tf +-41.1364 -1.2889 TD +(and )Tj +/TT8 1 Tf +1.9429 0 TD +(PUTPROP)Tj +/TT6 1 Tf +4.2007 0 TD +(. In this example, )Tj +/TT8 1 Tf +8.041 0 TD +(MYATOMP)Tj +/TT6 1 Tf +4.2007 0 TD +( should make sure the object is a litatom.)Tj +-18.3853 -2.9556 TD +0.0478 Tw +(The entry )Tj +/TT8 1 Tf +4.6078 0 TD +0.1156 Tw +(\(MYDATATYPE . MYINSPECTFN\))Tj +/TT6 1 Tf +15.8337 0 TD +0.0478 Tw +[( on )]TJ +/TT8 1 Tf +1.7235 0 TD +0 Tw +(INSPECTMACROS)Tj +/TT6 1 Tf +7.8013 0 TD +0.0478 Tw +[( would cause all datatypes of type)]TJ +/TT8 1 Tf +-29.9662 -1.2889 TD +0 Tw +(MYDATATYPE)Tj +/TT6 1 Tf +6.001 0 TD +( to be passed to the function )Tj +/TT8 1 Tf +12.6592 0 TD +(MYINSPECTFN)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 390.8 Tm +(INSPECTWs)Tj +/TT6 1 Tf +9 0 0 9 126 367.14 Tm +0.1178 Tw +(The inspector is built on the abstraction of an )Tj +/TT8 1 Tf +21.2143 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.1178 Tw +[(. An )]TJ +/TT8 1 Tf +2.7132 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.1178 Tw +[( is a window with certain)]TJ +-33.5291 -1.2889 TD +0.3178 Tw +(window properties that display an object and respond to selections of the objects parts. It is)Tj +0 -1.2222 TD +0.0267 Tw +[(characterized by an object and its list of properties. An )]TJ +/TT8 1 Tf +24.8544 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.0267 Tw +[( displays the object in two columns)]TJ +-29.6552 -1.2889 TD +0.1067 Tw +[(with the property names on the left and the values of those properties on the right. An )]TJ +/TT8 1 Tf +40.5421 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +-40.5421 -1.2889 TD +0.2522 Tw +(supports the protocol that the )Tj +/TT8 1 Tf +14.6346 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2522 Tw +[( mouse button can be used to select any property name or)]TJ +-17.035 -1.2889 TD +0.27 Tw +(property value and the )Tj +/TT8 1 Tf +11.4975 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.27 Tw +[( button calls a user provided function on the selected value or)]TJ +-15.0981 -1.2889 TD +0.2011 Tw +[(property. For the Inspector application, this function puts up a menu of the alternative ways of)]TJ +0 -1.2222 TD +0.1633 Tw +(inspecting values or of the ways of setting properties. )Tj +/TT8 1 Tf +25.7427 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.1633 Tw +(s are created with the following)Tj +-30.5435 -1.2889 TD +0 Tw +(function:)Tj +/TT8 1 Tf +2.6667 -2.2667 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(INSPECTW.CREATE)Tj +/TT8 1 Tf +8.9999 0 TD +( )Tj +/TT14 1 Tf +1.5734 0 TD +0.9733 Tw +(DATUM PROPERTIES FETCHFN STOREFN PROPCOMMANDFN)Tj +-10.5068 -1.2089 TD +(VALUECOMMANDFN TITLECOMMANDFN TITLE SELECTIONFN WHERE PROPPRINTFN)Tj +/TT8 1 Tf +39 0 TD +0 Tw +(\))Tj +/F1 1 Tf +10 0 0 10 512.4008 244.26 Tm +0.451 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 156 234.66 Tm +0 Tc +([Function])Tj +2 -1.7778 TD +0.05 Tw +(Creates an )Tj +/TT8 1 Tf +4.994 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.05 Tw +[( that views the object )]TJ +/TT14 1 Tf +9.7964 0 TD +0 Tw +(DATUM)Tj +/TT6 1 Tf +3.0005 0 TD +0.05 Tw +[(. If )]TJ +/TT14 1 Tf +1.8199 0 TD +0 Tw +(PROPERTIES)Tj +/TT6 1 Tf +6.001 0 TD +0.05 Tw +[( is a list, it is taken as)]TJ +-30.4126 -1.2889 TD +0.1033 Tw +(the list of properties of )Tj +/TT14 1 Tf +10.7808 0 TD +0 Tw +(DATUM)Tj +/TT6 1 Tf +3.0005 0 TD +0.1033 Tw +[( to display. If )]TJ +/TT14 1 Tf +6.8326 0 TD +0 Tw +(PROPERTIES)Tj +/TT6 1 Tf +6.001 0 TD +0.1033 Tw +[( is a litatom, it is )]TJ +/TT8 1 Tf +8.08 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.1033 Tw +(ed to)Tj +/TT14 1 Tf +-37.6953 -1.2889 TD +0 Tw +(DATUM)Tj +/TT6 1 Tf +3.0005 0 TD +( and the result is used as the list of properties to display.)Tj +/TT14 1 Tf +-3.0005 -2.0667 TD +(FETCHFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.0867 Tw +[( is a function of two arguments )]TJ +/TT8 1 Tf +14.6116 0 TD +0.2078 Tw +(\(OBJECT PROPERTY\) )Tj +/TT6 1 Tf +11.2173 0 TD +0.0867 Tw +(that should return the)Tj +-30.0295 -1.2889 TD +0.1122 Tw +(value of the )Tj +/TT8 1 Tf +5.7908 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1122 Tw +[( property of )]TJ +/TT8 1 Tf +5.865 0 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1122 Tw +[(. The result of this function will be printed)]TJ +-20.0571 -1.2889 TD +0 Tw +(\(with )Tj +/TT8 1 Tf +2.6162 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +(\) in the )Tj +/TT8 1 Tf +3.3433 0 TD +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +( as the value.)Tj +/TT14 1 Tf +-13.7607 -2.0667 TD +(STOREFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.2322 Tw +[( is a function of three arguments)]TJ +/TT8 1 Tf +15.7034 0 TD +0.5589 Tw +[( \(OBJECT PROPERTY NEWVALUE\))]TJ +/TT6 1 Tf +17.8793 0 TD +0.2322 Tw +[( that)]TJ +-37.7834 -1.2889 TD +0.2367 Tw +(changes the )Tj +/TT8 1 Tf +5.9274 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.2367 Tw +[( property of )]TJ +/TT8 1 Tf +6.2383 0 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +0.2367 Tw +[( to )]TJ +/TT8 1 Tf +1.8454 0 TD +0 Tw +(NEWVALUE)Tj +/TT6 1 Tf +4.8008 0 TD +0.2367 Tw +[(. It is used by the default)]TJ +/TT14 1 Tf +-27.2133 -1.2889 TD +0 Tw +(PROPCOMMANDFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.1189 Tw +[( and )]TJ +/TT14 1 Tf +2.4306 0 TD +0 Tw +(VALUECOMMANDFN)Tj +/TT6 1 Tf +8.4014 0 TD +0.1189 Tw +[( to change the value of a property and also by)]TJ +-18.6333 -1.2889 TD +0.0311 Tw +(the function )Tj +/TT8 1 Tf +5.6565 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(REPLACE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0311 Tw +[( \(described below\). This can be )]TJ +/TT8 1 Tf +14.3413 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0311 Tw +[( if the user provides)]TJ +-31.0495 -1.2889 TD +0.0411 Tw +(command functions which do not call )Tj +/TT8 1 Tf +17.1954 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(REPLACE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0411 Tw +[(. Each replace action will be a)]TJ +-26.4469 -1.2889 TD +0 Tw +(separate event on the history list. Users are encouraged to provide )Tj +/TT8 1 Tf +29.7808 0 TD +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +(able )Tj +/TT8 1 Tf +2.0732 0 TD +(STOREFN)Tj +/TT6 1 Tf +4.2007 0 TD +(s.)Tj +/TT14 1 Tf +-38.4551 -2.0667 TD +(PROPCOMMANDFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.1722 Tw +[( is a function of three arguments )]TJ +/TT8 1 Tf +15.7656 0 TD +0.4144 Tw +(\(PROPERTY OBJECT INSPECTW\))Tj +/TT6 1 Tf +-23.5669 -1.2889 TD +0.09 Tw +(which gets called when the user presses the )Tj +/TT8 1 Tf +20.2317 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.09 Tw +[( button and the selected item in the)]TJ +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +33 0 obj +<< +/Length 8349 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-7)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.1833 Tw +[( is a property name. )]TJ +/TT8 1 Tf +10.4081 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1833 Tw +[( will be the name of the selected property,)]TJ +/TT8 1 Tf +-20.0097 -1.2889 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +3.6006 0 TD +0.3311 Tw +[( will be the datum being viewed, and )]TJ +/TT8 1 Tf +19.3613 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.3311 Tw +[( will be the window. If)]TJ +/TT14 1 Tf +-27.7627 -1.2889 TD +0 Tw +(PROPCOMMANDFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.0778 Tw +[( is a string, it will get printed in the )]TJ +/TT8 1 Tf +16.5478 0 TD +0 Tw +(PROMPTWINDOW)Tj +/TT6 1 Tf +7.2012 0 TD +0.0778 Tw +[( when the )]TJ +/TT8 1 Tf +4.8476 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +-36.3978 -1.2889 TD +0.2156 Tw +[(button is pressed. This provides a convenient way to notify the user about disabled)]TJ +0 -1.2222 TD +0.57 Tw +(commands on the properties. )Tj +/TT8 1 Tf +16.2743 0 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(PROPCOMMANDFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.57 Tw +(, the default)Tj +/TT14 1 Tf +-33.5771 -1.2889 TD +0 Tw +(PROPCOMMANDFN)Tj +/TT6 1 Tf +7.8013 0 TD +0.0022 Tw +(, will present a menu with the single command )Tj +/TT8 1 Tf +21.0517 0 TD +0 Tw +(Set)Tj +/TT6 1 Tf +1.8003 0 TD +0.0002 Tc +0.002 Tw +( on it. If selected, the)Tj +/TT8 1 Tf +-30.6533 -1.2889 TD +0 Tc +0 Tw +(Set)Tj +/TT6 1 Tf +1.8003 0 TD +0.0011 Tw +( command will read a value from the user and set the selected property to the result of)Tj +/TT8 1 Tf +-1.8003 -1.2889 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +(uating this read value.)Tj +/TT14 1 Tf +-2.4004 -2.0667 TD +(VALUECOMMANDFN)Tj +/TT6 1 Tf +8.4014 0 TD +0.3578 Tw +[( is a function of four arguments )]TJ +/TT8 1 Tf +16.6802 0 TD +0.8589 Tw +(\(VALUE PROPERTY OBJECT)Tj +-25.0816 -1.2889 TD +0 Tw +(INSPECTW\))Tj +/TT6 1 Tf +5.4009 0 TD +0.13 Tw +[( that gets called when the user presses the )]TJ +/TT8 1 Tf +19.9332 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.13 Tw +[( button and the selected)]TJ +-28.9347 -1.2889 TD +0.0578 Tw +(item in the )Tj +/TT8 1 Tf +5.1626 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.0578 Tw +[( is a property value. )]TJ +/TT8 1 Tf +9.6489 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0578 Tw +[( will be the selected value \(as returned)]TJ +-22.6128 -1.2889 TD +0 Tw +(by )Tj +/TT14 1 Tf +1.396 0 TD +(FETCHFN)Tj +/TT6 1 Tf +4.2007 0 TD +(\), )Tj +/TT8 1 Tf +0.8697 0 TD +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.0367 Tw +[( will be the name of the property )]TJ +/TT8 1 Tf +15.0292 0 TD +0 Tw +(VALUE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +[( is the value of, )]TJ +/TT8 1 Tf +7.1023 0 TD +0 Tw +(OBJECT)Tj +/TT6 1 Tf +-36.3991 -1.2889 TD +(will be the datum being viewed, and )Tj +/TT8 1 Tf +16.4624 0 TD +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +( will be the )Tj +/TT8 1 Tf +5.1265 0 TD +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +( window. )Tj +/TT8 1 Tf +-31.1904 -2.0667 TD +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(VALUECOMMANDFN)Tj +/TT6 1 Tf +8.4014 0 TD +0.2789 Tw +(, the default )Tj +/TT14 1 Tf +6.3669 0 TD +0 Tw +(VALUECOMMANDFN)Tj +/TT6 1 Tf +8.4014 0 TD +0.2789 Tw +(, will present a)Tj +-32.6711 -1.2889 TD +0.0411 Tw +(menu of possible ways of inspecting the value and create a new Inspect window if one of)Tj +0 -1.2222 TD +0 Tw +(the menu items is selected.)Tj +/TT14 1 Tf +0 -2 TD +(TITLECOMMANDFN)Tj +/TT6 1 Tf +8.4014 0 TD +0.2078 Tw +[( is a function of two arguments )]TJ +/TT8 1 Tf +15.4593 0 TD +0.5 Tw +(\(INSPECTW OBJECT\))Tj +/TT6 1 Tf +10.7017 0 TD +0.2078 Tw +[( which gets)]TJ +-34.5624 -1.2889 TD +0.0489 Tw +(called when the user presses the )Tj +/TT8 1 Tf +14.787 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0489 Tw +[( button and the cursor is in the title or border of)]TJ +-18.3876 -1.2889 TD +0.1556 Tw +(the inspect window )Tj +/TT8 1 Tf +9.4486 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.1556 Tw +[(. This command function is provided so that users can)]TJ +-14.2494 -1.2889 TD +0.22 Tw +[(implement commands that apply to the entire object. The default )]TJ +/TT14 1 Tf +31.6012 0 TD +0 Tw +(TITLECOMMANDFN)Tj +/TT8 1 Tf +-31.6012 -1.2889 TD +(\(DEFAULT.INSPECTW.TITLECOMMANDFN\))Tj +/TT6 1 Tf +19.8032 0 TD +0.6078 Tw +[( presents a menu with the commands)]TJ +/TT8 1 Tf +-19.8032 -1.2889 TD +0 Tw +(ReFetch)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(IT)Tj +/TT15 1 Tf +1.2002 0 TD +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +(datum, and )Tj +/TT8 1 Tf +5.3657 0 TD +(IT)Tj +/TT15 1 Tf +1.2002 0 TD +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +(election .)Tj +/TT14 1 Tf +-14.4404 -2.0667 TD +(TITLE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0656 Tw +[( specifies the title of the window. If )]TJ +/TT14 1 Tf +16.59 0 TD +0 Tw +(TITLE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0656 Tw +[( is )]TJ +/TT8 1 Tf +1.346 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0656 Tw +(, the title of the window will be)Tj +-25.7372 -1.2889 TD +0.1389 Tw +(the printed form of )Tj +/TT14 1 Tf +9.2636 0 TD +0 Tw +(DATUM)Tj +/TT6 1 Tf +3.0005 0 TD +0.1389 Tw +[( followed by the string " Inspector". If )]TJ +/TT14 1 Tf +18.2974 0 TD +0 Tw +(TITLE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1389 Tw +[( is the litatom)]TJ +/TT8 1 Tf +-33.5619 -1.2889 TD +0 Tw +(DONT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0633 Tw +[(, the inspect window will not have a title. If )]TJ +/TT14 1 Tf +20.349 0 TD +0 Tw +(TITLE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0633 Tw +[( is any other litatom, it will be)]TJ +-26.35 -1.2889 TD +0.0056 Tw +(applyed to the )Tj +/TT14 1 Tf +6.6651 0 TD +0 Tw +(DATUM)Tj +/TT6 1 Tf +3.0005 0 TD +0.0056 Tw +[( and the potential inspect window \(if it is known\). If this result is the)]TJ +-9.6656 -1.2889 TD +0 Tw +(litatom )Tj +/TT8 1 Tf +3.462 0 TD +(DONT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0489 Tw +(, the inspect window will not have a title; otherwise the result will be used)Tj +-6.4625 -1.2889 TD +0 Tw +(as a title. If )Tj +/TT14 1 Tf +5.3071 0 TD +(TITLE)Tj +/TT6 1 Tf +3.0005 0 TD +( is not a litatom, it will be used as the title. )Tj +/TT14 1 Tf +-8.3076 -2.0667 TD +(SELECTIONFN)Tj +/TT6 1 Tf +6.6011 0 TD +0.1722 Tw +[( is a function of three arguments )]TJ +/TT8 1 Tf +15.7656 0 TD +0.4144 Tw +(\(PROPERTY VALUEFLG INSPECTW\))Tj +/TT6 1 Tf +-22.3667 -1.2889 TD +0.1189 Tw +(which gets called when the user releases the left button and the cursor is on one of the)Tj +0 -1.2222 TD +0.1133 Tw +[(items. The )]TJ +/TT14 1 Tf +5.4167 0 TD +0 Tw +(SELECTIONFN)Tj +/TT6 1 Tf +6.6011 0 TD +0.1133 Tw +[( allows a program to take action on the users selection of an)]TJ +-12.0177 -1.2889 TD +0.0311 Tw +[(item in the inspect window. At the time this function is called, the selected item has been)]TJ +0 -1.2222 TD +0.0778 Tw +[("selected". The function )]TJ +/TT8 1 Tf +11.2169 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(SELECTITEM)Tj +/TT6 1 Tf +6.001 0 TD +0.0778 Tw +[( \(described below\) can be used to turn)]TJ +-22.2686 -1.2889 TD +0.2489 Tw +(off this selection. )Tj +/TT8 1 Tf +8.9423 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.2489 Tw +[( will be the name of the property of the selected item.)]TJ +/TT14 1 Tf +-13.7431 -1.2889 TD +0 Tw +(VALUEFLG)Tj +/TT6 1 Tf +4.8008 0 TD +0.08 Tw +[( will be )]TJ +/TT8 1 Tf +3.7293 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.08 Tw +[( if the selected item is the property name; )]TJ +/TT8 1 Tf +19.1883 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.08 Tw +[( if the selected item is)]TJ +-30.1187 -1.2889 TD +0 Tw +(the property value.)Tj +/TT14 1 Tf +0 -2 TD +(WHERE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1 Tw +[( indicates where the inspect window should go. Its interpretation is described in)]TJ +/TT8 1 Tf +-3.0005 -1.2889 TD +0 Tw +(INSPECT)Tj +/TT6 1 Tf +4.2007 0 TD +( \(see above\).)Tj +/TT14 1 Tf +-4.2007 -2.0667 TD +(PROPPRINTFN)Tj +/TT6 1 Tf +6.6011 0 TD +0.0789 Tw +[( is a function of two arguments \()]TJ +/TT8 1 Tf +14.8901 0 TD +0.1889 Tw +(PROPERTY DATUM\))Tj +/TT6 1 Tf +9.1904 0 TD +0.0789 Tw +[( which gets called to)]TJ +-30.6815 -1.2889 TD +0.4744 Tw +(determine what to print in the property place for the property )Tj +/TT8 1 Tf +32.8385 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.4744 Tw +[(. If)]TJ +/TT14 1 Tf +-37.6393 -1.2889 TD +0 Tw +(PROPPRINTFN)Tj +/TT6 1 Tf +6.6011 0 TD +0.2411 Tw +[( returns )]TJ +/TT8 1 Tf +4.1863 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2411 Tw +(, no property name will be printed and the value will be)Tj +-12.5877 -1.2889 TD +0 Tw +(printed to the left of the other values. )Tj +ET +endstream +endobj +34 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT14 16 0 R +/TT15 23 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +36 0 obj +<< +/Length 7454 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-8)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 174 569.54 Tm +0.2333 Tw +(An inspect window uses the following window property names to hold information:)Tj +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(DATUM)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT14 1 Tf +1.11 0 TD +(FETCHFN)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT14 1 Tf +1.11 0 TD +(STOREFN)Tj +/TT6 1 Tf +4.2007 0 TD +(, )Tj +/TT14 1 Tf +1.11 0 TD +(PROPCOMMANDFN)Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT14 1 Tf +1.11 0 TD +(VALUECOMMANDFN)Tj +/TT6 1 Tf +8.4014 0 TD +(, )Tj +/TT14 1 Tf +1.11 0 TD +(SELECTIONFN)Tj +/TT6 1 Tf +6.6011 0 TD +(,)Tj +/TT14 1 Tf +-39.7556 -1.2889 TD +(PROPPRINTFN)Tj +/TT6 1 Tf +6.6011 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(INSPECTWTITLE)Tj +/TT6 1 Tf +7.8013 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(PROPERTIES)Tj +/TT6 1 Tf +6.001 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(CURRENTITEM)Tj +/TT6 1 Tf +6.6011 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(SELECTABLEITEMS)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 524.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 524.06 Tm +(INSPECTW.REDISPLAY)Tj +/TT8 1 Tf +10.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(INSPECTW)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +()Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 350.4158 524.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 524.06 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0789 Tw +(Updates the display of the objects being inspected in )Tj +/TT8 1 Tf +24.1831 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.0789 Tw +[(. If )]TJ +/TT14 1 Tf +1.9066 0 TD +0 Tw +(PROPS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0789 Tw +[( is a property)]TJ +-33.891 -1.2889 TD +0.0522 Tw +[(name or a list of property names, only those properties are updated. If )]TJ +/TT14 1 Tf +32.238 0 TD +0 Tw +(PROPS)Tj +/TT6 1 Tf +3.0005 0 TD +0.0522 Tw +[( is )]TJ +/TT8 1 Tf +1.3193 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +(, all)Tj +-38.358 -1.2889 TD +0.15 Tw +[(properties are redisplayed. This function is provided because inspect windows do not)]TJ +0 -1.2222 TD +0 Tw +(automatically update their display when the object they are showing changes. )Tj +0 -2 TD +0.2478 Tw +(This function is called by the )Tj +/TT8 1 Tf +14.4305 0 TD +0 Tw +(ReFetch)Tj +/TT6 1 Tf +4.2007 0 TD +0.2478 Tw +[( command in the title command menu of an)]TJ +/TT8 1 Tf +-18.6312 -1.2889 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +( \(see above\).)Tj +/TT8 1 Tf +10 0 0 10 150 420.43 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 420.43 Tm +(INSPECTW.REPLACE)Tj +/TT8 1 Tf +9.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(INSPECTW)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(PROPERTY)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +10 0 0 10 388.2237 420.43 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 420.43 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.2444 Tw +(Calls the )Tj +/TT8 1 Tf +4.5909 0 TD +0 Tw +(STOREFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.2444 Tw +[( of the inspect window )]TJ +/TT14 1 Tf +11.5831 0 TD +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.2444 Tw +[( to change the property named)]TJ +/TT14 1 Tf +-25.1755 -1.2889 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1133 Tw +[( to the value )]TJ +/TT14 1 Tf +6.1506 0 TD +0 Tw +(NEWVALUE)Tj +/TT6 1 Tf +4.8008 0 TD +0.1133 Tw +[( and updates the display of )]TJ +/TT14 1 Tf +12.9569 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1133 Tw +(s value in the)Tj +-33.5098 -1.2889 TD +0 Tw +(display. This provides a functional interface for user )Tj +/TT8 1 Tf +23.5972 0 TD +(PROPCOMMANDFNs)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 150 357.4 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 357.4 Tm +(INSPECTW.SELECTITEM)Tj +/TT8 1 Tf +11.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(INSPECTW)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(PROPERTY)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(VALUEFLG)Tj +/TT8 1 Tf +10 0 0 10 404.4237 357.4 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 357.4 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0556 Tw +[(Sets the selected item in an inspect window. The item is inverted on the display and put)]TJ +0 -1.2222 TD +0.0022 Tw +(on the window property )Tj +/TT8 1 Tf +11.1212 0 TD +0 Tw +(CURRENTITEM)Tj +/TT6 1 Tf +6.6011 0 TD +0.0006 Tc +0.0016 Tw +( of )Tj +/TT14 1 Tf +1.3834 0 TD +0 Tc +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.0004 Tc +0.0018 Tw +(. If )Tj +/TT14 1 Tf +1.6766 0 TD +0 Tc +0 Tw +(INSPECTW)Tj +/TT6 1 Tf +4.8008 0 TD +0.0003 Tc +0.0019 Tw +( has a )Tj +/TT8 1 Tf +2.7625 0 TD +0 Tc +0 Tw +(CURRENTITEM)Tj +/TT6 1 Tf +6.6011 0 TD +(,)Tj +-39.7474 -1.2889 TD +0.0289 Tw +(it is deselected. )Tj +/TT14 1 Tf +7.3201 0 TD +0 Tw +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +0.0289 Tw +[( is the name of the property of the selected item. )]TJ +/TT14 1 Tf +22.0859 0 TD +0 Tw +(VALUEFLG)Tj +/TT6 1 Tf +4.8008 0 TD +0.0289 Tw +[( is)]TJ +/TT8 1 Tf +-39.0076 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0544 Tw +[( if the selected item is the property name; )]TJ +/TT8 1 Tf +18.9583 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0544 Tw +[( if the selected item is the property value.)]TJ +-21.3587 -1.2889 TD +0 Tw +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(PROPERTY)Tj +/TT6 1 Tf +4.8008 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, no item will be selected. This provides a way of deselecting all items.)Tj +/TT4 1 Tf +10 0 0 10 102 251.71 Tm +(PROMPTFORWORD)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 249 m +582.01 249 l +S +BT +/TT8 1 Tf +9 0 0 9 126 227.05 Tm +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.1289 Tw +[( is a function that reads in a sequence of characters, generally from the keyboard,)]TJ +-7.8013 -1.2889 TD +0.0833 Tw +(without involving )Tj +/TT8 1 Tf +8.444 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0833 Tw +[(-like syntax. A user can supply a prompting string, as well as a "candidate")]TJ +-10.8444 -1.2889 TD +0.0756 Tw +(string, which is printed and used if the user types only a word terminator character \(or doesnt type)Tj +0 -1.2222 TD +0.1556 Tw +[(anything before a given time limit\). As soon as any characters are typed the "candidate" string is)]TJ +T* +0 Tw +(erased and the new input takes its place.)Tj +/TT8 1 Tf +0 -2.8889 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.3667 Tw +[( accepts user type-in until one of the "word terminator" characters is typed.)]TJ +-7.8013 -1.2889 TD +0.19 Tw +(Normally, the word terminator characters are )Tj +/TT8 1 Tf +21.5419 0 TD +0 Tw +(EOL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.69 0 TD +(ESCAPE)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.69 0 TD +(LF)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.69 0 TD +(SPACE)Tj +/TT6 1 Tf +3.0005 0 TD +0.19 Tw +(, or )Tj +/TT8 1 Tf +2.0709 0 TD +0 Tw +(TAB)Tj +/TT6 1 Tf +1.8003 0 TD +0.19 Tw +[(. This list can be)]TJ +-37.0846 -1.2889 TD +0.1011 Tw +(changed using the )Tj +/TT8 1 Tf +8.6505 0 TD +0 Tw +(TERMINCHAR)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1011 Tw +[( argument to )]TJ +/TT8 1 Tf +6.2496 0 TD +0 Tw +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.1011 Tw +(, for example if it is desirable to)Tj +-30.7527 -1.2889 TD +0 Tw +(allow the user to input lines including spaces.)Tj +/TT8 1 Tf +0 -2.8889 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +( also recognizes the following special characters:)Tj +/TT12 1 Tf +-3.8679 -2.0667 TD +(Control-A)Tj +0 -1.2222 TD +(BACKSPACE)Tj +1.2 -1.2889 TD +( DELETE)Tj +/TT6 1 Tf +5.5333 0 TD +0.2155 Tw +(Any of these characters deletes the last character typed and appropriately)Tj +0 -1.2889 TD +0 Tw +(erases it from the echo stream if it is a display stream.)Tj +ET +endstream +endobj +37 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +39 0 obj +<< +/Length 5916 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-9)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT12 1 Tf +9 0 0 9 113.4 569.54 Tm +(Control-Q)Tj +/TT6 1 Tf +6.7333 0 TD +(Erases all the type-in so far.)Tj +/TT12 1 Tf +-6.7333 -2.0667 TD +(Control-R)Tj +/TT6 1 Tf +6.7333 0 TD +(Reprints the accumulated string.)Tj +/TT12 1 Tf +-6.7333 -2.0667 TD +(Control-V)Tj +/TT6 1 Tf +6.7333 0 TD +0.0111 Tw +("Quotes" the next character: after typing Control-V, the next character typed is)Tj +0 -1.2889 TD +0.1811 Tw +(added to the accumulated string, regardless of any special meaning it has.)Tj +0 -1.2222 TD +0.0622 Tw +(Allows the user to include editing characters and word terminator characters)Tj +T* +0 Tw +(in the accumulated string.)Tj +/TT12 1 Tf +-6.7333 -2 TD +(Control-W)Tj +/TT6 1 Tf +6.7333 0 TD +(Erases the last word.)Tj +/TT12 1 Tf +-1.9333 -2.0667 TD +(?)Tj +/TT6 1 Tf +1.9333 0 TD +0.6967 Tw +[(Calls up a "help" facility. The action taken is defined by the)]TJ +/TT8 1 Tf +0 -1.2889 TD +0 Tw +(GENERATE?LIST.FN)Tj +/TT6 1 Tf +9.6016 0 TD +0.1111 Tw +[( argument to )]TJ +/TT8 1 Tf +6.2796 0 TD +0 Tw +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.1111 Tw +[( \(see below\). Normally,)]TJ +-23.6825 -1.2889 TD +0 Tw +(this prints a list of possible candidates.)Tj +/TT8 1 Tf +10 0 0 10 102 417.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 417.89 Tm +(PROMPTFORWORD)Tj +/TT8 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.9001 0 TD +0.3 Tw +(PROMPT.STR CANDIDATE.STR GENERATE?LIST.FN ECHO.CHANNEL)Tj +-8.7001 -1.2478 TD +(DONTECHOTYPEIN.FLG URGENCY.OPTION TERMINCHARS.LST KEYBD.CHANNEL)Tj +/TT8 1 Tf +10 0 0 10 448.2 406.66 Tm +0 Tw +(\))Tj +/F1 1 Tf +0.6001 0 TD +0.139 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 108 396.71 Tm +0 Tc +([Function])Tj +/TT8 1 Tf +2 -1.7778 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.0233 Tw +[( has a multiplicity of features, which are specified through a rather large)]TJ +-7.8013 -1.2889 TD +0.0144 Tw +(number of input arguments, but the default settings for them \(i.e., when they arent given,)Tj +0 -1.2222 TD +0.0778 Tw +(or are given as )Tj +/TT8 1 Tf +7.023 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0778 Tw +(\) is such to minimize the number needed in the average case, and an)Tj +-8.8233 -1.2889 TD +0.2211 Tw +(attempt has been made to order the more frequently non-defaulted arguments at the)Tj +0 -1.2222 TD +0.0856 Tw +[(beginning of the argument list. The default input and echo are both to the terminal; the)]TJ +T* +0 Tw +(terminal table in effect during input allows most control characters to be )Tj +/TT8 1 Tf +32.1924 0 TD +(INDICATE)Tj +/TT6 1 Tf +4.8008 0 TD +(d. )Tj +/TT8 1 Tf +-36.9932 -2.0667 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.3378 Tw +[( returns )]TJ +/TT8 1 Tf +4.3797 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3378 Tw +[( if a null string is typed; this would occur when no)]TJ +-13.9812 -1.2889 TD +0.0678 Tw +(candidate is given and only a terminator is typed, or when the candidate is erased and a)Tj +0 -1.2222 TD +0.5933 Tw +[(terminator is typed with no other input still un-erased. In all other cases,)]TJ +/TT8 1 Tf +T* +0 Tw +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +( returns a string. )Tj +/TT8 1 Tf +-7.8013 -2.0667 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +( is controlled through the following arguments:)Tj +/TT14 1 Tf +-9.8013 -1.2889 TD +(PROMPT.STR)Tj +/TT6 1 Tf +7.3333 0 TD +0.0944 Tw +(If non-)Tj +/TT8 1 Tf +3.0573 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0944 Tw +(, this is coerced to a string and used for prompting; an additional)Tj +-4.8576 -1.2889 TD +0 Tw +(space is output after this string.)Tj +/TT14 1 Tf +-9.1333 -1.2222 TD +(CANDIDATE.STR)Tj +/TT6 1 Tf +9.1333 0 TD +0.17 Tw +(If non-)Tj +/TT8 1 Tf +3.1329 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.17 Tw +(, this is coerced to a string and offered as initial contents of the)Tj +-4.9332 -1.2889 TD +0 Tw +(input buffer.)Tj +/TT14 1 Tf +-10.9333 -1.2222 TD +(GENERATE?LIST.FN)Tj +/TT6 1 Tf +10.9333 0 TD +0.0289 Tw +(If non-)Tj +/TT8 1 Tf +2.9918 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0289 Tw +(, this is either a string to be printed out for help, or a function to be)Tj +-4.7921 -1.2889 TD +0.0767 Tw +(applied to )Tj +/TT14 1 Tf +4.8994 0 TD +0 Tw +(PROMPT.STR)Tj +/TT6 1 Tf +6.001 0 TD +0.0767 Tw +[( and )]TJ +/TT14 1 Tf +2.3462 0 TD +0 Tw +(CANDIDATE.STR)Tj +/TT6 1 Tf +7.8013 0 TD +0.0767 Tw +[( \(after both have been coerced)]TJ +-21.0479 -1.2889 TD +0.1078 Tw +[(to strings\), and which should return a list of potential candidates. The help)]TJ +0 -1.2222 TD +0.0089 Tw +(string or list of potential candidates will then be printed on a separate line, the)Tj +T* +0 Tw +(prompt will be restarted, and any type-in will be re-echoed.)Tj +T* +0.1511 Tw +[(Note: If )]TJ +/TT14 1 Tf +4.3054 0 TD +0 Tw +(GENERATE?LIST.FN)Tj +/TT6 1 Tf +9.6016 0 TD +0.1511 Tw +[( is a function, its value list will be cached so)]TJ +-13.9069 -1.2889 TD +0 Tw +(that it will be run at most once per call to )Tj +/TT8 1 Tf +18.3496 0 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +/TT14 1 Tf +-34.6842 -1.2889 TD +(ECHO.CHANNEL)Tj +/TT6 1 Tf +8.5333 0 TD +0.0456 Tw +(Coerced to an output stream; )Tj +/TT8 1 Tf +13.3567 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0456 Tw +[( defaults to T, the "terminal output stream",)]TJ +-15.157 -1.2889 TD +0.1133 Tw +(normally \()Tj +/TT8 1 Tf +4.7403 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT6 1 Tf +9.6016 0 TD +0.1133 Tw +[(\). To achieve echoing to the "current output)]TJ +-14.3418 -1.2889 TD +0.0822 Tw +(stream", use \()Tj +/TT8 1 Tf +6.1312 0 TD +0.1989 Tw +(GETSTREAM NIL OUTPUT)Tj +/TT6 1 Tf +12.9998 0 TD +0.0822 Tw +[(\). If echo is to a display stream, it)]TJ +-19.1311 -1.2889 TD +0 Tw +(will have a flashing caret showing where the next input is to be echoed.)Tj +/TT14 1 Tf +-12.1333 -1.2222 TD +(DONTECHOTYPEIN.FLG)Tj +/TT6 1 Tf +12.1333 0 TD +(If )Tj +/TT8 1 Tf +1.4399 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.52 Tw +[(, there is no echoing of the input characters. If the value of)]TJ +/TT14 1 Tf +-2.04 -1.2889 TD +0 Tw +(DONTECHOTYPEIN.FLG)Tj +/TT6 1 Tf +10.8018 0 TD +0.0933 Tw +[( is a single-character atom or string, that character is)]TJ +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +42 0 obj +<< +/Length 6300 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-10)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 222 569.54 Tm +0.3067 Tw +[(echoed instead of the actual input. For example, )]TJ +/TT8 1 Tf +24.4431 0 TD +0 Tw +(LOGIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.3067 Tw +[( prompts for a)]TJ +-27.4436 -1.2889 TD +0 Tw +(password with )Tj +/TT14 1 Tf +6.8677 0 TD +(DONTECHOTYPEIN.FLG)Tj +/TT6 1 Tf +10.8018 0 TD +( being ")Tj +/TT8 1 Tf +3.3325 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(".)Tj +/TT14 1 Tf +-31.3354 -1.2889 TD +(URGENCY.OPTION)Tj +/TT6 1 Tf +9.7333 0 TD +(If )Tj +/TT8 1 Tf +1.0577 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.6378 0 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.1378 Tw +[( quietly wait for input, as )]TJ +/TT8 1 Tf +12.2354 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1378 Tw +[( does; if a number,)]TJ +-25.9328 -1.2889 TD +0.1522 Tw +(this is the number of seconds to wait for the user to respond \(if timeout is)Tj +0 -1.2222 TD +0.1 Tw +(reached, then )Tj +/TT14 1 Tf +6.409 0 TD +0 Tw +(CANDIDATE.WORD)Tj +/TT6 1 Tf +8.4014 0 TD +0.1 Tw +[( is returned, regardless of any other type-in)]TJ +-14.8104 -1.2889 TD +0.0333 Tw +(activity\); if )Tj +/TT8 1 Tf +5.073 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +(, this means to wait forever, but periodically flash the window to)Tj +-5.6731 -1.2889 TD +0.2733 Tw +(alert the user; if )Tj +/TT8 1 Tf +8.2467 0 TD +0 Tw +(TTY)Tj +/TT6 1 Tf +1.8003 0 TD +0.2733 Tw +(, then )Tj +/TT8 1 Tf +3.2659 0 TD +0 Tw +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +0.2733 Tw +[( grabs the )]TJ +/TT8 1 Tf +5.3854 0 TD +0 Tw +(TTY)Tj +/TT6 1 Tf +1.8003 0 TD +0.2733 Tw +[( immediately.)]TJ +-28.2998 -1.2889 TD +0 Tw +(When )Tj +/TT8 1 Tf +3.0864 0 TD +0.4633 Tw +(URGENCY.OPTION = TTY)Tj +/TT6 1 Tf +12.9286 0 TD +0.1933 Tw +(, the cursor is temporarily changed to a)Tj +-16.015 -1.2889 TD +0 Tw +(different shape to indicate the urgent nature of the request.)Tj +/TT14 1 Tf +-10.3333 -1.2222 TD +(TERMINCHARS.LST)Tj +/TT6 1 Tf +10.3333 0 TD +0.1778 Tw +(This is list of "word terminator" character codes; it defaults to )Tj +/TT8 1 Tf +29.2666 0 TD +0 Tw +(\(CHARCODE)Tj +-29.2666 -1.2889 TD +(\(EOL ESCAPE LF SPACE TAB\)\))Tj +/TT6 1 Tf +15.6025 0 TD +(. This may also be a single character code. )Tj +/TT14 1 Tf +-24.7359 -1.2889 TD +(KEYBD.CHANNEL)Tj +/TT6 1 Tf +9.1333 0 TD +0.0167 Tw +(If non-)Tj +/TT8 1 Tf +2.9796 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0167 Tw +(, this is coerced to a stream, and the input bytes are taken from that)Tj +-4.7799 -1.4311 TD +0.1 Tw +(stream. )Tj +/TT8 1 Tf +3.9568 0 TD +0 Tw +(NIL)Tj +/F1 1 Tf +10 0 0 10 273.8141 430.26 Tm +0.112 Tw +[( defaults to the )]TJ +/TT6 1 Tf +9 0 0 9 350.7141 430.26 Tm +0.1 Tw +[(keyboard input stream. Note that this is not)]TJ +-14.3016 -1.2889 TD +0.0833 Tw +(the same as the terminal input stream )Tj +/TT8 1 Tf +17.4745 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0833 Tw +(, which is a buffered keyboard input)Tj +-18.0745 -1.2889 TD +0 Tw +[(stream, )-1159.8(not suitable for use with )]TJ +/TT8 1 Tf +15.651 0 TD +(PROMPTFORWORD)Tj +/TT6 1 Tf +7.8013 0 TD +(.)Tj +-28.7856 -2.0667 TD +(Examples:)Tj +/TT8 1 Tf +10 0 0 10 246 370.41 Tm +(\()Tj +9 0 0 9 252.0009 370.41 Tm +(PROMPTFORWORD)Tj +-0.6668 -1.2611 TD +( "What is your FOO word?" Mumble)Tj +10 0 0 10 246 347.41 Tm +( \()Tj +9 0 0 9 270.0039 347.41 Tm +(FUNCTION)Tj +10 0 0 10 313.2109 347.41 Tm +( \()Tj +9 0 0 9 325.2129 347.41 Tm +(LAMBDA)Tj +10 0 0 10 357.6181 347.41 Tm +( \(\) \(Grumble Bletch\)\)\))Tj +-11.1618 -1.2 TD +( )Tj +9 0 0 9 264.0029 335.41 Tm +(PROMPTWINDOW)Tj +10 0 0 10 328.8134 335.41 Tm +( )Tj +9 0 0 9 334.8144 335.41 Tm +(NIL)Tj +10 0 0 10 351.0171 335.41 Tm +( )Tj +9 0 0 9 357.018 335.41 Tm +(30)Tj +10 0 0 10 367.8198 335.41 Tm +(\))Tj +/TT6 1 Tf +9 0 0 9 174 316.46 Tm +0.2056 Tw +(This first prompts the user for input by printing the first argument as a prompt into)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(PROMPTWINDOW)Tj +/TT6 1 Tf +7.2012 0 TD +0.0467 Tw +[(; then the proffered default answer, )]TJ +/TT8 1 Tf +16.4619 0 TD +0 Tw +(Mumble)Tj +/TT6 1 Tf +3.6006 0 TD +0.0467 Tw +(, is printed out and the caret)Tj +-27.2637 -1.2889 TD +0.04 Tw +[(starts flashing just after it to indicate that the upcoming input will be echoed there. If the)]TJ +0 -1.2222 TD +0 Tw +(user fails to complete a word within 30 seconds, then the result will be the string )Tj +/TT8 1 Tf +35.7871 0 TD +(Mumble)Tj +/TT6 1 Tf +3.6006 0 TD +(. )Tj +/TT8 1 Tf +-31.3877 -2 TD +(\(FRESHLINE T\))Tj +0 -1.2222 TD +(\(LIST )Tj +T* +( \(PROMPTFORWORD)Tj +T* +( \(CONCAT "{" HOST "} Login:"\))Tj +T* +( \(USERNAME NIL NIL T\)\))Tj +T* +( \(PROMPTFORWORD)Tj +T* +( " \(password\)" NIL NIL NIL *\)\))Tj +/TT6 1 Tf +-8 -2.0667 TD +0.2344 Tw +(This first prompts in whatever window is currently \()Tj +/TT8 1 Tf +25.1802 0 TD +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT6 1 Tf +9.6016 0 TD +0.2344 Tw +(\), and then)Tj +-34.7818 -1.2889 TD +0.0178 Tw +[(takes in a username; the second call prompts with \(password\) and takes in another word)]TJ +0 -1.2222 TD +0 Tw +(\(the password\) without proffering a candidate, echoing the typed-in characters as ")Tj +/TT8 1 Tf +36.9312 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(".)Tj +/TT4 1 Tf +10 0 0 10 102 114.72 Tm +(ASKUSER)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 112.01 m +582.01 112.01 l +S +BT +/TT8 1 Tf +9 0 0 9 126 90.06 Tm +(DWIM)Tj +/TT6 1 Tf +2.4004 0 TD +0.2222 Tw +(, the compiler, the editor, and many other system packages all use )Tj +/TT8 1 Tf +32.0505 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2222 Tw +(, an extremely)Tj +-38.6515 -1.2889 TD +0.0011 Tw +(general user interaction package, for their interactions with the user at the terminal. )Tj +/TT8 1 Tf +37.412 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0001 Tc +0.001 Tw +( takes as)Tj +-41.6127 -1.2889 TD +0 Tc +0.0178 Tw +(its principal argument )Tj +/TT8 1 Tf +10.1647 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0178 Tw +[( which is used to drive the interaction. )]TJ +/TT8 1 Tf +17.5868 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0178 Tw +[( specifies what the user)]TJ +-34.9526 -1.2889 TD +0.0656 Tw +(can type at any given point, how )Tj +/TT8 1 Tf +15.1928 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0656 Tw +[( should respond to the various inputs, what value should)]TJ +-19.3935 -1.2889 TD +0.1367 Tw +(be returned by )Tj +/TT8 1 Tf +7.1717 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1367 Tw +(, and is also used to present the user at any given point with a list of the)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +45 0 obj +<< +/Length 8012 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-11)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.2033 Tw +(possible responses. )Tj +/TT8 1 Tf +9.5724 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2033 Tw +[( also takes other arguments which permit specifying a wait time, a)]TJ +-13.7731 -1.2889 TD +0.1044 Tw +(default value, a message to be printed on entry, a flag indicating whether or not typeahead is to be)Tj +0 -1.2222 TD +0.0167 Tw +[(permitted, a flag indicating whether the transaction is to be stored on the history list \(see Chapter 13\),)]TJ +T* +0 Tw +(a default set of options, and an \(optional\) input file/string.)Tj +/TT8 1 Tf +10 0 0 10 102 514.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 514.89 Tm +(ASKUSER)Tj +/TT8 1 Tf +4.1999 0 TD +( )Tj +/TT14 1 Tf +0.9434 0 TD +0.3433 Tw +(WAIT DEFAULT MESS KEYLST TYPEAHEAD LISPXPRNTFLG OPTIONSLST)Tj +-5.1434 -1.2478 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +10 0 0 10 129.6035 503.66 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +0.159 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 503.66 Tm +0 Tc +([Function])Tj +/TT14 1 Tf +-35.4033 -1.8833 TD +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0256 Tw +[( is either )]TJ +/TT8 1 Tf +4.0938 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0256 Tw +[( or a number \(of seconds\). )]TJ +/TT14 1 Tf +12.1691 0 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0256 Tw +[( is a single character or a sequence)]TJ +-24.6642 -1.2889 TD +0.0433 Tw +(\(list\) of characters to be used as the default inputs for the case when )Tj +/TT14 1 Tf +30.7595 0 TD +0 Tw +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0433 Tw +[( is not )]TJ +/TT8 1 Tf +3.0489 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0433 Tw +[( and)]TJ +-38.0091 -1.2889 TD +0.17 Tw +(more than )Tj +/TT14 1 Tf +5.133 0 TD +0 Tw +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.17 Tw +[( seconds elapse without any input. In this case, the character\(s\) from)]TJ +/TT14 1 Tf +-7.5334 -1.2889 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0344 Tw +[( are processed exactly as though they had been typed, except that )]TJ +/TT8 1 Tf +29.5535 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0344 Tw +[( first)]TJ +-37.9548 -1.2889 TD +0 Tw +(types ")Tj +/TT8 1 Tf +3.0073 0 TD +(...)Tj +/TT6 1 Tf +1.8003 0 TD +(".)Tj +/TT14 1 Tf +-4.8076 -2.0667 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.03 Tw +[( is the initial message to be printed by )]TJ +/TT8 1 Tf +17.2378 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.03 Tw +(, if any, and can be a string, or a list.)Tj +-23.8388 -1.2889 TD +0.07 Tw +(In the latter case, each element of the list is printed, separated by spaces, and terminated)Tj +0 -1.2222 TD +0.1567 Tw +(with a " )Tj +/TT8 1 Tf +4.1243 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.1567 Tw +[( ". )]TJ +/TT14 1 Tf +1.8411 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1567 Tw +[( and )]TJ +/TT14 1 Tf +2.5062 0 TD +0 Tw +(OPTIONSLST)Tj +/TT6 1 Tf +6.001 0 TD +0.1567 Tw +[( are described. )]TJ +/TT14 1 Tf +7.5373 0 TD +0 Tw +(TYPEAHEAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.1567 Tw +[( is )]TJ +/TT8 1 Tf +1.5282 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1567 Tw +[( if the user is)]TJ +-33.7397 -1.2889 TD +0.1589 Tw +(permitted to typeahead a response to )Tj +/TT8 1 Tf +17.6526 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1589 Tw +(. )Tj +/TT8 1 Tf +1.0678 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1589 Tw +[( means any typeahead should be)]TJ +-24.7213 -1.2889 TD +0.1567 Tw +(cleared and saved. )Tj +/TT14 1 Tf +9.3469 0 TD +0 Tw +(LISPXPRNTFLG)Tj +/TT6 1 Tf +7.2012 0 TD +0.1567 Tw +[( determines whether or not the interaction is to be)]TJ +-16.5481 -1.2889 TD +0.1778 Tw +(recorded on the history list. )Tj +/TT14 1 Tf +13.7434 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1778 Tw +[( can be either )]TJ +/TT8 1 Tf +6.8215 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1778 Tw +[( \(in which case it defaults to the)]TJ +-24.7656 -1.2889 TD +0 Tw +(terminal input stream, T\) or a stream.)Tj +0 -2 TD +0.0133 Tw +(All input operations take place from )Tj +/TT14 1 Tf +16.3661 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0133 Tw +[( until an unacceptable input is encountered, i.e.,)]TJ +-18.7665 -1.2889 TD +0.0644 Tw +(one that does not conform to the protocol defined by )Tj +/TT14 1 Tf +24.1772 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0644 Tw +[(. At that point, )]TJ +/TT14 1 Tf +7.2568 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0644 Tw +[( is set)]TJ +-37.4349 -1.2889 TD +0 Tw +(to )Tj +/TT8 1 Tf +1.1876 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT14 1 Tf +0.5656 0 TD +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0656 Tw +[( is set to )]TJ +/TT8 1 Tf +4.0781 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0656 Tw +[(, the input buffer is cleared, and a bell is rung. Unacceptable)]TJ +-12.4324 -1.2889 TD +0 Tw +(inputs are not echoed.)Tj +0 -2 TD +0.0689 Tw +(The value of )Tj +/TT8 1 Tf +5.9474 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0689 Tw +[( is the result of packing all the keys that were matched, unless the)]TJ +/TT14 1 Tf +-10.1481 -1.2889 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +( option is specified \(see the Options section below\).)Tj +/TT8 1 Tf +10 0 0 10 102 247.43 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 247.43 Tm +(MAKEKEYLST)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(LST DEFAULTKEY LCASEFLG AUTOCOMPLETEFLG)Tj +/TT8 1 Tf +10 0 0 10 378.0352 247.43 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 247.43 Tm +([Function])Tj +/TT14 1 Tf +-35.4033 -1.8833 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.1078 Tw +[( is a list of atoms or strings. )]TJ +/TT8 1 Tf +13.5135 0 TD +0 Tw +(MAKEKEYLST)Tj +/TT6 1 Tf +6.001 0 TD +0.1078 Tw +[( returns an )]TJ +/TT8 1 Tf +5.3595 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT8 1 Tf +0.3578 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( which will)]TJ +-34.8332 -1.2889 TD +0.0556 Tw +(permit the user to specify one of the elements on )Tj +/TT14 1 Tf +22.2626 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +[( by either typing enough characters)]TJ +-24.0629 -1.2889 TD +0.0811 Tw +(to make the choice unambiguous, or else typing a number between 1 and N, where N is)Tj +0 -1.2222 TD +0 Tw +(the length of )Tj +/TT14 1 Tf +5.8325 0 TD +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-7.6328 -2.0667 TD +0.3211 Tw +(For example, if )Tj +/TT8 1 Tf +7.8335 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.3211 Tw +[( is called with )]TJ +/TT8 1 Tf +7.6482 0 TD +0.7711 Tw +(KEYLST = \(MAKEKEYLST \(CONNECT)Tj +-19.6824 -1.2889 TD +0.0633 Tw +(SUPPORT COMPILE\)\))Tj +/TT6 1 Tf +10.265 0 TD +0.0267 Tw +(, then the user can type )Tj +/TT8 1 Tf +10.6556 0 TD +0 Tw +(C-O-N)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(S)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(C-O-M)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(1)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5267 0 TD +(2)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +(, or )Tj +/TT8 1 Tf +1.7443 0 TD +0 Tw +(3)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[( to indicate one)]TJ +-33.1729 -1.2889 TD +0 Tw +(of the three choices.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.0466 0 TD +(LCASEFLG )Tj +/TT8 1 Tf +5.7042 0 TD +0.3033 Tw +(= T)Tj +/TT6 1 Tf +2.1036 0 TD +0.1267 Tw +(, then echoing of upper case elements will be in lower case \(but the)Tj +-8.8544 -1.2889 TD +0.0278 Tw +(value returned will still be one of the elements of )Tj +/TT8 1 Tf +22.143 0 TD +0 Tw +(LST)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +(\). If )Tj +/TT14 1 Tf +1.8085 0 TD +0 Tw +(DEFAULTKEY)Tj +/TT6 1 Tf +6.001 0 TD +0.0278 Tw +[( is non-)]TJ +/TT8 1 Tf +3.3134 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +(, it will)Tj +-36.8664 -1.2889 TD +0.0411 Tw +(be the last key on the )Tj +/TT8 1 Tf +9.8136 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0411 Tw +[(. Otherwise, a key which permits the user to indicate "No -)]TJ +-13.4141 -1.2889 TD +0 Tw +(none of the above" choices, in which case the value returned by )Tj +/TT8 1 Tf +28.186 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( will be )Tj +/TT8 1 Tf +3.4893 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT14 1 Tf +-37.6763 -2.0667 TD +(AUTOCOMPLETEFLG)Tj +/TT6 1 Tf +9.0015 0 TD +0.0002 Tc +0.0042 Tw +( is used as the value of the )Tj +/TT14 1 Tf +11.8822 0 TD +0 Tc +0 Tw +(AUTOCOMPLETEFLG)Tj +/TT6 1 Tf +9.0015 0 TD +0.0002 Tc +0.0042 Tw +( option of the resulting)Tj +-29.8852 -1.2889 TD +0 Tc +0 Tw +(key list.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +50 0 obj +<< +/Length 7495 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-12)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Format of KEYLST)Tj +/TT8 1 Tf +9 0 0 9 126 544.54 Tm +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0367 Tw +[( is a list of elements of the form )]TJ +/TT8 1 Tf +14.3715 0 TD +0.0867 Tw +(\(KEY PROMPTSTRING . OPTIONS\))Tj +/TT6 1 Tf +17.0627 0 TD +0.0367 Tw +(, where )Tj +/TT8 1 Tf +3.5924 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +0.0367 Tw +[( is an atom)]TJ +-40.4275 -1.2889 TD +0.1867 Tw +(or a string \(equivalent\), )Tj +/TT8 1 Tf +11.3541 0 TD +0 Tw +(PROMPTSTRING)Tj +/TT6 1 Tf +7.2012 0 TD +0.1867 Tw +[( is an atom or a string, and )]TJ +/TT8 1 Tf +13.5031 0 TD +0 Tw +(OPTIONS)Tj +/TT6 1 Tf +4.2007 0 TD +0.1867 Tw +[( a list of options in)]TJ +-36.259 -1.2889 TD +0.0133 Tw +[(property list format. The options are explained below. If an option is specified in )]TJ +/TT8 1 Tf +36.5293 0 TD +0 Tw +(OPTIONS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0133 Tw +(, the value)Tj +-40.7299 -1.2889 TD +0.0011 Tw +(of the option is the next element. Otherwise, if the option is specified in the )Tj +/TT8 1 Tf +33.6276 0 TD +0 Tw +(OPTIONSLST)Tj +/TT6 1 Tf +6.001 0 TD +0.0001 Tc +0.001 Tw +( argument to)Tj +/TT8 1 Tf +-39.6286 -1.2889 TD +0 Tc +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0622 Tw +(, its value is the next element on )Tj +/TT8 1 Tf +14.8791 0 TD +0 Tw +(OPTIONSLST)Tj +/TT6 1 Tf +6.001 0 TD +0.0622 Tw +[(. Thus, )]TJ +/TT8 1 Tf +3.6583 0 TD +0 Tw +(OPTIONSLST)Tj +/TT6 1 Tf +6.001 0 TD +0.0622 Tw +[( can be used to provide)]TJ +-34.7401 -1.2889 TD +0.1611 Tw +(default options for an entire )Tj +/TT8 1 Tf +13.4227 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1611 Tw +(, rather than having to include the option at each level. If an)Tj +-17.0233 -1.2889 TD +0 Tw +(option does not appear on either )Tj +/TT8 1 Tf +14.6621 0 TD +(OPTIONS)Tj +/TT6 1 Tf +4.2007 0 TD +( or )Tj +/TT8 1 Tf +1.4409 0 TD +(OPTIONSLST)Tj +/TT6 1 Tf +6.001 0 TD +(, its value is )Tj +/TT8 1 Tf +5.4438 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-33.5488 -2.9556 TD +0.1978 Tw +(For convenience, an entry on )Tj +/TT8 1 Tf +14.007 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1978 Tw +[( of the form )]TJ +/TT8 1 Tf +6.214 0 TD +0.4733 Tw +(\(KEY . ATOM/STRING\))Tj +/TT6 1 Tf +12.3485 0 TD +0.1978 Tw +(, can be used as an)Tj +-36.17 -1.2889 TD +0.1056 Tw +(abbreviation for )Tj +/TT8 1 Tf +7.5666 0 TD +0.2544 Tw +(\(KEY ATOM/STRING CONFIRMFLG T\))Tj +/TT6 1 Tf +18.7663 0 TD +0.1056 Tw +(, and an entry of just the form )Tj +/TT8 1 Tf +14.2175 0 TD +0 Tw +(KEY)Tj +/TT6 1 Tf +1.8003 0 TD +0.1056 Tw +(, i.e., a)Tj +-42.3506 -1.2889 TD +0 Tw +(non-list, as an abbreviation for \()Tj +/TT8 1 Tf +14.0693 0 TD +(KEY NIL CONFIRMFLG T\))Tj +/TT6 1 Tf +12.6021 0 TD +(.)Tj +-26.6714 -2.9556 TD +0.0256 Tw +[(As each character is read, it is matched against the currently active keys. A character matches a key if)]TJ +0 -1.2222 TD +0.1767 Tw +(it is the same character as that in the corresponding position in the key, or, if the character is an)Tj +T* +0.0889 Tw +(alphabetic character, if the characters are the same without regard for upper/lower case differences,)Tj +T* +0.0333 Tw +(i.e. ")Tj +/TT8 1 Tf +1.9244 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +(" matches ")Tj +/TT8 1 Tf +4.9466 0 TD +0 Tw +(a)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +(" and vice versa \(unless the )Tj +/TT8 1 Tf +12.4285 0 TD +0 Tw +(NOCASEFLG)Tj +/TT6 1 Tf +5.4009 0 TD +0.0333 Tw +[( option is )]TJ +/TT8 1 Tf +4.4569 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0333 Tw +(, see the Options section below\).)Tj +-30.9576 -1.2889 TD +0.0178 Tw +(In other words, if two characters have already been input and matched, the third character is matched)Tj +0 -1.2222 TD +0.12 Tw +[(with each active key by comparing it with the third character of that key. If the character matches)]TJ +T* +0.26 Tw +(with one or more of the keys, the entries on )Tj +/TT8 1 Tf +22.0063 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.26 Tw +[( corresponding to the remaining keys are)]TJ +-25.6068 -1.2889 TD +0.0156 Tw +[(discarded. If the character does not match with any of the keys, the character is not echoed, and a bell)]TJ +0 -1.2222 TD +0 Tw +(is rung instead.)Tj +0 -2.8889 TD +0.1222 Tw +(When a key is complete, )Tj +/TT8 1 Tf +11.6092 0 TD +0 Tw +(PROMPTSTRING)Tj +/TT6 1 Tf +7.2012 0 TD +0.1222 Tw +[( is printed \()]TJ +/TT8 1 Tf +5.4497 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1222 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.7521 0 TD +0 Tw +("")Tj +/TT6 1 Tf +1.2002 0 TD +0.1222 Tw +(, the empty string, i.e.,)Tj +-35.0126 -1.2889 TD +0.2044 Tw +[(nothing will be printed\). Then, if the value of the )]TJ +/TT8 1 Tf +24.2928 0 TD +0 Tw +(CONFIRMFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.2044 Tw +[( option is )]TJ +/TT8 1 Tf +4.9703 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.7044 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2044 Tw +[( waits for)]TJ +-40.7693 -1.2889 TD +0.3522 Tw +[(confirmation of the key by a carriage return or space. Otherwise, the key does not require)]TJ +0 -1.2222 TD +0 Tw +(confirmation.)Tj +0 -2.8889 TD +0.1889 Tw +(Then, if the value of the )Tj +/TT8 1 Tf +11.8545 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1889 Tw +[( option is not )]TJ +/TT8 1 Tf +6.8166 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1889 Tw +(, its value becomes the new )Tj +/TT8 1 Tf +13.4522 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1889 Tw +(, and the)Tj +-41.1248 -1.2889 TD +0.24 Tw +[(process recurses. Otherwise, the key is a "leaf," i.e., it terminates a particular path through the)]TJ +0 -1.2222 TD +0.1511 Tw +(original, top-level )Tj +/TT8 1 Tf +8.4155 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1511 Tw +(, and )Tj +/TT8 1 Tf +2.7451 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1511 Tw +[( returns the result of packing all the keys that have been)]TJ +-18.9619 -1.2889 TD +0.0133 Tw +(matched and completed along the way \(unless the )Tj +/TT8 1 Tf +22.5593 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +[( option is used to specify some other value,)]TJ +-26.1599 -1.2889 TD +0 Tw +(as described below\).)Tj +0 -2.8889 TD +0.13 Tw +(For example, when )Tj +/TT8 1 Tf +9.1131 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.13 Tw +[( is called with )]TJ +/TT8 1 Tf +6.8838 0 TD +0.3122 Tw +(KEYLST = NIL)Tj +/TT6 1 Tf +7.8256 0 TD +0.13 Tw +(, the following )Tj +/TT8 1 Tf +7.0472 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.13 Tw +[( is used as the)]TJ +-38.671 -1.2889 TD +0 Tw +(default:)Tj +/TT8 1 Tf +13.3333 -1.9333 TD +(\(\(Y "escr"\) \(N "ocr"\)\))Tj +/TT6 1 Tf +-13.3333 -2.9556 TD +(This )Tj +/TT8 1 Tf +2.273 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1133 Tw +[( specifies that if \(as soon as\) the user types )]TJ +/TT8 1 Tf +20.043 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1133 Tw +[( \(or )]TJ +/TT8 1 Tf +2.0006 0 TD +0 Tw +(y)Tj +/TT6 1 Tf +0.6001 0 TD +(\), )Tj +/TT8 1 Tf +0.9463 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1133 Tw +[( echoes with )]TJ +/TT8 1 Tf +6.0768 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.1133 Tw +(, prompts)Tj +-40.9413 -1.2889 TD +0.0956 Tw +(with escr, and returns )Tj +/TT8 1 Tf +10.3041 0 TD +0 Tw +(Y)Tj +/TT6 1 Tf +0.6001 0 TD +0.0956 Tw +[( as its value. Similarly, if the user types )]TJ +/TT8 1 Tf +18.6797 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5956 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0956 Tw +[( echoes the )]TJ +/TT8 1 Tf +5.3775 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0956 Tw +(, prompts)Tj +-40.9578 -1.2889 TD +0 Tw +(with ocr, and returns )Tj +/TT8 1 Tf +9.5649 0 TD +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(. If the user types )Tj +/TT8 1 Tf +8.0942 0 TD +(?)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( prints:)Tj +/TT8 1 Tf +-14.2267 -1.7778 TD +(Yes)Tj +0 -1.5556 TD +(No)Tj +ET +endstream +endobj +51 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +53 0 obj +<< +/Length 6277 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-13)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0656 Tw +[(to indicate his possible responses. All other inputs are unacceptable, and )]TJ +/TT8 1 Tf +33.3262 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0656 Tw +[( will ring the bell)]TJ +-37.5269 -1.2889 TD +0 Tw +(and not echo or print anything.)Tj +0 -2.8889 TD +(For a more complicated example, the following is the )Tj +/TT8 1 Tf +23.7236 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +( used for the compiler questions:)Tj +/TT8 1 Tf +-13.9909 -2 TD +(\(\(ST "ore and redefine " KEYLST \("" \(F . "orget)Tj +0 -1.2222 TD +(exprs"\)\))Tj +T* +( \(S . "ame as last time"\))Tj +T* +( \(F . "File only"\))Tj +T* +( \(T . "o terminal"\))Tj +T* +( 1)Tj +T* +( 2)Tj +T* +( \(Y . "es"\))Tj +T* +( \(N . "o"\)\))Tj +/TT6 1 Tf +-13.3333 -2.9556 TD +(When )Tj +/TT8 1 Tf +2.9297 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0367 Tw +[( is called with this )]TJ +/TT8 1 Tf +8.4202 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0367 Tw +(, and the user types an )Tj +/TT8 1 Tf +10.4192 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +0.6001 0 TD +0.0367 Tw +(, two keys are matched: )Tj +/TT8 1 Tf +10.8533 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.0367 Tw +[( and )]TJ +/TT8 1 Tf +2.2662 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-45.0902 -1.7644 TD +0.0944 Tw +(The user can then type a )Tj +/TT8 1 Tf +11.5989 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0944 Tw +(, which matches only the )Tj +/TT8 1 Tf +11.7051 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.0944 Tw +[( key, or confirm the )]TJ +/TT8 1 Tf +9.3653 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +0.6001 0 TD +0.0944 Tw +[( key by typing a)]TJ +/F1 1 Tf +10 0 0 10 461.0469 383.46 Tm +0 Tw +( )Tj +0.3823 0.3 TD +(cr)Tj +0.888 -0.3 TD +( )Tj +/TT6 1 Tf +9 0 0 9 477.58 383.46 Tm +(or)Tj +-44.3978 -1.2889 TD +0.0667 Tw +[(space. If the user confirms the S key, )]TJ +/TT8 1 Tf +17.1566 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0667 Tw +[( prompts with "ame as last time", and returns S as its)]TJ +-21.3573 -1.2889 TD +0.2222 Tw +[(value. \(Note that the confirming character is not included in the value.\) If the user types a )]TJ +/TT8 1 Tf +44.4708 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(,)Tj +/TT8 1 Tf +-45.0709 -1.2889 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0756 Tw +[( prompts with "ore and redefine", and makes )]TJ +/TT8 1 Tf +20.7021 0 TD +0.1822 Tw +(\("" \(F . "orget exprs"\)\))Tj +/TT6 1 Tf +15.1312 0 TD +0.0756 Tw +[( be the new)]TJ +/TT8 1 Tf +-40.034 -1.2889 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0422 Tw +[(, and waits for more input. The user can then type an F, or confirm the )]TJ +/TT8 1 Tf +32.2378 0 TD +0 Tw +("")Tj +/TT6 1 Tf +1.2002 0 TD +0.0422 Tw +[( \(which essentially)]TJ +-37.0386 -1.2889 TD +0.05 Tw +[(starts out with all of its characters matched\). If he confirms the )]TJ +/TT8 1 Tf +28.7174 0 TD +0 Tw +("",)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.3 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.05 Tw +[( returns )]TJ +/TT8 1 Tf +3.8041 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.05 Tw +[( as its value)]TJ +-40.0227 -1.2889 TD +0.1244 Tw +(the result of packing )Tj +/TT8 1 Tf +9.8122 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1244 Tw +[( and "". If he types )]TJ +/TT8 1 Tf +9.4234 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.6244 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1244 Tw +[( prompts with "orget exprs", and waits for)]TJ +-25.861 -1.2889 TD +0 Tw +(confirmation again. If the user then confirms, )Tj +/TT8 1 Tf +20.2227 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( returns )Tj +/TT8 1 Tf +3.7041 0 TD +(STF)Tj +/TT6 1 Tf +1.8003 0 TD +(, the result of packing )Tj +/TT8 1 Tf +9.8145 0 TD +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +( and )Tj +/TT8 1 Tf +2.1929 0 TD +(F)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-43.7354 -2.9556 TD +0.0533 Tw +(At any point the user can type a )Tj +/TT8 1 Tf +14.7914 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0533 Tw +[( and be prompted with the possible responses. For example, if the)]TJ +-15.3915 -1.2889 TD +0 Tw +(user types )Tj +/TT8 1 Tf +4.7871 0 TD +(S)Tj +/TT6 1 Tf +0.6001 0 TD +( and then )Tj +/TT8 1 Tf +4.4121 0 TD +(?)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( will type:)Tj +/TT8 1 Tf +-1.7668 -2 TD +(STore and redefine Forget exprs)Tj +0 -1.2222 TD +(STore and redefine)Tj +T* +(Same as last time)Tj +/TT4 1 Tf +10 0 0 10 78 194.12 Tm +(Options)Tj +/TT8 1 Tf +9 0 0 9 129.6 185.46 Tm +(KEYLST)Tj +/TT6 1 Tf +4.9333 0 TD +0.1411 Tw +(When a key is complete, if the value of the )Tj +/TT8 1 Tf +20.3745 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1411 Tw +[( option is not )]TJ +/TT8 1 Tf +6.6255 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1411 Tw +(, this)Tj +-32.4008 -1.2889 TD +0.0611 Tw +(value becomes the new )Tj +/TT8 1 Tf +10.7723 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +[( and the process recurses. Otherwise, the key)]TJ +-14.3729 -1.2889 TD +0.3211 Tw +(terminates a path through the original, top-level )Tj +/TT8 1 Tf +23.7829 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.3211 Tw +(, and )Tj +/TT8 1 Tf +3.0851 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +-30.4686 -1.2889 TD +(returns the indicated value.)Tj +/TT8 1 Tf +-7.3333 -1.2222 TD +(CONFIRMFLG)Tj +/TT6 1 Tf +7.3333 0 TD +(If )Tj +/TT8 1 Tf +0.9466 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0267 Tw +[(, the key must be confirmed with either a carriage return or a space. If the)]TJ +-1.5467 -1.2889 TD +0.0756 Tw +(value of )Tj +/TT8 1 Tf +3.968 0 TD +0 Tw +(CONFIRMFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0756 Tw +[( is a list, the confirming character may be any member)]TJ +-9.969 -1.2889 TD +0 Tw +(of the list.)Tj +/TT8 1 Tf +-10.9333 -1.2222 TD +(PROMPTCONFIRMFLG)Tj +/TT6 1 Tf +10.9333 0 TD +(If )Tj +/TT8 1 Tf +0.9877 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0678 Tw +(, whenever confirmation is required, the user is prompted with the string)Tj +-1.5878 -1.2889 TD +0 Tw +([confirm].)Tj +/TT8 1 Tf +-6.7333 -1.2222 TD +(NOCASEFLG)Tj +/TT6 1 Tf +6.7333 0 TD +(If )Tj +/TT8 1 Tf +0.9355 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0156 Tw +(, says do not perform case independent matching on alphabetic characters.)Tj +-1.5356 -1.2889 TD +0 Tw +(If )Tj +/TT8 1 Tf +0.9988 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0789 Tw +(, do perform case independent matching, i.e. ")Tj +/TT8 1 Tf +20.8657 0 TD +0 Tw +(A)Tj +/TT6 1 Tf +0.6001 0 TD +0.0789 Tw +(" matches with ")Tj +/TT8 1 Tf +7.3998 0 TD +0 Tw +(a)Tj +/TT6 1 Tf +0.6001 0 TD +0.0789 Tw +(" and)Tj +-32.2648 -1.2889 TD +0 Tw +(vice versa.)Tj +ET +endstream +endobj +54 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +56 0 obj +<< +/Length 7162 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-14)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 177.6 569.54 Tm +(RETURN)Tj +/TT6 1 Tf +4.9333 0 TD +0.0056 Tw +(If non-)Tj +/TT8 1 Tf +2.9684 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5056 0 TD +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0056 Tw +[( of the value of the )]TJ +/TT8 1 Tf +8.5036 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.0056 Tw +[( option is returned as the value of)]TJ +/TT8 1 Tf +-19.7788 -1.2889 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1078 Tw +[(. Note that different )]TJ +/TT8 1 Tf +9.7845 0 TD +0 Tw +(RETURN)Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( options can be specified for different)]TJ +-17.5858 -1.2889 TD +0.0522 Tw +[(keys. The variable )]TJ +/TT8 1 Tf +8.7221 0 TD +0 Tw +(ANSWER)Tj +/TT6 1 Tf +3.6006 0 TD +0.0522 Tw +[( is bound in )]TJ +/TT8 1 Tf +5.6918 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0522 Tw +[( to the list of keys that have)]TJ +-22.2151 -1.2889 TD +0.3333 Tw +[(been matched. In other words, )]TJ +/TT8 1 Tf +15.9746 0 TD +0.8011 Tw +(RETURN \(PACK ANSWER\))Tj +/TT6 1 Tf +13.6042 0 TD +0.3333 Tw +[( would be)]TJ +-29.5788 -1.2889 TD +0 Tw +(equivalent to what )Tj +/TT8 1 Tf +8.5405 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( normally does.)Tj +/TT8 1 Tf +-19.4745 -1.2889 TD +(NOECHOFLG)Tj +/TT6 1 Tf +6.7333 0 TD +0.05 Tw +(If non-)Tj +/TT8 1 Tf +3.0129 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.05 Tw +(, characters that are matched \(or automatically supplied as a result)Tj +-4.8132 -1.2889 TD +0.23 Tw +(of typing )Tj +/TT8 1 Tf +4.7515 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.23 Tw +[( \(escape\) or confirming\) are not echoed, nor is the confirming)]TJ +-5.3516 -1.2889 TD +0.3311 Tw +[(character, if any. The value of )]TJ +/TT8 1 Tf +15.8857 0 TD +0 Tw +(NOECHOFLG)Tj +/TT6 1 Tf +5.4009 0 TD +0.3311 Tw +[( is automatically )]TJ +/TT8 1 Tf +8.5153 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3311 Tw +[( when)]TJ +/TT8 1 Tf +-31.6021 -1.2889 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0767 Tw +[( is reading from a file or string. The decision about whether or not)]TJ +-4.2007 -1.2889 TD +0.0078 Tw +(to echo a character that matches several keys is determined by the value of the)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(NOECHOFLG)Tj +/TT6 1 Tf +5.4009 0 TD +( option for the first key.)Tj +/TT8 1 Tf +-14.5342 -1.2889 TD +(EXPLAINSTRING)Tj +/TT6 1 Tf +9.1333 0 TD +0.1611 Tw +(If the value of the )Tj +/TT8 1 Tf +8.8168 0 TD +0 Tw +(EXPLAINSTRING)Tj +/TT6 1 Tf +7.8013 0 TD +0.1611 Tw +[( option is non-)]TJ +/TT8 1 Tf +6.8832 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1611 Tw +(, its value is printed)Tj +-25.3016 -1.2889 TD +0.5822 Tw +(when the user types a )Tj +/TT8 1 Tf +12.8125 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.5822 Tw +(, rather than )Tj +/TT8 1 Tf +7.4142 0 TD +1.3967 Tw +(KEY + PROMPTSTRING)Tj +/TT6 1 Tf +13.5951 0 TD +0 Tw +(.)Tj +/TT8 1 Tf +-34.4218 -1.2889 TD +(EXPLAINSTRING)Tj +/TT6 1 Tf +7.8013 0 TD +0.0167 Tw +[( enables more elaborate explanations in response to a ? than)]TJ +-7.8013 -1.2889 TD +0 Tw +(what the user sees when he is prompted as a result of simply completing keys.)Tj +0 -1.2222 TD +(For example: One of the entries on the )Tj +/TT8 1 Tf +17.3506 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +( used by )Tj +/TT8 1 Tf +3.9761 0 TD +(ADDTOFILES)Tj +/TT6 1 Tf +6.001 0 TD +(? is:)Tj +/TT8 1 Tf +-30.2616 -1.2222 TD +(\(] "Nowherecr" NOECHOFLG T)Tj +T* +0.7244 Tw +(EXPLAINSTRING "] - nowhere, item is marked as a)Tj +-0.6667 -1.2222 TD +0 Tw +(dummycr"\))Tj +/TT6 1 Tf +0 -1.2889 TD +0.2256 Tw +(When the user types )Tj +/TT8 1 Tf +10.2196 0 TD +0 Tw +(])Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.7256 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2256 Tw +[( just prints Nowherecr, i.e., the )]TJ +/TT8 1 Tf +15.2015 0 TD +0 Tw +(])Tj +/TT6 1 Tf +0.6001 0 TD +0.2256 Tw +[( is not)]TJ +-31.5475 -1.2889 TD +0.0956 Tw +[(echoed. If the user types )]TJ +/TT8 1 Tf +11.8082 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0956 Tw +(, the explanation corresponding to this entry will)Tj +-12.4083 -1.2889 TD +0 Tw +(be:)Tj +0.6667 -1.2222 TD +(])Tj +/TT8 1 Tf +0.333 0 TD +( )Tj +/TT6 1 Tf +0.6001 0 TD +(- nowhere, item is marked as a dummy)Tj +/TT8 1 Tf +-8.3331 -1.2889 TD +(KEYSTRING)Tj +/TT6 1 Tf +6.7333 0 TD +0.1789 Tw +(If non-)Tj +/TT8 1 Tf +3.1418 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1789 Tw +(, characters that are matched are echoed as though the value of)Tj +/TT8 1 Tf +-4.9421 -1.2889 TD +0 Tw +(KEYSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.2833 Tw +[( were used in place of the key. )]TJ +/TT8 1 Tf +15.8658 0 TD +0 Tw +(KEYSTRING)Tj +/TT6 1 Tf +5.4009 0 TD +0.2833 Tw +[( is also used for)]TJ +-26.6676 -1.2889 TD +0.1289 Tw +(computing the value returned. The main reason for this feature is to enable)Tj +0 -1.2222 TD +0 Tw +(echoing in lowercase.)Tj +/TT8 1 Tf +-6.1333 -1.2222 TD +(PROMPTON)Tj +/TT6 1 Tf +6.1333 0 TD +0.0378 Tw +(If non-)Tj +/TT8 1 Tf +3.0007 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5378 0 TD +(PROMPTSTRING)Tj +/TT6 1 Tf +7.2012 0 TD +0.0378 Tw +[( is printed only when the key is confirmed with a)]TJ +-12.5399 -1.2889 TD +0 Tw +(member of the value of )Tj +/TT8 1 Tf +10.5049 0 TD +(PROMPTON)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-22.639 -1.2889 TD +(COMPLETEON)Tj +/TT6 1 Tf +7.3333 0 TD +0.0567 Tw +(When a confirming character is typed, the )Tj +/TT8 1 Tf +19.1828 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +0.0567 Tw +[( characters that are automatically)]TJ +-19.7829 -1.2889 TD +0.0789 Tw +(supplied, as specified in case \(4\), are echoed only when the key is confirmed)Tj +0 -1.2222 TD +0 Tw +(with a member of the value of )Tj +/TT8 1 Tf +13.5381 0 TD +(PROMPTON)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-29.0055 -2.9556 TD +(The )Tj +/TT8 1 Tf +2.0827 0 TD +(PROMPTON)Tj +/TT6 1 Tf +4.8008 0 TD +0.1589 Tw +[( and )]TJ +/TT8 1 Tf +2.5106 0 TD +0 Tw +(COMPLETEON)Tj +/TT6 1 Tf +6.001 0 TD +0.1589 Tw +[( options enable the user to construct a )]TJ +/TT8 1 Tf +18.2213 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1589 Tw +[( which will cause)]TJ +/TT8 1 Tf +-37.217 -1.2889 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0856 Tw +[( to emulate the action of the )]TJ +/TT8 1 Tf +13.1243 0 TD +0 Tw +(TENEX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0856 Tw +[( exec. The protocol followed by the )]TJ +/TT8 1 Tf +16.6483 0 TD +0 Tw +(TENEX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0855 Tw +[( exec is that)]TJ +-39.9743 -1.2889 TD +0.1544 Tw +[(the user can type as many characters as he likes in specifying a command. The command can be)]TJ +0 -1.2222 TD +0.0244 Tw +(completed with a carriage return or space, in which case no further output is forthcoming, or with a )Tj +/TT8 1 Tf +44.7339 0 TD +0 Tw +($)Tj +/TT6 1 Tf +-44.7339 -1.2889 TD +0.2133 Tw +(\(escape\), in which case the rest of the characters in the command are echoed, followed by some)Tj +0 -1.2222 TD +0.3222 Tw +[(prompting information. The following )]TJ +/TT8 1 Tf +19.1111 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.3222 Tw +[( would handle the )]TJ +/TT8 1 Tf +9.6058 0 TD +0 Tw +(TENEX)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.5722 0 TD +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +0.3222 Tw +[( and )]TJ +/TT8 1 Tf +2.8373 0 TD +0 Tw +(CONNECT)Tj +/TT6 1 Tf +-41.1279 -1.2889 TD +(comands:)Tj +/TT8 1 Tf +13.3333 -1.9333 TD +(\(\(COPY " \(FILE LIST\) ")Tj +4 -1.2222 TD +(PROMPTON \($\))Tj +T* +(COMPLETEON \($\))Tj +T* +(CONFIRMFLG \($\)\))Tj +-4 -2 TD +( \(CONNECT " \(TO DIRECTORY\) ")Tj +ET +endstream +endobj +57 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +59 0 obj +<< +/Length 5436 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-15)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 234 570.14 Tm +(PROMPTON \($\))Tj +0 -1.2222 TD +(COMPLETEON \($\))Tj +T* +(CONFIRMFLG \($\)\)\))Tj +-17 -1.2889 TD +(AUTOCOMPLETEFLG)Tj +/TT6 1 Tf +10.3333 0 TD +0.2856 Tw +(If the value of the )Tj +/TT8 1 Tf +9.439 0 TD +0 Tw +(AUTOCOMPLETEFLG)Tj +/TT6 1 Tf +9.0015 0 TD +0.2856 Tw +[( option is not )]TJ +/TT8 1 Tf +7.2033 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7856 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2856 Tw +[( will)]TJ +-32.4303 -1.2889 TD +0.0489 Tw +(automatically supply unambiguous characters whenever it can, i.e., )Tj +/TT8 1 Tf +30.4653 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +-30.4653 -1.2889 TD +0.0733 Tw +(acts as though )Tj +/TT8 1 Tf +6.783 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.0733 Tw +[( \(escape\) were typed after each character \(except that it does)]TJ +-7.3831 -1.2889 TD +0 Tw +(not ring the bell if there are no unambiguous characters\).)Tj +/TT8 1 Tf +-7.3333 -1.2222 TD +(MACROCHARS)Tj +/TT6 1 Tf +7.3333 0 TD +0.2667 Tw +(value is a list of dotted pairs of form )Tj +/TT8 1 Tf +18.6593 0 TD +0.64 Tw +(\(CHARACTER . FORM\))Tj +/TT6 1 Tf +12.0818 0 TD +0.2667 Tw +[(. When)]TJ +/TT8 1 Tf +-30.741 -1.2889 TD +0 Tw +(CHARACTER)Tj +/TT6 1 Tf +5.4009 0 TD +0.0833 Tw +[( is typed, and it does not match any of the current keys, )]TJ +/TT8 1 Tf +25.8236 0 TD +0 Tw +(FORM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0833 Tw +[( is)]TJ +-33.6248 -1.2889 TD +0.0878 Tw +(evaluated and nothing else happens, i.e. the matching process stays where it)Tj +0 -1.2222 TD +0.4556 Tw +[(is. For example, )]TJ +/TT8 1 Tf +9.2832 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.4556 Tw +[( could have been implemented using this option.)]TJ +-9.8833 -1.2889 TD +0 Tw +(Essentially )Tj +/TT8 1 Tf +5.4038 0 TD +(MACROCHARS)Tj +/TT6 1 Tf +6.001 0 TD +0.3789 Tw +[( provides a read macro facility while inside of)]TJ +/TT8 1 Tf +-11.4048 -1.2889 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.46 Tw +[( \(since )]TJ +/TT8 1 Tf +3.9727 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.46 Tw +[( does )]TJ +/TT8 1 Tf +3.4796 0 TD +0 Tw +(READC)Tj +/TT6 1 Tf +3.0005 0 TD +0.46 Tw +(s, read macros defined via the)Tj +-18.8542 -1.2889 TD +0 Tw +(readtable are never invoked\).)Tj +/TT8 1 Tf +-10.9333 -1.3644 TD +(EXPLAINDELIMITER)Tj +/F1 1 Tf +10 0 0 10 174 409.46 Tm +0.261 Tw +(value is what is printed to delimit explanation in )Tj +/TT6 1 Tf +9 0 0 9 426.43 409.46 Tm +0.2344 Tw +(response to )Tj +/TT8 1 Tf +5.7706 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-34.4185 -1.2889 TD +0.12 Tw +(Initially a carriage return, but can be reset, e.g. to a comma, for more linear)Tj +0 -1.2222 TD +0 Tw +(output. )Tj +/TT4 1 Tf +10 0 0 10 78 357.52 Tm +(Operation)Tj +/TT6 1 Tf +9 0 0 9 78 333.86 Tm +0.0544 Tw +(All input operations are executed with the terminal table in the variable )Tj +/TT8 1 Tf +32.5689 0 TD +0 Tw +(ASKUSERTTBL)Tj +/TT6 1 Tf +6.6011 0 TD +0.0544 Tw +(, in which the)Tj +-39.1699 -1.2889 TD +0 Tw +(following is true:)Tj +5.3333 -2 TD +()Tj +/TT8 1 Tf +0 -1.2222 TD +0.1333 Tw +(\(CONTROL T\))Tj +/TT6 1 Tf +6.7344 0 TD +0.0556 Tw +[( has been executed \(see the Line-Buffering section of Chapter 30\), so)]TJ +-6.7344 -1.2889 TD +0 Tw +(that )Tj +/TT8 1 Tf +1.9844 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( can interact with the user after each character is typed)Tj +/TT8 1 Tf +-6.1851 -2.0667 TD +0.0078 Tw +(\(ECHOMODE NIL\))Tj +/TT6 1 Tf +8.4091 0 TD +0.0001 Tc +0.0032 Tw +( has been executed \(see the Terminal Control Functions section of)Tj +-8.4091 -1.2889 TD +0 Tc +0.1156 Tw +(Chapter 30\), so that )Tj +/TT8 1 Tf +9.3416 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1156 Tw +[( can decide after it reads a character whether or not)]TJ +-13.5423 -1.2889 TD +0.0944 Tw +(the character should be echoed, and with what, e.g. unacceptable inputs are never)Tj +0 -1.2222 TD +0 Tw +(echoed.)Tj +-5.3333 -2.8889 TD +0.0289 Tw +(As each character is typed, it is matched against )Tj +/TT8 1 Tf +21.6555 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0289 Tw +(, and appropriate echoing and/or prompting)Tj +-25.2561 -1.2889 TD +0.0633 Tw +[(is performed. If the user types an unacceptable character, )]TJ +/TT8 1 Tf +26.3633 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0633 Tw +[( simply rings the bell and allows)]TJ +-30.564 -1.2889 TD +0 Tw +(him to try again.)Tj +0 -2.8889 TD +0.1089 Tw +(At any point, the user can type )Tj +/TT8 1 Tf +14.627 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.1089 Tw +[( and receive a list of acceptable responses at that point \(generated)]TJ +-15.2271 -1.2889 TD +0 Tw +(from )Tj +/TT8 1 Tf +2.6867 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.28 Tw +(\), or type a Control-A, Control-Q, Control-X, or delete, which causes )Tj +/TT8 1 Tf +33.4438 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.28 Tw +[( to)]TJ +-43.9318 -1.2889 TD +0 Tw +(reinitialize, and start over.)Tj +0 -2.8889 TD +0.0233 Tw +(Note that )Tj +/TT8 1 Tf +4.4632 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0233 Tw +(, Control-A, Control-Q, and Control-X will not work if they are acceptable inputs, i.e., they)Tj +-5.0633 -1.2889 TD +0.0356 Tw +(match one of the keys on )Tj +/TT8 1 Tf +11.4643 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0356 Tw +[(. Delete will not work if it is an interrupt character, in which case it)]TJ +-15.0649 -1.2889 TD +0 Tw +(is not seen by )Tj +/TT8 1 Tf +6.2422 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-10.4429 -2.9556 TD +(When an acceptable sequence is completed, )Tj +/TT8 1 Tf +19.5166 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( returns the indicated value.)Tj +ET +endstream +endobj +60 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +62 0 obj +<< +/Length 6806 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-16)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +3 -4.38 TD +(Completing a Key)Tj +/TT6 1 Tf +9 0 0 9 126 544.54 Tm +0.06 Tw +(The decision about when a key is complete is more complicated than simply whether or not all of its)Tj +0 -1.2222 TD +0.0289 Tw +[(characters have been matched. In the compiler questions example above, all of the characters in the )]TJ +/TT8 1 Tf +44.7338 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +-44.7338 -1.2889 TD +0.0378 Tw +(key are matched as soon as the )Tj +/TT8 1 Tf +14.137 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +0.6001 0 TD +0.0378 Tw +[( has been typed, but until the next character is typed, )]TJ +/TT8 1 Tf +24.0572 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0378 Tw +[( does)]TJ +-42.9949 -1.2889 TD +0.0311 Tw +(not know whether the )Tj +/TT8 1 Tf +10.1611 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( completes the )]TJ +/TT8 1 Tf +6.7032 0 TD +0 Tw +(S)Tj +/TT6 1 Tf +0.6001 0 TD +0.0311 Tw +[( key, or is simply the first character in the )]TJ +/TT8 1 Tf +18.8355 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.0311 Tw +[( key. Therefore,)]TJ +-38.1002 -1.2889 TD +0 Tw +(a key is considered to be complete when:)Tj +1.9167 -2 TD +0.0044 Tw +[(1.)-1333.3(All of its characters have been matched and it is the only key left, i.e., there are no other)]TJ +2.0833 -1.2222 TD +0 Tw +(keys for which this key is a substring.)Tj +-2.0833 -2 TD +[(2.)-1333.3(All of its characters have been matched and a confirming character is typed.)]TJ +T* +0.1222 Tw +[(3.)-1333.3(All of its characters have been matched, and the value of the )]TJ +/TT8 1 Tf +30.3967 0 TD +0 Tw +(CONFIRMFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.1222 Tw +[( option is)]TJ +/TT8 1 Tf +-34.3143 -1.2889 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1122 Tw +(, and the value of the )Tj +/TT8 1 Tf +10.2075 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1122 Tw +[( option is not )]TJ +/TT8 1 Tf +6.5099 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1122 Tw +(, and the next character matches)Tj +-23.9186 -1.2889 TD +0 Tw +(one of the keys on the value of the )Tj +/TT8 1 Tf +15.3574 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +( option.)Tj +-21.0413 -2.0667 TD +0.02 Tw +[(4.)-1333.3(There is only one key left and a confirming character is typed. Note that if the value of)]TJ +/TT8 1 Tf +2.0833 -1.2222 TD +0 Tw +(CONFIRMFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.09 Tw +[( is )]TJ +/TT8 1 Tf +1.3948 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.09 Tw +(, the key still has to be confirmed, regardless of whether or not it is)Tj +-7.9959 -1.2889 TD +0 Tw +(complete. For example, if the first entry in the above example were instead )Tj +/TT8 1 Tf +0 -2 TD +0.2967 Tw +(\(ST "ore and redefine " CONFIRMFLG T KEYLST \("" \(F . "orget)Tj +0 -1.2222 TD +0 Tw +(exprs"\)\))Tj +/TT6 1 Tf +0 -2.0667 TD +(and the user wanted to specify the )Tj +/TT8 1 Tf +15.4502 0 TD +(STF)Tj +/TT6 1 Tf +1.8003 0 TD +( path, he would have to type )Tj +/TT8 1 Tf +12.9155 0 TD +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1338 Tw +[(, then )-838.4(confirm)]TJ +-31.3662 -1.2889 TD +0.1856 Tw +(before typing )Tj +/TT8 1 Tf +6.5689 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.1856 Tw +[(, even though the )]TJ +/TT8 1 Tf +9.1153 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1856 Tw +[( completed the )]TJ +/TT8 1 Tf +7.3535 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1856 Tw +[( key by the rule in Case 1.)]TJ +-26.0382 -1.2889 TD +0.0178 Tw +[(However, he would be prompted with ore and redefine as soon as he typed the )]TJ +/TT8 1 Tf +35.846 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0178 Tw +(, and)Tj +-36.4461 -1.2889 TD +0 Tw +(completed the )Tj +/TT8 1 Tf +6.5469 0 TD +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +( key.)Tj +-11.7471 -2.9556 TD +0.1467 Tw +(Case 2 says that confirmation can be used to complete a key in the case where it is a substring of)Tj +0 -1.2222 TD +0.1711 Tw +(another key, even where the value of )Tj +/TT8 1 Tf +17.7774 0 TD +0 Tw +(CONFIRMFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.1711 Tw +[( is )]TJ +/TT8 1 Tf +1.5571 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1711 Tw +[(. In this case, the confirming character)]TJ +-27.1357 -1.2889 TD +0.2144 Tw +[(doubles as both an indicator that the key is complete, and also to confirm it, if necessary. This)]TJ +0 -1.2222 TD +0 Tw +(situation corresponds to typing )Tj +/TT8 1 Tf +14.1201 0 TD +(Scr)Tj +/TT6 1 Tf +1.8003 0 TD +( in the above example.)Tj +-15.9204 -2.9556 TD +0.0111 Tw +(Case 3 says that if there were another entry whose key was )Tj +/TT8 1 Tf +26.418 0 TD +0 Tw +(STX)Tj +/TT6 1 Tf +1.8003 0 TD +0.0111 Tw +[( in the above example, so that after the)]TJ +-28.2183 -1.2889 TD +0.1378 Tw +(user typed )Tj +/TT8 1 Tf +5.2497 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1378 Tw +(, two keys, )Tj +/TT8 1 Tf +5.3845 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1378 Tw +[( and )]TJ +/TT8 1 Tf +2.4684 0 TD +0 Tw +(STX)Tj +/TT6 1 Tf +1.8003 0 TD +0.1378 Tw +(, were still active, then typing )Tj +/TT8 1 Tf +14.1235 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.1378 Tw +[( would complete the )]TJ +/TT8 1 Tf +9.8719 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.1378 Tw +[( key,)]TJ +-43.0991 -1.2889 TD +0 Tw +(because )Tj +/TT8 1 Tf +3.8019 0 TD +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.07 Tw +[( matches the )]TJ +/TT8 1 Tf +5.9849 0 TD +0.1689 Tw +(\(F . "orget exprs"\))Tj +/TT6 1 Tf +11.9085 0 TD +0.07 Tw +[( entry on the value of the )]TJ +/TT8 1 Tf +11.7976 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.07 Tw +[( option of the )]TJ +/TT8 1 Tf +6.4382 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +-44.1319 -1.2889 TD +(entry. In this case, ore and redefine would be printed before the )Tj +/TT8 1 Tf +28.6133 0 TD +(F)Tj +/TT6 1 Tf +0.6001 0 TD +( was echoed.)Tj +-29.2134 -2.9556 TD +0.0111 Tw +(Finally, Case 4 says that the user can use confirmation to specify completion when only one key is left,)Tj +0 -1.2222 TD +0.1578 Tw +[(even when all of its characters have not been matched. For example, if the first key in the above)]TJ +T* +0.0678 Tw +(example were )Tj +/TT8 1 Tf +6.5716 0 TD +0 Tw +(STORE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0678 Tw +(, the user could type )Tj +/TT8 1 Tf +9.584 0 TD +0 Tw +(ST)Tj +/TT6 1 Tf +1.2002 0 TD +0.0678 Tw +[( and then confirm, and )]TJ +/TT8 1 Tf +10.6675 0 TD +0 Tw +(ORE)Tj +/TT6 1 Tf +1.8003 0 TD +0.0678 Tw +[( would be echoed, followed)]TJ +-32.8241 -1.2889 TD +0.0667 Tw +[(by whatever prompting was specified. In this case, the confirming character also confirms the key if)]TJ +0 -1.2222 TD +0 Tw +(necessary, so that no further action is required, even when the value of )Tj +/TT8 1 Tf +31.481 0 TD +(CONFIRMFLG)Tj +/TT6 1 Tf +6.001 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-39.2969 -2.9556 TD +0.0422 Tw +(Case 4 permits the user not to have to type every character in a key when the key is the only one left.)Tj +0 -1.2222 TD +0.0411 Tw +(Even when there are several active keys, the user can type to specify the next N>0 common)Tj +T* +0.0611 Tw +[(characters among the currently active keys. The effect is exactly the same as though these characters)]TJ +ET +endstream +endobj +63 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +65 0 obj +<< +/Length 6559 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-17)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.0056 Tw +[(had been typed. If there are no common characters in the active keys at that point, i.e. )]TJ +/TT8 1 Tf +38.5772 0 TD +0.0144 Tw +(N = 0)Tj +/TT6 1 Tf +3.0294 0 TD +0.0056 Tw +(, the )Tj +/TT8 1 Tf +2.1483 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( is)]TJ +-44.355 -1.2889 TD +0.3767 Tw +[(treated as an incorrect input, and the bell is rung. For example, if )]TJ +/TT8 1 Tf +34.3661 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.3767 Tw +[( is )]TJ +/TT8 1 Tf +1.9682 0 TD +0 Tw +(\(CLISPFLG)Tj +-39.9349 -1.2889 TD +0.0967 Tw +(CLISPIFYPACKFLG CLISPIFTRANFLG\))Tj +/TT6 1 Tf +18.6997 0 TD +0.04 Tw +(, and the user types )Tj +/TT8 1 Tf +9.0672 0 TD +0 Tw +(C)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +[( followed by )]TJ +/TT8 1 Tf +5.91 0 TD +0 Tw +($,)Tj +/TT6 1 Tf +1.2002 0 TD +( )Tj +/TT8 1 Tf +0.29 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.04 Tw +[( will supply)]TJ +-39.9679 -1.2889 TD +0 Tw +(the )Tj +/TT8 1 Tf +1.7205 0 TD +(L)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5833 0 TD +(I)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.5833 0 TD +(S)Tj +/TT6 1 Tf +0.6001 0 TD +0.0833 Tw +(, and )Tj +/TT8 1 Tf +2.6095 0 TD +0 Tw +(P)Tj +/TT6 1 Tf +0.6001 0 TD +0.0833 Tw +[(. The user can then type )]TJ +/TT8 1 Tf +11.6156 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.0833 Tw +[( followed by a carriage return or space to complete and)]TJ +-20.1128 -1.2889 TD +0 Tw +(confirm )Tj +/TT8 1 Tf +3.8592 0 TD +(CLISPFLG)Tj +/TT6 1 Tf +4.8008 0 TD +0.1356 Tw +(, as per Case 4, or type)Tj +/TT8 1 Tf +10.7274 0 TD +0.3267 Tc +0 Tw +( I)Tj +/TT6 1 Tf +1.5269 0 TD +0 Tc +0.1356 Tw +(, followed by )Tj +/TT8 1 Tf +6.4467 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.1356 Tw +(, and )Tj +/TT8 1 Tf +2.714 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1356 Tw +[( will supply the )]TJ +/TT8 1 Tf +7.7126 0 TD +0 Tw +(F)Tj +/TT6 1 Tf +0.6001 0 TD +0.1356 Tw +(, etc.)Tj +-43.1884 -1.2889 TD +0.0344 Tw +(Note that the characters supplied do not have to correspond to a terminal segment of any of the keys.)Tj +0 -1.2222 TD +0.01 Tw +(Note also that the )Tj +/TT8 1 Tf +8.1045 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.01 Tw +[( does not confirm the key, although it may complete it in the case that there is only)]TJ +-8.7046 -1.2889 TD +0 Tw +(one key active.)Tj +0 -2.8889 TD +0.0778 Tw +(If the user types a confirming character when several keys are left, the next N>0 common characters)Tj +0 -1.2222 TD +0.05 Tw +(are still supplied, the same as with )Tj +/TT8 1 Tf +15.8778 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.05 Tw +[(. However, )]TJ +/TT8 1 Tf +5.5299 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.05 Tw +[( assumes the intent was to complete a key,)]TJ +-26.2085 -1.2889 TD +0.1644 Tw +[(i.e., Case 4 is being invoked. Therefore, after supplying the next N characters, the bell is rung to)]TJ +0 -1.2222 TD +0.0444 Tw +[(indicate that the operation was not completed. In other words, typing a confirming character has the)]TJ +T* +0.0711 Tw +(same effect as typing an )Tj +/TT8 1 Tf +11.2037 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.0711 Tw +[( in that the next N common characters are supplied. Then, if there is only)]TJ +-11.8038 -1.2889 TD +0.0644 Tw +[(one key left, the key is complete \(Case 4\) and confirmation is not required. If the key is not the only)]TJ +0 -1.2222 TD +0 Tw +(key left, the bell is rung.)Tj +/TT4 1 Tf +10 0 0 10 78 366.4 Tm +(Special Keys)Tj +/TT8 1 Tf +9 0 0 9 156.6 350.74 Tm +(&)Tj +/TT6 1 Tf +1.9333 0 TD +0.1333 Tw +(This can be used as a key to match with any single character, provided the)Tj +0 -1.2889 TD +0.0733 Tw +(character does not match with some other key at that level. For the purposes)Tj +0 -1.2222 TD +0.33 Tw +(of echoing and returning a value, the effect is the same as though the)Tj +T* +0 Tw +(character that were matched actually appeared as the key.)Tj +-5.4722 -2 TD +0.0122 Tw +[()-1333.6(This can be used as a key to match with the result of a single call to )]TJ +/TT8 1 Tf +35.4749 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0122 Tw +[(. For)]TJ +-32.4031 -1.2889 TD +0 Tw +(example, if the )Tj +/TT8 1 Tf +6.7603 0 TD +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +( were:)Tj +/TT8 1 Tf +-3.6942 -2 TD +(\(\(COPY " \(FILE LIST\) ")Tj +4 -1.2222 TD +(PROMPTON \($\))Tj +T* +(COMPLETEON \($\))Tj +T* +(CONFIRMFLG \($\))Tj +T* +(KEYLST \(\($ NIL RETURN ANSWER\)\)\)\))Tj +/TT6 1 Tf +-10.6667 -2.0667 TD +0.1433 Tw +(then if the user typed )Tj +/TT8 1 Tf +10.4213 0 TD +0 Tw +(COP)Tj +/TT6 1 Tf +1.8003 0 TD +( )Tj +/TT8 1 Tf +0.3933 0 TD +(FOOcr)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.6433 0 TD +0.3433 Tw +(\(COPY FOO\))Tj +/TT6 1 Tf +6.3443 0 TD +0.1433 Tw +[( would be returned as the)]TJ +-22.603 -1.2889 TD +0.07 Tw +(value of )Tj +/TT8 1 Tf +3.9569 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.07 Tw +[(. One advantage of using )]TJ +/TT8 1 Tf +11.9713 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.07 Tw +(, rather than having the calling)Tj +-20.7289 -1.2889 TD +0.1144 Tw +(program perform the )Tj +/TT8 1 Tf +9.9884 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1144 Tw +(, is that the call to )Tj +/TT8 1 Tf +8.671 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1144 Tw +[( from inside )]TJ +/TT8 1 Tf +5.9278 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1144 Tw +[( is)]TJ +/TT8 1 Tf +-33.5887 -1.2889 TD +0 Tw +(ERRORSET)Tj +/TT6 1 Tf +4.8008 0 TD +0.0144 Tw +[( protected, so that the user can back out of this path and reinitialize)]TJ +/TT8 1 Tf +-4.8008 -1.2889 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1944 Tw +(, e.g. to change from a )Tj +/TT8 1 Tf +11.1237 0 TD +0 Tw +(COPY)Tj +/TT6 1 Tf +2.4004 0 TD +0.1944 Tw +[( command to a )]TJ +/TT8 1 Tf +7.5981 0 TD +0 Tw +(CONNECT)Tj +/TT6 1 Tf +4.2007 0 TD +0.1944 Tw +[( command,)]TJ +-29.5236 -1.2889 TD +0 Tw +(simply by typing Control-E.)Tj +-7.7033 -2 TD +0.32 Tw +[(Escape )320(Escape)-1336.1(This can be used as a key to match with the result of a single call to)]TJ +/TT8 1 Tf +7.7033 -1.2222 TD +0 Tw +(READLINE)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +-8.4941 -2.0667 TD +0.1167 Tw +[(A )116.7(list)-1333.5(A list can be used as a key, in which case the list/form is evaluated and its)]TJ +3.6933 -1.2222 TD +0.22 Tw +[(value "matches" the key. This feature is provided primarily as an escape)]TJ +T* +0.4289 Tw +(hatch for including arbitrary input operations as part of an )Tj +/TT8 1 Tf +30.4598 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +-30.4598 -1.2889 TD +0.1467 Tw +[(sequence. For example, the effect of )]TJ +/TT8 1 Tf +17.2327 0 TD +0 Tw +($$)Tj +/TT6 1 Tf +1.2002 0 TD +0.1467 Tw +[( \(escape, escape\) could be achieved)]TJ +-18.4329 -1.2889 TD +0 Tw +(simply by using )Tj +/TT8 1 Tf +7.3613 0 TD +(\(READLINE T\))Tj +/TT6 1 Tf +7.2012 0 TD +( as a key.)Tj +ET +endstream +endobj +66 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +68 0 obj +<< +/Length 4357 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-18)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 199.2 569.54 Tm +("")Tj +/TT6 1 Tf +2.5333 0 TD +0.1211 Tw +[(The empty string can be used as a key. Since it has no characters, all of its)]TJ +0 -1.2889 TD +0.2 Tw +(characters are automatically matched. )Tj +/TT8 1 Tf +18.2446 0 TD +0 Tw +("")Tj +/TT6 1 Tf +1.2002 0 TD +0.2 Tw +[( essentially functions as a place)]TJ +-19.4448 -1.2889 TD +0.5433 Tw +[(marker. For example, one of the entries on the )]TJ +/TT8 1 Tf +26.2517 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.5433 Tw +[( used by)]TJ +/TT8 1 Tf +-29.8523 -1.2889 TD +0 Tw +(ADDTOFILES?)Tj +/TT6 1 Tf +6.6011 0 TD +( is:)Tj +/TT8 1 Tf +-1.9344 -2 TD +(\("" "File/list: ")Tj +0 -1.2222 TD +0.5622 Tw +(EXPLAINSTRING "a file name or name of a)Tj +T* +0 Tw +(function list")Tj +-7.9333 -2.0667 TD +(KEYLST \($\)\))Tj +/TT6 1 Tf +3.2667 -2.0667 TD +0.09 Tw +(Thus, if the user types a character that does not match any of the other keys)Tj +0 -1.2222 TD +0.0411 Tw +(on the )Tj +/TT8 1 Tf +3.0974 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0411 Tw +(, then the character completes the )Tj +/TT8 1 Tf +15.2779 0 TD +0 Tw +("")Tj +/TT6 1 Tf +1.2002 0 TD +0.0411 Tw +[( key, by virtue of case \(4\),)]TJ +-23.1761 -1.2889 TD +0.03 Tw +(since the character will match with the )Tj +/TT8 1 Tf +17.4942 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.03 Tw +[( in the inner )]TJ +/TT8 1 Tf +5.7094 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.03 Tw +(. )Tj +/TT8 1 Tf +0.81 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.03 Tw +[( then)]TJ +-32.4149 -1.2889 TD +0.08 Tw +[(prints File/list: before echoing the character, then calls )]TJ +/TT8 1 Tf +25.2806 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.08 Tw +[(. The character)]TJ +-27.6809 -1.2889 TD +0.0533 Tw +(will be read as part of the )Tj +/TT8 1 Tf +11.8597 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0533 Tw +[(. The value returned by )]TJ +/TT8 1 Tf +11.1613 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0533 Tw +[( will be the)]TJ +-29.622 -1.2889 TD +0 Tw +(value of the )Tj +/TT8 1 Tf +5.4541 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-7.8545 -2.0667 TD +0.0822 Tw +[(Note: For Escape, Escape Escape, or a list, if the last character read by)]TJ +2.6667 -1.2222 TD +0.1989 Tw +(the input operation is a separator, the character is treated as a)Tj +T* +0.0356 Tw +[(confirming character for the key. However, if the last character is)]TJ +T* +0 Tw +(a break character, it will be matched against the next key.)Tj +/TT4 1 Tf +10 0 0 10 126 319.2 Tm +(Startup Protocol and Typeahead)Tj +/TT6 1 Tf +9 0 0 9 126 295.54 Tm +0.1244 Tw +(Interlisp permits and encourages the user to typeahead; in actual practice, the user frequently does)Tj +T* +0.0156 Tw +[(this. This presents a problem for )]TJ +/TT8 1 Tf +14.8735 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0156 Tw +[(. When )]TJ +/TT8 1 Tf +3.6897 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0156 Tw +[( is entered and there has been typeahead,)]TJ +-26.9646 -1.2889 TD +0.0111 Tw +(was the input intended for )Tj +/TT8 1 Tf +12.0888 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0111 Tw +(, or was the interaction unanticipated, and the user simply typing)Tj +-16.2894 -1.2889 TD +0.0478 Tw +[(ahead to some other program, e.g. the programmers assistant? Even where there was no typeahead,)]TJ +0 -1.2222 TD +0.01 Tw +(i.e., the user starts typing after the call to )Tj +/TT8 1 Tf +18.2741 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.01 Tw +(, the question remains of whether the user had time)Tj +-22.4748 -1.2889 TD +0.1189 Tw +(to see the message from )Tj +/TT8 1 Tf +11.3869 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1189 Tw +[( and react to it, or simply began typing ahead at an inauspicious)]TJ +-15.5876 -1.2889 TD +0.04 Tw +[(moment. Thus, what is needed is an interlock mechanism which warns the user to stop typing, gives)]TJ +0 -1.2222 TD +0 Tw +(him a chance to respond to the warning, and then allows him to begin typing to )Tj +/TT8 1 Tf +35.4678 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-39.6685 -2.9556 TD +0.1367 Tw +(Therefore, when )Tj +/TT8 1 Tf +7.8012 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1367 Tw +[( is first entered, and the interaction is to take place with a terminal, and)]TJ +-12.0019 -1.2889 TD +0 Tw +(typeahead to )Tj +/TT8 1 Tf +6.0063 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( is not permitted, the following protocol is observed:)Tj +ET +endstream +endobj +69 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +71 0 obj +<< +/Length 7722 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-19)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 95.25 569.54 Tm +0.0556 Tw +[(1.)-1333.3(If there is typeahead, )]TJ +/TT8 1 Tf +11.8358 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0556 Tw +[( clears and saves the input buffers and rings the bell to)]TJ +-13.9532 -1.2889 TD +0.0922 Tw +[(warn the user to stop typing. The buffers will be restored when )]TJ +/TT8 1 Tf +29.6447 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0922 Tw +[( completes)]TJ +-33.8454 -1.2889 TD +0 Tw +(operation and returns.)Tj +-2.0833 -2 TD +[(2.)-1333.3(If )]TJ +/TT8 1 Tf +3.0044 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +(, the message to be printed on entry, is not )Tj +/TT8 1 Tf +18.9663 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( \(the typical case\), )Tj +/TT8 1 Tf +8.1642 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( then)Tj +-36.4529 -1.2889 TD +(prints )Tj +/TT8 1 Tf +2.8691 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +( if it is a string, otherwise )Tj +/TT8 1 Tf +11.3862 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +( of )Tj +/TT8 1 Tf +1.3789 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +(, if )Tj +/TT8 1 Tf +1.374 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +( is a list.)Tj +-28.0931 -2.0667 TD +0.0278 Tw +[(3.)-1333.3(After printing )]TJ +/TT8 1 Tf +8.5744 0 TD +0 Tw +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0278 Tw +[( or )]TJ +/TT8 1 Tf +1.4965 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0278 Tw +[( of )]TJ +/TT8 1 Tf +1.4345 0 TD +0 Tw +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +(, )Tj +/TT8 1 Tf +0.5278 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0278 Tw +[( waits until the output has actually been)]TJ +-20.7516 -1.2889 TD +0.0456 Tw +(printed on the terminal to make sure that the user has actually had a chance to see the)Tj +0 -1.2222 TD +0.2078 Tw +[(output. This also give the user a chance to react. )]TJ +/TT8 1 Tf +24.3952 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2078 Tw +[( then checks to see if)]TJ +-28.5959 -1.2889 TD +0.0778 Tw +(anything additional has been typed in the intervening period since it first warned the)Tj +0 -1.2222 TD +0.0167 Tw +(user in \(1\). If something has been typed, )Tj +/TT8 1 Tf +18.0845 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0167 Tw +[( clears it out and again rings the bell.)]TJ +-22.2852 -1.2889 TD +0.1456 Tw +(This latter material, i.e., that typed between the entry to )Tj +/TT8 1 Tf +26.2554 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1456 Tw +[( and this point, is)]TJ +-30.456 -1.2889 TD +0.23 Tw +(discarded and will not be restored since it is not certain whether the user simply)Tj +0 -1.2222 TD +0.1089 Tw +(reacted quickly to the first warning \(bell\) and this input is intended for )Tj +/TT8 1 Tf +32.9185 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1089 Tw +(, or)Tj +-37.1192 -1.2889 TD +0.2811 Tw +(whether the user was in the process of typing ahead when the call to )Tj +/TT8 1 Tf +34.457 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +-34.457 -1.2889 TD +0.1567 Tw +(occurred, and did not stop typing at the first warning, and therefore this input is a)Tj +0 -1.2222 TD +0 Tw +(continuation of input intended for another program.)Tj +0 -2 TD +0.0578 Tw +[(Anything typed after \(3\) is considered to be intended for )]TJ +/TT8 1 Tf +26.1268 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0578 Tw +(, i.e., once the user)Tj +-30.3275 -1.2889 TD +0 Tw +(sees )Tj +/TT8 1 Tf +2.1079 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0522 Tw +[( or )]TJ +/TT8 1 Tf +1.5454 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( of )]TJ +/TT8 1 Tf +1.4834 0 TD +0 Tw +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0522 Tw +[(, he is free to respond. For example, )]TJ +/TT8 1 Tf +16.99 0 TD +0 Tw +(UNDO)Tj +/TT6 1 Tf +2.4004 0 TD +0.0522 Tw +[( \(see Chapter 13\))]TJ +-31.1281 -1.2889 TD +0 Tw +(calls )Tj +/TT8 1 Tf +2.2253 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0256 Tw +[( when the number of undosaves are exceeded for an event with )]TJ +/TT8 1 Tf +28.5703 0 TD +0.0622 Tw +(MESS =)Tj +-34.9963 -1.2889 TD +0.08 Tw +(\(LIST NUMBER-UNDOSAVES "undosaves, continue saving"\))Tj +/TT6 1 Tf +31.5251 0 TD +0.0333 Tw +[(. Thus, the user)]TJ +-31.5251 -1.2889 TD +0 Tw +(can type a response as soon as )Tj +/TT8 1 Tf +13.6133 0 TD +(NUMBER-UNDOSAVES)Tj +/TT6 1 Tf +9.6016 0 TD +( is typed.)Tj +-25.2982 -2.0667 TD +(4.)Tj +/TT8 1 Tf +2.0833 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( then types the rest of )Tj +/TT8 1 Tf +9.7456 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +(, if any.)Tj +-18.43 -2.0667 TD +[(5.)-1333.3(Then )]TJ +/TT8 1 Tf +4.6414 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0522 Tw +[( goes into a wait loop until something is typed. If )]TJ +/TT8 1 Tf +22.7819 0 TD +0 Tw +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0522 Tw +(, the wait time,)Tj +-31.9411 -1.2889 TD +0.0722 Tw +(is not )Tj +/TT8 1 Tf +2.8134 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +(, and nothing is typed in )Tj +/TT8 1 Tf +11.5027 0 TD +0 Tw +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0722 Tw +[( seconds, )]TJ +/TT8 1 Tf +4.4037 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0722 Tw +[( will type ")]TJ +/TT8 1 Tf +5.0072 0 TD +0 Tw +(...)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +(" and treat)Tj +-33.9286 -1.2889 TD +0.0011 Tw +(the elements of )Tj +/TT8 1 Tf +6.9623 0 TD +0 Tw +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +0.0011 Tw +(, the default value, as a list of characters, and begin processing)Tj +-11.163 -1.2889 TD +0.1333 Tw +[(them exactly as though they had been typed. If the user does type anything within)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.1867 Tw +[( seconds, he can then wait as long as he likes, i.e., once something has been)]TJ +-2.4004 -1.2889 TD +0 Tw +(typed, )Tj +/TT8 1 Tf +3.0732 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( will not use the default value specified in )Tj +/TT8 1 Tf +18.7109 0 TD +(DEFAULT)Tj +/TT6 1 Tf +4.2007 0 TD +(.)Tj +-30.1856 -2.0667 TD +0.0989 Tw +(If the user wants to consider his response for more than )Tj +/TT8 1 Tf +25.8988 0 TD +0 Tw +(WAIT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0989 Tw +[( seconds, and does not)]TJ +-28.2992 -1.2889 TD +0 Tw +(want )Tj +/TT8 1 Tf +2.5066 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0144 Tw +[( to default, he can type a carriage return or a space, which are ignored if)]TJ +-6.7073 -1.2889 TD +0.0133 Tw +(they are not specified as acceptable inputs by )Tj +/TT8 1 Tf +20.3083 0 TD +0 Tw +(KEYLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.0133 Tw +[( \(see below\) and they are the first)]TJ +-23.9089 -1.2889 TD +0 Tw +(thing typed.)Tj +0 -2 TD +0.0956 Tw +(If the calling program knows that the user is expecting an interaction with )Tj +/TT8 1 Tf +34.2115 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +(,)Tj +-38.4121 -1.2889 TD +0.1267 Tw +(e.g., another interaction preceded this one, it can specify in the call to )Tj +/TT8 1 Tf +32.362 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.1267 Tw +[( that)]TJ +-36.5627 -1.2889 TD +0.2222 Tw +[(typeahead is permitted. In this case, )]TJ +/TT8 1 Tf +17.9345 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2222 Tw +[( simply notes whether there is any)]TJ +-22.1351 -1.2889 TD +0 Tw +(typeahead, then prints )Tj +/TT8 1 Tf +10.2227 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +( and goes into a wait loop as described above.)Tj +-12.623 -2.0667 TD +0.0967 Tw +(If there is typeahead that contains unacceptable input, )Tj +/TT8 1 Tf +24.9384 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.0967 Tw +[( will assume that the)]TJ +-29.1391 -1.2889 TD +0.2144 Tw +(typeahead was not intended for )Tj +/TT8 1 Tf +15.4033 0 TD +0 Tw +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +0.2144 Tw +(, and will restore the typeahead when it)Tj +-19.604 -1.2889 TD +0 Tw +(completes operation and returns.)Tj +-2.0833 -2 TD +0.0867 Tw +[(6.)-1333.3(Finally, if the interaction is not with the terminal, i.e., the optional input file/string is)]TJ +2.0833 -1.2222 TD +0 Tw +(specified, )Tj +/TT8 1 Tf +4.4526 0 TD +(ASKUSER)Tj +/TT6 1 Tf +4.2007 0 TD +( simply prints )Tj +/TT8 1 Tf +6.415 0 TD +(MESS)Tj +/TT6 1 Tf +2.4004 0 TD +( and begins reading from the file/string.)Tj +ET +endstream +endobj +72 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +74 0 obj +<< +/Length 5048 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-20)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(TTYIN Display Typein Editor)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +582.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 543.54 Tm +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1089 Tw +[( is an Interlisp function for reading input from the terminal. It features altmode completion,)]TJ +-3.0005 -1.2889 TD +0.1322 Tw +(spelling correction, help facility, and fancy editing, and can also serve as a glorified free text input)Tj +0 -1.2222 TD +0.0567 Tw +[(function. This document is divided into two major sections: how to use )]TJ +/TT8 1 Tf +32.6146 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0567 Tw +[( from the users point)]TJ +-35.6151 -1.2889 TD +0 Tw +(of view, and from the programmers.)Tj +/TT8 1 Tf +0 -2.8889 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.4156 Tw +[( exists in implementations for Interlisp-10 and Interlisp-D. The two are substantially)]TJ +-3.0005 -1.2889 TD +0.0067 Tw +(compatible, but the capabilities of the two systems differ \(Interlisp-D has a more powerful display and)Tj +0 -1.2222 TD +0.1533 Tw +(allows greater access to the system primitives needed to control it effectively; it also has a mouse,)Tj +T* +0.3156 Tw +[(greatly reducing the need for keyboard-oriented editing commands\). Descriptions of both are)]TJ +T* +0 Tw +(included in this document for completeness, but Interlisp-D users may find large sections irrelevant.)Tj +/TT4 1 Tf +10 0 0 10 126 409.4 Tm +(Entering Input With TTYIN)Tj +/TT6 1 Tf +9 0 0 9 126 385.74 Tm +0.0178 Tw +(There are two major ways of using )Tj +/TT8 1 Tf +15.7089 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0178 Tw +[(: set )]TJ +/TT8 1 Tf +2.5501 0 TD +0 Tw +(LISPXREADFN)Tj +/TT6 1 Tf +6.6011 0 TD +0.0178 Tw +[( to )]TJ +/TT8 1 Tf +1.4076 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0178 Tw +(, so the )Tj +/TT8 1 Tf +3.4103 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0178 Tw +[( executive uses)]TJ +-38.6795 -1.2889 TD +0.0533 Tw +(it to obtain input; and call )Tj +/TT8 1 Tf +11.9797 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0533 Tw +[( from within a program to gather text input. Mostly the same rules)]TJ +-14.9802 -1.2889 TD +0 Tw +(apply to both; places where it makes a difference are mentioned below.)Tj +0 -2.8889 TD +0.0856 Tw +(The following characters may be used to edit your input, independent of what kind of terminal you)Tj +0 -1.2222 TD +0.0733 Tw +[(are on. The more )]TJ +/TT8 1 Tf +8.3452 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0733 Tw +[( knows about your terminal, of course, the nicer some of these will behave.)]TJ +-11.3457 -1.2889 TD +0.1311 Tw +(Some functions are performed by one of several characters; any character that you happen to have)Tj +0 -1.2222 TD +0.2111 Tw +[(assigned as an interrupt character will, of couse, not be read by )]TJ +/TT8 1 Tf +31.0926 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.2111 Tw +[(. There is a \(somewhat)]TJ +-34.0931 -1.2889 TD +0.6611 Tw +(inelegant\) way of changing which characters perform which functions, described under)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(TTYINREADMACROS)Tj +/TT6 1 Tf +9.0015 0 TD +( later on.)Tj +/TT12 1 Tf +-5.0681 -2.0667 TD +(Control-A)Tj +0 -1 TD +(BACKSPACE)Tj +1.8 -1.2889 TD +(DELETE)Tj +/TT6 1 Tf +4.9333 0 TD +0.15 Tw +[(Deletes a character. At the start of the second or subsequent lines of)]TJ +0 -1.2889 TD +0 Tw +(your input, deletes the last character of the previous line.)Tj +/TT12 1 Tf +-6.7333 -2 TD +(Control-W)Tj +/TT6 1 Tf +6.7333 0 TD +0.3167 Tw +[(Deletes a "word". Generally this means back to the last space or)]TJ +0 -1.0667 TD +0 Tw +(parenthesis.)Tj +/TT12 1 Tf +-6.7333 -1.7778 TD +(Control-Q)Tj +/TT6 1 Tf +6.7333 0 TD +0.2911 Tw +(Deletes the current line, or if the current line is blank, deletes the)Tj +0 -1.0667 TD +0 Tw +(previous line.)Tj +/TT12 1 Tf +-6.7333 -1.7778 TD +(Control-R)Tj +/TT6 1 Tf +6.7333 0 TD +0.19 Tw +[(Refreshes the current line. Two in a row refreshes the whole buffer)]TJ +0 -1.0667 TD +0 Tw +(\(when doing multi-line input\).)Tj +/TT12 1 Tf +-4.9333 -1.7778 TD +(ESCAPE)Tj +/TT6 1 Tf +4.9333 0 TD +0.16 Tw +(Tries to complete the current word from the spelling list provided to)Tj +/TT8 1 Tf +0 -1.0667 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0478 Tw +[(, if any. In the case of ambiguity, completes as far as is uniquely)]TJ +-3.0005 -1.0667 TD +0.0433 Tw +[(determined, or rings the bell. For )]TJ +/TT8 1 Tf +15.3766 0 TD +0 Tw +(LISPX)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( input, the spelling list may be)]TJ +/TT8 1 Tf +-18.3771 -1.0667 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +( \(see discussion of )Tj +/TT8 1 Tf +8.2329 0 TD +(TTYINCOMPLETEFLG)Tj +/TT6 1 Tf +9.6016 0 TD +(.)Tj +-23.2354 -1.8444 TD +0.0689 Tw +[(Interlisp-10 only: If no spelling list was provided, but the word begins)]TJ +0 -1 TD +0.1256 Tw +(with a ")Tj +/TT8 1 Tf +3.6554 0 TD +0 Tw +(<)Tj +/TT6 1 Tf +0.6001 0 TD +0.1256 Tw +(", tries directory name completion \(or filename completion if)Tj +-4.2555 -1.0667 TD +0 Tw +(there is already a matching ")Tj +/TT8 1 Tf +12.5933 0 TD +(>)Tj +/TT6 1 Tf +0.6001 0 TD +(" in the current word\).)Tj +ET +endstream +endobj +75 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +77 0 obj +<< +/Length 6189 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-21)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT12 1 Tf +9 0 0 9 156.6 569.54 Tm +(?)Tj +/TT6 1 Tf +1.9333 0 TD +0.1711 Tw +(If typed in the middle of a word will supply alternative completions)Tj +0 -1.0667 TD +0.1078 Tw +(from the )Tj +/TT8 1 Tf +4.2595 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.1078 Tw +[( argument to )]TJ +/TT8 1 Tf +6.2696 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1078 Tw +[( \(if any\). ?)]TJ +/TT8 1 Tf +5.0532 0 TD +0 Tw +(ACTIVATEFLG)Tj +/TT6 1 Tf +6.6011 0 TD +0.1078 Tw +[( \(see the)]TJ +-28.1844 -1.0667 TD +0 Tw +(Assorted Flags section below\) must be true to enable this feature.)Tj +/TT12 1 Tf +-6.7333 -1.7778 TD +(Control-Y)Tj +/TT6 1 Tf +6.7333 0 TD +0.3611 Tw +(Escapes to a Lisp user exec, from which you may return by the)Tj +0 -1.0667 TD +0 Tw +(command )Tj +/TT8 1 Tf +4.8571 0 TD +(OK)Tj +/TT6 1 Tf +1.2002 0 TD +0.1589 Tw +[(. However, when in )]TJ +/TT8 1 Tf +10.0244 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1589 Tw +[( mode and the buffer is non-)]TJ +-18.4821 -1.0667 TD +0.2022 Tw +(empty, Control-Y is treated as Lisps unquote macro instead, so you)Tj +0 -1 TD +0 Tw +(have to use meta-Control-Y \(below\) to invoke the user exec.)Tj +/TT12 1 Tf +-8.9667 -1.7778 TD +(LF)Tj +/TT6 1 Tf +1.2002 0 TD +0.0233 Tw +[( )23.3(in )23.3(Interlisp-10)-1334.3(Retrieves characters from the previous non-empty buffer when it is able)]TJ +7.7665 -1.0667 TD +0.0756 Tw +(to; e.g., when typed at the beginning of the line this command restores)Tj +0 -1 TD +0.1233 Tw +(the previous line you typed at )Tj +/TT8 1 Tf +14.2786 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1233 Tw +(; when typed in the middle of a)Tj +-17.2791 -1.0667 TD +0.0878 Tw +(line fills in the remaining text from the old line; when typed following)Tj +/TT15 1 Tf +0 -1 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(Q)Tj +/TT6 1 Tf +0.6001 0 TD +( or )Tj +/TT15 1 Tf +1.4409 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(W)Tj +/TT6 1 Tf +0.6001 0 TD +( restores what those commands erased.)Tj +/TT12 1 Tf +-5.7805 -1.8444 TD +(;)Tj +/TT6 1 Tf +1.9333 0 TD +0.0556 Tw +(If typed as the first character of the line means the line is a comment; it)Tj +0 -1.0667 TD +0 Tw +(is ignored, and )Tj +/TT8 1 Tf +6.8677 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( loops back for more input.)Tj +-9.8682 -1.8444 TD +0.0633 Tw +[(Note: The exact behaviour of this character is determined by the value)]TJ +0 -1 TD +0 Tw +(of )Tj +/TT8 1 Tf +1.1289 0 TD +(TTYINCOMMENTCHAR)Tj +/TT6 1 Tf +9.6016 0 TD +( \(see the Assorted Flags section below\).)Tj +/TT12 1 Tf +-17.4638 -1.8444 TD +(Control-X)Tj +/TT6 1 Tf +6.7333 0 TD +0.0478 Tw +(Goes to the end of your input \(or end of expression if there is an excess)Tj +0 -1.0667 TD +0 Tw +(right parenthesis\) and returns if parentheses are balanced, beeps if not.)Tj +-10.6667 -2.6667 TD +0.0844 Tw +(During most kinds of input, )Tj +/TT8 1 Tf +13.0482 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0844 Tw +[( is in "autofill" mode: if a space is typed near the right margin, a)]TJ +-16.0487 -1.2889 TD +0.19 Tw +[(carriage return is simulated to start a new line. In fact, on cursor-addressable displays, lines are)]TJ +0 -1.2222 TD +0.0167 Tw +[(always broken, if possible, so that no word straddles the end of the line. The "pseudo-carriage return")]TJ +T* +0.0211 Tw +(ending the line is still read as a space, however; i.e., the program keeps track of whether a line ends in)Tj +T* +0.0011 Tw +(a carriage return or is merely broken at some convenient point. You wont get carriage returns in your)Tj +T* +0 Tw +(strings unless you explicitly type them.)Tj +/TT4 1 Tf +10 0 0 10 78 266 Tm +(Mouse Commands )Tj +/TT6 1 Tf +9 0 0 9 78 242.34 Tm +(The mouse buttons are interpreted as follows during )Tj +/TT8 1 Tf +23.5337 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( input:)Tj +/TT8 1 Tf +-19.6008 -2.0667 TD +(LEFT)Tj +/TT6 1 Tf +3.7333 0 TD +0.1667 Tw +[(Moves the caret to where the cursor is pointing. As you hold down)]TJ +/TT8 1 Tf +0 -1.0667 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.19 Tw +(, the caret moves around with the cursor; after you let up, any)Tj +-2.4004 -1.0667 TD +0 Tw +(typein will be inserted at the new position.)Tj +/TT8 1 Tf +-4.9333 -1.7778 TD +(MIDDLE)Tj +/TT6 1 Tf +4.9333 0 TD +(Like )Tj +/TT8 1 Tf +2.187 0 TD +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +(, but moves only to word boundaries.)Tj +/TT8 1 Tf +-8.9207 -1.8444 TD +(RIGHT)Tj +/TT6 1 Tf +4.3333 0 TD +0.1444 Tw +(Deletes text from the caret to the cursor, either forward or backward.)Tj +0 -1.0667 TD +0.1156 Tw +(While you hold down )Tj +/TT8 1 Tf +10.4129 0 TD +0 Tw +(RIGHT)Tj +/TT6 1 Tf +3.0005 0 TD +0.1156 Tw +(, the text to be deleted is complemented;)Tj +-13.4134 -1.0667 TD +0.0656 Tw +[(when you let up, the text actually goes away. If you let up outside the)]TJ +0 -1 TD +0.4389 Tw +(scope of the text, nothing is killed \(this is how to "cancel" the)Tj +T* +0.1578 Tw +[(command\). This is roughly the same as )]TJ +/TT8 1 Tf +19.044 0 TD +0 Tw +(CTRL-RIGHT)Tj +/TT6 1 Tf +6.001 0 TD +0.1578 Tw +[( with no initial)]TJ +-25.0449 -1.0667 TD +0 Tw +(selection \(below\). )Tj +-10.6667 -2.6667 TD +0.0656 Tw +(If you hold down )Tj +/TT8 1 Tf +8.2398 0 TD +0 Tw +(CTRL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0656 Tw +[( and/or )]TJ +/TT8 1 Tf +3.8709 0 TD +0 Tw +(SHIFT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0656 Tw +[( while pressing the mouse buttons, you instead get secondary)]TJ +-17.5115 -1.2889 TD +0.2011 Tw +[(selection, move selection or delete selection. You make a selection by bugging )]TJ +/TT8 1 Tf +37.4313 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.2011 Tw +[( \(to select a)]TJ +-39.8317 -1.2889 TD +0.08 Tw +(character\) or )Tj +/TT8 1 Tf +5.9989 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.08 Tw +[( \(to select a word\), and optionally extend the selection either left or right using)]TJ +/TT8 1 Tf +-9.5995 -1.2889 TD +0 Tw +(RIGHT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0733 Tw +[(. While you are doing this, the caret does not move, but your selected text is highlighted in a)]TJ +-3.0005 -1.2889 TD +0.0544 Tw +[(manner indicating what is about to happen. When you have made your selection \(all mouse buttons)]TJ +0 -1.2222 TD +0 Tw +(up now\), lift up on )Tj +/TT8 1 Tf +8.5723 0 TD +(CTRL)Tj +/TT6 1 Tf +2.4004 0 TD +( and/or )Tj +/TT8 1 Tf +3.7397 0 TD +(SHIFT)Tj +/TT6 1 Tf +3.0005 0 TD +( and the action you have selected will occur, which is:)Tj +ET +endstream +endobj +78 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT15 23 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +81 0 obj +<< +/Length 4975 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-22)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 183 569.54 Tm +(SHIFT)Tj +/TT6 1 Tf +4.3333 0 TD +0.1122 Tw +[(The selected text as typein at the caret. The text is highlighted with a)]TJ +0 -1.0667 TD +0 Tw +(broken underline during selection.)Tj +/TT8 1 Tf +-3.7333 -1.7778 TD +(CTRL)Tj +/TT6 1 Tf +3.7333 0 TD +(Delete the selected text. The text is complemented during selection.)Tj +/TT8 1 Tf +-7.3333 -1.8444 TD +(CTRL-SHIFT)Tj +/TT6 1 Tf +7.3333 0 TD +0.1344 Tw +(Combines the above: delete the selected text and insert it at the caret.)Tj +0 -1.0667 TD +0 Tw +(This is how you move text about.)Tj +-10.6667 -2.6667 TD +0.0211 Tw +(You can cancel a selection in progress by pressing )Tj +/TT8 1 Tf +22.4376 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0211 Tw +[( or )]TJ +/TT8 1 Tf +1.4831 0 TD +0 Tw +(MIDDLE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0211 Tw +[( as if to select, and moving outside)]TJ +-29.9217 -1.2889 TD +0 Tw +(the range of the text.)Tj +0 -2.8889 TD +0.05 Tw +(The most recent text deleted by mouse command can be inserted at the caret by typing Middle-blank)Tj +0 -1.2222 TD +0.07 Tw +[(key \(on the Xerox 1132\) or the Open key \(on the Xerox 1108\). This is the same key that retrieves the)]TJ +T* +0 Tw +(previous buffer when issued at the end of a line.)Tj +/TT4 1 Tf +10 0 0 10 126 404.8 Tm +(Display Editing Commands)Tj +/TT6 1 Tf +9 0 0 9 126 381.14 Tm +0.2367 Tw +[(On terminals with a meta key: In Interlisp-10, )]TJ +/TT8 1 Tf +22.7096 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.2367 Tw +[( reads from the terminal in binary mode,)]TJ +-25.7101 -1.2889 TD +0.1078 Tw +(allowing many more editing commands via the meta key, in the style of )Tj +/TT8 1 Tf +33.362 0 TD +0 Tw +(TVEDIT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1078 Tw +[( commands. Note)]TJ +-36.9626 -1.2889 TD +0.1955 Tw +(that due to Tenexs unfortunate way of handling typeahead, it is not possible to type ahead edit)Tj +0 -1.2222 TD +0.1511 Tw +(commands before )Tj +/TT8 1 Tf +8.4594 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1511 Tw +[( has started \(i.e., before its prompt appears\), because the meta bit will be)]TJ +-11.4599 -1.2889 TD +0.2256 Tw +(thrown away. Also, since Escape has numerous other meanings in Lisp and even in )Tj +/TT8 1 Tf +40.2462 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.2256 Tw +[( \(for)]TJ +-43.2466 -1.2889 TD +0 Tw +(completion\), this is not used as a substitute for the meta key.)Tj +0 -2.8889 TD +0.0422 Tw +[(In Interlisp-D: Users will probably have little use for most of these commands, as cursor positioning)]TJ +0 -1.2222 TD +0.1011 Tw +[(can often be done more conveniently, and certainly more obviously, with the mouse. Nevertheless,)]TJ +T* +0.0767 Tw +[(some commands, such as the case changing commands, can be useful. The key can)]TJ +T* +0.0333 Tw +(be used as an meta key if you perform )Tj +/TT8 1 Tf +17.445 0 TD +0.08 Tw +(\(METASHIFT T\))Tj +/TT6 1 Tf +7.8813 0 TD +0.0333 Tw +[( \(see Chapter 30\). Alternatively, you can use)]TJ +-25.3263 -1.2889 TD +0 Tw +(the variable )Tj +/TT8 1 Tf +5.4614 0 TD +(EDITPREFIXCHAR)Tj +/TT6 1 Tf +8.4014 0 TD +( as described in the next paragraph.)Tj +-13.8628 -2.9556 TD +0.0856 Tw +[(On display terminals without a meta key: If you want to type any of these commands, you need to)]TJ +0 -1.2222 TD +0.0533 Tw +[(prefix them with the "edit prefix" character. Set the variable )]TJ +/TT8 1 Tf +27.3132 0 TD +0 Tw +(EDITPREFIXCHAR)Tj +/TT6 1 Tf +8.4014 0 TD +0.0533 Tw +[( to the character code)]TJ +-35.7146 -1.2889 TD +0.0367 Tw +[(of the desired prefix char. Type the edit prefix twice to give an "meta-escape" command. Some users)]TJ +0 -1.2222 TD +0.2644 Tw +(of the )Tj +/TT8 1 Tf +3.295 0 TD +0 Tw +(TENEX)Tj +/TT6 1 Tf +3.0005 0 TD +( )Tj +/TT8 1 Tf +0.5144 0 TD +(TVEDIT)Tj +/TT6 1 Tf +3.6006 0 TD +0.2644 Tw +[( program like to make escape \(33Q\) be the edit prefix, but this makes it)]TJ +-10.4105 -1.2889 TD +0 Tw +(somewhat awkward to ever use escape completion. )Tj +/TT8 1 Tf +23.2651 0 TD +(EDITPREFIXCHAR)Tj +/TT6 1 Tf +8.4014 0 TD +( is initially )Tj +/TT8 1 Tf +4.8843 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +-38.3511 -2.9556 TD +0.0022 Tw +(On hardcopy terminals without a meta key: You probably want to ignore this section, since you wont)Tj +0 -1.2222 TD +0.1422 Tw +(be able to see whats going on when you issure edit commands; there is no attempt made to echo)Tj +T* +0 Tw +(anything reasonable.)Tj +0 -2.8889 TD +0.0278 Tw +(In the descriptions below, "current word" means the word the cursor is under, or if under a space, the)Tj +0 -1.2222 TD +0.03 Tw +[(previous word. Currently parentheses are treated as spaces, which is usually what you want, but can)]TJ +T* +0.0967 Tw +[(occasionally cause confusion in the word deletion commands. Most commands can be preceded by)]TJ +T* +0.0678 Tw +(numbers or escape \(means infinity\), only the first of which requires the meta key \(or the edit prefix\).)Tj +T* +0.1478 Tw +(Some commands also accept negative arguments, but some only look at the magnitude of the arg.)Tj +ET +endstream +endobj +82 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +84 0 obj +<< +/Length 3866 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-23)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 78 569.54 Tm +0.1156 Tw +(Most of these commands are taken from the display editors )Tj +/TT8 1 Tf +27.6453 0 TD +0 Tw +(TVEDIT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1156 Tw +[( and/or )]TJ +/TT8 1 Tf +3.9709 0 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.1156 Tw +(, and are confined to)Tj +-35.8168 -1.2889 TD +0 Tw +(work within one line of text unless otherwise noted. )Tj +0 -2.8889 TD +(Cursor Movement Commands:)Tj +ET +78 517.38 6.99 -6.44 re +f +BT +/TT12 1 Tf +9 0 0 9 90.6 510.94 Tm +(Meta-DELETE)Tj +2.4 -1 TD +(Meta-BS)Tj +0.6 -1.0667 TD +(Meta-<)Tj +/TT6 1 Tf +4.9333 0 TD +(Back up one \(or n\) characters.)Tj +/TT12 1 Tf +-7.3333 -2.1778 TD +(Meta-SPACE)Tj +2.4 -1.0667 TD +(Meta->)Tj +/TT6 1 Tf +4.9333 0 TD +(Moves forward one \(or n\) characters.)Tj +/TT12 1 Tf +-4.9333 -2.1778 TD +(Meta-^)Tj +/TT6 1 Tf +4.9333 0 TD +(Moves up one \(or n\) lines.)Tj +/TT12 1 Tf +-5.5333 -2.1778 TD +(Meta-lf)Tj +/TT6 1 Tf +5.5333 0 TD +(Moves down one \(or n\) lines.)Tj +/TT12 1 Tf +-4.9333 -2.1778 TD +(Meta-\()Tj +/TT6 1 Tf +4.9333 0 TD +(Moves back one \(or n\) words.)Tj +/TT12 1 Tf +-4.9333 -2.1778 TD +(Meta-\))Tj +/TT6 1 Tf +4.9333 0 TD +(Moves ahead one \(or n\) words.)Tj +/TT12 1 Tf +-6.1333 -2.1778 TD +(Meta-TAB)Tj +/TT6 1 Tf +6.1333 0 TD +0.12 Tw +(Moves to end of line; with an argument moves to nth end of line; )Tj +/TT12 1 Tf +30.5975 0 TD +0 Tw +(Meta-ESC-)Tj +-30.5975 -1.0667 TD +(TAB)Tj +/TT6 1 Tf +1.8003 0 TD +( goes to end of buffer.)Tj +/TT12 1 Tf +-11.1303 -2.32 TD +(Control-Meta-L)Tj +/TT6 1 Tf +9.33 0 TD +(Moves to start of line \(or nth previous, or start of )Tj +/F1 1 Tf +10 0 0 10 358.0532 334.66 Tm +(buffer\).)Tj +/TT12 1 Tf +9 0 0 9 117.6 315.06 Tm +(Meta-{)Tj +-0.6 -1.0667 TD +( Meta-})Tj +/TT6 1 Tf +5.5333 0 TD +(Go to start and end of buffer, respectively.)Tj +/TT12 1 Tf +-4.9333 -2.1778 TD +(Meta-[)Tj +/TT6 1 Tf +4.9333 0 TD +0.2922 Tw +(Moves to beginning of the current list, where cursor is currently under an)Tj +0 -1.0667 TD +0.0633 Tw +[(element of that list or its closing paren. \(See also the auto-parenthesis-matching)]TJ +0 -1 TD +0 Tw +(feature below under "Flags".\))Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-])Tj +/TT6 1 Tf +4.9333 0 TD +(Moves to end of current list.)Tj +/TT12 1 Tf +-5.5333 -2.1778 TD +(Meta-Sx)Tj +/TT6 1 Tf +5.5333 0 TD +(Skips ahead to next \(or nth\) occurrence of character x, or rings the bell.)Tj +/TT12 1 Tf +-5.5333 -2.1778 TD +(Meta-Bx)Tj +/TT6 1 Tf +5.5333 0 TD +(Backward search.)Tj +-9.3333 -2.7333 TD +(Buffer Modification Commands:)Tj +/TT12 1 Tf +3.8 -2.3333 TD +(Meta-Zx)Tj +/TT6 1 Tf +5.5333 0 TD +0.0733 Tw +[(Zaps characters from cursor to next \(or nth\) occurrence of x. There is no unzap)]TJ +0 -1.0667 TD +0 Tw +(command yet.)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-A)Tj +0 -1.0667 TD +(Meta-R)Tj +/TT6 1 Tf +4.9333 0 TD +0.0233 Tw +(Repeat the last S, B or Z command, regardless of any intervening input \(note this)Tj +0 -1.0667 TD +0 Tw +(differs from TEdits A command\).)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-K)Tj +/TT6 1 Tf +4.9333 0 TD +(Kills the character under the cursor, or n chars starting at the cursor.)Tj +/TT12 1 Tf +-5.5333 -2.1778 TD +(Meta-CR)Tj +/TT6 1 Tf +5.5333 0 TD +0.2811 Tw +(When the buffer is empty is the same as )Tj +/TT12 1 Tf +20.3781 0 TD +0 Tw +(LF)Tj +/TT6 1 Tf +1.2002 0 TD +0.2811 Tw +(, i.e. restores buffers previous)Tj +-21.5783 -1.0667 TD +0.1567 Tw +[(contents. Otherwise is just like a )]TJ +/TT12 1 Tf +15.8208 0 TD +0 Tw +(CR)Tj +/TT6 1 Tf +1.2002 0 TD +0.1567 Tw +[( \(except that it also terminates an insert\).)]TJ +-17.021 -1.0667 TD +0 Tw +(Thus, )Tj +/TT12 1 Tf +2.8661 0 TD +(Meta-CR)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT12 1 Tf +0.3944 0 TD +(CR)Tj +/TT6 1 Tf +1.2002 0 TD +0.1444 Tw +[( will repeat the previous input \(as will )]TJ +/TT12 1 Tf +18.3011 0 TD +0.3478 Tw +(LF CR)Tj +/TT6 1 Tf +3.3483 0 TD +0.1444 Tw +[( without the)]TJ +-30.3108 -1.0667 TD +0 Tw +(meta key\).)Tj +ET +endstream +endobj +85 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +87 0 obj +<< +/Length 5996 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-24)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 165.6 569.54 Tm +(Meta-O)Tj +/TT6 1 Tf +4.9333 0 TD +0.0189 Tw +(Does "Open line", inserting a crlf after the cursor, i.e., it breaks the line but leaves)Tj +0 -1.0667 TD +0 Tw +(the cursor where it is.)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-T)Tj +/TT6 1 Tf +4.9333 0 TD +0.05 Tw +[(Transposes the characters before and after the cursor. When typed at the end of)]TJ +0 -1.0667 TD +0.1389 Tw +[(a line, transposes the previous two characters. Refuses to handle funny cases,)]TJ +0 -1 TD +0 Tw +(such as tabs.)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-G)Tj +/TT6 1 Tf +4.9333 0 TD +0.0722 Tw +[(Grabs the contents of the previous line from the cursor position onward. Meta-)]TJ +0 -1.0667 TD +0 Tw +(nG grabs the nth previous line.)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-L)Tj +/TT6 1 Tf +4.9333 0 TD +0.0678 Tw +(Lowercases current word, or n words on line. )Tj +/TT12 1 Tf +21.2086 0 TD +0 Tw +(Meta-ESC-L)Tj +/TT6 1 Tf +6.001 0 TD +0.0678 Tw +[( lowercases the rest)]TJ +-27.2096 -1.0667 TD +0 Tw +(of the line, or if given at the end of line lowercases the entire line.)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-U)Tj +/TT6 1 Tf +4.9333 0 TD +(Uppercases analogously.)Tj +/TT12 1 Tf +-4.9333 -2.1778 TD +(Meta-C)Tj +/TT6 1 Tf +4.9333 0 TD +0.0433 Tw +[(Capitalize. If you give it an argument, only the first word is capitalized; the rest)]TJ +0 -1.0667 TD +0 Tw +(are just lowercased.)Tj +/TT12 1 Tf +-9.33 -2.1111 TD +(Control-Meta-Q)Tj +/TT6 1 Tf +9.33 0 TD +0.0278 Tw +(Deletes the current line. )Tj +/TT12 1 Tf +11.1452 0 TD +0 Tw +(Control-Meta-ESC-Q)Tj +/TT6 1 Tf +10.8018 0 TD +0.0278 Tw +[( deletes from the current cursor)]TJ +-21.947 -1.0667 TD +0 Tw +(position to the end of the buffer. No other arguments are handled.)Tj +/TT12 1 Tf +-9.33 -2.1111 TD +(Control-Meta-W)Tj +/TT6 1 Tf +9.33 0 TD +(Deletes the current word, or the previous word if sitting on a space.)Tj +/TT12 1 Tf +-4.9333 -2.1778 TD +(Meta-J)Tj +/TT6 1 Tf +4.9333 0 TD +0.06 Tw +[("Justify" this line. This will break it if it is too long, or move words up from the)]TJ +0 -1.0667 TD +0.1033 Tw +[(next line if too short. Will not join to an empty line, or one starting with a tab)]TJ +0 -1 TD +0.1867 Tw +[(\(both of which are interpreted as paragraph breaks\). Any new line breaks it)]TJ +T* +0 Tw +(introduces are considered spaces, not carriage returns. )Tj +/TT12 1 Tf +24.5259 0 TD +(Meta-nJ)Tj +/TT6 1 Tf +4.2007 0 TD +( justifies n lines.)Tj +-28.7266 -2.1778 TD +0.0189 Tw +(The linelength is defined as )Tj +/TT8 1 Tf +12.5022 0 TD +0 Tw +(TTYJUSTLENGTH)Tj +/TT6 1 Tf +7.8013 0 TD +0.0189 Tw +(, ignoring any prompt characters at)Tj +-20.3034 -1.0667 TD +0.1456 Tw +[(the margin. If )]TJ +/TT8 1 Tf +7.0964 0 TD +0 Tw +(TTYJUSTLENGTH)Tj +/TT6 1 Tf +7.8013 0 TD +0.1456 Tw +[( is negative, it is interpreted as relative to the)]TJ +-14.8977 -1.0667 TD +0 Tw +(right margin. )Tj +/TT8 1 Tf +6.3574 0 TD +(TTYJUSTLENGTH)Tj +/TT6 1 Tf +7.8013 0 TD +( is initially -8 in Interlisp-D, 72 in Interlisp-10.)Tj +/TT12 1 Tf +-21.492 -2.1778 TD +(Meta-ESC-F)Tj +/TT6 1 Tf +7.3333 0 TD +0.0389 Tw +[("Finishes" the input, regardless of where the cursor is. Specifically, it goes to the)]TJ +0 -1.0667 TD +0.17 Tw +(end of the input and enters a )Tj +/TT12 1 Tf +14.1592 0 TD +0.4078 Tw +(CR, control-Z)Tj +/TT6 1 Tf +8.209 0 TD +0.17 Tw +[( or "", depending on whether)]TJ +-22.3683 -1.0667 TD +0 Tw +(normal, )Tj +/TT8 1 Tf +3.8223 0 TD +(REPEAT)Tj +/TT6 1 Tf +3.6006 0 TD +0.1256 Tw +[( or )]TJ +/TT8 1 Tf +1.692 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1256 Tw +[( input is happening. Note that a "" wont necessarily)]TJ +-11.5153 -1.0667 TD +0.0556 Tw +(end a )Tj +/TT8 1 Tf +2.783 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0556 Tw +(, but it seems likely to in most cases where you would be inclined to)Tj +-5.1834 -1.0667 TD +0 Tw +(use this command, and makes for more predictable behavior.)Tj +-9.3333 -2.6667 TD +(Miscellaneous Commands:)Tj +/TT12 1 Tf +4.4 -2.3333 TD +(Meta-P)Tj +/TT6 1 Tf +4.9333 0 TD +0.4722 Tw +[(Interlisp-D: Prettyprint buffer. Clears the buffer and reprints it using)]TJ +0 -1.0667 TD +0.1744 Tw +[(prettyprint. If there are not enough right parentheses, it will supply more; if)]TJ +0 -1 TD +0.0556 Tw +(there are too many, any excess remains unprettyprinted at the end of the buffer.)Tj +T* +0.0822 Tw +(May refuse to do anything if there is an unclosed string or other error trying to)Tj +T* +0 Tw +(read the buffer.)Tj +/TT12 1 Tf +-4.9333 -2.1111 TD +(Meta-N)Tj +/TT6 1 Tf +4.9333 0 TD +0.2167 Tw +[(Refresh line. Same as )]TJ +/TT12 1 Tf +10.8968 0 TD +0 Tw +(Control-R)Tj +/TT6 1 Tf +5.4009 0 TD +0.2167 Tw +[(. Meta-ESC-N refreshes the whole buffer;)]TJ +-16.2977 -1.0667 TD +0.0001 Tc +0.0032 Tw +(Meta-nN refreshes n lines. Cursor movement in )Tj +/TT8 1 Tf +21.5999 0 TD +0 Tc +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0003 Tc +0.003 Tw +( depends on )Tj +/TT8 1 Tf +5.6746 0 TD +0 Tc +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0006 Tc +0.0027 Tw +( being)Tj +-33.2754 -1.0667 TD +0 Tc +0.1756 Tw +(the only source of output to the screen; if you do a )Tj +/TT12 1 Tf +24.5417 0 TD +0 Tw +(Control-T)Tj +/TT6 1 Tf +5.4009 0 TD +0.1756 Tw +(, or a system)Tj +-29.9426 -1.0667 TD +0.0822 Tw +(message appears, or line noise occurs, you may need to refresh the line for best)Tj +0 -1 TD +0.0344 Tw +[(results. In Interlisp-10, if for some reason your terminal falls out of binary mode)]TJ +T* +0.2389 Tw +(\(e.g. can happen when returning to a Lisp running in a lower fork\), )Tj +/TT12 1 Tf +33.0025 0 TD +0 Tw +(Meta-)Tj +/TT6 1 Tf +-33.0025 -1.0667 TD +( is unreadable, so youd have to type )Tj +/TT12 1 Tf +21.6694 0 TD +(Control-R)Tj +/TT6 1 Tf +5.4009 0 TD +( instead.)Tj +/TT12 1 Tf +-36.4003 -2.1778 TD +(Control-Meta-Y)Tj +/TT6 1 Tf +9.33 0 TD +0.0233 Tw +[(Gets user exec. Thus, this is like regular )]TJ +/TT12 1 Tf +18.167 0 TD +0 Tw +(Control-Y)Tj +/TT6 1 Tf +5.4009 0 TD +0.0233 Tw +(, except when doing a )Tj +/TT8 1 Tf +10.0249 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +-33.5928 -1.0667 TD +(\(when control-Y is a read macro and hence does not invoke this function\).)Tj +ET +endstream +endobj +88 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +90 0 obj +<< +/Length 6501 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-25)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT12 1 Tf +9 0 0 9 78.03 569.54 Tm +(Control-Meta-ESC-Y)Tj +/TT6 1 Tf +10.8856 0 TD +0.08 Tw +(Gets a user exec, but first unreads the contents of the buffer from the cursor)Tj +-1.5556 -1.0667 TD +0.0456 Tw +[(onward. Thus if you typed at )]TJ +/TT8 1 Tf +13.7369 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0456 Tw +[( something destined for the Lisp executive,)]TJ +-16.7373 -1.0667 TD +0 Tw +(you can do )Tj +/TT12 1 Tf +5.1377 0 TD +(Control-Meta-L-ESC-Control-Y)Tj +/TT6 1 Tf +16.8027 0 TD +( and give it to Lisp.)Tj +/TT12 1 Tf +-27.2604 -2.1778 TD +(Meta-)Tj +/TT15 1 Tf +9.9 0 0 9 141.1244 530.74 Tm +<0040>Tj +/TT6 1 Tf +9 0 0 9 162 530.74 Tm +0.0756 Tw +(Adds the current word to the spelling list )Tj +/TT8 1 Tf +19.1313 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0756 Tw +[(. With zero arg, removes)]TJ +-24.5322 -1.0667 TD +0 Tw +(word. See )Tj +/TT8 1 Tf +4.8687 0 TD +(TTYINCOMPLETEFLG)Tj +/TT6 1 Tf +9.6016 0 TD +( \(see the Assorted Flags section below\).)Tj +-23.8036 -2.7333 TD +0.46 Tw +[(Note to Datamedia, Heath users: In addition to simple cursor movement commands and)]TJ +0 -1.2222 TD +0 Tw +(insert/delete, )Tj +/TT8 1 Tf +6.407 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1389 Tw +[( uses the displays cursor-addressing capability to optimize cursor movements)]TJ +-9.4074 -1.2889 TD +0.0144 Tw +(longer than a few characters, e.g. )Tj +/TT12 1 Tf +14.8459 0 TD +0 Tw +(Meta-TAB)Tj +/TT6 1 Tf +4.8008 0 TD +0.0144 Tw +[( to go to the end of the line. In order to be able to address)]TJ +-19.6467 -1.2889 TD +(the cursor, )Tj +/TT8 1 Tf +4.9727 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0144 Tw +[( has to know where it is to begin with. Lisp keeps track of the current print position)]TJ +-7.9732 -1.2889 TD +0.0322 Tw +(within the line, but does not keep track of the line on the screen \(in fact, it knows precious little about)Tj +0 -1.2222 TD +0.0133 Tw +[(displays, much like Tenex\). Thus, )]TJ +/TT8 1 Tf +15.3803 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0133 Tw +[( establishes where it is by forcing the cursor to appear on the)]TJ +-18.3808 -1.2889 TD +0.0122 Tw +[(last line of the screen. Ordinarily this is the case anyway \(except possibly on startup\), but if the cursor)]TJ +0 -1.2222 TD +0.1455 Tw +(happens to be only halfway down the screen at the time, there is a possibly unsettling leap of the)Tj +T* +0 Tw +(cursor when )Tj +/TT8 1 Tf +5.7837 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( starts. )Tj +/TT4 1 Tf +10 0 0 10 78 376.2 Tm +(Using TTYIN for Lisp Input)Tj +/TT6 1 Tf +9 0 0 9 78 352.54 Tm +(When )Tj +/TT8 1 Tf +2.9153 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0222 Tw +[( is loaded, or a sysout containing )]TJ +/TT8 1 Tf +14.928 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0222 Tw +[( is started up, the function )]TJ +/TT8 1 Tf +11.9576 0 TD +0 Tw +(SETREADFN)Tj +/TT6 1 Tf +5.4009 0 TD +0.0222 Tw +[( is called.)]TJ +-41.2027 -1.2889 TD +0.0244 Tw +(If the terminal is a display, it sets )Tj +/TT8 1 Tf +15.0085 0 TD +0 Tw +(LISPXREADFN)Tj +/TT6 1 Tf +6.6011 0 TD +0.0244 Tw +[( \(see Chapter 13\) to be )]TJ +/TT8 1 Tf +10.1911 0 TD +0 Tw +(TTYINREAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.0244 Tw +[(. If the terminal is)]TJ +-37.2016 -1.2889 TD +0.0367 Tw +(not a display terminal, )Tj +/TT8 1 Tf +10.3718 0 TD +0 Tw +(SETREADFN)Tj +/TT6 1 Tf +5.4009 0 TD +0.0367 Tw +[( will set the variable to )]TJ +/TT8 1 Tf +10.4895 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +(. )Tj +/TT8 1 Tf +0.8233 0 TD +0.0889 Tw +(\(SETREADFN READ\))Tj +/TT6 1 Tf +10.2906 0 TD +0.0367 Tw +[( will also set)]TJ +-39.7765 -1.2889 TD +0 Tw +(it to )Tj +/TT8 1 Tf +1.9893 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(.)Tj +-4.3897 -2.9556 TD +0.1267 Tw +(There are two principal differences between )Tj +/TT8 1 Tf +20.4661 0 TD +0 Tw +(TTYINREAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.1267 Tw +[( and )]TJ +/TT8 1 Tf +2.4462 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1267 Tw +[(: \(1\) parenthesis balancing. The)]TJ +-30.7135 -1.2889 TD +0.1244 Tw +(input does not activate on an exactly balancing right paren/bracket unless the input started with a)Tj +0 -1.2222 TD +0.0589 Tw +(paren/bracket, e.g., )Tj +/TT8 1 Tf +9.0694 0 TD +0.1422 Tw +(USE \(FOO\) FOR \(FIE\))Tj +/TT6 1 Tf +11.8285 0 TD +0.0589 Tw +[( will all be on one line, terminated by )]TJ +/TT12 1 Tf +17.2107 0 TD +0 Tw +(CR)Tj +/TT6 1 Tf +1.2002 0 TD +0.0589 Tw +(; and \(2\) read)Tj +-39.3088 -1.2889 TD +0 Tw +(macros.)Tj +0 -2.8889 TD +0.1156 Tw +(In Interlisp-10, )Tj +/TT8 1 Tf +6.9591 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1156 Tw +[( does not use a read table \()]TJ +/TT8 1 Tf +12.5457 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1156 Tw +[( behaves as though using the default initial)]TJ +-25.5058 -1.2889 TD +0.0033 Tw +(Lisp terminal input readtable\), so read macros and redefinition of syntax characters are not supported;)Tj +0 -1.2222 TD +0.0056 Tw +(however, " )Tj +/TT8 1 Tf +5.0121 0 TD +0 Tw +()Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( " )]TJ +/TT8 1 Tf +0.8822 0 TD +0 Tw +(\(QUOTE\))Tj +/TT6 1 Tf +4.2007 0 TD +0.0056 Tw +[( and "Control-Y" \()]TJ +/TT8 1 Tf +7.9298 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0056 Tw +(\) are built in, and a simple implementation of )Tj +/TT8 1 Tf +20.2951 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( and )]TJ +/TT8 1 Tf +2.204 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +-44.1244 -1.2889 TD +0.4089 Tw +[(is supplied. Also, the )]TJ +/TT8 1 Tf +11.8359 0 TD +0 Tw +(TTYINREADMACROS)Tj +/TT6 1 Tf +9.0015 0 TD +0.4089 Tw +[( facility described below can supply some of the)]TJ +-20.8374 -1.2889 TD +0 Tw +(functionality of immediate read macros in the editor.)Tj +0 -2.8889 TD +0.0022 Tw +(In Interlisp-D, read macros are \(mostly\) supported. Immediate read macros take effect only if typed at)Tj +0 -1.2222 TD +0 Tw +(the end of the input \(its not clear what their semantics should be elsewhere\).)Tj +/TT4 1 Tf +10 0 0 10 78 118.8 Tm +(Useful Macros)Tj +/TT6 1 Tf +9 0 0 9 78 95.14 Tm +0.08 Tw +(There are two useful edit macros that allow you to use )Tj +/TT8 1 Tf +25.1686 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.08 Tw +[( as a character editor: \(1\) )]TJ +/TT8 1 Tf +11.5327 0 TD +0 Tw +(ED)Tj +/TT6 1 Tf +1.2002 0 TD +0.08 Tw +[( loads the)]TJ +-40.902 -1.2889 TD +0.0989 Tw +(current expression into the ttyin buffer to be edited \(this is good for editing comments and strings\).)Tj +0 -1.2222 TD +0.0956 Tw +(Input is terminated in the usual way \(by typing a balancing right programmers assistant command)Tj +/TT8 1 Tf +T* +0 Tw +(FIX)Tj +/TT6 1 Tf +1.8003 0 TD +0.0167 Tw +[( will load the buffer with the events input, rather than calling the editor. If you really wanted the)]TJ +ET +endstream +endobj +91 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT15 23 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +93 0 obj +<< +/Length 7070 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-26)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0567 Tw +(Interlisp editor for your fix, you can say )Tj +/TT8 1 Tf +18.3025 0 TD +0.1344 Tw +(FIX EVENT - TTY)Tj +/TT6 1 Tf +9.4048 0 TD +0.0567 Tw +(: once you got )Tj +/TT8 1 Tf +6.6607 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0567 Tw +(s version to force)Tj +-37.3685 -1.2889 TD +0 Tw +(you into the editor.)Tj +/TT4 1 Tf +10 0 0 10 126 528.6 Tm +(Programming With TTYIN)Tj +/TT8 1 Tf +9 0 0 9 150 508.66 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TTYIN)Tj +/TT8 1 Tf +2.9999 0 TD +( PROMPT SPLST HELP OPTIONS ECHOTOFILE TABS UNREADBUF RDTBL\))Tj +/F1 1 Tf +10 0 0 10 501.0519 508.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 156 499.06 Tm +([Function])Tj +/TT8 1 Tf +2 -1.7778 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.01 Tw +[( prints )]TJ +/TT8 1 Tf +3.1391 0 TD +0 Tw +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.01 Tw +[(, then waits for input. The value returned in the normal case is a list)]TJ +-9.7402 -1.2889 TD +0.0656 Tw +(of all atoms on the line, with comma and parens returned as individual atoms; )Tj +/TT8 1 Tf +35.7864 0 TD +0 Tw +(OPTIONS)Tj +/TT6 1 Tf +-35.7864 -1.2889 TD +(may be used to get a different kind of value back.)Tj +/TT8 1 Tf +0 -2 TD +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.07 Tw +[( is an atom or string \(anything else is converted to a string\). If )]TJ +/TT8 1 Tf +28.6892 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.07 Tw +(, the value of)Tj +/TT8 1 Tf +-34.09 -1.2889 TD +0 Tw +(DEFAULTPROMPT)Tj +/TT6 1 Tf +7.8013 0 TD +0.0911 Tw +(, initially ")Tj +/TT8 1 Tf +4.7227 0 TD +0 Tw +(**)Tj +/TT6 1 Tf +1.2002 0 TD +0.0911 Tw +[( ", will be used. If )]TJ +/TT8 1 Tf +8.7847 0 TD +0 Tw +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0911 Tw +[( is )]TJ +/TT8 1 Tf +1.3971 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0911 Tw +(, no prompt will be given.)Tj +/TT8 1 Tf +-28.1067 -1.2889 TD +0 Tw +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0944 Tw +[( may also be a dotted pair )]TJ +/TT8 1 Tf +12.3291 0 TD +0.2278 Tw +(\(PROMPT1 . PROMPT2\))Tj +/TT6 1 Tf +11.8574 0 TD +0.0944 Tw +(, giving the prompt for the)Tj +-27.7871 -1.2889 TD +0.2289 Tw +(first and subsequent \(or overflow\) lines, each prompt being a string/atom or )Tj +/TT8 1 Tf +36.8487 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2289 Tw +[( to)]TJ +-38.649 -1.2889 TD +0.1578 Tw +[(denote absence of prompt. The default prompt for overflow lines is ")]TJ +/TT8 1 Tf +32.4426 0 TD +0 Tw +(...)Tj +/TT6 1 Tf +1.8003 0 TD +0.1578 Tw +[(". Note that)]TJ +-34.2429 -1.2889 TD +0 Tw +(rebinding )Tj +/TT8 1 Tf +4.6114 0 TD +(DEFAULTPROMPT)Tj +/TT6 1 Tf +7.8013 0 TD +0.0211 Tw +[( gives a convenient way to affect all the "ordinary" prompts in)]TJ +-12.4127 -1.2889 TD +0 Tw +(some program module.)Tj +/TT8 1 Tf +0 -2 TD +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.1744 Tw +[( is a spelling list, i.e., a list of atoms or dotted pairs )]TJ +/TT8 1 Tf +24.7902 0 TD +0.4189 Tw +(\(SYNONYM . ROOT\))Tj +/TT6 1 Tf +10.4393 0 TD +0.1744 Tw +[(. If)]TJ +-38.2301 -1.2889 TD +0.0656 Tw +(supplied, it is used to check and correct user responses, and to provide completion if the)Tj +0 -1.2222 TD +0.0956 Tw +[(user types escape. If )]TJ +/TT8 1 Tf +9.8616 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.0956 Tw +[( is one of the Lisp system spelling lists \(e.g., )]TJ +/TT8 1 Tf +20.4512 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0956 Tw +[( or)]TJ +/TT8 1 Tf +-38.7141 -1.2889 TD +0 Tw +(SPELLINGS3)Tj +/TT6 1 Tf +6.001 0 TD +0.2733 Tw +(\), words that are escape-completed get moved to the front, just as if a)Tj +/TT8 1 Tf +-6.001 -1.2889 TD +0 Tw +(FIXSPELL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0667 Tw +[( had found them. Autocompletion is also performed when user types a break)]TJ +-4.8008 -1.2889 TD +0.1256 Tw +(character \(cr, space, paren, etc\), unless one of the "nofixspell" options below is selected;)Tj +0 -1.2222 TD +0.0378 Tw +(i.e., if the word just typed would uniquely complete by escape, )Tj +/TT8 1 Tf +28.4278 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0378 Tw +[( behaves as though)]TJ +-31.4283 -1.2889 TD +0 Tw +(escape had been typed.)Tj +/TT8 1 Tf +0 -2 TD +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0056 Tw +(, if non-)Tj +/TT8 1 Tf +3.4281 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0056 Tw +(, determines what happens when the user types )Tj +/TT8 1 Tf +21.4058 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( or )]TJ +/TT8 1 Tf +1.452 0 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0056 Tw +(. If )Tj +/TT8 1 Tf +1.431 0 TD +0.0133 Tw +(HELP = T)Tj +/TT6 1 Tf +4.8274 0 TD +0 Tw +(,)Tj +-39.7456 -1.2889 TD +0.1578 Tw +(program prints back )Tj +/TT8 1 Tf +9.7717 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.1578 Tw +[( in suitable form. If )]TJ +/TT8 1 Tf +9.8637 0 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.1578 Tw +[( is any other litatom, or a string)]TJ +-25.0362 -1.2889 TD +0.0356 Tw +(containing no spaces, it performs )Tj +/TT8 1 Tf +15.0503 0 TD +0.0844 Tw +(\(DISPLAYHELP HELP\))Tj +/TT6 1 Tf +10.8862 0 TD +0.0355 Tw +[(. Anything else is printed as is.)]TJ +-25.9365 -1.2889 TD +0 Tw +(If )Tj +/TT8 1 Tf +0.9544 0 TD +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0344 Tw +[( is )]TJ +/TT8 1 Tf +1.2837 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5344 0 TD +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.0344 Tw +[( and )]TJ +/TT8 1 Tf +2.2618 0 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.0344 Tw +[( are treated as any other atoms the user types. [)]TJ +/TT8 1 Tf +21.1609 0 TD +0 Tw +(DISPLAYHELP)Tj +/TT6 1 Tf +-33.3963 -1.2889 TD +0.1478 Tw +(is a user-supplied function, initially a noop; systems with a suitable )Tj +/TT8 1 Tf +31.6426 0 TD +0 Tw +(HASH)Tj +/TT6 1 Tf +2.4004 0 TD +0.1478 Tw +[( package, for)]TJ +-34.043 -1.2889 TD +0.0444 Tw +(example, have defined it to display a piece of text from a hashfile associated with the key)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +(.] )Tj +/TT8 1 Tf +-2.4004 -2.0667 TD +(OPTIONS)Tj +/TT6 1 Tf +4.2007 0 TD +( is an atom or list of atoms chosen from among the following:)Tj +/TT8 1 Tf +-6.2007 -2.0667 TD +(NOFIXSPELL)Tj +/TT6 1 Tf +7.3333 0 TD +(Uses )Tj +/TT8 1 Tf +2.6334 0 TD +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.2789 Tw +[( for )]TJ +/TT8 1 Tf +2.3317 0 TD +0 Tw +(HELP)Tj +/TT6 1 Tf +2.4004 0 TD +0.2789 Tw +[( and Escape completion, but does not attempt any)]TJ +/TT8 1 Tf +-10.366 -1.2889 TD +0 Tw +(FIXSPELL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0833 Tw +[(ing. Mainly useful if )]TJ +/TT8 1 Tf +9.8688 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.0833 Tw +[( is incomplete and the caller wants to)]TJ +-17.6701 -1.2889 TD +0 Tw +(handle corrections in a more flexible way than a straight )Tj +/TT8 1 Tf +25.1065 0 TD +(FIXSPELL)Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +/TT8 1 Tf +-37.8406 -2.0667 TD +(MUSTAPPROVE)Tj +/TT6 1 Tf +7.9333 0 TD +(Does spelling correction, but requires confirmation.)Tj +/TT8 1 Tf +-7.3333 -2.0667 TD +(CRCOMPLETE)Tj +/TT6 1 Tf +7.3333 0 TD +0.0067 Tw +(Requires confirmation on spelling correction, but also does autocompletion on)Tj +0 -1.2889 TD +( \(i.e. if what user has typed so far uniquely identifies a member of )Tj +/TT8 1 Tf +31.4141 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +(,)Tj +-34.4146 -1.2889 TD +0.0178 Tw +[(completes it\). This allows you to have the benefits of autocompletion and still)]TJ +0 -1.2222 TD +0 Tw +(allow new words to be typed.)Tj +ET +endstream +endobj +94 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +96 0 obj +<< +/Length 6822 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-27)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 113.4 569.54 Tm +(DIRECTORY)Tj +/TT6 1 Tf +6.7333 0 TD +0.0067 Tw +(\(only if )Tj +/TT8 1 Tf +3.4455 0 TD +0.0167 Tw +(SPLST = NIL)Tj +/TT6 1 Tf +6.6344 0 TD +0.0067 Tw +[(\) Interprets Escape to mean directory name completion)]TJ +-10.0799 -1.2889 TD +0 Tw +([Interlisp-10 only].)Tj +/TT8 1 Tf +-3.7333 -2 TD +(USER)Tj +/TT6 1 Tf +3.7333 0 TD +(Like )Tj +/TT8 1 Tf +2.6015 0 TD +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +0.4144 Tw +[(, but does username completion. This is identical to)]TJ +/TT8 1 Tf +-8.0023 -1.2889 TD +0 Tw +(DIRECTORY)Tj +/TT6 1 Tf +5.4009 0 TD +( under Tenex [Interlisp-10 only].)Tj +/TT8 1 Tf +-9.1342 -2.0667 TD +(FILE)Tj +/TT6 1 Tf +3.7333 0 TD +0.2178 Tw +(\(only if )Tj +/TT8 1 Tf +3.8677 0 TD +0.5222 Tw +(SPLST = NIL)Tj +/TT6 1 Tf +7.6455 0 TD +0.2178 Tw +[(\) Interprets Escape to mean filename completion)]TJ +-11.5132 -1.2889 TD +0 Tw +([Sumex and Tops20 only].)Tj +/TT8 1 Tf +-3.1333 -2 TD +(FIX)Tj +/TT6 1 Tf +3.1333 0 TD +0.0022 Tw +(If response is not on, or does not correct to, )Tj +/TT8 1 Tf +19.2742 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.0022 Tw +(, interacts with user until an)Tj +-22.2747 -1.2889 TD +0.3322 Tw +[(acceptable response is entered. A blank line \(returning )]TJ +/TT8 1 Tf +27.5486 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.3322 Tw +(\) is always)Tj +-29.3489 -1.2889 TD +0.1833 Tw +[(accepted. Note that if you are willing to accept responses that are not on)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.4267 Tw +(, you probably should specify one of the options )Tj +/TT8 1 Tf +25.4142 0 TD +0 Tw +(NOXFISPELL)Tj +/TT6 1 Tf +6.001 0 TD +(,)Tj +/TT8 1 Tf +-34.4157 -1.2889 TD +(MUSTAPPROVE)Tj +/TT6 1 Tf +6.6011 0 TD +0.0011 Tc +0.0033 Tw +( or )Tj +/TT8 1 Tf +1.4498 0 TD +0 Tc +0 Tw +(CRCOMPLETE)Tj +/TT6 1 Tf +6.001 0 TD +0.0044 Tw +(, lest the users new response get )Tj +/TT8 1 Tf +14.7269 0 TD +0 Tw +(FIXSPELL)Tj +/TT6 1 Tf +4.8008 0 TD +(ed)Tj +-33.5796 -1.2889 TD +(away without their approval.)Tj +/TT8 1 Tf +-4.9333 -2 TD +(STRING)Tj +/TT6 1 Tf +4.9333 0 TD +(Line is read as a string, rather than list of atoms. Good for free text.)Tj +/TT8 1 Tf +-5.5333 -2.0667 TD +(NORAISE)Tj +/TT6 1 Tf +5.5333 0 TD +(Does not convert lower case letters to upper case.)Tj +/TT8 1 Tf +-5.5333 -2.0667 TD +(NOVALUE)Tj +/TT6 1 Tf +5.5333 0 TD +0.1056 Tw +(For use principally with the )Tj +/TT8 1 Tf +13.0444 0 TD +0 Tw +(ECHOTOFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.1056 Tw +[( arg \(below\). Does not compute a)]TJ +-19.0454 -1.2889 TD +0 Tw +(value, but returns )Tj +/TT8 1 Tf +8.1245 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +( if user typed anything, )Tj +/TT8 1 Tf +10.5737 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( if just a blank line.)Tj +/TT8 1 Tf +-26.032 -2.0667 TD +(REPEAT)Tj +/TT6 1 Tf +4.9333 0 TD +0.1567 Tw +[(For multi-line input. Repeatedly prompts until user types Control-Z \(as in)]TJ +0 -1.2889 TD +0.12 Tw +[(Tenex sndmsg\). Returns one long list; with )]TJ +/TT8 1 Tf +20.3658 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.12 Tw +[( option returns a single)]TJ +-23.9663 -1.2889 TD +0 Tw +(string of everything typed, with carriage returns \()Tj +/TT8 1 Tf +21.9683 0 TD +(EOL)Tj +/TT6 1 Tf +1.8003 0 TD +(\) included in the string.)Tj +/TT8 1 Tf +-27.5019 -2.0667 TD +(TEXT)Tj +/TT6 1 Tf +3.7333 0 TD +(Implies )Tj +/TT8 1 Tf +3.9301 0 TD +(REPEAT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.8744 0 TD +(NORAISE)Tj +/TT6 1 Tf +4.2007 0 TD +0.3744 Tw +(, and )Tj +/TT8 1 Tf +3.1918 0 TD +0 Tw +(NOVALUE)Tj +/TT6 1 Tf +4.2007 0 TD +0.3744 Tw +[(. Additionally, input may be)]TJ +-19.9983 -1.2889 TD +0.0033 Tw +(terminated with Control-V, in which case the global flag )Tj +/TT8 1 Tf +25.1428 0 TD +0 Tw +(CTRLVFLG)Tj +/TT6 1 Tf +4.8008 0 TD +0.0003 Tc +0.003 Tw +( will be set)Tj +-29.9436 -1.2889 TD +0 Tc +0.1 Tw +(true \(it is set to )Tj +/TT8 1 Tf +7.3193 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1 Tw +[( on any other termination\). This flag may be utilized in)]TJ +-9.1196 -1.2889 TD +0 Tw +(any way the caller desires.)Tj +/TT8 1 Tf +-5.5333 -2 TD +(COMMAND)Tj +/TT6 1 Tf +5.5333 0 TD +0.3689 Tw +(Only the first word on the line is treated as belonging to )Tj +/TT8 1 Tf +29.4057 0 TD +0 Tw +(SPLST)Tj +/TT6 1 Tf +3.0005 0 TD +0.3689 Tw +(, the)Tj +-32.4062 -1.2889 TD +0.1611 Tw +[(remainder of the line being arbitrary text; i.e., "command format". If other)]TJ +0 -1.2222 TD +0.0344 Tw +(options are supplied, )Tj +/TT8 1 Tf +9.6942 0 TD +0 Tw +(COMMAND)Tj +/TT6 1 Tf +4.2007 0 TD +0.0344 Tw +[( still applies to the first word typed. Basically,)]TJ +-13.8948 -1.2889 TD +0.2444 Tw +(it always returns \()Tj +/TT8 1 Tf +8.7426 0 TD +0.5856 Tw +(CMD . REST-OF-INPUT)Tj +/TT6 1 Tf +12.573 0 TD +0.2444 Tw +(\), where )Tj +/TT8 1 Tf +4.3409 0 TD +0 Tw +(REST-OF-INPUT)Tj +/TT6 1 Tf +7.8013 0 TD +0.2444 Tw +[( is)]TJ +-33.4578 -1.2889 TD +0.0144 Tw +[(whatever the other options dictate for the remainder. E.g. )]TJ +/TT8 1 Tf +26.0058 0 TD +0 Tw +(COMMAND)Tj +/TT6 1 Tf +4.2007 0 TD +( )Tj +/TT8 1 Tf +0.2644 0 TD +(NOVALUE)Tj +/TT6 1 Tf +-30.4709 -1.2889 TD +0.0711 Tw +(returns \()Tj +/TT8 1 Tf +3.8582 0 TD +0 Tw +(CMD)Tj +/TT6 1 Tf +1.8003 0 TD +0.0711 Tw +(\) or \()Tj +/TT8 1 Tf +2.2492 0 TD +0.17 Tw +(CMD . T)Tj +/TT6 1 Tf +4.5407 0 TD +0.0711 Tw +(\), depending on whether there was further input;)Tj +/TT8 1 Tf +-12.4484 -1.2889 TD +0.1789 Tw +(COMMAND STRING)Tj +/TT6 1 Tf +8.5803 0 TD +0.0744 Tw +[( returns )]TJ +/TT8 1 Tf +3.853 0 TD +0.1789 Tw +(\(CMD . "REST-OF-INPUT")Tj +/TT6 1 Tf +13.5599 0 TD +0.0744 Tw +[(\). When used with)]TJ +/TT8 1 Tf +-25.9932 -1.4311 TD +0 Tw +(REPEAT)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5544 0 TD +(COMMAND)Tj +/TT6 1 Tf +4.2007 0 TD +0.0544 Tw +[( is only in effect )]TJ +/F1 1 Tf +10 0 0 10 316.5147 160.86 Tm +0.06 Tw +(for the first line typed; furthermore,)Tj +-14.2515 -1.288 TD +0 Tw +(if the first line )Tj +/TT6 1 Tf +9 0 0 9 243.45 147.98 Tm +(consists solely of a command, the )Tj +/TT8 1 Tf +15.0117 0 TD +(REPEAT)Tj +/TT6 1 Tf +3.6006 0 TD +( is ignored, i.e., the)Tj +-26.329 -1.2889 TD +(entire input is taken to be just the command.)Tj +/TT8 1 Tf +-3.7333 -2 TD +(READ)Tj +/TT6 1 Tf +3.7333 0 TD +0.0367 Tw +(Parens, brackets, and quotes are treated a la )Tj +/TT8 1 Tf +19.8666 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +(, rather than being returned)Tj +-22.267 -1.2889 TD +0.2233 Tw +[(as individual atoms. Control characters may be input via the Control-Vx)]TJ +0 -1.2222 TD +0.0444 Tw +[(notation. Input is terminated roughly along the lines of )]TJ +/TT8 1 Tf +25.2672 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0444 Tw +[( conventions: a)]TJ +-27.6676 -1.2889 TD +0.2078 Tw +(balancing or over-balancing right paren/bracket will activate the input, or)Tj +0 -1.2222 TD +0.2478 Tw +( when no parenthesis remains unbalanced. )Tj +/TT8 1 Tf +23.1719 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.2478 Tw +[( overrides all other)]TJ +-25.5723 -1.2889 TD +0 Tw +(options \(except )Tj +/TT8 1 Tf +6.9941 0 TD +(NORAISE)Tj +/TT6 1 Tf +4.2007 0 TD +(\).)Tj +ET +endstream +endobj +97 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +99 0 obj +<< +/Length 6263 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-28)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 161.4 569.54 Tm +(LISPXREAD)Tj +/TT6 1 Tf +6.7333 0 TD +(Like )Tj +/TT8 1 Tf +2.2859 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0989 Tw +(, but implies that )Tj +/TT8 1 Tf +8.1221 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0989 Tw +[( should behave even more like )]TJ +/TT8 1 Tf +14.3331 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0989 Tw +(, i.e.,)Tj +-32.5424 -1.2889 TD +0 Tw +(do )Tj +/TT8 1 Tf +1.4067 0 TD +(NORAISE)Tj +/TT6 1 Tf +4.2007 0 TD +(, not be errorset-protected, etc.)Tj +/TT8 1 Tf +-11.7408 -2.0667 TD +(NOPROMPT)Tj +/TT6 1 Tf +6.1333 0 TD +0.0211 Tw +[(Interlisp-D only: The prompt argument is treated as usual, except that )]TJ +/TT8 1 Tf +31.6669 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +-31.6669 -1.2889 TD +0.1855 Tw +(assumes that the prompt for the first line has already been printed by the)Tj +0 -1.2222 TD +0.1356 Tw +(caller; the prompt for the first line is thus used only when redisplaying the)Tj +T* +0 Tw +(line.)Tj +/TT8 1 Tf +-10.6667 -2.8889 TD +(ECHOTOFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0222 Tw +[( if specified, users input is copied to this file, i.e., )]TJ +/TT8 1 Tf +22.1727 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0222 Tw +[( can be used as a simple text-to-)]TJ +-31.1741 -1.2889 TD +0.0756 Tw +(file routine if )Tj +/TT8 1 Tf +6.2169 0 TD +0 Tw +(NOVALUE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0756 Tw +[( is used. If )]TJ +/TT8 1 Tf +5.3792 0 TD +0 Tw +(ECHOTOFILE)Tj +/TT6 1 Tf +6.001 0 TD +0.0756 Tw +[( is a list, copies to all files in the list. )]TJ +/TT8 1 Tf +17.1025 0 TD +0 Tw +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0756 Tw +[( is not)]TJ +-42.5009 -1.2889 TD +0 Tw +(included on the file.)Tj +/TT8 1 Tf +0 -2.8889 TD +(TABS)Tj +/TT6 1 Tf +2.4004 0 TD +0.0422 Tw +[( is a special addition for tabular input. It is a list of tabstops \(numbers\). When user types a tab,)]TJ +/TT8 1 Tf +-2.4004 -1.2889 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1889 Tw +[( automatically spaces over to the next tabstop \(thus the first tabstop is actually the second)]TJ +-3.0005 -1.2889 TD +0.2522 Tw +[("column" of input\). Also treats specially the characters )]TJ +/TT8 1 Tf +26.7178 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.2522 Tw +[( and )]TJ +/TT8 1 Tf +2.6973 0 TD +0 Tw +(")Tj +/TT6 1 Tf +0.6001 0 TD +0.2522 Tw +(; they echo normally, and then)Tj +-30.6153 -1.2889 TD +0 Tw +(automatically tab over.)Tj +/TT8 1 Tf +0 -2.8889 TD +(UNREADBUF)Tj +/TT6 1 Tf +5.4009 0 TD +0.0411 Tw +[( allows the caller to "preload" the )]TJ +/TT8 1 Tf +15.1349 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0411 Tw +[( buffer with a line of input. )]TJ +/TT8 1 Tf +12.7337 0 TD +0 Tw +(UNREADBUF)Tj +/TT6 1 Tf +5.4009 0 TD +0.0411 Tw +[( is a list,)]TJ +-41.6709 -1.2889 TD +0.0944 Tw +(the elements of which are unread into the buffer \(i.e., "the outer parentheses are stripped off"\) to be)Tj +0 -1.2222 TD +0.0244 Tw +(edited further as desired; a simple carriage return \(or Control-Z for )Tj +/TT8 1 Tf +30.1444 0 TD +0 Tw +(REPEAT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0244 Tw +[( input\) will thus cause the)]TJ +-33.745 -1.2889 TD +0.0411 Tw +[(buffers contents to be returned unchanged. If doing )]TJ +/TT8 1 Tf +23.9462 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0411 Tw +[( input, the ")]TJ +/TT8 1 Tf +5.285 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0411 Tw +[( names" of the input list)]TJ +-34.632 -1.2889 TD +0.2811 Tw +(are used, i.e., quotes and %s will appear as needed; otherwise the buffer will look as though)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(UNREADBUF)Tj +/TT6 1 Tf +5.4009 0 TD +0.0178 Tw +[( had been )]TJ +/TT8 1 Tf +4.5895 0 TD +0 Tw +(PRIN1)Tj +/TT6 1 Tf +3.0005 0 TD +0.0178 Tw +(ed. )Tj +/TT8 1 Tf +2.1532 0 TD +0 Tw +(UNREADBUF)Tj +/TT6 1 Tf +5.4009 0 TD +0.0178 Tw +[( is treated somewhat like )]TJ +/TT8 1 Tf +11.3609 0 TD +0 Tw +(READBUF)Tj +/TT6 1 Tf +4.2007 0 TD +0.0178 Tw +(, so that if it contains)Tj +-36.1065 -1.2889 TD +0 Tw +(a pseudo-carriage return \(the value of )Tj +/TT8 1 Tf +16.9741 0 TD +(HISTSTR0)Tj +/TT6 1 Tf +4.8008 0 TD +(\), the input line terminates there.)Tj +-21.7749 -2.9556 TD +0.1567 Tw +(Input can also be unread from a file, using the )Tj +/TT8 1 Tf +22.1487 0 TD +0 Tw +(HISTSTR1)Tj +/TT6 1 Tf +4.8008 0 TD +0.1567 Tw +[( format: )]TJ +/TT8 1 Tf +4.0462 0 TD +0.3767 Tw +(UNREADBUF = \( \(FILE START . END\)\))Tj +/TT6 1 Tf +18.4917 0 TD +0.1133 Tw +(, where )Tj +/TT8 1 Tf +3.7457 0 TD +0 Tw +(START)Tj +/TT6 1 Tf +3.0005 0 TD +0.1133 Tw +[( and )]TJ +/TT8 1 Tf +2.4195 0 TD +0 Tw +(END)Tj +/TT6 1 Tf +1.8003 0 TD +0.1133 Tw +[( are file byte pointers. This makes)]TJ +/TT8 1 Tf +-29.4577 -1.2889 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( a miniature text file editor.)Tj +/TT8 1 Tf +-3.0005 -2.9556 TD +(RDTBL)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( [Interlisp-D only] is the read table to use for )]TJ +/TT8 1 Tf +20.2956 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0433 Tw +(ing the input when one of the )Tj +/TT8 1 Tf +13.6232 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0433 Tw +[( options)]TJ +-41.7201 -1.2889 TD +0.0422 Tw +[(is given. A lot of character interpretations are hardwired into )]TJ +/TT8 1 Tf +27.8976 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0422 Tw +(, so currently the only effect this)Tj +-30.898 -1.2889 TD +0.1467 Tw +(has is in the actual )Tj +/TT8 1 Tf +9.1284 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.1467 Tw +(, and in deciding whether a character typed at the end of the input is an)Tj +-11.5287 -1.2889 TD +0 Tw +(immediate read macro, for purposes of termination.)Tj +0 -2.8889 TD +0.03 Tw +(If the global variable )Tj +/TT8 1 Tf +9.4887 0 TD +0 Tw +(TYPEAHEADFLG)Tj +/TT6 1 Tf +7.2012 0 TD +0.03 Tw +[( is )]TJ +/TT8 1 Tf +1.2748 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.03 Tw +(, or option )Tj +/TT8 1 Tf +4.923 0 TD +0 Tw +(LISPXREAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.03 Tw +[( is given, )]TJ +/TT8 1 Tf +4.278 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.03 Tw +[( permits type-ahead;)]TJ +-36.1671 -1.2889 TD +0 Tw +(otherwise it clears the buffer before prompting the user.)Tj +/TT4 1 Tf +10 0 0 10 126 123.2 Tm +(Using TTYIN as a General Editor)Tj +/TT6 1 Tf +9 0 0 9 126 99.54 Tm +0.1189 Tw +(The following may be useful as a way of outsiders to call )Tj +/TT8 1 Tf +26.7641 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1189 Tw +[( as an editor. These functions are)]TJ +-29.7646 -1.2889 TD +0 Tw +(currently only in Interlisp-D.)Tj +ET +endstream +endobj +100 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +102 0 obj +<< +/Length 6513 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-29)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TTYINEDIT)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(EXPRS WINDOW PRINTFN PROMPT)Tj +/TT8 1 Tf +16.2026 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 312.6255 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.08 Tw +(This is the body of the edit macro )Tj +/TT8 1 Tf +15.6586 0 TD +0 Tw +(EE)Tj +/TT6 1 Tf +1.2002 0 TD +0.08 Tw +[(. Switches the tty to )]TJ +/TT14 1 Tf +9.6026 0 TD +0 Tw +(WINDOW)Tj +/TT6 1 Tf +3.6006 0 TD +0.08 Tw +(, clears it, prettyprints)Tj +/TT14 1 Tf +-30.0619 -1.2889 TD +0 Tw +(EXPRS)Tj +/TT6 1 Tf +3.0005 0 TD +0.18 Tw +(, a list of expressions, into it, and leaves you in )Tj +/TT8 1 Tf +22.7227 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.18 Tw +[( to edit it as Lisp input.)]TJ +-28.7237 -1.2889 TD +0 Tw +(Returns a new list of expressions.)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.0966 0 TD +(PRINTFN)Tj +/TT6 1 Tf +4.2007 0 TD +0.1767 Tw +[( is non-)]TJ +/TT8 1 Tf +3.6111 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1767 Tw +(, it is a function of two arguments, )Tj +/TT8 1 Tf +16.7854 0 TD +0 Tw +(EXPRS)Tj +/TT6 1 Tf +3.0005 0 TD +0.1767 Tw +[( and )]TJ +/TT8 1 Tf +2.5462 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.1767 Tw +(, which is)Tj +-35.4412 -1.2889 TD +0.2044 Tw +(called instead of )Tj +/TT8 1 Tf +8.0709 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.2044 Tw +[( to print the expressions to the window \(actually to a)]TJ +-14.6719 -1.2889 TD +0.1022 Tw +[(scratch file\). Note that )]TJ +/TT8 1 Tf +10.7694 0 TD +0 Tw +(EXPRS)Tj +/TT6 1 Tf +3.0005 0 TD +0.1022 Tw +[( is a list, so normally the outer parentheses should not be)]TJ +-13.7699 -1.2889 TD +0 Tw +(printed. )Tj +/TT14 1 Tf +4.0352 0 TD +(PRINTFN)Tj +/TT8 1 Tf +4.2007 0 TD +( = T)Tj +/TT6 1 Tf +2.4004 0 TD +( is shorthand for "unpretty"; use )Tj +/TT8 1 Tf +14.4033 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +( instead of )Tj +/TT8 1 Tf +4.8418 0 TD +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT14 1 Tf +-39.4829 -2.0667 TD +(PROMPT)Tj +/TT6 1 Tf +3.6006 0 TD +0.0556 Tw +[( determines what prompt is printed, if any. If )]TJ +/TT8 1 Tf +21.0307 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0556 Tw +[(, no prompt is printed. If )]TJ +/TT8 1 Tf +11.7888 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0556 Tw +(, it)Tj +-38.8204 -1.2889 TD +0 Tw +(defaults to the value of )Tj +/TT8 1 Tf +10.3931 0 TD +(TTYINEDITPROMPT)Tj +/TT6 1 Tf +9.0015 0 TD +(.)Tj +/TT12 1 Tf +-22.0612 -2.5422 TD +(TTYINAUTOCLOSEFLG)Tj +/F1 1 Tf +10 0 0 10 193.8 422.58 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 422.58 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT8 1 Tf +0.9199 0 TD +(TTYINAUTOCLOSEFLG)Tj +/TT6 1 Tf +10.2017 0 TD +( is true, )Tj +/TT8 1 Tf +3.5181 0 TD +(TTYINEDIT)Tj +/TT6 1 Tf +5.4009 0 TD +( closes the window on exit.)Tj +/TT12 1 Tf +-22.7072 -2.5422 TD +(TTYINEDITWINDOW)Tj +/F1 1 Tf +10 0 0 10 183 383.1 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 383.1 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.02 Tw +(If the )Tj +/TT8 1 Tf +2.5971 0 TD +0 Tw +(WINDOW)Tj +/TT6 1 Tf +3.6006 0 TD +0.02 Tw +[( arg to )]TJ +/TT8 1 Tf +3.1332 0 TD +0 Tw +(TTYINEDIT)Tj +/TT6 1 Tf +5.4009 0 TD +0.02 Tw +[( is )]TJ +/TT8 1 Tf +1.2548 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.02 Tw +(, it uses the value of )Tj +/TT8 1 Tf +9.121 0 TD +0 Tw +(TTYINEDITWINDOW)Tj +/TT6 1 Tf +9.0015 0 TD +0.02 Tw +(, creating)Tj +-35.9094 -1.2889 TD +0 Tw +(it if it does not yet exist.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(TTYINPRINTFN)Tj +/F1 1 Tf +10 0 0 10 166.8 332.62 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 332.62 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(The default value for )Tj +/TT8 1 Tf +9.5288 0 TD +(PRINTFN)Tj +/TT6 1 Tf +4.2007 0 TD +( in )Tj +/TT8 1 Tf +1.373 0 TD +(EE)Tj +/TT6 1 Tf +1.2002 0 TD +(s call to )Tj +/TT8 1 Tf +3.8496 0 TD +(TTYINEDIT)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 293.14 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 293.14 Tm +(SET.TTYINEDIT.WINDOW)Tj +/F2 1 Tf +10 0 0 10 216 293.14 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 218.87 293.14 Tm +(WINDOW)Tj +/TT8 1 Tf +10 0 0 10 251.2753 293.14 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 293.14 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0456 Tw +(Called under a )Tj +/TT8 1 Tf +6.9374 0 TD +0 Tw +(RESETLST)Tj +/TT6 1 Tf +4.8008 0 TD +0.0456 Tw +[(. Switches the tty to )]TJ +/TT14 1 Tf +9.3959 0 TD +0 Tw +(WINDOW)Tj +/TT6 1 Tf +3.6006 0 TD +0.0456 Tw +[( \(defaulted as in )]TJ +/TT8 1 Tf +7.545 0 TD +0 Tw +(TTYINEDIT)Tj +/TT6 1 Tf +5.4009 0 TD +0.0456 Tw +(\) and)Tj +-37.6806 -1.2889 TD +0.0144 Tw +[(clears it. The windows position is left so that )]TJ +/TT8 1 Tf +20.5727 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0144 Tw +[( will be happy with it if you now call)]TJ +/TT8 1 Tf +-23.5732 -1.2889 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0433 Tw +[( yourself. Specifically, this means positioning an integral number of lines from the)]TJ +-3.0005 -1.2889 TD +0 Tw +(bottom of the window, the way the top-level tty window normally is.)Tj +/TT8 1 Tf +10 0 0 10 102 219.11 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 219.11 Tm +(TTYIN.SCRATCHFILE)Tj +/TT8 1 Tf +10 0 0 10 199.8 219.11 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 219.11 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Returns, possibly creating, the scratchfile that )Tj +/TT8 1 Tf +20.3667 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( uses for prettyprinting its input. The)Tj +-23.3672 -1.2889 TD +0.0256 Tw +[(file pointer is set to zero. Since )]TJ +/TT8 1 Tf +14.1253 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0256 Tw +[( does use this file, beware of multiple simultaneous)]TJ +-17.1258 -1.2889 TD +0 Tw +(use of the file.)Tj +/TT4 1 Tf +10 0 0 10 78 149.62 Tm +(?= Handler)Tj +/TT6 1 Tf +9 0 0 9 78 125.96 Tm +0.0956 Tw +(In Interlisp, the )Tj +/TT8 1 Tf +7.3189 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0956 Tw +[( read macro displays the arguments to the function currently "in progress" in the)]TJ +-8.5191 -1.2889 TD +0.0889 Tw +[(typein. Since )]TJ +/TT8 1 Tf +6.4229 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0889 Tw +[( wants you to be able to continue editing the buffer after a )]TJ +/TT8 1 Tf +26.9822 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0889 Tw +(, it processes this)Tj +-37.6058 -1.2889 TD +0.1344 Tw +(macro specially on its own, printing the arguments below your typein and then putting the cursor)Tj +0 -1.2222 TD +0.1133 Tw +(back where it was when )Tj +/TT8 1 Tf +11.491 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.1133 Tw +[( was typed. For users who want special treatment of )]TJ +/TT8 1 Tf +24.8087 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.1133 Tw +(, the following)Tj +-38.7001 -1.2889 TD +0 Tw +(hook exists:)Tj +ET +endstream +endobj +103 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 104 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +106 0 obj +<< +/Length 5747 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-30)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 568.26 Tm +(TTYIN?=FN)Tj +/F1 1 Tf +10 0 0 10 198.6 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 568.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1344 Tw +(The value of this variable, if non-)Tj +/TT8 1 Tf +15.4116 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1344 Tw +(, is a user function of one argument that is called)Tj +-17.2119 -1.2889 TD +0 Tw +(when )Tj +/TT8 1 Tf +2.8226 0 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0956 Tw +[( is typed. The argument is the function that )]TJ +/TT8 1 Tf +20.5351 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0956 Tw +[( thinks it is inside of. The user)]TJ +-25.7581 -1.2889 TD +0 Tw +(function should return one of the following:)Tj +/TT8 1 Tf +2.2 -2 TD +(NIL)Tj +/TT6 1 Tf +3.1333 0 TD +(Normal ?= processing is performed.)Tj +/TT8 1 Tf +-1.9333 -2.0667 TD +(T)Tj +/TT6 1 Tf +1.9333 0 TD +0.0078 Tw +[(Nothing is done. Presumably the user function has done something privately,)]TJ +0 -1.2889 TD +0 Tw +(perhaps diddled some other window, or called )Tj +/TT8 1 Tf +21.0005 0 TD +(TTYIN.PRINTARGS)Tj +/TT6 1 Tf +9.0015 0 TD +( \(below\).)Tj +-39.332 -2.0667 TD +(a list \()Tj +/TT8 1 Tf +2.665 0 TD +(ARGS . STUFF)Tj +/TT6 1 Tf +7.2012 0 TD +[(\))-1797.4(Treats )]TJ +/TT8 1 Tf +5.385 0 TD +(STUFF)Tj +/TT6 1 Tf +3.0005 0 TD +0.2678 Tw +[( as the argument list of the function in question, and)]TJ +-8.9218 -1.2889 TD +0 Tw +(performs the normal )Tj +/TT8 1 Tf +9.3897 0 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +( processing using it.)Tj +-17.821 -2.0667 TD +[(anything else)-1332.7(The value is printed in lieu of what )]TJ +/TT8 1 Tf +23.0011 0 TD +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +( normally prints.)Tj +-22.3035 -2.0667 TD +0.0989 Tw +(At the time that )Tj +/TT8 1 Tf +7.6001 0 TD +0 Tw +(?=)Tj +/TT6 1 Tf +1.2002 0 TD +0.0989 Tw +[( is typed, nothing has been "read" yet, so you dont have the normal)]TJ +-8.8003 -1.2889 TD +0.07 Tw +[(context you might expect inside a conventional readmacro. If the user function wants to)]TJ +0 -1.2222 TD +0.0744 Tw +(examine the typed-in arguments being passed to the fn, however, it can call the function)Tj +/TT8 1 Tf +T* +0 Tw +(TTYIN.READ?=ARGS)Tj +/TT6 1 Tf +9.6016 0 TD +(:)Tj +/TT8 1 Tf +10 0 0 10 150 356.38 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 356.38 Tm +(TTYIN.READ?=ARGS)Tj +/TT8 1 Tf +10 0 0 10 242.4 356.38 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 356.38 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1456 Tw +(When called inside )Tj +/TT8 1 Tf +9.1232 0 TD +0 Tw +(TTYIN?=FN)Tj +/TT6 1 Tf +5.4009 0 TD +0.1456 Tw +[( user function, returns everything between the function)]TJ +-14.5241 -1.2889 TD +0.0867 Tw +[(and the typing of ?= as a list \(like an arglist\). Returns )]TJ +/TT8 1 Tf +24.9294 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0867 Tw +[( if ?= was typed immediately)]TJ +-26.7297 -1.2889 TD +0 Tw +(after the function name. )Tj +/TT8 1 Tf +-2.6667 -2.4756 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(TTYIN.PRINTARGS)Tj +/TT8 1 Tf +8.9999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FN ARGS ACTUALS ARGTYPE)Tj +/TT8 1 Tf +13.8022 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 371.422 293.95 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 293.95 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.03 Tw +(Does the function/argument printing for )Tj +/TT8 1 Tf +18.5455 0 TD +0 Tw +(?=.)Tj +/TT6 1 Tf +1.8003 0 TD +0.03 Tc +( )Tj +/TT14 1 Tf +0.56 0 TD +0 Tc +(ARGS)Tj +/TT6 1 Tf +2.4004 0 TD +0.03 Tw +[( is an argument list, )]TJ +/TT14 1 Tf +9.1031 0 TD +0 Tw +(ACTUALS)Tj +/TT6 1 Tf +4.2007 0 TD +0.03 Tw +[( is a list)]TJ +-36.61 -1.2889 TD +0.0644 Tw +(of actual parameters \(from the typein\) to match up with args. )Tj +/TT14 1 Tf +28.3129 0 TD +0 Tw +(ARGTYPE)Tj +/TT6 1 Tf +4.2007 0 TD +0.0644 Tw +[( is a value of the)]TJ +-32.5136 -1.2889 TD +0 Tw +(function )Tj +/TT14 1 Tf +3.957 0 TD +(ARGTYPE)Tj +/TT6 1 Tf +4.2007 0 TD +(; it defaults to \()Tj +/TT14 1 Tf +6.6392 0 TD +(ARGTYPE FN)Tj +/TT6 1 Tf +6.001 0 TD +(\).)Tj +/TT4 1 Tf +10 0 0 10 126 224.21 Tm +(Read Macros)Tj +/TT6 1 Tf +9 0 0 9 126 200.55 Tm +0.0311 Tw +(When doing )Tj +/TT8 1 Tf +5.7912 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0311 Tw +[( input in Interlisp-10, no Lisp-style read macros are available \(but the and control-)]TJ +-8.1916 -1.2889 TD +0.2544 Tw +[(Y macros are built in\). Principally because of the usefulness of the editor read macros \(set by)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(SETTERMCHARS)Tj +/TT6 1 Tf +7.2012 0 TD +0.3778 Tw +(\), and the desire for a way of changing the meanings of the display editing)Tj +-7.2012 -1.2889 TD +0 Tw +(commands, the following exists as a hack:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(TTYINREADMACROS)Tj +/TT6 1 Tf +9 0 TD +[( )-28767.8([Variable])]TJ +-6.3333 -1.8444 TD +0.17 Tw +(Value is a set of shorthand inputs useable during )Tj +/TT8 1 Tf +23.4402 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.17 Tw +[( input. It is an alist of entries)]TJ +-25.8405 -1.2889 TD +0 Tw +(\()Tj +/TT8 1 Tf +0.333 0 TD +0.5078 Tw +(CHARCODE . SYNONYM)Tj +/TT6 1 Tf +11.8173 0 TD +0.2122 Tw +[(\). If the user types the indicated character \(the meta bit is)]TJ +-12.1503 -1.2889 TD +0.2756 Tw +(denoted by the 200Q bit in the char code\), )Tj +/TT8 1 Tf +21.1607 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.2756 Tw +[( behaves as though the synonym)]TJ +-24.1612 -1.2889 TD +0 Tw +(character had been typed.)Tj +0 -2 TD +0.0011 Tw +(Special cases: 0 - the character is ignored; 200Q - pure meta bit; means to read another char)Tj +0 -1.2222 TD +0.2167 Tw +(and turn on its meta bit; 400Q - macro quote: read another char and use its original)Tj +T* +0.1522 Tw +[(meaning. For example, if you have macros \()]TJ +/TT8 1 Tf +20.8164 0 TD +0.3656 Tw +(\(33Q . 200Q\) \(30Q . 33Q\))Tj +/TT6 1 Tf +16.2301 0 TD +0.1522 Tw +(\), then)Tj +-37.0465 -1.2889 TD +0.1056 Tw +(Escape \(33Q\) will behave as an edit prefix, and control-X \(30Q\) will behave like Escape.)Tj +ET +endstream +endobj +107 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +109 0 obj +<< +/Length 5497 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-31)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.2233 Tw +(Note: currently, synonyms for meta commands are not well-supported, working only)Tj +0 -1.2222 TD +0 Tw +(when the command is typed with no argument. )Tj +0 -2 TD +0.0033 Tw +(Slightly more powerful macros also can be supplied; they are recognized when a character)Tj +0 -1.2222 TD +0.2378 Tw +[(is typed on an empty line, i.e., as the first thing after the prompt. In this case, the)]TJ +/TT8 1 Tf +T* +0 Tw +(TTYINREADMACROS)Tj +/TT6 1 Tf +9.0015 0 TD +0.1433 Tw +[( entry is of the form \()]TJ +/TT8 1 Tf +10.1691 0 TD +0.3444 Tw +(CHARCODE T . RESPONSE)Tj +/TT6 1 Tf +13.6354 0 TD +0.1433 Tw +(\) or \()Tj +/TT8 1 Tf +2.3936 0 TD +0 Tw +(CHARCODE)Tj +-35.1995 -1.2889 TD +0.08 Tw +(CONDITION . RESPONSE)Tj +/TT6 1 Tf +12.162 0 TD +0.0333 Tw +(\), where )Tj +/TT8 1 Tf +3.9187 0 TD +0 Tw +(CONDITION)Tj +/TT6 1 Tf +5.4009 0 TD +0.0333 Tw +[( is a list that evaluates true. If )]TJ +/TT8 1 Tf +13.7214 0 TD +0 Tw +(RESPONSE)Tj +/TT6 1 Tf +-35.2029 -1.2889 TD +0.1367 Tw +(is a list, it is )Tj +/TT8 1 Tf +6.0622 0 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.1367 Tw +[(ed; otherwise it is left unevaluated. The result of this evaluation \(or)]TJ +/TT8 1 Tf +-8.4626 -1.2889 TD +0 Tw +(RESPONSE)Tj +/TT6 1 Tf +4.8008 0 TD +( itself\) is treated as follows:)Tj +/TT8 1 Tf +-2.6008 -2.0667 TD +(NIL)Tj +/TT6 1 Tf +3.1333 0 TD +0.3467 Tw +(The macro is ignored and the character reads normally, i.e., as though)Tj +/TT8 1 Tf +0 -1.2889 TD +0 Tw +(TTYINREADMACROS)Tj +/TT6 1 Tf +9.0015 0 TD +( had never existed.)Tj +-15.0526 -2.0667 TD +0.0778 Tw +[(An )77.8(integer)-1332.8(A character code, treated as above. Special case: -1 is treated like 0, but says)]TJ +6.0511 -1.2222 TD +0.1667 Tw +[(that the display may have been altered in the evaluation of the macro, so)]TJ +/TT8 1 Tf +T* +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( should reset itself appropriately.)Tj +-10.5094 -2.0667 TD +[(Anything else)-1332.6(This )]TJ +/TT8 1 Tf +10.043 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.3744 Tw +[( input is terminated \(with a crlf\) and returns the value of)]TJ +-5.5346 -1.2889 TD +0.1478 Tw +[("response" \(turned into a list if necessary\). This is the principal use of this)]TJ +0 -1.2222 TD +0.0056 Tw +[(facility. The macro character thus stands for the \(possibly computed\) reponse,)]TJ +T* +0 Tw +(terminated if necessary with a crlf. The original character is not echoed.)Tj +-5.3333 -2 TD +0.0278 Tw +(Interrupt characters, of course, cannot be read macros, as )Tj +/TT8 1 Tf +25.665 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0278 Tw +[( never sees them, but any)]TJ +-28.6655 -1.2889 TD +0.1389 Tw +[(other characters, even non-control chars, are allowed. The ability to return )]TJ +/TT8 1 Tf +34.9167 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1389 Tw +[( allows)]TJ +-36.717 -1.2889 TD +0.1678 Tw +(you to have conditional macros that only apply in specified situations \(e.g., the macro)Tj +0 -1.2222 TD +0.0233 Tw +(might check the prompt \()Tj +/TT8 1 Tf +11.3087 0 TD +0 Tw +(LISPXID)Tj +/TT6 1 Tf +4.2007 0 TD +0.0233 Tw +[(\) or other contextual variables\). To use this specifically)]TJ +-15.5094 -1.2889 TD +0.3044 Tw +(to do immediate editor read macros, do the following for each edit command and)Tj +0 -1.2222 TD +0 Tw +(character you want to invoke it with:)Tj +/TT8 1 Tf +5.3333 -1.9333 TD +(\(ADDTOVAR TTYINREADMACROS \(CHARCODE CHARMACRO?)Tj +0 -1.2222 TD +(EDITCOM\)\)\))Tj +/TT6 1 Tf +-5.3333 -2.0667 TD +0.0867 Tw +(For example, )Tj +/TT8 1 Tf +6.1694 0 TD +0.2078 Tw +(\(ADDTOVAR TTYINREADMACROS \(12Q CHARMACRO? !NX\)\))Tj +/TT6 1 Tf +29.0357 0 TD +0.0867 Tw +[( will make)]TJ +-35.2051 -1.2889 TD +0.0522 Tw +(linefeed do the )Tj +/TT8 1 Tf +6.9955 0 TD +0 Tw +(!NX)Tj +/TT6 1 Tf +1.8003 0 TD +0.0522 Tw +[( command. Note that this will only activate linefeed at the beginning)]TJ +-8.7958 -1.2889 TD +0.02 Tw +[(of a line, not anywhere in the line. There will probably be a user function to do this in the)]TJ +0 -1.2222 TD +0 Tw +(next release.)Tj +0 -2 TD +0.0678 Tw +(Note that putting \()Tj +/TT8 1 Tf +8.4885 0 TD +0.1611 Tw +(12Q T . !NX)Tj +/TT6 1 Tf +7.0844 0 TD +0.0678 Tw +(\) on )Tj +/TT8 1 Tf +2.0965 0 TD +0 Tw +(TTYINREADMACROS)Tj +/TT6 1 Tf +9.0015 0 TD +0.0678 Tw +[( would also have the effect of)]TJ +-26.6709 -1.2889 TD +0 Tw +(returning )Tj +/TT8 1 Tf +4.5361 0 TD +(!NX)Tj +/TT6 1 Tf +1.8003 0 TD +0.0767 Tw +[( from the )]TJ +/TT8 1 Tf +4.5239 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +0.0767 Tw +[( call so that the editor would do an )]TJ +/TT8 1 Tf +16.3287 0 TD +0 Tw +(!NX)Tj +/TT6 1 Tf +1.8003 0 TD +0.0767 Tw +[(. However, )]TJ +/TT8 1 Tf +5.6099 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +-36.9996 -1.2889 TD +0.3656 Tw +(would also return )Tj +/TT8 1 Tf +9.2724 0 TD +0 Tw +(!NX)Tj +/TT6 1 Tf +1.8003 0 TD +0.3656 Tw +[( outside the editor \(probably resulting in a u.b.a. error, or)]TJ +-11.0727 -1.2889 TD +0 Tw +(convincing )Tj +/TT8 1 Tf +5.1373 0 TD +(DWIM)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0043 Tw +( to enter the editor\), and also the clearing of the output buffer \(performed)Tj +-7.5376 -1.2889 TD +0 Tc +0 Tw +(by )Tj +/TT8 1 Tf +1.3594 0 TD +(CHARMACRO?)Tj +/TT6 1 Tf +6.001 0 TD +(\) would not happen.)Tj +/TT4 1 Tf +10 0 0 10 78 110.4 Tm +(Assorted Flags)Tj +/TT6 1 Tf +9 0 0 9 78 86.74 Tm +0.0544 Tw +(These flags control aspects of )Tj +/TT8 1 Tf +13.4094 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0544 Tw +[(s behavior. Some have already been mentioned. In Interlisp-D,)]TJ +-16.4099 -1.2889 TD +0 Tw +(the flags are all initially set to )Tj +/TT8 1 Tf +13.2178 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +110 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +113 0 obj +<< +/Length 5267 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-32)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 568.26 Tm +(TYPEAHEADFLG)Tj +/F1 1 Tf +10 0 0 10 214.8 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 568.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2811 Tw +(If true, )Tj +/TT8 1 Tf +3.7854 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.2811 Tw +[( always permits typeahead; otherwise it clears the buffer for any but)]TJ +/TT8 1 Tf +-6.7859 -1.2889 TD +0 Tw +(LISPXREAD)Tj +/TT6 1 Tf +5.4009 0 TD +( input.)Tj +/TT8 1 Tf +10 0 0 10 150 517.18 Tm +(?)Tj +/TT12 1 Tf +9 0 0 9 156.001 517.18 Tm +(ACTIVATEFLG)Tj +/F1 1 Tf +10 0 0 10 215.4 517.18 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 517.18 Tm +([Variable])Tj +-35.6011 -1.8833 TD +0.2767 Tw +(If true, enables the feature whereby )Tj +/TT8 1 Tf +17.5721 0 TD +0 Tw +(?)Tj +/TT6 1 Tf +0.6001 0 TD +0.2767 Tw +[( lists alternative completions from the current)]TJ +-18.1722 -1.2889 TD +0 Tw +(spelling list.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(SHOWPARENFLG)Tj +/F1 1 Tf +10 0 0 10 214.8 466.35 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 466.35 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1422 Tw +(If true, then whenever you are typing Lisp input and type a right parenthesis/bracket,)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1256 Tw +[( will briefly move the cursor to the matching parenthesis/bracket, assuming it is)]TJ +-3.0005 -1.2889 TD +0.1078 Tw +[(still on the screen. The cursor stays there for about 1 second, or until you type another)]TJ +0 -1.2222 TD +0.2 Tw +[(character \(i.e., if you type fast youll never notice it\). This feature was inspired by a)]TJ +T* +0 Tw +(similar )Tj +/TT8 1 Tf +3.3247 0 TD +(EMACS)Tj +/TT6 1 Tf +3.0005 0 TD +( feature, and turned out to be pretty easy to implement.)Tj +/TT12 1 Tf +-8.9919 -2.5422 TD +(TTYINBSFLG)Tj +/F1 1 Tf +10 0 0 10 204 382.27 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 382.27 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(Causes )Tj +/TT8 1 Tf +3.5109 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1222 Tw +[( to always physically backspace, even if youre running on a non-display)]TJ +-6.5114 -1.2889 TD +0.31 Tw +(\(not a DM or Heath\), rather than print \\deletedtext\\ \(this assumes your hardcopy)Tj +0 -1.2222 TD +0.0378 Tw +[(terminal or glass tty is capable of backspacing\). If )]TJ +/TT8 1 Tf +22.6351 0 TD +0 Tw +(TTYINBSFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0378 Tw +[( is )]TJ +/TT8 1 Tf +1.2904 0 TD +0 Tw +(LF)Tj +/TT6 1 Tf +1.2002 0 TD +0.0378 Tw +(, then in addition to)Tj +-31.1267 -1.2889 TD +0 Tw +(backspacing, )Tj +/TT8 1 Tf +6.1445 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1933 Tw +[( xs out the deleted characters as it backs up, and when you stop)]TJ +-9.145 -1.2889 TD +0.0067 Tw +[(deleting, it outputs a linefeed to drop to a new, clean line before resuming. To save paper,)]TJ +0 -1.2222 TD +0.0211 Tw +(this linefeed operation is not done when only a single character is deleted, on the grounds)Tj +T* +0 Tw +(that you can probably figure out what you typed anyway.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(TTYINRESPONSES)Tj +/F1 1 Tf +10 0 0 10 225.6123 275.59 Tm +-0.0012 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 275.59 Tm +0 Tc +([Variable])Tj +-35.6011 -1.8444 TD +0.03 Tw +(An association list of special responses that will be handled by routines designated by the)Tj +0 -1.2222 TD +0 Tw +(programmer. See "Special Responses", below.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(TTYINERRORSETFLG)Tj +/F1 1 Tf +10 0 0 10 236.4 225.71 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 225.71 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0756 Tw +[([Interlisp-D only] If true, non-)]TJ +/TT8 1 Tf +13.868 0 TD +0 Tw +(LISPXREAD)Tj +/TT6 1 Tf +5.4009 0 TD +0.0756 Tw +[( inputs are errorset-protected \(Control-E traps)]TJ +-19.2689 -1.2889 TD +0 Tw +(back to the prompt\), otherwise errors propagate upwards. Initially )Tj +/TT8 1 Tf +29.9248 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-34.3918 -2.5422 TD +(TTYINCOMMENTCHAR)Tj +/F1 1 Tf +10 0 0 10 236.4 174.63 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 174.63 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0289 Tw +(This variable affects the treatment of lines beginning with the comment character \(usually)Tj +0 -1.2222 TD +0 Tw +(")Tj +/TT8 1 Tf +0.3711 0 TD +(;)Tj +/TT6 1 Tf +0.6001 0 TD +0.0178 Tw +[("\). If )]TJ +/TT8 1 Tf +2.4274 0 TD +0 Tw +(TTYINCOMMENTCHAR)Tj +/TT6 1 Tf +9.6016 0 TD +0.0178 Tw +[( is a character code, and the first character on a line of typein)]TJ +-13.0001 -1.2889 TD +0.1756 Tw +(is equal to )Tj +/TT8 1 Tf +5.2967 0 TD +0 Tw +(TTYINCOMMENTCHAR)Tj +/TT6 1 Tf +9.6016 0 TD +0.1756 Tw +(, then the line is erased from the screen and no input)Tj +-14.8982 -1.2889 TD +0.57 Tw +[(function will see it. If )]TJ +/TT8 1 Tf +13.253 0 TD +0 Tw +(TTYINCOMMENTCHAR)Tj +/TT6 1 Tf +9.6016 0 TD +0.57 Tw +[( is )]TJ +/TT8 1 Tf +2.3548 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.57 Tw +(, this feature is disabled.)Tj +/TT8 1 Tf +-27.0097 -1.2889 TD +0 Tw +(TTYINCOMMENTCHAR)Tj +/TT6 1 Tf +9.6016 0 TD +( is initially )Tj +/TT8 1 Tf +4.8843 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-18.9528 -2.5422 TD +(TTYINCOMPLETEFLG)Tj +/F1 1 Tf +10 0 0 10 236.4 89.35 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 89.35 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If true, enables Escape completion from )Tj +/TT8 1 Tf +17.7354 0 TD +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +( during )Tj +/TT8 1 Tf +3.5381 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +( inputs. Details below.)Tj +ET +endstream +endobj +114 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +116 0 obj +<< +/Length 6493 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-33)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0511 Tw +[( \(see Chapter 20\) contains words you mentioned recently: functions you have defined or)]TJ +-5.4009 -1.2889 TD +0.1722 Tw +[(edited, variables you have set or evaluated at the executive level, etc. This happens to be a very)]TJ +0 -1.2222 TD +0.0611 Tw +(convenient list for context-free escape completion; if you have recently edited a function, chances are)Tj +T* +0.0178 Tw +(good you may want to edit it again \(typing ")Tj +/TT8 1 Tf +19.7972 0 TD +0.0433 Tw +(EF xx$)Tj +/TT6 1 Tf +3.6439 0 TD +0.0178 Tw +[("\) or type a call to it. If there is no completion for)]TJ +-23.4411 -1.2889 TD +0.0844 Tw +(the current word from )Tj +/TT8 1 Tf +10.4916 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.0844 Tw +(, the escape echoes as ")Tj +/TT8 1 Tf +10.4847 0 TD +0 Tw +($)Tj +/TT6 1 Tf +0.6001 0 TD +0.0844 Tw +(", i.e. nothing special happens; if there is)Tj +-26.9773 -1.2889 TD +0.2511 Tw +[(more than one possible completion, you get beeped. If typed when not inside a word, Escape)]TJ +0 -1.2222 TD +0.1944 Tw +(completes to the value of )Tj +/TT8 1 Tf +12.2711 0 TD +0 Tw +(LASTWORD)Tj +/TT6 1 Tf +4.8008 0 TD +0.1944 Tw +(, i.e., the last thing you typed that the p.a. "noticed" \(setting)Tj +/TT8 1 Tf +-17.0718 -1.2889 TD +0 Tw +(TTYINCOMPLETEFLG)Tj +/TT6 1 Tf +9.6016 0 TD +0.0122 Tw +[( to 0 disables this latter feature\), except that Escape at the beginning of the line is)]TJ +-9.6016 -1.2889 TD +0 Tw +(left alone \(it is a p.a. command\).)Tj +0 -2.8889 TD +0.0344 Tw +(If you really wanted to enter an escape, you can, of course, just quote it with a control-V, like you can)Tj +0 -1.2222 TD +0 Tw +(other control chars.)Tj +0 -2.8889 TD +0.1133 Tw +(You may explicitly add words to )Tj +/TT8 1 Tf +15.4246 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1133 Tw +[( yourself that wouldnt get there otherwise. To make)]TJ +-20.8255 -1.2889 TD +0.2044 Tw +(this convenient online the edit command [)Tj +/TT15 1 Tf +19.8722 0 TD +0 Tw +<0040>Tj +/TT6 1 Tf +0.9868 0 TD +0.2044 Tw +(] means "add the current atom to )Tj +/TT8 1 Tf +16.2128 0 TD +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.2044 Tw +(" \(you)Tj +-42.4727 -1.2889 TD +0.1744 Tw +[(might think of the command as "pointing out this atom"\). For example, you might be entering a)]TJ +0 -1.2222 TD +0.0611 Tw +[(function definition and want to "point to" one or more of its arguments or prog variables. Giving an)]TJ +T* +0 Tw +(argument of zero to this command will instead remove the indicated atom from )Tj +/TT8 1 Tf +35.5166 0 TD +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-40.9175 -2.9556 TD +0.1178 Tw +(Note that this feature loses some of its value if the spelling list is too long, for then the completion)Tj +0 -1.2222 TD +0.0911 Tw +(takes too long computationally and, more important, there are too many alternative completions for)Tj +T* +0.0333 Tw +[(you to get by with typing a few characters followed by escape. Lisps maintenance of the spelling list)]TJ +/TT8 1 Tf +T* +0 Tw +(USERWORDS)Tj +/TT6 1 Tf +5.4009 0 TD +0.1133 Tw +[( keeps the "temporary" section \(which is where everything goes initially unless you say)]TJ +-5.4009 -1.2889 TD +0.1167 Tw +(otherwise\) limited to )Tj +/TT8 1 Tf +9.8329 0 TD +0 Tw +(#USERWORDS)Tj +/TT6 1 Tf +6.001 0 TD +0.1167 Tw +[( atoms, initially 100. Words fall off the end if they havent been)]TJ +-15.8339 -1.2889 TD +0 Tw +(used \(they are "used" if )Tj +/TT8 1 Tf +10.5 0 TD +(FIXSPELL)Tj +/TT6 1 Tf +4.8008 0 TD +( corrects to one, or you use to complete one\). )Tj +/TT4 1 Tf +10 0 0 10 78 257.6 Tm +(Special Responses)Tj +/TT6 1 Tf +9 0 0 9 78 233.94 Tm +0.0656 Tw +(There is a facility for handling "special responses" during any non-)Tj +/TT8 1 Tf +30.0643 0 TD +0 Tw +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +( )Tj +/TT8 1 Tf +0.3156 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0656 Tw +[( input. This action is)]TJ +-35.7807 -1.2889 TD +0.0833 Tw +(independent of the particular call to )Tj +/TT8 1 Tf +16.6333 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0833 Tw +(, and exists to allow you to effectively "advise" )Tj +/TT8 1 Tf +21.502 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0833 Tw +[( to)]TJ +-44.1362 -1.2889 TD +0.0856 Tw +[(intercept certain commands. After the command is processed, control returns to the original )]TJ +/TT8 1 Tf +42.3194 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +-42.3194 -1.2889 TD +(call. The facility is implemented via the list )Tj +/TT8 1 Tf +19.4268 0 TD +(TTYINRESPONSES)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT12 1 Tf +-25.1615 -2.5422 TD +(TTYINRESPONSES)Tj +/F1 1 Tf +10 0 0 10 177.6123 176.26 Tm +-0.0012 Tc +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 176.26 Tm +0 Tc +([Variable])Tj +/TT8 1 Tf +-35.6011 -1.8444 TD +(TTYINRESPONSES)Tj +/TT6 1 Tf +8.4014 0 TD +( is a list of elements, each of the form:)Tj +/TT8 1 Tf +-0.4014 -2 TD +(\(COMMANDS RESPONSE-FORM OPTION\))Tj +-8 -2.0667 TD +(COMMANDS)Tj +/TT6 1 Tf +4.8008 0 TD +0.1756 Tw +[( is a single atom or list of commands to be recognized; )]TJ +/TT8 1 Tf +26.2605 0 TD +0 Tw +(RESPONSE-FORM)Tj +/TT6 1 Tf +7.8013 0 TD +0.1756 Tw +[( is)]TJ +/TT8 1 Tf +-38.8625 -1.2889 TD +0 Tw +(EVAL)Tj +/TT6 1 Tf +2.4004 0 TD +0.0044 Tw +(ed \(if a list\), or )Tj +/TT8 1 Tf +6.6751 0 TD +0 Tw +(APPLY)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0043 Tw +(ed \(if an atom\) to the command and the rest of the line. Within)Tj +-12.0759 -1.2889 TD +0 Tc +0.0133 Tw +(this form one can reference the free variables )Tj +/TT8 1 Tf +20.1555 0 TD +0 Tw +(COMMAND)Tj +/TT6 1 Tf +4.2007 0 TD +0.0133 Tw +[( \(the command the user typed\) and)]TJ +/TT8 1 Tf +-24.3562 -1.2889 TD +0 Tw +(LINE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0322 Tw +[( \(the rest of the line\). If )]TJ +/TT8 1 Tf +10.7641 0 TD +0 Tw +(OPTION)Tj +/TT6 1 Tf +3.6006 0 TD +0.0322 Tw +[( is the atom )]TJ +/TT8 1 Tf +5.4858 0 TD +0 Tw +(LINE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0322 Tw +(, this means to pass the rest of line)Tj +-24.6513 -1.2889 TD +0.0589 Tw +(as a list; if it is )Tj +/TT8 1 Tf +6.8152 0 TD +0 Tw +(STRING)Tj +/TT6 1 Tf +3.6006 0 TD +0.0589 Tw +(, this means to pass it as a string; otherwise, the command is only)Tj +-10.4158 -1.2889 TD +0.0511 Tw +[(valid if there is nothing else on the line. If )]TJ +/TT8 1 Tf +19.3864 0 TD +0 Tw +(RESPONSE-FORM)Tj +/TT6 1 Tf +7.8013 0 TD +0.0511 Tw +[( returns the atom )]TJ +/TT8 1 Tf +8.0506 0 TD +0 Tw +(IGNORE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0511 Tw +(, it)Tj +-38.8389 -1.2889 TD +0.1622 Tw +(is not treated as a special response \(i.e. the input is returned normally as the result of)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +(\).)Tj +ET +endstream +endobj +117 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT15 23 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +119 0 obj +<< +/Length 5031 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-34)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0344 Tw +(Suggested use: global commands or options can be added to the toplevel value of )Tj +/TT8 1 Tf +36.6873 0 TD +0 Tw +(TTYINRESPONSES)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +-45.0887 -1.2889 TD +0.72 Tw +(For more specialized commands, rebind )Tj +/TT8 1 Tf +21.5937 0 TD +0 Tw +(TTYINRESPONSES)Tj +/TT6 1 Tf +8.4014 0 TD +0.72 Tw +[( to )]TJ +/TT8 1 Tf +2.8121 0 TD +1.7267 Tw +(\(APPEND NEWENTRIES)Tj +-32.8071 -1.2889 TD +0 Tw +(TTYINRESPONSES\))Tj +/TT6 1 Tf +9.0015 0 TD +( inside any module where you want to do this sort of special processing.)Tj +-9.0015 -2.9556 TD +(Special responses are not checked for during )Tj +/TT8 1 Tf +19.9692 0 TD +(READ)Tj +/TT6 1 Tf +2.4004 0 TD +(-style input.)Tj +/TT4 1 Tf +10 0 0 10 126 489.8 Tm +(Display Types)Tj +/TT6 1 Tf +9 0 0 9 126 466.14 Tm +([This is not relevant in Interlisp-D])Tj +/TT8 1 Tf +0 -2.8889 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.0367 Tw +[( determines the type of display by calling )]TJ +/TT8 1 Tf +18.809 0 TD +0 Tw +(DISPLAYTERMP)Tj +/TT6 1 Tf +7.2012 0 TD +0.0367 Tw +(, which is initially defined to test the)Tj +-29.0106 -1.2889 TD +0.1989 Tw +(value of the )Tj +/TT8 1 Tf +6.0508 0 TD +0 Tw +(GTTYP)Tj +/TT6 1 Tf +3.0005 0 TD +0.1989 Tw +[( jsys. It returns either NIL \(for printing terminals\) or a small number giving)]TJ +/TT8 1 Tf +-9.0513 -1.2889 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +(s internal code for the terminal type. The types )Tj +/TT8 1 Tf +21.4082 0 TD +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +( currently knows about:)Tj +-23.2981 -2.0667 TD +(0 = glass tty \(capable of deleting chars by backspacing, but little else\))Tj +-0.1111 -2 TD +(1 = Datamedia)Tj +T* +(2 = Heath)Tj +-4 -2.8889 TD +0.17 Tw +(Only the Datamedia has full editing power. )Tj +/TT8 1 Tf +21.0914 0 TD +0 Tw +(DISPLAYTERMP)Tj +/TT6 1 Tf +7.2012 0 TD +0.17 Tw +[( has built into it the correct terminal)]TJ +-28.2926 -1.2889 TD +0.1556 Tw +(types for Sumex and Stanford campus 20s: Datamedia = 11 on tenex, 5 on tops20; Heath = 18 on)Tj +0 -1.2222 TD +0.0778 Tw +[(Tenex, 25 on tops20. You can override those values by setting the variable )]TJ +/TT8 1 Tf +34.1592 0 TD +0 Tw +(DISPLAYTYPES)Tj +/TT6 1 Tf +7.2012 0 TD +0.0778 Tw +[( to be an)]TJ +-41.3604 -1.2889 TD +0.1433 Tw +(association list associating the )Tj +/TT8 1 Tf +14.0499 0 TD +0 Tw +(GTTYP)Tj +/TT6 1 Tf +3.0005 0 TD +0.1433 Tw +[( value with one of these internal codes. For example, Sumex)]TJ +-17.0504 -1.2889 TD +(displays correspond to )Tj +/TT8 1 Tf +10.7723 0 TD +0.3444 Tw +(DISPLAYTYPES = \(\(11 . 1\) \(18 . 2\)\))Tj +/TT6 1 Tf +22.8144 0 TD +0.1433 Tw +[( [although this is actually)]TJ +-33.5867 -1.2889 TD +0.0167 Tw +(compiled into )Tj +/TT8 1 Tf +6.424 0 TD +0 Tw +(DISPLAYTERMP)Tj +/TT6 1 Tf +7.2012 0 TD +0.0167 Tw +[( for speed]. Any display terminal other than Datamedia and Heath can)]TJ +-13.6251 -1.2889 TD +0 Tw +(probably safely be assigned to "0" for glass tty.)Tj +0 -2.8889 TD +0.1078 Tw +(To add new terminal types, you have to choose a number for it, add new code to )Tj +/TT8 1 Tf +37.6691 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1078 Tw +[( for it and)]TJ +-40.6696 -1.2889 TD +0.1511 Tw +[(recompile. The )]TJ +/TT8 1 Tf +7.5359 0 TD +0 Tw +(TTYIN)Tj +/TT6 1 Tf +3.0005 0 TD +0.1511 Tw +[( code specifies what the capabilities of the terminal are, and how to do the)]TJ +-10.5363 -1.2889 TD +0.1489 Tw +(primitive operations: up, down, left, right, address cursor, erase screen, erase to end of line, insert)Tj +0 -1.2222 TD +0 Tw +(character, etc.)Tj +0 -2.8889 TD +0.5944 Tw +(For terminals lacking a meta key \(currently only Datamedias have it\), set the variable)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(EDITPREFIXCHAR)Tj +/TT6 1 Tf +8.4014 0 TD +0.0811 Tw +[( to the ascii code of an edit "prefix" \(i.e., anything typed preceded by the prefix is)]TJ +-8.4014 -1.2889 TD +0.0833 Tw +[(considered to have the meta bit on\). If your )]TJ +/TT8 1 Tf +20.4193 0 TD +0 Tw +(EDITPREFIXCHAR)Tj +/TT6 1 Tf +8.4014 0 TD +0.0833 Tw +[( is )]TJ +/TT8 1 Tf +1.3815 0 TD +0 Tw +(33Q)Tj +/TT6 1 Tf +1.8003 0 TD +0.0833 Tw +[( \(Escape\), you can type a real)]TJ +-32.0024 -1.2889 TD +0.1389 Tw +(Escape by typing 3 of them \(2 wont do, since that means "Meta-Escape", a legitimate argument to)Tj +0 -1.2222 TD +0.2433 Tw +[(another command\). You could also define an Escape synonym with )]TJ +/TT8 1 Tf +33.017 0 TD +0 Tw +(TTYINREADMACROS)Tj +/TT6 1 Tf +9.0015 0 TD +0.2433 Tw +[( if you)]TJ +-42.0185 -1.2889 TD +0.2411 Tw +[(wanted \(but currently it doesnt work in filename completion\). Setting )]TJ +/TT8 1 Tf +34.183 0 TD +0 Tw +(EDITPREFIXCHAR)Tj +/TT6 1 Tf +8.4014 0 TD +0.2411 Tw +[( for a)]TJ +-42.5844 -1.2889 TD +0.2422 Tw +(terminal that is not equipped to handle the full range of editing functions \(only the Heath and)Tj +0 -1.2222 TD +0.0089 Tw +(Datamedia are currently so equipped\) is not guaranteed to work, i.e. the display will not always be up)Tj +T* +0.0544 Tw +(to date; but if you can keep track of what youre doing, together with an occasional control-R to help)Tj +T* +0 Tw +(out, go right ahead. )Tj +ET +endstream +endobj +120 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +122 0 obj +<< +/Length 5767 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-35)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT4 1 Tf +-35.4 -4.38 TD +(Prettyprint)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +558.01 565.49 l +S +BT +/TT6 1 Tf +9 0 0 9 78 543.54 Tm +0.3033 Tw +(The standard way of printing out function definitions \(on the terminal or into files\) is to use)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +/TT8 1 Tf +-3.9344 -2.5422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PRETTYPRINT)Tj +/TT8 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FNS PRETTYDEFLG )Tj +/TT8 1 Tf +10.2017 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 269.4167 509.66 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 509.66 Tm +([Function])Tj +/TT14 1 Tf +-35.4033 -1.8444 TD +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.1911 Tw +[( is a list of functions. If )]TJ +/TT14 1 Tf +12.0055 0 TD +0 Tw +(FNS)Tj +/TT6 1 Tf +1.8003 0 TD +0.1911 Tw +[( is atomic, its value is used\). The definitions of the)]TJ +-15.606 -1.2889 TD +0.19 Tw +(functions are printed in a pretty format on the primary output file using the primary)Tj +0 -1.2222 TD +0 Tw +(readtable. For example, if )Tj +/TT8 1 Tf +11.7544 0 TD +(FACTORIAL)Tj +/TT6 1 Tf +5.4009 0 TD +( were defined by typing)Tj +/TT8 1 Tf +-11.8219 -2 TD +(\(DEFINEQ \(FACTORIAL [LAMBDA \(N\) \(COND \(\(ZEROP N\) 1\))Tj +0 -1.2222 TD +(\(T \(ITIMES N \(FACTORIAL \(SUB1 N])Tj +0 -2 TD +(\(PRETTYPRINT \(FACTORIAL\)\)would print out)Tj +0 -1.2222 TD +(\(FACTORIAL)Tj +T* +( [LAMBDA \(N\))Tj +T* +( \(COND)Tj +T* +( \(\(ZEROP N\))Tj +T* +( 1\))Tj +T* +( \(T \(ITIMES N \(FACTORIAL \(SUB1 N]\))Tj +/TT14 1 Tf +-5.3333 -2.0667 TD +(PRETTYDEFLG)Tj +/TT6 1 Tf +6.6011 0 TD +0.0656 Tw +[( is )]TJ +/TT8 1 Tf +1.346 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0656 Tw +[( when called from )]TJ +/TT8 1 Tf +8.5117 0 TD +0 Tw +(PRETTYDEF)Tj +/TT6 1 Tf +5.4009 0 TD +0.0656 Tw +[( \(and hence )]TJ +/TT8 1 Tf +5.5385 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0656 Tw +[(\). Among other)]TJ +-32.799 -1.2889 TD +0.0578 Tw +(actions taken when this argument is true, )Tj +/TT8 1 Tf +18.903 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0578 Tw +[( indicates its progress in writing)]TJ +-25.5041 -1.2889 TD +0.1567 Tw +(the current output file: whenever it starts a new function, it prints on the terminal the)Tj +0 -1.2222 TD +0.0533 Tw +(name of that function if more than 30 seconds \(real time\) have elapsed since the last time)Tj +T* +0 Tw +(it printed the name of a function.)Tj +/TT8 1 Tf +0 -2 TD +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0011 Tw +( operates correctly on functions that are )Tj +/TT8 1 Tf +17.7509 0 TD +0 Tw +(BROKEN)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.5011 0 TD +(BROKEN-IN)Tj +/TT6 1 Tf +5.4009 0 TD +(, )Tj +/TT8 1 Tf +0.5011 0 TD +(ADVISED)Tj +/TT6 1 Tf +4.2007 0 TD +0.0011 Tw +(, or)Tj +-38.5564 -1.2889 TD +0.2467 Tw +(have been compiled with their definitions saved on their property lists: it prints the)Tj +0 -1.2222 TD +0.1589 Tw +[(original, pristine definition, but does not change the current state of the function. If a)]TJ +T* +0.0644 Tw +(function is not defined but is known to be on one of the files noticed by the file package,)Tj +/TT8 1 Tf +T* +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0756 Tw +[( loads in the definition \(using )]TJ +/TT8 1 Tf +13.7063 0 TD +0 Tw +(LOADFNS)Tj +/TT6 1 Tf +4.2007 0 TD +0.0756 Tw +(\) and prints it \(except when called)Tj +-24.508 -1.2889 TD +0 Tw +(from )Tj +/TT8 1 Tf +2.6867 0 TD +(PRETTYDEF)Tj +/TT6 1 Tf +5.4009 0 TD +0.28 Tw +[(\). If )]TJ +/TT8 1 Tf +2.8429 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.28 Tw +[( is given an atom which is not the name of a)]TJ +-17.5316 -1.2889 TD +0.13 Tw +[(function, but has a value, it prettyprints the value. Otherwise, )]TJ +/TT8 1 Tf +29.1546 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.13 Tw +[( attempts)]TJ +-35.7557 -1.2889 TD +0.0267 Tw +[(spelling correction. If all fails, )]TJ +/TT8 1 Tf +13.7137 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0267 Tw +[( returns )]TJ +/TT8 1 Tf +3.7574 0 TD +0.0644 Tw +(\(FN NOT PRINTABLE\))Tj +/TT6 1 Tf +10.9306 0 TD +0.0267 Tw +[(. Note that)]TJ +/TT8 1 Tf +-35.0029 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0178 Tw +[( will return )]TJ +/TT8 1 Tf +5.2906 0 TD +0.0433 Tw +(\(FN NOT PRINTABLE\))Tj +/TT6 1 Tf +10.8884 0 TD +0.0178 Tw +[( if )]TJ +/TT8 1 Tf +1.1596 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0178 Tw +[( does not have an accessable expr)]TJ +-25.1399 -1.2889 TD +0 Tw +(definition, or if it doesnt have any definition at all.)Tj +/TT8 1 Tf +-2.6667 -2.4756 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PP)Tj +/TT8 1 Tf +1.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FN)Tj +1.1999 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( ... FN)Tj +4.2 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\))Tj +/F1 1 Tf +10 0 0 10 188.4008 150.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 359.33 150.78 Tm +([NLambda NoSpread Function])Tj +-25.9256 -2.1778 TD +0.1678 Tw +(For prettyprinting functions to the terminal. )Tj +/TT8 1 Tf +21.1168 0 TD +0 Tw +(PP)Tj +/TT6 1 Tf +1.2002 0 TD +0.1678 Tw +[( calls )]TJ +/TT8 1 Tf +2.7853 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1678 Tw +[( with the primary)]TJ +-31.7034 -1.2889 TD +0.1789 Tw +(output file set to )Tj +/TT8 1 Tf +8.216 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1789 Tw +[( and the primary read table set to )]TJ +/TT8 1 Tf +16.3676 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.1789 Tw +[(. The primary output file and)]TJ +-25.7839 -1.2889 TD +0 Tw +(primary readtable are restored after printing.)Tj +/TT8 1 Tf +0 -2 TD +0.0756 Tw +(\(PP FOO\))Tj +/TT6 1 Tf +4.8763 0 TD +0.0311 Tw +[( is equivalent to )]TJ +/TT8 1 Tf +7.3876 0 TD +0.0756 Tw +(\(PRETTYPRINT \(FOO\)\))Tj +/TT6 1 Tf +12.0775 0 TD +0 Tw +(; )Tj +/TT8 1 Tf +0.5311 0 TD +0.0756 Tw +[( \(PP FOO FIE\))]TJ +/TT6 1 Tf +8.0279 0 TD +0.0311 Tw +[( is equivalent to)]TJ +/TT8 1 Tf +-32.9005 -1.2889 TD +0 Tw +(\(PRETTYPRINT \(FOO FIE\)\))Tj +/TT6 1 Tf +14.4023 0 TD +(.)Tj +ET +endstream +endobj +123 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +125 0 obj +<< +/Length 6785 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-36)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0544 Tw +(As described above, when )Tj +/TT8 1 Tf +12.0762 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0544 Tw +(, and hence )Tj +/TT8 1 Tf +5.4221 0 TD +0 Tw +(PP)Tj +/TT6 1 Tf +1.2002 0 TD +0.0544 Tw +(, is called with the name of a function that is)Tj +-25.2996 -1.2889 TD +0.0267 Tw +(not defined, but whose definition is on a file known to the file package, the definition is automatically)Tj +0 -1.2222 TD +0.2044 Tw +[(read in and then prettyprinted. However, if the user does not intend on editing or running the)]TJ +T* +0.1567 Tw +(definition, but simply wants to see the definition, the function )Tj +/TT8 1 Tf +29.1604 0 TD +0 Tw +(PF)Tj +/TT6 1 Tf +1.2002 0 TD +0.1567 Tw +[( described below can be used to)]TJ +-30.3606 -1.2889 TD +0.1133 Tw +[(simply copy the corresponding characters from the file to the terminal. This results in a savings in)]TJ +0 -1.2222 TD +0.0433 Tw +(both space and time, since it is not necessary to allocate storage to actually read in the definition, and)Tj +T* +0 Tw +(it is not necessary to re-prettyprint it \(since the function is already in prettyprint format on the file\).)Tj +/TT8 1 Tf +2.6667 -2.4756 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PF)Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FN FROMFILES TOFILE)Tj +/TT8 1 Tf +11.4019 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 279.6211 480.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 480.06 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.2244 Tw +(Copies the definition of )Tj +/TT14 1 Tf +11.5457 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.2244 Tw +[( found on each of the files in )]TJ +/TT14 1 Tf +14.5602 0 TD +0 Tw +(FROMFILES)Tj +/TT6 1 Tf +5.4009 0 TD +0.2244 Tw +[( to )]TJ +/TT14 1 Tf +1.821 0 TD +0 Tw +(TOFILE)Tj +/TT6 1 Tf +3.6006 0 TD +0.2244 Tw +[(. If)]TJ +/TT14 1 Tf +-38.1285 -1.2889 TD +0 Tw +(TOFILE )Tj +/TT8 1 Tf +4.3707 0 TD +0.17 Tw +(= NIL)Tj +/TT6 1 Tf +3.1705 0 TD +0.0711 Tw +(, defaults to )Tj +/TT8 1 Tf +5.6523 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0711 Tw +[(. If )]TJ +/TT14 1 Tf +1.8833 0 TD +0 Tw +(FROMFILES)Tj +/TT8 1 Tf +5.4009 0 TD +0.17 Tw +[( = NIL)]TJ +/TT6 1 Tf +3.9406 0 TD +0.0711 Tw +(, defaults to )Tj +/TT8 1 Tf +5.6523 0 TD +0.17 Tw +(\(WHEREIS FN NIL)Tj +-30.6706 -1.2889 TD +0 Tw +(T\))Tj +/TT6 1 Tf +1.2002 0 TD +( \(see Chapter 17\). The typical usage of )Tj +/TT8 1 Tf +17.2642 0 TD +(PF)Tj +/TT6 1 Tf +1.2002 0 TD +( is simply to type ")Tj +/TT8 1 Tf +8.2163 0 TD +(PF FN)Tj +/TT6 1 Tf +3.0005 0 TD +(".)Tj +/TT8 1 Tf +-30.8813 -2.0667 TD +(PF)Tj +/TT6 1 Tf +1.2002 0 TD +0.0211 Tw +[( prints a message if it cant find a file on )]TJ +/TT14 1 Tf +18.056 0 TD +0 Tw +(FROMFILES)Tj +/TT6 1 Tf +5.4009 0 TD +0.0211 Tw +(, or it cant find the function )Tj +/TT8 1 Tf +12.7469 0 TD +0 Tw +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +0.0211 Tw +[( on)]TJ +-38.6041 -1.2889 TD +0 Tw +(a file.)Tj +-5.3333 -2.8889 TD +0.0811 Tw +(When printing to the terminal, )Tj +/TT8 1 Tf +14.1795 0 TD +0 Tw +(PF)Tj +/TT6 1 Tf +1.2002 0 TD +0.0811 Tw +[( performs several transformations on the characters in the file that)]TJ +-15.3797 -1.2889 TD +0 Tw +(comprise the definition for )Tj +/TT8 1 Tf +12.0557 0 TD +(FN)Tj +/TT6 1 Tf +1.2002 0 TD +(:)Tj +-11.3392 -2.0667 TD +0.3767 Tw +[(1.)-1333.3(Font information is stripped out \(except in Interlisp-D, whose display supports)]TJ +2.0833 -1.2222 TD +0 Tw +(multiple fonts\))Tj +-2.0833 -2 TD +0.1367 Tw +[(2.)-1333.3(Occurrences of the )]TJ +/TT8 1 Tf +10.9841 0 TD +0 Tw +(CHANGECHAR)Tj +/TT6 1 Tf +6.001 0 TD +0.1367 Tw +[( \(see the Special Prettyprint Controls section below\))]TJ +-14.9017 -1.2889 TD +0 Tw +(are not printed)Tj +-2.0833 -2 TD +0.0389 Tw +[(3.)-1333.3(Since functions typically tend to be printed to a file with a larger linelength than when)]TJ +2.0833 -1.2222 TD +0.0711 Tw +(printing to a terminal, the number of leading spaces on each line is cut in half \(unless)Tj +/TT8 1 Tf +T* +0 Tw +(PFDEFAULT)Tj +/TT6 1 Tf +5.4009 0 TD +( is )Tj +/TT8 1 Tf +1.2148 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(; initially )Tj +/TT8 1 Tf +4.1694 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(\))Tj +-15.2689 -2.0667 TD +0.2522 Tw +[(4.)-1333.3(Comments are elided, if )]TJ +/TT8 1 Tf +13.9335 0 TD +0 Tw +(**COMMENT**FLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.2522 Tw +[( is non-)]TJ +/TT8 1 Tf +3.7623 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2522 Tw +[( \(see the Comment Feature)]TJ +-25.8141 -1.2889 TD +0 Tw +(section below\). )Tj +/TT8 1 Tf +-1.3333 -2.4756 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SEE)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FROMFILE TOFILE)Tj +/TT8 1 Tf +9.0015 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 263.4149 220.78 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 220.78 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.0611 Tw +(Copies all of the text from )Tj +/TT14 1 Tf +12.0688 0 TD +0 Tw +(FROMFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0611 Tw +[( to )]TJ +/TT14 1 Tf +1.4943 0 TD +0 Tw +(TOFILE)Tj +/TT6 1 Tf +3.6006 0 TD +0.0611 Tw +[( \(defaults to )]TJ +/TT8 1 Tf +5.7053 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +(\), processing all text as )Tj +/TT8 1 Tf +10.5336 0 TD +0 Tw +(PF)Tj +/TT6 1 Tf +-38.8035 -1.2889 TD +(does. Used to display the contents of files on the terminal.)Tj +/TT8 1 Tf +-2.6667 -2.4756 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PP*)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 187.8026 170.3 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 170.3 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +-28.5922 -1.4311 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PF*)Tj +/TT8 1 Tf +1.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FN FROMFILES TOFILE)Tj +/TT8 1 Tf +11.4019 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 285.0184 157.42 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 157.42 Tm +([NLambda NoSpread Function])Tj +/TT8 1 Tf +-28.5922 -1.4311 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(SEE*)Tj +/TT8 1 Tf +2.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FROMFILE TOFILE)Tj +/TT8 1 Tf +9.0015 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 268.8149 144.54 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 407.33 144.54 Tm +([NLambda NoSpread Function])Tj +-25.9256 -1.8444 TD +0.5867 Tw +(These functions operate exactly like )Tj +/TT8 1 Tf +18.9465 0 TD +0 Tw +(PP)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +1.0867 0 TD +(PF)Tj +/TT6 1 Tf +1.2002 0 TD +0.5867 Tw +(, and )Tj +/TT8 1 Tf +3.6162 0 TD +0 Tw +(SEE)Tj +/TT6 1 Tf +1.8003 0 TD +0.5867 Tw +(, except that they bind)Tj +/TT8 1 Tf +-27.8501 -1.2889 TD +0 Tw +(**COMMENT**FLG)Tj +/TT6 1 Tf +8.4014 0 TD +( to )Tj +/TT8 1 Tf +1.3721 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, so comments are printed in full.)Tj +-16.9071 -2.9556 TD +0.1378 Tw +(While the function )Tj +/TT8 1 Tf +8.9006 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1378 Tw +[( prints entire function definitions, the function )]TJ +/TT8 1 Tf +21.693 0 TD +0 Tw +(PRINTDEF)Tj +/TT6 1 Tf +4.8008 0 TD +0.1378 Tw +[( can be)]TJ +-41.9955 -1.2889 TD +0 Tw +(used to print parts of functions, or arbitrary Interlisp structures:)Tj +ET +endstream +endobj +126 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +128 0 obj +<< +/Length 6222 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-37)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 102 568.26 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(PRINTDEF)Tj +/TT8 1 Tf +4.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(EXPR LEFT DEF TAILFLG FNSLST FILE)Tj +/TT8 1 Tf +19.8032 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 339.6307 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 568.26 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0189 Tw +(Prints the expression )Tj +/TT14 1 Tf +9.5528 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0189 Tw +[( in a pretty format on )]TJ +/TT14 1 Tf +9.7808 0 TD +0 Tw +(FILE)Tj +/TT6 1 Tf +2.4004 0 TD +0.0189 Tw +[( using the primary readtable. )]TJ +/TT14 1 Tf +13.462 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +-37.5963 -1.2889 TD +0.1911 Tw +(is the left hand margin \()Tj +/TT8 1 Tf +11.5517 0 TD +0 Tw +(LINELENGTH)Tj +/TT6 1 Tf +6.001 0 TD +0.1911 Tw +[( determines the right hand margin\). )]TJ +/TT8 1 Tf +17.639 0 TD +0 Tw +(PRINTDEF)Tj +/TT6 1 Tf +-35.1918 -1.2889 TD +0.0089 Tw +(initially performs )Tj +/TT8 1 Tf +7.9929 0 TD +0.0211 Tw +(\(TAB LEFT T\))Tj +/TT6 1 Tf +7.2434 0 TD +0.0089 Tw +(, which means to space to position )Tj +/TT14 1 Tf +15.4616 0 TD +0 Tw +(LEFT)Tj +/TT6 1 Tf +2.4004 0 TD +0.0089 Tw +(, unless already)Tj +-33.0983 -1.2889 TD +0 Tw +(beyond this position, in which case it does nothing.)Tj +/TT14 1 Tf +0 -2 TD +(DEF)Tj +/TT8 1 Tf +1.8003 0 TD +0.0067 Tw +[( = T)]TJ +/TT6 1 Tf +2.4137 0 TD +0.0005 Tc +0.0028 Tw +( means )Tj +/TT14 1 Tf +3.3743 0 TD +0 Tc +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.0001 Tc +0.0032 Tw +( is a function definition, or a piece of one. If )Tj +/TT14 1 Tf +19.6845 0 TD +0 Tc +0 Tw +(DEF )Tj +/TT8 1 Tf +2.4071 0 TD +0.0067 Tw +(= NIL)Tj +/TT6 1 Tf +3.0072 0 TD +0.0033 Tw +(, no special)Tj +-35.0875 -1.2889 TD +0.1256 Tw +(action is taken for )Tj +/TT8 1 Tf +8.6233 0 TD +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +(s, )Tj +/TT8 1 Tf +1.3272 0 TD +(PROG)Tj +/TT6 1 Tf +2.4004 0 TD +(s, )Tj +/TT8 1 Tf +1.3272 0 TD +(COND)Tj +/TT6 1 Tf +2.4004 0 TD +0.1256 Tw +(s, comments, )Tj +/TT8 1 Tf +6.5192 0 TD +0 Tw +(CLISP)Tj +/TT6 1 Tf +3.0005 0 TD +0.1256 Tw +(, etc. )Tj +/TT8 1 Tf +2.8757 0 TD +0 Tw +(DEF)Tj +/TT6 1 Tf +1.8003 0 TD +0.1256 Tw +[( is )]TJ +/TT8 1 Tf +1.466 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1256 Tw +[( when)]TJ +/TT8 1 Tf +-37.141 -1.2889 TD +0 Tw +(PRETTYDEF)Tj +/TT6 1 Tf +5.4009 0 TD +0.4711 Tw +[( calls )]TJ +/TT8 1 Tf +3.3919 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.4711 Tw +[( to print variables and property lists, and when)]TJ +/TT8 1 Tf +-15.3939 -1.2889 TD +0 Tw +(PRINTDEF)Tj +/TT6 1 Tf +4.8008 0 TD +( is called from the editor via the command )Tj +/TT8 1 Tf +18.9639 0 TD +(PPV)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT14 1 Tf +-25.5649 -2.0667 TD +(TAILFLG )Tj +/TT8 1 Tf +5.3708 0 TD +0.57 Tw +(= T)Tj +/TT6 1 Tf +2.3703 0 TD +0.2378 Tw +[( means )]TJ +/TT14 1 Tf +3.8432 0 TD +0 Tw +(EXPR)Tj +/TT6 1 Tf +2.4004 0 TD +0.2378 Tw +[( is interpreted as a tail of a list, to be printed without)]TJ +-13.9847 -1.2889 TD +0 Tw +(parentheses.)Tj +/TT14 1 Tf +0 -2 TD +(FNSLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.1556 Tw +[( is for use for printing with multiple fonts \(see Chapter 27\). )]TJ +/TT8 1 Tf +28.5647 0 TD +0 Tw +(PRINTDEF)Tj +/TT6 1 Tf +4.8008 0 TD +0.1556 Tw +[( prints)]TJ +-36.9661 -1.2889 TD +0.3956 Tw +(occurrences of any function in the list )Tj +/TT8 1 Tf +19.5697 0 TD +0 Tw +(FNSLST)Tj +/TT6 1 Tf +3.6006 0 TD +0.3956 Tw +[( in a different font, for emphasis.)]TJ +/TT8 1 Tf +-23.1703 -1.2889 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +( passes as )Tj +/TT8 1 Tf +4.5254 0 TD +(FNSLST)Tj +/TT6 1 Tf +3.6006 0 TD +( the list of all functions on the file being made.)Tj +/TT4 1 Tf +10 0 0 10 78 362.72 Tm +(Comment Feature)Tj +/TT6 1 Tf +9 0 0 9 78 339.06 Tm +0.0533 Tw +(A facility for annotating Interlisp functions is provided in )Tj +/TT8 1 Tf +26.149 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0533 Tw +[(. Any expression beginning)]TJ +-32.75 -1.2889 TD +0 Tw +(with the atom )Tj +/TT8 1 Tf +6.4253 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +( is interpreted as a comment and printed in the right margin. Example:)Tj +/TT8 1 Tf +3.6413 -2 TD +(\(FACTORIAL)Tj +0 -1.2222 TD +( [LAMBDA \(N\) \(* COMPUTES N!\))Tj +T* +( \(COND)Tj +T* +( \(\(ZEROP N\) \(* 0! = 1\))Tj +T* +( 1\))Tj +T* +( \(T \(* RECURSIVE DEFINITION:)Tj +T* +( N! = N*N-1!\))Tj +T* +( \(ITIMES N \(FACTORIAL \(SUB1 N]\))Tj +/TT6 1 Tf +-10.6667 -2.9556 TD +0.1989 Tw +[(These comments actually form a part of the function definition. Accordingly, )]TJ +/TT8 1 Tf +36.8188 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1989 Tw +[( is defined as an)]TJ +-37.4189 -1.2889 TD +0.0022 Tw +(nlambda nospread function that returns its argument, similar to )Tj +/TT8 1 Tf +28.5351 0 TD +0 Tw +(QUOTE)Tj +/TT6 1 Tf +3.0005 0 TD +0.0001 Tc +0.0021 Tw +(. When running an interpreted)Tj +-31.5356 -1.2889 TD +0 Tc +0 Tw +(function, )Tj +/TT8 1 Tf +4.287 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.08 Tw +[( is entered the same as any other Interlisp function. Therefore, comments should only be)]TJ +-4.8871 -1.2889 TD +0.1189 Tw +(placed where they will not harm the computation, i.e., where a quoted expression could be placed.)Tj +0 -1.2222 TD +0 Tw +(For example, writing)Tj +/TT8 1 Tf +10.6667 -1.9333 TD +(\(ITIMES N \(FACTORIAL \(SUB1 N\)\) \(* RECURSIVE)Tj +0 -1.2222 TD +(DEFINITION\)\))Tj +/TT6 1 Tf +-10.6667 -2.9556 TD +0.2556 Tw +(in the above function would cause an error when )Tj +/TT8 1 Tf +24.2639 0 TD +0 Tw +(ITIMES)Tj +/TT6 1 Tf +3.6006 0 TD +0.2556 Tw +[( attempted to multiply )]TJ +/TT8 1 Tf +11.2678 0 TD +0 Tw +(N)Tj +/TT6 1 Tf +0.6001 0 TD +(, )Tj +/TT8 1 Tf +0.7556 0 TD +(N-1!)Tj +/TT6 1 Tf +2.4004 0 TD +0.2556 Tw +(, and)Tj +/TT8 1 Tf +-42.8883 -1.2889 TD +0 Tw +(RECURSIVE)Tj +/TT6 1 Tf +5.4009 0 TD +(.)Tj +-5.4009 -2.9556 TD +0.1489 Tw +(For compilation purposes, )Tj +/TT8 1 Tf +12.3173 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1489 Tw +[( is defined as a macro which compiles into no instructions \(unless the)]TJ +-12.9174 -1.2889 TD +0.1689 Tw +(comment has been placed where it has been used for value, in which case the compiler prints an)Tj +0 -1.2222 TD +0.1311 Tw +(appropriate error message and compiles )Tj +/TT8 1 Tf +18.7469 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1311 Tw +[( as )]TJ +/TT8 1 Tf +1.686 0 TD +0 Tw +(QUOTE)Tj +/TT6 1 Tf +3.0005 0 TD +0.1311 Tw +[(\). Thus, the compiled form of a function with)]TJ +ET +endstream +endobj +129 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +131 0 obj +<< +/Length 5610 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-38)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.1567 Tw +(comments does not use the extra atom and list structure storage required by the comments in the)Tj +0 -1.2222 TD +0 Tw +(source \(interpreted\) code. This is the way the comment feature is intended to be used.)Tj +0 -2.8889 TD +0.0389 Tw +(A comment of the form )Tj +/TT8 1 Tf +10.7877 0 TD +0.0922 Tw +(\(* E X\))Tj +/TT6 1 Tf +4.3851 0 TD +0.0389 Tw +[( causes )]TJ +/TT8 1 Tf +3.4513 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0389 Tw +[( to be evaluated at prettyprint time, as well as printed as a)]TJ +-19.2242 -1.2889 TD +0.0344 Tw +[(comment in the usual way. For example, )]TJ +/TT8 1 Tf +18.7355 0 TD +0.0833 Tw +(\(* E \(RADIX 8\)\))Tj +/TT6 1 Tf +9.2515 0 TD +0.0344 Tw +[( as a comment in a function containing)]TJ +-27.987 -1.2889 TD +0 Tw +(octal numbers can be used to change the radix to produce more readable printout.)Tj +0 -2.8889 TD +0.1267 Tw +(The comment character )Tj +/TT8 1 Tf +11.0113 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1267 Tw +[( is stored in the variable )]TJ +/TT8 1 Tf +11.5901 0 TD +0 Tw +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.1267 Tw +[(. The user can set it to some other)]TJ +-29.2025 -1.2889 TD +0 Tw +(value, e.g. ")Tj +/TT8 1 Tf +5.0942 0 TD +(;)Tj +/TT6 1 Tf +0.6001 0 TD +(", and use this to indicate comments.)Tj +/TT12 1 Tf +-3.0277 -2.5422 TD +(COMMENTFLG)Tj +/F1 1 Tf +10 0 0 10 204 448.86 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 448.86 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT8 1 Tf +0.9921 0 TD +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0722 Tw +[( of an expression is )]TJ +/TT8 1 Tf +9.0237 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0722 Tw +[( to )]TJ +/TT8 1 Tf +1.5165 0 TD +0 Tw +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0722 Tw +(, the expression is treated as a comment by)Tj +/TT8 1 Tf +-20.5338 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0989 Tw +(. )Tj +/TT8 1 Tf +0.9478 0 TD +0 Tw +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0989 Tw +[( is initialized to )]TJ +/TT8 1 Tf +7.4356 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0989 Tw +[(. Note that whatever atom is chosen for)]TJ +/TT8 1 Tf +-21.5855 -1.2889 TD +0 Tw +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0022 Tw +( should also have an appropriate function definition and compiler macro, for)Tj +-6.001 -1.2889 TD +0 Tw +(example, by copying those of )Tj +/TT8 1 Tf +13.1704 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +-19.1038 -2.9556 TD +0.2322 Tw +[(Comments are designed mainly for documenting listings. Therefore, when prettyprinting to the)]TJ +0 -1.2222 TD +0.4144 Tw +(terminal, comments are suppressed and printed as the string )Tj +/TT8 1 Tf +30.8213 0 TD +0 Tw +(**COMMENT**)Tj +/TT6 1 Tf +6.6011 0 TD +0.4144 Tw +[(. The value of)]TJ +/TT8 1 Tf +-37.4224 -1.2889 TD +0 Tw +(**COMMENT**FLG)Tj +/TT6 1 Tf +8.4014 0 TD +( determines the action.)Tj +/TT12 1 Tf +-5.7347 -2.5422 TD +(**COMMENT**FLG)Tj +/F1 1 Tf +10 0 0 10 225.6123 325.38 Tm +-0.0012 Tc +[( )-26293.2([)]TJ +/TT6 1 Tf +9 0 0 9 497.41 325.38 Tm +0 Tc +(Variable])Tj +-35.9344 -1.8444 TD +(If )Tj +/TT8 1 Tf +1.501 0 TD +(**COMMENT**FLG)Tj +/TT6 1 Tf +8.4014 0 TD +0.5811 Tw +[( is )]TJ +/TT8 1 Tf +2.3771 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.5811 Tw +[(, comments are printed. Otherwise, the value of)]TJ +/TT8 1 Tf +-14.0798 -1.2889 TD +0 Tw +(**COMMENT**FLG)Tj +/TT6 1 Tf +8.4014 0 TD +( is printed. Initially " )Tj +/TT8 1 Tf +9.5864 0 TD +(**COMMENT** )Tj +/TT6 1 Tf +7.2012 0 TD +(".)Tj +/TT8 1 Tf +10 0 0 10 150 274.3 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 274.3 Tm +(COMMENT1)Tj +/F2 1 Tf +10 0 0 10 199.2 274.3 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 202.07 274.3 Tm +(L)Tj +/TT8 1 Tf +0.6001 0 TD +( )Tj +10 0 0 10 218.2726 274.3 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 274.3 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.2322 Tw +(Prints the comment )Tj +/TT14 1 Tf +9.5985 0 TD +0 Tw +(L)Tj +/TT6 1 Tf +0.6001 0 TD +0.2322 Tw +(. )Tj +/TT8 1 Tf +1.2144 0 TD +0 Tw +(COMMENT1)Tj +/TT6 1 Tf +4.8008 0 TD +0.2322 Tw +[( is a separate function to permit the user to write)]TJ +-16.2138 -1.2889 TD +0.4 Tw +[(prettyprint macros that use the regular comment printer. For example, to cause)]TJ +0 -1.2222 TD +0.0056 Tw +(comments to be printed at a larger than normal linelength, one could put an entry for )Tj +/TT8 1 Tf +38.0098 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0056 Tw +[( on)]TJ +/TT8 1 Tf +-38.6099 -1.2889 TD +0 Tw +(PRETTYPRINTMACROS)Tj +/TT6 1 Tf +10.2017 0 TD +(:)Tj +/TT8 1 Tf +-4.8683 -2 TD +(\(* LAMBDA \(X\) \(RESETFORM \(LINELENGTH 100\) )Tj +0 -1.2222 TD +(\(COMMENT1 X\)\)\))Tj +/TT6 1 Tf +-5.3333 -2.0667 TD +(This macro resets the line length, prints the comment, and then restores the line length.)Tj +/TT8 1 Tf +0 -2 TD +(COMMENT1)Tj +/TT6 1 Tf +4.8008 0 TD +0.0133 Tw +[( expects to be called from within the environment established by )]TJ +/TT8 1 Tf +28.9152 0 TD +0 Tw +(PRINTDEF)Tj +/TT6 1 Tf +4.8008 0 TD +0.0133 Tw +(, so)Tj +-38.5168 -1.2889 TD +0 Tw +(ordinarily the user should call it only from within prettyprint macros.)Tj +/TT4 1 Tf +10 0 0 10 126 116.61 Tm +(Comment Pointers)Tj +/TT6 1 Tf +9 0 0 9 126 92.95 Tm +0.3022 Tw +(For a well-commented collection of programs, the list structure, atom, and print name storage)Tj +0 -1.2222 TD +0.0856 Tw +[(required to represent the comments in core can be significant. If the comments already appear on a)]TJ +T* +0.0456 Tw +(file and are not needed for editing, a significant savings in storage can be achieved by simply leaving)Tj +T* +0.0189 Tw +(the text of the comment on the file when the file is loaded, and instead retaining in core only a pointer)Tj +T* +0.2056 Tw +[(to the comment. When this feature is enabled, * is defined as a read macro \(see Chapter 25\) in)]TJ +ET +endstream +endobj +132 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 104 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +134 0 obj +<< +/Length 6190 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-39)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(FILERDTBL)Tj +/TT6 1 Tf +5.4009 0 TD +0.1778 Tw +[( which, instead of reading in the entire text of the comment, constructs an expression)]TJ +-5.4009 -1.2889 TD +0 Tw +(containing )Tj +2.0611 -2 TD +[()-1332.9(The name of the file in which the text of the comment is contained)]TJ +T* +[()-1332.9(The address of the first character of the comment)]TJ +T* +[()-1332.9(The number of characters in the comment)]TJ +T* +0.0411 Tw +[()-1332.9(A)0( flag indicating whether the comment appeared at the right hand margin or centered)]TJ +1.9389 -1.2222 TD +0 Tw +(on the page )Tj +-4 -2.8889 TD +0.1456 Tw +(For output purposes, )Tj +/TT8 1 Tf +10.0119 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.1456 Tw +[( is defined on )]TJ +/TT8 1 Tf +6.8107 0 TD +0 Tw +(PRETTYPRINTMACROS)Tj +/TT6 1 Tf +10.2017 0 TD +0.1456 Tw +[( \(see the Prettyprint Control Functions)]TJ +-27.6244 -1.2889 TD +0.1589 Tw +(section below\) so that it prints the comments represented by such pointers by simply copying the)Tj +0 -1.2222 TD +0.33 Tw +[(corresponding characters from one file to another, or to the terminal. Normal comments are)]TJ +T* +0 Tw +(processed the same as before, and can be intermixed freely with comment pointers.)Tj +0 -2.8889 TD +(The comment pointer feature is controlled by the function )Tj +/TT8 1 Tf +25.8311 0 TD +(NORMALCOMMENTS)Tj +/TT6 1 Tf +8.4014 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 366.46 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 366.46 Tm +(NORMALCOMMENTS)Tj +/F2 1 Tf +10 0 0 10 183.6 366.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 186.47 366.46 Tm +(FLG)Tj +/TT8 1 Tf +10 0 0 10 202.6726 366.46 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 366.46 Tm +([Function])Tj +-35.4033 -1.8833 TD +(If )Tj +/TT14 1 Tf +1.0021 0 TD +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0822 Tw +[( is )]TJ +/TT8 1 Tf +1.3793 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0822 Tw +[(, the comment pointer feature is enabled. If )]TJ +/TT14 1 Tf +20.2351 0 TD +0 Tw +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +0.0822 Tw +[( is )]TJ +/TT8 1 Tf +1.3793 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +0.0822 Tw +(, the comment pointer)Tj +-29.9968 -1.2889 TD +0 Tw +(feature is disabled \(the default\).)Tj +/TT8 1 Tf +0 -2 TD +(NORMALCOMMENTS)Tj +/TT6 1 Tf +8.4014 0 TD +0.1367 Tw +[( can be changed as often as desired. Thus, some files can be loaded)]TJ +-8.4014 -1.2889 TD +0 Tw +(normally, and others with their comments converted to comment pointers.)Tj +-5.3333 -2.8889 TD +0.1033 Tw +(For convenience of editing selected comments, an edit macro, )Tj +/TT8 1 Tf +28.3206 0 TD +0 Tw +(GET*)Tj +/TT6 1 Tf +2.4004 0 TD +0.1033 Tw +(, is included, which loads in the)Tj +-30.721 -1.2889 TD +0.1956 Tw +[(text of the corresponding comment. The editors )]TJ +/TT8 1 Tf +23.3457 0 TD +0 Tw +(PP*)Tj +/TT6 1 Tf +1.8003 0 TD +0.1956 Tw +[( command, in contrast, prints the comment)]TJ +-25.146 -1.2889 TD +0.0067 Tw +(without reading it by simply copying the corresponding characters to the terminal. )Tj +/TT8 1 Tf +37.1917 0 TD +0 Tw +(GET*)Tj +/TT6 1 Tf +2.4004 0 TD +0.0067 Tw +[( is defined in)]TJ +-39.592 -1.2889 TD +0 Tw +(terms of )Tj +/TT8 1 Tf +3.8857 0 TD +(GETCOMMENT)Tj +/TT6 1 Tf +6.001 0 TD +(:)Tj +/TT8 1 Tf +10 0 0 10 102 224.63 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 224.63 Tm +(GETCOMMENT)Tj +/TT8 1 Tf +5.9999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X DESTFL )Tj +/TT8 1 Tf +10 0 0 10 221.4097 224.63 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 224.63 Tm +([Function])Tj +-35.4033 -1.8833 TD +(If )Tj +/TT14 1 Tf +0.9955 0 TD +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0756 Tw +[( is a comment pointer, replaces )]TJ +/TT14 1 Tf +14.3938 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0756 Tw +[( with the actual text of the comment, which it reads)]TJ +-16.5894 -1.2889 TD +0.0078 Tw +[(from its file. Returns )]TJ +/TT14 1 Tf +9.6077 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0078 Tw +[( in all cases. If )]TJ +/TT14 1 Tf +6.6922 0 TD +0 Tw +(DESTFL)Tj +/TT6 1 Tf +3.6006 0 TD +0.0078 Tw +[( is non-)]TJ +/TT8 1 Tf +3.2734 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.0078 Tw +(, it is the name of an open file, to)Tj +-25.5743 -1.2889 TD +0 Tw +(which )Tj +/TT8 1 Tf +2.9996 0 TD +(GETCOMMENT)Tj +/TT6 1 Tf +6.001 0 TD +0.0167 Tw +[( copies the comment; in this case, )]TJ +/TT14 1 Tf +15.0239 0 TD +0 Tw +(X)Tj +/TT6 1 Tf +0.6001 0 TD +0.0167 Tw +[( remains a comment pointer, but it)]TJ +-24.6245 -1.2889 TD +0.2244 Tw +(has been changed to point to the new file \(unless )Tj +/TT8 1 Tf +23.9998 0 TD +0 Tw +(NORMALCOMMENTS)Tj +/TT6 1 Tf +8.4014 0 TD +0.2244 Tw +[( has been set to)]TJ +/TT8 1 Tf +-32.4012 -1.2889 TD +0 Tw +(DONTUPDATE)Tj +/TT6 1 Tf +6.001 0 TD +(\).)Tj +/TT8 1 Tf +10 0 0 10 102 138.4 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 138.4 Tm +(PRINTCOMMENT)Tj +/F2 1 Tf +10 0 0 10 172.8 138.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 175.67 138.4 Tm +(X)Tj +/TT8 1 Tf +10 0 0 10 181.0709 138.4 Tm +(\))Tj +/F1 1 Tf +0.6001 0 TD +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 138.4 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0611 Tw +(Defined as the prettyprint macro for )Tj +/TT8 1 Tf +16.6469 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0611 Tw +(: copies the comment to the primary output file by)Tj +-17.247 -1.2889 TD +0 Tw +(using )Tj +/TT8 1 Tf +2.7061 0 TD +(GETCOMMENT)Tj +/TT6 1 Tf +6.001 0 TD +(.)Tj +/TT8 1 Tf +10 0 0 10 102 86.97 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 86.97 Tm +(READCOMMENT)Tj +/F2 1 Tf +10 0 0 10 167.4 86.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 170.27 86.97 Tm +(FL RDTBL LST)Tj +/TT8 1 Tf +7.2012 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 240.4814 86.97 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 444.63 86.97 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.2711 Tw +(Defined as the read macro for )Tj +/TT8 1 Tf +15.0129 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.2711 Tw +[( in )]TJ +/TT8 1 Tf +1.9153 0 TD +0 Tw +(FILERDTBL)Tj +/TT6 1 Tf +5.4009 0 TD +0.2711 Tw +(: if )Tj +/TT8 1 Tf +1.9162 0 TD +0 Tw +(NORMALCOMMENTSFLG)Tj +/TT6 1 Tf +10.2017 0 TD +0.2711 Tw +[( is )]TJ +/TT8 1 Tf +1.7571 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2711 Tw +(, it)Tj +-38.6044 -1.2889 TD +0.15 Tw +(constructs a comment pointer, unless it believes the expression beginning with * is not)Tj +0 -1.2222 TD +0 Tw +(actually a comment, e.g., if the next atom is ")Tj +/TT8 1 Tf +19.6943 0 TD +(.)Tj +/TT6 1 Tf +0.6001 0 TD +(" or )Tj +/TT8 1 Tf +1.812 0 TD +(E)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +135 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 104 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +137 0 obj +<< +/Length 6463 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-40)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT6 1 Tf +9 0 0 9 126 569.54 Tm +0.0422 Tw +[(Note that a certain amount of care is required in using the comment pointer feature. Since the text of)]TJ +0 -1.2222 TD +0.0433 Tw +(the comment resides on the file pointed to by the comment pointer, that file must remain in existence)Tj +T* +0.1933 Tw +(as long as the comment is needed. )Tj +/TT8 1 Tf +17.1048 0 TD +0 Tw +(GETCOMMENT)Tj +/TT6 1 Tf +6.001 0 TD +0.1933 Tw +[( helps out by changing the comment pointer to)]TJ +-23.1058 -1.2889 TD +0.2389 Tw +[(always point at the most recent file that the comment lives on. However, if the user has been)]TJ +0 -1.2222 TD +0.0522 Tw +(performing repeated )Tj +/TT8 1 Tf +9.5356 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0522 Tw +(s \(see Chapter 17\) in which differing functions have changed at each)Tj +-14.3364 -1.2889 TD +0.0678 Tw +(invocation of )Tj +/TT8 1 Tf +6.1873 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0678 Tw +(, it is possible for the comment pointers in memory to be pointing at several)Tj +-10.9881 -1.2889 TD +0.1444 Tw +(versions of the same file, since a comment pointer is only updated when the function it lives in is)Tj +0 -1.2222 TD +0.0278 Tw +[(prettyprinted, not when the function has been copied verbatim to the new file. This can be a problem)]TJ +T* +0.0822 Tw +(for file systems that have a built-in limit on the number of versions of a given file that will be made)Tj +T* +0.0911 Tw +[(before old versions are expunged. In such a case, the user should set the version retention count of)]TJ +T* +0.2233 Tw +(any directories involved to be infinite. )Tj +/TT8 1 Tf +18.8915 0 TD +0 Tw +(GETCOMMENT)Tj +/TT6 1 Tf +6.001 0 TD +0.2233 Tw +[( prints an error message if the file that the)]TJ +-24.8924 -1.2889 TD +0 Tw +(comment pointer points at has disappeared.)Tj +0 -2.8889 TD +0.0133 Tw +(Similarly, one should be cognizant of comment pointers in sysouts, and be sure to retain any files thus)Tj +0 -1.2222 TD +0 Tw +(pointed to.)Tj +0 -2.8889 TD +0.1289 Tw +(When using comment pointers, the user should also not set )Tj +/TT8 1 Tf +27.7132 0 TD +0 Tw +(PRETTYFLG)Tj +/TT6 1 Tf +5.4009 0 TD +0.1289 Tw +[( to )]TJ +/TT8 1 Tf +2.0087 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1289 Tw +[( or call )]TJ +/TT8 1 Tf +3.6035 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +-40.5266 -1.2889 TD +0.1067 Tw +(with option )Tj +/TT8 1 Tf +5.6386 0 TD +0 Tw +(FAST)Tj +/TT6 1 Tf +2.4004 0 TD +0.1067 Tw +(, since this will prevent functions from being prettyprinted, and hence not get the)Tj +-8.039 -1.2889 TD +0 Tw +(text of the comment copied into the new file.)Tj +0 -2.8889 TD +0.0489 Tw +(If the user changes the value of )Tj +/TT8 1 Tf +14.3212 0 TD +0 Tw +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0489 Tw +[( but still wishes to use the comment pointer feature, the)]TJ +-20.3222 -1.2889 TD +0 Tw +(new )Tj +/TT8 1 Tf +2.2384 0 TD +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.0933 Tw +[( should be given the same read-macro definition in )]TJ +/TT8 1 Tf +23.6154 0 TD +0 Tw +(FILERDTBL)Tj +/TT6 1 Tf +5.4009 0 TD +0.0933 Tw +[( as )]TJ +/TT8 1 Tf +1.6105 0 TD +0 Tw +(*)Tj +/TT6 1 Tf +0.6001 0 TD +0.0933 Tw +[( has, and the)]TJ +-39.4662 -1.2889 TD +0.1356 Tw +(same entry be put on )Tj +/TT8 1 Tf +10.2422 0 TD +0 Tw +(PRETTYPRINTMACROS)Tj +/TT6 1 Tf +10.2017 0 TD +0.1356 Tw +[(. For example, if )]TJ +/TT8 1 Tf +8.2979 0 TD +0 Tw +(COMMENTFLG)Tj +/TT6 1 Tf +6.001 0 TD +0.1356 Tw +[( is reset to be ")]TJ +/TT8 1 Tf +7.021 0 TD +0 Tw +(;)Tj +/TT6 1 Tf +0.6001 0 TD +0.1356 Tw +(", then)Tj +/TT8 1 Tf +-42.3639 -1.2889 TD +0.3044 Tw +(\(SETSYNTAX ; * FILERDTBL\))Tj +/TT6 1 Tf +17.116 0 TD +0.1267 Tw +[( should be performed, and \()]TJ +/TT8 1 Tf +12.9698 0 TD +0.3044 Tw +(; . PRINTCOMMENT\))Tj +/TT6 1 Tf +10.8106 0 TD +0.1267 Tw +[( added to)]TJ +/TT8 1 Tf +-40.8963 -1.2889 TD +0 Tw +(PRETTYPRINTMACROS)Tj +/TT6 1 Tf +10.2017 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 257.6 Tm +(Converting Comments to Lower Case)Tj +/TT6 1 Tf +9 0 0 9 126 233.94 Tm +0.2633 Tw +(This section is for users using terminals without lower case, who nevertheless would like their)Tj +0 -1.2222 TD +0.0522 Tw +[(comments to be converted to lower case for more readable listings. If the second atom in a comment)]TJ +T* +0 Tw +(is )Tj +/TT8 1 Tf +1.036 0 TD +(%%)Tj +/TT6 1 Tf +1.2002 0 TD +0.0711 Tw +(, the text of the comment is converted to lower case so that it looks like English instead of Lisp.)Tj +-2.2361 -1.2889 TD +0 Tw +(Note that comments are converted only when they are actually written to a file by )Tj +/TT8 1 Tf +36.4233 0 TD +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +(.)Tj +-43.0244 -2.9556 TD +0.0722 Tw +[(The algorithm for conversion to lower case is the following: If the first character in an atom is )]TJ +/TT8 1 Tf +42.9953 0 TD +0 Tw +(^)Tj +/TT6 1 Tf +0.6001 0 TD +0.0722 Tw +(, do)Tj +-43.5954 -1.2889 TD +0.1211 Tw +(not change the atom \(but remove the )Tj +/TT8 1 Tf +17.3864 0 TD +0 Tw +(^)Tj +/TT6 1 Tf +0.6001 0 TD +0.1211 Tw +[(\). If the first character is )]TJ +/TT8 1 Tf +11.7867 0 TD +0 Tw +(%)Tj +/TT6 1 Tf +0.6001 0 TD +0.1211 Tw +(, convert the atom to lower case.)Tj +-30.3733 -1.2889 TD +0.2533 Tw +(Note that the user must type )Tj +/TT8 1 Tf +14.4228 0 TD +0 Tw +(%%)Tj +/TT6 1 Tf +1.2002 0 TD +0.2533 Tw +[( as )]TJ +/TT8 1 Tf +1.9305 0 TD +0 Tw +(%)Tj +/TT6 1 Tf +0.6001 0 TD +0.2533 Tw +[( is the escape character. If the atom \(minus any trailing)]TJ +-18.1536 -1.2889 TD +0.0033 Tw +(punctuation marks\) is an Interlisp word \(i.e., is a bound or free variable for the function containing the)Tj +0 -1.2222 TD +0.1189 Tw +(comment, or has a top level value, or is a defined function, or has a non-)Tj +/TT8 1 Tf +33.6271 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1189 Tw +[( property list\), do not)]TJ +-35.4274 -1.2889 TD +0.2589 Tw +[(change it. Otherwise, convert the atom to lower case. Conversion only affects the upper case)]TJ +0 -1.2222 TD +0.16 Tw +(alphabet, i.e., atoms already converted to lower case are not changed if the comment is converted)Tj +T* +0.1911 Tw +(again. When converting, the first character in the comment and the first character following each)Tj +T* +0.0367 Tw +[(period are left capitalized. After conversion, the comment is physically modified to be the lower case)]TJ +T* +0.19 Tw +(text minus the )Tj +/TT8 1 Tf +7.1374 0 TD +0 Tw +(%%)Tj +/TT6 1 Tf +1.2002 0 TD +0.19 Tw +[( flag, so that conversion is thus only performed once \(unless the user edits the)]TJ +-8.3376 -1.2889 TD +0 Tw +(comment inserting additional upper case text and another )Tj +/TT8 1 Tf +25.894 0 TD +(%%)Tj +/TT6 1 Tf +1.2002 0 TD +( flag\).)Tj +ET +endstream +endobj +138 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +140 0 obj +<< +/Length 6331 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-41)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT12 1 Tf +9 0 0 9 102 568.26 Tm +(LCASELST)Tj +/F1 1 Tf +10 0 0 10 145.2 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 568.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0689 Tw +(Words on )Tj +/TT8 1 Tf +4.7413 0 TD +0 Tw +(LCASELST)Tj +/TT6 1 Tf +4.8008 0 TD +0.0689 Tw +[( will always be converted to lower case. )]TJ +/TT8 1 Tf +18.6547 0 TD +0 Tw +(LCASELST)Tj +/TT6 1 Tf +4.8008 0 TD +0.0689 Tw +[( is initialized to)]TJ +-32.9975 -1.2889 TD +0.1389 Tw +(contain words which are Interlisp functions but also appear frequently in comments as)Tj +0 -1.2222 TD +0.2289 Tw +(English words \()Tj +/TT8 1 Tf +7.4373 0 TD +0 Tw +(AND)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7289 0 TD +(EVERY)Tj +/TT6 1 Tf +3.0005 0 TD +(, )Tj +/TT8 1 Tf +0.7289 0 TD +(GET)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7289 0 TD +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +(, )Tj +/TT8 1 Tf +0.7289 0 TD +(LAST)Tj +/TT6 1 Tf +2.4004 0 TD +0.2289 Tw +(, )Tj +/TT8 1 Tf +1.2078 0 TD +0 Tw +(LENGTH)Tj +/TT6 1 Tf +3.6006 0 TD +(, )Tj +/TT8 1 Tf +0.7289 0 TD +(LIST)Tj +/TT6 1 Tf +2.4004 0 TD +0.2289 Tw +[(, etc.\). Therefore, if one)]TJ +-28.4921 -1.2889 TD +0.0011 Tw +(wished to type a comment including the lisp fuction )Tj +/TT8 1 Tf +23.3279 0 TD +0 Tw +(GO)Tj +/TT6 1 Tf +1.2002 0 TD +0.0011 Tw +(, it would be necessary to type )Tj +/TT15 1 Tf +13.6591 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(GO)Tj +/TT6 1 Tf +-38.7902 -1.2889 TD +(in order that it might be left in upper case.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(UCASELST)Tj +/F1 1 Tf +10 0 0 10 145.2 483.58 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 483.58 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2689 Tw +(Words on )Tj +/TT8 1 Tf +5.1413 0 TD +0 Tw +(UCASELST)Tj +/TT6 1 Tf +4.8008 0 TD +0.2689 Tw +[( \(that do not appear on )]TJ +/TT8 1 Tf +11.9957 0 TD +0 Tw +(LCASELST)Tj +/TT6 1 Tf +4.8008 0 TD +0.2689 Tw +(\) will be left in upper case.)Tj +/TT8 1 Tf +-26.7385 -1.2889 TD +0 Tw +(UCASELST)Tj +/TT6 1 Tf +4.8008 0 TD +( is initialized to )Tj +/TT8 1 Tf +7.04 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-16.3078 -2.5422 TD +(ABBREVLST)Tj +/F1 1 Tf +10 0 0 10 150.6 432.5 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 432.5 Tm +([Variable])Tj +/TT8 1 Tf +-35.6011 -1.8444 TD +(ABBREVLST)Tj +/TT6 1 Tf +5.4009 0 TD +0.0667 Tw +[( is used to distinguish between abbreviations and words that end in periods.)]TJ +-5.4009 -1.2889 TD +0.1344 Tw +(Normally, words that end in periods and occur more than halfway to the right margin)Tj +0 -1.2222 TD +0.1611 Tw +[(cause carriage-returns. Furthermore, during conversion to lowercase, words ending in)]TJ +T* +0.0844 Tw +(periods, except for those on )Tj +/TT8 1 Tf +12.8729 0 TD +0 Tw +(ABBREVLST)Tj +/TT6 1 Tf +5.4009 0 TD +0.0844 Tw +(, cause the first character in the next word to be)Tj +-18.2738 -1.2889 TD +0.0111 Tw +(capitalized. )Tj +/TT8 1 Tf +5.6062 0 TD +0 Tw +(ABBREVLST)Tj +/TT6 1 Tf +5.4009 0 TD +0.0111 Tw +[( is initialized to the upper and lower case forms of )]TJ +/TT8 1 Tf +22.5226 0 TD +0 Tw +(ETC)Tj +/TT6 1 Tf +1.8003 0 TD +(., )Tj +/TT8 1 Tf +0.7611 0 TD +(I)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(E)Tj +/TT6 1 Tf +0.6001 0 TD +0.0111 Tw +(., and)Tj +/TT8 1 Tf +-37.5413 -1.2889 TD +0 Tw +(E)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +0.25 0 TD +(G)Tj +/TT6 1 Tf +0.6001 0 TD +(..)Tj +/TT4 1 Tf +10 0 0 10 78 329.16 Tm +(Special Prettyprint Controls)Tj +/TT12 1 Tf +9 0 0 9 102 309.22 Tm +(PRETTYTABFLG)Tj +/F1 1 Tf +10 0 0 10 166.8 309.22 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 309.22 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0256 Tw +(In order to save space on files, tabs are used instead of spaces for the inital spaces on each)Tj +0 -1.2222 TD +0.0033 Tw +(line, assuming that each tab corresponds to 8 spaces. This results in a reduction of file size)Tj +T* +0 Tw +(by about 30%. Tabs are not used if )Tj +/TT8 1 Tf +15.6362 0 TD +(PRETTYTABFLG)Tj +/TT6 1 Tf +7.2012 0 TD +( is set to )Tj +/TT8 1 Tf +3.8159 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( \(initially )Tj +/TT8 1 Tf +4.2524 0 TD +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(\).)Tj +/TT12 1 Tf +-35.9728 -2.5422 TD +(#RPARS)Tj +/F1 1 Tf +10 0 0 10 134.4 247.74 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 247.74 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1789 Tw +[(Controls the number of right parentheses necessary for square bracketing to occur. If)]TJ +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(#RPARS = NIL)Tj +/TT6 1 Tf +7.2012 0 TD +(, no brackets are used. )Tj +/TT8 1 Tf +10.2959 0 TD +(#RPARS)Tj +/TT6 1 Tf +3.6006 0 TD +( is initialized to 4.)Tj +/TT12 1 Tf +-23.7643 -2.5422 TD +(FIRSTCOL)Tj +/F1 1 Tf +10 0 0 10 145.2 197.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 197.26 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.2344 Tw +[(The starting column for comments. Comments run between )]TJ +/TT8 1 Tf +29.0172 0 TD +0 Tw +(FIRSTCOL)Tj +/TT6 1 Tf +4.8008 0 TD +0.2344 Tw +[( and the line)]TJ +-33.818 -1.2889 TD +0.04 Tw +(length set by )Tj +/TT8 1 Tf +6.0248 0 TD +0 Tw +(LINELENGTH)Tj +/TT6 1 Tf +6.001 0 TD +0.04 Tw +[( \(see Chapter 25\). If a word in a comment ends with a ")]TJ +/TT8 1 Tf +25.0214 0 TD +0 Tw +(.)Tj +/TT6 1 Tf +0.6001 0 TD +0.04 Tw +(" and)Tj +-37.6473 -1.2889 TD +0.0133 Tw +(is not on the list )Tj +/TT8 1 Tf +7.3328 0 TD +0 Tw +(ABBREVLST)Tj +/TT6 1 Tf +5.4009 0 TD +0.0133 Tw +(, and the position is greater than halfway between )Tj +/TT8 1 Tf +22.4711 0 TD +0 Tw +(FIRSTCOL)Tj +/TT6 1 Tf +-35.2047 -1.2889 TD +(and )Tj +/TT8 1 Tf +2.0384 0 TD +(LINELENGTH)Tj +/TT6 1 Tf +6.001 0 TD +0.0956 Tw +[(, the next word in the comment begins on a new line. Also, if a list is)]TJ +-8.0394 -1.2889 TD +0.09 Tw +(encountered in a comment, and the position is greater than halfway, the list begins on a)Tj +0 -1.2222 TD +0 Tw +(new line.)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(PRETTYLCOM)Tj +/F1 1 Tf +10 0 0 10 156 100.98 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 100.98 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0167 Tw +(If a comment has more than )Tj +/TT8 1 Tf +12.7113 0 TD +0 Tw +(PRETTYLCOM)Tj +/TT6 1 Tf +6.001 0 TD +0.0167 Tw +[( elements \(using )]TJ +/TT8 1 Tf +7.5319 0 TD +0 Tw +(COUNT)Tj +/TT6 1 Tf +3.0005 0 TD +0.0167 Tw +(\), it is printed starting at)Tj +-29.2447 -1.2889 TD +0.1644 Tw +(column 10, instead of )Tj +/TT8 1 Tf +10.3482 0 TD +0 Tw +(FIRSTCOL)Tj +/TT6 1 Tf +4.8008 0 TD +0.1644 Tw +[(. Comments are also printed starting at column 10 if)]TJ +-15.149 -1.2889 TD +0 Tw +(their second element is also a )Tj +/TT8 1 Tf +13.1533 0 TD +(*)Tj +/TT6 1 Tf +0.6001 0 TD +(, i.e., comments of the form )Tj +/TT8 1 Tf +12.2593 0 TD +(\(* * --\))Tj +/TT6 1 Tf +4.8008 0 TD +(.)Tj +ET +endstream +endobj +141 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT15 23 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +144 0 obj +<< +/Length 6876 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-42)Tj +/TT10 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +5.4 -4.374 TD +(#)Tj +/TT12 1 Tf +9 0 0 9 156.001 568.26 Tm +(CAREFULCOLUMNS)Tj +/F1 1 Tf +10 0 0 10 231.6 568.26 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 568.26 Tm +([Variable])Tj +-35.6011 -1.8833 TD +0.1878 Tw +(In the interests of efficiency, )Tj +/TT8 1 Tf +13.582 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1878 Tw +[( approximates the number of characters in)]TJ +-20.183 -1.2889 TD +0.0089 Tw +(each atom, rather than calling )Tj +/TT8 1 Tf +13.4268 0 TD +0 Tw +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0089 Tw +[(, when computing how much will fit on a line. This)]TJ +-17.0274 -1.2889 TD +0.0522 Tw +[(procedure works satisfactorily in most cases. However, users with unusually long atoms)]TJ +0 -1.2222 TD +0.0556 Tw +(in their programs, e.g., such as produced by )Tj +/TT8 1 Tf +20.1012 0 TD +0 Tw +(CLISPIFY)Tj +/TT6 1 Tf +4.8008 0 TD +0.0556 Tw +(, may occasionlly encounter some)Tj +-24.902 -1.2889 TD +0.0244 Tw +(glitches in the output produced by )Tj +/TT8 1 Tf +15.7043 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0244 Tw +[(. The value of )]TJ +/TT8 1 Tf +6.6129 0 TD +0 Tw +(#CAREFULCOLUMNS)Tj +/TT6 1 Tf +9.0015 0 TD +0.0244 Tw +[( tells)]TJ +/TT8 1 Tf +-37.9198 -1.2889 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1578 Tw +[( how many columns \(counting from the right hand margin\) in which to)]TJ +-6.6011 -1.2889 TD +0.0389 Tw +(actually compute )Tj +/TT8 1 Tf +7.9708 0 TD +0 Tw +(NCHARS)Tj +/TT6 1 Tf +3.6006 0 TD +0.0389 Tw +[( instead of approximating. Setting )]TJ +/TT8 1 Tf +15.749 0 TD +0 Tw +(#CAREFULCOLUMNS)Tj +/TT6 1 Tf +9.0015 0 TD +0.0389 Tw +[( to 20 or)]TJ +-36.3219 -1.2889 TD +0.3856 Tw +(30 will eliminate the glitches, although it will slow down )Tj +/TT8 1 Tf +29.193 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.3856 Tw +[( slightly.)]TJ +/TT8 1 Tf +-35.794 -1.2889 TD +0 Tw +(#CAREFULCOLUMNS)Tj +/TT6 1 Tf +9.0015 0 TD +( is initially 0.)Tj +/TT8 1 Tf +-11.6681 -2.5422 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(WIDEPAPER)Tj +/TT8 1 Tf +5.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +/F1 1 Tf +10 0 0 10 231.0044 436.23 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 492.6299 436.23 Tm +([Function])Tj +/TT8 1 Tf +-35.4033 -1.8444 TD +0.1178 Tw +(\(WIDEPAPER T\))Tj +/TT6 1 Tf +7.919 0 TD +0.0489 Tw +[( sets )]TJ +/TT8 1 Tf +2.2506 0 TD +0 Tw +(FILELINELENGTH)Tj +/TT6 1 Tf +8.4014 0 TD +0.0489 Tw +[( \(see Chapter 25\), )]TJ +/TT8 1 Tf +8.0857 0 TD +0 Tw +(FIRSTCOL)Tj +/TT6 1 Tf +4.8008 0 TD +0.0489 Tw +(, and )Tj +/TT8 1 Tf +2.5406 0 TD +0 Tw +(PRETTYLCOM)Tj +/TT6 1 Tf +-33.9982 -1.2889 TD +0.4356 Tw +(to large values appropriate for pretty printing files to be listed on wide paper.)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(\(WIDEPAPER\))Tj +/TT6 1 Tf +6.6011 0 TD +0.1167 Tw +[( restores these parameters to their initial values. )]TJ +/TT8 1 Tf +22.6691 0 TD +0 Tw +(WIDEPAPER)Tj +/TT6 1 Tf +5.4009 0 TD +0.1167 Tw +[( returns the)]TJ +-34.6711 -1.2889 TD +0 Tw +(previous setting of )Tj +/TT14 1 Tf +8.5171 0 TD +(FLG)Tj +/TT6 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-12.9841 -2.5422 TD +(PRETTYFLG)Tj +/F1 1 Tf +10 0 0 10 198.6 362.55 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 362.55 Tm +([Variable])Tj +-35.6011 -1.8444 TD +(If )Tj +/TT8 1 Tf +0.9666 0 TD +(PRETTYFLG)Tj +/TT6 1 Tf +5.4009 0 TD +0.0467 Tw +[( is )]TJ +/TT8 1 Tf +1.3082 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.5467 0 TD +(PRINTDEF)Tj +/TT6 1 Tf +4.8008 0 TD +0.0467 Tw +[( uses )]TJ +/TT8 1 Tf +2.523 0 TD +0 Tw +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +0.0467 Tw +[( instead of prettyprinting. This is useful for)]TJ +-20.3469 -1.2889 TD +0.0367 Tw +(producing a fast symbolic dump \(see the )Tj +/TT8 1 Tf +18.5062 0 TD +0 Tw +(FAST)Tj +/TT6 1 Tf +2.4004 0 TD +0.0367 Tw +[( option of )]TJ +/TT8 1 Tf +4.631 0 TD +0 Tw +(MAKEFILE)Tj +/TT6 1 Tf +4.8008 0 TD +0.0367 Tw +[( in Chapter 17\). Note)]TJ +-30.3383 -1.2889 TD +0.1255 Tw +(that the file loads the same as if it were prettyprinted. )Tj +/TT8 1 Tf +25.6375 0 TD +0 Tw +(PRETTYFLG)Tj +/TT6 1 Tf +5.4009 0 TD +0.1256 Tw +[( is initially set to )]TJ +/TT8 1 Tf +8.1131 0 TD +0 Tw +(T)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +/TT8 1 Tf +-39.7516 -1.2889 TD +(PRETTYFLG)Tj +/TT6 1 Tf +5.4009 0 TD +( should not be set to )Tj +/TT8 1 Tf +9.144 0 TD +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +( if comment pointers are being used.)Tj +/TT12 1 Tf +-19.0119 -2.5422 TD +(CLISPIFYPRETTYFLG)Tj +/F1 1 Tf +10 0 0 10 241.8 288.27 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 288.27 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.1222 Tw +(Used to inform )Tj +/TT8 1 Tf +7.31 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1222 Tw +[( to call )]TJ +/TT8 1 Tf +3.5146 0 TD +0 Tw +(CLISPIFY)Tj +/TT6 1 Tf +4.8008 0 TD +0.1222 Tw +[( on selected function definitions before)]TJ +-22.2265 -1.2889 TD +0 Tw +(printing them \(see Chapter 21\).)Tj +/TT12 1 Tf +-2.6667 -2.4756 TD +(PRETTYPRINTMACROS)Tj +/F1 1 Tf +10 0 0 10 241.8 237.79 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 237.79 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0678 Tw +(An association-list that enables the user to control the formatting of selected expressions.)Tj +/TT8 1 Tf +0 -1.2222 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.14 Tw +[( of each expression being )]TJ +/TT8 1 Tf +12.032 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.14 Tw +(ed is looked up on )Tj +/TT8 1 Tf +9.1155 0 TD +0 Tw +(PRETTYPRINTMACROS)Tj +/TT6 1 Tf +10.2017 0 TD +(,)Tj +-39.7506 -1.2889 TD +0.03 Tw +[(and if found, CDR of the corresponding entry is applied to the expression. If the result of)]TJ +0 -1.2222 TD +0.2878 Tw +(this application is )Tj +/TT8 1 Tf +8.9244 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +(, )Tj +/TT8 1 Tf +0.7878 0 TD +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.2878 Tw +[( ignores the expression; i.e., it prints nothing,)]TJ +-18.1135 -1.2889 TD +[(assuming that the prettyprintmacro has done any desired printing. If the result of)]TJ +0 -1.2222 TD +0.2611 Tw +(applying the prettyprint macro is non-)Tj +/TT8 1 Tf +18.3256 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.2611 Tw +(, the result is prettyprinted in the normal)Tj +-20.1259 -1.2889 TD +0.2989 Tw +[(fashion. This gives the user the option of computing some other expression to be)]TJ +0 -1.2222 TD +0 Tw +(prettyprinted in its place.)Tj +0 -2 TD +0.2856 Tw +[(Note: "prettyprinted in the normal fashion" includes processing prettyprint macros,)]TJ +4 -1.2222 TD +0.0733 Tw +(unless the prettyprint macro returns a structure )Tj +/TT8 1 Tf +21.799 0 TD +0 Tw +(EQ)Tj +/TT6 1 Tf +1.2002 0 TD +0.0733 Tw +[( to the one it was handed, in)]TJ +-22.9992 -1.2889 TD +0 Tw +(which case the potential recursion is broken.)Tj +/TT12 1 Tf +-6.6667 -2.4756 TD +(PRETTYPRINTYPEMACROS)Tj +/F1 1 Tf +10 0 0 10 258 79.51 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 494.41 79.51 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0533 Tw +(A list of elements of the form )Tj +/TT8 1 Tf +13.4778 0 TD +0.1289 Tw +(\(TYPENAME . FN\))Tj +/TT6 1 Tf +9.2592 0 TD +0.0533 Tw +[(. For types other than lists and atoms,)]TJ +-22.7371 -1.2889 TD +0.9544 Tw +(the type name of each datum to be prettyprinted is looked up on)Tj +ET +endstream +endobj +145 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +/TT14 16 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +147 0 obj +<< +/Length 2697 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(25-43)Tj +/TT10 1 Tf +10 0 0 10 408 612 Tm +(USER I/O PACKAGES)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(PRETTYPRINTYPEMACROS)Tj +/TT6 1 Tf +12.002 0 TD +0.2111 Tw +(, and if found, the corresponding function is applied to the)Tj +-12.002 -1.2889 TD +0 Tw +(datum about to be printed, instead of simply printing it with )Tj +/TT8 1 Tf +27.0532 0 TD +(PRIN2)Tj +/TT6 1 Tf +3.0005 0 TD +(.)Tj +/TT12 1 Tf +-32.7204 -2.5422 TD +(PRETTYEQUIVLST)Tj +/F1 1 Tf +10 0 0 10 177.6 535.06 Tm +( )Tj +/TT6 1 Tf +9 0 0 9 446.41 535.06 Tm +([Variable])Tj +-35.6011 -1.8444 TD +0.0422 Tw +(An association-list that tells )Tj +/TT8 1 Tf +12.6127 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.0422 Tw +[( to treat a )]TJ +/TT8 1 Tf +4.5673 0 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.0422 Tw +(-of-form the same as some other)Tj +/TT8 1 Tf +-25.5814 -1.2889 TD +0 Tw +(CAR)Tj +/TT6 1 Tf +1.8003 0 TD +0.16 Tw +[(-of-form. For example, if )]TJ +/TT8 1 Tf +12.1218 0 TD +0.3844 Tw +(\(QLAMBDA . LAMBDA\))Tj +/TT6 1 Tf +11.5706 0 TD +0.16 Tw +[( appears on )]TJ +/TT8 1 Tf +5.8579 0 TD +0 Tw +(PRETTYEQUIVLST)Tj +/TT6 1 Tf +8.4014 0 TD +(,)Tj +-39.752 -1.2889 TD +0.3444 Tw +(then expressions beginning with )Tj +/TT8 1 Tf +16.0135 0 TD +0 Tw +(QLAMBDA)Tj +/TT6 1 Tf +4.2007 0 TD +0.3444 Tw +[( are prettyprinted the same as )]TJ +/TT8 1 Tf +15.5061 0 TD +0 Tw +(LAMBDA)Tj +/TT6 1 Tf +3.6006 0 TD +(s.)Tj +-39.3209 -1.2889 TD +(Currently, )Tj +/TT8 1 Tf +5.4164 0 TD +(PRETTYEQUIVLST)Tj +/TT6 1 Tf +8.4014 0 TD +0.58 Tw +[( only allows \(i.e., supports in an interesting way\))]TJ +-13.8178 -1.2889 TD +0.1467 Tw +(equivalences to forms that )Tj +/TT8 1 Tf +12.4705 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1467 Tw +[( internally handles. Equivalence to forms for)]TJ +-19.0715 -1.2889 TD +0.2444 Tw +(which the user has specified a prettyprint macro should be made by adding further)Tj +0 -1.2222 TD +0 Tw +(entries to )Tj +/TT8 1 Tf +4.3481 0 TD +(PRETTYPRINTMACROS)Tj +/TT12 1 Tf +-7.0148 -2.4 TD +(CHANGECHAR)Tj +/TT6 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.8444 TD +0.1689 Tw +(If non-)Tj +/TT8 1 Tf +3.1318 0 TD +0 Tw +(NIL)Tj +/TT6 1 Tf +1.8003 0 TD +0.1689 Tw +(, and )Tj +/TT8 1 Tf +2.7806 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +6.6011 0 TD +0.1689 Tw +[( is printing to a file or display terminal, )]TJ +/TT8 1 Tf +19.0874 0 TD +0 Tw +(PRETTYPRINT)Tj +/TT6 1 Tf +-33.4012 -1.2889 TD +(prints )Tj +/TT8 1 Tf +2.8969 0 TD +(CHANGECHAR)Tj +/TT6 1 Tf +6.001 0 TD +0.0278 Tw +[( in the right hand margin while printing those expressions marked by)]TJ +-8.8979 -1.2889 TD +0 Tw +(the editor as having been changed \(see Chapter 16\). )Tj +/TT8 1 Tf +23.2725 0 TD +(CHANGECHAR)Tj +/TT6 1 Tf +6.001 0 TD +( is initially )Tj +/TT8 1 Tf +4.8843 0 TD +(|)Tj +/TT6 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +148 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 14 0 R +/TT12 15 0 R +>> +/ExtGState << +/GS1 9 0 R +>> +>> +endobj +24 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 75 +/Height 62 +/BitsPerComponent 1 +/ImageMask true +/Length 621 +>> +stream +}w}~~^o_oow> +stream +?wǎǗw߻vݻvw߿~߿vwvw߿vݻvwwǎwvwwŘww߹w7ww߿wwwwww߿w7wwvo;ooo`poo`o:?o`? +endstream +endobj +9 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +149 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +150 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +151 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +152 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +153 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +154 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +155 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +156 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBNCHE+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 157 0 R +>> +endobj +157 0 obj +<< +/Filter /FlateDecode +/Length 20107 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8`BBiԃ4NˡfwfGf?%Z%%Rh +FnRKD>iRi nxj3>yomrBwE]X;ohQ`r Wq`]Y|7>43u42/|g2#* +#mʵ 10U'wmЎDŽBϭXaH8b&׹K [Z #`MG`>#`S [ X45MP-$Lȃ&߆mlxܹ/`\b'UXςRqf$ '4V[NwH)w.r,x;В&~; )&ӑ<FBia-ob~+:Ԥއw#CV͗^X p KH +Tͷ=2PCk+wjU)XŧH=_I'S_3g^!#\\y?! '|Ih$\xwAF:=I? f I}'f};k4GOBZ'nIxFK%}'ƠO|s^uࡔ0Nuoo}7JOAW)ۀ/L=s$@_Lgg>&uZ}4 !~XΦkeyǃkϘdh l\dcOٸڸƥ6.q+l\i*kl\mXkl\gzl`Flcڸl|99~"NzAфI*i0輄mC0Xg QլL !-џ;Z+*aoĕ }YRt=VᏙtQ!.oq[]`"Ur_Kq-a0mF72 +^HB3ոV[~tmQUтj(;4j|5H/VW<|EGIKSC?z,Sݤ]Eh UrL=<7b͟RSAU>_@gw3cE5[d5v̦V>Ex{QsO!&3 ?ʙ3 {Eqz5/y%ZѿT^k5AQӅ- hG]Qn-Vjpc M1i Y;LT! 6[@d:V(QoH؀=HDPaYB4F0zM׏;c.5 ?Mio0JM!gID ^,ByI^r[XZ$%.3%3~%[e~lj4b4ыlU7p7ۭy{ZsovMi2_pic kȕ%7tO'ebL]_Ɨ1[SV]_[=5O_jH)O _uzj<5rxVJJKKܥ/hEH.A!J)HJPa͂o)BOzv-X/.w\[N 9{*2={k/F>u ni;8u]zCEL9Pxs +Y.[GGUV'ϲG-^mqyg) ;]Dty'/lɟ)hI9>/%`঎s]>{=rޱp zccg6kBX{bfa߀1k':ܽl`88/LٹA+2rq0Z2 +*:Ok 54$ +j e:TFת*`@[Z &@W*ШC5sgWyy~Μ3.j RJF, z 墋^& LH}2*$u֑1{wkY74`taeX4R = DFk}`a!TyȈ~Q F ':u :# *P?Nloe҄ti05`cau+j?@Jt #=y2G ۔/wLv; XwUqQ˯]BF>i.UFx5?.*vV揟;۳PQq!c֧/NUG>ml_(TEduPK(BȥEX9s4St.F+;m,zdW*cg!6Yמk! R=ni=9z2g@ݲ.s>=wʞi.VĮٔgw+Z`]U?cjdf_ʎEt/ϔœ\.UvF 6yv"`[=Ĝ&+r32:BNiXR&oϗPVAe5i>}Rsx]pUKX{F6~ +PĒqy3UD,ǎ4kd''>.ndTghS1wlzN!R +5yn/\r2?) #az ˚gz*&:?2Oa׮FJĐ15D㗋'dFF`űۘQo~۪hc_2.ACϣl; 0 .Bf6&}H8 d`iƷEUӛz:8TLb\Nǔ֣cL[5f2jV{<-;qAzTtM.,\:D8UAY$_GPq{ +|\%xp7xUylO}9vkx \ߥk/OG}ٛJR 󧦶_ ²cx%K*ue}Ag}>ɘ :6G^mu=;V[5-m]+N:q+Uga(΢_wʪ>{"a&׵_G$ SZ>ؒ\u%E!lkhH5by^HMmͅ$wD} +r RjC|ہ]8EKXj#C.sQdtwd ahT n0*rE 2ةo4Ha$ٖ#9b6 lHO" U4? 2O:6NhXx(;@B +v9aLϋ̅'a,gf% !M +m>t_p!N,A yd +yxIC YI^" WH I 3"4%%rj69MCTt6G?Ut=ѕ*moh_>O2LfcD6Ϟ` R<[+7;dY]dW\ùO^O9"fO wN~''w~_QO/>󸉚̦ S&V'ቛJwPg&A,T;):"Pf-bTzPVjc0Vbxo5Ab Xz/2t_8f B,U CoV߉G.TIu:a(6x +؂aɘ͔AlDT"GW>@ņEԢG3az 5B|1} ~; ;nZm fI#KJfo+=N-%ڋ60RzoL9].W̹CY]rsF,ᒮWlLGbNuklZrԢ~QIe[ 2/ehHT6gyvsx*(ѝt mZrJPb'WodWu敦m&\.j,ˣFK$۰,Zum*j+ =@-f42f9+)^Es/KWuq'h_dYmB2sKug<j -?Z#bZ[9sQ%jrYFUdMK!^Dig,1򑩞z &AKPtеZ"EZ+YE1u n"ZJ=P=jB_F_CGG K[4BK* R +n ŽxO)<_o~ U|/""">W,yԓB3+ Ysp.[m䚹/qOrAn}n~gposw۷?oRV̾]lP+N&6N,:J"#V:hgĤ-љLkg@ZcҎ;QƟs/ ƨsϞݟs{>abMYd]&ϔ9rH^"A9"!;cGr|A()_ +QdEQJx2ILUJRGydܑ@x2UH8P :&fPE%f#T XJ,@lhqĊT88j+Q1dž~lD4d6h–5y{c+ +*oa#fj&bۇ=H0HJT|!/qLxMl}D!8hVZI"+b*u/đlyh~UsouYY扵aW֚c0Tͅ'k>hn̳-2-{:8e[J'v{!=x"Az_+lyo!ͫ/q|t‘=)5$IUoǤ@fa5Yd{DU˥ibnh;IyS^q<&-ҦKfMDZ[E$gUjA $hg6}]M|L&нq-_xLtW6|?j,XPkbu $]߯BH-F'ӆgO^]3ue I7j3c^r?=⠱1A?gF823O>ܱn(?pR*VA[n mjDX7/ +^$6N\Q'.UkS=C4m[h 3pUcHiHK I}5iӡsjgh;mezTD#anA8u%FR$@"|Ra2)0YUdVe, ~ˑ[W":lFN :'O0O +nN"n2LFKq%ϒ䧤Hj+d-#(2d;i#^6#yr#$&W:1(PF-AԅCSd:fә-Z@t#JېAnGQzCEv$H>I)[̬YT--GvV'E&9Z~/idigiU:25` ٚ٘9Y"Kane$=6elrُ(@Hĥ$}LȝbB%+p ŭV|ÌHE;&T0*/ Cq{q5[R6 E6,rXk3۰_gƱd:ςOキٽۄ xG8D.A$c$k%q0R j"D4#0?3t/0a&#ڑVGZavFmKr vj3n?'TC{ -8wtXh V*# ."͘ZTrrvvWv&->^͋N-ΰ͸Ƴ n۟[W*:o6g]~暡e<\f˛=7 Q7^s,PL{/9.x#J w,̜ǾzWή{dzx{x}5&ho,i7OtBhwUsAu(yݝs5OG׶d rڭQ47΋x9Н?W/jR5E\4nꈉ6o-48laXx/ {~gۥPޔ]7߰jf~Iko&7gO|ش +ȏ "PL銳wl<\iROQW\Sof*?J!aThR4{2KȦ=0&S}5fUD3qtd[Ңj9e7=G +I]۳"QzFt^`R6,jZ6MձwX5lj:W3ZP}uBv'S@-v=9rC>"(=5=JQRwc$&T!Ơ8oșhu{kݖ WGE¨Bqsg{Q%(RZgGTJJh#XzV}FQ4eDfyULT\"n↙ 枔.ڑ *C[dPI$fx у`&؁q&Ȯhg3C%)AA֪Tv$4,ja|*/#EfݽJH^4rrBF;ox,HgQ Q8nvHX"CNykA-G%&$%$MrT8l;sB7@eQ1fY45E{H#baf"@ӅN9%S+R,!0/HV6~wR 6:]F{bnkg*5lK"<ߐt_ӯr^6,gxYuckfYҴ6ϧ܋1z "b 6L,\,I"qgCcϳ9۰6E؜OMuc1{t;aDŠsJTJ83^ b(anL%z{,,cTբ( H賛Ӄý9Һa7*CV6bAdTM$J0Wؖy@8fy:\~7 3gOIbVf<|@ ,${skmb4bAs9X!ݑ +|,toR[X CLX X3g7JpH`ku 7zlyKM.8 U]]yD5܇*`jyC ctir~DT4;*Kꃠ]Ro/6 7u9̑KnㄨH̑R[!aD +$J@B/Qs_WHԕ}-HH zLھYjPe +r qmyvgg3}| +-Y>h6p;pR:]z]A?L)Po;=AGQ@CϢYԤ[^ě>Vt<{BS/ޞK<ll848q̒yUZX:)nLnRz wAZ(5g޼vZ'&ûs\J7*JQZ8NɮhEQ܂ҵ6WOxe`@PJdvA y*bZ郡Eu}.Œbgk?Oe:N阕]Jym*ә++ȩ{mW>Cz&> ÐVmm0[x U<%tʬ4D \mLs^4Mm^N)i0ih'#-8ZL)eHUsAhấ'L=0q-ZXhq$-_sςMf:#Y#֩•GA?")V\Oq.'5O57Y-UYn~xG S,Q ө --.DDZxh1Pp.jޥ =Lө0^p`MQ}Aiay8ʩZHyo:GZwHV9cWn8tjSH~պOxc5̩_h%,0{Z%̾ӏˇL̩8evdq Zflaezv)ZL`U֝҂|^3,'[h҂`FYƠ+Suʖ$ͼ4,6)sj*af+wn:f +A/фƈ5"c +Ad%-v;I)slak,f +װTvNC _V 5+H ܏&Q ZB|=߱7I4 +-Uw!Xj-G-d'E E0GAz|'Ο_6Yn k~}$SXY얱[XjA u#̕,u|;^.WYXc-Xϴ"q~C>Yc'ϴoi72gsssxSKYwb6Tu1~&Xꃤu'a9 ړs,ˤ*;$-EIZX^i06@@22XAC9 IZP7Ŧx9ҌZk.Q r̩hujՄy֤G[%6g `##'2 2k~ EMG6NCv{.1@ˍTϢѠ /b/wB z S["@Io`p#/J?d^wO9p}W=K!`eh/ ;>-T{bE܅!q'MIbzl`][ XnO>Wt|9᰽E%cV@hխCyAo'],O Uun|DnqM}֍qЂqriaȻ)^`1uxS^GipXoZ4'>ڎ׷?-vwwZF835&' ckgG x~ o_:F&#ȣd|\"łdB;b(cʸi%)ܽV(/(Z:?݅EQ YjeVkĺ%4="jyhSk=`L7Hצh㨨UcL|&NJ\5j!S T P~*S\eJyG@فi^rD9U>W\R:UQ5}U A`5CTG( z-x:??`Ub0$"*QhJ+Ee*."`"F0I$@UF$J {G*~FcGX!D0a? J g0>G @ed9,R~R 䥡<wXh~0r3<"f=bSP-|¥p|Gb0RaFC.(w#ZBЧ@N< oojCA|bc,^9 v}maѓmMgn?]/[YpT ^;tJк U+>vTl\iU+ˮުY_hX>& %omybc)^%zȕ9ΔWf\J߸yd_3ZZJ+<޽}`~<;ύZW6\LA~u]Ue'Ʋbin;:Ur߭҂_x Y>̫8".OD{oYߐW}D Zs~ubf4䦼lnY騸#_{n X -NT%WZ]NXjXh4!bEò;kWmVncqu˧?϶<fV&kjČibSy֕oЌCX{t{nYq&WLo| odj++ypDEdLq%%N'Fw7d)+0. 3- ]q~?e/;lȿ{ᣓhE E qj<$SkA0O0 dHȃqdxǥr Plx^*{43a8y8pڡ3"%q$$}N$I.K&Id2)"H))#/٤,,$dw 7di"Z7";^r'3 /i'_SB%<©F0SL4Nx]NL|kRk,rQ?Fwa.yS3z^Wmh' 0昡,H~,1 gIq6=2B>T>E)$$)Ch1*1!,.aYGU=xU@k X* +|IWҵJ^ +ӕs}O$KbbD)|+6E8Gr>eIhjFE^J.ǒTOJ8{?ThS%)qfSXGAv8#dO~?_3lJṴH16BhH`-ԪDռn6R>Սӯ()Nti\w%.0%pu!BYLG@NfslvWŢ9mX˅gsO J<^o@O-hȒr]K0$X,8OXdXŕ* OI[:>Q+2{~~(k mO9n-P)g@1P&߉ZK3z:chA)l G%;oF\Y:Tw]}ce<30샲 øi6ÒӴMoNs"IӴI綽a||GyQqEAAde_܅ewrN d;rC .`7dǝk[Ls=?}Ϙ"ɁL!( fv+Osׯ }p<7[;r; 7vcYk? ȵǻ|n_c~www~ lpf k/A%x_W 䅾zjtWr`3_PWntoBwsb9˿8r|r/,bݏ^W?2丼=ޅ'4}J;n:M_ {={KK{in뮓1Q@,1S4:'ȶlMztWv0l'z*XSkE7:H{s}+*b5QBp;6!Kdlqu)eCeLjX<cF.EBUp+k9{,GXGL`Kӭ4;5_X9rg;Sb$E:LnWZ{rO=L2cט&q6w0rZMQ,؟I¢Uou=w}. +u8)g+q'D(Vrܶ5דVKcXr}DJdĵzFr*)JV*Sjm-y +;UHB :|-a8μ7鎂&WNgDd⥉Ѥ S*L#;m[A:bЙbN([Ϗ_Ywpw~GE}]q7Q Id:JbF2#RZTP$Dq5 VA"҈ܒO0*Fm`}ߙ9ӓywr߻{Sps +]޼4fՖ1eVmN~h|LG&[L4[DThk}p]MY9yC:y'jN)]V)%'M")}ݺr-z9{ Ujג%v{>hhw[Ru鴀~Gb*>7}[]֙+5't[vY3~X8GARL__K(i~C̭Vw:u&eJÆ[evmّos|p\H<5 N#OL86jXYš}n57o?4{a o1jS}[l|uhq彨TnWϏ 1d +Ǔ7Wo91A7CZvv?Qz$uмyc[—m#!-`3xWλm)9![M ^߂߀__C.Awe55BnQhB>փ%`xc;1XjP,ʚl`B#S%UTR7䲸ꮠDf2l䭶$G}P^[99aiQ"3EQ ˻Ѧ,?E!O ~'_! GN'42mCdf~k" k o7}L5:hւkj\+QwLQXӏP'\WbLL9i1-|W$%T%Y*( 9CY'JdЈh-Χy5ߚy zZ +L3)?%O}Ǻ4~&42MGTp8 &`8ACs,D0 ƁcR! Ƃ` yG߀uDtp a6! C![˼< A+)@phEL?2 "KL/}G2y~hzC4[; tщ9EBJ.M¢(dX@MW A;Pj)ᯫL8gɠ +BƟ³OamSˏ$i)1-+XN

\ӗ[ߏ5/sR8p<q̉8$CX0UO=>lNzv4)d} BzNćQ֜ࣛ:LSOUva٩I#_._turr gM:Ӈ4 ~ΐr%{/("k*ΨjNiԒZpmu{A&drv1%_zj(R%-IgפTfK aCm*SXmh5Rܠ;gQkEJ6m4ٺf;Mm`$jeg(ղђZ4[]eI6; R&1q<rjj*kXcǕUVq̚m8bmwm"# c2ߛ634Q|.F}t&$|VO{l&m'%e_ 58&H"m#.PΏG%;>uXxzIx_Lآl^ 0f +endstream +endobj +158 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +159 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 158 0 R +>> +endobj +104 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 159 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 149 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 278 +0 0 556 0 0 556 0 0 0 0 0 0 0 584 0 611 +0 722 722 722 722 667 611 778 722 278 0 722 611 833 722 778 +667 0 722 667 611 722 0 944 0 667 0 0 0 0 0 0 +0 556 0 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 150 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 149 +/Widths [250 0 371 0 0 840 0 0 333 333 389 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 0 250 250 606 606 606 444 +0 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 +604 786 668 525 613 778 722 1000 667 667 667 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 606 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 151 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 +600 600 600 600 0 0 0 0 600 0 600 600 600 600 600 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 600 600 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 152 0 R +>> +endobj +14 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 278 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 778 0 278 0 667 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 153 0 R +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 125 +/Widths [600 0 0 600 0 0 0 0 600 600 600 0 600 600 600 0 +0 600 0 0 0 0 0 0 0 0 0 600 600 600 600 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 0 +0 600 0 600 600 600 600 0 600 600 0 0 600 600 600 600 +0 0 600 600 600 600 0 0 600 0 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 154 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 +0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 155 0 R +>> +endobj +23 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBNCHE+Symbol +/Encoding /Identity-H +/DescendantFonts [ 160 0 R ] +/ToUnicode 161 0 R +>> +endobj +160 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBNCHE+Symbol +/FontDescriptor 156 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +161 0 obj +<< +/Filter /FlateDecode +/Length 227 +>> +stream +HTP=O0 +<c@-@DiC=Ibg?S|F0#\,G@*pަh'gq- 6 34 9$xJɇ1Sn' h Əg/fB7oAU,%dˆq~J?Mu![l$5ڽt);mٕ(;!~82<#|m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +11 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 13 0 R +/Contents 12 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 34 0 R +/Contents 33 0 R +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 37 0 R +/Contents 36 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 10 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +49 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 51 0 R +/Contents 50 0 R +>> +endobj +52 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 54 0 R +/Contents 53 0 R +>> +endobj +55 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 57 0 R +/Contents 56 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 60 0 R +/Contents 59 0 R +>> +endobj +61 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 63 0 R +/Contents 62 0 R +>> +endobj +64 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 66 0 R +/Contents 65 0 R +>> +endobj +67 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 69 0 R +/Contents 68 0 R +>> +endobj +70 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 72 0 R +/Contents 71 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/Parent 48 0 R +/Resources 75 0 R +/Contents 74 0 R +>> +endobj +76 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 78 0 R +/Contents 77 0 R +>> +endobj +80 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 82 0 R +/Contents 81 0 R +>> +endobj +83 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 85 0 R +/Contents 84 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 88 0 R +/Contents 87 0 R +>> +endobj +89 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 91 0 R +/Contents 90 0 R +>> +endobj +92 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 94 0 R +/Contents 93 0 R +>> +endobj +95 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 97 0 R +/Contents 96 0 R +>> +endobj +98 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 100 0 R +/Contents 99 0 R +>> +endobj +101 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 103 0 R +/Contents 102 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/Parent 79 0 R +/Resources 107 0 R +/Contents 106 0 R +>> +endobj +108 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 110 0 R +/Contents 109 0 R +>> +endobj +112 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 114 0 R +/Contents 113 0 R +>> +endobj +115 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 117 0 R +/Contents 116 0 R +>> +endobj +118 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 120 0 R +/Contents 119 0 R +>> +endobj +121 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 123 0 R +/Contents 122 0 R +>> +endobj +124 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 126 0 R +/Contents 125 0 R +>> +endobj +127 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 129 0 R +/Contents 128 0 R +>> +endobj +130 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 132 0 R +/Contents 131 0 R +>> +endobj +133 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 135 0 R +/Contents 134 0 R +>> +endobj +136 0 obj +<< +/Type /Page +/Parent 111 0 R +/Resources 138 0 R +/Contents 137 0 R +>> +endobj +139 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 141 0 R +/Contents 140 0 R +>> +endobj +143 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 145 0 R +/Contents 144 0 R +>> +endobj +146 0 obj +<< +/Type /Page +/Parent 142 0 R +/Resources 148 0 R +/Contents 147 0 R +>> +endobj +162 0 obj +<< +/S /D +>> +endobj +163 0 obj +<< +/Nums [0 162 0 R ] +>> +endobj +10 0 obj +<< +/Type /Pages +/Kids [1 0 R 11 0 R 17 0 R 20 0 R 26 0 R 29 0 R 32 0 R 35 0 R 38 0 R 41 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +48 0 obj +<< +/Type /Pages +/Kids [44 0 R 49 0 R 52 0 R 55 0 R 58 0 R 61 0 R 64 0 R 67 0 R 70 0 R 73 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +79 0 obj +<< +/Type /Pages +/Kids [76 0 R 80 0 R 83 0 R 86 0 R 89 0 R 92 0 R 95 0 R 98 0 R 101 0 R 105 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +111 0 obj +<< +/Type /Pages +/Kids [108 0 R 112 0 R 115 0 R 118 0 R 121 0 R 124 0 R 127 0 R 130 0 R 133 0 R 136 0 R] +/Count 10 +/Parent 47 0 R +>> +endobj +142 0 obj +<< +/Type /Pages +/Kids [139 0 R 143 0 R 146 0 R] +/Count 3 +/Parent 47 0 R +>> +endobj +47 0 obj +<< +/Type /Pages +/Kids [10 0 R 48 0 R 79 0 R 111 0 R 142 0 R ] +/Count 43 +/MediaBox [0 0 612 792] +>> +endobj +164 0 obj +<< +/CreationDate (D:20210202102715-06'00') +/ModDate (D:20210202102715-06'00') +/Producer (Apple pstopdf) +>> +endobj +165 0 obj +<< +/Type /Catalog +/Pages 47 0 R +/PageLabels 163 0 R +>> +endobj +xref +0 166 +0000000000 65535 f +0000297617 00000 n +0000000016 00000 n +0000004067 00000 n +0000293158 00000 n +0000293873 00000 n +0000294085 00000 n +0000294536 00000 n +0000295112 00000 n +0000270807 00000 n +0000301356 00000 n +0000297698 00000 n +0000004205 00000 n +0000010063 00000 n +0000295686 00000 n +0000296000 00000 n +0000296482 00000 n +0000297782 00000 n +0000010241 00000 n +0000015067 00000 n +0000297866 00000 n +0000015209 00000 n +0000019132 00000 n +0000296957 00000 n +0000269487 00000 n +0000270248 00000 n +0000297950 00000 n +0000019357 00000 n +0000025455 00000 n +0000298034 00000 n +0000025620 00000 n +0000033389 00000 n +0000298118 00000 n +0000033567 00000 n +0000041969 00000 n +0000298202 00000 n +0000042126 00000 n +0000049633 00000 n +0000298286 00000 n +0000049811 00000 n +0000055780 00000 n +0000298370 00000 n +0000055947 00000 n +0000062300 00000 n +0000298454 00000 n +0000062465 00000 n +0000070530 00000 n +0000302012 00000 n +0000301493 00000 n +0000298538 00000 n +0000070697 00000 n +0000078245 00000 n +0000298622 00000 n +0000078387 00000 n +0000084717 00000 n +0000298706 00000 n +0000084869 00000 n +0000092084 00000 n +0000298790 00000 n +0000092215 00000 n +0000097704 00000 n +0000298874 00000 n +0000097856 00000 n +0000104715 00000 n +0000298958 00000 n +0000104857 00000 n +0000111469 00000 n +0000299042 00000 n +0000111611 00000 n +0000116021 00000 n +0000299126 00000 n +0000116163 00000 n +0000123938 00000 n +0000299210 00000 n +0000124069 00000 n +0000129170 00000 n +0000299294 00000 n +0000129325 00000 n +0000135567 00000 n +0000301631 00000 n +0000299378 00000 n +0000135735 00000 n +0000140763 00000 n +0000299462 00000 n +0000140905 00000 n +0000144824 00000 n +0000299546 00000 n +0000144978 00000 n +0000151027 00000 n +0000299630 00000 n +0000151171 00000 n +0000157725 00000 n +0000299714 00000 n +0000157893 00000 n +0000165016 00000 n +0000299798 00000 n +0000165181 00000 n +0000172056 00000 n +0000299882 00000 n +0000172197 00000 n +0000178513 00000 n +0000299967 00000 n +0000178656 00000 n +0000185223 00000 n +0000293696 00000 n +0000300054 00000 n +0000185414 00000 n +0000191215 00000 n +0000300141 00000 n +0000191394 00000 n +0000196945 00000 n +0000301771 00000 n +0000300229 00000 n +0000197088 00000 n +0000202409 00000 n +0000300317 00000 n +0000202564 00000 n +0000209111 00000 n +0000300405 00000 n +0000209290 00000 n +0000214375 00000 n +0000300493 00000 n +0000214518 00000 n +0000220339 00000 n +0000300581 00000 n +0000220518 00000 n +0000227357 00000 n +0000300669 00000 n +0000227525 00000 n +0000233801 00000 n +0000300757 00000 n +0000233980 00000 n +0000239644 00000 n +0000300845 00000 n +0000239835 00000 n +0000246079 00000 n +0000300933 00000 n +0000246259 00000 n +0000252776 00000 n +0000301021 00000 n +0000252919 00000 n +0000259304 00000 n +0000301920 00000 n +0000301109 00000 n +0000259483 00000 n +0000266413 00000 n +0000301197 00000 n +0000266581 00000 n +0000269332 00000 n +0000270947 00000 n +0000271145 00000 n +0000271352 00000 n +0000271553 00000 n +0000271745 00000 n +0000271941 00000 n +0000272144 00000 n +0000272346 00000 n +0000272538 00000 n +0000292736 00000 n +0000292945 00000 n +0000297102 00000 n +0000297316 00000 n +0000301285 00000 n +0000301314 00000 n +0000302127 00000 n +0000302251 00000 n +trailer +<< +/Size 166 +/Root 165 0 R +/Info 164 0 R +/ID [<5b8d60deddc14c27227e5c0045afd759><5b8d60deddc14c27227e5c0045afd759>] +>> +startxref +302323 +%%EOF diff --git a/docs/medley-irm/26-GRAPHICS.TEDIT b/docs/medley-irm/26-GRAPHICS.TEDIT new file mode 100644 index 00000000..9ac57b7b --- /dev/null +++ b/docs/medley-irm/26-GRAPHICS.TEDIT @@ -0,0 +1,301 @@ +INTERLISP-D REFERENCE MANUAL GRAPHICS OUTPUT OPERATIONS "27"26. GRAPHICS OUTPUT OPERATIONS 2 Streams are used as the basis for all I/O operations. Files are implemented as streams that can support character printing and reading operations, and file pointer manipulation. An image stream is a type of stream that also provides an interface for graphical operations. All of the operations that can applied to streams can be applied to image streams. For example, an image stream can be passed as the argument to PRINT, to print something on an image stream. In addition, special functions are provided to draw lines and curves and perform other graphical operations. Calling these functions on a stream that is not an image stream will generate an error. Primitive Graphics Concepts 1 The Interlisp-D graphics system is based on manipulating bitmaps (rectangular arrays of pixels), positions, regions, and textures. These objects are used by all of the graphics functions. Positions A position denotes a point in an X,Y coordinate system. A POSITION is an instance of a record with fields XCOORD and YCOORD and is manipulated with the standard record package facilities. For example, (create POSITION XCOORD 10 YCOORD 20) creates a position representing the point (10,20). (POSITIONP X) [Function] Returns X if X is a position; NIL otherwise. Regions A Region denotes a rectangular area in a coordinate system. Regions are characterized by the coordinates of their bottom left corner and their width and height. A REGION is a record with fields LEFT, BOTTOM, WIDTH, and HEIGHT. It can be manipulated with the standard record package facilities. There are access functions for the REGION record that return the TOP and RIGHT of the region. The following functions are provided for manipulating regions: (CREATEREGION LEFT BOTTOM WIDTH HEIGHT) [Function] Returns an instance of the REGION record which has LEFT, BOTTOM, WIDTH and HEIGHT as respectively its LEFT, BOTTOM, WIDTH, and HEIGHT fields. Example: (CREATEREGION 10 -20 100 200) will create a region that denotes a rectangle whose width is 100, whose height is 200, and whose lower left corner is at the position (10,-20). (REGIONP X) [Function] Returns X if X is a region, NIL otherwise. (INTERSECTREGIONS(INTERSECTREGIONS (Function) NIL NIL ("27") 2) REGION1 REGION2 ... REGIONn) [NoSpread Function] Returns a region which is the intersection of a number of regions. Returns NIL if the intersection is empty. (UNIONREGIONS(UNIONREGIONS (Function) NIL NIL ("27") 2) REGION1 REGION2 ... REGIONn) [NoSpread Function] Returns a region which is the union of a number of regions, i.e. the smallest region that contains all of them. Returns NIL if there are no regions given. (REGIONSINTERSECTP(REGIONSINTERSECTP (Function) NIL NIL ("27") 2) REGION1 REGION2) [Function] Returns T if REGION1 intersects REGION2. Returns NIL if they do not intersect. (SUBREGIONP(SUBREGIONP (Function) NIL NIL ("27") 2) LARGEREGION SMALLREGION) [Function] Returns T if SMALLREGION is a subregion (is equal to or entirely contained in) LARGEREGION; otherwise returns NIL. (EXTENDREGION(EXTENDREGION (Function) NIL NIL ("27") 2) REGION INCLUDEREGION) [Function] Changes (destructively modifies) the region REGION so that it includes the region INCLUDEREGION. It returns REGION. (MAKEWITHINREGION(MAKEWITHINREGION (Function) NIL NIL ("27") 2) REGION LIMITREGION) [Function] Changes (destructively modifies) the left and bottom of the region REGION so that it is within the region LIMITREGION, if possible. If the dimension of REGION are larger than LIMITREGION, REGION is moved to the lower left of LIMITREGION. If LIMITREGION is NIL, the value of the variable WHOLEDISPLAY (the screen region) is used. MAKEWITHINREGION returns the modified REGION. (INSIDEP(INSIDEP (Function) NIL NIL ("27") 2) REGION POSORX Y) [Function] If POSORX and Y are numbers, it returns T if the point (POSORX,Y) is inside of REGION. If POSORX is a POSITION, it returns T if POSORX is inside of REGION. If REGION is a WINDOW, the window's interior region in window coordinates is used. Otherwise, it returns NIL. Bitmaps The display primitives manipulate graphical images in the form of bitmaps. A bitmap is a rectangular array of "pixels," each of which is an integer representing the color of one point in the bitmap image. A bitmap is created with a specific number of bits allocated for each pixel. Most bitmaps used for the display screen use one bit per pixel, so that at most two colors can be represented. If a pixel is 0, the corresponding location on the image is white. If a pixel is 1, its location is black. This interpretation can be changed for the display screen with the function VIDEOCOLOR. Bitmaps with more than one bit per pixel are used to represent color or grey scale images. Bitmaps use a positive integer coordinate system with the lower left corner pixel at coordinate (0,0). Bitmaps are represented as instances of the datatype BITMAP. Bitmaps can be saved on files with the VARS file package command. (BITMAPCREATE WIDTH HEIGHT BITSPERPIXEL) [Function] Creates and returns a new bitmap which is WIDTH pixels wide by HEIGHT pixels high, with BITSPERPIXEL bits per pixel. If BITSPERPIXEL is NIL, it defaults to 1. (BITMAPP(BITMAPP (Function) NIL NIL ("27") 3) X) [Function] Returns X if X is a bitmap, NIL otherwise. (BITMAPWIDTH(BITMAPWIDTH (Function) NIL NIL ("27") 3) BITMAP) [Function] Returns the width of BITMAP in pixels. (BITMAPHEIGHT(BITMAPHEIGHT (Function) NIL NIL ("27") 3) BITMAP) [Function] Returns the height of BITMAP in pixels. (BITSPERPIXEL BITMAP) [Function] Returns the number of bits per pixel of BITMAP. (BITMAPBIT(BITMAPBIT (Function) NIL NIL ("27") 3) BITMAP X Y NEWVALUE) [Function] If NEWVALUE is between 0 and the maximum value for a pixel in BITMAP, the pixel (X,Y) is changed to NEWVALUE and the old value is returned. If NEWVALUE is NIL, BITMAP is not changed but the value of the pixel is returned. If NEWVALUE is anything else, an error is generated. If (X,Y) is outside the limits of BITMAP, 0 is returned and no pixels are changed. BITMAP can also be a window or display stream. Note: non-window image streams are "write-only"; the NEWVALUE argument must be non-NIL. (BITMAPCOPY(BITMAPCOPY (Function) NIL NIL ("27") 3) BITMAP) [Function] Returns a new bitmap which is a copy of BITMAP (same dimensions, bits per pixel, and contents). (EXPANDBITMAP(EXPANDBITMAP (Function) NIL NIL ("27") 3) BITMAP WIDTHFACTOR HEIGHTFACTOR) [Function] Returns a new bitmap that is WIDTHFACTOR times as wide as BITMAP a nd HEIGHTFACTOR times as high. Each pixel of BITMAP is copied into a WIDTHFACTOR times HEIGHTFACTOR block of pixels. If NIL, WIDTHFACTOR defaults to 4, HEIGHTFACTOR to 1. (ROTATEBITMAP(EXPANDBITMAP (Function) NIL NIL ("27") 4) BITMAP) [Function] Given an m-high by n-wide bitmap, this function returns an n-high by m-wide bitmap. The returned bitmap is the image of the original bitmap, rotated 90 degrees clockwise. (SHRINKBITMAP(SHRINKBITMAP (Function) NIL NIL ("27") 4) BITMAP WIDTHFACTOR HEIGHTFACTOR DESTINATIONBITMAP) [Function] Returns a copy of BITMAP that has been shrunken by WIDTHFACTOR and HEIGHTFACTOR in the width and height, respectively. If NIL, WIDTHFACTOR defaults to 4, HEIGHTFACTOR to 1. If DESTINATIONBITMAP is not provided, a bitmap that is 1/WIDTHFACTOR by 1/HEIGHTFACTOR the size of BITMAP is created and returned. WIDTHFACTOR and HEIGHTFACTOR must be positive integers. (PRINTBITMAP(PRINTBITMAP (Function) NIL NIL ("27") 4) BITMAP FILE) [Function] Prints the bitmap BITMAP on the file FILE in a format that can be read back in by READBITMAP. (READBITMAP(READBITMAP (Function) NIL NIL ("27") 4) FILE) [Function] Creates a bitmap by reading an expression (written by PRINTBITMAP) from the file FILE. (EDITBM(EDITBM (Function) NIL NIL ("27") 4) BMSPEC) [Function] EDITBM provides an easy-to-use interactive editing facility for various types of bitmaps. If BMSPEC is a bitmap, it is edited. If BMSPEC is an atom whose value is a bitmap, its value is edited. If BMSPEC is NIL, EDITBM asks for dimensions and creates a bitmap. If BMSPEC is a region, that portion of the screen bitmap is used. If BMSPEC is a window, it is brought to the top and its contents edited. EDITBM sets up the bitmap being edited in an editing window. The editing window has two major areas: a gridded edit area in the lower part of the window and a display area in the upper left part. In the edit area, the left button will add points, the middle button will erase points. The right button provides access to the normal window commands to reposition and reshape the window. The actual size bitmap is shown in the display area. For example, the following is a picture of the bitmap editing window editing a eight-high by eighteen-wide bitmap: `*~RsFuvmmqmmmv[bfwUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTxDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTDxUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTHDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTDUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPªUUUUUPUUUUUUUPUPUPƪUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUUUPUUUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUUUUUUUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUUUUUPUPUPUPUPªUUUUUPUPUPUPUPªUUUUUPUPUPUPUPªUUUUUPUPUPUPUPªUUUUUPUPUPUPUPªUUUUUPUPUPUPUPªUUUUUPUPUPUPUPªUUUUUPUPUPUPUPƪ If the bitmap is too large to fit in the edit area, only a portion will be editable. This portion can be changed by scrolling both up and down in the left margin and left and right in the bottom margin. Pressing the middle button while in the display area will bring up a menu that allows global placement of the portion of the bitmap being edited. To allow more of the bitmap to be editing at once, the window can be reshaped to make it larger or the GridSize command described below can be used to reduce the size of a bit in the edit area. The bitmap editing window can be reshaped to provide more or less room for editing. When this happens, the space allocated to the editing area will be changed to fit in the new region. Whenever the left or middle button is down and the cursor is not in the edit area, the section of the display of the bitmap that is currently in the edit area is complemented. Pressing the left button while not in the edit region will put the lower left 16 x 16 section of the bitmap into the cursor for as long as the left button is held down. Pressing the middle button while not in either the edit area or the display area (i.e., while in the grey area in the upper right or in the title) will bring up a command menu. `Nn|BB8<BD|@d@D@:  $ DPp!#$$DP!$DD$"p!'Ā$$"!$$$!!$D#p!#!@ _R0@ H@ H@ H20! @@ @"!GC@H!I p$$p ! @#@$H@'Ð@$ !$H#P g  ~  xBDHPhDBxA  PxPĄĄx There are commands to stop editing, to restore the bitmap to its initial state and to clear the bitmap. Holding the middle button down over a command will result in an explanatory message being printed in the prompt window. The commands are described below: Paint Puts the current bitmap into a window and call the window PAINT command on it. The PAINT command implements drawing with various brush sizes and shapes but only on an actual sized bitmap. The PAINT mode is left by pressing the RIGHT button and selecting the QUIT command from the menu. At this point, you will be given a choice of whether or not the changes you made while in PAINT mode should be made to the current bitmap. ShowAsTile Tesselates the current bitmap in the upper part of the window. This is useful for determining how a bitmap will look if it were made the display background (using the function CHANGEBACKGROUND). Note: The tiled display will not automatically change as the bitmap changes; to update it, use the ShowAsTile command again. Grid,On/Off Turns the editing grid display on or off. GridSize Allows specification of the size of the editing grid. Another menu will appear giving a choice of several sizes. If one is selected, the editing portion of the bitmap editor will be redrawn using the selected grid size, allowing more or less of the bitmap to be edited without scrolling. The original size is chosen hueristically and is typically about 8. It is particularly useful when editing large bitmaps to set the edit grid size smaller than the original. Reset Sets all or part of the bitmap to the contents it had when EDITBM was called. Another menu will appear giving a choice between resetting the entire bitmap or just the portion that is in the edit area. The second menu also acts as a confirmation, since not selecting one of the choices on this menu results in no action being taken. Clear Sets all or part of the bitmap to 0. As with the Reset command, another menu gives a choice between clearing the entire bitmap or just the portion that is in the edit area. Cursor Sets the cursor to the lower left part of the bitmap. This prompts the user to specify the cursor "hot spot" by clicking in the lower left corner of the grid. OK Copies the changed image into the original bitmap, stops the bitmap editor and closes the edit windows. The changes the bitmap editor makes during the interaction occur on a copy of the original bitmap. Unless the bitmap editor is exited via OK, no changes are made in the original. Stop Stops the bitmap editor without making any changes to the original bitmap. Textures A Texture denotes a pattern of gray which can be used to (conceptually) tessellate the plane to form an infinite sheet of gray. It is currently either a 4 by 4 pattern or a 16 by N (N <= 16) pattern. Textures are created from bitmaps using the following function: (CREATETEXTUREFROMBITMAP(CREATETEXTUREFROMBITMAP (Function) NIL NIL ("27") 6) BITMAP) [Function] Returns a texture object that will produce the texture of BITMAP. If BITMAP is too large, its lower left portion is used. If BITMAP is too small, it is repeated to fill out the texture. (TEXTUREP(TEXTUREP (Function) NIL NIL ("27") 7) OBJECT) [Function] Returns OBJECT if it is a texture; NIL otherwise. The functions which accept textures (TEXTUREP, BITBLT, DSPTEXTURE, etc.) also accept bitmaps up to 16 bits wide by 16 bits high as textures. When a region is being filled with a bitmap texture, the texture is treated as if it were 16 bits wide (if less, the rest is filled with white space). The common textures white and black are available as system constants WHITESHADE and BLACKSHADE. The global variable GRAYSHADE is used by many system facilities as a background gray shade and can be set by the user. (EDITSHADE(EDITSHADE (Function) NIL NIL ("27") 7) SHADE) [Function] Opens a window that allows the user to edit textures. Textures can be either small (4 by 4) patterns or large (16 by 16). In the edit area, the left button adds bits to the shade and the middle button erases bits from the shade. The top part of the window is painted with the current texture whenever all mouse keys are released. Thus it is possible to directly compare two textures that differ by more than one pixel by holding a mouse key down until all changes are made. When the "quit" button is selected, the texture being edited is returned. If SHADE is a texture object, EDITSHADE starts with it. If SHADE is T, it starts with a large (16 by 16) white texture. Otherwise, it starts with WHITESHADE. The following is a picture of the texture editor, editing a large (16 by 16) pattern: @,,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000``0``0``0`>`0`H`0`H`0`H`0`H`0`H`0`H`0``0``0``0``0``0``000000 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00UUUuU]UWUUUuU]UW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW0ꪺꪺ0 TUU@UTUU@W00 TUU@UTUU@W00 TUU@UTUU@W00 TUU@UTUU@W00UUU`WUUU`W00 TUUUUPUTUUUUPW00 TUUUUPUTUUUUPW00 TUUUUPUTUUUUPW00 TUUUUPUTUUUUPW0ꪪꪪ0 TUPUTUPW0**0 TUPUTUPW0**0 TUPUTUPW0**0 TUPUTUPW0**0U@5UXWU@5UXW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW0ꪪꪪ0 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00UUUuUXWUUUuUXW0 0 0 0 0 0 0 0 0@ @ 0 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00UUUuUXWUUUuUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW00 UUUUUUPUUUUUUUPW0ꪪꪪ0 TUPUTUPW0**0 TUPUTUPW0**0 TUPUTUPW0**0 TUPUTUPW0**0U@5UPWU@5UXW00 TUUUUPUTUUUUPW00 TUUUUPUTUUUUPW00 TUUUUPUTUUUUPW00 TUUUUPUTUUUUPW0ꪪꪪ0 TUU@UTUU@W00 TUU@UTUU@W00 TUU@UTUU@W00 TUU@UTUU@W00TUU`WTUU`W00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW0ꪺꪺ0 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00 TUUUUUUUTUUUUUUW00UUUuU]UWTUUuU]UW0 0 0 0 0 0 0 0 0@ @ 000000 Opening Image Streams 1 An image stream is an output stream which "knows" how to process graphic commands to a graphics output device. Besides accepting the normal character-output functions (PRINT, etc.), an image stream can also be passed as an argument to functions to draw curves, to print characters in multiple fonts, and other graphics operations. Each image stream has an "image stream type," a litatom that specifies the type of graphic output device that the image stream is processing graphics commands for. Currently, the built-in image stream types are DISPLAY (for the display screen), INTERPRESS (for Interpress format printers), and PRESS (for Press format printers). There are also library packages available that define image stream types for the IRIS display, 4045 printer, FX-80 printer, C150 printer, etc. Image streams to the display (display streams) interpret graphics commands by immediately executing the appropriate operations to cause the desired image to appear on the display screen. Image streams for hardcopy devices such as Interpress printers interpret the graphic commands by saving information in a file, which can later be sent to the printer. Note: Not all graphics operations can be properly executed for all image stream types. For example, BITBLT may not be supported to all printers. This functionality is still being developed, but even in the long run some operations may be beyond the physical or logical capabilities of some devices or image file formats. In these cases, the stream will approximate the specified image as best it can. (OPENIMAGESTREAM(OPENIMAGESTREAM (Function) NIL NIL ("27") 8) FILE IMAGETYPE OPTIONS) [Function] Opens and returns an image stream of type IMAGETYPE on a destination specified by FILE. If FILE is a file name on a normal file storage device, the image stream will store graphics commands on the specified file, which can be transmitted to a printer by explicit calls to LISTFILES and SEND.FILE.TO.PRINTER. If IMAGETYPE is DISPLAY, then the user is prompted for a window to open. FILE in this case will be used as the title of the window. If FILE is a file name on the LPT device, this indicates that the graphics commands should be stored in a temporary file, and automatically sent to the printer when the image stream is closed by CLOSEF. FILE = NIL is equivalent to FILE = {LPT}. File names on the LPT device are of the form {LPT}PRINTERNAME.TYPE, where PRINTERNAME, TYPE, or both may be omitted. PRINTERNAME is the name of the particular printer to which the file will be transmitted on closing; it defaults to the first printer on DEFAULTPRINTINGHOST that can print IMAGETYPE files. The TYPE extension supplies the value of IMAGETYPE when it is defaulted (see below). OPENIMAGESTREAM will generate an error if the specified printer does not accept the kind of file specified by IMAGETYPE. If IMAGETYPE is NIL, the image type is inferred from the extension field of FILE and the EXTENSIONS properties in the list PRINTFILETYPES. Thus, the extensions IP, IPR, and INTERPRESS indicate Interpress format, and the extension PRESS indicates Press format. If FILE is a printer file with no extension (of the form {LPT}PRINTERNAME), then IMAGETYPE will be the type that the indicated printer can print. If FILE has no extension but is not on the printer device {LPT}, then IMAGETYPE will default to the type accepted by the first printer on DEFAULTPRINTINGHOST. OPTIONS is a list in property list format, (PROP1 VAL1 PROP2 VAL2 %), used to specify certain attributes of the image stream; not all attributes are meaningful or interpreted by all types of image streams. Acceptable properties are: REGION Value is the region on the page (in stream scale units, 0,0 being the lower-left corner of the page) that text will fill up. It establishes the initial values for DSPLEFTMARGIN, DSPRIGHTMARGIN, DSPBOTTOMMARGIN (the point at which carriage returns cause page advancement) and DSPTOPMARGIN (where the stream is positioned at the beginning of a new page). If this property is not given, the value of the variable DEFAULTPAGEREGION, is used. FONTS Value is a list of fonts that are expected to be used in the image stream. Some image streams (e.g. Interpress) are more efficient if the expected fonts are specified in advance, but this is not necessary. The first font in this list will be the initial font of the stream, otherwise the default font for that image stream type will be used. HEADING Value is the heading to be placed automatically on each page. NIL means no heading. Examples: Suppose that Tremor: is an Interpress printer, Quake is a Press printer, and DEFAULTPRINTINGHOST is (Tremor: Quake): (OPENIMAGESTREAM) returns an Interpress image stream on printer Tremor:. (OPENIMAGESTREAM NIL 'PRESS) returns a Press stream on Quake. (OPENIMAGESTREAM '{LPT}.INTERPRESS) returns an Interpress stream on Tremor:. (OPENIMAGESTREAM '{CORE}FOO.PRESS) returns a Press stream on the file {CORE}FOO.PRESS. (IMAGESTREAMP(IMAGESTREAMP (Function) NIL NIL ("27") 9) X IMAGETYPE) [NoSpread Function] Returns X (possibly coerced to a stream) if it is an output image stream of type IMAGETYPE (or of any type if IMAGETYPE = NIL), otherwise NIL. (IMAGESTREAMTYPE(IMAGESTREAMTYPE (Function) NIL NIL ("27") 9) STREAM) [Function] Returns the image stream type of STREAM. (IMAGESTREAMTYPEP(IMAGESTREAMTYPEP (Function) NIL NIL ("27") 9) STREAM TYPE) [Function] Returns T if STREAM is an image stream of type TYPE. Accessing Image Stream Fields 1 The following functions manipulate the fields of an image stream. These functions return the old value (the one being replaced). A value of NIL for the new value will return the current setting without changing it. These functions do not change any of the bits drawn on the image stream; they just affect future operations done on the image stream. (DSPCLIPPINGREGION(DSPCLIPPINGREGION (Function) NIL NIL ("27") 10) REGION STREAM) [Function] The clipping region is a region that limits the extent of characters printed and lines drawn (in the image stream's coordinate system). Initially set so that no clipping occurs. Warning: For display streams, the window system maintains the clipping region during window operations. Users should be very careful about changing this field. (DSPFONT(DSPFONT (Function) NIL NIL ("27") 10) FONT STREAM) [Function] The font field specifies the font used when printing characters to the image stream. Note: DSPFONT determines its new font descriptor from FONT by the same coercion rules that FONTPROP and FONTCREATE use , with one additional possibility: If FONT is a list of the form (PROP1 VAL1 PROP2 VAL2 ...) where PROP1 is acceptable as a font-property to FONTCOPY, then the new font is obtained by (FONTCOPY (DSPFONT NIL STREAM) PROP1 VAL1 PROP2 VAL2 ...). For example, (DSPFONT '(SIZE 12) STREAM) would change the font to the 12 point version of the current font, leaving all other font properties the same. (DSPTOPMARGIN(DSPTOPMARGIN (Function) NIL NIL ("27") 10) YPOSITION STREAM) [Function] The top margin is an integer that is the Y position after a new page (in the image stream's coordinate system). This function has no effect on windows. (DSPBOTTOMMARGIN(DSPBOTTOMMARGIN (Function) NIL NIL ("27") 10) YPOSITION STREAM) [Function] The bottom margin is an integer that is the minimum Y position that characters will be printed by PRIN1 (in the image stream's coordinate system). This function has no effect on windows. (DSPLEFTMARGIN(DSPLEFTMARGIN (Function) NIL NIL ("27") 10) XPOSITION STREAM) [Function] The left margin is an integer that is the X position after an end-of-line (in the image stream's coordinate system). Initially the left edge of the clipping region. (DSPRIGHTMARGIN(DSPRIGHTMARGIN (Function) NIL NIL ("27") 10) XPOSITION STREAM) [Function] The right margin is an integer that is the maximum X position that characters will be printed by PRIN1 (in the image stream's coordinate system). This is initially the position of the right edge of the window or page. The line length of a window or image stream (as returned by LINELENGTH) is computed by dividing the distance between the left and right margins by the width of an uppercase "A" in the current font. The line length is changed whenever the font, left margin, or right margin are changed or whenever the window is reshaped. (DSPOPERATION(DSPOPERATION (Function) NIL NIL ("27") 11) OPERATION STREAM) [Function] The operation is the default BITBLT operation used when printing or drawing on the image stream. One of REPLACE, PAINT, INVERT, or ERASE. Initially REPLACE. This is a meaningless operation for most printers which support the model that once dots are deposited on a page they cannot be removed. (DSPLINEFEED(DSPLINEFEED (Function) NIL NIL ("27") 11) DELTAY STREAM) [Function] The linefeed is an integer that specifies the Y increment for each linefeed, normally negative. Initially minus the height of the initial font. (DSPCLEOL(DSPLINEFEED (Function) NIL NIL ("27") 11) DSPSTREAM XPOS YPOS HEIGHT) [Function] "Clear to end of line". Clears a region from (XPOS,YPOS) to the right margin of the display, with a height of HEIGHT. If XPOS and YPOS are NIL, clears the remainder of the current display line, using the height of the current font. (DSPRUBOUTCHAR(DSPRUBOUTCHAR (Function) NIL NIL ("27") 11) DSPSTREAM CHAR X Y TTBL) [Function] Backs up over character code CHAR in the DSPSTREAM, erasing it. If X, Y are supplied, the rubbing out starts from the position specified. DSPRUBOUTCHAR assumes CHAR was printed with the terminal table TTBL, so it knows to handle control characters, etc. TTBL defaults to the primary terminal table. (DSPSCALE(DSPSCALE (Function) NIL NIL ("27") 11) SCALE STREAM) [Function] Returns the scale of the image stream STREAM, a number indicating how many units in the streams coordinate system correspond to one printer's point (1/72 of an inch). For example, DSPSCALE returns 1 for display streams, and 35.27778 for Interpress and Press streams (the number of micas per printer's point). In order to be device-independent, user graphics programs must either not specify position values absolutely, or must multiply absolute point quantities by the DSPSCALE of the destination stream. For example, to set the left margin of the Interpress stream XX to one inch, do (DSPLEFTMARGIN (TIMES 72 (DSPSCALE NIL XX)) XX) The SCALE argument to DSPSCALE is currently ignored. In a future release it will enable the scale of the stream to be changed under user control, so that the necessary multiplication will be done internal to the image stream interface. In this case, it would be possible to set the left margin of the Interpress stream XX to one inch by doing (DSPSCALE 1 XX) (DSPLEFTMARGIN 72 XX) (DSPSPACEFACTOR FACTOR STREAM) [Function] The space factor is the amount by which to multiply the natural width of all following space characters on STREAM; this can be used for the justification of text. The default value is 1. For example, if the natural width of a space in STREAM's current font is 12 units, and the space factor is set to two, spaces appear 24 units wide. The values returned by STRINGWIDTH and CHARWIDTH are also affected. The following two functions only have meaning for image streams that can display color: (DSPCOLOR COLOR STREAM) [Function] Sets the default foreground color of STREAM. Returns the previous foreground color. If COLOR is NIL, it returns the current foreground color without changing anything. The default color is white (DSPBACKCOLOR COLOR STREAM) [Function] Sets the background color of STREAM. Returns the previous background color. If COLOR is NIL, it returns the current background color without changing anything. The default background color is black. Current Position of an Image Stream 1 Each image stream has a "current position," which is a position (in the image stream's coordinate system) where the next printing operation will start from. The functions which print characters or draw on an image stream update these values appropriately. The following functions are used to explicitly access the current position of an image stream: (DSPXPOSITION XPOSITION STREAM) [Function] Returns the X coordinate of the current position of STREAM. If XPOSITION is non-NIL, the X coordinate is set to it (without changing the Y coordinate). (DSPYPOSITION YPOSITION STREAM) [Function] Returns the Y coordinate of the current position of STREAM. If YPOSITION is non-NIL, the Y coordinate is set to it (without changing the X coordinate). (MOVETO X Y STREAM) [Function] Changes the current position of STREAM to the point (X,Y). (RELMOVETO DX DY STREAM) [Function] Changes the current position to the point (DX,DY) coordinates away from current position of STREAM. (MOVETOUPPERLEFT STREAM REGION) [Function] Moves the current position to the beginning position of the top line of text. If REGION is non-NIL, it must be a REGION and the X position is changed to the left edge of REGION and the Y position changed to the top of REGION less the font ascent of STREAM. If REGION is NIL, the X coordinate is changed to the left margin of STREAM and the Y coordinate is changed to the top of the clipping region of STREAM less the font ascent of STREAM. Moving Bits Between Bitmaps With BITBLT 1 BITBLT is the primitive function for moving bits from one bitmap to another, or from a bitmap to an image stream. (BITBLT SOURCE SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION) [Function] Transfers a rectangular array of bits from SOURCE to DESTINATION. SOURCE can be a bitmap, or a display stream or window, in which case its associated bitmap is used. DESTINATION can be a bitmap or an arbitrary image stream. WIDTH and HEIGHT define a pair of rectangles, one in each of the SOURCE and DESTINATION whose left, bottom corners are at, respectively, (SOURCELEFT, SOURCEBOTTOM) and (DESTINATIONLEFT, DESTINATIONBOTTOM). If these rectangles overlap the boundaries of either source or destination they are both reduced in size (without translation) so that they fit within their respective boundaries. If CLIPPINGREGION is non-NIL it should be a REGION and is interpreted as a clipping region within DESTINATION; clipping to this region may further reduce the defining rectangles. These (possibly reduced) rectangles define the source and destination rectangles for BITBLT. The mode of transferring bits is defined by SOURCETYPE and OPERATION. SOURCETYPE and OPERATION specify whether the source bits should come from SOURCE or TEXTURE, and how these bits are combined with those of DESTINATION. SOURCETYPE and OPERATION are described further below. TEXTURE is a texture. BITBLT aligns the texture so that the upper-left pixel of the texture coincides with the upper-left pixel of the destination bitmap. SOURCELEFT, SOURCEBOTTOM, DESTINATIONLEFT, and DESTINATIONBOTTOM default to 0. WIDTH and HEIGHT default to the width and height of the SOURCE. TEXTURE defaults to white. SOURCETYPE defaults to INPUT. OPERATION defaults to REPLACE. If CLIPPINGREGION is not provided, no additional clipping is done. BITBLT returns T if any bits were moved; NIL otherwise. Note: If SOURCE or DESTINATION is a window or image stream, the remaining arguments are interpreted as values in the coordinate system of the window or image stream and the operation of BITBLT is translated and clipped accordingly. Also, if a window or image stream is used as the destination to BITBLT, its clipping region further limits the region involved. SOURCETYPE specifies whether the source bits should come from the bitmap SOURCE, or from the texture TEXTURE. SOURCETYPE is interpreted as follows: INPUT The source bits come from SOURCE. TEXTURE is ignored. INVERT The source bits are the inverse of the bits from SOURCE. TEXTURE is ignored. TEXTURE The source bits come from TEXTURE. SOURCE, SOURCELEFT, and SOURCEBOTTOM are ignored. OPERATION specifies how the source bits (as specified by SOURCETYPE) are combined with the bits in DESTINATION and stored back into DESTINATION. DESTINATION is one of the following: REPLACE All source bits (on or off) replace destination bits. PAINT Any source bits that are on replace the corresponding destination bits. Source bits that are off have no effect. Does a logical OR between the source bits and the destination bits. INVERT Any source bits that are on invert the corresponding destination bits. Does a logical XOR between the source bits and the destination bits. ERASE Any source bits that are on erase the corresponding destination bits. Does a logical AND operation between the inverse of the source bits and the destination bits. Different combinations of SOURCETYPE and OPERATION can be specified to achieve many different effects. Given the following bitmaps as the values of SOURCE, TEXTURE, and DESTINATION: @<F??~~??<Ǿal0ql09>l0 l0' @;FDDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" DDDDDDD@fffffff`""""""" 3 f3f3f3f3 f3< @PZxbgl6gllfÃ7glnf7mlnf6lmlc6lmx6xg BITBLT would produce the results given below for the difference combinations of SOURCETYPE and OPERATION (assuming CLIPPINGREGION, SOURCELEFT, etc. are set correctly, of course): @Pf???~~~~~~?~~?~~?~~??????????????????????????????7`6ٌ8ٌflٌg|wc`v3<6 y mq9mqmyهmmmm9e @Pf~~~?~?~?~??????????????????????????????7`6ٌ8ٌflٌg|wc`v3<6 xCflf09lv0mmv0myn0mcn09cf0 @Pf~~~?~?~?~???????????????????????????????7`6ٌ8ٌflٌg|wc`v3<6 ll9n0mn>mm0mm09l> @Pf?7`6ٌ8ٌflٌg|wc`v3<6 }a09a0m}>maðma9}> @Pf??mm0mm09l> @Pf???~~~~~~maðma9}> @PfDDDDDDDffffffd"""""" DDDDDDDffffffd"""""" DDDDDDDffffffd"""""" DDDDDDDffffffd"""""" DDDDDDDffffffd"""""" DDDDDDDffffffd"""""" DDDDDDDffffffd"""""" DDDDDDDffffffd"""""""#DDDDDDG&ffffffg"""""""#DDDDDDG&ffffffg"""""""#DDDDDDG&ffffffg"""""""#DDDDDDG&ffffffg"""""""#DDDDDDG&ffffffg"""""""#DDDDDDG&ffffffg"""""""#DDDDDDG&ffffffg"""""""#}|`a`8``fl|`|g|``c`a`3<}Ǚ|y mq9mqmyهmmmm9e @PfDDDDfffd""" DDDDfffd""" DDDDfffd""" DDDDfffd""" DDDDfffd""" DDDDfffd""" DDDDfffd""" DDDDfffd""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""}|`a`8``fl|`|g|``c`a`3<}Ǚ|xCflf09lv0mmv0myn0mcn09cf0 @PfDDDDٙfffd""" DDDDٙfffd""" DDDDٙfffd""" DDDDٙfffd""" DDDDٙfffd""" DDDDٙfffd""" DDDDٙfffd""" DDDDٙfffd""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""DDD&fff""""}|`a`8``fl|`|g|``c`a`3<}Ǚ|ll9n0mn>mm0mm09l> @Pfٙٙٙٙٙٙٙٙ}|`a`8``fl|`|g|``c`a`3<}Ǚ|}a09a0m}>maðma9}> (BLTSHADE TEXTURE DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) [Function] BLTSHADE is the SOURCETYPE = TEXTURE case of BITBLT. It fills the specified region of the destination bitmap DESTINATION with the texture TEXTURE. DESTINATION can be a bitmap or image stream. (BITMAPIMAGESIZE BITMAP DIMENSION STREAM) [Function] Returns the size that BITMAP will be when BITBLTed to STREAM, in STREAM's units. DIMENSION can be one of WIDTH, HEIGHT, or NIL, in which case the dotted pair (WIDTH . HEIGHT) will be returned. Drawing Lines 1 Interlisp-D provides several functions for drawing lines and curves on image streams. The line drawing functions are intended for interactive applications where efficiency is important. They do not allow the use of "brush" patterns, like the curve drawing functions, but (for display streams) they support drawing a line in INVERT mode, so redrawing the line will erase it. DRAWCURVE can be used to draw lines using a brush. (DRAWLINE X1 Y1 X2 Y2 WIDTH OPERATION STREAM COLOR DASHING) [Function] Draws a straight line from the point (X1,Y1) to the point (X2,Y2) on the image stream STREAM. The position of STREAM is set to (X2,Y2). If X1 equals X2 and Y1 equals Y2, a point is drawn at (X1,Y1). WIDTH is the width of the line, in the units of the device. If WIDTH is NIL, the default is 1. OPERATION is the BITBLT operation used to draw the line. If OPERATION is NIL, the value of DSPOPERATION for the image stream is used. COLOR is a color specification that determines the color used to draw the line for image streams that support color. If COLOR is NIL, the DSPCOLOR of STREAM is used. DASHING is a list of positive integers that determines the dashing characteristics of the line. The line is drawn for the number of points indicated by the first element of the dashing list, is not drawn for the number of points indicated by the second element. The third element indicates how long it will be on again, and so forth. The dashing sequence is repeated from the beginning when the list is exhausted. A brush LINEWITHBRUSH-by-LINEWITHBRUSH is used. If DASHING is NIL, the line is not dashed. (DRAWBETWEEN POSITION1 POSITION2 WIDTH OPERATION STREAM COLOR DASHING) [Function] Draws a line from the point POSITION1 to the point POSITION2 onto the destination bitmap of STREAM. The position of STREAM is set to POSITION2. In the Medley release, when using the color argument, Interpress (DRAWLINE (Function) NIL NIL ("27") 16)DRAWLINE treats 16x16 bitmaps or negative numbers as shades/textures. Positive numbers continue to refer to color maps, and so cannot be used as textures. To convert an integer shade into a negative number use NEGSHADE (e.g. (NEGSHADE 42495) is -23041). (DRAWTO X Y WIDTH OPERATION STREAM COLOR DASHING) [Function] Draws a line from the current position to the point (X,Y) onto the destination bitmap of STREAM. The position of STREAM is set to (X,Y). (RELDRAWTO DX DY WIDTH OPERATION STREAM COLOR DASHING) [Function] Draws a line from the current position to the point (DX,DY) coordinates away onto the destination bitmap of STREAM. The position of STREAM is set to the end of the line. If DX and DY are both 0, nothing is drawn. Drawing Curves 1 A curve is drawn by placing a brush pattern centered at each point along the curve's trajectory. A brush pattern is defined by its shape, size, and color. The predefined brush shapes are ROUND, SQUARE, HORIZONTAL, VERTICAL, and DIAGONAL; new brush shapes can be created using the INSTALLBRUSH function, described below. A brush size is an integer specifying the width of the brush in the units of the device. The color is a color specification, which is only used if the curve is drawn to an image stream that supports colors. A brush is specified to the various drawing functions as a list of the form (SHAPE WIDTH COLOR), for example (SQUARE 2) or (VERTICAL 4 RED). A brush can also be specified as a positive integer, which is interpreted as a ROUND brush of that width. If a brush is a litatom, it is assumed to be a function which is called at each point of the curve's trajectory (with three arguments: the X-coordinate of the point, the Y-coordinate, and the image stream), and should do whatever image stream operations are necessary to draw each point. Finally, if a brush is specified as NIL, a (ROUND 1) brush is used as default. The appearance of a curve is also determined by its dashing characteristics. Dashing is specified by a list of positive integers. If a curve is dashed, the brush is placed along the trajectory for the number of units indicated by the first element of the dashing list. The brush is off, not placed in the bitmap, for a number of units indicated by the second element. The third element indicates how long it will be on again, and so forth. The dashing sequence is repeated from the beginning when the list is exhausted. The units used to measure dashing are the units of the brush. For example, specifying the dashing as (1 1) with a brush of (ROUND 16) would put the brush on the trajectory, skip 16 points, and put down another brush. A curve is not dashed if the dashing argument to the drawing function is NIL. The curve functions use the image stream's clipping region and operation. Most types of image streams only support the PAINT operation when drawing curves. When drawing to a display stream, the curve-drawing functions accept the operation INVERT if the brush argument is 1. For brushes larger than 1, these functions will use the ERASE operation instead of INVERT. For display streams, the curve-drawing functions treat the REPLACE operation the same as PAINT. (DRAWCURVE KNOTS CLOSED BRUSH DASHING STREAM) [Function] Draws a "parametric cubic spline curve" on the image stream STREAM. KNOTS is a list of positions to which the curve will be fitted. If CLOSED is non-NIL, the curve will be closed; otherwise it ends at the first and last positions in KNOTS. BRUSH and DASHING are interpreted as described above. For example, (DRAWCURVE '((10 . 10)(50 . 50)(100 . 10)(150 . 50)) NIL '(ROUND 5) '(1 1 1 2) XX) would draw a curve like the following on the display stream XX: `;  > > >                 p p p p       > > > q  p   (DRAWCIRCLE CENTERX CENTERY RADIUS BRUSH DASHING STREAM) [Function] Draws a circle of radius RADIUS about the point (CENTERX,CENTERY) onto the image stream STREAM. STREAM's position is left at (CENTERX,CENTERY). The other arguments are interpreted as described above. (DRAWARC CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH DASHINGSTREAM) [Function] Draws an arc of the circle whose center point is (CENTERX CENTERY) and whose radius is RADIUS from the position at STARTANGLE degrees for NDEGREES number of degrees. If STARTANGLE is 0, the starting point will be (CENTERX (CENTERY + RADIUS)). If NDEGREES is positive, the arc will be counterclockwise. If NDEGREES is negative, the arc will be clockwise. The other arguments are interpreted as described in DRAWCIRCLE. (DRAWELLIPSE CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING STREAM) [Function] Draws an ellipse with a minor radius of SEMIMINORRADIUS and a major radius of SEMIMAJORRADIUS about the point (CENTERX,CENTERY) onto the image stream STREAM. ORIENTATION is the angle of the major axis in degrees, positive in the counterclockwise direction. STREAM's position is left at (CENTERX,CENTERY). The other arguments are interpreted as described above. New brush shapes can be defined using the following function: (INSTALLBRUSH BRUSHNAME BRUSHFN BRUSHARRAY) [Function] Installs a new brush called BRUSHNAME with creation-function BRUSHFN and optional array BRUSHARRAY. BRUSHFN should be a function of one argument (a width), which returns a bitmap of the brush for that width. BRUSHFN will be called to create new instances of BRUSHNAME-type brushes; the sixteen smallest instances will be pre-computed and cached. "Hand-crafted" brushes can be supplied as the BRUSHARRAY argument. Changing an existing brush can be done by calling INSTALLBRUSH with new BRUSHFN and/or BRUSHARRAY. (DRAWPOINT X Y BRUSH STREAM OPERATION) [Function] Draws BRUSH centered around point (X, Y) on STREAM, using the operation OPERATION. BRUSH may be a bitmap or a brush. Miscellaneous Drawing and Printing Operations 1 (DSPFILL REGION TEXTURE OPERATION STREAM) [Function] Fills REGION of the image stream STREAM (within the clipping region) with the texture TEXTURE. If REGION is NIL, the whole clipping region of STREAM is used. If TEXTURE or OPERATION is NIL, the values for STREAM are used. (DRAWPOLYGON(DRAWPOLYGON (Function) NIL NIL ("27") 18) POINTS CLOSED BRUSH DASHING STREAM) [Function] Draws a polygon on the image stream STREAM. POINTS is a list of positions to which the figure will be fitted (the vertices of the polygon). If CLOSED is non-NIL, then the starting position is specified only once in POINTS. If CLOSED is NIL, then the starting vertex must be specified twice in POINTS. BRUSH and DASHING are interpreted as described in Chapter 27 of the Interlisp-D Reference Manual. For example, (DRAWPOLYGON '((100 . 100) (50 . 125) (150 . 175) (200 . 100) (150 . 50)) T '(ROUND 3) '(4 2) XX) will draw a polygon like the following on the display stream XX. `p88>>8>@~p~8~@pπp8~~>q19qpA8 p8pp@8 p8pp@8 p@ (FILLPOLYGON POINTS TEXTURE OPERATION WINDNUMBER STREAM) [Function] OPERATION is the BITBLT operation (see page 27.15 in the Interlisp-D Reference Manual) used to fill the polygon. If the OPERATION is NIL, the OPERATION defaults to the STREAM default OPERATION. WINDNUMBER is the number for the winding rule convention . This number is either 0 or 1; 0 indicates the "zero" winding rule, 1 indicates the "odd" winding rule. When filling a polygon, there is more than one way of dealing with the situation where two polygon sides intersect, or one polygon is fully inside the other. Currently, FILLPOLYGON to a display stream uses the "odd" winding rule, which means that intersecting polygon sides define areas that are filled or not filled somewhat like a checkerboard. For example, (FILLPOLYGON '( ((110 . 110)(150 . 200)(190 . 110)) ((135 . 125)(160 . 125)(160 . 150)(135 . 150)) ) GRAYSHADE WINDOW) will produce a display something like this: `/E@@@ + +PP**PUT**UTUT*UTUTTUP +* +*P@P + +@((*PUT** +UPTUPT*UTUUUPU + +U@UUU@TU@P@ + + + +@PP**PP  @ This fill convention also takes into account all polygons in POINTS, if it specifies multiple polygons. (FILLCIRCLE CENTERX CENTERY RADIUS TEXTURE STREAM) [Function] Fills in a circular area of radius RADIUS about the point (CENTERX,CENTERY) in STREAM with TEXTURE. STREAM's position is left at (CENTERX,CENTERY). (DSPRESET STREAM) [Function] Sets the X coordinate of STREAM to its left margin, sets its Y coordinate to the top of the clipping region minus the font ascent. For a display stream, this also fills its destination bitmap with its background texture. (DSPNEWPAGE STREAM) [Function] Starts a new page. The X coordinate is set to the left margin, and the Y coordinate is set to the top margin plus the linefeed. (CENTERPRINTINREGION EXP REGION STREAM) [Function] Prints EXP so that is it centered within REGION of the STREAM. If REGION is NIL, EXP will be centered in the clipping region of STREAM. Drawing and Shading Grids 1 A grid is a partitioning of an arbitrary coordinate system (hereafter referred to as the "source system") into rectangles. This section describes functions that operate on grids. It includes functions to draw the outline of a grid, to translate between positions in a source system and grid coordinates (the coordinates of the rectangle which contains a given position), and to shade grid rectangles. A grid is defined by its "unit grid," a region (called a grid specification) which is the origin rectangle of the grid in terms of the source system. Its LEFT field is interpreted as the X-coordinate of the left edge of the origin rectangle, its BOTTOM field is the Y-coordinate of the bottom edge of the origin rectangle, its WIDTH is the width of the grid rectangles, and its HEIGHT is the height of the grid rectangles. (GRID GRIDSPEC WIDTH HEIGHT BORDER STREAM GRIDSHADE) [Function] Outlines the grid defined by GRIDSPEC which is WIDTH rectangles wide and HEIGHT rectangles high on STREAM. Each box in the grid has a border within it that is BORDER points on each side; so the resulting lines in the grid are 2*BORDER thick. If BORDER is the atom POINT, instead of a border the lower left point of each grid rectangle will be turned on. If GRIDSHADE is non-NIL, it should be a texture and the border lines will be drawn using that texture. (SHADEGRIDBOX X Y SHADE OPERATION GRIDSPEC GRIDBORDER STREAM) [Function] Shades the grid rectangle (X,Y) of GRIDSPEC with texture SHADE using OPERATION on STREAM. GRIDBORDER is interpreted the same as for GRID. The following two functions map from the X,Y coordinates of the source system into the grid X,Y coordinates: (GRIDXCOORD XCOORD GRIDSPEC) [Function] Returns the grid X-coordinate (in the grid specified by GRIDSPEC) that contains the source system X-coordinate XCOORD. (GRIDYCOORD YCOORD GRIDSPEC) [Function] Returns the grid Y-coordinate (in the grid specified by GRIDSPEC) that contains the source system Y-coordinate YCOORD. The following two functions map from the grid X,Y coordinates into the X,Y coordinates of the source system: (LEFTOFGRIDCOORD GRIDX GRIDSPEC) [Function] Returns the source system X-coordinate of the left edge of a grid rectangle at grid X-coordinate GRIDX (in the grid specified by GRIDSPEC). (BOTTOMOFGRIDCOORD GRIDY GRIDSPEC) [Function] Returns the source system Y-coordinate of the bottom edge of a grid rectangle at grid Y-coordinate GRIDY (in the grid specified by GRIDSPEC). Display Streams 1 Display streams (image streams of type DISPLAY) are used to control graphic output operations to a bitmap, known as the "destination" bitmap of the display stream. For each window on the screen, there is an associated display stream which controls graphics operations to a specific part of the screen bitmap. Any of the functions that take a display stream will also take a window, and use the associated display stream. Display streams can also have a destination bitmap that is not connected to any window or display device. (DSPCREATE DESTINATION) [Function] Creates and returns a display stream. If DESTINATION is specified, it is used as the destination bitmap, otherwise the screen bitmap is used. (DSPDESTINATION DESTINATION DISPLAYSTREAM) [Function] Returns the current destination bitmap for DISPLAYSTREAM, setting it to DESTINATION if non-NIL. DESTINATION can be either the screen bitmap, or an auxilliary bitmap in order to construct figures, possibly save them, and then display them in a single operation. Warning: The window system maintains the destination of a window's display stream. Users should be very careful about changing this field. (DSPXOFFSET XOFFSET DISPLAYSTREAM) [Function] (DSPYOFFSET YOFFSET DISPLAYSTREAM) [Function] Each display stream has its own coordinate system, separate from the coordinate system of its destination bitmap. Having the coordinate system local to the display stream allows objects to be displayed at different places by translating the display stream's coordinate system relative to its destination bitmap. This local coordinate system is defined by the X offset and Y offset. DSPXOFFSET returns the current X offset for DISPLAYSTREAM, the X origin of the display stream's coordinate system in the destination bitmap's coordinate system. It is set to XOFFSET if non-NIL. DSPYOFFSET returns the current Y offset for DISPLAYSTREAM, the Y origin of the display stream's coordinate system in the destination bitmap's coordinate system. It is set to YOFFSET if non-NIL. The X offset and Y offset for a display stream are both initially 0 (no X or Y-coordinate translation). Warning: The window system maintains the X and Y offset of a window's display stream. Users should be very careful about changing these fields. (DSPTEXTURE TEXTURE DISPLAYSTREAM) [Function] Returns the current texture used as the background pattern for DISPLAYSTREAM. It is set to TEXTURE if non-NIL. Initially the value of WHITESHADE. (DSPSOURCETYPE SOURCETYPE DISPLAYSTREAM) [Function] Returns the current BITBLT sourcetype used when printing characters to the display stream. It is set to SOURCETYPE, if non-NIL. Must be either INPUT or INVERT. Initially INPUT. (DSPSCROLL SWITCHSETTING DISPLAYSTREAM) [Function] Returns the current value of the "scroll flag," a flag that determines the scrolling behavior of the display stream; either ON or OFF. If ON, the bits in the display streams's destination bitmap are moved after any linefeed that moves the current position out of the destination bitmap. Any bits moved out of the current clipping region are lost. Does not adjust the X offset, Y offset, or clipping region of the display stream. Initially OFF. Sets the scroll flag to SWITCHSETTING, if non-NIL. Note: The word "scrolling" also describes the use of "scroll bars" on the left and bottom of a window to move an object displayed in a window. Each window has an associated display stream. To get the window of a particular display stream, use WFROMDS: (WFROMDS DISPLAYSTREAM DONTCREATE) [Function] Returns the window associated with DISPLAYSTREAM, creating a window if one does not exist (and DONTCREATE is NIL). Returns NIL if the destination of DISPLAYSTREAM is not a screen bitmap that supports a window system. If DONTCREATE is non-NIL, WFROMDS will never create a window, and returns NIL if DISPLAYSTREAM does not have an associated window. TTYDISPLAYSTREAM calls WFROMDS with DONTCREATE = T, so it will not create a window unnecessarily. Also, if WFROMDS does create a window, it calls CREATEW with NOOPENFLG = T. (DSPBACKUP WIDTH DISPLAYSTREAM) [Function] Backs up DISPLAYSTREAM over a character which is WIDTH screen points wide. DSPBACKUP fills the backed over area with the display stream's background texture and decreases the X position by WIDTH. If this would put the X position less than DISPLAYSTREAM's left margin, its operation is stopped at the left margin. It returns T if any bits were written, NIL otherwise. Fonts 1 A font is the collection of images that are printed or displayed when characters are output to a graphic output device. Some simple displays and printers can only print characters using one font. Bitmap displays and graphic printers can print characters using a large number of fonts. Fonts are identified by a distinctive style or family (such as Modern or Classic), a size (such as 10 points), and a face (such as bold or italic). Fonts also have a rotation that indicates the orientation of characters on the screen or page. A normal horizontal font (also called a portrait font) has a rotation of 0; the rotation of a vertical (landscape) font is 90 degrees. While any combination can be specified, in practice the user will find that only certain combinations of families, sizes, faces, and rotations are available for any graphic output device. To specify a font to the functions described below, a FAMILY is represented by a literal atom, a SIZE by a positive integer, and a FACE by a three-element list of the form (WEIGHT SLOPE EXPANSION). WEIGHT, which indicates the thickness of the characters, can be BOLD, MEDIUM, or LIGHT; SLOPE can be ITALIC or REGULAR; and EXPANSION can be REGULAR, COMPRESSED, or EXPANDED, indicating how spread out the characters are. For convenience, faces may also be specified by three-character atoms, where each character is the first letter of the corresponding field. Thus, MRR is a synonym for (MEDIUM REGULAR REGULAR). In addition, certain common face combinations may be indicated by special literal atoms: STANDARD = (MEDIUM REGULAR REGULAR) = MRR ITALIC = (MEDIUM ITALIC REGULAR) = MIR BOLD = (BOLD REGULAR REGULAR) = BRR BOLDITALIC = (BOLD ITALIC REGULAR) = BIR Interlisp represents all the information related to a font in an object called a font descriptor. Font descriptors contain the family, size, etc. properties used to represent the font. In addition, for each character in the font, the font descriptor contains width information for the character and (for display fonts) a bitmap containing the picture of the character. The font functions can take fonts specified in a variety of different ways. DSPFONT, FONTCREATE, FONTCOPY, etc. can be applied to font descriptors, "font lists" such as '(MODERN 10), image streams (coerced to its current font), or windows (coerced to the current font of its display stream). The printout command ".FONT" will also accept fonts specified in any of these forms. In general font files use the following format: The family name (e.g., Modern); a two digit size (e.g., 08); a three letter Face (e.g., BIR, for Bold Italic Regular); the letter C followed by the font's character set in base 8 (e.g., C41); and finally an extension (e.g., Displayfont). ((SKETCH a% figure% from% a% document VERSION 3 PRIRANGE (19 . 0) SKETCHCONTEXT ((ROUND 1 BLACK) (GACHA 10 (MEDIUM REGULAR REGULAR)) (CENTER BASELINE) (CURVE 18.0 8) NIL NIL (CENTER CENTER) (NIL NIL NIL) T NIL NIL 1 NIL)) ((0.05 13.0 (PRI 3)) (TEXT (88.0 . 120.0) ("Family") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((72.5 116.5 31 13)) BLACK)) ((0.05 13.0 (PRI 4)) (TEXT (112.0 . 176.0) ("Size") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((102.5 172.5 19 13)) BLACK)) ((0.05 13.0 (PRI 5)) (TEXT (132.0 . 120.0) ("Face") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((121.5 116.5 21 13)) BLACK)) ((0.05 13.0 (PRI 7)) (TEXT (152.0 . 144.0) ("Modern08-BIR-C41.Displayfont") 1 (CENTER BASELINE) (TERMINAL 10 (MEDIUM REGULAR REGULAR)) ((68.0 140.5 168 13)) BLACK)) ((0.05 13.0 (PRI 8)) (TEXT (192.0 . 168.0) ("CharacterSet (base 8)") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((142.5 164.5 99 13)) BLACK)) ((0.05 13.0 (PRI 9)) (TEXT (208.0 . 120.0) ("Extension") 1 (CENTER BASELINE) (MODERN 10 (MEDIUM REGULAR REGULAR)) ((185.0 116.5 46 13)) BLACK)) ((0.0 6.0 (PRI 11)) (WIRE ((88 . 128) (88 . 140)) (ROUND 1 BLACK) (NIL (SOLID 18.0 8)) NIL 1 NIL (NIL ((88 . 140) (90.47214 . 132.3916) (85.52786 . 132.3916))))) ((0.0 6.0 (PRI 13)) (WIRE ((208 . 128) (208 . 140)) (ROUND 1 BLACK) (NIL (SOLID 18.0 8)) NIL 1 NIL (NIL ((208 . 140) (210.4721 . 132.3916) (205.5279 . 132.3916))))) ((0.0 6.0 (PRI 14)) (WIRE ((156 . 164) (156 . 152)) (ROUND 1 BLACK) (NIL (SOLID 18.0 8)) NIL 1 NIL (NIL ((156 . 152) (153.5279 . 159.6085) (158.4721 . 159.6085))))) ((0.0 6.0 (PRI 15)) (WIRE ((112 . 164) (112 . 152)) (ROUND 1 BLACK) (NIL (SOLID 18.0 8)) NIL 1 NIL (NIL ((112 . 152) (109.5279 . 159.6085) (114.4721 . 159.6085))))) ((0.05 11.0 (PRI 16)) (TEXT (112.0 . 168.0) ("(two digits)") 1 (CENTER BASELINE) (MODERN 8 (MEDIUM REGULAR REGULAR)) ((90.5 165.5 43 11)) BLACK)) ((0.0 10.0 (PRI 18)) (WIRE ((120 . 144) (120 . 136) (140 . 136) (140 . 144)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL)) ((0.0 6.0 (PRI 19)) (WIRE ((132 . 124) (132 . 136)) (ROUND 1 BLACK) NIL NIL 1 NIL NIL))) (68.0 116.0 174.0 69.0) 1.0 4 (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET) [Function] Returns a font descriptor for the specified font. FAMILY is a litatom specifying the font family. SIZE is an integer indicating the size of the font in points. FACE specifies the face characteristics in one of the formats listed above; if FACE is NIL, STANDARD is used. ROTATION, which specifies the orientation of the font, is 0 (or NIL) for a portrait font and 90 for a landscape font. DEVICE indicates the output device for the font, and can be any image stream type , such as DISPLAY, INTERPRESS, etc. DEVICE may also be an image stream, in which case the type of the stream determines the font device. DEVICE defaults to DISPLAY. The FAMILY argument to FONTCREATE may also be a list, in which case it is interpreted as a font-specification quintuple, a list of the form (FAMILY SIZE FACE ROTATION DEVICE). Thus, (FONTCREATE '(GACHA 10 BOLD)) is equivalent to (FONTCREATE 'GACHA 10 'BOLD). FAMILY may also be a font descriptor, in which case that descriptor is simply returned. If a font descriptor has already been created for the specified font, FONTCREATE simply returns it. If it has not been created, FONTCREATE has to read the font information from a font file that contains the information for that font. The name of an appropriate font file, and the algorithm for searching depends on the device that the font is for, and is described in more detail below. If an appropriate font file is found, it is read into a font descriptor. If no file is found, for DISPLAY fonts FONTCREATE looks for fonts with less face information and fakes the remaining faces (such as by doubling the bit pattern of each character or slanting it). For hardcopy printer fonts, there is no acceptable faking algorithm. If no acceptable font is found, the action of FONTCREATE is determined by NOERRORFLG. If NOERRORFLG is NIL, it generates a FONT NOT FOUND error with the offending font specification; otherwise, FONTCREATE returns NIL. CHARSET is the character set which will be read to create the font. Defaults to 0. For more information on character sets, see NS Characters. (FONTP X) [Function] Returns X if X is a font descriptor; NIL otherwise. (FONTPROP FONT PROP) [Function] Returns the value of the PROP property of font FONT. The following font properties are recognized: FAMILY The style of the font, represented as a literal atom, such as CLASSIC or MODERN. SIZE A positive integer giving the size of the font, in printer's points (1/72 of an inch). WEIGHT The thickness of the characters; one of BOLD, MEDIUM, or LIGHT. SLOPE The "slope" of the characters in the font; one of ITALIC or REGULAR. EXPANSION The extent to which the characters in the font are spread out; one of REGULAR, COMPRESSED, or EXPANDED. Most available fonts have EXPANSION = REGULAR. FACE A three-element list of the form (WEIGHT SLOPE EXPANSION), giving all of the typeface parameters. ROTATION An integer that gives the orientation of the font characters on the screen or page, in degrees. A normal horizontal font (also called a portrait font) has a rotation of 0; the rotation of a vertical (landscape) font is 90. DEVICE The device that the font can be printed on; one of DISPLAY, INTERPRESS, etc. ASCENT An integer giving the maximum height of any character in the font from its base line (the printing position). The top line will be at BASELINE+ASCENT-1. DESCENT An integer giving the maximum extent of any character below the base line, such as the lower part of a "p". The bottom line of a character will be at BASELINE-DESCENT. HEIGHT Equal to ASCENT + DESCENT. SPEC The (FAMILY SIZE FACE ROTATION DEVICE) quintuple by which the font is known to Lisp. DEVICESPEC The (FAMILY SIZE FACE ROTATION DEVICE) quintuple that identifies what will be used to represent the font on the display or printer. It will differ from the SPEC property only if an implicit coercion is done to approximate the specified font with one that actually exists on the device. SCALE The units per printer's point (1/72 of an inch) in which the font is measured. For example, this is 35.27778 (the number of micas per printer's point) for Interpress fonts, which are measured in terms of micas. (FONTCOPY OLDFONT PROP1 VAL1 PROP2 VAL2 ...) [NoSpread Function] Returns a font descriptor that is a copy of the font OLDFONT, but which differs from OLDFONT in that OLDFONT's properties are replaced by the specified properties and values. Thus, (FONTCOPY FONT 'WEIGHT 'BOLD 'DEVICE 'INTERPRESS) will return a bold Interpress font with all other properties the same as those of FONT. FONTCOPY accepts the properties FAMILY, SIZE, WEIGHT, SLOPE, EXPANSION, FACE, ROTATION, and DEVICE. If the first property is a list, it is taken to be the PROP1 VAL1 PROP2 VAL2 ... sequence. Thus, (FONTCOPY FONT '(WEIGHT BOLD DEVICE INTERPRESS)) is equivalent to the example above. If the property NOERROR is specified with value non-NIL, FONTCOPY will return NIL rather than causing an error if the specified font cannot be created. (FONTSAVAILABLE FAMILY SIZE FACE ROTATION DEVICE CHECKFILESTOO?) [Function] Returns a list of available fonts that match the given specification. FAMILY, SIZE, FACE, ROTATION, and DEVICE are the same as for FONTCREATE. Additionally, any of them can be the atom *, in which case all values of that field are matched. If CHECKFILESTOO? is NIL, only fonts already loaded into virtual memory will be considered. If CHECKFILESTOO? is non-NIL, the font directories for the specified device will be searched. When checking font files, the ROTATION is ignored. Note: The search is conditional on the status of the server which holds the font. Thus a file server crash may prevent FONTCREATE from finding a file that an earlier FONTSAVAILABLE returned. Each element of the list returned will be of the form (FAMILY SIZE FACE ROTATION DEVICE). Examples: (FONTSAVAILABLE 'MODERN 10 'MRR 0 'DISPLAY) will return ((MODERN 10 (MEDIUM REGULAR REGULAR) 0 DISPLAY)) if the regular Modern 10 font for the display is in virtual memory; NIL otherwise. (FONTSAVAILABLE '* 14 '* '* 'INTERPRESS T) will return a list of all the size 14 Interpress fonts, whether they are in virtual memory or in font files. (SETFONTDESCRIPTOR FAMILY SIZE FACE ROTATION DEVICE FONT) [Function] Indicates to the system that FONT is the font that should be associated with the FAMILY SIZE FACE ROTATION DEVICE characteristics. If FONT is NIL, the font associated with these characteristics is cleared and will be recreated the next time it is needed. As with FONTPROP and FONTCOPY, FONT is coerced to a font descriptor if it is not one already. This functions is useful when it is desirable to simulate an unavailable font or to use a font with characteristics different from the interpretations provided by the system. (DEFAULTFONT DEVICE FONT %) [Function] Returns the font that would be used as the default (if NIL were specified as a font argument) for image stream type DEVICE. If FONT is a font descriptor, it is set to be the default font for DEVICE. (CHARWIDTH CHARCODE FONT) [Function] CHARCODE is an integer that represents a valid character (as returned by CHCON1). Returns the amount by which an image stream's X-position will be incremented when the character is printed. (CHARWIDTHY CHARCODE FONT) [Function] Like CHARWIDTH, but returns the Y component of the character's width, the amount by which an image stream's Y-position will be incremented when the character is printed. This will be zero for most characters in normal portrait fonts, but may be non-zero for landscape fonts or for vector-drawing fonts. (STRINGWIDTH STR FONT FLG RDTBL) [Function] Returns the amount by which a stream's X-position will be incremented if the printname for the Interlisp-D object STR is printed in font FONT. If FONT is NIL, DEFAULTFONT is used as FONT. If FONT is an image stream, its font is used. If FLG is non-NIL, the PRIN2-pname of STR with respect to the readtable RDTBL is used. (STRINGREGION STR STREAM PRIN2FLG RDTBL) [Function] Returns the region occupied by STR if it were printed at the current location in the image stream STREAM. This is useful, for example, for determining where text is in a window to allow the user to select it. The arguments PRIN2FLG and RDTBL are passed to STRINGWIDTH. Note: STRINGREGION does not take into account any carriage returns in the string, or carriage returns that may be automatically printed if STR is printed to STREAM. Therefore, the value returned is meaningless for multi-line strings. The following functions allow the user to access and change the bitmaps for individual characters in a display font. Note: Character code 256 can be used to access the "dummy" character, used for characters in the font with no bitmap defined. (GETCHARBITMAP CHARCODE FONT) [Function] Returns a bitmap containing a copy of the image of the character CHARCODE in the font FONT. (PUTCHARBITMAP CHARCODE FONT NEWCHARBITMAP NEWCHARDESCENT) [Function] Changes the bitmap image of the character CHARCODE in the font FONT to the bitmap NEWCHARBITMAP. If NEWCHARDESCENT is non-NIL, the descent of the character is changed to the value of NEWCHARDESCENT. (EDITCHAR CHARCODE FONT) [Function] Calls the bitmap editor (EDITBM) on the bitmap image of the character CHARCODE in the font FONT. CHARCODE can be a character code (as returned by CHCON1) or an atom or string, in which case the first character of CHARCODE is used. (WRITESTRIKEFONTFILE(WRITESTRIKEFONTFILE (Function) NIL NIL (4) NIL) FONT CHARSET FILENAME) [Function] Takes a display font font descriptor(FONT% DESCRIPTOR NIL font% descriptor NIL (4) NIL) and a character set number, and writes that character set into a file suitable for reading in again. Note that the font descriptor's current state is used (which was perhaps modified by INSPECTing the datum), so this provides a mechanism for creating/modifying new fonts. For example: (WRITESTRIKEFONTFILE (FONTCREATE 'GACHA 10) 0 '{DSK}Magic10-MRR-C0.DISPLAYFONT) If your DISPLAYFONTDIRECTORIES(DISPLAYFONTDIRECTORIES (Variable) NIL NIL (4) NIL) includes {DSK}, then a subsequent (FONTCREATE 'MAGIC 10) will create a new font descriptor whose appearance is the same as the old Gacha font descriptor. However, the new font is identical to the old one in appearance only. The individual datatype fields and bitmap may not be the same as those in the old font descriptor, due to peculiarities of different font file formats. Font Files and Font Directories 1 If FONTCREATE is called to create a font that has not been loaded into Interlisp, FONTCREATE has to read the font information from a font file that contains the information for that font. For printer devices, the font files have to contain width information for each character in the font. For display fonts, the font files have to contain, in addition, bitmap images for each character in the fonts. The font file names, formats, and searching algorithms are different for each device. There are a set of variables for each device, that determine the directories that are searched for font files. All of these variables must be set before Interlisp can auto-load font files. These variables should be initialized in the site-specific INIT file. DISPLAYFONTDIRECTORIES [Variable] Value is a list of directories searched to find font bitmap files for display fonts. DISPLAYFONTEXTENSIONS [Variable] Value is a list of file extensions used when searching DISPLAYFONTDIRECTORIES for display fonts. Initially set to (DISPLAYFONT), but when using older font files it may be necessary to add STRIKE and AC to this list. INTERPRESSFONTDIRECTORIES [Variable] Value is a list of directories searched to find font widths files for Interpress fonts. PRESSFONTWIDTHSFILES [Variable] Value is a list of files (not directories) searched to find font widths files for Press fonts. Press font widths are packed into large files (usually named FONTS.WIDTHS). Font Profiles 1 PRETTYPRINT contains a facility for printing different elements (user functions, system functions, clisp words, comments, etc.) in different fonts to emphasize (or deemphasize) their importance, and in general to provide for a more pleasing appearance. Of course, in order to be useful, this facility requires that the user is printing on a device (such as a bitmapped display or a laser printer) which supports multiple fonts. PRETTYPRINT signals font changes by inserting into the file a user-defined escape sequence (the value of the variable FONTESCAPECHAR) followed by the character code which specifies, by number, which font to use, i.e. A for font number 1, etc. Thus, if FONTESCAPECHAR were the character F, FC would be output to change to font 3, FA to change to font 1, etc. If FONTESCAPECHAR consists of characters which are separator charactors in FILERDTBL, then a file with font changes in it can also be loaded back in. Currently, PRETTYPRINT uses the following font classes. The user can specify separate fonts for each of these classes, or use the same font for several different classes. LAMBDAFONT The font for printing the name of the function being prettyprinted, before the actual definition (usually a large font). CLISPFONT If CLISPFLG is on, the font for printing any clisp words, i.e. atoms with property CLISPWORD. COMMENTFONT The font used for comments. USERFONT The font for the name of any function in the file, or any member of the list FONTFNS. SYSTEMFONT The font for any other (defined) function. CHANGEFONT The font for an expression marked by the editor as having been changed. PRETTYCOMFONT The font for the operand of a file package command. DEFAULTFONT The font for everything else. Note that not all combinations of fonts will be aesthetically pleasing (or even readable!) and the user may have to experiment to find a compatible set. Although in some implementations LAMBDAFONT et al. may be defined as variables, one should not set them directly, but should indicate what font is to be used for each class by calling the function FONTPROFILE: (FONTPROFILE PROFILE) [Function] Sets up the font classes as determined by PROFILE, a list of elements which defines the correspondence between font classes and specific fonts. Each element of PROFILE is a list of the form: (FONTCLASS FONT# DISPLAYFONT PRESSFONT INTERPRESSFONT) FONTCLASS is the font class name and FONT# is the font number for that class. For each font class name, the escape sequence will consist of FONTESCAPECHAR followed by the character code for the font number, e.g. A for font number 1, etc. If FONT# is NIL for any font class, the font class named DEFAULTFONT (which must always be specified) is used. Alternatively, if FONT# is the name of a previously defined font class, this font class will be equivalenced to the previously defined one. DISPLAYFONT, PRESSFONT, and INTERPRESSFONT are font specifications (of the form accepted by FONTCREATE) for the fonts to use when printing to the display and to Press and Interpress printers respectively. FONTPROFILE [Variable] This is the variable used to store the current font profile, in the form accepted by the function FONTPROFILE. Note that simply editing this value will not change the fonts used for the various font classes; it is necessary to execute (FONTPROFILE FONTPROFILE) to install the value of this variable. The process of printing with multiple fonts is affected by a large number of variables: FONTPROFILE, FILELINELENGTH, PRETTYLCOM, etc. To facilitate switching back and forth between various sets of values for the font variables, Interlisp supports the idea of named "font configurations" encapsulating the values of all relevant variables. To create a new font configuration, set all "relevant" variables to the values you want, and then call FONTNAME to save them (on the variable FONTDEFS) under a given name. To install a particular font configuration, call FONTSET giving it your name. To change the values in a saved font configuration, edit the value of the variable FONTDEFS. Note: The list of variables saved by FONTNAME is stored in the variable FONTDEFSVARS. This can be changed by the user. (FONTSET NAME) [Function] Installs font configuration for NAME. Also evaluates (FONTPROFILE FONTPROFILE) to install the font classes as specified in the new value of the variable FONTPROFILE. Generates an error if NAME not previously defined. FONTDEFSVARS [Variable] The list of variables to be packaged by a FONTNAME. Initially FONTCHANGEFLG, FILELINELENGTH, COMMENTLINELENGTH, FIRSTCOL, PRETTYLCOM, LISTFILESTR, and FONTPROFILE. FONTDEFS [Variable] An association list of font configurations. FONTDEFS is a list of elements of form (NAME . PARAMETER-PAIRS). To save a configuration on a file after performing a FONTNAME to define it, the user could either save the entire value of FONTDEFS, or use the ALISTS file package command to dump out just the one configuration. FONTESCAPECHAR [Variable] The character or string used to signal the start of a font escape sequence. FONTCHANGEFLG [Variable] If T, enables fonts when prettyprinting. If NIL, disables fonts. ALL indicates that all calls to CHANGEFONT are executed. LISTFILESTR [Variable] In Interlisp-10, passed to the operating system by LISTFILES. Can be used to specify subcommands to the LIST command, e.g. to establish correspondance between font number and font name. COMMENTLINELENGTH [Variable] Since comments are usually printed in a smaller font, COMMENTLINELENGTH is provided to offset the fact that Interlisp does not know about font widths. When FONTCHANGEFLG = T, CAR of COMMENTLINELENGTH is the linelength used to print short comments, i.e. those printed in the right margin, and CDR is the linelength used when printing full width comments. (CHANGEFONT FONT STREAM) [Function] Executes the operations on STREAM to change to the font FONT. For use in PRETTYPRINTMACROS. Image Objects 1 An Image Object is an object that includes information about an image, such as how to display it, how to print it, and how to manipulate it when it is included in a collection of images (such as a document). More generally, it enables you to include one kind of image, with its own semantics, layout rules, and editing paradigms, inside another kind of image. Image Objects provide a general-purpose interface between image users who want to manipulate arbitrary images, and image producers, who create images for use, say, in documents. Images are encapsulated inside a uniform barrier%the IMAGEOBJ data type. From the outside, you communicate to the image by calling a standard set of functions. For example, calling one function tells you how big the image is; calling another causes the image object to be displayed where you tell it, and so on. Anyone who wants to create images for general use can implement his own brand of IMAGEOBJ. IMAGEOBJs have been implemented (in library packages) for bitmaps, menus, annotations, graphs, and sketches. Image Objects were originally implemented to support inserting images into TEdit text files, but the facility is available for use by any tools that manipulate images. The Image Object interface allows objects to exist in TEdit documents and be edited with their own editor. It also provides a facility in which objects can be shift-selected (or "copy-selected") between TEdit and non-TEdit windows. For example, the Image Objects interface allows you to copy-select graphs from a Grapher window into a TEdit window. The source window (where the object comes from) does not have to know what sort of window the destination window (where the object is inserted) is, and the destination does not have to know where the insertion comes from. A new data type, IMAGEOBJ, contains the data and the procedures necessary to manipulate an object that is to be manipulated in this way. IMAGEOBJs are created with the function IMAGEOBJCREATE (below). Another new data type, IMAGEFNS, is a vector of the procedures necessary to define the behavior of a type of IMAGEOBJ. Grouping the operations in a separate data type allows multiple instances of the same type of image object to share procedure vectors. The data and procedure fields of an IMAGEOBJ have a uniform interface through the function IMAGEOBJPROP. IMAGEFNS are created with the function IMAGEFNSCREATE: (IMAGEFNSCREATE(IMAGEFNSCREATE (Function) NIL NIL ("27") 27) DISPLAYFN IMAGEBOXFN PUTFN GETFN COPYFN BUTTONEVENTINFN COPYBUTTONEVENTINFN WHENMOVEDFN WHENINSERTEDFN WHENDELETEDFN WHENCOPIEDFN WHENOPERATEDONFN PREPRINTFN %) [Function] Returns an IMAGEFNS object that contains the functions necessary to define the behavior of an IMAGEOBJ. The arguments DISPLAYFN through PREPRINTFN should all be function names to be stored as the "methods" of the IMAGEFNS. The purpose of each IMAGEFNS method is described below. Note: Image objects must be "registered" before they can be read by TEdit or HREAD. IMAGEFNSCREATE implicitly registers its GETFN argument. (IMAGEOBJCREATE(IMAGEOBJCREATE (Function) NIL NIL ("27") 27) OBJECTDATUM IMAGEFNS) [Function] Returns an IMAGEOBJ that contains the object datum OBJECTDATUM and the operations vector IMAGEFNS. OBJECTDATUM can be arbitrary data. (IMAGEOBJPROP(IMAGEOBJPROP (Function) NIL NIL ("27") 28) IMAGEOBJECT PROPERTY NEWVALUE) [NoSpread Function] Accesses and sets the properties of an IMAGEOBJ. Returns the current value of the PROPERTY property of the image object IMAGEOBJECT. If NEWVALUE is given, the property is set to it. IMAGEOBJPROP can be used on the system properties OBJECTDATUM, DISPLAYFN, IMAGEBOXFN, PUTFN, GETFN, COPYFN, BUTTONEVENTINFN, COPYBUTTONEVENTINFN, WHENOPERATEDONFN, and PREPRINTFN. Additionally, it can be used to save arbitrary properties on an IMAGEOBJ. (IMAGEFNSP(IMAGEFNSP (Function) NIL NIL ("27") 28) X) [Function] Returns X if X is an IMAGEFNS object, NIL otherwise. (IMAGEOBJP(IMAGEOBJP (Function) NIL NIL ("27") 28) X) [Function] Returns X if X is an IMAGEOBJ object, NIL otherwise. IMAGEFNS Methods Note: Many of the IMAGEFNS methods below are passed "host stream" arguments. The TEdit text editor passes the "text stream" (an object contain all of the information in the document being edited) as the "host stream" argument. Other editing programs that want to use image objects may want to pass the data structure being edited to the IMAGEFNS methods as the "host stream" argument. (DISPLAYFN IMAGEOBJ IMAGESTREAM IMAGESTREAMTYPE HOSTSTREAM) [IMAGEFNS Method] The DISPLAYFN method is called to display the object IMAGEOBJ at the current position on IMAGESTREAM. The type of IMAGESTREAM indicates whether the device is the display or some other image stream. Note: When the DISPLAYFN method is called, the offset and clipping regions for the stream are set so the object's image is at (0,0), and only that image area can be modified. (IMAGEBOXFN IMAGEOBJ IMAGESTREAM CURRENTX RIGHTMARGIN) [IMAGEFNS Method] The IMAGEBOXFN method should return the size of the object as an IMAGEBOX, which is a data structure that describes the image laid down when an IMAGEOBJ is displayed in terms of width, height, and descender height. An IMAGEBOX has four fields: XSIZE, YSIZE, YDESC, and XKERN. XSIZE and YSIZE are the width and height of the object image. YDESC and XKERN give the position of the baseline and the left edge of the image relative to where you want to position it. For characters, the YDESC is the descent (height of the descender) and the XKERN is the amount of left kerning (note: TEdit doesn't support left kerning). The IMAGEBOXFN looks at the type of the stream to determine the output device if the object's size changes from device to device. (For example, a bit-map object may specify a scale factor that is ignored when the bit map is displayed on the screen.) CURRENTX and RIGHTMARGIN allow an object to take account of its environment when deciding how big it is. If these fields are not available, they are NIL. Note: TEdit calls the IMAGEBOXFN only during line formatting, then caches the IMAGEBOX as the BOUNDBOX property of the IMAGEOBJ. This avoids the need to call the IMAGEBOXFN when incomplete position and margin information is available. (PUTFN IMAGEOBJ FILESTREAM) [IMAGEFNS Method] The PUTFN method is called to save the object on a file. It prints a description on FILESTREAM that, when read by the corresponding GETFN method (see below), regenerates the image object. (TEdit and HPRINT take care of writing out the name of the GETFN.) (GETFN FILESTREAM) [IMAGEFNS Method] The GETFN method is called when the object is encountered on the file during input. It reads the description that was written by the PUTFN method and returns an IMAGEOBJ. (COPYFN IMAGEOBJ SOURCEHOSTSTREAM TARGETHOSTSTREAM) [IMAGEFNS Method] The COPYFN method is called during a copy-select operation. It should return a copy of IMAGEOBJ. If it returns the litatom DON'T, copying is suppressed. (BUTTONEVENTINFN IMAGEOBJ WINDOWSTREAM SELECTION RELX RELY WINDOW HOSTSTREAM BUTTON) [IMAGEFNS Method] The BUTTONEVENTINFN method is called when you press a mouse button inside the object. The BUTTONEVENTINFN decides whether or not to handle the button, to track the cursor in parallel with mouse movement, and to invoke selections or edits supported by the object (but see the COPYBUTTONEVENTINFN method below). If the BUTTONEVENTINFN returns NIL, TEdit treats the button press as a selection at its level. Note that when this function is first called, a button is down. The BUTTONEVENTINFN should also support the button-down protocol to descend inside of any composite objects with in it. In most cases, the BUTTONEVENTINFN relinquishes control (i.e., returns) when the cursor leaves its object's region. When the BUTTONEVENTINFN is called, the window's clipping region and offsets have been changed so that the lower-left corner of the object's image is at (0,0), and only the object's image can be changed. The selection is available for changing to fit your needs; the mouse button went down at (RELX,RELY) within the object's image. You can affect how TEdit treats the selection by returning one of several values. If you return NIL, TEdit forgets that you selected an object; if you return the atom DON'T, TEdit doesn't permit the selection; if you return the atom CHANGED, TEdit updates the screen. Use CHANGED to signal TEdit that the object has changed size or will have side effects on other parts of the screen image. (COPYBUTTONEVENTINFN IMAGEOBJ WINDOWSTREAM) [IMAGEFNS Method] The COPYBUTTONEVENTINFN method is called when you button inside an object while holding down a copy key. Many of the comments about BUTTONEVENTINFN apply here too. Also, see the discussion below about copying image objects between windows. (WHENMOVEDFN IMAGEOBJ TARGETWINDOWSTREAM SOURCEHOSTSTREAM TARGETHOSTSTREAM) [IMAGEFNS Method] The WHENMOVEDFN method provides hooks by which the object is notified when TEdit performs an operation (MOVEing) on the whole object. It allows objects to have side effects. (WHENINSERTEDFN IMAGEOBJ TARGETWINDOWSTREAM SOURCEHOSTSTREAM TARGETHOSTSTREAM) [IMAGEFNS Method] The WHENINSERTEDFN method provides hooks by which the object is notified when TEdit performs an operation (INSERTing) on the whole object. It allows objects to have side effects. (WHENDELETEDFN IMAGEOBJ TARGETWINDOWSTREAM) [IMAGEFNS Method] The WHENDELETEDFN method provides hooks by which the object is notified when TEdit performs an operation (DELETEing) on the whole object. It allows objects to have side effects. (WHENCOPIEDFN IMAGEOBJ TARGETWINDOWSTREAM SOURCEHOSTSTREAM TARGETHOSTSTREAM) [IMAGEFNS Method] The WHENCOPIEDFN method provides hooks by which the object is notified when TEdit performs an operation (COPYing) on the whole object. The WHENCOPIEDFN method is called in addition to (and after) the COPYFN method above. It allows objects to have side effects. (WHENOPERATEDONFN IMAGEOBJ WINDOWSTREAM HOWOPERATEDON SELECTION HOSTSTREAM) [IMAGEFNS Method] The WHENOPERATEDONFN method provides a hook for edit operations. HOWOPERATEDON should be one of SELECTED, DESELECTED, HIGHLIGHTED, and UNHILIGHTED. The WHENOPERATEDONFN differs from the BUTTONEVENTINFN because it is called when you extend a selection through the object. That is, the object is treated in toto as a TEdit character. HIGHLIGHTED refers to the selection being highlighted on the screen, and UNHIGHLIGHTED means that the highlighting is being turned off. (PREPRINTFN IMAGEOBJ) [IMAGEFNS Method] The PREPRINTFN method is called to convert the object into something that can be printed for inclusion in documents. It returns an object that the receiving window can print (using either PRIN1 or PRIN2,its choice) to obtain a character representation of the object. If the PREPRINTFN method is NIL, the OBJECTDATUM field of IMAGEOBJ itself is used. TEdit uses this function when you indicate that you want to print the characters from an object rather than the object itself (presumably using PRIN1 case). Registering Image Objects Each legitimate GETFN needs to be known to the system, to prevent various Trojan-horse problems and to allow the automatic loading of the supporting code for infrequently used IMAGEOBJs. To this end, there is a global list, IMAGEOBJGETFNS, that contains an entry for each GETFN. The existence of the entry marks the GETFN as legitimate; the entry itself is a property list, which can hold information about the GETFN. No action needs to be taken for GETFNs that are currently in use: the function IMAGEFNSCREATE automatically adds its GETFN argument to the list. However, packages that support obsolete versions of objects may need to explicitly add the obsolete GETFNs. For example, TEdit supports bit-map IMAGEOBJs. Recently, a change was made in the format in which objects are stored; to retain compatibility with the old object format, there are now two GETFNs. The current GETFN is automatically on the list, courtesy of IMAGEFNSCREATE. However, the code file that supports the old bit-map objects contains the clause: (ADDVARS (IMAGEOBJGETFNS (OLDGETFNNAME))), which adds the old GETFN to IMAGEOBJGETFNS. For a given GETFN, the entry on IMAGEOBJGETFNS may be a property list of information. Currently the only recognized property is FILE. FILE is the name of the file that can be loaded if the GETFN isn't defined. This file should define the GETFN, along with all the other functions needed to support that kind of IMAGEOBJ. For example, the bit-map IMAGEOBJ implemented by TEdit use the GETFN BMOBJ.GETFN2. Its entry on IMAGEOBJGETFNS is (BMOBJ.GETFN2 FILE IMAGEOBJ), indicating that the support code for bit-map image objects resides on the file IMAGEOBJ, and that the GETFN for them is BMOBJ.GETFN2. This makes it possible to have entries for GETFNs whose supporting code isn't loaded%you might, for instance, have your init file add entries to IMAGEOBJGETFNS for the kinds of image objects you commonly use. The system's default reading method will automatically load the code when necessary. Reading and Writing Image Objects on Files Image Objects can be written out to files using HPRINT and read back using HREAD. The following functions can also be used: (WRITEIMAGEOBJ(WRITEIMAGEOBJ (Function) NIL NIL ("27") 31) IMAGEOBJ STREAM) [Function] Prints (using PRIN2) a call to READIMAGEOBJ, then calls the PUTFN for IMAGEOBJ to write it onto STREAM. During input, then, the call to READIMAGEOBJ is read and evaluated; it in turn reads back the object's description, using the appropriate GETFN. (READIMAGEOBJ(READIMAGEOBJ (Function) NIL NIL ("27") 31) STREAM GETFN NOERROR) [Function] Reads an IMAGEOBJ from STREAM, starting at the current file position. Uses the function GETFN after validating it (and loading support code, if necessary). If the GETFN can't be validated or isn't defined, READIMAGEOBJ returns an "encapsulated image object", an IMAGEOBJ that safely encapsulates all of the information in the image object. An encapsulated image object displays as a rectangle that says, "Unknown IMAGEOBJ Type" and lists the GETFN's name. Selecting an encapsulated image object with the mouse causes another attempt to read the object from the file; this is so you can load any necessary support code and then get to the object. Warning: You cannot save an encapsulated image object on a file because there isn't enough information to allow copying the description to the new file from the old one. If NOERROR is non-NIL, READIMAGEOBJ returns NIL if it can't successfully read the object. Copying Image Objects Between Windows Copying between windows is implemented as follows: If a button event occurs in a window when a copy key is down, the window's COPYBUTTONEVENTFN window property is called. If this window supports copy-selection, it should track the mouse, indicating the item to be copied. When the button is released, the COPYBUTTONEVENTFN should create an image object out of the selected information, and call COPYINSERT to insert it in the current TTY window. COPYINSERT calls the COPYINSERTFN window property of the TTY window to insert this image object. Therefore, both the source and destination windows can determine how they handle copying image objects. If the COPYBUTTONEVENTFN of a window is NIL, the BUTTONEVENTFN is called instead when a button event occurs in the window when a copy key is down, and copying from that window is not supported. If the COPYINSERTFN of the TTY window is NIL, COPYINSERT will turn the image object into a string (by calling the PREPRINTFN method of the image object) and insert it by calling BKSYSBUF. COPYBUTTONEVENTFN [Window Property] The COPYBUTTONEVENTFN of a window is called (if it exists) when a button event occurs in the window and a copy key is down. If no COPYBUTTONEVENTFN exists, the BUTTONEVENTFN is called. COPYINSERTFN [Window Property] The COPYINSERTFN of the "destination" window is called by COPYINSERT to insert something into the destination window. It is called with two arguments: the object to be inserted and the destination window. The object to be inserted can be a character string, an IMAGEOBJ, or a list of IMAGEOBJs and character strings. As a convention, the COPYINSERTFN should call BKSYSBUF if the object to be inserted insert is a character string. (COPYINSERT IMAGEOBJ) [Function] COPYINSERT inserts IMAGEOBJ into the window that currently has the TTY. If the current TTY window has a COPYINSERTFN, it is called, passing it IMAGEOBJ and the window as arguments. If no COPYINSERTFN exists and if IMAGEOBJ is an image object, BKSYSBUF is called on the result of calling its PREPRINTFN on it. If IMAGEOBJ is not an image object, it is simply passed to BKSYSBUF . In this case, BKSYSBUF will call PRIN2 with a read table taken from the process associated with the TTY window. A window that wishes to use PRIN1 or a different read table must provide its own COPYINSERTFN to do this. Implementation of Image Streams 1 Interlisp does all image creation through a set of functions and data structures for device-independent graphics, known popularly as DIG. DIG is implemented through the use of a special type of stream, known as an image stream. An image stream, by convention, is any stream that has its IMAGEOPS field (described in detail below) set to a vector of meaningful graphical operations. Using image streams, you can write programs that draw and print on an output stream without regard to the underlying device, be it a window, a disk, or a printer. To define a new image stream type, it is necessary to put information on the variable IMAGESTREAMTYPES: IMAGESTREAMTYPES [Variable] This variable describes how to create a stream for a given image stream type. The value of IMAGESTREAMTYPES is an association list, indexed by the image stream type (e.g., DISPLAY, INTERPRESS, etc.). The format of a single association list item is: (IMAGETYPE (OPENSTREAM OPENSTREAMFN) (FONTCREATE FONTCREATEFN) (FONTSAVAILABLE FONTSAVAILABLEFN)) OPENSTREAMFN, FONTCREATEFN, and FONTSAVAILABLEFN are "image stream methods," device-dependent functions used to implement generic image stream operations. For Interpress image streams, the association list entry is: (INTERPRESS (OPENSTREAM OPENIPSTREAM) (FONTCREATE \CREATEINTERPRESSFONT) (FONTSAVAILABLE \SEARCHINTERPRESSFONTS)) (OPENSTREAMFN FILE OPTIONS) [Image Stream Method] FILE is the file name as it was passed to OPENIMAGESTREAM, and OPTIONS is the OPTIONS property list passed to OPENIMAGESTREAM. The result must be a stream of the appropriate image type. (FONTCREATEFN FAMILY SIZE FACE ROTATION DEVICE) [Image Stream Method] FAMILY is the family name for the font, e.g., MODERN. SIZE is the body size of the font, in printer's points. FACE is a three-element list describing the weight, slope, and expansion of the face desired, e.g., (MEDIUM ITALIC EXPANDED). ROTATION is how much the font is to be rotated from the normal orientation, in minutes of arc. For example, to print a landscape page, fonts have the rotation 5400 (90 degrees). The function's result must be a FONTDESCRIPTOR with the fields filled in appropriately. (FONTSAVAILABLEFN FAMILY SIZE FACE ROTATION DEVICE) [Image Stream Method] This function returns a list of all fonts agreeing with the FAMILY, SIZE, FACE, and ROTATION arguments; any of them may be wild-carded (i.e., equal to *, which means any value is acceptable). Each element of the list should be a quintuple of the form (FAMILY SIZE FACE ROTATION DEVICE). Where the function looks is an implementation decision: the FONTSAVAILABLEFN for the display device looks at DISPLAYFONTDIRECTORIES, the Interpress code looks on INTERPRESSFONTDIRECTORIES, and implementors of new devices should feel free to introduce new search path variables. As indicated above, image streams use a field that no other stream uses: IMAGEOPS. IMAGEOPS is an instance of the IMAGEOPS data type and contains a vector of the stream's graphical methods. The methods contained in the IMAGEOPS object can make arbitrary use of the stream's IMAGEDATA field, which is provided for their use, and may contain any data needed. IMAGETYPE [IMAGEOPS Field] Value is the name of an image type. Monochrome display streams have an IMAGETYPE of DISPLAY; color display streams are identified as (COLOR DISPLAY). The IMAGETYPE field is informational and can be set to anything you choose. IMFONTCREATE [IMAGEOPS Field] Value is the device name to pass to FONTCREATE when fonts are created for the stream. The remaining fields are all image stream methods, whose value should be a device-dependent function that implements the generic operation. Most methods are called by a similarly-named function, e.g. the function DRAWLINE calls the IMDRAWLINE method. All coordinates that refer to points in a display device's space are measured in the device's units. (The IMSCALE method provides access to a device's scale.) For arguments that have defaults (such as the BRUSH argument of DRAWCURVE), the default is substituted for the NIL argument before it is passed to the image stream method. Therefore, image stream methods do not have to handle defaults. (IMCLOSEFN STREAM) [Image Stream Method] Called before a stream is closed with CLOSEF. This method should flush buffers, write header or trailer information, etc. (IMDRAWLINE STREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) [Image Stream Method] Draws a line of width WIDTH from (X1, Y1) to (X2, Y2). See DRAWLINE. (IMDRAWCURVE STREAM KNOTS CLOSED BRUSH DASHING) [Image Stream Method] Draws a curve through KNOTS. See DRAWCURVE. (IMDRAWCIRCLE STREAM CENTERX CENTERY RADIUS BRUSH DASHING) [Image Stream Method] Draws a circle of radius RADIUS around (CENTERX, CENTERY). See DRAWCIRCLE. (IMDRAWELLIPSE STREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING) [Image Stream Method] Draws an ellipse around (CENTERX, CENTERY). See DRAWELLIPSE. (IMFILLPOLYGON STREAM POINTS TEXTURE) [Image Stream Method] Fills in the polygon outlined by POINTS on the image stream STREAM, using the texture TEXTURE. See FILLPOLYGON. (IMFILLCIRCLE STREAM CENTERX CENTERY RADIUS TEXTURE) [Image Stream Method] Draws a circle filled with texture TEXTURE around (CENTERX, CENTERY). See FILLCIRCLE. (IMBLTSHADE TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION) [Image Stream Method] The texture-source case of BITBLT. DESTINATIONLEFT, DESTINATIONBOTTOM, WIDTH, HEIGHT, and CLIPPINGREGION are measured in STREAM's units. This method is invoked by the functions BITBLT and BLTSHADE. (IMBITBLT SOURCEBITMAP SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM SCALE) [Image Stream Method] Contains the bit-map-source cases of BITBLT. SOURCELEFT, SOURCEBOTTOM, CLIPPEDSOURCELEFT, CLIPPEDSOURCEBOTTOM, WIDTH, and HEIGHT are measured in pixels; DESTINATIONLEFT, DESTINATIONBOTTOM, and CLIPPINGREGION are in the units of the destination stream. (IMSCALEDBITBLT SOURCEBITMAP SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM SCALE) [Image Stream Method] A scaled version of IMBITBLT. Each pixel in SOURCEBITMAP is replicated SCALE times in the X and Y directions; currently, SCALE must be an integer. (IMMOVETO STREAM X Y) [Image Stream Method] Moves to (X,Y). This method is invoked by the function MOVETO. If IMMOVETO is not supplied, a default method composed of calls to the IMXPOSITION and IMYPOSITION methods is used. (IMSTRINGWIDTH STREAM STR RDTBL) [Image Stream Method] Returns the width of string STR in STREAM's units, using STREAM's current font. This is envoked when STRINGWIDTH is passed a stream as its FONT argument. If IMSTRINGWIDTH is not supplied, it defaults to calling STRINGWIDTH on the default font of STREAM. (IMCHARWIDTH STREAM CHARCODE) [Image Stream Method] Returns the width of character CHARCODE in STREAM's units, using STREAM's current font. This is invoked when CHARWIDTH is passed a stream as its FONT argument. If IMCHARWIDTH is not supplied, it defaults to calling CHARWIDTH on the default font of STREAM. (IMCHARWIDTHY STREAM CHARCODE) [Image Stream Method] Returns the Y componant of the width of character CHARCODE in STREAM's units, using STREAM's current font. This is envoked when CHARWIDTHY is passed a stream as its FONT argument. If IMCHARWIDTHY is not supplied, it defaults to calling CHARWIDTHY on the default font of STREAM. (IMBITMAPSIZE STREAM BITMAP DIMENSION) [Image Stream Method] Returns the size that BITMAP will be when BITBLTed to STREAM, in STREAM's units. DIMENSION can be one of WIDTH, HEIGHT, or NIL, in which case the dotted pair (WIDTH . HEIGHT) will be returned. This is envoked by BITMAPIMAGESIZE. If IMBITMAPSIZE is not supplied, it defaults to a method that multiplies the bitmap height and width by the scale of STREAM. (IMNEWPAGE STREAM) [Image Stream Method] Causes a new page to be started. The X position is set to the left margin, and the Y position is set to the top margin plus the linefeed. If not supplied, defaults to (\OUTCHAR STREAM (CHARCODE ^L)). Envoked by DSPNEWPAGE. (IMTERPRI STREAM) [Image Stream Method] Causes a new line to be started. The X position is set to the left margin, and the Y position is set to the current Y position plus the linefeed. If not supplied, defaults to (\OUTCHAR STREAM (CHARCODE EOL)). Envoked by TERPRI. (IMRESET(IMRESET (Image Stream Method) NIL NIL ("27") 35) STREAM) [Image Stream Method] Resets the X and Y position of STREAM. The X coordinate is set to its left margin; the Y coordinate is set to the top of the clipping region minus the font ascent. Envoked by DSPRESET. The following methods all have corresponding DSPxx functions (e.g., IMYPOSITION corresponds to DSPYPOSITION) that invoke them. They also have the property of returning their previous value; when called with NIL they return the old value without changing it. (IMCLIPPINGREGION(IMCLIPPINGREGION (Image Stream Method) NIL NIL ("27") 35) STREAM REGION) [Image Stream Method] Sets a new clipping region on STREAM. (IMXPOSITION(IMXPOSITION (Image Stream Method) NIL NIL ("27") 36) STREAM XPOSITION) [Image Stream Method] Sets the X-position on STREAM. (IMYPOSITION(IMYPOSITION (Image Stream Method) NIL NIL ("27") 36) STREAM YPOSITION) [Image Stream Method] Sets a new Y-position on STREAM. (IMFONT(IMFONT (Image Stream Method) NIL NIL ("27") 36) STREAM FONT) [Image Stream Method] Sets STREAM's font to be FONT. (IMLEFTMARGIN(IMLEFTMARGIN (Image Stream Method) NIL NIL ("27") 36) STREAM LEFTMARGIN) [Image Stream Method] Sets STREAM's left margin to be LEFTMARGIN. The left margin is defined as the X-position set after the new line. (IMRIGHTMARGIN(IMRIGHTMARGIN (Image Stream Method) NIL NIL ("27") 36) STREAM RIGHTMARGIN) [Image Stream Method] Sets STREAM's right margin to be RIGHTMARGIN. The right margin is defined as the maximum X-position at which characters are printed; printing beyond it causes a new line. (IMTOPMARGIN(IMTOPMARGIN (Image Stream Method) NIL NIL ("27") 36) STREAM YPOSITION) [Image Stream Method] Sets STREAM's top margin (the Y-position of the tops of characters that is set after a new page) to be YPOSITION. (IMBOTTOMMARGIN(IMBOTTOMMARGIN (Image Stream Method) NIL NIL ("27") 36) STREAM YPOSITION) [Image Stream Method] Sets STREAM's bottom margin (the Y-position beyond which any printing causes a new page) to be YPOSITION. (IMLINEFEED(IMLINEFEED (Image Stream Method) NIL NIL ("27") 36) STREAM DELTA) [Image Stream Method] Sets STREAM's line feed distance (distance to move vertically after a new line) to be DELTA. (IMSCALE(IMSCALE (Image Stream Method) NIL NIL ("27") 36) STREAM SCALE) [Image Stream Method] Returns the number of device points per screen point (a screen point being ~1/72 inch). SCALE is ignored. (IMSPACEFACTOR(IMSPACEFACTOR (Image Stream Method) NIL NIL ("27") 36) STREAM FACTOR) [Image Stream Method] Sets the amount by which to multiply the natural width of all following space characters on STREAM; this can be used for the justification of text. The default value is 1. For example, if the natural width of a space in STREAM's current font is 12 units, and the space factor is set to two, spaces appear 24 units wide. The values returned by STRINGWIDTH and CHARWIDTH are also affected. (IMOPERATION(IMOPERATION (Image Stream Method) NIL NIL ("27") 36) STREAM OPERATION) [Image Stream Method] Sets the default BITBLT OPERATION argument. (IMBACKCOLOR(IMBACKCOLOR (Image Stream Method) NIL NIL ("27") 36) STREAM COLOR) [Image Stream Method] Sets the background color of STREAM. (IMCOLOR (IMCOLOR% (Image Stream Method) NIL NIL ("27") 36)STREAM COLOR) [Image Stream Method] Sets the default color of STREAM. In addition to the IMAGEOPS methods described above, there are two other important methods, which are contained in the stream itself. These fields can be installed using a form like (replace (STREAM OUTCHARFN) of STREAM with (FUNCTION MYOUTCHARFN)). Note: You need to have loaded the Interlisp-D system declarations to manipulate the fields of STREAMs. The declarations can be loaded by loading the Lisp Library package SYSEDIT. (STRMBOUTFN(STRMBOUTFN (Stream Method) NIL NIL ("27") 37) STREAM CHARCODE) [Stream Method] The function called by BOUT. (OUTCHARFN(OUTCHARFN (Stream Method) NIL NIL ("27") 37) STREAM CHARCODE) [Stream Method] The function that is called to output a single byte. This is like STRMBOUTFN, except for being one level higher: it is intended for text output. Hence, this function should convert (CHARCODE EOL) into the stream's actual end-of-line sequence and should adjust the stream's CHARPOSITION appropriately before invoking the stream's STRMBOUTFN (by calling BOUT) to actually put the character. Defaults to \FILEOUTCHARFN, which is probably incorrect for an image stream. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "26-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "26-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "26-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "26-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "26-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "26-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))&F PAGEHEADING RIGHTPAGE,//HH,xx,2`~~,0T,,HH,0T,002HH5xlx-T,HH +,HH306 +T-T0T-T3(T,,25l5l5l/xx/xx3HHT306 +T,ll,ll,ll@ PAGEHEADINGLEFTBACKTTERMINAL +PALATINO TITAN +TITAN TITAN TITAN TITAN TITAN +CLASSIC +CLASSIC + HELVETICA +CLASSIC +MODERN +MODERNMODERN +&  IM.CHAP.GETFNMODERN +!  HRULE.GETFNMODERN +  HRULE.GETFNMODERN +  !(O)4"  +!  +  +    j?"  +  +"  ".IM.INDEX.GETFNTITAN +  + + +L" *IM.INDEX.GETFNTITAN +  + + +y "/IM.INDEX.GETFNTITAN +   " +(IM.INDEX.GETFNTITAN +  7 " *IM.INDEX.GETFNTITAN + ,  ".IM.INDEX.GETFNTITAN + C! $    "%IM.INDEX.GETFNTITAN +    U F +*"  *  "%IM.INDEX.GETFNTITAN +  " )IM.INDEX.GETFNTITAN +    " *IM.INDEX.GETFNTITAN +  "  (" 'IM.INDEX.GETFNMODERN +   3 $</,_" +(IM.INDEX.GETFNTITAN + (2" *IM.INDEX.GETFNMODERN + +   +    " *IM.INDEX.GETFNMODERN + +" *IM.INDEX.GETFNTITAN + 1  ,   %     " )IM.INDEX.GETFNTITAN +    ) +" +(IM.INDEX.GETFNTITAN + 6 "$IM.INDEX.GETFNMODERN + X >/=@( BMOBJ.GETFN3MODERN + SZX BMOBJ.GETFN3PALATINO ;is, +g + + < 3w'L   +"5IM.INDEX.GETFNCLASSIC + :37"&IM.INDEX.GETFNCLASSIC +    %F + + Z" 'IM.INDEX.GETFNTITAN + ) S +V, BMOBJ.GETFN3MODERN +  HRULE.GETFNMODERN + +'?o cf)"-IM.INDEX.GETFNCLASSIC + *   37  }  ! $_  9  + +/ +2 <+ +v&J.N> B B; W ?W6 &(%#" *IM.INDEX.GETFNCLASSIC + H  + "-IM.INDEX.GETFNCLASSIC +   !".IM.INDEX.GETFNCLASSIC +   HRULE.GETFNMODERN +"0IM.INDEX.GETFNTITAN + "&IM.INDEX.GETFNTITAN + U)! ++%#$p" +IM.INDEX.GETFNTITAN + )o".IM.INDEX.GETFNTITAN +   4-U" ,IM.INDEX.GETFNTITAN +   *{"-IM.INDEX.GETFNCLASSIC + 3-u< +" +IM.INDEX.GETFNCLASSIC + F " *IM.INDEX.GETFNTITAN + . +b"*IM.INDEX.GETFNTITAN + / 7Z" ,IM.INDEX.GETFNMODERN +  D  %2*"'IM.INDEX.GETFNTITAN + &Z 0 # " k|v  X"   %.a"  .m$  HRULE.GETFNMODERN +a"   ' /"   ' /" + "  +," R )  - <(  HRULE.GETFNMODERN +l" + ^ /1 3"0    +  + 20  + )( +   3   + i: +? + 2   0 +    73X3WL + c  < BMOBJ.GETFN3 < BMOBJ.GETFN3  BMOBJ.GETFN3 J +   +& BMOBJ.GETFN3MODERN +  BMOBJ.GETFN3  BMOBJ.GETFN3  BMOBJ.GETFN3  BMOBJ.GETFN3MODERN +  BMOBJ.GETFN3  BMOBJ.GETFN3  BMOBJ.GETFN3  BMOBJ.GETFN3MODERN +  BMOBJ.GETFN3  BMOBJ.GETFN3  BMOBJ.GETFN3 " [ ;  ""   !  HRULE.GETFNMODERN +F- +"  + + + +$& + +  + +; &  t + +"   + +$  A'IM.INDEX.GETFN" (5! "  *52$   HRULE.GETFNMODERN + +, MSxtV>"  !<?Q%# #5$!@% BMOBJ.GETFN3MODERN +" + , <"@ 2 +  +#4^ +"  P( Y<>"    +f+ ~ +>  + +"  .  HRULE.GETFNMODERN +" /  " *IM.INDEX.GETFNMODERN +" $^76Q  ~=  BMOBJ.GETFN3TERMINAL +"  * b      +   +) +6 +,  BMOBJ.GETFN3PALATINO >%" + %#"  " + /8"   ,  HRULE.GETFNMODERN +/:<.'" - +7?  Y P"  /  + )0" +   &" " + &" .#" 9 " ;   HRULE.GETFNMODERN +'"  * Z" +   " + " + i   +  o +  o 7*a" + ?  +"  O +  "  | >   e"  # / +  7 +) %:  "     [  I   HRULE.GETFNMODERN +96%&:  +]#*$'$$$)sM +B ;1  SKIO.GETFN.2PALATINO " + 33+;K 84V +`   +l  +RF +1 +^ +. + + +9 + z "  " 1?X)3 G +#*4 + + 0 + x~"  + + + +5 K/T 9.& G" 0G +-6H` x +% 7  +, .F +n" %0w;" 7:<"  A2 =" +    K "   ' J  + + +"   @y  yH"  A "  * + *  :" ' )= +"0IM.INDEX.GETFNMODERN + $3IM.INDEX.GETFNO P3IM.INDEX.GETFNPALATINO +d  HRULE.GETFNMODERN + +E +"U"7' >"X"  HRULE.GETFNMODERN +  kye: B   +z H  N +, +I 5 ! + "  *p7 cU* >u  2 +g" b   *X  +gHj& $"  L " *   +  "- 9> >"L" ) +" 3 -N"6V];" +  HRULE.GETFNMODERN +j_q  N/ "-IM.INDEX.GETFNTITAN + ? K   +CN "-IM.INDEX.GETFNCLASSIC +      " +IM.INDEX.GETFNCLASSIC + '$ & &   + +C" (IM.INDEX.GETFNTITAN +   " (IM.INDEX.GETFNCLASSIC +    9("  /  (  I " + )  +3GC02K + ~ +.$ +?"  L +&?*" + }" * N" B H yR  D=!p"  n`"  =  YE" = YE"     YE"  =  Y 18" 8 .  +   > 4" +   +I +   + )"(Z *|(+W) T3-DM  +V +T  0-" ,IM.INDEX.GETFNCLASSIC +   # ^" +IM.INDEX.GETFNCLASSIC +  <?& ,  +& I + + +      +: +6"n   "  * +/  <" +  + (  ( + 0 >&0    HRULE.GETFNMODERN +W;V "\A +;  + + +'    + +& +,"  &>"  (5a*" <;e <![Ib/ J" H +  ?" $ +(  +u]  &{"  &O" +  + + + + + + +"  ! "  +  +"  P "  ! "  %#  +" + V 3" %G-  " + ++<  "   +'  ) "  '  ) "   %' + ) +"     ! f"  &-T +" &- ; "1IM.INDEX.GETFNMODERN +   +X-  e0":IM.INDEX.GETFNMODERN + " 5IM.INDEX.GETFNMODERN +   " 5IM.INDEX.GETFNMODERN +   "0IM.INDEX.GETFNMODERN +  +" 6IM.INDEX.GETFNMODERN +  +%"" 7IM.INDEX.GETFNMODERN +  .Q" 5IM.INDEX.GETFNMODERN + H "8IM.INDEX.GETFNMODERN + += " +4IM.INDEX.GETFNMODERN + + K"1IM.INDEX.GETFNMODERN + Y " 7IM.INDEX.GETFNMODERN + +  \|v  " 5IM.INDEX.GETFNMODERN + +  " 5IM.INDEX.GETFNMODERN + + " 3IM.INDEX.GETFN  dG" +.IM.INDEX.GETFNMODERN + " -IM.INDEX.GETFNMODERN + C +kO , + .3/s z \ No newline at end of file diff --git a/docs/medley-irm/26-GRAPHICS.pdf b/docs/medley-irm/26-GRAPHICS.pdf new file mode 100644 index 00000000..8e360e3d --- /dev/null +++ b/docs/medley-irm/26-GRAPHICS.pdf @@ -0,0 +1,20133 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5292 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(26. GRAPHICS OUTPUT OPERATIONS)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +486.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 486 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.2111 Tw +[(Streams are used as the basis for all I/O operations. Files are implemented as streams that can)]TJ +0 -1.2222 TD +0.0178 Tw +[(support character printing and reading operations, and file pointer manipulation. An image stream is)]TJ +T* +0.0122 Tw +[(a type of stream that also provides an interface for graphical operations. All of the operations that can)]TJ +T* +0.0633 Tw +[(applied to streams can be applied to image streams. For example, an image stream can be passed as)]TJ +T* +0.1322 Tw +(the argument to )Tj +/TT10 1 Tf +7.7302 0 TD +0 Tw +(PRINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1322 Tw +[(, to print something on an image stream. In addition, special functions are)]TJ +-10.7307 -1.2889 TD +0.0044 Tw +(provided to draw lines and curves and perform other graphical operations. Calling these functions on)Tj +0 -1.2222 TD +0 Tw +(a stream that is not an image stream will generate an error.)Tj +/TT4 1 Tf +10 0 0 10 54 425.6 Tm +(Primitive Graphics Concepts)Tj +ET +1 w +54.01 422.89 m +486.01 422.89 l +S +BT +/TT8 1 Tf +9 0 0 9 78 400.94 Tm +0.2256 Tw +(The Interlisp-D graphics system is based on manipulating bitmaps \(rectangular arrays of pixels\),)Tj +T* +0 Tw +(positions, regions, and textures. These objects are used by all of the graphics functions.)Tj +/TT4 1 Tf +10 0 0 10 78 360.6 Tm +(Positions)Tj +/TT8 1 Tf +9 0 0 9 78 334.89 Tm +0.0311 Tw +(A position denotes a point in an )Tj +/TT10 1 Tf +10 0 0 10 209.4053 334.89 Tm +0 Tw +(X,Y)Tj +/TT8 1 Tf +9 0 0 9 227.4082 334.89 Tm +0.0311 Tw +[( coordinate system. A )]TJ +/TT10 1 Tf +10.2449 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0311 Tw +[( is an instance of a record with)]TJ +-31.6466 -1.3278 TD +0 Tw +(fields )Tj +/TT10 1 Tf +2.9032 0 TD +(XCOORD)Tj +/TT8 1 Tf +3.6006 0 TD +0.2244 Tw +[( and )]TJ +/TT10 1 Tf +2.6418 0 TD +0 Tw +(YCOORD)Tj +/TT8 1 Tf +3.6006 0 TD +0.2244 Tw +[( and is manipulated with the standard record package facilities. For)]TJ +-12.7461 -1.2889 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.2635 0 TD +0.0344 Tw +(\(create POSITION XCOORD )Tj +/TT11 1 Tf +14.5057 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.0344 Tw +[( 10 YCOORD )]TJ +/TT11 1 Tf +6.7044 0 TD +0 Tw +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +0.0344 Tw +[( 20\))]TJ +/TT8 1 Tf +2.4348 0 TD +0.0144 Tw +[( creates a position representing the)]TJ +-29.882 -1.2889 TD +0 Tw +(point \(10,20\).)Tj +/TT10 1 Tf +2.6667 -2.4756 TD +(\()Tj +/TT13 1 Tf +0.6001 0 TD +(POSITIONP)Tj +/TT10 1 Tf +5.4009 0 TD +( )Tj +/F1 1 Tf +10 0 0 10 161.4097 277.46 Tm +(X)Tj +/TT10 1 Tf +9 0 0 9 168.4497 277.46 Tm +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-29586.6([Function])]TJ +/F2 1 Tf +10 0 0 10 126 259.58 Tm +(Returns )Tj +/F1 1 Tf +4.018 0 TD +(X)Tj +/F2 1 Tf +0.704 0 TD +( if )Tj +/F1 1 Tf +1.204 0 TD +(X)Tj +/F2 1 Tf +0.704 0 TD +( is a position; )Tj +/TT10 1 Tf +9 0 0 9 256.21 259.58 Tm +(NIL)Tj +/F2 1 Tf +10 0 0 10 272.4126 259.58 Tm +( otherwise.)Tj +/TT4 1 Tf +-19.4413 -2.994 TD +(Regions)Tj +/TT8 1 Tf +9 0 0 9 78 203.98 Tm +0.2667 Tw +[(A Region denotes a rectangular area in a coordinate system. Regions are characterized by the)]TJ +0 -1.2222 TD +0.0656 Tw +[(coordinates of their bottom left corner and their width and height. A )]TJ +/TT10 1 Tf +31.5954 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +[( is a record with fields)]TJ +/TT10 1 Tf +-35.196 -1.2889 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.77 0 TD +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.77 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.27 Tw +(, and )Tj +/TT10 1 Tf +2.9829 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.27 Tw +[(. It can be manipulated with the standard record package)]TJ +-17.1249 -1.2889 TD +0.1533 Tw +[(facilities. There are access functions for the )]TJ +/TT10 1 Tf +20.5748 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1533 Tw +[( record that return the )]TJ +/TT10 1 Tf +10.7882 0 TD +0 Tw +(TOP)Tj +/TT8 1 Tf +1.8003 0 TD +0.1533 Tw +[( and )]TJ +/TT10 1 Tf +2.4995 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1533 Tw +[( of the)]TJ +-42.2639 -1.2889 TD +0 Tw +(region.)Tj +0 -2.8889 TD +(The following functions are provided for manipulating regions:)Tj +/TT10 1 Tf +10 0 0 10 102 109.9 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 109.9 Tm +(CREATEREGION)Tj +/F1 1 Tf +10 0 0 10 172.8115 109.9 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.5915 109.9 Tm +(LEFT BOTTOM WIDTH HEIGHT)Tj +/TT10 1 Tf +10 0 0 10 305.2126 109.9 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 311.2136 109.9 Tm +[( )-14324([Function])]TJ +-20.5793 -1.8889 TD +0.03 Tw +(Returns an instance of the )Tj +/TT10 1 Tf +10 0 0 10 232.6781 92.9 Tm +0 Tw +(REGION)Tj +/TT8 1 Tf +9 0 0 9 268.684 92.9 Tm +0.03 Tw +[( record which has )]TJ +/TT15 1 Tf +8.2284 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.53 0 TD +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT15 1 Tf +0.53 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.03 Tw +[( and )]TJ +/TT15 1 Tf +2.2529 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +-36.3965 -1.3278 TD +(as respectively its )Tj +/TT15 1 Tf +8.0449 0 TD +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.5 0 TD +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT15 1 Tf +0.5 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +(, and )Tj +/TT15 1 Tf +2.4429 0 TD +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +( fields.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT11 11 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +17 0 obj +<< +/Length 8369 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.0989 Tw +(Example: \()Tj +/TT10 1 Tf +10 0 0 10 217.3148 569.49 Tm +0.237 Tw +(CREATEREGION 10 -20 100 200)Tj +/TT8 1 Tf +9 0 0 9 388.8211 569.49 Tm +0.0989 Tw +(\) will create a region that denotes a)Tj +-23.869 -1.3278 TD +0.0956 Tw +(rectangle whose width is 100, whose height is 200, and whose lower left corner is at the)Tj +0 -1.2222 TD +0 Tw +(position \(10,-20\).)Tj +/TT10 1 Tf +10 0 0 10 150 524.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 524.26 Tm +(REGIONP)Tj +/F2 1 Tf +10 0 0 10 193.8071 524.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 196.5871 524.26 Tm +(X)Tj +/TT10 1 Tf +10 0 0 10 201.988 524.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 207.989 524.26 Tm +[( )-31126.8([Function])]TJ +-3.7766 -1.8889 TD +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a region, )Tj +/TT10 1 Tf +10 0 0 10 276.2871 507.26 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 294.29 507.26 Tm +( otherwise.)Tj +/TT10 1 Tf +10 0 0 10 150 484.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 484.03 Tm +(INTERSECTREGIONS)Tj +/F2 1 Tf +10 0 0 10 242.4 484.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 245.18 484.03 Tm +(REGION)Tj +3.6 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 282.98 484.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 285.76 484.03 Tm +(REGION)Tj +3.6 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 323.56 484.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 326.34 484.03 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 342.5426 484.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 345.3226 484.03 Tm +(REGION)Tj +3.5997 -0.3333 TD +(n)Tj +/TT10 1 Tf +10 0 0 10 383.12 484.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 389.121 484.03 Tm +[( )-6263.2([NoSpread Function])]TJ +-23.9023 -2.1833 TD +0.15 Tw +[(Returns a region which is the intersection of a number of regions. Returns )]TJ +/TT10 1 Tf +10 0 0 10 490.6119 464.38 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 508.6149 464.38 Tm +0.15 Tw +[( if the)]TJ +-37.1794 -1.3278 TD +0 Tw +(intersection is empty.)Tj +/TT10 1 Tf +10 0 0 10 150 430.15 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 430.15 Tm +(UNIONREGIONS)Tj +/F2 1 Tf +10 0 0 10 220.8 430.15 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.58 430.15 Tm +(REGION)Tj +3.6 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 261.38 430.15 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 264.16 430.15 Tm +(REGION)Tj +3.6 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 301.96 430.15 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 304.74 430.15 Tm +(...)Tj +/F1 1 Tf +10 0 0 10 320.9426 430.15 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 323.7226 430.15 Tm +(REGION)Tj +3.5997 -0.3333 TD +(n)Tj +/TT10 1 Tf +10 0 0 10 361.52 430.15 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 367.521 430.15 Tm +[( )-8663.2([NoSpread Function])]TJ +-21.5023 -2.1778 TD +0.1 Tw +(Returns a region which is the union of a number of regions, i.e. the smallest region that)Tj +0 -1.2278 TD +0 Tw +(contains all of them. Returns )Tj +/TT10 1 Tf +10 0 0 10 292.3755 399.5 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 310.3784 399.5 Tm +( if there are no regions given.)Tj +/TT10 1 Tf +10 0 0 10 150 376.27 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 376.27 Tm +(REGIONSINTERSECTP)Tj +/F2 1 Tf +10 0 0 10 247.8 376.27 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 250.58 376.27 Tm +(REGION)Tj +3.6 -0.3333 TD +(1)Tj +0.6 0.3333 TD +( REGION)Tj +4.2 -0.3333 TD +(2)Tj +/TT10 1 Tf +10 0 0 10 331.58 376.27 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 337.581 376.27 Tm +[( )-16727.7([Function])]TJ +-18.1757 -2.1833 TD +(Returns )Tj +/TT10 1 Tf +10 0 0 10 207.5434 356.62 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 213.5444 356.62 Tm +( if )Tj +/TT15 1 Tf +1.124 0 TD +(REGION)Tj +3.601 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( intersects )Tj +/TT15 1 Tf +4.6699 0 TD +(REGION)Tj +3.6012 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(. Returns )Tj +/TT10 1 Tf +10 0 0 10 381.6034 356.62 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 399.6064 356.62 Tm +( if they do not intersect.)Tj +/TT10 1 Tf +10 0 0 10 150 330.74 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 330.74 Tm +(SUBREGIONP)Tj +/F2 1 Tf +10 0 0 10 210 330.74 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.78 330.74 Tm +(LARGEREGION SMALLREGION)Tj +/TT10 1 Tf +10 0 0 10 337.0002 330.74 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 343.0012 330.74 Tm +[( )-16125.4([Function])]TJ +-18.7779 -1.8889 TD +(Returns )Tj +/TT10 1 Tf +10 0 0 10 211.3334 313.74 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 217.3344 313.74 Tm +0.4211 Tw +[( if )]TJ +/TT15 1 Tf +1.9662 0 TD +0 Tw +(SMALLREGION)Tj +/TT8 1 Tf +6.6011 0 TD +0.4211 Tw +[( is a subregion \(is equal to or entirely contained in\))]TJ +/TT15 1 Tf +-13.3823 -1.3333 TD +0 Tw +(LARGEREGION)Tj +/TT8 1 Tf +6.6011 0 TD +(; otherwise returns )Tj +/TT10 1 Tf +10 0 0 10 310.4502 301.74 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 328.4531 301.74 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 278.51 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 278.51 Tm +(EXTENDREGION)Tj +/F2 1 Tf +10 0 0 10 220.8 278.51 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.58 278.51 Tm +(REGION INCLUDEREGION)Tj +/TT10 1 Tf +10 0 0 10 331.5976 278.51 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 337.5985 278.51 Tm +[( )-16725.7([Function])]TJ +-18.1776 -1.8833 TD +0.3622 Tw +(Changes \(destructively modifies\) the region )Tj +/TT15 1 Tf +21.4429 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.3622 Tw +[( so that it includes the region)]TJ +/TT15 1 Tf +-25.0435 -1.2889 TD +0 Tw +(INCLUDEREGION)Tj +/TT8 1 Tf +7.8013 0 TD +(. It returns )Tj +/TT15 1 Tf +5.1172 0 TD +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 227.08 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 227.08 Tm +(MAKEWITHINREGION)Tj +/F2 1 Tf +10 0 0 10 242.4 227.08 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 245.18 227.08 Tm +(REGION LIMITREGION)Tj +/TT10 1 Tf +10 0 0 10 342.3958 227.08 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 348.3968 227.08 Tm +[( )-15525.9([Function])]TJ +-19.3774 -1.8833 TD +0.1367 Tw +(Changes \(destructively modifies\) the left and bottom of the region )Tj +/TT15 1 Tf +30.8169 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1367 Tw +[( so that it is)]TJ +-34.4174 -1.2889 TD +0.0589 Tw +(within the region )Tj +/TT15 1 Tf +8.0692 0 TD +0 Tw +(LIMITREGION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0589 Tw +[(, if possible. If the dimension of )]TJ +/TT15 1 Tf +14.8285 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0589 Tw +[( are larger than)]TJ +/TT15 1 Tf +-33.0994 -1.2889 TD +0 Tw +(LIMITREGION)Tj +/TT8 1 Tf +6.6011 0 TD +(, )Tj +/TT15 1 Tf +0.5422 0 TD +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0422 Tw +[( is moved to the lower left of )]TJ +/TT15 1 Tf +13.2484 0 TD +0 Tw +(LIMITREGION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0422 Tw +[(. If )]TJ +/TT15 1 Tf +1.7966 0 TD +0 Tw +(LIMITREGION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0422 Tw +[( is)]TJ +/TT10 1 Tf +10 0 0 10 174 175.28 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 192.0029 175.28 Tm +0.6678 Tw +(, the value of the variable )Tj +/TT15 1 Tf +15.4222 0 TD +0 Tw +(WHOLEDISPLAY)Tj +/TT8 1 Tf +7.2012 0 TD +0.6678 Tw +[( \(the screen region\) is used.)]TJ +/TT10 1 Tf +10 0 0 10 174 163.28 Tm +0 Tw +(MAKEWITHINREGION)Tj +/TT8 1 Tf +9 0 0 9 270.0156 163.28 Tm +( returns the modified )Tj +/TT15 1 Tf +9.6357 0 TD +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 140.05 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 140.05 Tm +(INSIDEP)Tj +/F2 1 Tf +10 0 0 10 193.8 140.05 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 196.58 140.05 Tm +(REGION POSORX Y)Tj +/TT10 1 Tf +10 0 0 10 277.5932 140.05 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 283.5941 140.05 Tm +[( )-22726.2([Function])]TJ +-12.1771 -1.8889 TD +(If )Tj +/TT15 1 Tf +0.9355 0 TD +(POSORX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0156 Tw +[( and )]TJ +/TT15 1 Tf +2.224 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( are numbers, it returns )]TJ +/TT10 1 Tf +10 0 0 10 336.4696 123.05 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 342.4706 123.05 Tm +0.0156 Tw +[( if the point \()]TJ +/TT15 1 Tf +5.7527 0 TD +0 Tw +(POSORX,Y)Tj +/TT8 1 Tf +4.8008 0 TD +0.0156 Tw +(\) is inside of )Tj +/TT15 1 Tf +5.6667 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0156 Tw +[(. If)]TJ +/TT15 1 Tf +-38.5397 -1.3333 TD +0 Tw +(POSORX)Tj +/TT8 1 Tf +3.6006 0 TD +0.21 Tw +[( is a )]TJ +/TT15 1 Tf +2.5948 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.21 Tw +(, it returns )Tj +/TT10 1 Tf +10 0 0 10 322.0275 111.05 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 328.0285 111.05 Tm +0.21 Tw +[( if )]TJ +/TT15 1 Tf +1.544 0 TD +0 Tw +(POSORX)Tj +/TT8 1 Tf +3.6006 0 TD +0.21 Tw +[( is inside of )]TJ +/TT15 1 Tf +6.1115 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.21 Tw +[(. If )]TJ +/TT15 1 Tf +2.2999 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.21 Tw +[( is a)]TJ +/TT10 1 Tf +10 0 0 10 174 99.05 Tm +0 Tw +(WINDOW)Tj +/TT8 1 Tf +9 0 0 9 210.0058 99.05 Tm +0.2122 Tw +[(, the windows interior region in window coordinates is used. Otherwise, it)]TJ +-4.0007 -1.3333 TD +0 Tw +(returns )Tj +/TT10 1 Tf +10 0 0 10 205.0869 87.05 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 223.0898 87.05 Tm +(.)Tj +ET +endstream +endobj +18 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +20 0 obj +<< +/Length 7359 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT4 1 Tf +-33 -4.38 TD +(Bitmaps)Tj +/TT8 1 Tf +9 0 0 9 78 542.54 Tm +0.0089 Tw +[(The display primitives manipulate graphical images in the form of bitmaps. A bitmap is a rectangular)]TJ +0 -1.2222 TD +0.06 Tw +(array of "pixels," each of which is an integer representing the color of one point in the bitmap image.)Tj +T* +0.0311 Tw +[(A bitmap is created with a specific number of bits allocated for each pixel. Most bitmaps used for the)]TJ +T* +0.0567 Tw +[(display screen use one bit per pixel, so that at most two colors can be represented. If a pixel is 0, the)]TJ +T* +0.0622 Tw +[(corresponding location on the image is white. If a pixel is 1, its location is black. This interpretation)]TJ +0 -1.2278 TD +0.0411 Tw +(can be changed for the display screen with the function )Tj +/TT10 1 Tf +10 0 0 10 303.7952 487.49 Tm +0 Tw +(VIDEOCOLOR)Tj +/TT8 1 Tf +9 0 0 9 363.805 487.49 Tm +0.0411 Tw +[(. Bitmaps with more than one)]TJ +-31.7561 -1.3278 TD +0.2822 Tw +[(bit per pixel are used to represent color or grey scale images. Bitmaps use a positive integer)]TJ +0 -1.2222 TD +0.1633 Tw +[(coordinate system with the lower left corner pixel at coordinate \(0,0\). Bitmaps are represented as)]TJ +0 -1.2278 TD +0.2522 Tw +(instances of the datatype )Tj +/TT10 1 Tf +10 0 0 10 188.0356 453.49 Tm +0 Tw +(BITMAP)Tj +/TT8 1 Tf +9 0 0 9 224.0414 453.49 Tm +0.2522 Tw +[(. Bitmaps can be saved on files with the )]TJ +/TT10 1 Tf +10 0 0 10 407.7395 453.49 Tm +0 Tw +(VARS)Tj +/TT8 1 Tf +9 0 0 9 431.7434 453.49 Tm +0.2522 Tw +[( file package)]TJ +-39.3048 -1.3278 TD +0 Tw +(command.)Tj +/TT10 1 Tf +10 0 0 10 102 419.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 419.26 Tm +(BITMAPCREATE)Tj +/F3 1 Tf +10 0 0 10 172.8115 419.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.6815 419.26 Tm +(WIDTH HEIGHT BITSPERPIXEL)Tj +/TT10 1 Tf +10 0 0 10 310.7035 419.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.7045 419.26 Tm +[( )-13713.9([Function])]TJ +-21.1894 -1.8833 TD +0.1356 Tw +(Creates and returns a new bitmap which is )Tj +/TT15 1 Tf +20.2905 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.1356 Tw +[( pixels wide by )]TJ +/TT15 1 Tf +7.4685 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1356 Tw +[( pixels high,)]TJ +-34.3601 -1.2944 TD +0 Tw +(with )Tj +/TT15 1 Tf +2.2832 0 TD +(BITSPERPIXEL)Tj +/TT8 1 Tf +7.2012 0 TD +( bits per pixel. If )Tj +/TT10 1 Tf +10 0 0 10 280.3667 390.66 Tm +(BITSPERPIXEL)Tj +/TT8 1 Tf +9 0 0 9 352.3784 390.66 Tm +( is )Tj +/TT10 1 Tf +10 0 0 10 363.312 390.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 381.3149 390.66 Tm +(, it defaults to 1.)Tj +/TT10 1 Tf +10 0 0 10 102 367.43 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 367.43 Tm +(BITMAPP)Tj +/F3 1 Tf +10 0 0 10 145.8 367.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 148.67 367.43 Tm +(X)Tj +/TT10 1 Tf +10 0 0 10 154.0708 367.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 160.0718 367.43 Tm +[( )-31117.6([Function])]TJ +-3.7858 -1.8889 TD +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a bitmap, )Tj +/TT10 1 Tf +10 0 0 10 231.0337 350.43 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 249.0366 350.43 Tm +( otherwise.)Tj +/TT10 1 Tf +10 0 0 10 102 327.2 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 327.2 Tm +(BITMAPWIDTH)Tj +/F3 1 Tf +10 0 0 10 167.4 327.2 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.27 327.2 Tm +(BITMAP)Tj +/TT10 1 Tf +10 0 0 10 202.6752 327.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 208.6762 327.2 Tm +[( )-25717.1([Function])]TJ +-9.1862 -1.8833 TD +(Returns the width of )Tj +/TT15 1 Tf +9.3872 0 TD +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +( in pixels.)Tj +/TT10 1 Tf +10 0 0 10 102 287.37 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 287.37 Tm +(BITMAPHEIGHT)Tj +/F3 1 Tf +10 0 0 10 172.8 287.37 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.67 287.37 Tm +(BITMAP)Tj +/TT10 1 Tf +10 0 0 10 208.0753 287.37 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 214.0762 287.37 Tm +[( )-25117.1([Function])]TJ +-9.7863 -1.8833 TD +(Returns the height of )Tj +/TT15 1 Tf +9.5596 0 TD +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +( in pixels.)Tj +/TT10 1 Tf +10 0 0 10 102 247.54 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 247.54 Tm +(BITSPERPIXEL)Tj +/F3 1 Tf +10 0 0 10 172.8115 247.54 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.6815 247.54 Tm +(BITMAP)Tj +/TT10 1 Tf +10 0 0 10 208.0868 247.54 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 214.0878 247.54 Tm +[( )-25115.8([Function])]TJ +-9.7875 -1.8833 TD +(Returns the number of bits per pixel of )Tj +/TT15 1 Tf +17.3647 0 TD +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 207.71 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 207.71 Tm +(BITMAPBIT)Tj +/F2 1 Tf +10 0 0 10 156.6 207.71 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.38 207.71 Tm +(BITMAP X Y NEWVALUE)Tj +/TT10 1 Tf +10 0 0 10 261.9967 207.71 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 267.9977 207.71 Tm +[( )-19125.8([Function])]TJ +-15.7775 -1.8833 TD +(If )Tj +/TT15 1 Tf +0.9699 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.05 Tw +[( is between 0 and the maximum value for a pixel in )]TJ +/TT15 1 Tf +23.4491 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +(, the pixel \()Tj +/TT15 1 Tf +5.0484 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +(\))Tj +-39.6691 -1.2944 TD +0.0811 Tw +(is changed to )Tj +/TT15 1 Tf +6.3342 0 TD +0 Tw +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0811 Tw +[( and the old value is returned. If )]TJ +/TT15 1 Tf +15.4507 0 TD +0 Tw +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0811 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 420.8713 179.11 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 438.8743 179.11 Tm +(, )Tj +/TT15 1 Tf +0.5811 0 TD +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.0811 Tw +[( is)]TJ +-38.9455 -1.3278 TD +0.0344 Tw +[(not changed but the value of the pixel is returned. If )]TJ +/TT15 1 Tf +23.8782 0 TD +0 Tw +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0344 Tw +[( is anything else, an error)]TJ +-28.679 -1.2889 TD +0.1611 Tw +[(is generated. If \()]TJ +/TT15 1 Tf +8.0194 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.1611 Tw +(\) is outside the limits of )Tj +/TT15 1 Tf +11.5663 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1611 Tw +(, 0 is returned and no pixels are)Tj +-24.9866 -1.2889 TD +0.1444 Tw +(changed. )Tj +/TT15 1 Tf +4.7928 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1444 Tw +[( can also be a window or display stream. Note: non-window image)]TJ +-8.3934 -1.2944 TD +0 Tw +(streams are "write-only"; the )Tj +/TT15 1 Tf +12.8174 0 TD +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +( argument must be non-)Tj +/TT10 1 Tf +10 0 0 10 380.2808 132.31 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 398.2837 132.31 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 109.08 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 109.08 Tm +(BITMAPCOPY)Tj +/F2 1 Tf +10 0 0 10 162 109.08 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.78 109.08 Tm +(BITMAP)Tj +/TT10 1 Tf +10 0 0 10 197.1852 109.08 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 203.1862 109.08 Tm +[( )-26327.1([Function])]TJ +-8.5762 -1.8833 TD +0.0978 Tw +(Returns a new bitmap which is a copy of )Tj +/TT15 1 Tf +19.13 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.0978 Tw +[( \(same dimensions, bits per pixel, and)]TJ +-22.7306 -1.2889 TD +0 Tw +(contents\).)Tj +/TT10 1 Tf +10 0 0 10 102 58.25 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 58.25 Tm +(EXPANDBITMAP)Tj +/F1 1 Tf +10 0 0 10 172.8 58.25 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.58 58.25 Tm +(BITMAP WIDTHFACTOR HEIGHTFACTOR)Tj +/TT10 1 Tf +10 0 0 10 343.0072 58.25 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 349.0082 58.25 Tm +[( )-10124.6([Function])]TJ +-24.7787 -1.8833 TD +(Returns a new bitmap that is )Tj +/TT15 1 Tf +12.9756 0 TD +(WIDTHFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +( times as wide as )Tj +/TT15 1 Tf +7.7153 0 TD +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +( a)Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +24 0 obj +<< +/Length 6425 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 568.26 Tm +(nd )Tj +/TT15 1 Tf +1.4573 0 TD +(HEIGHTFACTOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.0144 Tw +[( times as high. Each pixel of )]TJ +/F1 1 Tf +10 0 0 10 368.002 568.26 Tm +0 Tw +(BITMAP)Tj +/TT8 1 Tf +9 0 0 9 409.292 568.26 Tm +0.0144 Tw +[( is copied into a )]TJ +/TT15 1 Tf +7.2539 0 TD +0 Tw +(WIDTHFACTOR)Tj +/TT8 1 Tf +-33.3974 -1.2944 TD +(times )Tj +/TT15 1 Tf +3.2728 0 TD +(HEIGHTFACTOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.62 Tw +[( block of pixels. If )]TJ +/TT10 1 Tf +10 0 0 10 376.3652 556.61 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 394.3681 556.61 Tm +(, )Tj +/TT15 1 Tf +1.12 0 TD +(WIDTHFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +0.62 Tw +[( defaults to 4,)]TJ +/TT15 1 Tf +-32.2064 -1.3278 TD +0 Tw +(HEIGHTFACTOR)Tj +/TT8 1 Tf +7.2012 0 TD +( to 1.)Tj +/TT10 1 Tf +10 0 0 10 150 521.78 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 521.78 Tm +(ROTATEBITMAP)Tj +/F1 1 Tf +10 0 0 10 220.8 521.78 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.58 521.78 Tm +(BITMAP)Tj +/TT10 1 Tf +10 0 0 10 255.9853 521.78 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 261.9862 521.78 Tm +[( )-25127.1([Function])]TJ +-9.7763 -1.8833 TD +0.1244 Tw +(Given an m-high by n-wide bitmap, this function returns an n-high by m-wide bitmap.)Tj +0 -1.2222 TD +0 Tw +(The returned bitmap is the image of the original bitmap, rotated 90 degrees clockwise.)Tj +/TT10 1 Tf +10 0 0 10 150 471.55 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 471.55 Tm +(SHRINKBITMAP)Tj +/F2 1 Tf +10 0 0 10 220.8 471.55 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.58 471.55 Tm +(BITMAP WIDTHFACTOR HEIGHTFACTOR DESTINATIONBITMAP)Tj +/TT10 1 Tf +10 0 0 10 488.2231 471.55 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 494.224 471.55 Tm +( )Tj +-37.5805 -1.1056 TD +([Function])Tj +2 -1.7778 TD +0.0211 Tw +(Returns a copy of )Tj +/TT15 1 Tf +8.0874 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.0211 Tw +[( that has been shrunken by )]TJ +/TT15 1 Tf +12.2727 0 TD +0 Tw +(WIDTHFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +0.0211 Tw +[( and )]TJ +/TT15 1 Tf +2.2351 0 TD +0 Tw +(HEIGHTFACTOR)Tj +/TT8 1 Tf +-32.7968 -1.2944 TD +0.5878 Tw +[(in the width and height, respectively. If )]TJ +/TT10 1 Tf +10 0 0 10 377.5421 433.95 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 395.5451 433.95 Tm +(, )Tj +/TT15 1 Tf +1.0878 0 TD +(WIDTHFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +0.5878 Tw +[( defaults to 4,)]TJ +/TT15 1 Tf +-32.305 -1.3278 TD +0 Tw +(HEIGHTFACTOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.3911 Tw +[( to 1. If )]TJ +/TT15 1 Tf +5.4975 0 TD +0 Tw +(DESTINATIONBITMAP)Tj +/TT8 1 Tf +10.2017 0 TD +0.3911 Tw +[( is not provided, a bitmap that is)]TJ +-22.9004 -1.2889 TD +0 Tw +(1/)Tj +/TT15 1 Tf +1.106 0 TD +(WIDTHFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +0.3056 Tw +[( by 1/)]TJ +/TT15 1 Tf +3.3264 0 TD +0 Tw +(HEIGHTFACTOR)Tj +/TT8 1 Tf +7.2012 0 TD +0.3056 Tw +[( the size of )]TJ +/TT15 1 Tf +6.1822 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.3056 Tw +[( is created and returned.)]TJ +/TT15 1 Tf +-28.0174 -1.2889 TD +0 Tw +(WIDTHFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +( and )Tj +/TT15 1 Tf +2.1929 0 TD +(HEIGHTFACTOR)Tj +/TT8 1 Tf +7.2012 0 TD +( must be positive integers.)Tj +/TT10 1 Tf +10 0 0 10 150 375.92 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 375.92 Tm +(PRINTBITMAP)Tj +/F2 1 Tf +10 0 0 10 215.4 375.92 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 218.18 375.92 Tm +(BITMAP FILE)Tj +/TT10 1 Tf +10 0 0 10 277.5897 375.92 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 283.5906 375.92 Tm +[( )-22726.6([Function])]TJ +-12.1767 -1.8833 TD +0.2356 Tw +(Prints the bitmap )Tj +/TT15 1 Tf +8.6202 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.2356 Tw +[( on the file )]TJ +/TT15 1 Tf +5.8514 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2356 Tw +[( in a format that can be read back in by)]TJ +/TT10 1 Tf +10 0 0 10 174 347.32 Tm +0 Tw +(READBITMAP)Tj +/TT8 1 Tf +9 0 0 9 234.0097 347.32 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 324.09 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 324.09 Tm +(READBITMAP)Tj +/F2 1 Tf +10 0 0 10 210 324.09 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.78 324.09 Tm +(FILE)Tj +/TT10 1 Tf +10 0 0 10 234.3835 324.09 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.3845 324.09 Tm +[( )-27527.3([Function])]TJ +-7.3761 -1.8889 TD +0.2011 Tw +(Creates a bitmap by reading an expression \(written by )Tj +/TT10 1 Tf +10 0 0 10 408.3994 307.09 Tm +0 Tw +(PRINTBITMAP)Tj +/TT8 1 Tf +9 0 0 9 474.4101 307.09 Tm +0.2011 Tw +(\) from the file)Tj +/TT15 1 Tf +-33.3789 -1.3278 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 272.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 272.26 Tm +(EDITBM)Tj +/F2 1 Tf +10 0 0 10 188.4 272.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.18 272.26 Tm +(BMSPEC)Tj +/TT10 1 Tf +10 0 0 10 223.5853 272.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 229.5862 272.26 Tm +[( )-28727.1([Function])]TJ +/TT10 1 Tf +10 0 0 10 174 255.26 Tm +(EDITBM)Tj +/TT8 1 Tf +9 0 0 9 210.0058 255.26 Tm +0.0644 Tw +[( provides an easy-to-use interactive editing facility for various types of bitmaps.)]TJ +-4.0007 -1.3278 TD +0 Tw +(If )Tj +/TT15 1 Tf +0.9199 0 TD +(BMSPEC)Tj +/TT8 1 Tf +3.6006 0 TD +( is a bitmap, it is edited. If )Tj +/TT15 1 Tf +11.918 0 TD +(BMSPEC)Tj +/TT8 1 Tf +3.6006 0 TD +( is an atom whose value is a bitmap, its value)Tj +-20.0391 -1.2944 TD +0.2122 Tw +[(is edited. If )]TJ +/TT15 1 Tf +6.2805 0 TD +0 Tw +(BMSPEC)Tj +/TT8 1 Tf +3.6006 0 TD +0.2122 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 277.6836 231.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 295.6866 231.66 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 302.0966 231.66 Tm +(EDITBM)Tj +/TT8 1 Tf +9 0 0 9 338.1024 231.66 Tm +0.2122 Tw +[( asks for dimensions and creates a bitmap. If)]TJ +/TT15 1 Tf +-18.2336 -1.3278 TD +0 Tw +(BMSPEC)Tj +/TT8 1 Tf +3.6006 0 TD +0.0122 Tw +[( is a region, that portion of the screen bitmap is used. If )]TJ +/TT15 1 Tf +24.9812 0 TD +0 Tw +(BMSPEC)Tj +/TT8 1 Tf +3.6006 0 TD +0.0122 Tw +[( is a window, it is)]TJ +-32.1823 -1.2889 TD +0 Tw +(brought to the top and its contents edited.)Tj +/TT10 1 Tf +10 0 0 10 126 182.06 Tm +(EDITBM)Tj +/TT8 1 Tf +9 0 0 9 162.0058 182.06 Tm +0.0656 Tw +[( sets up the bitmap being edited in an editing window. The editing window has two major)]TJ +-4.0007 -1.3278 TD +0.0167 Tw +[(areas: a gridded edit area in the lower part of the window and a display area in the upper left part. In)]TJ +0 -1.2222 TD +0.12 Tw +[(the edit area, the left button will add points, the middle button will erase points. The right button)]TJ +T* +0.05 Tw +[(provides access to the normal window commands to reposition and reshape the window. The actual)]TJ +T* +0.0178 Tw +[(size bitmap is shown in the display area. For example, the following is a picture of the bitmap editing)]TJ +T* +0 Tw +(window editing a eight-high by eighteen-wide bitmap:)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +27 0 obj +<< +/Length 3229 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +ET +q +223.5 0 0 -118.5 194.26 575.99 cm +/Im1 Do +Q +BT +/TT8 1 Tf +9 0 0 9 78 434.04 Tm +0.1056 Tw +[(If the bitmap is too large to fit in the edit area, only a portion will be editable. This portion can be)]TJ +0 -1.2222 TD +0.1067 Tw +(changed by scrolling both up and down in the left margin and left and right in the bottom margin.)Tj +T* +0.2822 Tw +(Pressing the middle button while in the display area will bring up a menu that allows global)Tj +T* +0.1211 Tw +[(placement of the portion of the bitmap being edited. To allow more of the bitmap to be editing at)]TJ +0 -1.2278 TD +0.0567 Tw +(once, the window can be reshaped to make it larger or the )Tj +/TT10 1 Tf +10 0 0 10 316.9159 389.99 Tm +0 Tw +(GridSize)Tj +/TT11 1 Tf +4.8008 0 TD +<0040>Tj +/TT8 1 Tf +9 0 0 9 374.7919 389.99 Tm +0.0567 Tw +[( command described below)]TJ +-32.9769 -1.3278 TD +0 Tw +(can be used to reduce the size of a bit in the edit area.)Tj +0 -2.8889 TD +0.1333 Tw +[(The bitmap editing window can be reshaped to provide more or less room for editing. When this)]TJ +0 -1.2222 TD +0 Tw +(happens, the space allocated to the editing area will be changed to fit in the new region.)Tj +0 -2.8889 TD +0.0867 Tw +(Whenever the left or middle button is down and the cursor is not in the edit area, the section of the)Tj +0 -1.2222 TD +0.0122 Tw +[(display of the bitmap that is currently in the edit area is complemented. Pressing the left button while)]TJ +T* +0.0278 Tw +(not in the edit region will put the lower left 16 x 16 section of the bitmap into the cursor for as long as)Tj +T* +0 Tw +(the left button is held down.)Tj +0 -2.8889 TD +0.05 Tw +(Pressing the middle button while not in either the edit area or the display area \(i.e., while in the grey)Tj +0 -1.2222 TD +0 Tw +(area in the upper right or in the title\) will bring up a command menu.)Tj +ET +q +58.5 0 0 -82.5 252.76 225.49 cm +/Im2 Do +Q +BT +9 0 0 9 78 119.54 Tm +0.0789 Tw +(There are commands to stop editing, to restore the bitmap to its initial state and to clear the bitmap.)Tj +T* +0.2467 Tw +(Holding the middle button down over a command will result in an explanatory message being)Tj +T* +0 Tw +(printed in the prompt window. The commands are described below:)Tj +/TT10 1 Tf +10 0 0 10 132 79.49 Tm +(Paint)Tj +/TT8 1 Tf +9 0 0 9 174 79.49 Tm +0.4189 Tw +(Puts the current bitmap into a window and call the window )Tj +/TT10 1 Tf +10 0 0 10 455.9431 79.49 Tm +0 Tw +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 174 67.49 Tm +0.19 Tw +[(command on it. The )]TJ +/TT10 1 Tf +10 0 0 10 266.8547 67.49 Tm +0 Tw +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 296.8596 67.49 Tm +0.19 Tw +[( command implements drawing with various)]TJ +-13.6511 -1.3333 TD +0.0156 Tw +[(brush sizes and shapes but only on an actual sized bitmap. The )]TJ +/TT10 1 Tf +10 0 0 10 430.8961 55.49 Tm +0 Tw +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 460.901 55.49 Tm +0.0156 Tw +[( mode)]TJ +-31.8779 -1.3333 TD +0.0644 Tw +(is left by pressing the )Tj +/TT10 1 Tf +10 0 0 10 263.6832 43.49 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 293.688 43.49 Tm +0.0644 Tw +[( button and selecting the )]TJ +/TT10 1 Tf +10 0 0 10 396.8361 43.49 Tm +0 Tw +(QUIT)Tj +/TT8 1 Tf +9 0 0 9 420.84 43.49 Tm +0.0644 Tw +[( command from)]TJ +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT11 11 0 R +>> +/XObject << +/Im1 29 0 R +/Im2 30 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +32 0 obj +<< +/Length 5222 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 569.54 Tm +0.1633 Tw +[(the menu. At this point, you will be given a choice of whether or not the)]TJ +0 -1.2278 TD +0.2222 Tw +(changes you made while in )Tj +/TT10 1 Tf +10 0 0 10 343.1025 558.49 Tm +0 Tw +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 373.1074 558.49 Tm +0.2222 Tw +[( mode should be made to the current)]TJ +-16.7897 -1.3278 TD +0 Tw +(bitmap.)Tj +/TT10 1 Tf +10 0 0 10 150 528.49 Tm +(ShowAsTile)Tj +/TT8 1 Tf +9 0 0 9 222 528.49 Tm +0.0444 Tw +[(Tesselates the current bitmap in the upper part of the window. This is useful)]TJ +T* +0.4244 Tw +(for determining how a bitmap will look if it were made the display)Tj +0 -1.2278 TD +0.26 Tw +(background \(using the function )Tj +/TT10 1 Tf +10 0 0 10 359.4254 505.49 Tm +0 Tw +(CHANGEBACKGROUND)Tj +/TT8 1 Tf +9 0 0 9 455.441 505.49 Tm +0.26 Tw +[(\). Note: The tiled)]TJ +-25.9379 -1.3278 TD +0.0322 Tw +(display will not automatically change as the bitmap changes; to update it, use)Tj +0 -1.2278 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 236.7348 482.49 Tm +(ShowAsTile)Tj +/TT8 1 Tf +9 0 0 9 296.7446 482.49 Tm +( command again.)Tj +/TT10 1 Tf +10 0 0 10 144 463.49 Tm +(Grid,On/Off)Tj +/TT8 1 Tf +9 0 0 9 222 463.49 Tm +(Turns the editing grid display on or off.)Tj +/TT10 1 Tf +10 0 0 10 152.13 444.49 Tm +(GridSize)Tj +/TT11 1 Tf +4.8008 0 TD +<0040>Tj +/TT8 1 Tf +9 0 0 9 222 444.49 Tm +0.0167 Tw +[(Allows specification of the size of the editing grid. Another menu will appear)]TJ +0 -1.3278 TD +0.1044 Tw +[(giving a choice of several sizes. If one is selected, the editing portion of the)]TJ +0 -1.2222 TD +0.0844 Tw +(bitmap editor will be redrawn using the selected grid size, allowing more or)Tj +T* +0.09 Tw +[(less of the bitmap to be edited without scrolling. The original size is chosen)]TJ +T* +0.1444 Tw +[(hueristically and is typically about 8. It is particularly useful when editing)]TJ +T* +0 Tw +(large bitmaps to set the edit grid size smaller than the original.)Tj +/TT10 1 Tf +10 0 0 10 180 370.49 Tm +(Reset)Tj +/TT8 1 Tf +9 0 0 9 222 370.49 Tm +0.0344 Tw +(Sets all or part of the bitmap to the contents it had when )Tj +/TT10 1 Tf +10 0 0 10 451.2541 370.49 Tm +0 Tw +(EDITBM)Tj +/TT8 1 Tf +9 0 0 9 487.2599 370.49 Tm +0.0344 Tw +[( was called.)]TJ +-29.4733 -1.3278 TD +0.0078 Tw +(Another menu will appear giving a choice between resetting the entire bitmap)Tj +0 -1.2222 TD +0.1467 Tw +[(or just the portion that is in the edit area. The second menu also acts as a)]TJ +T* +0.0444 Tw +(confirmation, since not selecting one of the choices on this menu results in no)Tj +T* +0 Tw +(action being taken.)Tj +/TT10 1 Tf +10 0 0 10 180 307.49 Tm +(Clear)Tj +/TT8 1 Tf +9 0 0 9 222 307.49 Tm +0.1478 Tw +[(Sets all or part of the bitmap to 0. As with the )]TJ +/TT10 1 Tf +10 0 0 10 423.913 307.49 Tm +0 Tw +(Reset)Tj +/TT8 1 Tf +9 0 0 9 453.9179 307.49 Tm +0.1478 Tw +[( command, another)]TJ +-25.7687 -1.3278 TD +0.1622 Tw +(menu gives a choice between clearing the entire bitmap or just the portion)Tj +0 -1.2222 TD +0 Tw +(that is in the edit area.)Tj +/TT10 1 Tf +10 0 0 10 164.13 266.49 Tm +(Cursor)Tj +/TT11 1 Tf +3.6006 0 TD +<0040>Tj +/TT8 1 Tf +9 0 0 9 222 266.49 Tm +0.0711 Tw +[(Sets the cursor to the lower left part of the bitmap. This prompts the user to)]TJ +0 -1.3278 TD +0 Tw +(specify the cursor "hot spot" by clicking in the lower left corner of the grid.)Tj +/TT10 1 Tf +10 0 0 10 198 236.49 Tm +(OK)Tj +/TT8 1 Tf +9 0 0 9 222 236.49 Tm +0.1378 Tw +(Copies the changed image into the original bitmap, stops the bitmap editor)Tj +T* +0.1322 Tw +[(and closes the edit windows. The changes the bitmap editor makes during)]TJ +0 -1.2222 TD +0.1856 Tw +[(the interaction occur on a copy of the original bitmap. Unless the bitmap)]TJ +0 -1.2278 TD +0 Tw +(editor is exited via )Tj +/TT10 1 Tf +10 0 0 10 297.7881 202.49 Tm +(OK)Tj +/TT8 1 Tf +9 0 0 9 309.79 202.49 Tm +(, no changes are made in the original.)Tj +/TT10 1 Tf +10 0 0 10 186 183.49 Tm +(Stop)Tj +/TT8 1 Tf +9 0 0 9 222 183.49 Tm +(Stops the bitmap editor without making any changes to the original bitmap.)Tj +/TT4 1 Tf +10 0 0 10 126 153.2 Tm +(Textures)Tj +/TT8 1 Tf +9 0 0 9 126 127.54 Tm +0.0011 Tw +(A Texture denotes a pattern of gray which can be used to \(conceptually\) tessellate the plane to form an)Tj +0 -1.2222 TD +0.0633 Tw +[(infinite sheet of gray. It is currently either a 4 by 4 pattern or a 16 by N \(N <= 16\) pattern. Textures)]TJ +T* +0 Tw +(are created from bitmaps using the following function:)Tj +/TT10 1 Tf +10 0 0 10 150 83.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 83.26 Tm +(CREATETEXTUREFROMBITMAP)Tj +/F3 1 Tf +10 0 0 10 280.2 83.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 283.07 83.26 Tm +(BITMAP)Tj +/TT10 1 Tf +10 0 0 10 315.4753 83.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 321.4762 83.26 Tm +[( )-18517.1([Function])]TJ +-16.3862 -1.8833 TD +0.0678 Tw +(Returns a texture object that will produce the texture of )Tj +/TT15 1 Tf +25.3721 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.0678 Tw +[(. If )]TJ +/TT15 1 Tf +1.8733 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.0678 Tw +[( is too large,)]TJ +-34.4465 -1.2889 TD +0 Tw +(its lower left portion is used. If )Tj +/TT15 1 Tf +14.0537 0 TD +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +( is too small, it is repeated to fill out the texture.)Tj +ET +endstream +endobj +33 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT11 11 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +35 0 obj +<< +/Length 3966 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(TEXTUREP)Tj +/F3 1 Tf +10 0 0 10 151.2 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 154.07 568.26 Tm +(OBJECT)Tj +/TT10 1 Tf +10 0 0 10 186.4753 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 192.4762 568.26 Tm +[( )-27517.1([Function])]TJ +-7.3863 -1.8889 TD +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(OBJECT)Tj +/TT8 1 Tf +3.6006 0 TD +( if it is a texture; )Tj +/TT10 1 Tf +10 0 0 10 257.9238 551.26 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 275.9267 551.26 Tm +( otherwise.)Tj +-21.9919 -3 TD +0.1544 Tw +(The functions which accept textures \()Tj +/TT10 1 Tf +10 0 0 10 233.116 524.26 Tm +0.371 Tw +(TEXTUREP, BITBLT, DSPTEXTURE)Tj +/TT8 1 Tf +9 0 0 9 408.5634 524.26 Tm +0 Tw +(, )Tj +/TT10 1 Tf +10 0 0 10 414.4533 524.26 Tm +(etc)Tj +/TT8 1 Tf +9 0 0 9 432.4563 524.26 Tm +0.1544 Tw +(.\) also accept)Tj +-39.384 -1.3278 TD +0.0967 Tw +[(bitmaps up to 16 bits wide by 16 bits high as textures. When a region is being filled with a bitmap)]TJ +0 -1.2222 TD +0 Tw +(texture, the texture is treated as if it were 16 bits wide \(if less, the rest is filled with white space\).)Tj +0 -2.8944 TD +0.4 Tw +(The common textures white and black are available as system constants )Tj +/TT10 1 Tf +10 0 0 10 404.8661 475.26 Tm +0 Tw +(WHITESHADE)Tj +/TT8 1 Tf +9 0 0 9 464.8759 475.26 Tm +0.4 Tw +[( and)]TJ +/TT10 1 Tf +10 0 0 10 78 463.26 Tm +0 Tw +(BLACKSHADE)Tj +/TT8 1 Tf +9 0 0 9 138.0098 463.26 Tm +0.0667 Tw +[(. The global variable )]TJ +/TT10 1 Tf +10 0 0 10 226.3779 463.26 Tm +0 Tw +(GRAYSHADE)Tj +/TT8 1 Tf +9 0 0 9 280.3867 463.26 Tm +0.0667 Tw +[( is used by many system facilities as a background)]TJ +-22.4874 -1.3278 TD +0 Tw +(gray shade and can be set by the user.)Tj +/TT10 1 Tf +10 0 0 10 102 429.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 429.03 Tm +(EDITSHADE)Tj +/F3 1 Tf +10 0 0 10 156.6 429.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.47 429.03 Tm +(SHADE)Tj +/TT10 1 Tf +10 0 0 10 186.4744 429.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 192.4753 429.03 Tm +[( )-27517.2([Function])]TJ +-7.3862 -1.8833 TD +0.0022 Tw +(Opens a window that allows the user to edit textures. Textures can be either small \(4 by 4\))Tj +0 -1.2222 TD +0.0311 Tw +[(patterns or large \(16 by 16\). In the edit area, the left button adds bits to the shade and the)]TJ +T* +0.03 Tw +[(middle button erases bits from the shade. The top part of the window is painted with the)]TJ +T* +0.2144 Tw +[(current texture whenever all mouse keys are released. Thus it is possible to directly)]TJ +T* +0.1078 Tw +(compare two textures that differ by more than one pixel by holding a mouse key down)Tj +T* +0.0433 Tw +[(until all changes are made. When the "quit" button is selected, the texture being edited is)]TJ +T* +0 Tw +(returned.)Tj +0 -2.0056 TD +(If )Tj +/TT15 1 Tf +0.9255 0 TD +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0056 Tw +[( is a texture object, )]TJ +/TT10 1 Tf +10 0 0 10 237.3762 328.03 Tm +0 Tw +(EDITSHADE)Tj +/TT8 1 Tf +9 0 0 9 291.3849 328.03 Tm +0.0056 Tw +[( starts with it. If )]TJ +/TT15 1 Tf +7.4987 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0056 Tw +[( is T, it starts with a large)]TJ +-28.8753 -1.3333 TD +0 Tw +(\(16 by 16\) white texture. Otherwise, it starts with )Tj +/TT10 1 Tf +10 0 0 10 324.4834 316.03 Tm +(WHITESHADE)Tj +/TT8 1 Tf +9 0 0 9 384.4931 316.03 Tm +(.)Tj +-34.0548 -2.9944 TD +(The following is a picture of the texture editor, editing a large \(16 by 16\) pattern:)Tj +ET +q +150 0 0 -150 231.01 274.53 cm +/Im3 Do +Q +BT +/TT4 1 Tf +10 0 0 10 54 84.74 Tm +(Opening Image Streams)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 82.03 m +486.01 82.03 l +S +BT +/TT8 1 Tf +9 0 0 9 78 60.08 Tm +0.0289 Tw +(An image stream is an output stream which "knows" how to process graphic commands to a graphics)Tj +0 -1.2278 TD +0.23 Tw +[(output device. Besides accepting the normal character-output functions \()]TJ +/TT10 1 Tf +10 0 0 10 387.9303 49.03 Tm +0 Tw +(PRINT)Tj +/TT8 1 Tf +9 0 0 9 417.9352 49.03 Tm +0.23 Tw +(, etc.\), an image)Tj +ET +endstream +endobj +36 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/XObject << +/Im3 37 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +39 0 obj +<< +/Length 8801 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0478 Tw +(stream can also be passed as an argument to functions to draw curves, to print characters in multiple)Tj +0 -1.2222 TD +0 Tw +(fonts, and other graphics operations.)Tj +0 -2.8889 TD +0.1533 Tw +(Each image stream has an "image stream type," a litatom that specifies the type of graphic output)Tj +0 -1.2222 TD +0.18 Tw +[(device that the image stream is processing graphics commands for. Currently, the built-in image)]TJ +0 -1.2278 TD +0.1222 Tw +(stream types are )Tj +/TT10 1 Tf +10 0 0 10 196.9538 510.49 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 238.9606 510.49 Tm +0.1222 Tw +[( \(for the display screen\), )]TJ +/TT10 1 Tf +10 0 0 10 342.5949 510.49 Tm +0 Tw +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 402.6047 510.49 Tm +0.1222 Tw +[( \(for Interpress format printers\),)]TJ +-30.7339 -1.47 TD +0 Tw +(and )Tj +/TT10 1 Tf +10 0 0 10 145.3458 497.26 Tm +(PRESS)Tj +/TT8 1 Tf +9 0 0 9 175.3507 497.26 Tm +0.2067 Tw +[( \(for Press format printers\). There are also library packages )]TJ +/F2 1 Tf +10 0 0 10 434.0031 497.26 Tm +0.229 Tw +(available that define)Tj +-30.8003 -1.323 TD +0 Tw +(image stream types for the IRIS display, 4045 printer, FX-80 printer, C150 printer, etc.)Tj +/TT8 1 Tf +9 0 0 9 126 458.31 Tm +0.3867 Tw +(Image streams to the display \(display streams\) interpret graphics commands by immediately)Tj +0 -1.2222 TD +0.1967 Tw +(executing the appropriate operations to cause the desired image to appear on the display screen.)Tj +T* +0.12 Tw +(Image streams for hardcopy devices such as Interpress printers interpret the graphic commands by)Tj +T* +0 Tw +(saving information in a file, which can later be sent to the printer.)Tj +0 -2.8889 TD +0.0478 Tw +[(Note: Not all graphics operations can be properly executed for all image stream types. For example,)]TJ +/TT10 1 Tf +10 0 0 10 126 388.26 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 162.0058 388.26 Tm +0.0367 Tw +[( may not be supported to all printers. This functionality is still being developed, but even in)]TJ +-4.0007 -1.3278 TD +0.1055 Tw +(the long run some operations may be beyond the physical or logical capabilities of some devices or)Tj +0 -1.2222 TD +0 Tw +(image file formats. In these cases, the stream will approximate the specified image as best it can.)Tj +/TT10 1 Tf +10 0 0 10 150 343.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 343.03 Tm +(OPENIMAGESTREAM)Tj +/F3 1 Tf +10 0 0 10 237 343.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 239.87 343.03 Tm +(FILE IMAGETYPE OPTIONS)Tj +/TT10 1 Tf +10 0 0 10 358.6893 343.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 364.6903 343.03 Tm +[( )-13715.5([Function])]TJ +-21.1878 -1.8833 TD +0.1767 Tw +(Opens and returns an image stream of type )Tj +/TT15 1 Tf +20.8215 0 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1767 Tw +[( on a destination specified by)]TJ +/TT15 1 Tf +-26.2224 -1.2889 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[(. If )]TJ +/TT15 1 Tf +1.8666 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( is a file name on a normal file storage device, the image stream will store)]TJ +-6.6674 -1.2889 TD +0.0355 Tw +(graphics commands on the specified file, which can be transmitted to a printer by explicit)Tj +0 -1.2278 TD +0.2167 Tw +(calls to )Tj +/TT10 1 Tf +10 0 0 10 207.796 291.83 Tm +0 Tw +(LISTFILES)Tj +/TT8 1 Tf +9 0 0 9 261.8047 291.83 Tm +0.2167 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 285.4406 291.83 Tm +0 Tw +(SEND.FILE.TO.PRINTER)Tj +/TT8 1 Tf +9 0 0 9 405.4601 291.83 Tm +0.2167 Tw +[(. If )]TJ +/TT15 1 Tf +2.3199 0 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.2167 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 489.7809 291.83 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 531.7878 291.83 Tm +(,)Tj +-39.7542 -1.3278 TD +0.0078 Tw +(then the user is prompted for a window to open. )Tj +/TT15 1 Tf +22.0514 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0078 Tw +[( in this case will be used as the title)]TJ +-24.4518 -1.2889 TD +0 Tw +(of the window.)Tj +0 -2.0056 TD +(If )Tj +/TT15 1 Tf +1.1288 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2089 Tw +[( is a file name on the )]TJ +/TT10 1 Tf +10 0 0 10 302.7836 250.23 Tm +0 Tw +(LPT)Tj +/TT8 1 Tf +9 0 0 9 320.7866 250.23 Tm +0.2089 Tw +[( device, this indicates that the graphics commands)]TJ +-16.3096 -1.3278 TD +0.0144 Tw +(should be stored in a temporary file, and automatically sent to the printer when the image)Tj +0 -1.2278 TD +0.0011 Tw +(stream is closed by )Tj +/TT10 1 Tf +10 0 0 10 251.6694 227.23 Tm +0 Tw +(CLOSEF)Tj +/TT8 1 Tf +9 0 0 9 287.6752 227.23 Tm +0.0011 Tw +(. )Tj +/TT15 1 Tf +0.7522 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +10 0 0 10 318.3087 227.23 Tm +(=)Tj +/TT8 1 Tf +9 0 0 9 324.3097 227.23 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 326.5697 227.23 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 344.5727 227.23 Tm +0.0001 Tc +0.001 Tw +( is equivalent to )Tj +/TT15 1 Tf +7.2676 0 TD +0 Tc +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT10 1 Tf +10 0 0 10 433.8448 227.23 Tm +(=)Tj +/TT8 1 Tf +9 0 0 9 439.8458 227.23 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 442.1058 227.23 Tm +({LPT})Tj +/TT8 1 Tf +9 0 0 9 472.1107 227.23 Tm +0.0001 Tc +0.001 Tw +(. File names on)Tj +-33.1234 -1.3333 TD +0 Tc +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 190.1649 215.23 Tm +(LPT)Tj +/TT8 1 Tf +9 0 0 9 208.1678 215.23 Tm +0.1589 Tw +[( device are of the form {)]TJ +/TT10 1 Tf +10 0 0 10 311.2346 215.23 Tm +0 Tw +(LPT}PRINTERNAME.TYPE)Tj +/TT8 1 Tf +9 0 0 9 431.2542 215.23 Tm +0.1589 Tw +(, where )Tj +/TT10 1 Tf +10 0 0 10 465.7855 215.23 Tm +0 Tw +(PRINTERNAME)Tj +/TT8 1 Tf +9 0 0 9 531.7963 215.23 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 203.23 Tm +(TYPE)Tj +/TT8 1 Tf +9 0 0 9 198.0039 203.23 Tm +0.0233 Tw +(, or both may be omitted.)Tj +/TT10 1 Tf +10 0 0 10 299.236 203.23 Tm +0.057 Tw +[( PRINTERNAME)]TJ +/TT8 1 Tf +9 0 0 9 378.3887 203.23 Tm +0.0233 Tw +[( is the name of the particular printer to)]TJ +-22.7099 -1.3278 TD +0.4411 Tw +(which the file will be transmitted on closing; it defaults to the first printer on)Tj +/TT10 1 Tf +10 0 0 10 174 180.23 Tm +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 288.0185 180.23 Tm +0.3989 Tw +[( that can print )]TJ +/TT15 1 Tf +8.0511 0 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.3989 Tw +[( files. The )]TJ +/TT10 1 Tf +10 0 0 10 466.1218 180.23 Tm +0 Tw +(TYPE)Tj +/TT8 1 Tf +9 0 0 9 490.1257 180.23 Tm +0.3989 Tw +[( extension)]TJ +-35.1251 -1.3333 TD +0.0111 Tw +(supplies the value of )Tj +/TT15 1 Tf +9.4624 0 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0111 Tw +[( when it is defaulted \(see below\). )]TJ +/TT10 1 Tf +10 0 0 10 443.9563 168.23 Tm +0 Tw +(OPENIMAGESTREAM)Tj +/TT8 1 Tf +9 0 0 9 174 156.28 Tm +0.0689 Tw +(will generate an error if the specified printer does not accept the kind of file specified by)Tj +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-5.4009 -2.0722 TD +(If )Tj +/TT15 1 Tf +0.951 0 TD +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0311 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 242.6608 126.63 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 260.6637 126.63 Tm +0.0311 Tw +(, the image type is inferred from the extension field of )Tj +/TT15 1 Tf +24.3334 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0311 Tw +[( and the)]TJ +/TT10 1 Tf +10 0 0 10 174 114.63 Tm +0 Tw +(EXTENSIONS)Tj +/TT8 1 Tf +9 0 0 9 234.0097 114.63 Tm +0.0478 Tw +[( properties in the list )]TJ +/TT10 1 Tf +10 0 0 10 320.5743 114.63 Tm +0 Tw +(PRINTFILETYPES)Tj +/TT8 1 Tf +9 0 0 9 404.588 114.63 Tm +0.0478 Tw +[(. Thus, the extensions )]TJ +/TT10 1 Tf +10 0 0 10 496.8083 114.63 Tm +0 Tw +(IP)Tj +/TT8 1 Tf +9 0 0 9 508.8102 114.63 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 513.7402 114.63 Tm +(IPR)Tj +/TT8 1 Tf +9 0 0 9 531.7432 114.63 Tm +(,)Tj +-39.7492 -1.3333 TD +(and )Tj +/TT10 1 Tf +10 0 0 10 192.4058 102.63 Tm +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 252.4156 102.63 Tm +0.1022 Tw +[( indicate Interpress format, and the extension )]TJ +/TT10 1 Tf +10 0 0 10 441.1407 102.63 Tm +0 Tw +(PRESS)Tj +/TT8 1 Tf +9 0 0 9 471.1456 102.63 Tm +0.1022 Tw +[( indicates Press)]TJ +-33.0162 -1.47 TD +0.0322 Tw +[(format. If )]TJ +/F1 1 Tf +10 0 0 10 216.7455 89.4 Tm +0 Tw +(FILE)Tj +/TT8 1 Tf +9 0 0 9 241.3755 89.4 Tm +0.0322 Tw +[( is a printer file with no extension \(of the form )]TJ +/TT10 1 Tf +10 0 0 10 429.6983 89.4 Tm +0 Tw +({LPT}PRINTERNAME\))Tj +/TT8 1 Tf +9 0 0 9 531.7149 89.4 Tm +(,)Tj +-39.7461 -1.3278 TD +(then )Tj +/TT15 1 Tf +2.3781 0 TD +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1589 Tw +[( will be the type that the indicated printer can print. If )]TJ +/TT15 1 Tf +26.3712 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1589 Tw +[( has no)]TJ +-36.5506 -1.2944 TD +0.1511 Tw +(extension but is not on the printer device )Tj +/TT10 1 Tf +10 0 0 10 349.8463 65.8 Tm +0 Tw +({LPT})Tj +/TT8 1 Tf +9 0 0 9 379.8512 65.8 Tm +0.1511 Tw +(, then )Tj +/TT15 1 Tf +3.0215 0 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +0.1511 Tw +[( will default to the)]TJ +-31.2947 -1.3333 TD +0 Tw +(type accepted by the first printer on )Tj +/TT10 1 Tf +10 0 0 10 318.5317 53.8 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 432.5503 53.8 Tm +(. )Tj +ET +endstream +endobj +40 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +42 0 obj +<< +/Length 5424 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT15 1 Tf +9 0 0 9 126 569.49 Tm +(OPTIONS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1056 Tw +[( is a list in property list format, \()]TJ +/TT10 1 Tf +10 0 0 10 299.3617 569.49 Tm +0.253 Tw +(PROP1 VAL1 PROP2 VAL2 )Tj +/TT8 1 Tf +9 0 0 9 447.5042 569.49 Tm +0.1056 Tw +(\), used to)Tj +-35.7227 -1.3278 TD +0.3522 Tw +(specify certain attributes of the image stream; not all attributes are meaningful or)Tj +0 -1.2222 TD +0 Tw +(interpreted by all types of image streams. Acceptable properties are:)Tj +/TT10 1 Tf +10 0 0 10 126 528.49 Tm +(REGION)Tj +/TT8 1 Tf +9 0 0 9 174 528.49 Tm +0.0522 Tw +(Value is the region on the page \(in stream scale units, 0,0 being the lower-left)Tj +0 -1.3278 TD +0.1378 Tw +[(corner of the page\) that text will fill up. It establishes the initial values for)]TJ +/TT10 1 Tf +10 0 0 10 174 505.49 Tm +0 Tw +(DSPLEFTMARGIN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 505.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 256.5627 505.49 Tm +(DSPRIGHTMARGIN)Tj +/TT8 1 Tf +9 0 0 9 340.5763 505.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 345.1263 505.49 Tm +(DSPBOTTOMMARGIN)Tj +/TT8 1 Tf +9 0 0 9 435.141 505.49 Tm +0.0056 Tw +[( \(the point at)]TJ +-29.0157 -1.3333 TD +0.4078 Tw +(which carriage returns cause page advancement\) and )Tj +/TT10 1 Tf +10 0 0 10 413.9761 493.49 Tm +0 Tw +(DSPTOPMARGIN)Tj +/TT8 1 Tf +9 0 0 9 174 481.54 Tm +(\(where the stream is positioned at the beginning of a new page\).)Tj +0 -2 TD +1.1422 Tw +(If this property is not given, the value of the variable)Tj +/TT10 1 Tf +10 0 0 10 174 452.49 Tm +0 Tw +(DEFAULTPAGEREGION)Tj +/TT8 1 Tf +9 0 0 9 276.0166 452.49 Tm +(, is used)Tj +/TT10 1 Tf +10 0 0 10 308.2505 452.49 Tm +(.)Tj +-17.625 -1.9 TD +(FONTS)Tj +/TT8 1 Tf +9 0 0 9 174 433.49 Tm +0.0267 Tw +[(Value is a list of fonts that are expected to be used in the image stream. Some)]TJ +0 -1.3278 TD +0.2144 Tw +(image streams \(e.g. Interpress\) are more efficient if the expected fonts are)Tj +0 -1.2222 TD +0.0189 Tw +[(specified in advance, but this is not necessary. The first font in this list will be)]TJ +T* +0.0578 Tw +(the initial font of the stream, otherwise the default font for that image stream)Tj +T* +0 Tw +(type will be used.)Tj +/TT10 1 Tf +10 0 0 10 120 370.49 Tm +(HEADING)Tj +/TT8 1 Tf +9 0 0 9 174 370.49 Tm +0.0333 Tw +(Value is the heading to be placed automatically on each page. )Tj +/TT10 1 Tf +10 0 0 10 426.9413 370.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 444.9442 370.49 Tm +0.0333 Tw +[( means no)]TJ +-30.1049 -1.3278 TD +0 Tw +(heading.)Tj +0 -2.0056 TD +0.1678 Tw +[(Examples: Suppose that Tremor: is an Interpress printer, Quake is a Press)]TJ +0 -1.3333 TD +0 Tw +(printer, and)Tj +/TT10 1 Tf +10 0 0 10 221.3598 328.49 Tm +( DEFAULTPRINTINGHOST )Tj +/TT8 1 Tf +9 0 0 9 347.3803 328.49 Tm +(is)Tj +/TT10 1 Tf +10 0 0 10 353.8139 328.49 Tm +( \(Tremor: Quake\):)Tj +-17.9814 -1.9 TD +(\(OPENIMAGESTREAM\) )Tj +/TT8 1 Tf +9 0 0 9 288.9976 309.49 Tm +0.2911 Tw +(returns an Interpress image stream on printer)Tj +-12.7775 -1.3278 TD +0 Tw +(Tremor:.)Tj +/TT10 1 Tf +10 0 0 10 174 279.49 Tm +(\(OPENIMAGESTREAM NIL PRESS\) )Tj +/TT8 1 Tf +9 0 0 9 348.0283 279.49 Tm +(returns a Press stream on Quake.)Tj +/TT10 1 Tf +10 0 0 10 174 260.49 Tm +0.47 Tw +(\(OPENIMAGESTREAM {LPT}.INTERPRESS\) )Tj +/TT8 1 Tf +9 0 0 9 399.4351 260.49 Tm +0.1956 Tw +(returns an Interpress)Tj +-25.0483 -1.3278 TD +0 Tw +(stream on Tremor:.)Tj +/TT10 1 Tf +10 0 0 10 174 230.49 Tm +0.042 Tw +(\(OPENIMAGESTREAM {CORE}FOO.PRESS\) )Tj +/TT8 1 Tf +9 0 0 9 384.8741 230.49 Tm +0.0178 Tw +(returns a Press stream on)Tj +-23.4305 -1.3333 TD +0 Tw +(the file )Tj +/TT10 1 Tf +10 0 0 10 203.5312 218.49 Tm +({CORE}FOO.PRESS.)Tj +-10.1531 -2.323 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 195.26 Tm +(IMAGESTREAMP)Tj +/F3 1 Tf +10 0 0 10 172.8 195.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.67 195.26 Tm +(X IMAGETYPE)Tj +/TT10 1 Tf +10 0 0 10 235.0797 195.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 241.0806 195.26 Tm +[( )-17378.8([NoSpread Function])]TJ +-12.7867 -1.8833 TD +(Returns )Tj +/TT15 1 Tf +4.0893 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.3622 Tw +[( \(possibly coerced to a stream\) if it is an output image stream of type)]TJ +/TT15 1 Tf +-4.6894 -1.2944 TD +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +( \(or of any type if )Tj +/TT15 1 Tf +7.8774 0 TD +(IMAGETYPE )Tj +/TT10 1 Tf +10 0 0 10 299.5137 166.66 Tm +(= NIL)Tj +/TT8 1 Tf +9 0 0 9 329.5186 166.66 Tm +(\), otherwise )Tj +/TT10 1 Tf +10 0 0 10 378.4692 166.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 396.4722 166.66 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 143.43 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 143.43 Tm +(IMAGESTREAMTYPE)Tj +/F3 1 Tf +10 0 0 10 189 143.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.87 143.43 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 224.2753 143.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 230.2762 143.43 Tm +[( )-23317.1([Function])]TJ +-11.5863 -1.8833 TD +(Returns the image stream type of )Tj +/TT15 1 Tf +14.9214 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 103.6 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 103.6 Tm +(IMAGESTREAMTYPEP)Tj +/F3 1 Tf +10 0 0 10 194.4 103.6 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 197.27 103.6 Tm +(STREAM TYPE)Tj +/TT10 1 Tf +10 0 0 10 256.6797 103.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 262.6806 103.6 Tm +[( )-19716.6([Function])]TJ +-15.1867 -1.8889 TD +(Returns )Tj +/TT10 1 Tf +10 0 0 10 159.5434 86.6 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 165.5444 86.6 Tm +( if )Tj +/TT15 1 Tf +1.124 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( is an image stream of type )Tj +/TT15 1 Tf +12.104 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +43 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +45 0 obj +<< +/Length 7273 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Accessing Image Stream Fields)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +534.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 543.54 Tm +0.1589 Tw +[(The following functions manipulate the fields of an image stream. These functions return the old)]TJ +0 -1.2278 TD +0.17 Tw +[(value \(the one being replaced\). A value of )]TJ +/TT10 1 Tf +10 0 0 10 310.3569 532.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 328.3598 532.49 Tm +0.17 Tw +[( for the new value will return the current setting)]TJ +-22.4844 -1.3278 TD +0.0589 Tw +[(without changing it. These functions do not change any of the bits drawn on the image stream; they)]TJ +0 -1.2222 TD +0 Tw +(just affect future operations done on the image stream.)Tj +/TT10 1 Tf +10 0 0 10 150 487.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 487.26 Tm +(DSPCLIPPINGREGION)Tj +/F3 1 Tf +10 0 0 10 247.8 487.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 250.67 487.26 Tm +(REGION STREAM)Tj +/TT10 1 Tf +10 0 0 10 320.8814 487.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 326.8824 487.26 Tm +[( )-17916.4([Function])]TJ +-16.9869 -1.8833 TD +0.0222 Tw +(The clipping region is a region that limits the extent of characters printed and lines drawn)Tj +0 -1.2222 TD +0 Tw +(\(in the image streams coordinate system\). Initially set so that no clipping occurs.)Tj +0 -2 TD +0.0744 Tw +[(Warning: For display streams, the window system maintains the clipping region during)]TJ +0 -1.2222 TD +0 Tw +(window operations. Users should be very careful about changing this field.)Tj +/TT10 1 Tf +10 0 0 10 150 408.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 408.03 Tm +(DSPFONT)Tj +/F3 1 Tf +10 0 0 10 193.8 408.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 196.67 408.03 Tm +(FONT STREAM)Tj +/TT10 1 Tf +10 0 0 10 256.0797 408.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 262.0806 408.03 Tm +[( )-25116.6([Function])]TJ +-9.7867 -1.8833 TD +(The font field specifies the font used when printing characters to the image stream.)Tj +4 -2.0056 TD +0.1978 Tw +(Note: )Tj +/TT10 1 Tf +10 0 0 10 239.9491 373.03 Tm +0 Tw +(DSPFONT)Tj +/TT8 1 Tf +9 0 0 9 281.956 373.03 Tm +0.1978 Tw +[( determines its new font descriptor from )]TJ +/TT15 1 Tf +19.4748 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1978 Tw +[( by the same)]TJ +-25.8703 -1.3333 TD +0.3344 Tw +(coercion rules that )Tj +/TT10 1 Tf +10 0 0 10 330.6555 361.03 Tm +0 Tw +(FONTPROP)Tj +/TT8 1 Tf +9 0 0 9 378.6633 361.03 Tm +0.3344 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 404.4191 361.03 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 464.4289 361.03 Tm +0.3344 Tw +[( use , with one)]TJ +-24.2699 -1.3333 TD +0.2156 Tw +(additional possibility: If )Tj +/TT15 1 Tf +11.4597 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.2156 Tw +[( is a list of the form )]TJ +/TT10 1 Tf +10 0 0 10 462.7979 349.03 Tm +0 Tw +(\(PROP)Tj +3.0012 -0.2 TD +(1)Tj +0.6 0.2 TD +0.518 Tw +[( VAL)]TJ +2.918 -0.2 TD +0 Tw +(1)Tj +-28.199 -1.2 TD +(PROP)Tj +2.4 -0.2 TD +(2)Tj +0.6 0.2 TD +0.045 Tw +[( VAL)]TJ +2.445 -0.2 TD +0 Tw +(2)Tj +0.6 0.2 TD +0.045 Tw +[( ...\))]TJ +/TT8 1 Tf +9 0 0 9 336.9048 335.03 Tm +0.0189 Tw +[( where )]TJ +/TT10 1 Tf +10 0 0 10 366.6662 335.03 Tm +0 Tw +(PROP)Tj +2.4004 -0.2 TD +(1)Tj +/TT8 1 Tf +9 0 0 9 396.67 335.03 Tm +0.0189 Tw +[( is acceptable as a font-property to)]TJ +/TT10 1 Tf +10 0 0 10 246 321.03 Tm +0 Tw +(FONTCOPY)Tj +/TT8 1 Tf +9 0 0 9 294.0078 321.03 Tm +0.7078 Tw +(, then the new font is obtained by )Tj +/TT10 1 Tf +10 0 0 10 479.9766 321.03 Tm +0 Tw +(\(FONTCOPY)Tj +-23.3977 -1.2 TD +0.0001 Tc +0.0019 Tw +(\(DSPFONT NIL STREAM\) PROP)Tj +/TT15 1 Tf +9 0 0 9 402.08 306.03 Tm +0 Tc +0 Tw +(1)Tj +/TT10 1 Tf +10 0 0 10 407.48 309.03 Tm +0.0005 Tc +0.0015 Tw +( VAL)Tj +/TT15 1 Tf +9 0 0 9 431.5 306.03 Tm +0 Tc +0 Tw +(1)Tj +/TT10 1 Tf +10 0 0 10 436.9 309.03 Tm +0.0004 Tc +0.0016 Tw +( PROP)Tj +/TT15 1 Tf +9 0 0 9 466.92 306.03 Tm +0 Tc +0 Tw +(2)Tj +/TT10 1 Tf +10 0 0 10 472.32 309.03 Tm +0.0005 Tc +0.0015 Tw +( VAL)Tj +/TT15 1 Tf +9 0 0 9 496.34 306.03 Tm +0 Tc +0 Tw +(2)Tj +/TT10 1 Tf +10 0 0 10 501.74 309.03 Tm +0.0004 Tc +0.0016 Tw +( ...\))Tj +/TT8 1 Tf +9 0 0 9 531.7649 309.03 Tm +0 Tc +0 Tw +(.)Tj +-31.7517 -1.6278 TD +0.1233 Tw +(For example, )Tj +/TT10 1 Tf +10 0 0 10 302.1848 294.38 Tm +0.295 Tw +(\(DSPFONT \(SIZE 12\) STREAM\))Tj +/TT8 1 Tf +9 0 0 9 473.0612 294.38 Tm +0.1233 Tw +[( would change)]TJ +-25.229 -1.3278 TD +0.0322 Tw +(the font to the 12 point version of the current font, leaving all other font)Tj +0 -1.2222 TD +0 Tw +(properties the same.)Tj +/TT10 1 Tf +10 0 0 10 150 249.15 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 249.15 Tm +(DSPTOPMARGIN)Tj +/F3 1 Tf +10 0 0 10 220.8 249.15 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.67 249.15 Tm +(YPOSITION STREAM)Tj +/TT10 1 Tf +10 0 0 10 310.084 249.15 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.085 249.15 Tm +[( )-19116.1([Function])]TJ +-15.7872 -1.8889 TD +0.0311 Tw +(The top margin is an integer that is the )Tj +/TT10 1 Tf +10 0 0 10 332.6313 232.15 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 338.6323 232.15 Tm +0.0311 Tw +[( position after a new page \(in the image streams)]TJ +-18.2925 -1.3278 TD +0 Tw +(coordinate system\). This function has no effect on windows.)Tj +/TT10 1 Tf +10 0 0 10 150 197.92 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 197.92 Tm +(DSPBOTTOMMARGIN)Tj +/F3 1 Tf +10 0 0 10 237 197.92 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 239.87 197.92 Tm +(YPOSITION STREAM)Tj +/TT10 1 Tf +10 0 0 10 326.2841 197.92 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 332.285 197.92 Tm +[( )-17316.1([Function])]TJ +-17.5872 -1.8889 TD +0.12 Tw +(The bottom margin is an integer that is the minimum )Tj +/TT10 1 Tf +10 0 0 10 398.2643 180.92 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 404.2653 180.92 Tm +0.12 Tw +[( position that characters will be)]TJ +-25.585 -1.3333 TD +0.0511 Tw +(printed by )Tj +/TT10 1 Tf +10 0 0 10 218.9708 168.92 Tm +0 Tw +(PRIN1)Tj +/TT8 1 Tf +9 0 0 9 248.9756 168.92 Tm +0.0511 Tw +[( \(in the image streams coordinate system\). This function has no effect)]TJ +-8.3306 -1.3278 TD +0 Tw +(on windows.)Tj +/TT10 1 Tf +10 0 0 10 150 134.69 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 134.69 Tm +(DSPLEFTMARGIN)Tj +/F3 1 Tf +10 0 0 10 226.2 134.69 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.07 134.69 Tm +(XPOSITION STREAM)Tj +/TT10 1 Tf +10 0 0 10 315.484 134.69 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 321.485 134.69 Tm +[( )-18516.1([Function])]TJ +-16.3872 -1.8889 TD +0.2122 Tw +(The left margin is an integer that is the )Tj +/TT10 1 Tf +10 0 0 10 346.9058 117.69 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 352.9068 117.69 Tm +0.2122 Tw +[( position after an end-of-line \(in the image)]TJ +-19.8785 -1.3278 TD +0 Tw +(streams coordinate system\). Initially the left edge of the clipping region.)Tj +/TT10 1 Tf +10 0 0 10 150 83.46 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 83.46 Tm +(DSPRIGHTMARGIN)Tj +/F3 1 Tf +10 0 0 10 231.6 83.46 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 234.47 83.46 Tm +(XPOSITION STREAM)Tj +/TT10 1 Tf +10 0 0 10 320.8841 83.46 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 326.885 83.46 Tm +[( )-17916.1([Function])]TJ +-16.9872 -1.8889 TD +0.1789 Tw +(The right margin is an integer that is the maximum )Tj +/TT10 1 Tf +10 0 0 10 395.5839 66.46 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 401.5849 66.46 Tm +0.1789 Tw +[( position that characters will be)]TJ +-25.2872 -1.3333 TD +0.0233 Tw +(printed by )Tj +/TT10 1 Tf +10 0 0 10 218.4708 54.46 Tm +0 Tw +(PRIN1)Tj +/TT8 1 Tf +9 0 0 9 248.4756 54.46 Tm +0.0233 Tw +[( \(in the image streams coordinate system\). This is initially the position)]TJ +-8.2751 -1.3278 TD +0 Tw +(of the right edge of the window or page.)Tj +ET +endstream +endobj +46 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +48 0 obj +<< +/Length 7101 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT8 1 Tf +9 0 0 9 78 569.49 Tm +0.0067 Tw +(The line length of a window or image stream \(as returned by )Tj +/TT10 1 Tf +10 0 0 10 322.6472 569.49 Tm +0 Tw +(LINELENGTH)Tj +/TT8 1 Tf +9 0 0 9 382.657 569.49 Tm +0.0067 Tw +(\) is computed by dividing)Tj +-33.8508 -1.3278 TD +0.0611 Tw +(the distance between the left and right margins by the width of an uppercase "A" in the current font.)Tj +0 -1.2222 TD +0.0789 Tw +(The line length is changed whenever the font, left margin, or right margin are changed or whenever)Tj +T* +0 Tw +(the window is reshaped.)Tj +/TT10 1 Tf +10 0 0 10 102 513.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 513.26 Tm +(DSPOPERATION)Tj +/F3 1 Tf +10 0 0 10 172.8 513.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.67 513.26 Tm +(OPERATION STREAM)Tj +/TT10 1 Tf +10 0 0 10 262.084 513.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 268.085 513.26 Tm +[( )-19116.1([Function])]TJ +-15.7872 -1.8889 TD +0.1422 Tw +(The operation is the default )Tj +/TT10 1 Tf +10 0 0 10 244.3155 496.26 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 280.3214 496.26 Tm +0.1422 Tw +[( operation used when printing or drawing on the)]TJ +-17.1468 -1.3333 TD +0.0644 Tw +[(image stream. One of )]TJ +/TT10 1 Tf +10 0 0 10 218.377 484.26 Tm +0.154 Tw +(REPLACE, PAINT, INVERT)Tj +/TT8 1 Tf +9 0 0 9 353.4785 484.26 Tm +0.0644 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 369.8568 484.26 Tm +0 Tw +(ERASE)Tj +/TT8 1 Tf +9 0 0 9 399.8616 484.26 Tm +0.0644 Tw +[(. Initially )]TJ +/TT10 1 Tf +10 0 0 10 441.7896 484.26 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 483.7965 484.26 Tm +(.)Tj +-39.7552 -1.3278 TD +0.0389 Tw +(This is a meaningless operation for most printers which support the model that once dots)Tj +0 -1.2222 TD +0 Tw +(are deposited on a page they cannot be removed.)Tj +/TT10 1 Tf +10 0 0 10 102 439.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 439.03 Tm +(DSPLINEFEED)Tj +/F3 1 Tf +10 0 0 10 167.4 439.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.27 439.03 Tm +(DELTAY STREAM)Tj +/TT10 1 Tf +10 0 0 10 240.4814 439.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.4824 439.03 Tm +[( )-21516.4([Function])]TJ +-13.3869 -2.0256 TD +0.2611 Tw +(The linefeed is an integer that specifies the )Tj +/F1 1 Tf +10 0 0 10 315.9011 420.8 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 322.7511 420.8 Tm +0.2611 Tw +[( increment for each linefeed, normally)]TJ +-21.8612 -1.2222 TD +0 Tw +(negative. Initially minus the height of the initial font.)Tj +/TT10 1 Tf +10 0 0 10 102 387.52 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 387.52 Tm +(DSPCLEOL)Tj +/F3 1 Tf +10 0 0 10 151.2 387.52 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 154.07 387.52 Tm +(DSPSTREAM XPOS YPOS HEIGHT)Tj +/TT10 1 Tf +10 0 0 10 294.4928 387.52 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 300.4938 387.52 Tm +[( )-15515.1([Function])]TJ +-19.3882 -1.8833 TD +0.2067 Tw +[("Clear to end of line". Clears a region from \()]TJ +/TT15 1 Tf +21.6355 0 TD +0 Tw +(XPOS,YPOS)Tj +/TT8 1 Tf +5.4009 0 TD +0.2067 Tw +(\) to the right margin of the)Tj +-27.0364 -1.2944 TD +0.0322 Tw +(display, with a height of )Tj +/TT15 1 Tf +11.1636 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0322 Tw +[(. If )]TJ +/TT15 1 Tf +1.7666 0 TD +0 Tw +(XPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0322 Tw +[( and )]TJ +/TT15 1 Tf +2.2573 0 TD +0 Tw +(YPOS)Tj +/TT8 1 Tf +2.4004 0 TD +0.0322 Tw +[( are )]TJ +/TT10 1 Tf +10 0 0 10 355.7456 358.92 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 373.7485 358.92 Tm +0.0322 Tw +(, clears the remainder of the)Tj +-27.5276 -1.3278 TD +0 Tw +(current display line, using the height of the current font.)Tj +/TT6 1 Tf +10 0 0 10 102 324.63 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 105.3301 324.63 Tm +(DSPRUBOUTCHAR)Tj +/TT6 1 Tf +10 0 0 10 175.53 324.63 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 178.3083 324.63 Tm +(DSPSTREAM CHAR X Y TTBL)Tj +/TT6 1 Tf +10 0 0 10 302.5285 324.63 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 444.63 324.63 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.0256 Tw +(Backs up over character code )Tj +/TT15 1 Tf +13.2459 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0256 Tw +[( in the )]TJ +/TT15 1 Tf +3.0869 0 TD +0 Tw +(DSPSTREAM)Tj +/TT8 1 Tf +5.4009 0 TD +0.0256 Tw +[(, erasing it. If )]TJ +/TT15 1 Tf +6.3919 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(, )Tj +/TT15 1 Tf +0.5256 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0256 Tw +[( are supplied, the)]TJ +-32.2518 -1.2889 TD +0.2533 Tw +(rubbing out starts from the position specified. )Tj +/TT13 1 Tf +22.784 0 TD +0 Tw +(DSPRUBOUTCHAR)Tj +/TT8 1 Tf +7.8013 0 TD +0.2533 Tw +[( assumes )]TJ +/TT15 1 Tf +4.743 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.2533 Tw +[( was)]TJ +-37.7286 -1.2889 TD +0.0522 Tw +(printed with the terminal table )Tj +/TT15 1 Tf +14.1132 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0522 Tw +(, so it knows to handle control characters, etc. )Tj +/TT15 1 Tf +21.0857 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +-37.5993 -1.2889 TD +(defaults to the primary terminal table.)Tj +/TT10 1 Tf +10 0 0 10 102 233.95 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 233.95 Tm +(DSPSCALE)Tj +/F3 1 Tf +10 0 0 10 151.2 233.95 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 154.07 233.95 Tm +(SCALE STREAM)Tj +/TT10 1 Tf +10 0 0 10 218.8805 233.95 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 224.8815 233.95 Tm +[( )-23916.5([Function])]TJ +-10.9868 -1.8833 TD +0.1144 Tw +(Returns the scale of the image stream )Tj +/TT15 1 Tf +17.535 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1144 Tw +(, a number indicating how many units in)Tj +-21.1356 -1.2889 TD +0.1333 Tw +[(the streams coordinate system correspond to one printers point \(1/72 of an inch\). For)]TJ +0 -1.2278 TD +0 Tw +(example, )Tj +/TT10 1 Tf +10 0 0 10 164.6512 194.35 Tm +(DSPSCALE)Tj +/TT8 1 Tf +9 0 0 9 212.659 194.35 Tm +0.0456 Tw +[( returns 1 for display streams, and 35.27778 for Interpress and Press)]TJ +-9.6288 -1.3278 TD +0.0022 Tw +(streams \(the number of micas per printers point\). In order to be device-independent, user)Tj +0 -1.2222 TD +0.1344 Tw +(graphics programs must either not specify position values absolutely, or must multiply)Tj +0 -1.2278 TD +0.01 Tw +(absolute point quantities by the )Tj +/TT10 1 Tf +10 0 0 10 254.2254 160.35 Tm +0 Tw +(DSPSCALE)Tj +/TT8 1 Tf +9 0 0 9 302.2332 160.35 Tm +0.01 Tw +[( of the destination stream. For example, to set)]TJ +-19.5815 -1.3333 TD +0 Tw +(the left margin of the Interpress stream )Tj +/TT10 1 Tf +10 0 0 10 283.3945 148.35 Tm +(XX)Tj +/TT8 1 Tf +9 0 0 9 295.3965 148.35 Tm +( to one inch, do)Tj +/TT10 1 Tf +10 0 0 10 174 129.35 Tm +(\(DSPLEFTMARGIN \(TIMES 72 \(DSPSCALE NIL XX\)\) XX\))Tj +/TT8 1 Tf +9 0 0 9 126 112.35 Tm +(The )Tj +/TT10 1 Tf +10 0 0 10 145.2044 112.35 Tm +(SCALE)Tj +/TT8 1 Tf +9 0 0 9 175.2093 112.35 Tm +0.21 Tw +[( argument to )]TJ +/TT10 1 Tf +10 0 0 10 234.3959 112.35 Tm +0 Tw +(DSPSCALE)Tj +/TT8 1 Tf +9 0 0 9 282.4037 112.35 Tm +0.21 Tw +[( is currently ignored. In a future release it will)]TJ +-17.3782 -1.3278 TD +0.1722 Tw +(enable the scale of the stream to be changed under user control, so that the necessary)Tj +0 -1.2222 TD +0.0067 Tw +[(multiplication will be done internal to the image stream interface. In this case, it would be)]TJ +0 -1.2278 TD +0 Tw +(possible to set the left margin of the Interpress stream )Tj +/TT10 1 Tf +10 0 0 10 341.5342 78.35 Tm +(XX)Tj +/TT8 1 Tf +9 0 0 9 353.5361 78.35 Tm +( to one inch by doing)Tj +/TT10 1 Tf +10 0 0 10 174 59.35 Tm +(\(DSPSCALE 1 XX\))Tj +0 -1 TD +(\(DSPLEFTMARGIN 72 XX\))Tj +ET +endstream +endobj +49 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +53 0 obj +<< +/Length 6784 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 568.26 Tm +(DSPSPACEFACTOR)Tj +/F3 1 Tf +10 0 0 10 231.6133 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 234.4833 568.26 Tm +(FACTOR STREAM)Tj +/TT10 1 Tf +10 0 0 10 304.6947 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 310.6957 568.26 Tm +[( )-19714.9([Function])]TJ +-15.1884 -1.8833 TD +0.1344 Tw +(The space factor is the amount by which to multiply the natural width of all following)Tj +0 -1.2222 TD +0.1722 Tw +(space characters on )Tj +/TT15 1 Tf +9.3311 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1722 Tw +[(; this can be used for the justification of text. The default)]TJ +-12.9317 -1.2889 TD +0.14 Tw +[(value is 1. For example, if the natural width of a space in )]TJ +/TT15 1 Tf +27.4112 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.14 Tw +(s current font is 12)Tj +-31.0118 -1.2889 TD +0.0222 Tw +[(units, and the space factor is set to two, spaces appear 24 units wide. The values returned)]TJ +0 -1.2278 TD +0 Tw +(by )Tj +/TT10 1 Tf +10 0 0 10 186.2343 506.06 Tm +(STRINGWIDTH)Tj +/TT8 1 Tf +9 0 0 9 252.2451 506.06 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 271.9809 506.06 Tm +(CHARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 325.9897 506.06 Tm +( are also affected.)Tj +-22.2211 -2.9944 TD +(The following two functions only have meaning for image streams that can display color:)Tj +/TT10 1 Tf +10 0 0 10 150 456.83 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 456.83 Tm +(DSPCOLOR)Tj +/F3 1 Tf +10 0 0 10 199.208 456.83 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 202.078 456.83 Tm +(COLOR STREAM)Tj +/TT10 1 Tf +10 0 0 10 266.8885 456.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.8895 456.83 Tm +[( )-23915.6([Function])]TJ +-10.9877 -1.8833 TD +0.09 Tw +(Sets the default foreground color of )Tj +/TT15 1 Tf +16.4707 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.09 Tw +[(. Returns the previous foreground color. If)]TJ +/TT15 1 Tf +-20.0712 -1.2944 TD +0 Tw +(COLOR)Tj +/TT8 1 Tf +3.0005 0 TD +0.1211 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 214.118 428.23 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 232.1209 428.23 Tm +0.1211 Tw +[(, it returns the current foreground color without changing anything. The)]TJ +-6.4579 -1.3278 TD +0 Tw +(default color is white)Tj +/TT10 1 Tf +10 0 0 10 150 394 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 394 Tm +(DSPBACKCOLOR)Tj +/F3 1 Tf +10 0 0 10 220.8115 394 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 394 Tm +(COLOR STREAM)Tj +/TT10 1 Tf +10 0 0 10 288.4921 394 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 294.493 394 Tm +[( )-21515.2([Function])]TJ +-13.3881 -1.8833 TD +0.0578 Tw +(Sets the background color of )Tj +/TT15 1 Tf +13.1268 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0578 Tw +[(. Returns the previous background color. If )]TJ +/TT15 1 Tf +20.2759 0 TD +0 Tw +(COLOR)Tj +/TT8 1 Tf +-37.0032 -1.2944 TD +(is )Tj +/TT10 1 Tf +10 0 0 10 183.4736 365.4 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 201.4765 365.4 Tm +0.0878 Tw +[(, it returns the current background color without changing anything. The default)]TJ +-3.0529 -1.3278 TD +0 Tw +(background color is black.)Tj +/TT4 1 Tf +10 0 0 10 102 311.11 Tm +(Current Position of an Image Stream)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 308.4 m +534.01 308.4 l +S +BT +/TT8 1 Tf +9 0 0 9 126 286.45 Tm +0.1744 Tw +(Each image stream has a "current position," which is a position \(in the image streams coordinate)Tj +0 -1.2222 TD +0.13 Tw +[(system\) where the next printing operation will start from. The functions which print characters or)]TJ +T* +0.1511 Tw +[(draw on an image stream update these values appropriately. The following functions are used to)]TJ +T* +0 Tw +(explicitly access the current position of an image stream:)Tj +/TT10 1 Tf +10 0 0 10 150 231.17 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 231.17 Tm +(DSPXPOSITION)Tj +/F3 1 Tf +10 0 0 10 220.8115 231.17 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 231.17 Tm +(XPOSITION STREAM)Tj +/TT10 1 Tf +10 0 0 10 310.0956 231.17 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.0966 231.17 Tm +[( )-19114.8([Function])]TJ +-15.7885 -1.8889 TD +0.0956 Tw +(Returns the )Tj +/TT10 1 Tf +10 0 0 10 223.9983 214.17 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 229.9993 214.17 Tm +0.0956 Tw +[( coordinate of the current position of )]TJ +/TT15 1 Tf +17.1147 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0956 Tw +[(. If )]TJ +/TT15 1 Tf +1.9566 0 TD +0 Tw +(XPOSITION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0956 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 513.6943 214.17 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 531.6973 214.17 Tm +(,)Tj +-39.7441 -1.3333 TD +(the )Tj +/TT10 1 Tf +10 0 0 10 188.7348 202.17 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 194.7358 202.17 Tm +( coordinate is set to it \(without changing the )Tj +/TT10 1 Tf +10 0 0 10 372.2573 202.17 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 378.2583 202.17 Tm +( coordinate\).)Tj +/TT10 1 Tf +10 0 0 10 150 178.94 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 178.94 Tm +(DSPYPOSITION)Tj +/F3 1 Tf +10 0 0 10 220.8115 178.94 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 178.94 Tm +(YPOSITION STREAM)Tj +/TT10 1 Tf +10 0 0 10 310.0956 178.94 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.0966 178.94 Tm +[( )-19114.8([Function])]TJ +-15.7885 -1.8889 TD +0.0956 Tw +(Returns the )Tj +/TT10 1 Tf +10 0 0 10 223.9983 161.94 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 229.9993 161.94 Tm +0.0956 Tw +[( coordinate of the current position of )]TJ +/TT15 1 Tf +17.1147 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0956 Tw +[(. If )]TJ +/TT15 1 Tf +1.9566 0 TD +0 Tw +(YPOSITION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0956 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 513.6943 161.94 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 531.6973 161.94 Tm +(,)Tj +-39.7441 -1.3333 TD +(the )Tj +/TT10 1 Tf +10 0 0 10 188.7348 149.94 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 194.7358 149.94 Tm +( coordinate is set to it \(without changing the )Tj +/TT10 1 Tf +10 0 0 10 372.2573 149.94 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 378.2583 149.94 Tm +( coordinate\).)Tj +/TT10 1 Tf +10 0 0 10 150 126.71 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 126.71 Tm +(MOVETO)Tj +/F3 1 Tf +10 0 0 10 188.4062 126.71 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.2762 126.71 Tm +(X Y STREAM)Tj +/TT10 1 Tf +10 0 0 10 245.285 126.71 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.286 126.71 Tm +[( )-26316([Function])]TJ +-8.5873 -1.8833 TD +(Changes the current position of )Tj +/TT15 1 Tf +14.1792 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( to the point \()Tj +/TT15 1 Tf +5.9385 0 TD +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +(\).)Tj +/TT10 1 Tf +10 0 0 10 150 86.88 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 86.88 Tm +(RELMOVETO)Tj +/F3 1 Tf +10 0 0 10 204.6089 86.88 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.4789 86.88 Tm +(DX DY STREAM)Tj +/TT10 1 Tf +10 0 0 10 272.2894 86.88 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 278.2904 86.88 Tm +[( )-23315.5([Function])]TJ +-11.5878 -1.8833 TD +0.0133 Tw +(Changes the current position to the point \()Tj +/TT15 1 Tf +18.8321 0 TD +0 Tw +(DX,DY)Tj +/TT8 1 Tf +3.0005 0 TD +0.0133 Tw +(\) coordinates away from current position)Tj +-21.8326 -1.2889 TD +0 Tw +(of )Tj +/TT15 1 Tf +1.1289 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +ET +endstream +endobj +54 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +56 0 obj +<< +/Length 8498 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-13)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(MOVETOUPPERLEFT)Tj +/F3 1 Tf +10 0 0 10 189.0142 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.8842 568.26 Tm +(STREAM REGION)Tj +/TT10 1 Tf +10 0 0 10 262.0956 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 268.0966 568.26 Tm +[( )-19114.8([Function])]TJ +-15.7885 -1.8833 TD +0.0644 Tw +[(Moves the current position to the beginning position of the top line of text. If )]TJ +/TT15 1 Tf +35.3763 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0644 Tw +[( is)]TJ +-38.9769 -1.2944 TD +0 Tw +(non-)Tj +/TT10 1 Tf +10 0 0 10 144.3867 539.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 162.3896 539.66 Tm +0.08 Tw +(, it must be a )Tj +/TT15 1 Tf +6.2853 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( and the )]TJ +/TT10 1 Tf +10 0 0 10 287.9929 539.66 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 293.9939 539.66 Tm +0.08 Tw +[( position is changed to the left edge of )]TJ +/TT15 1 Tf +17.7381 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +-36.4041 -1.3333 TD +0.2056 Tw +(and the )Tj +/TT10 1 Tf +10 0 0 10 161.9207 527.66 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 167.9217 527.66 Tm +0.2056 Tw +[( position changed to the top of )]TJ +/TT15 1 Tf +15.1611 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.2056 Tw +[( less the font ascent of )]TJ +/TT15 1 Tf +11.1591 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.2056 Tw +[(. If)]TJ +/TT15 1 Tf +-38.1793 -1.3333 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1922 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 172.7989 515.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 190.8018 515.66 Tm +0.1922 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 213.4966 515.66 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 219.4976 515.66 Tm +0.1922 Tw +[( coordinate is changed to the left margin of )]TJ +/TT15 1 Tf +20.9429 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1922 Tw +[( and the )]TJ +/TT10 1 Tf +10 0 0 10 480.0496 515.66 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 126 503.71 Tm +0.0878 Tw +(coordinate is changed to the top of the clipping region of )Tj +/TT15 1 Tf +26.2878 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0878 Tw +[( less the font ascent of)]TJ +/TT15 1 Tf +-29.8884 -1.2889 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 54 449.17 Tm +(Moving Bits Between Bitmaps With BITBLT)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 446.46 m +486.01 446.46 l +S +BT +/TT10 1 Tf +10 0 0 10 78 424.46 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 114.0059 424.46 Tm +0.0256 Tw +[( is the primitive function for moving bits from one bitmap to another, or from a bitmap to an)]TJ +-4.0007 -1.3278 TD +0 Tw +(image stream.)Tj +/TT10 1 Tf +10 0 0 10 102 390.23 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 390.23 Tm +(BITBLT)Tj +/F3 1 Tf +10 0 0 10 140.4063 390.23 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 146.7363 390.23 Tm +0.7244 Tw +(SOURCE SOURCELEFT SOURCEBOTTOM DESTINATION DESTINATIONLEFT)Tj +-4.304 -1.0389 TD +1.32 Tw +(DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE)Tj +0 -1.0722 TD +0 Tw +(CLIPPINGREGION)Tj +/TT10 1 Tf +10 0 0 10 183.6123 371.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 189.6133 371.23 Tm +0.55 Tw +[( )-26735.2([Function])]TJ +-7.0681 -1.8833 TD +0.0822 Tw +(Transfers a rectangular array of bits from )Tj +/TT15 1 Tf +19.0175 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +[( to )]TJ +/TT15 1 Tf +1.5365 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0822 Tw +[(. )]TJ +/TT15 1 Tf +1.5789 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +[( can be a)]TJ +-35.9351 -1.2889 TD +0.2289 Tw +(bitmap, or a display stream or window, in which case its associated bitmap is used.)Tj +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +( can be a bitmap or an arbitrary image stream.)Tj +/TT15 1 Tf +-6.6011 -2.0667 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.3922 Tw +[( and )]TJ +/TT15 1 Tf +2.9773 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.3922 Tw +[( define a pair of rectangles, one in each of the )]TJ +/TT15 1 Tf +24.4824 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +0.3922 Tw +[( and)]TJ +/TT15 1 Tf +-37.6614 -1.2889 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.6811 Tw +[( whose left, bottom corners are at, respectively, \()]TJ +/TT15 1 Tf +26.8009 0 TD +0 Tw +(SOURCELEFT,)Tj +-33.402 -1.2889 TD +(SOURCEBOTTOM)Tj +/TT8 1 Tf +7.2012 0 TD +0.0622 Tw +(\) and \()Tj +/TT15 1 Tf +2.9833 0 TD +0.1489 Tw +(DESTINATIONLEFT, DESTINATIONBOTTOM)Tj +/TT8 1 Tf +20.5522 0 TD +0.0622 Tw +[(\). If these rectangles)]TJ +-30.7367 -1.2889 TD +0.2511 Tw +(overlap the boundaries of either source or destination they are both reduced in size)Tj +0 -1.2222 TD +0.6678 Tw +[(\(without translation\) so that they fit within their respective boundaries. If)]TJ +/TT15 1 Tf +0 -1.2278 TD +0 Tw +(CLIPPINGREGION)Tj +/TT8 1 Tf +8.4014 0 TD +0.1789 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 234.1526 256.23 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 252.1555 256.23 Tm +0.1789 Tw +[( it should be a )]TJ +/TT15 1 Tf +7.3505 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1789 Tw +[( and is interpreted as a clipping)]TJ +-24.9684 -1.3278 TD +0.2244 Tw +(region within )Tj +/TT15 1 Tf +6.7043 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.2244 Tw +(; clipping to this region may further reduce the defining)Tj +-13.3053 -1.2889 TD +0.4033 Tw +[(rectangles. These \(possibly reduced\) rectangles define the source and destination)]TJ +0 -1.2278 TD +0 Tw +(rectangles for )Tj +/TT10 1 Tf +10 0 0 10 182.25 221.63 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 218.2558 221.63 Tm +(. )Tj +-10.2507 -2.1056 TD +0.5078 Tw +(The mode of )Tj +/TT15 1 Tf +7.3446 0 TD +0 Tw +(transferring)Tj +/TT8 1 Tf +7.2012 0 TD +0.5078 Tw +[( bits is defined by )]TJ +/TT15 1 Tf +10.5931 0 TD +0 Tw +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.5078 Tw +[( and )]TJ +/TT15 1 Tf +3.2084 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT15 1 Tf +-39.7492 -1.2889 TD +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.0278 Tw +[( and )]TJ +/TT15 1 Tf +2.2484 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0278 Tw +[( specify whether the source bits should come from )]TJ +/TT15 1 Tf +22.7422 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +-36.3925 -1.2889 TD +(or )Tj +/TT15 1 Tf +1.7765 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.5856 Tw +(, and how these bits are combined with those of )Tj +/TT15 1 Tf +27.1764 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT15 1 Tf +-39.7546 -1.2889 TD +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +( and )Tj +/TT15 1 Tf +2.1929 0 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +( are described further below.)Tj +/TT15 1 Tf +-13.5947 -2.0722 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.2222 Tw +[( is a texture. )]TJ +/TT10 1 Tf +10 0 0 10 226.3603 149.23 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 262.3662 149.23 Tm +0.2222 Tw +[( aligns the texture so that the upper-left pixel of the)]TJ +-15.1518 -1.3278 TD +0 Tw +(texture coincides with the upper-left pixel of the destination bitmap.)Tj +/TT15 1 Tf +0 -2 TD +0.9733 Tw +(SOURCELEFT, SOURCEBOTTOM, DESTINATIONLEFT)Tj +/TT8 1 Tf +26.5507 0 TD +0.4056 Tw +(, and )Tj +/TT15 1 Tf +3.254 0 TD +0 Tw +(DESTINATIONBOTTOM)Tj +/TT8 1 Tf +-29.8047 -1.2889 TD +0.3011 Tw +(default to 0. )Tj +/TT15 1 Tf +6.9696 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.3011 Tw +[( and )]TJ +/TT15 1 Tf +2.7951 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.3011 Tw +[( default to the width and height of the )]TJ +/TT15 1 Tf +19.7818 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT15 1 Tf +-39.7481 -1.2944 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.1444 Tw +[( defaults to white. )]TJ +/TT15 1 Tf +9.1734 0 TD +0 Tw +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.1444 Tw +[( defaults to )]TJ +/TT10 1 Tf +10 0 0 10 350.9762 96.03 Tm +0 Tw +(INPUT)Tj +/TT8 1 Tf +9 0 0 9 380.981 96.03 Tm +0.1444 Tw +(. )Tj +/TT15 1 Tf +1.0389 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.1444 Tw +[( defaults to)]TJ +/TT10 1 Tf +10 0 0 10 126 84.03 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 168.0068 84.03 Tm +0.3844 Tw +[(. If )]TJ +/TT15 1 Tf +2.8233 0 TD +0 Tw +(CLIPPINGREGION)Tj +/TT8 1 Tf +8.4014 0 TD +0.3844 Tw +[( is not provided, no additional clipping is done.)]TJ +/TT10 1 Tf +10 0 0 10 126 72.03 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 162.0058 72.03 Tm +( returns )Tj +/TT10 1 Tf +10 0 0 10 195.3428 72.03 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 201.3437 72.03 Tm +( if any bits were moved; )Tj +/TT10 1 Tf +10 0 0 10 299.2363 72.03 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 317.2392 72.03 Tm +( otherwise.)Tj +-21.2488 -2.1056 TD +0.3644 Tw +[(Note: If )]TJ +/TT15 1 Tf +4.9454 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +0.3644 Tw +[( or )]TJ +/TT15 1 Tf +2.1698 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.3644 Tw +[( is a window or image stream, the remaining)]TJ +-17.3168 -1.2889 TD +0.1689 Tw +(arguments are interpreted as values in the coordinate system of the window or image)Tj +ET +endstream +endobj +57 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +59 0 obj +<< +/Length 5459 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.1589 Tw +(stream and the operation of )Tj +/TT10 1 Tf +10 0 0 10 293.4874 569.49 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 329.4933 569.49 Tm +0.1589 Tw +[( is translated and clipped accordingly. Also, if a)]TJ +-17.277 -1.3333 TD +0.0189 Tw +(window or image stream is used as the destination to )Tj +/TT10 1 Tf +10 0 0 10 390.1443 557.49 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 426.1502 557.49 Tm +0.0189 Tw +(, its clipping region further)Tj +-28.0167 -1.3278 TD +0 Tw +(limits the region involved.)Tj +/TT15 1 Tf +0 -2 TD +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.0656 Tw +[( specifies whether the source bits should come from the bitmap )]TJ +/TT15 1 Tf +28.8925 0 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +(, or)Tj +-38.4941 -1.2889 TD +0 Tw +(from the texture )Tj +/TT15 1 Tf +7.4185 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +(. )Tj +/TT15 1 Tf +0.75 0 TD +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +( is interpreted as follows:)Tj +/TT10 1 Tf +10 0 0 10 180 497.29 Tm +(INPUT)Tj +/TT8 1 Tf +9 0 0 9 222 497.29 Tm +(The source bits come from )Tj +/TT15 1 Tf +11.917 0 TD +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +(. )Tj +/TT15 1 Tf +0.75 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +( is ignored.)Tj +/TT10 1 Tf +10 0 0 10 174 478.29 Tm +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 222 478.29 Tm +(The source bits are the inverse of the bits from )Tj +/TT15 1 Tf +20.6519 0 TD +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +(. )Tj +/TT15 1 Tf +0.75 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +( is ignored.)Tj +/TT10 1 Tf +10 0 0 10 168 459.29 Tm +(TEXTURE)Tj +/TT8 1 Tf +9 0 0 9 222 459.29 Tm +0.2844 Tw +(The source bits come from )Tj +/TT15 1 Tf +13.3392 0 TD +0.6822 Tw +[(TEXTURE. SOURCE, SOURCELEFT)]TJ +/TT8 1 Tf +18.8494 0 TD +0.2845 Tw +(, and)Tj +/TT15 1 Tf +-32.1886 -1.3278 TD +0 Tw +(SOURCEBOTTOM)Tj +/TT8 1 Tf +7.2012 0 TD +( are ignored.)Tj +/TT15 1 Tf +-7.2012 -2.0667 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.1133 Tw +[( specifies how the source bits \(as specified by )]TJ +/TT15 1 Tf +21.1885 0 TD +0 Tw +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.1133 Tw +(\) are)Tj +-32.5903 -1.2889 TD +0.0167 Tw +(combined with the bits in )Tj +/TT15 1 Tf +11.6097 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0167 Tw +[( and stored back into )]TJ +/TT15 1 Tf +9.6053 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT15 1 Tf +-34.4172 -1.2889 TD +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +( is one of the following:)Tj +/TT10 1 Tf +10 0 0 10 168 386.89 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 222 386.89 Tm +(All source bits \(on or off\) replace destination bits.)Tj +/TT10 1 Tf +10 0 0 10 180 367.89 Tm +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 222 367.89 Tm +0.0167 Tw +[(Any source bits that are on replace the corresponding destination bits. Source)]TJ +0 -1.3333 TD +0.0367 Tw +[(bits that are off have no effect. Does a logical )]TJ +/TT10 1 Tf +10 0 0 10 407.4669 355.89 Tm +0 Tw +(OR)Tj +/TT8 1 Tf +9 0 0 9 419.4688 355.89 Tm +0.0367 Tw +[( between the source bits and)]TJ +-21.941 -1.3278 TD +0 Tw +(the destination bits.)Tj +/TT10 1 Tf +10 0 0 10 174 325.89 Tm +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 222 325.89 Tm +0.06 Tw +[(Any source bits that are on invert the corresponding destination bits. Does a)]TJ +0 -1.3333 TD +0 Tw +(logical )Tj +/TT10 1 Tf +10 0 0 10 250.5205 313.89 Tm +(XOR)Tj +/TT8 1 Tf +9 0 0 9 268.5234 313.89 Tm +( between the source bits and the destination bits.)Tj +/TT10 1 Tf +10 0 0 10 180 294.89 Tm +(ERASE)Tj +/TT8 1 Tf +9 0 0 9 222 294.89 Tm +0.0878 Tw +[(Any source bits that are on erase the corresponding destination bits. Does a)]TJ +T* +0 Tw +(logical )Tj +/TT10 1 Tf +10 0 0 10 254.2605 282.89 Tm +(AND)Tj +/TT8 1 Tf +9 0 0 9 272.2634 282.89 Tm +0.4156 Tw +[( operation between the inverse of the source bits and the)]TJ +-5.5848 -1.3278 TD +0 Tw +(destination bits.)Tj +0 -2 TD +0.1222 Tw +(Different combinations of )Tj +/TT15 1 Tf +11.9555 0 TD +0 Tw +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.1222 Tw +[( and )]TJ +/TT15 1 Tf +2.4373 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.1222 Tw +[( can be specified to)]TJ +-25.7947 -1.2889 TD +0.0778 Tw +[(achieve many different effects. Given the following bitmaps as the values of)]TJ +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(SOURCE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT15 1 Tf +0.5 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +(, and )Tj +/TT15 1 Tf +2.4429 0 TD +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +(:)Tj +ET +q +30 0 0 -35 222.01 208.19 cm +/Im4 Do +Q +BT +/TT4 1 Tf +10 0 0 10 252 173.19 Tm +( )Tj +ET +q +29.5 0 0 -35 293.71 208.19 cm +/Im5 Do +Q +BT +10 0 0 10 323.2 173.19 Tm +( )Tj +ET +q +40 0 0 -45 364.91 218.19 cm +/Im6 Do +Q +BT +/TT10 1 Tf +10 0 0 10 222 155.48 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 258.0058 155.48 Tm +0.5844 Tw +[( would produce the results given below for the difference)]TJ +-4.0007 -1.3278 TD +1.7756 Tw +(combinations of )Tj +/TT15 1 Tf +10.8978 0 TD +0 Tw +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +1.7756 Tw +[( and )]TJ +/TT15 1 Tf +5.744 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +1.7756 Tw +[( \(assuming)]TJ +/TT15 1 Tf +-28.0436 -1.2889 TD +0 Tw +(CLIPPINGREGION)Tj +/TT8 1 Tf +8.4014 0 TD +(, )Tj +/TT15 1 Tf +0.5 0 TD +(SOURCELEFT)Tj +/TT8 1 Tf +6.001 0 TD +(, etc. are set correctly, of course\):)Tj +ET +q +40 0 0 -51 199.46 121.78 cm +/Im7 Do +Q +BT +/TT4 1 Tf +10 0 0 10 239.45 70.78 Tm +( )Tj +ET +q +40 0 0 -51 281.16 121.78 cm +/Im8 Do +Q +BT +10 0 0 10 321.15 70.78 Tm +( )Tj +ET +q +40 0 0 -51 362.86 121.78 cm +/Im9 Do +Q +BT +10 0 0 10 402.85 70.78 Tm +( )Tj +ET +q +40 0 0 -51 444.56 121.78 cm +/Im10 Do +Q +endstream +endobj +60 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT15 13 0 R +>> +/XObject << +/Im4 61 0 R +/Im5 62 0 R +/Im6 63 0 R +/Im7 64 0 R +/Im8 65 0 R +/Im9 66 0 R +/Im10 67 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +69 0 obj +<< +/Length 7871 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-15)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +ET +q +40 0 0 -51 151.46 575.99 cm +/Im11 Do +Q +BT +/TT4 1 Tf +10 0 0 10 191.45 524.99 Tm +( )Tj +ET +q +40 0 0 -51 233.16 575.99 cm +/Im12 Do +Q +BT +10 0 0 10 273.15 524.99 Tm +( )Tj +ET +q +40 0 0 -51 314.86 575.99 cm +/Im13 Do +Q +BT +10 0 0 10 354.85 524.99 Tm +( )Tj +ET +q +40 0 0 -51 396.56 575.99 cm +/Im14 Do +Q +q +40 0 0 -51 151.46 517.78 cm +/Im15 Do +Q +BT +10 0 0 10 191.45 466.78 Tm +( )Tj +ET +q +40 0 0 -51 233.16 517.78 cm +/Im16 Do +Q +BT +10 0 0 10 273.15 466.78 Tm +( )Tj +ET +q +40 0 0 -51 314.86 517.78 cm +/Im17 Do +Q +BT +10 0 0 10 354.85 466.78 Tm +( )Tj +ET +q +40 0 0 -51 396.56 517.78 cm +/Im18 Do +Q +BT +/TT10 1 Tf +10 0 0 10 102 446.84 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 446.84 Tm +(BLTSHADE)Tj +/F3 1 Tf +10 0 0 10 151.208 446.84 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 155.638 446.84 Tm +0.3267 Tw +(TEXTURE DESTINATION DESTINATIONLEFT DESTINATIONBOTTOM WIDTH)Tj +-5.2931 -1.1111 TD +(HEIGHT OPERATION CLIPPINGREGION)Tj +/TT10 1 Tf +10 0 0 10 275.4 436.84 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 281.4009 436.84 Tm +0.1367 Tw +[( )-17363.2([Function])]TJ +/TT10 1 Tf +10 0 0 10 126 419.84 Tm +0 Tw +(BLTSHADE)Tj +/TT8 1 Tf +9 0 0 9 174.0078 419.84 Tm +0.0067 Tw +[( is the )]TJ +/TT15 1 Tf +2.8721 0 TD +0.0144 Tw +(SOURCETYPE = TEXTURE)Tj +/TT8 1 Tf +12.0308 0 TD +0.0067 Tw +[( case of )]TJ +/TT10 1 Tf +10 0 0 10 339.5941 419.84 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 375.6 419.84 Tm +0.0067 Tw +[(. It fills the specified region)]TJ +-27.7333 -1.3278 TD +0.1044 Tw +(of the destination bitmap )Tj +/TT15 1 Tf +11.7962 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.1044 Tw +[( with the texture )]TJ +/TT15 1 Tf +7.9627 0 TD +0 Tw +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.1044 Tw +(. )Tj +/TT15 1 Tf +0.9589 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.1044 Tw +[( can)]TJ +-38.1206 -1.2889 TD +0 Tw +(be a bitmap or image stream.)Tj +/TT10 1 Tf +10 0 0 10 102 374.01 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 374.01 Tm +(BITMAPIMAGESIZE)Tj +/F3 1 Tf +10 0 0 10 189.0142 374.01 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.8842 374.01 Tm +(BITMAP DIMENSION STREAM)Tj +/TT10 1 Tf +10 0 0 10 316.1044 374.01 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 322.1053 374.01 Tm +[( )-13113.9([Function])]TJ +-21.7895 -1.8889 TD +0.1678 Tw +(Returns the size that )Tj +/TT15 1 Tf +9.9636 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +[( will be when )]TJ +/TT10 1 Tf +10 0 0 10 310.0644 357.01 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 346.0702 357.01 Tm +0.1678 Tw +(ed to )Tj +/TT15 1 Tf +2.7975 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +(, in )Tj +/TT15 1 Tf +1.9586 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +(s units.)Tj +/TT15 1 Tf +-36.4095 -1.3333 TD +0 Tw +(DIMENSION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0433 Tw +[( can be one of )]TJ +/TT15 1 Tf +6.5106 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT15 1 Tf +0.5433 0 TD +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0433 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 313.5013 345.01 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 331.5043 345.01 Tm +0.0433 Tw +(, in which case the dotted pair \()Tj +/TT15 1 Tf +14.1622 0 TD +0 Tw +(WIDTH)Tj +-36.996 -1.3278 TD +(. HEIGHT)Tj +/TT8 1 Tf +4.8008 0 TD +(\) will be returned.)Tj +/TT4 1 Tf +10 0 0 10 54 290.12 Tm +(Drawing Lines)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 287.41 m +486.01 287.41 l +S +BT +/TT8 1 Tf +9 0 0 9 78 265.46 Tm +0.2333 Tw +[(Interlisp-D provides several functions for drawing lines and curves on image streams. The line)]TJ +0 -1.2222 TD +0.13 Tw +[(drawing functions are intended for interactive applications where efficiency is important. They do)]TJ +T* +0.0467 Tw +(not allow the use of "brush" patterns, like the curve drawing functions, but \(for display streams\) they)Tj +0 -1.2278 TD +0.0956 Tw +(support drawing a line in )Tj +/TT10 1 Tf +10 0 0 10 186.0813 232.41 Tm +0 Tw +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 222.0871 232.41 Tm +0.0956 Tw +[( mode, so redrawing the line will erase it. )]TJ +/TT10 1 Tf +10 0 0 10 399.5514 232.41 Tm +0 Tw +(DRAWCURVE)Tj +/TT8 1 Tf +9 0 0 9 453.5602 232.41 Tm +0.0956 Tw +[( can be)]TJ +-41.7289 -1.3278 TD +0 Tw +(used to draw lines using a brush.)Tj +/TT10 1 Tf +10 0 0 10 102 198.18 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 198.18 Tm +(DRAWLINE)Tj +/F3 1 Tf +10 0 0 10 151.208 198.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 154.078 198.18 Tm +(X)Tj +0.5991 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 164.87 198.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 167.65 198.18 Tm +(Y)Tj +0.6 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 178.45 198.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 181.23 198.18 Tm +(X)Tj +0.6 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 192.03 198.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 194.81 198.18 Tm +(Y)Tj +0.6 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 205.61 198.18 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 208.39 198.18 Tm +(WIDTH OPERATION STREAM COLOR DASHING)Tj +/TT10 1 Tf +10 0 0 10 402.8216 198.18 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 408.8226 198.18 Tm +[( )-3478.6([Function])]TJ +-31.4247 -2.32 TD +0.1533 Tw +(Draws a straight line from the point \()Tj +/TT15 1 Tf +17.5167 0 TD +0 Tw +(X)Tj +0.6022 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 294.47 177.3 Tm +(,)Tj +/TT15 1 Tf +9 0 0 9 297.25 177.3 Tm +(Y)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1533 Tw +(\) to the point \()Tj +/TT15 1 Tf +6.8848 0 TD +0 Tw +(X)Tj +0.5985 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 380.8 177.3 Tm +(,)Tj +/TT15 1 Tf +9 0 0 9 383.58 177.3 Tm +(Y)Tj +0.6 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1533 Tw +(\) on the image stream)Tj +/TT15 1 Tf +-29.82 -1.7644 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +[(. The position of )]TJ +/TT15 1 Tf +8.0708 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0822 Tw +[( is set to \()]TJ +/TT15 1 Tf +4.4778 0 TD +0 Tw +(X)Tj +0.5991 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 314.54 161.42 Tm +(,)Tj +/TT15 1 Tf +9 0 0 9 317.32 161.42 Tm +(Y)Tj +0.6 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0822 Tw +[(\). If )]TJ +/TT15 1 Tf +2.2496 0 TD +0 Tw +(X)Tj +0.6004 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0822 Tw +[( equals )]TJ +/TT15 1 Tf +3.5214 0 TD +0 Tw +(X)Tj +0.6008 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0822 Tw +[( and )]TJ +/TT15 1 Tf +2.3573 0 TD +0 Tw +(Y)Tj +0.6005 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0822 Tw +[( equals )]TJ +/TT15 1 Tf +3.5214 0 TD +0 Tw +(Y)Tj +0.6008 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0822 Tw +(, a)Tj +-38.91 -1.7644 TD +0 Tw +(point is drawn at \()Tj +/TT15 1 Tf +8.1421 0 TD +(X)Tj +0.6012 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 210.09 145.54 Tm +(,)Tj +/TT15 1 Tf +9 0 0 9 212.87 145.54 Tm +(Y)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\).)Tj +/TT15 1 Tf +-10.8522 -2.4056 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +( is the width of the line, in the units of the device. If )Tj +/TT15 1 Tf +23.1963 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 399.709 123.89 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 417.7119 123.89 Tm +(, the default is 1.)Tj +/TT15 1 Tf +-32.4124 -2.1111 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0967 Tw +[( is the )]TJ +/TT10 1 Tf +10 0 0 10 202.8864 104.89 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 238.8922 104.89 Tm +0.0967 Tw +[( operation used to draw the line. If )]TJ +/TT15 1 Tf +16.6649 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0967 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 450.158 104.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 468.1609 104.89 Tm +0.0967 Tw +(, the)Tj +-38.0179 -1.3333 TD +0 Tw +(value of )Tj +/TT10 1 Tf +10 0 0 10 160.352 92.89 Tm +(DSPOPERATION)Tj +/TT8 1 Tf +9 0 0 9 232.3637 92.89 Tm +( for the image stream is used.)Tj +/TT15 1 Tf +-11.8182 -2.1056 TD +(COLOR)Tj +/TT8 1 Tf +3.0005 0 TD +0.1078 Tw +[( is a color specification that determines the color used to draw the line for image)]TJ +-3.0005 -1.2944 TD +0 Tw +(streams that support color. If )Tj +/TT15 1 Tf +13.3027 0 TD +(COLOR)Tj +/TT8 1 Tf +3.0005 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 283.6626 62.29 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 301.6655 62.29 Tm +(, the )Tj +/TT15 1 Tf +2.1372 0 TD +(DSPCOLOR)Tj +/TT8 1 Tf +4.8008 0 TD +( of )Tj +/TT15 1 Tf +1.3789 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( is used.)Tj +ET +endstream +endobj +70 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/XObject << +/Im11 71 0 R +/Im12 72 0 R +/Im13 73 0 R +/Im14 74 0 R +/Im15 75 0 R +/Im16 76 0 R +/Im17 77 0 R +/Im18 78 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +80 0 obj +<< +/Length 7158 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT15 1 Tf +9 0 0 9 174 569.54 Tm +(DASHING)Tj +/TT8 1 Tf +4.2007 0 TD +0.1478 Tw +[( is a list of positive integers that determines the dashing characteristics of the)]TJ +-4.2007 -1.2889 TD +0.1711 Tw +[(line. The line is drawn for the number of points indicated by the first element of the)]TJ +0 -1.2222 TD +0.0511 Tw +[(dashing list, is not drawn for the number of points indicated by the second element. The)]TJ +T* +0.0533 Tw +[(third element indicates how long it will be on again, and so forth. The dashing sequence)]TJ +0 -1.2278 TD +0.0867 Tw +(is repeated from the beginning when the list is exhausted. A brush )Tj +/TT10 1 Tf +10 0 0 10 449.9191 524.89 Tm +0 Tw +(LINEWITHBRUSH-)Tj +/TT8 1 Tf +9 0 0 9 174 512.89 Tm +(by)Tj +/TT10 1 Tf +10 0 0 10 183.9843 512.89 Tm +(-LINEWITHBRUSH)Tj +/TT8 1 Tf +9 0 0 9 267.998 512.89 Tm +( is used.)Tj +-10.4442 -2.1111 TD +( If )Tj +/TT15 1 Tf +1.1699 0 TD +(DASHING)Tj +/TT8 1 Tf +4.2007 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 233.269 493.89 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 251.272 493.89 Tm +(, the line is not dashed.)Tj +/TT10 1 Tf +10 0 0 10 150 470.66 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 470.66 Tm +(DRAWBETWEEN)Tj +/F3 1 Tf +10 0 0 10 215.4106 470.66 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 218.2806 470.66 Tm +(POSITION)Tj +4.7988 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 266.87 470.66 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 269.65 470.66 Tm +(POSITION)Tj +4.8 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 318.25 470.66 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 321.03 470.66 Tm +(WIDTH OPERATION STREAM COLOR DASHING)Tj +/TT10 1 Tf +10 0 0 10 515.4617 470.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 521.4626 470.66 Tm +( )Tj +-40.607 -1.4 TD +([Function])Tj +2 -1.7778 TD +0.1567 Tw +(Draws a line from the point )Tj +/TT15 1 Tf +13.4 0 TD +0 Tw +(POSITION)Tj +4.8023 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1567 Tw +[( to the point )]TJ +/TT15 1 Tf +6.2321 0 TD +0 Tw +(POSITION)Tj +4.7979 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.1567 Tw +[( onto the destination)]TJ +-30.4322 -1.6222 TD +0 Tw +(bitmap of )Tj +/TT15 1 Tf +4.5332 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(. The position of )Tj +/TT15 1 Tf +7.6597 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( is set to )Tj +/TT15 1 Tf +3.8159 0 TD +(POSITION)Tj +4.7989 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(.)Tj +-28.6089 -2.4 TD +0.0589 Tw +(In the Medley release, when using the color argument, Interpress )Tj +/TT13 1 Tf +29.6144 0 TD +0 Tw +(DRAWLINE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0589 Tw +[( treats 16x16)]TJ +-34.4152 -1.2889 TD +0.1089 Tw +[(bitmaps or negative numbers as shades/textures. Positive numbers continue to refer to)]TJ +0 -1.2222 TD +0.0033 Tw +(color maps, and so cannot be used as textures. To convert an integer shade into a negative)Tj +0 -1.2278 TD +0 Tw +(number use )Tj +/TT10 1 Tf +10 0 0 10 223.5088 372.21 Tm +(NEGSHADE)Tj +/TT8 1 Tf +9 0 0 9 271.5166 372.21 Tm +( \(e.g. \()Tj +/TT10 1 Tf +10 0 0 10 295.8271 372.21 Tm +(NEGSHADE 42495)Tj +/TT8 1 Tf +9 0 0 9 379.8408 372.21 Tm +(\) is )Tj +/TT10 1 Tf +10 0 0 10 393.7715 372.21 Tm +(-23041)Tj +/TT8 1 Tf +9 0 0 9 429.7773 372.21 Tm +(\).)Tj +/TT10 1 Tf +10 0 0 10 150 330.98 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 330.98 Tm +(DRAWTO)Tj +/F3 1 Tf +10 0 0 10 188.4062 330.98 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.2762 330.98 Tm +(X Y WIDTH OPERATION STREAM COLOR DASHING)Tj +/TT10 1 Tf +10 0 0 10 407.3114 330.98 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 413.3124 330.98 Tm +[( )-8313.1([Function])]TJ +-26.5903 -1.8833 TD +0.09 Tw +(Draws a line from the current position to the point \()Tj +/TT15 1 Tf +23.7833 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.09 Tw +(\) onto the destination bitmap of)Tj +/TT15 1 Tf +-25.5836 -1.2889 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(. The position of )Tj +/TT15 1 Tf +7.6597 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( is set to \()Tj +/TT15 1 Tf +4.1489 0 TD +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +(\).)Tj +/TT10 1 Tf +10 0 0 10 150 279.55 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 279.55 Tm +(RELDRAWTO)Tj +/F3 1 Tf +10 0 0 10 204.6089 279.55 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.4789 279.55 Tm +(DX DY WIDTH OPERATION STREAM COLOR DASHING)Tj +/TT10 1 Tf +10 0 0 10 434.3158 279.55 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 440.3168 279.55 Tm +[( )-5312.6([Function])]TJ +-29.5908 -1.8833 TD +0.1333 Tw +(Draws a line from the current position to the point \()Tj +/TT15 1 Tf +24.2166 0 TD +0 Tw +(DX,DY)Tj +/TT8 1 Tf +3.0005 0 TD +0.1333 Tw +(\) coordinates away onto the)Tj +-27.2171 -1.2889 TD +0.0389 Tw +(destination bitmap of )Tj +/TT15 1 Tf +9.8579 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0389 Tw +[(. The position of )]TJ +/TT15 1 Tf +7.8541 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0389 Tw +[( is set to the end of the line. If )]TJ +/TT15 1 Tf +13.8819 0 TD +0 Tw +(DX)Tj +/TT8 1 Tf +-38.795 -1.2889 TD +(and )Tj +/TT15 1 Tf +1.9429 0 TD +(DY)Tj +/TT8 1 Tf +1.2002 0 TD +( are both 0, nothing is drawn.)Tj +/TT4 1 Tf +10 0 0 10 102 196.46 Tm +(Drawing Curves)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 193.75 m +534.01 193.75 l +S +BT +/TT8 1 Tf +9 0 0 9 126 171.8 Tm +0.1133 Tw +[(A curve is drawn by placing a brush pattern centered at each point along the curves trajectory. A)]TJ +0 -1.2278 TD +0.2067 Tw +[(brush pattern is defined by its shape, size, and color. The predefined brush shapes are )]TJ +/TT10 1 Tf +10 0 0 10 501.6975 160.75 Tm +0 Tw +(ROUND)Tj +/TT8 1 Tf +9 0 0 9 531.7024 160.75 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 126 148.75 Tm +(SQUARE)Tj +/TT8 1 Tf +9 0 0 9 162.0058 148.75 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 167.4058 148.75 Tm +(HORIZONTAL)Tj +/TT8 1 Tf +9 0 0 9 227.4156 148.75 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 232.8156 148.75 Tm +(VERTICAL)Tj +/TT8 1 Tf +9 0 0 9 280.8234 148.75 Tm +0.1 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 304.6093 148.75 Tm +0 Tw +(DIAGONAL)Tj +/TT8 1 Tf +9 0 0 9 352.6171 148.75 Tm +0.1 Tw +(; new brush shapes can be created using the)Tj +/TT10 1 Tf +10 0 0 10 126 136.75 Tm +0 Tw +(INSTALLBRUSH)Tj +/TT8 1 Tf +9 0 0 9 198.0117 136.75 Tm +0.1067 Tw +[( function, described below. A brush size is an integer specifying the width of the)]TJ +-8.0013 -1.3278 TD +0.0833 Tw +[(brush in the units of the device. The color is a color specification, which is only used if the curve is)]TJ +0 -1.2222 TD +0 Tw +(drawn to an image stream that supports colors.)Tj +0 -2.8944 TD +0.0322 Tw +(A brush is specified to the various drawing functions as a list of the form \()Tj +/TT10 1 Tf +10 0 0 10 425.0736 87.75 Tm +0.078 Tw +(SHAPE WIDTH COLOR)Tj +/TT8 1 Tf +9 0 0 9 528.6502 87.75 Tm +0 Tw +(\),)Tj +-44.7389 -1.3333 TD +0.1389 Tw +(for example \()Tj +/TT10 1 Tf +10 0 0 10 181.2036 75.75 Tm +0.334 Tw +(SQUARE 2)Tj +/TT8 1 Tf +9 0 0 9 232.5514 75.75 Tm +0.1389 Tw +(\) or \()Tj +/TT10 1 Tf +10 0 0 10 254.0138 75.75 Tm +0.334 Tw +(VERTICAL 4 RED)Tj +/TT8 1 Tf +9 0 0 9 344.7075 75.75 Tm +0.1389 Tw +[(\). A brush can also be specified as a positive)]TJ +-24.3008 -1.3333 TD +0.0478 Tw +(integer, which is interpreted as a )Tj +/TT10 1 Tf +10 0 0 10 260.829 63.75 Tm +0 Tw +(ROUND)Tj +/TT8 1 Tf +9 0 0 9 290.8339 63.75 Tm +0.0478 Tw +[( brush of that width. If a brush is a litatom, it is assumed to)]TJ +-18.3149 -1.3333 TD +0.1722 Tw +(be a function which is called at each point of the curves trajectory \(with three arguments: the )Tj +/TT10 1 Tf +10 0 0 10 524.9271 51.75 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 530.9281 51.75 Tm +(-)Tj +ET +endstream +endobj +81 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +83 0 obj +<< +/Length 5804 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-17)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT8 1 Tf +9 0 0 9 78 569.49 Tm +0.1956 Tw +(coordinate of the point, the )Tj +/TT10 1 Tf +10 0 0 10 196.7731 569.49 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 202.7741 569.49 Tm +0.1956 Tw +(-coordinate, and the image stream\), and should do whatever image)Tj +-13.8638 -1.3333 TD +0.0367 Tw +[(stream operations are necessary to draw each point. Finally, if a brush is specified as )]TJ +/TT10 1 Tf +10 0 0 10 423.0871 557.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 441.0901 557.49 Tm +0.0367 Tw +(, a \()Tj +/TT10 1 Tf +10 0 0 10 455.9971 557.49 Tm +0 Tw +(ROUND)Tj +-37.7997 -1.2 TD +(1)Tj +/TT8 1 Tf +9 0 0 9 84.001 545.49 Tm +(\) brush is used as default.)Tj +-0.6668 -2.9944 TD +0.0378 Tw +[(The appearance of a curve is also determined by its dashing characteristics. Dashing is specified by a)]TJ +0 -1.2222 TD +0.0156 Tw +[(list of positive integers. If a curve is dashed, the brush is placed along the trajectory for the number of)]TJ +T* +0.0144 Tw +[(units indicated by the first element of the dashing list. The brush is off, not placed in the bitmap, for a)]TJ +T* +0.0544 Tw +[(number of units indicated by the second element. The third element indicates how long it will be on)]TJ +T* +0.0444 Tw +[(again, and so forth. The dashing sequence is repeated from the beginning when the list is exhausted.)]TJ +T* +0.0367 Tw +[(The units used to measure dashing are the units of the brush. For example, specifying the dashing as)]TJ +0 -1.2278 TD +0.1333 Tw +(\(1 1\) with a brush of \()Tj +/TT10 1 Tf +10 0 0 10 170.4144 452.49 Tm +0.32 Tw +(ROUND 16)Tj +/TT8 1 Tf +9 0 0 9 221.6222 452.49 Tm +0.1333 Tw +(\) would put the brush on the trajectory, skip 16 points, and put)Tj +-15.958 -1.3333 TD +0 Tw +(down another brush. A curve is not dashed if the dashing argument to the drawing function is )Tj +/TT10 1 Tf +10 0 0 10 458.3467 440.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 476.3496 440.49 Tm +(.)Tj +-44.2611 -2.9944 TD +0.2033 Tw +[(The curve functions use the image streams clipping region and operation. Most types of image)]TJ +0 -1.2278 TD +0.2478 Tw +(streams only support the )Tj +/TT10 1 Tf +10 0 0 10 188.5215 402.49 Tm +0 Tw +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 218.5264 402.49 Tm +0.2478 Tw +[( operation when drawing curves. When drawing to a display)]TJ +-15.614 -1.3333 TD +0.1278 Tw +(stream, the curve-drawing functions accept the operation )Tj +/TT10 1 Tf +10 0 0 10 316.0905 390.49 Tm +0 Tw +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 352.0964 390.49 Tm +0.1278 Tw +[( if the brush argument is 1. For)]TJ +-30.4552 -1.3333 TD +0.0489 Tw +(brushes larger than 1, these functions will use the )Tj +/TT10 1 Tf +10 0 0 10 280.7466 378.49 Tm +0 Tw +(ERASE)Tj +/TT8 1 Tf +9 0 0 9 310.7515 378.49 Tm +0.0489 Tw +[( operation instead of )]TJ +/TT10 1 Tf +10 0 0 10 396.7327 378.49 Tm +0 Tw +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 432.7386 378.49 Tm +0.0489 Tw +[(. For display)]TJ +-39.4154 -1.3333 TD +0 Tw +(streams, the curve-drawing functions treat the )Tj +/TT10 1 Tf +10 0 0 10 264.3018 366.49 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 306.3086 366.49 Tm +( operation the same as )Tj +/TT10 1 Tf +10 0 0 10 397.3237 366.49 Tm +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 427.3286 366.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 343.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 343.26 Tm +(DRAWCURVE)Tj +/F3 1 Tf +10 0 0 10 156.6089 343.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.4789 343.26 Tm +(KNOTS CLOSED BRUSH DASHING STREAM)Tj +/TT10 1 Tf +10 0 0 10 337.7079 343.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 343.7089 343.26 Tm +[( )-10713.5([Function])]TJ +-24.1899 -1.8833 TD +0.0633 Tw +(Draws a "parametric cubic spline curve" on the image stream )Tj +/TT15 1 Tf +27.836 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0633 Tw +(. )Tj +/TT15 1 Tf +0.8767 0 TD +0 Tw +(KNOTS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0633 Tw +[( is a list of)]TJ +-35.3137 -1.2944 TD +0.2022 Tw +[(positions to which the curve will be fitted. If )]TJ +/TT15 1 Tf +22.0564 0 TD +0 Tw +(CLOSED)Tj +/TT8 1 Tf +3.6006 0 TD +0.2022 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 389.8732 314.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 407.8761 314.66 Tm +0.2022 Tw +(, the curve will be)Tj +-31.3196 -1.3278 TD +0.0156 Tw +(closed; otherwise it ends at the first and last positions in )Tj +/TT15 1 Tf +25.1545 0 TD +0 Tw +(KNOTS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0156 Tw +(. )Tj +/TT15 1 Tf +0.7811 0 TD +0 Tw +(BRUSH)Tj +/TT8 1 Tf +3.0005 0 TD +0.0156 Tw +[( and )]TJ +/TT15 1 Tf +2.224 0 TD +0 Tw +(DASHING)Tj +/TT8 1 Tf +4.2007 0 TD +0.0156 Tw +[( are)]TJ +-38.3613 -1.2889 TD +0 Tw +(interpreted as described above.)Tj +4 -2 TD +(For example,)Tj +/TT10 1 Tf +10 0 0 10 162 255.06 Tm +(\(DRAWCURVE \(\(10 . 10\)\(50 . 50\)\(100 . 10\)\(150 . 50\)\))Tj +0 -1.2 TD +( NIL \(ROUND 5\) \(1 1 1 2\) XX\))Tj +/TT8 1 Tf +9 0 0 9 126 224.11 Tm +(would draw a curve like the following on the display stream XX:)Tj +ET +q +118.5 0 0 -44.25 264.76 212.56 cm +/Im19 Do +Q +BT +/TT10 1 Tf +10 0 0 10 102 150.58 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 150.58 Tm +(DRAWCIRCLE)Tj +/F3 1 Tf +10 0 0 10 162.0098 150.58 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 150.58 Tm +(CENTERX CENTERY RADIUS BRUSH DASHING)Tj +-6.32 -1.2478 TD +( STREAM)Tj +/F2 1 Tf +10 0 0 10 145.8062 139.35 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 149.1361 139.35 Tm +( )Tj +32.8327 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.1589 Tw +(Draws a circle of radius )Tj +/TT15 1 Tf +11.5176 0 TD +0 Tw +(RADIUS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1589 Tw +[( about the point \()]TJ +/TT15 1 Tf +8.2303 0 TD +0 Tw +(CENTERX,CENTERY)Tj +/TT8 1 Tf +9.0015 0 TD +0.1589 Tw +(\) onto the image)Tj +-32.3499 -1.2889 TD +0 Tw +(stream )Tj +/TT15 1 Tf +3.3068 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +(. )Tj +/TT15 1 Tf +0.85 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +(s position is left at \()Tj +/TT15 1 Tf +9.1118 0 TD +0 Tw +(CENTERX,CENTERY)Tj +/TT8 1 Tf +9.0015 0 TD +0.05 Tw +[(\). The other arguments)]TJ +-29.4713 -1.2889 TD +0 Tw +(are interpreted as described above.)Tj +ET +endstream +endobj +84 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/XObject << +/Im19 85 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +87 0 obj +<< +/Length 7187 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +5.4 -4.38 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 153.33 568.2 Tm +(DRAWARC)Tj +/TT15 1 Tf +4.2007 0 TD +1.4489 Tw +[( CENTERX CENTERY RADIUS STARTANGLE NDEGREES BRUSH)]TJ +-3.904 -1.0667 TD +0 Tw +(DASHINGSTREAM\))Tj +/TT8 1 Tf +37.4033 0 TD +([Function])Tj +-35.4033 -1.8444 TD +0.0089 Tw +(Draws an arc of the circle whose center point is \()Tj +/TT15 1 Tf +21.5103 0 TD +0.02 Tw +(CENTERX CENTERY)Tj +/TT8 1 Tf +9.0215 0 TD +0.0089 Tw +(\) and whose radius is)Tj +/TT15 1 Tf +-30.5317 -1.2889 TD +0 Tw +(RADIUS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0733 Tw +[( from the position at )]TJ +/TT15 1 Tf +9.5937 0 TD +0 Tw +(STARTANGLE)Tj +/TT8 1 Tf +6.001 0 TD +0.0733 Tw +[( degrees for )]TJ +/TT15 1 Tf +5.6668 0 TD +0 Tw +(NDEGREES)Tj +/TT8 1 Tf +4.8008 0 TD +0.0733 Tw +[( number of degrees. If)]TJ +/TT15 1 Tf +-29.6628 -1.2889 TD +0 Tw +(STARTANGLE)Tj +/TT8 1 Tf +6.001 0 TD +0.35 Tw +[( is 0, the starting point will be \()]TJ +/TT15 1 Tf +16.4709 0 TD +0 Tw +(CENTERX)Tj +/TT8 1 Tf +4.2007 0 TD +0.35 Tc +( \()Tj +/TT15 1 Tf +0.933 0 TD +0 Tc +(CENTERY)Tj +/TT8 1 Tf +4.2007 0 TD +0.35 Tw +[( + )]TJ +/TT15 1 Tf +1.806 0 TD +0 Tw +(RADIUS)Tj +/TT8 1 Tf +3.6006 0 TD +0.35 Tw +[(\)\). If)]TJ +/TT15 1 Tf +-37.2128 -1.2889 TD +0 Tw +(NDEGREES)Tj +/TT8 1 Tf +4.8008 0 TD +0.0622 Tw +[( is positive, the arc will be counterclockwise. If )]TJ +/TT15 1 Tf +21.6789 0 TD +0 Tw +(NDEGREES)Tj +/TT8 1 Tf +4.8008 0 TD +0.0622 Tw +[( is negative, the arc)]TJ +-31.2804 -1.2889 TD +0 Tw +(will be clockwise. The other arguments are interpreted as described in )Tj +/TT13 1 Tf +31.4697 0 TD +(DRAWCIRCLE)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 454.72 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 454.72 Tm +(DRAWELLIPSE)Tj +/F3 1 Tf +10 0 0 10 215.4106 454.72 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 227.6006 454.72 Tm +1.9489 Tw +(CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS)Tj +-7.9556 -1.1111 TD +(ORIENTATION BRUSH DASHING STREAM)Tj +/TT10 1 Tf +10 0 0 10 328.8 444.72 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 334.801 444.72 Tm +0.8122 Tw +[( )-15412.1([Function])]TJ +-17.8668 -1.8833 TD +0.2689 Tw +(Draws an ellipse with a minor radius of )Tj +/TT15 1 Tf +19.9485 0 TD +0 Tw +(SEMIMINORRADIUS)Tj +/TT8 1 Tf +9.0015 0 TD +0.2689 Tw +[( and a major radius of)]TJ +/TT15 1 Tf +-28.9499 -1.2889 TD +0 Tw +(SEMIMAJORRADIUS)Tj +/TT8 1 Tf +9.0015 0 TD +0.4967 Tw +[( about the point \()]TJ +/TT15 1 Tf +9.5814 0 TD +0 Tw +(CENTERX,CENTERY)Tj +/TT8 1 Tf +9.0015 0 TD +0.4967 Tw +(\) onto the image stream)Tj +/TT15 1 Tf +-27.5843 -1.2889 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.3322 Tw +(. )Tj +/TT15 1 Tf +1.4144 0 TD +0 Tw +(ORIENTATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.3322 Tw +[( is the angle of the major axis in degrees, positive in the)]TJ +-11.6161 -1.2889 TD +0.05 Tw +(counterclockwise direction. )Tj +/TT15 1 Tf +12.7984 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +(s position is left at \()Tj +/TT15 1 Tf +9.1118 0 TD +0 Tw +(CENTERX,CENTERY)Tj +/TT8 1 Tf +9.0015 0 TD +0.05 Tw +[(\). The other)]TJ +-34.5123 -1.2889 TD +0 Tw +(arguments are interpreted as described above.)Tj +-5.3333 -2.8889 TD +(New brush shapes can be defined using the following function:)Tj +/TT10 1 Tf +10 0 0 10 150 333.09 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 333.09 Tm +(INSTALLBRUSH)Tj +/F3 1 Tf +10 0 0 10 220.8115 333.09 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 333.09 Tm +(BRUSHNAME BRUSHFN BRUSHARRAY)Tj +/TT10 1 Tf +10 0 0 10 374.9061 333.09 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 380.9071 333.09 Tm +[( )-11913.7([Function])]TJ +-22.9897 -1.8833 TD +0.2144 Tw +(Installs a new brush called )Tj +/TT15 1 Tf +13.0649 0 TD +0 Tw +(BRUSHNAME)Tj +/TT8 1 Tf +5.4009 0 TD +0.2144 Tw +[( with creation-function )]TJ +/TT15 1 Tf +11.0296 0 TD +0 Tw +(BRUSHFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.2144 Tw +[( and optional)]TJ +-33.696 -1.2889 TD +0 Tw +(array )Tj +/TT15 1 Tf +2.754 0 TD +(BRUSHARRAY)Tj +/TT8 1 Tf +6.001 0 TD +0.1578 Tw +(. )Tj +/TT15 1 Tf +1.0656 0 TD +0 Tw +(BRUSHFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.1578 Tw +[( should be a function of one argument \(a width\), which)]TJ +-14.0212 -1.2889 TD +0.2167 Tw +(returns a bitmap of the brush for that width. )Tj +/TT15 1 Tf +22.2507 0 TD +0 Tw +(BRUSHFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.2167 Tw +[( will be called to create new)]TJ +-26.4513 -1.2889 TD +0.4456 Tw +(instances of )Tj +/TT15 1 Tf +6.3218 0 TD +0 Tw +(BRUSHNAME)Tj +/TT8 1 Tf +5.4009 0 TD +0.4455 Tw +(-type brushes; the sixteen smallest instances will be pre-)Tj +-11.7227 -1.2889 TD +0.2567 Tw +[(computed and cached. "Hand-crafted" brushes can be supplied as the )]TJ +/TT15 1 Tf +33.9864 0 TD +0 Tw +(BRUSHARRAY)Tj +/TT8 1 Tf +-33.9864 -1.2944 TD +0.1744 Tw +[(argument. Changing an existing brush can be done by calling )]TJ +/TT10 1 Tf +10 0 0 10 439.917 258.09 Tm +0 Tw +(INSTALLBRUSH)Tj +/TT8 1 Tf +9 0 0 9 511.9287 258.09 Tm +0.1744 Tw +[( with)]TJ +-37.5476 -1.3278 TD +0 Tw +(new )Tj +/TT15 1 Tf +2.145 0 TD +(BRUSHFN)Tj +/TT8 1 Tf +4.2007 0 TD +( and/or )Tj +/TT15 1 Tf +3.7397 0 TD +(BRUSHARRAY)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 224.49 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 224.49 Tm +(DRAWPOINT)Tj +/TT10 1 Tf +10 0 0 10 204.6089 224.49 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 210.6098 224.49 Tm +(X Y BRUSH STREAM OPERATION)Tj +/TT10 1 Tf +10 0 0 10 351.0327 224.49 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 357.0337 224.49 Tm +[( )-14566.3([Function])]TJ +-20.3371 -1.8833 TD +(Draws )Tj +/TT15 1 Tf +3.1868 0 TD +(BRUSH)Tj +/TT8 1 Tf +3.0005 0 TD +0.01 Tw +[( centered around point \()]TJ +/TT15 1 Tf +10.7509 0 TD +0.0244 Tw +(X, Y)Tj +/TT8 1 Tf +2.4248 0 TD +0.01 Tw +(\) on )Tj +/TT15 1 Tf +1.9809 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +(, using the operation )Tj +/TT15 1 Tf +9.3994 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT15 1 Tf +-39.7448 -1.2889 TD +(BRUSH)Tj +/TT8 1 Tf +3.0005 0 TD +( may be a bitmap or a brush.)Tj +/TT4 1 Tf +10 0 0 10 102 153 Tm +(Miscellaneous Drawing and Printing Operations)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 150.29 m +534.01 150.29 l +S +BT +/TT10 1 Tf +10 0 0 10 150 132.06 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 132.06 Tm +(DSPFILL)Tj +/F3 1 Tf +10 0 0 10 193.8071 132.06 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 196.6771 132.06 Tm +(REGION TEXTURE OPERATION STREAM)Tj +/TT10 1 Tf +10 0 0 10 364.1044 132.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 370.1053 132.06 Tm +[( )-13113.8([Function])]TJ +-21.7895 -1.8833 TD +(Fills )Tj +/TT15 1 Tf +2.2341 0 TD +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1311 Tw +[( of the image stream )]TJ +/TT15 1 Tf +9.8875 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1311 Tw +[( \(within the clipping region\) with the texture)]TJ +/TT15 1 Tf +-19.3228 -1.2944 TD +0 Tw +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0006 Tc +0.0027 Tw +(. If )Tj +/TT15 1 Tf +1.6799 0 TD +0 Tc +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0008 Tc +0.0025 Tw +( is )Tj +/TT10 1 Tf +10 0 0 10 270.3243 103.46 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 288.3272 103.46 Tm +0.0033 Tw +(, the whole clipping region of )Tj +/TT15 1 Tf +13.2744 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0005 Tc +0.0028 Tw +( is used. If )Tj +/TT15 1 Tf +5.0181 0 TD +0 Tc +0 Tw +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0011 Tc +0.0022 Tw +( or)Tj +/TT15 1 Tf +-38.7968 -1.3333 TD +0 Tc +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 233.5415 91.46 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 251.5444 91.46 Tm +(, the values for )Tj +/TT15 1 Tf +6.7729 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +( are used.)Tj +ET +endstream +endobj +88 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +90 0 obj +<< +/Length 4261 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-19)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.38 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.2 Tm +(DRAWPOLYGON)Tj +/TT6 1 Tf +10 0 0 10 167.4 568.2 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.1783 568.2 Tm +(POINTS CLOSED BRUSH DASHING STREAM)Tj +/TT10 1 Tf +10 0 0 10 353.8082 568.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 444.63 568.2 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.03 Tw +(Draws a polygon on the image stream )Tj +/TT15 1 Tf +17.2959 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.03 Tw +(. )Tj +/TT15 1 Tf +0.81 0 TD +0 Tw +(POINTS)Tj +/TT8 1 Tf +3.6006 0 TD +0.03 Tw +[( is a list of positions to which the)]TJ +-25.3071 -1.2944 TD +0.0344 Tw +[(figure will be fitted \(the vertices of the polygon\). If )]TJ +/TT15 1 Tf +23.2119 0 TD +0 Tw +(CLOSED)Tj +/TT8 1 Tf +3.6006 0 TD +0.0344 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 397.2526 539.6 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 415.2556 539.6 Tm +0.0344 Tw +(, then the starting)Tj +-32.1395 -1.3333 TD +0.1644 Tw +(position is specified only once in )Tj +/TT15 1 Tf +15.66 0 TD +0 Tw +(POINTS)Tj +/TT8 1 Tf +3.6006 0 TD +0.1644 Tw +[(. If )]TJ +/TT15 1 Tf +2.1633 0 TD +0 Tw +(CLOSED)Tj +/TT8 1 Tf +3.6006 0 TD +0.1644 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 365.1135 527.6 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 383.1164 527.6 Tm +0.1644 Tw +(, then the starting vertex)Tj +-28.5685 -1.3278 TD +0.0611 Tw +(must be specified twice in )Tj +/TT15 1 Tf +12.0233 0 TD +0 Tw +(POINTS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0611 Tw +(. )Tj +/TT15 1 Tf +0.8722 0 TD +0 Tw +(BRUSH)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +[( and )]TJ +/TT15 1 Tf +2.3151 0 TD +0 Tw +(DASHING)Tj +/TT8 1 Tf +4.2007 0 TD +0.0611 Tw +[( are interpreted as described in)]TJ +-26.0124 -1.2889 TD +0 Tw +(Chapter 27 of the Interlisp-D Reference Manual.)Tj +0 -2 TD +(For example,)Tj +/TT10 1 Tf +10 0 0 10 198 468 Tm +(\(DRAWPOLYGON \(\(100 . 100\) \(50 . 125\))Tj +0 -1 TD +( \(150 . 175\) \(200 . 100\) \(150 .)Tj +T* +(50\)\))Tj +T* +( T \(ROUND 3\) \(4 2\) XX\))Tj +/TT8 1 Tf +9 0 0 9 126 421 Tm +(will draw a polygon like the following on the display stream )Tj +/TT10 1 Tf +10 0 0 10 369.4087 421 Tm +(XX)Tj +/TT8 1 Tf +9 0 0 9 381.4106 421 Tm +(.)Tj +ET +q +120.75 0 0 -102 245.63 408.5 cm +/Im20 Do +Q +BT +/TT10 1 Tf +10 0 0 10 102 286.77 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 286.77 Tm +(FILLPOLYGON)Tj +/F3 1 Tf +10 0 0 10 167.4106 286.77 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.2806 286.77 Tm +(POINTS TEXTURE OPERATION WINDNUMBER STREAM)Tj +/TT10 1 Tf +10 0 0 10 397.1176 286.77 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 403.1185 286.77 Tm +[( )-4112.4([Function])]TJ +/TT15 1 Tf +-30.791 -1.8833 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0289 Tw +[( is the )]TJ +/TT13 1 Tf +2.9387 0 TD +0 Tw +(BITBLT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0289 Tw +[( operation \(see page 27.15 in the Interlisp-D Reference Manual\))]TJ +-11.9402 -1.2889 TD +0.2622 Tw +[(used to fill the polygon. If the )]TJ +/TT15 1 Tf +15.6652 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.2622 Tw +[( is NIL, the )]TJ +/TT15 1 Tf +6.1797 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.2622 Tw +[( defaults to the)]TJ +-32.6467 -1.2889 TD +0 Tw +(STREAM default )Tj +/TT15 1 Tf +7.7832 0 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT15 1 Tf +-13.1841 -2.0667 TD +(WINDNUMBER)Tj +/TT8 1 Tf +6.001 0 TD +0.01 Tw +[( is the number for the winding rule convention . This number is either 0 or 1;)]TJ +-6.001 -1.2889 TD +0 Tw +(0 indicates the "zero" winding rule, 1 indicates the "odd" winding rule.)Tj +0 -2 TD +0.1011 Tw +(When filling a polygon, there is more than one way of dealing with the situation where)Tj +0 -1.2222 TD +0.3767 Tw +[(two polygon sides intersect, or one polygon is fully inside the other. Currently,)]TJ +/TT13 1 Tf +T* +0 Tw +(FILLPOLYGON)Tj +/TT8 1 Tf +6.6011 0 TD +0.3178 Tw +[( to a display stream uses the "odd" winding rule, which means that)]TJ +-6.6011 -1.2889 TD +0.2933 Tw +(intersecting polygon sides define areas that are filled or not filled somewhat like a)Tj +0 -1.2222 TD +0 Tw +(checkerboard. For example, )Tj +/TT10 1 Tf +10 0 0 10 198 135.77 Tm +(\(FILLPOLYGON)Tj +0 -1 TD +( \( \(\(110 . 110\)\(150 . 200\)\(190 . 110\)\))Tj +T* +( \(\(135 . 125\)\(160 . 125\)\(160 . 150\)\(135 .)Tj +T* +(150\)\) \))Tj +T* +( GRAYSHADE WINDOW\))Tj +/TT8 1 Tf +9 0 0 9 126 78.82 Tm +(will produce a display something like this:)Tj +ET +endstream +endobj +91 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/XObject << +/Im20 92 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +94 0 obj +<< +/Length 6888 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +ET +q +35.25 0 0 -51.75 336.38 575.99 cm +/Im21 Do +Q +BT +/TT8 1 Tf +9 0 0 9 174 508.79 Tm +0.0178 Tw +(This fill convention also takes into account all polygons in )Tj +/TT15 1 Tf +26.2971 0 TD +0 Tw +(POINTS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0178 Tw +(, if it specifies multiple)Tj +-29.8977 -1.2889 TD +0 Tw +(polygons.)Tj +/TT10 1 Tf +10 0 0 10 150 474.91 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 474.91 Tm +(FILLCIRCLE)Tj +/F3 1 Tf +10 0 0 10 210.0098 474.91 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.8798 474.91 Tm +(CENTERX CENTERY RADIUS TEXTURE STREAM)Tj +/TT10 1 Tf +10 0 0 10 412.7123 474.91 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 418.7133 474.91 Tm +[( )-7713([Function])]TJ +-27.1904 -1.8833 TD +0.0444 Tw +(Fills in a circular area of radius )Tj +/TT15 1 Tf +14.2266 0 TD +0 Tw +(RADIUS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0444 Tw +[( about the point \()]TJ +/TT15 1 Tf +7.7725 0 TD +0 Tw +(CENTERX,CENTERY)Tj +/TT8 1 Tf +9.0015 0 TD +0.0444 Tw +(\) in )Tj +/TT15 1 Tf +1.7949 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +-36.3961 -1.2889 TD +(with )Tj +/TT15 1 Tf +2.2832 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +(. )Tj +/TT15 1 Tf +0.75 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(s position is left at \()Tj +/TT15 1 Tf +8.8618 0 TD +(CENTERX,CENTERY)Tj +/TT8 1 Tf +9.0015 0 TD +(\).)Tj +/TT10 1 Tf +10 0 0 10 150 423.48 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 423.48 Tm +(DSPRESET)Tj +/F3 1 Tf +10 0 0 10 199.208 423.48 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 202.078 423.48 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 234.4833 423.48 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.4843 423.48 Tm +[( )-27516.2([Function])]TJ +-7.3871 -1.8889 TD +0.0933 Tw +(Sets the )Tj +/TT10 1 Tf +10 0 0 10 208.45 406.48 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 214.451 406.48 Tm +0.0933 Tw +[( coordinate of )]TJ +/TT15 1 Tf +6.6286 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0933 Tw +[( to its left margin, sets its )]TJ +/TT10 1 Tf +11.8965 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0933 Tw +[( coordinate to the top of the)]TJ +-27.2204 -1.3278 TD +0.0822 Tw +[(clipping region minus the font ascent. For a display stream, this also fills its destination)]TJ +0 -1.2222 TD +0 Tw +(bitmap with its background texture.)Tj +/TT10 1 Tf +10 0 0 10 150 361.25 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 361.25 Tm +(DSPNEWPAGE)Tj +/F3 1 Tf +10 0 0 10 210.0098 361.25 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.8798 361.25 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 245.285 361.25 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.286 361.25 Tm +[( )-26316([Function])]TJ +-8.5873 -1.8889 TD +0.0178 Tw +[(Starts a new page. The )]TJ +/TT10 1 Tf +10 0 0 10 269.0205 344.25 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 275.0215 344.25 Tm +0.0178 Tw +[( coordinate is set to the left margin, and the )]TJ +/TT10 1 Tf +19.5669 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0178 Tw +[( coordinate is set to)]TJ +-31.3917 -1.3278 TD +0 Tw +(the top margin plus the linefeed.)Tj +/TT10 1 Tf +10 0 0 10 150 310.02 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 310.02 Tm +(CENTERPRINTINREGION)Tj +/F3 1 Tf +10 0 0 10 258.6177 310.02 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 261.4877 310.02 Tm +(EXP REGION STREAM)Tj +/TT10 1 Tf +10 0 0 10 353.3026 310.02 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 359.3036 310.02 Tm +[( )-14314([Function])]TJ +-20.5893 -1.8889 TD +(Prints )Tj +/TT15 1 Tf +2.9798 0 TD +(EXP)Tj +/TT8 1 Tf +1.8003 0 TD +0.1078 Tw +[( so that is it centered within )]TJ +/TT15 1 Tf +13.2418 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1078 Tw +[( of the )]TJ +/TT15 1 Tf +3.3394 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1078 Tw +[(. If )]TJ +/TT15 1 Tf +1.9933 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.1078 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 494.2807 293.02 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 512.2837 293.02 Tm +(, )Tj +/TT15 1 Tf +0.6078 0 TD +(EXP)Tj +/TT8 1 Tf +-38.1949 -1.3278 TD +(will be centered in the clipping region of )Tj +/TT15 1 Tf +18.1797 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 102 238.13 Tm +(Drawing and Shading Grids)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 235.42 m +534.01 235.42 l +S +BT +/TT8 1 Tf +9 0 0 9 126 213.47 Tm +0.0256 Tw +(A grid is a partitioning of an arbitrary coordinate system \(hereafter referred to as the "source system"\))Tj +0 -1.2222 TD +0.0733 Tw +[(into rectangles. This section describes functions that operate on grids. It includes functions to draw)]TJ +T* +0.1944 Tw +(the outline of a grid, to translate between positions in a source system and grid coordinates \(the)Tj +T* +0.0556 Tw +[(coordinates of the rectangle which contains a given position\), and to shade grid rectangles. A grid is)]TJ +T* +0.0244 Tw +(defined by its "unit grid," a region \(called a grid specification\) which is the origin rectangle of the grid)Tj +0 -1.2278 TD +0.0444 Tw +[(in terms of the source system. Its )]TJ +/TT10 1 Tf +10 0 0 10 263.888 158.42 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 287.8919 158.42 Tm +0.0444 Tw +[( field is interpreted as the )]TJ +/TT10 1 Tf +10 0 0 10 393.7479 158.42 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 399.7489 158.42 Tm +0.0444 Tw +(-coordinate of the left edge of the)Tj +-30.4165 -1.3333 TD +0.1033 Tw +(origin rectangle, its )Tj +/TT10 1 Tf +10 0 0 10 207.5795 146.42 Tm +0 Tw +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 243.5854 146.42 Tm +0.1033 Tw +[( field is the )]TJ +/TT10 1 Tf +10 0 0 10 293.2678 146.42 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 299.2688 146.42 Tm +0.1033 Tw +(-coordinate of the bottom edge of the origin rectangle, its)Tj +/TT10 1 Tf +10 0 0 10 126 134.42 Tm +0 Tw +(WIDTH)Tj +/TT8 1 Tf +9 0 0 9 156.0049 134.42 Tm +( is the width of the grid rectangles, and its )Tj +/TT10 1 Tf +10 0 0 10 325.4316 134.42 Tm +(HEIGHT)Tj +/TT8 1 Tf +9 0 0 9 361.4375 134.42 Tm +( is the height of the grid rectangles.)Tj +/TT10 1 Tf +10 0 0 10 150 111.19 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 111.19 Tm +(GRID)Tj +/F3 1 Tf +10 0 0 10 177.6045 111.19 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 180.4745 111.19 Tm +(GRIDSPEC WIDTH HEIGHT BORDER STREAM GRIDSHADE)Tj +/TT10 1 Tf +10 0 0 10 423.514 111.19 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 429.515 111.19 Tm +[( )-6512.8([Function])]TJ +-28.3906 -1.8833 TD +0.1878 Tw +(Outlines the grid defined by )Tj +/TT15 1 Tf +13.7065 0 TD +0 Tw +(GRIDSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.1878 Tw +[( which is )]TJ +/TT15 1 Tf +4.7611 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.1878 Tw +[( rectangles wide and )]TJ +/TT15 1 Tf +10.1349 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +-36.4037 -1.2889 TD +0.1089 Tw +(rectangles high on )Tj +/TT15 1 Tf +8.6919 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1089 Tw +[(. Each box in the grid has a border within it that is )]TJ +/TT15 1 Tf +24.0972 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +-36.3897 -1.2889 TD +0.0211 Tw +(points on each side; so the resulting lines in the grid are 2*)Tj +/TT15 1 Tf +25.9584 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0211 Tw +[( thick. If )]TJ +/TT15 1 Tf +4.2036 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0211 Tw +[( is the)]TJ +-37.3632 -1.2889 TD +0 Tw +(atom )Tj +/TT15 1 Tf +2.5482 0 TD +(POINT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +(, instead of a border the lower left point of each grid rectangle will be turned)Tj +ET +endstream +endobj +95 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/XObject << +/Im21 96 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +98 0 obj +<< +/Length 6439 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-21)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.0689 Tw +[(on. If )]TJ +/TT15 1 Tf +3.0045 0 TD +0 Tw +(GRIDSHADE)Tj +/TT8 1 Tf +5.4009 0 TD +0.0689 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 232.2089 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 250.2118 569.49 Tm +0.0689 Tw +(, it should be a texture and the border lines will be drawn)Tj +-13.8013 -1.3278 TD +0 Tw +(using that texture.)Tj +/TT10 1 Tf +10 0 0 10 102 535.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 535.26 Tm +(SHADEGRIDBOX)Tj +/F3 1 Tf +10 0 0 10 172.8115 535.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.6815 535.26 Tm +(X Y SHADE OPERATION GRIDSPEC GRIDBORDER )Tj +-7.5202 -1.1111 TD +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 140.4053 525.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 146.4063 525.26 Tm +( )Tj +33.136 0 TD +([Function])Tj +-35.4033 -1.8833 TD +0.1078 Tw +(Shades the grid rectangle \()Tj +/TT15 1 Tf +12.1772 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.1078 Tw +(\) of )Tj +/TT15 1 Tf +1.9275 0 TD +0 Tw +(GRIDSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.1078 Tw +[( with texture )]TJ +/TT15 1 Tf +6.231 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1078 Tw +[( using )]TJ +/TT15 1 Tf +3.1716 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.1078 Tw +[( on)]TJ +/TT15 1 Tf +-38.5098 -1.2944 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(. )Tj +/TT15 1 Tf +0.75 0 TD +(GRIDBORDER)Tj +/TT8 1 Tf +6.001 0 TD +( is interpreted the same as for )Tj +/TT10 1 Tf +10 0 0 10 338.8623 496.66 Tm +(GRID)Tj +/TT8 1 Tf +9 0 0 9 362.8662 496.66 Tm +(.)Tj +-31.6518 -3 TD +0.1189 Tw +(The following two functions map from the )Tj +/TT10 1 Tf +19.8908 0 TD +0 Tw +(X)Tj +10 0 0 10 262.4182 469.66 Tm +(,)Tj +9 0 0 9 268.4192 469.66 Tm +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.1189 Tw +[( coordinates of the source system into the grid )]TJ +/TT10 1 Tf +21.6974 0 TD +0 Tw +(X)Tj +10 0 0 10 474.498 469.66 Tm +(,)Tj +9 0 0 9 480.4989 469.66 Tm +(Y)Tj +/TT8 1 Tf +-44.7221 -1.3278 TD +(coordinates:)Tj +/TT10 1 Tf +10 0 0 10 102 435.43 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 435.43 Tm +(GRIDXCOORD)Tj +/F3 1 Tf +10 0 0 10 162.0098 435.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 435.43 Tm +(XCOORD GRIDSPEC)Tj +/TT10 1 Tf +10 0 0 10 245.8929 435.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.8939 435.43 Tm +[( )-20915.1([Function])]TJ +-13.9882 -1.8889 TD +0.2589 Tw +(Returns the grid )Tj +/TT10 1 Tf +10 0 0 10 200.1956 418.43 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 206.1965 418.43 Tm +0.2589 Tw +(-coordinate \(in the grid specified by )Tj +/TT15 1 Tf +17.6144 0 TD +0 Tw +(GRIDSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.2589 Tw +(\) that contains the)Tj +-31.3259 -1.3333 TD +0 Tw +(source system )Tj +/TT10 1 Tf +10 0 0 10 184.3418 406.43 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 190.3427 406.43 Tm +(-coordinate )Tj +/TT15 1 Tf +5.3027 0 TD +(XCOORD)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 383.2 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 383.2 Tm +(GRIDYCOORD)Tj +/F3 1 Tf +10 0 0 10 162.0098 383.2 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 383.2 Tm +(YCOORD GRIDSPEC)Tj +/TT10 1 Tf +10 0 0 10 245.8929 383.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.8939 383.2 Tm +[( )-20915.1([Function])]TJ +-13.9882 -1.8889 TD +0.2589 Tw +(Returns the grid )Tj +/TT10 1 Tf +10 0 0 10 200.1956 366.2 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 206.1965 366.2 Tm +0.2589 Tw +(-coordinate \(in the grid specified by )Tj +/TT15 1 Tf +17.6144 0 TD +0 Tw +(GRIDSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +0.2589 Tw +(\) that contains the)Tj +-31.3259 -1.3333 TD +0 Tw +(source system )Tj +/TT10 1 Tf +10 0 0 10 184.3418 354.2 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 190.3427 354.2 Tm +(-coordinate )Tj +/TT15 1 Tf +5.3027 0 TD +(YCOORD)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-21.3859 -3 TD +0.1822 Tw +(The following two functions map from the grid )Tj +/TT10 1 Tf +10 0 0 10 281.5746 327.2 Tm +0 Tw +(X,Y)Tj +/TT8 1 Tf +9 0 0 9 299.5775 327.2 Tm +0.1822 Tw +[( coordinates into the )]TJ +/TT10 1 Tf +10 0 0 10 389.6204 327.2 Tm +0 Tw +(X,Y)Tj +/TT8 1 Tf +9 0 0 9 407.6234 327.2 Tm +0.1822 Tw +[( coordinates of the)]TJ +-36.6248 -1.3278 TD +0 Tw +(source system:)Tj +/TT10 1 Tf +10 0 0 10 102 292.97 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 292.97 Tm +(LEFTOFGRIDCOORD)Tj +/F3 1 Tf +10 0 0 10 189.0142 292.97 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.8842 292.97 Tm +(GRIDX GRIDSPEC)Tj +/TT10 1 Tf +10 0 0 10 267.4965 292.97 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 273.4974 292.97 Tm +[( )-18514.7([Function])]TJ +-16.3886 -1.8889 TD +0.1933 Tw +(Returns the source system )Tj +/TT10 1 Tf +10 0 0 10 239.5801 275.97 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 245.5811 275.97 Tm +0.1933 Tw +(-coordinate of the left edge of a grid rectangle at grid )Tj +/TT10 1 Tf +10 0 0 10 476.9989 275.97 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 482.9999 275.97 Tm +(-)Tj +-39.6667 -1.3278 TD +(coordinate )Tj +/TT15 1 Tf +4.9697 0 TD +(GRIDX)Tj +/TT8 1 Tf +3.0005 0 TD +( \(in the grid specified by )Tj +/TT15 1 Tf +11.0083 0 TD +(GRIDSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +(\).)Tj +/TT10 1 Tf +10 0 0 10 102 241.14 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 241.14 Tm +(BOTTOMOFGRIDCOORD)Tj +/F3 1 Tf +10 0 0 10 199.8159 241.14 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 202.6859 241.14 Tm +(GRIDY GRIDSPEC)Tj +/TT10 1 Tf +10 0 0 10 278.2982 241.14 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 284.2992 241.14 Tm +[( )-17314.5([Function])]TJ +-17.5888 -1.8889 TD +0.0767 Tw +(Returns the source system )Tj +/TT10 1 Tf +10 0 0 10 235.3801 224.14 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 241.3811 224.14 Tm +0.0767 Tw +(-coordinate of the bottom edge of a grid rectangle at grid )Tj +/TT10 1 Tf +10 0 0 10 477.0077 224.14 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 483.0087 224.14 Tm +(-)Tj +-39.6676 -1.3278 TD +(coordinate )Tj +/TT15 1 Tf +4.9697 0 TD +(GRIDY)Tj +/TT8 1 Tf +3.0005 0 TD +( \(in the grid specified by )Tj +/TT15 1 Tf +11.0083 0 TD +(GRIDSPEC)Tj +/TT8 1 Tf +4.8008 0 TD +(\).)Tj +/TT4 1 Tf +10 0 0 10 54 169.25 Tm +(Display Streams)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 166.54 m +486.01 166.54 l +S +BT +/TT8 1 Tf +9 0 0 9 78 144.59 Tm +0.0622 Tw +(Display streams \(image streams of type )Tj +/TT10 1 Tf +18.055 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0622 Tw +(\) are used to control graphic output operations to a)Tj +-22.2557 -1.2889 TD +0.1311 Tw +[(bitmap, known as the "destination" bitmap of the display stream. For each window on the screen,)]TJ +0 -1.2222 TD +0.0067 Tw +(there is an associated display stream which controls graphics operations to a specific part of the screen)Tj +T* +0.2433 Tw +[(bitmap. Any of the functions that take a display stream will also take a window, and use the)]TJ +T* +0.0056 Tw +[(associated display stream. Display streams can also have a destination bitmap that is not connected to)]TJ +T* +0 Tw +(any window or display device.)Tj +ET +endstream +endobj +99 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +102 0 obj +<< +/Length 7633 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-22)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 568.26 Tm +(DSPCREATE)Tj +/F3 1 Tf +10 0 0 10 204.6089 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.4789 568.26 Tm +(DESTINATION)Tj +/TT10 1 Tf +10 0 0 10 266.8885 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.8895 568.26 Tm +[( )-23915.6([Function])]TJ +-10.9877 -1.8833 TD +0.2033 Tw +[(Creates and returns a display stream. If )]TJ +/TT15 1 Tf +19.5363 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.2033 Tw +[( is specified, it is used as the)]TJ +-26.1374 -1.2889 TD +0 Tw +(destination bitmap, otherwise the screen bitmap is used.)Tj +/TT10 1 Tf +10 0 0 10 150 517.43 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 517.43 Tm +(DSPDESTINATION)Tj +/F3 1 Tf +10 0 0 10 231.6133 517.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 234.4833 517.43 Tm +(DESTINATION DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 369.5052 517.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 375.5062 517.43 Tm +[( )-12513.7([Function])]TJ +-22.3896 -1.8833 TD +0.0022 Tw +(Returns the current destination bitmap for )Tj +/TT15 1 Tf +18.9879 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0022 Tw +(, setting it to )Tj +/TT15 1 Tf +5.7325 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0007 Tc +0.0015 Tw +( if)Tj +-39.1228 -1.2944 TD +0 Tc +0 Tw +(non-)Tj +/TT10 1 Tf +10 0 0 10 192.3867 488.83 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 210.3896 488.83 Tm +0.0133 Tw +(. )Tj +/TT15 1 Tf +0.7767 0 TD +0 Tw +(DESTINATION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0133 Tw +[( can be either the screen bitmap, or an auxilliary bitmap in order)]TJ +-11.421 -1.3278 TD +0 Tw +(to construct figures, possibly save them, and then display them in a single operation.)Tj +4 -2 TD +(Warning: The window system maintains the destination of a windows display)Tj +4 -1.2222 TD +(stream. Users should be very careful about changing this field.)Tj +/TT10 1 Tf +10 0 0 10 150 425.6 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 425.6 Tm +(DSPXOFFSET)Tj +/F3 1 Tf +10 0 0 10 210.0098 425.6 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.8798 425.6 Tm +(XOFFSET DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 326.2982 425.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 332.2992 425.6 Tm +[( )-17314.5([Function])]TJ +/TT10 1 Tf +10 0 0 10 150 404.37 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 404.37 Tm +(DSPYOFFSET)Tj +/F3 1 Tf +10 0 0 10 210.0098 404.37 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.8798 404.37 Tm +(YOFFSET DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 326.2982 404.37 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 332.2992 404.37 Tm +[( )-17314.5([Function])]TJ +-17.5888 -1.8833 TD +0.0789 Tw +(Each display stream has its own coordinate system, separate from the coordinate system)Tj +0 -1.2222 TD +0.0144 Tw +[(of its destination bitmap. Having the coordinate system local to the display stream allows)]TJ +T* +0.1133 Tw +(objects to be displayed at different places by translating the display streams coordinate)Tj +0 -1.2278 TD +0.0333 Tw +[(system relative to its destination bitmap. This local coordinate system is defined by the )]TJ +/TT10 1 Tf +10 0 0 10 528.0015 354.37 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 174 342.37 Tm +(offset and )Tj +/TT10 1 Tf +10 0 0 10 215.7041 342.37 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 221.705 342.37 Tm +( offset.)Tj +/TT10 1 Tf +10 0 0 10 174 323.37 Tm +(DSPXOFFSET)Tj +/TT8 1 Tf +9 0 0 9 234.0097 323.37 Tm +0.2589 Tw +[( returns the current )]TJ +/TT10 1 Tf +10 0 0 10 322.6686 323.37 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 328.6696 323.37 Tm +0.2589 Tw +[( offset for )]TJ +/TT15 1 Tf +5.2415 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.2589 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 469.9495 323.37 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 475.9505 323.37 Tm +0.2589 Tw +[( origin of the)]TJ +-33.5501 -1.3278 TD +0.0167 Tw +[(display streams coordinate system in the destination bitmaps coordinate system. It is set)]TJ +0 -1.2278 TD +0 Tw +(to )Tj +/TT15 1 Tf +1.1221 0 TD +(XOFFSET)Tj +/TT8 1 Tf +4.2007 0 TD +( if non-)Tj +/TT10 1 Tf +10 0 0 10 250.4077 300.37 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 268.4106 300.37 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 174 281.37 Tm +(DSPYOFFSET)Tj +/TT8 1 Tf +9 0 0 9 234.0097 281.37 Tm +0.2589 Tw +[( returns the current )]TJ +/TT10 1 Tf +10 0 0 10 322.6686 281.37 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 328.6696 281.37 Tm +0.2589 Tw +[( offset for )]TJ +/TT15 1 Tf +5.2415 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.2589 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 469.9495 281.37 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 475.9505 281.37 Tm +0.2589 Tw +[( origin of the)]TJ +-33.5501 -1.3278 TD +0.0167 Tw +[(display streams coordinate system in the destination bitmaps coordinate system. It is set)]TJ +0 -1.2278 TD +0 Tw +(to )Tj +/TT15 1 Tf +1.1221 0 TD +(YOFFSET)Tj +/TT8 1 Tf +4.2007 0 TD +( if non-)Tj +/TT10 1 Tf +10 0 0 10 250.4077 258.37 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 268.4106 258.37 Tm +(.)Tj +-10.4901 -2.1111 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 192.2044 239.37 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 198.2054 239.37 Tm +0.0989 Tw +[( offset and )]TJ +/TT10 1 Tf +10 0 0 10 244.8295 239.37 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 250.8305 239.37 Tm +0.0989 Tw +[( offset for a display stream are both initially 0 \(no )]TJ +/TT10 1 Tf +10 0 0 10 461.8264 239.37 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 467.8274 239.37 Tm +0.0989 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 482.5757 239.37 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 488.5767 239.37 Tm +(-coordinate)Tj +-34.953 -1.3278 TD +(translation\).)Tj +0 -2.0056 TD +0.0056 Tw +[(Warning: The window system maintains the )]TJ +/TT10 1 Tf +10 0 0 10 355.5717 209.37 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 361.5727 209.37 Tm +0.0056 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 381.4085 209.37 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 387.4095 209.37 Tm +0.0056 Tw +[( offset of a windows display stream.)]TJ +-23.7122 -1.3278 TD +0 Tw +(Users should be very careful about changing these fields.)Tj +/TT10 1 Tf +10 0 0 10 150 175.14 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 175.14 Tm +(DSPTEXTURE)Tj +/F3 1 Tf +10 0 0 10 210.0098 175.14 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.8798 175.14 Tm +(TEXTURE DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 326.2982 175.14 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 332.2992 175.14 Tm +[( )-17314.5([Function])]TJ +-17.5888 -1.8833 TD +0.0267 Tw +(Returns the current texture used as the background pattern for )Tj +/TT15 1 Tf +28.2369 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0267 Tw +[(. It is set)]TJ +-36.0382 -1.2944 TD +0 Tw +(to )Tj +/TT15 1 Tf +1.1221 0 TD +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +( if non-)Tj +/TT10 1 Tf +10 0 0 10 250.4077 146.54 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 268.4106 146.54 Tm +(. Initially the value of )Tj +/TT10 1 Tf +10 0 0 10 357.6855 146.54 Tm +(WHITESHADE)Tj +/TT8 1 Tf +9 0 0 9 417.6953 146.54 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 123.31 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 123.31 Tm +(DSPSOURCETYPE)Tj +/F3 1 Tf +10 0 0 10 226.2124 123.31 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.0824 123.31 Tm +(SOURCETYPE DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 358.7035 123.31 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 364.7045 123.31 Tm +[( )-13713.9([Function])]TJ +-21.1894 -1.8889 TD +0.1878 Tw +(Returns the current )Tj +/TT10 1 Tf +10 0 0 10 258.6154 106.31 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 294.6212 106.31 Tm +0.1878 Tw +[( sourcetype used when printing characters to the display)]TJ +-13.4024 -1.3333 TD +0.2622 Tw +[(stream. It is set to )]TJ +/TT15 1 Tf +9.8092 0 TD +0 Tw +(SOURCETYPE)Tj +/TT8 1 Tf +6.001 0 TD +0.2622 Tw +(, if non-)Tj +/TT10 1 Tf +10 0 0 10 351.7643 94.31 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 369.7672 94.31 Tm +0.2622 Tw +[(. Must be either )]TJ +/TT10 1 Tf +10 0 0 10 448.0169 94.31 Tm +0 Tw +(INPUT)Tj +/TT8 1 Tf +9 0 0 9 478.0218 94.31 Tm +0.2622 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 495.7101 94.31 Tm +0 Tw +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 531.7159 94.31 Tm +(.)Tj +-39.7462 -1.3333 TD +(Initially )Tj +/TT10 1 Tf +10 0 0 10 207.438 82.31 Tm +(INPUT)Tj +/TT8 1 Tf +9 0 0 9 237.4428 82.31 Tm +(.)Tj +ET +endstream +endobj +103 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +105 0 obj +<< +/Length 7143 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-23)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(DSPSCROLL)Tj +/F3 1 Tf +10 0 0 10 156.6089 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.4789 568.26 Tm +(SWITCHSETTING DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 305.3026 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 311.3036 568.26 Tm +[( )-14314([Function])]TJ +-20.5893 -1.8833 TD +0.0467 Tw +(Returns the current value of the "scroll flag," a flag that determines the scrolling behavior)Tj +0 -1.2278 TD +0 Tw +(of the display stream; either )Tj +/TT10 1 Tf +10 0 0 10 239.45 540.26 Tm +(ON)Tj +/TT8 1 Tf +9 0 0 9 251.4519 540.26 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 264.44 540.26 Tm +(OFF)Tj +/TT8 1 Tf +9 0 0 9 282.4429 540.26 Tm +(. If )Tj +/TT10 1 Tf +10 0 0 10 297.5 540.26 Tm +(ON)Tj +/TT8 1 Tf +9 0 0 9 309.5019 540.26 Tm +(, the bits in the display streamss destination)Tj +-20.3891 -1.3278 TD +0.0089 Tw +(bitmap are moved after any linefeed that moves the current position out of the destination)Tj +0 -1.2278 TD +0.0222 Tw +[(bitmap. Any bits moved out of the current clipping region are lost. Does not adjust the )]TJ +/TT10 1 Tf +10 0 0 10 480.0815 517.2599 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 126 505.26 Tm +(offset, )Tj +/TT10 1 Tf +10 0 0 10 152.4682 505.26 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 158.4692 505.26 Tm +( offset, or clipping region of the display stream. Initially )Tj +/TT10 1 Tf +10 0 0 10 384.8228 505.26 Tm +(OFF)Tj +/TT8 1 Tf +9 0 0 9 402.8257 505.26 Tm +(. )Tj +-30.7584 -2.1111 TD +(Sets the scroll flag to )Tj +/TT15 1 Tf +9.334 0 TD +(SWITCHSETTING)Tj +/TT8 1 Tf +7.8013 0 TD +(, if non-)Tj +/TT10 1 Tf +10 0 0 10 310.9702 486.26 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 328.9731 486.26 Tm +(.)Tj +-22.5526 -2.1056 TD +0.0211 Tw +[(Note: The word "scrolling" also describes the use of "scroll bars" on the left and bottom of)]TJ +0 -1.2222 TD +0 Tw +(a window to move an object displayed in a window. )Tj +-5.3333 -2.8889 TD +0.0122 Tw +[(Each window has an associated display stream. To get the window of a particular display stream, use)]TJ +/TT10 1 Tf +10 0 0 10 78 419.26 Tm +0 Tw +(WFROMDS)Tj +/TT8 1 Tf +9 0 0 9 120.0068 419.26 Tm +(:)Tj +/TT10 1 Tf +10 0 0 10 102 396.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 396.03 Tm +(WFROMDS)Tj +/F3 1 Tf +10 0 0 10 145.8071 396.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 148.6771 396.03 Tm +(DISPLAYSTREAM DONTCREATE)Tj +/F3 1 Tf +10 0 0 10 278.2982 396.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 282.1882 396.03 Tm +[( )-17549.1([Function])]TJ +-17.3543 -1.8833 TD +0.0244 Tw +(Returns the window associated with )Tj +/TT15 1 Tf +16.5119 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0244 Tw +(, creating a window if one does not)Tj +-24.3131 -1.2944 TD +0.1189 Tw +(exist \(and )Tj +/TT15 1 Tf +4.7998 0 TD +0 Tw +(DONTCREATE)Tj +/TT8 1 Tf +6.001 0 TD +0.1189 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 236.2805 367.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 254.2834 367.43 Tm +0.1189 Tw +[(\). Returns )]TJ +/TT10 1 Tf +10 0 0 10 300.7839 367.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 318.7869 367.43 Tm +0.1189 Tw +[( if the destination of )]TJ +/TT15 1 Tf +9.6926 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.1189 Tw +[( is)]TJ +-38.9146 -1.3278 TD +0 Tw +(not a screen bitmap that supports a window system.)Tj +0 -2.0056 TD +(If )Tj +/TT15 1 Tf +1.0433 0 TD +(DONTCREATE)Tj +/TT8 1 Tf +6.001 0 TD +0.1233 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 220.9384 337.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 238.9413 337.43 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 244.5513 337.43 Tm +(WFROMDS)Tj +/TT8 1 Tf +9 0 0 9 286.5581 337.43 Tm +0.1233 Tw +[( will never create a window, and returns )]TJ +/TT10 1 Tf +10 0 0 10 459.0114 337.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 477.0143 337.43 Tm +0.1233 Tw +[( if)]TJ +/TT15 1 Tf +-39.0016 -1.3278 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +( does not have an associated window.)Tj +/TT10 1 Tf +10 0 0 10 126 306.83 Tm +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 222.0156 306.83 Tm +0.0478 Tw +[( calls )]TJ +/TT10 1 Tf +10 0 0 10 244.923 306.83 Tm +0 Tw +(WFROMDS)Tj +/TT8 1 Tf +9 0 0 9 286.9298 306.83 Tm +0.0478 Tw +[( with )]TJ +/TT10 1 Tf +10 0 0 10 310.5886 306.83 Tm +0.114 Tw +(DONTCREATE = T)Tj +/TT8 1 Tf +9 0 0 9 396.8823 306.83 Tm +0.0478 Tw +(, so it will not create a)Tj +-30.098 -1.3333 TD +0.0589 Tw +[(window unnecessarily. Also, if )]TJ +/TT10 1 Tf +10 0 0 10 256.0914 294.83 Tm +0 Tw +(WFROMDS)Tj +/TT8 1 Tf +9 0 0 9 298.0982 294.83 Tm +0.0589 Tw +[( does create a window, it calls )]TJ +/TT10 1 Tf +10 0 0 10 422.8336 294.83 Tm +0 Tw +(CREATEW)Tj +/TT8 1 Tf +9 0 0 9 464.8405 294.83 Tm +0.0589 Tw +[( with)]TJ +/TT10 1 Tf +10 0 0 10 126 282.83 Tm +0 Tw +(NOOPENFLG = T)Tj +/TT8 1 Tf +9 0 0 9 204.0127 282.83 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 259.6 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 259.6 Tm +(DSPBACKUP)Tj +/F3 1 Tf +10 0 0 10 156.6089 259.6 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.4789 259.6 Tm +(WIDTH DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 262.0956 259.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 268.0966 259.6 Tm +[( )-19114.8([Function])]TJ +-15.7885 -1.8833 TD +0.4244 Tw +(Backs up )Tj +/TT15 1 Tf +5.0877 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.4244 Tw +[( over a character which is )]TJ +/TT15 1 Tf +14.0442 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.4244 Tw +[( screen points wide.)]TJ +/TT10 1 Tf +10 0 0 10 126 231 Tm +0 Tw +(DSPBACKUP)Tj +/TT8 1 Tf +9 0 0 9 180.0088 231 Tm +0.0344 Tw +[( fills the backed over area with the display streams background texture and)]TJ +-6.001 -1.3333 TD +0.4011 Tw +(decreases the )Tj +/TT10 1 Tf +10 0 0 10 188.3142 219 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 194.3152 219 Tm +0.4011 Tw +[( position by )]TJ +/TT15 1 Tf +6.6696 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.4011 Tw +[(. If this would put the )]TJ +/TT10 1 Tf +10 0 0 10 397.4733 219 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 403.4743 219 Tm +0.4011 Tw +[( position less than)]TJ +/TT15 1 Tf +-30.8305 -1.3333 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0667 Tw +[(s left margin, its operation is stopped at the left margin. It returns )]TJ +/TT10 1 Tf +10 0 0 10 471.5924 207 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 477.5934 207 Tm +0.0667 Tw +[( if)]TJ +-39.0659 -1.3333 TD +0 Tw +(any bits were written, )Tj +/TT10 1 Tf +10 0 0 10 215.1255 195 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 233.1284 195 Tm +( otherwise.)Tj +/TT4 1 Tf +10 0 0 10 54 151.71 Tm +(Fonts)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 149 m +486.01 149 l +S +BT +/TT8 1 Tf +9 0 0 9 78 127.05 Tm +0.0067 Tw +(A font is the collection of images that are printed or displayed when characters are output to a graphic)Tj +0 -1.2222 TD +0.0889 Tw +[(output device. Some simple displays and printers can only print characters using one font. Bitmap)]TJ +T* +0 Tw +(displays and graphic printers can print characters using a large number of fonts.)Tj +0 -2.8889 TD +0.1467 Tw +(Fonts are identified by a distinctive style or family \(such as Modern or Classic\), a size \(such as 10)Tj +0 -1.2222 TD +0.0611 Tw +[(points\), and a face \(such as bold or italic\). Fonts also have a rotation that indicates the orientation of)]TJ +T* +0 Tw +(characters on the screen or page. A normal horizontal font \(also called a portrait font\) has a rotation of)Tj +T* +0.0433 Tw +[(0; the rotation of a vertical \(landscape\) font is 90 degrees. While any combination can be specified, in)]TJ +ET +endstream +endobj +106 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +108 0 obj +<< +/Length 5865 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-24)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.1444 Tw +(practice the user will find that only certain combinations of families, sizes, faces, and rotations are)Tj +0 -1.2222 TD +0 Tw +(available for any graphic output device.)Tj +0 -2.8944 TD +0.0167 Tw +(To specify a font to the functions described below, a )Tj +/TT10 1 Tf +10 0 0 10 336.3325 532.49 Tm +0 Tw +(FAMILY)Tj +/TT8 1 Tf +9 0 0 9 372.3384 532.49 Tm +0.0167 Tw +[( is represented by a literal atom, a )]TJ +/TT10 1 Tf +10 0 0 10 509.9095 532.49 Tm +0 Tw +(SIZE)Tj +/TT8 1 Tf +9 0 0 9 126 520.49 Tm +0.4 Tw +(by a positive integer, and a )Tj +/TT10 1 Tf +10 0 0 10 257.2523 520.49 Tm +0 Tw +(FACE)Tj +/TT8 1 Tf +9 0 0 9 281.2562 520.49 Tm +0.4 Tw +[( by a three-element list of the form \()]TJ +/TT10 1 Tf +10 0 0 10 452.3512 520.49 Tm +0.961 Tw +(WEIGHT SLOPE)Tj +-32.6351 -1.2 TD +0 Tw +(EXPANSION)Tj +/TT8 1 Tf +9 0 0 9 180.0088 508.49 Tm +0.0822 Tw +(\). )Tj +/TT10 1 Tf +10 0 0 10 191.2358 508.49 Tm +0 Tw +(WEIGHT)Tj +/TT8 1 Tf +9 0 0 9 227.2417 508.49 Tm +0.0822 Tw +(, which indicates the thickness of the characters, can be )Tj +/TT10 1 Tf +10 0 0 10 455.0406 508.49 Tm +0 Tw +(BOLD)Tj +/TT8 1 Tf +9 0 0 9 479.0446 508.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 484.2845 508.49 Tm +(MEDIUM)Tj +/TT8 1 Tf +9 0 0 9 520.2904 508.49 Tm +0.0822 Tw +(, or)Tj +/TT10 1 Tf +10 0 0 10 126 496.49 Tm +0 Tw +(LIGHT)Tj +/TT8 1 Tf +9 0 0 9 156.0049 496.49 Tm +(; )Tj +/TT10 1 Tf +10 0 0 10 161.1949 496.49 Tm +(SLOPE)Tj +/TT8 1 Tf +9 0 0 9 191.1997 496.49 Tm +0.0767 Tw +[( can be )]TJ +/TT10 1 Tf +10 0 0 10 223.0427 496.49 Tm +0 Tw +(ITALIC)Tj +/TT8 1 Tf +9 0 0 9 259.0486 496.49 Tm +0.0767 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 273.3968 496.49 Tm +0 Tw +(REGULAR)Tj +/TT8 1 Tf +9 0 0 9 315.4036 496.49 Tm +0.0767 Tw +(; and )Tj +/TT10 1 Tf +10 0 0 10 338.7695 496.49 Tm +0 Tw +(EXPANSION)Tj +/TT8 1 Tf +9 0 0 9 392.7783 496.49 Tm +0.0767 Tw +[( can be )]TJ +/TT10 1 Tf +10 0 0 10 424.6212 496.49 Tm +0 Tw +(REGULAR)Tj +/TT8 1 Tf +9 0 0 9 466.6281 496.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 471.8181 496.49 Tm +(COMPRESSED)Tj +/TT8 1 Tf +9 0 0 9 531.8278 496.49 Tm +(,)Tj +-45.092 -1.3278 TD +0.1455 Tw +[(or EXPANDED, indicating how spread out the characters are. For convenience, faces may also be)]TJ +0 -1.2222 TD +0.0856 Tw +(specified by three-character atoms, where each character is the first letter of the corresponding field.)Tj +0 -1.2278 TD +0 Tw +(Thus, )Tj +/TT10 1 Tf +10 0 0 10 151.5751 462.49 Tm +(MRR)Tj +/TT8 1 Tf +9 0 0 9 169.578 462.49 Tm +0.12 Tw +[( is a synonym for \()]TJ +/TT10 1 Tf +10 0 0 10 248.7842 462.49 Tm +0.287 Tw +(MEDIUM REGULAR REGULAR)Tj +/TT8 1 Tf +9 0 0 9 386.5457 462.49 Tm +0.12 Tw +[(\). In addition, certain common face)]TJ +-28.9495 -1.3278 TD +0 Tw +(combinations may be indicated by special literal atoms:)Tj +/TT10 1 Tf +10 0 0 10 210 432.49 Tm +(STANDARD = \(MEDIUM REGULAR REGULAR\) = MRR)Tj +0 -1.2 TD +(ITALIC = \(MEDIUM ITALIC REGULAR\) = MIR)Tj +T* +(BOLD = \(BOLD REGULAR REGULAR\) = BRR)Tj +T* +(BOLDITALIC = \(BOLD ITALIC REGULAR\) = BIR)Tj +/TT8 1 Tf +9 0 0 9 126 369.54 Tm +0.1511 Tw +[(Interlisp represents all the information related to a font in an object called a font descriptor. Font)]TJ +0 -1.2222 TD +0.1167 Tw +[(descriptors contain the family, size, etc. properties used to represent the font. In addition, for each)]TJ +T* +0.0411 Tw +(character in the font, the font descriptor contains width information for the character and \(for display)Tj +T* +0 Tw +(fonts\) a bitmap containing the picture of the character.)Tj +0 -2.8944 TD +0.0567 Tw +(The font functions can take fonts specified in a variety of different ways. )Tj +/TT10 1 Tf +10 0 0 10 424.7391 310.49 Tm +0 Tw +(DSPFONT)Tj +/TT8 1 Tf +9 0 0 9 466.746 310.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 471.756 310.49 Tm +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 531.7657 310.49 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 126 298.49 Tm +(FONTCOPY)Tj +/TT8 1 Tf +9 0 0 9 174.0078 298.49 Tm +0.0222 Tw +(, etc. can be applied to font descriptors, "font lists" such as \()Tj +/TT10 1 Tf +10 0 0 10 413.9937 298.49 Tm +0.054 Tw +(MODERN 10)Tj +/TT8 1 Tf +9 0 0 9 468.5425 298.49 Tm +0.0222 Tw +(\), image streams)Tj +-38.0603 -1.3278 TD +0.1955 Tw +[(\(coerced to its current font\), or windows \(coerced to the current font of its display stream\). The)]TJ +0 -1.2278 TD +0 Tw +(printout command ".)Tj +/TT10 1 Tf +10 0 0 10 209.1577 275.49 Tm +(FONT)Tj +/TT8 1 Tf +9 0 0 9 233.1616 275.49 Tm +(" will also accept fonts specified in any of these forms.)Tj +-11.9068 -2.9944 TD +(In general font files use the following format: )Tj +0 -2.8889 TD +0.06 Tw +(The family name \(e.g., Modern\); a two digit size \(e.g., 08\); a three letter Face \(e.g., BIR, for Bold Italic)Tj +0 -1.2222 TD +0.0322 Tw +(Regular\); the letter C followed by the fonts character set in base 8 \(e.g., C41\); and finally an extension)Tj +T* +0 Tw +(\(e.g., Displayfont\).)Tj +/TT6 1 Tf +10 0 0 10 248.28 115.42 Tm +(Family)Tj +2.8995 5.6 TD +(Size)Tj +1.861 -5.6 TD +(Face)Tj +/TT10 1 Tf +-5.2885 2.658 TD +(Modern08-BIR-C41.Displayfont)Tj +/TT6 1 Tf +7.4815 2.142 TD +(CharacterSet \(base 8\))Tj +4.323 -4.8 TD +(Extension)Tj +ET +0 G +1 J 1 j 1 w 10 M []0 d +1 i +263 124 m +S +0 J 0 j +263 124 m +263 130.29 l +S +1 J 1 j +263 130.29 m +S +263 136 m +265.47 128.39 l +260.53 128.39 l +f* +383 124 m +S +0 J 0 j +383 124 m +383 130.29 l +S +1 J 1 j +383 130.29 m +S +383 136 m +385.47 128.39 l +380.53 128.39 l +f* +331 160 m +S +0 J 0 j +331 160 m +331 153.7 l +S +1 J 1 j +331 153.7 m +S +331 148 m +328.53 155.61 l +333.47 155.61 l +f* +287 160 m +S +0 J 0 j +287 160 m +287 153.7 l +S +1 J 1 j +287 153.7 m +S +287 148 m +284.53 155.61 l +289.47 155.61 l +f* +BT +8 0 0 8 267.665 163.54 Tm +(\(two digits\))Tj +ET +295 140 m +S +0 J 0 j +295 140 m +295 132 l +S +1 J 1 j +295 132 m +S +0 J 0 j +295 132 m +315 132 l +S +1 J 1 j +315 132 m +S +0 J 0 j +315 132 m +315 140 l +S +1 J 1 j +315 140 m +307 120 m +S +0 J 0 j +307 120 m +307 132 l +S +1 J 1 j +307 132 m +S +BT +/TT8 1 Tf +9 0 0 9 126 88.54 Tm +( )Tj +ET +endstream +endobj +109 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +111 0 obj +<< +/Length 7930 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-25)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(FONTCREATE)Tj +/F3 1 Tf +10 0 0 10 162.0098 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 568.26 Tm +(FAMILY SIZE FACE ROTATION DEVICE NOERRORFLG CHARSET)Tj +/TT10 1 Tf +10 0 0 10 440.3246 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 446.3256 568.26 Tm +( )Tj +-37.5917 -1.1056 TD +([Function])Tj +2 -1.7778 TD +0.1078 Tw +(Returns a font descriptor for the specified font. )Tj +/TT15 1 Tf +22.1468 0 TD +0 Tw +(FAMILY)Tj +/TT8 1 Tf +3.6006 0 TD +0.1078 Tw +[( is a litatom specifying the font)]TJ +-25.7473 -1.2889 TD +0.0156 Tw +(family. )Tj +/TT15 1 Tf +3.6351 0 TD +0 Tw +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +[( is an integer indicating the size of the font in points. )]TJ +/TT15 1 Tf +23.859 0 TD +0 Tw +(FACE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +[( specifies the face)]TJ +-32.2949 -1.2944 TD +0.1689 Tw +(characteristics in one of the formats listed above; if )Tj +/TT15 1 Tf +24.1264 0 TD +0 Tw +(FACE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1689 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 378.7151 519.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 396.718 519.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 402.738 519.06 Tm +(STANDARD)Tj +/TT8 1 Tf +9 0 0 9 450.7458 519.06 Tm +0.1689 Tw +[( is used.)]TJ +/TT15 1 Tf +-36.0829 -1.3333 TD +0 Tw +(ROTATION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0278 Tw +(, which specifies the orientation of the font, is 0 \(or )Tj +/TT10 1 Tf +10 0 0 10 374.835 507.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 392.8379 507.06 Tm +0.0278 Tw +(\) for a portrait font and)Tj +-29.6487 -1.3278 TD +0.0656 Tw +(90 for a landscape font. )Tj +/TT15 1 Tf +11.136 0 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +[( indicates the output device for the font, and can be any)]TJ +-14.7366 -1.2944 TD +0.2033 Tw +(image stream type , such as )Tj +/TT10 1 Tf +10 0 0 10 248.623 483.46 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 290.6299 483.46 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 296.9599 483.46 Tm +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 356.9696 483.46 Tm +0.2033 Tw +(, etc. )Tj +/TT15 1 Tf +3.109 0 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.2033 Tw +[( may also be an)]TJ +-32.3729 -1.3278 TD +0.0911 Tw +(image stream, in which case the type of the stream determines the font device. )Tj +/TT15 1 Tf +36.3994 0 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +-36.3994 -1.2944 TD +(defaults to )Tj +/TT10 1 Tf +10 0 0 10 170.4507 459.86 Tm +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 212.4575 459.86 Tm +(.)Tj +-9.6064 -2.1111 TD +(The )Tj +/TT15 1 Tf +1.9605 0 TD +(FAMILY)Tj +/TT8 1 Tf +3.6006 0 TD +0.0367 Tw +[( argument to )]TJ +/TT10 1 Tf +10 0 0 10 230.5563 440.86 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 290.5661 440.86 Tm +0.0367 Tw +[( may also be a list, in which case it is interpreted)]TJ +-18.2851 -1.3278 TD +0.1533 Tw +(as a font-specification quintuple, a list of the form \()Tj +/TT15 1 Tf +23.9 0 TD +0.3667 Tw +(FAMILY SIZE FACE ROTATION)Tj +-23.9 -1.2944 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.4467 Tw +[(\). Thus, )]TJ +/TT10 1 Tf +10 0 0 10 204.7074 417.26 Tm +1.071 Tw +(\(FONTCREATE \(GACHA 10 BOLD\)\))Tj +/TT8 1 Tf +9 0 0 9 410.8658 417.26 Tm +0.4467 Tw +[( is equivalent to)]TJ +-31.6518 -1.3333 TD +0 Tw +(\()Tj +/TT10 1 Tf +10 0 0 10 128.9971 405.26 Tm +0.035 Tw +(FONTCREATE GACHA 10 BOLD)Tj +/TT8 1 Tf +9 0 0 9 286.0724 405.26 Tm +0.0144 Tw +(\). )Tj +/TT15 1 Tf +1.1119 0 TD +0 Tw +(FAMILY)Tj +/TT8 1 Tf +3.6006 0 TD +0.0144 Tw +[( may also be a font descriptor, in which)]TJ +-22.4983 -1.3278 TD +0 Tw +(case that descriptor is simply returned.)Tj +0 -2.0056 TD +0.0578 Tw +(If a font descriptor has already been created for the specified font, )Tj +/TT10 1 Tf +10 0 0 10 395.802 375.26 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 455.8117 375.26 Tm +0.0578 Tw +[( simply)]TJ +-36.6458 -1.3333 TD +0.0289 Tw +[(returns it. If it has not been created, )]TJ +/TT10 1 Tf +10 0 0 10 273.6496 363.26 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 333.6593 363.26 Tm +0.0289 Tw +[( has to read the font information from)]TJ +-23.0733 -1.3278 TD +0.0111 Tw +[(a font file that contains the information for that font. The name of an appropriate font file,)]TJ +0 -1.2222 TD +0 Tw +(and the algorithm for searching depends on the device that the font is for, and is described)Tj +T* +0.0522 Tw +[(in more detail below. If an appropriate font file is found, it is read into a font descriptor.)]TJ +0 -1.2278 TD +0.2567 Tw +(If no file is found, for )Tj +/TT10 1 Tf +10 0 0 10 226.3092 318.26 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 268.316 318.26 Tm +0.2567 Tw +[( fonts )]TJ +/TT10 1 Tf +10 0 0 10 297.3345 318.26 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 357.3442 318.26 Tm +0.2567 Tw +[( looks for fonts with less face)]TJ +-25.7049 -1.3278 TD +0.1433 Tw +(information and fakes the remaining faces \(such as by doubling the bit pattern of each)Tj +0 -1.2222 TD +0.3222 Tw +[(character or slanting it\). For hardcopy printer fonts, there is no acceptable faking)]TJ +T* +0 Tw +(algorithm.)Tj +0 -2.0056 TD +0.5478 Tw +(If no acceptable font is found, the action of )Tj +/TT10 1 Tf +10 0 0 10 341.7919 266.26 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 401.8016 266.26 Tm +0.5478 Tw +[( is determined by)]TJ +/TT10 1 Tf +10 0 0 10 126 254.26 Tm +0 Tw +(NOERRORFLG)Tj +/TT8 1 Tf +9 0 0 9 186.0097 254.26 Tm +0.0689 Tw +[(. If )]TJ +/TT10 1 Tf +10 0 0 10 202.899 254.26 Tm +0 Tw +(NOERRORFLG)Tj +/TT8 1 Tf +9 0 0 9 262.9088 254.26 Tm +0.0689 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 275.0824 254.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 293.0853 254.26 Tm +0.0689 Tw +(, it generates a )Tj +/TT10 1 Tf +10 0 0 10 354.852 254.26 Tm +0.164 Tw +(FONT NOT FOUND)Tj +/TT8 1 Tf +9 0 0 9 442.1456 254.26 Tm +0.0689 Tw +[( error with)]TJ +-35.1273 -1.3333 TD +0 Tw +(the offending font specification; otherwise, )Tj +/TT10 1 Tf +10 0 0 10 298.3052 242.26 Tm +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 358.3149 242.26 Tm +( returns )Tj +/TT10 1 Tf +10 0 0 10 391.6518 242.26 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 409.6548 242.26 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 126 223.26 Tm +(CHARSET)Tj +/TT8 1 Tf +9 0 0 9 168.0068 223.26 Tm +0.1222 Tw +[( is the character set which will be read to create the font. Defaults to 0. For)]TJ +-4.6674 -1.3333 TD +0 Tw +(more information on character sets, see )Tj +/TT10 1 Tf +10 0 0 10 283.9966 211.26 Tm +(NS)Tj +/TT8 1 Tf +9 0 0 9 295.9985 211.26 Tm +( Characters.)Tj +/TT10 1 Tf +10 0 0 10 102 187.97 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 187.97 Tm +(FONTP)Tj +/TT4 1 Tf +10 0 0 10 135.0054 187.97 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 137.7837 187.97 Tm +(X)Tj +/TT10 1 Tf +10 0 0 10 143.1846 187.97 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 149.1856 187.97 Tm +( )Tj +32.8272 0 TD +([Function])Tj +-35.4033 -1.8889 TD +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a font descriptor; )Tj +/TT10 1 Tf +10 0 0 10 261.5845 170.97 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 279.5874 170.97 Tm +( otherwise.)Tj +/TT10 1 Tf +10 0 0 10 102 147.68 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 147.68 Tm +(FONTPROP)Tj +/TT4 1 Tf +10 0 0 10 151.208 147.68 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 153.9863 147.68 Tm +(FONT PROP)Tj +/TT10 1 Tf +10 0 0 10 202.5942 147.68 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 208.5952 147.68 Tm +[( )-25726.1([Function])]TJ +-9.1772 -1.8833 TD +0.0944 Tw +(Returns the value of the )Tj +/TT15 1 Tf +11.2906 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0944 Tw +[( property of font )]TJ +/TT15 1 Tf +7.9432 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0944 Tw +[(. The following font properties are)]TJ +-24.0346 -1.2889 TD +0 Tw +(recognized:)Tj +/TT10 1 Tf +10 0 0 10 126 101.08 Tm +(FAMILY)Tj +/TT8 1 Tf +9 0 0 9 174 101.08 Tm +0.2322 Tw +(The style of the font, represented as a literal atom, such as )Tj +/TT10 1 Tf +10 0 0 10 431.1157 101.08 Tm +0 Tw +(CLASSIC)Tj +/TT8 1 Tf +9 0 0 9 473.1225 101.08 Tm +0.2322 Tw +[( or)]TJ +/TT10 1 Tf +10 0 0 10 174 89.08 Tm +0 Tw +(MODERN)Tj +/TT8 1 Tf +9 0 0 9 210.0058 89.08 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 138 70.08 Tm +(SIZE)Tj +/TT8 1 Tf +9 0 0 9 174 70.08 Tm +0.1233 Tw +(A positive integer giving the size of the font, in printers points \(1/72 of an)Tj +0 -1.3278 TD +0 Tw +(inch\).)Tj +ET +endstream +endobj +112 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +114 0 obj +<< +/Length 7875 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-26)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +7.8 -4.251 TD +(WEIGHT)Tj +/TT8 1 Tf +9 0 0 9 222 569.49 Tm +(The thickness of the characters; one of )Tj +/TT10 1 Tf +10 0 0 10 375.2021 569.49 Tm +(BOLD)Tj +/TT8 1 Tf +9 0 0 9 399.2061 569.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 403.7061 569.49 Tm +(MEDIUM)Tj +/TT8 1 Tf +9 0 0 9 439.7119 569.49 Tm +(, or )Tj +/TT10 1 Tf +10 0 0 10 454.9302 569.49 Tm +(LIGHT)Tj +/TT8 1 Tf +9 0 0 9 484.9351 569.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 180 550.49 Tm +(SLOPE)Tj +/TT8 1 Tf +9 0 0 9 222 550.49 Tm +(The "slope" of the characters in the font; one of )Tj +/TT10 1 Tf +10 0 0 10 409.1543 550.49 Tm +(ITALIC)Tj +/TT8 1 Tf +9 0 0 9 445.1602 550.49 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 458.1284 550.49 Tm +(REGULAR)Tj +/TT8 1 Tf +9 0 0 9 500.1353 550.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 156 531.49 Tm +(EXPANSION)Tj +/TT8 1 Tf +9 0 0 9 222 531.49 Tm +0.3778 Tw +(The extent to which the characters in the font are spread out; one of)Tj +/TT10 1 Tf +10 0 0 10 222 519.49 Tm +0 Tw +(REGULAR)Tj +/TT8 1 Tf +9 0 0 9 264.0068 519.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 272.7368 519.49 Tm +(COMPRESSED)Tj +/TT8 1 Tf +9 0 0 9 332.7466 519.49 Tm +0.47 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 356.4248 519.49 Tm +0 Tw +(EXPANDED)Tj +/TT8 1 Tf +9 0 0 9 404.4326 519.49 Tm +0.47 Tw +[(. Most available fonts have)]TJ +/TT10 1 Tf +10 0 0 10 222 507.49 Tm +0 Tw +(EXPANSION = REGULAR)Tj +/TT8 1 Tf +9 0 0 9 336.0185 507.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 186 488.49 Tm +(FACE)Tj +/TT8 1 Tf +9 0 0 9 222 488.49 Tm +0.0389 Tw +(A three-element list of the form \()Tj +/TT10 1 Tf +10 0 0 10 354.411 488.49 Tm +0.093 Tw +(WEIGHT SLOPE EXPANSION)Tj +/TT8 1 Tf +9 0 0 9 488.2925 488.49 Tm +0.0389 Tw +(\), giving all)Tj +-29.5881 -1.3278 TD +0 Tw +(of the typeface parameters.)Tj +/TT10 1 Tf +10 0 0 10 162 458.49 Tm +(ROTATION)Tj +/TT8 1 Tf +9 0 0 9 222 458.49 Tm +0.1422 Tw +(An integer that gives the orientation of the font characters on the screen or)Tj +T* +0.0856 Tw +[(page, in degrees. A normal horizontal font \(also called a portrait font\) has a)]TJ +0 -1.2222 TD +0 Tw +(rotation of 0; the rotation of a vertical \(landscape\) font is 90.)Tj +/TT10 1 Tf +10 0 0 10 174 417.49 Tm +(DEVICE)Tj +/TT8 1 Tf +9 0 0 9 222 417.49 Tm +0.0567 Tw +(The device that the font can be printed on; one of )Tj +/TT10 1 Tf +10 0 0 10 424.7838 417.49 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 466.7906 417.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 471.8007 417.49 Tm +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 531.8104 417.49 Tm +(,)Tj +-34.4234 -1.3278 TD +(etc.)Tj +/TT10 1 Tf +10 0 0 10 174 387.49 Tm +(ASCENT)Tj +/TT8 1 Tf +9 0 0 9 222 387.49 Tm +0.1167 Tw +(An integer giving the maximum height of any character in the font from its)Tj +T* +0.9478 Tw +[(base line \(the printing position\). The top line will be at)]TJ +/TT10 1 Tf +10 0 0 10 222 364.49 Tm +0 Tw +(BASELINE+ASCENT-1)Tj +/TT8 1 Tf +9 0 0 9 324.0166 364.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 168 345.49 Tm +(DESCENT)Tj +/TT8 1 Tf +9 0 0 9 222 345.49 Tm +0.0989 Tw +(An integer giving the maximum extent of any character below the base line,)Tj +T* +0.1889 Tw +[(such as the lower part of a "p". The bottom line of a character will be at)]TJ +/TT10 1 Tf +10 0 0 10 222 322.49 Tm +0 Tw +(BASELINE-DESCENT)Tj +/TT8 1 Tf +9 0 0 9 318.0156 322.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 174 303.49 Tm +(HEIGHT)Tj +/TT8 1 Tf +9 0 0 9 222 303.49 Tm +(Equal to )Tj +/TT10 1 Tf +10 0 0 10 257.4331 303.49 Tm +(ASCENT + DESCENT)Tj +/TT8 1 Tf +9 0 0 9 353.4487 303.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 186 284.49 Tm +(SPEC)Tj +/TT8 1 Tf +9 0 0 9 222 284.49 Tm +0.0111 Tw +(The \()Tj +/TT10 1 Tf +10 0 0 10 242.4115 284.49 Tm +0.027 Tw +(FAMILY SIZE FACE ROTATION DEVICE)Tj +/TT8 1 Tf +9 0 0 9 435.5228 284.49 Tm +0.0111 Tw +(\) quintuple by which the)Tj +-23.7248 -1.3278 TD +0 Tw +(font is known to Lisp.)Tj +/TT10 1 Tf +10 0 0 10 150 254.49 Tm +(DEVICESPEC)Tj +/TT8 1 Tf +9 0 0 9 222 254.49 Tm +0.3056 Tw +(The \()Tj +/TT10 1 Tf +10 0 0 10 245.0615 254.49 Tm +0.733 Tw +(FAMILY SIZE FACE ROTATION DEVICE)Tj +/TT8 1 Tf +9 0 0 9 466.4128 254.49 Tm +0.3056 Tw +(\) quintuple that)Tj +-27.157 -1.3278 TD +0.0522 Tw +[(identifies what will be used to represent the font on the display or printer. It)]TJ +0 -1.2278 TD +0.1944 Tw +(will differ from the )Tj +/TT10 1 Tf +10 0 0 10 307.2358 231.49 Tm +0 Tw +(SPEC)Tj +/TT8 1 Tf +9 0 0 9 331.2397 231.49 Tm +0.1944 Tw +[( property only if an implicit coercion is done to)]TJ +-12.1378 -1.3278 TD +0 Tw +(approximate the specified font with one that actually exists on the device.)Tj +/TT10 1 Tf +10 0 0 10 180 201.49 Tm +(SCALE)Tj +/TT8 1 Tf +9 0 0 9 222 201.49 Tm +0.0656 Tw +(The units per printers point \(1/72 of an inch\) in which the font is measured.)Tj +T* +0.1867 Tw +(For example, this is 35.27778 \(the number of micas per printers point\) for)Tj +0 -1.2222 TD +0 Tw +(Interpress fonts, which are measured in terms of micas.)Tj +/TT10 1 Tf +10 0 0 10 150 156.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 156.26 Tm +(FONTCOPY)Tj +/F3 1 Tf +10 0 0 10 199.208 156.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 202.078 156.26 Tm +(OLDFONT PROP)Tj +7.1991 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 272.27 156.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 275.05 156.26 Tm +(VAL)Tj +1.8 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 296.65 156.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 299.43 156.26 Tm +(PROP)Tj +2.4 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 326.43 156.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 329.21 156.26 Tm +(VAL)Tj +1.8 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 350.81 156.26 Tm +( ...)Tj +/TT10 1 Tf +1.112 0 TD +(\))Tj +/TT8 1 Tf +9 0 0 9 367.931 156.26 Tm +[( )-8617.7([NoSpread Function])]TJ +-21.5479 -2.1778 TD +0.2089 Tw +(Returns a font descriptor that is a copy of the font )Tj +/TT15 1 Tf +24.4731 0 TD +0 Tw +(OLDFONT)Tj +/TT8 1 Tf +4.2007 0 TD +0.2089 Tw +(, but which differs from)Tj +/TT15 1 Tf +-28.6738 -1.2889 TD +0 Tw +(OLDFONT)Tj +/TT8 1 Tf +4.2007 0 TD +0.2856 Tw +[( in that )]TJ +/TT15 1 Tf +4.2141 0 TD +0 Tw +(OLDFONT)Tj +/TT8 1 Tf +4.2007 0 TD +0.2856 Tw +(s properties are replaced by the specified properties and)Tj +-12.6155 -1.2944 TD +0.1022 Tw +[(values. Thus, \()]TJ +/TT10 1 Tf +10 0 0 10 236.7585 113.41 Tm +0.245 Tw +(FONTCOPY FONT WEIGHT BOLD DEVICE INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 531.0544 113.41 Tm +0 Tw +(\))Tj +-39.6727 -1.3333 TD +0.1533 Tw +(will return a bold Interpress font with all other properties the same as those of )Tj +/TT10 1 Tf +10 0 0 10 507.7225 101.41 Tm +0 Tw +(FONT)Tj +/TT8 1 Tf +9 0 0 9 531.7264 101.41 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 174 89.41 Tm +(FONTCOPY)Tj +/TT8 1 Tf +9 0 0 9 222.0078 89.41 Tm +0.2844 Tw +[( accepts the properties )]TJ +/TT10 1 Tf +10 0 0 10 323.5266 89.41 Tm +0 Tw +(FAMILY)Tj +/TT8 1 Tf +9 0 0 9 359.5325 89.41 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 366.5925 89.41 Tm +(SIZE)Tj +/TT8 1 Tf +9 0 0 9 390.5964 89.41 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 397.6564 89.41 Tm +(WEIGHT)Tj +/TT8 1 Tf +9 0 0 9 433.6622 89.41 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 440.7222 89.41 Tm +(SLOPE)Tj +/TT8 1 Tf +9 0 0 9 470.7271 89.41 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 477.7871 89.41 Tm +(EXPANSION)Tj +/TT8 1 Tf +9 0 0 9 531.7959 89.41 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 77.41 Tm +(FACE)Tj +/TT8 1 Tf +9 0 0 9 198.0039 77.41 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 202.5639 77.41 Tm +(ROTATION)Tj +/TT8 1 Tf +9 0 0 9 250.5717 77.41 Tm +0.0067 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 272.6776 77.41 Tm +0 Tw +(DEVICE)Tj +/TT8 1 Tf +9 0 0 9 308.6834 77.41 Tm +0.0067 Tw +[(. If the first property is a list, it is taken to be the)]TJ +/TT15 1 Tf +21.4327 0 TD +0.0144 Tw +[( PROP)]TJ +3.0114 -0.3333 TD +0 Tw +(1)Tj +-39.4089 -1.2944 TD +(VAL)Tj +1.8 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT15 1 Tf +0.4867 0 TD +(PROP)Tj +2.4 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT15 1 Tf +0.4867 0 TD +(VAL)Tj +1.8 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +( )Tj +/TT15 1 Tf +0.4867 0 TD +(...)Tj +/TT8 1 Tf +1.8003 0 TD +0.2367 Tw +[( sequence. Thus, \()]TJ +/TT10 1 Tf +10 0 0 10 355.0031 62.76 Tm +0.567 Tw +(FONTCOPY FONT \(WEIGHT BOLD)Tj +-18.1003 -1.465 TD +0 Tw +(DEVICE INTERPRESS\))Tj +/TT8 1 Tf +9 0 0 9 282.0175 48.11 Tm +(\) is equivalent to the example above.)Tj +ET +endstream +endobj +115 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +117 0 obj +<< +/Length 6382 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-27)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.0933 Tw +(If the property )Tj +/TT10 1 Tf +10 0 0 10 188.8789 569.49 Tm +0 Tw +(NOERROR)Tj +/TT8 1 Tf +9 0 0 9 230.8857 569.49 Tm +0.0933 Tw +[( is specified with value non-)]TJ +/TT10 1 Tf +10 0 0 10 346.9705 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 364.9734 569.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 370.3134 569.49 Tm +(FONTCOPY)Tj +/TT8 1 Tf +9 0 0 9 418.3212 569.49 Tm +0.0933 Tw +[( will return )]TJ +/TT10 1 Tf +10 0 0 10 467.9769 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 126 557.54 Tm +(rather than causing an error if the specified font cannot be created.)Tj +/TT10 1 Tf +10 0 0 10 102 535.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 535.26 Tm +(FONTSAVAILABLE)Tj +/F3 1 Tf +10 0 0 10 183.6133 535.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 186.4833 535.26 Tm +(FAMILY SIZE FACE ROTATION DEVICE )Tj +-8.7204 -1.1111 TD +(CHECKFILESTOO?)Tj +/TT10 1 Tf +10 0 0 10 183.6123 525.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 189.6133 525.26 Tm +[( )-27835.2([Function])]TJ +-7.0681 -1.8833 TD +0.1878 Tw +(Returns a list of available fonts that match the given specification. )Tj +/TT15 1 Tf +31.7538 0 TD +0.45 Tw +(FAMILY, SIZE,)Tj +-31.7538 -1.2944 TD +0.0756 Tw +(FACE, ROTATION)Tj +/TT8 1 Tf +8.4769 0 TD +0.0311 Tw +(, and )Tj +/TT15 1 Tf +2.5051 0 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +[( are the same as for )]TJ +/TT10 1 Tf +10 0 0 10 337.6251 496.66 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 397.6348 496.66 Tm +0.0311 Tw +[(. Additionally, any of)]TJ +-30.1817 -1.3333 TD +0 Tw +(them can be the atom )Tj +/TT10 1 Tf +10 0 0 10 213.4819 484.66 Tm +(*)Tj +/TT8 1 Tf +9 0 0 9 219.4829 484.66 Tm +(, in which case all values of that field are matched.)Tj +-10.387 -2.1111 TD +(If )Tj +/TT15 1 Tf +1.1877 0 TD +(CHECKFILESTOO?)Tj +/TT8 1 Tf +8.4014 0 TD +0.2678 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 228.0552 465.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 246.0581 465.66 Tm +0.2678 Tw +(, only fonts already loaded into virtual memory will be)Tj +-13.3398 -1.3333 TD +0.0389 Tw +[(considered. If )]TJ +/TT15 1 Tf +6.6479 0 TD +0 Tw +(CHECKFILESTOO?)Tj +/TT8 1 Tf +8.4014 0 TD +0.0389 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 291.4639 453.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 309.4668 453.66 Tm +0.0389 Tw +(, the font directories for the specified device)Tj +-20.3852 -1.3278 TD +0 Tw +(will be searched. When checking font files, the )Tj +/TT15 1 Tf +20.7222 0 TD +(ROTATION)Tj +/TT8 1 Tf +4.8008 0 TD +( is ignored.)Tj +-21.523 -2.0667 TD +(Note: The search is conditional on the status of the server which holds the font.)Tj +4 -1.2278 TD +(Thus a file server crash may prevent )Tj +/TT10 1 Tf +10 0 0 10 344.8213 412.06 Tm +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 404.831 412.06 Tm +( from finding a file)Tj +-22.9812 -1.3333 TD +(that an earlier )Tj +/TT10 1 Tf +10 0 0 10 255.5683 400.06 Tm +(FONTSAVAILABLE)Tj +/TT8 1 Tf +9 0 0 9 339.582 400.06 Tm +( returned. )Tj +-23.7313 -2.1056 TD +0.0889 Tw +(Each element of the list returned will be of the form \()Tj +/TT15 1 Tf +24.3469 0 TD +0.2144 Tw +(FAMILY SIZE FACE ROTATION)Tj +-24.3469 -1.2889 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +(\).)Tj +-3.6006 -2.0667 TD +(Examples:)Tj +/TT10 1 Tf +10 0 0 10 126 332.86 Tm +(\(FONTSAVAILABLE MODERN 10 MRR 0 DISPLAY\))Tj +/TT8 1 Tf +9 0 0 9 126 313.86 Tm +0.0589 Tw +(will return \()Tj +/TT10 1 Tf +10 0 0 10 174.9428 313.86 Tm +0.14 Tw +(\(MODERN 10 \(MEDIUM REGULAR REGULAR\) 0 DISPLAY\))Tj +/TT8 1 Tf +9 0 0 9 459.3877 313.86 Tm +0.0589 Tw +(\) if the)Tj +-37.0431 -1.3333 TD +0 Tw +(regular Modern 10 font for the display is in virtual memory; )Tj +/TT10 1 Tf +10 0 0 10 367.207 301.86 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 385.21 301.86 Tm +( otherwise.)Tj +/TT10 1 Tf +10 0 0 10 126 282.86 Tm +(\(FONTSAVAILABLE * 14 * * INTERPRESS T\))Tj +/TT8 1 Tf +9 0 0 9 126 263.91 Tm +0.0567 Tw +(will return a list of all the size 14 Interpress fonts, whether they are in virtual memory or)Tj +0 -1.2222 TD +0 Tw +(in font files. )Tj +/TT10 1 Tf +10 0 0 10 102 230.63 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 230.63 Tm +(SETFONTDESCRIPTOR)Tj +/F3 1 Tf +10 0 0 10 199.8159 230.63 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 202.6859 230.63 Tm +(FAMILY SIZE FACE ROTATION DEVICE FONT)Tj +/TT10 1 Tf +10 0 0 10 402.5184 230.63 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 408.5194 230.63 Tm +[( )-3512.3([Function])]TJ +-31.391 -1.8833 TD +0.1 Tw +(Indicates to the system that )Tj +/TT15 1 Tf +12.8291 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1 Tw +[( is the font that should be associated with the )]TJ +/TT15 1 Tf +21.1772 0 TD +0 Tw +(FAMILY)Tj +-36.4067 -1.2944 TD +0.0267 Tw +(SIZE FACE ROTATION DEVICE)Tj +/TT8 1 Tf +15.0824 0 TD +0.0111 Tw +[( characteristics. If )]TJ +/TT15 1 Tf +8.229 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0111 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 368.5402 202.03 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 386.5432 202.03 Tm +0.0111 Tw +(, the font associated with)Tj +-28.9492 -1.3278 TD +0.1033 Tw +[(these characteristics is cleared and will be recreated the next time it is needed. As with)]TJ +/TT10 1 Tf +10 0 0 10 126 179.03 Tm +0 Tw +(FONTPROP)Tj +/TT8 1 Tf +9 0 0 9 174.0078 179.03 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 193.7436 179.03 Tm +(FONTCOPY)Tj +/TT8 1 Tf +9 0 0 9 241.7514 179.03 Tm +(, )Tj +/TT15 1 Tf +0.5 0 TD +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +( is coerced to a font descriptor if it is not one already.)Tj +-15.7617 -2.1056 TD +0.0078 Tw +(This functions is useful when it is desirable to simulate an unavailable font or to use a font)Tj +0 -1.2222 TD +0 Tw +(with characteristics different from the interpretations provided by the system.)Tj +/TT10 1 Tf +10 0 0 10 102 126.8 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 126.8 Tm +(DEFAULTFONT)Tj +/F3 1 Tf +10 0 0 10 167.4106 126.8 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.2806 126.8 Tm +(DEVICE FONT )Tj +/TT10 1 Tf +10 0 0 10 240.4921 126.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.493 126.8 Tm +[( )-21515.2([Function])]TJ +-13.3881 -1.8889 TD +0.2389 Tw +(Returns the font that would be used as the default \(if )Tj +/TT10 1 Tf +10 0 0 10 361.8751 109.8 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 379.878 109.8 Tm +0.2389 Tw +[( were specified as a font)]TJ +-28.2087 -1.3278 TD +0.0756 Tw +(argument\) for image stream type )Tj +/TT15 1 Tf +15.2372 0 TD +0 Tw +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0756 Tw +[(. If )]TJ +/TT15 1 Tf +1.8966 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0756 Tw +[( is a font descriptor, it is set to be the)]TJ +-23.1347 -1.2889 TD +0 Tw +(default font for )Tj +/TT15 1 Tf +6.9541 0 TD +(DEVICE)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +ET +endstream +endobj +118 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +120 0 obj +<< +/Length 7431 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-28)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 568.26 Tm +(CHARWIDTH)Tj +/F3 1 Tf +10 0 0 10 204.6089 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.4789 568.26 Tm +(CHARCODE FONT)Tj +/TT10 1 Tf +10 0 0 10 277.6903 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 283.6913 568.26 Tm +[( )-22715.4([Function])]TJ +/TT15 1 Tf +-12.1879 -1.8889 TD +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2778 Tw +[( is an integer that represents a valid character \(as returned by )]TJ +/TT10 1 Tf +10 0 0 10 492.7515 551.26 Tm +0 Tw +(CHCON1)Tj +/TT8 1 Tf +9 0 0 9 528.7573 551.26 Tm +(\).)Tj +-39.4175 -1.47 TD +0.0156 Tw +(Returns the amount by which an image streams )Tj +/F3 1 Tf +10 0 0 10 369.934 538.03 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 377.154 538.03 Tm +0.0156 Tw +(-position will be incremented when the)Tj +-22.5727 -1.2222 TD +0 Tw +(character is printed.)Tj +/F3 1 Tf +10 0 0 10 150 504.75 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 153.89 504.75 Tm +(CHARWIDTHY)Tj +/F3 1 Tf +10 0 0 10 207.8988 504.75 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 210.7688 504.75 Tm +(CHARCODE FONT)Tj +/F3 1 Tf +10 0 0 10 280.9802 504.75 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 284.8702 504.75 Tm +[( )-22584.4([Function])]TJ +-12.3189 -1.9867 TD +(Like )Tj +/TT10 1 Tf +10 0 0 10 194.2631 486.87 Tm +(CHARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 248.2719 486.87 Tm +0.0644 Tw +(, but returns the )Tj +/F3 1 Tf +10 0 0 10 316.5054 486.87 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 323.7254 486.87 Tm +0.0644 Tw +[( component of the characters width, the amount by)]TJ +-16.6362 -1.47 TD +0.1289 Tw +(which an image streams )Tj +/F3 1 Tf +10 0 0 10 279.7318 473.64 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 286.9518 473.64 Tm +0.1289 Tw +(-position will be incremented when the character is printed.)Tj +-12.5502 -1.2222 TD +0.1422 Tw +(This will be zero for most characters in normal portrait fonts, but may be non-zero for)Tj +T* +0 Tw +(landscape fonts or for vector-drawing fonts.)Tj +/F3 1 Tf +10 0 0 10 150 429.36 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 153.89 429.36 Tm +(STRINGWIDTH)Tj +/F3 1 Tf +10 0 0 10 213.2997 429.36 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 216.1696 429.36 Tm +(STR FONT FLG RDTBL)Tj +/F3 1 Tf +10 0 0 10 313.3855 429.36 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 317.2755 429.36 Tm +[( )-18983.8([Function])]TJ +-15.9195 -1.9867 TD +0.0544 Tw +(Returns the amount by which a streams )Tj +/F3 1 Tf +10 0 0 10 340.3748 411.48 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 347.5948 411.48 Tm +0.0544 Tw +(-position will be incremented if the printname)Tj +-19.2883 -1.2278 TD +0.0378 Tw +(for the Interlisp-D object )Tj +/TT15 1 Tf +11.2273 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0378 Tw +[( is printed in font )]TJ +/TT15 1 Tf +8.099 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +(. If )Tj +/TT15 1 Tf +1.4955 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0378 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 432.4195 400.43 Tm +0 Tw +(NIL,)Tj +/TT8 1 Tf +9 0 0 9 456.4234 400.43 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 459.0134 400.43 Tm +(DEFAULTFONT)Tj +/TT8 1 Tf +9 0 0 9 525.0242 400.43 Tm +0.0378 Tw +[( is)]TJ +-39.0027 -1.4767 TD +0.0033 Tw +(used as )Tj +/TT15 1 Tf +3.5472 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0033 Tw +(. )Tj +/TT6 1 Tf +10 0 0 10 234.3382 387.14 Tm +0 Tw +(I)Tj +/TT8 1 Tf +9 0 0 9 237.1166 387.14 Tm +(f )Tj +/TT15 1 Tf +0.5863 0 TD +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0002 Tc +0.0031 Tw +( is an image stream, its font is used. If )Tj +/TT15 1 Tf +17.129 0 TD +0 Tc +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0004 Tc +0.0029 Tw +( is non-)Tj +/TT10 1 Tf +10 0 0 10 463.7407 387.14 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 481.7436 387.14 Tm +0.0033 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 501.0385 387.14 Tm +0 Tw +(PRIN2)Tj +/TT8 1 Tf +9 0 0 9 531.0433 387.14 Tm +(-)Tj +-39.6715 -1.3278 TD +(pname of )Tj +/TT15 1 Tf +4.4238 0 TD +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +( with respect to the readtable )Tj +/TT15 1 Tf +13.0747 0 TD +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +( is used.)Tj +/F3 1 Tf +10 0 0 10 150 352.31 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 153.89 352.31 Tm +(STRINGREGION)Tj +/F3 1 Tf +10 0 0 10 218.7005 352.31 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 221.5705 352.31 Tm +(STR STREAM PRIN2FLG RDTBL)Tj +/F3 1 Tf +10 0 0 10 356.5925 352.31 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 360.4825 352.31 Tm +[( )-14183([Function])]TJ +-20.7203 -1.8444 TD +0.0444 Tw +(Returns the region occupied by )Tj +/TT15 1 Tf +14.3135 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0444 Tw +[( if it were printed at the current location in the image)]TJ +-16.1138 -1.2889 TD +0 Tw +(stream )Tj +/TT15 1 Tf +3.2835 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0267 Tw +[(. This is useful, for example, for determining where text is in a window to)]TJ +-6.8841 -1.2889 TD +0.3833 Tw +[(allow the user to select it. The arguments )]TJ +/TT15 1 Tf +22.054 0 TD +0 Tw +(PRIN2FLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.3833 Tw +[( and )]TJ +/TT15 1 Tf +2.9595 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.3833 Tw +[( are passed to)]TJ +/TT10 1 Tf +10 0 0 10 174 300.86 Tm +0 Tw +(STRINGWIDTH)Tj +/TT8 1 Tf +9 0 0 9 240.0107 300.86 Tm +(.)Tj +-4.6679 -2.1111 TD +(Note: )Tj +/TT10 1 Tf +10 0 0 10 224.5291 281.86 Tm +(STRINGREGION)Tj +/TT8 1 Tf +9 0 0 9 296.5409 281.86 Tm +0.2656 Tw +[( does not take into account any carriage returns in the)]TJ +-7.6157 -1.3278 TD +0.3211 Tw +(string, or carriage returns that may be automatically printed if )Tj +/TT15 1 Tf +30.9123 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.3211 Tw +[( is)]TJ +-32.7126 -1.2889 TD +0.0711 Tw +(printed to )Tj +/TT15 1 Tf +4.7994 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0711 Tw +[(. Therefore, the value returned is meaningless for multi-)]TJ +-8.4 -1.2889 TD +0 Tw +(line strings.)Tj +-11.3333 -2.8889 TD +0.0211 Tw +(The following functions allow the user to access and change the bitmaps for individual characters in a)Tj +0 -1.2222 TD +0.2233 Tw +[(display font. Note: Character code 256 can be used to access the "dummy" character, used for)]TJ +T* +0 Tw +(characters in the font with no bitmap defined.)Tj +/TT10 1 Tf +10 0 0 10 150 176.43 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 176.43 Tm +(GETCHARBITMAP)Tj +/F3 1 Tf +10 0 0 10 226.2124 176.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.0824 176.43 Tm +(CHARCODE FONT)Tj +/TT10 1 Tf +10 0 0 10 299.2938 176.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 305.2948 176.43 Tm +[( )-20315([Function])]TJ +-14.5883 -1.8833 TD +0.1078 Tw +(Returns a bitmap containing a copy of the image of the character )Tj +/TT15 1 Tf +30.078 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1078 Tw +[( in the font)]TJ +/TT15 1 Tf +-34.8788 -1.2889 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 125 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 125 Tm +(PUTCHARBITMAP)Tj +/F3 1 Tf +10 0 0 10 226.2124 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.0824 125 Tm +(CHARCODE FONT NEWCHARBITMAP NEWCHARDESCENT)Tj +/TT10 1 Tf +10 0 0 10 455.9193 125 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 125 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1733 Tw +(Changes the bitmap image of the character )Tj +/TT15 1 Tf +20.3769 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1733 Tw +[( in the font )]TJ +/TT15 1 Tf +5.7407 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1733 Tw +[( to the bitmap)]TJ +/TT15 1 Tf +-33.3188 -1.2944 TD +0 Tw +(NEWCHARBITMAP)Tj +/TT8 1 Tf +7.8013 0 TD +0.3033 Tw +[(. If )]TJ +/TT15 1 Tf +2.5799 0 TD +0 Tw +(NEWCHARDESCENT)Tj +/TT8 1 Tf +8.4014 0 TD +0.3033 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 377.8233 96.4 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 395.8263 96.4 Tm +0.3033 Tw +(, the descent of the character is)Tj +-24.6474 -1.3278 TD +0 Tw +(changed to the value of )Tj +/TT15 1 Tf +10.5801 0 TD +(NEWCHARDESCENT)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +ET +endstream +endobj +121 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +123 0 obj +<< +/Length 5473 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-29)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(EDITCHAR)Tj +/F3 1 Tf +10 0 0 10 151.208 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 154.078 568.26 Tm +(CHARCODE FONT)Tj +/TT10 1 Tf +10 0 0 10 224.2894 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 230.2904 568.26 Tm +[( )-23315.5([Function])]TJ +-11.5878 -1.8889 TD +0.0467 Tw +(Calls the bitmap editor \()Tj +/TT10 1 Tf +10 0 0 10 224.3157 551.26 Tm +0 Tw +(EDITBM)Tj +/TT8 1 Tf +9 0 0 9 260.3216 551.26 Tm +0.0467 Tw +(\) on the bitmap image of the character )Tj +/TT15 1 Tf +17.4158 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0467 Tw +[( in the)]TJ +-37.1412 -1.3333 TD +0 Tw +(font )Tj +/TT15 1 Tf +2.1471 0 TD +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.11 Tw +(. )Tj +/TT15 1 Tf +0.97 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.11 Tw +[( can be a character code \(as returned by )]TJ +/TT10 1 Tf +10 0 0 10 386.9752 539.26 Tm +0 Tw +(CHCON1)Tj +/TT8 1 Tf +9 0 0 9 422.9811 539.26 Tm +0.11 Tw +(\) or an atom or)Tj +-32.9979 -1.3278 TD +0 Tw +(string, in which case the first character of )Tj +/TT15 1 Tf +18.377 0 TD +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +( is used.)Tj +/TT10 1 Tf +10 0 0 10 102 504.37 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 504.37 Tm +(WRITESTRIKEFONTFILE)Tj +/TT6 1 Tf +10 0 0 10 210.6 504.37 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 213.3783 504.37 Tm +(FONT CHARSET FILENAME)Tj +/TT10 1 Tf +10 0 0 10 326.7968 504.37 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 444.63 504.37 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.0422 Tw +[(Takes a display font font descriptor and a character set number, and writes that character)]TJ +0 -1.2222 TD +0.0511 Tw +[(set into a file suitable for reading in again. Note that the font descriptors current state is)]TJ +0 -1.2278 TD +0.2767 Tw +(used \(which was perhaps modified by )Tj +/TT10 1 Tf +10 0 0 10 295.5264 465.37 Tm +0 Tw +(INSPECT)Tj +/TT8 1 Tf +9 0 0 9 337.5332 465.37 Tm +0.2767 Tw +(ing the datum\), so this provides a)Tj +-23.5037 -1.3278 TD +0 Tw +(mechanism for creating/modifying new fonts.)Tj +0 -2 TD +(For example:)Tj +/TT10 1 Tf +10 0 0 10 126 417.37 Tm +(\(WRITESTRIKEFONTFILE \(FONTCREATE GACHA 10\) 0 {DSK}Magic10-)Tj +0 -1.2 TD +(MRR-C0.DISPLAYFONT\))Tj +/TT8 1 Tf +9 0 0 9 126 386.37 Tm +0.8567 Tw +(If your )Tj +/TT10 1 Tf +10 0 0 10 170.8502 386.37 Tm +0 Tw +(DISPLAYFONTDIRECTORIES)Tj +/TT8 1 Tf +9 0 0 9 302.85 386.37 Tm +0.8567 Tw +[( includes )]TJ +/TT10 1 Tf +10 0 0 10 356.2914 386.37 Tm +0 Tw +({DSK})Tj +/TT8 1 Tf +9 0 0 9 386.2963 386.37 Tm +0.8567 Tw +(, then a subsequent)Tj +/TT10 1 Tf +10 0 0 10 126 374.37 Tm +0.231 Tw +(\(FONTCREATE MAGIC 10)Tj +/TT8 1 Tf +9 0 0 9 256.6405 374.37 Tm +0.0967 Tw +[(\) will create a new font descriptor whose appearance is)]TJ +-14.5156 -1.3278 TD +0 Tw +(the same as the old Gacha font descriptor.)Tj +0 -2 TD +0.1644 Tw +[(However, the new font is identical to the old one in appearance only. The individual)]TJ +0 -1.2222 TD +0.0222 Tw +(datatype fields and bitmap may not be the same as those in the old font descriptor, due to)Tj +T* +0 Tw +(peculiarities of different font file formats.)Tj +/TT4 1 Tf +10 0 0 10 54 262.08 Tm +(Font Files and Font Directories)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 259.37 m +486.01 259.37 l +S +BT +/TT8 1 Tf +9 0 0 9 78 237.37 Tm +(If )Tj +/TT10 1 Tf +10 0 0 10 86.2993 237.37 Tm +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 146.309 237.37 Tm +0.0022 Tw +( is called to create a font that has not been loaded into Interlisp, )Tj +/TT10 1 Tf +10 0 0 10 400.0217 237.37 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 460.0314 237.37 Tm +0.0003 Tc +0.0019 Tw +( has to)Tj +-42.4479 -1.3278 TD +0 Tc +0.1833 Tw +[(read the font information from a font file that contains the information for that font. For printer)]TJ +0 -1.2222 TD +0.1144 Tw +[(devices, the font files have to contain width information for each character in the font. For display)]TJ +T* +0.1089 Tw +[(fonts, the font files have to contain, in addition, bitmap images for each character in the fonts. The)]TJ +T* +0.1322 Tw +[(font file names, formats, and searching algorithms are different for each device. There are a set of)]TJ +T* +0.0989 Tw +[(variables for each device, that determine the directories that are searched for font files. All of these)]TJ +T* +0.0433 Tw +[(variables must be set before Interlisp can auto-load font files. These variables should be initialized in)]TJ +0 -1.2278 TD +0 Tw +(the site-specific )Tj +/TT10 1 Tf +10 0 0 10 141.4219 159.37 Tm +(INIT)Tj +/TT8 1 Tf +9 0 0 9 165.4258 159.37 Tm +( file.)Tj +/TT13 1 Tf +-7.0473 -2.4389 TD +(DISPLAYFONTDIRECTORIES)Tj +/TT8 1 Tf +13.2022 0 TD +[( )-24565.6([Variable])]TJ +-10.5355 -1.8444 TD +(Value is a list of directories searched to find font bitmap files for display fonts.)Tj +/TT13 1 Tf +-2.6667 -2.3333 TD +(DISPLAYFONTEXTENSIONS)Tj +/TT8 1 Tf +12.6021 0 TD +[( )-25165.7([Variable])]TJ +-9.9354 -1.85 TD +0.0356 Tw +(Value is a list of file extensions used when searching )Tj +/TT10 1 Tf +10 0 0 10 339.8958 83.17 Tm +0 Tw +(DISPLAYFONTDIRECTORIES)Tj +/TT8 1 Tf +9 0 0 9 471.9173 83.17 Tm +0.0356 Tw +[( for)]TJ +-38.4353 -1.3333 TD +0.0511 Tw +[(display fonts. Initially set to \()]TJ +/TT10 1 Tf +10 0 0 10 246.9685 71.17 Tm +0 Tw +(DISPLAYFONT)Tj +/TT8 1 Tf +9 0 0 9 312.9792 71.17 Tm +0.0511 Tw +(\), but when using older font files it may be)Tj +-20.7755 -1.3333 TD +0 Tw +(necessary to add )Tj +/TT10 1 Tf +10 0 0 10 194.6382 59.17 Tm +(STRIKE)Tj +/TT8 1 Tf +9 0 0 9 230.644 59.17 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 250.3799 59.17 Tm +(AC)Tj +/TT8 1 Tf +9 0 0 9 262.3818 59.17 Tm +( to this list.)Tj +ET +endstream +endobj +124 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +126 0 obj +<< +/Length 5205 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-30)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT13 1 Tf +9 0 0 9 150 569.54 Tm +(INTERPRESSFONTDIRECTORIES)Tj +/TT8 1 Tf +15.0024 0 TD +[( )-22765.3([Variable])]TJ +-12.3358 -1.8444 TD +(Value is a list of directories searched to find font widths files for Interpress fonts.)Tj +/TT13 1 Tf +-2.6667 -2.3333 TD +(PRESSFONTWIDTHSFILES)Tj +/TT8 1 Tf +12.002 0 TD +[( )-25765.8([Variable])]TJ +-9.3353 -1.8444 TD +0.1255 Tw +(Value is a list of files \(not directories\) searched to find font widths files for Press fonts.)Tj +0 -1.2278 TD +0 Tw +(Press font widths are packed into large files \(usually named )Tj +/TT10 1 Tf +10 0 0 10 414.1699 504.29 Tm +(FONTS)Tj +/TT8 1 Tf +9 0 0 9 444.1748 504.29 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 446.4248 504.29 Tm +(WIDTHS)Tj +/TT8 1 Tf +9 0 0 9 482.4307 504.29 Tm +(\).)Tj +/TT4 1 Tf +10 0 0 10 102 461 Tm +(Font Profiles)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 458.29 m +534.01 458.29 l +S +BT +/TT10 1 Tf +10 0 0 10 126 436.29 Tm +(PRETTYPRINT)Tj +/TT8 1 Tf +9 0 0 9 192.0107 436.29 Tm +0.1144 Tw +[( contains a facility for printing different elements \(user functions, system functions,)]TJ +-7.3345 -1.3278 TD +0.0122 Tw +(clisp words, comments, etc.\) in different fonts to emphasize \(or deemphasize\) their importance, and in)Tj +0 -1.2222 TD +0.1889 Tw +[(general to provide for a more pleasing appearance. Of course, in order to be useful, this facility)]TJ +T* +0.0967 Tw +(requires that the user is printing on a device \(such as a bitmapped display or a laser printer\) which)Tj +T* +0 Tw +(supports multiple fonts.)Tj +/TT10 1 Tf +10 0 0 10 126 365.29 Tm +(PRETTYPRINT)Tj +/TT8 1 Tf +9 0 0 9 192.0107 365.29 Tm +0.15 Tw +[( signals font changes by inserting into the file a user-defined escape sequence \(the)]TJ +-7.3345 -1.3333 TD +0.33 Tw +(value of the variable )Tj +/TT10 1 Tf +10 0 0 10 221.3849 353.29 Tm +0 Tw +(FONTESCAPECHAR)Tj +/TT8 1 Tf +9 0 0 9 305.3985 353.29 Tm +0.33 Tw +(\) followed by the character code which specifies, by)Tj +-19.9332 -1.3333 TD +0.1856 Tw +(number, which font to use, i.e. )Tj +/TT11 1 Tf +14.7764 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.1856 Tw +(A for font number 1, etc. Thus, if )Tj +/TT10 1 Tf +10 0 0 10 409.8834 341.29 Tm +0 Tw +(FONTESCAPECHAR)Tj +/TT8 1 Tf +9 0 0 9 493.8971 341.29 Tm +0.1856 Tw +[( were the)]TJ +-40.8775 -1.3278 TD +0 Tw +(character )Tj +/TT11 1 Tf +4.6394 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(F, )Tj +/TT11 1 Tf +1.3806 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(F)Tj +/TT11 1 Tf +0.5562 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.3244 Tw +(C would be output to change to font 3, )Tj +/TT11 1 Tf +20.2257 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(F)Tj +/TT11 1 Tf +0.5562 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.3244 Tw +[(A to change to font 1, etc. If)]TJ +/TT10 1 Tf +10 0 0 10 126 318.29 Tm +0 Tw +(FONTESCAPECHAR)Tj +/TT8 1 Tf +9 0 0 9 210.0136 318.29 Tm +0.0289 Tw +[( consists of characters which are separator charactors in )]TJ +/TT10 1 Tf +10 0 0 10 435.3717 318.29 Tm +0 Tw +(FILERDTBL)Tj +/TT8 1 Tf +9 0 0 9 489.3805 318.29 Tm +0.0289 Tw +(, then a file)Tj +-40.3756 -1.3278 TD +0 Tw +(with font changes in it can also be loaded back in.)Tj +0 -2.8945 TD +(Currently, )Tj +/TT10 1 Tf +10 0 0 10 170.7378 280.29 Tm +(PRETTYPRINT)Tj +/TT8 1 Tf +9 0 0 9 236.7486 280.29 Tm +0.1344 Tw +[( uses the following font classes. The user can specify separate fonts for)]TJ +-12.3054 -1.3278 TD +0 Tw +(each of these classes, or use the same font for several different classes.)Tj +/TT10 1 Tf +10 0 0 10 150 250.29 Tm +(LAMBDAFONT)Tj +/TT8 1 Tf +9 0 0 9 222 250.29 Tm +0.0544 Tw +(The font for printing the name of the function being prettyprinted, before the)Tj +T* +0 Tw +(actual definition \(usually a large font\).)Tj +/TT10 1 Tf +10 0 0 10 156 220.29 Tm +(CLISPFONT)Tj +/TT8 1 Tf +9 0 0 9 222 220.29 Tm +(If )Tj +/TT10 1 Tf +10 0 0 10 232.0193 220.29 Tm +(CLISPFLG)Tj +/TT8 1 Tf +9 0 0 9 280.0271 220.29 Tm +0.1933 Tw +[( is on, the font for printing any clisp words, i.e. atoms with)]TJ +-6.4475 -1.3333 TD +0 Tw +(property )Tj +/TT10 1 Tf +10 0 0 10 259.3447 208.29 Tm +(CLISPWORD)Tj +/TT8 1 Tf +9 0 0 9 313.3535 208.29 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 144 189.29 Tm +(COMMENTFONT)Tj +/TT8 1 Tf +9 0 0 9 222 189.29 Tm +(The font used for comments.)Tj +/TT10 1 Tf +10 0 0 10 162 170.29 Tm +(USERFONT)Tj +/TT8 1 Tf +9 0 0 9 222 170.29 Tm +0.1322 Tw +(The font for the name of any function in the file, or any member of the list)Tj +/TT10 1 Tf +10 0 0 10 222 158.29 Tm +0 Tw +(FONTFNS)Tj +/TT8 1 Tf +9 0 0 9 264.0068 158.29 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 139.29 Tm +(SYSTEMFONT)Tj +/TT8 1 Tf +9 0 0 9 222 139.29 Tm +(The font for any other \(defined\) function.)Tj +/TT10 1 Tf +10 0 0 10 150 120.29 Tm +(CHANGEFONT)Tj +/TT8 1 Tf +9 0 0 9 222 120.29 Tm +(The font for an expression marked by the editor as having been changed.)Tj +/TT10 1 Tf +10 0 0 10 132 101.29 Tm +(PRETTYCOMFONT)Tj +/TT8 1 Tf +9 0 0 9 222 101.29 Tm +(The font for the operand of a file package command.)Tj +/TT10 1 Tf +10 0 0 10 144 82.29 Tm +(DEFAULTFONT)Tj +/TT8 1 Tf +9 0 0 9 222 82.29 Tm +(The font for everything else.)Tj +-10.6667 -2.9944 TD +0.0678 Tw +(Note that not all combinations of fonts will be aesthetically pleasing \(or even readable!\) and the user)Tj +0 -1.2222 TD +0 Tw +(may have to experiment to find a compatible set.)Tj +ET +endstream +endobj +127 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT11 11 0 R +/TT13 12 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +129 0 obj +<< +/Length 6157 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-31)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT8 1 Tf +9 0 0 9 78 569.49 Tm +0.0511 Tw +(Although in some implementations )Tj +/TT10 1 Tf +10 0 0 10 223.4137 569.49 Tm +0 Tw +(LAMBDAFONT)Tj +/TT8 1 Tf +9 0 0 9 283.4235 569.49 Tm +0.0511 Tw +[( et al. may be defined as variables, one should not)]TJ +-22.8248 -1.3278 TD +0.13 Tw +(set them directly, but should indicate what font is to be used for each class by calling the function)Tj +/TT10 1 Tf +10 0 0 10 78 546.49 Tm +0 Tw +(FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 144.0107 546.49 Tm +(:)Tj +/TT10 1 Tf +10 0 0 10 102 523.2599 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 523.2599 Tm +(FONTPROFILE)Tj +/F3 1 Tf +10 0 0 10 167.4106 523.2599 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.2806 523.2599 Tm +(PROFILE)Tj +/TT10 1 Tf +10 0 0 10 208.0868 523.2599 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 214.0878 523.2599 Tm +[( )-25115.8([Function])]TJ +-9.7875 -1.8833 TD +0.1022 Tw +(Sets up the font classes as determined by )Tj +/TT15 1 Tf +19.1044 0 TD +0 Tw +(PROFILE)Tj +/TT8 1 Tf +4.2007 0 TD +0.1022 Tw +(, a list of elements which defines the)Tj +-23.3051 -1.2889 TD +0.0167 Tw +[(correspondence between font classes and specific fonts. Each element of )]TJ +/TT15 1 Tf +32.4397 0 TD +0 Tw +(PROFILE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0167 Tw +[( is a list)]TJ +-36.6404 -1.2889 TD +0 Tw +(of the form:)Tj +/TT10 1 Tf +10 0 0 10 174 465.06 Tm +2.8 Tw +(\(FONTCLASS FONT# DISPLAYFONT PRESSFONT)Tj +0 -1.2 TD +0 Tw +(INTERPRESSFONT\))Tj +-4.8 -1.9 TD +(FONTCLASS)Tj +/TT8 1 Tf +9 0 0 9 180.0088 434.06 Tm +0.0002 Tc +0.0042 Tw +( is the font class name and )Tj +/TT10 1 Tf +10 0 0 10 287.0143 434.06 Tm +0 Tc +0 Tw +(FONT#)Tj +/TT8 1 Tf +9 0 0 9 317.0192 434.06 Tm +0.0002 Tc +0.0042 Tw +( is the font number for that class. For each)Tj +-21.2244 -1.3333 TD +0 Tc +0.0567 Tw +(font class name, the escape sequence will consist of )Tj +/TT10 1 Tf +10 0 0 10 335.7882 422.06 Tm +0 Tw +(FONTESCAPECHAR)Tj +/TT8 1 Tf +9 0 0 9 419.8019 422.06 Tm +0.0567 Tw +[( followed by the)]TJ +-32.6447 -1.3278 TD +0 Tw +(character code for the font number, e.g. )Tj +/TT11 1 Tf +17.6231 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(A for font number 1, etc.)Tj +-18.2261 -2.0056 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 135.4293 392.06 Tm +(FONT#)Tj +/TT8 1 Tf +9 0 0 9 165.4342 392.06 Tm +0.1278 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 178.6678 392.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 196.6707 392.06 Tm +0.1278 Tw +[( for any font class, the font class named )]TJ +/TT10 1 Tf +10 0 0 10 365.36 392.06 Tm +0 Tw +(DEFAULTFONT)Tj +/TT8 1 Tf +9 0 0 9 431.3708 392.06 Tm +0.1278 Tw +[( \(which must)]TJ +-33.9301 -1.3333 TD +0.0411 Tw +[(always be specified\) is used. Alternatively, if )]TJ +/TT10 1 Tf +10 0 0 10 311.1001 380.06 Tm +0 Tw +(FONT#)Tj +/TT8 1 Tf +9 0 0 9 341.105 380.06 Tm +0.0411 Tw +[( is the name of a previously defined)]TJ +-23.9006 -1.3278 TD +0 Tw +(font class, this font class will be equivalenced to the previously defined one.)Tj +/TT10 1 Tf +10 0 0 10 126 350.06 Tm +(DISPLAYFONT)Tj +/TT8 1 Tf +9 0 0 9 192.0107 350.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 198.0907 350.06 Tm +(PRESSFONT)Tj +/TT8 1 Tf +9 0 0 9 252.0995 350.06 Tm +0.1756 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 277.2454 350.06 Tm +0 Tw +(INTERPRESSFONT)Tj +/TT8 1 Tf +9 0 0 9 361.259 350.06 Tm +0.1756 Tw +[( are font specifications \(of the)]TJ +-26.1399 -1.3333 TD +0.0433 Tw +(form accepted by )Tj +/TT10 1 Tf +10 0 0 10 198.2691 338.06 Tm +0 Tw +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 258.2789 338.06 Tm +0.0433 Tw +(\) for the fonts to use when printing to the display and to)Tj +-14.6977 -1.3278 TD +0 Tw +(Press and Interpress printers respectively.)Tj +/TT13 1 Tf +-2.6667 -2.3333 TD +(FONTPROFILE)Tj +/TT8 1 Tf +6.6011 0 TD +[( )-31166.7([Variable])]TJ +-3.9344 -1.8444 TD +0.1789 Tw +(This is the variable used to store the current font profile, in the form accepted by the)Tj +0 -1.2278 TD +0 Tw +(function )Tj +/TT10 1 Tf +10 0 0 10 162.5833 277.46 Tm +(FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 228.594 277.46 Tm +0.1078 Tw +[(. Note that simply editing this value will not change the fonts)]TJ +-11.3993 -1.3333 TD +0.6033 Tw +(used for the various font classes; it is necessary to execute \()Tj +/TT10 1 Tf +10 0 0 10 419.9102 265.46 Tm +0 Tw +(FONTPROFILE)Tj +-29.391 -1.2 TD +(FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 192.0107 253.46 Tm +(\) to install the value of this variable. )Tj +-12.6679 -2.9944 TD +0.5467 Tw +(The process of printing with multiple fonts is affected by a large number of variables:)Tj +/TT10 1 Tf +10 0 0 10 78 215.46 Tm +0 Tw +(FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 144.0107 215.46 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 150.3607 215.46 Tm +(FILELINELENGTH)Tj +/TT8 1 Tf +9 0 0 9 234.3744 215.46 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 240.7244 215.46 Tm +(PRETTYLCOM)Tj +/TT8 1 Tf +9 0 0 9 300.7342 215.46 Tm +0.2056 Tw +[(, etc. To facilitate switching back and forth)]TJ +-24.7482 -1.3278 TD +0.2289 Tw +(between various sets of values for the font variables, Interlisp supports the idea of named "font)Tj +0 -1.2222 TD +0 Tw +(configurations" encapsulating the values of all relevant variables.)Tj +0 -2.8889 TD +0.1 Tw +(To create a new font configuration, set all "relevant" variables to the values you want, and then call)Tj +/TT10 1 Tf +10 0 0 10 78 155.46 Tm +0 Tw +(FONTNAME)Tj +/TT8 1 Tf +9 0 0 9 126.0078 155.46 Tm +0.11 Tw +[( to save them \(on the variable )]TJ +/TT10 1 Tf +10 0 0 10 252.4778 155.46 Tm +0 Tw +(FONTDEFS)Tj +/TT8 1 Tf +9 0 0 9 300.4857 155.46 Tm +0.11 Tw +[(\) under a given name. To install a particular)]TJ +-24.7206 -1.3333 TD +0.2856 Tw +(font configuration, call )Tj +/TT10 1 Tf +10 0 0 10 178.4829 143.46 Tm +0 Tw +(FONTSET)Tj +/TT8 1 Tf +9 0 0 9 220.4898 143.46 Tm +0.2856 Tw +[( giving it your name. To change the values in a saved font)]TJ +-15.8322 -1.3333 TD +0 Tw +(configuration, edit the value of the variable )Tj +/TT10 1 Tf +10 0 0 10 252.3091 131.46 Tm +(FONTDEFS)Tj +/TT8 1 Tf +9 0 0 9 300.3169 131.46 Tm +(.)Tj +-24.7019 -3 TD +0.0433 Tw +[(Note: The list of variables saved by )]TJ +/TT10 1 Tf +10 0 0 10 225.1464 104.46 Tm +0 Tw +(FONTNAME)Tj +/TT8 1 Tf +9 0 0 9 273.1542 104.46 Tm +0.0433 Tw +[( is stored in the variable )]TJ +/TT10 1 Tf +10 0 0 10 372.9649 104.46 Tm +0 Tw +(FONTDEFSVARS)Tj +/TT8 1 Tf +9 0 0 9 444.9766 104.46 Tm +0.0433 Tw +[(. This can)]TJ +-40.7752 -1.3278 TD +0 Tw +(be changed by the user.)Tj +ET +endstream +endobj +130 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT11 11 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +133 0 obj +<< +/Length 6179 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-32)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 568.26 Tm +(FONTSET)Tj +/F3 1 Tf +10 0 0 10 193.8071 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 196.6771 568.26 Tm +(NAME)Tj +/TT10 1 Tf +10 0 0 10 218.2806 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 224.2816 568.26 Tm +[( )-29316.5([Function])]TJ +-5.5868 -1.8889 TD +0.0856 Tw +(Installs font configuration for )Tj +/TT15 1 Tf +13.5732 0 TD +0 Tw +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +0.0856 Tw +[(. Also evaluates \()]TJ +/TT10 1 Tf +10 0 0 10 390.9393 551.26 Tm +0.205 Tw +(FONTPROFILE FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 531.0117 551.26 Tm +0 Tw +(\))Tj +-39.668 -1.3333 TD +0.1333 Tw +(to install the font classes as specified in the new value of the variable )Tj +/TT10 1 Tf +10 0 0 10 465.7219 539.26 Tm +0 Tw +(FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 531.7326 539.26 Tm +(.)Tj +-39.7481 -1.3278 TD +(Generates an error if )Tj +/TT15 1 Tf +9.3433 0 TD +(NAME)Tj +/TT8 1 Tf +2.4004 0 TD +( not previously defined.)Tj +/TT13 1 Tf +-14.4103 -2.4 TD +(FONTDEFSVARS)Tj +/TT8 1 Tf +7.2012 0 TD +[( )-30566.6([Variable])]TJ +-4.5345 -1.85 TD +0.2822 Tw +(The list of variables to be packaged by a )Tj +/TT10 1 Tf +10 0 0 10 357.902 489.06 Tm +0 Tw +(FONTNAME)Tj +/TT8 1 Tf +9 0 0 9 405.9098 489.06 Tm +0.2822 Tw +[(. Initially )]TJ +/TT10 1 Tf +10 0 0 10 453.7178 489.06 Tm +0 Tw +(FONTCHANGEFLG)Tj +/TT8 1 Tf +9 0 0 9 531.7305 489.06 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 477.06 Tm +(FILELINELENGTH)Tj +/TT8 1 Tf +9 0 0 9 258.0136 477.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 279.2636 477.06 Tm +(COMMENTLINELENGTH)Tj +/TT8 1 Tf +9 0 0 9 381.2802 477.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 402.5302 477.06 Tm +(FIRSTCOL)Tj +/TT8 1 Tf +9 0 0 9 450.5381 477.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 471.7881 477.06 Tm +(PRETTYLCOM)Tj +/TT8 1 Tf +9 0 0 9 531.7979 477.06 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 465.06 Tm +(LISTFILESTR)Tj +/TT8 1 Tf +9 0 0 9 240.0107 465.06 Tm +(, and )Tj +/TT10 1 Tf +10 0 0 10 261.9966 465.06 Tm +(FONTPROFILE)Tj +/TT8 1 Tf +9 0 0 9 328.0073 465.06 Tm +(.)Tj +/TT13 1 Tf +-19.7786 -2.4389 TD +(FONTDEFS)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +33.467 0 TD +([Variable])Tj +-35.6011 -1.85 TD +0.04 Tw +(An association list of font configurations. )Tj +/TT10 1 Tf +10 0 0 10 344.3735 426.46 Tm +0 Tw +(FONTDEFS)Tj +/TT8 1 Tf +9 0 0 9 392.3813 426.46 Tm +0.04 Tw +[( is a list of elements of form \()]TJ +/TT10 1 Tf +10 0 0 10 509.8971 426.46 Tm +0 Tw +(NAME)Tj +-33.5897 -1.2 TD +0.894 Tw +(. PARAMETER-PAIRS)Tj +/TT8 1 Tf +9 0 0 9 284.9566 414.46 Tm +0.3722 Tw +[(\). To save a configuration on a file after performing a)]TJ +/TT10 1 Tf +10 0 0 10 174 402.46 Tm +0 Tw +(FONTNAME)Tj +/TT8 1 Tf +9 0 0 9 222.0078 402.46 Tm +0.0544 Tw +[( to define it, the user could either save the entire value of )]TJ +/TT10 1 Tf +10 0 0 10 456.287 402.46 Tm +0 Tw +(FONTDEFS)Tj +/TT8 1 Tf +9 0 0 9 504.2948 402.46 Tm +0.0544 Tw +(, or use)Tj +-36.6994 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 188.7348 390.46 Tm +(ALISTS)Tj +/TT8 1 Tf +9 0 0 9 224.7407 390.46 Tm +( file package command to dump out just the one configuration.)Tj +/TT13 1 Tf +-8.3045 -2.4389 TD +(FONTESCAPECHAR)Tj +/TT8 1 Tf +8.4014 0 TD +[( )-29366.4([Variable])]TJ +-5.7347 -1.8444 TD +(The character or string used to signal the start of a font escape sequence.)Tj +/TT13 1 Tf +-2.6667 -2.3333 TD +(FONTCHANGEFLG)Tj +/TT8 1 Tf +7.8013 0 TD +[( )-29966.5([Variable])]TJ +-5.1346 -1.85 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 182.5393 314.26 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 188.5403 314.26 Tm +0.0289 Tw +[(, enables fonts when prettyprinting. If )]TJ +/TT10 1 Tf +10 0 0 10 345.3773 314.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 363.3803 314.26 Tm +0.0289 Tw +(, disables fonts. )Tj +/TT10 1 Tf +10 0 0 10 427.4635 314.26 Tm +0 Tw +(ALL)Tj +/TT8 1 Tf +9 0 0 9 445.4664 314.26 Tm +0.0289 Tw +[( indicates that all calls)]TJ +-30.1629 -1.3333 TD +0 Tw +(to )Tj +/TT10 1 Tf +10 0 0 10 184.0986 302.26 Tm +(CHANGEFONT)Tj +/TT8 1 Tf +9 0 0 9 244.1084 302.26 Tm +( are executed.)Tj +/TT13 1 Tf +-10.4565 -2.4389 TD +(LISTFILESTR)Tj +/TT8 1 Tf +6.6011 0 TD +[( )-31166.7([Variable])]TJ +-3.9344 -1.85 TD +0.0933 Tw +(In Interlisp-10, passed to the operating system by )Tj +/TT10 1 Tf +10 0 0 10 378.7507 263.66 Tm +0 Tw +(LISTFILES)Tj +/TT8 1 Tf +9 0 0 9 432.7595 263.66 Tm +0.0933 Tw +[(. Can be used to specify)]TJ +-28.7511 -1.3333 TD +0.2589 Tw +(subcommands to the )Tj +/TT10 1 Tf +10 0 0 10 266.19 251.66 Tm +0 Tw +(LIST)Tj +/TT8 1 Tf +9 0 0 9 290.1939 251.66 Tm +0.2589 Tw +[( command, e.g. to establish correspondance between font)]TJ +-12.9104 -1.3278 TD +0 Tw +(number and font name.)Tj +/TT13 1 Tf +-2.6667 -2.3333 TD +(COMMENTLINELENGTH)Tj +/TT8 1 Tf +10.2017 0 TD +[( )-27566.1([Variable])]TJ +-7.535 -1.85 TD +0.3956 Tw +(Since comments are usually printed in a smaller font, )Tj +/TT10 1 Tf +10 0 0 10 419.6757 202.06 Tm +0 Tw +(COMMENTLINELENGTH)Tj +/TT8 1 Tf +9 0 0 9 521.6923 202.06 Tm +0.3956 Tw +[( is)]TJ +-38.6325 -1.3278 TD +0.3089 Tw +[(provided to offset the fact that Interlisp does not know about font widths. When)]TJ +/TT10 1 Tf +10 0 0 10 174 179.06 Tm +0.035 Tw +(FONTCHANGEFLG = T)Tj +/TT8 1 Tf +9 0 0 9 276.7166 179.06 Tm +0 Tw +(, )Tj +/TT10 1 Tf +10 0 0 10 281.3466 179.06 Tm +(CAR)Tj +/TT8 1 Tf +9 0 0 9 299.3495 179.06 Tm +0.0144 Tw +[( of )]TJ +/TT10 1 Tf +10 0 0 10 312.0197 179.06 Tm +0 Tw +(COMMENTLINELENGTH)Tj +/TT8 1 Tf +9 0 0 9 414.0363 179.06 Tm +0.0144 Tw +[( is the linelength used to print)]TJ +-26.6707 -1.3333 TD +0.1611 Tw +(short comments, i.e. those printed in the right margin, and )Tj +/TT10 1 Tf +10 0 0 10 423.0581 167.06 Tm +0 Tw +(CDR)Tj +/TT8 1 Tf +9 0 0 9 441.061 167.06 Tm +0.1611 Tw +[( is the linelength used)]TJ +-29.6735 -1.3278 TD +0 Tw +(when printing full width comments.)Tj +-2.6667 -2.3333 TD +(\()Tj +/TT13 1 Tf +0.333 0 TD +(CHANGEFONT)Tj +/TT8 1 Tf +6.001 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT15 1 Tf +0.25 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +[(\) )-24402([Function])]TJ +-10.1683 -1.8444 TD +0.5167 Tw +(Executes the operations on )Tj +/TT15 1 Tf +14.1536 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.5167 Tw +[( to change to the font )]TJ +/TT15 1 Tf +12.6615 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.5167 Tw +[(. For use in)]TJ +/TT10 1 Tf +10 0 0 10 174 105.86 Tm +0 Tw +(PRETTYPRINTMACROS)Tj +/TT8 1 Tf +9 0 0 9 276.0166 105.86 Tm +(.)Tj +ET +endstream +endobj +134 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +136 0 obj +<< +/Length 5991 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-33)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT4 1 Tf +-35.4 -4.38 TD +(Image Objects)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +486.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 543.54 Tm +0.0167 Tw +(An Image Object is an object that includes information about an image, such as how to display it, how)Tj +0 -1.2222 TD +0.2789 Tw +(to print it, and how to manipulate it when it is included in a collection of images \(such as a)Tj +T* +0.1622 Tw +[(document\). More generally, it enables you to include one kind of image, with its own semantics,)]TJ +T* +0.06 Tw +[(layout rules, and editing paradigms, inside another kind of image. Image Objects provide a general-)]TJ +T* +0.3544 Tw +(purpose interface between image users who want to manipulate arbitrary images, and image)Tj +T* +0 Tw +(producers, who create images for use, say, in documents.)Tj +0 -2.8944 TD +0.0533 Tw +(Images are encapsulated inside a uniform barrierthe )Tj +/TT10 1 Tf +10 0 0 10 300.4977 462.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 348.5055 462.49 Tm +0.0533 Tw +[( data type. From the outside, you)]TJ +-30.0562 -1.3278 TD +0.1011 Tw +[(communicate to the image by calling a standard set of functions. For example, calling one function)]TJ +0 -1.2222 TD +0.0467 Tw +(tells you how big the image is; calling another causes the image object to be displayed where you tell)Tj +T* +0.0733 Tw +[(it, and so on. Anyone who wants to create images for general use can implement his own brand of)]TJ +/TT10 1 Tf +10 0 0 10 78 417.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 126.0078 417.49 Tm +0.3822 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 139.6378 417.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 187.6456 417.49 Tm +0.3822 Tw +(s have been implemented \(in library packages\) for bitmaps, menus,)Tj +-12.1828 -1.3278 TD +0 Tw +(annotations, graphs, and sketches. )Tj +0 -2.8889 TD +0.0878 Tw +(Image Objects were originally implemented to support inserting images into TEdit text files, but the)Tj +0 -1.2222 TD +0.1133 Tw +[(facility is available for use by any tools that manipulate images. The Image Object interface allows)]TJ +T* +0.0644 Tw +[(objects to exist in TEdit documents and be edited with their own editor. It also provides a facility in)]TJ +T* +0.1044 Tw +[(which objects can be shift-selected \(or "copy-selected"\) between TEdit and non-TEdit windows. For)]TJ +T* +0.04 Tw +(example, the Image Objects interface allows you to copy-select graphs from a Grapher window into a)Tj +T* +0.0656 Tw +[(TEdit window. The source window \(where the object comes from\) does not have to know what sort)]TJ +T* +0.0222 Tw +(of window the destination window \(where the object is inserted\) is, and the destination does not have)Tj +T* +0 Tw +(to know where the insertion comes from. )Tj +0 -2.8944 TD +0.0144 Tw +(A new data type, )Tj +/TT10 1 Tf +10 0 0 10 148.9204 276.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 196.9282 276.49 Tm +0.0144 Tw +(, contains the data and the procedures necessary to manipulate an object)Tj +-13.2142 -1.3333 TD +0.0067 Tw +(that is to be manipulated in this way. )Tj +/TT10 1 Tf +10 0 0 10 230.7006 264.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 278.7084 264.49 Tm +0.0067 Tw +(s are created with the function )Tj +/TT10 1 Tf +10 0 0 10 402.0011 264.49 Tm +0 Tw +(IMAGEOBJCREATE)Tj +/TT8 1 Tf +9 0 0 9 78 252.54 Tm +(\(below\). )Tj +0 -2.8944 TD +0.0433 Tw +(Another new data type, )Tj +/TT10 1 Tf +10 0 0 10 176.1518 226.49 Tm +0 Tw +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 224.1596 226.49 Tm +0.0433 Tw +(, is a vector of the procedures necessary to define the behavior of)Tj +-16.24 -1.3333 TD +0.09 Tw +(a type of )Tj +/TT10 1 Tf +10 0 0 10 117.2518 214.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 165.2596 214.49 Tm +0.09 Tw +[(. Grouping the operations in a separate data type allows multiple instances of)]TJ +-9.6955 -1.3278 TD +0.2233 Tw +[(the same type of image object to share procedure vectors. The data and procedure fields of an)]TJ +/TT10 1 Tf +10 0 0 10 78 191.49 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 126.0078 191.49 Tm +0.0001 Tc +0.0032 Tw +( have a uniform interface through the function )Tj +/TT10 1 Tf +10 0 0 10 313.2 191.49 Tm +0 Tc +0 Tw +(IMAGEOBJPROP)Tj +/TT8 1 Tf +9 0 0 9 385.2117 191.49 Tm +0.0033 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 392.0217 191.49 Tm +0 Tw +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 440.0295 191.49 Tm +0.0003 Tc +0.003 Tw +( are created)Tj +-40.2255 -1.3333 TD +0 Tc +0 Tw +(with the function )Tj +/TT10 1 Tf +10 0 0 10 148.897 179.49 Tm +(IMAGEFNSCREATE)Tj +/TT8 1 Tf +9 0 0 9 232.9106 179.49 Tm +(:)Tj +/TT10 1 Tf +10 0 0 10 102 156.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 156.26 Tm +(IMAGEFNSCREATE)Tj +/F3 1 Tf +10 0 0 10 183.6 156.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 186.71 156.26 Tm +0.0511 Tw +(DISPLAYFN IMAGEBOXFN PUTFN GETFN COPYFN BUTTONEVENTINFN)Tj +-8.7456 -1.0389 TD +2 Tw +(COPYBUTTONEVENTINFN WHENMOVEDFN WHENINSERTEDFN WHENDELETEDFN)Tj +0 -1.0722 TD +(WHENCOPIEDFN WHENOPERATEDONFN PREPRINTFN )Tj +/TT10 1 Tf +10 0 0 10 334.8 137.26 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 340.8009 137.26 Tm +0.8333 Tw +[( )-9369.9([Function])]TJ +-23.8668 -1.8889 TD +0.0289 Tw +(Returns an )Tj +/TT10 1 Tf +10 0 0 10 172.0517 120.26 Tm +0 Tw +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 220.0595 120.26 Tm +0.0289 Tw +[( object that contains the functions necessary to define the behavior)]TJ +-10.4511 -1.3333 TD +0 Tw +(of an )Tj +/TT10 1 Tf +10 0 0 10 148.1484 108.26 Tm +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 196.1562 108.26 Tm +(.)Tj +-7.7951 -2.1056 TD +0.1989 Tw +(The arguments )Tj +/TT15 1 Tf +7.3197 0 TD +0 Tw +(DISPLAYFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.1989 Tw +[( through )]TJ +/TT15 1 Tf +4.4881 0 TD +0 Tw +(PREPRINTFN)Tj +/TT8 1 Tf +6.001 0 TD +0.1989 Tw +[( should all be function names to be)]TJ +-23.2096 -1.2944 TD +0.0911 Tw +(stored as the "methods" of the )Tj +/TT10 1 Tf +10 0 0 10 251.9761 77.66 Tm +0 Tw +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 299.9839 77.66 Tm +0.0911 Tw +[(. The purpose of each )]TJ +/TT10 1 Tf +10 0 0 10 394.5128 77.66 Tm +0 Tw +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 442.5206 77.66 Tm +0.0911 Tw +[( method is)]TJ +-35.169 -1.3278 TD +0 Tw +(described below.)Tj +ET +endstream +endobj +137 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +139 0 obj +<< +/Length 8168 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-34)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.15 Tw +[(Note: Image objects must be "registered" before they can be read by TEdit or )]TJ +/TT10 1 Tf +10 0 0 10 501.7046 569.49 Tm +0 Tw +(HREAD)Tj +/TT8 1 Tf +9 0 0 9 531.7095 569.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 174 557.49 Tm +(IMAGEFNSCREATE)Tj +/TT8 1 Tf +9 0 0 9 258.0136 557.49 Tm +( implicitly registers its )Tj +/TT10 1 Tf +10 0 0 10 348.6904 557.49 Tm +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 378.6953 557.49 Tm +( argument.)Tj +/TT10 1 Tf +10 0 0 10 150 534.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 534.26 Tm +(IMAGEOBJCREATE)Tj +/F3 1 Tf +10 0 0 10 231.6 534.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 234.47 534.26 Tm +(OBJECTDATUM IMAGEFNS)Tj +/F3 1 Tf +10 0 0 10 342.4876 534.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 346.3776 534.26 Tm +[( )-15750.3([Function])]TJ +-19.1531 -1.8889 TD +0.06 Tw +(Returns an )Tj +/TT10 1 Tf +10 0 0 10 220.6117 517.2599 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 268.6195 517.2599 Tm +0.06 Tw +[( that contains the object datum )]TJ +/TT15 1 Tf +14.1813 0 TD +0 Tw +(OBJECTDATUM)Tj +/TT8 1 Tf +6.6011 0 TD +0.06 Tw +[( and the operations)]TJ +-31.2957 -1.3278 TD +0 Tw +(vector )Tj +/TT15 1 Tf +3.0049 0 TD +(IMAGEFNS)Tj +/TT8 1 Tf +4.8008 0 TD +(. )Tj +/TT15 1 Tf +0.75 0 TD +(OBJECTDATUM)Tj +/TT8 1 Tf +6.6011 0 TD +( can be arbitrary data.)Tj +/TT10 1 Tf +10 0 0 10 150 482.43 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 482.43 Tm +(IMAGEOBJPROP)Tj +/F3 1 Tf +10 0 0 10 220.8 482.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.67 482.43 Tm +(IMAGEOBJECT PROPERTY NEWVALUE)Tj +/TT10 1 Tf +10 0 0 10 380.2955 482.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 386.2964 482.43 Tm +[( )-6577.1([NoSpread Function])]TJ +-23.5885 -1.8889 TD +0.2133 Tw +(Accesses and sets the properties of an )Tj +/TT10 1 Tf +10 0 0 10 339.3238 465.43 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 387.3316 465.43 Tm +0.2133 Tw +[(. Returns the current value of the)]TJ +/TT15 1 Tf +-23.7035 -1.3278 TD +0 Tw +(PROPERTY)Tj +/TT8 1 Tf +4.8008 0 TD +0.3 Tw +[( property of the image object )]TJ +/TT15 1 Tf +14.7565 0 TD +0 Tw +(IMAGEOBJECT)Tj +/TT8 1 Tf +6.6011 0 TD +0.3 Tw +[(. If )]TJ +/TT15 1 Tf +2.5699 0 TD +0 Tw +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.3 Tw +[( is given, the)]TJ +-33.5291 -1.2889 TD +0 Tw +(property is set to it.)Tj +/TT10 1 Tf +10 0 0 10 174 423.83 Tm +(IMAGEOBJPROP)Tj +/TT8 1 Tf +9 0 0 9 246.0117 423.83 Tm +0.1222 Tw +[( can be used on the system properties )]TJ +/TT10 1 Tf +10 0 0 10 406.1813 423.83 Tm +0 Tw +(OBJECTDATUM)Tj +/TT8 1 Tf +9 0 0 9 472.1921 423.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 477.7921 423.83 Tm +(DISPLAYFN)Tj +/TT8 1 Tf +9 0 0 9 531.8009 423.83 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 411.83 Tm +(IMAGEBOXFN)Tj +/TT8 1 Tf +9 0 0 9 234.0097 411.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 261.5497 411.83 Tm +(PUTFN)Tj +/TT8 1 Tf +9 0 0 9 291.5546 411.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 319.0946 411.83 Tm +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 349.0995 411.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 376.6395 411.83 Tm +(COPYFN)Tj +/TT8 1 Tf +9 0 0 9 412.6454 411.83 Tm +2.56 Tw +(, BUTTONEVENTINFN,)Tj +/TT10 1 Tf +10 0 0 10 174 399.83 Tm +0 Tw +(COPYBUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 288.0185 399.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 293.2085 399.83 Tm +(WHENOPERATEDONFN)Tj +/TT8 1 Tf +9 0 0 9 389.2242 399.83 Tm +0.0767 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 412.59 399.83 Tm +0 Tw +(PREPRINTFN)Tj +/TT8 1 Tf +9 0 0 9 472.5997 399.83 Tm +0.0767 Tw +[(. Additionally,)]TJ +-33.1777 -1.3333 TD +0 Tw +(it can be used to save arbitrary properties on an )Tj +/TT10 1 Tf +10 0 0 10 365.6147 387.83 Tm +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 413.6226 387.83 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 364.6 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 364.6 Tm +(IMAGEFNSP)Tj +/F3 1 Tf +10 0 0 10 204.6 364.6 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.47 364.6 Tm +(X)Tj +/TT10 1 Tf +10 0 0 10 212.8709 364.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 218.8718 364.6 Tm +[( )-29917.6([Function])]TJ +-4.9858 -1.8889 TD +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is an )Tj +/TT10 1 Tf +10 0 0 10 251.3833 347.6 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 299.3911 347.6 Tm +( object, )Tj +/TT10 1 Tf +10 0 0 10 329.3794 347.6 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 347.3823 347.6 Tm +( otherwise.)Tj +/TT10 1 Tf +10 0 0 10 150 324.37 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 324.37 Tm +(IMAGEOBJP)Tj +/F3 1 Tf +10 0 0 10 204.6 324.37 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.47 324.37 Tm +(X)Tj +/TT10 1 Tf +10 0 0 10 212.8709 324.37 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 218.8718 324.37 Tm +[( )-29917.6([Function])]TJ +-4.9858 -1.8889 TD +(Returns )Tj +/TT15 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT15 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is an )Tj +/TT10 1 Tf +10 0 0 10 251.3833 307.37 Tm +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 299.3911 307.37 Tm +( object, )Tj +/TT10 1 Tf +10 0 0 10 329.3794 307.37 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 347.3823 307.37 Tm +( otherwise.)Tj +/TT4 1 Tf +10 0 0 10 126 277.08 Tm +(IMAGEFNS Methods)Tj +/TT8 1 Tf +9 0 0 9 126 251.37 Tm +0.0844 Tw +[(Note: Many of the )]TJ +/TT10 1 Tf +10 0 0 10 206.59 251.37 Tm +0 Tw +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 254.5978 251.37 Tm +0.0844 Tw +[( methods below are passed "host stream" arguments. The TEdit text)]TJ +-14.2886 -1.3278 TD +0.0522 Tw +(editor passes the "text stream" \(an object contain all of the information in the document being edited\))Tj +0 -1.2222 TD +0.0844 Tw +[(as the "host stream" argument. Other editing programs that want to use image objects may want to)]TJ +0 -1.2278 TD +0 Tw +(pass the data structure being edited to the )Tj +/TT10 1 Tf +10 0 0 10 295.0708 217.37 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 343.0786 217.37 Tm +( methods as the "host stream" argument.)Tj +/TT10 1 Tf +10 0 0 10 150 194.14 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 194.14 Tm +(DISPLAYFN)Tj +/F3 1 Tf +10 0 0 10 204.6089 194.14 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 207.4789 194.14 Tm +(IMAGEOBJ IMAGESTREAM IMAGESTREAMTYPE HOSTSTREAM)Tj +/TT10 1 Tf +10 0 0 10 461.3202 194.14 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 467.3212 194.14 Tm +[( )-1242.1([)]TJ +/TT10 1 Tf +10 0 0 10 485.9971 194.14 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 156 184.19 Tm +(Method])Tj +2 -1.7833 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 191.5644 168.14 Tm +(DISPLAYFN)Tj +/TT8 1 Tf +9 0 0 9 245.5732 168.14 Tm +0.0278 Tw +[( method is called to display the object )]TJ +/TT15 1 Tf +17.0948 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.0278 Tw +[( at the current position)]TJ +-29.8481 -1.3278 TD +0 Tw +(on )Tj +/TT15 1 Tf +1.409 0 TD +(IMAGESTREAM)Tj +/TT8 1 Tf +6.6011 0 TD +0.0311 Tw +[(. The type of )]TJ +/TT15 1 Tf +6.1707 0 TD +0 Tw +(IMAGESTREAM)Tj +/TT8 1 Tf +6.6011 0 TD +0.0311 Tw +[( indicates whether the device is the display)]TJ +-20.7819 -1.2889 TD +0 Tw +(or some other image stream.)Tj +0 -2.0056 TD +0.1367 Tw +[(Note: When the )]TJ +/TT10 1 Tf +10 0 0 10 246.0816 126.54 Tm +0 Tw +(DISPLAYFN)Tj +/TT8 1 Tf +9 0 0 9 300.0904 126.54 Tm +0.1367 Tw +[( method is called, the offset and clipping regions for the)]TJ +-14.01 -1.3278 TD +0 Tw +(stream are set so the objects image is at \(0,0\), and only that image area can be modified.)Tj +/TT10 1 Tf +10 0 0 10 150 92.31 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 92.31 Tm +(IMAGEBOXFN)Tj +/F3 1 Tf +10 0 0 10 210.0098 92.31 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.8798 92.31 Tm +(IMAGEOBJ IMAGESTREAM CURRENTX RIGHTMARGIN)Tj +/TT10 1 Tf +10 0 0 10 434.3158 92.31 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 440.3168 92.31 Tm +[( )-170.4([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 92.31 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 92.31 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 191.9344 75.31 Tm +(IMAGEBOXFN)Tj +/TT8 1 Tf +9 0 0 9 251.9442 75.31 Tm +0.0689 Tw +[( method should return the size of the object as an )]TJ +/TT10 1 Tf +10 0 0 10 456.3028 75.31 Tm +0 Tw +(IMAGEBOX)Tj +/TT8 1 Tf +9 0 0 9 504.3106 75.31 Tm +0.0689 Tw +(, which)Tj +-36.7012 -1.3278 TD +0.0389 Tw +(is a data structure that describes the image laid down when an )Tj +/TT15 1 Tf +28.3685 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.0389 Tw +[( is displayed in)]TJ +-33.1693 -1.2944 TD +0.1378 Tw +[(terms of width, height, and descender height. An )]TJ +/TT10 1 Tf +10 0 0 10 385.1287 51.71 Tm +0 Tw +(IMAGEBOX)Tj +/TT8 1 Tf +9 0 0 9 433.1365 51.71 Tm +0.1378 Tw +[( has four fields: )]TJ +/TT10 1 Tf +10 0 0 10 501.6503 51.71 Tm +0 Tw +(XSIZE)Tj +/TT8 1 Tf +9 0 0 9 531.6552 51.71 Tm +(,)Tj +ET +endstream +endobj +140 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +142 0 obj +<< +/Length 8169 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-35)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-28.2 -4.251 TD +(YSIZE)Tj +/TT8 1 Tf +9 0 0 9 156.0049 569.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 160.9149 569.49 Tm +(YDESC)Tj +/TT8 1 Tf +9 0 0 9 190.9197 569.49 Tm +0.0456 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 213.7256 569.49 Tm +0 Tw +(XKERN)Tj +/TT8 1 Tf +9 0 0 9 243.7305 569.49 Tm +0.0456 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 251.3005 569.49 Tm +0 Tw +(XSIZE)Tj +/TT8 1 Tf +9 0 0 9 281.3053 569.49 Tm +0.0456 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 301.8612 569.49 Tm +0 Tw +(YSIZE)Tj +/TT8 1 Tf +9 0 0 9 331.8661 569.49 Tm +0.0456 Tw +[( are the width and height of the object)]TJ +-22.874 -1.3333 TD +0.0044 Tw +(image. )Tj +/TT10 1 Tf +10 0 0 10 157.2108 557.49 Tm +0 Tw +(YDESC)Tj +/TT8 1 Tf +9 0 0 9 187.2157 557.49 Tm +0.0009 Tc +0.0035 Tw +( and )Tj +/TT10 1 Tf +10 0 0 10 207.0316 557.49 Tm +0 Tc +0 Tw +(XKERN)Tj +/TT8 1 Tf +9 0 0 9 237.0364 557.49 Tm +0.0001 Tc +0.0043 Tw +( give the position of the baseline and the left edge of the image)Tj +-12.3374 -1.3333 TD +0 Tc +0.0122 Tw +[(relative to where you want to position it. For characters, the )]TJ +/TT10 1 Tf +10 0 0 10 369.2741 545.49 Tm +0 Tw +(YDESC)Tj +/TT8 1 Tf +9 0 0 9 399.279 545.49 Tm +0.0122 Tw +[( is the descent \(height)]TJ +-30.3643 -1.3333 TD +0.2489 Tw +(of the descender\) and the )Tj +/TT10 1 Tf +10 0 0 10 240.0935 533.49 Tm +0 Tw +(XKERN)Tj +/TT8 1 Tf +9 0 0 9 270.0984 533.49 Tm +0.2489 Tw +[( is the amount of left kerning \(note: TEdit doesnt)]TJ +-16.0109 -1.3278 TD +0 Tw +(support left kerning\).)Tj +0 -2.0056 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.1744 503.49 Tm +(IMAGEBOXFN)Tj +/TT8 1 Tf +9 0 0 9 204.1842 503.49 Tm +0.0956 Tw +[( looks at the type of the stream to determine the output device if the)]TJ +-8.6871 -1.3278 TD +0.0478 Tw +[(objects size changes from device to device. \(For example, a bit-map object may specify a)]TJ +0 -1.2222 TD +0.0567 Tw +(scale factor that is ignored when the bit map is displayed on the screen.\) )Tj +/TT15 1 Tf +33.1889 0 TD +0 Tw +(CURRENTX)Tj +/TT8 1 Tf +4.8008 0 TD +0.0567 Tw +[( and)]TJ +/TT15 1 Tf +-37.9897 -1.2889 TD +0 Tw +(RIGHTMARGIN)Tj +/TT8 1 Tf +6.6011 0 TD +0.0389 Tw +[( allow an object to take account of its environment when deciding how big)]TJ +-6.6011 -1.2944 TD +0 Tw +(it is. If these fields are not available, they are )Tj +/TT10 1 Tf +10 0 0 10 306.7778 457.29 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 324.7808 457.29 Tm +(.)Tj +-18.0868 -2.1111 TD +(Note: TEdit calls the )Tj +/TT10 1 Tf +10 0 0 10 244.9863 438.29 Tm +(IMAGEBOXFN)Tj +/TT8 1 Tf +9 0 0 9 304.9961 438.29 Tm +( only during line formatting, then caches the)Tj +/TT10 1 Tf +10 0 0 10 198 426.29 Tm +(IMAGEBOX)Tj +/TT8 1 Tf +9 0 0 9 246.0078 426.29 Tm +( as the )Tj +/TT10 1 Tf +10 0 0 10 273.5571 426.29 Tm +(BOUNDBOX)Tj +/TT8 1 Tf +9 0 0 9 321.5649 426.29 Tm +( property of the )Tj +/TT15 1 Tf +7.1655 0 TD +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +(. This avoids)Tj +-25.6957 -1.3333 TD +(the need to call the )Tj +/TT10 1 Tf +10 0 0 10 275.1592 414.29 Tm +(IMAGEBOXFN)Tj +/TT8 1 Tf +9 0 0 9 335.1689 414.29 Tm +( when incomplete position and)Tj +-15.241 -1.3278 TD +(margin information is available.)Tj +/TT10 1 Tf +10 0 0 10 102 380.06 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 380.06 Tm +(PUTFN)Tj +/F3 1 Tf +10 0 0 10 135.0054 380.06 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 137.8754 380.06 Tm +(IMAGEOBJ FILESTREAM)Tj +/TT10 1 Tf +10 0 0 10 240.4921 380.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.493 380.06 Tm +[( )-16373([)]TJ +/TT10 1 Tf +10 0 0 10 401.347 380.06 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 449.3549 380.06 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 145.4344 363.06 Tm +(PUTFN)Tj +/TT8 1 Tf +9 0 0 9 175.4393 363.06 Tm +0.2356 Tw +[( method is called to save the object on a file. It prints a description on)]TJ +/TT15 1 Tf +-5.4933 -1.3333 TD +0 Tw +(FILESTREAM)Tj +/TT8 1 Tf +6.001 0 TD +0.4344 Tw +[( that, when read by the corresponding )]TJ +/TT10 1 Tf +10 0 0 10 361.6795 351.06 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 391.6844 351.06 Tm +0.4344 Tw +[( method \(see below\),)]TJ +-29.5205 -1.3333 TD +0.0056 Tw +[(regenerates the image object. \(TEdit and )]TJ +/TT10 1 Tf +10 0 0 10 290.6 339.06 Tm +0 Tw +(HPRINT)Tj +/TT8 1 Tf +9 0 0 9 326.6059 339.06 Tm +0.0056 Tw +[( take care of writing out the name of the)]TJ +/TT10 1 Tf +10 0 0 10 126 327.06 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 156.0049 327.06 Tm +(.\))Tj +/TT10 1 Tf +10 0 0 10 102 303.83 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 303.83 Tm +(GETFN)Tj +/F3 1 Tf +10 0 0 10 135.0054 303.83 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 137.8754 303.83 Tm +(FILESTREAM)Tj +/TT10 1 Tf +10 0 0 10 191.8842 303.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 197.8851 303.83 Tm +[( )-21773.9([)]TJ +/TT10 1 Tf +10 0 0 10 401.347 303.83 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 449.3549 303.83 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.0344 286.83 Tm +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 174.0393 286.83 Tm +0.08 Tw +[( method is called when the object is encountered on the file during input. It)]TJ +-5.3377 -1.3333 TD +0 Tw +(reads the description that was written by the )Tj +/TT10 1 Tf +10 0 0 10 306.0703 274.83 Tm +(PUTFN)Tj +/TT8 1 Tf +9 0 0 9 336.0752 274.83 Tm +( method and returns an )Tj +/TT10 1 Tf +10 0 0 10 431.9771 274.83 Tm +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 479.9849 274.83 Tm +(. )Tj +/TT10 1 Tf +10 0 0 10 102 251.6 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 251.6 Tm +(COPYFN)Tj +/F3 1 Tf +10 0 0 10 140.4063 251.6 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 143.2762 251.6 Tm +(IMAGEOBJ SOURCEHOSTSTREAM TARGETHOSTSTREAM)Tj +/TT10 1 Tf +10 0 0 10 370.1132 251.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 376.1141 251.6 Tm +[( )-1970.6([)]TJ +/TT10 1 Tf +10 0 0 10 401.347 251.6 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 449.3549 251.6 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 143.8044 234.6 Tm +(COPYFN)Tj +/TT8 1 Tf +9 0 0 9 179.8103 234.6 Tm +0.0544 Tw +[( method is called during a copy-select operation. It should return a copy of)]TJ +/TT15 1 Tf +-5.9789 -1.3333 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +(. If it returns the litatom )Tj +/TT10 1 Tf +10 0 0 10 268.5806 222.6 Tm +(DONT)Tj +/TT8 1 Tf +9 0 0 9 298.5854 222.6 Tm +(, copying is suppressed.)Tj +/TT10 1 Tf +10 0 0 10 102 199.37 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 199.37 Tm +(BUTTONEVENTINFN)Tj +/F3 1 Tf +10 0 0 10 189.0142 199.37 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 195.2442 199.37 Tm +0.7011 Tw +(IMAGEOBJ WINDOWSTREAM SELECTION RELX RELY WINDOW)Tj +-9.6938 -1.1111 TD +(HOSTSTREAM BUTTON)Tj +/TT10 1 Tf +10 0 0 10 199.8 189.37 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 205.801 189.37 Tm +0.2922 Tc +[( )-20309.9([)]TJ +/TT10 1 Tf +10 0 0 10 401.347 189.37 Tm +0 Tc +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 449.3549 189.37 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.5344 172.37 Tm +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 234.5491 172.37 Tm +0.1356 Tw +[( method is called when you press a mouse button inside the)]TJ +-12.061 -1.3333 TD +0.0967 Tw +[(object. The )]TJ +/TT10 1 Tf +10 0 0 10 175.9127 160.37 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 265.9274 160.37 Tm +0.0967 Tw +[( decides whether or not to handle the button, to track)]TJ +-15.5475 -1.3278 TD +0.0644 Tw +(the cursor in parallel with mouse movement, and to invoke selections or edits supported)Tj +0 -1.2278 TD +0.5589 Tw +(by the object \(but see the )Tj +/TT10 1 Tf +10 0 0 10 256.6478 137.37 Tm +0 Tw +(COPYBUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 370.6663 137.37 Tm +0.5589 Tw +[( method below\). If the)]TJ +/TT10 1 Tf +10 0 0 10 126 125.37 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 216.0146 125.37 Tm +0.0178 Tw +[( returns )]TJ +/TT10 1 Tf +10 0 0 10 249.6715 125.37 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 267.6745 125.37 Tm +0.0178 Tw +(, TEdit treats the button press as a selection at its level.)Tj +-15.7416 -1.3333 TD +0.0556 Tw +[(Note that when this function is first called, a button is down. The )]TJ +/TT10 1 Tf +10 0 0 10 395.9907 113.37 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 126 101.42 Tm +0.0433 Tw +(should also support the button-down protocol to descend inside of any composite objects)Tj +0 -1.2278 TD +0.1911 Tw +[(with in it. In most cases, the )]TJ +/TT10 1 Tf +10 0 0 10 254.7693 90.37 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 344.7839 90.37 Tm +0.1911 Tw +[( relinquishes control \(i.e., returns\))]TJ +-24.3093 -1.3278 TD +0 Tw +(when the cursor leaves its objects region.)Tj +ET +endstream +endobj +143 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +145 0 obj +<< +/Length 8464 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-36)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.3044 Tw +(When the )Tj +/TT10 1 Tf +10 0 0 10 172.2524 569.49 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 262.2671 569.49 Tm +0.3044 Tw +[( is called, the windows clipping region and offsets have been)]TJ +-15.1408 -1.3333 TD +0.03 Tw +(changed so that the lower-left corner of the objects image is at \()Tj +/TT10 1 Tf +10 0 0 10 382.3738 557.49 Tm +0 Tw +(0,0)Tj +/TT8 1 Tf +9 0 0 9 400.3767 557.49 Tm +0.03 Tw +(\), and only the objects image can)Tj +-30.4863 -1.3278 TD +0.0322 Tw +[(be changed. The selection is available for changing to fit your needs; the mouse button went down at)]TJ +0 -1.2278 TD +0 Tw +(\()Tj +/TT10 1 Tf +10 0 0 10 128.9971 534.49 Tm +(RELX,RELY)Tj +/TT8 1 Tf +9 0 0 9 183.0058 534.49 Tm +0.0789 Tw +[(\) within the objects image. You can affect how TEdit treats the selection by returning)]TJ +-6.334 -1.3333 TD +0.0822 Tw +[(one of several values. If you return )]TJ +/TT10 1 Tf +10 0 0 10 274.8917 522.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 292.8946 522.49 Tm +0.0822 Tw +(, TEdit forgets that you selected an object; if you return the)Tj +-18.5438 -1.3333 TD +0 Tw +(atom )Tj +/TT10 1 Tf +10 0 0 10 148.8539 510.49 Tm +(DONT)Tj +/TT8 1 Tf +9 0 0 9 178.8588 510.49 Tm +0.0344 Tw +(, TEdit doesnt permit the selection; if you return the atom )Tj +/TT10 1 Tf +10 0 0 10 415.5745 510.49 Tm +0 Tw +(CHANGED)Tj +/TT8 1 Tf +9 0 0 9 457.5813 510.49 Tm +0.0344 Tw +(, TEdit updates the)Tj +-36.8424 -1.3333 TD +0.1267 Tw +[(screen. Use )]TJ +/TT10 1 Tf +10 0 0 10 178.7706 498.49 Tm +0 Tw +(CHANGED)Tj +/TT8 1 Tf +9 0 0 9 220.7774 498.49 Tm +0.1267 Tw +[( to signal TEdit that the object has changed size or will have side effects on)]TJ +-10.5308 -1.3278 TD +0 Tw +(other parts of the screen image.)Tj +/TT10 1 Tf +10 0 0 10 150 464.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 464.26 Tm +(COPYBUTTONEVENTINFN)Tj +/F3 1 Tf +10 0 0 10 258.6177 464.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 261.4877 464.26 Tm +(IMAGEOBJ WINDOWSTREAM)Tj +/TT10 1 Tf +10 0 0 10 374.9061 464.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 380.9071 464.26 Tm +[( )-6771.4([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 464.26 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 464.26 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 191.4844 447.26 Tm +(COPYBUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 305.503 447.26 Tm +0.0189 Tw +[( method is called when you button inside an object while)]TJ +-14.6114 -1.3333 TD +0.1656 Tw +[(holding down a copy key. Many of the comments about )]TJ +/TT10 1 Tf +10 0 0 10 417.3236 435.26 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 507.3383 435.26 Tm +0.1656 Tw +[( apply)]TJ +-37.0376 -1.3278 TD +0 Tw +(here too. Also, see the discussion below about copying image objects between windows. )Tj +/TT10 1 Tf +10 0 0 10 150 401.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 401.03 Tm +(WHENMOVEDFN)Tj +/F3 1 Tf +10 0 0 10 215.4106 401.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 234.6806 401.03 Tm +3.4289 Tw +(IMAGEOBJ TARGETWINDOWSTREAM SOURCEHOSTSTREAM)Tj +-8.7423 -1.1111 TD +0 Tw +(TARGETHOSTSTREAM)Tj +/TT10 1 Tf +10 0 0 10 242.414 391.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 248.415 391.03 Tm +1.4289 Tc +[( )-18635([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 391.03 Tm +0 Tc +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 391.03 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 192.1244 374.03 Tm +(WHENMOVEDFN)Tj +/TT8 1 Tf +9 0 0 9 258.1352 374.03 Tm +0.09 Tw +[( method provides hooks by which the object is notified when TEdit)]TJ +-9.3484 -1.3333 TD +0.2067 Tw +(performs an operation \()Tj +/TT10 1 Tf +10 0 0 10 273.9613 362.03 Tm +0 Tw +(MOVE)Tj +/TT8 1 Tf +9 0 0 9 297.9652 362.03 Tm +0.2067 Tw +[(ing\) on the whole object. It allows objects to have side)]TJ +-13.7739 -1.3278 TD +0 Tw +(effects. )Tj +/TT10 1 Tf +10 0 0 10 150 327.8 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 327.8 Tm +(WHENINSERTEDFN)Tj +/F3 1 Tf +10 0 0 10 231.6133 327.8 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 247.4833 327.8 Tm +2.7178 Tw +(IMAGEOBJ TARGETWINDOWSTREAM SOURCEHOSTSTREAM)Tj +-10.1648 -1.1111 TD +0 Tw +(TARGETHOSTSTREAM)Tj +/TT10 1 Tf +10 0 0 10 242.414 317.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 248.415 317.8 Tm +1.1322 Tc +[( )-19228.4([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 317.8 Tm +0 Tc +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 317.8 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 192.7744 300.8 Tm +(WHENINSERTEDFN)Tj +/TT8 1 Tf +9 0 0 9 276.7881 300.8 Tm +0.1622 Tw +[( method provides hooks by which the object is notified when)]TJ +-11.4209 -1.3333 TD +0.0656 Tw +(TEdit performs an operation \()Tj +/TT10 1 Tf +10 0 0 10 295.0563 288.8 Tm +0 Tw +(INSERT)Tj +/TT8 1 Tf +9 0 0 9 331.0621 288.8 Tm +0.0656 Tw +[(ing\) on the whole object. It allows objects to have)]TJ +-17.4513 -1.3278 TD +0 Tw +(side effects. )Tj +/TT10 1 Tf +10 0 0 10 150 254.57 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 254.57 Tm +(WHENDELETEDFN)Tj +/F3 1 Tf +10 0 0 10 226.2124 254.57 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.0824 254.57 Tm +(IMAGEOBJ TARGETWINDOWSTREAM)Tj +/F3 1 Tf +10 0 0 10 374.9061 254.57 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 378.7961 254.57 Tm +[( )-7006([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 254.57 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 254.57 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 193.3244 237.57 Tm +(WHENDELETEDFN)Tj +/TT8 1 Tf +9 0 0 9 271.3371 237.57 Tm +0.2233 Tw +[( method provides hooks by which the object is notified when)]TJ +-10.8152 -1.3333 TD +0.0656 Tw +(TEdit performs an operation \()Tj +/TT10 1 Tf +10 0 0 10 295.0563 225.57 Tm +0 Tw +(DELETE)Tj +/TT8 1 Tf +9 0 0 9 331.0621 225.57 Tm +0.0656 Tw +[(ing\) on the whole object. It allows objects to have)]TJ +-17.4513 -1.3278 TD +0 Tw +(side effects. )Tj +/TT10 1 Tf +10 0 0 10 150 191.34 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 191.34 Tm +(WHENCOPIEDFN)Tj +/F3 1 Tf +10 0 0 10 220.8115 191.34 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 238.9515 191.34 Tm +3.1922 Tw +(IMAGEOBJ TARGETWINDOWSTREAM SOURCEHOSTSTREAM)Tj +-9.2168 -1.1111 TD +0 Tw +(TARGETHOSTSTREAM)Tj +/TT10 1 Tf +10 0 0 10 242.414 181.34 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 248.415 181.34 Tm +1.33 Tc +[( )-18832.8([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 181.34 Tm +0 Tc +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 181.34 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 191.6244 164.34 Tm +(WHENCOPIEDFN)Tj +/TT8 1 Tf +9 0 0 9 263.6361 164.34 Tm +0.0344 Tw +[( method provides hooks by which the object is notified when TEdit)]TJ +-9.9596 -1.3333 TD +0.0778 Tw +(performs an operation \()Tj +/TT10 1 Tf +10 0 0 10 270.4813 152.34 Tm +0 Tw +(COPY)Tj +/TT8 1 Tf +9 0 0 9 294.4852 152.34 Tm +0.0778 Tw +[(ing\) on the whole object. The )]TJ +/TT10 1 Tf +10 0 0 10 418.7715 152.34 Tm +0 Tw +(WHENCOPIEDFN)Tj +/TT8 1 Tf +9 0 0 9 490.7832 152.34 Tm +0.0778 Tw +[( method is)]TJ +-35.1981 -1.3333 TD +0.0267 Tw +(called in addition to \(and after\) the )Tj +/TT10 1 Tf +10 0 0 10 316.5115 140.34 Tm +0 Tw +(COPYFN)Tj +/TT8 1 Tf +9 0 0 9 352.5174 140.34 Tm +0.0267 Tw +[( method above. It allows objects to have side)]TJ +-19.8353 -1.3278 TD +0 Tw +(effects.)Tj +/TT10 1 Tf +10 0 0 10 150 106.11 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 106.11 Tm +(WHENOPERATEDONFN)Tj +/F3 1 Tf +10 0 0 10 242.415 106.11 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 252.165 106.11 Tm +1.4389 Tw +(IMAGEOBJ WINDOWSTREAM HOWOPERATEDON SELECTION)Tj +-10.685 -1.1111 TD +0 Tw +(HOSTSTREAM)Tj +/TT10 1 Tf +10 0 0 10 210.0088 96.11 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 216.0097 96.11 Tm +0.6 Tc +[( )-23893.4([)]TJ +/TT10 1 Tf +10 0 0 10 449.347 96.11 Tm +0 Tc +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 497.3549 96.11 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 199.9444 79.11 Tm +(WHENOPERATEDONFN)Tj +/TT8 1 Tf +9 0 0 9 295.9601 79.11 Tm +0.9589 Tw +[( method provides a hook for edit operations.)]TJ +/TT10 1 Tf +10 0 0 10 174 67.11 Tm +0 Tw +(HOWOPERATEDON)Tj +/TT8 1 Tf +9 0 0 9 252.0127 67.11 Tm +0.1222 Tw +[( should be one of )]TJ +/TT10 1 Tf +10 0 0 10 327.935 67.11 Tm +0 Tw +(SELECTED)Tj +/TT8 1 Tf +9 0 0 9 375.9428 67.11 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 381.5428 67.11 Tm +(DESELECTED)Tj +/TT8 1 Tf +9 0 0 9 441.5526 67.11 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 447.1526 67.11 Tm +(HIGHLIGHTED)Tj +/TT8 1 Tf +9 0 0 9 513.1633 67.11 Tm +0.1222 Tw +(, and)Tj +/TT10 1 Tf +10 0 0 10 174 55.11 Tm +0 Tw +(UNHILIGHTED)Tj +/TT8 1 Tf +9 0 0 9 240.0107 55.11 Tm +0.2733 Tw +[(. The )]TJ +/TT10 1 Tf +10 0 0 10 271.4552 55.11 Tm +0 Tw +(WHENOPERATEDONFN)Tj +/TT8 1 Tf +9 0 0 9 367.4708 55.11 Tm +0.2733 Tw +[( differs from the )]TJ +/TT10 1 Tf +10 0 0 10 443.9978 55.11 Tm +0 Tw +(BUTTONEVENTINFN)Tj +/TT8 1 Tf +9 0 0 9 174 43.16 Tm +0.0767 Tw +[(because it is called when you extend a selection through the object. That is, the object is)]TJ +ET +endstream +endobj +146 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +148 0 obj +<< +/Length 8499 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-37)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.3389 Tw +(treated in toto as a TEdit character. )Tj +/TT10 1 Tf +10 0 0 10 293.7144 569.49 Tm +0 Tw +(HIGHLIGHTED)Tj +/TT8 1 Tf +9 0 0 9 359.7252 569.49 Tm +0.3389 Tw +[( refers to the selection being)]TJ +-25.9695 -1.3333 TD +0.1389 Tw +(highlighted on the screen, and )Tj +/TT10 1 Tf +10 0 0 10 255.1738 557.49 Tm +0 Tw +(UNHIGHLIGHTED)Tj +/TT8 1 Tf +9 0 0 9 333.1865 557.49 Tm +0.1389 Tw +[( means that the highlighting is being)]TJ +-23.0207 -1.3278 TD +0 Tw +(turned off. )Tj +/TT10 1 Tf +10 0 0 10 102 523.2599 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 523.2599 Tm +(PREPRINTFN)Tj +/F3 1 Tf +10 0 0 10 162.0098 523.2599 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 523.2599 Tm +(IMAGEOBJ)Tj +/TT10 1 Tf +10 0 0 10 208.0868 523.2599 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 214.0878 523.2599 Tm +[( )-19973.6([)]TJ +/TT10 1 Tf +10 0 0 10 401.347 523.2599 Tm +(IMAGEFNS)Tj +/TT8 1 Tf +9 0 0 9 449.3549 523.2599 Tm +( Method])Tj +-35.9283 -1.8889 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 145.2344 506.26 Tm +(PREPRINTFN)Tj +/TT8 1 Tf +9 0 0 9 205.2442 506.26 Tm +0.2133 Tw +[( method is called to convert the object into something that can be)]TJ +-8.8049 -1.3278 TD +0.1356 Tw +[(printed for inclusion in documents. It returns an object that the receiving window can)]TJ +0 -1.2278 TD +0.0222 Tw +(print \(using either )Tj +/TT10 1 Tf +10 0 0 10 201.1796 483.26 Tm +0 Tw +(PRIN1)Tj +/TT8 1 Tf +9 0 0 9 231.1844 483.26 Tm +0.0222 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 244.5527 483.26 Tm +0 Tw +(PRIN2)Tj +/TT8 1 Tf +9 0 0 9 274.5576 483.26 Tm +0.0222 Tw +(,its choice\) to obtain a character representation of the)Tj +-16.5064 -1.3333 TD +0.02 Tw +[(object. If the )]TJ +/TT10 1 Tf +10 0 0 10 179.7224 471.26 Tm +0 Tw +(PREPRINTFN)Tj +/TT8 1 Tf +9 0 0 9 239.7322 471.26 Tm +0.02 Tw +[( method is )]TJ +/TT10 1 Tf +10 0 0 10 284.2966 471.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 302.2995 471.26 Tm +0.02 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 321.8944 471.26 Tm +0 Tw +(OBJECTDATUM)Tj +/TT8 1 Tf +9 0 0 9 387.9051 471.26 Tm +0.02 Tw +[( field of )]TJ +/TT15 1 Tf +3.6938 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.02 Tw +[( itself)]TJ +-37.5951 -1.3278 TD +0.0544 Tw +[(is used. TEdit uses this function when you indicate that you want to print the characters)]TJ +0 -1.2278 TD +0 Tw +(from an object rather than the object itself \(presumably using )Tj +/TT10 1 Tf +10 0 0 10 370.582 448.26 Tm +(PRIN1)Tj +/TT8 1 Tf +9 0 0 9 400.5869 448.26 Tm +( case\).)Tj +/TT4 1 Tf +10 0 0 10 78 417.97 Tm +(Registering Image Objects)Tj +/TT8 1 Tf +9 0 0 9 78 392.26 Tm +0.0956 Tw +(Each legitimate )Tj +/TT10 1 Tf +10 0 0 10 143.2517 392.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 173.2566 392.26 Tm +0.0956 Tw +[( needs to be known to the system, to prevent various Trojan-horse problems)]TJ +-10.5841 -1.3333 TD +0.0122 Tw +(and to allow the automatic loading of the supporting code for infrequently used )Tj +/TT10 1 Tf +10 0 0 10 399.8221 380.26 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 447.8299 380.26 Tm +0.0122 Tw +[(s. To this)]TJ +-41.0922 -1.3333 TD +0.0389 Tw +(end, there is a global list, )Tj +/TT10 1 Tf +10 0 0 10 181.0556 368.26 Tm +0 Tw +(IMAGEOBJGETFNS)Tj +/TT8 1 Tf +9 0 0 9 265.0692 368.26 Tm +0.0389 Tw +(, that contains an entry for each )Tj +/TT10 1 Tf +10 0 0 10 394.675 368.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 424.6799 368.26 Tm +0.0389 Tw +[(. The existence)]TJ +-38.52 -1.3333 TD +0.2678 Tw +(of the entry marks the )Tj +/TT10 1 Tf +10 0 0 10 180.0456 356.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 210.0505 356.26 Tm +0.2678 Tw +[( as legitimate; the entry itself is a property list, which can hold)]TJ +-14.6723 -1.3333 TD +0 Tw +(information about the )Tj +/TT10 1 Tf +10 0 0 10 167.4639 344.26 Tm +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 197.4688 344.26 Tm +(.)Tj +-13.2743 -3 TD +0.0889 Tw +(No action needs to be taken for )Tj +/TT10 1 Tf +10 0 0 10 209.7099 317.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 239.7148 317.26 Tm +0.0889 Tw +(s that are currently in use: the function )Tj +/TT10 1 Tf +10 0 0 10 402.0547 317.26 Tm +0 Tw +(IMAGEFNSCREATE)Tj +/TT8 1 Tf +9 0 0 9 78 305.26 Tm +0.0056 Tw +(automatically adds its )Tj +/TT10 1 Tf +10 0 0 10 168.0929 305.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 198.0977 305.26 Tm +0.0056 Tw +[( argument to the list. However, packages that support obsolete versions)]TJ +-13.3442 -1.3333 TD +0.1689 Tw +(of objects may need to explicitly add the obsolete )Tj +/TT10 1 Tf +10 0 0 10 289.1043 293.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 319.1092 293.26 Tm +0.1689 Tw +[(s. For example, TEdit supports bit-map)]TJ +/TT10 1 Tf +10 0 0 10 78 281.26 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 126.0078 281.26 Tm +0.2289 Tw +[(s. Recently, a change was made in the format in which objects are stored; to retain)]TJ +-5.3342 -1.3333 TD +0.3156 Tw +(compatibility with the old object format, there are now two )Tj +/TT10 1 Tf +10 0 0 10 343.8717 269.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 373.8766 269.26 Tm +0.3156 Tw +[(s. The current )]TJ +/TT10 1 Tf +10 0 0 10 444.3826 269.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 474.3875 269.26 Tm +0.3156 Tw +[( is)]TJ +-44.0431 -1.3333 TD +0.0611 Tw +(automatically on the list, courtesy of )Tj +/TT10 1 Tf +10 0 0 10 228.0554 257.26 Tm +0 Tw +(IMAGEFNSCREATE)Tj +/TT8 1 Tf +9 0 0 9 312.069 257.26 Tm +0.0611 Tw +[(. However, the code file that supports the)]TJ +-26.0077 -1.3333 TD +1.1967 Tw +[(old bit-map objects contains the clause: )]TJ +/TT10 1 Tf +10 0 0 10 313.2631 245.26 Tm +2.872 Tw +(\(ADDVARS \(IMAGEOBJGETFNS)Tj +-23.5263 -1.2 TD +0 Tw +(\(OLDGETFNNAME\)\)\))Tj +/TT8 1 Tf +9 0 0 9 174.0156 233.26 Tm +(, which adds the old )Tj +/TT10 1 Tf +10 0 0 10 256.936 233.26 Tm +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 286.9409 233.26 Tm +( to )Tj +/TT10 1 Tf +10 0 0 10 299.2896 233.26 Tm +(IMAGEOBJGETFNS)Tj +/TT8 1 Tf +9 0 0 9 383.3032 233.26 Tm +(.)Tj +-33.9226 -3 TD +0.3211 Tw +(For a given )Tj +/TT10 1 Tf +10 0 0 10 133.6519 206.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 163.6568 206.26 Tm +0.3211 Tw +(, the entry on )Tj +/TT10 1 Tf +10 0 0 10 230.1484 206.26 Tm +0 Tw +(IMAGEOBJGETFNS)Tj +/TT8 1 Tf +9 0 0 9 314.1621 206.26 Tm +0.3211 Tw +[( may be a property list of information.)]TJ +-26.2402 -1.3333 TD +0 Tw +(Currently the only recognized property is )Tj +/TT10 1 Tf +10 0 0 10 248.5122 194.26 Tm +(FILE)Tj +/TT8 1 Tf +9 0 0 9 272.5161 194.26 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 78 167.26 Tm +(FILE)Tj +/TT8 1 Tf +9 0 0 9 102.0039 167.26 Tm +0.0222 Tw +[( is the name of the file that can be loaded if the )]TJ +/TT10 1 Tf +10 0 0 10 291.7802 167.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 321.7851 167.26 Tm +0.0222 Tw +[( isnt defined. This file should define the)]TJ +/TT10 1 Tf +10 0 0 10 78 155.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 108.0049 155.26 Tm +(, along with all the other functions needed to support that kind of )Tj +/TT10 1 Tf +10 0 0 10 370.7935 155.26 Tm +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 418.8012 155.26 Tm +(.)Tj +-37.8668 -3 TD +0.1356 Tw +(For example, the bit-map )Tj +/TT10 1 Tf +10 0 0 10 185.2155 128.26 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 233.2233 128.26 Tm +0.1356 Tw +[( implemented by TEdit use the )]TJ +/TT10 1 Tf +10 0 0 10 365.2733 128.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 395.2781 128.26 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 398.7481 128.26 Tm +(BMOBJ)Tj +/TT8 1 Tf +9 0 0 9 428.753 128.26 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 431.003 128.26 Tm +(GETFN2)Tj +/TT8 1 Tf +9 0 0 9 467.0089 128.26 Tm +0.1356 Tw +[(. Its)]TJ +-43.2232 -1.3333 TD +0.2889 Tw +(entry on )Tj +/TT10 1 Tf +10 0 0 10 118.8968 116.26 Tm +0 Tw +(IMAGEOBJGETFNS)Tj +/TT8 1 Tf +9 0 0 9 202.9104 116.26 Tm +0.2889 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 219.044 116.26 Tm +0.692 Tw +(\(BMOBJ.GETFN2 FILE IMAGEOBJ\))Tj +/TT8 1 Tf +9 0 0 9 400.9114 116.26 Tm +0.2889 Tw +(, indicating that the)Tj +-35.879 -1.3333 TD +0.0011 Tw +(support code for bit-map image objects resides on the file )Tj +/TT10 1 Tf +10 0 0 10 308.1713 104.26 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 356.1791 104.26 Tm +0.0011 Tw +(, and that the )Tj +/TT10 1 Tf +10 0 0 10 410.7992 104.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 440.804 104.26 Tm +0.0001 Tc +0.001 Tw +( for them is)Tj +/TT10 1 Tf +10 0 0 10 78 92.26 Tm +0 Tc +0 Tw +(BMOBJ.GETFN2)Tj +/TT8 1 Tf +9 0 0 9 150.0117 92.26 Tm +(.)Tj +-8.0013 -3 TD +0.1033 Tw +(This makes it possible to have entries for )Tj +/TT10 1 Tf +10 0 0 10 249.4703 65.26 Tm +0 Tw +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 279.4752 65.26 Tm +0.1033 Tw +(s whose supporting code isnt loadedyou might,)Tj +-22.3861 -1.3333 TD +0.0467 Tw +(for instance, have your init file add entries to )Tj +/TT10 1 Tf +10 0 0 10 262.5183 53.26 Tm +0 Tw +(IMAGEOBJGETFNS)Tj +/TT8 1 Tf +9 0 0 9 346.532 53.26 Tm +0.0467 Tw +[( for the kinds of image objects you)]TJ +ET +endstream +endobj +149 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +151 0 obj +<< +/Length 4668 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-38)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.3456 Tw +[(commonly use. The systems default reading method will automatically load the code when)]TJ +0 -1.2222 TD +0 Tw +(necessary.)Tj +/TT4 1 Tf +10 0 0 10 126 529.2 Tm +(Reading and Writing Image Objects on Files)Tj +/TT8 1 Tf +9 0 0 9 126 503.49 Tm +0.0556 Tw +(Image Objects can be written out to files using )Tj +/TT10 1 Tf +10 0 0 10 316.4722 503.49 Tm +0 Tw +(HPRINT)Tj +/TT8 1 Tf +9 0 0 9 352.478 503.49 Tm +0.0556 Tw +[( and read back using )]TJ +/TT10 1 Tf +10 0 0 10 439.9111 503.49 Tm +0 Tw +(HREAD)Tj +/TT8 1 Tf +9 0 0 9 469.916 503.49 Tm +0.0556 Tw +[(. The following)]TJ +-38.2129 -1.3278 TD +0 Tw +(functions can also be used:)Tj +/TT10 1 Tf +10 0 0 10 150 469.26 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 469.26 Tm +(WRITEIMAGEOBJ)Tj +/F3 1 Tf +10 0 0 10 226.2 469.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.07 469.26 Tm +(IMAGEOBJ STREAM)Tj +/TT10 1 Tf +10 0 0 10 310.0832 469.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.0841 469.26 Tm +[( )-19116.2([Function])]TJ +-15.7871 -1.8889 TD +0.0722 Tw +(Prints \(using )Tj +/TT10 1 Tf +10 0 0 10 228.5002 452.26 Tm +0 Tw +(PRIN2)Tj +/TT8 1 Tf +9 0 0 9 258.5051 452.26 Tm +0.0722 Tw +(\) a call to )Tj +/TT10 1 Tf +10 0 0 10 299.1837 452.26 Tm +0 Tw +(READIMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 371.1954 452.26 Tm +0.0722 Tw +(, then calls the )Tj +/TT10 1 Tf +10 0 0 10 432.8008 452.26 Tm +0 Tw +(PUTFN)Tj +/TT8 1 Tf +9 0 0 9 462.8057 452.26 Tm +0.0722 Tw +[( for )]TJ +/TT15 1 Tf +1.9184 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.0722 Tw +[( to)]TJ +-38.8087 -1.3333 TD +0.2467 Tw +(write it onto )Tj +/TT15 1 Tf +6.4324 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.2467 Tw +[(. During input, then, the call to )]TJ +/TT10 1 Tf +10 0 0 10 409.0367 440.26 Tm +0 Tw +(READIMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 481.0484 440.26 Tm +0.2467 Tw +[( is read and)]TJ +-34.1165 -1.3333 TD +0 Tw +(evaluated; it in turn reads back the objects description, using the appropriate )Tj +/TT10 1 Tf +10 0 0 10 484.0649 428.26 Tm +(GETFN)Tj +/TT8 1 Tf +9 0 0 9 514.0698 428.26 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 405.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 405.03 Tm +(READIMAGEOBJ)Tj +/F3 1 Tf +10 0 0 10 220.8 405.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.67 405.03 Tm +(STREAM GETFN NOERROR)Tj +/TT10 1 Tf +10 0 0 10 331.6876 405.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 337.6885 405.03 Tm +[( )-16715.7([Function])]TJ +-18.1876 -1.8889 TD +0.0078 Tw +(Reads an )Tj +/TT10 1 Tf +10 0 0 10 212.513 388.03 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 260.5208 388.03 Tm +0.0078 Tw +[( from )]TJ +/TT15 1 Tf +2.6723 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0078 Tw +[(, starting at the current file position. Uses the function)]TJ +/TT15 1 Tf +-15.8863 -1.3278 TD +0 Tw +(GETFN)Tj +/TT8 1 Tf +3.0005 0 TD +( after validating it \(and loading support code, if necessary\).)Tj +-3.0005 -2.0722 TD +0.5533 Tw +(If the )Tj +/TT15 1 Tf +3.6638 0 TD +0 Tw +(GETFN)Tj +/TT8 1 Tf +3.0005 0 TD +0.5533 Tw +[( cant be validated or isnt defined, )]TJ +/TT10 1 Tf +10 0 0 10 408.9099 357.43 Tm +0 Tw +(READIMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 480.9215 357.43 Tm +0.5533 Tw +[( returns an)]TJ +-34.1024 -1.3333 TD +0.01 Tw +("encapsulated image object", an )Tj +/TT10 1 Tf +10 0 0 10 302.2057 345.43 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 350.2135 345.43 Tm +0.01 Tw +[( that safely encapsulates all of the information)]TJ +-19.5793 -1.3278 TD +0.2244 Tw +[(in the image object. An encapsulated image object displays as a rectangle that says,)]TJ +0 -1.2278 TD +0 Tw +(")Tj +/TT10 1 Tf +10 0 0 10 177.3398 322.43 Tm +0.147 Tw +(Unknown IMAGEOBJ Type)Tj +/TT8 1 Tf +9 0 0 9 306.3003 322.43 Tm +0.0611 Tw +(" and lists the )Tj +/TT15 1 Tf +6.4515 0 TD +0 Tw +(GETFN)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +[(s name. Selecting an encapsulated)]TJ +-24.152 -1.3278 TD +0.0167 Tw +(image object with the mouse causes another attempt to read the object from the file; this is)Tj +0 -1.2222 TD +0 Tw +(so you can load any necessary support code and then get to the object.)Tj +0 -2 TD +0.2267 Tw +(Warning: You cannot save an encapsulated image object on a file because there isnt)Tj +0 -1.2222 TD +0 Tw +(enough information to allow copying the description to the new file from the old one.)Tj +0 -2.0056 TD +(If )Tj +/TT15 1 Tf +1.0744 0 TD +(NOERROR)Tj +/TT8 1 Tf +4.2007 0 TD +0.1544 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 253.5757 252.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 271.5787 252.43 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 277.4687 252.43 Tm +(READIMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 349.4804 252.43 Tm +0.1544 Tw +[( returns )]TJ +/TT10 1 Tf +10 0 0 10 385.5973 252.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 403.6002 252.43 Tm +0.1544 Tw +[( if it cant successfully read the)]TJ +-25.5111 -1.3278 TD +0 Tw +(object.)Tj +ET +endstream +endobj +152 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +154 0 obj +<< +/Length 7756 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-39)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT4 1 Tf +-33 -4.38 TD +(Copying Image Objects Between Windows)Tj +/TT8 1 Tf +9 0 0 9 78 542.54 Tm +0.0522 Tw +[(Copying between windows is implemented as follows: If a button event occurs in a window when a)]TJ +0 -1.2278 TD +0.0189 Tw +(copy key is down, the windows )Tj +/TT10 1 Tf +10 0 0 10 210.0825 531.49 Tm +0 Tw +(COPYBUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 312.0991 531.49 Tm +0.0189 Tw +[( window property is called. If this window)]TJ +-26.011 -1.3278 TD +0.0267 Tw +[(supports copy-selection, it should track the mouse, indicating the item to be copied. When the button)]TJ +0 -1.2278 TD +0.4722 Tw +(is released, the )Tj +/TT10 1 Tf +10 0 0 10 151.5879 508.49 Tm +0 Tw +(COPYBUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 253.6045 508.49 Tm +0.4722 Tw +[( should create an image object out of the selected)]TJ +-19.5116 -1.3333 TD +0.05 Tw +(information, and call )Tj +/TT10 1 Tf +10 0 0 10 164.7929 496.49 Tm +0 Tw +(COPYINSERT)Tj +/TT8 1 Tf +9 0 0 9 224.8026 496.49 Tm +0.05 Tw +[( to insert it in the current )]TJ +/TT10 1 Tf +10 0 0 10 328.939 496.49 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 346.9419 496.49 Tm +0.05 Tw +[( window. )]TJ +/TT10 1 Tf +10 0 0 10 390.5717 496.49 Tm +0 Tw +(COPYINSERT)Tj +/TT8 1 Tf +9 0 0 9 450.5814 496.49 Tm +0.05 Tw +[( calls the)]TJ +/TT10 1 Tf +10 0 0 10 78 484.49 Tm +0 Tw +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 150.0117 484.49 Tm +0.0844 Tw +[( window property of the )]TJ +/TT10 1 Tf +10 0 0 10 253.8312 484.49 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 271.8342 484.49 Tm +0.0844 Tw +[( window to insert this image object. Therefore, both)]TJ +-21.5371 -1.3278 TD +0 Tw +(the source and destination windows can determine how they handle copying image objects.)Tj +0 -2.8944 TD +0.0589 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 102.0742 446.49 Tm +0 Tw +(COPYBUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 204.0908 446.49 Tm +0.0589 Tw +[( of a window is )]TJ +/TT10 1 Tf +10 0 0 10 270.1143 446.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 288.1172 446.49 Tm +0.0589 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 308.4121 446.49 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 386.4248 446.49 Tm +0.0589 Tw +[( is called instead when a)]TJ +-34.2694 -1.3278 TD +0.0767 Tw +(button event occurs in the window when a copy key is down, and copying from that window is not)Tj +0 -1.2278 TD +0.0922 Tw +[(supported. If the )]TJ +/TT10 1 Tf +10 0 0 10 152.3576 423.49 Tm +0 Tw +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 224.3693 423.49 Tm +0.0922 Tw +[( of the )]TJ +/TT10 1 Tf +10 0 0 10 254.0043 423.49 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 272.0073 423.49 Tm +0.0922 Tw +[( window is )]TJ +/TT10 1 Tf +10 0 0 10 320.9606 423.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 338.9636 423.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 344.2936 423.49 Tm +(COPYINSERT)Tj +/TT8 1 Tf +9 0 0 9 404.3033 423.49 Tm +0.0922 Tw +[( will turn the image)]TJ +-36.2559 -1.3333 TD +0.0611 Tw +(object into a string \(by calling the )Tj +/TT10 1 Tf +10 0 0 10 216.2743 411.49 Tm +0 Tw +(PREPRINTFN)Tj +/TT8 1 Tf +9 0 0 9 276.2841 411.49 Tm +0.0611 Tw +[( method of the image object\) and insert it by calling)]TJ +/TT10 1 Tf +10 0 0 10 78 399.49 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 126.0078 399.49 Tm +(.)Tj +/TT13 1 Tf +-2.6675 -2.4389 TD +(COPYBUTTONEVENTFN)Tj +/TT8 1 Tf +10.2017 0 TD +[( )-23281.7([Window Property])]TJ +-7.535 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 145.1244 360.89 Tm +(COPYBUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 247.141 360.89 Tm +0.2011 Tw +[( of a window is called \(if it exists\) when a button event)]TJ +-13.4601 -1.3333 TD +0.0489 Tw +[(occurs in the window and a copy key is down. If no )]TJ +/TT10 1 Tf +10 0 0 10 341.6907 348.89 Tm +0 Tw +(COPYBUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 443.7073 348.89 Tm +0.0489 Tw +[( exists, the)]TJ +/TT10 1 Tf +10 0 0 10 126 336.89 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 204.0127 336.89 Tm +( is called.)Tj +/TT13 1 Tf +-11.3347 -2.4389 TD +(COPYINSERTFN)Tj +/TT8 1 Tf +7.2012 0 TD +[( )-26282.2([Window Property])]TJ +-4.5345 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.4844 298.29 Tm +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 216.4962 298.29 Tm +0.13 Tw +[( of the "destination" window is called by )]TJ +/TT10 1 Tf +10 0 0 10 388.7922 298.29 Tm +0 Tw +(COPYINSERT)Tj +/TT8 1 Tf +9 0 0 9 448.8019 298.29 Tm +0.13 Tw +[( to insert)]TJ +-35.8669 -1.3278 TD +0.0622 Tw +[(something into the destination window. It is called with two arguments: the object to be)]TJ +0 -1.2222 TD +0.0656 Tw +[(inserted and the destination window. The object to be inserted can be a character string,)]TJ +0 -1.2278 TD +0 Tw +(an )Tj +/TT10 1 Tf +10 0 0 10 139.9983 264.29 Tm +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 188.0061 264.29 Tm +0.2233 Tw +(, or a list of )Tj +/TT10 1 Tf +10 0 0 10 244.4228 264.29 Tm +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +9 0 0 9 292.4306 264.29 Tm +0.2233 Tw +[(s and character strings. As a convention, the)]TJ +/TT10 1 Tf +10 0 0 10 126 252.29 Tm +0 Tw +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 198.0117 252.29 Tm +0.0744 Tw +[( should call )]TJ +/TT10 1 Tf +10 0 0 10 248.0144 252.29 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 296.0222 252.29 Tm +0.0744 Tw +[( if the object to be inserted insert is a character)]TJ +-18.8914 -1.3278 TD +0 Tw +(string.)Tj +/TT10 1 Tf +10 0 0 10 102 218.06 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 218.06 Tm +(COPYINSERT)Tj +/F3 1 Tf +10 0 0 10 162.0098 218.06 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 218.06 Tm +(IMAGEOBJ)Tj +/TT10 1 Tf +10 0 0 10 208.0868 218.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 214.0878 218.06 Tm +[( )-25115.8([Function])]TJ +/TT10 1 Tf +10 0 0 10 126 201.06 Tm +(COPYINSERT)Tj +/TT8 1 Tf +9 0 0 9 186.0097 201.06 Tm +0.1944 Tw +[( inserts )]TJ +/TT15 1 Tf +3.8098 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.1944 Tw +[( into the window that currently has the )]TJ +/TT10 1 Tf +10 0 0 10 435.2641 201.06 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 453.2671 201.06 Tm +0.1944 Tw +[(. If the)]TJ +-36.363 -1.3333 TD +0 Tw +(current )Tj +/TT10 1 Tf +10 0 0 10 158.2971 189.06 Tm +(TTY)Tj +/TT8 1 Tf +9 0 0 9 176.3 189.06 Tm +0.1144 Tw +[( window has a )]TJ +/TT10 1 Tf +10 0 0 10 240.7525 189.06 Tm +0 Tw +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 312.7643 189.06 Tm +0.1144 Tw +(, it is called, passing it )Tj +/TT15 1 Tf +10.6295 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.1144 Tw +[( and the)]TJ +-36.1819 -1.3278 TD +0 Tw +(window as arguments.)Tj +0 -2.0056 TD +0.1056 Tw +(If no )Tj +/TT10 1 Tf +10 0 0 10 148.5806 159.06 Tm +0 Tw +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 220.5924 159.06 Tm +0.1056 Tw +[( exists and if )]TJ +/TT15 1 Tf +6.1991 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.1056 Tw +[( is an image object, )]TJ +/TT10 1 Tf +10 0 0 10 401.6321 159.06 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 449.64 159.06 Tm +0.1056 Tw +[( is called)]TJ +-35.96 -1.3333 TD +0.0744 Tw +(on the result of calling its )Tj +/TT10 1 Tf +10 0 0 10 232.6938 147.06 Tm +0 Tw +(PREPRINTFN)Tj +/TT8 1 Tf +9 0 0 9 292.7036 147.06 Tm +0.0744 Tw +[( on it. If )]TJ +/TT15 1 Tf +4.2873 0 TD +0 Tw +(IMAGEOBJ)Tj +/TT8 1 Tf +4.8008 0 TD +0.0744 Tw +[( is not an image object, it is)]TJ +-27.6107 -1.3333 TD +0.0156 Tw +(simply passed to )Tj +/TT10 1 Tf +10 0 0 10 195.7789 135.06 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 243.7867 135.06 Tm +0.0156 Tw +[( . In this case, )]TJ +/TT10 1 Tf +10 0 0 10 302.1247 135.06 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 350.1325 135.06 Tm +0.0156 Tw +[( will call )]TJ +/TT10 1 Tf +10 0 0 10 386.3987 135.06 Tm +0 Tw +(PRIN2)Tj +/TT8 1 Tf +9 0 0 9 416.4036 135.06 Tm +0.0155 Tw +[( with a read table)]TJ +-32.2671 -1.3333 TD +0.0944 Tw +(taken from the process associated with the )Tj +/TT10 1 Tf +10 0 0 10 303.0818 123.06 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 321.0847 123.06 Tm +0.0944 Tw +[( window. A window that wishes to use)]TJ +/TT10 1 Tf +10 0 0 10 126 111.06 Tm +0 Tw +(PRIN1)Tj +/TT8 1 Tf +9 0 0 9 156.0049 111.06 Tm +( or a different read table must provide its own )Tj +/TT10 1 Tf +10 0 0 10 341.6826 111.06 Tm +(COPYINSERTFN)Tj +/TT8 1 Tf +9 0 0 9 413.6943 111.06 Tm +( to do this.)Tj +ET +endstream +endobj +155 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +157 0 obj +<< +/Length 5610 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-40)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Implementation of Image Streams)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +534.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 543.54 Tm +0.0156 Tw +(Interlisp does all image creation through a set of functions and data structures for device-independent)Tj +0 -1.2278 TD +0.0456 Tw +(graphics, known popularly as )Tj +/TT10 1 Tf +10 0 0 10 248.7005 532.49 Tm +0 Tw +(DIG)Tj +/TT8 1 Tf +9 0 0 9 266.7035 532.49 Tm +0.0456 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 274.2735 532.49 Tm +0 Tw +(DIG)Tj +/TT8 1 Tf +9 0 0 9 292.2764 532.49 Tm +0.0456 Tw +[( is implemented through the use of a special type of stream,)]TJ +-18.4752 -1.3278 TD +0 Tw +(known as an image stream.)Tj +0 -2.8944 TD +0.1989 Tw +(An image stream, by convention, is any stream that has its )Tj +/TT10 1 Tf +10 0 0 10 379.8614 494.49 Tm +0 Tw +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 427.8692 494.49 Tm +0.1989 Tw +[( field \(described in detail)]TJ +-33.541 -1.3278 TD +0.2355 Tw +[(below\) set to a vector of meaningful graphical operations. Using image streams, you can write)]TJ +0 -1.2222 TD +0.0989 Tw +(programs that draw and print on an output stream without regard to the underlying device, be it a)Tj +T* +0 Tw +(window, a disk, or a printer.)Tj +0 -2.8889 TD +0.53 Tw +(To define a new image stream type, it is necessary to put information on the variable)Tj +/TT10 1 Tf +10 0 0 10 126 422.26 Tm +0 Tw +(IMAGESTREAMTYPES)Tj +/F2 1 Tf +9.6016 0 TD +(:)Tj +/TT13 1 Tf +9 0 0 9 150 400.31 Tm +(IMAGESTREAMTYPES)Tj +/TT8 1 Tf +9.6016 0 TD +[( )-28166.2([Variable])]TJ +-6.9349 -1.8444 TD +0.0022 Tw +(This variable describes how to create a stream for a given image stream type. The value of)Tj +/TT10 1 Tf +10 0 0 10 174 372.66 Tm +0 Tw +(IMAGESTREAMTYPES)Tj +/TT8 1 Tf +9 0 0 9 270.0156 372.66 Tm +0.2244 Tw +[( is an association list, indexed by the image stream type \(e.g.,)]TJ +/TT10 1 Tf +10 0 0 10 174 360.66 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 216.0068 360.66 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 220.5068 360.66 Tm +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 280.5166 360.66 Tm +(, etc.\). The format of a single association list item is:)Tj +/TT10 1 Tf +10 0 0 10 246 343.66 Tm +(\(IMAGETYPE)Tj +0 -1 TD +( \(OPENSTREAM OPENSTREAMFN\))Tj +T* +( \(FONTCREATE FONTCREATEFN\))Tj +T* +( \(FONTSAVAILABLE FONTSAVAILABLEFN\)\))Tj +-7.2 -1.7 TD +(OPENSTREAMFN)Tj +/TT8 1 Tf +9 0 0 9 246.0117 296.66 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 253.7817 296.66 Tm +(FONTCREATEFN)Tj +/TT8 1 Tf +9 0 0 9 325.7934 296.66 Tm +0.3633 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 354.3192 296.66 Tm +0 Tw +(FONTSAVAILABLEFN)Tj +/TT8 1 Tf +9 0 0 9 450.3349 296.66 Tm +0.3633 Tw +[( are "image stream)]TJ +-30.7039 -1.3278 TD +0.5867 Tw +(methods," device-dependent functions used to implement generic image stream)Tj +0 -1.2222 TD +0 Tw +(operations. For Interpress image streams, the association list entry is:)Tj +/TT10 1 Tf +10 0 0 10 246 257.66 Tm +(\(INTERPRESS)Tj +0 -1 TD +( \(OPENSTREAM OPENIPSTREAM\))Tj +T* +( \(FONTCREATE \\CREATEINTERPRESSFONT\))Tj +T* +( \(FONTSAVAILABLE \\SEARCHINTERPRESSFONTS\)\))Tj +-9.6 -2.123 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 206.43 Tm +(OPENSTREAMFN)Tj +/F3 1 Tf +10 0 0 10 220.8115 206.43 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 206.43 Tm +(FILE OPTIONS)Tj +/TT10 1 Tf +10 0 0 10 288.4921 206.43 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 294.493 206.43 Tm +[( )-15594.1([Image Stream Method])]TJ +/TT15 1 Tf +-13.3881 -1.8889 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1933 Tw +[( is the file name as it was passed to )]TJ +/TT10 1 Tf +10 0 0 10 353.8482 189.43 Tm +0 Tw +(OPENIMAGESTREAM)Tj +/TT8 1 Tf +9 0 0 9 443.8629 189.43 Tm +0.1933 Tw +(, and )Tj +/TT15 1 Tf +2.8295 0 TD +0 Tw +(OPTIONS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1933 Tw +[( is the)]TJ +/TT15 1 Tf +-37.015 -1.3333 TD +0 Tw +(OPTIONS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1011 Tw +[( property list passed to )]TJ +/TT10 1 Tf +10 0 0 10 309.8849 177.43 Tm +0 Tw +(OPENIMAGESTREAM)Tj +/TT8 1 Tf +9 0 0 9 399.8996 177.43 Tm +0.1011 Tw +[(. The result must be a stream of)]TJ +-25.1 -1.3278 TD +0 Tw +(the appropriate image type.)Tj +/TT10 1 Tf +10 0 0 10 150 143.2 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 143.2 Tm +(FONTCREATEFN)Tj +/F3 1 Tf +10 0 0 10 220.8115 143.2 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 143.2 Tm +(FAMILY SIZE FACE ROTATION DEVICE)Tj +/TT10 1 Tf +10 0 0 10 396.5096 143.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 402.5106 143.2 Tm +[( )-3592.2([Image Stream Method])]TJ +/TT15 1 Tf +-25.3901 -1.8889 TD +(FAMILY)Tj +/TT8 1 Tf +3.6006 0 TD +0.0556 Tw +[( is the family name for the font, e.g., )]TJ +/TT10 1 Tf +10 0 0 10 356.105 126.2 Tm +0 Tw +(MODERN)Tj +/TT8 1 Tf +9 0 0 9 392.1108 126.2 Tm +0.0556 Tw +(. )Tj +/TT15 1 Tf +0.8611 0 TD +0 Tw +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0556 Tw +[( is the body size of the font,)]TJ +-27.496 -1.3278 TD +0.3389 Tw +(in printers points. )Tj +/TT15 1 Tf +10.0196 0 TD +0 Tw +(FACE)Tj +/TT8 1 Tf +2.4004 0 TD +0.3389 Tw +[( is a three-element list describing the weight, slope, and)]TJ +-12.42 -1.2944 TD +0.0367 Tw +(expansion of the face desired, e.g., \()Tj +/TT10 1 Tf +10 0 0 10 317.2861 102.6 Tm +0.089 Tw +(MEDIUM ITALIC EXPANDED)Tj +/TT8 1 Tf +9 0 0 9 451.0876 102.6 Tm +0.0367 Tw +(\). )Tj +/TT15 1 Tf +1.1563 0 TD +0 Tw +(ROTATION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0367 Tw +[( is how)]TJ +-36.7446 -1.3278 TD +0.2644 Tw +[(much the font is to be rotated from the normal orientation, in minutes of arc. For)]TJ +0 -1.2222 TD +0.2767 Tw +[(example, to print a landscape page, fonts have the rotation 5400 \(90 degrees\). The)]TJ +0 -1.2278 TD +0 Tw +(functions result must be a )Tj +/TT10 1 Tf +10 0 0 10 281.5034 68.6 Tm +(FONTDESCRIPTOR)Tj +/TT8 1 Tf +9 0 0 9 365.5171 68.6 Tm +( with the fields filled in appropriately.)Tj +ET +endstream +endobj +158 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +160 0 obj +<< +/Length 8178 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-41)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(FONTSAVAILABLEFN)Tj +/F3 1 Tf +10 0 0 10 194.415 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 197.285 568.26 Tm +(FAMILY SIZE FACE ROTATION DEVICE)Tj +/TT10 1 Tf +10 0 0 10 370.1132 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 376.1141 568.26 Tm +[( )-1191.8([Image Stream Method])]TJ +-27.7905 -1.8833 TD +0.2544 Tw +(This function returns a list of all fonts agreeing with the )Tj +/TT15 1 Tf +27.6324 0 TD +0 Tw +(FAMILY)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT15 1 Tf +0.7544 0 TD +(SIZE)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT15 1 Tf +0.7544 0 TD +(FACE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2544 Tw +(, and)Tj +/TT15 1 Tf +-37.5426 -1.2944 TD +0 Tw +(ROTATION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0167 Tw +[( arguments; any of them may be wild-carded \(i.e., equal to )]TJ +/TT10 1 Tf +10 0 0 10 405.4327 539.66 Tm +0 Tw +(*)Tj +/TT8 1 Tf +9 0 0 9 411.4337 539.66 Tm +0.0167 Tw +(, which means any)Tj +-31.7149 -1.3278 TD +0.0689 Tw +[(value is acceptable\). Each element of the list should be a quintuple of the form \()]TJ +/TT15 1 Tf +36.3903 0 TD +0 Tw +(FAMILY)Tj +-36.3903 -1.2889 TD +(SIZE FACE ROTATION DEVICE)Tj +/TT8 1 Tf +15.0024 0 TD +(\).)Tj +-15.0024 -2.0722 TD +0.1 Tw +(Where the function looks is an implementation decision: the )Tj +/TT10 1 Tf +10 0 0 10 375.3334 497.46 Tm +0 Tw +(FONTSAVAILABLEFN)Tj +/TT8 1 Tf +9 0 0 9 471.349 497.46 Tm +0.1 Tw +[( for)]TJ +-38.3721 -1.3333 TD +0.0467 Tw +(the display device looks at )Tj +/TT10 1 Tf +10 0 0 10 235.8187 485.46 Tm +0 Tw +(DISPLAYFONTDIRECTORIES)Tj +/TT8 1 Tf +9 0 0 9 367.8402 485.46 Tm +0.0467 Tw +(, the Interpress code looks on)Tj +/TT10 1 Tf +10 0 0 10 126 473.46 Tm +0 Tw +(INTERPRESSFONTDIRECTORIES)Tj +/TT8 1 Tf +9 0 0 9 276.0244 473.46 Tm +0.1022 Tw +(, and implementors of new devices should feel free)Tj +-16.6694 -1.3278 TD +0 Tw +(to introduce new search path variables.)Tj +-5.3333 -2.8944 TD +0.0589 Tw +(As indicated above, image streams use a field that no other stream uses: )Tj +/TT10 1 Tf +10 0 0 10 372.9515 435.46 Tm +0 Tw +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 420.9594 435.46 Tm +0.0589 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 428.7693 435.46 Tm +0 Tw +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 476.7772 435.46 Tm +0.0589 Tw +[( is)]TJ +-44.3086 -1.3333 TD +0.0189 Tw +(an instance of the )Tj +/TT10 1 Tf +10 0 0 10 150.4647 423.46 Tm +0 Tw +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 198.4725 423.46 Tm +0.0189 Tw +[( data type and contains a vector of the streams graphical methods. The)]TJ +-13.3858 -1.3333 TD +0.1811 Tw +(methods contained in the )Tj +/TT10 1 Tf +10 0 0 10 187.7651 411.46 Tm +0 Tw +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 235.7729 411.46 Tm +0.1811 Tw +[( object can make arbitrary use of the streams )]TJ +/TT10 1 Tf +10 0 0 10 431.9547 411.46 Tm +0 Tw +(IMAGEDATA)Tj +/TT8 1 Tf +9 0 0 9 78 399.51 Tm +(field, which is provided for their use, and may contain any data needed.)Tj +/TT13 1 Tf +2.6667 -2.3389 TD +(IMAGETYPE)Tj +/TT8 1 Tf +5.4009 0 TD +[( )-28288([)]TJ +/TT10 1 Tf +10 0 0 10 412.6971 378.46 Tm +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 460.7049 378.46 Tm +( Field])Tj +-37.1894 -1.8889 TD +0.0433 Tw +[(Value is the name of an image type. Monochrome display streams have an )]TJ +/TT10 1 Tf +10 0 0 10 431.9185 361.46 Tm +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +9 0 0 9 126 349.46 Tm +(of )Tj +/TT10 1 Tf +10 0 0 10 139.6601 349.46 Tm +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 181.667 349.46 Tm +0.3889 Tw +(; color display streams are identified as \()Tj +/TT10 1 Tf +10 0 0 10 366.8267 349.46 Tm +0.933 Tw +(COLOR DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 454.1693 349.46 Tm +0.3889 Tw +[(\). The)]TJ +/TT10 1 Tf +10 0 0 10 126 337.46 Tm +0 Tw +(IMAGETYPE)Tj +/TT8 1 Tf +9 0 0 9 180.0088 337.46 Tm +( field is informational and can be set to anything you choose.)Tj +/TT13 1 Tf +-8.6676 -2.4444 TD +(IMFONTCREATE)Tj +/TT8 1 Tf +7.2012 0 TD +[( )-26487.7([)]TJ +/TT10 1 Tf +10 0 0 10 412.6971 315.46 Tm +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 460.7049 315.46 Tm +( Field])Tj +-37.1894 -1.8889 TD +(Value is the device name to pass to )Tj +/TT10 1 Tf +10 0 0 10 267.3237 298.46 Tm +(FONTCREATE)Tj +/TT8 1 Tf +9 0 0 9 327.3335 298.46 Tm +( when fonts are created for the stream.)Tj +-22.3704 -2.1056 TD +0.2089 Tw +(The remaining fields are all image stream methods, whose value should be a device-)Tj +0 -1.2222 TD +0.0378 Tw +[(dependent function that implements the generic operation. Most methods are called by a)]TJ +0 -1.2278 TD +0.0933 Tw +(similarly-named function, e.g. the function )Tj +/TT10 1 Tf +10 0 0 10 302.5139 257.46 Tm +0 Tw +(DRAWLINE)Tj +/TT8 1 Tf +9 0 0 9 350.5218 257.46 Tm +0.0933 Tw +[( calls the )]TJ +/TT10 1 Tf +10 0 0 10 389.824 257.46 Tm +0 Tw +(IMDRAWLINE)Tj +/TT8 1 Tf +9 0 0 9 449.8337 257.46 Tm +0.0933 Tw +[( method.)]TJ +-35.9815 -1.3278 TD +0.0022 Tw +(All coordinates that refer to points in a display devices space are measured in the devices)Tj +0 -1.2278 TD +0.1178 Tw +[(units. \(The )]TJ +/TT10 1 Tf +10 0 0 10 176.2762 234.46 Tm +0 Tw +(IMSCALE)Tj +/TT8 1 Tf +9 0 0 9 218.283 234.46 Tm +0.1178 Tw +[( method provides access to a devices scale.\) For arguments that)]TJ +-10.2537 -1.3333 TD +0.1067 Tw +(have defaults \(such as the )Tj +/TT10 1 Tf +10 0 0 10 235.5568 222.46 Tm +0 Tw +(BRUSH)Tj +/TT8 1 Tf +9 0 0 9 265.5617 222.46 Tm +0.1067 Tw +[( argument of )]TJ +/TT10 1 Tf +10 0 0 10 322.0198 222.46 Tm +0 Tw +(DRAWCURVE)Tj +/TT8 1 Tf +9 0 0 9 376.0286 222.46 Tm +0.1067 Tw +(\), the default is substituted)Tj +-27.781 -1.3333 TD +0.08 Tw +(for the )Tj +/TT10 1 Tf +10 0 0 10 155.8902 210.46 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 173.8931 210.46 Tm +0.08 Tw +[( argument before it is passed to the image stream method. Therefore, image)]TJ +-5.3215 -1.3278 TD +0 Tw +(stream methods do not have to handle defaults.)Tj +/TT10 1 Tf +10 0 0 10 102 176.23 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 176.23 Tm +(IMCLOSEFN)Tj +/F3 1 Tf +10 0 0 10 156.6089 176.23 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.4789 176.23 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 191.8842 176.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 197.8851 176.23 Tm +[( )-20995([Image Stream Method])]TJ +-7.9872 -1.8889 TD +0.0856 Tw +(Called before a stream is closed with )Tj +/TT10 1 Tf +10 0 0 10 279.578 159.23 Tm +0 Tw +(CLOSEF)Tj +/TT8 1 Tf +9 0 0 9 315.5838 159.23 Tm +0.0856 Tw +[(. This method should flush buffers, write)]TJ +-21.0649 -1.3278 TD +0 Tw +(header or trailer information, etc.)Tj +/TT10 1 Tf +10 0 0 10 102 125 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 125 Tm +(IMDRAWLINE)Tj +/F3 1 Tf +10 0 0 10 162.0098 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.8798 125 Tm +(STREAM)Tj +/F1 1 Tf +10 0 0 10 197.285 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 200.065 125 Tm +(X)Tj +0.5983 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 210.85 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 213.63 125 Tm +(Y)Tj +0.6 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 224.43 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 227.21 125 Tm +(X)Tj +0.6 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 238.01 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 240.79 125 Tm +(Y)Tj +0.6 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 251.59 125 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 254.37 125 Tm +(WIDTH OPERATION COLOR DASHING)Tj +/TT10 1 Tf +10 0 0 10 410.9955 125 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 416.9965 125 Tm +[( )-721.5([Image Stream)]TJ +-34.3329 -1.4 TD +(Method])Tj +2 -1.92 TD +(Draws a line of width )Tj +/TT15 1 Tf +9.8428 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +( from \()Tj +/TT15 1 Tf +2.9897 0 TD +(X)Tj +0.6037 -0.3333 TD +(1)Tj +/F1 1 Tf +10 0 0 10 279.33 95.12 Tm +(, )Tj +/TT15 1 Tf +9 0 0 9 284.89 95.12 Tm +(Y)Tj +0.6 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\) to \()Tj +/TT15 1 Tf +2.0381 0 TD +(X)Tj +0.5997 -0.3333 TD +(2)Tj +/F1 1 Tf +10 0 0 10 324.83 95.12 Tm +(, )Tj +/TT15 1 Tf +9 0 0 9 330.39 95.12 Tm +(Y)Tj +0.6 -0.3333 TD +(2)Tj +/TT8 1 Tf +0.6 0.3333 TD +(\). See )Tj +/TT10 1 Tf +10 0 0 10 366.5332 95.12 Tm +(DRAWLINE)Tj +/TT8 1 Tf +9 0 0 9 414.541 95.12 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 69.24 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 69.24 Tm +(IMDRAWCURVE)Tj +/F3 1 Tf +10 0 0 10 167.4106 69.24 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.2806 69.24 Tm +(STREAM KNOTS CLOSED BRUSH DASHING)Tj +/TT10 1 Tf +10 0 0 10 348.5096 69.24 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 354.5106 69.24 Tm +[( )-3592.2([Image Stream Method])]TJ +-25.3901 -1.8889 TD +(Draws a curve through )Tj +/TT15 1 Tf +10.5029 0 TD +(KNOTS)Tj +/TT8 1 Tf +3.0005 0 TD +(. See )Tj +/TT10 1 Tf +10 0 0 10 269.877 52.24 Tm +(DRAWCURVE)Tj +/TT8 1 Tf +9 0 0 9 323.8857 52.24 Tm +(.)Tj +ET +endstream +endobj +161 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +164 0 obj +<< +/Length 7855 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-42)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 568.26 Tm +(IMDRAWCIRCLE)Tj +/F3 1 Tf +10 0 0 10 220.8115 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 568.26 Tm +(STREAM CENTERX CENTERY RADIUS BRUSH DASHING)Tj +/TT10 1 Tf +10 0 0 10 455.9193 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 461.9203 568.26 Tm +[( )-1063.3([Image Stream)]TJ +-33.9911 -1.1056 TD +(Method])Tj +2 -1.7833 TD +(Draws a circle of radius )Tj +/TT15 1 Tf +10.7231 0 TD +(RADIUS)Tj +/TT8 1 Tf +3.6006 0 TD +( around \()Tj +/TT15 1 Tf +4.0698 0 TD +(CENTERX, CENTERY)Tj +/TT8 1 Tf +9.6016 0 TD +(\). See )Tj +/TT10 1 Tf +10 0 0 10 451.2993 542.26 Tm +(DRAWCIRCLE)Tj +/TT8 1 Tf +9 0 0 9 511.3091 542.26 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 519.03 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 519.03 Tm +(IMDRAWELLIPSE)Tj +/F3 1 Tf +10 0 0 10 226.2124 519.03 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 230.6424 519.03 Tm +0.3267 Tw +(STREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS)Tj +-8.2936 -1.1111 TD +(ORIENTATION BRUSH DASHING)Tj +/TT10 1 Tf +10 0 0 10 291 509.03 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 297.0009 509.03 Tm +[( )-136.7( )-15178.8([Image Stream Method])]TJ +-13.6668 -1.8889 TD +(Draws an ellipse around \()Tj +/TT15 1 Tf +11.4346 0 TD +(CENTERX, CENTERY)Tj +/TT8 1 Tf +9.6016 0 TD +(\). See )Tj +/TT10 1 Tf +10 0 0 10 388.6685 492.03 Tm +(DRAWELLIPSE)Tj +/TT8 1 Tf +9 0 0 9 454.6792 492.03 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 468.8 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 468.8 Tm +(IMFILLPOLYGON)Tj +/F3 1 Tf +10 0 0 10 226.2124 468.8 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.0824 468.8 Tm +(STREAM POINTS TEXTURE)Tj +/TT10 1 Tf +10 0 0 10 342.5009 468.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 348.5018 468.8 Tm +[( )-9593.1([Image Stream Method])]TJ +-19.3891 -1.8833 TD +0.0878 Tw +(Fills in the polygon outlined by )Tj +/TT15 1 Tf +14.6565 0 TD +0 Tw +(POINTS)Tj +/TT8 1 Tf +3.6006 0 TD +0.0878 Tw +[( on the image stream )]TJ +/TT15 1 Tf +9.9198 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0878 Tw +(, using the texture)Tj +/TT15 1 Tf +-31.7776 -1.2944 TD +0 Tw +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +(. See )Tj +/TT10 1 Tf +10 0 0 10 234.1523 440.2 Tm +(FILLPOLYGON)Tj +/TT8 1 Tf +9 0 0 9 300.1631 440.2 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 416.97 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 416.97 Tm +(IMFILLCIRCLE)Tj +/F3 1 Tf +10 0 0 10 220.8115 416.97 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.6815 416.97 Tm +(STREAM CENTERX CENTERY RADIUS TEXTURE)Tj +/TT10 1 Tf +10 0 0 10 423.514 416.97 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 429.515 416.97 Tm +[( )-591.7([Image Stream Method])]TJ +-28.3906 -1.8833 TD +0.39 Tw +(Draws a circle filled with texture )Tj +/TT15 1 Tf +17.0641 0 TD +0 Tw +(TEXTURE)Tj +/TT8 1 Tf +4.2007 0 TD +0.39 Tw +[( around \()]TJ +/TT15 1 Tf +4.8498 0 TD +0.9356 Tw +(CENTERX, CENTERY)Tj +/TT8 1 Tf +10.5371 0 TD +0.39 Tw +[(\). See)]TJ +/TT10 1 Tf +10 0 0 10 174 388.37 Tm +0 Tw +(FILLCIRCLE)Tj +/TT8 1 Tf +9 0 0 9 234.0097 388.37 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 365.14 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 365.14 Tm +(IMBLTSHADE)Tj +/F3 1 Tf +10 0 0 10 210.0098 365.14 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 216.3398 365.14 Tm +0.7244 Tw +(TEXTURE STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH)Tj +-6.7044 -1.1111 TD +(HEIGHT OPERATION CLIPPINGREGION)Tj +/TT10 1 Tf +10 0 0 10 323.4 355.14 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 329.4009 355.14 Tm +[( )-302.2( )-11413.2([Image Stream Method])]TJ +-17.2668 -1.8889 TD +0.4567 Tw +(The texture-source case of )Tj +/TT10 1 Tf +10 0 0 10 296.168 338.14 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 332.1739 338.14 Tm +0.4567 Tw +(. )Tj +/TT15 1 Tf +1.6633 0 TD +0 Tw +(DESTINATIONLEFT)Tj +/TT8 1 Tf +9.0015 0 TD +(, )Tj +/TT15 1 Tf +0.9567 0 TD +(DESTINATIONBOTTOM,)Tj +-29.1963 -1.3278 TD +0.1189 Tw +(WIDTH, HEIGHT)Tj +/TT8 1 Tf +7.9202 0 TD +0.05 Tw +(, and )Tj +/TT15 1 Tf +2.5429 0 TD +0 Tw +(CLIPPINGREGION)Tj +/TT8 1 Tf +8.4014 0 TD +0.05 Tw +[( are measured in )]TJ +/TT15 1 Tf +7.8206 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +[(s units. This method)]TJ +-30.2856 -1.2944 TD +0 Tw +(is invoked by the functions )Tj +/TT10 1 Tf +10 0 0 10 283.9995 314.54 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 320.0053 314.54 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 339.7412 314.54 Tm +(BLTSHADE)Tj +/TT8 1 Tf +9 0 0 9 387.749 314.54 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 291.31 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 291.31 Tm +(IMBITBLT)Tj +/F2 1 Tf +10 0 0 10 199.208 291.31 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 203.518 291.31 Tm +0.33 Tw +(SOURCEBITMAP SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT)Tj +-5.2798 -1.0389 TD +1.32 Tw +(DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE)Tj +0 -1.0722 TD +(CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM SCALE)Tj +/TT10 1 Tf +10 0 0 10 469.2 272.31 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 475.201 272.31 Tm +0.55 Tw +[( )-1845.5([Image)]TJ +-35.4668 -1.1056 TD +0 Tw +(Stream Method])Tj +2 -1.7833 TD +0.4033 Tw +(Contains the bit-map-source cases of )Tj +/TT10 1 Tf +10 0 0 10 340.2677 246.31 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 376.2735 246.31 Tm +0.4033 Tw +(. )Tj +/TT15 1 Tf +1.5567 0 TD +0.9678 Tw +(SOURCELEFT, SOURCEBOTTOM,)Tj +-24.0315 -1.3278 TD +0.1922 Tw +(CLIPPEDSOURCELEFT, CLIPPEDSOURCEBOTTOM, WIDTH)Tj +/TT8 1 Tf +27.3888 0 TD +0.08 Tw +(, and )Tj +/TT15 1 Tf +2.6029 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( are measured)]TJ +-33.5923 -1.2889 TD +0.1056 Tw +(in pixels; )Tj +/TT15 1 Tf +4.4362 0 TD +0 Tw +(DESTINATIONLEFT)Tj +/TT8 1 Tf +9.0015 0 TD +(, )Tj +/TT15 1 Tf +0.6056 0 TD +(DESTINATIONBOTTOM)Tj +/TT8 1 Tf +10.2017 0 TD +0.1056 Tw +(, and )Tj +/TT15 1 Tf +2.654 0 TD +0 Tw +(CLIPPINGREGION)Tj +/TT8 1 Tf +8.4014 0 TD +0.1056 Tw +[( are in the)]TJ +-35.3002 -1.2889 TD +0 Tw +(units of the destination stream.)Tj +/TT10 1 Tf +10 0 0 10 150 188.82 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 188.82 Tm +(IMSCALEDBITBLT)Tj +/TT4 1 Tf +10 0 0 10 231.6133 188.82 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 244.2716 188.82 Tm +2.1311 Tw +(SOURCEBITMAP SOURCELEFT SOURCEBOTTOM STREAM)Tj +-9.808 -1.0389 TD +0.36 Tw +(DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION)Tj +0 -1.0722 TD +[(TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM SCALE)]TJ +/TT10 1 Tf +10 0 0 10 517.7999 169.82 Tm +0 Tw +(\))Tj +/TT8 1 Tf +9 0 0 9 523.8009 169.82 Tm +0.15 Tc +( )Tj +-40.8668 -1.1056 TD +0 Tc +([Image Stream Method])Tj +2 -1.7833 TD +0.0422 Tw +(A scaled version of )Tj +/TT10 1 Tf +10 0 0 10 253.7031 143.82 Tm +0 Tw +(IMBITBLT)Tj +/TT8 1 Tf +9 0 0 9 301.7109 143.82 Tm +0.0422 Tw +[(. Each pixel in )]TJ +/TT15 1 Tf +6.8991 0 TD +0 Tw +(SOURCEBITMAP)Tj +/TT8 1 Tf +7.2012 0 TD +0.0422 Tw +[( is replicated )]TJ +/TT15 1 Tf +6.0085 0 TD +0 Tw +(SCALE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0422 Tw +[( times)]TJ +-37.2994 -1.3333 TD +0 Tw +(in the )Tj +/TT10 1 Tf +10 0 0 10 198.8423 131.82 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 204.8432 131.82 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 224.5791 131.82 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 230.58 131.82 Tm +( directions; currently, )Tj +/TT15 1 Tf +9.71 0 TD +(SCALE)Tj +/TT8 1 Tf +3.0005 0 TD +( must be an integer.)Tj +/TT10 1 Tf +10 0 0 10 150 108.59 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 108.59 Tm +(IMMOVETO)Tj +/F2 1 Tf +10 0 0 10 199.208 108.59 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 201.988 108.59 Tm +(STREAM X Y)Tj +/TT10 1 Tf +10 0 0 10 255.9968 108.59 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 261.9978 108.59 Tm +[( )-19204.7([Image Stream Method])]TJ +-9.7775 -1.8889 TD +0.0711 Tw +(Moves to \()Tj +/TT15 1 Tf +4.8068 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.0711 Tw +[(\). This method is invoked by the function )]TJ +/TT10 1 Tf +10 0 0 10 407.6835 91.59 Tm +0 Tw +(MOVETO)Tj +/TT8 1 Tf +9 0 0 9 443.6894 91.59 Tm +0.0711 Tw +[(. If )]TJ +/TT10 1 Tf +10 0 0 10 460.6387 91.59 Tm +0 Tw +(IMMOVETO)Tj +/TT8 1 Tf +9 0 0 9 508.6465 91.59 Tm +0.0711 Tw +[( is not)]TJ +-37.1829 -1.3333 TD +0.0044 Tw +(supplied, a default method composed of calls to the )Tj +/TT10 1 Tf +10 0 0 10 382.1862 79.59 Tm +0 Tw +(IMXPOSITION)Tj +/TT8 1 Tf +9 0 0 9 448.1969 79.59 Tm +0.0009 Tc +0.0035 Tw +( and )Tj +/TT10 1 Tf +10 0 0 10 468.0128 79.59 Tm +0 Tc +0 Tw +(IMYPOSITION)Tj +/TT8 1 Tf +9 0 0 9 174 67.64 Tm +(methods is used.)Tj +ET +endstream +endobj +165 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +167 0 obj +<< +/Length 9117 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-43)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(IMSTRINGWIDTH)Tj +/F2 1 Tf +10 0 0 10 178.2124 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 180.9924 568.26 Tm +(STREAM STR RDTBL)Tj +/TT10 1 Tf +10 0 0 10 267.4065 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 273.4074 568.26 Tm +[( )-12603.6([Image Stream Method])]TJ +-16.3786 -2.0256 TD +0.0444 Tw +(Returns the width of string )Tj +/F1 1 Tf +10 0 0 10 237.9028 550.03 Tm +0 Tw +(STR)Tj +/TT8 1 Tf +9 0 0 9 258.8328 550.03 Tm +0.0444 Tw +[( in )]TJ +/TT15 1 Tf +1.4619 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0444 Tw +(s units, using )Tj +/TT15 1 Tf +6.5171 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0444 Tw +[(s current font. This is)]TJ +-29.9394 -1.2944 TD +0.5189 Tw +(envoked when )Tj +/TT10 1 Tf +10 0 0 10 196.4943 538.38 Tm +0 Tw +(STRINGWIDTH)Tj +/TT8 1 Tf +9 0 0 9 262.505 538.38 Tm +0.5189 Tw +[( is passed a stream as its )]TJ +/TT10 1 Tf +10 0 0 10 393.9709 538.38 Tm +0 Tw +(FONT)Tj +/TT8 1 Tf +9 0 0 9 417.9748 538.38 Tm +0.5189 Tw +[( argument. If)]TJ +/TT10 1 Tf +10 0 0 10 126 526.38 Tm +0 Tw +(IMSTRINGWIDTH)Tj +/TT8 1 Tf +9 0 0 9 204.0127 526.38 Tm +0.1144 Tw +[( is not supplied, it defaults to calling )]TJ +/TT10 1 Tf +10 0 0 10 359.2321 526.38 Tm +0 Tw +(STRINGWIDTH)Tj +/TT8 1 Tf +9 0 0 9 425.2429 526.38 Tm +0.1144 Tw +[( on the default)]TJ +-33.2492 -1.3278 TD +0 Tw +(font of )Tj +/TT15 1 Tf +3.166 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 491.55 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 491.55 Tm +(IMCHARWIDTH)Tj +/F2 1 Tf +10 0 0 10 167.4106 491.55 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.1906 491.55 Tm +(STREAM CHARCODE)Tj +/TT10 1 Tf +10 0 0 10 251.2038 491.55 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 257.2048 491.55 Tm +[( )-14403.9([Image Stream Method])]TJ +-14.5783 -1.8833 TD +0.0056 Tw +(Returns the width of character )Tj +/TT15 1 Tf +13.7299 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0056 Tw +[( in )]TJ +/TT15 1 Tf +1.3842 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0056 Tw +(s units, using )Tj +/TT15 1 Tf +6.4005 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0056 Tw +(s current font.)Tj +-33.5165 -1.2944 TD +0.2922 Tw +(This is invoked when )Tj +/TT10 1 Tf +10 0 0 10 224.103 462.95 Tm +0 Tw +(CHARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 278.1118 462.95 Tm +0.2922 Tw +[( is passed a stream as its )]TJ +/TT10 1 Tf +10 0 0 10 400.1777 462.95 Tm +0 Tw +(FONT)Tj +/TT8 1 Tf +9 0 0 9 424.1816 462.95 Tm +0.2922 Tw +[( argument. If)]TJ +/TT10 1 Tf +10 0 0 10 126 450.95 Tm +0 Tw +(IMCHARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 192.0107 450.95 Tm +0.0589 Tw +[( is not supplied, it defaults to calling )]TJ +/TT10 1 Tf +10 0 0 10 343.2302 450.95 Tm +0 Tw +(CHARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 397.239 450.95 Tm +0.0589 Tw +[( on the default font of)]TJ +/TT15 1 Tf +-30.1377 -1.3278 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 416.12 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 416.12 Tm +(IMCHARWIDTHY)Tj +/F2 1 Tf +10 0 0 10 172.8115 416.12 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.5915 416.12 Tm +(STREAM CHARCODE)Tj +/TT10 1 Tf +10 0 0 10 256.6047 416.12 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 262.6057 416.12 Tm +[( )-13803.8([Image Stream Method])]TJ +-15.1784 -1.8889 TD +0.1111 Tw +(Returns the )Tj +/TT10 1 Tf +10 0 0 10 176.2783 399.12 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 182.2793 399.12 Tm +0.1111 Tw +[( componant of the width of character )]TJ +/TT15 1 Tf +17.3915 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1111 Tw +[( in )]TJ +/TT15 1 Tf +1.5953 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1111 Tw +(s units, using)Tj +/TT15 1 Tf +-33.6414 -1.3333 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1244 Tw +[(s current font. This is envoked when )]TJ +/TT10 1 Tf +10 0 0 10 319.3062 387.12 Tm +0 Tw +(CHARWIDTHY)Tj +/TT8 1 Tf +9 0 0 9 379.3159 387.12 Tm +0.1244 Tw +[( is passed a stream as its)]TJ +/TT10 1 Tf +10 0 0 10 126 375.12 Tm +0 Tw +(FONT)Tj +/TT8 1 Tf +9 0 0 9 150.0039 375.12 Tm +0.0078 Tw +[( argument. If )]TJ +/TT10 1 Tf +10 0 0 10 206.4812 375.12 Tm +0 Tw +(IMCHARWIDTHY)Tj +/TT8 1 Tf +9 0 0 9 278.4929 375.12 Tm +0.0078 Tw +[( is not supplied, it defaults to calling )]TJ +/TT10 1 Tf +10 0 0 10 426.0323 375.12 Tm +0 Tw +(CHARWIDTHY)Tj +/TT8 1 Tf +9 0 0 9 126 363.17 Tm +(on the default font of )Tj +/TT15 1 Tf +9.5742 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 340.29 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 340.29 Tm +(IMBITMAPSIZE)Tj +/F2 1 Tf +10 0 0 10 172.8115 340.29 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 175.5915 340.29 Tm +(STREAM BITMAP DIMENSION)Tj +/TT10 1 Tf +10 0 0 10 299.8117 340.29 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 305.8127 340.29 Tm +[( )-9003([Image Stream Method])]TJ +-19.9792 -1.8889 TD +0.1678 Tw +(Returns the size that )Tj +/TT15 1 Tf +9.9636 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +[( will be when )]TJ +/TT10 1 Tf +10 0 0 10 310.0644 323.29 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 346.0702 323.29 Tm +0.1678 Tw +(ed to )Tj +/TT15 1 Tf +2.7975 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +(, in )Tj +/TT15 1 Tf +1.9586 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1678 Tw +(s units.)Tj +/TT15 1 Tf +-36.4095 -1.3333 TD +0 Tw +(DIMENSION)Tj +/TT8 1 Tf +5.4009 0 TD +0.23 Tw +[( can be one of )]TJ +/TT15 1 Tf +7.4439 0 TD +0.5511 Tw +(WIDTH, HEIGHT)Tj +/TT8 1 Tf +8.3524 0 TD +0.23 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 336.1331 311.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 354.136 311.29 Tm +0.23 Tw +(, in which case the dotted pair)Tj +-25.3484 -1.3278 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.333 0 TD +(WIDTH . HEIGHT)Tj +/TT8 1 Tf +8.4014 0 TD +(\) will be returned.)Tj +-8.7344 -2.0722 TD +0.0022 Tw +(This is envoked by )Tj +/TT10 1 Tf +10 0 0 10 203.0458 280.69 Tm +0 Tw +(BITMAPIMAGESIZE)Tj +/TT8 1 Tf +9 0 0 9 293.0605 280.69 Tm +0.0004 Tc +0.0018 Tw +(. If )Tj +/TT10 1 Tf +10 0 0 10 308.1497 280.69 Tm +0 Tc +0 Tw +(IMBITMAPSIZE)Tj +/TT8 1 Tf +9 0 0 9 380.1615 280.69 Tm +0.0001 Tc +0.0021 Tw +( is not supplied, it defaults)Tj +-28.2402 -1.3278 TD +0 Tc +0 Tw +(to a method that multiplies the bitmap height and width by the scale of )Tj +/TT15 1 Tf +31.7212 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 245.86 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 245.86 Tm +(IMNEWPAGE)Tj +/F2 1 Tf +10 0 0 10 156.6089 245.86 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.3889 245.86 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 191.7942 245.86 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 197.7951 245.86 Tm +[( )-21005([Image Stream Method])]TJ +-7.9772 -1.8889 TD +0.1889 Tw +[(Causes a new page to be started. The )]TJ +/TT10 1 Tf +10 0 0 10 292.5817 228.86 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 298.5827 228.86 Tm +0.1889 Tw +[( position is set to the left margin, and the )]TJ +/TT10 1 Tf +10 0 0 10 480.07 228.86 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 126 216.91 Tm +0.3967 Tw +[(position is set to the top margin plus the linefeed. If not supplied, defaults to)]TJ +/TT10 1 Tf +10 0 0 10 126 205.86 Tm +0 Tw +(\(\\OUTCHAR STREAM \(CHARCODE ^L\)\))Tj +/TT8 1 Tf +9 0 0 9 312.0302 205.86 Tm +(. Envoked by )Tj +/TT10 1 Tf +10 0 0 10 368.812 205.86 Tm +(DSPNEWPAGE)Tj +/TT8 1 Tf +9 0 0 9 428.8217 205.86 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 182.57 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 182.57 Tm +(IMTERPRI)Tj +/TT4 1 Tf +10 0 0 10 151.208 182.57 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 153.9863 182.57 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 186.3916 182.57 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 192.3926 182.57 Tm +[( )-21605.3([Image Stream Method])]TJ +-7.377 -1.8889 TD +0.0111 Tw +[(Causes a new line to be started. The )]TJ +/TT10 1 Tf +10 0 0 10 273.7433 165.57 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 279.7442 165.57 Tm +0.0111 Tw +[( position is set to the left margin, and the )]TJ +/TT10 1 Tf +10 0 0 10 445.2315 165.57 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 451.2325 165.57 Tm +0.0111 Tw +[( position)]TJ +-36.137 -1.3333 TD +0.03 Tw +(is set to the current )Tj +/TT10 1 Tf +10 0 0 10 205.4452 153.57 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 211.4462 153.57 Tm +0.03 Tw +[( position plus the linefeed. If not supplied, defaults to )]TJ +/TT10 1 Tf +10 0 0 10 431.9631 153.57 Tm +0 Tw +(\(\\OUTCHAR)Tj +-30.5963 -1.2 TD +(STREAM \(CHARCODE EOL\)\))Tj +/TT8 1 Tf +9 0 0 9 258.0215 141.57 Tm +(. Envoked by )Tj +/TT10 1 Tf +10 0 0 10 314.8032 141.57 Tm +(TERPRI)Tj +/TT8 1 Tf +9 0 0 9 350.8091 141.57 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 118.34 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 118.34 Tm +(IMRESET)Tj +/F3 1 Tf +10 0 0 10 145.8 118.34 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 148.67 118.34 Tm +(STREAM)Tj +/TT10 1 Tf +10 0 0 10 181.0753 118.34 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 187.0762 118.34 Tm +[( )-22196([Image Stream Method])]TJ +-6.7863 -1.8889 TD +0.0967 Tw +(Resets the )Tj +/TT10 1 Tf +10 0 0 10 169.9231 101.34 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 175.9241 101.34 Tm +0.0967 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 197.3999 101.34 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 203.4009 101.34 Tm +0.0967 Tw +[( position of )]TJ +/TT15 1 Tf +5.5258 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0967 Tw +[(. The )]TJ +/TT10 1 Tf +10 0 0 10 312.2132 101.34 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 318.2141 101.34 Tm +0.0967 Tw +[( coordinate is set to its left margin; the )]TJ +/TT10 1 Tf +10 0 0 10 479.945 101.34 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 126 89.39 Tm +0.1755 Tw +[(coordinate is set to the top of the clipping region minus the font ascent. Envoked by)]TJ +/TT10 1 Tf +10 0 0 10 126 78.34 Tm +0 Tw +(DSPRESET)Tj +/TT8 1 Tf +9 0 0 9 174.0078 78.34 Tm +(.)Tj +ET +endstream +endobj +168 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 5 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +170 0 obj +<< +/Length 6864 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-44)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.0178 Tw +(The following methods all have corresponding )Tj +/TT10 1 Tf +10 0 0 10 315.5469 569.49 Tm +0 Tw +(DSP)Tj +/TT8 1 Tf +9 0 0 9 333.5498 569.49 Tm +0.0178 Tw +(xx functions \(e.g., )Tj +/TT10 1 Tf +10 0 0 10 406.3111 569.49 Tm +0 Tw +(IMYPOSITION)Tj +/TT8 1 Tf +9 0 0 9 472.3218 569.49 Tm +0.0178 Tw +[( corresponds to)]TJ +/TT10 1 Tf +10 0 0 10 126 557.49 Tm +0 Tw +(DSPYPOSITION)Tj +/TT8 1 Tf +9 0 0 9 198.0117 557.49 Tm +0.0767 Tw +[(\) that invoke them. They also have the property of returning their previous value;)]TJ +-8.0013 -1.3333 TD +0 Tw +(when called with )Tj +/TT10 1 Tf +10 0 0 10 196.8838 545.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 214.8867 545.49 Tm +( they return the old value without changing it.)Tj +/TT10 1 Tf +10 0 0 10 150 522.2 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 522.2 Tm +(IMCLIPPINGREGION)Tj +/TT4 1 Tf +10 0 0 10 242.4 522.2 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 245.1783 522.2 Tm +(STREAM REGION)Tj +/TT10 1 Tf +10 0 0 10 315.3897 522.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 321.3907 522.2 Tm +[( )-12605.5([Image Stream Method])]TJ +-16.3767 -1.8833 TD +(Sets a new clipping region on )Tj +/TT15 1 Tf +13.2832 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 482.37 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 482.37 Tm +(IMXPOSITION)Tj +/F3 1 Tf +10 0 0 10 215.4 482.37 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 218.27 482.37 Tm +(STREAM XPOSITION)Tj +/TT10 1 Tf +10 0 0 10 304.6841 482.37 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 310.685 482.37 Tm +[( )-13795([Image Stream Method])]TJ +-15.1872 -1.8889 TD +(Sets the )Tj +/TT10 1 Tf +10 0 0 10 206.77 465.37 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 212.771 465.37 Tm +(-position on )Tj +/TT15 1 Tf +5.5679 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 442.08 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 442.08 Tm +(IMYPOSITION)Tj +/TT4 1 Tf +10 0 0 10 215.4 442.08 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 218.1783 442.08 Tm +(STREAM YPOSITION)Tj +/TT10 1 Tf +10 0 0 10 304.5924 442.08 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 310.5934 442.08 Tm +[( )-13805.2([Image Stream Method])]TJ +-15.177 -1.8889 TD +(Sets a new )Tj +/TT10 1 Tf +10 0 0 10 218.0903 425.08 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 224.0913 425.08 Tm +(-position on )Tj +/TT15 1 Tf +5.5679 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 401.85 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 401.85 Tm +(IMFONT)Tj +/F3 1 Tf +10 0 0 10 188.4 401.85 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 191.27 401.85 Tm +(STREAM)Tj +/F1 1 Tf +10 0 0 10 223.6753 401.85 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 226.4553 401.85 Tm +(FONT)Tj +/TT10 1 Tf +10 0 0 10 248.0588 401.85 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 254.0598 401.85 Tm +[( )-20086.7([Image Stream Method])]TJ +-8.8955 -1.8833 TD +(Sets )Tj +/TT15 1 Tf +2.0039 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(s font to be )Tj +/TT15 1 Tf +5.3931 0 TD +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 362.02 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 362.02 Tm +(IMLEFTMARGIN)Tj +/F3 1 Tf +10 0 0 10 220.8 362.02 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 223.67 362.02 Tm +(STREAM LEFTMARGIN)Tj +/TT10 1 Tf +10 0 0 10 315.4849 362.02 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 321.4859 362.02 Tm +[( )-12594.9([Image Stream Method])]TJ +-16.3873 -1.8889 TD +(Sets )Tj +/TT15 1 Tf +2.0083 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0044 Tw +(s left margin to be )Tj +/TT15 1 Tf +8.5144 0 TD +0 Tw +(LEFTMARGIN)Tj +/TT8 1 Tf +6.001 0 TD +0.0001 Tc +0.0043 Tw +(. The left margin is defined as the )Tj +/TT10 1 Tf +10 0 0 10 492.474 345.02 Tm +0 Tc +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 498.475 345.02 Tm +(-position)Tj +-36.0528 -1.3278 TD +(set after the new line.)Tj +/TT10 1 Tf +10 0 0 10 150 310.79 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 310.79 Tm +(IMRIGHTMARGIN)Tj +/F3 1 Tf +10 0 0 10 226.2 310.79 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 229.07 310.79 Tm +(STREAM RIGHTMARGIN)Tj +/TT10 1 Tf +10 0 0 10 326.2858 310.79 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 332.2868 310.79 Tm +[( )-11394.8([Image Stream Method])]TJ +-17.5874 -1.8833 TD +(Sets )Tj +/TT15 1 Tf +2.2106 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.2067 Tw +(s right margin to be )Tj +/TT15 1 Tf +10.2467 0 TD +0 Tw +(RIGHTMARGIN)Tj +/TT8 1 Tf +6.6011 0 TD +0.2067 Tw +[(. The right margin is defined as the)]TJ +-22.6589 -1.2944 TD +0 Tw +(maximum )Tj +/TT10 1 Tf +10 0 0 10 218.8073 282.19 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 224.8083 282.19 Tm +0.17 Tw +(-position at which characters are printed; printing beyond it causes a new)Tj +-5.6454 -1.3278 TD +0 Tw +(line.)Tj +/TT10 1 Tf +10 0 0 10 150 247.96 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 247.96 Tm +(IMTOPMARGIN)Tj +/F3 1 Tf +10 0 0 10 215.4 247.96 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 218.27 247.96 Tm +(STREAM YPOSITION)Tj +/TT10 1 Tf +10 0 0 10 304.6841 247.96 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 310.685 247.96 Tm +[( )-13795([Image Stream Method])]TJ +-15.1872 -1.8889 TD +(Sets )Tj +/TT15 1 Tf +2.085 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0811 Tw +(s top margin \(the )Tj +/TT10 1 Tf +10 0 0 10 301.0089 230.96 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 307.0099 230.96 Tm +0.0811 Tw +(-position of the tops of characters that is set after a new)Tj +-14.7789 -1.3278 TD +0 Tw +(page\) to be )Tj +/TT15 1 Tf +5.1235 0 TD +(YPOSITION)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 196.13 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 196.13 Tm +(IMBOTTOMMARGIN)Tj +/F1 1 Tf +10 0 0 10 231.6 196.13 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 234.38 196.13 Tm +(STREAM YPOSITION)Tj +/TT10 1 Tf +10 0 0 10 320.794 196.13 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 326.795 196.13 Tm +[( )-12005([Image Stream Method])]TJ +-16.9772 -1.8889 TD +(Sets )Tj +/TT15 1 Tf +2.1406 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1367 Tw +(s bottom margin \(the )Tj +/TT10 1 Tf +10 0 0 10 318.8722 179.13 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 324.8731 179.13 Tm +0.1367 Tw +(-position beyond which any printing causes a new)Tj +-16.7637 -1.3278 TD +0 Tw +(page\) to be )Tj +/TT15 1 Tf +5.1235 0 TD +(YPOSITION)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 144.3 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 144.3 Tm +(IMLINEFEED)Tj +/F1 1 Tf +10 0 0 10 210 144.3 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 212.78 144.3 Tm +(STREAM DELTA)Tj +/TT10 1 Tf +10 0 0 10 277.5905 144.3 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 283.5915 144.3 Tm +[( )-16805.4([Image Stream Method])]TJ +-12.1768 -1.8833 TD +(Sets )Tj +/TT15 1 Tf +2.2506 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.2467 Tw +(s line feed distance \(distance to move vertically after a new line\) to be)Tj +/TT15 1 Tf +-5.8512 -1.2889 TD +0 Tw +(DELTA)Tj +/TT8 1 Tf +3.0005 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 92.81 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 156.001 92.81 Tm +(IMSCALE)Tj +/TT4 1 Tf +10 0 0 10 193.8 92.81 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 196.5783 92.81 Tm +(STREAM SCALE)Tj +/TT10 1 Tf +10 0 0 10 261.3889 92.81 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 267.3898 92.81 Tm +[( )-18605.6([Image Stream Method])]TJ +-10.3766 -1.8833 TD +0.0967 Tw +(Returns the number of device points per screen point \(a screen point being ~1/72 inch\).)Tj +/TT15 1 Tf +0 -1.2222 TD +0 Tw +(SCALE)Tj +/TT8 1 Tf +3.0005 0 TD +( is ignored.)Tj +ET +endstream +endobj +171 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +173 0 obj +<< +/Length 5850 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(26-45)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( GRAPHICS OUTPUT OPERATIONS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 568.26 Tm +(IMSPACEFACTOR)Tj +/F1 1 Tf +10 0 0 10 178.2 568.26 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 180.98 568.26 Tm +(STREAM FACTOR)Tj +/TT10 1 Tf +10 0 0 10 251.1914 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 257.1924 568.26 Tm +[( )-14405.3([Image Stream Method])]TJ +-14.5769 -1.8833 TD +0.0689 Tw +(Sets the amount by which to multiply the natural width of all following space characters)Tj +0 -1.2222 TD +0 Tw +(on )Tj +/TT15 1 Tf +1.5657 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.1878 Tw +[(; this can be used for the justification of text. The default value is 1. For)]TJ +-5.1663 -1.2889 TD +0.01 Tw +(example, if the natural width of a space in )Tj +/TT15 1 Tf +18.8913 0 TD +0 Tw +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +(s current font is 12 units, and the space)Tj +-22.4919 -1.2944 TD +0.03 Tw +[(factor is set to two, spaces appear 24 units wide. The values returned by )]TJ +/TT10 1 Tf +10 0 0 10 420.0275 517.06 Tm +0 Tw +(STRINGWIDTH)Tj +/TT8 1 Tf +9 0 0 9 126 505.06 Tm +(and )Tj +/TT10 1 Tf +10 0 0 10 143.4858 505.06 Tm +(CHARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 197.4946 505.06 Tm +( are also affected.)Tj +/TT10 1 Tf +10 0 0 10 102 481.83 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 481.83 Tm +(IMOPERATION)Tj +/F1 1 Tf +10 0 0 10 167.4 481.83 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.18 481.83 Tm +(STREAM OPERATION)Tj +/TT10 1 Tf +10 0 0 10 256.5941 481.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 262.595 481.83 Tm +[( )-13805([Image Stream Method])]TJ +-15.1772 -1.8889 TD +(Sets the default )Tj +/TT10 1 Tf +10 0 0 10 189.3076 464.83 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 225.3135 464.83 Tm +( )Tj +/TT15 1 Tf +0.25 0 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +( argument.)Tj +/TT10 1 Tf +10 0 0 10 102 441.6 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 441.6 Tm +(IMBACKCOLOR)Tj +/F1 1 Tf +10 0 0 10 167.4 441.6 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 170.18 441.6 Tm +(STREAM COLOR)Tj +/TT10 1 Tf +10 0 0 10 234.9905 441.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.9915 441.6 Tm +[( )-16205.4([Image Stream Method])]TJ +-12.7768 -1.8833 TD +(Sets the background color of )Tj +/TT15 1 Tf +12.8379 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 401.71 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 401.71 Tm +(IMCOLOR)Tj +/TT4 1 Tf +10 0 0 10 145.8071 401.71 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 148.58 401.71 Tm +(STREAM COLOR)Tj +/TT10 1 Tf +10 0 0 10 213.3905 401.71 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 219.3915 401.71 Tm +[( )-18605.4([Image Stream Method])]TJ +-10.3768 -1.8833 TD +(Sets the default color of )Tj +/TT15 1 Tf +10.6348 0 TD +(STREAM)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-19.5687 -2.9611 TD +0.1967 Tw +(In addition to the )Tj +/TT10 1 Tf +10 0 0 10 156.5043 358.11 Tm +0 Tw +(IMAGEOPS)Tj +/TT8 1 Tf +9 0 0 9 204.5121 358.11 Tm +0.1967 Tw +[( methods described above, there are two other important methods,)]TJ +-14.0569 -1.3278 TD +[(which are contained in the stream itself. These fields can be installed using a form like \(replace)]TJ +0 -1.2278 TD +0 Tw +(\()Tj +/TT10 1 Tf +10 0 0 10 80.9971 335.11 Tm +0.053 Tw +(STREAM OUTCHARFN)Tj +/TT8 1 Tf +9 0 0 9 177.5427 335.11 Tm +0.0222 Tw +(\) of )Tj +/TT10 1 Tf +10 0 0 10 193.3499 335.11 Tm +0 Tw +(STREAM)Tj +/TT8 1 Tf +9 0 0 9 229.3558 335.11 Tm +0.0222 Tw +[( with \()]TJ +/TT10 1 Tf +10 0 0 10 255.5517 335.11 Tm +0.053 Tw +(FUNCTION MYOUTCHARFN)Tj +/TT8 1 Tf +9 0 0 9 376.1012 335.11 Tm +0.0222 Tw +[(\)\). Note: You need to have)]TJ +-33.1224 -1.3333 TD +0.0144 Tw +(loaded the Interlisp-D system declarations to manipulate the fields of )Tj +/TT10 1 Tf +10 0 0 10 357.0519 323.11 Tm +0 Tw +(STREAM)Tj +/TT8 1 Tf +9 0 0 9 393.0578 323.11 Tm +0.0144 Tw +[(s. The declarations can)]TJ +-35.0064 -1.3333 TD +0 Tw +(be loaded by loading the Lisp Library package )Tj +/TT10 1 Tf +10 0 0 10 265.2686 311.11 Tm +(SYSEDIT)Tj +/TT8 1 Tf +9 0 0 9 307.2754 311.11 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 287.88 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 287.88 Tm +(STRMBOUTFN)Tj +/F3 1 Tf +10 0 0 10 162 287.88 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 164.87 287.88 Tm +(STREAM CHARCODE)Tj +/TT10 1 Tf +10 0 0 10 245.8832 287.88 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.8841 287.88 Tm +[( )-17999.5([Stream Method])]TJ +-13.9871 -1.8833 TD +(The function called by )Tj +/TT10 1 Tf +10.106 0 TD +(BOUT)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 248.05 Tm +(\()Tj +/TT13 1 Tf +9 0 0 9 108.001 248.05 Tm +(OUTCHARFN)Tj +/F3 1 Tf +10 0 0 10 156.6 248.05 Tm +( )Tj +/TT15 1 Tf +9 0 0 9 159.47 248.05 Tm +(STREAM CHARCODE)Tj +/TT10 1 Tf +10 0 0 10 240.4832 248.05 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.4841 248.05 Tm +[( )-18599.5([Stream Method])]TJ +-13.3871 -1.8889 TD +0.07 Tw +[(The function that is called to output a single byte. This is like )]TJ +/TT10 1 Tf +10 0 0 10 380.9929 231.05 Tm +0 Tw +(STRMBOUTFN)Tj +/TT8 1 Tf +9 0 0 9 441.0026 231.05 Tm +0.07 Tw +(, except for)Tj +-35.0003 -1.3278 TD +0.0456 Tw +[(being one level higher: it is intended for text output. Hence, this function should convert)]TJ +0 -1.2278 TD +0 Tw +(\()Tj +/TT15 1 Tf +0.333 0 TD +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +( )Tj +/TT10 1 Tf +10 0 0 10 176.5241 208.05 Tm +(EOL)Tj +/TT8 1 Tf +9 0 0 9 194.527 208.05 Tm +0.23 Tw +(\) into the streams actual end-of-line sequence and should adjust the)Tj +-7.6141 -1.3333 TD +0 Tw +(streams )Tj +/TT10 1 Tf +10 0 0 10 161.9064 196.05 Tm +(CHARPOSITION)Tj +/TT8 1 Tf +9 0 0 9 233.9182 196.05 Tm +0.0311 Tw +[( appropriately before invoking the streams )]TJ +/TT10 1 Tf +10 0 0 10 410.4917 196.05 Tm +0 Tw +(STRMBOUTFN)Tj +/TT8 1 Tf +9 0 0 9 470.5015 196.05 Tm +0.0311 Tw +[( \(by)]TJ +-38.2779 -1.3333 TD +0 Tw +(calling )Tj +/TT10 1 Tf +10 0 0 10 156.1957 184.05 Tm +(BOUT)Tj +/TT8 1 Tf +9 0 0 9 180.1996 184.05 Tm +0.15 Tw +[(\) to actually put the character. Defaults to )]TJ +/TT10 1 Tf +10 0 0 10 361.5566 184.05 Tm +0 Tw +(\\FILEOUTCHARFN)Tj +/TT8 1 Tf +9 0 0 9 445.5703 184.05 Tm +0.15 Tw +(, which is)Tj +-35.5078 -1.3278 TD +0 Tw +(probably incorrect for an image stream.)Tj +ET +endstream +endobj +174 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 22 0 R +/TT2 6 0 R +/TT4 7 0 R +/TT6 8 0 R +/TT8 9 0 R +/TT10 10 0 R +/TT13 12 0 R +/TT15 13 0 R +>> +/ExtGState << +/GS1 14 0 R +>> +>> +endobj +29 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 298 +/Height 158 +/BitsPerComponent 1 +/ImageMask true +/Length 6005 +>> +stream +????????9UQUQUSUSUSUSUS?:?=UUUUUWUWUWUWUW?:?=UUUUUWUWUWUWUW?:?=UUUUUWUWUWUWUW?:?=UUUUUWUWUWUWUW?:?=UUUUUWUWUWUWUW?:?=UUUUUWUWUWUWUW?:?=UUUUUWUWUWUWUW?:?;USUSUSUSUS????UWUWUWUWUW????UWUWUWUWUW????UWUWUWUWUW????UWUWUWUWUW????UWUWUWUWUW????UWUWUWUWUW????UWUWUWUWUW???;USUSUSUSUSUS????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW???;USUQUQUQUSUSUSUS????UWUUUUUUUWUWUWUW????UWUUUUUUUWUWUWUW????UWUUUUUUUWUWUWUW????UWUUUUUUUWUWUWUW????UWUUUUUUUWUWUWUW????UWUUUUUUUWUWUWUW????UWUUUUUUUWUWUWUW???;USUSUSUSUSUS????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW????UWUWUWUWUWUW???;USUSUSUQUSUQUS????UWUWUWUUUWUUUW????UWUWUWUUUWUUUW????UWUWUWUUUWUUUW????UWUWUWUUUWUUUW????UWUWUWUUUWUUUW????UWUWUWUUUWUUUW????UWUWUWUUUWUUUW???9UQUQUSUQUQUQUSUSUS?:?=UUUUUWUUUUUUUWUWUW?:?=UUUUUWUUUUUUUWUWUW?:?=UUUUUWUUUUUUUWUWUW?:?=UUUUUWUUUUUUUWUWUW?:?=UUUUUWUUUUUUUWUWUW?:?=UUUUUWUUUUUUUWUWUW?:?=UUUUUWUUUUUUUWUWUW?:?;???????????????????????????????;?1wUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW?;w?;WUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW?;W?;WUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW?;'?1wUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW????UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW????UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW??????@?@?p?I$H$H?I$H$H?6H$N?Kp???? +endstream +endobj +30 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 78 +/Height 110 +/BitsPerComponent 1 +/ImageMask true +/Length 1101 +>> +stream +G|;{{{{{w{{{;{+G@{{oooooWoex۷oo{wwۻWWw;xyۻwۻw<;{wx;osoooooogoh +endstream +endobj +37 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 300 +/Height 300 +/BitsPerComponent 1 +/ImageMask true +/Length 11401 +>> +stream +????????????????UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUEUQUUUUEUQT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUT??UUUUUUUT??UUUUUUUT??UUUUUUUT??TUUUWUTUUUWT??UUUUU_UUUUUU_T??UUUUU_UUUUUU_T??UUUUU_UUUUUU_T??UUUUU_UUUUUU_T?ʪʪ?UU_UUU_T?ꪯꪯ?UU_UUU_T?ꪯꪯ?UU_UUU_T?ꪯꪯ?UU_UUU_T?ꪯꪯ?TUUUU_UTUUUUWT?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?**?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪??????????**?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?TUUUUWUTUUUUWT?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?򪪪?UUUUUU_UUUUUUU_T?ʪʪ?UU_UUU_T?ꪯꪯ?UU_UUU_T?ꪯꪯ?UU_UUU_T?ꪯꪯ?UU_UUU_T?ꪯꪯ?TUUUWUTUUUWT??UUUUU_UUUUUU_T??UUUUU_UUUUUU_T??UUUUU_UUUUUU_T??UUUUU_UUUUUU_T??UUUUUUUT??UUUUUUUT??UUUUUUUT??UUUUUUUT??TUUEUQUUUUEUQT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT??UUUUUUUUUUUUUUUT?????????????x?{?{?{?{?{?{?wq????????????????????? #?? #? #?''''''''''''''''''''''''''''''''''?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?999999999999999999999999999999999;??????999999999999999999999999999999999;?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?''''''''''''''''''''''''''''''''''? #? #?? #? #?''''''''''''''''''''''''''''''''''?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?999999999999999999999999999999999;??????999999999999999999999999999999999;?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?''''''''''''''''''''''''''''''''''? #? #?? #? #?''''''''''''''''''''''''''''''''''?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?999999999999999999999999999999999;??????999999999999999999999999999999999;?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?''''''''''''''''''''''''''''''''''? #? #?? #? #?''''''''''''''''''''''''''''''''''?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?999999999999999999999999999999999;??????999999999999999999999999999999999;?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?''''''''''''''''''''''''''''''''''? #? #?? #? #?''''''''''''''''''''''''''''''''''?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?999999999999999999999999999999999;??????999999999999999999999999999999999;?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?''''''''''''''''''''''''''''''''''? #? #?? #? #?''''''''''''''''''''''''''''''''''?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?999999999999999999999999999999999;??????999999999999999999999999999999999;?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#?''''''''''''''''''''''''''''''''''? #? #?? #? #????????? +endstream +endobj +61 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 60 +/Height 70 +/BitsPerComponent 1 +/ImageMask true +/Length 561 +>> +stream + Ardrdrd3rdrdd8A???? +endstream +endobj +62 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 59 +/Height 70 +/BitsPerComponent 1 +/ImageMask true +/Length 561 +>> +stream +949$y$ y$9$  ߙߙߙߙߙߙߙߙߙߙߙߙߙߙߙ +endstream +endobj +63 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 90 +/BitsPerComponent 1 +/ImageMask true +/Length 901 +>> +stream +<ɇ93??9??y?<Ȓy?<|Ș?<ɘ?I3? +endstream +endobj +64 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream + s?LyyOxgyL '&x?y'yy'yg?dsdfs$I&s !I&s&sFA?? +endstream +endobj +65 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +LO LLdsdfs$I&s !I&s&sFA? +endstream +endobj +66 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +;7?L1'?O1'?L$?$'?O'?A dsdfs$I&s !I&s&sFA~~~?~?~?~??????????????????????????????? +endstream +endobj +67 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +cL@OOH> +stream + s?LyyOxgyL '&x?y'yy'yg?Mdsds$I0C !I3ÓÐC???~~~~~~?~~?~~?~~?????????????????????????????? +endstream +endobj +72 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +LO LLMdsds$I0C !I3ÓÐC???~~~~~~ +endstream +endobj +73 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +;7?L1'?O1'?L$?$'?O'?A Mdsds$I0C !I3ÓÐC????~~~~~~ +endstream +endobj +74 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +cL@OOH> +stream + s?LyyOxgyL '&x?y'yy'yg?g8fdg3$d3$$3! !3$g3$d!ٙٙٙٙٙٙٙ;?;?;?;?;?;?;?; +endstream +endobj +76 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +LO LLg8fdg3$d3$$3! !3$g3$d!ٙٙٙٙٙٙٙ +endstream +endobj +77 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +;7?L1'?O1'?L$?$'?O'?A g8fdg3$d3$$3! !3$g3$d!""" ٙfffdDDDD""" ٙfffdDDDD""" ٙfffdDDDD""" ٙfffdDDDD""" ٙfffdDDDD""" ٙfffdDDDD""" ٙfffdDDDD""" &fffDDD""""&fffDDD""""&fffDDD""""&fffDDD""""&fffDDD""""&fffDDD""""&fffDDD""""&fffDDD +endstream +endobj +78 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 80 +/Height 102 +/BitsPerComponent 1 +/ImageMask true +/Length 1021 +>> +stream +cL@OOH> +stream +????????>?>?> ???????????????????????????????????????????????????~ ?~?~?????? +endstream +endobj +92 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 161 +/Height 136 +/BitsPerComponent 1 +/ImageMask true +/Length 2857 +>> +stream +??????G?????????????????????????????????????????????????????????????>?>?~?????????????????>808>????????????????????????????????????????????????????????? +endstream +endobj +96 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 47 +/Height 69 +/BitsPerComponent 1 +/ImageMask true +/Length 415 +>> +stream +WW____UUUUU_UU_UUUUUUWU_WWW__W_W_UWUUUUUWWWW__ +endstream +endobj +14 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +175 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +176 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +177 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +178 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +179 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +180 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBNLAP+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 181 0 R +>> +endobj +181 0 obj +<< +/Filter /FlateDecode +/Length 20105 +/Length1 39456 +>> +stream +HW}tovgvfwv9 +UH8P%S8C9͎~03K6JJ@S4tk54Z +$!HG@PLc ovvSyq}{nrz{,,^@ڹ~C>J {(t8P,<ːz"6Ƕb{ЪBKNX7 ǐT ر ?.>n="l3]VmG $w\bexjx +`=G(ɸxTzkCy~[/5AqSTG&oPQ4~1@+Jl#^xՁ9#Qp8+H=}a!Ei rgp@tɿt}$,&Lh9p4d"Pzl&hgnH6B< ;2<[(9s .^^@ &s8N+0 ;` 8qC'I@) 9?? va!2! )Y%6Rp;L#-/Ay܉'7y56Z%dQID^/=0? PDŽl`o%;{d0:ss'q-j +Wo%'aB | 'iL2~JnE E+2xrqm^U,'sS ϓNr%t@3+ݤ@I&>!уK׳h1vMBgA% \p:NǗ;ʊʕA3d-mJz0]uL᪈?AO?MYr l'0Z0p&wL? ,N> iY&H'ƐO|k#^wࡔ{1Nwoo7JOAwۈ/L=s$@f\{`g>&uZ}4 !~XΦy'TkϘdh l\lcOظKm\frWظU6ڸ56)ٸ6l 6>kFy甄8#nZ,:!F&QàI JTcџj4FU*%F h Dޚ5O%Unb{}Uh4iΌmi$nVl(ډf3DU3kE}>4f$X< g2vP4d5iBjKKf]C._/1{:/Eۼr18u,ߔ:ַu7zj}R1|əvbEMyvPU+#8HAfXDgRLY\VC.5;*<څ +W%Jgi*:jk}A{H,9k:SPeItȲ}HݾOv-xCFF%kp6qǦ$.PCg_V|e(Z*2"`|ybc1*!qnġD >_qLUI7$ …sNdQe^Au$5ǽ]U:Kw=?~g^Ş˖Νc]|ԗ1_(9jj%p ,;Jp>v WR1_t瓌nËˑxՖj\׳cuuQb+ڶٵdɬb]QO;1{",:~uׯ{ý'R\jr]{u$.0M!9m-u]ZQƺ\[#wumv/n\HrGw;( 6:4ʷ@*ozڅS ]ԁ62$2UAF!@NwKFFE"W$ # H3$nF2m?#KiC,d-Run0Nk0 :tsma;)`q0&xʞ \xbxkVM{a C7NY8 +BG~HGT9d>!ϐ%y M?.r|LN^r\"W(jNCt }>DUZNgy)sZE܃]I_n6;}vO4,}=d6MdSY -eϳլZX{IvEEv pE>>O?eQ_ʟ/zox1~O^e:l0ebu[ppf"BÈsj!eb!F7 EQ`f< Hݡ?j%VVt+Z02aX)Ccm>菘*$kʢ_u0f`ez(~BTVb#YHЈ-vKLFLD%;̞}tCTlؑ]D-z=ǰ^Î̃c,m&V3zfam,A+u;ضqSƫKrP0"ܾо7ۢ.2F>8j +d2KU-"OZ~ݍ-YBZhi.D$g-u-{we6ϩ0L#VҒ2i-Q#Hl%K{}I-a@ӌ1- E~ӣU 4JJ\yK蚢ܯ'Q\FA]/u޻\szgR _Bٖ ?&m9AalڍhKHdrH2:?[l?968UubTlEi lBmgɲw}VWXcZAh\}~۲}nn}%f dC!96(}Å-2*`Si PM^:=L6tX@,Z-ĸ v7X<p"՗eLnѣ\ L[z|:ldžI~ V?2Չ暜8e}ъn2=ݚeHb-Ǣ~Io8P6KY_M/*@]YZds|b>w옾?[󝂅]\E7CѶ$͑%lh7֕PF^ʼnZ)x|7ǎ_ . ]H9#acR{pI׫n6#}'>v56-9jQ2~2d4f*<;ҹY<_N:6-t +GIgatj72Zں] J6ok.C%mX^:6 3PKmٕ,s.wѱMZ:L!pe. ?fARżYaDlt& (aYi} h Qҗ U}&?L(Һ,h#&R&j^6@a_%j TEB Zs扻kcSnZ?T2U,fQqx/mu("H?Ỳ,z_g].~ڂa=~ȸv1f$-l ^\-Z@f~%Oia%gYZ5@qAy-K0oUW yU}fBAkff8߰j2@-} 9Fחaŭtf+t0dˀea33% +fM:{P+a+qw?vo>j[`[$jI[t.2 9d +P7J-}W +RHgRcoHVW+,j?Dϊmv/,f!oPP%:T3eu\NK1B-9EPEYTM9ec''G8Ըx? 9Xs פjiP,#*2na&B䂥/C"43eVTOaHG֠yLA(MZI-]Râb"T:X[{J}k*=f46_ԷΟ;99%R :h ڳDKX]ͶSyLA]ҟgbb>a 7BJUК?v<>#RKyu0fҾAwӌc^s<{,+6zl5Y4e1TI*{E|ӵRJ["ƾ=1ˢ6n m'U 2ar&1`{Q +Y| r{/EˊtܙF'['cݣ֏_P:uVSrYNY% +KPouĤe=O/qkSԣQ]h-]'?{YPJߔ?^KC{ͷ\0A橥/Kw={!_m1B*X,dղ&,/CnV q|"|L4[Ixnf: (W4 +~ g`.}܀E"/zաzԄv47hCUt lǥx ^܀) ܅{0Sx #N:^$Ed%YED"}*Y' gHy #$J)-Iw{}WA\\\ 5s_>7ɽ%gpwۻ?oRV̾]ѶlQ+N&6N,](i3vNLɤv 5&؈ey=_1yo9~# n\MP u:C-Pg%BuZԨSTRUyzYRohDS5MskZm6Y=О +"msej C$PFJlI'XF5*X6_D*m8Aq;>;vSqc@ sXc8h"lY-5E{c) +piUp+FDoQCHnC%\"?(w(N-ܢ"(w"o8 +S;bTS) +YA UɧUMnbX3/c\v/͂DzC@6E}z$xܩ~۹$-}}Ҽ>{]ߑ? @ IfCݜ⊮Mp4Bf +eېܸ^Sw†<_C IYpa3HóH/|Y9o&}6eu<$„!qm5bPx0x-vN2 }_p(jv:_v H1)Έ&51|[_m.3pJ6{ŬLZՔl_Bn9%%f`ln^49(,M\? /"=?h DEmO-^.F'-]V{-PV:k.5rmV<DL]DBNjm+2<]r̽֞JJ4Ҳ`1H%l2U2He$+"o "pݯ.D";Nu5y2@Ά}97qt|s/=]1]"pje[%|9:!̲A7{Z$"M3Nl_~̰lv5T:nryWy^|ZH Ōu!Hb{lt1(Tl5A\"i~o3JFW<3XޑΝFI<ѐ8nB6& 1{PkG$fo~H;k_y&PD\Hjׁ8B2L@F5 2 f cU <0?_2V/ï(au@'샷_'֧|7f7/O&""q!ϒg@d !zd^[6Jv=-'!G4%$&W1)PFmAԃGD:N3$Oi%]NW5F"ۍn/OL#4=Cy:H.AIRʓt%[2RfJ YU&hJҥWN!K; OT(אc֬Y2?&),Mg,Y2{؁H\JL, !/&Uw Q0_ o788ڱ2\03& 'qoj6'Г1/Ti[h["C9,YcدTO3c؈C`agC#9;cbǚ #K0^#,U%c5 F+Fq<TEɧ(pZF*hOl|<ˤm!+QY)R o7UM<;c_xl[F>u7; $c'~xOgu ʓ-t'|b?~c~aYg bTߩGj C>$HAfءC;:t3ѯ;U(^vڛs).Om( w| キٽۄ xG8D.%#``5 RPZ8APc 5i "Qs0H#qvFlo{g:}~on{ +Dh?AaAeT?Vv m.풍UH3\5%ywEcOA]ӲKY\fҢڛΙmA8uG/jhl4}`jM-_`W.,-[XpW]3s4UGUvY:o_zƣPy^ۓ}Aaۿmoq ͇ߞzB+1My ͼ~zű49Epܚ@]6}(g=J uDu7ЬoUQd#5lՖn=V,Xyb[mao+m鞼iph@\;R|EχWor ]Y/0ύwۍWSgl֊6dDU6T"=n{4{i&ڽǫO+nMȿqNˁ|QcxpZE= [s;6vlBĻ& +ۼm'h.g[߮vq^콯?}w׾Sz*u?;gϵ+Z | 59#U@~dڧJ׼9u).!*%yE^frfA&A'Ĉl cyj;WiV 1M4WJGg.-ziޑSv}QoOص=kD#>nwf'#f-N+cg r  +fTSTP 7R`;a5A=ulSh<PSwi8ozF."RTU3PWPY'בrTo|XrdBH3i!z#Ir1 rF mPj4i.U!uj +ZIou]wut m_zQKO?hпa.fSQk]fQm-bլ̾]ePs6ͨ~W'*.=ƞ`0jgسX#(;c))"3P#ܣ(u7F2jRb +Ǝ6QwmpuP$*7w>zUB/x|^KO6Bep)WnEߧ` nTHIQL{hW1@%)n b))Pi2OMDSӃنm/Bdas1Nrt;aDŠ%״~pfzP* +RJ(XX*ԣǩEQ \e6f)gzuÈoy[-U> 8-mĂȂH`- +e q&}su +}F/ nA aǟ,;Ĭy\Oc#Y,I5>tduŀCySr\5eNuY`)ߤ`D걈Afewo *˹b6)ۢg7z\y[MBUWWu7D >L-x_`(A|.NN`NmcJd{QC͠ẩd>ZeY&b8]kߞ̚\s'DE`ĕR !#PH]'Qj/}ʞ·6]!< ZxAR_+}>1(F"owwM!1ofħ¥AAؑλߵX3˶j0 +m7pdeG堡g,idW`7i +VY:kоw|˵gGF >2[\zvzQzּJ>+nʛ-LkC`B W5=5ιע [69]Rh¥uR9 /"+kWTR4CsIoYa]'t9|@d4UZX`Z΁BWf +״ϟs8#Vn10-\֪@ o\]A^-kz螇87X,X-oi,|liն4dsNdv9ciۉ,dePż@IE`.,:\, +L?dbFZ/ u[tg"kuYxdqX]~ɏ-mҥ3)ou\4!GK 19fɗ=0Zp1呅g!GZ[H,,,,|p] N` .hq +&p2m_t,8nF Z8w 1;Z,X~^-SrڭސhQnmZR4K)I]H,ldDd:eX(Lfum`}ZG.ɺhH,DBn=і!Z8#Gu+W_4:6.H\,ܫ;PTwBcdl"*pn]ّA-`E=%e8!){/By h<zGM ,hh-KR5,Bu~Ha$8N螏cg,(0Y4Om^0ЊE]F[NyD !Tx_)ZE&XL";.rZ`0~88()U (cQ} "/.ڠ>@,H|g8:, +;[Q윶^[e7^<hE/^j=`/b؃h=Rf &T2; -4Z8fba7-|R\( +՝dkI,4pT1mZF88ꊕ+?\ן~iYjƱrhՍVS<2y*#͊3+LqzC*Z0UK^G Z,v7 Z)slak,f +װT~VC*zM,΋d0ydE,f i;{F;_?_qJk{U-?k,,kZQ Yn}Q< Q}:k\'.^X6QnBD@5xEHI,q-vS,'tт>(>}x@u'˳%*\c . %\+ޛ6Zog4vl_2cnq3̋ٹl\f-9fIN*Z>gRdUH՝";i6O^ݹ 2R"[BbAgvڐ7C5 !>gP 󲱁A)n rlyUo.We +oՖR9b +͠1cJ:ho֦Dv닚׏5-l 7]ݝ6 lo?"e[ԦEo?A.bd~O;N + S[Вxp6H#.J?^wHN9p}$Wrz<@6# ep#q_vrYwbE҅!17!M!XRfl`][,Lq7 `=>Wv|9ߥµq+ ֡ <0гS.) u^r +Y,mqM}֍qЂgp +0wE]6)sX[4q]vDY\oZ479ڮ߳?-vwB;-T }F5&'ckgG x~ o_:dcYcl}]dłl;b(#ʘi%yiܽ.)?QE{@Eu zA4 +m˂|f$u!JizE#K(4*{n#10\q\#!B@ cPЇwW-D !SDuD P'nnط7q!_| >1WPk;ɶlrџۗ,8wYlYQ:hrhu*ZQYO[7v\U[ngvbr{T.xCR`\,Kց%5,W\~-}()޽o篬KBgط$O,˯.m6 +xe'&?3R8ٴKO + 6]{2O 9FOs;*XE emo׬/4,\QUOG̒wJs0fF+T.& ޲cY|a?z4Iԉ@[*9lyViAȯ^,ungo|uUzZBܧXν,o+I̾N" [Ԇ\{9:[S YJrSo6,tTܑ/=rb,{Ɩ?'X+-U.'b,_5,4E_aY+6[1и}ӍˁgZ3Mj5Rlbr4Xe1֩I'CpI$%$2ilRA`VMZ;4d-s?d/9HOi慗Ur)yLc)&TNLjyt<.ZDt&t>5t)]FW5zn0"K\VInmSZ{45 c%OcI'%luéc8щUB3s~P ;'j?ۂ6ݪUrf}!V4XjF"|gKj\WMƉWtx]O':g`Yl;k8\,P# @'v +|l9c}6+br|N6{^wf3bs9`Ѕk`j%X|7֋q~@4AGdI9~q.O%V, K,Q}JGلƤ-]=|?[xⅶ3E Dkx G]`=  |14֠VxW#fP7JX#,*vՄqyf섶вMC(!]L$[!,˶j`Ar!}q#<337a,΀Gۿra+C(A7ޅ>8`߭vYG1,`˵P] +r1Ļ;6tH3/qk+roB_Ӌq =x ~K9/Cuo+7rP:7!޹_? +[fsc>w_X|Ga+owr\ޞoBm>%?Džoiמ%սowuI֘( )Fd|6&z\[r:˫Is;AE˽ԊNvkM(g{8e`5ՠ"d<7P%&KR8bR}@dA(D?lm{*[s1wɂ|Ս9jdzqicku\$ RFiDC$ a#Tr3"_Ni9nɈj1t,9>CW%2YYZqv^9E%H}+)hUGÀq: +fqI=P| h7Xqq&̹f^ T:깒AވGDb..rVN`l'(JL))dvyhFq==Zp55<~Ӡj4*Q&f(Pv)Aq!SՂf\)y$l8jR}Z[J7v,.G'((! +MPKZCvj‘IO}Rdז̀-s@N}ܕzI"=t/Tk!,,*ĝ{-TjrGű#ԃ3KfV )olhyR R2.oCIc\lKSI75CNZ*qj nH贗رʄ(os}3ꔎ]Ii54;*9UDk`CgX +]"t,\t }U%S6*1HZw(S]srRUdnJ,Ɛ(8㦥CG8\E(ɦQTy>ѯuoGϻ_;wc\:8~ܹ3(" Q"3*!1bE(DE]"H +̖F@PF+Ycm|npU~麿{tsgӘq4oۛXx}/WJ2*/qu۾ܫ *f$=֥3%EnzޙNf Yuy˲+͝Van,ڸ֏m6?8#3Z1ԙi onώ|Թ|^OVgΊ?5hf'&^plš5>w +|Էg޽}↙ѽj;Tߕ^ )VCj1AEC> +1bbS<׏i kܲԲ&obU?DՆT6ƃ 5~4Ul ݱ2>ywrIQ{]̟9NWU}1%ڥo^"dGzFrXzԟzN_#9-j"DM~KJȇޢqiFqCQ>ZCsk;GCkl4vy{3 UI.|}WJ6]L,I!3ɒy,$H|v?G`;>?VlyM$"'d| 675;_[2Ok}HlystXVS# ,3`=xN2\O_b|<k! X VqUu:ؾTId%\TP9_0֕R1E$:ym=;Po/,a-*=qNDNXmAL.)4 "h +-0DB#6+ c^X yQc@1C\֠oj\ҕeZ:Q \5u%w-\pe,!˔ÞA"'wKQM\E ٪)<=uDf +VZ r32 ìL]qHnڕCKi`$?9bS)lzn6V6&42Ddp8 +&`8AO@s +ymj^,q(P-ANjfr8iݸ+zr9xzܛz{xY Ǔ<>t}f_N:\Ӈ[ߗ5/sR8p<qĉ8$Yp8{g})4N:v4)d} B:NćQ֜ࣛ:L7WOWvbYI#Y)*5 R +_P5]MrZ'j*yiSJ^`XoE֨U$:>9mcQKjµmۛߎfh Y*`Nx>&'w +@ޫlUTHr9ZE/Pl5ij$)I+;x M4u9QV +6XNO!.?&d Kn"֬qU&,f]a9gDM=34Q|T)8Cp^dmr_SY+DIme)l[hHrBKbR3g[j5V? -H +endstream +endobj +182 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +183 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +184 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +185 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +186 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 89 +/Widths [278 333 400 556 556 833 852 278 333 333 500 606 278 333 278 606 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +747 704 722 722 778 722 667 778 833 407 611 741 667 944 815 778 +667 778 741 667 685 815 704 926 704 685 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 184 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 185 0 R +>> +endobj +22 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 89 +/Widths [287 296 333 574 574 833 852 241 389 389 500 606 278 333 278 278 +574 574 574 574 574 574 574 574 574 574 278 278 606 606 606 500 +747 759 778 778 833 759 722 833 870 444 648 815 722 981 833 833 +759 833 815 667 722 833 759 981 722 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 186 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 175 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 +0 0 556 0 0 0 556 0 0 0 0 0 0 0 0 0 +0 722 722 722 722 667 611 778 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 0 944 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 278 0 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 176 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 122 +/Widths [278 0 0 0 0 0 0 0 333 333 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 556 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 778 722 278 0 0 556 833 722 778 +667 0 722 667 611 722 0 0 0 0 0 0 0 0 0 0 +0 556 556 500 556 556 0 556 556 222 0 0 222 833 556 556 +0 0 333 500 278 0 0 722 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 177 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [250 278 371 0 0 0 0 0 333 333 389 606 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 606 606 0 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 786 668 525 613 778 722 1000 667 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 333 0 0 606 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 0 0 1000 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 178 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 600 0 0 0 0 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 0 600 0 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 0 +0 600 0 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 0 600 0 600 600 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 179 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBNLAP+Symbol +/Encoding /Identity-H +/DescendantFonts [ 187 0 R ] +/ToUnicode 188 0 R +>> +endobj +187 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBNLAP+Symbol +/FontDescriptor 180 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +66 [603] +] +>> +endobj +12 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 65 +/LastChar 90 +/Widths [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +0 600 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 182 0 R +>> +endobj +13 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 600 0 0 600 0 600 0 +0 600 600 0 0 0 0 0 0 0 0 0 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 600 0 0 0 600 600 600 0 600 0 0 0 0 600 0 +0 0 600 600 600 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 183 0 R +>> +endobj +188 0 obj +<< +/Filter /FlateDecode +/Length 226 +>> +stream +HTP=o [uCTXK~IsH .F~6?O}E;`Gƍ,g@*ph>L\3p7R>{| uRqApblҋYUǎ{BP czt&cL:!NBOi発.2~|fE{T.uǛ-V5nbc? m +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 18 0 R +/Contents 17 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 33 0 R +/Contents 32 0 R +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 36 0 R +/Contents 35 0 R +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 40 0 R +/Contents 39 0 R +>> +endobj +41 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 43 0 R +/Contents 42 0 R +>> +endobj +44 0 obj +<< +/Type /Page +/Parent 15 0 R +/Resources 46 0 R +/Contents 45 0 R +>> +endobj +47 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 49 0 R +/Contents 48 0 R +>> +endobj +52 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 54 0 R +/Contents 53 0 R +>> +endobj +55 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 57 0 R +/Contents 56 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 60 0 R +/Contents 59 0 R +>> +endobj +68 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 70 0 R +/Contents 69 0 R +>> +endobj +79 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 81 0 R +/Contents 80 0 R +>> +endobj +82 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 84 0 R +/Contents 83 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 88 0 R +/Contents 87 0 R +>> +endobj +89 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 91 0 R +/Contents 90 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/Parent 51 0 R +/Resources 95 0 R +/Contents 94 0 R +>> +endobj +97 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 99 0 R +/Contents 98 0 R +>> +endobj +101 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 103 0 R +/Contents 102 0 R +>> +endobj +104 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 106 0 R +/Contents 105 0 R +>> +endobj +107 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 109 0 R +/Contents 108 0 R +>> +endobj +110 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 112 0 R +/Contents 111 0 R +>> +endobj +113 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 115 0 R +/Contents 114 0 R +>> +endobj +116 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 118 0 R +/Contents 117 0 R +>> +endobj +119 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 121 0 R +/Contents 120 0 R +>> +endobj +122 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 124 0 R +/Contents 123 0 R +>> +endobj +125 0 obj +<< +/Type /Page +/Parent 100 0 R +/Resources 127 0 R +/Contents 126 0 R +>> +endobj +128 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 130 0 R +/Contents 129 0 R +>> +endobj +132 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 134 0 R +/Contents 133 0 R +>> +endobj +135 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 137 0 R +/Contents 136 0 R +>> +endobj +138 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 140 0 R +/Contents 139 0 R +>> +endobj +141 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 143 0 R +/Contents 142 0 R +>> +endobj +144 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 146 0 R +/Contents 145 0 R +>> +endobj +147 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 149 0 R +/Contents 148 0 R +>> +endobj +150 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 152 0 R +/Contents 151 0 R +>> +endobj +153 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 155 0 R +/Contents 154 0 R +>> +endobj +156 0 obj +<< +/Type /Page +/Parent 131 0 R +/Resources 158 0 R +/Contents 157 0 R +>> +endobj +159 0 obj +<< +/Type /Page +/Parent 162 0 R +/Resources 161 0 R +/Contents 160 0 R +>> +endobj +163 0 obj +<< +/Type /Page +/Parent 162 0 R +/Resources 165 0 R +/Contents 164 0 R +>> +endobj +166 0 obj +<< +/Type /Page +/Parent 162 0 R +/Resources 168 0 R +/Contents 167 0 R +>> +endobj +169 0 obj +<< +/Type /Page +/Parent 162 0 R +/Resources 171 0 R +/Contents 170 0 R +>> +endobj +172 0 obj +<< +/Type /Page +/Parent 162 0 R +/Resources 174 0 R +/Contents 173 0 R +>> +endobj +189 0 obj +<< +/S /D +>> +endobj +190 0 obj +<< +/Nums [0 189 0 R ] +>> +endobj +15 0 obj +<< +/Type /Pages +/Kids [1 0 R 16 0 R 19 0 R 23 0 R 26 0 R 31 0 R 34 0 R 38 0 R 41 0 R 44 0 R] +/Count 10 +/Parent 50 0 R +>> +endobj +51 0 obj +<< +/Type /Pages +/Kids [47 0 R 52 0 R 55 0 R 58 0 R 68 0 R 79 0 R 82 0 R 86 0 R 89 0 R 93 0 R] +/Count 10 +/Parent 50 0 R +>> +endobj +100 0 obj +<< +/Type /Pages +/Kids [97 0 R 101 0 R 104 0 R 107 0 R 110 0 R 113 0 R 116 0 R 119 0 R 122 0 R 125 0 R] +/Count 10 +/Parent 50 0 R +>> +endobj +131 0 obj +<< +/Type /Pages +/Kids [128 0 R 132 0 R 135 0 R 138 0 R 141 0 R 144 0 R 147 0 R 150 0 R 153 0 R 156 0 R] +/Count 10 +/Parent 50 0 R +>> +endobj +162 0 obj +<< +/Type /Pages +/Kids [159 0 R 163 0 R 166 0 R 169 0 R 172 0 R] +/Count 5 +/Parent 50 0 R +>> +endobj +50 0 obj +<< +/Type /Pages +/Kids [15 0 R 51 0 R 100 0 R 131 0 R 162 0 R ] +/Count 45 +/MediaBox [0 0 612 792] +>> +endobj +191 0 obj +<< +/CreationDate (D:20210202102717-06'00') +/ModDate (D:20210202102717-06'00') +/Producer (Apple pstopdf) +>> +endobj +192 0 obj +<< +/Type /Catalog +/Pages 50 0 R +/PageLabels 190 0 R +>> +endobj +xref +0 193 +0000000000 65535 f +0000381969 00000 n +0000000016 00000 n +0000005360 00000 n +0000376960 00000 n +0000377368 00000 n +0000378313 00000 n +0000378525 00000 n +0000378970 00000 n +0000379402 00000 n +0000379979 00000 n +0000380538 00000 n +0000380897 00000 n +0000381166 00000 n +0000354399 00000 n +0000385914 00000 n +0000382050 00000 n +0000005561 00000 n +0000013983 00000 n +0000382134 00000 n +0000014161 00000 n +0000021573 00000 n +0000377906 00000 n +0000382218 00000 n +0000021773 00000 n +0000028251 00000 n +0000382302 00000 n +0000028429 00000 n +0000031711 00000 n +0000314186 00000 n +0000320334 00000 n +0000382386 00000 n +0000031903 00000 n +0000037178 00000 n +0000382470 00000 n +0000037371 00000 n +0000041390 00000 n +0000321577 00000 n +0000382554 00000 n +0000041605 00000 n +0000050459 00000 n +0000382638 00000 n +0000050648 00000 n +0000056125 00000 n +0000382722 00000 n +0000056294 00000 n +0000063620 00000 n +0000382806 00000 n +0000063800 00000 n +0000070954 00000 n +0000386594 00000 n +0000386051 00000 n +0000382890 00000 n +0000071133 00000 n +0000077970 00000 n +0000382974 00000 n +0000078150 00000 n +0000086701 00000 n +0000383058 00000 n +0000086881 00000 n +0000092393 00000 n +0000333122 00000 n +0000333823 00000 n +0000334524 00000 n +0000335565 00000 n +0000336728 00000 n +0000337891 00000 n +0000339054 00000 n +0000383142 00000 n +0000092657 00000 n +0000100581 00000 n +0000340217 00000 n +0000341380 00000 n +0000342543 00000 n +0000343706 00000 n +0000344869 00000 n +0000346032 00000 n +0000347195 00000 n +0000348358 00000 n +0000383226 00000 n +0000100898 00000 n +0000108109 00000 n +0000383310 00000 n +0000108299 00000 n +0000114156 00000 n +0000349521 00000 n +0000383394 00000 n +0000114371 00000 n +0000121611 00000 n +0000383478 00000 n +0000121791 00000 n +0000126105 00000 n +0000350844 00000 n +0000383562 00000 n +0000126310 00000 n +0000133251 00000 n +0000353844 00000 n +0000383646 00000 n +0000133467 00000 n +0000139959 00000 n +0000386189 00000 n +0000383731 00000 n +0000140139 00000 n +0000147826 00000 n +0000383819 00000 n +0000147996 00000 n +0000155193 00000 n +0000383907 00000 n +0000155374 00000 n +0000161293 00000 n +0000383995 00000 n +0000161426 00000 n +0000169410 00000 n +0000384083 00000 n +0000169591 00000 n +0000177520 00000 n +0000384171 00000 n +0000177700 00000 n +0000184136 00000 n +0000384259 00000 n +0000184306 00000 n +0000191791 00000 n +0000384347 00000 n +0000191971 00000 n +0000197498 00000 n +0000384435 00000 n +0000197679 00000 n +0000202938 00000 n +0000384523 00000 n +0000203108 00000 n +0000209319 00000 n +0000386337 00000 n +0000384611 00000 n +0000209502 00000 n +0000215735 00000 n +0000384699 00000 n +0000215905 00000 n +0000221950 00000 n +0000384787 00000 n +0000222131 00000 n +0000230353 00000 n +0000384875 00000 n +0000230534 00000 n +0000238757 00000 n +0000384963 00000 n +0000238927 00000 n +0000247445 00000 n +0000385051 00000 n +0000247615 00000 n +0000256168 00000 n +0000385139 00000 n +0000256349 00000 n +0000261071 00000 n +0000385227 00000 n +0000261252 00000 n +0000269062 00000 n +0000385315 00000 n +0000269243 00000 n +0000274907 00000 n +0000385403 00000 n +0000275098 00000 n +0000283330 00000 n +0000386486 00000 n +0000385491 00000 n +0000283510 00000 n +0000291419 00000 n +0000385579 00000 n +0000291610 00000 n +0000300781 00000 n +0000385667 00000 n +0000300982 00000 n +0000307900 00000 n +0000385755 00000 n +0000308091 00000 n +0000313995 00000 n +0000354540 00000 n +0000354738 00000 n +0000354945 00000 n +0000355141 00000 n +0000355342 00000 n +0000355534 00000 n +0000355726 00000 n +0000375922 00000 n +0000376125 00000 n +0000376327 00000 n +0000376538 00000 n +0000376747 00000 n +0000380683 00000 n +0000381669 00000 n +0000385843 00000 n +0000385872 00000 n +0000386710 00000 n +0000386834 00000 n +trailer +<< +/Size 193 +/Root 192 0 R +/Info 191 0 R +/ID [] +>> +startxref +386906 +%%EOF diff --git a/docs/medley-irm/27-WINDOWS.TEDIT b/docs/medley-irm/27-WINDOWS.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..3e9589d49feb40a5e3eefe924b8fe1a495229acd GIT binary patch literal 287664 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�BONOMU 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 GC;u<>_z1-S literal 0 HcmV?d00001 diff --git a/docs/medley-irm/27-WINDOWS.pdf b/docs/medley-irm/27-WINDOWS.pdf new file mode 100644 index 00000000..1281eb83 --- /dev/null +++ b/docs/medley-irm/27-WINDOWS.pdf @@ -0,0 +1,27263 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 4400 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(27. WINDOWS AND MENUS)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 564.99 m +510.01 564.99 l +S +BT +/TT6 1 Tf +10 0 0 10 54 556.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 533.54 Tm +0.17 Tw +(Windows provide a means by which different programs can share a single display harmoniously.)Tj +0 -1.2222 TD +0.05 Tw +(Rather than having every program directly manipulating the screen bitmap, all display input/output)Tj +T* +0.1489 Tw +(operations are directed towards windows, which appear as rectangular regions of the screen, with)Tj +T* +0.2444 Tw +[(borders and titles. The Interlisp-D window system provides both interactive and programmatic)]TJ +T* +0.0067 Tw +(constructs for creating, moving, reshaping, overlapping, and destroying windows in such a way that a)Tj +T* +0.0389 Tw +[(program can use a window in a relatively transparent fashion \(see the Windows section below\). This)]TJ +T* +0.4722 Tw +(allows existing Interlisp programs to be used without change, while providing a base for)Tj +T* +0 Tw +(experimentation with more complex windows in new applications.)Tj +0 -2.7778 TD +0.1333 Tw +(Menus are a special type of window provided by the window system, used for displaying a set of)Tj +0 -1.2222 TD +0.1067 Tw +[(items to the user, and having the user select one using the mouse and cursor. The window system)]TJ +T* +0.1433 Tw +[(uses menus to provide the interactive interface for manipulating windows. The menu facility also)]TJ +T* +0 Tw +(allows users to create and use menus in interactive programs \(see the Menus section below\).)Tj +0 -2.7778 TD +0.2278 Tw +[(Sometimes, a program needs to use a number of windows, displaying related information. The)]TJ +0 -1.2222 TD +0.1378 Tw +(attached window facility \(see the Attached Windows section below\) makes it easy to manipulate a)Tj +T* +0 Tw +(group of windows as a single unit, moving and reshaping them together.)Tj +0 -2.7778 TD +0.08 Tw +[(This chapter documents the Interlisp-D window system. First, it describes the default windows and)]TJ +0 -1.2222 TD +0.1978 Tw +[(menus supplied by the window system. Then, the programmatic facilities for creating windows.)]TJ +T* +0 Tw +(Next, the functions for using menus. Finally, the attached window facility.)Tj +0 -2 TD +0.2711 Tw +(Warning: The window system assumes that all programs follow certain conventions concerning)Tj +5.3333 -1.2222 TD +0.1633 Tw +[(control of the screen. All user programs should use perform display operations using)]TJ +T* +0.0867 Tw +[(windows and menus. In particular, user programs should not perform operate directly)]TJ +T* +0.3367 Tw +[(on the screen bitmap; otherwise the window system will not work correctly. For)]TJ +T* +0.1033 Tw +(specialized applications that require taking complete control of the display, the window)Tj +T* +0 Tw +(system can be turned off \(and back on again\) with the following function:)Tj +/TT10 1 Tf +10 0 0 10 102 209.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 209.26 Tm +(WINDOWWORLD)Tj +/F1 1 Tf +10 0 0 10 167.4 209.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 170.27 209.26 Tm +(FLAG)Tj +/TT10 1 Tf +10 0 0 10 191.8735 209.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 197.8745 209.26 Tm +[( )-22179.5([NoSpread Function])]TJ +-7.9861 -1.8833 TD +0.1656 Tw +(The window system is turned on if )Tj +/TT14 1 Tf +16.8352 0 TD +0 Tw +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1656 Tw +[( is )]TJ +/TT10 1 Tf +1.546 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1656 Tw +[( and off if )]TJ +/TT14 1 Tf +5.191 0 TD +0 Tw +(FLAG)Tj +/TT8 1 Tf +2.4004 0 TD +0.1656 Tw +[( is )]TJ +/TT10 1 Tf +1.546 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1656 Tw +(. )Tj +/TT10 1 Tf +1.0811 0 TD +0 Tw +(WINDOWWORLD)Tj +/TT8 1 Tf +-33.4004 -1.2889 TD +0.0344 Tw +(returns the previous state of the window system \()Tj +/TT10 1 Tf +22.2145 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0344 Tw +[( or )]TJ +/TT10 1 Tf +1.5098 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0344 Tw +[(\). If )]TJ +/TT10 1 Tf +2.1063 0 TD +0 Tw +(WINDOWWORLD)Tj +/TT8 1 Tf +6.6011 0 TD +0.0344 Tw +[( is given no)]TJ +-34.8321 -1.2889 TD +0 Tw +(arguments, it simply returns the current state without affecting the window system.)Tj +/TT4 1 Tf +10 0 0 10 54 126.77 Tm +(Using the Window System)Tj +ET +1 w +54.01 124.06 m +534.01 124.06 l +S +BT +/TT8 1 Tf +9 0 0 9 78 103.11 Tm +0.2811 Tw +(When Medley is initially started, the display screen lights up, showing a number of windows,)Tj +0 -1.2222 TD +0 Tw +(including the following:)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 4151 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +ET +q +150 0 0 -85 174.01 575.99 cm +/Im1 Do +Q +BT +/TT8 1 Tf +9 0 0 9 126 470.54 Tm +0.1178 Tw +[(This window is the "logo window," used to identify the system. The logo window is bound to the)]TJ +0 -1.2222 TD +0 Tw +(variable )Tj +/TT10 1 Tf +3.8598 0 TD +(LOGOW)Tj +/TT8 1 Tf +3.0005 0 TD +0.0356 Tw +[( until it is closed. The user can create other windows like this by calling the following)]TJ +-6.8603 -1.2889 TD +0 Tw +(function:)Tj +/TT10 1 Tf +10 0 0 10 150 425.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 425.66 Tm +(LOGOW)Tj +/F1 1 Tf +10 0 0 10 183 425.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.87 425.66 Tm +(STRING WHERE TITLE ANGLEDELTA)Tj +/TT10 1 Tf +10 0 0 10 342.4955 425.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 348.4965 425.66 Tm +[( )-15514.8([Function])]TJ +-19.3885 -1.8833 TD +0.0078 Tw +(Creates a window formatted like the "logo window." )Tj +/TT14 1 Tf +23.862 0 TD +0 Tw +(STRING)Tj +/TT8 1 Tf +3.6006 0 TD +0.0078 Tw +[( is the string to be printed in)]TJ +-27.4626 -1.2889 TD +0.0611 Tw +(big type in the window; if )Tj +/TT10 1 Tf +12.0615 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0611 Tw +(, "Medley" is used. )Tj +/TT14 1 Tf +8.9911 0 TD +0 Tw +(WHERE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +[( is the position of the lower-left)]TJ +-25.8534 -1.2889 TD +0.0022 Tw +(corner of the window; if )Tj +/TT10 1 Tf +10.9398 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0022 Tw +(, the user is asked to specify a position. )Tj +/TT14 1 Tf +17.7019 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0002 Tc +0.002 Tw +( is the window)Tj +-33.4425 -1.2889 TD +0 Tc +0.2244 Tw +(title to use; if )Tj +/TT10 1 Tf +6.8631 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.2244 Tw +(, it defaults to the Xerox copyright notice and date. )Tj +/TT14 1 Tf +25.3395 0 TD +0 Tw +(ANGLEDELTA)Tj +/TT8 1 Tf +-34.0029 -1.2889 TD +0.0911 Tw +(specifies the angle \(in degrees\) between the boxes in the picture; if )Tj +/TT10 1 Tf +30.5274 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0911 Tw +(, it defaults to 23)Tj +-32.3277 -1.2889 TD +0 Tw +(degrees.)Tj +ET +q +197.5 0 0 -62 255.26 341.16 cm +/Im2 Do +Q +BT +9 0 0 9 126 258.71 Tm +0.0089 Tw +(This window is the "executive window," used for typing expressions and commands to the Interlisp-D)Tj +0 -1.2222 TD +0.1867 Tw +[(executive, and for the executive to print any results \(see Chapter 13\). For example, in the above)]TJ +0 -1.2278 TD +0.01 Tw +(picture, the user typed in )Tj +/TT10 1 Tf +10 0 0 10 228.8118 236.66 Tm +0.024 Tw +(\(PLUS 3 4\))Tj +/TT8 1 Tf +9 0 0 9 289.3016 236.66 Tm +0.01 Tw +[(, the executive evaluated it, and printed out the result, 7. The)]TJ +-18.1446 -1.3278 TD +0.0378 Tw +(upward-pointing arrow \()Tj +ET +q +7 0 0 -6 227.11 230.71 cm +/Im3 Do +Q +BT +9 0 0 9 234.1 224.71 Tm +(\) is the flashing caret, which indicates where the next keyboard typein will)Tj +-12.0111 -1.2222 TD +0 Tw +(be printed \(see the )Tj +/TT10 1 Tf +8.4194 0 TD +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +( Process and the Caret section in this chapter\).)Tj +ET +q +189.5 0 0 -31.5 259.26 203.56 cm +/Im4 Do +Q +BT +9 0 0 9 126 151.61 Tm +0.2167 Tw +[(This window is the "prompt window," used for printing various system prompt messages. It is)]TJ +0 -1.2222 TD +0 Tw +(available to user programs through the following functions: )Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(PROMPTWINDOW)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.9867 TD +(Global variable containing the prompt window)Tj +/F2 1 Tf +10 0 0 10 362.1519 101.73 Tm +(.)Tj +/TT10 1 Tf +-21.2152 -2.228 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 79.45 Tm +(PROMPTPRINT)Tj +/F1 1 Tf +10 0 0 10 215.4 79.45 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 218.27 79.45 Tm +(EXP)Tj +1.8 -0.3333 TD +(1)Tj +/F3 1 Tf +10 0 0 10 239.87 79.45 Tm +( ... )Tj +/TT14 1 Tf +9 0 0 9 253.77 79.45 Tm +(EXP)Tj +1.8 -0.3333 TD +(N)Tj +/TT10 1 Tf +10 0 0 10 275.37 79.45 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 281.3709 79.45 Tm +[( )-18235.4([NoSpread Function])]TJ +-11.9301 -2.1778 TD +(Clears the prompt window, and prints )Tj +/TT14 1 Tf +17.2969 0 TD +(EXP)Tj +1.8031 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +( through )Tj +/TT14 1 Tf +4.0903 0 TD +(EXP)Tj +1.7997 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +( in the prompt window.)Tj +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/F2 17 0 R +/F3 18 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/XObject << +/Im1 19 0 R +/Im2 20 0 R +/Im3 21 0 R +/Im4 22 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +24 0 obj +<< +/Length 3752 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-30.6 -4.251 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 569.49 Tm +(CLRPROMPT)Tj +/TT10 1 Tf +10 0 0 10 156.6 569.49 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 162.601 569.49 Tm +[( )-30836.6([Function])]TJ +-4.0668 -1.8833 TD +(Clears the prompt window.)Tj +-5.3333 -2.7778 TD +0.0933 Tw +(The Medley window system allows the user to interactively manipulate the windows on the screen,)Tj +0 -1.2222 TD +0 Tw +(moving them around, changing their shape, etc. by selecting various operations from a menu. )Tj +0 -2.7778 TD +0.0144 Tw +(For most windows, pressing the )Tj +/TT10 1 Tf +14.5087 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0144 Tw +[( mouse button when the cursor is inside a window during I/O)]TJ +-17.5092 -1.2889 TD +0 Tw +(wait will cause the window to come to the top and a menu of window operations to appear. )Tj +ET +q +53.25 0 0 -91.5 255.38 461.39 cm +/Im5 Do +Q +BT +9 0 0 9 78 347.44 Tm +0.0533 Tw +(If a command is selected from this menu \(by releasing the right mouse key while the cursor is over a)Tj +0 -1.2222 TD +0.0456 Tw +(command\), the selected operation will be applied to the window in which the menu was brought up.)Tj +T* +0.0567 Tw +(It is possible for an applications program to redefine the action of the )Tj +/TT10 1 Tf +31.4657 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0567 Tw +[( mouse button. In these)]TJ +-34.4662 -1.2889 TD +0.1289 Tw +(cases, there is a convention that the default command menu may be brought up by depressing the)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1478 Tw +[( button when the cursor is in the header or border of a window \(see the Mouse Activity in)]TJ +-3.0005 -1.2889 TD +0 Tw +(Windows section in this chapter\). The operations are:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(Close)Tj +/TT8 1 Tf +3 0 TD +[( )-26811.1([Window Menu Command])]TJ +-0.3333 -1.8444 TD +0.1689 Tw +[(Closes the window, i.e, removes it from the screen. \(See )]TJ +/TT10 1 Tf +26.8856 0 TD +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1689 Tw +[( in the Opening and)]TJ +-30.4862 -1.2889 TD +0 Tw +(Closing Windows section in this chapter.\))Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Snap)Tj +/TT8 1 Tf +2.4 0 TD +[( )-27411.1([Window Menu Command])]TJ +0.2667 -1.8444 TD +0.0122 Tw +(Prompts for a region on the screen and makes a new window whose bits are a snapshot of)Tj +0 -1.2222 TD +0.0589 Tw +[(the bits currently in that region. Useful for saving some particularly choice image before)]TJ +T* +0 Tw +(the window image changes.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Paint)Tj +/TT8 1 Tf +3 0 TD +[( )-26811.1([Window Menu Command])]TJ +-0.3333 -1.8444 TD +0.2033 Tw +(Switches to a mode in which the cursor can be used like a paint brush to draw in a)Tj +0 -1.2222 TD +0.0567 Tw +[(window. This is useful for making notes on a window. While the )]TJ +/TT10 1 Tf +30.2035 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0567 Tw +[( button is down,)]TJ +-32.6039 -1.2889 TD +0.1122 Tw +[(bits are added. While the )]TJ +/TT10 1 Tf +12.2334 0 TD +0 Tw +(MIDDLE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1122 Tw +[( button is down, they are erased. The )]TJ +/TT10 1 Tf +17.863 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1122 Tw +[( button)]TJ +-36.6975 -1.2889 TD +0.2156 Tw +(pops up a command menu that allows changing of the brush shape, size and shade,)Tj +0 -1.2222 TD +0 Tw +(changing the mode of combining the brush with the existing bits, or stopping paint mode.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Clear)Tj +/TT8 1 Tf +3 0 TD +[( )-26811.1([Window Menu Command])]TJ +-0.3333 -1.8444 TD +0.0667 Tw +(Clears the window and repositions it to the left margin of the first line of text \(below the)Tj +0 -1.2222 TD +0 Tw +(upper left corner of the window by the amount of the font ascent\).)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/XObject << +/Im5 26 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +28 0 obj +<< +/Length 5131 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 569.54 Tm +(Bury)Tj +/TT8 1 Tf +2.4 0 TD +[( )-27411.1([Window Menu Command])]TJ +0.2667 -1.8444 TD +0.15 Tw +(Puts the window on the bottom of the occlusion stack, thereby exposing any windows)Tj +0 -1.2222 TD +0 Tw +(that it was hiding.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Redisplay)Tj +/TT8 1 Tf +5.4 0 TD +[( )-24411.1([Window Menu Command])]TJ +-2.7333 -1.8444 TD +0.0844 Tw +[(Redisplays the window. \(See )]TJ +/TT10 1 Tf +13.6678 0 TD +0 Tw +(REDISPLAYW)Tj +/TT8 1 Tf +6.001 0 TD +0.0844 Tw +[( in the Redisplaying Windows section in this)]TJ +-19.6688 -1.2889 TD +0 Tw +(chapter.\))Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Hardcopy)Tj +/TT8 1 Tf +4.8 0 TD +[( )-25011.1([Window Menu Command])]TJ +-2.1333 -1.8444 TD +0.0867 Tw +[(Prints the contents of the window to the printer. If the window has a window property)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(HARDCOPYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0656 Tw +(, it is called with two arguments, the window and an image stream to print)Tj +-6.001 -1.2889 TD +0.0033 Tw +(to, and the )Tj +/TT10 1 Tf +4.9621 0 TD +0 Tw +(HARDCOPYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0001 Tc +0.0032 Tw +( must do the printing. In this way, special windows can be set up)Tj +-10.9631 -1.2889 TD +0 Tc +0.0378 Tw +[(that know how to print their contents in a particular way. If the window does not have a)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(HARDCOPYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.2889 Tw +(, the bitmap image of the window \(including the border and title\) are)Tj +-6.001 -1.2889 TD +0 Tw +(printed on the file or printer.)Tj +0 -2 TD +0.0044 Tw +(To save the image in a Press or Interpress-format file, or to send it to a non-default printer,)Tj +0 -1.2222 TD +0.1567 Tw +(use the submenu of the Hardcopy command, indicated by a gray triangle on the right)Tj +T* +0.0067 Tw +[(edge of the Hardcopy menu item. If the mouse is moved off of the right of the menu item,)]TJ +T* +0.0044 Tw +(another pop-up menu will apear giving the choices )Tj +/TT10 1 Tf +22.8979 0 TD +0.0111 Tw +("To a file")Tj +/TT8 1 Tf +6.6233 0 TD +0.0011 Tc +0.0033 Tw +( or )Tj +/TT10 1 Tf +1.4498 0 TD +0 Tc +0.0111 Tw +("To a printer.")Tj +/TT8 1 Tf +-30.971 -1.2889 TD +0 Tw +(If )Tj +/TT10 1 Tf +0.9344 0 TD +0.0356 Tw +("To a file")Tj +/TT8 1 Tf +6.6722 0 TD +0.0144 Tw +[( is selected, the user is prompted to supply a file name, and the format of)]TJ +-7.6066 -1.2889 TD +0 Tw +(the file \(Press, Interpress, etc.\), and the specified region will be stored in the file.)Tj +0 -2 TD +(If )Tj +/TT10 1 Tf +0.9999 0 TD +0.1933 Tw +("To a printer")Tj +/TT8 1 Tf +8.788 0 TD +0.08 Tw +[( is selected, the user is prompted to select a printer from the list of)]TJ +-9.788 -1.2889 TD +0.0867 Tw +[(known printers, or to type the name of another printer. If the printer selected is not the)]TJ +0 -1.2222 TD +0.0389 Tw +(first printer on )Tj +/TT10 1 Tf +6.833 0 TD +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +11.4019 0 TD +0.0389 Tw +[( \(see Chapter 29\), the user will be asked whether)]TJ +-18.2348 -1.2889 TD +0.0822 Tw +(to move or add the printer to the beginning of this list, so that future printing will go to)Tj +0 -1.2222 TD +0 Tw +(the new printer.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Move)Tj +/TT8 1 Tf +2.4 0 TD +[( )-27411.1([Window Menu Command])]TJ +0.2667 -1.8444 TD +0.0078 Tw +(Moves the window to a location specified by pressing and then releasing the )Tj +/TT10 1 Tf +34.1538 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0078 Tw +[( button.)]TJ +-36.5542 -1.2889 TD +0.1111 Tw +(During this time a ghost frame will indicate where the window will reappear when the)Tj +0 -1.2222 TD +0.2689 Tw +[(key is released. \(See )]TJ +/TT10 1 Tf +10.6242 0 TD +0 Tw +(GETBOXPOSITION)Tj +/TT8 1 Tf +8.4014 0 TD +0.2689 Tw +[( in the Interactive Display Functions section)]TJ +-19.0256 -1.2889 TD +0 Tw +(below.\))Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Shape)Tj +/TT8 1 Tf +3 0 TD +[( )-26811.1([Window Menu Command])]TJ +-0.3333 -1.8444 TD +0.1289 Tw +[(Allows the user to specify a new region for the existing window contents. If the )]TJ +/TT10 1 Tf +37.5984 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +-37.5984 -1.2889 TD +0.0744 Tw +(button is used to specify the new region, the reshaped window can be placed anywhere.)Tj +0 -1.2222 TD +0.0444 Tw +(If the )Tj +/TT10 1 Tf +2.646 0 TD +0 Tw +(MIDDLE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0444 Tw +[( button is used, the cursor will start out tugging at the nearest corner of the)]TJ +-6.2466 -1.2889 TD +0.2467 Tw +(existing window, which is useful for making small adjustments in a window that is)Tj +0 -1.2222 TD +0.3444 Tw +(already positioned correctly. This is done by calling the function )Tj +/TT10 1 Tf +32.1002 0 TD +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +3.6006 0 TD +0.3444 Tw +[( \(see the)]TJ +-35.7008 -1.2889 TD +0 Tw +(Reshaping Windows section below\).)Tj +-5.3333 -2.7778 TD +0.0622 Tw +(Occasionally, a user will have a number of large windows on the screen, making it difficult to access)Tj +0 -1.2222 TD +0.1078 Tw +[(those windows being used. To help with the problem of screen space management, the Interlisp-D)]TJ +T* +0.1933 Tw +[(window system allows the creation of "icons." An icon is a small rectangle \(containing text or a)]TJ +ET +endstream +endobj +29 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +31 0 obj +<< +/Length 4450 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.16 Tw +[(bitmap\) which is a "shrunken-down" form of a particular window. Using the Shrink and Expand)]TJ +0 -1.2222 TD +0.0589 Tw +(commands, the user can shrink windows not currently being used into icons, and quickly restore the)Tj +T* +0 Tw +(original windows at any time.)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(Shrink)Tj +/TT8 1 Tf +3.6 0 TD +[( )-26211.1([Window Menu Command])]TJ +-0.9333 -1.8444 TD +0.2433 Tw +[(Removes the window from the screen and brings up its icon. \(See )]TJ +/TT10 1 Tf +32.5564 0 TD +0 Tw +(SHRINKW)Tj +/TT8 1 Tf +4.2007 0 TD +0.2433 Tw +[( in the)]TJ +-36.7571 -1.2889 TD +0.13 Tw +[(Shrinking Windows into Icons section in this chapter\) The window can be restored by)]TJ +0 -1.2222 TD +0 Tw +(selecting Expand from the window command menu of the icon.)Tj +-5.3333 -2.7778 TD +0.0111 Tw +(If the )Tj +/TT10 1 Tf +2.5794 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0111 Tw +[( button is pressed while the cursor is in an icon, the window command menu will contain)]TJ +-5.5798 -1.2889 TD +0.2 Tw +[(a slightly different set of commands. The Redisplay and Clear commands are removed, and the)]TJ +0 -1.2222 TD +0 Tw +(Shrink command is replaced with the Expand command:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(Expand)Tj +/TT8 1 Tf +3.6 0 TD +[( )-26211.1([Window Menu Command])]TJ +-0.9333 -1.8444 TD +0.0078 Tw +[(Restores the window associated with this icon and removes the icon. \(See )]TJ +/TT10 1 Tf +33.0196 0 TD +0 Tw +(EXPANDW)Tj +/TT8 1 Tf +4.2007 0 TD +0.0078 Tw +[( in the)]TJ +-37.2203 -1.2889 TD +0 Tw +(Shrinking Windows into Icons section in this chapter.\))Tj +0 -2 TD +0.1733 Tw +(If the )Tj +/TT10 1 Tf +2.9038 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1733 Tw +[( button is pressed while the cursor is not in any window, a "background)]TJ +-5.9043 -1.2889 TD +0 Tw +(menu" appears with the following operations:)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Idle)Tj +/TT8 1 Tf +2.4 0 TD +[( )-25871.1([Background Menu Command])]TJ +0.2667 -1.8444 TD +0.2278 Tw +(Enters "idle mode" \(see Chapter 12\), which blacks out the display screen to save the)Tj +0 -1.2222 TD +0.0522 Tw +[(phosphor. Idle mode can be exited by pressing any key on the keyboard or mouse. This)]TJ +T* +0.0544 Tw +(menu command has subitems that allow the user to interactively set idle options to erase)Tj +T* +0.2122 Tw +(the password cache \(for security\), to request a password before exiting idle mode, to)Tj +T* +0 Tw +(change the timeout before idle mode is entered automatically, etc.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(SaveVM)Tj +/TT8 1 Tf +3.6 0 TD +[( )-24671.1([Background Menu Command])]TJ +-0.9333 -1.8444 TD +0.0556 Tw +(Calls the function )Tj +/TT10 1 Tf +8.2257 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0556 Tw +[( \(see Chapter 12\), which writes out all of the dirty pages of the)]TJ +-11.8263 -1.2889 TD +0.08 Tw +[(virtual memory. After a )]TJ +/TT10 1 Tf +11.4239 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +(, and until the pagefault handler is next forced to write)Tj +-15.0245 -1.2889 TD +0.2178 Tw +(out a dirty page, your virtual memory image will be continuable \(as of the )Tj +/TT10 1 Tf +36.0709 0 TD +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +3.6006 0 TD +(\))Tj +-39.6715 -1.2889 TD +(should you experience a system crash or other disaster.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Snap)Tj +/TT8 1 Tf +2.4 0 TD +[( )-25871.1([Background Menu Command])]TJ +0.2667 -1.8444 TD +(The same as the window menu command Snap described above.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(Hardcopy)Tj +/TT8 1 Tf +4.8 0 TD +[( )-23471.1([Background Menu Command])]TJ +-2.1333 -1.8444 TD +0.0733 Tw +(Prompts for a region on the screen, and sends the bitmap image to the printer by calling)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(HARDCOPYW)Tj +/TT8 1 Tf +5.4009 0 TD +( \(see Chapter 29\). Note that the region can cross window boundaries.)Tj +-5.4009 -2.0667 TD +0.0222 Tw +(Like the Hardcopy window menu command \(above\), the user can print to a file or specify)Tj +0 -1.2222 TD +0 Tw +(a printer by using a submenu.)Tj +/TT12 1 Tf +-2.6667 -2.4822 TD +(PSW)Tj +/TT6 1 Tf +10 0 0 10 118.2026 68.8 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 120.98 68.8 Tm +[( )-26412.2([Background Menu Command])]TJ +0.5578 -1.8444 TD +0.06 Tw +(Prompts the user for a position on the screen, and creates a "process status window" that)Tj +0 -1.2222 TD +0 Tw +(allows the user to examine and manipulate all of the existing processes \(see Chapter 23\).)Tj +ET +endstream +endobj +32 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +34 0 obj +<< +/Length 5838 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.1 Tw +(Various system utilities \(TEdit, SEdit, )Tj +/TT10 1 Tf +17.2935 0 TD +0 Tw +(TTYIN)Tj +/TT8 1 Tf +3.0005 0 TD +0.1 Tw +(\) allow information to be "copy-inserted" at)Tj +-20.2939 -1.2889 TD +0.1022 Tw +(the current cursor position by selecting it with the "copy" key held down \(Normally the)Tj +0 -1.2222 TD +0.0078 Tw +[(shift keys are the "copy" key; this action can be changed in the key action table.\) To "copy-)]TJ +T* +0.0133 Tw +[(insert" the bitmap of a snap into a Tedit document. If the right mouse button is pressed in)]TJ +T* +0.2578 Tw +(the background with the copy key held down, a menu with the single item ")Tj +/TT10 1 Tf +37.2271 0 TD +0 Tw +(SNAP)Tj +/TT8 1 Tf +2.4004 0 TD +(")Tj +-39.6274 -1.2889 TD +0.1478 Tw +[(appears. If this item is selected, the user is prompted to select a region, and a bitmap)]TJ +0 -1.2222 TD +0.1089 Tw +(containing the bits in that region of the screen is inserted into the current tty process, if)Tj +T* +0 Tw +(that process is able to accept image objects.)Tj +0 -2 TD +0.0789 Tw +(Some built-in facilities and Lispusers packages add commands to the background menu,)Tj +0 -1.2222 TD +0.1411 Tw +[(to provide an easy way of calling the different facilities. The user can determine what)]TJ +T* +0.0844 Tw +(these new commands do by holding the )Tj +/TT10 1 Tf +18.5105 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0844 Tw +[( button down for a few seconds over the)]TJ +-21.511 -1.2889 TD +0 Tw +(item in question; an explanatory message will be printed in the prompt window.)Tj +/TT4 1 Tf +10 0 0 10 102 397.4 Tm +(Changing the Window System)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 394.69 m +582.01 394.69 l +S +BT +/TT8 1 Tf +9 0 0 9 126 373.74 Tm +0.1278 Tw +(The following functions provide a functional interface to the interactive window operations so that)Tj +0 -1.2222 TD +0 Tw +(user programs can call them directly.)Tj +/TT10 1 Tf +10 0 0 10 150 340.46 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 340.46 Tm +(DOWINDOWCOM)Tj +/F2 1 Tf +10 0 0 10 215.4 340.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 218.18 340.46 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 250.5853 340.46 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 256.5862 340.46 Tm +[( )-25727.1([Function])]TJ +-9.1763 -1.8833 TD +(If )Tj +/TT14 1 Tf +1.1121 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1922 Tw +[( is a )]TJ +/TT14 1 Tf +2.5415 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1922 Tw +[( that has a )]TJ +/TT10 1 Tf +5.5091 0 TD +0 Tw +(DOWINDOWCOMFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.1922 Tw +[( window property, it )]TJ +/TT10 1 Tf +10.2332 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.1922 Tw +(s that)Tj +-37.399 -1.2889 TD +0.0389 Tw +(property to )Tj +/TT14 1 Tf +5.3493 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0389 Tw +[(. Shrunken windows have a )]TJ +/TT10 1 Tf +13.0351 0 TD +0 Tw +(DOWINDOWCOMFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.0389 Tw +[( property that presents)]TJ +-29.7862 -1.2889 TD +0 Tw +(a window command menu that contains "expand" instead of "shrink".)Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +0.9966 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0767 Tw +[( is a )]TJ +/TT14 1 Tf +2.1948 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0767 Tw +[( that doesnt have a )]TJ +/TT10 1 Tf +9.2393 0 TD +0 Tw +(DOWINDOWCOMFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.0767 Tw +[( window property, it brings)]TJ +-27.4332 -1.2889 TD +0.0278 Tw +[(up the window command menu. The initial items in these menus are described above. If)]TJ +0 -1.2222 TD +0.2656 Tw +(the user selects one of the items from the provided menu, that item is )Tj +/TT10 1 Tf +34.5161 0 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +0.2656 Tw +(ed to)Tj +/TT14 1 Tf +-37.5166 -1.2889 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-3.6006 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(DOBACKGROUNDCOM)Tj +/TT8 1 Tf +9.0015 0 TD +( \(below\) is called.)Tj +-17.0371 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( is not a )Tj +/TT14 1 Tf +3.6689 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( or )Tj +/TT10 1 Tf +1.4409 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(DOWINDOWCOM)Tj +/TT8 1 Tf +6.6011 0 TD +( simply returns without doing anything.)Tj +/TT10 1 Tf +10 0 0 10 150 189.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 189.26 Tm +(DOBACKGROUNDCOM)Tj +/TT10 1 Tf +10 0 0 10 237 189.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 243.001 189.26 Tm +[( )-27236.6([Function])]TJ +-7.6668 -1.8833 TD +0.0922 Tw +[(Brings up the background menu. The initial items in this menu are described above. If)]TJ +0 -1.2222 TD +0 Tw +(the user selects one of the items from the menu, that item is )Tj +/TT10 1 Tf +26.4497 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +(ed.)Tj +-34.1834 -2.8444 TD +0.0844 Tw +[(The window command menu for unshrunken windows is cached in the variable WindowMenu. To)]TJ +0 -1.2222 TD +0.0656 Tw +(change the entries in this menu, the user should change the change the menu "command lists" in the)Tj +T* +0 Tw +(variable WindowMenuCommands, and set the appropriate menu variable to a non-)Tj +/TT10 1 Tf +37.03 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(, so the menu)Tj +-39.4304 -1.2889 TD +0.0889 Tw +[(will be recreated. This provides a way of adding commands to the menu, of changing its font or of)]TJ +0 -1.2222 TD +0.0622 Tw +[(restoring the menu if it gets clobbered. The window command menus for icons and the background)]TJ +T* +0.1733 Tw +[(have similar pairs of variables, documented below. The "command lists" are in the format of the)]TJ +/TT10 1 Tf +T* +0 Tw +(ITEMS)Tj +/TT8 1 Tf +3.0005 0 TD +( field of a menu \(see the Menu Fields section below\), except as specified below.)Tj +4.9995 -2.0667 TD +(Note: Command menus are recreated using the current value of )Tj +/TT10 1 Tf +28.7324 0 TD +(MENUFONT)Tj +/TT8 1 Tf +4.8008 0 TD +(.)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 17 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +37 0 obj +<< +/Length 6434 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT12 1 Tf +9 0 0 9 102 569.54 Tm +(WindowMenu)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +/TT12 1 Tf +-6 -1.0667 TD +(WindowMenuCommands)Tj +/TT8 1 Tf +10.8 0 TD +[( )-26967.8([Variable])]TJ +-8.1333 -1.8444 TD +0.0967 Tw +(The menu that is brought up in response to a right button in an unshrunken window is)Tj +0 -1.2222 TD +0.0544 Tw +(stored on the variable )Tj +/TT10 1 Tf +10.0879 0 TD +0 Tw +(WindowMenu)Tj +/TT8 1 Tf +6.001 0 TD +0.0544 Tw +[(. If )]TJ +/TT10 1 Tf +1.8333 0 TD +0 Tw +(WindowMenu)Tj +/TT8 1 Tf +6.001 0 TD +0.0544 Tw +[( is set to a non-)]TJ +/TT10 1 Tf +6.8811 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0544 Tw +(, the menu will)Tj +-33.2046 -1.2889 TD +0.2678 Tw +(be recreated from the list of commands )Tj +/TT10 1 Tf +19.3915 0 TD +0 Tw +(WindowMenuCommands)Tj +/TT8 1 Tf +10.8018 0 TD +0.2678 Tw +[(. The )]TJ +/TT10 1 Tf +3.4772 0 TD +0 Tw +(CADR)Tj +/TT8 1 Tf +2.4004 0 TD +0.2678 Tw +[( of each)]TJ +-36.0708 -1.2889 TD +0.2822 Tw +(command added to )Tj +/TT10 1 Tf +9.7285 0 TD +0 Tw +(WindowMenuCommands)Tj +/TT8 1 Tf +10.8018 0 TD +0.2822 Tw +[( should be a function name that will be)]TJ +/TT10 1 Tf +-20.5303 -1.2889 TD +0 Tw +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +(ed to the window.)Tj +/TT12 1 Tf +-5.6672 -2.4 TD +(IconWindowMenu)Tj +/TT8 1 Tf +8.4 0 TD +[( )-29367.8([Variable])]TJ +/TT12 1 Tf +-8.4 -1.0667 TD +(IconWindowMenuCommands)Tj +/TT8 1 Tf +13.2 0 TD +[( )-24567.8([Variable])]TJ +-10.5333 -1.8444 TD +0.0167 Tw +(The menu that is brought up in response to a right button in a shrunken window is stored)Tj +0 -1.2222 TD +0.0711 Tw +(on the variable )Tj +/TT10 1 Tf +7.0527 0 TD +0 Tw +(IconWindowMenu)Tj +/TT8 1 Tf +8.4014 0 TD +0.0711 Tw +[(. If it is )]TJ +/TT10 1 Tf +3.8575 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0711 Tw +(, it is recreated from the list of commands)Tj +/TT10 1 Tf +-21.1119 -1.2889 TD +0 Tw +(IconWindowMenuCommands)Tj +/TT8 1 Tf +13.2021 0 TD +0.1089 Tw +[(. The )]TJ +/TT10 1 Tf +3.0005 0 TD +0 Tw +(CADR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1089 Tw +[( of each command added a function name that)]TJ +-18.603 -1.2889 TD +0 Tw +(will be )Tj +/TT10 1 Tf +3.2393 0 TD +(APPLY)Tj +/TT8 1 Tf +3.0005 0 TD +(ed to the window.)Tj +/TT12 1 Tf +-8.9064 -2.4 TD +(BackgroundMenu)Tj +/TT8 1 Tf +8.4 0 TD +[( )-29367.8([Variable])]TJ +/TT12 1 Tf +-8.4 -1.0667 TD +(BackgroundMenuCommands)Tj +/TT8 1 Tf +13.2 0 TD +[( )-24567.8([Variable])]TJ +-10.5333 -1.8445 TD +0.0478 Tw +(The menu that is brought up in response to a right button in the background is stored on)Tj +0 -1.2222 TD +0.1678 Tw +(the variable )Tj +/TT10 1 Tf +5.797 0 TD +0 Tw +(BackgroundMenu)Tj +/TT8 1 Tf +8.4014 0 TD +0.1678 Tw +[(. If it is )]TJ +/TT10 1 Tf +4.3408 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1678 Tw +(, it is recreated from the list of commands)Tj +-20.3395 -1.2889 TD +1.1878 Tw +[(BackgroundMenuCommands. The )]TJ +/TT10 1 Tf +19.388 0 TD +0 Tw +(CADR)Tj +/TT8 1 Tf +2.4004 0 TD +1.1878 Tw +[( of each command added to)]TJ +-21.7884 -1.2889 TD +0 Tw +(BackgroundMenuCommands should be a form that will be )Tj +/TT10 1 Tf +26.3701 0 TD +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +(ed.)Tj +/TT12 1 Tf +-31.4372 -2.4 TD +(BackgroundCopyMenu)Tj +/TT8 1 Tf +10.8018 0 TD +[( )-26966([Variable])]TJ +/TT12 1 Tf +-10.8018 -1.0667 TD +(BackgroundCopyMenuCommands)Tj +/TT8 1 Tf +15.6025 0 TD +[( )-22165.2([Variable])]TJ +-12.9359 -1.8444 TD +0.1144 Tw +(The menu that is brought up in response to a right button in the background when the)Tj +0 -1.2222 TD +0.1844 Tw +(copy key is down is stored on the variable )Tj +/TT10 1 Tf +20.5208 0 TD +0 Tw +(BackgroundCopyMenu)Tj +/TT8 1 Tf +10.8018 0 TD +0.1844 Tw +[(. If it is )]TJ +/TT10 1 Tf +4.4242 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1844 Tw +(, it is)Tj +-37.5471 -1.2889 TD +0.1989 Tw +[(recreated from the list of commands BackgroundCopyMenuCommands. The )]TJ +/TT10 1 Tf +36.2617 0 TD +0 Tw +(CADR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1989 Tw +[( of)]TJ +-38.6621 -1.2889 TD +0.0267 Tw +(each command added to )Tj +/TT10 1 Tf +11.2434 0 TD +0 Tw +(BackgroundCopyMenuCommands)Tj +/TT8 1 Tf +15.6025 0 TD +0.0267 Tw +[( should be a form that will be)]TJ +/TT10 1 Tf +-26.8459 -1.2889 TD +0 Tw +(EVAL)Tj +/TT8 1 Tf +2.4004 0 TD +(ed.)Tj +/TT4 1 Tf +10 0 0 10 54 197 Tm +(Interactive Display Functions)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 194.29 m +534.01 194.29 l +S +BT +/TT8 1 Tf +9 0 0 9 78 173.34 Tm +0.0033 Tw +(The following functions can be used by programs to allow the user to interactively specify positions or)Tj +0 -1.2222 TD +0 Tw +(regions on the display screen.)Tj +/TT10 1 Tf +10 0 0 10 102 140.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 140.06 Tm +(GETPOSITION)Tj +/F1 1 Tf +10 0 0 10 167.4 140.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 170.27 140.06 Tm +(WINDOW CURSOR)Tj +/TT10 1 Tf +10 0 0 10 240.4814 140.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.4824 140.06 Tm +[( )-21516.4([Function])]TJ +-13.3869 -1.8833 TD +0.1344 Tw +(Returns a )Tj +/TT10 1 Tf +4.7459 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.1344 Tw +[( that is specified by the user. )]TJ +/TT10 1 Tf +14.1249 0 TD +0 Tw +(GETPOSITION)Tj +/TT8 1 Tf +6.6011 0 TD +0.1344 Tw +[( waits for the user to)]TJ +-30.2727 -1.2889 TD +0.0678 Tw +(press and release the left button of the mouse and returns the cursor position at the time)Tj +0 -1.2222 TD +0.2378 Tw +[(of release. If )]TJ +/TT14 1 Tf +6.7968 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2378 Tw +[( is a )]TJ +/TT14 1 Tf +2.6782 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2378 Tw +(, the position will be in the coordinate system of)Tj +/TT14 1 Tf +-16.6762 -1.2889 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +[(s display stream. If )]TJ +/TT14 1 Tf +9.3579 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +[( is )]TJ +/TT10 1 Tf +1.2971 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +[(, the position will be in screen coordinates. If)]TJ +/TT14 1 Tf +-19.6564 -1.2889 TD +0 Tw +(CURSOR)Tj +/TT8 1 Tf +3.6006 0 TD +0.4667 Tw +[( is a )]TJ +/TT14 1 Tf +3.3648 0 TD +0 Tw +(CURSOR)Tj +/TT8 1 Tf +3.6006 0 TD +0.4667 Tw +[( \(see Chapter 30\), the cursor will be changed to it while)]TJ +/TT10 1 Tf +-10.566 -1.2889 TD +0 Tw +(GETPOSITION)Tj +/TT8 1 Tf +6.6011 0 TD +0.4467 Tw +[( is running. If )]TJ +/TT14 1 Tf +8.7094 0 TD +0 Tw +(CURSOR)Tj +/TT8 1 Tf +3.6006 0 TD +0.4467 Tw +[( is )]TJ +/TT10 1 Tf +2.1082 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.4467 Tw +(, the value of the system variable)Tj +/TT10 1 Tf +-22.8195 -2.2389 TD +0 Tw +(CROSSHAIRS)Tj +/TT8 1 Tf +6.001 0 TD +( will be used as the cursor: )Tj +ET +q +15 0 0 -15 287.81 60.56 cm +/Im6 Do +Q +BT +9 0 0 9 302.8 45.56 Tm +(.)Tj +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/XObject << +/Im6 39 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +41 0 obj +<< +/Length 5498 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 568.26 Tm +(GETBOXPOSITION)Tj +/F1 1 Tf +10 0 0 10 231.6 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 234.47 568.26 Tm +(BOXWIDTH BOXHEIGHT ORGX ORGY WINDOW PROMPTMSG)Tj +/TT10 1 Tf +10 0 0 10 477.5095 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 483.5105 568.26 Tm +[( )-513.3([Function])]TJ +-34.3901 -1.8833 TD +0.1889 Tw +(Allows the user to position a "ghost" region of size )Tj +/TT14 1 Tf +24.4177 0 TD +0 Tw +(BOXWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.1889 Tw +[( by )]TJ +/TT14 1 Tf +1.9872 0 TD +0 Tw +(BOXHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.1889 Tw +[( on the)]TJ +-36.6065 -1.2889 TD +0.0389 Tw +(screen, and returns the )Tj +/TT10 1 Tf +10.4925 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0389 Tw +[( of the lower left corner of the region. If )]TJ +/TT14 1 Tf +18.294 0 TD +0 Tw +(PROMPTMSG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0389 Tw +[( is)]TJ +-38.9881 -1.2889 TD +0 Tw +(non-)Tj +/TT10 1 Tf +2.043 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.7378 0 TD +(GETBOXPOSITION)Tj +/TT8 1 Tf +8.4014 0 TD +0.2378 Tw +[( first prints it in the )]TJ +/TT10 1 Tf +10.1923 0 TD +0 Tw +(PROMPTWINDOW)Tj +/TT8 1 Tf +7.2012 0 TD +0.2378 Tw +(. )Tj +/TT10 1 Tf +1.2256 0 TD +0 Tw +(GETBOXPOSITION)Tj +/TT8 1 Tf +-31.6014 -1.9056 TD +0.0289 Tw +(then changes the cursor to a box \(using the global variable )Tj +/TT10 1 Tf +26.2729 0 TD +0 Tw +(BOXCURSOR)Tj +/TT8 1 Tf +5.4009 0 TD +(: )Tj +ET +q +12 0 0 -12 463.83 522.96 cm +/Im7 Do +Q +BT +9 0 0 9 475.82 510.96 Tm +0.0289 Tw +[(\). If )]TJ +/TT14 1 Tf +2.0896 0 TD +0 Tw +(ORGX)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[( and)]TJ +/TT14 1 Tf +-38.0255 -1.2889 TD +0 Tw +(ORGY)Tj +/TT8 1 Tf +2.4004 0 TD +0.0433 Tw +[( are numbers, they are taken to be the original position of the region, and the cursor)]TJ +-2.4004 -1.2889 TD +0.1089 Tw +[(is moved to the nearest corner of that region. A ghost region is locked to the cursor so)]TJ +0 -1.2222 TD +0.2433 Tw +[(that if the cursor is moved, the ghost region moves with it. If )]TJ +/TT14 1 Tf +30.6445 0 TD +0 Tw +(ORGX)Tj +/TT8 1 Tf +2.4004 0 TD +0.2433 Tw +[( and )]TJ +/TT14 1 Tf +2.6795 0 TD +0 Tw +(ORGY)Tj +/TT8 1 Tf +2.4004 0 TD +0.2433 Tw +[( are)]TJ +-38.1248 -1.2889 TD +0.0422 Tw +(numbers, the corner of the region formed by \()Tj +/TT14 1 Tf +20.5389 0 TD +0.1011 Tw +(ORGX ORGY BOXWIDTH BOXHEIGHT)Tj +/TT8 1 Tf +17.1061 0 TD +0.0422 Tw +(\) that)Tj +-37.645 -1.2889 TD +0.0233 Tw +[(is nearest the cursor position is locked, otherwise the lower left corner is locked. The user)]TJ +0 -1.2222 TD +0.1278 Tw +[(can change to another corner by holding down the right button. With the right button)]TJ +T* +0.0078 Tw +(down, the cursor can be moved across the screen without effect on the ghost region frame.)Tj +T* +0.0933 Tw +(When the right button is released, the mouse will snap to the nearest corner, which will)Tj +T* +0.0044 Tw +(then become locked to the cursor. \(The held corner can be changed after the left or middle)Tj +T* +0.0711 Tw +(button is down by holding both the original button and the right button down while the)Tj +T* +0.0967 Tw +[(cursor is moved to the desired new corner, then letting up just the right button.\) When)]TJ +T* +0.0367 Tw +(the left or middle button is pressed and released, the lower left corner of the region at the)Tj +T* +0.2156 Tw +[(time of release is returned. If )]TJ +/TT14 1 Tf +14.6686 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2156 Tw +[( is a )]TJ +/TT14 1 Tf +2.6115 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2156 Tw +(, the returned position will be in)Tj +/TT14 1 Tf +-24.4812 -1.2889 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(s coordinate system; otherwise it will be in screen coordinates.)Tj +0.3994 -2.0667 TD +(Example:)Tj +/TT10 1 Tf +1.3333 -1.9333 TD +(\(GETBOXPOSITION 100 200 NIL NIL NIL)Tj +0 -1.2222 TD +( "Specify the position of the command area."\))Tj +/TT8 1 Tf +-5.3333 -2.0667 TD +0.1233 Tw +(prompts the user for a 100 wide by 200 high region and returns its lower left corner in)Tj +0 -1.2222 TD +0 Tw +(screen coordinates.)Tj +/TT10 1 Tf +10 0 0 10 150 255.08 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 255.08 Tm +(GETREGION)Tj +/F1 1 Tf +10 0 0 10 204.6 255.08 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.47 255.08 Tm +(MINWIDTH MINHEIGHT OLDREGION NEWREGIONFN NEWREGIONFNARG)Tj +-5.7189 -1.1111 TD +(INITCORNERS)Tj +/TT10 1 Tf +10 0 0 10 215.4097 245.08 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 221.4106 245.08 Tm +[( )-29635.5([Function])]TJ +-5.2678 -1.8833 TD +0.3611 Tw +(Lets the user specify a new region and returns that region in screen coordinates.)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(GETREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.16 Tw +[( prompts for a region by displaying a four-pronged box next to the cursor)]TJ +-5.4009 -2.1278 TD +0.0256 Tw +(arrow at one corner of a "ghost" region: )Tj +ET +q +16 0 0 -14 334.24 211.98 cm +/Im8 Do +Q +BT +9 0 0 9 350.23 197.98 Tm +[(. If the user presses the left button, the corner)]TJ +-19.5811 -1.2222 TD +0.1178 Tw +[(of a "ghost" region opposite the cursor is locked where it is. Once one corner has been)]TJ +T* +0 Tw +(fixed, the ghost region expands as the cursor moves.)Tj +0 -2 TD +(To specify a region:)Tj +4 -2 TD +[(1.)-1250(Move the ghost box so that the corner opposite the cursor is at one)]TJ +2 -1.2222 TD +(corner of the intended region. )Tj +-2 -2 TD +[(2.)-1250(Press the left button. )]TJ +T* +[(3.)-1250(Move the cursor to the position of the opposite corner of the intended)]TJ +2 -1.2222 TD +(region while holding down the left button. )Tj +-2 -2 TD +[(4.)-1250(Release the left button. )]TJ +ET +endstream +endobj +42 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/XObject << +/Im7 43 0 R +/Im8 44 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +46 0 obj +<< +/Length 7012 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0356 Tw +(Before one corner has been fixed, one can switch the cursor to another corner of the ghost)Tj +0 -1.2222 TD +0.0189 Tw +[(region by holding down the right button. With the right button down, the cursor changes)]TJ +0 -2.2833 TD +0.1122 Tw +(to a "forceps" \()Tj +ET +q +12 0 0 -16 186.82 553.99 cm +/Im9 Do +Q +BT +9 0 0 9 198.81 537.99 Tm +(\) and the cursor can be moved across the screen without effect on the)Tj +-8.09 -1.2222 TD +0.0422 Tw +[(ghost region frame. When the right button is released, the cursor will snap to the nearest)]TJ +T* +0 Tw +(corner of the ghost region.)Tj +0 -2 TD +0.1844 Tw +[(After one corner has been fixed, one can still switch to another corner. To change to)]TJ +0 -1.2222 TD +0.1533 Tw +(another corner, continue to hold down the left button and hold down the right button)Tj +T* +0.0789 Tw +[(also. With both buttons down, the cursor can be moved across the screen without effect)]TJ +T* +0.0644 Tw +[(on the ghost region frame. When the right button is released, the cursor will snap to the)]TJ +T* +0.1567 Tw +[(nearest corner, which will become the moving corner. In this way, the region may be)]TJ +T* +0 Tw +(moved all over the screen, before its size and position is finalized.)Tj +0 -2 TD +0.4244 Tw +(The size of the initial ghost region is controlled by the )Tj +/TT14 1 Tf +28.6303 0 TD +0 Tw +(MINWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +(, )Tj +/TT14 1 Tf +0.9244 0 TD +(MINHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +(,)Tj +/TT14 1 Tf +-39.7564 -1.2889 TD +(OLDREGION)Tj +/TT8 1 Tf +5.4009 0 TD +(, and )Tj +/TT14 1 Tf +2.4429 0 TD +(INITCORNERS)Tj +/TT8 1 Tf +6.6011 0 TD +( arguments.)Tj +-14.4448 -2.0667 TD +(If )Tj +/TT14 1 Tf +1.0555 0 TD +(INITCORNERS)Tj +/TT8 1 Tf +6.6011 0 TD +0.1356 Tw +[( is non-)]TJ +/TT10 1 Tf +3.5289 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1356 Tw +(, it should be a list specifying the initial corners of a ghost)Tj +-12.9858 -1.2889 TD +0.0622 Tw +(region of the form \()Tj +/TT14 1 Tf +8.8539 0 TD +0.1478 Tw +(BASEX BASEY OPPX OPPY)Tj +/TT8 1 Tf +13.0454 0 TD +0.0622 Tw +(\), where \()Tj +/TT14 1 Tf +4.3095 0 TD +0.1478 Tw +(BASEX, BASEY)Tj +/TT8 1 Tf +7.349 0 TD +0.0622 Tw +(\) describes the)Tj +-33.5577 -1.2889 TD +0.0789 Tw +(anchored corner of the box, and \()Tj +/TT14 1 Tf +15.1101 0 TD +0.19 Tw +(OPPX, OPPY)Tj +/TT8 1 Tf +6.191 0 TD +0.0789 Tw +(\) describes the trackable corner \(in screen)Tj +-21.301 -1.2889 TD +0 Tw +(coordinates\). The cursor is moved to \()Tj +/TT14 1 Tf +16.9605 0 TD +(OPPX, OPPY)Tj +/TT8 1 Tf +6.001 0 TD +(\).)Tj +-22.9614 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9921 0 TD +(INITCORNERS)Tj +/TT8 1 Tf +6.6011 0 TD +0.0722 Tw +[( is )]TJ +/TT10 1 Tf +1.3593 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0722 Tw +(, the ghost region will be )Tj +/TT14 1 Tf +11.593 0 TD +0 Tw +(MINWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.0722 Tw +[( wide and )]TJ +/TT14 1 Tf +4.8744 0 TD +0 Tw +(MINHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.0722 Tw +[( high.)]TJ +-37.4218 -1.2889 TD +0 Tw +(If )Tj +/TT14 1 Tf +1.0599 0 TD +(MINWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.14 Tw +[( or )]TJ +/TT14 1 Tf +1.7209 0 TD +0 Tw +(MINHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.14 Tw +[( is )]TJ +/TT10 1 Tf +1.4948 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.14 Tw +[(, 0 is used. Thus, for a call to )]TJ +/TT10 1 Tf +14.3751 0 TD +0 Tw +(GETREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.14 Tw +[( with no)]TJ +-36.0536 -1.2889 TD +0.0489 Tw +[(arguments specified, there will be no initial ghost region. The cursor will be in the lower)]TJ +0 -1.2222 TD +0 Tw +(right corner of the region, if there is one. )Tj +0 -2 TD +(If )Tj +/TT14 1 Tf +1.2988 0 TD +(OLDREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.3789 Tw +[( is a region and the user presses the middle button, the corner of)]TJ +/TT14 1 Tf +-6.6997 -1.2889 TD +0 Tw +(OLDREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0578 Tw +[( farthest from the cursor position is fixed and the corner nearest the cursor is)]TJ +-5.4009 -1.2889 TD +0 Tw +(locked to the cursor.)Tj +/TT14 1 Tf +0 -2 TD +(MINWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.31 Tw +[( and )]TJ +/TT14 1 Tf +2.8129 0 TD +0 Tw +(MINHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.31 Tw +(, if given, are the smallest )Tj +/TT14 1 Tf +13.3361 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.31 Tw +[( and )]TJ +/TT14 1 Tf +2.8129 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.31 Tw +[( that the)]TJ +-35.7646 -1.2889 TD +0.0867 Tw +[(returned region will have. The ghost image will not get any smaller than )]TJ +/TT14 1 Tf +33.7461 0 TD +0 Tw +(MINWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.0867 Tw +[( by)]TJ +/TT14 1 Tf +-38.5468 -1.2889 TD +0 Tw +(MINHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-5.4009 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9855 0 TD +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +0.0656 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3889 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0656 Tw +(, it will be called to determine values for the positions of the)Tj +-12.7758 -1.2889 TD +0.0311 Tw +[(corners. This provides a way of "filtering" prospective regions; for instance, by restricting)]TJ +0 -1.2222 TD +0.0756 Tw +[(the region to lie on an arbitrary grid. When the user is specifying a region, the region is)]TJ +T* +0.1556 Tw +(determined by two of its corners, one that is fixed and one that is tracking the cursor.)Tj +T* +0.1167 Tw +(Each time the cursor moves or a mouse button is pressed, )Tj +/TT14 1 Tf +26.9288 0 TD +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +0.1167 Tw +[( is called with)]TJ +-33.5299 -1.2889 TD +0.0533 Tw +(three arguments: )Tj +/TT14 1 Tf +7.8659 0 TD +0 Tw +(FIXEDPOINT)Tj +/TT8 1 Tf +6.001 0 TD +0.0533 Tw +(, the position of the fixed corner of the prospective region;)Tj +/TT14 1 Tf +-13.8669 -1.2889 TD +0 Tw +(MOVINGPOINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.3889 Tw +(, the position of the opposite corner of the prospective region; and)Tj +/TT14 1 Tf +-6.6011 -1.2889 TD +0 Tw +(NEWREGIONFNARG)Tj +/TT8 1 Tf +8.4014 0 TD +0.4678 Tw +[(. )]TJ +/TT14 1 Tf +2.4033 0 TD +0 Tw +(NEWREGIONFNARG)Tj +/TT8 1 Tf +8.4014 0 TD +0.4678 Tw +[( allows the caller of )]TJ +/TT10 1 Tf +11.1407 0 TD +0 Tw +(GETREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.4678 Tw +[( to pass)]TJ +-35.7476 -1.2889 TD +0 Tw +(information to the )Tj +/TT14 1 Tf +8.2842 0 TD +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +-14.8853 -2.0667 TD +0.0522 Tw +(The first time a button is pressed and when the user changes the moving corner via right)Tj +0 -1.2222 TD +0 Tw +(buttoning, )Tj +/TT14 1 Tf +4.8757 0 TD +(MOVINGPOINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.01 Tw +[( is )]TJ +/TT10 1 Tf +1.2348 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.01 Tw +[( and )]TJ +/TT14 1 Tf +2.2129 0 TD +0 Tw +(FIXEDPOINT)Tj +/TT8 1 Tf +6.001 0 TD +0.01 Tw +[( is the position the user selected for the)]TJ +-22.7258 -1.2889 TD +0.0667 Tw +[(fixed corner of the new region. In this case, the position returned by )]TJ +/TT14 1 Tf +31.3767 0 TD +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +0.0667 Tw +[( will)]TJ +-37.9778 -1.2889 TD +0.0878 Tw +[(be used for the fixed corner instead of the one proposed by the user. For all other calls,)]TJ +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(FIXEDPOINT)Tj +/TT8 1 Tf +6.001 0 TD +0.1689 Tw +[( is the position of the fixed corner \(as returned by the previous call\) and)]TJ +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT14 11 0 R +>> +/XObject << +/Im9 48 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +50 0 obj +<< +/Length 5867 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT14 1 Tf +9 0 0 9 174 569.54 Tm +(MOVINGPOINT)Tj +/TT8 1 Tf +6.6011 0 TD +0.1922 Tw +[( is the new position the user selected for the opposite corner. In these)]TJ +-6.6011 -1.2889 TD +0.2456 Tw +(cases, the value of )Tj +/TT14 1 Tf +9.2068 0 TD +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +0.2456 Tw +[( is used for the opposite corner instead of the one)]TJ +-15.8079 -1.2889 TD +0.0478 Tw +[(proposed by the user. In all cases, the ghost region is drawn with the values returned by)]TJ +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +0.0756 Tw +(. )Tj +/TT14 1 Tf +0.9011 0 TD +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6011 0 TD +0.0756 Tw +[( can be a list of functions in which case they are called in)]TJ +-14.1033 -1.2889 TD +0.1044 Tw +(order with each being passed the result of calling the previous and the value of the last)Tj +0 -1.2222 TD +0 Tw +(one used as the point.)Tj +/TT10 1 Tf +10 0 0 10 150 490.46 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 490.46 Tm +(GETBOXREGION)Tj +/F1 1 Tf +10 0 0 10 220.8 490.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.67 490.46 Tm +(WIDTH HEIGHT ORGX ORGY WINDOW PROMPTMSG)Tj +/TT10 1 Tf +10 0 0 10 434.3043 490.46 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 440.3052 490.46 Tm +[( )-5313.9([Function])]TJ +-29.5895 -1.8833 TD +0.0422 Tw +(Performs the same prompting as )Tj +/TT10 1 Tf +14.8976 0 TD +0 Tw +(GETBOXPOSITION)Tj +/TT8 1 Tf +8.4014 0 TD +0.0422 Tw +[( and returns the )]TJ +/TT10 1 Tf +7.4531 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0422 Tw +[( specified by)]TJ +-34.3527 -1.2889 TD +0 Tw +(the user instead of the )Tj +/TT10 1 Tf +10.0171 0 TD +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +( of its lower left corner.)Tj +/TT10 1 Tf +10 0 0 10 150 439.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 439.03 Tm +(MOUSECONFIRM)Tj +/F1 1 Tf +10 0 0 10 220.8 439.03 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.67 439.03 Tm +(PROMPTSTRING HELPSTRING WINDOW DONTCLEARWINDOWFLG)Tj +/TT10 1 Tf +10 0 0 10 493.7139 439.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 499.7149 439.03 Tm +( )Tj +-38.1906 -1.1056 TD +([Function])Tj +/TT10 1 Tf +2 -1.7778 TD +(MOUSECONFIRM)Tj +/TT8 1 Tf +7.2012 0 TD +0.2378 Tw +[( provides a simple way for the user to confirm or abort some action)]TJ +-7.2012 -1.2889 TD +0.4911 Tw +[(simply by using the mouse buttons. It prints the strings )]TJ +/TT14 1 Tf +30.3632 0 TD +0 Tw +(PROMPTSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +0.4911 Tw +[( and)]TJ +/TT14 1 Tf +-37.5643 -2.35 TD +0 Tw +(HELPSTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.1244 Tw +[( in the window )]TJ +/TT14 1 Tf +7.4558 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1244 Tw +(, changes the cursor to a "little mouse" cursor: )Tj +ET +q +13 0 0 -16 520.97 396.33 cm +/Im10 Do +Q +BT +9 0 0 9 174 368.73 Tm +0.1367 Tw +(\(stored in the variable )Tj +/TT10 1 Tf +10.4949 0 TD +0 Tw +(MOUSECONFIRMCURSOR)Tj +/TT8 1 Tf +10.8018 0 TD +0.1367 Tw +(\), and waits for the user to press the left)Tj +-21.2967 -1.2889 TD +0.17 Tw +[(button to confirm, or any other button to abort. If the left button was the last button)]TJ +0 -1.2222 TD +0 Tw +(released, returns )Tj +/TT10 1 Tf +7.6118 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +(, else )Tj +/TT10 1 Tf +2.4229 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-12.4351 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9555 0 TD +(PROMPTSTRING)Tj +/TT8 1 Tf +7.2012 0 TD +0.0356 Tw +[( is )]TJ +/TT10 1 Tf +1.286 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0356 Tw +[(, it is not printed out. If )]TJ +/TT14 1 Tf +11.0008 0 TD +0 Tw +(HELPSTRING)Tj +/TT8 1 Tf +6.001 0 TD +0.0356 Tw +[( is )]TJ +/TT10 1 Tf +1.286 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0356 Tw +(, the string )Tj +/TT10 1 Tf +5.0681 0 TD +0 Tw +("Click)Tj +-36.399 -1.2889 TD +0.3533 Tw +(LEFT to confirm, RIGHT to abort.")Tj +/TT8 1 Tf +21.5699 0 TD +0.1478 Tw +[( is used. If )]TJ +/TT14 1 Tf +5.7404 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1478 Tw +[( is )]TJ +/TT10 1 Tf +1.5104 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1478 Tw +(, the prompt)Tj +-34.2215 -1.2889 TD +0 Tw +(window is used.)Tj +0 -2 TD +(Normally, )Tj +/TT10 1 Tf +4.8941 0 TD +(MOUSECONFIRM)Tj +/TT8 1 Tf +7.2012 0 TD +0.1011 Tw +[( clears )]TJ +/TT14 1 Tf +3.2349 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( before returning. If )]TJ +/TT14 1 Tf +9.6701 0 TD +0 Tw +(DONTCLEARWINDOWFLG)Tj +/TT8 1 Tf +-28.6009 -1.2889 TD +(is non-)Tj +/TT10 1 Tf +3.0078 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the window is not cleared.)Tj +/TT4 1 Tf +10 0 0 10 102 231.79 Tm +(Windows)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 229.08 m +582.01 229.08 l +S +BT +/TT8 1 Tf +9 0 0 9 126 208.13 Tm +0.23 Tw +(A window specifies a region of the screen, a display stream, functions that get called when the)Tj +0 -1.2222 TD +0.0489 Tw +[(window undergoes certain actions, and various other items of information. The basic model is that a)]TJ +T* +0.0589 Tw +[(window is a passive collection of bits \(on the screen\). On top of this basic level, the system supports)]TJ +T* +0.0233 Tw +(many different types of windows that are linked to the data structures displayed in them and provide)Tj +T* +0.1744 Tw +[(selection and redisplaying routines. In addition, it is possible for the user to create new types of)]TJ +T* +0 Tw +(windows by providing selection and displaying functions for them.)Tj +0 -2.7778 TD +0.1467 Tw +[(Windows are ordered in depth from user to background. Windows in front of others obscure the)]TJ +0 -1.2222 TD +0 Tw +(latter. Operating on a window generally brings it to the top.)Tj +0 -2.7778 TD +0.1544 Tw +[(Windows are located at a certain position on the screen. Each window has a clipping region that)]TJ +0 -1.2222 TD +0 Tw +(confines all bits written to it to a region that allows a border around the window, and a title above it.)Tj +0 -2.7778 TD +0.1433 Tw +(Each window has a display stream associated with it \(see Chapter 27\), and either a window or its)Tj +0 -1.2222 TD +0.2822 Tw +[(display stream can be passed interchangeably to all system functions. There are dependencies)]TJ +ET +endstream +endobj +51 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/XObject << +/Im10 52 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +54 0 obj +<< +/Length 6723 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.2344 Tw +[(between the window and its display stream that the user should not disturb. For instance, the)]TJ +0 -1.2222 TD +0.0089 Tw +[(destination bitmap of the display stream of a window must always be the screen bitmap. The )]TJ +/TT10 1 Tf +41.7781 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0089 Tw +[( offset,)]TJ +/TT10 1 Tf +-42.3782 -1.2889 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( offset, and Clipping Region fields of the display stream should not be changed.)Tj +-0.6001 -2.8444 TD +0.3222 Tw +(Windows can be created by the user interactively, under program control, or may be created)Tj +0 -1.2222 TD +0 Tw +(automatically by the system.)Tj +0 -2.7778 TD +0.0656 Tw +[(Windows are in one of two states: "open" or "closed". In an "open" state, a window is visible on the)]TJ +0 -1.2222 TD +0.1278 Tw +(screen \(unless it is covered by other open windows or off the edge of the screen\) and accessible to)Tj +T* +0.0267 Tw +[(mouse operations. In a "closed" state, a window is not visible and not accessible to mouse operations.)]TJ +T* +0 Tw +(Any attempt to print or draw on a closed window will open it. )Tj +/TT4 1 Tf +10 0 0 10 78 426 Tm +(Window Properties)Tj +/TT8 1 Tf +9 0 0 9 78 401.34 Tm +0.0811 Tw +[(The behavior of a window is controlled by a set of "window properties." Some of these are used by)]TJ +T* +0.19 Tw +[(the system. However, any arbitrary property name may be used by a user program to associate)]TJ +T* +0.2778 Tw +[(information with a window. For many applications the user will associate the structure being)]TJ +T* +0.0278 Tw +[(displayed with its window using a property. The following functions provide for reading and setting)]TJ +T* +0 Tw +(window properties:)Tj +/TT10 1 Tf +10 0 0 10 102 335.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 335.06 Tm +(WINDOWPROP)Tj +/F1 1 Tf +10 0 0 10 162 335.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.87 335.06 Tm +(WINDOW PROP NEWVALUE)Tj +/TT10 1 Tf +10 0 0 10 272.8876 335.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 278.8885 335.06 Tm +[( )-13177.9([NoSpread Function])]TJ +-16.9876 -1.8833 TD +0.1944 Tw +(Returns the previous value of )Tj +/TT14 1 Tf +14.3072 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(s )Tj +/TT14 1 Tf +1.1461 0 TD +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.1944 Tw +[( aspect. If )]TJ +/TT14 1 Tf +5.4716 0 TD +0 Tw +(NEWVALUE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1944 Tw +[( is given, \(even if)]TJ +-31.7267 -1.2944 TD +0.0133 Tw +(given as )Tj +/TT10 1 Tf +10 0 0 10 161.3127 306.46 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 179.3157 306.46 Tm +0.0133 Tw +(\), it is stored as the new )Tj +/TT14 1 Tf +10.7452 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[( aspect. Some aspects cannot be set by the user)]TJ +-19.0695 -1.3278 TD +0.0844 Tw +[(and will generate errors. Any )]TJ +/TT14 1 Tf +14.0028 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0844 Tw +[( name that is not recognized is stored on a property)]TJ +-16.4032 -1.2889 TD +0 Tw +(list associated with the window.)Tj +/TT10 1 Tf +10 0 0 10 102 260.63 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 260.63 Tm +(WINDOWADDPROP)Tj +/F1 1 Tf +10 0 0 10 178.2 260.63 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 181.07 260.63 Tm +(WINDOW PROP ITEMTOADD FIRSTFLG)Tj +/TT10 1 Tf +10 0 0 10 343.0963 260.63 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 349.0973 260.63 Tm +[( )-10114.7([Function])]TJ +/TT10 1 Tf +10 0 0 10 126 243.63 Tm +(WINDOWADDPROP)Tj +/TT8 1 Tf +9 0 0 9 204.0127 243.63 Tm +0.1178 Tw +[( adds a new item to a window property. If )]TJ +/TT14 1 Tf +20.4543 0 TD +0 Tw +(ITEMTOADD)Tj +/TT8 1 Tf +5.4009 0 TD +0.1178 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 449.7624 243.63 Tm +0 Tw +(EQ)Tj +/TT8 1 Tf +9 0 0 9 461.7643 243.63 Tm +0.1178 Tw +[( to an)]TJ +-37.3072 -1.3333 TD +0.0956 Tw +(element of the )Tj +/TT14 1 Tf +6.8218 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0956 Tw +[( property of the window )]TJ +/TT10 1 Tf +10 0 0 10 313.3195 231.63 Tm +0 Tw +(WINDOW)Tj +/TT8 1 Tf +9 0 0 9 349.3253 231.63 Tm +0.0956 Tw +[(, nothing is added. If the current)]TJ +-24.8139 -1.3333 TD +0.2 Tw +(property is not a list, it is made a list before )Tj +/TT14 1 Tf +21.5223 0 TD +0 Tw +(ITEMTOADD)Tj +/TT8 1 Tf +5.4009 0 TD +0.2 Tw +[( added. )]TJ +/TT10 1 Tf +10 0 0 10 408.012 219.63 Tm +0 Tw +(WINDOWADDPROP)Tj +/TT8 1 Tf +9 0 0 9 126 207.63 Tm +0.0001 Tc +0.0021 Tw +(returns the previous property. If )Tj +/TT14 1 Tf +14.8278 0 TD +0 Tc +0 Tw +(FIRSTFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0003 Tc +0.0019 Tw +( is non-)Tj +/TT10 1 Tf +10 0 0 10 332.0174 207.63 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 350.0203 207.63 Tm +0.0022 Tw +(, the new item goes on the front of)Tj +-24.8912 -1.3333 TD +0.0111 Tw +[(the list; otherwise, it goes on the end of the list. If )]TJ +/TT14 1 Tf +22.2968 0 TD +0 Tw +(FIRSTFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0111 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 399.3984 195.63 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 417.4013 195.63 Tm +0.0111 Tw +[( and )]TJ +/TT14 1 Tf +2.2151 0 TD +0 Tw +(ITEMTOADD)Tj +/TT8 1 Tf +-34.593 -1.3278 TD +(is already on the list, it is moved to the front.)Tj +0 -2 TD +0.4522 Tw +(Many window properties \()Tj +/TT14 1 Tf +13.2585 0 TD +1.0867 Tw +(OPENFN, CLOSEFN)Tj +/TT8 1 Tf +10.0881 0 TD +0.4522 Tw +(, etc.\) can be a list of functions.)Tj +/TT10 1 Tf +10 0 0 10 126 154.03 Tm +0 Tw +(WINDOWADDPROP)Tj +/TT8 1 Tf +9 0 0 9 204.0127 154.03 Tm +0.3311 Tw +[( is useful for adding additional functions to a window property)]TJ +-8.6681 -1.3278 TD +0.18 Tw +[(without affecting any existing functions. Note that if the order of items in a window)]TJ +0 -1.2278 TD +0 Tw +(property is important, the list can be modified using )Tj +/TT10 1 Tf +10 0 0 10 336.0806 131.03 Tm +(WINDOWPROP)Tj +/TT8 1 Tf +9 0 0 9 396.0903 131.03 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 107.8 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 107.8 Tm +(WINDOWDELPROP)Tj +/F1 1 Tf +10 0 0 10 178.2 107.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 181.07 107.8 Tm +(WINDOW PROP ITEMTODELETE)Tj +/TT10 1 Tf +10 0 0 10 310.6911 107.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.692 107.8 Tm +[( )-13715.3([Function])]TJ +/TT10 1 Tf +10 0 0 10 126 90.8 Tm +(WINDOWDELPROP)Tj +/TT8 1 Tf +9 0 0 9 204.0127 90.8 Tm +0.0856 Tw +[( deletes )]TJ +/TT14 1 Tf +3.76 0 TD +0 Tw +(ITEMTODELETE)Tj +/TT8 1 Tf +7.2012 0 TD +0.0856 Tw +[( from the window property )]TJ +/TT14 1 Tf +12.8189 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0856 Tw +[( of )]TJ +/TT14 1 Tf +1.55 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +-36.3985 -1.3278 TD +0.09 Tw +(and returns the previous list if )Tj +/TT14 1 Tf +14.184 0 TD +0 Tw +(ITEMTODELETE)Tj +/TT8 1 Tf +7.2012 0 TD +0.09 Tw +[( was an element. If )]TJ +/TT14 1 Tf +9.3188 0 TD +0 Tw +(ITEMTODELETE)Tj +/TT8 1 Tf +7.2012 0 TD +0.09 Tw +[( was)]TJ +-37.9052 -1.2889 TD +0 Tw +(not a member of window property )Tj +/TT14 1 Tf +15.6021 0 TD +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +(, NIL is returned.)Tj +/TT4 1 Tf +10 0 0 10 78 40.31 Tm +(Creating Windows)Tj +ET +endstream +endobj +55 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +59 0 obj +<< +/Length 8882 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +5.4 -4.374 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 568.26 Tm +(CREATEW)Tj +/F1 1 Tf +10 0 0 10 193.8 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.67 568.26 Tm +(REGION TITLE BORDERSIZE NOOPENFLG)Tj +/TT10 1 Tf +10 0 0 10 374.899 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 380.9 568.26 Tm +[( )-11914.4([Function])]TJ +-22.9889 -1.8833 TD +0.0078 Tw +(Creates a new window. )Tj +/TT14 1 Tf +10.9437 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0078 Tw +[( indicates where and how large the window should be by)]TJ +-14.5443 -1.2889 TD +0.2944 Tw +[(specifying the exterior region of the window. The usable height and width of the)]TJ +0 -1.2222 TD +0.1389 Tw +(resulting window will be smaller than the height and width of the region by twice the)Tj +0 -1.2278 TD +0.0278 Tw +[(border size and further less the height of the title, if any. If )]TJ +/TT14 1 Tf +26.6008 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 457.2461 517.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 475.249 517.66 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 479.999 517.66 Tm +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 174 505.71 Tm +(is called to prompt the user for a region.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +0.9944 0 TD +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0744 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 240.614 487.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 258.6169 487.66 Tm +0.0744 Tw +[(, it is printed in the border at the top of the window. The )]TJ +/TT14 1 Tf +26.5473 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0744 Tw +[( is)]TJ +-38.9497 -1.3333 TD +0.1933 Tw +(printed using the global display stream )Tj +/TT10 1 Tf +10 0 0 10 343.2584 475.66 Tm +0 Tw +(WindowTitleDisplayStream)Tj +/TT8 1 Tf +9 0 0 9 487.2818 475.66 Tm +0.1933 Tw +[(. Thus the)]TJ +-34.8091 -1.3333 TD +0 Tw +(height of the title will be )Tj +/TT10 1 Tf +10 0 0 10 273.3164 463.66 Tm +(\(FONTPROP WindowTitleDisplayStream HEIGHT\))Tj +/TT8 1 Tf +9 0 0 9 531.3584 463.66 Tm +(.)Tj +-39.7065 -2.1056 TD +(If )Tj +/TT14 1 Tf +0.9255 0 TD +(BORDERSIZE)Tj +/TT8 1 Tf +6.001 0 TD +0.0056 Tw +[( is a number, it is used as the border size. If )]TJ +/TT14 1 Tf +19.6347 0 TD +0 Tw +(BORDERSIZE)Tj +/TT8 1 Tf +6.001 0 TD +0.0056 Tw +[( is not a number,)]TJ +-32.5622 -1.2944 TD +0 Tw +(the window will have a border )Tj +/TT10 1 Tf +10 0 0 10 299.0728 433.06 Tm +(WBorder)Tj +/TT8 1 Tf +9 0 0 9 341.0796 433.06 Tm +( \(initially 4\) bits wide.)Tj +-18.5644 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(NOOPENFLG)Tj +/TT8 1 Tf +5.4009 0 TD +( is non-)Tj +/TT10 1 Tf +10 0 0 10 260.2075 414.06 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 278.2104 414.06 Tm +(, the window will not be opened, i.e. displayed on the screen.)Tj +-11.5789 -2.1111 TD +0.1533 Tw +(The initial )Tj +/TT10 1 Tf +10 0 0 10 219.4748 395.06 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 225.4758 395.06 Tm +0.1533 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 247.9716 395.06 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 253.9726 395.06 Tm +0.1533 Tw +[( positions of the window are set to the upper left corner by calling)]TJ +/TT10 1 Tf +10 0 0 10 174 383.06 Tm +0 Tw +(MOVETOUPPERLEFT)Tj +/TT8 1 Tf +9 0 0 9 264.0146 383.06 Tm +( \(see Chapter 27\).)Tj +/TT10 1 Tf +10 0 0 10 150 359.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 359.83 Tm +(DECODE.WINDOW.ARG)Tj +/F1 1 Tf +10 0 0 10 247.8 359.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 250.67 359.83 Tm +(WHERESPEC WIDTH HEIGHT TITLE BORDER NOOPENFLG)Tj +/TT10 1 Tf +10 0 0 10 493.7095 359.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 499.7105 359.83 Tm +( )Tj +-38.1901 -1.1056 TD +([Function])Tj +2 -1.7833 TD +(This is a useful function for creating windows. )Tj +/TT14 1 Tf +21.0332 0 TD +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +( can be a )Tj +/TT10 1 Tf +10 0 0 10 448.4297 333.83 Tm +(WINDOW)Tj +/TT8 1 Tf +9 0 0 9 484.4355 333.83 Tm +(, a )Tj +/TT10 1 Tf +10 0 0 10 495.6855 333.83 Tm +(REGION)Tj +/TT8 1 Tf +9 0 0 9 531.6914 333.83 Tm +(,)Tj +-39.7435 -1.3333 TD +(a )Tj +/TT10 1 Tf +10 0 0 10 182.28 321.83 Tm +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 230.2878 321.83 Tm +0.17 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 246.3161 321.83 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 264.319 321.83 Tm +0.17 Tw +[(. If )]TJ +/TT14 1 Tf +2.1799 0 TD +0 Tw +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +0.17 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 354.8198 321.83 Tm +0 Tw +(WINDOW)Tj +/TT8 1 Tf +9 0 0 9 390.8257 321.83 Tm +0.17 Tw +[(, it is returned. In all other cases,)]TJ +/TT10 1 Tf +10 0 0 10 174 309.83 Tm +0 Tw +(CREATEW)Tj +/TT8 1 Tf +9 0 0 9 216.0068 309.83 Tm +0.1011 Tw +[( is called with the arguments )]TJ +/TT14 1 Tf +13.6057 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.3511 0 TD +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( and )]TJ +/TT14 1 Tf +2.3951 0 TD +0 Tw +(NOOPENFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.1011 Tw +[(. The )]TJ +/TT10 1 Tf +10 0 0 10 497.9859 309.83 Tm +0 Tw +(REGION)Tj +/TT8 1 Tf +9 0 0 9 174 297.83 Tm +(argument to )Tj +/TT10 1 Tf +10 0 0 10 225.2666 297.83 Tm +(CREATEW)Tj +/TT8 1 Tf +9 0 0 9 267.2734 297.83 Tm +( is determined from )Tj +/TT14 1 Tf +9.0073 0 TD +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +( as follows:)Tj +-24.7719 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +( is a )Tj +/TT10 1 Tf +10 0 0 10 248.5708 278.83 Tm +(REGION)Tj +/TT8 1 Tf +9 0 0 9 284.5766 278.83 Tm +(, it is adjusted to be on the screen, then passed to )Tj +/TT10 1 Tf +10 0 0 10 480.0718 278.83 Tm +(CREATEW)Tj +/TT8 1 Tf +9 0 0 9 522.0786 278.83 Tm +(.)Tj +-38.6754 -2.1111 TD +(If )Tj +/TT14 1 Tf +1.0355 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.1156 Tw +[( and )]TJ +/TT14 1 Tf +2.424 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1156 Tw +[( are numbers and )]TJ +/TT14 1 Tf +8.4481 0 TD +0 Tw +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +0.1156 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 409.9889 259.83 Tm +0 Tw +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 457.9967 259.83 Tm +0.1156 Tw +(, the region whose)Tj +-31.5552 -1.3278 TD +0.12 Tw +(lower left corner is )Tj +/TT14 1 Tf +9.0098 0 TD +0 Tw +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +0.12 Tw +(, whose width is )Tj +/TT14 1 Tf +7.9536 0 TD +0 Tw +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.12 Tw +[( and whose height is )]TJ +/TT14 1 Tf +9.9389 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.12 Tw +[( is)]TJ +-38.9042 -1.2944 TD +0 Tw +(adjusted to be on the screen, then passed to )Tj +/TT10 1 Tf +10 0 0 10 348.5068 236.23 Tm +(CREATEW)Tj +/TT8 1 Tf +9 0 0 9 390.5137 236.23 Tm +(.)Tj +-24.0571 -2.1111 TD +(If )Tj +/TT14 1 Tf +1.3721 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +0.4522 Tw +[( and )]TJ +/TT14 1 Tf +3.0973 0 TD +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +0.4522 Tw +[( are numbers and )]TJ +/TT14 1 Tf +9.7947 0 TD +0 Tw +(WHERESPEC)Tj +/TT8 1 Tf +5.4009 0 TD +0.4522 Tw +[( is not a )]TJ +/TT10 1 Tf +10 0 0 10 459.6958 217.23 Tm +0 Tw +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 507.7036 217.23 Tm +0.4522 Tw +(, then)Tj +/TT10 1 Tf +10 0 0 10 174 205.23 Tm +0 Tw +(GETBOXREGION)Tj +/TT8 1 Tf +9 0 0 9 246.0117 205.23 Tm +0.0756 Tw +[( is called to prompt the user for the position of a region that is )]TJ +/TT10 1 Tf +10 0 0 10 504.0545 205.23 Tm +0 Tw +(WIDTH)Tj +/TT8 1 Tf +9 0 0 9 174 193.28 Tm +(by )Tj +/TT14 1 Tf +1.3594 0 TD +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-4.96 -2.0722 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +( are not numbers, )Tj +/TT10 1 Tf +10 0 0 10 333.3984 174.63 Tm +(CREATEW)Tj +/TT8 1 Tf +9 0 0 9 375.4053 174.63 Tm +( is given )Tj +/TT10 1 Tf +10 0 0 10 410.8472 174.63 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 428.8501 174.63 Tm +( as a )Tj +/TT10 1 Tf +10 0 0 10 448.4146 174.63 Tm +(REGION)Tj +/TT8 1 Tf +9 0 0 9 484.4204 174.63 Tm +( argument.)Tj +-34.4912 -2.2478 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(WIDTH)Tj +/TT8 1 Tf +3.0005 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(HEIGHT)Tj +/TT8 1 Tf +3.6006 0 TD +( are used, they are used as interior dimensions for the )Tj +/F2 1 Tf +10 0 0 10 476.77 154.4 Tm +(window.)Tj +/TT10 1 Tf +-32.677 -2.288 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 131.52 Tm +(WINDOWP)Tj +/F1 1 Tf +10 0 0 10 193.8 131.52 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.67 131.52 Tm +(X)Tj +/TT10 1 Tf +10 0 0 10 202.0709 131.52 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 208.0718 131.52 Tm +[( )-31117.6([Function])]TJ +-3.7858 -1.8889 TD +(Returns )Tj +/TT14 1 Tf +3.7271 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( if )Tj +/TT14 1 Tf +1.124 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is a window, )Tj +/TT10 1 Tf +10 0 0 10 283.9248 114.52 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 301.9277 114.52 Tm +( otherwise.)Tj +/TT4 1 Tf +10 0 0 10 126 87.23 Tm +(Opening and Closing Windows)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 65.29 Tm +(OPENWP)Tj +/F1 1 Tf +10 0 0 10 188.4 65.29 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.27 65.29 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 223.6753 65.29 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 229.6762 65.29 Tm +[( )-28717.1([Function])]TJ +-6.1863 -1.8889 TD +(Returns )Tj +/TT14 1 Tf +3.7271 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(, if )Tj +/TT14 1 Tf +1.374 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( is an open window \(has not been closed\); )Tj +/TT10 1 Tf +10 0 0 10 453.167 48.29 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 471.1699 48.29 Tm +( otherwise.)Tj +ET +endstream +endobj +60 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +62 0 obj +<< +/Length 7824 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-13)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-30.6 -4.251 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 569.49 Tm +(OPENWINDOWS)Tj +/TT10 1 Tf +10 0 0 10 167.4 569.49 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 173.401 569.49 Tm +[( )-29636.6([Function])]TJ +-5.2668 -1.8833 TD +(Returns a list of all open windows.)Tj +/TT10 1 Tf +10 0 0 10 102 530.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 530.26 Tm +(OPENW)Tj +/F1 1 Tf +10 0 0 10 135 530.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 137.87 530.26 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 170.2753 530.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 176.2762 530.26 Tm +[( )-29317.1([Function])]TJ +-5.5862 -1.8889 TD +(If )Tj +/TT14 1 Tf +1.1055 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1856 Tw +[( is a closed window, )]TJ +/TT10 1 Tf +10 0 0 10 259.5678 513.26 Tm +0 Tw +(OPENW)Tj +/TT8 1 Tf +9 0 0 9 289.5727 513.26 Tm +0.1856 Tw +[( calls the function or functions on the window)]TJ +-18.1748 -1.3333 TD +0 Tw +(property )Tj +/TT10 1 Tf +10 0 0 10 164.7847 501.26 Tm +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 200.7906 501.26 Tm +0.16 Tw +[( of )]TJ +/TT14 1 Tf +1.6989 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.16 Tw +[(, if any. If one of the )]TJ +/TT10 1 Tf +10 0 0 10 343.7526 501.26 Tm +0 Tw +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 379.7585 501.26 Tm +0.16 Tw +(s is the atom )Tj +/TT10 1 Tf +10 0 0 10 437.5453 501.26 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 467.5502 501.26 Tm +0.16 Tw +(, the)Tj +-37.95 -1.3278 TD +0.1111 Tw +[(window will not be opened. Otherwise the window is placed on the occlusion stack of)]TJ +0 -1.2222 TD +0.1944 Tw +[(windows and its contents displayed on the screen. If )]TJ +/TT14 1 Tf +25.6105 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1944 Tw +[( is an open window, it)]TJ +-29.211 -1.2944 TD +0 Tw +(returns )Tj +/TT10 1 Tf +10 0 0 10 157.0869 466.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 175.0898 466.66 Tm +(. )Tj +/TT10 1 Tf +10 0 0 10 102 443.43 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 443.43 Tm +(CLOSEW)Tj +/F1 1 Tf +10 0 0 10 140.4 443.43 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 143.27 443.43 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 175.6752 443.43 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +[( )-25062.4([Function])]TJ +/TT10 1 Tf +-5.5676 -1.823 TD +(CLOSEW)Tj +/F2 1 Tf +3.6006 0 TD +0.278 Tw +[( calls the function or functions on)]TJ +/TT8 1 Tf +9 0 0 9 332.7559 425.2 Tm +0.25 Tw +[( the window property )]TJ +/TT10 1 Tf +10 0 0 10 431.6152 425.2 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 473.6221 425.2 Tm +0.25 Tw +[( of)]TJ +/TT14 1 Tf +-38.6247 -1.3333 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0556 Tw +[(, if any. If one of the )]TJ +/TT10 1 Tf +10 0 0 10 246.1518 413.2 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 288.1587 413.2 Tm +0.0556 Tw +(s is the atom )Tj +/TT10 1 Tf +10 0 0 10 342.1855 413.2 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 372.1904 413.2 Tm +0.0556 Tw +[( or returns the atom )]TJ +/TT10 1 Tf +10 0 0 10 456.0244 413.2 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 126 401.2 Tm +0.2833 Tw +(as a value, )Tj +/TT10 1 Tf +10 0 0 10 182.2063 401.2 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 218.2122 401.2 Tm +0.2833 Tw +[( returns without doing anything further. Otherwise, )]TJ +/TT10 1 Tf +10 0 0 10 449.9628 401.2 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 126 389.25 Tm +(removes )Tj +/TT14 1 Tf +4.0872 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0667 Tw +[( from the window stack and restores the bits it is obscuring. If )]TJ +/TT14 1 Tf +28.7131 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +-36.4009 -1.2889 TD +0.02 Tw +(was closed, )Tj +/TT14 1 Tf +5.3422 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.02 Tw +[( is returned as the value. If it was not closed, \(for example because its)]TJ +/TT10 1 Tf +10 0 0 10 126 366 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 168.0068 366 Tm +( returned the atom )Tj +/TT10 1 Tf +10 0 0 10 244.6167 366 Tm +(DONT)Tj +/TT8 1 Tf +9 0 0 9 274.6216 366 Tm +(\), )Tj +/TT10 1 Tf +10 0 0 10 282.1187 366 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 300.1216 366 Tm +( is returned as the value.)Tj +/TT14 1 Tf +-19.3468 -2.1056 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1078 Tw +[( can be restored in the same place with the same contents \(reopened\) by calling)]TJ +/TT10 1 Tf +10 0 0 10 126 335.4 Tm +0 Tw +(OPENW)Tj +/TT8 1 Tf +9 0 0 9 156.0049 335.4 Tm +( or by using it as the source of a display operation.)Tj +/TT12 1 Tf +-6.0005 -2.4389 TD +(OPENFN)Tj +/TT8 1 Tf +3.6 0 TD +[( )-29883.3([Window Property])]TJ +-0.9333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 143.4444 296.8 Tm +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 179.4503 296.8 Tm +0.0144 Tw +[( window property can be a single function or a list of functions. If one of the)]TJ +/TT10 1 Tf +10 0 0 10 126 284.8 Tm +0 Tw +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 162.0058 284.8 Tm +0.0467 Tw +(s is the atom )Tj +/TT10 1 Tf +10 0 0 10 215.7127 284.8 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 245.7176 284.8 Tm +0.0467 Tw +[(, the window will not be opened. Otherwise, the )]TJ +/TT10 1 Tf +10 0 0 10 446.2037 284.8 Tm +0 Tw +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 482.2096 284.8 Tm +(s)Tj +-39.5788 -1.3333 TD +0.2178 Tw +(are called after a window has been opened by )Tj +/TT10 1 Tf +10 0 0 10 327.9334 272.8 Tm +0 Tw +(OPENW)Tj +/TT8 1 Tf +9 0 0 9 357.9383 272.8 Tm +0.2178 Tw +(, with the window as a single)Tj +-25.7709 -1.3278 TD +0 Tw +(argument.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(CLOSEFN)Tj +/TT8 1 Tf +4.2 0 TD +[( )-29283.3([Window Property])]TJ +-1.5333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.5344 223.2 Tm +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 186.5413 223.2 Tm +0.1356 Tw +[( window property can be a single function or a list of functions that are)]TJ +-6.7268 -1.3333 TD +0.0433 Tw +(called just before a window is closed by )Tj +/TT10 1 Tf +10 0 0 10 289.3578 211.2 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 325.3636 211.2 Tm +0.0433 Tw +[(. The function\(s\) will be called with the)]TJ +-22.1515 -1.3333 TD +0.13 Tw +[(window as a single argument. If any of the )]TJ +/TT10 1 Tf +10 0 0 10 312.2376 199.2 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 354.2444 199.2 Tm +0.13 Tw +(s are the atom )Tj +/TT10 1 Tf +10 0 0 10 416.8839 199.2 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 446.8888 199.2 Tm +0.13 Tw +(, or if the)Tj +-35.6543 -1.3333 TD +0.1744 Tw +(value returned by any of the )Tj +/TT10 1 Tf +10 0 0 10 250.816 187.2 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 292.8228 187.2 Tm +0.1744 Tw +(s is the atom )Tj +/TT10 1 Tf +10 0 0 10 351.1297 187.2 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 381.1346 187.2 Tm +0.1744 Tw +(, the window will not be)Tj +-28.3483 -1.3278 TD +0 Tw +(closed.)Tj +2.6667 -2.0056 TD +0.6512 Tw +[(Note: If )549(the )]TJ +/TT10 1 Tf +10 0 0 10 204.8542 157.2 Tm +0 Tw +(CAR)Tj +/TT8 1 Tf +9 0 0 9 222.8571 157.2 Tm +0.1022 Tw +[( of the )]TJ +/TT10 1 Tf +10 0 0 10 252.7621 157.2 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 294.7689 157.2 Tm +0.1022 Tw +[( list is a )]TJ +/TT10 1 Tf +10 0 0 10 330.3708 157.2 Tm +0 Tw +(LAMBDA)Tj +/TT8 1 Tf +9 0 0 9 366.3767 157.2 Tm +0.1022 Tw +[( word, it is treated as a)]TJ +-20.7085 -1.3278 TD +0 Tw +(single function.)Tj +-3.3333 -2.0056 TD +[(Note: )-401.2(A )]TJ +/TT10 1 Tf +10 0 0 10 189.2505 127.2 Tm +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 231.2573 127.2 Tm +( should not call )Tj +/TT10 1 Tf +10 0 0 10 294.5869 127.2 Tm +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 330.5927 127.2 Tm +( on its argument.)Tj +/TT4 1 Tf +10 0 0 10 78 99.91 Tm +(Redisplaying Windows)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 77.97 Tm +(REDISPLAYW)Tj +/F1 1 Tf +10 0 0 10 162 77.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.87 77.97 Tm +(WINDOW REGION ALWAYSFLG)Tj +/TT10 1 Tf +10 0 0 10 289.0902 77.97 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 295.0912 77.97 Tm +[( )-16115.4([Function])]TJ +-18.7879 -1.8889 TD +0.2322 Tw +(Redisplay the region )Tj +/TT14 1 Tf +10.1039 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.2322 Tw +[( of the window )]TJ +/TT14 1 Tf +7.8928 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2322 Tw +[(. If )]TJ +/TT14 1 Tf +2.3666 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.2322 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 421.5985 60.97 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 439.6015 60.97 Tm +0.2322 Tw +(, the entire)Tj +-34.8446 -1.3278 TD +0 Tw +(window is redisplayed.)Tj +ET +endstream +endobj +63 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +65 0 obj +<< +/Length 9590 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +(If )Tj +/TT14 1 Tf +0.9977 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0778 Tw +[( doesnt have a )]TJ +/TT10 1 Tf +10 0 0 10 280.0288 569.49 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 334.0376 569.49 Tm +0.0778 Tw +(, the action depends on the value of )Tj +/TT14 1 Tf +16.567 0 TD +0 Tw +(ALWAYSFLG)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +-39.7499 -1.3333 TD +(If )Tj +/TT14 1 Tf +1.0521 0 TD +(ALWAYSFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.1322 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 245.3908 557.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 263.3937 557.49 Tm +(, )Tj +/TT14 1 Tf +0.6322 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1322 Tw +[( will not change and the message )]TJ +/TT10 1 Tf +10 0 0 10 443.7292 557.49 Tm +0.316 Tw +("Window has no)Tj +-26.9729 -1.2 TD +0.305 Tw +[(REPAINTFN. Cant redisplay.")]TJ +/TT8 1 Tf +9 0 0 9 357.1783 545.49 Tm +0.1267 Tw +[( will be printed in the prompt window. If)]TJ +/TT14 1 Tf +-20.3531 -1.3333 TD +0 Tw +(ALWAYSFLG)Tj +/TT8 1 Tf +5.4009 0 TD +( is non-)Tj +/TT10 1 Tf +10 0 0 10 251.9282 533.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 269.9312 533.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 274.4312 533.49 Tm +(REDISPLAYW)Tj +/TT8 1 Tf +9 0 0 9 334.4409 533.49 Tm +( acts as if REPAINTFN was )Tj +/TT10 1 Tf +10 0 0 10 445.394 533.49 Tm +(NILL)Tj +/TT8 1 Tf +9 0 0 9 469.3979 533.49 Tm +(.)Tj +/TT12 1 Tf +-35.4887 -2.4389 TD +(REPAINTFN)Tj +/TT8 1 Tf +5.4 0 TD +[( )-28083.3([Window Property])]TJ +-2.7333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 191.7344 494.89 Tm +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 245.7432 494.89 Tm +0.0467 Tw +[( window property can be a single function or a list of functions that are)]TJ +-7.9715 -1.3333 TD +0.1356 Tw +(called to repaint parts of the window by )Tj +/TT10 1 Tf +10 0 0 10 345.593 482.89 Tm +0 Tw +(REDISPLAYW)Tj +/TT8 1 Tf +9 0 0 9 405.6028 482.89 Tm +0.1356 Tw +[(. The )]TJ +/TT10 1 Tf +10 0 0 10 433.3272 482.89 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 487.336 482.89 Tm +0.1356 Tw +(s are called)Tj +-34.8151 -1.3278 TD +0.2256 Tw +(with two arguments: the window and the region in the coordinates of the windows)Tj +0 -1.2278 TD +0.0189 Tw +[(display stream of the area that should be repainted. Before the )]TJ +/TT10 1 Tf +10 0 0 10 427.9345 459.89 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 481.9433 459.89 Tm +0.0189 Tw +[( is called, the)]TJ +-34.2159 -1.3278 TD +0.03 Tw +(clipping region of the window is set to clip all display operations to the area of interest so)Tj +0 -1.2278 TD +0.2089 Tw +(that the )Tj +/TT10 1 Tf +10 0 0 10 210.3542 436.89 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 264.363 436.89 Tm +0.2089 Tw +[( can display the entire window contents and the results will be)]TJ +-10.0403 -1.3278 TD +0 Tw +(appropriately clipped.)Tj +2.6667 -2.0056 TD +(Note: )Tj +/TT10 1 Tf +10 0 0 10 228 406.89 Tm +(CLEARW)Tj +/TT8 1 Tf +9 0 0 9 264.0058 406.89 Tm +0.2622 Tw +[( \(see the Miscellaneous Window Functions section below\))]TJ +-4.0006 -1.3333 TD +0.1456 Tw +(should not be used in )Tj +/TT10 1 Tf +10 0 0 10 322.5944 394.89 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 376.6032 394.89 Tm +0.1456 Tw +(s because it resets the windows)Tj +-16.5115 -1.3333 TD +0.0767 Tw +[(coordinate system. If a )]TJ +/TT10 1 Tf +10 0 0 10 325.783 382.89 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 379.7918 382.89 Tm +0.0767 Tw +[( wants to clear its region first, it)]TJ +-16.8658 -1.3333 TD +0 Tw +(should use )Tj +/TT10 1 Tf +10 0 0 10 273.5625 370.89 Tm +(DSPFILL)Tj +/TT8 1 Tf +9 0 0 9 315.5693 370.89 Tm +( \(see Chapter 27\).)Tj +/TT4 1 Tf +10 0 0 10 126 343.6 Tm +(Reshaping Windows)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 321.66 Tm +(SHAPEW)Tj +/F1 1 Tf +10 0 0 10 188.4 321.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.27 321.66 Tm +(WINDOW NEWREGION)Tj +/TT10 1 Tf +10 0 0 10 277.6841 321.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 283.685 321.66 Tm +[( )-22716.1([Function])]TJ +-12.1872 -1.8889 TD +(Reshapes )Tj +/TT14 1 Tf +4.4723 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +[(. If the window property )]TJ +/TT14 1 Tf +11.7976 0 TD +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.0656 Tw +[( is the atom )]TJ +/TT10 1 Tf +10 0 0 10 452.0149 304.66 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 482.0198 304.66 Tm +0.0656 Tw +[( or a list that)]TJ +-34.2244 -1.3333 TD +0.1433 Tw +(contains the atom )Tj +/TT10 1 Tf +10 0 0 10 250.6522 292.66 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 280.6571 292.66 Tm +0.1433 Tw +(, a message is printed in the prompt window, )Tj +/TT14 1 Tf +21.5947 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1433 Tw +[( is not)]TJ +-37.0461 -1.3333 TD +0.0067 Tw +(changed, and )Tj +/TT10 1 Tf +10 0 0 10 229.891 280.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 247.8939 280.66 Tm +0.0067 Tw +[( is returned. Otherwise, )]TJ +/TT10 1 Tf +10 0 0 10 346.5743 280.66 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 400.5831 280.66 Tm +0.0067 Tw +[( window property can be a single)]TJ +-25.1759 -1.3278 TD +0.0878 Tw +(function or a list of functions that are called when a window is reshaped, to reformat or)Tj +0 -1.2278 TD +0.0144 Tw +[(redisplay the window contents \(see below\). If the )]TJ +/TT10 1 Tf +10 0 0 10 375.42 257.66 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 429.4288 257.66 Tm +0.0144 Tw +[( window property is )]TJ +/TT10 1 Tf +10 0 0 10 513.7568 257.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 531.7598 257.66 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 245.66 Tm +(RESHAPEBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 282.0175 245.66 Tm +( is the default.)Tj +-12.002 -2.1111 TD +0.0056 Tw +(If the region )Tj +/TT14 1 Tf +5.6729 0 TD +0 Tw +(NEWREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0056 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 284.6978 226.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 302.7007 226.66 Tm +0.0056 Tw +(, it prompts for a region with )Tj +/TT10 1 Tf +10 0 0 10 420.4945 226.66 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 474.5033 226.66 Tm +0.0056 Tw +[(. When calling)]TJ +/TT10 1 Tf +10 0 0 10 174 214.66 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 228.0088 214.66 Tm +0.06 Tw +(, the function )Tj +/TT10 1 Tf +10 0 0 10 284.4769 214.66 Tm +0 Tw +(MINIMUMWINDOWSIZE)Tj +/TT8 1 Tf +9 0 0 9 386.4935 214.66 Tm +0.06 Tw +[( is called to determine the minimum)]TJ +-23.6104 -1.3333 TD +0.0167 Tw +(height and width of the window, the function )Tj +/TT10 1 Tf +10 0 0 10 359.3528 202.66 Tm +0 Tw +(WINDOWREGION)Tj +/TT8 1 Tf +9 0 0 9 431.3645 202.66 Tm +0.0167 Tw +[( is called to get the region)]TJ +-28.5961 -1.3333 TD +0.1133 Tw +(passed as the )Tj +/TT10 1 Tf +10 0 0 10 231.9565 190.66 Tm +0 Tw +(OLDREGION)Tj +/TT8 1 Tf +9 0 0 9 285.9652 190.66 Tm +0.1133 Tw +[( argument, the window property )]TJ +/TT10 1 Tf +10 0 0 10 424.3426 190.66 Tm +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 490.3533 190.66 Tm +0.1133 Tw +[( is used as)]TJ +-35.1504 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 189.2549 178.66 Tm +(NEWREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 255.2656 178.66 Tm +0.0578 Tw +[( argument and )]TJ +/TT14 1 Tf +6.9404 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0578 Tw +[( as the )]TJ +/TT10 1 Tf +10 0 0 10 379.244 178.66 Tm +0 Tw +(NEWREGIONFNARG)Tj +/TT8 1 Tf +9 0 0 9 463.2576 178.66 Tm +0.0578 Tw +[( argument. If the)]TJ +-32.1397 -1.3333 TD +0.1444 Tw +(window property )Tj +/TT10 1 Tf +10 0 0 10 249.4745 166.66 Tm +0 Tw +(INITCORNERSFN)Tj +/TT8 1 Tf +9 0 0 9 327.4872 166.66 Tm +0.1444 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 359.4075 166.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 377.4104 166.66 Tm +0.1444 Tw +(, it is applied to the window, and the)Tj +-22.6012 -1.3333 TD +0.03 Tw +(value is passed as the )Tj +/TT10 1 Tf +10 0 0 10 263.1219 154.66 Tm +0 Tw +(INITCORNERS)Tj +/TT8 1 Tf +9 0 0 9 329.1327 154.66 Tm +0.03 Tw +[( argument to )]TJ +/TT10 1 Tf +10 0 0 10 383.4593 154.66 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 437.4681 154.66 Tm +0.03 Tw +(, to determine the initial)Tj +-29.2742 -1.3278 TD +0.18 Tw +[(size of the "ghost region." These window properties allow the window to specify the)]TJ +0 -1.2278 TD +0 Tw +(regions used for interactive calls to )Tj +/TT10 1 Tf +10 0 0 10 314.9722 131.66 Tm +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 350.978 131.66 Tm +(.)Tj +-19.6642 -2.1111 TD +0.3556 Tw +(If the region )Tj +/TT14 1 Tf +6.7229 0 TD +0 Tw +(NEWREGION)Tj +/TT8 1 Tf +5.4009 0 TD +0.3556 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 310.3977 112.66 Tm +0 Tw +(REGION)Tj +/TT8 1 Tf +9 0 0 9 346.4036 112.66 Tm +0.3556 Tw +[( and its )]TJ +/TT10 1 Tf +10 0 0 10 387.3586 112.66 Tm +0 Tw +(WIDTH)Tj +/TT8 1 Tf +9 0 0 9 417.3635 112.66 Tm +0.3556 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 436.7318 112.66 Tm +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +9 0 0 9 472.7376 112.66 Tm +0.3556 Tw +[( less than the)]TJ +-33.1931 -1.3333 TD +0.4011 Tw +(minimums returned by calling the function )Tj +/TT10 1 Tf +10 0 0 10 369.9734 100.66 Tm +0 Tw +(MINIMUMWINDOWSIZE)Tj +/TT8 1 Tf +9 0 0 9 471.9901 100.66 Tm +0.4011 Tw +(, they will be)Tj +-33.11 -1.3278 TD +0 Tw +(increased to the minimums.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +1.161 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2411 Tw +[( has a window property )]TJ +/TT10 1 Tf +10 0 0 10 325.3818 70.66 Tm +0 Tw +(DOSHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 379.3906 70.66 Tm +0.2411 Tw +(, it is called, passing it )Tj +/TT14 1 Tf +11.3895 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2411 Tw +[( and)]TJ +/TT10 1 Tf +10 0 0 10 174 58.66 Tm +0 Tw +(NEWREGION)Tj +/TT8 1 Tf +9 0 0 9 228.0088 58.66 Tm +0.2511 Tw +[( \(or the region returned by )]TJ +/TT10 1 Tf +10 0 0 10 349.4765 58.66 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 403.4853 58.66 Tm +0.2511 Tw +[(\). If )]TJ +/TT14 1 Tf +2.7563 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2511 Tw +[( does not have a)]TJ +/TT10 1 Tf +10 0 0 10 174 46.66 Tm +0 Tw +(DOSHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 228.0088 46.66 Tm +0.0578 Tw +[( window property, the function )]TJ +/TT10 1 Tf +10 0 0 10 358.3314 46.66 Tm +0 Tw +(SHAPEW1)Tj +/TT8 1 Tf +9 0 0 9 400.3383 46.66 Tm +0.0578 Tw +[( is called to reshape the window.)]TJ +ET +endstream +endobj +66 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +68 0 obj +<< +/Length 7381 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-15)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-28.2 -4.251 TD +(DOSHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 180.0088 569.49 Tm +0.2 Tw +(s are provided to implement window groups and few users should ever)Tj +-6.001 -1.3333 TD +0.3978 Tw +[(write them. They are tricky to write and must call )]TJ +/TT10 1 Tf +10 0 0 10 367.1549 557.49 Tm +0 Tw +(SHAPEW1)Tj +/TT8 1 Tf +9 0 0 9 409.1617 557.49 Tm +0.3978 Tw +[( eventually. The)]TJ +/TT10 1 Tf +10 0 0 10 126 545.49 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 180.0088 545.49 Tm +( window property is a simpler hook into reshape operations.)Tj +/TT10 1 Tf +10 0 0 10 102 522.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 522.26 Tm +(SHAPEW1)Tj +/F1 1 Tf +10 0 0 10 145.8 522.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.67 522.26 Tm +(WINDOW REGION)Tj +/TT10 1 Tf +10 0 0 10 218.8814 522.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 224.8824 522.26 Tm +[( )-23916.4([Function])]TJ +-10.9869 -1.8833 TD +(Changes )Tj +/TT14 1 Tf +4.3009 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2189 Tw +(s size and position on the screen to be )Tj +/TT14 1 Tf +19.1375 0 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.2189 Tw +[(. After clearing the)]TJ +-30.6396 -1.2944 TD +0.3811 Tw +(region on the screen, it calls the windows )Tj +/TT10 1 Tf +10 0 0 10 322.3745 493.66 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 376.3833 493.66 Tm +0.3811 Tw +(, if any, passing it three)Tj +-27.8204 -1.3278 TD +0.1356 Tw +(arguments: )Tj +/TT14 1 Tf +5.7692 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1356 Tw +[(; a bitmap that contains )]TJ +/TT14 1 Tf +11.6468 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1356 Tw +(s previous screen image; and the)Tj +-24.6172 -1.2889 TD +0 Tw +(region of )Tj +/TT14 1 Tf +4.228 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(s old image within the bitmap.)Tj +/TT12 1 Tf +-10.4953 -2.4 TD +(RESHAPEFN)Tj +/TT8 1 Tf +5.4 0 TD +[( )-28083.3([Window Property])]TJ +-2.7333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 143.7344 431.86 Tm +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 197.7432 431.86 Tm +0.0467 Tw +[( window property can be a single function or a list of functions that are)]TJ +-7.9715 -1.3333 TD +0.1056 Tw +(called when a window is reshaped by )Tj +/TT10 1 Tf +10 0 0 10 285.0699 419.86 Tm +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 321.0758 419.86 Tm +0.1056 Tw +[(. If the )]TJ +/TT10 1 Tf +10 0 0 10 354.64 419.86 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 408.6487 419.86 Tm +0.1056 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 421.4823 419.86 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 451.4872 419.86 Tm +0.1056 Tw +[( or a list)]TJ +-36.1652 -1.3333 TD +0 Tw +(containing )Tj +/TT10 1 Tf +10 0 0 10 172.5817 407.86 Tm +(DONT)Tj +/TT8 1 Tf +9 0 0 9 202.5866 407.86 Tm +0.2256 Tw +[(, the window will not be reshaped. Otherwise, the function\(s\) are)]TJ +-8.5096 -1.3278 TD +0.1089 Tw +(called after the window has been reshaped, its coordinate system readjusted to the new)Tj +0 -1.2222 TD +0.3644 Tw +[(position, the title and border displayed, and the interior filled with texture. The)]TJ +/TT10 1 Tf +10 0 0 10 126 373.86 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 180.0088 373.86 Tm +0.49 Tw +[( should display any additional information needed to complete the)]TJ +-6.001 -1.3333 TD +0.1556 Tw +[(windows image in the new position and shape. The )]TJ +/TT10 1 Tf +10 0 0 10 352.1592 361.86 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 406.168 361.86 Tm +0.1556 Tw +[( is called with four)]TJ +-31.1298 -1.3278 TD +0.1056 Tw +(arguments: \(1\) the window in its reshaped form, \(2\) a bitmap with the image of the old)Tj +0 -1.2222 TD +0.04 Tw +(window in its old shape, and \(3\) the region within the bitmap that contains the windows)Tj +T* +0.1544 Tw +[(old image, and \(4\) the region of the screen previously occupied by this window. This)]TJ +T* +0.5044 Tw +(function is provided so that users can reformat window contents or whatever.)Tj +/TT10 1 Tf +10 0 0 10 126 305.86 Tm +0 Tw +(RESHAPEBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 234.0175 305.86 Tm +0.4567 Tw +[( \(below\) is the default and should be useful for many)]TJ +-12.002 -1.3278 TD +0 Tw +(windows.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(NEWREGIONFN)Tj +/TT8 1 Tf +6.6 0 TD +[( )-26883.3([Window Property])]TJ +-3.9333 -1.85 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 137.7493 256.26 Tm +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 173.7551 256.26 Tm +0.3856 Tw +[( calls )]TJ +/TT10 1 Tf +10 0 0 10 202.7425 256.26 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 256.7513 256.26 Tm +0.3856 Tw +[( to prompt the user for a region, the value of the)]TJ +/TT10 1 Tf +10 0 0 10 126 244.26 Tm +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 192.0107 244.26 Tm +0.4689 Tw +[( window property is passed as the )]TJ +/TT10 1 Tf +10 0 0 10 360.2553 244.26 Tm +0 Tw +(NEWREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 426.2661 244.26 Tm +0.4689 Tw +[( argument to)]TJ +/TT10 1 Tf +10 0 0 10 126 232.26 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 180.0088 232.26 Tm +(.)Tj +/TT12 1 Tf +-8.6676 -2.4389 TD +(INITCORNERSFN)Tj +/TT8 1 Tf +7.8 0 TD +[( )-25683.3([Window Property])]TJ +-5.1333 -1.85 TD +0.0622 Tw +(If this window property is non-)Tj +/TT10 1 Tf +10 0 0 10 253.8815 193.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 271.8845 193.66 Tm +0.0622 Tw +(, it should be a function of one argument, a window,)Tj +-16.2094 -1.3333 TD +0.1467 Tw +(that returns a list specifying the initial corners of a "ghost region" of the form \()Tj +/TT10 1 Tf +10 0 0 10 455.9572 181.66 Tm +0 Tw +(BASEX)Tj +-32.9957 -1.2 TD +0.086 Tw +(BASEY OPPX OPPY\))Tj +/TT8 1 Tf +9 0 0 9 223.7356 169.66 Tm +0.0356 Tw +(, where \()Tj +/TT10 1 Tf +10 0 0 10 259.0441 169.66 Tm +0.086 Tw +(BASEX, BASEY\))Tj +/TT8 1 Tf +9 0 0 9 337.9167 169.66 Tm +0.0356 Tw +[( describes the anchored corner of the)]TJ +-23.5463 -1.3333 TD +0.0322 Tw +(box, and )Tj +/TT10 1 Tf +10 0 0 10 163.1029 157.66 Tm +0.078 Tw +(\(OPPX, OPPY\))Tj +/TT8 1 Tf +9 0 0 9 235.8947 157.66 Tm +0.0322 Tw +[( describes the trackable corner. If )]TJ +/TT10 1 Tf +10 0 0 10 373.3026 157.66 Tm +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 409.3084 157.66 Tm +0.0322 Tw +[( calls )]TJ +/TT10 1 Tf +10 0 0 10 431.9358 157.66 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 126 145.71 Tm +0.2233 Tw +(to prompt the user for a region, this function is applied to the window, and the list)Tj +0 -1.2278 TD +0.0267 Tw +(returned is passed as the )Tj +/TT10 1 Tf +10 0 0 10 227.8611 134.66 Tm +0 Tw +(INITCORNERS)Tj +/TT8 1 Tf +9 0 0 9 293.8719 134.66 Tm +0.0267 Tw +[( argument to )]TJ +/TT10 1 Tf +10 0 0 10 348.1085 134.66 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 402.1172 134.66 Tm +0.0267 Tw +(, to specify the initial)Tj +-30.6797 -1.3278 TD +0 Tw +(ghost region.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(DOSHAPEFN)Tj +/TT8 1 Tf +5.4 0 TD +[( )-28083.3([Window Property])]TJ +-2.7333 -1.85 TD +0.2233 Tw +(If this window property is non-)Tj +/TT10 1 Tf +10 0 0 10 261.1315 85.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 279.1345 85.06 Tm +0.2233 Tw +(, it is called by )Tj +/TT10 1 Tf +10 0 0 10 348.1986 85.06 Tm +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 384.2045 85.06 Tm +0.2233 Tw +[( to reshape the window)]TJ +-28.6894 -1.3333 TD +0 Tw +(\(instead of )Tj +/TT10 1 Tf +10 0 0 10 170.3232 73.06 Tm +(SHAPEW1)Tj +/TT8 1 Tf +9 0 0 9 212.33 73.06 Tm +(\). It is called with two arguments: the window and the new region.)Tj +/TT10 1 Tf +10 0 0 10 102 49.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 49.83 Tm +(RESHAPEBYREPAINTFN)Tj +/F1 1 Tf +10 0 0 10 205.2 49.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 208.07 49.83 Tm +(WINDOW OLDIMAGE IMAGEREGION OLDSCREENREGION)Tj +/TT10 1 Tf +10 0 0 10 440.3078 49.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 446.3088 49.83 Tm +( )Tj +-37.5899 -1.1056 TD +([Function])Tj +ET +endstream +endobj +69 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +71 0 obj +<< +/Length 8680 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.0022 Tw +(This the default window )Tj +/TT10 1 Tf +10 0 0 10 274.3192 569.49 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 328.328 569.49 Tm +0.0022 Tw +(. )Tj +/TT14 1 Tf +0.7544 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0001 Tc +0.0021 Tw +( is a window that has been reshaped from)Tj +-21.5026 -1.3333 TD +0 Tc +0.1811 Tw +(the screen region )Tj +/TT14 1 Tf +8.3324 0 TD +0 Tw +(OLDSCREENREGION)Tj +/TT8 1 Tf +9.0015 0 TD +0.1811 Tw +[( to its new region \(available via )]TJ +/TT10 1 Tf +10 0 0 10 468.0124 557.49 Tm +0 Tw +(\(WINDOWPROP)Tj +-29.4012 -1.2 TD +0.288 Tw +(WINDOW REGION\))Tj +/TT8 1 Tf +9 0 0 9 266.8946 545.49 Tm +0.12 Tw +(\). )Tj +/TT14 1 Tf +1.323 0 TD +0 Tw +(OLDIMAGE)Tj +/TT8 1 Tf +4.8008 0 TD +0.12 Tw +[( is a bitmap that contains the image of the window)]TJ +-16.4454 -1.3278 TD +(from its previous location. )Tj +/TT14 1 Tf +12.7274 0 TD +0 Tw +(IMAGEREGION)Tj +/TT8 1 Tf +6.6011 0 TD +0.12 Tw +[( is the region within )]TJ +/TT14 1 Tf +9.7074 0 TD +0 Tw +(OLDIMAGE)Tj +/TT8 1 Tf +4.8008 0 TD +0.12 Tw +[( that contains)]TJ +-33.8367 -1.2889 TD +0 Tw +(the old image.)Tj +/TT10 1 Tf +10 0 0 10 174 503.89 Tm +(RESHAPEBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 282.0175 503.89 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 285.0175 503.89 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 321.0234 503.89 Tm +0.0833 Tw +[(s the old region contents into the new region. If the)]TJ +-16.3359 -1.3278 TD +0.0178 Tw +(new shape is larger in either or both dimensions, the newly exposed areas are redisplayed)Tj +0 -1.2278 TD +0.0922 Tw +(via calls )Tj +/TT14 1 Tf +3.9901 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(s )Tj +/TT10 1 Tf +10 0 0 10 251.7112 480.89 Tm +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 305.72 480.89 Tm +0.0922 Tw +[( window property. )]TJ +/TT10 1 Tf +10 0 0 10 388.6645 480.89 Tm +0 Tw +(RESHAPEBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 496.6821 480.89 Tm +0.0922 Tw +[( may call)]TJ +-35.8536 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 188.7348 468.89 Tm +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 242.7436 468.89 Tm +( up to four times during a single reshape.)Tj +-7.6382 -2.1056 TD +0.1889 Tw +[(The choice of which areas of the window to remove or extend is done as follows. If)]TJ +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.3444 Tw +(s new region shares an edge with )Tj +/TT10 1 Tf +10 0 0 10 365.263 438.89 Tm +0 Tw +(OLDSCREENREGION)Tj +/TT8 1 Tf +9 0 0 9 455.2776 438.89 Tm +0.3444 Tw +(, that edge of the)Tj +-31.2531 -1.3278 TD +0.0489 Tw +(window image will remain fixed and any addition or reduction in that dimension will be)Tj +0 -1.2278 TD +0.2011 Tw +[(performed on the opposite side. If )]TJ +/TT14 1 Tf +16.9332 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2011 Tw +[( has an )]TJ +/TT10 1 Tf +10 0 0 10 394.2748 415.89 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 430.2806 415.89 Tm +0.2011 Tw +[( property and the newly)]TJ +-28.4756 -1.3333 TD +0.0289 Tw +(exposed window area is outside of it, any extra will be added so as to show )Tj +/TT10 1 Tf +10 0 0 10 479.8841 403.89 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 515.89 403.89 Tm +0.0289 Tw +[( that)]TJ +-37.9878 -1.3333 TD +0.0589 Tw +[(was previously not visible. An exception to these rules is that the current )]TJ +/TT10 1 Tf +10 0 0 10 475.2296 391.89 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 481.2305 391.89 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 483.4805 391.89 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 489.4815 391.89 Tm +0.0589 Tw +[( position is)]TJ +-35.0535 -1.3278 TD +0 Tw +(kept visible, if it was visible before the reshape.)Tj +/TT4 1 Tf +10 0 0 10 126 353.6 Tm +(Moving Windows)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 331.66 Tm +(MOVEW)Tj +/F1 1 Tf +10 0 0 10 183 331.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.87 331.66 Tm +(WINDOW POSorX Y)Tj +/TT10 1 Tf +10 0 0 10 266.8832 331.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.8842 331.66 Tm +[( )-23916.2([Function])]TJ +-10.9871 -1.8833 TD +(Moves )Tj +/TT14 1 Tf +3.3995 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.19 Tw +[( to the position specified by )]TJ +/TT14 1 Tf +13.5682 0 TD +0 Tw +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +0.19 Tw +[( and )]TJ +/TT14 1 Tf +2.5729 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.19 Tw +[( according to the following)]TJ +-27.3418 -1.2889 TD +0 Tw +(rules:)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +1.121 0 TD +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +0.2011 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 231.0482 285.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 249.0511 285.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 255.3611 285.06 Tm +(GETBOXPOSITION)Tj +/TT8 1 Tf +9 0 0 9 339.3747 285.06 Tm +0.2011 Tw +[( is called to read a position from the user. If)]TJ +/TT14 1 Tf +-18.375 -1.3333 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +[( has a )]TJ +/TT10 1 Tf +10 0 0 10 233.488 273.06 Tm +0 Tw +(CALCULATEREGION)Tj +/TT8 1 Tf +9 0 0 9 323.5026 273.06 Tm +0.0844 Tw +[( window property, it will be called with )]TJ +/TT14 1 Tf +18.5281 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +[( as)]TJ +-38.7401 -1.3278 TD +0.0822 Tw +[(an argument and should return a region which will be used to prompt the user with. If)]TJ +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0867 Tw +[( does not have a )]TJ +/TT10 1 Tf +10 0 0 10 276.8121 250.06 Tm +0 Tw +(CALCULATEREGION)Tj +/TT8 1 Tf +9 0 0 9 366.8267 250.06 Tm +0.0867 Tw +[( window property, the region of )]TJ +/TT14 1 Tf +14.9824 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +-36.4076 -1.3278 TD +(is used to prompt with.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +0.9199 0 TD +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +( is a )Tj +/TT10 1 Tf +10 0 0 10 232.3681 220.06 Tm +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 280.3759 220.06 Tm +(, )Tj +/TT14 1 Tf +0.5 0 TD +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +( is used.)Tj +-15.9201 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.9844 0 TD +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0644 Tw +[( and )]TJ +/TT14 1 Tf +2.3218 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0644 Tw +[( are both )]TJ +/TT10 1 Tf +10 0 0 10 280.4834 201.06 Tm +0 Tw +(NUMBERP)Tj +/TT8 1 Tf +9 0 0 9 322.4902 201.06 Tm +0.0644 Tw +(, a position is created using )Tj +/TT14 1 Tf +12.6484 0 TD +0 Tw +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0644 Tw +[( as the )]TJ +/TT10 1 Tf +10 0 0 10 498.0203 201.06 Tm +0 Tw +(XCOORD)Tj +/TT8 1 Tf +9 0 0 9 174 189.06 Tm +(and )Tj +/TT14 1 Tf +1.9429 0 TD +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +( as the )Tj +/TT10 1 Tf +10 0 0 10 224.436 189.06 Tm +(YCOORD)Tj +/TT8 1 Tf +9 0 0 9 260.4419 189.06 Tm +(.)Tj +-9.6047 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.9221 0 TD +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0004 Tc +0.0018 Tw +( is a )Tj +/TT10 1 Tf +10 0 0 10 232.4482 170.06 Tm +0 Tc +0 Tw +(REGION)Tj +/TT8 1 Tf +9 0 0 9 268.454 170.06 Tm +0.0022 Tw +(, a position is created using its )Tj +/TT10 1 Tf +10 0 0 10 390.5686 170.06 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 414.5725 170.06 Tm +0.0003 Tc +0.0019 Tw +( as the )Tj +/TT10 1 Tf +10 0 0 10 442.1818 170.06 Tm +0 Tc +0 Tw +(XCOORD)Tj +/TT8 1 Tf +9 0 0 9 478.1877 170.06 Tm +0.0004 Tc +0.0018 Tw +( and )Tj +/TT10 1 Tf +10 0 0 10 497.9636 170.06 Tm +0 Tc +0 Tw +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 174 158.06 Tm +(as the )Tj +/TT10 1 Tf +10 0 0 10 199.2993 158.06 Tm +(YCOORD)Tj +/TT8 1 Tf +9 0 0 9 235.3052 158.06 Tm +(.)Tj +-6.8117 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.9477 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( is not open and )]TJ +/TT14 1 Tf +7.4587 0 TD +0 Tw +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0278 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 344.2886 139.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 362.2915 139.06 Tm +0.0278 Tw +(, the window will be moved without being)Tj +-20.9213 -1.3278 TD +0 Tw +(opened. Otherwise, it will be opened.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +0.9833 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0633 Tw +[( has the atom )]TJ +/TT10 1 Tf +10 0 0 10 272.8661 109.06 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 302.871 109.06 Tm +0.0633 Tw +[( as a )]TJ +/TT10 1 Tf +10 0 0 10 324.1454 109.06 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 360.1513 109.06 Tm +0.0633 Tw +[( window property, the window will not be)]TJ +-20.6835 -1.3333 TD +0.1044 Tw +[(moved. If )]TJ +/TT14 1 Tf +5.0667 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1044 Tw +[( has any other non-)]TJ +/TT10 1 Tf +10 0 0 10 332.4023 97.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 350.4052 97.06 Tm +0.1044 Tw +[( value as a )]TJ +/TT10 1 Tf +10 0 0 10 397.9215 97.06 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 433.9274 97.06 Tm +0.1044 Tw +[( property, it should be a)]TJ +-28.8808 -1.3278 TD +0.2056 Tw +(function or list of functions that will be called before the window is moved with the)Tj +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0211 Tw +[( and the new positon as its arguments. If it returns the atom )]TJ +/TT10 1 Tf +10 0 0 10 451.0501 74.06 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 481.055 74.06 Tm +0.0211 Tw +(, the window)Tj +-34.1172 -1.3278 TD +0.1322 Tw +[(will not be moved. If it returns a position, the window will be moved to that position)]TJ +ET +endstream +endobj +72 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +74 0 obj +<< +/Length 6795 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-17)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +(instead of the new one. If there are more than one )Tj +/TT10 1 Tf +10 0 0 10 328.05 569.49 Tm +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 364.0558 569.49 Tm +(s, the last one to return a value)Tj +-26.4506 -1.3278 TD +(is the one that determines where the window is moved to.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +0.931 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0111 Tw +[( is moved and )]TJ +/TT14 1 Tf +6.5357 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0111 Tw +[( has an )]TJ +/TT10 1 Tf +10 0 0 10 288.3517 539.49 Tm +0 Tw +(AFTERMOVEFN)Tj +/TT8 1 Tf +9 0 0 9 354.3625 539.49 Tm +0.0111 Tw +[( window property, it should be a)]TJ +-25.3736 -1.3278 TD +0.0544 Tw +(function or a list of functions that will be called after the window is moved with )Tj +/TT14 1 Tf +36.3999 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +-36.3999 -1.2889 TD +(as an argument.)Tj +/TT10 1 Tf +10 0 0 10 126 497.89 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 156.0049 497.89 Tm +( returns the new position, or )Tj +/TT10 1 Tf +10 0 0 10 271.0625 497.89 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 289.0654 497.89 Tm +( if the window could not be moved.)Tj +-18.1184 -2.1111 TD +0.0467 Tw +[(Note: If )]TJ +/TT10 1 Tf +10 0 0 10 161.9284 478.89 Tm +0 Tw +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 191.9333 478.89 Tm +0.0467 Tw +[( moves any part of the window from off-screen onto the screen, that part)]TJ +-7.3259 -1.3333 TD +0 Tw +(is redisplayed \(by calling )Tj +/TT10 1 Tf +10 0 0 10 228.1509 466.89 Tm +(REDISPLAYW)Tj +/TT8 1 Tf +9 0 0 9 288.1606 466.89 Tm +(\).)Tj +/TT10 1 Tf +10 0 0 10 102 443.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 443.66 Tm +(RELMOVEW)Tj +/F1 1 Tf +10 0 0 10 151.2 443.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 154.07 443.66 Tm +(WINDOW POSITION)Tj +/TT10 1 Tf +10 0 0 10 235.0832 443.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 241.0841 443.66 Tm +[( )-22116.2([Function])]TJ +-12.7871 -1.8889 TD +(Like )Tj +/TT10 1 Tf +10 0 0 10 146.0331 426.66 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 176.038 426.66 Tm +0.0389 Tw +[( for moving windows but the )]TJ +/TT14 1 Tf +13.4213 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0389 Tw +[( is interpreted relative to the current)]TJ +-23.7819 -1.3278 TD +0.03 Tw +(position of )Tj +/TT14 1 Tf +5.0458 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.03 Tw +[(. Example: The following code moves )]TJ +/TT14 1 Tf +17.5408 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.03 Tw +[( to the right one screen)]TJ +-29.7878 -1.2889 TD +0 Tw +(point.)Tj +/TT10 1 Tf +10 0 0 10 174 383.83 Tm +(\(RELMOVEW)Tj +/F1 1 Tf +5.4009 0 TD +( )Tj +/TT14 1 Tf +9 0 0 9 230.8788 383.83 Tm +(WINDOW)Tj +/F1 1 Tf +10 0 0 10 263.2841 383.83 Tm +( )Tj +/TT10 1 Tf +0.287 0 TD +(\(create POSITION XCOORD )Tj +/TT15 1 Tf +14.4023 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 1 YCOORD)Tj +/TT15 1 Tf +-24.6046 -1.323 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 0\)\))Tj +/TT12 1 Tf +9 0 0 9 102 348.65 Tm +(CALCULATEREGION)Tj +/TT8 1 Tf +9 0 TD +[( )-24483.3([Window Property])]TJ +-6.3333 -1.85 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 140.9793 332 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 170.9842 332 Tm +0.7444 Tw +[( calls )]TJ +/TT10 1 Tf +10 0 0 10 206.4315 332 Tm +0 Tw +(GETBOXPOSITION)Tj +/TT8 1 Tf +9 0 0 9 290.4452 332 Tm +0.7444 Tw +[( to prompt the user for a region, the)]TJ +/TT10 1 Tf +10 0 0 10 126 320 Tm +0 Tw +(CALCULATEREGION)Tj +/TT8 1 Tf +9 0 0 9 216.0146 320 Tm +0.1189 Tw +[( window property is called \(passing the window as an argument.)]TJ +-10.0016 -1.3333 TD +0 Tw +(The )Tj +/TT10 1 Tf +10 0 0 10 143.6044 308 Tm +(CALCULATEREGION)Tj +/TT8 1 Tf +9 0 0 9 233.6191 308 Tm +0.0322 Tw +[( should returns a region to be used to prompt the user with. If)]TJ +/TT10 1 Tf +10 0 0 10 126 296 Tm +0 Tw +(CALCULATEREGION)Tj +/TT8 1 Tf +9 0 0 9 216.0146 296 Tm +( is )Tj +/TT10 1 Tf +10 0 0 10 226.9482 296 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 244.9511 296 Tm +(, the region of the window is used to prompt with.)Tj +/TT12 1 Tf +-15.8835 -2.4389 TD +(MOVEFN)Tj +/TT8 1 Tf +3.6 0 TD +[( )-29883.3([Window Property])]TJ +-0.9333 -1.85 TD +0.1078 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 150.9541 257.4 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 186.96 257.4 Tm +0.1078 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 199.8336 257.4 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 229.8385 257.4 Tm +0.1078 Tw +(, the window will not be moved by )Tj +/TT10 1 Tf +10 0 0 10 379.0892 257.4 Tm +0 Tw +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 409.0941 257.4 Tm +0.1078 Tw +[(. Otherwise, if the)]TJ +/TT10 1 Tf +10 0 0 10 126 245.4 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 162.0058 245.4 Tm +0.01 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 191.5061 245.4 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 209.5091 245.4 Tm +0.01 Tw +(, it should be a function or a list of functions that will be called before)Tj +-9.2788 -1.3278 TD +0.0389 Tw +(a window is moved with two arguments: the window being moved and the new position)Tj +0 -1.2278 TD +0.0111 Tw +[(of the lower left corner in screen coordinates. If the )]TJ +/TT10 1 Tf +10 0 0 10 333.7177 222.4 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 369.7235 222.4 Tm +0.0111 Tw +[( returns )]TJ +/TT10 1 Tf +10 0 0 10 403.2604 222.4 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 433.2653 222.4 Tm +0.0111 Tw +(, the window)Tj +-34.1406 -1.3333 TD +0.0844 Tw +[(will not be moved. If the )]TJ +/TT10 1 Tf +10 0 0 10 233.3258 210.4 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 269.3317 210.4 Tm +0.0844 Tw +[( returns a )]TJ +/TT10 1 Tf +10 0 0 10 311.6986 210.4 Tm +0 Tw +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 359.7064 210.4 Tm +0.0844 Tw +(, the window will be moved to)Tj +-25.9674 -1.3278 TD +0 Tw +(that position. Otherwise, the window will be moved to the specified new position.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(AFTERMOVEFN)Tj +/TT8 1 Tf +6.6 0 TD +[( )-26883.3([Window Property])]TJ +-3.9333 -1.85 TD +0.21 Tw +(If non-)Tj +/TT10 1 Tf +10 0 0 10 154.556 160.8 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 172.5589 160.8 Tm +0.21 Tw +(, it should be a function or a list of functions that will be called after the)Tj +-5.1732 -1.3333 TD +0 Tw +(window is moved \(by )Tj +/TT10 1 Tf +10 0 0 10 215.4463 148.8 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 245.4511 148.8 Tm +(\) with the window as an argument.)Tj +/TT4 1 Tf +10 0 0 10 78 121.51 Tm +(Exposing and Burying Windows)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 99.57 Tm +(TOTOPW)Tj +/F1 1 Tf +10 0 0 10 140.4 99.57 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 143.27 99.57 Tm +(WINDOW NOCALLTOTOPFNFLG)Tj +/TT10 1 Tf +10 0 0 10 267.4902 99.57 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 273.4912 99.57 Tm +[( )-18515.4([Function])]TJ +-16.3879 -1.8833 TD +(Brings )Tj +/TT14 1 Tf +3.2678 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1589 Tw +[( to the top of the stack of overlapping windows, guaranteeing that it is)]TJ +-6.8684 -1.2889 TD +0.0467 Tw +[(entirely visible. If )]TJ +/TT14 1 Tf +8.4 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0467 Tw +[( is closed, it is opened. This is done automatically whenever a)]TJ +-12.0006 -1.2889 TD +0 Tw +(printing or drawing operation occurs to the window.)Tj +ET +endstream +endobj +75 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT15 76 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +78 0 obj +<< +/Length 8218 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +(If )Tj +/TT10 1 Tf +10 0 0 10 188.9593 569.49 Tm +(NOCALLTOTOPFNFLG)Tj +/TT8 1 Tf +9 0 0 9 284.9749 569.49 Tm +0.7422 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 309.2685 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 327.2714 569.49 Tm +0.7422 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 359.8663 569.49 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 401.8731 569.49 Tm +0.7422 Tw +[( of )]TJ +/TT14 1 Tf +2.8633 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.7422 Tw +[( is called. If)]TJ +/TT14 1 Tf +-31.7832 -1.3333 TD +0 Tw +(NOCALLTOTOPFNFLG)Tj +/TT8 1 Tf +9.6016 0 TD +0.2067 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 275.0676 557.49 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 281.0686 557.49 Tm +0.2067 Tw +(, it is not called, which allows a )Tj +/TT10 1 Tf +10 0 0 10 422.1332 557.49 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 464.14 557.49 Tm +0.2067 Tw +[( to call )]TJ +/TT10 1 Tf +10 0 0 10 498.0516 557.49 Tm +0 Tw +(TOTOPW)Tj +/TT8 1 Tf +9 0 0 9 174 545.54 Tm +(without causing an infinite loop.)Tj +/TT10 1 Tf +10 0 0 10 150 523.2599 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 523.2599 Tm +(BURYW)Tj +/F1 1 Tf +10 0 0 10 183 523.2599 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.87 523.2599 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 218.2753 523.2599 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 224.2762 523.2599 Tm +[( )-29317.1([Function])]TJ +-5.5862 -1.8833 TD +(Puts )Tj +/TT14 1 Tf +2.2426 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0356 Tw +[( on the bottom of the stack by moving all the windows that it covers in front)]TJ +-5.8432 -1.2889 TD +0 Tw +(of it.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(TOTOPFN)Tj +/TT8 1 Tf +4.2 0 TD +[( )-29283.3([Window Property])]TJ +-1.5333 -1.85 TD +0.0278 Tw +(If non-)Tj +/TT10 1 Tf +10 0 0 10 200.916 457.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 218.9189 457.06 Tm +0.0278 Tw +(, whenever the window is brought to the top, the )Tj +/TT10 1 Tf +10 0 0 10 418.3027 457.06 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 460.3095 457.06 Tm +0.0278 Tw +[( is called \(with the)]TJ +-31.8122 -1.3278 TD +0.2678 Tw +[(window as a single argument\). This function may be used to bring a collection of)]TJ +0 -1.2222 TD +0 Tw +(windows to the top together.)Tj +0 -2.0056 TD +0.0589 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 198.0741 416.06 Tm +0 Tw +(NOCALLTOPWFN)Tj +/TT8 1 Tf +9 0 0 9 270.0859 416.06 Tm +0.0589 Tw +[( argument of )]TJ +/TT10 1 Tf +10 0 0 10 325.254 416.06 Tm +0 Tw +(TOTOPW)Tj +/TT8 1 Tf +9 0 0 9 361.2599 416.06 Tm +0.0589 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 391.6402 416.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 409.6431 416.06 Tm +0.0589 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 429.938 416.06 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 471.9448 416.06 Tm +0.0589 Tw +[( of the window)]TJ +-33.105 -1.3333 TD +0.0667 Tw +(is not called, which provides a way of avoiding infinite loops when using )Tj +/TT10 1 Tf +10 0 0 10 475.7062 404.06 Tm +0 Tw +(TOTOPW)Tj +/TT8 1 Tf +9 0 0 9 511.7121 404.06 Tm +0.0667 Tw +[( from)]TJ +-37.5236 -1.3333 TD +0 Tw +(within a )Tj +/TT10 1 Tf +10 0 0 10 209.1562 392.06 Tm +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 251.1631 392.06 Tm +(.)Tj +/TT4 1 Tf +10 0 0 10 126 364.77 Tm +(Shrinking Windows Into Icons)Tj +/TT8 1 Tf +9 0 0 9 126 340.11 Tm +0.0622 Tw +(Occasionally, a user will have a number of large windows on the screen, making it difficult to access)Tj +0 -1.2222 TD +0.1078 Tw +[(those windows being used. To help with the problem of screen space management, the Interlisp-D)]TJ +T* +0.0144 Tw +[(window system allows the creation of Icons. An icon is a small rectangle \(containing text or a bitmap\))]TJ +T* +0.1456 Tw +[(which is a "shrunken-down" form of a particular window. Using the Shrink and Expand window)]TJ +T* +0.0278 Tw +(menu commands \(see the beginning of this chapter\), the user can shrink windows not currently being)Tj +T* +0.0044 Tw +(used into icons, and quickly restore the original windows at any time. This facility is controlled by the)Tj +T* +0 Tw +(following functions and window properties:)Tj +/TT10 1 Tf +10 0 0 10 150 251.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 251.83 Tm +(SHRINKW)Tj +/F1 1 Tf +10 0 0 10 193.8 251.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.67 251.83 Tm +(WINDOW TOWHAT ICONPOSITION EXPANDFN)Tj +/TT10 1 Tf +10 0 0 10 385.7007 251.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 391.7017 251.83 Tm +[( )-10714.2([Function])]TJ +/TT10 1 Tf +10 0 0 10 174 234.83 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 216.0068 234.83 Tm +0.1011 Tw +[( makes a small icon which represents )]TJ +/TT14 1 Tf +17.3679 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( and removes )]TJ +/TT14 1 Tf +6.5167 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( from the)]TJ +-35.7532 -1.3333 TD +0.09 Tw +[(screen. Icons have a different window command menu that contains ")]TJ +/TT10 1 Tf +10 0 0 10 462.6615 222.83 Tm +0 Tw +(EXPAND)Tj +/TT8 1 Tf +9 0 0 9 498.6673 222.83 Tm +0.09 Tw +(" instead)Tj +-36.0742 -1.3333 TD +0.3356 Tw +(of ")Tj +/TT10 1 Tf +10 0 0 10 190.52 210.83 Tm +0 Tw +(SHRINK)Tj +/TT8 1 Tf +9 0 0 9 226.5258 210.83 Tm +0.3356 Tw +(". The )Tj +/TT10 1 Tf +10 0 0 10 257.7201 210.83 Tm +0 Tw +(EXPAND)Tj +/TT8 1 Tf +9 0 0 9 293.726 210.83 Tm +0.3356 Tw +[( command calls )]TJ +/TT10 1 Tf +10 0 0 10 367.1176 210.83 Tm +0 Tw +(EXPANDW)Tj +/TT8 1 Tf +9 0 0 9 409.1244 210.83 Tm +0.3356 Tw +[( which returns the shrunken)]TJ +-26.1249 -1.3333 TD +0.0511 Tw +[(window to its original size and place. The icon can also be moved by pressing the )]TJ +/TT10 1 Tf +10 0 0 10 509.8893 198.83 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 174 186.83 Tm +(button in it, or expanded by pressing the )Tj +/TT10 1 Tf +10 0 0 10 338.2061 186.83 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 374.2119 186.83 Tm +( button in it. )Tj +-22.2458 -2.1111 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 192.2244 167.83 Tm +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 240.2322 167.83 Tm +0.1011 Tw +[( property of the window )]TJ +/TT14 1 Tf +11.6188 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1011 Tw +[( affects the operation of )]TJ +/TT10 1 Tf +10 0 0 10 477.3469 167.83 Tm +0 Tw +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 519.3537 167.83 Tm +0.1011 Tw +[(. If)]TJ +-38.3726 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 189.4848 155.83 Tm +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 237.4926 155.83 Tm +0.0833 Tw +[( property of )]TJ +/TT14 1 Tf +5.7783 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0833 Tw +[( is the atom )]TJ +/TT10 1 Tf +10 0 0 10 373.1152 155.83 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 403.1201 155.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 408.3701 155.83 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 450.377 155.83 Tm +0.0833 Tw +[( returns. Otherwise,)]TJ +-30.7086 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 190.2048 143.83 Tm +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 238.2126 143.83 Tm +0.1633 Tw +[( property of the window is treated as a \(list of\) function\(s\) to apply to)]TJ +/TT14 1 Tf +-7.1347 -1.3333 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(; if any returns the atom )Tj +/TT10 1 Tf +10 0 0 10 304.1309 131.83 Tm +(DONT)Tj +/TT8 1 Tf +9 0 0 9 334.1357 131.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 338.6357 131.83 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 380.6426 131.83 Tm +( returns.)Tj +/TT14 1 Tf +-22.9603 -2.1056 TD +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0889 Tw +[(, if given, indicates the image the icon window will have. If )]TJ +/TT14 1 Tf +27.7474 0 TD +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0889 Tw +[( is a string,)]TJ +-34.9485 -1.2889 TD +0.1611 Tw +(atom or list, the icons image will be that string \(currently implemented as a title-only)Tj +0 -1.2278 TD +0.1278 Tw +(window with )Tj +/TT14 1 Tf +6.4865 0 TD +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1278 Tw +[( as the title.\) If )]TJ +/TT14 1 Tf +7.544 0 TD +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1278 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 386.2188 90.23 Tm +0 Tw +(BITMAP)Tj +/TT8 1 Tf +9 0 0 9 422.2247 90.23 Tm +0.1278 Tw +(, the icons image will be a)Tj +-27.5805 -1.3278 TD +0 Tw +(copy of the bitmap. If )Tj +/TT14 1 Tf +9.9873 0 TD +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +( is a )Tj +/TT14 1 Tf +1.9648 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(, that window will be used as the icon.)Tj +-19.1533 -2.0722 TD +(If )Tj +/TT14 1 Tf +1.2788 0 TD +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.3589 Tw +[( is not given \(as is the case when invoked from the )]TJ +/TT10 1 Tf +10 0 0 10 459.1614 59.63 Tm +0 Tw +(SHRINK)Tj +/TT8 1 Tf +9 0 0 9 495.1672 59.63 Tm +0.3589 Tw +[( window)]TJ +-35.6852 -1.3278 TD +0 Tw +(command\), then the following apply in turn: )Tj +ET +endstream +endobj +79 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +81 0 obj +<< +/Length 7612 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-19)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 162 569.49 Tm +0.1411 Tw +[(1.)-1250(If the window has an )]TJ +/TT10 1 Tf +10 0 0 10 272.6849 569.49 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 308.6908 569.49 Tm +0.1411 Tw +[( property, it gets called with the two)]TJ +-14.299 -1.3333 TD +0 Tw +(arguments )Tj +/TT14 1 Tf +5.2736 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2756 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 284.5635 557.49 Tm +0 Tw +(OLDICON)Tj +/TT8 1 Tf +9 0 0 9 326.5703 557.49 Tm +0.2756 Tw +(, where )Tj +/TT14 1 Tf +4.0702 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2756 Tw +[( is the window)]TJ +-23.9563 -1.3333 TD +0.2156 Tw +(being shrunk and )Tj +/TT10 1 Tf +10 0 0 10 258.2375 545.49 Tm +0 Tw +(OLDICON)Tj +/TT8 1 Tf +9 0 0 9 300.2443 545.49 Tm +0.2156 Tw +[( is the previously created icon, if any.)]TJ +-13.3605 -1.3333 TD +0 Tw +(The )Tj +/TT10 1 Tf +10 0 0 10 199.9244 533.49 Tm +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 235.9303 533.49 Tm +0.29 Tw +[( should return one of the )]TJ +/TT14 1 Tf +12.95 0 TD +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.29 Tw +[( entities described)]TJ +-22.765 -1.3333 TD +0 Tw +(above or return the )Tj +/TT10 1 Tf +10 0 0 10 258.7632 521.49 Tm +(OLDICON)Tj +/TT8 1 Tf +9 0 0 9 300.77 521.49 Tm +( if it does not want to change it. )Tj +-15.4189 -2.1111 TD +0.2956 Tw +[(2.)-1250(If the window has an )]TJ +/TT10 1 Tf +10 0 0 10 279.6349 502.49 Tm +0 Tw +(ICON)Tj +/TT8 1 Tf +9 0 0 9 303.6389 502.49 Tm +0.2956 Tw +[( property, it is used as the value of)]TJ +/TT14 1 Tf +-13.7377 -1.3278 TD +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +(. )Tj +-5.6006 -2.0722 TD +0.0111 Tw +[(3.)-1250(If the window has neither an )]TJ +/TT10 1 Tf +10 0 0 10 297.3934 471.89 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 333.3993 471.89 Tm +0.0111 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 346.5676 471.89 Tm +0 Tw +(ICON)Tj +/TT8 1 Tf +9 0 0 9 370.5715 471.89 Tm +0.0111 Tw +[( property, the icon will)]TJ +-21.1746 -1.3278 TD +0 Tw +(be )Tj +/TT14 1 Tf +1.3444 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0622 Tw +(s title or, if )Tj +/TT14 1 Tf +5.4789 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0622 Tw +[( doesnt have a title, the date and time)]TJ +-14.0245 -1.2889 TD +0 Tw +(of the icon creation.)Tj +/TT10 1 Tf +10 0 0 10 126 430.29 Tm +(ICONPOSITION)Tj +/TT8 1 Tf +9 0 0 9 198.0117 430.29 Tm +0.0589 Tw +[( gives the position that the new icon will be on the screen. If it is )]TJ +/TT10 1 Tf +10 0 0 10 465.7498 430.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 483.7527 430.29 Tm +(,)Tj +-39.7503 -1.3278 TD +(the icon will be in the corner of the window furthest from the center of the screen.)Tj +0 -2.0056 TD +0.0211 Tw +(In all but the default case, the icon is cached on the property )Tj +/TT10 1 Tf +10 0 0 10 369.6638 400.29 Tm +0 Tw +(ICONWINDOW)Tj +/TT8 1 Tf +9 0 0 9 429.6736 400.29 Tm +0.0211 Tw +[( of )]TJ +/TT14 1 Tf +1.4211 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0211 Tw +[( so)]TJ +-38.7632 -1.3333 TD +0 Tw +(repeating )Tj +/TT10 1 Tf +10 0 0 10 167.0852 388.29 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 209.0921 388.29 Tm +0.1056 Tw +[( reuses the same icon \(unless overridden by the )]TJ +/TT10 1 Tf +10 0 0 10 408.2197 388.29 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 444.2256 388.29 Tm +0.1056 Tw +[( described)]TJ +-35.3584 -1.3333 TD +0.0544 Tw +[(above\). Thus to change the icon it is necessary to remove the )]TJ +/TT10 1 Tf +10 0 0 10 377.0223 376.29 Tm +0 Tw +(ICONWINDOW)Tj +/TT8 1 Tf +9 0 0 9 437.0321 376.29 Tm +0.0544 Tw +[( property or)]TJ +-34.5591 -1.3333 TD +0 Tw +(call )Tj +/TT10 1 Tf +10 0 0 10 141.9829 364.29 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 183.9897 364.29 Tm +( explicitly giving a )Tj +/TT14 1 Tf +8.4277 0 TD +(TOWHAT)Tj +/TT8 1 Tf +3.6006 0 TD +( argument.)Tj +/TT10 1 Tf +10 0 0 10 102 341.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 341.06 Tm +(EXPANDW)Tj +/F1 1 Tf +10 0 0 10 145.8 341.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 148.67 341.06 Tm +(ICONW)Tj +/TT10 1 Tf +10 0 0 10 175.6744 341.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 181.6754 341.06 Tm +[( )-28717.2([Function])]TJ +-6.1862 -1.8833 TD +0.0011 Tw +(Restores the window for which )Tj +/TT14 1 Tf +14.0881 0 TD +0 Tw +(ICONW)Tj +/TT8 1 Tf +3.0005 0 TD +0.0011 Tw +( is an icon, and removes the icon from the screen. If)Tj +-17.0886 -1.2944 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 141.5548 312.46 Tm +(EXPANDFN)Tj +/TT8 1 Tf +9 0 0 9 189.5627 312.46 Tm +0.0911 Tw +[( window property of the main window is the atom )]TJ +/TT10 1 Tf +10 0 0 10 401.8271 312.46 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 431.832 312.46 Tm +0.0911 Tw +(, the window)Tj +-33.9813 -1.3278 TD +0.2278 Tw +[(wont be expanded. Otherwise, the window will be restored to its original size and)]TJ +0 -1.2278 TD +0 Tw +(location and the )Tj +/TT10 1 Tf +10 0 0 10 192.2036 289.46 Tm +(EXPANDFN)Tj +/TT8 1 Tf +9 0 0 9 240.2114 289.46 Tm +( \(or list of functions\) will be applied to it.)Tj +/TT12 1 Tf +-15.3568 -2.4389 TD +(SHRINKFN)Tj +/TT8 1 Tf +4.8 0 TD +[( )-28683.3([Window Property])]TJ +-2.1333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.1344 250.86 Tm +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 192.1422 250.86 Tm +0.0911 Tw +[( window property can be a single function or a list of functions that are)]TJ +-7.3491 -1.3333 TD +0.2289 Tw +(called just before a window is shrunken by )Tj +/TT10 1 Tf +10 0 0 10 315.396 238.86 Tm +0 Tw +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 357.4028 238.86 Tm +0.2289 Tw +(, with the window as a single)Tj +-25.7114 -1.3333 TD +0.0144 Tw +[(argument. If any of the )]TJ +/TT10 1 Tf +10 0 0 10 222.6159 226.86 Tm +0 Tw +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 270.6237 226.86 Tm +0.0144 Tw +(s are the atom )Tj +/TT10 1 Tf +10 0 0 10 329.1032 226.86 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 359.1081 226.86 Tm +0.0144 Tw +(, or if the value returned by any)Tj +-25.9009 -1.3333 TD +0 Tw +(of the )Tj +/TT10 1 Tf +10 0 0 10 150.895 214.86 Tm +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 198.9028 214.86 Tm +(s is the atom )Tj +/TT10 1 Tf +10 0 0 10 250.9297 214.86 Tm +(DONT)Tj +/TT8 1 Tf +9 0 0 9 280.9345 214.86 Tm +(, the window will not be shrunk.)Tj +/TT12 1 Tf +-19.8816 -2.4389 TD +(EXPANDREGIONFN)Tj +/TT8 1 Tf +33.9867 0 TD +([Window property])Tj +/TT10 1 Tf +10 0 0 10 126 176.26 Tm +(EXPANDREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 210.0136 176.26 Tm +0.0133 Tw +(, if non-)Tj +/TT10 1 Tf +10 0 0 10 241.0066 176.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 259.0095 176.26 Tm +0.0133 Tw +(, should be the function to be called \(with the window as)Tj +-14.7788 -1.3278 TD +0 Tw +(its argument\) before the window is actually expanded.)Tj +0 -2.0056 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 145.9144 146.26 Tm +(EXPANDREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 229.9281 146.26 Tm +0.2889 Tw +[( must return )]TJ +/TT10 1 Tf +10 0 0 10 289.6231 146.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 307.626 146.26 Tm +0.2889 Tw +[( or a valid region, and must not do any)]TJ +-20.1807 -1.3278 TD +0.2389 Tw +[(window operations \(e.g., redisplaying\). If NIL is returned, the window is expanded)]TJ +0 -1.2278 TD +0.0089 Tw +(normally, as if the )Tj +/TT10 1 Tf +10 0 0 10 200.381 123.26 Tm +0 Tw +(EXPANDREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 284.3947 123.26 Tm +0.0089 Tw +[( had not existed. The region returned specifies the)]TJ +-17.5994 -1.3278 TD +0.1511 Tw +(new region for the main window only, not for the group including any of its attached)Tj +0 -1.2222 TD +0.0589 Tw +[(windows. The window will be opened in its new shape, and any attached windows will)]TJ +0 -1.2278 TD +0.0133 Tw +[(be repositioned or rejustified appropriately. The main window must have a )]TJ +/TT10 1 Tf +10 0 0 10 431.9239 89.26 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 126 77.31 Tm +(which can repaint the entire window under these conditions.)Tj +0 -2.0056 TD +(As with expanding windows normally, the )Tj +/TT10 1 Tf +10 0 0 10 299.3027 59.26 Tm +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 335.32 59.26 Tm +( for the main window is not called.)Tj +ET +endstream +endobj +82 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +84 0 obj +<< +/Length 7027 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.2633 Tw +(Also, the window is reshaped without checking for a special shape function \(e.g., a)Tj +/TT10 1 Tf +10 0 0 10 174 558.49 Tm +0 Tw +(DOSHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 228 558.49 Tm +(\).)Tj +/TT12 1 Tf +-8.6667 -2.4389 TD +(ICONFN)Tj +/TT8 1 Tf +3.6 0 TD +[( )-29883.3([Window Property])]TJ +-0.9333 -1.85 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 184.1293 519.89 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 226.1361 519.89 Tm +0.2056 Tw +[( is called without begin given a )]TJ +/TT10 1 Tf +10 0 0 10 365.2971 519.89 Tm +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +9 0 0 9 401.3029 519.89 Tm +0.2056 Tw +[( argument \(as is the case when)]TJ +-25.2559 -1.3333 TD +0.1367 Tw +(invoked from the )Tj +/TT10 1 Tf +10 0 0 10 249.0044 507.89 Tm +0 Tw +(SHRINK)Tj +/TT8 1 Tf +9 0 0 9 285.0103 507.89 Tm +0.1367 Tw +[( window command\) and the windows )]TJ +/TT10 1 Tf +10 0 0 10 449.5168 507.89 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 485.5226 507.89 Tm +0.1367 Tw +[( property is)]TJ +-34.6136 -1.3333 TD +0 Tw +(non-)Tj +/TT10 1 Tf +10 0 0 10 192.3867 495.89 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 210.3896 495.89 Tm +0.2278 Tw +(, then it gets called with two arguments, the window being shrunk and the)Tj +-4.0433 -1.3333 TD +0.0933 Tw +[(previously created icon, if any. The )]TJ +/TT10 1 Tf +10 0 0 10 324.1832 483.89 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 360.1891 483.89 Tm +0.0933 Tw +[( should return one of the )]TJ +/TT10 1 Tf +10 0 0 10 466.1187 483.89 Tm +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +9 0 0 9 502.1246 483.89 Tm +0.0933 Tw +[( entities)]TJ +-36.4583 -1.3278 TD +0 Tw +(described above or return the previously created icon if it does not want to change it.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(ICON)Tj +/TT8 1 Tf +2.4 0 TD +[( )-31083.3([Window Property])]TJ +0.2667 -1.85 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 183.0493 434.29 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 225.0561 434.29 Tm +0.0856 Tw +[( is called without being given a )]TJ +/TT10 1 Tf +10 0 0 10 356.657 434.29 Tm +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +9 0 0 9 392.6629 434.29 Tm +0.0856 Tw +[( argument, the windows )]TJ +/TT10 1 Tf +10 0 0 10 497.9905 434.29 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 174 422.29 Tm +0.2144 Tw +(property is )Tj +/TT10 1 Tf +10 0 0 10 223.8883 422.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 241.8912 422.29 Tm +0.2144 Tw +(, and the )Tj +/TT10 1 Tf +10 0 0 10 284.4019 422.29 Tm +0 Tw +(ICON)Tj +/TT8 1 Tf +9 0 0 9 308.4058 422.29 Tm +0.2144 Tw +[( property is non-)]TJ +/TT10 1 Tf +10 0 0 10 380.8609 422.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 398.8638 422.29 Tm +0.2144 Tw +(, then it is used as the value of)Tj +/TT10 1 Tf +10 0 0 10 174 410.29 Tm +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +9 0 0 9 210.0058 410.29 Tm +(.)Tj +/TT12 1 Tf +-6.6673 -2.4389 TD +(ICONWINDOW)Tj +/TT8 1 Tf +6 0 TD +[( )-27483.3([Window Property])]TJ +-3.3333 -1.85 TD +0.0789 Tw +(Whenever an icon is created, it is cached on the property )Tj +/TT10 1 Tf +10 0 0 10 409.1567 371.69 Tm +0 Tw +(ICONWINDOW)Tj +/TT8 1 Tf +9 0 0 9 469.1664 371.69 Tm +0.0789 Tw +[( of the window,)]TJ +-32.7963 -1.3333 TD +0 Tw +(so calling )Tj +/TT10 1 Tf +10 0 0 10 213.8232 359.69 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 255.8301 359.69 Tm +( again will reuse the same icon \(unless overridden by the )Tj +/TT10 1 Tf +10 0 0 10 484.3193 359.69 Tm +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 520.3252 359.69 Tm +(.)Tj +-38.4806 -2.1111 TD +0.1789 Tw +(Thus, to change the icon it is necessary to remove the )Tj +/TT10 1 Tf +10 0 0 10 405.0777 340.69 Tm +0 Tw +(ICONWINDOW)Tj +/TT8 1 Tf +9 0 0 9 465.0874 340.69 Tm +0.1789 Tw +[( property or call)]TJ +/TT10 1 Tf +10 0 0 10 174 328.69 Tm +0 Tw +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 216.0068 328.69 Tm +( explicitly giving a )Tj +/TT10 1 Tf +10 0 0 10 291.8564 328.69 Tm +(TOWHAT)Tj +/TT8 1 Tf +9 0 0 9 327.8623 328.69 Tm +( argument.)Tj +/TT12 1 Tf +-19.7625 -2.5878 TD +(DEFAULTICONFN)Tj +/TT8 1 Tf +38.2678 0 TD +([Variable])Tj +-35.6011 -1.85 TD +0.0933 Tw +(Changes how an icon is created when a window having no )Tj +/TT10 1 Tf +10 0 0 10 420.0876 288.75 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 456.0935 288.75 Tm +0.0933 Tw +[( is shrunk or when)]TJ +/TT10 1 Tf +10 0 0 10 174 276.75 Tm +0 Tw +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 216.0068 276.75 Tm +0.6311 Tw +(, with a )Tj +/TT10 1 Tf +10 0 0 10 264.8456 276.75 Tm +0 Tw +(TOWHAT)Tj +/TT8 1 Tf +9 0 0 9 300.8515 276.75 Tm +0.6311 Tw +[( argument of a string, is called. The value of)]TJ +/TT10 1 Tf +10 0 0 10 174 264.75 Tm +0 Tw +(DEFAULTICONFN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 264.75 Tm +0.0689 Tw +[( is a function of two arguments \(window text\); text is either )]TJ +/TT10 1 Tf +10 0 0 10 497.3287 264.75 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 515.3316 264.75 Tm +0.0689 Tw +[( or a)]TJ +-37.9257 -1.3333 TD +0 Tw +(string. )Tj +/TT10 1 Tf +10 0 0 10 201.668 252.75 Tm +(DEFAULTICONFN)Tj +/TT8 1 Tf +9 0 0 9 279.6806 252.75 Tm +( returns an icon window.)Tj +-11.7423 -2.1111 TD +0.1733 Tw +(The initial value of )Tj +/TT10 1 Tf +10 0 0 10 257.3069 233.75 Tm +0 Tw +(DEFAULTICONFN)Tj +/TT8 1 Tf +9 0 0 9 335.3196 233.75 Tm +0.1733 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 349.3732 233.75 Tm +0 Tw +(MAKETITLEBARICON)Tj +/TT8 1 Tf +9 0 0 9 445.37 233.75 Tm +0.1733 Tw +(. It creates a window)Tj +-30.1522 -1.3278 TD +0.1233 Tw +[(that is a title bar only; the title is either the text argument, the windows title, or "Icon)]TJ +0 -1.2278 TD +0.1078 Tw +(made " for titleless windows. )Tj +/TT10 1 Tf +10 0 0 10 324.6342 210.75 Tm +0 Tw +(MAKETITLEBARICON)Tj +/TT8 1 Tf +9 0 0 9 420.6498 210.75 Tm +0.1078 Tw +[( places the title bar at some)]TJ +-27.4055 -1.3278 TD +0 Tw +(corner of the main window.)Tj +0 -2.0056 TD +0.2567 Tw +(An alternative behavior is available by setting )Tj +/TT10 1 Tf +10 0 0 10 374.9776 180.75 Tm +0 Tw +(DEFAULTICONFN)Tj +/TT8 1 Tf +9 0 0 9 452.9903 180.75 Tm +0.2567 Tw +[( to be )]TJ +/TT10 1 Tf +10 0 0 10 483.809 180.75 Tm +0 Tw +(TEXTICON)Tj +/TT8 1 Tf +9 0 0 9 531.77 180.75 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 174 168.75 Tm +(TEXTICON)Tj +/TT8 1 Tf +9 0 0 9 222.0078 168.75 Tm +( creates a titled icon window from the text or windows title.)Tj +-5.3342 -2.1056 TD +0.1911 Tw +[(You can now copy-select titled icons such as those used by FileBrowser, SEdit, TEdit,)]TJ +0 -1.2278 TD +0.0633 Tw +[(Sketch. The default behavior is that the icons title is unread \(via )]TJ +/TT10 1 Tf +10 0 0 10 440.8631 138.75 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 488.8709 138.75 Tm +0.0633 Tw +(\), but if the)Tj +-34.9857 -1.3333 TD +0.0911 Tw +(icon window has a )Tj +/TT10 1 Tf +10 0 0 10 254.3776 126.75 Tm +0 Tw +(COPYFN)Tj +/TT8 1 Tf +9 0 0 9 290.3835 126.75 Tm +0.0911 Tw +[( property, that gets called instead, with the icon window as)]TJ +-12.9315 -1.3278 TD +0.0811 Tw +[(its argument. For example, if the name displayed in an icon is really a symbol, and you)]TJ +0 -1.2222 TD +0.0544 Tw +(want copy selection to cause the name to be unread correctly with respect to the package)Tj +0 -1.2278 TD +0.1 Tw +[(and read table of the exec you are copying into, you could put the following )]TJ +/TT10 1 Tf +10 0 0 10 497.9894 92.75 Tm +0 Tw +(COPYFN)Tj +/TT8 1 Tf +9 0 0 9 174 80.8 Tm +(property on the icon window:)Tj +/TT10 1 Tf +10 0 0 10 174 44.75 Tm +(\(LAMBDA \(WINDOW\))Tj +ET +endstream +endobj +85 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +87 0 obj +<< +/Length 5466 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-21)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-28.2 -4.251 TD +(\(IL:BKSYSBUF T \)\))Tj +/TT12 1 Tf +9 0 0 9 102 510.54 Tm +(EXPANDFN)Tj +/TT8 1 Tf +4.8 0 TD +[( )-28683.3([Window Property])]TJ +-2.1333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 143.6144 493.89 Tm +(EXPANDFN)Tj +/TT8 1 Tf +9 0 0 9 191.6222 493.89 Tm +0.0333 Tw +[( window property can be a single function or a list of functions. If one of)]TJ +-7.2914 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 141.5548 481.89 Tm +(EXPANDFN)Tj +/TT8 1 Tf +9 0 0 9 189.5627 481.89 Tm +0.0911 Tw +(s is the atom )Tj +/TT10 1 Tf +10 0 0 10 244.8695 481.89 Tm +0 Tw +(DONT)Tj +/TT8 1 Tf +9 0 0 9 274.8744 481.89 Tm +0.0911 Tw +[(, the window will not be expanded. Otherwise, the)]TJ +/TT10 1 Tf +10 0 0 10 126 469.89 Tm +0 Tw +(EXPANDFN)Tj +/TT8 1 Tf +9 0 0 9 174.0078 469.89 Tm +0.2256 Tw +(s are called after the window has been expanded by )Tj +/TT10 1 Tf +10 0 0 10 402.3801 469.89 Tm +0 Tw +(EXPANDW)Tj +/TT8 1 Tf +9 0 0 9 444.3869 469.89 Tm +0.2256 Tw +(, with the)Tj +-35.3763 -1.3278 TD +0 Tw +(window as a single argument.)Tj +/TT4 1 Tf +10 0 0 10 54 397.6 Tm +(Creating Icons with ICONW)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 394.89 m +534.01 394.89 l +S +BT +/TT10 1 Tf +10 0 0 10 78 373.89 Tm +(ICONW)Tj +/TT8 1 Tf +9 0 0 9 108.0049 373.89 Tm +0.2389 Tw +[( is a group of functions available for building small windows of arbitrary shape. These)]TJ +-3.3339 -1.3278 TD +0.0878 Tw +[(windows are principally for use as )-5.3(icons for shrinking windows; i.e., these functions are likely to be)]TJ +0 -1.2278 TD +0.0056 Tw +(invoked from within the )Tj +/TT10 1 Tf +10 0 0 10 177.9207 350.89 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 213.9266 350.89 Tm +0.0056 Tw +[( of a window. An icon is specified by supplying its image \(a bitmap\))]TJ +-15.103 -1.3278 TD +0.0222 Tw +[(and a mask that specifies its shape. The mask is a bitmap of the same dimensions as the image whose)]TJ +0 -1.2222 TD +0.0633 Tw +(bits are on \(black\) in those positions considered to be in the image, and off \(white\) in those positions)Tj +T* +0.0278 Tw +[(where the background should show through. By using the mask and appropriate window functions,)]TJ +/TT10 1 Tf +10 0 0 10 78 305.89 Tm +0 Tw +(ICONW)Tj +/TT8 1 Tf +9 0 0 9 108.0049 305.89 Tm +0.2989 Tw +[( maintains the illusion that the icon window is nonrectangular, even though the actual)]TJ +-3.3339 -1.3278 TD +0.0422 Tw +[(window itself is rectangular. The illusion is not complete, of course. For example, if you try to select)]TJ +0 -1.2222 TD +0.3111 Tw +(what looks like the background \(or an occluded window\) around the icon but still within its)Tj +T* +0.0189 Tw +[(rectangular perimeter, the icon window itself is selected. Also, if you move a window occluded by an)]TJ +0 -1.2278 TD +0.1322 Tw +(icon, the icon never notices that the background changed behind it. Icons created with )Tj +/TT10 1 Tf +10 0 0 10 438.8309 260.89 Tm +0 Tw +(ICONW)Tj +/TT8 1 Tf +9 0 0 9 468.8358 260.89 Tm +0.1322 Tw +[( can)]TJ +-43.4262 -1.3278 TD +0.0133 Tw +(also have titles; some part of the image can be filled with text computed at the time the icon is created,)Tj +0 -1.2222 TD +0 Tw +(or text may be changed after creation.)Tj +/TT4 1 Tf +10 0 0 10 78 211.6 Tm +(Creating Icons)Tj +/TT8 1 Tf +9 0 0 9 78 186.89 Tm +0.0367 Tw +(Two types of icons can be created with )Tj +/TT10 1 Tf +10 0 0 10 236.9667 186.89 Tm +0 Tw +(ICONW)Tj +/TT8 1 Tf +9 0 0 9 266.9715 186.89 Tm +0.0367 Tw +[(, a borderless window)-5.4( containing an image defined by)]TJ +-20.9968 -1.3278 TD +0.0001 Tw +(a mask and a window with a title.)Tj +2.6667 -2.3333 TD +0 Tw +(\()Tj +/TT12 1 Tf +0.3333 0 TD +(ICONW)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(IMAGE MASK POSITION NOOPENFLG)Tj +/TT8 1 Tf +17.4028 0 TD +[(\) )-15500.3( [Function])]TJ +-18.32 -1.85 TD +0.1533 Tw +(Creates a window at )Tj +/TT14 1 Tf +9.9493 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.1533 Tw +(, or prompts for a position if )Tj +/TT14 1 Tf +13.795 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.1533 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 443.4362 137.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 461.4391 137.29 Tm +0.1533 Tw +[(. The)]TJ +-37.271 -1.3333 TD +0.0489 Tw +(window is borderless, and filled with )Tj +/TT14 1 Tf +17.0746 0 TD +0 Tw +(IMAGE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0489 Tw +(, as cookie-cut by )Tj +/TT14 1 Tf +8.0466 0 TD +0 Tw +(MASK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0489 Tw +[(. If )]TJ +/TT14 1 Tf +1.8166 0 TD +0 Tw +(MASK)Tj +/TT8 1 Tf +2.4004 0 TD +0.0489 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 450.4652 125.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 468.4681 125.29 Tm +0.0489 Tw +(, the)Tj +-38.052 -1.3278 TD +0.3189 Tw +(image is considered rectangular \(i.e., )Tj +/TT14 1 Tf +18.0539 0 TD +0 Tw +(MASK)Tj +/TT8 1 Tf +2.4004 0 TD +0.3189 Tw +[( defaults to a black bitmap of the same)]TJ +-20.4543 -1.2944 TD +0 Tw +(dimensions as )Tj +/TT14 1 Tf +6.5361 0 TD +(IMAGE)Tj +/TT8 1 Tf +3.0005 0 TD +(\). If )Tj +/TT14 1 Tf +2.0029 0 TD +(NOOPENFLG)Tj +/TT8 1 Tf +5.4009 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 289.3975 101.69 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 295.3984 101.69 Tm +(, the window is returned unopened.)Tj +/TT10 1 Tf +10 0 0 10 102 79.69 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108 79.69 Tm +(TITLEDICONW)Tj +/TT10 1 Tf +10 0 0 10 167.4097 79.69 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 173.4106 79.69 Tm +(ICON TITLE FONT POSITION NOOPENFLG JUST BREAKCHARS)Tj +-7.2679 -1.1111 TD +(OPERATION)Tj +/TT10 1 Tf +10 0 0 10 156.6079 69.69 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 108 59.74 Tm +([Function])Tj +ET +endstream +endobj +88 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +91 0 obj +<< +/Length 8347 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-22)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.16 Tw +(Creates a titled icon at )Tj +/TT14 1 Tf +10.8752 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.16 Tw +(, or prompts for a position if )Tj +/TT14 1 Tf +13.8417 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.16 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 500.3695 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 518.3724 569.49 Tm +0.16 Tw +[(. If)]TJ +/TT14 1 Tf +-38.2636 -1.3333 TD +0 Tw +(NOOPENFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0067 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 233.6615 557.49 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 239.6625 557.49 Tm +0.0067 Tw +[(, the window is returned unopened. The argument )]TJ +/TT14 1 Tf +22.9609 0 TD +0 Tw +(ICON)Tj +/TT8 1 Tf +2.4004 0 TD +0.0067 Tw +[( is an instance of)]TJ +-32.6571 -1.3333 TD +0.0444 Tw +(the record )Tj +/TT10 1 Tf +10 0 0 10 217.6115 545.49 Tm +0 Tw +(TITLEDICON)Tj +/TT8 1 Tf +9 0 0 9 277.6213 545.49 Tm +0.0444 Tw +(, which specifies the icon image and mask, as with )Tj +/TT10 1 Tf +10 0 0 10 483.8532 545.49 Tm +0 Tw +(ICONW)Tj +/TT8 1 Tf +9 0 0 9 513.858 545.49 Tm +0.0444 Tw +(, and)Tj +-37.762 -1.3278 TD +[(a region within the image to be used for displaying the title. Thus, the )]TJ +/TT14 1 Tf +31.9757 0 TD +0 Tw +(ICON)Tj +/TT8 1 Tf +2.4004 0 TD +0.0444 Tw +[( argument is)]TJ +-34.3761 -1.2889 TD +0 Tw +(usually of the form)Tj +0 -2.0056 TD +(\(create )Tj +/TT10 1 Tf +10 0 0 10 205.1045 503.89 Tm +(TITLEDICON)Tj +/TT8 1 Tf +9 0 0 9 265.1142 503.89 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 269.6142 503.89 Tm +(ICON)Tj +/TT8 1 Tf +9 0 0 9 293.6181 503.89 Tm +( )Tj +/TT15 1 Tf +0.25 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( someIconImage)Tj +/TT10 1 Tf +10 0 0 10 174 484.89 Tm +(MASK)Tj +/TT8 1 Tf +9 0 0 9 198.0039 484.89 Tm +( )Tj +/TT15 1 Tf +0.25 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( iconMask )Tj +/TT10 1 Tf +10 0 0 10 254.4824 484.89 Tm +(TITLEREG)Tj +/TT8 1 Tf +9 0 0 9 302.4902 484.89 Tm +( )Tj +/TT15 1 Tf +0.25 0 TD +<0040>Tj +/TT8 1 Tf +0.9868 0 TD +( someRegionWithinICON\))Tj +-15.5135 -2.1056 TD +0.0467 Tw +(The title region is specified in coordinates relative to the icon, i.e., the lower-left corner of)Tj +0 -1.2278 TD +0.1167 Tw +[(the image bitmap is \(0, 0\). The mask can be )]TJ +/TT10 1 Tf +10 0 0 10 360.8347 454.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 378.8376 454.89 Tm +0.1167 Tw +[( if the icon is rectangular. The image)]TJ +-22.7597 -1.3333 TD +0.0622 Tw +(should be white where it is covered by the title region. )Tj +/TT10 1 Tf +10 0 0 10 398.6781 442.89 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 464.6888 442.89 Tm +0.0622 Tw +[( clears the region)]TJ +-32.2988 -1.3278 TD +0.19 Tw +(before printing on it. The title is printed into the specified region in the image, using)Tj +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0311 Tw +[(. If )]TJ +/TT14 1 Tf +1.7633 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0311 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 244.5699 419.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 262.5728 419.89 Tm +0.0311 Tw +[( it defaults to the value of )]TJ +/TT10 1 Tf +10 0 0 10 368.1251 419.89 Tm +0 Tw +(DEFAULTICONFONT)Tj +/TT8 1 Tf +9 0 0 9 458.1398 419.89 Tm +0.0311 Tw +(, initially Helvetica)Tj +-31.5711 -1.3333 TD +0.0656 Tw +[(10. The title is broken into multiple lines if necessary; )]TJ +/TT10 1 Tf +10 0 0 10 396.0154 407.89 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 462.0261 407.89 Tm +0.0656 Tw +[( attempts to place)]TJ +-32.0029 -1.3278 TD +0.0344 Tw +(the breaks at characters that are in the list of character codes )Tj +/TT14 1 Tf +27.1707 0 TD +0 Tw +(BREAKCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.0344 Tw +(. )Tj +/TT14 1 Tf +0.8189 0 TD +0 Tw +(BREAKCHARS)Tj +/TT8 1 Tf +-33.9905 -1.2889 TD +0.0778 Tw +[(defaults to \(CHARCODE \(SPACE \)\). In addition, line breaks are forced by any carriage)]TJ +0 -1.2222 TD +0.1289 Tw +(returns in )Tj +/TT14 1 Tf +4.8349 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1289 Tw +(, independent of )Tj +/TT14 1 Tf +7.8886 0 TD +0 Tw +(BREAKCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.1289 Tw +(. )Tj +/TT14 1 Tf +1.0078 0 TD +0 Tw +(BREAKCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.1289 Tw +[( is ignored if a long title)]TJ +-28.7338 -1.2889 TD +0.1422 Tw +[(would not otherwise fit in the specified region. For convenience, )]TJ +/TT14 1 Tf +30.4912 0 TD +0 Tw +(BREAKCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.1422 Tw +[( = FILE)]TJ +-36.4922 -1.2889 TD +0.0922 Tw +(means the title is a file name, so break at file name field delimiters. The argument )Tj +/TT14 1 Tf +37.5864 0 TD +0 Tw +(JUST)Tj +/TT8 1 Tf +-37.5864 -1.2889 TD +0.1289 Tw +[(indicates how the text should be justified relative to the region. It is an atom or list of)]TJ +0 -1.2222 TD +0.31 Tw +(atoms chosen from )Tj +/TT14 1 Tf +9.5721 0 TD +0.7444 Tw +(TOP, BOTTOM, LEFT)Tj +/TT8 1 Tf +11.6905 0 TD +0.31 Tw +(, or )Tj +/TT14 1 Tf +2.3109 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.31 Tw +(, which indicate the vertical)Tj +-26.574 -1.2889 TD +0.1222 Tw +(positioning \(flush to top or bottom\) and/or horizontal positioning \(flush to left edge or)Tj +0 -1.2278 TD +0.0411 Tw +[(right\). If )]TJ +/TT14 1 Tf +4.2767 0 TD +0 Tw +(JUST)Tj +/TT8 1 Tf +2.4004 0 TD +0.0411 Tw +[( = )]TJ +/TT10 1 Tf +10 0 0 10 244.787 304.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 262.7899 304.89 Tm +0.0411 Tw +(, the text is centered. The argument )Tj +/TT14 1 Tf +16.0803 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0411 Tw +[( is a display stream)]TJ +-31.3467 -1.3333 TD +0.0489 Tw +[(operation indicating how the title should be printed. If )]TJ +/TT14 1 Tf +25.0856 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.0489 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 460.1916 292.89 Tm +0 Tw +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 496.1975 292.89 Tm +0.0489 Tw +(, then the)Tj +-35.7997 -1.3333 TD +0.07 Tw +[(title is printed white-on-black. The default )]TJ +/TT14 1 Tf +19.6707 0 TD +0 Tw +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +0.07 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 411.8375 280.89 Tm +0 Tw +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 453.8443 280.89 Tm +0.07 Tw +(, meaning black-on-)Tj +-31.0938 -1.3333 TD +0 Tw +(white. )Tj +/TT10 1 Tf +10 0 0 10 203.3598 268.89 Tm +(ERASE)Tj +/TT8 1 Tf +9 0 0 9 233.3647 268.89 Tm +( is the same as )Tj +/TT10 1 Tf +10 0 0 10 292.4184 268.89 Tm +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 328.4243 268.89 Tm +(; )Tj +/TT10 1 Tf +10 0 0 10 332.9243 268.89 Tm +(PAINT)Tj +/TT8 1 Tf +9 0 0 9 362.9292 268.89 Tm +( is the same as )Tj +/TT10 1 Tf +10 0 0 10 421.9829 268.89 Tm +(REPLACE)Tj +/TT8 1 Tf +9 0 0 9 463.9897 268.89 Tm +(.)Tj +-32.2211 -2.1111 TD +0.0711 Tw +(For convenience, )Tj +/TT10 1 Tf +10 0 0 10 244.7575 249.89 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 310.7682 249.89 Tm +0.0711 Tw +[( can also be used to create icons that consist solely of a)]TJ +-15.1965 -1.3333 TD +0.1967 Tw +[(title, with no special image. If the argument )]TJ +/TT14 1 Tf +21.5146 0 TD +0 Tw +(ICON)Tj +/TT8 1 Tf +2.4004 0 TD +0.1967 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 403.7087 237.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 421.7117 237.89 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 427.9817 237.89 Tm +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 493.9924 237.89 Tm +0.1967 Tw +[( creates a)]TJ +-35.5547 -1.3278 TD +0.0489 Tw +(rectangular icon large enough to contain )Tj +/TT14 1 Tf +18.4398 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0489 Tw +(, with a border the same width as that on)Tj +-21.4403 -1.2889 TD +0.0633 Tw +[(a regular window. The remaining arguments are as described above, except that a )]TJ +/TT14 1 Tf +37.5917 0 TD +0 Tw +(JUST)Tj +/TT8 1 Tf +-37.5917 -1.2889 TD +(of )Tj +/TT14 1 Tf +1.1289 0 TD +(TOP)Tj +/TT8 1 Tf +1.8003 0 TD +( or )Tj +/TT14 1 Tf +1.4409 0 TD +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +( is not meaningful.)Tj +-7.9707 -2.0722 TD +0.2967 Tw +(In the Medley release, )Tj +/TT10 1 Tf +10 0 0 10 274.3636 184.09 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 340.3743 184.09 Tm +0.2967 Tw +[( can create icons with white text on a black)]TJ +-18.486 -1.3278 TD +0.0156 Tw +[(background. To get this effect, your icon image must be black in the correct area, and you)]TJ +0 -1.2278 TD +0 Tw +(must specify the )Tj +/TT14 1 Tf +7.501 0 TD +(OPERATION)Tj +/TT8 1 Tf +5.4009 0 TD +( argument as )Tj +/TT10 1 Tf +10 0 0 10 344.0991 161.09 Tm +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 380.105 161.09 Tm +(. )Tj +-22.9006 -2.1056 TD +(In Medley, you can copy- select the title of an icon. )Tj +/TT4 1 Tf +10 0 0 10 126 97.8 Tm +(Modifying Icons)Tj +/TT8 1 Tf +9 0 0 9 150 77.14 Tm +(\()Tj +/TT12 1 Tf +0.333 0 TD +(ICONW.TITLE)Tj +/TT8 1 Tf +6.6003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ICON TITLE)Tj +/TT8 1 Tf +6.001 0 TD +24.3027 Tw +(\) [Function])Tj +ET +endstream +endobj +92 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT15 76 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +94 0 obj +<< +/Length 6330 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-23)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.2078 Tw +(Returns the current title of the window )Tj +/TT14 1 Tf +18.9701 0 TD +0 Tw +(ICON)Tj +/TT8 1 Tf +2.4004 0 TD +0.2078 Tw +(, which must be a window returned by)Tj +/TT10 1 Tf +10 0 0 10 126 557.89 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 192.0107 557.89 Tm +0.1611 Tw +[(. In addition, if )]TJ +/TT14 1 Tf +7.8563 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1611 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 321.9424 557.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 339.9454 557.89 Tm +0.1611 Tw +(, makes )Tj +/TT14 1 Tf +3.914 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1611 Tw +[( the new title of the)]TJ +-30.6862 -1.3278 TD +0 Tw +(window and repaints it accordingly. To erase the current title, make )Tj +/TT14 1 Tf +30.5 0 TD +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +( a null string.)Tj +-36.1672 -2.4 TD +(\()Tj +/TT12 1 Tf +0.333 0 TD +(ICONW.SHADE)Tj +/TT8 1 Tf +6.6003 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(WINDOW SHADE)Tj +/TT8 1 Tf +7.2012 0 TD +[(\) )-22852.5([Function])]TJ +-11.7178 -1.85 TD +0.0567 Tw +(Returns the current shading of the window )Tj +/TT10 1 Tf +10 0 0 10 303.7033 507.69 Tm +0 Tw +(ICON)Tj +/TT8 1 Tf +9 0 0 9 327.7072 507.69 Tm +0.0567 Tw +(, which must be a window returned by)Tj +/TT10 1 Tf +10 0 0 10 126 495.69 Tm +0 Tw +(ICONW)Tj +/TT8 1 Tf +9 0 0 9 156.0049 495.69 Tm +0.0767 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 170.3531 495.69 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 236.3639 495.69 Tm +0.0767 Tw +[(. In addition, if )]TJ +/TT14 1 Tf +7.7608 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0767 Tw +[( is non-NIL, paints the texture )]TJ +/TT14 1 Tf +13.9825 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +-37.0064 -1.3278 TD +(on )Tj +/TT14 1 Tf +1.5757 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1978 Tw +[(. A typical use for this function is to communicate a change of state in a)]TJ +-5.1763 -1.2889 TD +0.0333 Tw +[(window that is shrunken, without reopening the window. To remove any shading, make)]TJ +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +( be )Tj +/TT10 1 Tf +10 0 0 10 166.7944 461.09 Tm +(WHITESHADE)Tj +/TT8 1 Tf +9 0 0 9 226.8042 461.09 Tm +(.)Tj +/TT4 1 Tf +10 0 0 10 78 433.8 Tm +(Default Icons)Tj +/TT8 1 Tf +9 0 0 9 78 409.09 Tm +0.0489 Tw +(When you shrink a window that has no )Tj +/TT10 1 Tf +10 0 0 10 241.2173 409.09 Tm +0 Tw +(ICONFN)Tj +/TT8 1 Tf +9 0 0 9 277.2231 409.09 Tm +0.0489 Tw +(, the system currently creates an icon that looks like)Tj +-22.1359 -1.3278 TD +0.1756 Tw +[(the windows title bar. You can make the system instead create titled icons by setting the global)]TJ +0 -1.2278 TD +0 Tw +(variable )Tj +/TT10 1 Tf +10 0 0 10 112.418 386.09 Tm +(DEFAULTICONFN)Tj +/TT8 1 Tf +9 0 0 9 190.4306 386.09 Tm +( to the value )Tj +/TT10 1 Tf +10 0 0 10 241.706 386.09 Tm +(TEXTICON)Tj +/TT8 1 Tf +9 0 0 9 289.7139 386.09 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 364.09 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108 364.09 Tm +(TEXTICON)Tj +/TT10 1 Tf +10 0 0 10 151.207 364.09 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 157.208 364.09 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 189.6133 364.09 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 195.6143 364.09 Tm +(TEXT)Tj +/TT10 1 Tf +10 0 0 10 217.2178 364.09 Tm +(\) )Tj +/TT8 1 Tf +9 0 0 9 444.63 364.09 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.09 Tw +(Creates a titled icon window for the main window )Tj +/TT14 1 Tf +23.3715 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.09 Tw +[( containing the text )]TJ +/TT14 1 Tf +9.0949 0 TD +0 Tw +(TEXT)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +(, or)Tj +-38.4674 -1.2944 TD +0 Tw +(the windows title if )Tj +/TT14 1 Tf +9.124 0 TD +(TEXT)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 240.6533 335.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 258.6562 335.49 Tm +(.)Tj +/TT12 1 Tf +-17.4063 -2.4389 TD +(DEFAULTTEXTICON)Tj +/TT8 1 Tf +9.0015 0 TD +[( )-28766.3([Variable])]TJ +-6.3348 -1.85 TD +0.0189 Tw +(The value that )Tj +/TT10 1 Tf +10 0 0 10 185.8757 296.89 Tm +0 Tw +(TEXTICON)Tj +/TT8 1 Tf +9 0 0 9 233.8835 296.89 Tm +0.0189 Tw +[( passes to )]TJ +/TT10 1 Tf +10 0 0 10 274.6562 296.89 Tm +0 Tw +(TITLEDICONW)Tj +/TT8 1 Tf +9 0 0 9 340.667 296.89 Tm +0.0189 Tw +[( as its )]TJ +/TT10 1 Tf +10 0 0 10 365.6105 296.89 Tm +0 Tw +(ICON)Tj +/TT8 1 Tf +9 0 0 9 389.6144 296.89 Tm +0.0189 Tw +[( argument. Initially it is)]TJ +/TT10 1 Tf +10 0 0 10 126 284.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 144.0029 284.89 Tm +0.1878 Tw +[(, which creates an unadorned rectangular window. However, you can set it to a)]TJ +/TT10 1 Tf +10 0 0 10 126 272.89 Tm +0 Tw +(TITLEDICON)Tj +/TT8 1 Tf +9 0 0 9 186.0097 272.89 Tm +0.03 Tw +[( record of your choosing if you would like default icons to have a different)]TJ +-6.6678 -1.3278 TD +0 Tw +(appearance.)Tj +/TT4 1 Tf +10 0 0 10 78 234.6 Tm +(Coordinate Systems, Extents, And Scrolling)Tj +/TT8 1 Tf +9 0 0 9 78 209.94 Tm +0.1256 Tw +[(Note: The word "scrolling" has two distinct meanings when applied to Interlisp-D windows. This)]TJ +0 -1.2222 TD +0.1756 Tw +(section documents the use of "scroll bars" on the left and bottom of a window to move an object)Tj +T* +0.1844 Tw +[(displayed in the window. "Scrolling" also describes the feature where trying to print text off the)]TJ +T* +0.1122 Tw +[(bottom of a window will cause the contents to "scroll up." This second feature is controlled by the)]TJ +0 -1.2278 TD +0 Tw +(function )Tj +/TT10 1 Tf +10 0 0 10 113.6133 165.89 Tm +(DSPSCROLL)Tj +/TT8 1 Tf +9 0 0 9 167.6221 165.89 Tm +( \(see Chapter 27\).)Tj +-9.958 -2.8833 TD +0.0267 Tw +[(One way of thinking of a window is as a "view" onto an object \(e.g. a graph, a file, a picture, etc.\) The)]TJ +0 -1.2222 TD +0.1133 Tw +[(object has its own natural coordinate system in terms of which its subparts are laid out. When the)]TJ +T* +0.0311 Tw +(window is created, the )Tj +/TT10 1 Tf +10.4081 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( Offset and )]TJ +/TT10 1 Tf +5.2174 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0311 Tw +[( Offset of the windows display stream are set to map the origin)]TJ +-16.8257 -1.2889 TD +0.01 Tw +[(of the objects coordinate system into the lower left point of the windows interior region. At the same)]TJ +0 -1.2222 TD +0.1333 Tw +(time, the Clipping Region of the display stream is set to correspond to the interior of the window.)Tj +T* +0.1244 Tw +(From then on, the display streams coordinate system is translated and its clipping region adjusted)Tj +T* +0 Tw +(whenever the window is moved, scrolled or reshaped.)Tj +ET +endstream +endobj +95 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +97 0 obj +<< +/Length 7457 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-24)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0355 Tw +[(There are several distinct regions associated with a window viewing an object. First, there is a region)]TJ +0 -1.2222 TD +0.0222 Tw +[(in the windows coordinate system that contains the complete image of the object. This region \(which)]TJ +T* +0.0867 Tw +(can only be determined by application programs with knowledge of the "semantics" of the object\) is)Tj +0 -1.2278 TD +0.1178 Tw +(stored as the )Tj +/TT10 1 Tf +10 0 0 10 181.7561 536.49 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 217.762 536.49 Tm +0.1178 Tw +[( property of the window \(below\). Second, the clipping region of the display)]TJ +-10.1958 -1.3333 TD +0.0022 Tw +(stream \(obtainable with the function )Tj +/TT10 1 Tf +10 0 0 10 273.1498 524.49 Tm +0 Tw +(DSPCLIPPINGREGION)Tj +/TT8 1 Tf +9 0 0 9 375.1664 524.49 Tm +0.0022 Tw +(, see Chapter 27\) specifies the portion of)Tj +-27.6852 -1.3278 TD +0.0289 Tw +[(the object that is actually visible in the window. This is set so that it corresponds to the interior of the)]TJ +0 -1.2222 TD +0.0422 Tw +[(window \(not including the border or title\). Finally, there is the region on the screen that specifies the)]TJ +T* +0.0033 Tw +(total area that the window occupies, including the border and title. This region \(in screen coordinates\))Tj +0 -1.2278 TD +0.09 Tw +(is stored as the )Tj +/TT10 1 Tf +10 0 0 10 190.4998 479.49 Tm +0 Tw +(REGION)Tj +/TT8 1 Tf +9 0 0 9 226.5056 479.49 Tm +0.09 Tw +[( property of the window \(see the Miscellaneous Window Properties section)]TJ +-11.1673 -1.3278 TD +0 Tw +(below\).)Tj +0 -2.7778 TD +0.0356 Tw +[(The window system supports the idea of scrolling the contents of a window. Scrolling regions are on)]TJ +0 -1.2278 TD +0.2111 Tw +[(the left and the bottom edge of each window. The )]TJ +/TT10 1 Tf +10 0 0 10 349.0133 431.49 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 373.0172 431.49 Tm +0.2111 Tw +[( button is used to indicate upward or)]TJ +-27.4464 -1.3278 TD +0.0911 Tw +(leftward scrolling by the amount necessary to move the selected position to the top or the left edge.)Tj +0 -1.2278 TD +0 Tw +(The )Tj +/TT10 1 Tf +10 0 0 10 144.0044 408.49 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 174.0093 408.49 Tm +0.0767 Tw +[( button is used to indicate downward or rightward scrolling by the amount necessary to)]TJ +-5.3344 -1.3333 TD +0.1544 Tw +[(move the top or left edge to the selected position. The )]TJ +/TT10 1 Tf +10 0 0 10 360.0379 396.49 Tm +0 Tw +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 396.0438 396.49 Tm +0.1544 Tw +[( button is used to indicate global)]TJ +-30.0049 -1.3278 TD +0.1055 Tw +[(placement of the object within the window \(similar to "thumbing" a book\). In the scroll region, the)]TJ +0 -1.2222 TD +0.0167 Tw +[(part of the object that is being viewed by the window is marked with a gray shade. If the whole scroll)]TJ +T* +0.0756 Tw +[(bar is thought of as the entire object, the shaded portion is the portion currently being viewed. This)]TJ +0 -1.2278 TD +0.1744 Tw +(will only occur when the window "knows" how big the object is \(see window property )Tj +/TT10 1 Tf +10 0 0 10 495.7643 351.49 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 531.7702 351.49 Tm +(,)Tj +-45.0856 -1.3278 TD +(below\).)Tj +0 -2.7833 TD +0.0756 Tw +(When the button is released in a scroll region, the function SCROLLW is called. )Tj +/TT10 1 Tf +10 0 0 10 456.0296 314.49 Tm +0 Tw +(SCROLLW)Tj +/TT8 1 Tf +9 0 0 9 498.0364 314.49 Tm +0.0756 Tw +[( calls the)]TJ +-41.3374 -1.3278 TD +0.0033 Tw +(scrolling function associated with the window to do the actual scrolling and provides a programmable)Tj +0 -1.2222 TD +0 Tw +(entry to the scrolling operation.)Tj +/TT10 1 Tf +10 0 0 10 150 269.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 269.26 Tm +(SCROLLW)Tj +/F1 1 Tf +10 0 0 10 193.8 269.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.67 269.26 Tm +(WINDOW DELTAX DELTAY CONTINUOUSFLG)Tj +/TT10 1 Tf +10 0 0 10 380.2999 269.26 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +[( )-9399.9([Function])]TJ +/TT8 1 Tf +9 0 0 9 174 252.26 Tm +0.0133 Tw +(Calls the )Tj +/TT10 1 Tf +10 0 0 10 211.1584 252.26 Tm +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 259.1663 252.26 Tm +0.0133 Tw +[( window property of the window)]TJ +/TT14 1 Tf +14.8777 0 TD +0.0333 Tw +[( WINDOW)]TJ +/TT8 1 Tf +4.234 0 TD +0.0133 Tw +[( with arguments )]TJ +/TT14 1 Tf +7.5713 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT14 1 Tf +-39.7465 -1.3333 TD +(DELTAX)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT14 1 Tf +0.5 0 TD +(DELTAY)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT14 1 Tf +2.1929 0 TD +(CONTINUOUSFLG)Tj +/TT8 1 Tf +7.8013 0 TD +(. See )Tj +/TT10 1 Tf +10 0 0 10 355.604 240.26 Tm +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 403.6118 240.26 Tm +( window property below.)Tj +/TT10 1 Tf +10 0 0 10 150 217.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 217.03 Tm +(SCROLL.HANDLER)Tj +/F1 1 Tf +10 0 0 10 231.6 217.03 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 234.47 217.03 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 266.8752 217.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.8762 217.03 Tm +[( )-23917.1([Function])]TJ +-10.9862 -1.8833 TD +0.0422 Tw +[(This is the function that tracks the mouse while it is in the scroll region. It is called when)]TJ +0 -1.2278 TD +0.06 Tw +[(the cursor leaves a window in either the left or downward direction. If )]TJ +/TT10 1 Tf +10 0 0 10 466.0444 189.03 Tm +0 Tw +(N)Tj +/TT8 1 Tf +9 0 0 9 472.0453 189.03 Tm +( )Tj +/TT14 1 Tf +0.31 0 TD +(MWINDOW)Tj +/TT8 1 Tf +4.2007 0 TD +0.06 Tw +[( does)]TJ +-37.6268 -1.3278 TD +0.0267 Tw +(not have a scroll region for this direction \(e.g. the window has moved or reshaped since it)Tj +0 -1.2278 TD +0.1833 Tw +(was last scrolled\), a scroll region is created that is )Tj +/TT10 1 Tf +10 0 0 10 388.5 166.03 Tm +0 Tw +(SCROLLBARWIDTH)Tj +/TT8 1 Tf +9 0 0 9 472.5137 166.03 Tm +0.1833 Tw +[( wide. It then)]TJ +-33.1682 -1.3278 TD +0.0567 Tw +(waits for )Tj +/TT10 1 Tf +4.2623 0 TD +0 Tw +(SCROLLWAITTIME)Tj +/TT8 1 Tf +8.4014 0 TD +0.0567 Tw +[( milliseconds and if the cursor is still inside the scroll region,)]TJ +-12.6636 -1.2889 TD +0.17 Tw +(it opens a window the size of the scroll region and changes the cursor to indicate the)Tj +0 -1.2222 TD +0 Tw +(scrolling is taking place.)Tj +0 -2 TD +0.0033 Tw +(When a button is pressed, the cursor shape is changed to indicate the type of scrolling \(up,)Tj +0 -1.2278 TD +0.1633 Tw +[(down, left, right or thumb\). After the button is held for )]TJ +/TT10 1 Tf +10 0 0 10 414.0296 102.43 Tm +0 Tw +(WAITBEFORESCROLLTIME)Tj +/TT8 1 Tf +9 0 0 9 174 90.43 Tm +1.2389 Tw +(milliseconds, until the button is released )Tj +/TT10 1 Tf +10 0 0 10 403.7613 90.43 Tm +0 Tw +(SCROLLW)Tj +/TT8 1 Tf +9 0 0 9 445.7682 90.43 Tm +1.2389 Tw +[( is called each)]TJ +/TT10 1 Tf +10 0 0 10 174 78.43 Tm +0 Tw +(WAITBETWEENSCROLLTIME)Tj +/TT8 1 Tf +9 0 0 9 300.0205 78.43 Tm +0.7989 Tw +[( milliseconds. These calls are made with the)]TJ +/TT10 1 Tf +10 0 0 10 174 66.43 Tm +0 Tw +(CONTINUOUSFLG)Tj +/TT8 1 Tf +9 0 0 9 252.0127 66.43 Tm +0.8267 Tw +[( argument set to )]TJ +/TT10 1 Tf +10 0 0 10 348.6003 66.43 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 354.6013 66.43 Tm +0.8267 Tw +[(. If the button is released before)]TJ +/TT10 1 Tf +10 0 0 10 174 54.43 Tm +0 Tw +(WAITBEFORESCROLLTIME)Tj +/TT8 1 Tf +9 0 0 9 294.0195 54.43 Tm +1.3233 Tw +[( milliseconds, )]TJ +/TT10 1 Tf +10 0 0 10 374.5949 54.43 Tm +0 Tw +(SCROLLW)Tj +/TT8 1 Tf +9 0 0 9 416.6017 54.43 Tm +1.3233 Tw +[( is called with the)]TJ +/TT10 1 Tf +10 0 0 10 174 42.43 Tm +0 Tw +(CONTINUOUSFLG)Tj +/TT8 1 Tf +9 0 0 9 252.0127 42.43 Tm +( argument set to )Tj +/TT10 1 Tf +10 0 0 10 318.8403 42.43 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 336.8432 42.43 Tm +(.)Tj +ET +endstream +endobj +98 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +100 0 obj +<< +/Length 8627 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-25)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.0589 Tw +(The arguments passed to )Tj +/TT10 1 Tf +10 0 0 10 230.1127 569.49 Tm +0 Tw +(SCROLLW)Tj +/TT8 1 Tf +9 0 0 9 272.1195 569.49 Tm +0.0589 Tw +[( depend on the mouse button. If the )]TJ +/TT10 1 Tf +10 0 0 10 423.6449 569.49 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 447.6488 569.49 Tm +0.0589 Tw +[( button is)]TJ +-35.7388 -1.3333 TD +0.0033 Tw +(used in the vertical scroll region, )Tj +/TT10 1 Tf +10 0 0 10 258.0994 557.49 Tm +0 Tw +(DY)Tj +/TT8 1 Tf +9 0 0 9 270.1014 557.49 Tm +0.0001 Tc +0.0032 Tw +( is distance from cursor position at the time the button)Tj +-16.0113 -1.3333 TD +0 Tc +0.15 Tw +(was released to the top of the window and )Tj +/TT10 1 Tf +10 0 0 10 309.6422 545.49 Tm +0 Tw +(DX)Tj +/TT8 1 Tf +9 0 0 9 321.6441 545.49 Tm +0.15 Tw +[( is 0. If the )]TJ +/TT10 1 Tf +10 0 0 10 374.9419 545.49 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 404.9467 545.49 Tm +0.15 Tw +[( button is used, the)]TJ +-30.9941 -1.3333 TD +0.0978 Tw +(inverse of this quantity is used for )Tj +/TT10 1 Tf +10 0 0 10 270.012 533.49 Tm +0 Tw +(DY)Tj +/TT8 1 Tf +9 0 0 9 282.014 533.49 Tm +0.0978 Tw +[( and 0 for )]TJ +/TT10 1 Tf +10 0 0 10 325.7351 533.49 Tm +0 Tw +(DX)Tj +/TT8 1 Tf +9 0 0 9 337.7371 533.49 Tm +0.0978 Tw +[(. If the )]TJ +/TT10 1 Tf +10 0 0 10 374.1512 533.49 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 398.1552 533.49 Tm +0.0978 Tw +[( button is used in the)]TJ +-30.2395 -1.3333 TD +0.0422 Tw +(horizontal scroll region, )Tj +/TT10 1 Tf +10 0 0 10 224.3294 521.49 Tm +0 Tw +(DX)Tj +/TT8 1 Tf +9 0 0 9 236.3314 521.49 Tm +0.0422 Tw +[( is distance from cursor position to left of the window and )]TJ +/TT10 1 Tf +10 0 0 10 473.9905 521.49 Tm +0 Tw +(DY)Tj +/TT8 1 Tf +9 0 0 9 126 509.49 Tm +(is 0. If the )Tj +/TT10 1 Tf +10 0 0 10 168.9477 509.49 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 198.9526 509.49 Tm +( button is used, the inverse of this quantity is used for )Tj +/TT10 1 Tf +10 0 0 10 414.7021 509.49 Tm +(DX)Tj +/TT8 1 Tf +9 0 0 9 426.7041 509.49 Tm +( and 0 for )Tj +/TT10 1 Tf +4.4668 0 TD +(DY)Tj +/TT8 1 Tf +1.2002 0 TD +(.)Tj +-39.0786 -2.1111 TD +0.07 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 150.2741 490.49 Tm +0 Tw +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 186.28 490.49 Tm +0.07 Tw +[( button is pressed, the distance argument to )]TJ +/TT10 1 Tf +10 0 0 10 367.3078 490.49 Tm +0 Tw +(SCROLLW)Tj +/TT8 1 Tf +9 0 0 9 409.3146 490.49 Tm +0.07 Tw +[( will be a )]TJ +/TT10 1 Tf +10 0 0 10 449.988 490.49 Tm +0 Tw +(FLOATP)Tj +/TT8 1 Tf +9 0 0 9 126 478.54 Tm +0.0667 Tw +(between 0.0 and 1.0 that indicates the proportion of the distance the cursor was from the)Tj +0 -1.2222 TD +0 Tw +(left or top edge to the right or bottom edge.)Tj +2.6667 -2 TD +0.4889 Tw +[(Note: )488.9( )87.7(The scrolling regions will not come up if the window has a)]TJ +/TT10 1 Tf +10 0 0 10 180 438.49 Tm +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 228.0078 438.49 Tm +1.0989 Tw +[( window property of NIL, has a non-)]TJ +/TT10 1 Tf +10 0 0 10 443.9712 438.49 Tm +0 Tw +(NIL)Tj +-26.3971 -1.2 TD +(NOSCROLLBARS)Tj +/TT8 1 Tf +9 0 0 9 252.0117 426.49 Tm +0.23 Tw +[( window property, or if its )]TJ +/TT10 1 Tf +10 0 0 10 372.0098 426.49 Tm +0 Tw +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 180 414.49 Tm +(property has certain values and its )Tj +/TT10 1 Tf +10 0 0 10 319.6626 414.49 Tm +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 355.6685 414.49 Tm +( is fully visible.)Tj +/TT10 1 Tf +10 0 0 10 102 391.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 391.26 Tm +(SCROLLBYREPAINTFN)Tj +/F1 1 Tf +10 0 0 10 199.8 391.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 202.67 391.26 Tm +(WINDOW DELTAX DELTAY CONTINUOUSFLG)Tj +/TT10 1 Tf +10 0 0 10 386.2999 391.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 392.3008 391.26 Tm +[( )-5314.4([Function])]TJ +/TT10 1 Tf +10 0 0 10 126 374.26 Tm +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 228.0166 374.26 Tm +0.0989 Tw +[( is the standard scrolling function which should be used as the)]TJ +/TT10 1 Tf +10 0 0 10 126 362.26 Tm +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 174.0078 362.26 Tm +( property for most scrolling windows.)Tj +-5.3342 -2.1111 TD +0.0089 Tw +(This function, when used as a )Tj +/TT10 1 Tf +10 0 0 10 246.9385 343.26 Tm +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 294.9463 343.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 299.5263 343.26 Tm +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 335.5321 343.26 Tm +0.0089 Tw +(s the bits that will remain visible after)Tj +-23.2814 -1.3278 TD +0.2067 Tw +(the scroll to their new location, fills the newly exposed area with texture, adjusts the)Tj +0 -1.2278 TD +0.1267 Tw +(windows coordinates and then calls the windows )Tj +/TT10 1 Tf +10 0 0 10 338.2026 320.26 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 392.2114 320.26 Tm +0.1267 Tw +[( on the newly exposed)]TJ +-29.5791 -1.3278 TD +0 Tw +(region. Thus this function will scroll any window that has a repaint function.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +0.9299 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.01 Tw +[( has an )]TJ +/TT10 1 Tf +10 0 0 10 197.0856 290.26 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 233.0914 290.26 Tm +0.01 Tw +[( property, )]TJ +/TT10 1 Tf +10 0 0 10 275.1161 290.26 Tm +0 Tw +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 377.1328 290.26 Tm +0.01 Tw +[( will limit scrolling in the )]TJ +/TT10 1 Tf +10 0 0 10 479.995 290.26 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 126 278.26 Tm +(and )Tj +/TT10 1 Tf +10 0 0 10 143.4858 278.26 Tm +(Y)Tj +/TT8 1 Tf +9 0 0 9 149.4868 278.26 Tm +( directions according to the value of the window property )Tj +/TT10 1 Tf +10 0 0 10 381.8477 278.26 Tm +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 471.8623 278.26 Tm +(.)Tj +-38.4291 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.921 0 TD +(DELTAX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0003 Tc +0.0008 Tw +( or )Tj +/TT14 1 Tf +1.4431 0 TD +0 Tc +0 Tw +(DELTAY)Tj +/TT8 1 Tf +3.6006 0 TD +0.0002 Tc +0.0009 Tw +( is a )Tj +/TT10 1 Tf +10 0 0 10 229.8017 259.26 Tm +0 Tc +0 Tw +(FLOATP)Tj +/TT8 1 Tf +9 0 0 9 265.8075 259.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 270.3175 259.26 Tm +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 372.3341 259.26 Tm +0.0011 Tw +( will position the window so)Tj +-27.3705 -1.3333 TD +0 Tw +(that its top or left edge will be positioned at that proportion of its )Tj +/TT10 1 Tf +10 0 0 10 386.9033 247.26 Tm +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 422.9092 247.26 Tm +(. If the window)Tj +-32.9899 -1.3333 TD +(does not have an )Tj +/TT10 1 Tf +10 0 0 10 195.4951 235.26 Tm +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 231.501 235.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 236.001 235.26 Tm +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 338.0175 235.26 Tm +( will do nothing.)Tj +-23.5575 -2.1111 TD +(If )Tj +/TT14 1 Tf +1.1644 0 TD +(CONTINUOUSFLG)Tj +/TT8 1 Tf +7.8013 0 TD +0.2444 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 240.411 216.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 258.4139 216.26 Tm +0.2444 Tw +(, this indicates that the scrolling button is being held)Tj +-14.7127 -1.3333 TD +0.2522 Tw +[(down. In this case, )]TJ +/TT10 1 Tf +10 0 0 10 215.7528 204.26 Tm +0 Tw +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 317.7694 204.26 Tm +0.2522 Tw +[( will scroll the distance of one linefeed)]TJ +-21.3077 -1.3333 TD +0 Tw +(height \(as returned by )Tj +/TT10 1 Tf +10 0 0 10 216.4746 192.26 Tm +(DSPLINEFEED)Tj +/TT8 1 Tf +9 0 0 9 282.4853 192.26 Tm +(, see Chapter 27\).)Tj +-22.7206 -2.8833 TD +(Scrolling is controlled by the following window properties:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(EXTENT)Tj +/TT8 1 Tf +3.6 0 TD +[( )-29883.3([Window Property])]TJ +-0.9333 -1.85 TD +0.0156 Tw +[(Used to limit scrolling operations. Accesses the extent region of the window. If non-)]TJ +/TT10 1 Tf +10 0 0 10 465.7978 128.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 483.8007 128.66 Tm +(,)Tj +-39.7556 -1.3333 TD +(the )Tj +/TT10 1 Tf +10 0 0 10 141.0748 116.66 Tm +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 177.0807 116.66 Tm +0.0378 Tw +[( is a region in the windows display stream that contains the complete image)]TJ +-5.6756 -1.3278 TD +0.0944 Tw +[(of the object being viewed by the window. User programs are responsible for updating)]TJ +0 -1.2278 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 142.0049 93.66 Tm +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 178.0107 93.66 Tm +0.1411 Tw +[(. The functions )]TJ +/TT10 1 Tf +10 0 0 10 246.5829 93.66 Tm +0 Tw +(UNIONREGIONS)Tj +/TT8 1 Tf +9 0 0 9 318.5946 93.66 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 324.3646 93.66 Tm +(EXTENDREGION)Tj +/TT8 1 Tf +9 0 0 9 396.3763 93.66 Tm +0.1411 Tw +(, etc. \(see Chapter 27\))Tj +-30.0418 -1.3278 TD +0 Tw +(are useful for computing a new extent region.)Tj +0 -2.0056 TD +0.1367 Tw +(In some situations, it is useful to define an )Tj +/TT10 1 Tf +10 0 0 10 306.7868 63.66 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 342.7926 63.66 Tm +0.1367 Tw +[( that only exists in one dimension.)]TJ +-24.0881 -1.3333 TD +0.31 Tw +(This may be done by specifying an )Tj +/TT10 1 Tf +10 0 0 10 285.9045 51.66 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 321.9103 51.66 Tm +0.31 Tw +[( region with a width or height of -1.)]TJ +ET +endstream +endobj +101 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +103 0 obj +<< +/Length 5976 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-26)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +7.8 -4.251 TD +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 222.0078 569.49 Tm +0.2322 Tw +[( handling recognizes this situation as meaning that the negative EXTENT)]TJ +-5.3342 -1.3278 TD +0 Tw +(dimension is unknown.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(SCROLLFN)Tj +/TT8 1 Tf +4.8 0 TD +[( )-28683.3([Window Property])]TJ +-2.1333 -1.85 TD +0.05 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 197.9141 519.89 Tm +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 245.922 519.89 Tm +0.05 Tw +[( property is )]TJ +/TT10 1 Tf +10 0 0 10 295.5503 519.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 313.5532 519.89 Tm +0.05 Tw +[(, the window will not scroll. Otherwise, it should be a)]TJ +-15.5059 -1.3278 TD +0.0222 Tw +[(function of four arguments: \(1\) the window being scrolled, \(2\) the distance to scroll in the)]TJ +0 -1.2222 TD +0.1756 Tw +(horizontal direction \(positive to right, negative to left\), \(3\) the distance to scroll in the)Tj +T* +0.1211 Tw +(vertical direction \(positive up, negative down\), and \(4\) a flag which is T if the scrolling)Tj +0 -1.2278 TD +0.1767 Tw +[(button is being held down. For more information, see )]TJ +/TT10 1 Tf +10 0 0 10 406.8448 474.89 Tm +0 Tw +(SCROLL)Tj +/TT8 1 Tf +9 0 0 9 442.8507 474.89 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 445.1007 474.89 Tm +(HANDLER)Tj +/TT8 1 Tf +9 0 0 9 487.1075 474.89 Tm +0.1767 Tw +[(. For most)]TJ +-34.7897 -1.3333 TD +0 Tw +(scrolling windows, the )Tj +/TT10 1 Tf +10 0 0 10 266.9575 462.89 Tm +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 314.9653 462.89 Tm +( function should be )Tj +/TT10 1 Tf +10 0 0 10 394.1284 462.89 Tm +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 496.145 462.89 Tm +(.)Tj +/TT12 1 Tf +-38.4606 -2.4389 TD +(NOSCROLLBARS)Tj +/TT8 1 Tf +7.2 0 TD +[( )-26283.3([Window Property])]TJ +-4.5333 -1.85 TD +0.1011 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 198.8341 424.29 Tm +0 Tw +(NOSCROLLBARS)Tj +/TT8 1 Tf +9 0 0 9 270.8459 424.29 Tm +0.1011 Tw +[( property is non-)]TJ +/TT10 1 Tf +10 0 0 10 340.2409 424.29 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 358.2438 424.29 Tm +0.1011 Tw +(, scroll bars will not be brought up for this)Tj +-20.4715 -1.3278 TD +0.1378 Tw +[(window. This disables mouse-driven scrolling of a window. This window can still be)]TJ +0 -1.2278 TD +0 Tw +(scrolled using )Tj +/TT10 1 Tf +10 0 0 10 231.9287 401.29 Tm +(SCROLLW)Tj +/TT8 1 Tf +9 0 0 9 273.9355 401.29 Tm +(.)Tj +/TT12 1 Tf +-13.7706 -2.4389 TD +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9.0015 0 TD +[( )-24481.9([Window Property])]TJ +/TT10 1 Tf +10 0 0 10 174 362.69 Tm +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 276.0166 362.69 Tm +0.1044 Tw +[( uses the )]TJ +/TT10 1 Tf +10 0 0 10 315.4386 362.69 Tm +0 Tw +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 405.4533 362.69 Tm +0.1044 Tw +[( window property to limit how)]TJ +-25.717 -1.3333 TD +0.6767 Tw +(far scrolling can go in the )Tj +/TT10 1 Tf +10 0 0 10 313.4643 350.69 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 319.4653 350.69 Tm +0.6767 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 351.3811 350.69 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 357.3821 350.69 Tm +0.6767 Tw +[( directions. The possible values for)]TJ +/TT10 1 Tf +10 0 0 10 174 338.69 Tm +0 Tw +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 264.0146 338.69 Tm +( and their interpretations are:)Tj +/TT10 1 Tf +10 0 0 10 192 319.69 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 222 319.69 Tm +0.0478 Tw +[(This will keep the extent region visible or near visible. It will not scroll)]TJ +0 -1.3278 TD +0.0089 Tw +(the window so that the top of the extent is below the top of the window,)Tj +0 -1.2222 TD +0.16 Tw +(the bottom of the extent is more than one point above the top of the)Tj +T* +0.0133 Tw +(window, the left of the extent is to the right of the window and the right)Tj +0 -1.2278 TD +0.0633 Tw +[(of the extent is to the left of the window. The )]TJ +/TT10 1 Tf +10 0 0 10 411.2306 274.69 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 447.2365 274.69 Tm +0.0633 Tw +[( can be scrolled)]TJ +-25.0263 -1.3278 TD +0.04 Tw +(to just above the window to provide a way of "hiding" the contents of a)Tj +0 -1.2222 TD +0.0756 Tw +[(window. In this mode the extent is either in the window or just of the)]TJ +T* +0 Tw +(top of the window.)Tj +/TT10 1 Tf +10 0 0 10 204 222.69 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 222 222.69 Tm +0.2411 Tw +[(The extent is not used to control scrolling. The user can scroll the)]TJ +0 -1.3333 TD +0.0822 Tw +[(window to anywhere. Having the )]TJ +/TT10 1 Tf +10 0 0 10 365.4039 210.69 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 401.4097 210.69 Tm +0.0822 Tw +[( window property does all)]TJ +-19.9344 -1.3278 TD +0.1767 Tw +(thumb scrolling to be supported so that the user can get back to the)Tj +/TT10 1 Tf +10 0 0 10 222 187.69 Tm +0 Tw +(EXTENT)Tj +/TT8 1 Tf +9 0 0 9 258.0058 187.69 Tm +( by thumb scrolling.)Tj +/TT10 1 Tf +10 0 0 10 180 168.69 Tm +(LIMIT)Tj +/TT8 1 Tf +9 0 0 9 222 168.69 Tm +0.0344 Tw +[(This will keep the extent region visible. The window is only allowed to)]TJ +T* +0 Tw +(view within the extent.)Tj +/TT10 1 Tf +10 0 0 10 204 138.69 Tm +(+)Tj +/TT8 1 Tf +9 0 0 9 222 138.69 Tm +0.3256 Tw +(This will keep the extent region visible or just off in the positive)Tj +0 -1.3333 TD +0.0589 Tw +(direction in either )Tj +/TT10 1 Tf +10 0 0 10 296.8512 126.69 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 302.8522 126.69 Tm +0.0589 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 316.8805 126.69 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 322.8814 126.69 Tm +0.0589 Tw +[( \(i.e., the image will be either be visible or just)]TJ +-11.2091 -1.3278 TD +0 Tw +(off to the top and/or right.\))Tj +/TT10 1 Tf +10 0 0 10 204 96.69 Tm +(-)Tj +/TT8 1 Tf +9 0 0 9 222 96.69 Tm +0.3044 Tw +(This will keep the extent region visible or just off in the negative)Tj +0 -1.3333 TD +0.0589 Tw +(direction in either )Tj +/TT10 1 Tf +10 0 0 10 296.8512 84.69 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 302.8522 84.69 Tm +0.0589 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 316.8805 84.69 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 322.8814 84.69 Tm +0.0589 Tw +[( \(i.e., the image will be either be visible or just)]TJ +-11.2091 -1.3278 TD +0 Tw +(off to the left and/or bottom\).)Tj +/TT10 1 Tf +10 0 0 10 198 54.69 Tm +(+-)Tj +ET +endstream +endobj +104 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +106 0 obj +<< +/Length 6131 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-27)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-25.8 -4.251 TD +(-+)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.0167 Tw +(This will keep the extent region visible or just off in the window \(i.e. the)Tj +0 -1.3278 TD +0 Tw +(image will be either be visible or just off to the left, bottom, top or right\).)Tj +/TT10 1 Tf +10 0 0 10 54.03 539.49 Tm +(\(XBEHAVIOR . YBEHAVIOR\))Tj +/TT8 1 Tf +9 0 0 9 198 539.49 Tm +0.0322 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 221.5941 539.49 Tm +0 Tw +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 311.6088 539.49 Tm +0.0322 Tw +[( is a list, the )]TJ +/TT10 1 Tf +10 0 0 10 361.9655 539.49 Tm +0 Tw +(CAR)Tj +/TT8 1 Tf +9 0 0 9 379.9685 539.49 Tm +0.0322 Tw +[( is interpreted as the)]TJ +-22.8854 -1.3333 TD +0.0144 Tw +(scrolling limit in the )Tj +/TT10 1 Tf +10 0 0 10 256.979 527.49 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 262.9799 527.49 Tm +0.0144 Tw +[( behavior and the )]TJ +/TT10 1 Tf +10 0 0 10 335.4208 527.49 Tm +0 Tw +(CDR)Tj +/TT8 1 Tf +9 0 0 9 353.4238 527.49 Tm +0.0144 Tw +[( as the scrolling limit in the)]TJ +/TT10 1 Tf +10 0 0 10 174 515.49 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 180.001 515.49 Tm +0.0689 Tw +[( behavior. )]TJ +/TT10 1 Tf +10 0 0 10 226.0612 515.49 Tm +0 Tw +(XBEHAVIOR)Tj +/TT8 1 Tf +9 0 0 9 280.0699 515.49 Tm +0.0689 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 301.0458 515.49 Tm +0 Tw +(YBEHAVIOR)Tj +/TT8 1 Tf +9 0 0 9 355.0546 515.49 Tm +0.0689 Tw +[( should each be one of the)]TJ +-20.1172 -1.3333 TD +0 Tw +(atoms )Tj +/TT10 1 Tf +10 0 0 10 200.9484 503.49 Tm +0.157 Tw +(\(NIL T LIMIT + - +- -+\))Tj +/TT8 1 Tf +9 0 0 9 348.3908 503.49 Tm +0.0656 Tw +[(. The interpretations of the)]TJ +-19.3768 -1.3333 TD +0 Tw +(atoms is the same as above except that )Tj +/TT10 1 Tf +10 0 0 10 328.916 491.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 346.9189 491.49 Tm +( is equivalent to )Tj +/TT10 1 Tf +10 0 0 10 412.2876 491.49 Tm +(LIMIT)Tj +/TT8 1 Tf +9 0 0 9 442.2925 491.49 Tm +(.)Tj +-29.8103 -2.1111 TD +0.0078 Tw +(Note: The )Tj +/TT10 1 Tf +10 0 0 10 215.5936 472.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 233.5965 472.49 Tm +0.0078 Tw +[( value of )]TJ +/TT10 1 Tf +10 0 0 10 270.4086 472.49 Tm +0 Tw +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 360.4232 472.49 Tm +0.0078 Tw +[( is equivalent to )]TJ +/TT10 1 Tf +10 0 0 10 426.0719 472.49 Tm +0 Tw +(\(LIMIT)Tj +-25.2072 -1.2 TD +(. +\))Tj +/TT8 1 Tf +9 0 0 9 198.0039 460.49 Tm +(.)Tj +-2.6671 -2.1111 TD +0.0989 Tw +[(Example: If the )]TJ +/TT10 1 Tf +10 0 0 10 242.2519 441.49 Tm +0 Tw +(SCROLLEXTENTUSE)Tj +/TT8 1 Tf +9 0 0 9 332.2665 441.49 Tm +0.0989 Tw +[( window property of a window)]TJ +-17.5852 -1.3333 TD +0.1667 Tw +(\(with an extent defined\) is )Tj +/TT10 1 Tf +10 0 0 10 288.063 429.49 Tm +0.4 Tw +(\(LIMIT . T\))Tj +/TT8 1 Tf +9 0 0 9 362.0737 429.49 Tm +0.1667 Tw +(, the window will scroll)Tj +-20.8971 -1.3333 TD +0.11 Tw +(uncontrolled in the )Tj +/TT10 1 Tf +10 0 0 10 255.3245 417.49 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 261.3254 417.49 Tm +0.11 Tw +[( dimension but be limited to the extent region in)]TJ +-9.7028 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 188.7348 405.49 Tm +(X)Tj +/TT8 1 Tf +9 0 0 9 194.7358 405.49 Tm +( dimension.)Tj +/TT4 1 Tf +10 0 0 10 78 378.2 Tm +(Mouse Activity in Windows)Tj +/TT8 1 Tf +9 0 0 9 78 353.54 Tm +0.2567 Tw +(The following window properties allow the user to control the response to mouse activity in a)Tj +0 -1.2278 TD +0.0422 Tw +[(window. The value of these properties, if non-)]TJ +/TT10 1 Tf +10 0 0 10 267.1836 342.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 285.1865 342.49 Tm +0.0422 Tw +(, should be a function that will be called \(with the)Tj +-23.0207 -1.3278 TD +0 Tw +(window as argument\) when the specified event occurs.)Tj +0 -2.7778 TD +0.1656 Tw +(These functions should be "self-contained", communicating with the outside world solely via their)Tj +0 -1.2222 TD +0.23 Tw +[(window argument, e.g., by setting window properties. In particular, these functions should not)]TJ +T* +0.0989 Tw +(expect to access variables bound on the stack, as the stack context is formally undefined at the time)Tj +T* +0.0056 Tw +[(these functions are called. Since the functions are invoked asynchronously, they perform any terminal)]TJ +T* +0 Tw +(input/output operations from their own window.)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(WINDOWENTRYFN)Tj +/TT8 1 Tf +7.8 0 TD +[( )-25683.3([Window Property])]TJ +-5.1333 -1.8444 TD +0.2967 Tw +(Whenever a button goes down in the window and the process associated with the)Tj +0 -1.2278 TD +0.4278 Tw +(window is not the tty process, the )Tj +/TT10 1 Tf +10 0 0 10 289.409 212.89 Tm +0 Tw +(WINDOWENTRYFN)Tj +/TT8 1 Tf +9 0 0 9 367.4216 212.89 Tm +0.4278 Tw +[( is called. The default is)]TJ +/TT10 1 Tf +10 0 0 10 126 200.89 Tm +0 Tw +(GIVE.TTY.PROCESS)Tj +/TT8 1 Tf +9 0 0 9 222.0156 200.89 Tm +0.0522 Tw +[( which gives the process associated with the window the tty and)]TJ +-10.6684 -1.3333 TD +0.0478 Tw +(calls the )Tj +/TT10 1 Tf +10 0 0 10 161.3922 188.89 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 239.4049 188.89 Tm +0.0478 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 247.0149 188.89 Tm +0 Tw +(WINDOWENTRYFN)Tj +/TT8 1 Tf +9 0 0 9 325.0276 188.89 Tm +0.0478 Tw +[( can be a list of functions and all will be)]TJ +-22.1142 -1.3278 TD +0 Tw +(called. )Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(CURSORINFN)Tj +/TT8 1 Tf +6 0 TD +[( )-27483.3([Window Property])]TJ +-3.3333 -1.85 TD +0.4867 Tw +(Whenever the mouse moves into the window, the )Tj +/TT10 1 Tf +10 0 0 10 361.2592 139.29 Tm +0 Tw +(CURSORINFN)Tj +/TT8 1 Tf +9 0 0 9 421.269 139.29 Tm +0.4867 Tw +[( is called. If)]TJ +/TT10 1 Tf +10 0 0 10 126 127.29 Tm +0 Tw +(CURSORINFN)Tj +/TT8 1 Tf +9 0 0 9 186.0097 127.29 Tm +( is a list of functions, all will be called.)Tj +/TT12 1 Tf +-9.3344 -2.4389 TD +(CURSOROUTFN)Tj +/TT8 1 Tf +6.6 0 TD +[( )-26883.3([Window Property])]TJ +-3.9333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 143.4444 88.69 Tm +(CURSOROUTFN)Tj +/TT8 1 Tf +9 0 0 9 209.4552 88.69 Tm +0.0144 Tw +[( is called when the cursor leaves the window. If )]TJ +/TT10 1 Tf +10 0 0 10 404.3325 88.69 Tm +0 Tw +(CURSOROUTFN)Tj +/TT8 1 Tf +9 0 0 9 470.3432 88.69 Tm +0.0144 Tw +[( is a)]TJ +-38.2604 -1.3278 TD +0 Tw +(list of functions, all will be called.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(CURSORMOVEDFN)Tj +/TT8 1 Tf +7.8 0 TD +[( )-25683.3([Window Property])]TJ +ET +endstream +endobj +107 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +109 0 obj +<< +/Length 6372 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-28)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +(The )Tj +/TT10 1 Tf +10 0 0 10 194.0644 569.49 Tm +(CURSORMOVEDFN)Tj +/TT8 1 Tf +9 0 0 9 272.0771 569.49 Tm +0.3056 Tw +[( is called whenever the cursor has moved and is inside the)]TJ +-10.8975 -1.3333 TD +0.0033 Tw +(window. )Tj +/TT10 1 Tf +10 0 0 10 214.0898 557.49 Tm +0 Tw +(CURSORMOVEDFN)Tj +/TT8 1 Tf +9 0 0 9 292.1024 557.49 Tm +0.0001 Tc +0.0032 Tw +( can be a list of functions and all will be called. This allows a)Tj +-13.1225 -1.3278 TD +0 Tc +0.7511 Tw +(window function to implement "active" regions within itself by having its)Tj +/TT10 1 Tf +10 0 0 10 174 534.49 Tm +0 Tw +(CURSORMOVEDFN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 534.49 Tm +0.1389 Tw +[( determine if the cursor is in a region of interest, and if so, perform)]TJ +-8.6681 -1.3278 TD +0 Tw +(some action.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(BUTTONEVENTFN)Tj +/TT8 1 Tf +7.8 0 TD +[( )-25683.3([Window Property])]TJ +-5.1333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 191.9044 484.89 Tm +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 269.9171 484.89 Tm +0.0656 Tw +[( is called whenever there is a change in the state \(up or down\) of)]TJ +-10.6575 -1.3278 TD +0.47 Tw +[(the mouse buttons inside the window. Changes to the mouse state while the)]TJ +/TT10 1 Tf +10 0 0 10 174 461.89 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 461.89 Tm +0.2444 Tw +[( is running will not be interpreted as new button events, and the)]TJ +/TT10 1 Tf +10 0 0 10 174 449.89 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 449.89 Tm +( will not be re-invoked.)Tj +/TT12 1 Tf +-11.3347 -2.4389 TD +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +7.8 0 TD +[( )-25683.3([Window Property])]TJ +-5.1333 -1.85 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 194.8444 411.29 Tm +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 272.8571 411.29 Tm +0.3922 Tw +[( is called in lieu of the standard window menu operation)]TJ +/TT10 1 Tf +10 0 0 10 174 399.29 Tm +0 Tw +(\(DOWINDOWCOM\))Tj +/TT8 1 Tf +9 0 0 9 252.0127 399.29 Tm +0.0078 Tw +[( when the )]TJ +/TT10 1 Tf +10 0 0 10 293.751 399.29 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 323.7559 399.29 Tm +0.0078 Tw +[( button is depressed in a window. More specifically,)]TJ +-16.6395 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 189.1448 387.29 Tm +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 267.1575 387.29 Tm +0.0456 Tw +[( is called instead of the )]TJ +/TT10 1 Tf +10 0 0 10 362.4037 387.29 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 440.4164 387.29 Tm +0.0456 Tw +[( when )]TJ +/TT10 1 Tf +10 0 0 10 468.0298 387.29 Tm +0 Tw +(\(MOUSESTATE)Tj +-29.403 -1.2 TD +0.068 Tw +(\(ONLY RIGHT\)\))Tj +/TT8 1 Tf +9 0 0 9 252.6927 375.29 Tm +0.0278 Tw +[(. If the )]TJ +/TT10 1 Tf +10 0 0 10 283.4568 375.29 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 313.4617 375.29 Tm +0.0278 Tw +[( button is to be treated like any other key in a window,)]TJ +-15.4957 -1.3333 TD +0 Tw +(supply )Tj +/TT10 1 Tf +10 0 0 10 203.9355 363.29 Tm +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 281.9482 363.29 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 301.6841 363.29 Tm +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 379.6967 363.29 Tm +( with the same function.)Tj +-22.8552 -2.1111 TD +0.1033 Tw +(When an application program defines its own )Tj +/TT10 1 Tf +10 0 0 10 365.2429 344.29 Tm +0 Tw +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 443.2556 344.29 Tm +0.1033 Tw +(, there is a convention)Tj +-29.9173 -1.3333 TD +0.1211 Tw +(that the default )Tj +/TT10 1 Tf +10 0 0 10 240.4018 332.29 Tm +0 Tw +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 318.4145 332.29 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 324.0045 332.29 Tm +(DOWINDOWCOM)Tj +/TT8 1 Tf +9 0 0 9 390.0153 332.29 Tm +0.1211 Tw +[( , may be executed by pressing the)]TJ +/TT10 1 Tf +10 0 0 10 174 320.29 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 204.0049 320.29 Tm +0.3978 Tw +[( button when the cursor is in the header or border of a window. User)]TJ +/TT10 1 Tf +10 0 0 10 174 308.29 Tm +0 Tw +(RIGHTBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 308.29 Tm +0.0178 Tw +(s are encouraged to follow this convention, by calling )Tj +/TT10 1 Tf +10 0 0 10 467.9761 308.29 Tm +0 Tw +(DOWINDOWCOM)Tj +/TT8 1 Tf +9 0 0 9 174 296.34 Tm +(if the cursor is not in the interior region of the window.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(BACKGROUNDBUTTONEVENTFN)Tj +/TT8 1 Tf +13.8 0 TD +[( )-23967.8([Variable])]TJ +/TT12 1 Tf +-13.8 -1.0667 TD +(BACKGROUNDCURSORINFN)Tj +/TT8 1 Tf +12 0 TD +[( )-25767.8([Variable])]TJ +/TT12 1 Tf +-12 -1.0667 TD +(BACKGROUNDCURSOROUTFN)Tj +/TT8 1 Tf +12.6 0 TD +[( )-25167.8([Variable])]TJ +/TT12 1 Tf +-12.6 -1.0667 TD +(BACKGROUNDCURSORMOVEDFN)Tj +/TT8 1 Tf +13.8 0 TD +[( )-23967.8([Variable])]TJ +-11.1333 -1.8444 TD +0.0389 Tw +(These variables provide a way of taking action when there is cursor action and the cursor)Tj +0 -1.2222 TD +0.0422 Tw +[(in in the background. They are interpreted like the corresponding window properties. If)]TJ +T* +0.2011 Tw +(set to the name of a function, that function will be called, respectively, whenever the)Tj +T* +0.2655 Tw +(cursor is in the background and a button changes, when the cursor moves into the)Tj +T* +0.0156 Tw +(background from a window, when the cursor moved from the background into a window)Tj +T* +0 Tw +(and when the cursor moves from one place in the background to another.)Tj +/TT4 1 Tf +10 0 0 10 126 148.6 Tm +(Terminal I/O and Page Holding)Tj +/TT8 1 Tf +9 0 0 9 126 123.94 Tm +0.0211 Tw +[(Each process has its own terminal i/o stream \(accessed as the stream T, see Chapter 25\). The terminal)]TJ +T* +0.2456 Tw +(i/o stream for the current process can be changed to point to a window by using the function)Tj +/TT10 1 Tf +10 0 0 10 126 101.89 Tm +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 222.0156 101.89 Tm +(, so that output and echoing of type-in is directed to a window.)Tj +/TT10 1 Tf +10 0 0 10 150 78.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 78.66 Tm +(TTYDISPLAYSTREAM)Tj +/F1 1 Tf +10 0 0 10 242.4 78.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 245.27 78.66 Tm +(DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 315.4814 78.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 321.4824 78.66 Tm +[( )-18516.4([Function])]TJ +-16.3869 -1.8833 TD +0.0144 Tw +(Selects the display stream or window )Tj +/TT14 1 Tf +16.8611 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0144 Tw +[( to be the terminal output channel,)]TJ +-24.6624 -1.2944 TD +0.14 Tw +(and returns the previous terminal output display stream. )Tj +/TT10 1 Tf +10 0 0 10 416.8307 50.06 Tm +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 512.8463 50.06 Tm +0.14 Tw +[( puts)]TJ +ET +endstream +endobj +110 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +112 0 obj +<< +/Length 7229 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-29)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT14 1 Tf +9 0 0 9 126 569.49 Tm +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.1078 Tw +[( into scrolling mode and calls )]TJ +/TT10 1 Tf +10 0 0 10 321.0661 569.49 Tm +0 Tw +(PAGEHEIGHT)Tj +/TT8 1 Tf +9 0 0 9 381.0758 569.49 Tm +0.1078 Tw +[( with the number of lines)]TJ +-28.3418 -1.3278 TD +(that will fit into )Tj +/TT14 1 Tf +7.5678 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.1078 Tw +[( given its current Font and Clipping Region. The line)]TJ +-15.3691 -1.2944 TD +0.1778 Tw +(length of )Tj +/TT10 1 Tf +10 0 0 10 166.9578 545.89 Tm +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 262.9734 545.89 Tm +0.1778 Tw +[( is computed \(like any other display stream\) from its)]TJ +-15.2193 -1.3278 TD +0.1044 Tw +[(Left Margin, Right Margin, and Font. If one of these fields is changed, its line length is)]TJ +0 -1.2222 TD +0.2511 Tw +[(recalculated. If one of the fields used to compute the number of lines \(such as the)]TJ +0 -1.2278 TD +0.3444 Tw +(Clipping Region or Font\) changes, )Tj +/TT10 1 Tf +10 0 0 10 280.0595 511.89 Tm +0 Tw +(PAGEHEIGHT)Tj +/TT8 1 Tf +9 0 0 9 340.0693 511.89 Tm +0.3444 Tw +[( is not automatically recomputed.)]TJ +/TT10 1 Tf +10 0 0 10 126 499.89 Tm +0 Tw +(\(TTYDISPLAYSTREAM \(TTYDISPLAYSTREAM\)\))Tj +/TT8 1 Tf +9 0 0 9 348.0361 499.89 Tm +( will cause it to be recomputed.)Tj +-24.6707 -2.1111 TD +0.0922 Tw +(If the window system is active, the line buffer is saved in the old )Tj +/TT10 1 Tf +10 0 0 10 395.4208 480.89 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 413.4237 480.89 Tm +0.0922 Tw +[( window, and the)]TJ +-31.936 -1.3278 TD +0.0433 Tw +(line buffer is set to the one saved in the window of the new display stream, or to a newly)Tj +0 -1.2222 TD +0.3089 Tw +[(created line buffer \(if it does not have one\). Caution: It is possible to move the)]TJ +/TT10 1 Tf +10 0 0 10 126 446.89 Tm +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 222.0156 446.89 Tm +0.2022 Tw +[( to a nonvisible display stream or to a window whose current)]TJ +-10.6684 -1.3278 TD +0 Tw +(position is not in its clipping region.)Tj +/TT10 1 Tf +10 0 0 10 102 412.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 412.66 Tm +(PAGEHEIGHT)Tj +/F1 1 Tf +10 0 0 10 162 412.66 Tm +( )Tj +/F3 1 Tf +0.287 0 TD +(N)Tj +/TT10 1 Tf +0.815 0 TD +(\))Tj +/TT8 1 Tf +9 0 0 9 179.021 412.66 Tm +[( )-29012.1([Function])]TJ +-5.8912 -2.0256 TD +(If )Tj +/F3 1 Tf +10 0 0 10 137.1093 394.43 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 145.2593 394.43 Tm +0.3144 Tw +[( is greater than 0, it is the number of lines of output that will be printed to)]TJ +/TT10 1 Tf +10 0 0 10 126 382.15 Tm +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 222.0156 382.15 Tm +0.1478 Tw +[( before the page is held. A page is held before the )]TJ +/F3 1 Tf +10 0 0 10 439.56 382.15 Tm +0 Tw +(N)Tj +/TT8 1 Tf +9 0 0 9 447.71 382.15 Tm +0.1478 Tw +(+1 line is)Tj +-35.7456 -1.3333 TD +0.0467 Tw +(printed to )Tj +/TT10 1 Tf +10 0 0 10 168.755 370.15 Tm +0 Tw +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 264.7706 370.15 Tm +0.0467 Tw +[( without intervening input if there is no terminal input)]TJ +-15.419 -1.3278 TD +0.0567 Tw +[(waiting to be read. The output is held with the screen video reversed until a character is)]TJ +0 -1.3644 TD +0 Tw +(typed. Output holding is disabled if )Tj +/F3 1 Tf +10 0 0 10 273.3882 345.92 Tm +(N)Tj +/TT8 1 Tf +9 0 0 9 281.5382 345.92 Tm +( is 0. )Tj +/TT10 1 Tf +10 0 0 10 303.7218 345.92 Tm +(PAGEHEIGHT)Tj +/TT8 1 Tf +9 0 0 9 363.7315 345.92 Tm +( returns the previous setting.)Tj +/TT12 1 Tf +-29.0813 -2.4389 TD +(PAGEFULLFN)Tj +/TT8 1 Tf +6 0 TD +[( )-27483.3([Window Property])]TJ +-3.3333 -1.85 TD +0.0267 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 149.4941 307.32 Tm +0 Tw +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 209.5039 307.32 Tm +0.0267 Tw +[( window property is non-)]TJ +/TT10 1 Tf +10 0 0 10 312.6587 307.32 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 330.6617 307.32 Tm +0.0267 Tw +(, it will be called with the window as a)Tj +-22.7402 -1.3278 TD +0.1133 Tw +(single argument when the window is full \(i.e., when enough has been printed since the)Tj +0 -1.2278 TD +0 Tw +(last )Tj +/TT10 1 Tf +10 0 0 10 142.1391 284.32 Tm +(TTY)Tj +/TT8 1 Tf +9 0 0 9 160.142 284.32 Tm +0.0022 Tw +( interaction so that the next character printed will cause information to be scrolled)Tj +-3.7936 -1.3278 TD +0 Tw +(off the top of the window.\))Tj +0 -2.0056 TD +0.2178 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 152.9341 254.32 Tm +0 Tw +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 212.9439 254.32 Tm +0.2178 Tw +[( window property is )]TJ +/TT10 1 Tf +10 0 0 10 304.592 254.32 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 322.5949 254.32 Tm +0.2178 Tw +(, the system function )Tj +/TT10 1 Tf +10 0 0 10 415.3593 254.32 Tm +0 Tw +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 475.369 254.32 Tm +0.2178 Tw +[( is)]TJ +-38.8188 -1.3333 TD +0.2167 Tw +(called. )Tj +/TT10 1 Tf +10 0 0 10 160.1915 242.32 Tm +0 Tw +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 220.2012 242.32 Tm +0.2167 Tw +[( simply returns if there are characters in the type-in buffer for)]TJ +/TT10 1 Tf +10 0 0 10 126 230.32 Tm +0 Tw +(WINDOW)Tj +/TT8 1 Tf +9 0 0 9 162.0058 230.32 Tm +0.2033 Tw +(, otherwise it inverts the window and waits for the user to type a character.)Tj +/TT10 1 Tf +10 0 0 10 126 218.32 Tm +0 Tw +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 186.0097 218.32 Tm +( is user advisable.)Tj +-4.0011 -2.1111 TD +[(Note: )-401.2(The )]TJ +/TT10 1 Tf +10 0 0 10 200.5044 199.32 Tm +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 260.5142 199.32 Tm +0.3544 Tw +[( window property is only called on windows)]TJ +-8.946 -1.3333 TD +0 Tw +(which are the )Tj +/TT10 1 Tf +10 0 0 10 236.1973 187.32 Tm +(TTYDISPLAYSTREAM)Tj +/TT8 1 Tf +9 0 0 9 332.2129 187.32 Tm +( of some process.)Tj +/TT4 1 Tf +10 0 0 10 78 160.03 Tm +(TTY Process and the Caret)Tj +/TT8 1 Tf +9 0 0 9 78 135.32 Tm +0.1711 Tw +(At any time, one process is designated as the )Tj +/TT10 1 Tf +10 0 0 10 272.0885 135.32 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 290.0914 135.32 Tm +0.1711 Tw +[( process, which is used for accepting keyboard)]TJ +-23.5657 -1.3333 TD +0.1344 Tw +[(input. The )]TJ +/TT10 1 Tf +10 0 0 10 127.3243 123.32 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 145.3273 123.32 Tm +0.1344 Tw +[( process can be changed to a given process by calling )]TJ +/TT10 1 Tf +10 0 0 10 371.0074 123.32 Tm +0 Tw +(GIVE.TTY.PROCESS)Tj +/TT8 1 Tf +9 0 0 9 467.023 123.32 Tm +0.1344 Tw +[( \(see)]TJ +-43.2248 -1.3278 TD +0.0244 Tw +[(Chapter 23\), or by clicking the mouse in a window associated with the process. The latter mechanism)]TJ +0 -1.2222 TD +0 Tw +(is implemented with the following window property:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(PROCESS)Tj +/TT8 1 Tf +4.2 0 TD +[( )-29283.3([Window Property])]TJ +-1.5333 -1.85 TD +0.0089 Tw +(If the )Tj +/TT10 1 Tf +10 0 0 10 149.1741 62.72 Tm +0 Tw +(PROCESS)Tj +/TT8 1 Tf +9 0 0 9 191.181 62.72 Tm +0.0089 Tw +[( window property is non-)]TJ +/TT10 1 Tf +10 0 0 10 293.6958 62.72 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 311.6987 62.72 Tm +0.0089 Tw +(, it should be a )Tj +/TT10 1 Tf +10 0 0 10 372.4532 62.72 Tm +0 Tw +(PROCESS)Tj +/TT8 1 Tf +9 0 0 9 414.4601 62.72 Tm +0.0089 Tw +[( and will be made)]TJ +-32.0511 -1.3333 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 148.5848 50.72 Tm +(TTY)Tj +/TT8 1 Tf +9 0 0 9 166.5878 50.72 Tm +0.8722 Tw +[( process by )]TJ +/TT10 1 Tf +10 0 0 10 236.6846 50.72 Tm +0 Tw +(GIVE.TTY.PROCESS)Tj +/TT8 1 Tf +9 0 0 9 332.7003 50.72 Tm +0.8722 Tw +[( \(see Chapter 23\), the default)]TJ +ET +endstream +endobj +113 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 18 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +115 0 obj +<< +/Length 6869 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-30)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +7.8 -4.251 TD +(WINDOWENTRYFN)Tj +/TT8 1 Tf +9 0 0 9 252.0127 569.49 Tm +0.0822 Tw +[( property \(see above\). This implements the mechanism by which the)]TJ +-8.6681 -1.3278 TD +0 Tw +(keyboard is associated with different processes.)Tj +-5.3333 -2.7778 TD +0.1233 Tw +(The window system uses a flashing caret \()Tj +ET +q +7 0 0 -6 301.94 538.54 cm +/Im3 Do +Q +BT +9 0 0 9 308.93 532.54 Tm +[(\) to indicate the position of the next window typeout.)]TJ +-20.3256 -1.2278 TD +0.0278 Tw +[(There is only one caret visible at any one time. The caret in the current )]TJ +/TT10 1 Tf +10 0 0 10 413.3681 521.49 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 431.3711 521.49 Tm +0.0278 Tw +[( process is always visible;)]TJ +-33.9301 -1.3278 TD +0.0556 Tw +[(if it is hidden by another window, its window is brought to the top. An exception to this rule is that)]TJ +0 -1.2222 TD +0.0533 Tw +(the flashing carets window is not brought to the top if the user is buttoning or has a shift key down.)Tj +T* +0.0389 Tw +(This prevents the destination window \(which has the tty and caret flashing\) from interfering with the)Tj +T* +0 Tw +(window one is trying to select text to copy from.)Tj +/TT10 1 Tf +10 0 0 10 150 454.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 454.26 Tm +(CARET)Tj +/F1 1 Tf +10 0 0 10 183 454.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 185.87 454.26 Tm +(NEWCARET)Tj +/TT10 1 Tf +10 0 0 10 229.077 454.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 235.078 454.26 Tm +[( )-28116.9([Function])]TJ +-6.7864 -1.8833 TD +0.2756 Tw +(Sets the shape that blinks at the location of the next output to the current process.)Tj +/TT14 1 Tf +0 -1.2222 TD +0 Tw +(NEWCARET)Tj +/TT8 1 Tf +4.8008 0 TD +( should be one of the following:)Tj +-4.383 -2.0722 TD +(a )Tj +/TT10 1 Tf +10 0 0 10 184.51 407.66 Tm +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 220.5158 407.66 Tm +[( object)-1332.9(If )]TJ +/TT14 1 Tf +5.1282 0 TD +(NEWCARET)Tj +/TT8 1 Tf +4.8008 0 TD +0.0433 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 328.7299 407.66 Tm +0 Tw +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 364.7357 407.66 Tm +0.0433 Tw +[( object \(see Chapter 30\), it is used to)]TJ +-11.8595 -1.3278 TD +0 Tw +(give the new caret shape)Tj +/TT10 1 Tf +10 0 0 10 228 377.66 Tm +(OFF)Tj +/TT8 1 Tf +9 0 0 9 258 377.66 Tm +(Turns the caret off)Tj +/TT10 1 Tf +10 0 0 10 228 358.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 258 358.66 Tm +0.5244 Tw +(The caret is not changed. )Tj +/TT10 1 Tf +10 0 0 10 389.7365 358.66 Tm +0 Tw +(CARET)Tj +/TT8 1 Tf +9 0 0 9 419.7414 358.66 Tm +0.5244 Tw +[( returns a )]TJ +/TT10 1 Tf +10 0 0 10 473.9883 358.66 Tm +0 Tw +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 258 346.71 Tm +(representing the current caret)Tj +/TT10 1 Tf +10 0 0 10 240 328.66 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 258 328.66 Tm +0.9311 Tw +(Reset the caret to the value of )Tj +/TT10 1 Tf +10 0 0 10 435.7606 328.66 Tm +0 Tw +(DEFAULTCARET)Tj +/TT8 1 Tf +9 0 0 9 507.7723 328.66 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 258 316.66 Tm +(DEFAULTCARET)Tj +/TT8 1 Tf +9 0 0 9 330.0117 316.66 Tm +0.0422 Tw +[( can be set to change the initial caret for new)]TJ +-8.0013 -1.3278 TD +0 Tw +(processes.)Tj +-9.3333 -2 TD +0.0022 Tw +(The hotspot of )Tj +/TT14 1 Tf +6.6605 0 TD +0 Tw +(NEWCARET)Tj +/TT8 1 Tf +4.8008 0 TD +0.0022 Tw +( indicates which point in the new caret bitmap should be located)Tj +-11.4613 -1.2889 TD +0.0944 Tw +[(at the current output position. The previous caret is returned. Note: the bitmap for the)]TJ +0 -1.2278 TD +0 Tw +(caret is not limited to the dimensions )Tj +/TT10 1 Tf +10 0 0 10 323.458 264.06 Tm +(CURSORWIDTH)Tj +/TT8 1 Tf +9 0 0 9 389.4688 264.06 Tm +( by )Tj +/TT10 1 Tf +10 0 0 10 403.9531 264.06 Tm +(CURSORHEIGHT)Tj +/TT8 1 Tf +9 0 0 9 475.9648 264.06 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 240.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 240.83 Tm +(CARETRATE)Tj +/F1 1 Tf +10 0 0 10 204.6 240.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.47 240.83 Tm +(ONRATE)Tj +/F3 1 Tf +10 0 0 10 239.8753 240.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 242.6553 240.83 Tm +(OFFRATE)Tj +/TT10 1 Tf +10 0 0 10 280.4614 240.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 286.4624 240.83 Tm +[( )-22407.5([Function])]TJ +-12.4958 -1.8833 TD +0.0456 Tw +[(Sets the rate at which the caret for the current process will flash. The caret will be visible)]TJ +0 -1.2278 TD +0 Tw +(for )Tj +/TT14 1 Tf +1.5695 0 TD +(ONRATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +[( milliseconds, then not visible for )]TJ +/TT14 1 Tf +15.1708 0 TD +0 Tw +(OFFRATE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0456 Tw +[( milliseconds. If )]TJ +/TT14 1 Tf +7.9539 0 TD +0 Tw +(OFFRATE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0456 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 516.0183 212.83 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 174 200.83 Tm +0.0611 Tw +(then it is set to be the same as )Tj +/TT14 1 Tf +13.8313 0 TD +0 Tw +(ONRATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0611 Tw +[(. If )]TJ +/TT14 1 Tf +1.8533 0 TD +0 Tw +(ONRATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0611 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 392.0047 200.83 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 398.0056 200.83 Tm +0.0611 Tw +(, both the "on" and "off" times are)Tj +-24.8895 -1.3333 TD +0.0356 Tw +(set to the value of the variable )Tj +/TT10 1 Tf +10 0 0 10 297.8894 188.83 Tm +0 Tw +(DEFAULTCARETRATE)Tj +/TT8 1 Tf +9 0 0 9 393.905 188.83 Tm +0.0356 Tw +[( \(initially 333\). The previous value)]TJ +-24.4339 -1.3333 TD +0 Tw +(of )Tj +/TT10 1 Tf +10 0 0 10 184.1601 176.83 Tm +(CARETRATE)Tj +/TT8 1 Tf +9 0 0 9 238.1689 176.83 Tm +( is returned. If the caret is off, )Tj +/TT10 1 Tf +10 0 0 10 359.3349 176.83 Tm +(CARETRATE)Tj +/TT8 1 Tf +9 0 0 9 413.3437 176.83 Tm +( return )Tj +/TT10 1 Tf +10 0 0 10 442.8662 176.83 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 460.8691 176.83 Tm +(.)Tj +/TT4 1 Tf +10 0 0 10 126 149.54 Tm +(Miscellaneous Window Functions)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 127.6 Tm +(CLEARW)Tj +/F1 1 Tf +10 0 0 10 188.4 127.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.27 127.6 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 223.6753 127.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 229.6762 127.6 Tm +[( )-28717.1([Function])]TJ +-6.1863 -1.8833 TD +(Fills )Tj +/TT14 1 Tf +2.1286 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0256 Tw +[( with its background texture, changes its coordinate system so that the origin)]TJ +-5.7292 -1.2944 TD +0.0633 Tw +(is the lower left corner of the window, sets its )Tj +/TT10 1 Tf +10 0 0 10 362.6223 99 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 368.6233 99 Tm +0.0633 Tw +[( position to the left margin and sets its )]TJ +/TT10 1 Tf +10 0 0 10 528.0058 99 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 174 87.05 Tm +0.0911 Tw +(position to the base line of the uppermost line of text, ie. the top of the window less the)Tj +0 -1.2222 TD +0 Tw +(font ascent.)Tj +/TT10 1 Tf +10 0 0 10 150 53.77 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 53.77 Tm +(INVERTW)Tj +/F1 1 Tf +10 0 0 10 193.8 53.77 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.67 53.77 Tm +(WINDOW)Tj +/F3 1 Tf +10 0 0 10 229.0753 53.77 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 231.8553 53.77 Tm +(SHADE)Tj +/TT10 1 Tf +10 0 0 10 258.8596 53.77 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 264.8606 53.77 Tm +[( )-24807.7([Function])]TJ +ET +endstream +endobj +116 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/F3 18 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/XObject << +/Im3 21 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +118 0 obj +<< +/Length 8778 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-31)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.1256 Tw +(Fills the window )Tj +/TT14 1 Tf +8.0647 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1256 Tw +[( with the texture )]TJ +/TT14 1 Tf +8.0471 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1256 Tw +[( in )]TJ +/TT10 1 Tf +10 0 0 10 345.0333 569.49 Tm +0 Tw +(INVERT)Tj +/TT8 1 Tf +9 0 0 9 381.0391 569.49 Tm +0.1256 Tw +[( mode. If )]TJ +/TT14 1 Tf +4.9407 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1256 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 465.7034 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 483.7064 569.49 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 126 557.49 Tm +(BLACKSHADE)Tj +/TT8 1 Tf +9 0 0 9 186.0097 557.49 Tm +0.3733 Tw +[( is used. )]TJ +/TT10 1 Tf +10 0 0 10 236.1836 557.49 Tm +0 Tw +(INVERTW)Tj +/TT8 1 Tf +9 0 0 9 278.1905 557.49 Tm +0.3733 Tw +[( returns )]TJ +/TT14 1 Tf +4.4508 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.3733 Tw +[( so that it can be used inside)]TJ +/TT10 1 Tf +10 0 0 10 126 545.49 Tm +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +9 0 0 9 180.0088 545.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 522.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 522.26 Tm +(FLASHWINDOW)Tj +/F1 1 Tf +10 0 0 10 167.4 522.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 170.27 522.26 Tm +(WIN? N FLASHINTERVAL SHADE)Tj +/TT10 1 Tf +10 0 0 10 310.6928 522.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.6938 522.26 Tm +[( )-13715.1([Function])]TJ +-21.1882 -1.8833 TD +0.1033 Tw +(Flashes the window )Tj +/TT14 1 Tf +9.4008 0 TD +0 Tw +(WIN?)Tj +/TT8 1 Tf +2.4004 0 TD +0.1033 Tw +[( by "inverting" it twice. N is the number of times to flash the)]TJ +-11.8012 -1.2889 TD +0.1922 Tw +(window \(default is 1\). )Tj +/TT14 1 Tf +11.1828 0 TD +0 Tw +(FLASHINTERVAL)Tj +/TT8 1 Tf +7.8013 0 TD +0.1922 Tw +[( is the length of time in milliseconds to wait)]TJ +-18.9841 -1.2889 TD +0.2356 Tw +(between flashes \(default is 200\). )Tj +/TT14 1 Tf +15.9524 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.2356 Tw +[( is the shade that will be used to invert the)]TJ +-18.9529 -1.2944 TD +0 Tw +(window \(default is )Tj +/TT10 1 Tf +10 0 0 10 203.748 470.46 Tm +(BLACKSHADE)Tj +/TT8 1 Tf +9 0 0 9 263.7578 470.46 Tm +(\).)Tj +-15.3064 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.9833 0 TD +(WIN?)Tj +/TT8 1 Tf +2.4004 0 TD +0.0633 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 168.5264 451.46 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 186.5293 451.46 Tm +0.0633 Tw +[(, the whole screen is flashed. In this case, the )]TJ +/TT14 1 Tf +20.829 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0633 Tw +[( argument is ignored)]TJ +-30.555 -1.3278 TD +0 Tw +(\(can only invert the screen\).)Tj +/TT10 1 Tf +10 0 0 10 102 417.23 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 417.23 Tm +(WHICHW)Tj +/F1 1 Tf +10 0 0 10 140.4 417.23 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 143.27 417.23 Tm +(X Y)Tj +/TT10 1 Tf +10 0 0 10 159.4726 417.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 165.4736 417.23 Tm +[( )-30517.4([Function])]TJ +-4.386 -1.8833 TD +0.2344 Tw +(Returns the window which contains the position in screen coordinates of )Tj +/TT14 1 Tf +35.011 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2344 Tw +[( if )]TJ +/TT14 1 Tf +1.5929 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.2344 Tw +[( is a)]TJ +/TT10 1 Tf +-37.8041 -1.2944 TD +0 Tw +(POSITION)Tj +10 0 0 10 169.207 388.63 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 175.568 388.63 Tm +0.0156 Tw +(, the position \()Tj +/TT14 1 Tf +6.3738 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.0156 Tw +(\) if )Tj +/TT14 1 Tf +1.4881 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( and )]TJ +/TT14 1 Tf +2.224 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( are numbers, or the position of the cursor if )]TJ +/TT14 1 Tf +19.8304 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0156 Tw +[( is)]TJ +/TT10 1 Tf +10 0 0 10 126 376.63 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 144.0029 376.63 Tm +0.0289 Tw +[(. Returns NIL if the coordinates are not in any window. If they are in more than one)]TJ +-2.0003 -1.3278 TD +0 Tw +(window, it returns the uppermost.)Tj +0 -2.0056 TD +(Example: )Tj +/TT10 1 Tf +10 0 0 10 165.4277 346.63 Tm +( \(WHICHW\))Tj +/TT8 1 Tf +9 0 0 9 219.4365 346.63 Tm +( returns the window that the cursor is in.)Tj +/TT10 1 Tf +10 0 0 10 102 323.4 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 323.4 Tm +(DECODE/WINDOW/OR/DISPLAYSTREAM)Tj +/F1 1 Tf +10 0 0 10 270 323.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 272.87 323.4 Tm +(DSORW WINDOWVAR TITLE BORDER)Tj +/TT10 1 Tf +10 0 0 10 424.0946 323.4 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 430.0956 323.4 Tm +[( )-1114.9([Function])]TJ +-33.7884 -1.8833 TD +0.1667 Tw +(Returns a display stream as determined by the )Tj +/TT14 1 Tf +22.1473 0 TD +0 Tw +(DSORW)Tj +/TT8 1 Tf +3.0005 0 TD +0.1667 Tw +[( and )]TJ +/TT14 1 Tf +2.5262 0 TD +0 Tw +(WINDOWVAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1667 Tw +[( arguments. If)]TJ +/TT14 1 Tf +-33.0749 -1.2889 TD +0 Tw +(DSORW)Tj +/TT8 1 Tf +3.0005 0 TD +0.1578 Tw +[( is a display stream, it is returned. If )]TJ +/TT14 1 Tf +17.9455 0 TD +0 Tw +(DSORW)Tj +/TT8 1 Tf +3.0005 0 TD +0.1578 Tw +[( is a window, its display stream is)]TJ +-23.9464 -1.2889 TD +0.0378 Tw +[(returned. If )]TJ +/TT14 1 Tf +5.6534 0 TD +0 Tw +(DSORW)Tj +/TT8 1 Tf +3.0005 0 TD +0.0378 Tw +[( is NIL, the litatom )]TJ +/TT14 1 Tf +8.7328 0 TD +0 Tw +(WINDOWVAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0378 Tw +[( is evaluated. If its value is a window,)]TJ +-22.7876 -1.2889 TD +0.0622 Tw +[(its display stream is returned. If its value is not a window, )]TJ +/TT14 1 Tf +26.9813 0 TD +0 Tw +(WINDOWVAR)Tj +/TT8 1 Tf +5.4009 0 TD +0.0622 Tw +[( is set to a newly)]TJ +-32.3821 -1.2889 TD +0.1322 Tw +[(created window \(prompting user for region\) whose display stream is then returned. If)]TJ +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(DSORW)Tj +/TT8 1 Tf +3.0005 0 TD +0.0433 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 164.718 249 Tm +0 Tw +(NEW)Tj +/TT8 1 Tf +9 0 0 9 182.7209 249 Tm +0.0433 Tw +[(, the display stream of a newly created window is returned. If a )]TJ +/TT14 1 Tf +29.0823 0 TD +0 Tw +(window)Tj +/TT8 1 Tf +3.6006 0 TD +0.0433 Tw +[( is)]TJ +-38.9852 -1.3278 TD +0.0956 Tw +(involved in the decoding, it is opened and if )Tj +/TT14 1 Tf +20.6163 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0956 Tw +[( or )]TJ +/TT14 1 Tf +1.632 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0956 Tw +[( are given, the )]TJ +/TT14 1 Tf +6.8666 0 TD +0 Tw +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0956 Tw +[( or)]TJ +/TT14 1 Tf +-38.7165 -1.2944 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1111 Tw +[( property of the window are reset. The )]TJ +/TT14 1 Tf +18.5142 0 TD +0.2656 Tw +(DSORW = )Tj +/TT10 1 Tf +10 0 0 10 373.0197 225.4 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 391.0227 225.4 Tm +0.1111 Tw +[( case is most useful for)]TJ +-29.447 -1.3278 TD +0.1856 Tw +(programs that want to display their output in a window, but want to reuse the same)Tj +0 -1.2278 TD +0.1067 Tw +[(window each time they are called. The non-)]TJ +/TT10 1 Tf +10 0 0 10 309.9139 202.4 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 327.9168 202.4 Tm +0.1067 Tw +[( cases are good for decoding a display)]TJ +-22.4352 -1.3278 TD +0 Tw +(stream argument passed to a function.)Tj +/TT10 1 Tf +10 0 0 10 102 168.17 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 168.17 Tm +(WIDTHIFWINDOW)Tj +/F1 1 Tf +10 0 0 10 178.2 168.17 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 181.07 168.17 Tm +(INTERIORWIDTH BORDER)Tj +/TT10 1 Tf +10 0 0 10 289.0876 168.17 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 295.0885 168.17 Tm +[( )-16115.7([Function])]TJ +-18.7876 -1.8889 TD +0.2411 Tw +(Returns the width of the window necessary to have )Tj +/TT10 1 Tf +10 0 0 10 352.5564 151.17 Tm +0 Tw +(INTERIORWIDTH)Tj +/TT8 1 Tf +9 0 0 9 430.569 151.17 Tm +0.2411 Tw +[( points in its)]TJ +-33.841 -1.3278 TD +0.1022 Tw +(interior if the width of the border is )Tj +/TT14 1 Tf +16.7382 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1022 Tw +[(. If )]TJ +/TT14 1 Tf +1.9766 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1022 Tw +[( is )]TJ +/TT10 1 Tf +1.4193 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1022 Tw +(, the default border size)Tj +-29.1355 -1.2889 TD +0 Tw +(WBorder is used.)Tj +/TT10 1 Tf +10 0 0 10 102 105.34 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 105.34 Tm +(HEIGHTIFWINDOW)Tj +/F1 1 Tf +10 0 0 10 183.6 105.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 186.47 105.34 Tm +(INTERIORHEIGHT TITLEFLG BORDER)Tj +/TT10 1 Tf +10 0 0 10 348.4963 105.34 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 354.4973 105.34 Tm +[( )-9514.7([Function])]TJ +-25.3886 -1.8833 TD +0.2489 Tw +(Returns the height of the window necessary to have )Tj +/TT14 1 Tf +25.4153 0 TD +0 Tw +(INTERIORHEIGHT)Tj +/TT8 1 Tf +8.4014 0 TD +0.2489 Tw +[( points in its)]TJ +-33.8167 -1.2889 TD +0.0456 Tw +(interior with a border of )Tj +/TT14 1 Tf +11.1741 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +[( and, if )]TJ +/TT14 1 Tf +3.4536 0 TD +0 Tw +(TITLEFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0456 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3489 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0456 Tw +[(, a title. If )]TJ +/TT14 1 Tf +4.8611 0 TD +0 Tw +(BORDER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +[( is )]TJ +/TT10 1 Tf +1.306 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.7461 -1.2889 TD +(the default border size WBorder is used.)Tj +ET +endstream +endobj +119 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +122 0 obj +<< +/Length 5831 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-32)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 126 569.54 Tm +(WIDTHIFWINDOW)Tj +/TT8 1 Tf +7.8013 0 TD +0.0722 Tw +[( and )]TJ +/TT10 1 Tf +2.3373 0 TD +0 Tw +(HEIGHTIFWINDOW)Tj +/TT8 1 Tf +8.4014 0 TD +0.0722 Tw +[( are useful for calculating the width and height for a call to)]TJ +/TT10 1 Tf +-18.54 -1.2889 TD +0 Tw +(GETBOXPOSITION)Tj +/TT8 1 Tf +8.4014 0 TD +( for the purpose of positioning a prospective window.)Tj +/TT10 1 Tf +10 0 0 10 150 535.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 535.06 Tm +(MINIMUMWINDOWSIZE)Tj +/F1 1 Tf +10 0 0 10 247.8 535.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 250.67 535.06 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 283.0753 535.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 289.0762 535.06 Tm +[( )-22117.1([Function])]TJ +-12.7862 -1.8833 TD +0.0044 Tw +(Returns a dotted pair, the )Tj +/TT10 1 Tf +11.5725 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0001 Tc +0.0043 Tw +( of which is the minimum width )Tj +/TT14 1 Tf +14.5546 0 TD +0 Tc +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0003 Tc +0.0041 Tw +( needs and the )Tj +/TT10 1 Tf +6.6726 0 TD +0 Tc +0 Tw +(CDR)Tj +/TT8 1 Tf +-38.2005 -1.2889 TD +(or which is the minimum height )Tj +/TT14 1 Tf +14.5078 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( needs.)Tj +-18.1084 -2.0667 TD +0.2489 Tw +(The minimum size is determined by the value of the window property )Tj +/TT10 1 Tf +34.4183 0 TD +0 Tw +(MINSIZE)Tj +/TT8 1 Tf +4.2007 0 TD +0.2489 Tw +[( of)]TJ +/TT14 1 Tf +-38.619 -1.2889 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +[(. If the value of the )]TJ +/TT10 1 Tf +9.4846 0 TD +0 Tw +(MINSIZE)Tj +/TT8 1 Tf +4.2007 0 TD +0.1033 Tw +[( window property is )]TJ +/TT10 1 Tf +9.7253 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1033 Tw +(, the width is 26 and the)Tj +-28.8115 -1.2889 TD +0.0733 Tw +(height is the height )Tj +/TT14 1 Tf +9.0282 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0733 Tw +[( needs to have its title, border and one line of text visible. If)]TJ +/TT10 1 Tf +-12.6288 -1.2889 TD +0 Tw +(MINSIZE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0456 Tw +[( is a dotted pair, it is returned. If it is a litatom, it should be a function which is)]TJ +-4.2007 -1.2889 TD +0 Tw +(called with )Tj +/TT14 1 Tf +5.1489 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( as its first argument, which should return a dotted pair. )Tj +/TT4 1 Tf +10 0 0 10 126 414.57 Tm +(Miscellaneous Window Properties)Tj +/TT12 1 Tf +9 0 0 9 150 393.91 Tm +(TITLE)Tj +/TT8 1 Tf +3 0 TD +[( )-30483.3([Window Property])]TJ +-0.3333 -1.8444 TD +0.0444 Tw +[(Accesses the title of the window. If a title is added to a window whose title is )]TJ +/TT10 1 Tf +35.2819 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0444 Tw +[( or the)]TJ +-37.0822 -1.2889 TD +0.0478 Tw +(title is removed \(set to )Tj +/TT10 1 Tf +10.3087 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0478 Tw +(\) from a window with a title, the windows exterior \(its region)Tj +-12.109 -1.2889 TD +0.1733 Tw +(on the screen\) is enlarged or reduced to accomodate the change without changing the)Tj +0 -1.2222 TD +0.3033 Tw +[(windows interior. For example, )]TJ +/TT10 1 Tf +16.2174 0 TD +0.7278 Tw +(\(WINDOWPROP WINDOW TITLE "Results"\))Tj +/TT8 1 Tf +-16.2174 -1.2889 TD +0.0656 Tw +(changes the title of )Tj +/TT10 1 Tf +8.8086 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0656 Tw +[( to be ")]TJ +/TT10 1 Tf +3.2221 0 TD +0 Tw +(Results)Tj +/TT8 1 Tf +4.2007 0 TD +(". )Tj +/TT10 1 Tf +0.9366 0 TD +0.1578 Tw +[( \(WINDOWPROP WINDOW TITLE NIL\))]TJ +/TT8 1 Tf +-20.7686 -1.2889 TD +0 Tw +(removes the title of )Tj +/TT10 1 Tf +8.75 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT12 1 Tf +-15.0173 -2.4 TD +(BORDER)Tj +/TT8 1 Tf +3.6 0 TD +[( )-29883.3([Window Property])]TJ +-0.9333 -1.8444 TD +0.05 Tw +[(Accesses the width of the border of the window. The border will have at most 2 point of)]TJ +0 -1.2222 TD +0.0244 Tw +[(white \(but never more than half\) and the rest black. The default border is the value of the)]TJ +T* +0 Tw +(global variable WBorder \(initially 4\). )Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(WINDOWTITLESHADE)Tj +/TT8 1 Tf +9.6 0 TD +[( )-23883.3([Window Property])]TJ +-6.9333 -1.8444 TD +0.0411 Tw +[(Accesses the window title shade of the window. If non-)]TJ +/TT10 1 Tf +25.1269 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0411 Tw +(, it should be a texture which)Tj +-26.9272 -1.2889 TD +0.0478 Tw +[(is used as the "backgound texture" for the title bar on the top of the window. If it is )]TJ +/TT10 1 Tf +37.9429 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(,)Tj +-39.7432 -1.2889 TD +0.2333 Tw +(the value of the global variable )Tj +/TT10 1 Tf +15.3028 0 TD +0 Tw +(WINDOWTITLESHADE)Tj +/TT8 1 Tf +9.6016 0 TD +0.2333 Tw +[( \(initially )]TJ +/TT10 1 Tf +4.7191 0 TD +0 Tw +(BLACKSHADE)Tj +/TT8 1 Tf +6.001 0 TD +0.2333 Tw +(\) is used.)Tj +-35.6245 -1.2889 TD +0 Tw +(Note that black is always used as the background of the title printed in the title bar, so that)Tj +0 -1.2222 TD +(the letters can be read. The remaining space is painted with the "title shade".)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(HARDCOPYFN)Tj +/TT8 1 Tf +6 0 TD +[( )-27483.3([Window Property])]TJ +-3.3333 -1.8444 TD +0.3256 Tw +(If non-)Tj +/TT10 1 Tf +3.2884 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.3256 Tw +(, it should be a function that is called by the window menu command)Tj +-5.0887 -1.2889 TD +0.1133 Tw +[(Hardcopy to print the contents of a window. The )]TJ +/TT10 1 Tf +23.2823 0 TD +0 Tw +(HARDCOPYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.1133 Tw +[( property is called with)]TJ +-29.2832 -1.2889 TD +0.1411 Tw +[(two arguments, the window and an image stream to print to. If the window does not)]TJ +0 -1.2222 TD +0.0244 Tw +(have a )Tj +/TT10 1 Tf +3.1749 0 TD +0 Tw +(HARDCOPYFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0244 Tw +(, the bitmap image of the window \(including the border and title\) are)Tj +-9.1758 -1.2889 TD +0 Tw +(printed on the file or printer.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(DSP)Tj +/TT8 1 Tf +1.8 0 TD +[( )-31683.3([Window Property])]TJ +ET +endstream +endobj +123 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +125 0 obj +<< +/Length 5290 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-33)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0078 Tw +[(Value is the display stream of the window. All system functions will operate on either the)]TJ +0 -1.2222 TD +0.4211 Tw +[(window or its display stream. This window property cannot be changed using)]TJ +/TT10 1 Tf +T* +0 Tw +(WINDOWPROP)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT12 1 Tf +-8.6676 -2.5422 TD +(HEIGHT)Tj +/F2 1 Tf +10 0 0 10 134.4 524.66 Tm +[( )-25846([Window Property])]TJ +/TT12 1 Tf +9 0 0 9 102 515.06 Tm +(WIDTH)Tj +/TT8 1 Tf +3 0 TD +[( )-30483.3([Window Property])]TJ +-0.3333 -1.8444 TD +0.0133 Tw +(Value is the height and width of the interior of the window \(the usable space not counting)Tj +0 -1.2222 TD +0 Tw +(the border and title\). These window properties cannot be changed using )Tj +/TT10 1 Tf +32.3892 0 TD +(WINDOWPROP)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT12 1 Tf +-41.0568 -2.4 TD +(REGION)Tj +/TT8 1 Tf +3.6 0 TD +[( )-29883.3([Window Property])]TJ +-0.9333 -1.8444 TD +0.2389 Tw +(Value is a region \(in screen coordinates\) indicating where the window \(counting the)Tj +0 -1.2222 TD +0.0211 Tw +[(border and title\) is located on the screen. This window property cannot be changed using)]TJ +/TT10 1 Tf +T* +0 Tw +(WINDOWPROP)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 400.32 Tm +(Example: A Scrollable Window)Tj +/TT8 1 Tf +9 0 0 9 78 375.66 Tm +(The following is a simple example showing how one might create a scrollable window. )Tj +/TT10 1 Tf +0 -2.7778 TD +(CREATE)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +/TT10 1 Tf +0.25 0 TD +(PPWINDOW)Tj +/TT8 1 Tf +4.8008 0 TD +0.0489 Tw +[( creates a window that displays the pretty printed expression )]TJ +/TT10 1 Tf +27.7584 0 TD +0 Tw +(EXPR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0489 Tw +[(. The window)]TJ +-38.8102 -1.2889 TD +0 Tw +(properties )Tj +/TT10 1 Tf +5.0493 0 TD +(PPEXPR)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7622 0 TD +(PPORIGX)Tj +/TT8 1 Tf +4.2007 0 TD +0.2622 Tw +(, and )Tj +/TT10 1 Tf +2.9673 0 TD +0 Tw +(PPORIGY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2622 Tw +[( are used for saving this expression, and the initial)]TJ +-20.7808 -1.2889 TD +[(window position. Using this information, )]TJ +/TT10 1 Tf +20.4068 0 TD +0 Tw +(REPAINT.PPWINDOW)Tj +/TT8 1 Tf +9.6016 0 TD +0.2622 Tw +[( simply reinitializes the window)]TJ +-30.0084 -1.2889 TD +0.0678 Tw +[(position, and prettyprints the expression again. Note that the whole expression is reformatted every)]TJ +0 -1.2222 TD +0.0011 Tw +(time, even if only a small part actually lies within the window. If this window was going to be used to)Tj +T* +0.1256 Tw +(display very large structures, it would be desirable to implement a more sophisticated )Tj +/TT10 1 Tf +39.933 0 TD +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +-39.933 -1.2889 TD +0.0644 Tw +[(that only redisplays that part of the expression within the window. However, this scheme would be)]TJ +0 -1.2222 TD +0 Tw +(satisfactory if most of the items to be displayed are small.)Tj +/TT10 1 Tf +0 -2.7778 TD +(RESHAPE.PPWINDOW)Tj +/TT8 1 Tf +9.6016 0 TD +0.72 Tw +[( resets the window \(and stores the initial window position\), calls)]TJ +/TT10 1 Tf +-9.6016 -1.2889 TD +0 Tw +(REPAINT.PPWINDOW)Tj +/TT8 1 Tf +9.6016 0 TD +0.0844 Tw +[( to display the windows expression, and then sets the )]TJ +/TT10 1 Tf +24.966 0 TD +0 Tw +(EXTENT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0844 Tw +[( property of the)]TJ +-38.1682 -1.2889 TD +0 Tw +(window so that )Tj +/TT10 1 Tf +7.1519 0 TD +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +10.2017 0 TD +( will be able to handle scrolling and "thumbing" correctly.)Tj +/TT10 1 Tf +-8.0202 -1.7778 TD +(\(DEFINEQ)Tj +0 -1.5556 TD +(\(CREATE.PPWINDOW)Tj +10 0 0 10 162 182.12 Tm +( [LAMBDA \(EXPR\) )Tj +/TT4 1 Tf +10.2017 0 TD +( )Tj +/F3 1 Tf +5.001 0 TD +(\(* rrb " 4-OCT-82 12:06"\))Tj +/F1 1 Tf +-15.2026 -1.123 TD +( )Tj +/F3 1 Tf +10.045 0 TD +(\(* creates a window that displays)Tj +/F1 1 Tf +-10.045 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(a pretty printed expression.\))Tj +/TT4 1 Tf +-1.019 -1.006 TD +( )Tj +/TT10 1 Tf +9 0 0 9 162 142.77 Tm +(\(PROG \(WINDOW\))Tj +/TT4 1 Tf +10 0 0 10 162 131.83 Tm +( )Tj +/F1 1 Tf +9.1685 0 TD +( )Tj +/F3 1 Tf +0.574 0 TD +(\(* ask the user for a piece of the)Tj +/F1 1 Tf +-9.7425 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(screen and make it into a window.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(SETQ WINDOW \(CREATEW NIL "PP window"\)\))Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/F1 1 Tf +8.0571 0 TD +( )Tj +/F3 1 Tf +1.722 0 TD +(\(* put the expression on the)Tj +/F1 1 Tf +-9.7791 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(property list of the window so that)Tj +/F1 1 Tf +-10.619 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(the repaint and reshape functions)Tj +/F1 1 Tf +-10.619 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(can access it.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(WINDOWPROP WINDOW \(QUOTE PPEXPR\) EXPR\))Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/F3 1 Tf +9.7241 0 TD +(\(* set the repaint and reshape)Tj +/F1 1 Tf +-9.7241 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(functions.\))Tj +ET +endstream +endobj +126 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/F3 18 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +128 0 obj +<< +/Length 4230 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-34)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +11.4 -4.251 TD +( \(WINDOWPROP WINDOW \(QUOTE REPAINTFN\))Tj +0 -1 TD +( \(FUNCTION REPAINT.PPWINDOW\)\))Tj +T* +( \(WINDOWPROP WINDOW \(QUOTE RESHAPEFN\))Tj +T* +( \(FUNCTION RESHAPE.PPWINDOW\)\))Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/F3 1 Tf +9.7241 0 TD +(\(* make the scroll function)Tj +/F1 1 Tf +-9.7241 -1 TD +( )Tj +/TT14 1 Tf +9 0 0 9 316.19 518.2 Tm +(SCROLLBYREPAINTFN)Tj +/F3 1 Tf +10 0 0 10 408.0049 518.2 Tm +(, a system)Tj +/F1 1 Tf +-19.8005 -1.088 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(function that uses the repaint)Tj +/F1 1 Tf +-10.619 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(function to do scrolling.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(WINDOWPROP WINDOW \(QUOTE SCROLLFN\))Tj +0 -1 TD +( \(FUNCTION SCROLLBYREPAINTFN\)\))Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/F1 1 Tf +3.8896 0 TD +( )Tj +/F3 1 Tf +6.027 0 TD +(\(* call the reshape function to)Tj +/F1 1 Tf +-9.9166 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(initially print the expression and)Tj +/F1 1 Tf +-10.619 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(calculate its extent.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(RESHAPE.PPWINDOW WINDOW\))Tj +0 -1 TD +( \(RETURN WINDOW]\))Tj +0 -3 TD +(\(REPAINT.PPWINDOW)Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/TT10 1 Tf +0.5557 0 TD +([LAMBDA \(WINDOW REGION\))Tj +/TT4 1 Tf +13.8022 0 TD +( )Tj +/F1 1 Tf +2.5005 0 TD +( )Tj +/F3 1 Tf +0.287 0 TD +(\(* rrb " 4-OCT-82 11:52"\))Tj +/F1 1 Tf +-17.1454 -2.123 TD +( )Tj +/F3 1 Tf +3.157 0 TD +(\(* the repainting function for a window with a)Tj +/F1 1 Tf +-3.157 -1 TD +( )Tj +/F3 1 Tf +3.731 0 TD +(pretty printed expression. This repainting)Tj +/F1 1 Tf +-3.731 -1 TD +( )Tj +/F3 1 Tf +3.731 0 TD +(function ignores the region to be repainted)Tj +/F1 1 Tf +-3.731 -1 TD +( )Tj +/F3 1 Tf +3.731 0 TD +(and repaints the entire window.\))Tj +/F1 1 Tf +-3.731 -2 TD +( )Tj +/F3 1 Tf +10.045 0 TD +(\(* set the window position to the)Tj +/F1 1 Tf +-10.045 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(beginning of the pretty printing)Tj +/F1 1 Tf +-10.619 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(of the expression.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(MOVETO \(WINDOWPROP WINDOW \(QUOTE PPORIGX\)\))Tj +0 -1 TD +( \(WINDOWPROP WINDOW \(QUOTE PPORIGY\)\))Tj +T* +( WINDOW\))Tj +T* +( \(PRINTDEF \(WINDOWPROP WINDOW \(QUOTE PPEXPR\)\))Tj +T* +( 0 NIL NIL NIL WINDOW]\))Tj +0 -3 TD +(\(RESHAPE.PPWINDOW)Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +( [LAMBDA \(WINDOW\))Tj +/TT4 1 Tf +10.2017 0 TD +( )Tj +/F1 1 Tf +4.4453 0 TD +( )Tj +/F3 1 Tf +0.287 0 TD +(\(* rrb " 4-OCT-82 12:01"\))Tj +/F1 1 Tf +-15.2118 -1.123 TD +( )Tj +/F3 1 Tf +10.045 0 TD +(\(* the reshape function for a)Tj +/F1 1 Tf +-10.045 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(window with a pretty printed)Tj +/F1 1 Tf +-10.619 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(expression.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(PROG \(BTM\))Tj +/F1 1 Tf +0 -2.123 TD +( )Tj +/F3 1 Tf +3.157 0 TD +(\(* set the position of the window so that the)Tj +/F1 1 Tf +-3.157 -1 TD +( )Tj +/F3 1 Tf +3.731 0 TD +(first character appears in the upper left corner)Tj +/F1 1 Tf +-3.731 -1 TD +( )Tj +/F3 1 Tf +3.731 0 TD +(and save the X and Y for the repaint function.\))Tj +/TT10 1 Tf +-3.731 -1.877 TD +( \(DSPRESET WINDOW\))Tj +0 -1 TD +( \(WINDOWPROP WINDOW \(QUOTE PPORIGX\))Tj +T* +( \(DSPXPOSITION NIL WINDOW\)\))Tj +T* +( \(WINDOWPROP WINDOW \(QUOTE PPORIGY\))Tj +T* +( \(DSPYPOSITION NIL WINDOW\)\))Tj +/F1 1 Tf +0 -1.123 TD +( )Tj +/F3 1 Tf +10.045 0 TD +(\(* call the repaint function to)Tj +/F1 1 Tf +-10.045 -1 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(pretty print the expression in)Tj +ET +endstream +endobj +129 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 18 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT10 9 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +131 0 obj +<< +/Length 4835 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-35)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/F1 1 Tf +-24.6 -4.374 TD +( )Tj +/F3 1 Tf +10.619 0 TD +(the newly cleared window.\))Tj +/TT10 1 Tf +-10.619 -0.877 TD +( \(REPAINT.PPWINDOW WINDOW\))Tj +/F1 1 Tf +0 -2.123 TD +( )Tj +/F3 1 Tf +2.87 0 TD +(\(* save the region actually covered by the pretty)Tj +/F1 1 Tf +-2.87 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(printed expression so that the scrolling routines)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(will know where to stop. The pretty printing of)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(the expression does a carriage return after the)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(last piece of the expression printed so that the)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(current position is the base line of the next line)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(of text. Hence the last visible piece of the)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(expression \(BTM\) is the ending position plus the)Tj +/F1 1 Tf +-3.444 -1 TD +( )Tj +/F3 1 Tf +3.444 0 TD +(height of the font above the base line \(its ASCENT\).\))Tj +/TT10 1 Tf +-3.444 -1.877 TD +( \(WINDOWPROP WINDOW \(QUOTE EXTENT\))Tj +0 -1 TD +( create REGION)Tj +0 -1.123 TD +( LEFT )Tj +/TT15 1 Tf +9.0015 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 0)Tj +-9.9883 -1.123 TD +( BOTTOM )Tj +/TT15 1 Tf +10.2017 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( [SETQ BTM \(IPLUS)Tj +-11.1885 -1 TD +( \(DSPYPOSITION NIL WINDOW\))Tj +T* +( \(FONTPROP WINDOW \(QUOTE ASCENT])Tj +0 -1.123 TD +( WIDTH )Tj +/TT15 1 Tf +9.6016 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(WINDOWPROP WINDOW \(QUOTE WIDTH\)\))Tj +-10.5884 -1.123 TD +( HEIGHT )Tj +/TT15 1 Tf +10.2017 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +(\(IDIFFERENCE)Tj +-11.1885 -1 TD +( \(WINDOWPROP WINDOW \(QUOTE HEIGHT\)\))Tj +T* +( BTM]\))Tj +T* +(\))Tj +/TT4 1 Tf +-10.8 -5.129 TD +(Menus)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 280.57 m +534.01 280.57 l +S +BT +/TT8 1 Tf +9 0 0 9 78 259.62 Tm +0.1067 Tw +[(A menu is basically a means of selecting from a list of items. The system provides common layout)]TJ +0 -1.2222 TD +0.1222 Tw +(and interactive user selection mechanisms, then calls a user-supplied function when a selection has)Tj +T* +0.2022 Tw +[(been confirmed. The two major constituents of a menu are a list of items and a "when selected)]TJ +T* +0.0311 Tw +[(function." The label that appears for each item is the item itself for non-lists, or its )]TJ +/TT10 1 Tf +36.9171 0 TD +0 Tw +(CAR)Tj +/TT8 1 Tf +1.8003 0 TD +0.0311 Tw +[( if the item is a)]TJ +-38.7174 -1.2889 TD +0.0211 Tw +[(list. In addition, there are a multitude of different formatting parameters for specifying font, size, and)]TJ +0 -1.2222 TD +0.0567 Tw +[(layout. When a menu is created, its unspecified fields are filled with defaults and its screen image is)]TJ +T* +0 Tw +(computed and saved.)Tj +0 -2.7778 TD +0.1856 Tw +[(Menus can be either pop up or fixed. If fixed menus are used, the menu must be included in a)]TJ +0 -1.2222 TD +0 Tw +(window.)Tj +/TT10 1 Tf +10 0 0 10 102 134.74 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 134.74 Tm +(MENU)Tj +/F1 1 Tf +10 0 0 10 129.6 134.74 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 132.47 134.74 Tm +(MENU POSITION RELEASECONTROLFLG )Tj +/TT10 1 Tf +10 0 0 10 310.699 134.74 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 316.7 134.74 Tm +[( )-13714.5([Function])]TJ +-21.1889 -1.8833 TD +0.2211 Tw +[(This function provides menus that pop up when they are used. It displays )]TJ +/TT14 1 Tf +36.3031 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.2211 Tw +[( at)]TJ +/TT14 1 Tf +-38.7035 -1.2889 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0989 Tw +[( \(in screen coordinates\) and waits for the user to select an item with a mouse)]TJ +-4.8008 -1.2889 TD +0.0222 Tw +[(key. Before any mouse key is pressed, the item the mouse is over is boxed. After any key)]TJ +0 -1.2222 TD +0.1233 Tw +[(is down, the selected menu item is video reversed. When all keys are released, )]TJ +/TT14 1 Tf +36.8886 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(s)Tj +/TT10 1 Tf +10 0 0 10 126 71.94 Tm +(WHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 210.0136 71.94 Tm +0.2122 Tw +[( field is called with four arguments: \(1\) the item selected, \(2\) the)]TJ +-9.3349 -1.3333 TD +0.1067 Tw +(menu, \(3\) the last mouse key released )Tj +/TT10 1 Tf +10 0 0 10 284.1423 59.94 Tm +0.257 Tw +(\(LEFT, MIDDLE, or RIGHT\))Tj +/TT8 1 Tf +9 0 0 9 435.8758 59.94 Tm +0.1067 Tw +(, and \(4\) the)Tj +-34.4306 -1.3278 TD +0.1656 Tw +(reverse list of superitems rolled through when selecting the item and )Tj +/TT14 1 Tf +32.514 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.1656 Tw +[( returns its)]TJ +ET +endstream +endobj +132 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F3 18 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT15 76 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +134 0 obj +<< +/Length 9707 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-36)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.0001 Tc +0.0021 Tw +(value. If no item is selected, )Tj +/TT14 1 Tf +12.728 0 TD +0 Tc +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0002 Tc +0.002 Tw +( returns )Tj +/TT10 1 Tf +10 0 0 10 343.532 569.49 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 361.535 569.49 Tm +0.0004 Tc +0.0018 Tw +(. If )Tj +/TT14 1 Tf +1.6766 0 TD +0 Tc +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0006 Tc +0.0016 Tw +( is )Tj +/TT10 1 Tf +10 0 0 10 430.8049 569.49 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 448.8078 569.49 Tm +0.0022 Tw +(, the menu is brought)Tj +-30.5342 -1.3333 TD +0.0467 Tw +(up at the value from )Tj +/TT14 1 Tf +9.4955 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(s )Tj +/TT10 1 Tf +10 0 0 10 290.0483 557.49 Tm +(MENUPOSITION)Tj +/TT8 1 Tf +9 0 0 9 362.06 557.49 Tm +0.0467 Tw +[( field, if it is a )]TJ +/TT14 1 Tf +6.4909 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0467 Tw +(, or at the current)Tj +-32.1873 -1.3278 TD +0.35 Tw +[(cursor position. The orientation of )]TJ +/TT14 1 Tf +17.6806 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.35 Tw +[( with respect to the specified position is)]TJ +-20.081 -1.2944 TD +0 Tw +(determined by its )Tj +/TT10 1 Tf +10 0 0 10 246.3252 533.89 Tm +(MENUOFFSET)Tj +/TT8 1 Tf +9 0 0 9 306.3349 533.89 Tm +( field.)Tj +-14.7039 -2.1111 TD +(If )Tj +/TT14 1 Tf +1.0855 0 TD +(RELEASECONTROLFLG)Tj +/TT8 1 Tf +10.2017 0 TD +0.1656 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 289.4978 514.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 307.5008 514.89 Tm +0.1656 Tw +[(, this process will retain control of the mouse. In this)]TJ +-14.8334 -1.3333 TD +0.0389 Tw +(case, if the user lets the mouse key up outside of the menu, )Tj +/TT14 1 Tf +26.7443 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0389 Tw +[( return )]TJ +/TT10 1 Tf +10 0 0 10 466.5249 502.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 484.5278 502.89 Tm +0.0389 Tw +[(. \(Note: this)]TJ +-34.5031 -1.3278 TD +0.1267 Tw +(is the standard way of allowing the user to indicate that they do not want to make the)Tj +0 -1.2278 TD +0.0444 Tw +[(offered choice.\) If )]TJ +/TT14 1 Tf +8.3921 0 TD +0 Tw +(RELEASECONTROLFLG)Tj +/TT8 1 Tf +10.2017 0 TD +0.0444 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 371.4644 479.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 389.4674 479.89 Tm +0.0444 Tw +(, this process will give up control of)Tj +-23.9408 -1.3278 TD +0.0389 Tw +[(the mouse when it is outside of the menu so that other processes can be run. In this case,)]TJ +0 -1.2222 TD +0.14 Tw +(clicking outside the menu has no effect on the call to )Tj +/TT14 1 Tf +24.8999 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.14 Tw +[(. If the menu is closed \(for)]TJ +-27.3003 -1.2889 TD +0.1622 Tw +(example, by right buttoning in it and selecting "Close" from the window menu\), )Tj +/TT14 1 Tf +37.6011 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +-37.6011 -1.2944 TD +(returns )Tj +/TT10 1 Tf +10 0 0 10 206.1269 433.69 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 224.1298 433.69 Tm +0.1156 Tw +[(. Programmers are encouraged to provide a menu item such as "cancel" or)]TJ +-5.57 -1.3278 TD +0 Tw +("abort" which gives users a positive way of indicating "no choice".)Tj +2.6667 -2 TD +0.0111 Tw +[(Note: A "released" menu will stay visible \(on top of the window stack\) until it)]TJ +3.3333 -1.2222 TD +0 Tw +(is closed or an item is selected.)Tj +/TT10 1 Tf +10 0 0 10 150 370.46 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 370.46 Tm +(ADDMENU)Tj +/F1 1 Tf +10 0 0 10 193.8 370.46 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 196.67 370.46 Tm +(MENU WINDOW POSITION DONTOPENFLG)Tj +/TT10 1 Tf +10 0 0 10 369.4981 370.46 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 375.4991 370.46 Tm +[( )-12514.5([Function])]TJ +-22.3888 -1.8889 TD +0.0844 Tw +(This function provides menus that remain active in windows. )Tj +/TT10 1 Tf +10 0 0 10 431.016 353.46 Tm +0 Tw +(ADDMENU)Tj +/TT8 1 Tf +9 0 0 9 473.0228 353.46 Tm +0.0844 Tw +[( displays )]TJ +/TT14 1 Tf +4.3666 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +-37.5914 -1.3278 TD +(at )Tj +/TT14 1 Tf +1.1495 0 TD +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0733 Tw +[( \(in window coordinates\) in )]TJ +/TT14 1 Tf +12.8701 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0733 Tw +[(. If the window is too small to display)]TJ +-22.421 -1.2889 TD +0.1011 Tw +[(the entire menu, the window is made scrollable. When an item is selected, the value of)]TJ +0 -1.2278 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 191.6148 318.86 Tm +(WHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 275.6285 318.86 Tm +0.32 Tw +[( field of )]TJ +/TT14 1 Tf +4.5938 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.32 Tw +[( is called with three arguments: \(1\) the item)]TJ +-18.2862 -1.3333 TD +0.0878 Tw +(selected, \(2\) the menu, and \(3\) the mouse button that the item was selected with \()Tj +/TT10 1 Tf +10 0 0 10 507.6659 306.86 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 531.6698 306.86 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 294.86 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 210.0058 294.86 Tm +0.0244 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 225.6641 294.86 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 255.669 294.86 Tm +0.0244 Tw +[(\). More than one menu can be put in a window, but a menu can only)]TJ +-9.0743 -1.3333 TD +0.1167 Tw +(be added to one window at a time. )Tj +/TT10 1 Tf +10 0 0 10 325.8811 282.86 Tm +0 Tw +(ADDMENU)Tj +/TT8 1 Tf +9 0 0 9 367.888 282.86 Tm +0.1167 Tw +[( returns the window into which )]TJ +/TT14 1 Tf +14.9671 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.1167 Tw +[( is)]TJ +-38.9106 -1.3278 TD +0 Tw +(placed.)Tj +0 -2.0056 TD +(If )Tj +/TT14 1 Tf +0.9977 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0778 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 227.7181 252.86 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 245.7211 252.86 Tm +0.0778 Tw +(, a window is created at the position specified by )Tj +/TT14 1 Tf +22.5566 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0778 Tw +[( \(in screen)]TJ +-35.3264 -1.3278 TD +0.1578 Tw +(coordinates\) that is the size of )Tj +/TT14 1 Tf +14.3324 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.1578 Tw +[(. If a window is created, it will be opened unless)]TJ +/TT14 1 Tf +-16.7328 -1.2944 TD +0 Tw +(DONTOPENFLG)Tj +/TT8 1 Tf +6.6011 0 TD +0.0633 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 263.87 229.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 281.8729 229.26 Tm +0.0633 Tw +[(. If )]TJ +/TT14 1 Tf +1.8599 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0633 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 353.8928 229.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 371.8958 229.26 Tm +0.0633 Tw +(, the menu is brought up at the value of)Tj +/TT14 1 Tf +-21.9884 -1.3333 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(s )Tj +/TT10 1 Tf +10 0 0 10 205.1784 217.26 Tm +(MENUPOSITION)Tj +/TT8 1 Tf +9 0 0 9 277.1902 217.26 Tm +0.1122 Tw +[( field \(in window coordinates\), if it is a position, or else in the)]TJ +-11.4656 -1.3333 TD +0.2267 Tw +(lower left corner of )Tj +/TT14 1 Tf +9.6005 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2267 Tw +[(. If both )]TJ +/TT14 1 Tf +4.8339 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2267 Tw +[( and )]TJ +/TT14 1 Tf +2.6462 0 TD +0 Tw +(POSITION)Tj +/TT8 1 Tf +4.8008 0 TD +0.2267 Tw +[( are )]TJ +/TT10 1 Tf +10 0 0 10 456.6895 205.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 474.6924 205.26 Tm +0.2267 Tw +(, a window is)Tj +-33.4103 -1.3278 TD +0 Tw +(created at the current cursor position.)Tj +0 -2.0056 TD +0.4678 Tw +(Warning: )Tj +/TT10 1 Tf +10 0 0 10 224.3262 175.26 Tm +0 Tw +(ADDMENU)Tj +/TT8 1 Tf +9 0 0 9 266.3331 175.26 Tm +0.4678 Tw +[( resets several of the window properties of )]TJ +/TT14 1 Tf +22.7818 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.4678 Tw +[(. The)]TJ +/TT10 1 Tf +10 0 0 10 204 163.26 Tm +0 Tw +(CURSORINFN)Tj +/TT8 1 Tf +9 0 0 9 264.0097 163.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 270.2897 163.26 Tm +(CURSORMOVEDFN)Tj +/TT8 1 Tf +9 0 0 9 348.3024 163.26 Tm +0.1978 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 373.8483 163.26 Tm +0 Tw +(BUTTONEVENTFN)Tj +/TT8 1 Tf +9 0 0 9 451.861 163.26 Tm +0.1978 Tw +[( window properties)]TJ +-27.5401 -1.3333 TD +0.9178 Tw +(are replaced with )Tj +/TT10 1 Tf +10 0 0 10 300.3933 151.26 Tm +0 Tw +(MENUBUTTONFN)Tj +/TT8 1 Tf +9 0 0 9 372.405 151.26 Tm +0.9178 Tw +(, so that )Tj +/TT14 1 Tf +6.4574 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.9178 Tw +[( will be active.)]TJ +/TT10 1 Tf +10 0 0 10 204 139.26 Tm +0 Tw +(MENUREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 282.0127 139.26 Tm +0.0744 Tw +[( is added to the )]TJ +/TT10 1 Tf +10 0 0 10 348.6835 139.26 Tm +0 Tw +(REPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 402.6923 139.26 Tm +0.0744 Tw +[( window property to update the)]TJ +-22.0769 -1.3333 TD +0.0978 Tw +[(menu image if the window is redisplayed. The )]TJ +/TT10 1 Tf +10 0 0 10 401.7418 127.26 Tm +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +9 0 0 9 449.7496 127.26 Tm +0.0978 Tw +[( window property is)]TJ +-27.3055 -1.3333 TD +0.0956 Tw +(changed to )Tj +/TT10 1 Tf +10 0 0 10 251.8538 115.26 Tm +0 Tw +(SCROLLBYREPAINTFN)Tj +/TT8 1 Tf +9 0 0 9 353.8704 115.26 Tm +0.0956 Tw +[( if the window is too small for the menu, to)]TJ +-16.6523 -1.3278 TD +0 Tw +(make the window scroll. )Tj +/TT10 1 Tf +10 0 0 10 150 81.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 81.03 Tm +(DELETEMENU)Tj +/F1 1 Tf +10 0 0 10 210 81.03 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.87 81.03 Tm +(MENU CLOSEFLG FROMWINDOW)Tj +/TT10 1 Tf +10 0 0 10 342.4911 81.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 348.4921 81.03 Tm +[( )-15515.3([Function])]TJ +-19.388 -1.8833 TD +0.0267 Tw +(This function removes )Tj +/TT14 1 Tf +10.2172 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0267 Tw +[( from the window )]TJ +/TT14 1 Tf +8.3484 0 TD +0 Tw +(FROMWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.0267 Tw +[(. If )]TJ +/TT14 1 Tf +1.7499 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0267 Tw +[( is the only menu in)]TJ +-31.1173 -1.2944 TD +0 Tw +(the window and )Tj +/TT14 1 Tf +7.5278 0 TD +(CLOSEFLG)Tj +/TT8 1 Tf +4.8008 0 TD +( is non-)Tj +/TT10 1 Tf +10 0 0 10 314.2778 52.43 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 332.2808 52.43 Tm +(, its window will be closed \(by )Tj +/TT10 1 Tf +10 0 0 10 455.7144 52.43 Tm +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 491.7202 52.43 Tm +(\).)Tj +ET +endstream +endobj +135 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +137 0 obj +<< +/Length 5080 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-37)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +(If )Tj +/TT14 1 Tf +1.1788 0 TD +(FROMWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.2589 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 206.2117 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 224.2146 569.49 Tm +0.2589 Tw +(, the list of currently open windows is searched for one that)Tj +-10.9127 -1.3333 TD +0 Tw +(contains )Tj +/TT14 1 Tf +3.9448 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(. If none is found, )Tj +/TT10 1 Tf +10 0 0 10 257.3437 557.49 Tm +(DELETEMENU)Tj +/TT8 1 Tf +9 0 0 9 317.3535 557.49 Tm +( does nothing.)Tj +/TT4 1 Tf +10 0 0 10 78 530.2 Tm +(Menu Fields)Tj +/TT8 1 Tf +9 0 0 9 78 505.54 Tm +(A menu is a datatype with the following fields:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(ITEMS)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +33.9117 0 TD +([Menu Field])Tj +-34.2456 -1.8444 TD +0.1278 Tw +[(The list of items to appear in the menu. If an item is a list, its CAR will appear in the)]TJ +0 -1.2278 TD +0.0256 Tw +[(menu. If the item \(or its )]TJ +/TT10 1 Tf +10 0 0 10 225.6915 456.89 Tm +0 Tw +(CAR)Tj +/TT8 1 Tf +9 0 0 9 243.6945 456.89 Tm +0.0256 Tw +[(\) is a bitmap, the bitmap will be displayed in the menu. The)]TJ +-13.0772 -1.3278 TD +0.1089 Tw +(default selection functions interpret each item as a list of three elements: a label, a form)Tj +0 -1.2222 TD +0.1233 Tw +(whose value is returned upon selection, and a help string that is printed in the prompt)Tj +T* +0.1178 Tw +[(window when the user presses a mouse key with the cursor pointing to this item. The)]TJ +0 -1.2278 TD +0.0467 Tw +[(default subitem function interprets the fourth element of the list. If it is a list whose )]TJ +/TT10 1 Tf +10 0 0 10 467.9022 411.89 Tm +0 Tw +(CAR)Tj +/TT8 1 Tf +9 0 0 9 126 399.89 Tm +(is the litatom )Tj +/TT10 1 Tf +10 0 0 10 180.1362 399.89 Tm +(SUBITEMS)Tj +/TT8 1 Tf +9 0 0 9 228.144 399.89 Tm +( , the )Tj +/TT10 1 Tf +10 0 0 10 249.6289 399.89 Tm +(CDR)Tj +/TT8 1 Tf +9 0 0 9 267.6318 399.89 Tm +( is taken as a list of subitems.)Tj +/TT12 1 Tf +-18.4035 -2.4389 TD +(SUBITEMFN)Tj +/TT8 1 Tf +5.4009 0 TD +[( )-31011.3([Menu Field])]TJ +-2.7342 -1.8444 TD +0.0456 Tw +[(A function to be called to determine if an item has any subitems. If an item has subitems)]TJ +0 -1.2222 TD +0.2467 Tw +(and the user rolls the cursor out the right of that item, a submenu with that items)Tj +T* +0.0256 Tw +[(subitems in it pops up. If the user selects one of the items from the submenu, the selected)]TJ +T* +0.0622 Tw +[(subitem is handled as if it were selected from the main menu. If the user rolls out of the)]TJ +T* +0.1533 Tw +(submenu to the left, the submenu is taken down and selection resumes from the main)Tj +T* +0 Tw +(menu.)Tj +0 -2 TD +0.0322 Tw +(An item with subitems is marked in the menu by a grey, right pointing triangle following)Tj +0 -1.2222 TD +0 Tw +(the label.)Tj +0 -2 TD +0.0133 Tw +[(The function is called with two arguments: \(1\) the menu and \(2\) the item. It should return)]TJ +0 -1.2222 TD +0.0067 Tw +[(a list of the subitems of this item if any. \(It is called twice to compute the menu image and)]TJ +T* +0.1744 Tw +[(each time the user rolls out of the item box so it should be moderately efficient. The)]TJ +0 -1.2278 TD +0 Tw +(default )Tj +/TT10 1 Tf +10 0 0 10 158.1176 226.29 Tm +(SUBITEMFN)Tj +/TT8 1 Tf +9 0 0 9 212.1264 226.29 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 218.2064 226.29 Tm +(DEFAULTSUBITEMFN)Tj +/TT8 1 Tf +9 0 0 9 314.222 226.29 Tm +0.1756 Tw +(, checks to see if the item is a list whose)Tj +-20.9136 -1.3333 TD +0.0256 Tw +(fourth element is a list whose )Tj +/TT10 1 Tf +10 0 0 10 246.3224 214.29 Tm +0 Tw +(CAR)Tj +/TT8 1 Tf +9 0 0 9 264.3253 214.29 Tm +0.0256 Tw +[( is the litatom )]TJ +/TT10 1 Tf +10 0 0 10 321.6315 214.29 Tm +0 Tw +(SUBITEMS)Tj +/TT8 1 Tf +9 0 0 9 369.6393 214.29 Tm +0.0256 Tw +[( and if so, returns the )]TJ +/TT10 1 Tf +10 0 0 10 457.6707 214.29 Tm +0 Tw +(CDR)Tj +/TT8 1 Tf +9 0 0 9 475.6736 214.29 Tm +0.0256 Tw +[( of)]TJ +-38.8526 -1.3278 TD +0 Tw +(it. )Tj +0 -2 TD +(For example:)Tj +/TT10 1 Tf +10 0 0 10 174 166.29 Tm +(\(create MENU)Tj +0 -1.2 TD +( ITEMS )Tj +/TT15 1 Tf +6.001 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(AAAA \(BBBB BBBB "help string for)Tj +-6.9878 -1.2 TD +(BBBB")Tj +T* +( \(SUBITEMS BBBB1 BBBB2 BBBB3\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 111.29 Tm +0.01 Tw +(will create a menu with items )Tj +/TT10 1 Tf +10 0 0 10 246.3569 111.29 Tm +0 Tw +(A)Tj +/TT8 1 Tf +9 0 0 9 252.3578 111.29 Tm +0.01 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 272.2737 111.29 Tm +0 Tw +(B)Tj +/TT8 1 Tf +9 0 0 9 278.2747 111.29 Tm +0.01 Tw +[( in which )]TJ +/TT10 1 Tf +10 0 0 10 317.7483 111.29 Tm +0 Tw +(B)Tj +/TT8 1 Tf +9 0 0 9 323.7493 111.29 Tm +0.01 Tw +[( will have subitems )]TJ +/TT10 1 Tf +10 0 0 10 403.4525 111.29 Tm +0 Tw +(B1)Tj +/TT8 1 Tf +9 0 0 9 415.4545 111.29 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 420.0445 111.29 Tm +(B2)Tj +/TT8 1 Tf +9 0 0 9 432.0464 111.29 Tm +0.01 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 451.9623 111.29 Tm +0 Tw +(B3)Tj +/TT8 1 Tf +9 0 0 9 463.9642 111.29 Tm +0.01 Tw +[(. The)]TJ +-37.5516 -1.3278 TD +0 Tw +(following picture below shows this menu as it first appears:)Tj +ET +q +46 0 0 -26 258.01 89.79 cm +/Im11 Do +Q +endstream +endobj +138 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT15 76 0 R +>> +/XObject << +/Im11 139 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +141 0 obj +<< +/Length 6167 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-38)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.1467 Tw +(The following picture shows the submenu, with the item BBBB3 selected by the cursor)Tj +0 -2.2833 TD +0 Tw +(\()Tj +ET +q +8 0 0 -16 177.01 564.99 cm +/Im12 Do +Q +BT +9 0 0 9 185 548.99 Tm +(\):)Tj +ET +q +91 0 0 -50 306.01 539.44 cm +/Im13 Do +Q +BT +/TT12 1 Tf +9 0 0 9 150 472.99 Tm +(WHENSELECTEDFN)Tj +/TT8 1 Tf +8.4014 0 TD +[( )-28010.9([Menu Field])]TJ +-5.7347 -1.8444 TD +0.2467 Tw +[(A function to be called when an item is selected. The function is called with three)]TJ +0 -1.2222 TD +0.1067 Tw +(arguments: \(1\) the item selected, \(2\) the menu, and \(3\) the mouse key that the item was)Tj +0 -1.2278 TD +1.2556 Tw +(selected with \()Tj +/TT10 1 Tf +10 0 0 10 254.1903 434.34 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 278.1942 434.34 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 293.9942 434.34 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 330.0001 434.34 Tm +1.2556 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 367.8184 434.34 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 397.8232 434.34 Tm +1.2556 Tw +[(\). The default function)]TJ +/TT10 1 Tf +10 0 0 10 174 422.34 Tm +0 Tw +(DEFAULTWHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 300.0205 422.34 Tm +0.0856 Tw +[( evaluates and returns the value of the second element of)]TJ +-14.0023 -1.3278 TD +0.0489 Tw +[(the item if the item is a list of at least length 2. If the item is not a list of at least length 2,)]TJ +/TT10 1 Tf +10 0 0 10 174 399.34 Tm +0 Tw +(DEFAULTWHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 300.0205 399.34 Tm +( returns the item.)Tj +-14.0023 -2.1111 TD +0.0001 Tc +0.0032 Tw +(Note: If the menu is added to a window with )Tj +/TT10 1 Tf +10 0 0 10 358.0697 380.34 Tm +0 Tc +0 Tw +(ADDMENU)Tj +/TT8 1 Tf +9 0 0 9 400.0766 380.34 Tm +0.0033 Tw +(, the default )Tj +/TT10 1 Tf +10 0 0 10 449.939 380.34 Tm +0 Tw +(WHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 174 368.34 Tm +(is )Tj +/TT10 1 Tf +10 0 0 10 202.9136 368.34 Tm +(BACKGROUNDWHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 346.937 368.34 Tm +2.2478 Tw +(, which is the same as)Tj +/TT10 1 Tf +10 0 0 10 174 356.34 Tm +0 Tw +(DEFAULTWHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 300.0205 356.34 Tm +0.0733 Tw +[( except that )]TJ +/TT10 1 Tf +10 0 0 10 349.9668 356.34 Tm +0 Tw +(EVAL.AS.PROCESS)Tj +/TT8 1 Tf +9 0 0 9 439.9814 356.34 Tm +0.0733 Tw +[( is used to evaluate the)]TJ +-29.5535 -1.3278 TD +0 Tw +(second element of the item, instead of tying up the mouse process. )Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(WHENHELDFN)Tj +/TT8 1 Tf +6.001 0 TD +[( )-30411.3([Menu Field])]TJ +-3.3343 -1.8444 TD +0.3011 Tw +(The function which is called when the user has held a mouse key on an item for)Tj +/TT10 1 Tf +10 0 0 10 174 295.74 Tm +0 Tw +(MENUHELDWAIT)Tj +/TT8 1 Tf +9 0 0 9 246.0117 295.74 Tm +0.46 Tw +[( milliseconds \(initially 1200\). The function is called with three)]TJ +-8.0013 -1.3278 TD +0.1067 Tw +(arguments: \(1\) the item selected, \(2\) the menu, and \(3\) the mouse key that the item was)Tj +0 -1.2278 TD +0.1756 Tw +(selected with \()Tj +/TT10 1 Tf +10 0 0 10 234.7503 272.74 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 258.7542 272.74 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 264.8342 272.74 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 300.8401 272.74 Tm +0.1756 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 319.2184 272.74 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 349.2232 272.74 Tm +0.1756 Tw +(\). )Tj +/TT10 1 Tf +10 0 0 10 362.1303 272.74 Tm +0 Tw +(WHENHELDFN)Tj +/TT8 1 Tf +9 0 0 9 422.1401 272.74 Tm +0.1756 Tw +[( is intended for prompting)]TJ +-27.5711 -1.3333 TD +0.07 Tw +[(users. The default is )]TJ +/TT10 1 Tf +10 0 0 10 261.358 260.74 Tm +0 Tw +(DEFAULTMENUHELDFN)Tj +/TT8 1 Tf +9 0 0 9 363.3746 260.74 Tm +0.07 Tw +[( which prints \(in the prompt window\) the)]TJ +-21.0416 -1.3278 TD +0.1022 Tw +(third element of the item or, if there is not a third element, the string "This item will be)Tj +0 -1.2222 TD +0 Tw +(selected when the button is released.")Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(WHENUNHELDFN)Tj +/TT8 1 Tf +7.2012 0 TD +[( )-29211.1([Menu Field])]TJ +-4.5345 -1.85 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 182.9193 200.14 Tm +(WHENHELDFN)Tj +/TT8 1 Tf +9 0 0 9 242.929 200.14 Tm +0.0711 Tw +[( was called, )]TJ +/TT10 1 Tf +10 0 0 10 293.2108 200.14 Tm +0 Tw +(WHENUNHELDFN)Tj +/TT8 1 Tf +9 0 0 9 365.2226 200.14 Tm +0.0711 Tw +[( will be called: \(1\) when the cursor leaves)]TJ +-21.247 -1.3278 TD +0.1878 Tw +[(the item, \(2\) when a mouse key is released, or \(3\) when another key is pressed. The)]TJ +0 -1.2278 TD +0.0856 Tw +(function is called with the same three argument values used to call )Tj +/TT10 1 Tf +10 0 0 10 450.5901 177.14 Tm +0 Tw +(WHENHELDFN)Tj +/TT8 1 Tf +9 0 0 9 510.5999 177.14 Tm +0.0856 Tw +[(. The)]TJ +-37.4 -1.3333 TD +0 Tw +(default )Tj +/TT10 1 Tf +10 0 0 10 206.9676 165.14 Tm +(WHENUNHELDFN)Tj +/TT8 1 Tf +9 0 0 9 278.9793 165.14 Tm +0.27 Tw +[( is the function )]TJ +/TT10 1 Tf +10 0 0 10 349.981 165.14 Tm +0 Tw +(CLRPROMPT)Tj +/TT8 1 Tf +9 0 0 9 403.9898 165.14 Tm +0.27 Tw +(, which just clears the prompt)Tj +-25.5544 -1.3278 TD +0 Tw +(window.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(MENUPOSITION)Tj +/TT8 1 Tf +7.2012 0 TD +[( )-29211.1([Menu Field])]TJ +-4.5345 -1.85 TD +0.0867 Tw +(The position of the menu to be used if the call to )Tj +/TT10 1 Tf +10 0 0 10 377.0753 115.54 Tm +0 Tw +(MENU)Tj +/TT8 1 Tf +9 0 0 9 401.0792 115.54 Tm +0.0867 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 415.6075 115.54 Tm +0 Tw +(ADDMENU)Tj +/TT8 1 Tf +9 0 0 9 457.6143 115.54 Tm +0.0867 Tw +[( does not specify a)]TJ +-31.5127 -1.3278 TD +0.1333 Tw +[(position. For popup menus, this is in screen coordinates. For fixed menus, it is in the)]TJ +0 -1.2222 TD +0.1933 Tw +[(coordinates of the window the menu is in. The point within the menu image that is)]TJ +0 -1.2278 TD +0.0667 Tw +(placed at this position is determined by )Tj +/TT10 1 Tf +10 0 0 10 337.427 81.54 Tm +0 Tw +(MENUOFFSET)Tj +/TT8 1 Tf +9 0 0 9 397.4368 81.54 Tm +0.0667 Tw +[(. If )]TJ +/TT10 1 Tf +10 0 0 10 414.2661 81.54 Tm +0 Tw +(MENUPOSITION)Tj +/TT8 1 Tf +9 0 0 9 486.2778 81.54 Tm +0.0667 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 498.4114 81.54 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 516.4143 81.54 Tm +0.0667 Tw +(, the)Tj +-38.046 -1.3278 TD +0 Tw +(menu will be brought up at the cursor position.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(MENUOFFSET)Tj +/TT8 1 Tf +6.001 0 TD +[( )-30411.3([Menu Field])]TJ +ET +endstream +endobj +142 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/XObject << +/Im12 143 0 R +/Im13 144 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +146 0 obj +<< +/Length 4737 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-39)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.1344 Tw +(The position in the menu image that is to be located at )Tj +/TT10 1 Tf +10 0 0 10 358.08 569.49 Tm +0 Tw +(MENUPOSITION)Tj +/TT8 1 Tf +9 0 0 9 430.0917 569.49 Tm +0.1344 Tw +[(. The default)]TJ +-33.788 -1.3278 TD +0.1067 Tw +[(offset is \(0,0\). For example, to bring up a menu with the cursor over a particular menu)]TJ +0 -1.2278 TD +0.0644 Tw +(item, set its )Tj +/TT10 1 Tf +10 0 0 10 174.9812 546.49 Tm +0 Tw +(MENUOFFSET)Tj +/TT8 1 Tf +9 0 0 9 234.991 546.49 Tm +0.0644 Tw +[( to a position within that item and set its )]TJ +/TT10 1 Tf +10 0 0 10 403.3447 546.49 Tm +0 Tw +(MENUPOSITION)Tj +/TT8 1 Tf +9 0 0 9 475.3564 546.49 Tm +0.0644 Tw +[( to)]TJ +/TT10 1 Tf +10 0 0 10 126 534.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 144.0029 534.49 Tm +(.)Tj +/TT12 1 Tf +-4.667 -2.4389 TD +(MENUFONT)Tj +/TT8 1 Tf +4.8008 0 TD +[( )-31611.4([Menu Field])]TJ +-2.1341 -1.8444 TD +0.3467 Tw +(The font in which the items will be appear in the menu. Default is the value of)Tj +/TT10 1 Tf +10 0 0 10 126 484.89 Tm +0 Tw +(MENUFONT)Tj +/TT8 1 Tf +9 0 0 9 174.0078 484.89 Tm +(.)Tj +/TT12 1 Tf +-8.0009 -2.4389 TD +(TITLE)Tj +/TT8 1 Tf +3.0005 0 TD +( )Tj +33.9117 0 TD +([Menu Field])Tj +-34.2456 -1.85 TD +(If non-)Tj +/TT10 1 Tf +10 0 0 10 152.666 446.29 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 170.6689 446.29 Tm +(, the value of this field will appear as a title in a line above the menu.)Tj +/TT12 1 Tf +-7.6299 -2.4389 TD +(MENUTITLEFONT)Tj +/TT8 1 Tf +7.8013 0 TD +[( )-28611([Menu Field])]TJ +-5.1346 -1.85 TD +0.0001 Tc +0.0043 Tw +(The font in which the title of the menu will be appear. If this is )Tj +/TT10 1 Tf +10 0 0 10 379.1234 407.69 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 397.1263 407.69 Tm +0.0044 Tw +(, the title will be in the)Tj +-30.1251 -1.3333 TD +0 Tw +(same font as window titles. If it is )Tj +/TT10 1 Tf +10 0 0 10 264.0015 395.69 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 270.0024 395.69 Tm +(, it will be in the same font as the menu items. )Tj +/TT12 1 Tf +-18.6669 -2.4389 TD +(CENTERFLG)Tj +/TT8 1 Tf +5.4009 0 TD +[( )-31011.3([Menu Field])]TJ +-2.7342 -1.85 TD +(If non-)Tj +/TT10 1 Tf +10 0 0 10 152.666 357.09 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 170.6689 357.09 Tm +(, the menu items are centered; otherwise they are left-justified.)Tj +/TT12 1 Tf +-7.6299 -2.4389 TD +(MENUROWS)Tj +/TT8 1 Tf +4.8008 0 TD +[( )-31611.4([Menu Field])]TJ +/TT12 1 Tf +-4.8008 -1.0667 TD +(MENUCOLUMNS)Tj +/TT8 1 Tf +6.6011 0 TD +[( )-29811.2([Menu Field])]TJ +-3.9344 -1.85 TD +0.0556 Tw +[(These fields control the shape of the menu in terms of rows and columns. If )]TJ +/TT10 1 Tf +10 0 0 10 437.8774 308.89 Tm +0 Tw +(MENUROWS)Tj +/TT8 1 Tf +9 0 0 9 126 296.89 Tm +0.0533 Tw +[(is given, the menu will have that number of rows. If )]TJ +/TT10 1 Tf +10 0 0 10 342.6491 296.89 Tm +0 Tw +(MENUCOLUMNS)Tj +/TT8 1 Tf +9 0 0 9 408.6599 296.89 Tm +0.0533 Tw +[( is given, the menu)]TJ +-31.4067 -1.3278 TD +0.0233 Tw +[(will have that number of columns. If only one is given, the other one will be calculated to)]TJ +0 -1.2278 TD +0.5367 Tw +(generate the minimal rectangular menu. \(Normally only one of )Tj +/TT10 1 Tf +10 0 0 10 422.4544 273.89 Tm +0 Tw +(MENUROWS)Tj +/TT8 1 Tf +9 0 0 9 470.4622 273.89 Tm +0.5367 Tw +[( or)]TJ +/TT10 1 Tf +10 0 0 10 126 261.89 Tm +0 Tw +(MENUCOLUMNS)Tj +/TT8 1 Tf +9 0 0 9 192.0107 261.89 Tm +( is given.\) If neither is given, the items will be in one column.)Tj +/TT12 1 Tf +-10.0012 -2.4389 TD +(ITEMHEIGHT)Tj +/TT8 1 Tf +6.001 0 TD +[( )-30411.3([Menu Field])]TJ +-3.3343 -1.8444 TD +0.07 Tw +[(The height of each item box in the menu. If not specified, it will be the maximum of the)]TJ +0 -1.2278 TD +0 Tw +(height of the )Tj +/TT10 1 Tf +10 0 0 10 178.4926 212.29 Tm +(MENUFONT)Tj +/TT8 1 Tf +9 0 0 9 226.5005 212.29 Tm +( and the heights of any bitmaps appearing as labels.)Tj +/TT12 1 Tf +-13.8334 -2.4389 TD +(ITEMWIDTH)Tj +/TT8 1 Tf +5.4009 0 TD +[( )-31011.3([Menu Field])]TJ +-2.7342 -1.8444 TD +0.01 Tw +[(The width of each item box in the menu. If not specified, it will be the width of the largest)]TJ +0 -1.2222 TD +0 Tw +(item in the menu.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(MENUBORDERSIZE)Tj +/TT8 1 Tf +8.4014 0 TD +[( )-28010.9([Menu Field])]TJ +-5.7347 -1.8444 TD +(The size of the border around each item box. If not specified, 0 \(no border\) is used.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(MENUOUTLINESIZE)Tj +/TT8 1 Tf +9.0015 0 TD +[( )-27410.8([Menu Field])]TJ +-6.3348 -1.8444 TD +0.0511 Tw +[(The size of the outline around the entire menu. If not specified, a maximum of 1 and the)]TJ +/TT10 1 Tf +10 0 0 10 126 76.49 Tm +0 Tw +(MENUBORDERSIZE)Tj +/TT8 1 Tf +9 0 0 9 210.0136 76.49 Tm +( is used.)Tj +/TT12 1 Tf +-12.0015 -2.4389 TD +(CHANGEOFFSETFLG)Tj +/TT8 1 Tf +9.0015 0 TD +[( )-27410.8([Menu Field])]TJ +ET +endstream +endobj +147 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +149 0 obj +<< +/Length 6790 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-40)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.02 Tw +[(\(popup menus only\) If )]TJ +/TT10 1 Tf +10 0 0 10 269.255 569.49 Tm +0 Tw +(CHANGEOFFSETFLG)Tj +/TT8 1 Tf +9 0 0 9 359.2696 569.49 Tm +0.02 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 388.9499 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 406.9529 569.49 Tm +0.02 Tw +(, the position of the menu offset)Tj +-25.8837 -1.3278 TD +0.1044 Tw +(is set each time a selection is confirmed so that the menu will come up next time in the)Tj +0 -1.2222 TD +0.1311 Tw +[(same position relative to the cursor. This will cause the menu to reappear in the same)]TJ +T* +0.3511 Tw +[(place on the screen if the cursor has not moved since the last selection. This is)]TJ +0 -1.2278 TD +0.0478 Tw +(implemented by changing the )Tj +/TT10 1 Tf +10 0 0 10 297.1717 524.49 Tm +0 Tw +(MENUOFFSET)Tj +/TT8 1 Tf +9 0 0 9 357.1814 524.49 Tm +0.0478 Tw +[( field on each use. If )]TJ +/TT10 1 Tf +10 0 0 10 444.0127 524.49 Tm +0 Tw +(CHANGEOFFSETFLG)Tj +/TT8 1 Tf +9 0 0 9 174 512.49 Tm +0.0211 Tw +(is the atom )Tj +/TT10 1 Tf +10 0 0 10 220.5324 512.49 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 226.5334 512.49 Tm +0.0211 Tw +[( or the atom )]TJ +/TT10 1 Tf +10 0 0 10 277.5404 512.49 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 283.5414 512.49 Tm +0.0211 Tw +(, only the )Tj +/TT10 1 Tf +10 0 0 10 323.3721 512.49 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 329.3731 512.49 Tm +0.0211 Tw +[( or the )]TJ +/TT10 1 Tf +3.1415 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0211 Tw +[( coordinate of the )]TJ +/TT10 1 Tf +10 0 0 10 435.6797 512.49 Tm +0 Tw +(MENUOFFSET)Tj +/TT8 1 Tf +9 0 0 9 495.6895 512.49 Tm +0.0211 Tw +[( field will)]TJ +-35.7433 -1.3333 TD +0.2056 Tw +[(be changed. For example, by setting the )]TJ +/TT10 1 Tf +10 0 0 10 350.9186 500.49 Tm +0 Tw +(MENUOFFSET)Tj +/TT8 1 Tf +9 0 0 9 410.9284 500.49 Tm +0.2056 Tw +[( position to \(-1,0\) and setting)]TJ +/TT10 1 Tf +10 0 0 10 174 488.49 Tm +0 Tw +(CHANGEOFFSETFLG)Tj +/TT8 1 Tf +9 0 0 9 264.0146 488.49 Tm +0.0944 Tw +[( to )]TJ +/TT10 1 Tf +10 0 0 10 278.0633 488.49 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 284.0642 488.49 Tm +0.0944 Tw +(, the menu will pop up so that the cursor is just to the left of)Tj +-12.2294 -1.3278 TD +0 Tw +(the last item selected. This is the setting of the window command menus.)Tj +-5.3333 -2.7778 TD +(The following fields are read only.)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(IMAGEHEIGHT)Tj +/TT8 1 Tf +6.6011 0 TD +[( )-29811.2([Menu Field])]TJ +-3.9344 -1.8444 TD +(Returns the height of the entire menu.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(IMAGEWIDTH)Tj +/TT8 1 Tf +6.001 0 TD +[( )-30411.3([Menu Field])]TJ +-3.3343 -1.8444 TD +(Returns the width of the entire menu.)Tj +/TT4 1 Tf +10 0 0 10 126 350 Tm +(Miscellaneous Menu Functions)Tj +/TT10 1 Tf +2.4 -2.194 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 328.06 Tm +(MAXMENUITEMWIDTH)Tj +/F1 1 Tf +10 0 0 10 242.4 328.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 245.27 328.06 Tm +(MENU)Tj +/TT10 1 Tf +10 0 0 10 266.8735 328.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.8745 328.06 Tm +[( )-23917.3([Function])]TJ +-10.9861 -1.8833 TD +(Returns the width of the largest menu item label in the menu )Tj +/TT14 1 Tf +27.1929 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 288.23 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 288.23 Tm +(MAXMENUITEMHEIGHT)Tj +/F1 1 Tf +10 0 0 10 247.8 288.23 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 250.67 288.23 Tm +(MENU)Tj +/TT10 1 Tf +10 0 0 10 272.2735 288.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 278.2745 288.23 Tm +[( )-23317.3([Function])]TJ +-11.5861 -1.8833 TD +(Returns the height of the largest menu item label in the menu )Tj +/TT14 1 Tf +27.3652 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 248.4 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 248.4 Tm +(MENUREGION)Tj +/F1 1 Tf +10 0 0 10 210 248.4 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.87 248.4 Tm +(MENU)Tj +/TT10 1 Tf +10 0 0 10 234.4735 248.4 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.4745 248.4 Tm +[( )-27517.3([Function])]TJ +-7.3861 -1.8833 TD +(Returns the region covered by the image of )Tj +/TT14 1 Tf +19.3164 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +( in its window.)Tj +/TT10 1 Tf +10 0 0 10 150 208.57 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 208.57 Tm +(WFROMMENU)Tj +/F1 1 Tf +10 0 0 10 204.6 208.57 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.47 208.57 Tm +(MENU)Tj +/TT10 1 Tf +10 0 0 10 229.0735 208.57 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 235.0745 208.57 Tm +[( )-28117.3([Function])]TJ +-6.7861 -1.8889 TD +(Returns the window )Tj +/TT14 1 Tf +9.312 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +( is located in, if it is in one; )Tj +/TT10 1 Tf +10 0 0 10 387.1479 191.57 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 405.1509 191.57 Tm +( otherwise.)Tj +/TT10 1 Tf +10 0 0 10 150 168.34 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 168.34 Tm +(DOSELECTEDITEM)Tj +/F1 1 Tf +10 0 0 10 231.6 168.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 234.47 168.34 Tm +(MENU ITEM BUTTON)Tj +/TT10 1 Tf +10 0 0 10 320.8841 168.34 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 326.885 168.34 Tm +[( )-17916.1([Function])]TJ +-16.9872 -1.8889 TD +(Calls )Tj +/TT14 1 Tf +2.6582 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(s )Tj +/TT10 1 Tf +10 0 0 10 229.832 151.34 Tm +(WHENSELECTEDFN)Tj +/TT8 1 Tf +9 0 0 9 313.8457 151.34 Tm +0.1933 Tw +[( on )]TJ +/TT14 1 Tf +2.0146 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1933 Tw +[( and )]TJ +/TT14 1 Tf +2.5795 0 TD +0 Tw +(BUTTON)Tj +/TT8 1 Tf +3.6006 0 TD +0.1933 Tw +[(. It provides a programmatic)]TJ +-26.1335 -1.3278 TD +0 Tw +(way of making a selection. It does not change the display.)Tj +/TT10 1 Tf +10 0 0 10 150 117.11 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 117.11 Tm +(MENUITEMREGION)Tj +/F1 1 Tf +10 0 0 10 231.6 117.11 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 234.47 117.11 Tm +(ITEM MENU)Tj +/TT10 1 Tf +10 0 0 10 283.0779 117.11 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 289.0789 117.11 Tm +[( )-22116.8([Function])]TJ +-12.7865 -1.8833 TD +(Returns the region occupied by )Tj +/TT14 1 Tf +14.0913 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +( in )Tj +/TT14 1 Tf +1.373 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 77.28 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 77.28 Tm +(SHADEITEM)Tj +/F1 1 Tf +10 0 0 10 204.6 77.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 207.47 77.28 Tm +(ITEM MENU SHADE DS/W)Tj +/TT10 1 Tf +10 0 0 10 315.4876 77.28 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 321.4886 77.28 Tm +[( )-18515.7([Function])]TJ +-16.3876 -1.8833 TD +0.0289 Tw +(Shades the region occupied by )Tj +/TT14 1 Tf +13.8793 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[( in )]TJ +/TT14 1 Tf +1.4308 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[(. If )]TJ +/TT14 1 Tf +1.7566 0 TD +0 Tw +(DS/W)Tj +/TT8 1 Tf +2.4004 0 TD +0.0289 Tw +[( is a display stream or a window, it)]TJ +-24.2679 -1.2944 TD +0.0122 Tw +(is assumed to be where )Tj +/TT14 1 Tf +10.6226 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0122 Tw +[( is displayed. Otherwise, )]TJ +/TT10 1 Tf +10 0 0 10 394.5805 48.68 Tm +0 Tw +(WFROMMENU)Tj +/TT8 1 Tf +9 0 0 9 448.5892 48.68 Tm +0.0122 Tw +[( is called to locate the)]TJ +ET +endstream +endobj +150 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +152 0 obj +<< +/Length 4703 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-41)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(window )Tj +/TT14 1 Tf +3.9633 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0156 Tw +[( is in. Shading is persistent, and is reapplied when the window the menu is)]TJ +-6.3637 -1.2889 TD +0 Tw +(in gets redisplayed. To unshade an item, call with a )Tj +/TT14 1 Tf +23.2056 0 TD +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +( of 0.)Tj +/TT10 1 Tf +10 0 0 10 102 535.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 535.06 Tm +(PUTMENUPROP)Tj +/F1 1 Tf +10 0 0 10 167.4 535.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 170.27 535.06 Tm +(MENU PROPERTY VALUE)Tj +/TT10 1 Tf +10 0 0 10 272.8867 535.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 278.8877 535.06 Tm +[( )-17915.8([Function])]TJ +-16.9875 -1.8833 TD +0.02 Tw +(Stores the property )Tj +/TT14 1 Tf +8.7914 0 TD +0 Tw +(PROPERTY)Tj +/TT8 1 Tf +4.8008 0 TD +0.02 Tw +[( with the value )]TJ +/TT14 1 Tf +6.9384 0 TD +0 Tw +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +0.02 Tw +[( on a property list in the menu )]TJ +/TT14 1 Tf +13.8265 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-39.758 -1.2889 TD +(The user can use this property list for associating arbitrary data with a menu object.)Tj +/TT10 1 Tf +10 0 0 10 102 484.23 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 484.23 Tm +(GETMENUPROP)Tj +/F1 1 Tf +10 0 0 10 167.4 484.23 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 170.27 484.23 Tm +(MENU PROPERTY)Tj +/TT10 1 Tf +10 0 0 10 240.4814 484.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.4824 484.23 Tm +[( )-21516.4([Function])]TJ +-13.3869 -1.8833 TD +(Returns the value of the )Tj +/TT14 1 Tf +10.8184 0 TD +(PROPERTY)Tj +/TT8 1 Tf +4.8008 0 TD +( property of the menu )Tj +/TT14 1 Tf +9.9624 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 78 440.34 Tm +(Examples of Menu Use)Tj +/TT8 1 Tf +9 0 0 9 78 415.68 Tm +[(Example:)-1202.5(A simple menu:)]TJ +/TT10 1 Tf +10 0 0 10 174 397.63 Tm +(\(MENU \(create MENU ITEMS _ \(\(YES T\) \(NO \(QUOTE)Tj +0 -1.2 TD +(NIL\)\)\) \)\))Tj +/TT8 1 Tf +9 0 0 9 78 359.63 Tm +(Creates a menu with items )Tj +/TT10 1 Tf +10 0 0 10 186.4043 359.63 Tm +(YES)Tj +/TT8 1 Tf +9 0 0 9 204.4072 359.63 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 224.1431 359.63 Tm +(NO)Tj +/TT8 1 Tf +9 0 0 9 236.145 359.63 Tm +( in a single vertical column:)Tj +ET +q +31 0 0 -26 258.01 349.13 cm +/Im14 Do +Q +BT +9 0 0 9 78 302.63 Tm +(If )Tj +/TT10 1 Tf +10 0 0 10 86.2793 302.63 Tm +(YES)Tj +/TT8 1 Tf +9 0 0 9 104.2822 302.63 Tm +( is selected, )Tj +/TT10 1 Tf +10 0 0 10 151.5103 302.63 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 157.5112 302.63 Tm +( will be returned. Otherwise, )Tj +/TT10 1 Tf +10 0 0 10 276.3613 302.63 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 294.3643 302.63 Tm +( will be returned.)Tj +-24.0405 -2.8833 TD +[(Example:)-1202.5(A simple menu, with centering:)]TJ +/TT10 1 Tf +10 0 0 10 174 258.63 Tm +(\(MENU \(create MENU TITLE )Tj +/TT15 1 Tf +15.0024 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( "Foo?")Tj +-15.9893 -1.2 TD +( ITEMS )Tj +/TT15 1 Tf +6.6011 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(\(YES T "Adds the Foo feature."\))Tj +-7.5879 -1.2 TD +( \(NO NO "Removes the Foo feature."\)\))Tj +T* +( CENTERFLG )Tj +/TT15 1 Tf +12.602 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T\)\))Tj +/TT8 1 Tf +9 0 0 9 78 196.63 Tm +(Creates a menu with a title )Tj +/TT10 1 Tf +10 0 0 10 186.9492 196.63 Tm +(Foo?)Tj +/TT8 1 Tf +9 0 0 9 210.9531 196.63 Tm +( and items )Tj +/TT10 1 Tf +10 0 0 10 254.5645 196.63 Tm +(YES)Tj +/TT8 1 Tf +9 0 0 9 272.5674 196.63 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 292.3032 196.63 Tm +(NO)Tj +/TT8 1 Tf +9 0 0 9 304.3052 196.63 Tm +( centered in a single vertical column:)Tj +ET +q +31 0 0 -35 258.01 186.13 cm +/Im15 Do +Q +BT +9 0 0 9 78 130.63 Tm +0.06 Tw +(The strings following the )Tj +/TT10 1 Tf +10 0 0 10 182.1219 130.63 Tm +0 Tw +(YES)Tj +/TT8 1 Tf +9 0 0 9 200.1248 130.63 Tm +0.06 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 220.9407 130.63 Tm +0 Tw +(NO)Tj +/TT8 1 Tf +9 0 0 9 232.9426 130.63 Tm +0.06 Tw +[( are help strings and will be printed if the cursor remains over)]TJ +-17.2159 -1.3278 TD +0.0178 Tw +[(one of the items for a period of time. This menu differs from the one above in that it distinquishes the)]TJ +/TT10 1 Tf +10 0 0 10 78 107.63 Tm +0 Tw +(NO)Tj +/TT8 1 Tf +9 0 0 9 90.0019 107.63 Tm +0.1144 Tw +[( case from the case where the user clicked outside of the menu. If the user clicks outside of the)]TJ +-1.3336 -1.3333 TD +0 Tw +(menu, )Tj +/TT10 1 Tf +10 0 0 10 105.4219 95.63 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 123.4248 95.63 Tm +( is returned.)Tj +-5.0472 -2.8833 TD +[(Example:)-1202.5(A multi-column menu:)]TJ +/TT10 1 Tf +10 0 0 10 162 53.63 Tm +(\(create MENU ITEMS )Tj +/TT15 1 Tf +11.4019 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(1 2 3 4 5 6 7 8 9 * 0 #\))Tj +-12.3887 -1 TD +( CENTERFLG )Tj +/TT15 1 Tf +13.8022 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T)Tj +ET +endstream +endobj +153 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT15 76 0 R +>> +/XObject << +/Im14 154 0 R +/Im15 155 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +158 0 obj +<< +/Length 4871 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-42)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +11.4 -4.251 TD +( MENUCOLUMNS )Tj +/TT15 1 Tf +15.0024 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 3)Tj +-15.9893 -1 TD +( MENUFONT )Tj +/TT15 1 Tf +13.2021 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(FONTCREATE MODERN 10 BOLD\))Tj +-14.189 -1 TD +( ITEMHEIGHT )Tj +/TT15 1 Tf +14.4023 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 15)Tj +-15.3892 -1 TD +( ITEMWIDTH )Tj +/TT15 1 Tf +13.8022 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( 15)Tj +-14.7891 -1 TD +( CHANGEOFFSETFLG )Tj +/TT15 1 Tf +17.4028 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T\))Tj +/TT8 1 Tf +9 0 0 9 126 505.54 Tm +0.0667 Tw +(Creates a touch-tone-phone number pad with the items in 15 by 15 boxes printed in Modern 10 bold)Tj +0 -1.2222 TD +0 Tw +(font:)Tj +ET +q +47 0 0 -62 306.01 484.99 cm +/Im16 Do +Q +BT +9 0 0 9 126 402.54 Tm +0.0389 Tw +[(If used in pop up mode, its first use will have the cursor in the middle. Subsequent use will have the)]TJ +T* +0 Tw +(cursor in the same relative location as the previous selection.)Tj +0 -2.7778 TD +[(Example:)-1202.5(A program using a previously-saved menu:)]TJ +/TT10 1 Tf +10 0 0 10 210 350.49 Tm +(\(SELECTQ [MENU)Tj +0 -1 TD +( \(COND \(\(type? MENU FOOMENU\))Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/TT17 1 Tf +5.2788 0 TD +(\()Tj +/F3 1 Tf +0.333 0 TD +(* use previously computed menu)Tj +/TT17 1 Tf +14.793 0 TD +(.\))Tj +/TT10 1 Tf +-20.4048 -0.877 TD +( FOOMENU\))Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/TT10 1 Tf +4.4453 0 TD +(\(T)Tj +/TT4 1 Tf +1.2002 0 TD +( )Tj +/TT17 1 Tf +0.2778 0 TD +(\()Tj +/F3 1 Tf +0.333 0 TD +(* create and save the menu)Tj +/TT17 1 Tf +12.331 0 TD +(\))Tj +/TT10 1 Tf +-18.5873 -1 TD +( \(SETQ FOOMENU)Tj +T* +( \(create MENU)Tj +1.2 -1 TD +( ITEMS )Tj +/TT15 1 Tf +9.6016 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(\(A A-SELECTED "prompt string)Tj +-10.5884 -1.2 TD +(for A"\))Tj +-1.2 -1.2 TD +( \(B B-SELECTED "prompt string for B"])Tj +/TT4 1 Tf +0 -1.129 TD +( )Tj +/TT10 1 Tf +2.5005 0 TD +(\(A-SELECTED)Tj +/TT4 1 Tf +6.6011 0 TD +( )Tj +/TT17 1 Tf +0.5557 0 TD +(\()Tj +/F3 1 Tf +0.333 0 TD +(* if A is selected)Tj +/TT17 1 Tf +7.275 0 TD +(\))Tj +/TT4 1 Tf +0.333 0 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +(\(DOATHING\)\))Tj +/TT4 1 Tf +-17.8761 -1.129 TD +( )Tj +/TT10 1 Tf +2.5005 0 TD +(\(B-SELECTED)Tj +/TT4 1 Tf +6.6011 0 TD +( )Tj +/TT17 1 Tf +0.5557 0 TD +(\()Tj +/F3 1 Tf +0.333 0 TD +(* if B is selected)Tj +/TT17 1 Tf +7.293 0 TD +(\))Tj +/TT4 1 Tf +0.333 0 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +(\(DOBTHING\)\))Tj +/TT4 1 Tf +-17.8941 -1.129 TD +( )Tj +/TT10 1 Tf +2.2227 0 TD +( \(PROGN )Tj +/TT17 1 Tf +4.8008 0 TD +(\()Tj +/F3 1 Tf +0.333 0 TD +(* user selected outside the menu)Tj +/TT17 1 Tf +14.606 0 TD +(\))Tj +/TT4 1 Tf +0.333 0 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +(NIL\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 197.27 Tm +0.0256 Tw +(This expression displays a pop up menu with two items, )Tj +/TT10 1 Tf +10 0 0 10 355.4182 197.27 Tm +0 Tw +(A)Tj +/TT8 1 Tf +9 0 0 9 361.4191 197.27 Tm +0.0256 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 381.615 197.27 Tm +0 Tw +(B)Tj +/TT8 1 Tf +9 0 0 9 387.616 197.27 Tm +0.0256 Tw +(, and waits for the user to select one.)Tj +-29.0684 -1.3333 TD +0 Tw +(If )Tj +/TT10 1 Tf +10 0 0 10 135.6893 185.27 Tm +(A)Tj +/TT8 1 Tf +9 0 0 9 141.6903 185.27 Tm +0.1567 Tw +[( is selected, )]TJ +/TT10 1 Tf +10 0 0 10 193.1483 185.27 Tm +0 Tw +(DOATHING)Tj +/TT8 1 Tf +9 0 0 9 241.1561 185.27 Tm +0.1567 Tw +[( is called. If )]TJ +/TT10 1 Tf +10 0 0 10 297.7105 185.27 Tm +0 Tw +(B)Tj +/TT8 1 Tf +9 0 0 9 303.7115 185.27 Tm +0.1567 Tw +[( is selected, )]TJ +/TT10 1 Tf +10 0 0 10 355.1695 185.27 Tm +0 Tw +(DOBTHING)Tj +/TT8 1 Tf +9 0 0 9 403.1773 185.27 Tm +0.1567 Tw +[( is called. If neither of these is)]TJ +-30.7975 -1.3333 TD +0 Tw +(selected, the form returns )Tj +/TT10 1 Tf +10 0 0 10 229.7768 173.27 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 247.7798 173.27 Tm +(.)Tj +-13.5311 -2.8833 TD +0.0722 Tw +[(The purpose of this example is to show some good practices to follow when using menus. First, the)]TJ +0 -1.2278 TD +0.0533 Tw +(menu is only created once, and saved in the variable )Tj +/TT10 1 Tf +10 0 0 10 341.197 136.27 Tm +0 Tw +(FOOMENU)Tj +/TT8 1 Tf +9 0 0 9 383.2038 136.27 Tm +0.0533 Tw +[(. This is more efficient if the menu is)]TJ +-28.5782 -1.3278 TD +0.0022 Tw +(used more than once. Second, all of the information about the menu is kept in one place, which makes)Tj +0 -1.2222 TD +0.0356 Tw +[(it easy to understand and edit. Third, the forms evaluated as a result of selecting something from the)]TJ +T* +0.0422 Tw +(menu are part of the code and hence will be known to masterscope \(as opposed to the situation if the)Tj +T* +0.0522 Tw +[(forms were stored as part of the items\). Fourth, the items in the menu have help strings for the user.)]TJ +T* +0 Tw +(Finally, the code is commented \(always worth the trouble\).)Tj +ET +endstream +endobj +159 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F3 18 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT15 76 0 R +/TT17 160 0 R +>> +/XObject << +/Im16 161 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +163 0 obj +<< +/Length 4355 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-43)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT4 1 Tf +-35.4 -4.38 TD +(Free Menus)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 565.49 m +534.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 544.54 Tm +0.1733 Tw +[(Free Menus are powerful and flexible menus that are useful for )-5.6(applications needing menus with)]TJ +0 -1.2222 TD +0.0678 Tw +[(different types of items, including command items, state items, and items that can be edited. A Free)]TJ +T* +0.0522 Tw +(Menu is part of a window. It can can be opened and closed as desired, or attached as a control menu)Tj +T* +0 Tw +(to the application window.)Tj +/TT4 1 Tf +10 0 0 10 78 485.2 Tm +(Making a Free Menu)Tj +/TT8 1 Tf +9 0 0 9 78 460.54 Tm +0.0889 Tw +[(A Free Menu is built from a description of the contents and layout of the menu. As a Free Menu is)]TJ +T* +0.0556 Tw +[(simply a group of items, a Free Menu Description is simply a specification of a group of items. Each)]TJ +T* +0.1078 Tw +[(group has properties associated with it, as does each Free Menu Item. These properties specify the)]TJ +T* +0.0389 Tw +[(format of the items in the group, and the behavior of each item. The function )]TJ +/TT10 1 Tf +34.9704 0 TD +0 Tw +(FREEMENU)Tj +/TT8 1 Tf +4.8008 0 TD +0.0389 Tw +[( takes a Free)]TJ +-39.7712 -1.2889 TD +0 Tw +(Menu Description, and returns a closed window with the Free Menu in it. )Tj +0 -2.7778 TD +0.07 Tw +(The easiest way to make a Free Menu is to define a specific function which calls )Tj +/TT10 1 Tf +36.474 0 TD +0 Tw +(FREEMENU)Tj +/TT8 1 Tf +4.8008 0 TD +0.07 Tw +[( with the)]TJ +-41.2748 -1.2889 TD +0.08 Tw +(Free Menu Description in the function. This function can then also set up the Free Menu window as)Tj +0 -1.2222 TD +0.0089 Tw +[(required by the application. The Free Menu Description is saved as part of the specific function when)]TJ +T* +0.0667 Tw +[(the application is saved. Alternately, the Free Menu Description can be saved as a variable in your)]TJ +T* +0.0001 Tc +0.001 Tw +(file; then just call )Tj +/TT10 1 Tf +7.9816 0 TD +0 Tc +0 Tw +(FREEMENU)Tj +/TT8 1 Tf +4.8008 0 TD +0.0011 Tw +( with the name of the variable. This may be a more difficult alternative if)Tj +-12.7824 -1.2889 TD +0 Tw +(the backquote facility is used to build the Free Menu Description.)Tj +/TT4 1 Tf +10 0 0 10 78 308.4 Tm +(Free Menu Formatting)Tj +/TT8 1 Tf +9 0 0 9 78 271.74 Tm +0.0344 Tw +[(A Free Menu can be formatted in one of four ways. The items in any group can be automatically laid)]TJ +0 -1.2222 TD +0.0122 Tw +[(out in rows, in columns, or in a table, or else the application can specify the exact location of each item)]TJ +T* +0.1067 Tw +[(in the group. Free Menu keeps track of the region that a group of items occupies, and items can be)]TJ +T* +0.2 Tw +(justified within that region. This way an item can be automatically positioned at one of the nine)Tj +T* +0 Tw +(justification locations, top-left, top-center, top-right, middle-left, etc.)Tj +/TT4 1 Tf +10 0 0 10 78 201.4 Tm +(Free Menu Description)Tj +/TT8 1 Tf +9 0 0 9 78 176.74 Tm +0.0056 Tw +[(A Free Menu Description, specifying a group of items, is a list structure. The first entry in the list is an)]TJ +T* +0 Tw +(optional list of the properties for this group of items. This entry is in the form: )Tj +/TT10 1 Tf +0 -2.7111 TD +(\(PROPS ...\) )Tj +/TT8 1 Tf +0 -2.8444 TD +(The keyword )Tj +/TT10 1 Tf +6.1509 0 TD +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +( determines whether or not the optional group properties list is specified.. )Tj +-9.1514 -2.8444 TD +0.0467 Tw +(One important group property is )Tj +/TT10 1 Tf +15.0961 0 TD +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0467 Tw +[(. The four types of formatting, )]TJ +/TT10 1 Tf +14.1309 0 TD +0.1111 Tw +(ROW, TABLE, COLUMN)Tj +/TT8 1 Tf +11.024 0 TD +0.0467 Tw +(, or)Tj +/TT10 1 Tf +-43.8516 -1.2889 TD +0 Tw +(EXPLICIT)Tj +/TT8 1 Tf +4.8008 0 TD +0.1422 Tw +(, determine the syntax of the rest of the Free Menu Description. When using )Tj +/TT10 1 Tf +35.7348 0 TD +0 Tw +(EXPLICIT)Tj +/TT8 1 Tf +-40.5356 -1.2889 TD +0.1744 Tw +[(formatting, the rest of the description is any number of Item Descriptions which have )]TJ +/TT10 1 Tf +40.8095 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1744 Tw +[( and)]TJ +/TT10 1 Tf +-43.2099 -1.2889 TD +0 Tw +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +( properties specifying the position of the item in the menu. The syntax is:)Tj +ET +endstream +endobj +164 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +166 0 obj +<< +/Length 3889 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-44)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 126 570.14 Tm +(\(\(PROPS FORMAT EXPLICIT ...\))Tj +0 -1.2222 TD +( )Tj +T* +( ...\))Tj +/TT8 1 Tf +0 -2.8444 TD +0.0533 Tw +(When using )Tj +/TT10 1 Tf +5.7058 0 TD +0 Tw +(ROW)Tj +/TT8 1 Tf +1.8003 0 TD +0.0533 Tw +[( or )]TJ +/TT10 1 Tf +1.5476 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0533 Tw +[( formatting, the rest of the description is any number of item groups, each)]TJ +-12.0542 -1.2889 TD +0.1356 Tw +[(group corresponding to a row in the menu. These groups are identical in syntax to an )]TJ +/TT10 1 Tf +40.5335 0 TD +0 Tw +(EXPLICIT)Tj +/TT8 1 Tf +-40.5335 -1.2889 TD +0.0256 Tw +(group description. The groups have an optional )Tj +/TT10 1 Tf +21.5597 0 TD +0 Tw +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0256 Tw +[( list and any number of Item Descriptions. The)]TJ +-24.5602 -1.2889 TD +0.0833 Tw +(items need not have )Tj +/TT10 1 Tf +9.4671 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0833 Tw +[( and )]TJ +/TT10 1 Tf +2.3595 0 TD +0 Tw +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +0.0833 Tw +[( properties, as the location of each item is determined by the)]TJ +-17.8276 -1.2889 TD +0.0189 Tw +[(formatter. However, the order of the rows and items is important. The menu is laid out top to bottom)]TJ +0 -1.2222 TD +0 Tw +(by row, and left to right within each row. The syntax is:)Tj +/TT10 1 Tf +0 -4.0444 TD +[(\(\(PROPS FORMAT ROW ...\))-3531.1(; props of this group)]TJ +0 -1.2222 TD +[( \()-5331.4(; items in first row)]TJ +T* +( ...\))Tj +T* +[( \(\(PROPS ...\))-8932(; props of second row)]TJ +T* +[( )-4731.3(; items in second row)]TJ +T* +( ...\)\))Tj +/TT8 1 Tf +0 -2.8444 TD +(\(The comments above only describe the syntax.\))Tj +0 -2.7778 TD +(For )Tj +/TT10 1 Tf +1.8837 0 TD +(COLUMN)Tj +/TT8 1 Tf +3.6006 0 TD +0.1367 Tw +[( formatting, the syntax is identical to that of )]TJ +/TT10 1 Tf +20.7749 0 TD +0 Tw +(ROW)Tj +/TT8 1 Tf +1.8003 0 TD +0.1367 Tw +[( formatting. However, each group of)]TJ +-28.0595 -1.2889 TD +0.0756 Tw +[(items corresponds to a column in the menu, rather than a row. The menu is laid out left to right by)]TJ +0 -1.2222 TD +0 Tw +(column, top to bottom within each column. )Tj +0 -2.7778 TD +0.0644 Tw +[(Finally, a Free Menu Description can have recursively nested groups. Anywhere the description can)]TJ +0 -1.2222 TD +0.0056 Tw +(take an Item Description, it can take a group, marked by the keyword )Tj +/TT10 1 Tf +31.0463 0 TD +0 Tw +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.0051 Tw +[(. A nested group inherits)]TJ +-34.0468 -1.2889 TD +0.2544 Tw +[(all of the properties of its mother group, by default. However, any of these properties can be)]TJ +0 -1.2222 TD +0 Tw +(overridden in the nested groups )Tj +/TT10 1 Tf +14.4897 0 TD +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +( list, including the )Tj +/TT10 1 Tf +8.2202 0 TD +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +(. The syntax is:)Tj +/TT10 1 Tf +-29.311 -1.2222 TD +[(\()-8733.2(;)0( no PROPS list, default row format)]TJ +T* +[(\()-5931.5(; first in row)]TJ +T* +[(\(GROUP)-5732.7(; nested group, second in row)]TJ +T* +[( \(PROPS FORMAT COLUMN ...\))-530.6(; optional props)]TJ +T* +[( \( ...\))-1130.7(; first column)]TJ +T* +( \( ...\)\))Tj +T* +[( \)\))-2931(; third in row)]TJ +/TT8 1 Tf +0 -2.8444 TD +0.1 Tw +(Here is an example of a simple Free Menu Description for a menu which might provide access to a)Tj +0 -1.2222 TD +0 Tw +(simple data base:)Tj +/TT10 1 Tf +10 0 0 10 126 91.29 Tm +(\(\(\(LABEL LOOKUP SELECTEDFN MYLOOKUPFN\) )Tj +0 -1.2 TD +( \(LABEL EXIT SELECTEDFN MYEXITFN\)\))Tj +T* +( \(\(LABEL Name: TYPE DISPLAY\) \(LABEL "" TYPE EDIT ID NAME\)\))Tj +T* +( \(\(LABEL Address: TYPE DISPLAY\) \(LABEL "" TYPE EDIT ID ADDRESS\)\))Tj +T* +( \(\(LABEL Phone: TYPE DISPLAY\))Tj +ET +endstream +endobj +167 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +169 0 obj +<< +/Length 2543 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-45)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-33 -4.251 TD +( \(LABEL "" TYPE EDIT LIMITCHARS MYPHONEP ID PHONE\)\)\))Tj +/TT8 1 Tf +9 0 0 9 78 543.54 Tm +0.1378 Tw +(This menu has two command buttons, LOOKUP and EXIT, and three edit fields, with IDs NAME,)Tj +0 -1.2222 TD +0.1056 Tw +[(PHONE, and ADDRESS. The Edit items are initialized to the empty string, as in this example they)]TJ +T* +0.0544 Tw +[(need no other initial value. The user could select the Name: prompt, type a persons name, and then)]TJ +T* +0.0056 Tw +[(press the LOOKUP button. The function )]TJ +/TT10 1 Tf +18.6128 0 TD +0 Tw +(MYLOOKUPFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0056 Tw +[( would be called. That function would look at)]TJ +-24.6138 -1.2889 TD +0.3256 Tw +[(the NAME Edit item, look up that name in the data base, and fill in the rest of the fields)]TJ +0 -1.2222 TD +0.0467 Tw +[(appropriately. The PHONE item has )]TJ +/TT10 1 Tf +16.9353 0 TD +0 Tw +(MYPHONEP)Tj +/TT8 1 Tf +4.8008 0 TD +0.0467 Tw +[( as a )]TJ +/TT10 1 Tf +2.3151 0 TD +0 Tw +(LIMITCHARS)Tj +/TT8 1 Tf +6.001 0 TD +0.0467 Tw +[( function. This function would be)]TJ +-30.0521 -1.2889 TD +0.1411 Tw +[(called when editing the phone number, in order to restrict input to a valid phone number. After)]TJ +0 -1.2222 TD +0 Tw +(looking up Perry, the Free Menu might look like:)Tj +ET +q +147 0 0 -49.5 208.51 446.79 cm +/Im17 Do +Q +BT +9 0 0 9 78 349.84 Tm +(Here is a more complicated example:)Tj +/TT10 1 Tf +10 0 0 10 78 312.79 Tm +(\(\(PROPS FONT \(MODERN 10\)\))Tj +0 -1.2 TD +( \(\(LABEL Example FONT \(MODERN 10 BOLD\) HJUSTIFY CENTER\)\))Tj +T* +( \(\(LABEL NORTH\) \(LABEL SOUTH\) \(LABEL EAST\) \(LABEL WEST\)\))Tj +T* +( \(\(PROPS ID ROW3 BOX 1\))Tj +T* +( \(LABEL ONE\) \(LABEL TWO\) \(LABEL THREE\)\))Tj +T* +( \(\(PROPS ID ROW4\))Tj +T* +( \(LABEL ONE ID ALPHA\))Tj +T* +( \(GROUP \(PROPS FORMAT COLUMN BACKGROUND 23130 BOX 2 BOXSPACE 4\))Tj +T* +0.138 Tw +[( \(\(TYPE NWAY LABEL A BOX 1 COLLECTION COL1 NWAYPROPS \(DESELECT)]TJ +T* +0 Tw +(T\)\) )Tj +T* +( \(TYPE NWAY LABEL B BOX 1 COLLECTION COL1\))Tj +T* +( \(TYPE NWAY LABEL C BOX 1 COLLECTION COL1\)\))Tj +9 0 0 9 78 168.79 Tm +( )Tj +10 0 0 10 115.8062 168.79 Tm +( \(\(TYPE STATE LABEL "Choose Me" BOX 1 MENUITEMS \(BRAVO DELTA\))Tj +-3.7806 -1.2 TD +( INITSTATE DELTA LINKS \(DISPLAY \(GROUP ALPHA\)\)\))Tj +T* +( \(TYPE DISPLAY ID ALPHA LABEL "" BOX 1 MAXWIDTH 35\)\)\))Tj +T* +( \(LABEL THREE\)\)\))Tj +/TT8 1 Tf +9 0 0 9 78 106.84 Tm +(which will produce the following Free Menu:)Tj +ET +endstream +endobj +170 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/XObject << +/Im17 171 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +173 0 obj +<< +/Length 2531 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-46)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +ET +q +126 0 0 -88.5 267.01 575.99 cm +/Im18 Do +Q +BT +/TT8 1 Tf +9 0 0 9 126 440.04 Tm +(And if the Free Menu were formatted as a Table, instead of in Rows, it would look like:)Tj +ET +q +171 0 0 -88.5 244.51 421.49 cm +/Im19 Do +Q +BT +9 0 0 9 126 283.54 Tm +0.0078 Tw +[(The following breakdown of the example explains how each part contributes to the Free Menu shown)]TJ +0 -1.2222 TD +0 Tw +(above.)Tj +/TT10 1 Tf +10 0 0 10 126 254.49 Tm +(\(PROPS FONT \(MODERN 10\)\) )Tj +/TT8 1 Tf +9 0 0 9 174 235.54 Tm +0.2867 Tw +[(This line specifies the properties of the group that is the entire Free Menu. These)]TJ +T* +0.0744 Tw +[(properties are described in Section 28.7.4, Free Menu Group Properties. In this example,)]TJ +T* +0 Tw +(all items in the Free Menu, unless otherwise specified, will be in Modern 10.)Tj +/TT10 1 Tf +10 0 0 10 126 195.49 Tm +(\(\(LABEL Example FONT \(MODERN 10 BOLD\) HJUSTIFY CENTER\)\) )Tj +/TT8 1 Tf +9 0 0 9 174 176.54 Tm +0.1689 Tw +[(This line of the Free Menu Description describes the first row of the menu. Since the)]TJ +/TT10 1 Tf +T* +0 Tw +(FORMAT)Tj +/TT8 1 Tf +3.6006 0 TD +0.0311 Tw +[( specification of a Free Menu is, by default,)]TJ +/TT10 1 Tf +19.1659 0 TD +0.0756 Tw +[( ROW)]TJ +/TT8 1 Tf +2.4759 0 TD +0.0311 Tw +[( formatting, this line sets the first)]TJ +-25.2424 -1.2889 TD +0.0267 Tw +[(row in the menu. If the menu were in )]TJ +/TT10 1 Tf +17.2628 0 TD +0 Tw +(COLUMN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0267 Tw +[( formatting, this position in the description)]TJ +-20.8633 -1.2889 TD +0 Tw +(would specify the first column in the menu.)Tj +0 -2 TD +0.2022 Tw +[(In this example the first row contains only one item. The item is, by default, a type)]TJ +/TT10 1 Tf +0 -1.2944 TD +0 Tw +(MOMENTARY )Tj +/TT8 1 Tf +6.2221 0 TD +0.0922 Tw +[(item. It has its own Font declaration )]TJ +/TT10 1 Tf +10 0 0 10 387.1026 112.69 Tm +0.222 Tw +(\(FONT \(MODERN 10 BOLD\)\))Tj +/TT8 1 Tf +9 0 0 9 531.785 112.69 Tm +0 Tw +(,)Tj +-39.7539 -1.3278 TD +(that overrides the font specified for the Free Menu as a whole, so the item appears bolded. )Tj +0 -2 TD +0.0367 Tw +[(Finally, the item is justified, in this case centered. The )]TJ +/TT10 1 Tf +24.4589 0 TD +0 Tw +(HJUSTIFY)Tj +/TT8 1 Tf +4.8008 0 TD +0.0367 Tw +[( Item Property indicates)]TJ +-29.2597 -1.2889 TD +0 Tw +(that the item is to be centered horizontally within its row.)Tj +/TT10 1 Tf +10 0 0 10 126 53.09 Tm +(\(\(LABEL NORTH\) \(LABEL SOUTH\) \(LABEL EAST\) \(LABEL WEST\)\) )Tj +ET +endstream +endobj +174 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/XObject << +/Im18 175 0 R +/Im19 176 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +178 0 obj +<< +/Length 4831 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-47)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.1544 Tw +[(This line specifies the second row of the menu. The second row has four very simple)]TJ +0 -1.2278 TD +0 Tw +(items, labeled )Tj +/TT10 1 Tf +10 0 0 10 183.2124 558.49 Tm +(NORTH)Tj +/TT8 1 Tf +9 0 0 9 213.2173 558.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 217.7173 558.49 Tm +(SOUTH)Tj +/TT8 1 Tf +9 0 0 9 247.7221 558.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 252.2221 558.49 Tm +(EAST)Tj +/TT8 1 Tf +9 0 0 9 276.226 558.49 Tm +(, and )Tj +/TT10 1 Tf +10 0 0 10 298.2119 558.49 Tm +(WEST)Tj +/TT8 1 Tf +9 0 0 9 322.2158 558.49 Tm +( next to each other within the same row. )Tj +/TT10 1 Tf +10 0 0 10 78 539.49 Tm +(\(\(PROPS ID ROW3 BOX 1\))Tj +0 -1.2 TD +( \(LABEL ONE\) \(LABEL TWO\) \(LABEL THREE\)\) )Tj +/TT8 1 Tf +9 0 0 9 126 508.54 Tm +0.1189 Tw +(The third row in the menu is similar to the second row, except that it has a box drawn)Tj +0 -1.2278 TD +0.2478 Tw +[(around it. The box is specified in the )]TJ +/TT10 1 Tf +10 0 0 10 295.2072 497.49 Tm +0 Tw +(PROPS)Tj +/TT8 1 Tf +9 0 0 9 325.2121 497.49 Tm +0.2478 Tw +[( declaration for this row. Rows \(and)]TJ +-22.1347 -1.3278 TD +0.1844 Tw +(columns\) are just like Groups in that the first thing in the declaration can be a list of)Tj +0 -1.2278 TD +0.1578 Tw +[(properties for that row. In this case the row is named by giving it an )]TJ +/TT10 1 Tf +10 0 0 10 423.5847 474.49 Tm +0 Tw +(ID)Tj +/TT8 1 Tf +9 0 0 9 435.5867 474.49 Tm +0.1578 Tw +[( property of)]TJ +/TT10 1 Tf +10 0 0 10 126 462.49 Tm +0 Tw +(ROW3)Tj +/TT8 1 Tf +9 0 0 9 150.0039 462.49 Tm +0.0422 Tw +[(. It is useful to name your groups if you want to be able to access and modify their)]TJ +-2.6671 -1.3278 TD +0.1644 Tw +(properties later \(via the function)Tj +/TT10 1 Tf +14.9693 0 TD +0.3944 Tw +[( FM.GROUPPROP)]TJ +/TT8 1 Tf +8.1957 0 TD +0.1644 Tw +[(\). It is boxed by specifying the )]TJ +/TT10 1 Tf +15.0339 0 TD +0 Tw +(BOX)Tj +/TT8 1 Tf +-38.1989 -1.2889 TD +(property with a value of 1, meaning draw the box one dot wide. )Tj +/TT10 1 Tf +10 0 0 10 78 420.89 Tm +( \(\(PROPS ID ROW4\))Tj +0 -1.2 TD +( \(LABEL ONE ID ALPHA\))Tj +T* +( \(GROUP \(PROPS FORMAT COLUMN BACKGROUND 23130 BOX 2 BOXSPACE 4\))Tj +T* +( \(\(TYPE NWAY LABEL A BOX 1 COLLECTION COL1 NWAYPROPS \(DESELECT T\)\) )Tj +T* +( \(TYPE NWAY LABEL B BOX 1 COLLECTION COL1\))Tj +T* +( \(TYPE NWAY LABEL C BOX 1 COLLECTION COL1\)\))Tj +T* +( \(\(TYPE STATE LABEL "Choose Me" BOX 1 MENUITEMS \(BRAVO DELTA\))Tj +T* +( INITSTATE DELTA LINKS \(DISPLAY \(GROUP ALPHA\)\)\))Tj +T* +( \(TYPE DISPLAY ID ALPHA LABEL "" BOX 1 MAXWIDTH 35\)\)\))Tj +T* +( \(LABEL THREE\)\)\))Tj +/TT8 1 Tf +9 0 0 9 126 293.94 Tm +0.0211 Tw +[(This part of the description specifies the fourth row in the menu. This row consists of: an)]TJ +0 -1.2278 TD +0.1378 Tw +(item labelled )Tj +/TT10 1 Tf +10 0 0 10 182.2471 282.89 Tm +0 Tw +(ONE)Tj +/TT8 1 Tf +9 0 0 9 200.25 282.89 Tm +0.1378 Tw +(, a group of items, and an item labelled )Tj +/TT10 1 Tf +10 0 0 10 368.7474 282.89 Tm +0 Tw +(THREE)Tj +/TT8 1 Tf +9 0 0 9 398.7523 282.89 Tm +0.1378 Tw +[(. That is, Free Menu)]TJ +-30.3058 -1.3278 TD +0.0933 Tw +(thinks of the group as an entry, and formats the rest of the row just as it it were a large)Tj +0 -1.2222 TD +0 Tw +(item. )Tj +/TT10 1 Tf +10 0 0 10 78 241.89 Tm +( \(GROUP \(PROPS FORMAT COLUMN BACKGROUND 23130 BOX 2 BOXSPACE 4\))Tj +0 -1.2 TD +( \(\(TYPE NWAY LABEL A BOX 1 COLLECTION COL1 NWAYPROPS \(DESELECT T\)\) )Tj +T* +( \(TYPE NWAY LABEL B BOX 1 COLLECTION COL1\))Tj +T* +( \(TYPE NWAY LABEL C BOX 1 COLLECTION COL1\)\))Tj +T* +( \(\(TYPE STATE LABEL "Choose Me" BOX 1 MENUITEMS \(BRAVO DELTA\))Tj +T* +( INITSTATE DELTA LINKS \(DISPLAY \(GROUP ALPHA\)\)\))Tj +T* +( \(TYPE DISPLAY ID ALPHA LABEL "" BOX 1 MAXWIDTH 35\)\)\) )Tj +/TT8 1 Tf +9 0 0 9 126 150.94 Tm +0.0056 Tw +[(The second part of this row is a nested group of items. It is declared as a group by placing)]TJ +0 -1.2278 TD +0.2511 Tw +(the keyword )Tj +/TT10 1 Tf +10 0 0 10 183.2983 139.89 Tm +0 Tw +(GROUP)Tj +/TT8 1 Tf +9 0 0 9 213.3032 139.89 Tm +0.2511 Tw +[( as the first word in the declaration. A group can be declared)]TJ +-9.7004 -1.3278 TD +0.0289 Tw +(anywhere a Free Menu Description can take a Free Menu Item Description \(as opposed to)Tj +0 -1.2222 TD +0 Tw +(a row or column declaration\). )Tj +0 -2 TD +0.1378 Tw +(The first thing in what would have been the second item declaration in this row is the)Tj +0 -1.2278 TD +0 Tw +(keyword )Tj +/TT10 1 Tf +10 0 0 10 165.5034 87.89 Tm +(GROUP)Tj +/TT8 1 Tf +9 0 0 9 195.5083 87.89 Tm +0.1622 Tw +[(. Following this keyword comes a normal group description, starting)]TJ +-7.7231 -1.3278 TD +0.1544 Tw +(with an optional list of properties, and followed by any number of things to go in the)Tj +0 -1.2222 TD +0 Tw +(group \(based on the format of the group\).)Tj +ET +endstream +endobj +179 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +181 0 obj +<< +/Length 4972 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-48)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(This groups Props declaration is: )Tj +/TT10 1 Tf +10 0 0 10 126 551.49 Tm +(\(PROPS FORMAT COLUMN BACKGROUND 23130 BOX 2 BOXSPACE 4\). )Tj +/TT8 1 Tf +9 0 0 9 174 532.54 Tm +0.0378 Tw +(It specifies that the group is to be formatted as a number of columns \(instead of rows, the)Tj +0 -1.2222 TD +0.08 Tw +[(default\). The entire group will have a background shade of 23130, and a box of width 2)]TJ +0 -1.2278 TD +0.1789 Tw +[(around it, as you can see in the sample menu. The )]TJ +/TT10 1 Tf +10 0 0 10 396.2639 510.49 Tm +0 Tw +(BOXSPACE)Tj +/TT8 1 Tf +9 0 0 9 444.2717 510.49 Tm +0.1789 Tw +[( declaration tells Free)]TJ +-30.0302 -1.3278 TD +0.1944 Tw +(Menu to leave an extra four dots of room between the edge of the group \(ie the box)Tj +0 -1.2222 TD +0 Tw +(around the group\) and the items in the group. )Tj +-5.3333 -2.8889 TD +(The first column of this group is a Collection of)Tj +/TT10 1 Tf +20.8433 0 TD +0.0007 Tc +0.0026 Tw +( NWAY)Tj +/TT8 1 Tf +3.0038 0 TD +0 Tc +0 Tw +( items:)Tj +/TT10 1 Tf +10 0 0 10 126 442.89 Tm +(\(\(TYPE NWAY LABEL A BOX 1 COLLECTION COL1 NWAYPROPS \(DESELECT T\)\) )Tj +0 -1.2 TD +( \(TYPE NWAY LABEL B BOX 1 COLLECTION COL1\))Tj +T* +( \(TYPE NWAY LABEL C BOX 1 COLLECTION COL1\)\))Tj +/TT8 1 Tf +9 0 0 9 174 399.94 Tm +0.02 Tw +(The three items, labelled A, B, and C are all declared as )Tj +/TT10 1 Tf +24.803 0 TD +0 Tw +(NWAY)Tj +/TT8 1 Tf +2.4004 0 TD +0.02 Tw +[( items, and are also specified)]TJ +-27.2034 -1.2889 TD +0.0778 Tw +(to belong to the same)Tj +/TT10 1 Tf +9.7354 0 TD +0.1867 Tw +[( NWAY)]TJ +/TT8 1 Tf +3.1872 0 TD +0.0778 Tw +[( Collection, Col1. This is how a number of )]TJ +/TT10 1 Tf +19.789 0 TD +0 Tw +(NWAY )Tj +/TT8 1 Tf +3.1872 0 TD +0.0778 Tw +(items are)Tj +-35.8987 -1.2889 TD +0.1311 Tw +[(collected together. The property)]TJ +/TT10 1 Tf +14.9478 0 TD +0.3132 Tw +[( NWAYPROPS )]TJ +/TT8 1 Tf +7.2287 0 TD +0.1311 Tw +(\(DESELECT T\) on the first )Tj +/TT10 1 Tf +12.5325 0 TD +0 Tw +(NWAY )Tj +/TT8 1 Tf +3.3149 0 TD +(item)Tj +-38.024 -1.2889 TD +0.1478 Tw +(specifies that the Col1 Collection is to have the Deselect property enabled. This simply)Tj +0 -1.2222 TD +0.0022 Tw +(means that the )Tj +/TT10 1 Tf +6.7459 0 TD +0 Tw +(NWAY )Tj +/TT8 1 Tf +3.0049 0 TD +0.0022 Tw +(collection can be put in the state where none of the items \(A, B, or C\))Tj +-9.7509 -1.2889 TD +0.0511 Tw +[(are selected \(highlighted\). Additionally, each item is declared with a box whose width is)]TJ +0 -1.2222 TD +0 Tw +(one dot \(pixel\) around it.)Tj +-5.3333 -2.8889 TD +(The second column in this nested group is specified by:)Tj +/TT10 1 Tf +10 0 0 10 126 287.49 Tm +(\(\(TYPE STATE LABEL "Choose Me" BOX 1 MENUITEMS \(BRAVO DELTA\))Tj +0 -1.2 TD +( INITSTATE DELTA LINKS \(DISPLAY \(GROUP ALPHA\)\)\))Tj +T* +( \(TYPE DISPLAY ID ALPHA LABEL "" BOX 1 MAXWIDTH 35\)\))Tj +/TT8 1 Tf +9 0 0 9 174 244.54 Tm +0.0467 Tw +(Column two contains two items, a )Tj +/TT10 1 Tf +15.6535 0 TD +0 Tw +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0467 Tw +[( item and a )]TJ +/TT10 1 Tf +5.3593 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0467 Tw +[( item. The)]TJ +/TT10 1 Tf +4.7928 0 TD +0.1111 Tw +[( STATE)]TJ +/TT8 1 Tf +3.7117 0 TD +0.0467 Tw +[( item is)]TJ +-36.7185 -1.2889 TD +0.0722 Tw +[(labelled "Choose Me." A Label can be a string or a bitmap, as well as an atom. Selecting)]TJ +0 -1.2222 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6972 0 TD +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.06 Tw +[( item will cause a pop-up menu to appear with two choices for the state of the)]TJ +-4.6977 -1.2944 TD +0 Tw +(item, )Tj +/TT10 1 Tf +10 0 0 10 197.601 210.29 Tm +(BRAVO)Tj +/TT8 1 Tf +9 0 0 9 227.6059 210.29 Tm +0.1433 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 249.9217 210.29 Tm +0 Tw +(DELTA)Tj +/TT8 1 Tf +9 0 0 9 279.9266 210.29 Tm +0.1433 Tw +[(. The items to go in the pop-up menu are designated by the)]TJ +/TT10 1 Tf +-11.7696 -1.3278 TD +0 Tw +(MENUITEMS)Tj +/TT8 1 Tf +5.4009 0 TD +( property.)Tj +-5.4009 -2.0667 TD +(The pop-up menu would look like:)Tj +ET +q +42.75 0 0 -26.25 306.01 157.19 cm +/Im20 Do +Q +BT +9 0 0 9 174 99.44 Tm +0.1033 Tw +(The initial state of the "Choose Me" item is designated to be )Tj +/TT10 1 Tf +10 0 0 10 423.4535 99.44 Tm +0 Tw +(DELTA)Tj +/TT8 1 Tf +9 0 0 9 453.4583 99.44 Tm +0.1033 Tw +[( by the )]TJ +/TT10 1 Tf +3.5566 0 TD +0 Tw +(INITSTATE)Tj +/TT8 1 Tf +-34.6075 -1.3278 TD +0.0355 Tw +[(Item Property. The initial state can be anything; it does not have to be one of the items in)]TJ +0 -1.2222 TD +0 Tw +(the pop-up menu.)Tj +0 -2 TD +0.0744 Tw +(Next, the )Tj +/TT10 1 Tf +4.4384 0 TD +0 Tw +(STATE )Tj +/TT8 1 Tf +3.7795 0 TD +0.0744 Tw +(item is Linked to a )Tj +/TT10 1 Tf +8.818 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0744 Tw +[( item, so that the current state of the item)]TJ +-21.2366 -1.2944 TD +0.0233 Tw +[(will be displayed in the Free Menu. The links name is )]TJ +/TT10 1 Tf +10 0 0 10 396.0005 46.84 Tm +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +9 0 0 9 438.0073 46.84 Tm +0.0233 Tw +[( \(a special link name for)]TJ +ET +endstream +endobj +182 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/XObject << +/Im20 183 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +185 0 obj +<< +/Length 5804 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-49)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +9 0 0 9 126 569.49 Tm +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.2622 Tw +[( items\), and the item linked to is described by the Link Description, \()]TJ +/TT10 1 Tf +10 0 0 10 455.9432 569.49 Tm +0 Tw +(GROUP)Tj +/TT8 1 Tf +9 0 0 9 126 557.54 Tm +0.0278 Tw +[(ALPHA\). Normally the linked item can just be described by its ID. But in this case, there)]TJ +0 -1.2222 TD +0.0622 Tw +(is more than one item whose ID is ALPHA \(for the sake of this example\), specifically the)Tj +T* +0.0433 Tw +[(first item in the fourth row and the display item in this nested group. The form \(GROUP)]TJ +T* +0.0356 Tw +(ALPHA\) tells Free Menu to search for an item whose ID is ALPHA, limiting the search to)Tj +T* +0.0289 Tw +[(the items that are within this lexical group. The lexical group is the smallest group that is)]TJ +T* +0.1467 Tw +(declared with the )Tj +/TT10 1 Tf +8.42 0 TD +0 Tw +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.1467 Tw +[( keyword \(i.e., not row and column groups\) that contains this)]TJ +-11.4205 -1.2889 TD +0.1167 Tw +[(item declaration. So in this case, Free Menu will link the)]TJ +/TT10 1 Tf +26.2243 0 TD +0.2789 Tw +[( STATE)]TJ +/TT8 1 Tf +3.8795 0 TD +0.1167 Tw +[( item to the )]TJ +/TT10 1 Tf +5.7049 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +-35.8087 -1.2889 TD +0.0989 Tw +(item, rather than the first item in the fourth row, since )Tj +/TT19 1 Tf +25.1596 0 TD +0 Tw +(that)Tj +/TT8 1 Tf +1.6099 0 TD +0.0989 Tw +[( item is outside of the nested)]TJ +-26.7694 -1.2222 TD +0 Tw +(group. For further discussion of linking items, see Section 28.7.12, Free Menu Item Links. )Tj +-5.3333 -2.8889 TD +(Now, establish the )Tj +/TT10 1 Tf +8.4683 0 TD +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +( item:)Tj +/TT10 1 Tf +10 0 0 10 78 423.69 Tm +(\(TYPE DISPLAY ID ALPHA LABEL "" BOX 1 MAXWIDTH 35\))Tj +/TT8 1 Tf +9 0 0 9 126 404.69 Tm +0.0633 Tw +(We have given it the )Tj +/TT10 1 Tf +10 0 0 10 212.8427 404.69 Tm +0 Tw +(ID)Tj +/TT8 1 Tf +9 0 0 9 224.8446 404.69 Tm +0.0633 Tw +[( of Alpha that the above)]TJ +/TT10 1 Tf +10.9622 0 TD +0.1461 Tw +[( STATE)]TJ +/TT8 1 Tf +3.7467 0 TD +0.0633 Tw +[( item uses in finding the proper)]TJ +/TT10 1 Tf +-25.6916 -1.3278 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2 0 TD +0.0311 Tw +[( item to link to. This display item is used to display the current state of the item)]TJ +-4.2 -1.2889 TD +0.0556 Tw +[("Choose Me." Every item is required to have a Label property specified, but the label for)]TJ +0 -1.2222 TD +0 Tw +(this )Tj +/TT10 1 Tf +1.8897 0 TD +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0167 Tw +[( item will depend on the state of "Choose Me." That is, when the state of the)]TJ +-6.0904 -1.2944 TD +0.05 Tw +("Choose Me" item is changed from )Tj +/TT10 1 Tf +10 0 0 10 268.7141 358.49 Tm +0 Tw +(DELTA)Tj +/TT8 1 Tf +9 0 0 9 298.719 358.49 Tm +0.05 Tw +[( to )]TJ +/TT10 1 Tf +10 0 0 10 311.9677 358.49 Tm +0 Tw +(BRAVO)Tj +/TT8 1 Tf +9 0 0 9 341.9725 358.49 Tm +0.05 Tw +(, the label of the )Tj +/TT10 1 Tf +7.5176 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.05 Tw +[( item will)]TJ +-35.7152 -1.3278 TD +0 Tw +(also change. The null string serves to hold the place for the changeable label.)Tj +0 -2 TD +0.1511 Tw +[(A box is specified for this item. Since the label is the empty string, Free Menu would)]TJ +0 -1.2222 TD +0.0156 Tw +[(draw a very small box. Instead, the )]TJ +/TT10 1 Tf +16.11 0 TD +0 Tw +(MAXWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.0155 Tw +[( property indicates that the label, whatever)]TJ +-20.9108 -1.2889 TD +0.0544 Tw +[(it becomes, will be limited to a stringwidth of 35. The width restriction of 35 was chosen)]TJ +0 -1.2222 TD +0.0144 Tw +[(because it is big enough for each of the possible labels for this display item. So Free Menu)]TJ +T* +0 Tw +(draws the box big enough to enclose any item within this width restriction. )Tj +-5.3333 -2.8889 TD +(Finally we specify the final item in row four:)Tj +/TT10 1 Tf +10 0 0 10 78 230.89 Tm +(\(LABEL THREE\))Tj +/TT4 1 Tf +-2.4 -4.329 TD +(Free Menu Group Properties)Tj +/TT8 1 Tf +9 0 0 9 78 164.94 Tm +0.1911 Tw +[(Each group has properties. Most group properties are relevant and should be set in the groups)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(PROPS )Tj +/TT8 1 Tf +3.6906 0 TD +0.0378 Tw +(list in the Free Menu Description. User properties can be freely included in the )Tj +/TT10 1 Tf +35.419 0 TD +0 Tw +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0378 Tw +[( list. A)]TJ +-42.1101 -1.2889 TD +0 Tw +(few other properties are set up by the formatter. The macros )Tj +/TT10 1 Tf +27.3811 0 TD +(FM.GROUPPROP)Tj +/TT8 1 Tf +7.2 0 TD +( or )Tj +/TT10 1 Tf +1.4433 0 TD +(FM.MENUPROP)Tj +/TT8 1 Tf +6.6 0 TD +( allow)Tj +-42.6244 -1.2889 TD +(access to group properties after the Free Menu is created.)Tj +/TT10 1 Tf +8.1333 -2 TD +(ID)Tj +/TT8 1 Tf +2.5333 0 TD +0.3189 Tw +[(The identifier of this group. Setting the group )]TJ +/TT10 1 Tf +23.4989 0 TD +0 Tw +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.3189 Tw +[( is desirable, for)]TJ +-24.6991 -1.2889 TD +0.1733 Tw +(example, if the application needs to get handles on items in particular)Tj +0 -1.2222 TD +0 Tw +(groups, or access group properties.)Tj +/TT10 1 Tf +-4.9333 -2 TD +(FORMAT)Tj +/TT8 1 Tf +4.9333 0 TD +(One of )Tj +/TT10 1 Tf +3.2261 0 TD +(ROW)Tj +/TT8 1 Tf +1.7995 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(COLUMN)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.4994 0 TD +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +(, or )Tj +/TT10 1 Tf +1.6906 0 TD +(EXPLICIT)Tj +/TT8 1 Tf +4.8008 0 TD +(. The default is )Tj +/TT10 1 Tf +7.0317 0 TD +(ROW)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +-31.6828 -2.0667 TD +(FONT)Tj +/TT8 1 Tf +3.7333 0 TD +0.4311 Tw +[(A font description of the form )]TJ +/TT10 1 Tf +16.7453 0 TD +1.0344 Tw +(\(FAMILY SIZE FACE\))Tj +/TT8 1 Tf +12.8706 0 TD +0.4311 Tw +(, or a)Tj +/TT10 1 Tf +-29.616 -1.2889 TD +0 Tw +(FONTDESCRIPTOR)Tj +/TT8 1 Tf +8.4014 0 TD +0.0744 Tw +[( data type. This will be the default font for each item)]TJ +ET +endstream +endobj +186 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT19 187 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +189 0 obj +<< +/Length 4253 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-50)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 569.54 Tm +0.2411 Tw +[(in this group. The default font of the top group is the value of the)]TJ +0 -1.2222 TD +0 Tw +(variable )Tj +/TT10 1 Tf +3.8244 0 TD +(DEFAULTFONT)Tj +/TT8 1 Tf +6.6011 0 TD +(.)Tj +/TT10 1 Tf +-18.3589 -2.0667 TD +(COORDINATES)Tj +/TT8 1 Tf +7.9333 0 TD +0.36 Tw +(One of )Tj +/TT10 1 Tf +3.9456 0 TD +0 Tw +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.36 Tw +[( or )]TJ +/TT10 1 Tf +2.1606 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.36 Tw +[(. This property applies only to )]TJ +/TT10 1 Tf +16.3633 0 TD +0 Tw +(EXPLICIT)Tj +/TT8 1 Tf +-27.8703 -1.2889 TD +0.03 Tw +[(formatting. If )]TJ +/TT10 1 Tf +6.4982 0 TD +0 Tw +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.03 Tw +[(, the items in the)]TJ +/TT10 1 Tf +7.7003 0 TD +0.0711 Tw +[( EXPLICIT )]TJ +/TT8 1 Tf +6.1432 0 TD +0.03 Tw +(group are positioned)Tj +-23.3422 -1.2889 TD +0.4867 Tw +(in coordinates relative to the lower left corner of the group, as)Tj +0 -1.2222 TD +0.0001 Tc +0.0021 Tw +(determined by the mother group. If )Tj +/TT10 1 Tf +16.2299 0 TD +0 Tc +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0021 Tw +(, which is the default, the items)Tj +-18.6303 -1.2889 TD +0 Tc +0 Tw +(are positioned relative to the lower left corner of the menu.)Tj +/TT10 1 Tf +-3.7333 -2 TD +(LEFT)Tj +/TT8 1 Tf +3.7333 0 TD +(Specifies a left offset for this group, pushing the group to the right.)Tj +/TT10 1 Tf +-4.9333 -2.0667 TD +(BOTTOM)Tj +/TT8 1 Tf +4.9333 0 TD +(Specifies a bottom offset for this group, pushing the group up.)Tj +/TT10 1 Tf +-6.1333 -2.0667 TD +(ROWSPACE)Tj +/TT8 1 Tf +6.1333 0 TD +(Specifies the number of dots between rows in this group.)Tj +/TT10 1 Tf +-7.9333 -2.0667 TD +(COLUMNSPACE)Tj +/TT8 1 Tf +7.9333 0 TD +(Specifies the number of dots between columns in this group.)Tj +/TT10 1 Tf +-3.1333 -2.0667 TD +(BOX)Tj +/TT8 1 Tf +3.1333 0 TD +(Specifies the number of dots in the box around this group of items.)Tj +/TT10 1 Tf +-6.1333 -2.0667 TD +(BOXSHADE)Tj +/TT8 1 Tf +6.1333 0 TD +(Specifies the shade of the box.)Tj +/TT10 1 Tf +-6.1333 -2.0667 TD +(BOXSPACE)Tj +/TT8 1 Tf +6.1333 0 TD +(Specifies the number of bits between the box and the items.)Tj +/TT10 1 Tf +-7.3333 -2.0667 TD +(BACKGROUND)Tj +/TT8 1 Tf +7.3333 0 TD +0.3633 Tw +[(The background shade of this group. Nested groups inherit this)]TJ +0 -1.2889 TD +0.1878 Tw +(background shade, but items in this group and nested groups do not.)Tj +0 -1.2222 TD +0.0611 Tw +(This is because, in general, it is difficult to read text on a background, so)Tj +T* +0.0644 Tw +[(items appear on a white background by default. This can be overridden)]TJ +T* +0 Tw +(by the )Tj +/TT10 1 Tf +2.9966 0 TD +(BACKGROUND)Tj +/TT8 1 Tf +6.001 0 TD +( Item Property.)Tj +/TT4 1 Tf +10 0 0 10 102 258.4 Tm +(Other Group Properties)Tj +/TT8 1 Tf +9 0 0 9 126 234.74 Tm +0.1511 Tw +[(The following group properties are set up and maintained by Free Menu. The application should)]TJ +0 -1.2222 TD +0 Tw +(probably not change any of these properties.)Tj +/TT10 1 Tf +6.3333 -2 TD +(ITEMS)Tj +/TT8 1 Tf +4.3333 0 TD +(A list of the items in the group.)Tj +/TT10 1 Tf +-4.9333 -2.0667 TD +(REGION)Tj +/TT8 1 Tf +4.9333 0 TD +(The region that is the extent of the items in the group.)Tj +/TT10 1 Tf +-4.9333 -2.0667 TD +(MOTHER)Tj +/TT8 1 Tf +4.9333 0 TD +(The )Tj +/TT10 1 Tf +1.9238 0 TD +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +( of the group that is the mother of this group.)Tj +/TT10 1 Tf +-10.4574 -2.0667 TD +-0.0001 Tw +( DAUGHTERS)Tj +/TT8 1 Tf +7.3333 0 TD +0 Tw +(A list of )Tj +/TT10 1 Tf +3.7388 0 TD +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +( of groups which are daughters to this group.)Tj +/TT4 1 Tf +10 0 0 10 102 107 Tm +(Free Menu Items)Tj +/TT8 1 Tf +9 0 0 9 126 84.34 Tm +0.0511 Tw +(Each Free Menu Item is stored as an instance of the data type )Tj +/TT10 1 Tf +27.89 0 TD +0 Tw +(FREEMENUITEM)Tj +/TT8 1 Tf +7.2012 0 TD +0.0511 Tw +[(. Free Menu Items can)]TJ +-35.0912 -1.2889 TD +0.1167 Tw +(be thought of as objects, each item having its own particular properties, such as its type, label, and)Tj +0 -1.2222 TD +0.0367 Tw +[(mouse event functions. A number of useful item types, described in Section 28.7.11, Predefined Item)]TJ +T* +0.1244 Tw +[(Types, are predefined by Free Menu. New types of items can be defined by the application, using)]TJ +ET +endstream +endobj +190 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +192 0 obj +<< +/Length 4252 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-51)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.0278 Tw +(Display items as a base. Each Free Menu Item is created from a Free Menu Item Description when the)Tj +0 -1.2222 TD +0 Tw +(Free Menu is created. )Tj +/TT10 1 Tf +8 -2 TD +(CAUTION: )Tj +/TT8 1 Tf +5.5709 0 TD +0.0711 Tw +[( Edit \(and thus Number\) Freemenu Items do not perform well)]TJ +-2.2375 -1.2889 TD +0.1367 Tw +[(when boxed or when there is another item to the right in the same)]TJ +0 -1.2222 TD +0.0133 Tw +[(row. The display to the right of the edit item may be corrupted under)]TJ +T* +0 Tw +(editing and fm.changelabel operations.)Tj +/TT4 1 Tf +10 0 0 10 54 464.6 Tm +(Free Menu Item Descriptions )Tj +/TT8 1 Tf +9 0 0 9 78 441.94 Tm +0.1022 Tw +(A Free Menu Item Description is a list in property list format, specifying the properties of the item.)Tj +T* +0 Tw +(For example:)Tj +/TT10 1 Tf +10 0 0 10 126 412.89 Tm +(\(LABEL Refetch SELECTEDFN MY.REFETCHFN\))Tj +/TT8 1 Tf +9 0 0 9 78 386.94 Tm +0.0056 Tw +(describes a )Tj +/TT10 1 Tf +5.1107 0 TD +0 Tw +(MOMENTARY)Tj +/TT8 1 Tf +5.4009 0 TD +0.0056 Tw +[( item labelled Refetch, with the function )]TJ +/TT10 1 Tf +17.9515 0 TD +0 Tw +(MY.REFETCHFN)Tj +/TT8 1 Tf +7.2012 0 TD +0.0056 Tw +[( to be called when the)]TJ +-35.6643 -1.2889 TD +0.02 Tw +[(item is selected. None of the property values in an item description are evaluated. When constructing)]TJ +0 -1.2222 TD +(Free Menu descriptions that incorporate evaluated expressions \(for example labels that are bitmaps\) it)Tj +T* +0.2022 Tw +[(is helpful to use the backquote facility. For instance, if the value of the variable )]TJ +/TT10 1 Tf +38.4099 0 TD +0 Tw +(MYBITMAP)Tj +/TT8 1 Tf +4.8008 0 TD +0.2022 Tw +[( is a)]TJ +-43.2107 -1.2889 TD +0 Tw +(bitmap, then )Tj +/TT10 1 Tf +10 0 0 10 126 323.69 Tm +(\(FREEMENU \(\(\(LABEL A\) \(LABEL ,MYBITMAP\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 78 297.74 Tm +0.0556 Tw +(would create a Free Menu of one row, with two items in that row, the second of which has the value)Tj +0 -1.2222 TD +0 Tw +(of )Tj +/TT10 1 Tf +1.1289 0 TD +(MYBITMAP)Tj +/TT8 1 Tf +4.8008 0 TD +( as its label.)Tj +/TT4 1 Tf +10 0 0 10 78 259.8 Tm +(Free Menu Item Properties)Tj +/TT8 1 Tf +9 0 0 9 78 223.14 Tm +0.1056 Tw +[(The following Free Menu Item Properties can be set in the Item Description. Any other properties)]TJ +0 -1.2222 TD +0.0989 Tw +(given in an Item Description will be treated as user properties, and will be saved on the )Tj +/TT10 1 Tf +40.5302 0 TD +0 Tw +(USERDATA)Tj +/TT8 1 Tf +-40.5302 -1.2889 TD +(property of the item.)Tj +/TT10 1 Tf +6.9333 -2 TD +(TYPE)Tj +/TT8 1 Tf +3.7333 0 TD +0.0378 Tw +[(The type of the item. Choose from one of the Free Menu Item type keywords)]TJ +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(MOMENTARY)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.7378 0 TD +(TOGGLE)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +0.25 0 TD +0.57 Tw +[( 3STATE)]TJ +/TT8 1 Tf +5.9408 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.7378 0 TD +0.57 Tw +[( STATE)]TJ +/TT8 1 Tf +4.1706 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.7378 0 TD +0.57 Tw +[( NWAY)]TJ +/TT8 1 Tf +3.5705 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.7378 0 TD +(EDITSTART)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.7378 0 TD +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +/TT10 1 Tf +-34.4235 -1.2889 TD +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +(, or)Tj +/TT10 1 Tf +1.4409 0 TD +( DISPLAY)Tj +/TT8 1 Tf +4.8008 0 TD +(. The default is )Tj +/TT10 1 Tf +7.0317 0 TD +(MOMENTARY)Tj +/TT8 1 Tf +5.4009 0 TD +(.)Tj +/TT10 1 Tf +-26.6082 -2.0667 TD +(LABEL)Tj +/TT8 1 Tf +4.3333 0 TD +0.1156 Tw +[(An atom, string, or bitmap. Bitmaps are always copied, so that the original)]TJ +0 -1.2889 TD +0 Tw +(will not be changed. This property must be specified for every item.)Tj +/TT10 1 Tf +-3.7333 -2 TD +(FONT)Tj +/TT8 1 Tf +3.7333 0 TD +0.0944 Tw +[(The font in which the item appears. The default is the font specified for the)]TJ +0 -1.2889 TD +0.1111 Tw +[(group containing this item. Can be a font description of the form )]TJ +/TT10 1 Tf +30.4708 0 TD +0 Tw +(\(FAMILY)Tj +-30.4708 -1.2889 TD +(SIZE FACE\))Tj +/TT8 1 Tf +6.001 0 TD +(, or a )Tj +/TT10 1 Tf +2.4409 0 TD +(FONTDESCRIPTOR)Tj +/TT8 1 Tf +8.4014 0 TD +( data type.)Tj +/TT10 1 Tf +-19.3766 -2.0667 TD +(ID)Tj +/TT8 1 Tf +2.5333 0 TD +(May be used to specify a unique identifier for this item, but is not necessary.)Tj +ET +endstream +endobj +193 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +196 0 obj +<< +/Length 5934 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-52)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 136.26 569.54 Tm +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(BOTTOM)Tj +/TT8 1 Tf +4.9334 0 TD +(When)Tj +/TT10 1 Tf +2.6431 0 TD +0.0811 Tw +[( ROW)]TJ +/TT8 1 Tf +2.4815 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5333 0 TD +(COLUMN)Tj +/TT8 1 Tf +3.6006 0 TD +0.0333 Tw +(, or)Tj +/TT10 1 Tf +1.4743 0 TD +0.0811 Tw +[( TABLE)]TJ +/TT8 1 Tf +3.6817 0 TD +0.0333 Tw +[( formatting, these specify offsets, pushing the)]TJ +-14.4144 -1.2889 TD +0.0322 Tw +(item right and up, respectively, from where the formatter would have put the)Tj +0 -1.2222 TD +0.02 Tw +[(item. In )]TJ +/TT10 1 Tf +3.9579 0 TD +0 Tw +(EXPLICIT)Tj +/TT8 1 Tf +4.8008 0 TD +0.02 Tw +[( formatting, these are the actual coordinates of the item, in)]TJ +-8.7587 -1.2889 TD +0 Tw +(the coordinate system given by the groups )Tj +/TT10 1 Tf +19.3213 0 TD +(COORDINATES)Tj +/TT8 1 Tf +6.6011 0 TD +( property.)Tj +/TT10 1 Tf +-32.0557 -2.0667 TD +(HJUSTIFY)Tj +/TT8 1 Tf +6.1333 0 TD +0.1656 Tw +(Indicates horizontal justification type: )Tj +/TT10 1 Tf +18.0338 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6656 0 TD +(CENTER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1656 Tw +(, or )Tj +/TT10 1 Tf +2.022 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1656 Tw +[(. Specifies)]TJ +-29.7229 -1.2889 TD +0.1989 Tw +(that this item is to be horizontally justified within the extent of its group.)Tj +0 -1.2222 TD +0.0478 Tw +(Note that the main group, as opposed to the smaller row or column group, is)Tj +T* +0 Tw +(used.)Tj +/TT10 1 Tf +-6.1333 -2 TD +(VJUSTIFY)Tj +/TT8 1 Tf +6.1333 0 TD +0.0167 Tw +(Specifies that this item is to be vertically justified)Tj +/TT10 1 Tf +21.6856 0 TD +0 Tw +(. )Tj +/TT8 1 Tf +1.2413 0 TD +0.0167 Tw +[( Values are)]TJ +/TT10 1 Tf +4.9264 0 TD +0.0411 Tw +[( TOP)]TJ +/TT8 1 Tf +2.4415 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +0.5167 0 TD +(MIDDLE)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +-34.412 -1.2889 TD +(or )Tj +/TT10 1 Tf +1.1909 0 TD +(BOTTOM)Tj +/TT8 1 Tf +3.6006 0 TD +(. )Tj +/TT10 1 Tf +-11.5248 -2.0667 TD +(HIGHLIGHT)Tj +/TT8 1 Tf +6.7333 0 TD +0.0067 Tw +(Specifies the highlighted looks of the item, that is, how the item changes when)Tj +0 -1.2889 TD +0.4789 Tw +[(a mouse event occurs on it. See Section 28.7.12, Free Menu Item)]TJ +0 -1.2222 TD +0 Tw +(Highlighting, for more details on highlighting. )Tj +/TT10 1 Tf +-5.5333 -2 TD +(MESSAGE)Tj +/TT8 1 Tf +5.5333 0 TD +0.1489 Tw +(Specifies a string that will be printed in the prompt window after a mouse)Tj +0 -1.2889 TD +0.2467 Tw +(cursor selects this item for )Tj +/TT10 1 Tf +13.0327 0 TD +0 Tw +(MENUHELDWAIT)Tj +/TT8 1 Tf +7.2012 0 TD +0.2467 Tw +[( milliseconds. Or, if an atom,)]TJ +-20.2338 -1.2889 TD +0.32 Tw +[(treated as a function to get the message. The function is passed three)]TJ +0 -1.2222 TD +0 Tw +(arguments, )Tj +/TT10 1 Tf +5.4069 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.6589 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1589 Tw +(, and )Tj +/TT10 1 Tf +2.7607 0 TD +0 Tw +(BUTTONS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1589 Tw +[(, and should return a string. The)]TJ +-19.0281 -1.2889 TD +0 Tw +(default is a message appropriate to the type of the item.)Tj +/TT10 1 Tf +-6.7333 -2 TD +(INITSTATE)Tj +/TT8 1 Tf +6.7333 0 TD +0.1911 Tw +[(Specifies the initial state of the item. This is only appropriate to )]TJ +/TT10 1 Tf +30.8179 0 TD +0 Tw +(TOGGLE)Tj +/TT8 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-34.4185 -1.2889 TD +(3STATE)Tj +/TT8 1 Tf +3.6006 0 TD +(, and )Tj +/TT10 1 Tf +2.4429 0 TD +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +( items.)Tj +/TT10 1 Tf +-15.1773 -2.0667 TD +(MAXWIDTH)Tj +/TT8 1 Tf +6.1333 0 TD +0.1555 Tw +[(Specifies the width allowed for this item. The formatter will leave enough)]TJ +0 -1.2889 TD +0 Tw +(space after the item for the item to grow to this width without collisions.)Tj +/TT10 1 Tf +-6.7333 -2 TD +(MAXHEIGHT)Tj +/TT8 1 Tf +6.7333 0 TD +(Similar to )Tj +/TT10 1 Tf +4.5479 0 TD +(MAXWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +(, but in the vertical dimension.)Tj +/TT10 1 Tf +-12.482 -2.0667 TD +(BOX)Tj +/TT8 1 Tf +3.1333 0 TD +0.1822 Tw +[(Specifies the number of bits in the box around this item. Boxes are made)]TJ +0 -1.2889 TD +0 Tw +(around )Tj +/TT10 1 Tf +3.7535 0 TD +(MAXWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.2667 Tw +[( and )]TJ +/TT10 1 Tf +2.7262 0 TD +0 Tw +(MAXHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.2667 Tw +[( dimensions. If unspecified, no box is)]TJ +-16.6813 -1.2889 TD +0 Tw +(drawn.)Tj +/TT10 1 Tf +-6.1333 -2 TD +(BOXSHADE)Tj +/TT8 1 Tf +6.1333 0 TD +(Specifies the shade that the box is drawn in. The default is )Tj +/TT10 1 Tf +26.1279 0 TD +(BLACKSHADE)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +-38.2622 -2.0667 TD +(BOXSPACE)Tj +/TT8 1 Tf +6.1333 0 TD +0.0244 Tw +[(Specifies the number of bits between the box and the label. The default is one)]TJ +0 -1.2889 TD +0 Tw +(bit.)Tj +/TT10 1 Tf +-7.3333 -2 TD +(BACKGROUND)Tj +/TT8 1 Tf +7.3333 0 TD +0.1633 Tw +[(Specifies the background shade on which the item appears. The default is)]TJ +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(WHITESHADE)Tj +/TT8 1 Tf +6.001 0 TD +(, regardless of the groups background.)Tj +/TT10 1 Tf +-10.3343 -2.0667 TD +(LINKS)Tj +/TT8 1 Tf +4.3333 0 TD +(Can be used to link this item to other items in the Free Menu.)Tj +/TT4 1 Tf +10 0 0 10 126 105.6 Tm +(Mouse Properties)Tj +/TT8 1 Tf +9 0 0 9 126 80.94 Tm +0.1389 Tw +(The following properties provide a way for application functions to be called under certain mouse)Tj +0 -1.2222 TD +0.2544 Tw +[(events. These functions are called with the)]TJ +/TT10 1 Tf +20.7538 0 TD +0.61 Tw +[( ITEM)]TJ +/TT8 1 Tf +3.6105 0 TD +0.2544 Tw +(, the )Tj +/TT10 1 Tf +2.6461 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2544 Tw +(, and the)Tj +/TT10 1 Tf +4.339 0 TD +0.61 Tw +[( BUTTONS)]TJ +/TT8 1 Tf +5.4108 0 TD +0.2544 Tw +[( passed as)]TJ +-40.3607 -1.2889 TD +0.1167 Tw +[(arguments. These application functions do not interfere with any Free Menu system functions that)]TJ +0 -1.2222 TD +0.0489 Tw +[(take care of handling the different item types. In each case, though, the application function is called)]TJ +ET +endstream +endobj +197 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +199 0 obj +<< +/Length 4577 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-53)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.1378 Tw +[(after the system function. The default for all of these functions is )]TJ +/TT10 1 Tf +30.6979 0 TD +0 Tw +(NILL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1378 Tw +[(. The value of each of the)]TJ +-33.0982 -1.2889 TD +[(following properties can be the name of a function, or a lambda expression.)-2382.1( )]TJ +/TT10 1 Tf +3.0833 -2 TD +0 Tw +(SELECTEDFN)Tj +/TT8 1 Tf +6.001 0 TD +0.0956 Tw +[( )-1236.8(Specifies the function to be called when this item is selected. The )]TJ +/TT10 1 Tf +31.806 0 TD +0 Tw +(Edit)Tj +/TT8 1 Tf +2.4004 0 TD +0.0956 Tw +[( and)]TJ +/TT10 1 Tf +-32.6241 -1.2889 TD +0 Tw +(EditStart)Tj +/TT8 1 Tf +5.4009 0 TD +0.0333 Tw +[( items cannot have a)]TJ +/TT10 1 Tf +9.1421 0 TD +0.0811 Tw +[( SELECTEDFN)]TJ +/TT8 1 Tf +6.6822 0 TD +0.0333 Tw +[(. See the Edit Free Menu item)]TJ +-21.2252 -1.2889 TD +[(description in Section 28.7.11, Predefined Item Types, for more information.)]TJ +/TT10 1 Tf +-4.9333 -2 TD +0 Tw +(DOWNFN)Tj +/TT8 1 Tf +4.9333 0 TD +0.1144 Tw +(Specifies the function to be called when the item is selected with the mouse)Tj +0 -1.2889 TD +0 Tw +(cursor.)Tj +/TT10 1 Tf +-4.9333 -2 TD +(HELDFN)Tj +/TT8 1 Tf +4.9333 0 TD +0.1122 Tw +(Specifies the function to be called repeatedly when the item is selected with)Tj +0 -1.2889 TD +0 Tw +(the mouse cursor.)Tj +/TT10 1 Tf +-5.5333 -2 TD +(MOVEDFN)Tj +/TT8 1 Tf +5.5333 0 TD +0.0478 Tw +(Specifies the function to be called when the mouse cursor moves off this item)Tj +0 -1.2889 TD +0 Tw +(\(mouse buttons are still depressed\).)Tj +/TT4 1 Tf +10 0 0 10 78 401.6 Tm +(System Properties)Tj +/TT8 1 Tf +9 0 0 9 78 376.94 Tm +0.1789 Tw +[(The following Free Menu Item properties are set and maintained by Free Menu. The application)]TJ +0 -1.2222 TD +0 Tw +(should probably not change these properties directly.)Tj +/TT10 1 Tf +5.1333 -2 TD +(GROUPID)Tj +/TT8 1 Tf +5.5333 0 TD +0.1133 Tw +(Specifies the )Tj +/TT10 1 Tf +5.9806 0 TD +0 Tw +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.1133 Tw +[( of the smallest group that the item is in. For example, in a)]TJ +-7.1808 -1.2889 TD +0.0211 Tw +(row formatted group, the items )Tj +/TT10 1 Tf +14.5484 0 TD +0 Tw +(GROUPID)Tj +/TT8 1 Tf +4.2007 0 TD +0.0211 Tw +[( will be set to the )]TJ +/TT10 1 Tf +7.8542 0 TD +0 Tw +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.0211 Tw +[( of the row that)]TJ +-27.8035 -1.2889 TD +0 Tw +(the item is in, not the )Tj +/TT10 1 Tf +9.5454 0 TD +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +( of the whole group. )Tj +/TT10 1 Tf +-15.0789 -2.0667 TD +(STATE)Tj +/TT8 1 Tf +4.3333 0 TD +0.0611 Tw +(Specifies the current state of )Tj +/TT10 1 Tf +12.9677 0 TD +0 Tw +(TOGGLE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5611 0 TD +(3STATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.0611 Tw +(, or )Tj +/TT10 1 Tf +1.8131 0 TD +0 Tw +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0611 Tw +[( items. The state of)]TJ +-25.5436 -1.2889 TD +0 Tw +(an )Tj +/TT10 1 Tf +1.332 0 TD +(NWAY)Tj +/TT8 1 Tf +2.4004 0 TD +( item behaves like that of a toggle item.)Tj +/TT10 1 Tf +-8.6658 -2.0667 TD +(BITMAP)Tj +/TT8 1 Tf +4.9333 0 TD +(Specifies the bitmap from which the item is displayed.)Tj +/TT10 1 Tf +-4.9333 -2.0667 TD +(REGION)Tj +/TT8 1 Tf +4.9333 0 TD +0.2178 Tw +[(Specifies the region of the item, in window coordinates. This is used for)]TJ +0 -1.2889 TD +0.2711 Tw +(locating the display position, as well as determining the mouse sensitive)Tj +0 -1.2222 TD +0 Tw +(region of the item.)Tj +/TT10 1 Tf +-6.7333 -2 TD +(MAXREGION)Tj +/TT8 1 Tf +6.7333 0 TD +0.3122 Tw +(Specifies the maximum region the item may occupy, determined by the)Tj +/TT10 1 Tf +0 -1.2889 TD +0 Tw +(MAXWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.2033 Tw +[( and )]TJ +/TT10 1 Tf +2.5995 0 TD +0 Tw +(MAXHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.2033 Tw +[( properties \(see Section 28.7.8, Free Menu item)]TJ +-12.8012 -1.2889 TD +0 Tw +(Properties\). This is used by the formatter and the display routines.)Tj +/TT10 1 Tf +-6.7333 -2 TD +(SYSDOWNFN)Tj +-0.6 -2.0667 TD +(SYSMOVEDFN)Tj +-1.8 -2.0667 TD +(SYSSELECTEDFN)Tj +/TT8 1 Tf +9.1333 0 TD +0.0878 Tw +(These are the system mouse event functions, set up by Free Menu according)Tj +0 -1.2889 TD +0.0267 Tw +[(to the item type. These functions are called before the mouse event functions,)]TJ +0 -1.2222 TD +0 Tw +(and are used to implement highlighting, state changes, editing, etc.)Tj +/TT10 1 Tf +-6.1333 -2 TD +(USERDATA)Tj +/TT8 1 Tf +6.1333 0 TD +0.2111 Tw +[(Specifies how any other properties are stored on this list in property list)]TJ +0 -1.2889 TD +0 Tw +(format. This list should probably not need to be manipulated directly.)Tj +/TT4 1 Tf +10 0 0 10 78 59.8 Tm +(Predefined Item Types)Tj +ET +endstream +endobj +200 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +202 0 obj +<< +/Length 5676 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-54)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 569.54 Tm +(MOMENTARY)Tj +/TT8 1 Tf +5.4009 0 TD +[( )-29305.8([Free Menu Item])]TJ +/TT10 1 Tf +-2.7342 -1.8444 TD +(MOMENTARY)Tj +/TT8 1 Tf +5.4009 0 TD +0.0644 Tw +[( items are like command buttons. When the button is selected, its associated)]TJ +-5.4009 -1.2889 TD +0 Tw +(function is called.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(TOGGLE)Tj +/TT8 1 Tf +3.6006 0 TD +[( )-31106.1([Free Menu Item])]TJ +-0.9339 -1.8444 TD +0.1178 Tw +[(Toggle items are simple two-state buttons. When pressed, the button is highlighted; it)]TJ +0 -1.2222 TD +0.0167 Tw +[(stays that way until pressed again. The states of a toggle button are )]TJ +/TT10 1 Tf +30.3696 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0167 Tw +[( and )]TJ +/TT10 1 Tf +2.2262 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0167 Tw +[(; the initial)]TJ +-34.9962 -1.2889 TD +0 Tw +(state is )Tj +/TT10 1 Tf +3.27 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT12 1 Tf +-7.737 -2.4 TD +(3STATE)Tj +/TT8 1 Tf +3.6006 0 TD +[( )-31106.1([Free Menu Item])]TJ +/TT10 1 Tf +-0.9339 -1.8444 TD +(3STATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1544 Tw +[( items rotate through )]TJ +/TT10 1 Tf +10.1832 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.6544 0 TD +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1544 Tw +(, and )Tj +/TT10 1 Tf +2.7518 0 TD +0 Tw +(OFF)Tj +/TT8 1 Tf +1.8003 0 TD +0.1544 Tw +[(, states each time they are pressed. The)]TJ +-21.3907 -1.2889 TD +0.1867 Tw +(default looks of the )Tj +/TT10 1 Tf +9.5186 0 TD +0 Tw +(OFF)Tj +/TT8 1 Tf +1.8003 0 TD +0.1867 Tw +[( state are with a diagonal line through the button, while )]TJ +/TT10 1 Tf +26.9269 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1867 Tw +[( is)]TJ +-38.8459 -1.2889 TD +0 Tw +(highlighted, and )Tj +/TT10 1 Tf +7.5903 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( is normal. The default initial state is )Tj +/TT10 1 Tf +16.8208 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +-28.0117 -2.0667 TD +(The following Item Property applies to)Tj +/TT10 1 Tf +17.1802 0 TD +( 3STATE)Tj +/TT8 1 Tf +4.2007 0 TD +( items:)Tj +/TT10 1 Tf +-19.1809 -2.0667 TD +(OFF)Tj +/TT8 1 Tf +3.1333 0 TD +0.3678 Tw +(Specifies the looks of a )Tj +/TT10 1 Tf +12.0845 0 TD +0 Tw +(3STATE)Tj +/TT8 1 Tf +3.6006 0 TD +0.3678 Tw +[( item in its )]TJ +/TT10 1 Tf +6.3642 0 TD +0 Tw +(OFF)Tj +/TT8 1 Tf +1.8003 0 TD +0.3678 Tw +[( state. Similar to)]TJ +/TT10 1 Tf +-23.8496 -1.2889 TD +0 Tw +(HIGHLIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +(. The default is that the label gets a diagonal slash through it.)Tj +/TT10 1 Tf +-2.7342 -2.0667 TD +(NOTE:)Tj +/TT8 1 Tf +3.0005 0 TD +0.0511 Tw +[( If you specify special highlighting \( a different bitmap of)]TJ +-5.0005 -1.2889 TD +0.2533 Tw +[(string\) for Toggle or 3State items AND use this item in a group)]TJ +0 -1.2222 TD +0.0001 Tc +0.0021 Tw +(formatted as a Column or a Table, the highlight looks of the item may)Tj +T* +0 Tc +0 Tw +(not appear in the correct place. )Tj +/TT12 1 Tf +-8.6667 -2.3333 TD +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +[( )-31456.2([Free Menu Item])]TJ +/TT10 1 Tf +-0.3338 -1.8444 TD +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0822 Tw +[( items are general multiple state items. The following Item Property determines)]TJ +-3.0005 -1.2889 TD +0 Tw +(how the item changes state:)Tj +/TT10 1 Tf +-2.6 -2 TD +(CHANGESTATE)Tj +/TT8 1 Tf +7.9333 0 TD +0.0022 Tw +(This Item Property can be changed at any time to change the effect of the item.)Tj +0 -1.2889 TD +0.0044 Tw +(If a )Tj +/TT10 1 Tf +1.6788 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.0043 Tw +( data type, this menu pops up when the item is selected, and the user)Tj +-4.0792 -1.2889 TD +0 Tc +0.05 Tw +[(can select the new state. Otherwise, if this property is given, it is treated as a)]TJ +0 -1.2222 TD +0.4522 Tw +(function name, which is passed three arguments, )Tj +/TT10 1 Tf +25.062 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.9522 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.4522 Tw +(, and)Tj +/TT10 1 Tf +-32.0152 -1.2889 TD +0 Tw +(BUTTONS)Tj +/TT8 1 Tf +4.2007 0 TD +0.0756 Tw +[(. This function can do whatever it wants, and is expected to return)]TJ +-4.2007 -1.2889 TD +0.0533 Tw +(the new state \(an atom, string, or bitmap\), or )Tj +/TT10 1 Tf +20.4307 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0533 Tw +(, indicating the state should)Tj +-22.231 -1.2889 TD +0.1289 Tw +(not change. The state of the item can automatically be indicated in the Free)Tj +0 -1.2222 TD +0.18 Tw +(Menu, by setting up a )Tj +/TT10 1 Tf +10.8077 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.18 Tw +[( link to a )]TJ +/TT10 1 Tf +4.8123 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.18 Tw +[( item in the menu \(see)]TJ +-24.0214 -1.2889 TD +0.0756 Tw +[(Section 28.7.13, Free Menu Item Links\). If such a link exists, the label of the)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.08 Tw +[( item will be changed to the new state. The possible states are not)]TJ +-4.2007 -1.2889 TD +0.1122 Tw +[(restricted at all, with the exception of selections from a pop-up menu. The)]TJ +0 -1.2222 TD +0.5278 Tw +(state can be changed to any atom, string, or bitmap, manually via)Tj +/TT10 1 Tf +T* +0 Tw +(FM.CHANGESTATE)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +-13.7347 -2.0667 TD +(The following Item Properties are relevant to )Tj +/TT10 1 Tf +20.1221 0 TD +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +( items when building a Free Menu:)Tj +/TT10 1 Tf +-24.5226 -2.0667 TD +(MENUITEMS)Tj +/TT8 1 Tf +6.7333 0 TD +0.1422 Tw +(If specified, should be a list of items to go in a pop-up menu for this item.)Tj +0 -1.2889 TD +0.0722 Tw +(Free Menu will build the menu and save it as the )Tj +/TT10 1 Tf +22.6426 0 TD +0 Tw +(CHANGESTATE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0722 Tw +[( property of)]TJ +-29.2437 -1.2889 TD +0 Tw +(the item.)Tj +ET +endstream +endobj +203 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +205 0 obj +<< +/Length 5767 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-55)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +9 0 0 9 118.8 569.54 Tm +(MENUFONT)Tj +/TT8 1 Tf +6.1333 0 TD +(The font of the items in the pop-up menu.)Tj +/TT10 1 Tf +-6.7333 -2.0667 TD +(MENUTITLE)Tj +/TT8 1 Tf +6.7333 0 TD +(The title of the pop-up menu. The default title is the label of the )Tj +/TT10 1 Tf +28.498 0 TD +(STATE )Tj +/TT8 1 Tf +3.6006 0 TD +(item.)Tj +/TT12 1 Tf +-40.0986 -2.4 TD +(NWAY)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +32.5563 0 TD +([Free Menu Item])Tj +/TT10 1 Tf +-32.29 -1.8444 TD +(NWAY )Tj +/TT8 1 Tf +3.1138 0 TD +0.0467 Tw +(items provide a way to collect any number of items together, in any format within)Tj +-3.1138 -1.2889 TD +0.1 Tw +[(the Free Menu. Only one item from each Collection can be selected at a time, and that)]TJ +0 -1.2222 TD +0.0544 Tw +(item is highlighted to indicate this. The following Item Properties are particular to)Tj +/TT10 1 Tf +36.8648 0 TD +0.1311 Tw +[( NWAY)]TJ +/TT8 1 Tf +-36.8648 -1.2889 TD +0 Tw +(items: )Tj +/TT10 1 Tf +-2 -2 TD +(COLLECTION)Tj +/TT8 1 Tf +7.3333 0 TD +(An identifier that specifies which )Tj +/TT10 1 Tf +14.9209 0 TD +(NWAY)Tj +/TT8 1 Tf +2.4004 0 TD +( Collection this item belongs to.)Tj +/TT10 1 Tf +-24.0546 -2.0667 TD +(NWAYPROPS)Tj +/TT8 1 Tf +6.7333 0 TD +0.25 Tw +[(A property list of information to be associated with this collection. This)]TJ +0 -1.2889 TD +0.1233 Tw +(property is only noticed in the Free Menu Description on the first item in a)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(COLLECTION)Tj +/TT8 1 Tf +6.001 0 TD +0.16 Tw +(. )Tj +/TT10 1 Tf +1.07 0 TD +0 Tw +(NWAY)Tj +/TT8 1 Tf +2.4004 0 TD +0.16 Tw +[( Collections are formed by creating a number of )]TJ +/TT10 1 Tf +22.796 0 TD +0 Tw +(NWAY)Tj +/TT8 1 Tf +-32.2673 -1.2889 TD +0.4689 Tw +(items with the same )Tj +/TT10 1 Tf +10.9844 0 TD +0 Tw +(COLLECTION)Tj +/TT8 1 Tf +6.001 0 TD +0.4689 Tw +[( property. Each)]TJ +/TT10 1 Tf +8.4428 0 TD +1.1256 Tw +[( NWAY)]TJ +/TT8 1 Tf +4.126 0 TD +0.4689 Tw +[( item acts)]TJ +-29.5543 -1.2889 TD +0.1167 Tw +(individually as a Toggle item, and can have its own mouse event functions.)Tj +0 -1.2222 TD +0 Tw +(Each )Tj +/TT10 1 Tf +2.5278 0 TD +(NWAY )Tj +/TT8 1 Tf +3.3383 0 TD +0.1411 Tw +[(Collection itself has properties, its state for instance. After the)]TJ +-5.8661 -1.2889 TD +0.2733 Tw +(Free Menu is created, these Collection properties can be accessed by the)Tj +0 -1.2222 TD +0 Tw +(macro)Tj +/TT10 1 Tf +2.7676 0 TD +0.1378 Tw +[( FM.NWAYPROPS)]TJ +/TT8 1 Tf +7.939 0 TD +0.0578 Tw +[(. Note that)]TJ +/TT10 1 Tf +5.0898 0 TD +0.1378 Tw +[( NWAY)]TJ +/TT8 1 Tf +3.1383 0 TD +0.0578 Tw +[( Collections are different from Free)]TJ +-18.9347 -1.2889 TD +0.1533 Tw +(Menu Groups. There are three)Tj +/TT10 1 Tf +13.9883 0 TD +0.3678 Tw +[( NWAY)]TJ +/TT8 1 Tf +3.3683 0 TD +0.1533 Tw +[( Collection properties that Free Menu)]TJ +-17.3566 -1.2889 TD +0 Tw +(looks at:)Tj +/TT10 1 Tf +-6.1333 -2 TD +(DESELECT)Tj +/TT8 1 Tf +6.1333 0 TD +0.1622 Tw +[(If given, specifies that the Collection can be deselected, yielding a state in)]TJ +0 -1.2889 TD +0.1656 Tw +[(which no item in the Collection is selected. When this property is set, the)]TJ +0 -1.2222 TD +0.2433 Tw +[(Collection can be deselected by selecting any item in the Collection and)]TJ +T* +0 Tw +(pressing the right mouse button .)Tj +/TT10 1 Tf +-4.3333 -2 TD +(STATE)Tj +/TT8 1 Tf +4.3333 0 TD +(The current state of the Collection, which is the actual item selected.)Tj +/TT10 1 Tf +-6.7333 -2.0667 TD +(INITSTATE)Tj +/TT8 1 Tf +6.7333 0 TD +0.14 Tw +[(Specifies the initial state of the Collection. The value of this property is an)]TJ +0 -1.2889 TD +0 Tw +(Item Link Description)Tj +/TT12 1 Tf +-8 -2.3333 TD +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +32.5563 0 TD +([Free Menu Item])Tj +/TT10 1 Tf +-32.29 -1.8444 TD +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0833 Tw +[( items are textual items that can be edited. The label for an )]TJ +/TT10 1 Tf +27.3713 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0833 Tw +[( item cannot be a)]TJ +-32.172 -1.2889 TD +0.04 Tw +[(bitmap. When the item is selected an edit caret appears at that cursor position within the)]TJ +0 -1.2222 TD +0.0411 Tw +[(item, allowing insertion and deletion of characters at that point. If selected with the right)]TJ +T* +0.1967 Tw +[(mouse button, the item is cleared before editing starts. While editing, the left mouse)]TJ +T* +0.0289 Tw +[(button moves the caret to a new position within the item. The right mouse button deletes)]TJ +T* +0.0411 Tw +[(from the caret to the cursor. CONTROL-W deletes the previous word. Editing is stopped)]TJ +T* +0.0378 Tw +(when another item is selected, when the user moves the cursor into another TTY window)Tj +T* +0.0089 Tw +(and clicks the cursor, or when the Free Menu function )Tj +/TT10 1 Tf +24.2066 0 TD +0 Tw +(FM.ENDEDIT)Tj +/TT8 1 Tf +6.001 0 TD +0.0089 Tw +[( is called \(called when)]TJ +-30.2075 -1.2889 TD +0.0367 Tw +(the Free Menu is reset, or the window is closed\). The Free Menu editor will time out after)Tj +0 -1.2222 TD +0.0444 Tw +[(about a minute, returning automatically. Because of the many ways in which editing can)]TJ +T* +0 Tw +(terminate, )Tj +/TT10 1 Tf +4.8012 0 TD +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.04 Tw +[( items are not allowed to have a )]TJ +/TT10 1 Tf +14.6008 0 TD +0 Tw +(SELECTEDFN)Tj +/TT8 1 Tf +6.001 0 TD +0.04 Tw +(, as it is not clear when this)Tj +-27.8034 -1.2889 TD +0.1544 Tw +(function should be called. Each )Tj +/TT10 1 Tf +14.8206 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1544 Tw +[( item should have an ID specified, which is used)]TJ +-17.221 -1.2889 TD +0.1078 Tw +[(when getting the state of the Free Menu, since the string being edited is defined as the)]TJ +0 -1.2222 TD +0.0822 Tw +[(state of the item, and thus cannot distinguish edit items. The following Item Properties)]TJ +T* +0 Tw +(are specific to)Tj +/TT10 1 Tf +6.0527 0 TD +( EDIT )Tj +/TT8 1 Tf +3.6006 0 TD +(items.)Tj +ET +endstream +endobj +206 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +208 0 obj +<< +/Length 5899 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-56)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 166.8 569.54 Tm +(MAXWIDTH)Tj +/TT8 1 Tf +6.1333 0 TD +0.0222 Tw +(Specifies the maximum string width of the item, in bits, after which input will)Tj +0 -1.2889 TD +0.0367 Tw +[(be ignored. If)]TJ +/TT10 1 Tf +6.2721 0 TD +0.0878 Tw +[( MAXWIDTH )]TJ +/TT8 1 Tf +6.1765 0 TD +0.0367 Tw +(is not specified, the items becomes infinitely wide)Tj +-12.4486 -1.2889 TD +0 Tw +(and input is never restricted.)Tj +/TT10 1 Tf +-9.1333 -2 TD +(INFINITEWIDTH)Tj +/TT8 1 Tf +9.1333 0 TD +0.01 Tw +(This property is set automatically when)Tj +/TT10 1 Tf +17.5871 0 TD +0.0233 Tw +[( MAXWIDTH)]TJ +/TT8 1 Tf +5.4242 0 TD +0.01 Tw +[( is not specified. This tells)]TJ +-23.0113 -1.2889 TD +0.1444 Tw +(Free Menu that the item has no right end, so that the item becomes mouse)Tj +0 -1.2222 TD +0.0156 Tw +(sensitive from its left edge to the right edge of the window, within the vertical)Tj +T* +0 Tw +(space of the item.)Tj +0 -2 TD +0.0122 Tw +[(In Medley, Changestate of an infinite width Edit item to a smaller item clears)]TJ +0 -1.2222 TD +0 Tw +(the old item properly. )Tj +/TT10 1 Tf +-7.3333 -2 TD +(LIMITCHARS)Tj +/TT8 1 Tf +7.3333 0 TD +0.2422 Tw +[(The input characters allowed can be restricted in two ways: If this item)]TJ +0 -1.2889 TD +0.0622 Tw +(property is a list, it is treated as a list of legal characters; any character not in)Tj +0 -1.2222 TD +0.1589 Tw +[(the list will be ignored. If it is an atom, it is treated as the name of a test)]TJ +T* +0.6378 Tw +(predicate, which is passed three arguments,)Tj +/TT10 1 Tf +22.5605 0 TD +1.5311 Tw +[( ITEM)]TJ +/TT8 1 Tf +4.5316 0 TD +0 Tw +(, )Tj +/TT10 1 Tf +1.1378 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.6378 Tw +(, and)Tj +/TT10 1 Tf +-31.8304 -1.2889 TD +0 Tw +(CHARACTER, )Tj +/TT8 1 Tf +6.6244 0 TD +0.01 Tw +[(when each character is typed. This predicate should return )]TJ +/TT10 1 Tf +26.5575 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.01 Tw +[( if)]TJ +-33.782 -1.2889 TD +0.1167 Tw +(the character is legal, )Tj +/TT10 1 Tf +10.0008 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1167 Tw +[( otherwise. The)]TJ +/TT10 1 Tf +7.3798 0 TD +0.2789 Tw +[( LIMITCHARS )]TJ +/TT8 1 Tf +7.759 0 TD +0.1167 Tw +(function can also)Tj +-26.9399 -1.2889 TD +0 Tw +(call )Tj +/TT10 1 Tf +1.8481 0 TD +(FM.ENDEDIT)Tj +/TT8 1 Tf +6.001 0 TD +0.0722 Tw +[( to force the editor to terminate, or )]TJ +/TT10 1 Tf +16.006 0 TD +0 Tw +(FM.SKIPNEXT)Tj +/TT8 1 Tf +6.6011 0 TD +0.0722 Tw +(, to cause)Tj +-30.4562 -1.2889 TD +0 Tw +(the editor to jump to the next edit item in the menu.)Tj +/TT10 1 Tf +-6.1333 -2 TD +(ECHOCHAR)Tj +/TT8 1 Tf +6.1333 0 TD +0.0644 Tw +[(This item property can be set to any character. This character will be echoed)]TJ +0 -1.2889 TD +0.1644 Tw +[(in the window, regardless of what character is typed. However the items)]TJ +0 -1.2222 TD +0.2889 Tw +[(label contains the actual string typed. This is useful for operations like)]TJ +T* +0.0233 Tw +[(password prompting. If )]TJ +/TT10 1 Tf +11.129 0 TD +0 Tw +(ECHOCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +0.0233 Tw +[( is used, the font of the item must be fixed)]TJ +-15.9298 -1.2889 TD +0.1256 Tw +(pitch. Unrestricted )Tj +/TT10 1 Tf +8.775 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1256 Tw +[( items should not have other items to their right in)]TJ +-11.1754 -1.2889 TD +0.06 Tw +[(the menu, as they will be replaced. If the item is boxed, input is restricted to)]TJ +0 -1.2222 TD +0.1378 Tw +[(what will fit in the box. Typing off the edge of the window will cause the)]TJ +T* +0.1133 Tw +[(window to scroll appropriately. Control characters can be edited, including)]TJ +T* +0.0844 Tw +[(the carriage return and line feed, and they are echoed as a black box. While)]TJ +T* +0.1389 Tw +(editing, the Skip/Next key ends editing the current item, and starts editing)Tj +T* +0 Tw +(the next )Tj +/TT10 1 Tf +3.7905 0 TD +(EDIT )Tj +/TT8 1 Tf +3.0005 0 TD +(item in the Free Menu.)Tj +/TT12 1 Tf +-14.791 -2.4 TD +(NUMBER)Tj +/TT8 1 Tf +34.9567 0 TD +([Free Menu Item])Tj +/TT10 1 Tf +-32.29 -1.8444 TD +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.1611 Tw +[( items are )]TJ +/TT10 1 Tf +5.0102 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1611 Tw +[( items that are restricted to numerals. The state of the item is)]TJ +-11.0112 -1.2889 TD +0.0922 Tw +(coerced to the the number itself, not a string of numerals. There is one )Tj +/TT10 1 Tf +32.4078 0 TD +0 Tw +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +0.0922 Tw +(- specific)Tj +-36.0084 -1.2889 TD +(Item Property: )Tj +/TT10 1 Tf +-2 -2 TD +0 Tw +(NUMBERTYPE)Tj +/TT8 1 Tf +7.3333 0 TD +0.1522 Tw +(If )Tj +/TT10 1 Tf +1.4744 0 TD +0 Tw +(FLOATP)Tj +/TT8 1 Tf +3.6006 0 TD +0.1522 Tw +[( \(or )]TJ +/TT10 1 Tf +2.0784 0 TD +0 Tw +(FLOAT)Tj +/TT8 1 Tf +3.0005 0 TD +0.1522 Tw +[(\), then decimals are accepted. Otherwise only whole)]TJ +-10.1538 -1.2889 TD +0 Tw +(numbers can be edited.)Tj +/TT12 1 Tf +-8 -2.3333 TD +(EDITSTART)Tj +/TT8 1 Tf +34.9567 0 TD +([Free Menu Item])Tj +/TT10 1 Tf +-32.29 -1.8444 TD +(EDITSTART )Tj +/TT8 1 Tf +6.2499 0 TD +0.1033 Tw +(items serve the purpose of starting editing on another item when they are)Tj +-6.2499 -1.2889 TD +0.0189 Tw +[(selected. The associated Edit item is linked to the EditStart item by an )]TJ +/TT10 1 Tf +31.449 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( link \(see Free)]TJ +-33.8494 -1.2889 TD +0.0089 Tw +[(Menu Item Links below\). If the)]TJ +/TT10 1 Tf +13.9952 0 TD +0.02 Tw +[( EDITSTART)]TJ +/TT8 1 Tf +6.021 0 TD +0.0089 Tw +[( item is selected with the right mouse button,)]TJ +-20.0162 -1.2889 TD +0.1678 Tw +[(the Edit item is cleared before editing is started. Similar to)]TJ +/TT10 1 Tf +27.7093 0 TD +0.4022 Tw +[( EDIT)]TJ +/TT8 1 Tf +3.4027 0 TD +0.1678 Tw +[( items, )]TJ +/TT10 1 Tf +3.4884 0 TD +0 Tw +(EDITSTART)Tj +/TT8 1 Tf +-34.6004 -1.2889 TD +0.2267 Tw +(items cannot have a )Tj +/TT10 1 Tf +9.9155 0 TD +0 Tw +(SELECTEDFN)Tj +/TT8 1 Tf +6.001 0 TD +0.2267 Tw +(, as it is not clear when the associated editing will)Tj +-15.9164 -1.2889 TD +0 Tw +(terminate. )Tj +ET +endstream +endobj +209 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +211 0 obj +<< +/Length 5199 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-57)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0856 Tw +(In Medley,)Tj +/TT10 1 Tf +4.8663 0 TD +0.2056 Tw +[( EDITSTART )]TJ +/TT8 1 Tf +7.8178 0 TD +0.0856 Tw +[( items linked to a Number item properly set number state)]TJ +-12.6842 -1.2889 TD +0 Tw +(when editing has completed. )Tj +/TT12 1 Tf +-2.6667 -4.3333 TD +(DISPLAY)Tj +/TT10 1 Tf +4.2007 0 TD +( )Tj +/TT8 1 Tf +30.756 0 TD +([Free Menu Item])Tj +/TT10 1 Tf +-32.29 -1.8444 TD +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.0511 Tw +[( items serve two purposes. First, they simply provide a way of putting dummy)]TJ +-4.2007 -1.2889 TD +0.0411 Tw +[(text in a Free Menu, which does nothing when selected. The items label can be changed,)]TJ +0 -1.2222 TD +0.2044 Tw +[(though. Secondly, )]TJ +/TT10 1 Tf +9.0923 0 TD +0 Tw +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +0.2044 Tw +[( items can be used as the base for new item types. The)]TJ +-13.293 -1.2889 TD +0.2144 Tw +(application can create new item types by specifying )Tj +/TT10 1 Tf +24.7644 0 TD +0 Tw +(DOWNFN)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7144 0 TD +(HELDFN)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7144 0 TD +(MOVEDFN)Tj +/TT8 1 Tf +4.2007 0 TD +0.2144 Tw +(, and)Tj +/TT10 1 Tf +-37.5951 -1.2889 TD +0 Tw +(SELECTEDFN)Tj +/TT8 1 Tf +6.001 0 TD +( for a )Tj +/TT10 1 Tf +2.5239 0 TD +(DISPLAY)Tj +/TT8 1 Tf +4.2007 0 TD +( item, making it behave as desired.)Tj +/TT4 1 Tf +10 0 0 10 78 429.6 Tm +(Free Menu Item Highlighting)Tj +/TT8 1 Tf +9 0 0 9 78 404.94 Tm +0.1367 Tw +[(Each Free Menu Item can specify how it wants to be highlighted. First of all, if the item does not)]TJ +0 -1.2222 TD +0.0589 Tw +(specify a )Tj +/TT10 1 Tf +4.2457 0 TD +0 Tw +(HIGHLIGHT)Tj +/TT8 1 Tf +5.401 0 TD +0.0589 Tw +[( property, there are two default highlights. If the item is not boxed, the label is)]TJ +-9.6467 -1.2889 TD +0.0956 Tw +[(simply inverted, as in normal menus. If the item is boxed, it is highlighted in the shade of the box.)]TJ +0 -1.2222 TD +0.0244 Tw +(Alternatively, the value of the )Tj +/TT10 1 Tf +13.5729 0 TD +0 Tw +(HIGHLIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.0244 Tw +[( property can be a SHADE, which will be painted on top of)]TJ +-18.9738 -1.2889 TD +0.12 Tw +[(the item when a mouse event occurs on it. Or the )]TJ +/TT10 1 Tf +23.9379 0 TD +0 Tw +(HIGHLIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.12 Tw +[( property can be an alternate label,)]TJ +-29.3388 -1.2889 TD +0.01 Tw +[(which can be an atom, string or bitmap. If the highlight label is a different size than the item label, the)]TJ +0 -1.2222 TD +0.1367 Tw +[(formatter will leave enough space for the larger of the two. In all of these cases, the looks of the)]TJ +T* +0.1244 Tw +(highlighted item are determined when the Free Menu is built, and a bitmap of the item with these)Tj +T* +0.1744 Tw +[(looks is created. This bitmap is stored on the items )]TJ +/TT10 1 Tf +24.9858 0 TD +0 Tw +(HIGHLIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.1744 Tw +[( property, and simply displayed)]TJ +-30.3867 -1.2889 TD +0.0589 Tw +[(when a mouse event occurs. The value of the highlight property in the Item Description is copied to)]TJ +0 -1.2222 TD +0 Tw +(the )Tj +/TT10 1 Tf +1.6367 0 TD +(USERDATA)Tj +/TT8 1 Tf +4.8008 0 TD +( list, in case it is needed later for a label change.)Tj +/TT4 1 Tf +10 0 0 10 78 265.6 Tm +(Free Menu Item Links)Tj +/TT8 1 Tf +9 0 0 9 78 240.94 Tm +0.0722 Tw +[(Links between items are useful for grouping items in abstract ways. In particular, links are used for)]TJ +0 -1.2222 TD +0 Tw +(associating)Tj +/TT10 1 Tf +4.8838 0 TD +0.0267 Tw +[( EDITSTART )]TJ +/TT8 1 Tf +6.6544 0 TD +0.0111 Tw +(items with their item to edit, and)Tj +/TT10 1 Tf +14.5769 0 TD +0.0267 Tw +[( STATE)]TJ +/TT8 1 Tf +3.6273 0 TD +0.0111 Tw +[( items with their state display. The)]TJ +-29.7424 -1.2889 TD +0.0522 Tw +(Free Menu Item property)Tj +/TT10 1 Tf +11.35 0 TD +0.1243 Tw +[( LINKS)]TJ +/TT8 1 Tf +3.7249 0 TD +0.0522 Tw +[( is a property list, where the value of each Link Name property is a)]TJ +-15.0749 -1.2889 TD +0.2078 Tw +[(pointer to another item. In the Item Description, the value of the)]TJ +/TT10 1 Tf +31.5078 0 TD +0.5 Tw +[( LINK)]TJ +/TT8 1 Tf +3.5005 0 TD +0.2078 Tw +[( property should be a)]TJ +-35.0082 -1.2889 TD +0.29 Tw +[(property list as above. The value of each Link Name property is a Link Description. A Link)]TJ +0 -1.2222 TD +0 Tw +(Description can be one of the following forms:)Tj +7.0111 -2 TD +0.2433 Tw +[()-1332.8( An ID of an item in the Free Menu. This is acceptable if items can be)]TJ +3.6556 -1.2222 TD +0 Tw +(distinguished by ID alone.)Tj +-10.4933 -2 TD +0.0244 Tw +[(\( )24.4(\))-1332.7(A list whose first element is a GROUPID, and whose second element is the ID)]TJ +10.4933 -1.2222 TD +0.1711 Tw +[(of an item in that group. This way items with similar purposes, and thus)]TJ +T* +0 Tw +(similar IDs, can be distinguished across groups.)Tj +-8.1711 -2 TD +0.0001 Tc +0.0039 Tw +[(\(GROUP \))-1333.1(A list whose first element is the keyword GROUP, and whose second element)]TJ +8.1711 -1.2222 TD +0 Tc +0.0033 Tw +(is an item ID. This form describes an item with ID, in the same group that this)Tj +T* +0.1844 Tw +[(item is in. This way you do not need to know the GROUPID, just which)]TJ +T* +0 Tw +(group it is in.)Tj +ET +endstream +endobj +212 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +214 0 obj +<< +/Length 5266 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-58)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0322 Tw +(Then after the entire menu is built, the links are set up, turning the Link Descriptions into)Tj +0 -1.2222 TD +0.0278 Tw +[(actual pointers to Free Menu Items. There is no reason why circular Item Links cannot be)]TJ +T* +0.1733 Tw +[(created, although such a link would probably not be very useful. If circular links are)]TJ +T* +0.0322 Tw +[(created, the Free Menu will not be garbage collected after it is not longer being used. The)]TJ +T* +0 Tw +(application is responsible for breaking any such links that it creates.)Tj +/TT4 1 Tf +10 0 0 10 126 499.2 Tm +(Free Menu Window Properties)Tj +/TT10 1 Tf +9 0 0 9 129 481.54 Tm +(FM.PROMPTWINDOW)Tj +/TT8 1 Tf +10.3333 0 TD +0.1911 Tw +(Specifies the window that Free Menu should use for displaying the items)Tj +0 -1.2889 TD +0 Tw +(messages. If not specified, )Tj +/TT10 1 Tf +11.9951 0 TD +(PROMPTWINDOW)Tj +/TT8 1 Tf +7.2012 0 TD +( is used.)Tj +/TT10 1 Tf +-28.3296 -2.0667 TD +(FM.BACKGROUND)Tj +/TT8 1 Tf +9.1333 0 TD +0.2011 Tw +[(The background shade of the entire Free Menu. This property can be set)]TJ +0 -1.2889 TD +0.5189 Tw +(automatically by specifying a )Tj +/TT10 1 Tf +15.2992 0 TD +0 Tw +(BACKGROUND)Tj +/TT8 1 Tf +6.001 0 TD +0.5189 Tw +[( argument to the function)]TJ +/TT10 1 Tf +-21.3002 -1.2889 TD +0 Tw +(FREEMENU)Tj +/TT8 1 Tf +4.8008 0 TD +0.2056 Tw +[(. The window border must be 4 or greater when a Free Menu)]TJ +-4.8008 -1.2889 TD +0.1844 Tw +(background is used, due to the way the Window System handles window)Tj +0 -1.2222 TD +0 Tw +(borders.)Tj +/TT10 1 Tf +-9.7333 -2 TD +(FM.DONTRESHAPE)Tj +/TT8 1 Tf +9.7333 0 TD +0.3 Tw +(Normally, Free Menu will attempt to use empty space in a window by)Tj +0 -1.2889 TD +[(pushing items around to fill the space. When a Free Menu window is)]TJ +0 -1.2222 TD +0.0878 Tw +[(reshaped, the items are repositioned in the new shape. This can be disabled)]TJ +T* +0 Tw +(by setting the )Tj +/TT10 1 Tf +6.231 0 TD +(FM.DONTRESHAPE)Tj +/TT8 1 Tf +8.4014 0 TD +( window property.)Tj +/TT4 1 Tf +10 0 0 10 126 327 Tm +(Free Menu Interface Functions)Tj +/TT10 1 Tf +9 0 0 9 150 306.34 Tm +(\()Tj +/TT12 1 Tf +0.6 0 TD +(FREEMENU)Tj +/TT10 1 Tf +4.8008 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(DESCRIPTION TITLE BACKGROUND BORDER)Tj +/TT10 1 Tf +21.0034 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-9965.6([Function])]TJ +-24.9377 -1.8444 TD +0.03 Tw +[(Creates a Free Menu from a Free Menu Description, returning the window. This function)]TJ +0 -1.2222 TD +0 Tw +(will return quickly unless new display fonts have to be created.)Tj +/TT4 1 Tf +10 0 0 10 126 243.4 Tm +(Accessing Functions)Tj +/TT10 1 Tf +9 0 0 9 150 222.74 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.GETITEM)Tj +/TT10 1 Tf +6.001 0 TD +( )Tj +/TT14 1 Tf +0.5989 0 TD +(ID GROUP WINDOW)Tj +/TT10 1 Tf +9.0015 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-20768.4([Function])]TJ +-14.1349 -1.8444 TD +0.1033 Tw +(Gets item)Tj +/TT19 1 Tf +4.3245 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.3533 0 TD +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.1033 Tw +[( in )]TJ +/TT14 1 Tf +1.5797 0 TD +0 Tw +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.1033 Tw +[( of the Free Menu in )]TJ +/TT14 1 Tf +9.7782 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1033 Tw +[(. This function will search the Free)]TJ +-23.837 -1.2889 TD +0.1933 Tw +(Menu for an item whose )Tj +/TT14 1 Tf +12.0262 0 TD +0 Tw +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.1933 Tw +[( property matches, or secondly whose)]TJ +/TT10 1 Tf +17.7421 0 TD +0.4644 Tw +[( LABEL )]TJ +/TT8 1 Tf +5.1296 0 TD +0 Tw +(property)Tj +-36.0981 -1.2889 TD +(matches )Tj +/TT14 1 Tf +3.9277 0 TD +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.04 Tw +[(. If)]TJ +/TT19 1 Tf +1.4999 0 TD +0 Tw +( )Tj +/TT14 1 Tf +0.29 0 TD +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.04 Tw +[( is )]TJ +/TT10 1 Tf +1.2948 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.04 Tw +[(, then the entire Free Menu is searched. If no matching item)]TJ +-13.0134 -1.2889 TD +0 Tw +(is found, )Tj +/TT10 1 Tf +4.1396 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( is returned.)Tj +/TT10 1 Tf +-8.6066 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.GETSTATE)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-25569.2([Function])]TJ +-9.3341 -1.8444 TD +0.0511 Tw +(Returns in property list format the ID and current )Tj +/TT10 1 Tf +22.6895 0 TD +0 Tw +(STATE )Tj +/TT8 1 Tf +3.725 0 TD +0.0511 Tw +(of every )Tj +/TT10 1 Tf +3.9553 0 TD +0 Tw +(NWAY )Tj +/TT8 1 Tf +3.1249 0 TD +0.0511 Tw +(Collection and)Tj +-33.4947 -1.2889 TD +0.0689 Tw +[(item in the Free Menu. If an items or Collections state is )]TJ +/TT10 1 Tf +26.504 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0689 Tw +(, then it is not included in)Tj +-28.3043 -1.2889 TD +0.0222 Tw +[(the list. This provides an easy way of getting the state of the menu all at once. If the state)]TJ +0 -1.2222 TD +0.1444 Tw +(of only one item or Collection is needed, the application can directly access the )Tj +/TT10 1 Tf +36.9944 0 TD +0 Tw +(STATE)Tj +/TT8 1 Tf +-36.9944 -1.2889 TD +0.2011 Tw +[(property of that object using the Accessing Macros described in Section 28.7.20, Free)]TJ +0 -1.2222 TD +0.1089 Tw +[(Menu Macros. This function can be called when editing is in progress, in which case it)]TJ +T* +0 Tw +(will provide the label of the item being edited at that point.)Tj +ET +endstream +endobj +215 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT19 187 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +217 0 obj +<< +/Length 6280 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-59)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT4 1 Tf +-33 -4.38 TD +(Changing Free Menus)Tj +/TT8 1 Tf +9 0 0 9 78 543.54 Tm +0.0422 Tw +(Many of the following functions operate on Free Menu Items, and thus take the item as an argument.)Tj +0 -1.2222 TD +0 Tw +(The )Tj +/TT19 1 Tf +1.9405 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.0167 Tw +[( argument to these functions can be the Free Menu Item itself, or just a reference to the item.)]TJ +-4.439 -1.2222 TD +0.1022 Tw +(In the second case, )Tj +/TT10 1 Tf +8.8972 0 TD +0 Tw +(FM.GETITEM)Tj +/TT8 1 Tf +6.001 0 TD +0.1022 Tw +[( \(see Section 28.7.16, Accessing Functions\) will be used to find the)]TJ +-14.8981 -1.2889 TD +(item in the Free Menu. The reference can be in one of the following forms: )Tj +7.0111 -2 TD +0.32 Tw +[()-1332.8(Specifies the first item in the Free Menu whose ID or LABEL property)]TJ +3.6556 -1.2222 TD +0 Tw +(matches .)Tj +-10.4933 -2 TD +0.1789 Tw +[(\( )178.9(\))-1332.7(Specifies the item whose ID or LABEL property matches within the)]TJ +10.4933 -1.2222 TD +0 Tw +(group specified by .)Tj +/TT10 1 Tf +-8 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.CHANGELABEL)Tj +/TT10 1 Tf +8.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ITEM NEWLABEL WINDOW UPDATEFLG)Tj +/TT10 1 Tf +18.0029 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-9366.9([Function])]TJ +-25.5365 -1.8444 TD +0.0778 Tw +(Changes an )Tj +/TT19 1 Tf +5.5696 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.0778 Tw +[(s label after the Free Menu has been created. It works for any type of)]TJ +-8.0682 -1.2222 TD +0.0478 Tw +(item, and )Tj +/TT10 1 Tf +4.5174 0 TD +0 Tw +(STATE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0478 Tw +[( items will remain in their current state. If the window is open, the item)]TJ +-7.5179 -1.2889 TD +0.0889 Tw +(will be redisplayed with its new appearance. )Tj +/TT19 1 Tf +20.9885 0 TD +0 Tw +(NEWLABEL)Tj +/TT8 1 Tf +5.3887 0 TD +0.0889 Tw +[( can be an atom, a string, or a)]TJ +-26.3771 -1.2222 TD +0.2389 Tw +(bitmap \(except for )Tj +/TT10 1 Tf +9.0731 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.2389 Tw +[( items\), and will be restricted in size by the )]TJ +/TT10 1 Tf +21.5403 0 TD +0 Tw +(MAXWIDTH)Tj +/TT8 1 Tf +4.8008 0 TD +0.2389 Tw +[( and)]TJ +/TT10 1 Tf +-37.8145 -1.2889 TD +0 Tw +(MAXHEIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.05 Tw +[( Item Properties. If these properties are unspecified, the )]TJ +/TT19 1 Tf +25.4609 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.05 Tw +[( will be able to)]TJ +-33.3604 -1.2889 TD +0.07 Tw +(grow to any size. )Tj +/TT19 1 Tf +8.3852 0 TD +0 Tw +(UPDATEFLG)Tj +/TT8 1 Tf +5.9448 0 TD +0.07 Tw +[( specifies whether or not the regions of the groups in the)]TJ +-14.33 -1.2222 TD +0.0189 Tw +[(menu are recalculated to take into account the change of size of this item. The application)]TJ +T* +0.0767 Tw +(should not change the label of an )Tj +/TT10 1 Tf +15.4029 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0767 Tw +[( item while it is being edited. The following Item)]TJ +-17.8033 -1.2889 TD +(Property is relevant to changing labels: )Tj +/TT10 1 Tf +-6.2 -2 TD +0 Tw +(CHANGELABELUPDATE)Tj +/TT8 1 Tf +11.5333 0 TD +0.0056 Tw +(Exactly like )Tj +/TT10 1 Tf +5.3724 0 TD +0 Tw +(UPDATEFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.0056 Tw +[( except specified on the item, rather than as a function)]TJ +-10.7733 -1.2889 TD +0 Tw +(paramater.)Tj +/TT10 1 Tf +-8 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.CHANGESTATE)Tj +/TT10 1 Tf +8.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X NEWSTATE WINDOW)Tj +/TT10 1 Tf +10.2017 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-17168.1([Function])]TJ +-17.7352 -1.8444 TD +0.0233 Tw +(Programmatically changes the state of items and)Tj +/TT10 1 Tf +21.5848 0 TD +0.0556 Tw +[( NWAY)]TJ +/TT8 1 Tf +3.056 0 TD +0.0233 Tw +[( Collections. )]TJ +/TT19 1 Tf +5.9987 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.7222 0 TD +0.0233 Tw +[( is either an item or)]TJ +-31.3617 -1.2889 TD +0.0878 Tw +[(a Collection name. For items )]TJ +/TT19 1 Tf +13.9631 0 TD +0 Tw +(NEWSTATE)Tj +/TT8 1 Tf +5.4434 0 TD +0.0878 Tw +[( is a state appropriate to the type of the item.)]TJ +-19.4064 -1.2222 TD +0 Tw +(For )Tj +/TT10 1 Tf +1.7637 0 TD +(NWAY)Tj +/TT8 1 Tf +2.4004 0 TD +0.0167 Tw +[( Collections, )]TJ +/TT19 1 Tf +5.712 0 TD +0 Tw +(NEWSTATE)Tj +/TT8 1 Tf +5.4434 0 TD +0.0167 Tw +[( should be the desired item in the Collection, or)]TJ +/TT10 1 Tf +21.1007 0 TD +0.04 Tw +[( NIL)]TJ +/TT8 1 Tf +2.4404 0 TD +0.0167 Tw +[( to)]TJ +-38.8606 -1.2889 TD +0.1711 Tw +[(deselect. For )]TJ +/TT10 1 Tf +6.5431 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1711 Tw +[( and)]TJ +/TT10 1 Tf +2.114 0 TD +0.4111 Tw +[( NUMBER)]TJ +/TT8 1 Tf +4.6118 0 TD +0.1711 Tw +[( items, this function just does a label change. If the)]TJ +-15.6693 -1.2889 TD +0 Tw +(window is open, the item will be redisplayed.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.RESETSTATE)Tj +/TT10 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ITEM WINDOW)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21368.7([Function])]TJ +-13.5346 -1.8444 TD +(Sets an)Tj +/TT19 1 Tf +3.0859 0 TD +( )Tj +/TT14 1 Tf +0.25 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +( back to its initial state.)Tj +/TT10 1 Tf +-8.403 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.RESETMENU)Tj +/TT10 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24969.2([Function])]TJ +-9.9341 -1.8444 TD +(Resets every item in the menu back to its initial state.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.RESETSHAPE)Tj +/TT10 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW ALWAYSFLG)Tj +/TT10 1 Tf +9.6016 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-18368.2([Function])]TJ +-16.5351 -1.8444 TD +0.1478 Tw +(Reshapes the )Tj +/TT14 1 Tf +6.3395 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1478 Tw +[( to its full extent, leaving the lower-left corner unmoved. Unless)]TJ +/TT14 1 Tf +-9.9401 -1.2889 TD +0 Tw +(ALWAYSFLG)Tj +/TT8 1 Tf +5.4009 0 TD +0.15 Tw +[( is )]TJ +/TT10 1 Tf +1.5148 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.15 Tw +(, the window will only be increased in size as a result of resetting the)Tj +-7.5158 -1.2889 TD +0 Tw +(shape.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.RESETGROUPS)Tj +/TT10 1 Tf +8.3999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-23769.2([Function])]TJ +ET +endstream +endobj +218 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT19 187 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +220 0 obj +<< +/Length 6085 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-60)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.4856 Tw +(Recalculates the extent of each group in the menu, updating group boxes and)Tj +0 -1.2222 TD +0 Tw +(backgrounds appropriately.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.HIGHLIGHTITEM)Tj +/TT10 1 Tf +9.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ITEM WINDOW)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19568.7([Function])]TJ +-15.3346 -1.8444 TD +0.2133 Tw +(Programmatically forces an )Tj +/TT19 1 Tf +13.0536 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.2133 Tw +[( to be highlighted. This might be useful for )]TJ +/TT19 1 Tf +21.522 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +(s)Tj +-39.5726 -1.2222 TD +0.1144 Tw +[(which have a direct effect on other )]TJ +/TT19 1 Tf +16.6704 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.1144 Tw +[(s in the menu. The )]TJ +/TT19 1 Tf +9.3415 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.1144 Tw +[( will be highlighted)]TJ +-31.009 -1.2222 TD +(according to its )Tj +/TT10 1 Tf +7.3751 0 TD +0 Tw +(HIGHLIGHT)Tj +/TT8 1 Tf +5.4009 0 TD +0.1144 Tw +[( property, as described in Section 28.7.12, Free Menu Item)]TJ +-12.776 -1.2889 TD +0.0344 Tw +[(Highlighting. This highlight is temporary, and will be lost if the )]TJ +/TT19 1 Tf +29.3282 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.0344 Tw +[( is redisplayed, by)]TJ +-31.8267 -1.2222 TD +0 Tw +(scrolling for example.)Tj +/TT4 1 Tf +10 0 0 10 126 450 Tm +(Editor Functions)Tj +/TT10 1 Tf +9 0 0 9 150 429.34 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.EDITITEM)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ITEM WINDOW CLEARFLG)Tj +/TT10 1 Tf +12.002 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-17167.8([Function])]TJ +-17.7355 -1.8444 TD +0.1833 Tw +(Starts editing an )Tj +/TT10 1 Tf +8.0144 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1833 Tw +[( or )]TJ +/TT10 1 Tf +1.8076 0 TD +0 Tw +(NUMBER)Tj +/TT8 1 Tf +3.6006 0 TD +( )Tj +/TT19 1 Tf +0.4333 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.1833 Tw +[( at the beginning of the )]TJ +/TT19 1 Tf +11.5522 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +0.1833 Tw +(, as long as the)Tj +/TT19 1 Tf +-32.8055 -1.2889 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +4.5542 0 TD +0.0167 Tw +[( is open. This function will most likely be useful for starting editing of an )]TJ +/TT19 1 Tf +32.9429 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +-37.4971 -1.2222 TD +(that is currently the null string. If )Tj +/TT19 1 Tf +15.1689 0 TD +(CLEARFLG)Tj +/TT8 1 Tf +5.0576 0 TD +( is set, the )Tj +/TT19 1 Tf +4.5811 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4985 0 TD +( is cleared first.)Tj +/TT10 1 Tf +-29.9728 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.SKIPNEXT)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW CLEARFLG)Tj +/TT10 1 Tf +9.0015 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-20168.3([Function])]TJ +-14.735 -1.8444 TD +0.12 Tw +(Causes the editor to jump to the beginning of the next )Tj +/TT10 1 Tf +25.3381 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.12 Tw +[( item in the Free Menu. If)]TJ +/TT14 1 Tf +-27.7385 -1.2889 TD +0 Tw +(CLEARFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0001 Tc +0.0032 Tw +( is set, then the next item will be cleared first. If there is not another)Tj +/TT10 1 Tf +29.9532 0 TD +0 Tc +0.0089 Tw +[( EDIT)]TJ +/TT8 1 Tf +3.0094 0 TD +0.0007 Tc +0.0026 Tw +( item)Tj +-37.7634 -1.2889 TD +0 Tc +0.0111 Tw +[(in the menu, this function will simply cause editing to stop. If this function is called when)]TJ +0 -1.2222 TD +0.1511 Tw +(editing is not in progress, editing will begin on the first )Tj +/TT10 1 Tf +26.2491 0 TD +0 Tw +(EDIT)Tj +/TT8 1 Tf +2.4004 0 TD +0.1511 Tw +[( item in the menu. This)]TJ +-28.6495 -1.2889 TD +0.0222 Tw +(function can be called from any process, and can also be called from inside the editor, in a)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(LIMITCHARS)Tj +/TT8 1 Tf +6.001 0 TD +( function.)Tj +/TT10 1 Tf +-8.6676 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.ENDEDIT)Tj +/TT10 1 Tf +5.9999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW WAITFLG)Tj +/TT10 1 Tf +8.4014 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-21368.4([Function])]TJ +-13.5349 -1.8444 TD +0.1022 Tw +(Stops any editing going on in )Tj +/TT14 1 Tf +13.8418 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1022 Tw +[(. If )]TJ +/TT14 1 Tf +1.9766 0 TD +0 Tw +(WAITFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.1022 Tw +[( is )]TJ +/TT10 1 Tf +1.4193 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1022 Tw +(, then block until the editor has)Tj +-25.6391 -1.2889 TD +0.3444 Tw +[(completely finished. This function can be called from another process, or from a)]TJ +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(LIMITCHARS)Tj +/TT8 1 Tf +6.001 0 TD +( function.)Tj +/TT10 1 Tf +-8.6676 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.EDITP)Tj +/TT10 1 Tf +4.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-27369.2([Function])]TJ +-7.5341 -1.8444 TD +0.0089 Tw +(If an item is in the process of being edited in the Free Menu )Tj +/TT14 1 Tf +26.5595 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0089 Tw +(, that item is returned.)Tj +-30.1601 -1.2889 TD +0 Tw +(Otherwise, )Tj +/TT10 1 Tf +5.0962 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( is returned.)Tj +/TT4 1 Tf +12 0 0 12 102 137.64 Tm +(Miscellaneous Functions)Tj +/TT10 1 Tf +9 0 0 9 150 106.54 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.REDISPLAYMENU)Tj +/TT10 1 Tf +9.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22569.2([Function])]TJ +-12.3341 -1.8444 TD +(Redisplays the entire Free Menu in its )Tj +/TT14 1 Tf +16.9673 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(, if the )Tj +/TT14 1 Tf +3.0112 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( is open.)Tj +/TT10 1 Tf +-29.8464 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.REDISPLAYITEM)Tj +/TT10 1 Tf +9.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ITEM WINDOW)Tj +/TT10 1 Tf +6.6011 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19568.7([Function])]TJ +-15.3346 -1.8444 TD +(Redisplays a particular Free Menu )Tj +/TT14 1 Tf +15.46 0 TD +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +( in its )Tj +/TT14 1 Tf +2.6641 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(, if the )Tj +/TT14 1 Tf +3.0112 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( is open.)Tj +ET +endstream +endobj +221 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT19 187 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +223 0 obj +<< +/Length 6635 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-61)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +9 0 0 9 102 569.54 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.SHADE)Tj +/TT10 1 Tf +4.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(X SHADE WINDOW)Tj +/TT10 1 Tf +8.4014 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-22568.4([Function])]TJ +/TT14 1 Tf +-12.3349 -1.8444 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0344 Tw +[( can be an item, or a group ID. )]TJ +/TT14 1 Tf +14.2165 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0344 Tw +[( is painted on top of the item or group. Note that)]TJ +-17.8171 -1.2889 TD +0.0756 Tw +[(this is a temporary operation, and will be undone by redisplaying. For more permanent)]TJ +0 -1.2222 TD +0.1344 Tw +(shading, the application may be able to add a )Tj +/TT10 1 Tf +21.5044 0 TD +0 Tw +(REDEDISPLAYFN)Tj +/TT8 1 Tf +7.8013 0 TD +0.1344 Tw +[( and )]TJ +/TT10 1 Tf +2.4618 0 TD +0 Tw +(SCROLLFN)Tj +/TT8 1 Tf +4.8008 0 TD +0.1344 Tw +[( for the)]TJ +-36.5682 -1.2889 TD +0 Tw +(window as necessary to update the shading.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.WHICHITEM)Tj +/TT10 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW POSorX Y)Tj +/TT10 1 Tf +9.0015 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19568.3([Function])]TJ +-15.335 -1.8444 TD +0.0733 Tw +(Locates and identifies an item from its known location within the )Tj +/TT14 1 Tf +29.8643 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0733 Tw +[(. If )]TJ +/TT14 1 Tf +1.8899 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0733 Tw +[( is)]TJ +/TT10 1 Tf +-38.9554 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(\(WHICHW\))Tj +/TT8 1 Tf +4.8008 0 TD +( is used, and if )Tj +/TT14 1 Tf +6.6484 0 TD +(POSorX)Tj +/TT8 1 Tf +3.6006 0 TD +( is )Tj +/TT10 1 Tf +1.2148 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(, the current cursor location is used.)Tj +/TT10 1 Tf +-23.0319 -2.4 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.TOPGROUPID)Tj +/TT10 1 Tf +7.7999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW)Tj +/TT10 1 Tf +3.6006 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-24369.2([Function])]TJ +-10.5341 -1.8444 TD +(Returns the ID of the top group of this Free Menu.)Tj +/TT4 1 Tf +10 0 0 10 78 387 Tm +(Free Menu Macros)Tj +/TT8 1 Tf +9 0 0 9 78 362.34 Tm +0.0822 Tw +(These Accessing Macros are provided to allow the application to get and set information in the Free)Tj +0 -1.2222 TD +0.11 Tw +[(Menu data structures. They are implemented as macros so that the operation will compile into the)]TJ +T* +0 Tw +(actual access form, rather than figuring that out at run time.)Tj +/TT10 1 Tf +2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.ITEMPROP)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(ITEM PROP {VALUE})Tj +/TT10 1 Tf +10.2017 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-20067([Macro])]TJ +-15.9352 -1.8444 TD +0.0867 Tw +(Similar to )Tj +/TT10 1 Tf +4.7212 0 TD +0 Tw +(WINDOWPROP)Tj +/TT8 1 Tf +6.001 0 TD +0.0867 Tw +(, this macro provides an easy access to the fields of a Free Menu)Tj +-10.7222 -1.2889 TD +0.1589 Tw +(Item. The function )Tj +/TT10 1 Tf +8.8824 0 TD +0 Tw +(FM.GETITEM)Tj +/TT8 1 Tf +6.001 0 TD +0.1589 Tw +[( gets the )]TJ +/TT14 1 Tf +4.399 0 TD +0 Tw +(ITEM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1589 Tw +(, described in Section 28.7.16, Accessing)Tj +-21.6828 -1.2889 TD +0.0067 Tw +[(Function. )]TJ +/TT14 1 Tf +4.9502 0 TD +0 Tw +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0067 Tw +[( is optional, and if not given, the current value of the )]TJ +/TT14 1 Tf +23.5375 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0067 Tw +[( property will)]TJ +-33.8886 -1.2889 TD +0.0222 Tw +[(be returned. If )]TJ +/TT14 1 Tf +6.9112 0 TD +0 Tw +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0222 Tw +[( is given, it will be used as the new value for that )]TJ +/TT14 1 Tf +22.1024 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0222 Tw +(, and the old)Tj +-34.4144 -1.2889 TD +0.0567 Tw +[(value will be returned. When a call to )]TJ +/TT10 1 Tf +17.905 0 TD +0 Tw +(FM.ITEMPROP)Tj +/TT8 1 Tf +6.6011 0 TD +0.0567 Tw +[( is compiled, if the )]TJ +/TT14 1 Tf +8.6549 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.0567 Tw +[( is known)]TJ +-35.5614 -1.2889 TD +0.3722 Tw +(\(quoted in the calling form\), the macro figures out what field to access, and the)Tj +0 -1.2222 TD +0.12 Tw +[(appropriate Data Type access form is compiled. However, if the )]TJ +/TT14 1 Tf +30.027 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.12 Tw +[( is not known at)]TJ +-32.4274 -1.2889 TD +0.1889 Tw +(compile time, the function )Tj +/TT10 1 Tf +12.6135 0 TD +0 Tw +(FM.ITEMPROP)Tj +/TT8 1 Tf +6.6011 0 TD +0.1889 Tw +(, which goes through the necessary property)Tj +-19.2145 -1.2889 TD +0.1344 Tw +(selection at run time, is compiled. The )Tj +/TT10 1 Tf +17.9724 0 TD +0 Tw +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1344 Tw +[( and )]TJ +/TT10 1 Tf +2.4618 0 TD +0 Tw +(USERDATA)Tj +/TT8 1 Tf +4.8008 0 TD +0.1344 Tw +[( properties of a Free Menu)]TJ +-27.6353 -1.2889 TD +0.1378 Tw +(Item are Read Only, and an error will result from trying to change the value of one of)Tj +0 -1.2222 TD +0 Tw +(these properties.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.GROUPPROP)Tj +/TT10 1 Tf +7.1999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW GROUP PROP {VALUE)Tj +/TT19 1 Tf +14.4023 0 TD +(})Tj +/TT10 1 Tf +0.333 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-14933.3([Macro])]TJ +-21.0689 -1.8444 TD +0.0133 Tw +(Provides access to the Group Properties set up in the )Tj +/TT14 1 Tf +23.6631 0 TD +0 Tw +(PROPS)Tj +/TT8 1 Tf +3.0005 0 TD +0.0133 Tw +[( list for each group in the Free)]TJ +-26.6636 -1.2889 TD +0.1044 Tw +(Menu Description. )Tj +/TT14 1 Tf +9.076 0 TD +0 Tw +(GROUP)Tj +/TT8 1 Tf +3.0005 0 TD +0.1044 Tw +[( specifies the )]TJ +/TT10 1 Tf +6.2162 0 TD +0 Tw +(ID)Tj +/TT8 1 Tf +1.2002 0 TD +0.1044 Tw +[( of the desired group, and )]TJ +/TT14 1 Tf +12.3264 0 TD +0 Tw +(PROP)Tj +/TT8 1 Tf +2.4004 0 TD +0.1044 Tw +[( the name of)]TJ +-34.2196 -1.2889 TD +0.0467 Tw +[(the desired property. If )]TJ +/TT14 1 Tf +10.9794 0 TD +0 Tw +(VALUE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0467 Tw +[( is specified, it will become the new value of the property,)]TJ +-13.9799 -1.2889 TD +0 Tw +(and the old value will be returned. Otherwise, the current value is returned.)Tj +/TT10 1 Tf +-2.6667 -2.3333 TD +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.MENUPROP)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW PROP {VALUE)Tj +/TT19 1 Tf +10.8018 0 TD +(})Tj +/TT10 1 Tf +0.333 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-19133.9([Macro])]TJ +-16.8683 -1.8444 TD +0.0356 Tw +(Provides access to the group properties of the top-most group in the Free Menu, that is to)Tj +0 -1.2222 TD +0.0289 Tw +(say, the entire menu. This provides an easy way for the application to attach properties to)Tj +T* +0 Tw +(the menu as a whole, as well as access the Group Properties for the entire menu.)Tj +ET +endstream +endobj +224 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT19 187 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +227 0 obj +<< +/Length 6280 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-62)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +9 0 0 9 150 569.54 Tm +(\()Tj +/TT12 1 Tf +0.6001 0 TD +(FM.NWAYPROP)Tj +/TT10 1 Tf +6.5999 0 TD +( )Tj +/TT14 1 Tf +0.6001 0 TD +(WINDOW COLLECTION PROP {VALUE)Tj +/TT19 1 Tf +17.4028 0 TD +(})Tj +/TT10 1 Tf +0.333 0 TD +(\))Tj +/TT8 1 Tf +0.6001 0 TD +[( )-12532.9([Macro])]TJ +-28.8027 -2.6222 TD +(This macro works just like)Tj +/TT10 1 Tf +11.6362 0 TD +( FM.GROUPPROP)Tj +/TT8 1 Tf +7.8013 0 TD +(, except it provides access to the)Tj +/TT10 1 Tf +14.0977 0 TD +( NWay)Tj +/TT8 1 Tf +3.0005 0 TD +( Collections.)Tj +/TT4 1 Tf +10 0 0 10 102 492 Tm +(Attached Windows)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 489.29 m +606.01 489.29 l +S +BT +/TT8 1 Tf +9 0 0 9 126 468.34 Tm +0.1333 Tw +[(The attached window facility makes it easy to manipulate a group of window as a unit. Standard)]TJ +0 -1.2222 TD +0.0267 Tw +(window operations like moving, reshaping, opening, and closing can be done so that it appears to the)Tj +T* +0.0189 Tw +[(user as if the windows are a single entity. Each collection of attached windows has one main window)]TJ +T* +0.0822 Tw +[(and any number of other windows that are "attached" to it. Moving or reshaping the main window)]TJ +T* +0.2344 Tw +[(causes all of the attached windows to be moved or reshaped as well. Moving or reshaping an)]TJ +T* +0 Tw +(attached window does not affect the main window.)Tj +0 -2.7778 TD +0.0122 Tw +[(Attached windows can have other windows attached to them. Thus, it is possible to attach window A)]TJ +0 -1.2222 TD +0.0367 Tw +[(to window B when B is already attached to window C. Similarly, if A has other windows attached to)]TJ +T* +0 Tw +(it, it can still be attached to B. )Tj +/TT10 1 Tf +10 0 0 10 150 344.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 344.06 Tm +(ATTACHWINDOW)Tj +/F1 1 Tf +10 0 0 10 220.8 344.06 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.67 344.06 Tm +(WINDOWTOATTACH MAINWINDOW EDGE POSITIONONEDGE)Tj +-7.5189 -1.1111 TD +(WINDOWCOMACTION)Tj +/TT10 1 Tf +10 0 0 10 237.0132 334.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 243.0141 334.06 Tm +[( )-27235.1([Function])]TJ +-7.6682 -1.8833 TD +(Associates )Tj +/TT14 1 Tf +5.163 0 TD +(WINDOWTOATTACH)Tj +/TT8 1 Tf +8.4014 0 TD +0.2778 Tw +[( with )]TJ +/TT14 1 Tf +3.0888 0 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.2778 Tw +[( so that window operations done to)]TJ +/TT14 1 Tf +-22.6541 -1.2889 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.1944 Tw +[( are also done to )]TJ +/TT14 1 Tf +8.4468 0 TD +0 Tw +(WINDOWTOATTACH)Tj +/TT8 1 Tf +8.4014 0 TD +0.1944 Tw +[( \(the exact set of window operations)]TJ +-22.8492 -1.2889 TD +0.3078 Tw +(passed between main windows and attached windows is described in the Window)Tj +0 -1.2278 TD +0.7211 Tw +(Operations and Attached Windows section below\). )Tj +/TT10 1 Tf +10 0 0 10 427.1902 282.86 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 499.202 282.86 Tm +0.7211 Tw +[( moves)]TJ +/TT14 1 Tf +-36.1336 -1.3278 TD +0 Tw +(WINDOWTOATTACH)Tj +/TT8 1 Tf +8.4014 0 TD +( to the correct position relative to )Tj +/TT14 1 Tf +14.8433 0 TD +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-29.2456 -2.0667 TD +0.1078 Tw +[(Note: A window can be attached to only one other window. Attaching a window to a)]TJ +0 -1.2222 TD +0.0711 Tw +[(second window will detach it from the first. Attachments can not form loops. That is, a)]TJ +T* +0.5744 Tw +(window cannot be attached to itself or to a window that is attached to it.)Tj +/TT10 1 Tf +10 0 0 10 174 219.26 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 246.0117 219.26 Tm +( will generate an error if this is attempted.)Tj +/TT10 1 Tf +10 0 0 10 174 200.26 Tm +(EDGE)Tj +/TT8 1 Tf +9 0 0 9 198.0039 200.26 Tm +0.0001 Tc +0.0032 Tw +( determines which edge of )Tj +/TT14 1 Tf +11.9522 0 TD +0 Tc +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.0001 Tc +0.0032 Tw +( the attached window is positioned along: it)Tj +-20.6203 -1.3333 TD +0 Tc +0 Tw +(should be one of )Tj +/TT10 1 Tf +10 0 0 10 242.1723 188.26 Tm +(TOP)Tj +/TT8 1 Tf +9 0 0 9 260.1753 188.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 264.6753 188.26 Tm +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 300.6811 188.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 305.1811 188.26 Tm +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 329.185 188.26 Tm +(, or )Tj +/TT10 1 Tf +10 0 0 10 344.4033 188.26 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 374.4082 188.26 Tm +(. If )Tj +/TT14 1 Tf +1.6699 0 TD +(EDGE)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 421.9746 188.26 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 439.9775 188.26 Tm +(, it defaults to )Tj +/TT10 1 Tf +10 0 0 10 496.7329 188.26 Tm +(TOP)Tj +/TT8 1 Tf +9 0 0 9 514.7358 188.26 Tm +(.)Tj +/TT14 1 Tf +-37.8595 -2.1056 TD +(POSITIONONEDGE)Tj +/TT8 1 Tf +8.4014 0 TD +0.0978 Tw +[( determines where along )]TJ +/TT14 1 Tf +11.584 0 TD +0 Tw +(EDGE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0978 Tw +[( the attached window is positioned. It)]TJ +-22.3857 -1.2889 TD +0 Tw +(should be one of the following:)Tj +/TT10 1 Tf +10 0 0 10 186 139.66 Tm +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 222 139.66 Tm +(The attached window is placed on the left \(of a )Tj +/TT10 1 Tf +10 0 0 10 410.4287 139.66 Tm +(TOP)Tj +/TT8 1 Tf +9 0 0 9 428.4316 139.66 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 441.3999 139.66 Tm +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 477.4058 139.66 Tm +( edge\).)Tj +/TT10 1 Tf +10 0 0 10 180 120.66 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 222 120.66 Tm +0.2411 Tw +(The attached window is placed on the right \(of a )Tj +/TT10 1 Tf +10 0 0 10 438.6194 120.66 Tm +0 Tw +(TOP)Tj +/TT8 1 Tf +9 0 0 9 456.6223 120.66 Tm +0.2411 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 473.9306 120.66 Tm +0 Tw +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 222 108.71 Tm +(edge\).)Tj +/TT10 1 Tf +10 0 0 10 174 90.66 Tm +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 222 90.66 Tm +0.1555 Tw +(The attached window is placed on the bottom \(of a )Tj +/TT10 1 Tf +10 0 0 10 440.1875 90.66 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 464.1914 90.66 Tm +0.1556 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 479.9597 90.66 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 222 78.71 Tm +(edge\).)Tj +/TT10 1 Tf +10 0 0 10 192 60.66 Tm +(TOP)Tj +/TT8 1 Tf +9 0 0 9 222 60.66 Tm +(The attached window is placed on the top \(of a )Tj +/TT10 1 Tf +10 0 0 10 410.8242 60.66 Tm +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 434.8281 60.66 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 447.7964 60.66 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 477.8013 60.66 Tm +( edge\).)Tj +/TT10 1 Tf +10 0 0 10 174 41.66 Tm +(CENTER)Tj +/TT8 1 Tf +9 0 0 9 222 41.66 Tm +(The attached window is placed in the center of the edge.)Tj +ET +endstream +endobj +228 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +/TT19 187 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +230 0 obj +<< +/Length 5146 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-63)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-28.8 -4.251 TD +(JUSTIFY)Tj +/TT8 1 Tf +9 0 0 9 133.28 550.49 Tm +(or )Tj +/TT10 1 Tf +10 0 0 10 143.9982 550.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 174 550.49 Tm +0.0067 Tw +(The attached window is placed to fill the entire edge. )Tj +/TT10 1 Tf +10 0 0 10 389.9656 550.49 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 174 538.54 Tm +(reshapes the window if necessary.)Tj +0 -2 TD +0.0389 Tw +[(Note: The width or height used to justify an attached window includes)]TJ +0 -1.2222 TD +0.1656 Tw +(any other windows that have already been attached to )Tj +/TT14 1 Tf +25.7537 0 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +-31.7546 -1.2944 TD +(Thus )Tj +/TT10 1 Tf +10 0 0 10 196.2551 497.89 Tm +0.002 Tw +(\(ATTACHWINDOW BBB AAA RIGHT JUSTIFY\))Tj +/TT8 1 Tf +9 0 0 9 424.3722 497.89 Tm +0.0001 Tc +0.001 Tw +( followed)Tj +-27.8191 -1.3333 TD +0 Tc +0 Tw +(by )Tj +/TT10 1 Tf +10 0 0 10 186.6344 485.89 Tm +0.107 Tw +(\(ATTACHWINDOW CCC AAA TOP JUSTIFY\))Tj +/TT8 1 Tf +9 0 0 9 406.9495 485.89 Tm +0.0444 Tw +[( will put )]TJ +/TT10 1 Tf +10 0 0 10 444.0352 485.89 Tm +0 Tw +(CCC)Tj +/TT8 1 Tf +9 0 0 9 174 473.89 Tm +(across the top of both )Tj +/TT10 1 Tf +10 0 0 10 261.561 473.89 Tm +(BBB)Tj +/TT8 1 Tf +9 0 0 9 279.5639 473.89 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 299.2998 473.89 Tm +(AAA)Tj +/TT8 1 Tf +9 0 0 9 317.3027 473.89 Tm +(:)Tj +ET +q +120 0 0 -75 174.01 461.39 cm +/Im21 Do +Q +BT +/TT14 1 Tf +9 0 0 9 174 368.39 Tm +(WINDOWCOMACTION)Tj +/TT8 1 Tf +9.0015 0 TD +0.3822 Tw +[( provides a convenient way of specifying how)]TJ +/TT14 1 Tf +-9.0015 -1.2889 TD +0 Tw +(WINDOWTOATTACH)Tj +/TT8 1 Tf +8.4014 0 TD +0.2789 Tw +[( responds to right button menu commands. The)]TJ +-8.4014 -1.2944 TD +0.1333 Tw +(window property )Tj +/TT10 1 Tf +10 0 0 10 249.2745 345.14 Tm +0 Tw +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 333.2882 345.14 Tm +0.1333 Tw +[( determines which right button)]TJ +-17.6987 -1.3278 TD +0.28 Tw +(menu commands are directly applied to the attached window, and)Tj +0 -1.2222 TD +0.0267 Tw +(which are passed to the main window \(see the Window Operations and)Tj +T* +0.4722 Tw +[(Attached Windows section below\). Depending on the value of)]TJ +/TT14 1 Tf +0 -1.2278 TD +0 Tw +(WINDOWCOMACTION)Tj +/TT8 1 Tf +9.0015 0 TD +0.4611 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 282.548 300.14 Tm +0 Tw +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 366.5617 300.14 Tm +0.4611 Tw +[( window property of)]TJ +/TT14 1 Tf +-21.3957 -1.3278 TD +0 Tw +(WINDOWTOATTACH)Tj +/TT8 1 Tf +8.4014 0 TD +( is set as follows:)Tj +/TT10 1 Tf +10 0 0 10 144 269.54 Tm +[(NIL)-1199.7(PASSTOMAINCOMS)]TJ +/TT8 1 Tf +9 0 0 9 258.0136 269.54 Tm +0.0156 Tw +[( is set to )]TJ +/TT10 1 Tf +10 0 0 10 292.9169 269.54 Tm +0.037 Tw +(\(CLOSEW MOVEW SHAPEW SHRINKW)Tj +-11.8917 -1.2 TD +0 Tw +(BURYW\))Tj +/TT8 1 Tf +9 0 0 9 210.0058 257.54 Tm +0.3511 Tw +(, so right button menu commands to close, move, shape,)Tj +-4.0007 -1.3278 TD +0.1944 Tw +(shrink, and bury are passed to the main window, and all others are)Tj +0 -1.2222 TD +0 Tw +(applied to the attached window.)Tj +/TT10 1 Tf +10 0 0 10 102 216.54 Tm +[(LOCALCLOSE)-1199(PASSTOMAINCOMS)]TJ +/TT8 1 Tf +9 0 0 9 258.0136 216.54 Tm +0.52 Tw +[( is set to )]TJ +/TT10 1 Tf +10 0 0 10 311.0769 216.54 Tm +1.247 Tw +(\(MOVEW SHAPEW SHRINKW)Tj +-13.7077 -1.2 TD +0 Tw +(BURYW\))Tj +/TT8 1 Tf +9 0 0 9 210.0058 204.54 Tm +0.3344 Tw +(, which is the same as when )Tj +/TT14 1 Tf +14.8626 0 TD +0 Tw +(WINDOWCOMACTION)Tj +/TT8 1 Tf +9.0015 0 TD +0.3344 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 441.736 204.54 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 459.7389 204.54 Tm +(,)Tj +-31.7488 -1.3278 TD +(except that the attached window can be closed independently.)Tj +/TT10 1 Tf +10 0 0 10 138 174.54 Tm +[(HERE)-1199.6(PASSTOMAINCOMS)]TJ +/TT8 1 Tf +9 0 0 9 258.0136 174.54 Tm +0.0544 Tw +[( is set to )]TJ +/TT10 1 Tf +10 0 0 10 294.3169 174.54 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 312.3199 174.54 Tm +0.0544 Tw +(, so all right button menu commands)Tj +-15.3689 -1.3278 TD +0 Tw +(are applied to the attached window.)Tj +/TT10 1 Tf +10 0 0 10 138 144.54 Tm +[(MAIN)-1199.6(PASSTOMAINCOMS)]TJ +/TT8 1 Tf +9 0 0 9 258.0136 144.54 Tm +0.0222 Tw +[( is set to )]TJ +/TT10 1 Tf +10 0 0 10 293.1569 144.54 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 299.1579 144.54 Tm +0.0222 Tw +(, so all right button menu commands are)Tj +-13.9064 -1.3278 TD +0 Tw +(passed to the main window.)Tj +0 -2.0056 TD +0.3922 Tw +[(Note: If the user wants to set the )]TJ +/TT10 1 Tf +10 0 0 10 338.9199 114.54 Tm +0 Tw +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 422.9336 114.54 Tm +0.3922 Tw +[( window)]TJ +-27.6593 -1.3278 TD +(property of an attached window to something else, it must be )Tj +0 -1.2278 TD +0.2311 Tw +(done after the window is attached, since )Tj +/TT10 1 Tf +10 0 0 10 350.9071 91.54 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 422.9189 91.54 Tm +0.2311 Tw +[( modifies)]TJ +-27.6577 -1.3278 TD +0 Tw +(this window property.)Tj +/TT10 1 Tf +10 0 0 10 102 57.31 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 57.31 Tm +(DETACHWINDOW)Tj +/F1 1 Tf +10 0 0 10 172.8 57.31 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 175.67 57.31 Tm +(WINDOWTODETACH)Tj +/TT10 1 Tf +10 0 0 10 251.2823 57.31 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 444.63 57.31 Tm +([Function])Tj +ET +endstream +endobj +231 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/XObject << +/Im21 232 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +234 0 obj +<< +/Length 7124 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-64)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +(Detaches )Tj +/TT14 1 Tf +4.4367 0 TD +(WINDOWTODETACH)Tj +/TT8 1 Tf +8.4014 0 TD +0.1789 Tw +[( from its main window. Returns a dotted pair \()]TJ +/TT10 1 Tf +10 0 0 10 493.7198 569.49 Tm +0.428 Tw +(EDGE .)Tj +-31.972 -1.2 TD +0 Tw +(POSITIONONEDGE)Tj +/TT8 1 Tf +9 0 0 9 258.0136 557.49 Tm +0.2678 Tw +(\) if )Tj +/TT14 1 Tf +1.9926 0 TD +0 Tw +(WINDOWTODETACH)Tj +/TT8 1 Tf +8.4014 0 TD +0.2678 Tw +[( was an attached window, )]TJ +/TT10 1 Tf +10 0 0 10 469.8602 557.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 487.8632 557.49 Tm +0.2678 Tw +[( otherwise.)]TJ +-34.8737 -1.3278 TD +0 Tw +(This does not close )Tj +/TT14 1 Tf +8.6069 0 TD +(WINDOWTODETACH)Tj +/TT8 1 Tf +8.4014 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 522.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 522.66 Tm +(DETACHALLWINDOWS)Tj +/F1 1 Tf +10 0 0 10 242.4 522.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 245.27 522.66 Tm +(MAINWINDOW)Tj +/TT10 1 Tf +10 0 0 10 299.2788 522.66 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 522.66 Tm +([Function])Tj +-35.4033 -1.8833 TD +(Detaches and closes all windows attached to )Tj +/TT14 1 Tf +19.9019 0 TD +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 150 482.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 482.83 Tm +(FREEATTACHEDWINDOW)Tj +/F1 1 Tf +10 0 0 10 253.2 482.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 256.07 482.83 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 288.4753 482.83 Tm +(\))Tj +/F2 1 Tf +0.6001 0 TD +( )Tj +/TT8 1 Tf +9 0 0 9 492.6299 482.83 Tm +([Function])Tj +-35.4033 -1.8833 TD +0.1078 Tw +(Detaches the attached window )Tj +/TT14 1 Tf +14.292 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.1078 Tw +[(. In addition, other attached windows above \(in)]TJ +-17.8925 -1.2944 TD +0.02 Tw +(the case of a )Tj +/TT10 1 Tf +10 0 0 10 225.2351 454.23 Tm +0 Tw +(TOP)Tj +/TT8 1 Tf +9 0 0 9 243.2381 454.23 Tm +0.02 Tw +[( attached window\) or below \(in the case of a )]TJ +/TT10 1 Tf +10 0 0 10 422.8935 454.23 Tm +0 Tw +(BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 458.8994 454.23 Tm +0.02 Tw +[( attached window\))]TJ +-31.6555 -1.3278 TD +0 Tw +(are moved closer to the main window to fill the gap.)Tj +2.6667 -2 TD +0.9244 Tw +(Note: Attached windows that "reject" the move operation \(see)Tj +/TT10 1 Tf +3.3333 -1.2222 TD +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +8.4014 0 TD +( below\) are not moved.)Tj +-11.7347 -2.0667 TD +0.3411 Tw +(Note: )Tj +/TT10 1 Tf +3.6144 0 TD +0 Tw +(FREEATTACHEDWINDOW)Tj +/TT8 1 Tf +10.8018 0 TD +0.3411 Tw +[( currently doesnt handle )]TJ +/TT10 1 Tf +12.7263 0 TD +0 Tw +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +0.3411 Tw +[( or )]TJ +/TT10 1 Tf +2.1231 0 TD +0 Tw +(RIGHT)Tj +/TT8 1 Tf +-28.3326 -1.2889 TD +(attached windows.)Tj +/TT10 1 Tf +10 0 0 10 150 360.8 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 360.8 Tm +(REMOVEWINDOW)Tj +/F1 1 Tf +10 0 0 10 220.8 360.8 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 223.67 360.8 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 256.0753 360.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 262.0762 360.8 Tm +[( )-25117.1([Function])]TJ +-9.7862 -1.8833 TD +(Closes )Tj +/TT14 1 Tf +3.1626 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.04 Tw +(, and calls )Tj +/TT10 1 Tf +4.7626 0 TD +0 Tw +(FREEATTACHEDWINDOW)Tj +/TT8 1 Tf +10.8018 0 TD +0.04 Tw +[( to move other attached windows to fill)]TJ +-22.3275 -1.2889 TD +0 Tw +(any gaps.)Tj +/TT10 1 Tf +10 0 0 10 150 309.97 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 309.97 Tm +(REPOSITIONATTACHEDWINDOWS)Tj +/F1 1 Tf +10 0 0 10 291 309.97 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 293.87 309.97 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 326.2752 309.97 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 332.2762 309.97 Tm +[( )-17317.1([Function])]TJ +-17.5862 -1.8833 TD +0.0133 Tw +(Repositions every window attached to )Tj +/TT14 1 Tf +17.3064 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0133 Tw +[(, in the order that they were attached. This)]TJ +-20.907 -1.2889 TD +0.04 Tw +(is useful as a )Tj +/TT10 1 Tf +6.0316 0 TD +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +5.4009 0 TD +0.04 Tw +[( for main windows with attached window that dont want to be)]TJ +-11.4325 -1.2889 TD +0.0478 Tw +(reshaped, but do want to keep their position relative to the main window when the main)Tj +0 -1.2222 TD +0 Tw +(window is reshaped.)Tj +2.6667 -2 TD +0.9244 Tw +(Note: Attached windows that "reject" the move operation \(see)Tj +/TT10 1 Tf +3.3333 -1.2222 TD +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +8.4014 0 TD +( below\) are not moved.)Tj +/TT10 1 Tf +10 0 0 10 150 206.94 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 206.94 Tm +(MAINWINDOW)Tj +/F1 1 Tf +10 0 0 10 210 206.94 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 212.87 206.94 Tm +(WINDOW RECURSEFLG)Tj +/TT10 1 Tf +10 0 0 10 304.6849 206.94 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 310.6859 206.94 Tm +[( )-19716([Function])]TJ +-15.1873 -1.8833 TD +(If )Tj +/TT14 1 Tf +0.9655 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +[( is not a window, it generates an error. If )]TJ +/TT14 1 Tf +18.9171 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0456 Tw +[( is closed, it returns )]TJ +/TT14 1 Tf +9.0583 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-39.7427 -1.2889 TD +(If )Tj +/TT14 1 Tf +0.961 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +[( is not attached to another window, it returns )]TJ +/TT14 1 Tf +20.6083 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0411 Tw +[( itself. If )]TJ +/TT14 1 Tf +4.2284 0 TD +0 Tw +(RECURSEFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.0411 Tw +[( is)]TJ +/TT10 1 Tf +-38.9999 -1.2889 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0289 Tw +[( and )]TJ +/TT14 1 Tf +2.2507 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0289 Tw +[( is attached to a window, it returns that window. If )]TJ +/TT14 1 Tf +23.3227 0 TD +0 Tw +(RECURSEFLG)Tj +/TT8 1 Tf +6.001 0 TD +0.0289 Tw +[( is )]TJ +/TT10 1 Tf +1.2726 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.0289 Tw +(, it)Tj +-38.848 -1.2889 TD +0.2155 Tw +(returns the first window up the "main window" chain starting at )Tj +/TT14 1 Tf +31.0918 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2156 Tw +[( that is not)]TJ +-34.6924 -1.2889 TD +0 Tw +(attached to any other window.)Tj +/TT10 1 Tf +10 0 0 10 150 121.31 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 121.31 Tm +(ATTACHEDWINDOWS)Tj +/F1 1 Tf +10 0 0 10 237 121.31 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 239.87 121.31 Tm +(WINDOW COM)Tj +/TT10 1 Tf +10 0 0 10 293.8788 121.31 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 299.8798 121.31 Tm +[( )-20916.7([Function])]TJ +-13.9866 -1.8833 TD +(Returns the list of windows attached to )Tj +/TT14 1 Tf +17.5869 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +(.)Tj +-21.1875 -2.0667 TD +(If )Tj +/TT14 1 Tf +0.9521 0 TD +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.0322 Tw +[( is non-)]TJ +/TT10 1 Tf +3.3223 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0322 Tw +(, only those windows attached to )Tj +/TT14 1 Tf +15.0371 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0322 Tw +[( that do not reject the window)]TJ +-26.5127 -1.2889 TD +0 Tw +(operation )Tj +/TT14 1 Tf +4.5161 0 TD +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +( are returned \(see )Tj +/TT10 1 Tf +7.959 0 TD +(REJECTMAINCOMS)Tj +/TT8 1 Tf +8.4014 0 TD +(\).)Tj +/TT10 1 Tf +10 0 0 10 150 51.28 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 51.28 Tm +(ALLATTACHEDWINDOWS)Tj +/F1 1 Tf +10 0 0 10 253.2 51.28 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 256.07 51.28 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 288.4753 51.28 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 294.4762 51.28 Tm +[( )-21517.1([Function])]TJ +ET +endstream +endobj +235 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/F2 17 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +237 0 obj +<< +/Length 8208 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-65)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0344 Tw +(Returns a list of all of the windows attached to )Tj +/TT14 1 Tf +21.1423 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0344 Tw +[( or attached to a window attached)]TJ +-24.7429 -1.2889 TD +0 Tw +(to it.)Tj +/TT10 1 Tf +10 0 0 10 102 535.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 535.66 Tm +(WINDOWREGION)Tj +/F1 1 Tf +10 0 0 10 172.8 535.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 175.67 535.66 Tm +(WINDOW COM)Tj +/TT10 1 Tf +10 0 0 10 229.6788 535.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 235.6797 535.66 Tm +[( )-22716.7([Function])]TJ +-12.1866 -1.8833 TD +(Returns the screen region occupied by )Tj +/TT14 1 Tf +17.144 0 TD +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +( and its attached windows, if it has any.)Tj +-20.7446 -2.0722 TD +(If )Tj +/TT14 1 Tf +0.9388 0 TD +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +0.0189 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 180.3122 500.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 198.3152 500.06 Tm +0.0189 Tw +(, only those windows attached to )Tj +/TT14 1 Tf +14.9571 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0189 Tw +[( that do not reject the window)]TJ +-26.5927 -1.3333 TD +0 Tw +(operation )Tj +/TT14 1 Tf +4.5161 0 TD +(COM)Tj +/TT8 1 Tf +1.8003 0 TD +( are considered in the calculation \(see )Tj +/TT10 1 Tf +10 0 0 10 333.8525 488.06 Tm +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 417.8662 488.06 Tm +(\).)Tj +/TT10 1 Tf +10 0 0 10 102 464.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 464.83 Tm +(WINDOWSIZE)Tj +/F1 1 Tf +10 0 0 10 162 464.83 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.87 464.83 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 197.2753 464.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 203.2762 464.83 Tm +[( )-26317.1([Function])]TJ +-8.5862 -1.8889 TD +0.0867 Tw +(Returns the size of )Tj +/TT14 1 Tf +8.7837 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0867 Tw +[( and its attached windows \(if any\), as a dotted pair )]TJ +/TT10 1 Tf +10 0 0 10 449.993 447.83 Tm +0 Tw +(\(WIDTH)Tj +-32.3993 -1.2 TD +(. HEIGHT\))Tj +/TT8 1 Tf +9 0 0 9 180.0088 435.83 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 412.6 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 412.6 Tm +(MINATTACHEDWINDOWEXTENT)Tj +/F1 1 Tf +10 0 0 10 232.2 412.6 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 235.07 412.6 Tm +(WINDOW)Tj +/TT10 1 Tf +10 0 0 10 267.4753 412.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 273.4762 412.6 Tm +[( )-18517.1([Function])]TJ +-16.3862 -1.8833 TD +0.0144 Tw +(Returns the minimum size that )Tj +/TT14 1 Tf +14.0302 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.0144 Tw +[( and its attached windows \(if any\) will accept, as a)]TJ +-17.6308 -1.2944 TD +0 Tw +(dotted pair )Tj +/TT10 1 Tf +10 0 0 10 172.6743 384 Tm +(\(WIDTH . HEIGHT\))Tj +/TT8 1 Tf +9 0 0 9 268.6899 384 Tm +(.)Tj +/TT4 1 Tf +10 0 0 10 78 356.71 Tm +(Attaching Menus To Windows)Tj +/TT8 1 Tf +9 0 0 9 78 332.05 Tm +(The following functions are provided to associate menus to windows.)Tj +/TT10 1 Tf +10 0 0 10 102 309.77 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 309.77 Tm +(MENUWINDOW)Tj +/F1 1 Tf +10 0 0 10 162 309.77 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.87 309.77 Tm +(MENU VERTFLG)Tj +/TT10 1 Tf +10 0 0 10 229.6805 309.77 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 235.6815 309.77 Tm +[( )-22716.5([Function])]TJ +-12.1868 -1.8833 TD +0.0178 Tw +(Returns a closed window that has the menu )Tj +/TT14 1 Tf +19.7858 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( in it. If )]TJ +/TT14 1 Tf +3.7491 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0178 Tw +[( is a list, a menu is created)]TJ +-28.3356 -1.2944 TD +0 Tw +(with )Tj +/TT14 1 Tf +2.3632 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.08 Tw +[( as its )]TJ +/TT10 1 Tf +10 0 0 10 195.4659 281.17 Tm +0 Tw +(ITEMS)Tj +/TT8 1 Tf +9 0 0 9 225.4708 281.17 Tm +0.08 Tw +[( menu field. Otherwise, )]TJ +/TT14 1 Tf +11.2979 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.08 Tw +[( should be a menu. The returned)]TJ +-24.7507 -1.3333 TD +0.0456 Tw +(window has the appropriate )Tj +/TT10 1 Tf +10 0 0 10 243.0755 269.17 Tm +0 Tw +(RESHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 297.0843 269.17 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 301.9943 269.17 Tm +(MINSIZE)Tj +/TT8 1 Tf +9 0 0 9 344.0012 269.17 Tm +0.0456 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 364.557 269.17 Tm +0 Tw +(MAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 406.5638 269.17 Tm +0.0456 Tw +[( window properties)]TJ +-31.1738 -1.3278 TD +0 Tw +(to allow its use in a window group.)Tj +0 -2.0056 TD +0.06 Tw +(If both the )Tj +/TT10 1 Tf +10 0 0 10 170.9501 239.17 Tm +0 Tw +(MENUROWS)Tj +/TT8 1 Tf +9 0 0 9 218.9579 239.17 Tm +0.06 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 239.7737 239.17 Tm +0 Tw +(MENUCOLUMNS)Tj +/TT8 1 Tf +9 0 0 9 305.7845 239.17 Tm +0.06 Tw +[( fields of )]TJ +/TT14 1 Tf +4.2376 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.06 Tw +[( are )]TJ +/TT10 1 Tf +10 0 0 10 383.4727 239.17 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 401.4756 239.17 Tm +(, )Tj +/TT14 1 Tf +0.56 0 TD +(VERTFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.06 Tw +[( is used to)]TJ +-35.3691 -1.3333 TD +0.1056 Tw +[(set the default menu shape. If )]TJ +/TT14 1 Tf +14.3009 0 TD +0 Tw +(VERTFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.1056 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 323.7346 227.17 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 341.7375 227.17 Tm +0.1056 Tw +(, the )Tj +/TT10 1 Tf +10 0 0 10 362.8724 227.17 Tm +0 Tw +(MENUCOLUMNS)Tj +/TT8 1 Tf +9 0 0 9 428.8831 227.17 Tm +0.1056 Tw +[( field of )]TJ +/TT14 1 Tf +3.9505 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +-37.6041 -1.3333 TD +0.0089 Tw +(will be set to 1 \(the menu items will be listed vertically\); otherwise the )Tj +/TT10 1 Tf +10 0 0 10 407.3417 215.17 Tm +0 Tw +(MENUROWS)Tj +/TT8 1 Tf +9 0 0 9 455.3495 215.17 Tm +0.0089 Tw +[( field of)]TJ +/TT14 1 Tf +-36.5944 -1.3278 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +( will be set to 1 \(the menu items will be listed horizontally\).)Tj +/TT10 1 Tf +10 0 0 10 102 180.34 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 180.34 Tm +(ATTACHMENU)Tj +/F1 1 Tf +10 0 0 10 162 180.34 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 164.87 180.34 Tm +(MENU MAINWINDOW EDGE POSITIONONEDGE NOOPENFLG)Tj +/TT10 1 Tf +10 0 0 10 407.9095 180.34 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 413.9105 180.34 Tm +[( )-2913.3([Function])]TJ +-31.9901 -1.8833 TD +0.0656 Tw +(Creates a window that contains the menu )Tj +/TT14 1 Tf +19.0819 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0656 Tw +[( \(by calling )]TJ +/TT14 1 Tf +5.3441 0 TD +0 Tw +(MENUWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.0656 Tw +(\) and attaches it)Tj +-32.8274 -1.2889 TD +0.1744 Tw +(to the window )Tj +/TT14 1 Tf +7.2304 0 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.1744 Tw +[( on edge )]TJ +/TT14 1 Tf +4.5263 0 TD +0 Tw +(EDGE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1744 Tw +[( at position )]TJ +/TT14 1 Tf +5.7064 0 TD +0 Tw +(POSITIONONEDGE)Tj +/TT8 1 Tf +8.4014 0 TD +0.1744 Tw +[(. The menu)]TJ +-34.2658 -1.2944 TD +0 Tw +(window is opened unless )Tj +/TT14 1 Tf +11.5132 0 TD +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +( is closed, or )Tj +/TT14 1 Tf +5.7002 0 TD +(NOOPENFLG)Tj +/TT8 1 Tf +5.4009 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 394.4707 140.14 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 400.4717 140.14 Tm +(.)Tj +-30.4969 -2.1111 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 134.4493 121.14 Tm +(EDGE)Tj +/TT8 1 Tf +9 0 0 9 158.4532 121.14 Tm +0.0189 Tw +[( is either )]TJ +/TT10 1 Tf +10 0 0 10 195.117 121.14 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 219.1209 121.14 Tm +0.0189 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 232.4291 121.14 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 262.434 121.14 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 267.104 121.14 Tm +(MENUWINDOW)Tj +/TT8 1 Tf +9 0 0 9 327.1138 121.14 Tm +0.0189 Tw +[( will be called with )]TJ +/TT10 1 Tf +10 0 0 10 405.7075 121.14 Tm +0.045 Tw +(VERTFLG = T)Tj +/TT8 1 Tf +9 0 0 9 472.6182 121.14 Tm +0.0189 Tw +(, so)Tj +-38.5131 -1.3278 TD +0.3856 Tw +(the menu items will be listed vertically; otherwise the menu items will be listed)Tj +0 -1.2278 TD +0.4189 Tw +[(horizontally. These defaults can be overridden by specifying the )]TJ +/TT10 1 Tf +10 0 0 10 423.4871 98.14 Tm +0 Tw +(MENUROWS)Tj +/TT8 1 Tf +9 0 0 9 471.4949 98.14 Tm +0.4189 Tw +[( or)]TJ +/TT10 1 Tf +10 0 0 10 126 86.14 Tm +0 Tw +(MENUCOLUMNS)Tj +/TT8 1 Tf +9 0 0 9 192.0107 86.14 Tm +( fields in )Tj +/TT14 1 Tf +4.0518 0 TD +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 62.91 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 62.91 Tm +(CREATEMENUEDWINDOW)Tj +/F1 1 Tf +10 0 0 10 205.2 62.91 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 208.07 62.91 Tm +(MENU WINDOWTITLE LOCATION WINDOWSPEC)Tj +/TT10 1 Tf +10 0 0 10 402.5016 62.91 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 408.5026 62.91 Tm +[( )-3514.2([Function])]TJ +ET +endstream +endobj +238 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +240 0 obj +<< +/Length 4579 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-66)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0056 Tw +(Creates a window with an attached menu and returns the main window. )Tj +/TT14 1 Tf +32.75 0 TD +0 Tw +(MENU)Tj +/TT8 1 Tf +2.4004 0 TD +0.0056 Tw +[( is the only)]TJ +-35.1504 -1.2889 TD +0.0233 Tw +(required argument, and may be a menu or a list of menu items. )Tj +/TT14 1 Tf +28.7764 0 TD +0 Tw +(WINDOWTITLE)Tj +/TT8 1 Tf +6.6011 0 TD +0.0233 Tw +[( is a string)]TJ +-35.3774 -1.2889 TD +0.0667 Tw +(specifying the title of the main window. )Tj +/TT14 1 Tf +18.6608 0 TD +0 Tw +(LOCATION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0667 Tw +[( specifies the edge on which to place)]TJ +-23.4616 -1.2944 TD +0.2622 Tw +(the menu; the default is )Tj +/TT10 1 Tf +10 0 0 10 281.9128 534.6899 Tm +0 Tw +(TOP)Tj +/TT8 1 Tf +9 0 0 9 299.9157 534.6899 Tm +0.2622 Tw +(. )Tj +/TT14 1 Tf +1.2744 0 TD +0 Tw +(WINDOWSPEC)Tj +/TT8 1 Tf +6.001 0 TD +0.2622 Tw +[( is a region specifying a region for the)]TJ +-21.2661 -1.3333 TD +0 Tw +(aggregate window; if )Tj +/TT10 1 Tf +10 0 0 10 261.0249 522.6899 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 279.0278 522.6899 Tm +(, the user is prompted for a region.)Tj +-11.6698 -2.4389 TD +(Examples:)Tj +/TT10 1 Tf +10 0 0 10 210 482.69 Tm +(\(SETQ MENUW)Tj +0 -1 TD +( \(MENUWINDOW)Tj +T* +( \(create MENU)Tj +T* +( ITEMS )Tj +/TT15 1 Tf +8.4014 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(smaller LARGER\))Tj +-9.3882 -1 TD +( MENUFONT )Tj +/TT15 1 Tf +10.2017 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(MODERN 12\))Tj +-11.1885 -1 TD +( TITLE )Tj +/TT15 1 Tf +8.4014 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( "zoom controls")Tj +-9.3882 -1 TD +( CENTERFLG )Tj +/TT15 1 Tf +10.8018 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T)Tj +-11.7886 -1 TD +( WHENSELECTEDFN )Tj +/TT15 1 Tf +13.8022 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(FUNCTION ZOOMMAINWINDOW\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 174 395.69 Tm +0.0578 Tw +(creates \(but does not open\) a menu window that contains the two items ")Tj +/TT10 1 Tf +10 0 0 10 470.6321 395.69 Tm +0 Tw +(smaller)Tj +/TT8 1 Tf +9 0 0 9 512.6389 395.69 Tm +0.0578 Tw +(" and)Tj +-37.6265 -1.3333 TD +0 Tw +(")Tj +/TT10 1 Tf +10 0 0 10 177.3398 383.69 Tm +(LARGER)Tj +/TT8 1 Tf +9 0 0 9 213.3457 383.69 Tm +0.0722 Tw +(" with the title "zoom controls" and that calls the function )Tj +/TT10 1 Tf +10 0 0 10 449.9649 383.69 Tm +0 Tw +(ZOOMMAINWINDOW)Tj +/TT8 1 Tf +9 0 0 9 174 371.74 Tm +0.1111 Tw +[(when an item is selected. Note that the menu items will be listed horizontally, because)]TJ +/TT10 1 Tf +10 0 0 10 174 360.69 Tm +0 Tw +(MENUWINDOW)Tj +/TT8 1 Tf +9 0 0 9 234.0097 360.69 Tm +0.0422 Tw +[( is called with )]TJ +/TT10 1 Tf +10 0 0 10 292.8037 360.69 Tm +0.101 Tw +(VERTFLG = NIL)Tj +/TT8 1 Tf +9 0 0 9 372.8364 360.69 Tm +0.0422 Tw +(, and the menu does not specify either a)Tj +/TT10 1 Tf +10 0 0 10 174 348.69 Tm +0 Tw +(MENUROWS)Tj +/TT8 1 Tf +9 0 0 9 222.0078 348.69 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 234.976 348.69 Tm +(MENUCOLUMNS)Tj +/TT8 1 Tf +9 0 0 9 300.9868 348.69 Tm +( field.)Tj +/TT10 1 Tf +10 0 0 10 210 329.69 Tm +(\(ATTACHWINDOW MENUW)Tj +0 -1 TD +( \(CREATEW \(50 50 150 50\)\))Tj +T* +( TOP)Tj +T* +( JUSTIFY\))Tj +/TT8 1 Tf +9 0 0 9 174 282.74 Tm +(creates a window on the screen and attaches the above created menu window to its top:)Tj +ET +q +112.5 0 0 -56.25 306.01 273.19 cm +/Im22 Do +Q +BT +/TT10 1 Tf +10 0 0 10 210 203.44 Tm +(\(CREATEMENUEDWINDOW)Tj +T* +( \(create MENU)Tj +T* +( ITEMS )Tj +/TT15 1 Tf +7.2012 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(smaller LARGER\))Tj +-8.188 -1 TD +( MENUFONT )Tj +/TT15 1 Tf +9.0015 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(MODERN 12\))Tj +-9.9883 -1 TD +( TITLE )Tj +/TT15 1 Tf +7.2012 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( "zoom controls")Tj +-8.188 -1 TD +( CENTERFLG )Tj +/TT15 1 Tf +9.6016 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( T)Tj +-10.5884 -1 TD +( WHENSELECTEDFN )Tj +/TT15 1 Tf +12.602 0 TD +<0040>Tj +/TT10 1 Tf +0.9868 0 TD +( \(FUNCTION ZOOMMAINWINDOW\)\)\)\))Tj +/TT8 1 Tf +9 0 0 9 174 126.49 Tm +(creates the same sort of window in one step, prompting the user for a region.)Tj +/TT4 1 Tf +10 0 0 10 126 100.15 Tm +(Attached Prompt Windows)Tj +/TT8 1 Tf +9 0 0 9 126 75.49 Tm +0.0556 Tw +(Many packages have a need to display status information or prompt for small amounts of user input)Tj +0 -1.2222 TD +0.0233 Tw +[(in a place outside their standard window. A convenient way to do this is to attach a small window to)]TJ +T* +0.0678 Tw +[(the top of the programs main window. The following functions do so in a uniform way that can be)]TJ +T* +0 Tw +(depended on among diverse applications.)Tj +ET +endstream +endobj +241 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT14 11 0 R +/TT15 76 0 R +>> +/XObject << +/Im22 242 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +244 0 obj +<< +/Length 5948 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-67)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT10 1 Tf +-30.6 -4.374 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 568.26 Tm +(GETPROMPTWINDOW)Tj +/F1 1 Tf +10 0 0 10 189 568.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 191.87 568.26 Tm +(MAINWINDOW #LINES FONT DONTCREATE)Tj +/TT10 1 Tf +10 0 0 10 370.099 568.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 376.1 568.26 Tm +[( )-7114.4([Function])]TJ +-27.7889 -1.8833 TD +0.4178 Tw +(Returns the attached prompt window associated with )Tj +/TT14 1 Tf +26.9342 0 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.4178 Tw +(, creating it if)Tj +-32.9352 -1.2944 TD +0.0678 Tw +[(necessary. The window is always attached to the top of )]TJ +/TT14 1 Tf +25.5991 0 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.0678 Tw +(, has )Tj +/TT10 1 Tf +10 0 0 10 431.9232 539.66 Tm +0 Tw +(DSPSCROLL)Tj +/TT8 1 Tf +9 0 0 9 126 527.66 Tm +(set to )Tj +/TT10 1 Tf +10 0 0 10 149.4097 527.66 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 155.4106 527.66 Tm +(, and has a )Tj +/TT10 1 Tf +10 0 0 10 199.9492 527.66 Tm +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 259.959 527.66 Tm +( of )Tj +/TT10 1 Tf +10 0 0 10 272.3691 527.66 Tm +(NILL)Tj +/TT8 1 Tf +9 0 0 9 296.373 527.66 Tm +( to inhibit page holding. The window is at least)Tj +/TT14 1 Tf +-18.9303 -1.3278 TD +(#LINES)Tj +/TT8 1 Tf +3.6006 0 TD +0.0444 Tw +[( lines high \(default 1\); if a pre-existing window is shorter than that, it is reshaped)]TJ +-3.6006 -1.2889 TD +0.0189 Tw +(to make it large enough. )Tj +/TT14 1 Tf +11.3399 0 TD +0 Tw +(FONT)Tj +/TT8 1 Tf +2.4004 0 TD +0.0189 Tw +[( is the font to give the prompt window \(defaults to the font)]TJ +-13.7403 -1.2889 TD +0 Tw +(of )Tj +/TT14 1 Tf +1.2189 0 TD +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.09 Tw +[(\), and applies only when the window is first created. If )]TJ +/TT14 1 Tf +25.7177 0 TD +0 Tw +(DONTCREATE)Tj +/TT8 1 Tf +6.001 0 TD +0.09 Tw +[( is)]TJ +-38.9386 -1.2889 TD +0 Tw +(true, returns the window if it exists, otherwise NIL without creating any prompt window.)Tj +/TT10 1 Tf +10 0 0 10 102 458.63 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 458.63 Tm +(REMOVEPROMPTWINDOW)Tj +/F1 1 Tf +10 0 0 10 205.2 458.63 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 208.07 458.63 Tm +(MAINWINDOW)Tj +/TT10 1 Tf +10 0 0 10 262.0788 458.63 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 268.0797 458.63 Tm +[( )-19116.7([Function])]TJ +-15.7866 -1.8833 TD +0.0889 Tw +(Detaches the attached prompt window associated with )Tj +/TT14 1 Tf +25.1628 0 TD +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +6.001 0 TD +0.0889 Tw +[( \(if any\), and closes)]TJ +-31.1637 -1.2889 TD +0 Tw +(it.)Tj +/TT4 1 Tf +10 0 0 10 78 403.74 Tm +(Window Operations And Attached Windows)Tj +/TT8 1 Tf +9 0 0 9 78 379.08 Tm +0.0167 Tw +(When a window operation, such as moving or clearing, is performed on a window, there is a question)Tj +0 -1.2222 TD +0.2078 Tw +(about whether or not that operation should also be performed on the windows attached to it or)Tj +T* +0.0122 Tw +[(performed on the window it is attached to. The "right" thing to do depends on the window operation:)]TJ +T* +0.2222 Tw +(it makes sense to independently redisplay a single window in a collection of windows, whereas)Tj +T* +0.0433 Tw +[(moving a single window usually implies moving the whole group of windows. The interpretation of)]TJ +T* +0.1378 Tw +[(window operations also depends on the application that the window group is used for. For some)]TJ +T* +0.0833 Tw +(applications, it may be desirable to have a window group where individual windows can be moved)Tj +T* +0.2311 Tw +[(away from the group, but still be conceptually attached to the group for other operations. The)]TJ +T* +0 Tw +(attached window facility is flexible enough to allow all of these possibilities.)Tj +0 -2.7778 TD +0.2711 Tw +(The operation of window operations can be specified by each attached window, by setting the)Tj +0 -1.2222 TD +0 Tw +(following two window properties:)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +8.4 0 TD +[( )-25083.3([Window Property])]TJ +-5.7333 -1.85 TD +0.0933 Tw +(Value is a list of window commands \(e.g. )Tj +/TT10 1 Tf +10 0 0 10 298.8508 217.43 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 334.8567 217.43 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 340.1967 217.43 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 370.2016 217.43 Tm +0.0933 Tw +(\) which, when selected from)Tj +-27.1335 -1.3278 TD +(the attached windows right-button menu, are actually applied to the central window in)Tj +0 -1.2222 TD +0.0489 Tw +[(the group, instead of being applied to the attached window itself. The "central window")]TJ +T* +0 Tw +(is the first window up the "main window" chain that is not attached to any other window.)Tj +0 -2.0056 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 134.5693 165.43 Tm +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 218.5829 165.43 Tm +0.0322 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 230.0965 165.43 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 248.0995 165.43 Tm +0.0322 Tw +(, all window operations are directly applied to the attached)Tj +-13.5666 -1.3333 TD +0.1544 Tw +[(window. If )]TJ +/TT10 1 Tf +10 0 0 10 178.4791 153.43 Tm +0 Tw +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 262.4927 153.43 Tm +0.1544 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 276.2063 153.43 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 282.2073 153.43 Tm +0.1544 Tw +(, all window operations are passed to the central)Tj +-17.3564 -1.3278 TD +0 Tw +(window.)Tj +0 -2.0056 TD +(Note: )Tj +/TT10 1 Tf +10 0 0 10 162 123.43 Tm +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 234.0117 123.43 Tm +0.2733 Tw +[( allows this window property to be set to commonly-used)]TJ +-8.668 -1.3333 TD +0.19 Tw +(values by using its )Tj +/TT10 1 Tf +10 0 0 10 239.0543 111.43 Tm +0 Tw +(WINDOWCOMACTION)Tj +/TT8 1 Tf +9 0 0 9 329.069 111.43 Tm +0.19 Tw +[( argument. )]TJ +/TT10 1 Tf +10 0 0 10 382.1169 111.43 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 454.1287 111.43 Tm +0.19 Tw +[( always)]TJ +-33.1254 -1.3278 TD +0.0022 Tw +(sets this window property, so users must modify it directly only after attaching the)Tj +0 -1.2222 TD +0 Tw +(window to another window.)Tj +/TT12 1 Tf +-6 -2.3333 TD +(REJECTMAINCOMS)Tj +/TT8 1 Tf +8.4 0 TD +[( )-25083.3([Window Property])]TJ +ET +endstream +endobj +245 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +247 0 obj +<< +/Length 6734 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-68)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.12 Tw +(Value is a list of window commands that the attached window will not allow the main)Tj +0 -1.2222 TD +0.2289 Tw +[(window to apply to it. This is how a window can say "leave me out of this group)]TJ +T* +0 Tw +(operation.")Tj +0 -2.0056 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 183.6093 529.49 Tm +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 267.6229 529.49 Tm +0.1478 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 281.2165 529.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 299.2195 529.49 Tm +0.1478 Tw +(, all window commands may be applied to this attached)Tj +-13.9133 -1.3333 TD +0.2022 Tw +[(window. If )]TJ +/TT10 1 Tf +10 0 0 10 227.7691 517.49 Tm +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 311.7827 517.49 Tm +0.2022 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 326.3563 517.49 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 332.3573 517.49 Tm +0.2022 Tw +(, no window commands may be applied to this)Tj +-17.5953 -1.3278 TD +0 Tw +(attached window.)Tj +-5.3333 -2.7833 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 146.34 480.49 Tm +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 230.3537 480.49 Tm +0.3344 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 256.12 480.49 Tm +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 340.1337 480.49 Tm +0.3344 Tw +[( window properties affect right-button menu)]TJ +-23.7926 -1.3278 TD +0.0778 Tw +(operations applied to main windows or attached windows, and the action of programmatic window)Tj +0 -1.2278 TD +(functions \()Tj +/TT10 1 Tf +10 0 0 10 169.1248 457.49 Tm +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 205.1306 457.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 210.3307 457.49 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 240.3355 457.49 Tm +0.0778 Tw +[(, etc.\) applied to main windows. However, these window properties do)]TJ +-12.7039 -1.3278 TD +0 Tw +(not affect the action of window functions applied to attached windows.)Tj +0 -2.7778 TD +0.3789 Tw +(The following list describes the behavior of main and attached windows under the window)Tj +0 -1.2278 TD +0.0289 Tw +(operations, assuming that all attached windows have their )Tj +/TT10 1 Tf +10 0 0 10 363.0512 409.49 Tm +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 447.0648 409.49 Tm +0.0289 Tw +[( window property set)]TJ +-35.6739 -1.3333 TD +0 Tw +(to )Tj +/TT10 1 Tf +10 0 0 10 136.5086 397.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 154.5115 397.49 Tm +0.0456 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 175.0674 397.49 Tm +0 Tw +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 259.0811 397.49 Tm +0.0456 Tw +[( set to \()]TJ +/TT10 1 Tf +10 0 0 10 288.9678 397.49 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 324.9737 397.49 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 327.6337 397.49 Tm +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 357.6385 397.49 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 360.2985 397.49 Tm +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 396.3044 397.49 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 398.9644 397.49 Tm +(SHRINKW)Tj +/TT8 1 Tf +9 0 0 9 440.9713 397.49 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 443.6312 397.49 Tm +(BURYW)Tj +/TT8 1 Tf +9 0 0 9 473.6361 397.49 Tm +0.0456 Tw +(\) \(the default if)Tj +/TT10 1 Tf +10 0 0 10 126 385.49 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 198.0117 385.49 Tm +( is called with )Tj +/TT10 1 Tf +10 0 0 10 255.2856 385.49 Tm +(WINDOWCOMACTION = NIL)Tj +/TT8 1 Tf +9 0 0 9 381.3061 385.49 Tm +(\). )Tj +-28.3674 -2.8833 TD +0.0578 Tw +(The behavior for any particular operation can be changed for particular attached windows by setting)Tj +0 -1.2278 TD +0.0422 Tw +(the standard window properties \(e.g., )Tj +/TT10 1 Tf +10 0 0 10 280.3507 348.49 Tm +0 Tw +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 316.3565 348.49 Tm +0.0422 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 330.0848 348.49 Tm +0 Tw +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 372.0916 348.49 Tm +0.0422 Tw +[(\) of the attached window. An exception)]TJ +-27.3435 -1.3333 TD +0.0433 Tw +(is the )Tj +/TT10 1 Tf +10 0 0 10 150.1984 336.49 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 192.2053 336.49 Tm +0.0433 Tw +[( property of an attached window, that is set to bring the whole window group to the)]TJ +-7.3561 -1.3333 TD +0.1233 Tw +(top and should not be set by the user \(although users can add functions to the )Tj +/TT10 1 Tf +10 0 0 10 455.3147 324.49 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 497.3215 324.49 Tm +0.1233 Tw +[( window)]TJ +-41.258 -1.3278 TD +0 Tw +(property\).)Tj +/TT10 1 Tf +10 0 0 10 186 294.49 Tm +(Move)Tj +/TT8 1 Tf +9 0 0 9 222 294.49 Tm +0.0344 Tw +(If the main window moves, all attached windows move with it, and the)Tj +T* +0.4644 Tw +(relative positioning between the main window and the attached)Tj +0 -1.2222 TD +0.1444 Tw +[(windows is maintained. If the region is determined interactively, the)]TJ +T* +0.2478 Tw +(prompt region for the move is the union of the extent of the main)Tj +0 -1.2278 TD +0.2311 Tw +(window and all attached windows \(excluding those with )Tj +/TT10 1 Tf +10 0 0 10 467.7664 249.49 Tm +0 Tw +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 497.7713 249.49 Tm +0.2311 Tw +[( in)]TJ +-30.6413 -1.3333 TD +0 Tw +(their )Tj +/TT10 1 Tf +10 0 0 10 242.9092 237.49 Tm +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 326.9228 237.49 Tm +( window property\).)Tj +-11.6581 -2.1111 TD +0.1589 Tw +(If an attached window is moved by calling the function )Tj +/TT10 1 Tf +10 0 0 10 458.3732 218.49 Tm +0 Tw +(MOVEW)Tj +/TT8 1 Tf +9 0 0 9 488.3781 218.49 Tm +0.1589 Tw +(, it is)Tj +-29.5976 -1.3278 TD +0.03 Tw +[(moved without affecting the main window. If the right-button window)]TJ +0 -1.2222 TD +0.0589 Tw +(menu command Move is called on an attached window, it is passed on)Tj +T* +0 Tw +(to the main window, so that all windows in the group move.)Tj +/TT10 1 Tf +10 0 0 10 168 166.49 Tm +(Reshape)Tj +/TT8 1 Tf +9 0 0 9 222 166.49 Tm +0.1256 Tw +(If the main window is reshaped, the minimum size of it and all of its)Tj +0 -1.3278 TD +0.1167 Tw +(attached windows is used as the minimum of the space for the result.)Tj +0 -1.2222 TD +0.1878 Tw +(Any space greater than the minimum is distributed among the main)Tj +0 -1.2278 TD +0.1078 Tw +[(window and its attached windows. Attached windows with )]TJ +/TT10 1 Tf +10 0 0 10 473.9277 132.49 Tm +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 222 120.49 Tm +0.4011 Tw +(on their )Tj +/TT10 1 Tf +10 0 0 10 262.5305 120.49 Tm +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 346.5442 120.49 Tm +0.4011 Tw +[( window property are ignored when)]TJ +-13.8382 -1.3278 TD +0.2467 Tw +(finding the minimum size, creating a "ghost" region, or distributing)Tj +0 -1.2222 TD +0 Tw +(space after a reshape. )Tj +0 -2.0056 TD +0.0211 Tw +(If an attached window is reshaped by calling the function )Tj +/TT10 1 Tf +10 0 0 10 454.8589 79.49 Tm +0 Tw +(SHAPEW)Tj +/TT8 1 Tf +9 0 0 9 490.8648 79.49 Tm +0.0211 Tw +(, it is)Tj +-29.8739 -1.3278 TD +0.13 Tw +[(reshaped independently. If the right-button window menu command)]TJ +0 -1.2222 TD +0.2144 Tw +(Shape is called on an attached window, it is passed on to the main)Tj +T* +0 Tw +(window, so the whole group is reshaped.)Tj +ET +endstream +endobj +248 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +250 0 obj +<< +/Length 4707 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-69)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.5011 Tw +[(Note: Reshaping the main window will restore the conditions)]TJ +0 -1.2278 TD +0.0989 Tw +(established by the call to )Tj +/TT10 1 Tf +10 0 0 10 278.3904 558.49 Tm +0 Tw +(ATTACHWINDOW)Tj +/TT8 1 Tf +9 0 0 9 350.4021 558.49 Tm +0.0989 Tw +(, whereas moving the main)Tj +-19.6002 -1.3278 TD +0.0133 Tw +[(window does not. Thus, if A is attached to the top of B and then moved)]TJ +0 -1.2222 TD +0.1978 Tw +(by the user, its new position relative to B will be maintained if B is)Tj +T* +0.4133 Tw +[(moved. If B is reshaped, A will be reshaped to the top of B.)]TJ +T* +0.0222 Tw +(Additionally, if, while A is moved away from the top of B, C is attached)Tj +T* +0 Tw +(to the top of B, C will position itself above where A used to be.)Tj +/TT10 1 Tf +10 0 0 10 132 484.49 Tm +(Close)Tj +/TT8 1 Tf +9 0 0 9 174 484.49 Tm +0.1511 Tw +(If the main window is closed, all of the attached windows are closed)Tj +0 -1.3278 TD +(also and the links from the attached windows to the main )Tj +26.6667 0 TD +0.01 Tw +(window are)Tj +-26.6667 -1.2222 TD +0 Tw +(broken. This is necessary for the windows to be garbage collected.)Tj +0 -2.0056 TD +0.1278 Tw +(If an attached window is closed by calling the function )Tj +/TT10 1 Tf +10 0 0 10 404.9716 443.49 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 440.9775 443.49 Tm +0.1278 Tw +(, it is)Tj +-29.6642 -1.3278 TD +0.0589 Tw +[(closed without affecting the main window. If the right-button window)]TJ +0 -1.2278 TD +0.1167 Tw +(menu command )Tj +/TT10 1 Tf +10 0 0 10 243.556 420.49 Tm +0 Tw +(Close)Tj +/TT8 1 Tf +9 0 0 9 273.5609 420.49 Tm +0.1167 Tw +[( is called on an attached window, it is passed)]TJ +-11.0623 -1.3278 TD +0.3689 Tw +[(on to the main window. Note that closing an attached window)]TJ +0 -1.2222 TD +0 Tw +(detaches it.)Tj +/TT10 1 Tf +10 0 0 10 138 379.49 Tm +(Open)Tj +/TT8 1 Tf +9 0 0 9 174 379.49 Tm +0.2778 Tw +(If the main window is opened, it opens all attached windows and)Tj +0 -1.3278 TD +0 Tw +(reestablishes links from them to the main window.)Tj +0 -2 TD +0.2689 Tw +(Attached windows can be opened independently and this does not)Tj +0 -1.2222 TD +0.2033 Tw +[(affect the main window. Note that it is possible to reopen a closed)]TJ +T* +0 Tw +(attached window and not have it linked to its main window.)Tj +/TT10 1 Tf +10 0 0 10 126 309.49 Tm +(Shrink)Tj +/TT8 1 Tf +9 0 0 9 174 309.49 Tm +0.0633 Tw +[(The collection of windows shrinks as a group. The )]TJ +/TT10 1 Tf +10 0 0 10 384.1512 309.49 Tm +0 Tw +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 432.159 309.49 Tm +0.0633 Tw +(s of the)Tj +-28.6843 -1.3278 TD +0.0778 Tw +(attached windows are evaluated but the only icon displayed is the one)Tj +0 -1.2222 TD +0 Tw +(for the main window.)Tj +/TT10 1 Tf +10 0 0 10 108 268.49 Tm +(Redisplay)Tj +/TT8 1 Tf +9 0 0 9 174 268.49 Tm +(The main or attached windows can be redisplayed independently.)Tj +/TT10 1 Tf +10 0 0 10 132 249.49 Tm +(Totop)Tj +/TT8 1 Tf +9 0 0 9 174 249.49 Tm +0.1144 Tw +(If any main or attached window is brought to the top, all of the other)Tj +0 -1.3278 TD +0 Tw +(windows are brought to the top also.)Tj +/TT10 1 Tf +10 0 0 10 126 219.49 Tm +(Expand)Tj +/TT8 1 Tf +9 0 0 9 174 219.49 Tm +(Expanding any of the windows expands the whole collection.)Tj +/TT10 1 Tf +10 0 0 10 108 200.49 Tm +(Scrolling)Tj +/TT8 1 Tf +9 0 0 9 174 200.49 Tm +(All of the windows involved in the group scroll independently.)Tj +/TT10 1 Tf +10 0 0 10 132 181.49 Tm +(Clear)Tj +/TT8 1 Tf +9 0 0 9 174 181.49 Tm +(All windows clear independently of each other.)Tj +/TT4 1 Tf +10 0 0 10 78 154.2 Tm +(Window Properties Of Attached Windows)Tj +/TT8 1 Tf +9 0 0 9 78 129.54 Tm +0.0989 Tw +(Windows that are involved in a collection either as a main window or as an attached window have)Tj +0 -1.2222 TD +0.0778 Tw +[(properties stored on them. The only properties that are intended to be set be set by the user are the)]TJ +/TT10 1 Tf +10 0 0 10 78 107.49 Tm +0 Tw +(MINSIZE)Tj +/TT8 1 Tf +9 0 0 9 120.0068 107.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 124.6568 107.49 Tm +(MAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 166.6637 107.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 171.3136 107.49 Tm +(PASSTOMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 255.3273 107.49 Tm +0.0167 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 277.6132 107.49 Tm +0 Tw +(REJECTMAINCOMS)Tj +/TT8 1 Tf +9 0 0 9 361.6268 107.49 Tm +0.0167 Tw +[( window properties. The other)]TJ +-31.5141 -1.3278 TD +0 Tw +(properties should be considered read only.)Tj +/TT12 1 Tf +2.6667 -2.4756 TD +(MINSIZE)Tj +/F2 1 Tf +10 0 0 10 139.8 73.26 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 407.85 73.26 Tm +([Window Property])Tj +/TT12 1 Tf +-33.9833 -1.2089 TD +(MAXSIZE)Tj +/F2 1 Tf +10 0 0 10 139.8 62.38 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 407.85 62.38 Tm +([Window Property])Tj +ET +endstream +endobj +251 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 17 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +253 0 obj +<< +/Length 6908 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-70)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +( INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.0867 Tw +(Each of these window properties should be a dotted pair )Tj +/TT10 1 Tf +10 0 0 10 409.6389 569.49 Tm +0.209 Tw +(\(WIDTH . HEIGHT\) )Tj +/TT8 1 Tf +9 0 0 9 517.9255 569.49 Tm +0.0867 Tw +(or a)Tj +-38.2139 -1.3278 TD +0.0611 Tw +[(function to apply to the window that returns a dotted pair. The numbers are used when)]TJ +0 -1.2278 TD +0.0056 Tw +[(the main window is reshaped. The )]TJ +/TT10 1 Tf +10 0 0 10 316.5526 546.49 Tm +0 Tw +(MINSIZE)Tj +/TT8 1 Tf +9 0 0 9 358.5595 546.49 Tm +0.0056 Tw +[( is used to determine the size of the smallest)]TJ +-20.5066 -1.3278 TD +0.0567 Tw +[(region acceptable during reshaping. Any amount greater than the collective minimum is)]TJ +0 -1.2278 TD +0.0644 Tw +(spread evenly among the windows until each reaches )Tj +/TT10 1 Tf +10 0 0 10 394.0863 523.49 Tm +0 Tw +(MAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 436.0931 523.49 Tm +0.0644 Tw +[(. Any excess is given to)]TJ +-29.1215 -1.3278 TD +0 Tw +(the main window.)Tj +0 -2.0056 TD +0.1422 Tw +(If you give the main window of an attached window group a )Tj +/TT10 1 Tf +10 0 0 10 434.4738 493.49 Tm +0 Tw +(MINSIZE)Tj +/TT8 1 Tf +9 0 0 9 476.4806 493.49 Tm +0.1422 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 492.0089 493.49 Tm +0 Tw +(MAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 174 481.49 Tm +0.0511 Tw +(property, its value is moved to the )Tj +/TT10 1 Tf +10 0 0 10 316.1443 481.49 Tm +0 Tw +(MAINWINDOWMINSIZE)Tj +/TT8 1 Tf +9 0 0 9 418.1609 481.49 Tm +0.0511 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 432.0491 481.49 Tm +0 Tw +(MAINWINDOWMAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 174 469.54 Tm +0.2822 Tw +(property, so that the main window can be given a size function that computes the)Tj +0 -1.2222 TD +0.12 Tw +[(minimum or maximum size of the entire group. Thus, if you want to change the main)]TJ +T* +0.09 Tw +(windows minimum or maximum size after attaching windows to it, you should change)Tj +0 -1.2278 TD +0 Tw +(the )Tj +/TT10 1 Tf +10 0 0 10 188.7348 436.49 Tm +(MAINWINDOWMINSIZE)Tj +/TT8 1 Tf +9 0 0 9 290.7514 436.49 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 303.7197 436.49 Tm +(MAINWINDOWMAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 405.7363 436.49 Tm +( property instead.)Tj +-25.7485 -2.1056 TD +0.0344 Tw +[( This doesnt address the hard problem of overlapping attached windows side to side, for)]TJ +0 -1.2278 TD +0.07 Tw +(example if window A was attached as [)Tj +/TT10 1 Tf +10 0 0 10 334.8421 406.49 Tm +0 Tw +(TOP)Tj +/TT8 1 Tf +9 0 0 9 352.845 406.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 357.975 406.49 Tm +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 381.9789 406.49 Tm +0.07 Tw +(] and B as [)Tj +/TT10 1 Tf +10 0 0 10 428.541 406.49 Tm +0 Tw +(TOP)Tj +/TT8 1 Tf +9 0 0 9 446.5439 406.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 451.6739 406.49 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 481.6787 406.49 Tm +0.07 Tw +[(]. Currently,)]TJ +-34.1865 -1.3278 TD +0 Tw +(the attached window functions do not worry about the overlap.)Tj +0 -2.0056 TD +(The default )Tj +/TT10 1 Tf +10 0 0 10 221.852 376.49 Tm +(MAXSIZE)Tj +/TT8 1 Tf +9 0 0 9 263.8589 376.49 Tm +( is )Tj +/TT10 1 Tf +10 0 0 10 274.7924 376.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 292.7954 376.49 Tm +(, which will let the region grow indefinitely.)Tj +/TT12 1 Tf +-15.8662 -2.4389 TD +(MAINWINDOW)Tj +/TT8 1 Tf +6 0 TD +[( )-27483.3([Window Property])]TJ +-3.3333 -1.8444 TD +0.25 Tw +[(Pointer from attached windows to the main window of the group. This link is not)]TJ +0 -1.2278 TD +0.0233 Tw +[(available if the main window is closed. The function )]TJ +/TT10 1 Tf +10 0 0 10 388.2767 326.89 Tm +0 Tw +(MAINWINDOW)Tj +/TT8 1 Tf +9 0 0 9 448.2865 326.89 Tm +0.0233 Tw +[( is the preferred way)]TJ +-30.4763 -1.3278 TD +0 Tw +(to access this property.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(ATTACHEDWINDOWS)Tj +/TT8 1 Tf +9 0 TD +[( )-24483.3([Window Property])]TJ +-6.3333 -1.85 TD +0.0789 Tw +[(Pointer from a window to its attached windows. The function )]TJ +/TT10 1 Tf +10 0 0 10 431.6611 277.29 Tm +0 Tw +(ATTACHEDWINDOWS)Tj +/TT8 1 Tf +9 0 0 9 521.6757 277.29 Tm +0.0789 Tc +[( i)78.9(s)]TJ +-38.6306 -1.3278 TD +0 Tc +(the preferred way to access this property.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(WHEREATTACHED)Tj +/TT8 1 Tf +7.8 0 TD +[( )-25683.3([Window Property])]TJ +-5.1333 -1.85 TD +0.1333 Tw +(For attached windows, a dotted pair \()Tj +/TT10 1 Tf +10 0 0 10 331.1018 227.69 Tm +0.32 Tw +(EDGE . POSITIONONEDGE)Tj +/TT8 1 Tf +9 0 0 9 463.5223 227.69 Tm +0.1333 Tw +(\) giving the edge)Tj +-32.1692 -1.3278 TD +0.0233 Tw +(and position on the edge that determine how the attached window is placed relative to its)Tj +0 -1.2222 TD +0 Tw +(main window.)Tj +-5.3333 -2.7833 TD +(The )Tj +/TT10 1 Tf +10 0 0 10 144.0044 179.69 Tm +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 186.0113 179.69 Tm +0.0767 Tw +[( window property on attached windows and the properties )]TJ +/TT10 1 Tf +10 0 0 10 430.5587 179.69 Tm +0 Tw +(TOTOPFN)Tj +/TT8 1 Tf +9 0 0 9 472.5655 179.69 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 477.7555 179.69 Tm +(DOSHAPEFN)Tj +/TT8 1 Tf +9 0 0 9 531.7643 179.69 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 126 167.69 Tm +(MOVEFN)Tj +/TT8 1 Tf +9 0 0 9 162.0058 167.69 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 169.4158 167.69 Tm +(CLOSEFN)Tj +/TT8 1 Tf +9 0 0 9 211.4227 167.69 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 218.8327 167.69 Tm +(OPENFN)Tj +/TT8 1 Tf +9 0 0 9 254.8385 167.69 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 262.2485 167.69 Tm +(SHRINKFN)Tj +/TT8 1 Tf +9 0 0 9 310.2563 167.69 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 317.6664 167.69 Tm +(EXPANDFN)Tj +/TT8 1 Tf +9 0 0 9 365.6742 167.69 Tm +0.3233 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 391.23 167.69 Tm +0 Tw +(CALCULATEREGIONFN)Tj +/TT8 1 Tf +9 0 0 9 493.2466 167.69 Tm +0.3233 Tw +[( on main)]TJ +-40.8052 -1.3278 TD +0.0289 Tw +[(windows contain functions that implement the attached window manipulation facilities. Care should)]TJ +0 -1.2222 TD +0 Tw +(be used in modifying or replacing these properties.)Tj +0 -2.7778 TD +0.0001 Tc +0.0132 Tw +[(Communication of Window Menu Commands between Attached Windows is dependent on the name)]TJ +0 -1.2278 TD +0 Tc +0.0944 Tw +(of function used to implement the window command, e.g., )Tj +/TT10 1 Tf +10 0 0 10 369.5221 108.69 Tm +0 Tw +(CLOSEW)Tj +/TT21 1 Tf +9 0 0 9 405.5279 108.69 Tm +( )Tj +/TT8 1 Tf +0.3444 0 TD +0.0944 Tw +[( implements )]TJ +/TT10 1 Tf +10 0 0 10 468.1768 108.69 Tm +0 Tw +(CLOSE)Tj +/TT8 1 Tf +9 0 0 9 498.1817 108.69 Tm +0.0944 Tw +[( \(refer to)]TJ +/TT10 1 Tf +10 0 0 10 126 96.69 Tm +0 Tw +(PASSTOMAINCOMS)Tj +/TT21 1 Tf +9 0 0 9 210.0136 96.69 Tm +( )Tj +/TT8 1 Tf +0.5144 0 TD +0.2644 Tw +[(documentation under Attached Windows\). Consequently, if an application)]TJ +-9.8493 -1.3333 TD +0.1144 Tw +(intercepts a window command by changing )Tj +/TT10 1 Tf +10 0 0 10 309.4422 84.69 Tm +0 Tw +(WHENSELECTEDFN)Tj +/TT21 1 Tf +9 0 0 9 393.4559 84.69 Tm +0.1144 Tc +( )Tj +/TT8 1 Tf +0.7289 0 TD +0 Tc +0.1144 Tw +(for an item in the WindowMenu)Tj +-30.4462 -1.3278 TD +0.1811 Tw +(\(for example, to advise the application that a window is being closed\), windows may not behave)Tj +0 -1.2222 TD +0 Tw +(correctly when attached to other windows.)Tj +ET +endstream +endobj +254 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT21 255 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +257 0 obj +<< +/Length 1225 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(27-71)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(WINDOWS AND MENUS)Tj +/TT8 1 Tf +9 0 0 9 78 569.49 Tm +0.2911 Tw +(To get around this problem, the Medley release provides the variable )Tj +/TT10 1 Tf +10 0 0 10 383.9919 569.49 Tm +0 Tw +(*attached-window-)Tj +-30.5992 -1.2 TD +(command-synonyms*)Tj +/TT8 1 Tf +9 0 0 9 180.0166 557.49 Tm +0.3089 Tw +[(. This variable is an alist, where each element is of the form \(new-)]TJ +-11.3352 -1.3278 TD +0 Tw +(command-function-name . old-command-function-name\).)Tj +0 -2.7833 TD +0.0811 Tw +(For example, if an application redefines the WindowMenu to call my-close-window when )Tj +/TT10 1 Tf +10 0 0 10 446.4919 520.49 Tm +0 Tw +(CLOSE)Tj +/TT8 1 Tf +9 0 0 9 476.4968 520.49 Tm +0.0811 Tw +[( is)]TJ +-44.2774 -1.3278 TD +0 Tw +(selected, that application should:)Tj +/TT10 1 Tf +10 0 0 10 126 490.49 Tm +(\(cl:push \(my-close-window . il:closew\) il:*attached-window-)Tj +0 -1.2 TD +(command-synonyms*\))Tj +-4.8 -2.6 TD +( )Tj +/TT8 1 Tf +9 0 0 9 89.201 452.49 Tm +0.2167 Tw +(in order to tell the attached window system that my-close-window is a synonym function for)Tj +/TT10 1 Tf +10 0 0 10 78 440.49 Tm +0 Tw +(CLOSEW)Tj +/TT8 1 Tf +9 0 0 9 114.0059 440.49 Tm +(.)Tj +ET +endstream +endobj +258 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +19 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 300 +/Height 170 +/BitsPerComponent 1 +/ImageMask true +/Length 6461 +>> +stream +?><<<8<0?<0<x <x <?x <?A8 <a8<`< << <?< <?~ <~0<0?<?8<?<<?><??x<?<?<?<?<?<?<8@ʊd, hk]F1SJD""*T8QWRJ%VD.*hU(QRT׻d+ ݄QWwn(`@QB~ ?!?0<~c>?c?c?????>??>?????????? 0?8?????? +endstream +endobj +20 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 395 +/Height 124 +/BitsPerComponent 1 +/ImageMask true +/Length 6201 +>> +stream +?????????????????????????????????????????????????s?'?'?<{;;;8~;;>???8?????> +stream +9 +endstream +endobj +22 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 379 +/Height 63 +/BitsPerComponent 1 +/ImageMask true +/Length 3025 +>> +stream +@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_@_!'#""I$$""I$I$U:MII)g8")cI"  +endstream +endobj +26 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 71 +/Height 122 +/BitsPerComponent 1 +/ImageMask true +/Length 1099 +>> +stream +_vVv?mv?}nwq???wWLJG}w۷{;߽wٷ{{]w7{{p{;wUwtLJGww]w}?wxw۷6w훯p87w۷6wwxwwp?x7ﷷﷷwﷴ> +stream +?>~~>? +endstream +endobj +43 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 12 +/Height 12 +/BitsPerComponent 1 +/ImageMask true +/Length 25 +>> +stream +???????? +endstream +endobj +44 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 14 +/BitsPerComponent 1 +/ImageMask true +/Length 29 +>> +stream +> +stream +oooooooo?ֿ? +endstream +endobj +52 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 13 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +FFFFFFF +endstream +endobj +139 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 46 +/Height 26 +/BitsPerComponent 1 +/ImageMask true +/Length 157 +>> +stream +`p8o{oo[`p8o[o`p8{oopx<w{z~_z~_}} +endstream +endobj +143 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 8 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 17 +>> +stream +g'? +endstream +endobj +144 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 91 +/Height 50 +/BitsPerComponent 1 +/ImageMask true +/Length 601 +>> +stream +???~?A A A ~?H$A H$ AA H$~?PH$H$ G}o}w}yoo}~px<}nw{z~_z~_}}}}}}}}}a}y +endstream +endobj +154 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 31 +/Height 26 +/BitsPerComponent 1 +/ImageMask true +/Length 105 +>> +stream +o?o;nmmkgo?}}}}z<=wwwwo +endstream +endobj +155 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 31 +/Height 35 +/BitsPerComponent 1 +/ImageMask true +/Length 141 +>> +stream +~~~~~~~~~~~{~}}}}z<=wwwwoA $A $A$!a +endstream +endobj +161 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 47 +/Height 62 +/BitsPerComponent 1 +/ImageMask true +/Length 373 +>> +stream +?}}~O=~?~?}?=?=?===~?}?}=~=~O?=O}=}==?}~=~=?} +endstream +endobj +171 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 196 +/Height 66 +/BitsPerComponent 1 +/ImageMask true +/Length 1651 +>> +stream +?????;q  ~;nݻ;nݿ8wn݃o;nͻov;߮ߺ;>~=ۺ8wϿ~<|???????;rǏ?}~?}???????;j~;;7jݻ~m~;7jݿ~~:j݃~ :j6mٻvٷ9N:pw:w9w;???????88w;nݻw;nۻ;nۻ߿;nǻw߿;n׻w;nۻww;ݻw???? +endstream +endobj +175 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 168 +/Height 118 +/BitsPerComponent 1 +/ImageMask true +/Length 2479 +>> +stream +?????UUUUUUUUUU<;0⪪wn;7UUUUUUUUUUwm;ڷ⪪wm;ڰUUUUUUUUpc;ڷʪwm;ٷ?UUUUUUUUwm<9ʪc??UUUUUUUU?ʪ?7UUUUUUUUU?ʪ?7UUUUUUUU?ʪ?7UUUUUUUUU?ʪ??UUUUUUUU?ʪ??UUUUUUUU? +?UUUUUUUUUU?⪪?TUU?ʩ򪪟??UUU?ʩ򪪟??UUU?ʩ ;}򪪟?6U}UU?ʩ}򪪟?1U UU?ʩ}򪪟?6U}UU?ʩ 򪪟??UUU?ʩ򪪟??UUU? +?UUUUUUUUUU?⪪?T? +?U? +?U?J{n2?Umm?∊mz2?Um{z? +w ;7ww{:w{::w}9w}9qw.`????????!?<$?>0$?$?> +stream +???????UUUUUUUUUU???ʪ? ?>UUUUUUUUUU?}>ʪ?}>?UUUUUUUU? ?>?}>mUUUUUUUU?}?l??. ??UUUUUUUU??q??nUUUUUUUU??o??oUUUUUUUU??o??nUUUUUUUU??q??UUUUUUUU????UUUUUUUU??*??UUUUUUUUUU??ʪ??PUU??ꪪ??SUU??ꪪ??SUU??cvꪪ??mSvUU??mvwꪪ??cSvUU??mvꪪ??mSvUU??cꪪ??SUU??ꪪ??SUU??* +??UUUUUUUUUU??ʪ??P?? +??S?? +??S?? 8j??Su?? +}0Xj?? +S}[e?? + +|y9\??Su?? +??S?? +??S?? + +??UUUUUUUUUU??ʪ??UUUUUUUUUU??ʪ???????077777? 76}6o}6?o 76o}6m}7l?໰. 77770?????>燏_Ow >{ww{>{w{>}{w?u>{w߿}>m{w߿}>np]v {`????????C$a?$O?$A?s$I?Cc?????? +endstream +endobj +183 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 57 +/Height 35 +/BitsPerComponent 1 +/ImageMask true +/Length 281 +>> +stream +wowoowaoo߃nwmwkwwww$a8GA@H$FxO4HHa0 @ +endstream +endobj +232 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 120 +/Height 75 +/BitsPerComponent 1 +/ImageMask true +/Length 1126 +>> +stream +??????????????????????????????????????????????????0`ϟHHH + +H????????????????????????Ǐ(P(PǏ +endstream +endobj +242 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 150 +/Height 75 +/BitsPerComponent 1 +/ImageMask true +/Length 1426 +>> +stream +??????????????????????????????????????????????wrۆwl~߻wn~ݾ߻wp۸߷3~vÿÇLێݿ߻߻<@a418!$@I$I$@I$I $@M'I <au1  +endstream +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +260 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +261 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +262 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +263 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +264 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +265 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +266 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +267 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBOIIO+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 268 0 R +>> +endobj +268 0 obj +<< +/Filter /FlateDecode +/Length 20017 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($C"T0`IiA ݷّffɆVI AS44RR)4|-*PRi nxj3{ߛ{o oN~{;p>{ - +Lx+ +7spBA#P01l0X4x{˗! P8/V'>i!ZX;7<}Ms c{`!pLuT"x0AE(״X@zjo?tDI#қ8_j*$"T!7D}ln;:_ +uKq=?{8@mʿg-Y <8rqe +1:WA?'s> 9f5$%y8a),& hp43d P:6A5Fhp4Cmx\3LRԪ%-i7k$롞[H^w92|8"s .^Q@ &qS9N+α0a34@q*00r~X~nCd+9L#%AMRijnCOp;70vNGJ^gW}ǯG8j5ؿ#В<ލY_ )(CLG X&*0^A8⼋-,Ź6pr+\U|ƣ8?Id*+Pr+Ff,\̗kdkr&6g8"t{ +M +h"y2N a|# naDtz& +LQE8tmE0A,lvy 3ĭo2A,n, h!+c9`qnL~W-Sx"iGx&">l|xw@Fi ӯBo>u'i/ ~_^LZY-wxLHR E6Vٸ%6ƥ6V۸6ql)W۸Ƨm|ZlZl\gOly/:''OqCbQ/ 50$P bHW\T!5 BHj΀otU%p7L7_捸H13ܘjj4de5Mnx|uJG7 AZS)% f$4VFbRݲkIh*~'߯lT8ڠ*ZP ^ M6!W"m ̓W4 ?x8Α$Ei*2k>M![$~/ɝRU)Ck̄Lp Fk.I,[=TaaT=Ѵv8sEYaPUV'|jQ}MM5th2I蛑csVe쀜Vd Өybj+2E,ӕL5,#t5t\k, ҈ϵ.|`00q v bev$VIv;=ڠ_cr4XsY"~ܛn[(iwi4ZFOJ/l)958}oH?D Hf)Dl3~7?qg̥fJޔ&?M949C"j|oecNjƲ.vɝn˙6M+WdVkɎ^ogjv^iJok_0Z/v}=Iu+!XS#z"mRYw |)_ʘӺ:oNXu <5FOWjH :}xjbQ񴔔ZwVo-lpW{;mY{b;=ޕqyMpQOXj]gB&k=aahOgYU:NVoqu,<8\,Jҙ{S(0S榁gP}Aۀ]zօD,YcWAorm2c㓧Y^J w[mcxg6bΩ==N,_5K#5StrZs: i8¥;w^%9 'Qa@?[Cu8rU|-m$ٻc?ԗ lǟŹgBV8Np-vH§ֵ@CRr DB 5I*kU NG 0-d+hԡۚ ﹳMRDHHh<~ٜ3.\0YXJwX e^& LH}2*$u֑1b{wkY n%i0˰Z[-d4 ~RlB;~/1 sۃ^@F%HV:# )p)8Nho e҄ti05`c6V`~&/茍!Fz|{e.)_L3Bw,v!dm[YFF>.UFzB?.wUxϝj8Ԩ1Ӫ'#mtȶ/z"2ָ! +" Qg 9ke\VÚ.59=څrWJgi*:k}A{jI<9>S_ʒ P'Lgw<9'f72*I@3G5;$\J0ϾحːQ4UxNc0^1X*!qnD#o0Z#I 2ubQ "!8 3c yO[yK%Z2jV{<-;qAzTtM.,\:D8UAY)Q y{(]C_;w 5棾͏K%B 󧦶_"c%*u}Ag}>ɘ9k7=Rzv63zZ|Eۖ=V:q+勁xHٳ0[g˯~{eUM=Q_pAu ֒AiuSZ>ؒ\׵.3BXה˱"\{ŲνQb-7ٍ In'F9CHMOp +:D]#ʻ=(0tssѨ3`T$#baSiF[?-HƳ-VGs2)m|ذ,EAJ1 irMFbTNu.mÝа6#"ѶÕwv'0s<&$ _3q OX wJXu +a4A+^ SpeAb!'?$SȣO2TgJ2HJZNG&ɟI9F>&I/@.?P Q'ͥn:>D*-<4KA}/:n6;}vO4,}=d6MdSYI-e/լZX{IvEEv pE>>O?14_ʟ/zox1~O^e:4Qٔa$@ņEԢG3az 5✓;\~UfBȶli1i +c`nDS\B$CI`Lѭ +e1α6b+L`#nn/mHws 2Fۖ7v[Wu;%1E.lY喉UJ_h֙a9˼bjI%$)5b I,/=dP'~,MEhǧf{lx )qᇑY`XjC+\hkY.Zf.ӭY)6(z,H9el߹d`EadjDj50K%nmS UR.!/ qƜә KKmg'tX00,( {JMqCUӻ(>{J9#gA٤ H8_EE>eSKƻy!#<|xNm,|" پc-ٚ,*zh⏶%n7%i,Yf+eG8ߗ4j/(NJ}1=vjhw\e0R euE ڋK^)>?t1;ֱiɑPE$ n-ȼH !6#SّٜGw9iU?8*M:k CK]\ER_ZW|[s,~-\nòT^j^n0ѸZj˘̮xͽ\esӯnґ` )s]Z,3}g>̪ #:fΠ3ٕ_@ M賗eDcLmFhpԍ +l3ueBm&gYF#I4ɼe2P{ʶ[$5/O`yY@UY-РlKI:96֩%&De1#{imcEGAdT`YC:;|t C0iL0G-BRrl/Oo?9TM-=/̀= mșLZc\&UKdQWq 6B4',xiNY.İGz%C:\N/c +BѝnBJj:kg\+~[S1?7ꧾuܩE^/5IA# +hО%-e Oo_0hc 2~=ytLW,Z1ְZR+Ʈ17f<6cY1fjh/H2VQOhX,OtW"Ah۳\,jxf{[ + &gi Ƽe9,bXxX>M4d,<Ɵ$+j +#ǺG+ԍLοAXO-f9ζnf,,C-ݖΗ^צG9 +і[:?{YPJߔ?^KCGͷܠ0A橥/Kw=_B Zb衅KUDww+Xɪe)MXf_+PxcE-#iZ 4=t@!/Q8i5,\}܀E"/zաzԄv4hEUt lǥx ^܀) ܅{0Sx 6N:^$Ed%YED"}U1ROH i'ϐ9@FHLSM;$wrd"n-k=}!n13WͽǥE{Eu]sܷ )ef.HZT6 (DhjgdL'QVFQ@%֟V:hgĤ-љLkg@[cҎ;QƟs/ h:=?|ߏ]adUNuy+VS 〫sXGEҐ5Тl2 [*y5( +0m?{#8:Nh"ub*Q +1Q'6NGNP-;XZVj%^TqJ &. D8K(XՖ$24)X ckUCށYXv?lȦG 5AhcΥ ql3tؘ޸axʿ] YKCő4-izA GSF<6,4aVPj<ɭo8s:ZN/j,cIrKA@z5}g;ӡ.~T;B$a kHu_烢-LmIo+7%WAGb˻r{;"Qc<&=Yfzk +_a!N%u > ]-kw$4hH[uV"9>a*47JC/") I⟯gE^pwi.JC% `_ԒT T/@$KWO̺*S֝8XHd'ϧeug27;r~V*kX P Ir#֮;lP}Q.ccm޼<(@${94;=`gsFT]IO P o%0&H=Vx"sIz`,O /fH*?wUISRo/0Džu Ố +QM,ȅȪx, *a13XU% 7`32txQ8}a}×pxovqd22\k.y, ?!U%RC^%kIyDym%IEȻ#/<'7L$7A2jy .dtJ')4nt]MVچnr #=Jѳ ($)EIOJR`f*ji9:)"5Iڤ;% K;' OI7cY +s3/&i,e~F}@F\J, !/&T›0_ o78TcBe + 3/r`0dH +yW>a~! ۼ*0Q1p)mPds"E6 yfI&3,sǂ{xg\X$aD} +kwyBh0!Ye\Q.ʸy_ޣm/"i_YJTTʽҪ&6|ʪ'I/7J Duoוl?I1ުȪ5{lՖnV(X|bcmaO+^%=y~vPa4_3'cWr YٍwˍWSkl%͓)STPv|#M=Y}p~܀vk FK"^tϕK{UDrp!\p'͆D[n8j[oݧ[[  ~| ;pWm}].j2VAj)]q~nw}!S؝;A +U ;J"{ LG)$> +M*&Ofٴ $v&Ҭbh&14v3]ZtjoޑSv}QoOص=+D#>lwf'fO+.XaOI@PKB1LC)2Sp7"X rXzXৰ8 +ϣ:*3pDM>$!\Eɵ&*"7Nn#d&Bu|Xd YA'Mmv="(=5=JQRwc$FU!Ơ8ohu{kݖ WGE¨Bqsg{Q%(RZgGTJJh#XzV} F!4eDfyULT\"n↙ .ڑ +C[dPI$fx у`*؁kq&.hg3C%)A놲>֢Tv$4,j`$#ACυ| b?fA'XHoE,yƈPXhFϓ(6_N}b^y˛$Yc& XPR7d~ɇʐ/E iFjl|L*^bkG 8Jב{)۝bp/ HcwX(΢f~_pnFDGs}Z :ߡMH +JIeB9w`+0g L < +=,Y Y٪%JG&t)  2԰-|C v:s{y:"۠Їud}=񯙭xRdNLr/ 4,20dpɲF}OaT!?K0K!H >yZ|E(9ңg0l^*@ܚ=T2tKhfs=`a"4 pvL#.:-O (X ٌ[d6}aw m49l"rkb`mvˆAoi-Q*x% u  TE2QTGSUl,>"OkR. #-T; " n"Y׃¶\+Lę#X.Iq*=$d`9\2q="Xpd1;Н[c\ņA$/:؂FW'G8{ImeJdSQC͠ẩd>ZeY_lGovts# Q"#%qTvCˆ< RIK_0|!͉ !륾V2if}8cPC*E7|ǵ ${۝}Aۡ,8hZl ZdZdO}lj- Z<@UZ|-̢&-*&a׽j5sR}\I`c٥ʼnftg̫‡oMqe␥wcB ֬u=5Ƙע >Y6ޝRrT9UpdqJvG,Ȉş%ȼ~ś-;zR" ZxTQgЂM -5uf -te6xx]yz,1tJǬRBcl[Vά5&ހ^]AN-o]3qnu-]X,h9\.lwY8B{B֝^QYOFH/ZE/J. Š?瑅di +)y5kɹNPl \ҢITf1h->.]F/Wyc,c'j`-ʴ$-pEg@]-0i?[ dgarbչY- +pLxQ6qPZDuֆ-(Jh!Yi"Y c]qjϿ!I|HM= -V>1~ @ 7iN0N?^x21ّ'E0hgЂʛ]Yx$ڥ8h1YUYwJ VyͰtlI JgLU+[z87d،b̩kkܕ'ydtGe:+DQ`F#Z0nG؅;G +'Z̹گ›)8\R9 -|Y1b -p?&|FZD5ojh6 i1,~tj'G쫴Xf~WeޅcF²& 5H13]Z:~dk2V Cb,ELa nd[RlaM-XK"3WN닲{_zdayecE{3?F {8dI<οƦMz# RGԟͥ_͗\nV#N,e݉^pS%On|c +$ \֝<;l.hOZhW] /쐴HF%i!ZbQxvˆ75585iZn:; mh~D.7R=~DLnC] -p:T5|O lm>FOƋ%UmQǏԿ+疻{i;!>\;;//-l%ʖF,طPWnN=ZvڎqƝ\`79'"-CWm4wm6`aY>[XJ_\}[9Wmh|Ԧ񇾅wHp?1T7:ׇZQ>Y(Ңb5[7A Eȥ!~xo^kO{??,‰ZhbiӜh;^6ۉibۇp[p<9e/%  W!d|d#iMr| e"-yw-PƔq3 ה S{*?U~jwvE1_(TS- .F"]cBD +k<450OkGqTԪ1&>cm|cE;?#j<;;?L$^3Y +IJhbn36-dl5[6}.?xw@x|&y3w(?ǿWm)\)iUzF&)RHj~'m>H2r&gy\./_˭O|SaJOLV^Vf)s*e{rV\rITFդV5KV 5S"vݑa$IATRR(VP,.UU \AD`5H=iOG(]j2"FUvF5S+?BdP@&30p/b*# FHH1LawEc$ԃQn1U1EBד!\ +'g>$#3sQh"t0F u +qB:EXN?#:b_< (n\B=Xz (:=EO5etݾoE^H{aV(֭]o஢u`] ,{ulcUu֎{f70*WHr7,ؘRd(q\Ré9h}iCI}~>e_2-%>xbY~uiϽͶ+c=1Y6ɦ'd/{ը0ӅOWqy)#aa4eW +H_YvVBQUt}(ytokNQǴ+уprTBGUb3'B]ki=z(dx75so>7b]p1uU˲ +S֋eLH<Ta ~J B~-D[t;{<3㈸>_ueA~C^IbuYhޢ6kՉUޚmP~EG#|Y}Ɩ3c1>3|@JTq|հhB}dw֮ݬn@՗O7~0/o?xh>0M:KղIlcX+7+;ߠ5}2ܮ%L Θ&Sf6D"ohfے=G͍Q~FCap/#ߕ)s}I?aǾ#uʇ{?-XP! w@?C' !@>[yx /Bf^5XUP K1Z -h?@+f`;`7p 3p.:CBYgD4MHDv 9N>!g^"W NJxS3O`LSi:B3ѱ3hJ;y?Хt]EY~\0=J?g"Lѯ NoN`11CY8晑,b}X,cϒؓ?{ +ie3;HE`TȒ( %ŨĘ^J 2]DM>.S)&WKX𠅌UNx~yJ'!{Q]H1>4~b$TeJ降3b#.SpaW4 + {uA]+hRKA/̑fIAb:s dIB(qܿR `Sdت}4)sj]TkfT48|?p8yI}},I񤄳RMt85?QrA9vwbUP{H?{,uI'gM.Bjմv)F)Z5<ߙҼ7ՆkӦq`%^8X8->+n~z?\u2:D0H9>=gb--ǷmZ\. +;R|Λs9<+./8XޮVzcGm lAt,)O<]I +A%tI6Z\葚:Ԙp+SC^,>h |!pKnJ9]\0NZP5?ӑB.@@GE3` r>ɖs_X /,ź^;$s_H'.>8?'ir_si5>5./cs6+@ą37(8s4d,*vGx֋n2EjKPIykZjS0fh"A ]KEH@4cu=~8=I;aѦ 5‰o1VͰ$ Z TEvzt櫭GgOs%˨Çii%1HԆĶ c F`zOnܤ*qBJ2Od"`/qo (`bK%1]$syٙhV.9,#Rזaq5PAKO>f-(e=F6ȱ՗ɱ13u;W6^T] GG|z*w):lOeͳ8ޘZ.HV@X$}4]! KM JM ,a02-sLt]nMjkT)peɤձ9̪Q86v{zUE2W wi36*_Y%%q˱3fd..3S^ֵZGm΋~}r5-٥:yeUH q9O?ugirOk趲ys[ІѫG+Us(imU^mZ̎K̯zZLr(+5VZ}kt+ͻj['Ņ ʩ)WiO^tT/aXBЎ}e3Ipk@U ?Ѽ5@=RVx""MoL)7\\>{PjiI4-=A[Sno\TCɉ%LC&~ h\5S MhMsNCȗ>x o`'M7:T9!=kU +x^ ߂߀_]A +XVR f4S`x_Bn!A x` 8WMORMn岥*]̌`]%>+hsZBޓ*~'v?}12=-th/-ЉiaO)=S +?AGwA@SlkF!'623?5ފ޶@~,1mG `+}u5dVL+XP\W? +Y.흥2db>(u[ؒKճ%s*Xdbp _EBʆ`oL>lffO5F՟ K9b3[:MYO؄F4Ig4p*8L'ȽqNN߃xȯq+80}G:Q#A3ٌ<-#@זy y8X'S0!}-r~ء!@_rb"Oxd^ 4Rj9s*~ ]rao-zt\Bu]{Z@ 2|ʄ;pG *[ +,asa(|4j)f/!-]0'kMR)]ؤJRKv*65@3Mg8 zg}2eϮ֍Gw ~ΔL_% +N۝RVtW+%"5Qt\nvڻM&g)HB *^x"hMR{tQ*LnĺSS3)O-∣7Y͒F=k> +endobj +270 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 98 +/FontBBox [-170 -276 1010 918] +/FontName /Palatino-Italic +/ItalicAngle -15 +/StemV 84 +/XHeight 482 +/StemH 84 +>> +endobj +271 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +272 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +273 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +274 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 272 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 273 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [278 333 400 556 556 833 852 278 333 333 500 606 278 333 278 606 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +747 704 722 722 778 722 667 778 833 407 611 741 667 944 815 778 +667 778 741 667 685 815 704 926 704 685 667 333 606 333 606 500 +333 574 556 444 611 444 333 537 611 333 315 556 333 889 611 500 +574 556 444 444 352 611 519 778 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 274 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 260 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 278 0 278 278 +0 0 556 0 0 0 0 556 0 0 333 0 0 0 0 0 +0 722 722 722 722 667 611 778 722 278 0 0 611 833 722 778 +667 0 722 667 611 722 0 944 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 556 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 261 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 87 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 0 944 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 262 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 255 +/Widths [250 0 371 0 0 0 0 0 333 333 0 606 250 333 250 606 +500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 0 +0 778 611 709 774 611 556 763 832 337 0 726 611 946 831 786 +604 0 668 525 613 778 722 1000 667 667 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 +] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 263 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 600 600 0 0 0 0 600 600 600 600 600 600 600 0 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 264 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 46 +/LastChar 121 +/Widths [600 600 0 600 0 600 0 0 0 0 0 0 0 0 0 0 +0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 0 600 600 600 600 600 600 600 600 600 0 0 0 +0 0 0 600 0 600 600 600 0 600 600 600 0 600 600 600 +600 600 600 0 600 600 600 600 600 600 600 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 265 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 600 0 0 0 0 0 0 0 0 600 0 0 600 +0 600 0 0 0 0 0 0 0 0 0 0 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 0 0 0 600 0 0 0 0 600 0 0 0 0 600 600 +0 0 600 0 0 0 0 600 0 0 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 266 0 R +>> +endobj +76 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBOIIO+Symbol +/Encoding /Identity-H +/DescendantFonts [ 275 0 R ] +/ToUnicode 276 0 R +>> +endobj +275 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBOIIO+Symbol +/FontDescriptor 267 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +64 [986] +] +>> +endobj +160 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 40 +/LastChar 46 +/Widths [333 333 0 0 0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 269 0 R +>> +endobj +187 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 125 +/Widths [250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 722 611 667 778 611 556 722 0 333 0 0 556 944 778 778 +611 0 667 556 611 778 0 944 722 0 0 0 0 0 0 0 +0 444 0 0 0 0 0 0 500 0 0 0 0 0 0 0 +0 0 0 0 333 0 0 0 0 0 0 0 0 333 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Italic +/FontDescriptor 270 0 R +>> +endobj +255 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [250 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 271 0 R +>> +endobj +276 0 obj +<< +/Filter /FlateDecode +/Length 219 +>> +stream +HTPn0 {ꐀJnah*{.14Rq" +Wu-?=[KC.|goZ; ppE ֙uk6 ]cC# > +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 29 0 R +/Contents 28 0 R +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 32 0 R +/Contents 31 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +40 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 42 0 R +/Contents 41 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +49 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 51 0 R +/Contents 50 0 R +>> +endobj +53 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 55 0 R +/Contents 54 0 R +>> +endobj +58 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 60 0 R +/Contents 59 0 R +>> +endobj +61 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 63 0 R +/Contents 62 0 R +>> +endobj +64 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 66 0 R +/Contents 65 0 R +>> +endobj +67 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 69 0 R +/Contents 68 0 R +>> +endobj +70 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 72 0 R +/Contents 71 0 R +>> +endobj +73 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 75 0 R +/Contents 74 0 R +>> +endobj +77 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 79 0 R +/Contents 78 0 R +>> +endobj +80 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 82 0 R +/Contents 81 0 R +>> +endobj +83 0 obj +<< +/Type /Page +/Parent 57 0 R +/Resources 85 0 R +/Contents 84 0 R +>> +endobj +86 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 88 0 R +/Contents 87 0 R +>> +endobj +90 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 92 0 R +/Contents 91 0 R +>> +endobj +93 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 95 0 R +/Contents 94 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 98 0 R +/Contents 97 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 101 0 R +/Contents 100 0 R +>> +endobj +102 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 104 0 R +/Contents 103 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 107 0 R +/Contents 106 0 R +>> +endobj +108 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 110 0 R +/Contents 109 0 R +>> +endobj +111 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 113 0 R +/Contents 112 0 R +>> +endobj +114 0 obj +<< +/Type /Page +/Parent 89 0 R +/Resources 116 0 R +/Contents 115 0 R +>> +endobj +117 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 119 0 R +/Contents 118 0 R +>> +endobj +121 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 123 0 R +/Contents 122 0 R +>> +endobj +124 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 126 0 R +/Contents 125 0 R +>> +endobj +127 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 129 0 R +/Contents 128 0 R +>> +endobj +130 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 132 0 R +/Contents 131 0 R +>> +endobj +133 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 135 0 R +/Contents 134 0 R +>> +endobj +136 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 138 0 R +/Contents 137 0 R +>> +endobj +140 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 142 0 R +/Contents 141 0 R +>> +endobj +145 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 147 0 R +/Contents 146 0 R +>> +endobj +148 0 obj +<< +/Type /Page +/Parent 120 0 R +/Resources 150 0 R +/Contents 149 0 R +>> +endobj +151 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 153 0 R +/Contents 152 0 R +>> +endobj +157 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 159 0 R +/Contents 158 0 R +>> +endobj +162 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 164 0 R +/Contents 163 0 R +>> +endobj +165 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 167 0 R +/Contents 166 0 R +>> +endobj +168 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 170 0 R +/Contents 169 0 R +>> +endobj +172 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 174 0 R +/Contents 173 0 R +>> +endobj +177 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 179 0 R +/Contents 178 0 R +>> +endobj +180 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 182 0 R +/Contents 181 0 R +>> +endobj +184 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 186 0 R +/Contents 185 0 R +>> +endobj +188 0 obj +<< +/Type /Page +/Parent 156 0 R +/Resources 190 0 R +/Contents 189 0 R +>> +endobj +191 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 193 0 R +/Contents 192 0 R +>> +endobj +195 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 197 0 R +/Contents 196 0 R +>> +endobj +198 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 200 0 R +/Contents 199 0 R +>> +endobj +201 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 203 0 R +/Contents 202 0 R +>> +endobj +204 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 206 0 R +/Contents 205 0 R +>> +endobj +207 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 209 0 R +/Contents 208 0 R +>> +endobj +210 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 212 0 R +/Contents 211 0 R +>> +endobj +213 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 215 0 R +/Contents 214 0 R +>> +endobj +216 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 218 0 R +/Contents 217 0 R +>> +endobj +219 0 obj +<< +/Type /Page +/Parent 194 0 R +/Resources 221 0 R +/Contents 220 0 R +>> +endobj +222 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 224 0 R +/Contents 223 0 R +>> +endobj +226 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 228 0 R +/Contents 227 0 R +>> +endobj +229 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 231 0 R +/Contents 230 0 R +>> +endobj +233 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 235 0 R +/Contents 234 0 R +>> +endobj +236 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 238 0 R +/Contents 237 0 R +>> +endobj +239 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 241 0 R +/Contents 240 0 R +>> +endobj +243 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 245 0 R +/Contents 244 0 R +>> +endobj +246 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 248 0 R +/Contents 247 0 R +>> +endobj +249 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 251 0 R +/Contents 250 0 R +>> +endobj +252 0 obj +<< +/Type /Page +/Parent 225 0 R +/Resources 254 0 R +/Contents 253 0 R +>> +endobj +256 0 obj +<< +/Type /Page +/Parent 259 0 R +/Resources 258 0 R +/Contents 257 0 R +>> +endobj +277 0 obj +<< +/S /D +>> +endobj +278 0 obj +<< +/Nums [0 277 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 23 0 R 27 0 R 30 0 R 33 0 R 36 0 R 40 0 R 45 0 R 49 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +57 0 obj +<< +/Type /Pages +/Kids [53 0 R 58 0 R 61 0 R 64 0 R 67 0 R 70 0 R 73 0 R 77 0 R 80 0 R 83 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +89 0 obj +<< +/Type /Pages +/Kids [86 0 R 90 0 R 93 0 R 96 0 R 99 0 R 102 0 R 105 0 R 108 0 R 111 0 R 114 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +120 0 obj +<< +/Type /Pages +/Kids [117 0 R 121 0 R 124 0 R 127 0 R 130 0 R 133 0 R 136 0 R 140 0 R 145 0 R 148 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +156 0 obj +<< +/Type /Pages +/Kids [151 0 R 157 0 R 162 0 R 165 0 R 168 0 R 172 0 R 177 0 R 180 0 R 184 0 R 188 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +194 0 obj +<< +/Type /Pages +/Kids [191 0 R 195 0 R 198 0 R 201 0 R 204 0 R 207 0 R 210 0 R 213 0 R 216 0 R 219 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +225 0 obj +<< +/Type /Pages +/Kids [222 0 R 226 0 R 229 0 R 233 0 R 236 0 R 239 0 R 243 0 R 246 0 R 249 0 R 252 0 R] +/Count 10 +/Parent 56 0 R +>> +endobj +259 0 obj +<< +/Type /Pages +/Kids [256 0 R] +/Count 1 +/Parent 56 0 R +>> +endobj +56 0 obj +<< +/Type /Pages +/Kids [13 0 R 57 0 R 89 0 R 120 0 R 156 0 R 194 0 R 225 0 R 259 0 R ] +/Count 71 +/MediaBox [0 0 612 792] +>> +endobj +279 0 obj +<< +/CreationDate (D:20210202102720-06'00') +/ModDate (D:20210202102720-06'00') +/Producer (Apple pstopdf) +>> +endobj +280 0 obj +<< +/Type /Catalog +/Pages 56 0 R +/PageLabels 278 0 R +>> +endobj +xref +0 281 +0000000000 65535 f +0000499770 00000 n +0000000016 00000 n +0000004468 00000 n +0000493850 00000 n +0000495104 00000 n +0000495316 00000 n +0000495769 00000 n +0000496082 00000 n +0000496867 00000 n +0000497427 00000 n +0000497850 00000 n +0000470761 00000 n +0000505983 00000 n +0000499851 00000 n +0000004645 00000 n +0000008849 00000 n +0000494025 00000 n +0000494564 00000 n +0000438934 00000 n +0000445538 00000 n +0000451882 00000 n +0000452025 00000 n +0000499935 00000 n +0000009109 00000 n +0000012914 00000 n +0000455192 00000 n +0000500019 00000 n +0000013093 00000 n +0000018277 00000 n +0000500103 00000 n +0000018421 00000 n +0000022924 00000 n +0000500187 00000 n +0000023068 00000 n +0000028959 00000 n +0000500271 00000 n +0000029138 00000 n +0000035625 00000 n +0000456433 00000 n +0000500355 00000 n +0000035838 00000 n +0000041389 00000 n +0000456603 00000 n +0000456767 00000 n +0000500439 00000 n +0000041603 00000 n +0000048668 00000 n +0000456935 00000 n +0000500523 00000 n +0000048847 00000 n +0000054767 00000 n +0000457107 00000 n +0000500607 00000 n +0000054981 00000 n +0000061757 00000 n +0000507073 00000 n +0000506120 00000 n +0000500691 00000 n +0000061935 00000 n +0000070870 00000 n +0000500775 00000 n +0000071059 00000 n +0000078936 00000 n +0000500859 00000 n +0000079125 00000 n +0000088768 00000 n +0000500943 00000 n +0000088946 00000 n +0000096380 00000 n +0000501027 00000 n +0000096547 00000 n +0000105280 00000 n +0000501111 00000 n +0000105458 00000 n +0000112306 00000 n +0000498351 00000 n +0000501195 00000 n +0000112497 00000 n +0000120768 00000 n +0000501279 00000 n +0000120946 00000 n +0000128611 00000 n +0000501363 00000 n +0000128778 00000 n +0000135858 00000 n +0000501447 00000 n +0000136002 00000 n +0000141521 00000 n +0000506258 00000 n +0000501531 00000 n +0000141689 00000 n +0000150089 00000 n +0000501615 00000 n +0000150270 00000 n +0000156653 00000 n +0000501699 00000 n +0000156821 00000 n +0000164331 00000 n +0000501783 00000 n +0000164509 00000 n +0000173190 00000 n +0000501869 00000 n +0000173358 00000 n +0000179388 00000 n +0000501956 00000 n +0000179533 00000 n +0000185718 00000 n +0000502043 00000 n +0000185874 00000 n +0000192300 00000 n +0000502130 00000 n +0000192479 00000 n +0000199762 00000 n +0000502217 00000 n +0000199952 00000 n +0000206875 00000 n +0000502304 00000 n +0000207100 00000 n +0000215932 00000 n +0000506401 00000 n +0000502392 00000 n +0000216100 00000 n +0000221985 00000 n +0000502480 00000 n +0000222164 00000 n +0000227508 00000 n +0000502568 00000 n +0000227696 00000 n +0000231980 00000 n +0000502656 00000 n +0000232146 00000 n +0000237035 00000 n +0000502744 00000 n +0000237238 00000 n +0000246999 00000 n +0000502832 00000 n +0000247167 00000 n +0000252301 00000 n +0000457279 00000 n +0000502920 00000 n +0000252520 00000 n +0000258741 00000 n +0000457577 00000 n +0000457733 00000 n +0000503008 00000 n +0000258937 00000 n +0000263728 00000 n +0000503096 00000 n +0000263873 00000 n +0000270717 00000 n +0000503184 00000 n +0000270896 00000 n +0000275653 00000 n +0000458475 00000 n +0000458721 00000 n +0000506550 00000 n +0000503272 00000 n +0000275896 00000 n +0000280821 00000 n +0000498701 00000 n +0000459003 00000 n +0000503360 00000 n +0000281039 00000 n +0000285448 00000 n +0000503448 00000 n +0000285591 00000 n +0000289534 00000 n +0000503536 00000 n +0000289666 00000 n +0000292263 00000 n +0000459517 00000 n +0000503624 00000 n +0000292432 00000 n +0000295017 00000 n +0000461311 00000 n +0000463934 00000 n +0000503712 00000 n +0000295200 00000 n +0000300085 00000 n +0000503800 00000 n +0000300217 00000 n +0000305243 00000 n +0000467501 00000 n +0000503888 00000 n +0000305412 00000 n +0000311270 00000 n +0000498893 00000 n +0000503976 00000 n +0000311427 00000 n +0000315734 00000 n +0000504064 00000 n +0000315877 00000 n +0000320183 00000 n +0000506699 00000 n +0000504152 00000 n +0000320326 00000 n +0000326314 00000 n +0000504240 00000 n +0000326457 00000 n +0000331088 00000 n +0000504328 00000 n +0000331231 00000 n +0000336961 00000 n +0000504416 00000 n +0000337106 00000 n +0000342927 00000 n +0000504504 00000 n +0000343072 00000 n +0000349025 00000 n +0000504592 00000 n +0000349170 00000 n +0000354423 00000 n +0000504680 00000 n +0000354579 00000 n +0000359899 00000 n +0000504768 00000 n +0000360082 00000 n +0000366416 00000 n +0000504856 00000 n +0000366599 00000 n +0000372738 00000 n +0000504944 00000 n +0000372921 00000 n +0000379610 00000 n +0000506848 00000 n +0000505032 00000 n +0000379793 00000 n +0000386127 00000 n +0000505120 00000 n +0000386320 00000 n +0000391520 00000 n +0000467923 00000 n +0000505208 00000 n +0000391736 00000 n +0000398914 00000 n +0000505296 00000 n +0000399093 00000 n +0000407355 00000 n +0000505384 00000 n +0000407534 00000 n +0000412167 00000 n +0000469192 00000 n +0000505472 00000 n +0000412373 00000 n +0000418375 00000 n +0000505560 00000 n +0000418554 00000 n +0000425342 00000 n +0000505648 00000 n +0000425474 00000 n +0000430235 00000 n +0000505736 00000 n +0000430402 00000 n +0000437364 00000 n +0000499305 00000 n +0000505824 00000 n +0000437523 00000 n +0000438802 00000 n +0000506997 00000 n +0000470902 00000 n +0000471100 00000 n +0000471307 00000 n +0000471503 00000 n +0000471704 00000 n +0000471896 00000 n +0000472099 00000 n +0000472301 00000 n +0000472493 00000 n +0000492601 00000 n +0000492807 00000 n +0000493011 00000 n +0000493217 00000 n +0000493430 00000 n +0000493639 00000 n +0000498496 00000 n +0000499477 00000 n +0000505912 00000 n +0000505941 00000 n +0000507212 00000 n +0000507336 00000 n +trailer +<< +/Size 281 +/Root 280 0 R +/Info 279 0 R +/ID [<1a11e572aa7e28215b7cf1fd1db4c34e><1a11e572aa7e28215b7cf1fd1db4c34e>] +>> +startxref +507408 +%%EOF diff --git a/docs/medley-irm/28-HARDCOPY.TEDIT b/docs/medley-irm/28-HARDCOPY.TEDIT new file mode 100644 index 00000000..06d7b7ca --- /dev/null +++ b/docs/medley-irm/28-HARDCOPY.TEDIT @@ -0,0 +1,27 @@ +INTERLISP-D REFERENCE MANUAL HARDCOPY FACILITIES "29"28. HARDCOPY FACILITIES 2 Interlisp-D includes facilities for generating hardcopy in "Interpress" format and "Press" format. Interpress is a file format used for communicating documents to Xerox Network System printers such as the Xerox 8044 and Xerox 5700. Press is a file format used for communicating documents to Xerox laser Xerographic printers known by the names "Dover", "Spruce", "Penguin", and "Raven". There are also library packages available for supporting other types of printer formats (4045, FX-80, C150, etc.). The hardcopy facilities are designed to allow the user to support new types of printers with minimal changes to the user interface. Files can be in a number of formats, including Interpress files, plain text files, and formatted Tedit files. In order to print a file on a given printer, it is necessary to identify the format of the file, convert the file to a format that the printer can accept, and transmit it. Rather than require that the user explicitly determine file types and do the conversion, the Interlisp-D hardcopy functions generate Interpress or other format output depending on the appropriate choice for the designated printer. The hardcopy functions use the variables PRINTERTYPES and PRINTFILETYPES (described below) to determine the type of a file, how to convert it for a given printer, and how to send it. By changing these variables, the user can define other kinds of printers and print to them using the normal hardcopy functions. (SEND.FILE.TO.PRINTER(SEND.FILE.TO.PRINTER (Function) NIL NIL ("29") 1) FILE HOST PRINTOPTIONS) [Function] The function SEND.FILE.TO.PRINTER causes the file FILE to be sent to the printer HOST. If HOST is NIL, the first host in the list DEFAULTPRINTINGHOST which can print FILE is used. PRINTOPTIONS is a property list of the form (PROP1 VALUE1 PROP2 VALUE2 ...). The properties accepted depends on the type of printer. For Interpress printers, the following properties are accepted: DOCUMENT.NAME The document name to appear on the header page (a string). Default is the full name of the file. DOCUMENT.CREATION.DATE The creation date to appear on the header page (a Lisp integer date, such as returned by IDATE). The default value is the creation date of the file. SENDER.NAME The name of the sender to appear on the header page (a string). The default value is the name of the user. RECIPIENT.NAME The name of the recipient to appear on the header page (a string). The default is none. MESSAGE An additional message to appear on the header page (a string). The default is none. #COPIES The number of copies to be printed. The default value is 1. PAGES.TO.PRINT The pages of the document that should be printed, represented as a list (FIRSTPAGE# LASTPAGE#). For example, if this option is (3 5), this specifies that pages 3 through 5, inclusive, should be printed. Note that the page numbering used for this purpose has no connection to any page numbers that may be printed on the document. The default is to print all of the pages in the document. MEDIUM The medium on which the master is to be printed. If omitted, this defaults to the value of NSPRINT.DEFAULT.MEDIUM, as follows: NIL means to use the printer's default; T means to use the first medium reported available by the printer; any other value must be a Courier value of type MEDIUM. The format of this type is a list (PAPER (KNOWN.SIZE TYPE)) or (PAPER (OTHER.SIZE (WIDTH LENGTH))). The paper TYPE is one of US.LETTER, US.LEGAL, A0 through A10, ISO.B0 through ISO.B10, and JIS.B0 through JIS.B10. For users who use A4 paper exclusively, it should be sufficient to set NSPRINT.DEFAULT.MEDIUM to (PAPER (KNOWN.SIZE "A4")). When using different paper sizes, it may be necessary to reset the variable DEFAULTPAGEREGION, the region on the page used for printing (measured in micas from the lower-left corner). STAPLE? True if the document should be stapled. #SIDES 1 or 2 to indicate that the document should be printed on one or two sides, respectively. The default is the value of EMPRESS#SIDES. PRIORITY The priority of this print request, one of LOW, NORMAL, or HIGH. The default is the printer's default. Note: Press printers only recognize the options #COPIES, #SIDES, DOCUMENT.CREATION.DATE, and DOCUMENT.NAME. For example, (SEND.FILE.TO.PRINTER 'FOO NIL '(#COPIES 3 #SIDES 2 DOCUMENT.NAME "For John")) SEND.FILE.TO.PRINTER calls PRINTERTYPE and PRINTFILETYPE to determine the printer type of HOST and the file format of FILE. If FILE is a formatted file already in a form that the printer can print, it is transmitted directly. Otherwise, CONVERT.FILE.TO.TYPE.FOR.PRINTER is called to do the conversion. [Note: If the file is converted, PRINTOPTIONS is passed to the formatting function, so it can include properties such as HEADING, REGION, and FONTS.] All of these functions use the lists PRINTERTYPES and PRINTFILETYPES to actually determine how to do the conversion. LISTFILES (Chapter 17) calls the function LISTFILES1 to send a single file to a hardcopy printing device. Interlisp-D is initialized with LISTFILES1 defined to call SEND.FILE.TO.PRINTER. (HARDCOPYW(HARDCOPYW (Function) NIL NIL ("29") 2) WINDOW/BITMAP/REGION FILE HOST SCALEFACTOR ROTATION PRINTERTYPE HARDCOPYTITLE) [Function] Creates a hardcopy file from a bitmap and optionally sends it to a printer. Note that some printers may have limitations concerning how big or how "complicated" the bitmap may be printed. WINDOW/BITMAP/REGION can either be a WINDOW (open or closed), a BITMAP, or a REGION (interpreted as a region of the screen). If WINDOW/BITMAP/REGION is NIL, the user is prompted for a screen region using GETREGION. If FILE is non-NIL, it is used as the name of the file for output. If HOST = NIL, this file is not printed. If FILE is NIL, a temporary file is created, and sent to HOST. To save an image on a file without printing it, perform (HARDCOPYW IMAGE FILE). To print an image to the printer PRINTER without saving the file, perform (HARDCOPYW IMAGE NIL PRINTER). If both FILE and HOST are NIL, the default action is to print the image, without saving the file. The printer used is determined by the argument PRINTERTYPE and the value of the variable DEFAULTPRINTINGHOST. If PRINTERTYPE is non-NIL, the first host on DEFAULTPRINTINGHOST of the type PRINTERTYPE is used. If PRINTERTYPE is NIL, the first printer on DEFAULTPRINTINGHOST that implements the BITMAPSCALE (as determined by PRINTERTYPES) operation is used, if any. Otherwise, the first printer on DEFAULTPRINTINGHOST is used. The type of hardcopy file produced is determined by HOST if non-NIL, else by PRINTERTYPE if non-NIL, else by the value of DEFAULTPRINTINGHOST, as described above. SCALEFACTOR is a reduction factor. If not given, it is computed automatically based on the size of the bitmap and the capabilities of the printer type. This may not be supported for some printers. ROTATION specifies how the bitmap image should be rotated on the printed page. Most printers (including Interpress printers) only support a ROTATION of multiples of 90. PRINTERTYPE specifies what type of printer to use when HOST is NIL. HARDCOPYW uses this information to select which printer to use or what print file format to convert the output into, as described above. The background menu contains a "Hardcopy" command (Chapter 28) that prompts the user for a region on the screen, and sends the image to the default printer. Hardcopy output may also be obtained by writing a file on the printer device LPT, e.g. (COPYFILE 'FOO '{LPT}). When a file on this device is closed, it is converted to Interpress or some other format (if necessary) and sent to the default printer (the first host on DEFAULTPRINTINGHOST). One can include the printer name directly in the file name, e.g. (COPYFILE 'FOO {LPT}TREMOR:) will send the file to the printer TREMOR:. HARDCOPYTITLE is a string specifying a title to print on the page containing the screen image. If NIL, the string "Window Image" is used. To omit a title, specify the null string. (PRINTERSTATUS(PRINTERSTATUS (Function) NIL NIL ("29") 3) PRINTER) [Function] Returns a list describing the current status of the printer named PRINTER. The exact form of the value returned depends on the type of printer. For InterPress printers, the status describes whether the printer is available or busy or needs attention, and what type of paper is loaded in the printer. Returns NIL if the printer does not respond in a reasonable time, which can occur if the printer is very busy, or does not implement the printer status service. DEFAULTPRINTINGHOST (DEFAULTPRINTINGHOST% (Variable) NIL NIL ("29") 3) [Variable] The variable DEFAULTPRINTINGHOST is used to designate the default printer to be used as the output of printing operations. It should be a list of the known printer host names, for example, (QUAKE LISPPRINT:). If an element of DEFAULTPRINTINGHOST is a list, is interpreted as (PRINTERTYPE HOST), specifying both the host type and the host name. The type of the printer, which determines the protocol used to send to it and the file format it requires, is determined by the function PRINTERTYPE. If DEFAULTPRINTINGHOST is a single printer name, it is treated as if it were a list of one element. (PRINTFILETYPE(PRINTFILETYPE (Function) NIL NIL ("29") 4) FILE %) [Function] Returns the format of the file FILE. Possible values include INTERPRESS, TEDIT, etc. If it cannot determine the file type, it returns NIL. Uses the global variable PRINTFILETYPES. (PRINTERTYPE(PRINTERTYPE (Function) NIL NIL ("29") 4) HOST) [Function] Returns the type of the printer HOST. Currently uses the following heuristic: 1. If HOST is a list, the CAR is assumed to be the printer type and CADR the name of the printer 2. If HOST is a litatom with a non-NIL PRINTERTYPE property, the property value is returned as the printer type 3. If HOST contains a colon (e.g., PRINTER:PARC:XEROX) it is assumed to be an INTERPRESS printer 4. If HOST is the CADR of a list on DEFAULTPRINTINGHOST, the CAR is returned as the printer type 5. Otherwise, the value of DEFAULTPRINTERTYPE is returned as the printer type. Low-level Hardcopy Variables 1 The following variables are used to define how Interlisp should generate hardcopy of different types. The user should only need to change these variables when it is necessary to access a new type of printer, or define a new hardcopy document type (not often). PRINTERTYPES(PRINTERTYPES (Variable) NIL NIL ("29") 4) [Variable] The characteristics of a given printer are determined by the value of the list PRINTERTYPES. Each element is a list of the form (TYPES (PROPERTY1 VALUE1) (PROPERTY2 VALUE2) ...) TYPES is a list of the printer types that this entry addresses. The (PROPERTYn VALUEn) pairs define properties associated with each printer type. The printer properties include the following: CANPRINT Value is a list of the file types that the printer can print directly. STATUS Value is a function that knows how to find out the status of the printer, used by PRINTERSTATUS. PROPERTIES Value is a function which returns a list of known printer properties. SEND Value is a function which invokes the appropriate protocol to send a file to the printer. BITMAPSCALE Value is a function of arguments WIDTH and HEIGHT in bits which returns a scale factor for scaling a bitmap. BITMAPFILE Value is a form which, when evaluated, converts a bitmap to a file format that the printer will accept. Note: The name 8044 is defined on PRINTERTYPES as a synonym for the INTERPRESS printer type. The names SPRUCE, PENGUIN, and DOVER are defined on PRINTERTYPES as synonyms for the PRESS printer type. The printer types FULLPRESS and RAVEN are also defined the same as PRESS, except that these printer types indicate that the printer is a "Full Press" printer that is able to scale bitmap images, in addition to the normal Press printer facilities. PRINTFILETYPES(PRINTFILETYPES (Variable) NIL NIL ("29") 5) [Variable] The variable PRINTFILETYPES contains information about various file formats, such as Tedit files and Interpress files. The format is similar to PRINTERTYPES. The properties that can be specified include: TEST Value is a function which tests a file if it is of the given type. Note that this function is passed an open stream. CONVERSION Value is a property list of other file types and funcitons that convert from the specified type to the file format. EXTENSION Value is a list of possible file extensions for files of this type. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "28-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "28-" "")) (192 24 288 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "28-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "28-" "")) (102 24 288 36) NIL) (HEADING NIL (HEADINGTYPE LEFTBACK) (96 612 516 36) NIL) (TEXT NIL NIL (102 36 456 540) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "28-" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 9 FAMILY TIMESROMAN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "28-" "")) (192 24 288 36) NIL) (HEADING NIL (HEADINGTYPE RIGHTPAGE) (408 612 204 36) NIL) (TEXT NIL NIL (54 36 408 540) NIL)))))F PAGEHEADING RIGHTPAGE;xllxx,xx2l~~2`~~,HH/HH206 +,@ PAGEHEADINGLEFTBACKT-T3(T,2 PALATINO TITAN TITAN TITAN TITAN +CLASSIC +MODERN +MODERNMODERN + +   IM.CHAP.GETFNMODERN +  HRULE.GETFNMODERN +  } - 2IM.INDEX.GETFNMODERN +  +  | b Y8  l  X  S  =  H(  \%r%@      JN[  ( x   +)0  4  "k D L) 1 ! +W + 'IM.INDEX.GETFNMODERN +? .1 5 +8Nu       > +@ +   , ME# UO +IM.INDEX.GETFNMODERN +B 3IM.INDEX.GETFN   M+IM.INDEX.GETFNMODERN +  +X )IM.INDEX.GETFNTITAN + +' > + !"   HRULE.GETFNMODERN +   *IM.INDEX.GETFNMODERN +O & @ <.FR  +FZ !< +h#  + " ,IM.INDEX.GETFNMODERN + v 1 v t D1=z \ No newline at end of file diff --git a/docs/medley-irm/28-HARDCOPY.pdf b/docs/medley-irm/28-HARDCOPY.pdf new file mode 100644 index 00000000..c62a7f87 --- /dev/null +++ b/docs/medley-irm/28-HARDCOPY.pdf @@ -0,0 +1,2396 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 5593 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(28-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(28. HARDCOPY FACILITIES)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +534.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 533.9999 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.2778 Tw +(Interlisp-D includes facilities for generating hardcopy in "Interpress" format and "Press" format.)Tj +0 -1.2222 TD +0.0278 Tw +(Interpress is a file format used for communicating documents to Xerox Network System printers such)Tj +T* +0.0422 Tw +[(as the Xerox 8044 and Xerox 5700. Press is a file format used for communicating documents to Xerox)]TJ +T* +0.0322 Tw +[(laser Xerographic printers known by the names "Dover", "Spruce", "Penguin", and "Raven". There are)]TJ +T* +0.0611 Tw +(also library packages available for supporting other types of printer formats \(4045, FX-80, C150, etc.\).)Tj +T* +0.0589 Tw +(The hardcopy facilities are designed to allow the user to support new types of printers with minimal)Tj +T* +0 Tw +(changes to the user interface.)Tj +0 -2.8889 TD +0.1356 Tw +(Files can be in a number of formats, including Interpress files, plain text files, and formatted Tedit)Tj +0 -1.2222 TD +0.0211 Tw +[(files. In order to print a file on a given printer, it is necessary to identify the format of the file, convert)]TJ +T* +0.17 Tw +[(the file to a format that the printer can accept, and transmit it. Rather than require that the user)]TJ +T* +0.1844 Tw +(explicitly determine file types and do the conversion, the Interlisp-D hardcopy functions generate)Tj +T* +0.0022 Tw +(Interpress or other format output depending on the appropriate choice for the designated printer. The)Tj +0 -1.2278 TD +0.0011 Tw +(hardcopy functions use the variables )Tj +/TT10 1 Tf +10 0 0 10 226.6115 387.49 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 298.6232 387.49 Tm +0.0002 Tc +0.0009 Tw +( and )Tj +/TT10 1 Tf +10 0 0 10 318.3791 387.49 Tm +0 Tc +0 Tw +(PRINTFILETYPES)Tj +/TT8 1 Tf +9 0 0 9 402.3927 387.49 Tm +0.0001 Tc +0.001 Tw +( \(described below\) to)Tj +-36.0436 -1.3278 TD +0 Tc +0.0989 Tw +[(determine the type of a file, how to convert it for a given printer, and how to send it. By changing)]TJ +0 -1.2222 TD +0.2478 Tw +(these variables, the user can define other kinds of printers and print to them using the normal)Tj +T* +0 Tw +(hardcopy functions.)Tj +/TT10 1 Tf +10 0 0 10 102 331.2 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 331.2 Tm +(SEND.FILE.TO.PRINTER)Tj +/TT4 1 Tf +10 0 0 10 216 331.2 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 218.7783 331.2 Tm +(FILE HOST PRINTOPTIONS)Tj +/TT10 1 Tf +10 0 0 10 337.5977 331.2 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 343.5986 331.2 Tm +[( )-10725.7([Function])]TJ +-24.1776 -1.8889 TD +0.0989 Tw +(The function )Tj +/TT10 1 Tf +10 0 0 10 180.7077 314.2 Tm +0 Tw +(SEND.FILE.TO.PRINTER)Tj +/TT8 1 Tf +9 0 0 9 300.7272 314.2 Tm +0.0989 Tw +[( causes the file )]TJ +/TT14 1 Tf +7.0503 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +[( to be sent to the printer)]TJ +/TT14 1 Tf +-28.8649 -1.3333 TD +0 Tw +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +0.1611 Tw +[(. If )]TJ +/TT14 1 Tf +2.1533 0 TD +0 Tw +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +0.1611 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 202.4199 302.2 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 220.4228 302.2 Tm +0.1611 Tw +(, the first host in the list )Tj +/TT10 1 Tf +10 0 0 10 326.211 302.2 Tm +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 440.2296 302.2 Tm +0.1611 Tw +[( which can)]TJ +-34.9144 -1.3278 TD +0 Tw +(print )Tj +/TT14 1 Tf +2.4453 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( is used.)Tj +/TT14 1 Tf +-4.8457 -2.0722 TD +(PRINTOPTIONS)Tj +/TT8 1 Tf +7.2012 0 TD +0.1789 Tw +[( is a property list of the form )]TJ +/TT10 1 Tf +10 0 0 10 319.5128 271.6 Tm +0 Tw +(\(PROP)Tj +9 0 0 9 349.51 268.6 Tm +(1)Tj +10 0 0 10 354.91 271.6 Tm +0.43 Tw +[( VALUE)]TJ +9 0 0 9 395.21 268.6 Tm +0 Tw +(1)Tj +10 0 0 10 400.61 271.6 Tm +0.43 Tw +[( PROP)]TJ +9 0 0 9 434.91 268.6 Tm +0 Tw +(2)Tj +10 0 0 10 440.31 271.6 Tm +0.43 Tw +[( VALUE)]TJ +9 0 0 9 480.61 268.6 Tm +0 Tw +(2)Tj +10 0 0 10 126 256.95 Tm +(...\))Tj +/TT8 1 Tf +9 0 0 9 150.0039 256.95 Tm +0.0956 Tw +[(. The properties accepted depends on the type of printer. For Interpress printers,)]TJ +-2.6671 -1.3278 TD +0 Tw +(the following properties are accepted:)Tj +/TT10 1 Tf +10 0 0 10 84 225.66 Tm +(DOCUMENT.NAME)Tj +/TT8 1 Tf +9 0 0 9 180 225.66 Tm +0.0389 Tw +[(The document name to appear on the header page \(a string\). Default is)]TJ +-0.6667 -1.3278 TD +0 Tw +(the full name of the file.)Tj +/TT10 1 Tf +10 0 0 10 54.03 194.37 Tm +(DOCUMENT.CREATION.DATE)Tj +/TT8 1 Tf +9 0 0 9 198 194.37 Tm +0.0144 Tw +(The creation date to appear on the header page \(a Lisp integer date,)Tj +-2.6667 -1.3333 TD +0.0133 Tw +(such as returned by )Tj +/TT10 1 Tf +10 0 0 10 255.0845 182.37 Tm +0 Tw +(IDATE)Tj +/TT8 1 Tf +9 0 0 9 285.0894 182.37 Tm +0.0133 Tw +[(\). The default value is the creation date of the)]TJ +-12.3433 -1.3278 TD +0 Tw +(file.)Tj +/TT10 1 Tf +10 0 0 10 96 151.08 Tm +(SENDER.NAME)Tj +/TT8 1 Tf +9 0 0 9 174 151.08 Tm +0.1789 Tw +[(The name of the sender to appear on the header page \(a string\). The)]TJ +T* +0 Tw +(default value is the name of the user.)Tj +/TT10 1 Tf +10 0 0 10 78 119.79 Tm +(RECIPIENT.NAME)Tj +/TT8 1 Tf +9 0 0 9 174 119.79 Tm +0.1133 Tw +[(The name of the recipient to appear on the header page \(a string\). The)]TJ +T* +0 Tw +(default is none.)Tj +/TT10 1 Tf +10 0 0 10 120 88.5 Tm +(MESSAGE)Tj +/TT8 1 Tf +9 0 0 9 174 88.5 Tm +0.2256 Tw +[(An additional message to appear on the header page \(a string\). The)]TJ +0 -1.47 TD +0 Tw +(default is none)Tj +/F1 1 Tf +10 0 0 10 232.9219 75.27 Tm +(.)Tj +/TT10 1 Tf +-11.2922 -1.934 TD +(#COPIES)Tj +/TT8 1 Tf +9 0 0 9 174 55.93 Tm +(The number of copies to be printed. The default value is 1.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +15 0 obj +<< +/Length 7364 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(28-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT10 1 Tf +3 -4.38 TD +(PAGES.TO.PRINT)Tj +/TT8 1 Tf +9 0 0 9 222 568.2 Tm +0.11 Tw +(The pages of the document that should be printed, represented as a list)Tj +/TT10 1 Tf +10 0 0 10 222 556.2 Tm +0.068 Tw +(\(FIRSTPAGE# LASTPAGE#\))Tj +/TT8 1 Tf +9 0 0 9 354.7014 556.2 Tm +0.0289 Tw +[(. For example, if this option is \(3 5\), this)]TJ +-14.7446 -1.3278 TD +0.0833 Tw +[(specifies that pages 3 through 5, inclusive, should be printed. Note that)]TJ +0 -1.2222 TD +0.0378 Tw +(the page numbering used for this purpose has no connection to any page)Tj +T* +0.0233 Tw +[(numbers that may be printed on the document. The default is to print all)]TJ +T* +0 Tw +(of the pages in the document.)Tj +/TT10 1 Tf +10 0 0 10 174 491.91 Tm +(MEDIUM)Tj +/TT8 1 Tf +9 0 0 9 222 491.91 Tm +0.2756 Tw +[(The medium on which the master is to be printed. If omitted, this)]TJ +0 -1.3333 TD +0.3456 Tw +(defaults to the value of )Tj +/TT10 1 Tf +10 0 0 10 331.0876 479.91 Tm +0 Tw +(NSPRINT.DEFAULT.MEDIUM)Tj +/TT8 1 Tf +9 0 0 9 463.1091 479.91 Tm +0.3456 Tw +(, as follows:)Tj +/TT10 1 Tf +10 0 0 10 222 467.91 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 240.0029 467.91 Tm +0.0611 Tw +[( means to use the printers default; )]TJ +/TT10 1 Tf +10 0 0 10 383.7748 467.91 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 389.7758 467.91 Tm +0.0611 Tw +[( means to use the first medium)]TJ +-18.6418 -1.3278 TD +0.0011 Tw +(reported available by the printer; any other value must be a Courier value)Tj +0 -1.2278 TD +0.5756 Tw +(of type )Tj +/TT10 1 Tf +10 0 0 10 262.4318 444.91 Tm +0 Tw +(MEDIUM)Tj +/TT8 1 Tf +9 0 0 9 298.4376 444.91 Tm +0.5756 Tw +[(. The format of this type is a list )]TJ +/TT10 1 Tf +10 0 0 10 479.9993 444.91 Tm +0 Tw +(\(PAPER)Tj +-25.7999 -1.2 TD +0.24 Tw +(\(KNOWN.SIZE TYPE\)\) or \(PAPER \(OTHER.SIZE \(WIDTH)Tj +T* +0 Tw +(LENGTH\)\)\))Tj +/TT8 1 Tf +9 0 0 9 276.0088 420.91 Tm +0.0633 Tw +[(. The paper )]TJ +/TT10 1 Tf +10 0 0 10 327.7888 420.91 Tm +0 Tw +(TYPE)Tj +/TT8 1 Tf +9 0 0 9 351.7927 420.91 Tm +0.0633 Tw +[( is one of )]TJ +/TT10 1 Tf +10 0 0 10 391.8788 420.91 Tm +0 Tw +(US.LETTER)Tj +/TT8 1 Tf +9 0 0 9 445.8876 420.91 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 450.9576 420.91 Tm +(US.LEGAL)Tj +/TT8 1 Tf +9 0 0 9 498.9654 420.91 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 504.0354 420.91 Tm +(A0)Tj +/TT8 1 Tf +9 0 0 9 222 408.91 Tm +(through )Tj +/TT10 1 Tf +10 0 0 10 261.863 408.91 Tm +(A10)Tj +/TT8 1 Tf +9 0 0 9 279.8659 408.91 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 289.6659 408.91 Tm +(ISO)Tj +/TT8 1 Tf +9 0 0 9 307.6688 408.91 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 309.9188 408.91 Tm +(B0)Tj +/TT8 1 Tf +9 0 0 9 321.9208 408.91 Tm +0.5889 Tw +[( through )]TJ +/TT10 1 Tf +10 0 0 10 369.3338 408.91 Tm +0 Tw +(ISO)Tj +/TT8 1 Tf +9 0 0 9 387.3367 408.91 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 389.5867 408.91 Tm +(B10)Tj +/TT8 1 Tf +9 0 0 9 407.5896 408.91 Tm +0.5889 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 440.1755 408.91 Tm +0 Tw +(JIS.B0)Tj +/TT8 1 Tf +9 0 0 9 476.1813 408.91 Tm +0.5889 Tw +[( through)]TJ +/TT10 1 Tf +10 0 0 10 222 396.91 Tm +0 Tw +(JIS.B10)Tj +/TT8 1 Tf +9 0 0 9 264.0068 396.91 Tm +0.36 Tw +[(. For users who use A4 paper exclusively, it should be)]TJ +-4.6674 -1.3333 TD +1.1344 Tw +(sufficient to set )Tj +/TT10 1 Tf +10 0 0 10 315.2433 384.91 Tm +0 Tw +(NSPRINT.DEFAULT.MEDIUM)Tj +/TT8 1 Tf +9 0 0 9 447.2647 384.91 Tm +1.1344 Tw +[( to )]TJ +/TT10 1 Tf +10 0 0 10 480.0334 384.91 Tm +0 Tw +(\(PAPER)Tj +-25.8033 -1.2 TD +(\(KNOWN.SIZE "A4"\)\))Tj +/TT8 1 Tf +9 0 0 9 330.0175 372.91 Tm +(.)Tj +-12.002 -2.1056 TD +0.3467 Tw +(When using different paper sizes, it may be necessary to reset the)Tj +0 -1.2278 TD +0 Tw +(variable )Tj +/TT10 1 Tf +10 0 0 10 260.0479 342.91 Tm +(DEFAULTPAGEREGION)Tj +/TT8 1 Tf +9 0 0 9 362.0645 342.91 Tm +0.4033 Tw +(, the region on the page used for)Tj +-15.5627 -1.3278 TD +0 Tw +(printing \(measured in micas from the lower-left corner\).)Tj +/TT10 1 Tf +10 0 0 10 168 311.62 Tm +(STAPLE?)Tj +/TT8 1 Tf +9 0 0 9 222 311.62 Tm +(True if the document should be stapled.)Tj +/TT10 1 Tf +10 0 0 10 174 291.33 Tm +(#SIDES)Tj +/TT8 1 Tf +9 0 0 9 222 291.33 Tm +0.1767 Tw +(1 or 2 to indicate that the document should be printed on one or two)Tj +0 -1.3333 TD +0 Tw +(sides, respectively. The default is the value of )Tj +/TT10 1 Tf +10 0 0 10 406.8999 279.33 Tm +(EMPRESS#SIDES)Tj +/TT8 1 Tf +9 0 0 9 484.9126 279.33 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 162 259.04 Tm +(PRIORITY)Tj +/TT8 1 Tf +9 0 0 9 222 259.04 Tm +0.1233 Tw +(The priority of this print request, one of )Tj +/TT10 1 Tf +10 0 0 10 390.8497 259.04 Tm +0 Tw +(LOW)Tj +/TT8 1 Tf +9 0 0 9 408.8527 259.04 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 414.4626 259.04 Tm +(NORMAL)Tj +/TT8 1 Tf +9 0 0 9 450.4685 259.04 Tm +0.1233 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 467.9068 259.04 Tm +0 Tw +(HIGH)Tj +/TT8 1 Tf +9 0 0 9 491.9107 259.04 Tm +0.1233 Tw +[(. The)]TJ +-29.9901 -1.3278 TD +0 Tw +(default is the printers default.)Tj +-5.3333 -2.1422 TD +1.0811 Tw +[(Note: )-236.8(Press printers only recognize the options)]TJ +/F1 1 Tf +10 0 0 10 420.8214 227.81 Tm +0 Tw +( )Tj +/TT10 1 Tf +1.48 0 TD +(#COPIES)Tj +/F1 1 Tf +4.2007 0 TD +(, )Tj +/TT10 1 Tf +1.758 0 TD +(#SIDES)Tj +/F1 1 Tf +3.6006 0 TD +(,)Tj +/TT10 1 Tf +-35.7214 -1.323 TD +(DOCUMENT.CREATION.DATE)Tj +/F1 1 Tf +13.2021 0 TD +(, and )Tj +/TT10 1 Tf +2.575 0 TD +(DOCUMENT.NAME)Tj +/F1 1 Tf +7.8013 0 TD +(.)Tj +/TT8 1 Tf +9 0 0 9 210 195.63 Tm +(For example,)Tj +/TT10 1 Tf +10 0 0 10 210 177.58 Tm +(\(SEND.FILE.TO.PRINTER FOO NIL)Tj +0 -1.9 TD +( \(#COPIES 3 #SIDES 2 DOCUMENT.NAME "For John"\)\))Tj +-3.6 -1.9 TD +(SEND.FILE.TO.PRINTER)Tj +/TT8 1 Tf +9 0 0 9 294.0195 139.58 Tm +0.0211 Tw +[( calls )]TJ +/TT10 1 Tf +10 0 0 10 316.4469 139.58 Tm +0 Tw +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 382.4576 139.58 Tm +0.0211 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 402.5735 139.58 Tm +0 Tw +(PRINTFILETYPE)Tj +/TT8 1 Tf +9 0 0 9 480.5861 139.58 Tm +0.0211 Tw +[( to determine)]TJ +-34.0651 -1.3278 TD +0.0144 Tw +(the printer type of )Tj +/TT14 1 Tf +8.3556 0 TD +0 Tw +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +0.0144 Tw +[( and the file format of )]TJ +/TT14 1 Tf +9.9226 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0144 Tw +[(. If )]TJ +/TT14 1 Tf +1.7133 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0144 Tw +[( is a formatted file already in)]TJ +-27.1927 -1.2889 TD +0.7678 Tw +[(a form that the printer can print, it is transmitted directly. Otherwise,)]TJ +/TT10 1 Tf +10 0 0 10 174 104.98 Tm +0 Tw +(CONVERT.FILE.TO.TYPE.FOR.PRINTER)Tj +/TT8 1 Tf +9 0 0 9 366.0312 104.98 Tm +0.0878 Tw +[( is called to do the conversion. [Note: If)]TJ +-21.3368 -1.3333 TD +0.2122 Tw +(the file is converted, )Tj +/TT10 1 Tf +10 0 0 10 264.1956 92.98 Tm +0 Tw +(PRINTOPTIONS)Tj +/TT8 1 Tf +9 0 0 9 336.2074 92.98 Tm +0.2122 Tw +[( is passed to the formatting function, so it can)]TJ +-18.023 -1.3333 TD +0.0756 Tw +(include properties such as )Tj +/TT10 1 Tf +10 0 0 10 283.05 80.98 Tm +0 Tw +(HEADING)Tj +/TT8 1 Tf +9 0 0 9 325.0569 80.98 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 330.2369 80.98 Tm +(REGION)Tj +/TT8 1 Tf +9 0 0 9 366.2428 80.98 Tm +0.0756 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 389.5886 80.98 Tm +0 Tw +(FONTS)Tj +/TT8 1 Tf +9 0 0 9 419.5935 80.98 Tm +0.0756 Tw +[(.] All of these functions use)]TJ +-27.2882 -1.3333 TD +0.0722 Tw +(the lists )Tj +/TT10 1 Tf +10 0 0 10 208.0876 68.98 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 280.0993 68.98 Tm +0.0722 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 301.1351 68.98 Tm +0 Tw +(PRINTFILETYPES)Tj +/TT8 1 Tf +9 0 0 9 385.1488 68.98 Tm +0.0722 Tw +[( to actually determine how to do the)]TJ +-23.461 -1.3278 TD +0 Tw +(conversion.)Tj +ET +endstream +endobj +16 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +18 0 obj +<< +/Length 8097 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(28-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( HARDCOPY FACILITIES)Tj +/TT10 1 Tf +-28.2 -4.251 TD +(LISTFILES)Tj +/TT8 1 Tf +9 0 0 9 180.0088 569.49 Tm +0.2244 Tw +[( \(Chapter 17\) calls the function )]TJ +/TT10 1 Tf +10 0 0 10 316.349 569.49 Tm +0 Tw +(LISTFILES1)Tj +/TT8 1 Tf +9 0 0 9 376.3587 569.49 Tm +0.2244 Tw +[( to send a single file to a)]TJ +-27.8176 -1.3333 TD +0.1622 Tw +[(hardcopy printing device. Interlisp-D is initialized with )]TJ +/TT10 1 Tf +10 0 0 10 362.7899 557.49 Tm +0 Tw +(LISTFILES1)Tj +/TT8 1 Tf +9 0 0 9 422.7996 557.49 Tm +0.1622 Tw +[( defined to call)]TJ +/TT10 1 Tf +10 0 0 10 126 545.49 Tm +0 Tw +(SEND.FILE.TO.PRINTER)Tj +/TT8 1 Tf +9 0 0 9 246.0195 545.49 Tm +(. )Tj +/TT10 1 Tf +10 0 0 10 102 522.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 522.26 Tm +(HARDCOPYW)Tj +/F1 1 Tf +10 0 0 10 156.6 522.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 159.38 522.26 Tm +(WINDOW/BITMAP/REGION FILE HOST SCALEFACTOR ROTATION)Tj +-5.7089 -1.1111 TD +(PRINTERTYPE)Tj +/TT10 1 Tf +10 0 0 10 167.4097 512.26 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 173.4106 512.26 Tm +(HARDCOPYTITLE)Tj +/TT10 1 Tf +10 0 0 10 243.6221 512.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 249.623 512.26 Tm +[( )-21167.4([Function])]TJ +-13.7359 -1.8833 TD +0.0111 Tw +[(Creates a hardcopy file from a bitmap and optionally sends it to a printer. Note that some)]TJ +0 -1.2222 TD +0.0733 Tw +(printers may have limitations concerning how big or how "complicated" the bitmap may)Tj +T* +0 Tw +(be printed.)Tj +/TT14 1 Tf +0 -2 TD +(WINDOW/BITMAP/REGION)Tj +/TT8 1 Tf +12.002 0 TD +0.2611 Tw +[( can either be a )]TJ +/TT14 1 Tf +8.1659 0 TD +0 Tw +(WINDOW)Tj +/TT8 1 Tf +3.6006 0 TD +0.2611 Tw +[( \(open or closed\), a )]TJ +/TT14 1 Tf +9.9149 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.2611 Tw +(, or a)Tj +/TT14 1 Tf +-37.284 -1.2944 TD +0 Tw +(REGION)Tj +/TT8 1 Tf +3.6006 0 TD +0.07 Tw +[( \(interpreted as a region of the screen\). If )]TJ +/TT14 1 Tf +19.0921 0 TD +0 Tw +(WINDOW/BITMAP/REGION)Tj +/TT8 1 Tf +12.002 0 TD +0.07 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 450.4453 443.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 468.4482 443.66 Tm +0.07 Tw +(, the)Tj +-38.0498 -1.3333 TD +0 Tw +(user is prompted for a screen region using )Tj +/TT10 1 Tf +10 0 0 10 296.4551 431.66 Tm +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 350.4638 431.66 Tm +(.)Tj +-24.9404 -2.1111 TD +(If )Tj +/TT14 1 Tf +0.941 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0211 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 185.7731 412.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 203.776 412.66 Tm +0.0211 Tw +[(, it is used as the name of the file for output. If )]TJ +/TT14 1 Tf +21.1085 0 TD +0 Tw +(HOST )Tj +/TT10 1 Tf +10 0 0 10 421.2073 412.66 Tm +0.05 Tw +(= NIL)Tj +/TT8 1 Tf +9 0 0 9 451.7122 412.66 Tm +0.0211 Tw +(, this file)Tj +-36.1903 -1.3333 TD +0 Tw +(is not printed. If )Tj +/TT14 1 Tf +7.624 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +( is )Tj +/TT10 1 Tf +10 0 0 10 227.1533 400.66 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 245.1562 400.66 Tm +(, a temporary file is created, and sent to )Tj +/TT14 1 Tf +17.6499 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-33.2899 -2.1111 TD +0.0467 Tw +(To save an image on a file without printing it, perform )Tj +/TT10 1 Tf +10 0 0 10 349.5116 381.66 Tm +0.112 Tw +(\(HARDCOPYW IMAGE FILE\))Tj +/TT8 1 Tf +9 0 0 9 483.7731 381.66 Tm +0 Tw +(.)Tj +-39.7526 -1.3278 TD +0.5922 Tw +(To print an image to the printer PRINTER without saving the file, perform)Tj +/TT10 1 Tf +10 0 0 10 126 358.66 Tm +0 Tw +(\(HARDCOPYW IMAGE NIL PRINTER\))Tj +/TT8 1 Tf +9 0 0 9 300.0283 358.66 Tm +(. )Tj +-19.3365 -2.1111 TD +0.09 Tw +(If both )Tj +/TT14 1 Tf +3.3572 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +[( and )]TJ +/TT14 1 Tf +2.3729 0 TD +0 Tw +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +0.09 Tw +[( are )]TJ +/TT10 1 Tf +10 0 0 10 239.2643 339.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 257.2672 339.66 Tm +0.09 Tw +(, the default action is to print the image, without saving)Tj +-14.5852 -1.3333 TD +0.0778 Tw +[(the file. The printer used is determined by the argument )]TJ +/TT10 1 Tf +10 0 0 10 361.5125 327.66 Tm +0 Tw +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 427.5232 327.66 Tm +0.0778 Tw +[( and the value)]TJ +-33.5026 -1.3333 TD +0.0411 Tw +(of the variable )Tj +/TT10 1 Tf +10 0 0 10 186.423 315.66 Tm +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 300.4415 315.66 Tm +0.0411 Tw +[(. If )]TJ +/TT10 1 Tf +10 0 0 10 316.5808 315.66 Tm +0 Tw +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 382.5916 315.66 Tm +0.0411 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 412.6519 315.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 430.6548 315.66 Tm +0.0411 Tw +(, the first host)Tj +-33.8505 -1.3333 TD +0 Tw +(on )Tj +/TT10 1 Tf +10 0 0 10 138.4813 303.66 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 252.4999 303.66 Tm +0.0089 Tw +[( of the type )]TJ +/TT10 1 Tf +10 0 0 10 299.8765 303.66 Tm +0 Tw +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 365.8873 303.66 Tm +0.0089 Tw +[( is used. If )]TJ +/TT10 1 Tf +10 0 0 10 411.3005 303.66 Tm +0 Tw +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 477.3112 303.66 Tm +0.0089 Tw +[( is)]TJ +-39.0346 -1.3333 TD +0 Tw +(NIL, the first printer on )Tj +/TT10 1 Tf +10 0 0 10 221.75 291.66 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 335.7685 291.66 Tm +( that implements the )Tj +/TT10 1 Tf +10 0 0 10 420.03 291.66 Tm +(BITMAPSCALE)Tj +/TT8 1 Tf +9 0 0 9 126 279.66 Tm +0.2744 Tw +(\(as determined by )Tj +/TT10 1 Tf +10 0 0 10 207.6776 279.66 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 279.6893 279.66 Tm +0.2744 Tw +[(\) operation is used, if any. Otherwise, the first)]TJ +-17.0766 -1.3333 TD +0 Tw +(printer on )Tj +/TT10 1 Tf +10 0 0 10 168.2754 267.66 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 282.2939 267.66 Tm +( is used.)Tj +-17.366 -2.1111 TD +0.3767 Tw +(The type of hardcopy file produced is determined by HOST if non-)Tj +/TT10 1 Tf +10 0 0 10 429.3877 248.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 447.3906 248.66 Tm +0.3767 Tw +(, else by)Tj +/TT10 1 Tf +10 0 0 10 126 236.66 Tm +0 Tw +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 192.0107 236.66 Tm +0.4633 Tw +[( if non-)]TJ +/TT10 1 Tf +10 0 0 10 228.8537 236.66 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 246.8566 236.66 Tm +0.4633 Tw +(, else by the value of )Tj +/TT10 1 Tf +10 0 0 10 355.0035 236.66 Tm +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 469.0221 236.66 Tm +0.4633 Tw +(, as)Tj +-38.1136 -1.3278 TD +0 Tw +(described above. )Tj +/TT14 1 Tf +0 -2 TD +(SCALEFACTOR)Tj +/TT8 1 Tf +6.6011 0 TD +0.0844 Tw +[( is a reduction factor. If not given, it is computed automatically based on)]TJ +-6.6011 -1.2889 TD +0.0411 Tw +[(the size of the bitmap and the capabilities of the printer type. This may not be supported)]TJ +0 -1.2222 TD +0 Tw +(for some printers.)Tj +/TT14 1 Tf +0 -2 TD +(ROTATION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0733 Tw +[( specifies how the bitmap image should be rotated on the printed page. Most)]TJ +-4.8008 -1.2944 TD +0 Tw +(printers \(including Interpress printers\) only support a )Tj +/TT10 1 Tf +10 0 0 10 342.5977 154.46 Tm +(ROTATION)Tj +/TT8 1 Tf +9 0 0 9 390.6055 154.46 Tm +( of multiples of 90.)Tj +/TT14 1 Tf +-29.4006 -2.1111 TD +(PRINTERTYPE)Tj +/TT8 1 Tf +6.6011 0 TD +0.1344 Tw +[( specifies what type of printer to use when )]TJ +/TT10 1 Tf +10 0 0 10 367.5106 135.46 Tm +0 Tw +(HOST)Tj +/TT8 1 Tf +9 0 0 9 391.5145 135.46 Tm +0.1344 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 404.8681 135.46 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 422.871 135.46 Tm +0.1344 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 432.041 135.46 Tm +0 Tw +(HARDCOPYW)Tj +/TT8 1 Tf +9 0 0 9 126 123.51 Tm +0.02 Tw +(uses this information to select which printer to use or what print file format to convert the)Tj +0 -1.2222 TD +0 Tw +(output into, as described above.)Tj +0 -2 TD +0.15 Tw +(The background menu contains a "Hardcopy" command \(Chapter 28\) that prompts the)Tj +0 -1.2222 TD +0 Tw +(user for a region on the screen, and sends the image to the default printer.)Tj +0 -2.0056 TD +0.1078 Tw +(Hardcopy output may also be obtained by writing a file on the printer device )Tj +/TT10 1 Tf +10 0 0 10 448.6606 65.46 Tm +0 Tw +(LPT)Tj +/TT8 1 Tf +9 0 0 9 466.6635 65.46 Tm +0.1078 Tw +(, e.g.)Tj +/TT10 1 Tf +10 0 0 10 126 53.46 Tm +0.168 Tw +(\(COPYFILE FOO {LPT}\))Tj +/TT8 1 Tf +9 0 0 9 261.3815 53.46 Tm +0.07 Tw +[(. When a file on this device is closed, it is converted to)]TJ +-15.0424 -1.3278 TD +0.02 Tw +(Interpress or some other format \(if necessary\) and sent to the default printer \(the first host)Tj +ET +endstream +endobj +19 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +21 0 obj +<< +/Length 6168 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(28-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +(on )Tj +/TT10 1 Tf +10 0 0 10 187.9013 569.49 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 301.9199 569.49 Tm +0.1667 Tw +[(\). One can include the printer name directly in the file)]TJ +-14.2133 -1.3333 TD +0.2056 Tw +(name, e.g. )Tj +/TT10 1 Tf +10 0 0 10 220.261 557.49 Tm +0.492 Tw +(\(COPYFILE FOO {LPT}TREMOR:\))Tj +/TT8 1 Tf +9 0 0 9 398.1284 557.49 Tm +0.2056 Tw +[( will send the file to the printer)]TJ +/TT10 1 Tf +10 0 0 10 174 545.49 Tm +0 Tw +(TREMOR:)Tj +/TT8 1 Tf +9 0 0 9 216.0068 545.49 Tm +(.)Tj +/TT14 1 Tf +-4.6674 -2.1056 TD +(HARDCOPYTITLE)Tj +/TT8 1 Tf +7.8013 0 TD +0.11 Tw +[( is a string specifying a title to print on the page containing the screen)]TJ +-7.8013 -1.2944 TD +0 Tw +(image. If )Tj +/TT10 1 Tf +10 0 0 10 211.1601 514.89 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 229.1631 514.89 Tm +(, the string "Window Image" is used. To omit a title, specify the null string.)Tj +/TT10 1 Tf +10 0 0 10 150 473.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 473.66 Tm +(PRINTERSTATUS)Tj +/F1 1 Tf +10 0 0 10 226.2 473.66 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.98 473.66 Tm +(PRINTER)Tj +/TT10 1 Tf +10 0 0 10 266.7861 473.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.7871 473.66 Tm +[( )-23927([Function])]TJ +-10.9763 -1.8833 TD +0.0111 Tw +(Returns a list describing the current status of the printer named )Tj +/TT14 1 Tf +28.4118 0 TD +0 Tw +(PRINTER)Tj +/TT8 1 Tf +4.2007 0 TD +0.0111 Tw +[(. The exact form)]TJ +-32.6125 -1.2889 TD +0.1022 Tw +[(of the value returned depends on the type of printer. For InterPress printers, the status)]TJ +0 -1.2222 TD +0.1433 Tw +(describes whether the printer is available or busy or needs attention, and what type of)Tj +T* +0 Tw +(paper is loaded in the printer.)Tj +0 -2.0056 TD +(Returns )Tj +/TT10 1 Tf +10 0 0 10 208.2334 405.06 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 226.2364 405.06 Tm +0.0767 Tw +[( if the printer does not respond in a reasonable time, which can occur if the)]TJ +-5.804 -1.3278 TD +0 Tw +(printer is very busy, or does not implement the printer status service.)Tj +/TT12 1 Tf +-2.6667 -2.4822 TD +(DEFAULTPRINTINGHOST)Tj +/TT6 1 Tf +10 0 0 10 252.6167 370.77 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 255.38 370.77 Tm +26.3089 Tw +[( [Variable])]TJ +-9.0422 -1.85 TD +0.1711 Tw +(The variable )Tj +/TT10 1 Tf +10 0 0 10 228.8124 354.12 Tm +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 342.8309 354.12 Tm +0.1711 Tw +[( is used to designate the default printer to be)]TJ +-18.759 -1.3278 TD +0.1167 Tw +[(used as the output of printing operations. It should be a list of the known printer host)]TJ +0 -1.2278 TD +1.0511 Tw +(names, for example, )Tj +/TT10 1 Tf +10 0 0 10 284.6456 331.12 Tm +2.522 Tw +(\(QUAKE LISPPRINT:\))Tj +/TT8 1 Tf +9 0 0 9 417.8832 331.12 Tm +1.0511 Tw +[(. If an element of)]TJ +/TT10 1 Tf +10 0 0 10 174 319.12 Tm +0 Tw +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 288.0185 319.12 Tm +0.4067 Tw +[( is a list, is interpreted as )]TJ +/TT10 1 Tf +10 0 0 10 413.9877 319.12 Tm +0.976 Tw +(\(PRINTERTYPE HOST\))Tj +/TT8 1 Tf +9 0 0 9 531.7653 319.12 Tm +0 Tw +(,)Tj +-39.7517 -1.3278 TD +0.3233 Tw +[(specifying both the host type and the host name. The type of the printer, which)]TJ +0 -1.2222 TD +0.03 Tw +(determines the protocol used to send to it and the file format it requires, is determined by)Tj +0 -1.2278 TD +0 Tw +(the function )Tj +/TT10 1 Tf +10 0 0 10 224.3481 285.12 Tm +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 290.3589 285.12 Tm +(. )Tj +-12.9288 -2.1111 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 183.1493 266.12 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 297.1678 266.12 Tm +0.0967 Tw +[( is a single printer name, it is treated as if it were a list of)]TJ +-13.6853 -1.3278 TD +0 Tw +(one element.)Tj +/TT10 1 Tf +10 0 0 10 150 231.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 231.89 Tm +(PRINTFILETYPE)Tj +/F1 1 Tf +10 0 0 10 226.2 231.89 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.98 231.89 Tm +(FILE )Tj +/TT10 1 Tf +10 0 0 10 261.3853 231.89 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 267.3862 231.89 Tm +[( )-24527.1([Function])]TJ +-10.3762 -1.8889 TD +0.0622 Tw +(Returns the format of the file )Tj +/TT14 1 Tf +13.3807 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0622 Tw +[(. Possible values include )]TJ +/TT10 1 Tf +10 0 0 10 420.2992 214.89 Tm +0 Tw +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 480.3089 214.89 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 485.3689 214.89 Tm +(TEDIT)Tj +/TT8 1 Tf +9 0 0 9 515.3738 214.89 Tm +0.0622 Tw +(, etc.)Tj +-37.9304 -1.3278 TD +0.5044 Tw +[(If it cannot determine the file type, it returns NIL. Uses the global variable)]TJ +/TT10 1 Tf +10 0 0 10 174 191.89 Tm +0 Tw +(PRINTFILETYPES)Tj +/TT8 1 Tf +9 0 0 9 258.0136 191.89 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 169.89 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 169.89 Tm +(PRINTERTYPE)Tj +/TT10 1 Tf +10 0 0 10 215.4 169.89 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 221.401 169.89 Tm +(HOST)Tj +/TT10 1 Tf +10 0 0 10 243.0045 169.89 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 249.0054 169.89 Tm +[( )-26569.4([Function])]TJ +-8.3339 -1.8833 TD +(Returns the type of the printer )Tj +/TT14 1 Tf +13.6621 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +(. Currently uses the following heuristic:)Tj +-12.0625 -2.0722 TD +[(1.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +( is a list, the )Tj +/TT10 1 Tf +10 0 0 10 306.7896 134.29 Tm +(CAR)Tj +/TT8 1 Tf +9 0 0 9 324.7925 134.29 Tm +( is assumed to be the printer type and )Tj +/TT10 1 Tf +10 0 0 10 476.9312 134.29 Tm +(CADR)Tj +/TT8 1 Tf +9 0 0 9 228 122.34 Tm +(the name of the printer)Tj +-2 -2.0056 TD +[(2.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +( is a litatom with a non-)Tj +/TT10 1 Tf +10 0 0 10 351.9697 104.29 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 369.9727 104.29 Tm +( )Tj +/TT10 1 Tf +10 0 0 10 372.2227 104.29 Tm +(PRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 438.2334 104.29 Tm +( property, the)Tj +-23.3593 -1.3278 TD +(property value is returned as the printer type)Tj +-2 -2.0056 TD +[(3.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +( contains a colon \(e.g., )Tj +/TT10 1 Tf +10 0 0 10 347.6279 74.29 Tm +(PRINTER:PARC:XEROX\))Tj +/TT8 1 Tf +9 0 0 9 461.6465 74.29 Tm +( it is)Tj +-25.9607 -1.3333 TD +(assumed to be an )Tj +/TT10 1 Tf +10 0 0 10 299.187 62.29 Tm +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 359.1967 62.29 Tm +( printer)Tj +ET +endstream +endobj +22 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 4 0 R +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +24 0 obj +<< +/Length 5491 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(28-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +( HARDCOPY FACILITIES)Tj +/TT8 1 Tf +9 0 0 9 162 569.49 Tm +[(4.)-1250(If )]TJ +/TT14 1 Tf +2.9199 0 TD +(HOST)Tj +/TT8 1 Tf +2.4004 0 TD +( is the )Tj +/TT10 1 Tf +10 0 0 10 235.5513 569.49 Tm +(CADR)Tj +/TT8 1 Tf +9 0 0 9 259.5551 569.49 Tm +( of a list on )Tj +/TT10 1 Tf +10 0 0 10 305.3549 569.49 Tm +(DEFAULTPRINTINGHOST)Tj +/TT8 1 Tf +9 0 0 9 419.3735 569.49 Tm +(, the )Tj +/TT10 1 Tf +10 0 0 10 438.6084 569.49 Tm +(CAR)Tj +/TT8 1 Tf +9 0 0 9 180 557.54 Tm +(is returned as the printer type)Tj +-2 -2.0056 TD +[(5.)-1250(Otherwise, the value of )]TJ +/TT10 1 Tf +10 0 0 10 274.9526 539.49 Tm +(DEFAULTPRINTERTYPE)Tj +/TT8 1 Tf +9 0 0 9 382.9702 539.49 Tm +( is returned as the)Tj +-22.5522 -1.3278 TD +(printer type.)Tj +/TT4 1 Tf +10 0 0 10 54 485.2 Tm +(Low-level Hardcopy Variables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 482.49 m +534.01 482.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 460.54 Tm +0.0444 Tw +(The following variables are used to define how Interlisp should generate hardcopy of different types.)Tj +0 -1.2222 TD +0.1589 Tw +(The user should only need to change these variables when it is necessary to access a new type of)Tj +T* +0 Tw +(printer, or define a new hardcopy document type \(not often\).)Tj +/TT12 1 Tf +2.6667 -2.3333 TD +(PRINTERTYPES)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.8444 TD +0.5267 Tw +(The characteristics of a given printer are determined by the value of the list)Tj +/TT10 1 Tf +10 0 0 10 126 389.89 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 198.0117 389.89 Tm +(. Each element is a list of the form)Tj +/TT10 1 Tf +10 0 0 10 174 372.89 Tm +(\(TYPES \(PROPERTY)Tj +9 0 0 9 270 369.89 Tm +(1)Tj +10 0 0 10 275.4 372.89 Tm +( VALUE)Tj +9 0 0 9 311.4 369.89 Tm +(1)Tj +10 0 0 10 316.8 372.89 Tm +(\) \(PROPERTY)Tj +9 0 0 9 382.8 369.89 Tm +(2)Tj +10 0 0 10 388.2 372.89 Tm +( VALUE)Tj +9 0 0 9 424.2 369.89 Tm +(2)Tj +10 0 0 10 429.6 372.89 Tm +(\))Tj +-25.56 -1.265 TD +(...\))Tj +-4.8 -1.7 TD +(TYPES)Tj +/TT8 1 Tf +9 0 0 9 156.0049 343.24 Tm +0.3089 Tw +[( is a list of the printer types that this entry addresses. The )]TJ +/TT10 1 Tf +10 0 0 10 426.5343 343.24 Tm +0 Tw +(\(PROPERTY)Tj +9 0 0 9 480.55 340.24 Tm +(n)Tj +10 0 0 10 126 328.59 Tm +(VALUE)Tj +9 0 0 9 156 325.59 Tm +(n)Tj +10 0 0 10 161.4 328.59 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 167.401 328.59 Tm +( pairs define properties associated with each printer type.)Tj +-4.6001 -2.4 TD +(The printer properties include the following:)Tj +/TT10 1 Tf +10 0 0 10 114 287.71 Tm +(CANPRINT)Tj +/TT8 1 Tf +9 0 0 9 174 287.71 Tm +(Value is a list of the file types that the printer can print directly.)Tj +/TT10 1 Tf +10 0 0 10 126 267.48 Tm +(STATUS)Tj +/TT8 1 Tf +9 0 0 9 174 267.48 Tm +0.0911 Tw +(Value is a function that knows how to find out the status of the printer,)Tj +0 -1.3333 TD +0 Tw +(used by )Tj +/TT10 1 Tf +10 0 0 10 207.5347 255.48 Tm +(PRINTERSTATUS)Tj +/TT8 1 Tf +9 0 0 9 285.5473 255.48 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 235.25 Tm +(PROPERTIES)Tj +/TT8 1 Tf +9 0 0 9 174 235.25 Tm +(Value is a function which returns a list of known printer properties.)Tj +/TT10 1 Tf +10 0 0 10 138 215.02 Tm +(SEND)Tj +/TT8 1 Tf +9 0 0 9 174 215.02 Tm +0.0656 Tw +(Value is a function which invokes the appropriate protocol to send a file)Tj +0 -1.3278 TD +0 Tw +(to the printer.)Tj +/TT10 1 Tf +10 0 0 10 96 183.79 Tm +(BITMAPSCALE)Tj +/TT8 1 Tf +9 0 0 9 174 183.79 Tm +0.2311 Tw +(Value is a function of arguments )Tj +/TT10 1 Tf +10 0 0 10 318.2764 183.79 Tm +0 Tw +(WIDTH)Tj +/TT8 1 Tf +9 0 0 9 348.2813 183.79 Tm +0.2311 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 372.1771 183.79 Tm +0 Tw +(HEIGHT)Tj +/TT8 1 Tf +9 0 0 9 408.183 183.79 Tm +0.2311 Tw +[( in bits which)]TJ +-26.0203 -1.3278 TD +0 Tw +(returns a scale factor for scaling a bitmap.)Tj +/TT10 1 Tf +10 0 0 10 102 152.56 Tm +(BITMAPFILE)Tj +/TT8 1 Tf +9 0 0 9 174 152.56 Tm +0.0167 Tw +(Value is a form which, when evaluated, converts a bitmap to a file format)Tj +T* +0 Tw +(that the printer will accept.)Tj +-2.6667 -2.0056 TD +0.0922 Tw +[(Note: )-559(The name 8044 is defined on )]TJ +/TT10 1 Tf +10 0 0 10 300.5957 122.56 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 372.6074 122.56 Tm +0.0922 Tw +[( as a synonym for the)]TJ +/TT10 1 Tf +10 0 0 10 180 110.56 Tm +0 Tw +(INTERPRESS)Tj +/TT8 1 Tf +9 0 0 9 240.0097 110.56 Tm +0.2478 Tw +[( printer type. The names )]TJ +/TT10 1 Tf +10 0 0 10 355.2989 110.56 Tm +0 Tw +(SPRUCE)Tj +/TT8 1 Tf +9 0 0 9 391.3048 110.56 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 398.0348 110.56 Tm +(PENGUIN)Tj +/TT8 1 Tf +9 0 0 9 440.0416 110.56 Tm +0.2478 Tw +(, and)Tj +/TT10 1 Tf +10 0 0 10 180 98.56 Tm +0 Tw +(DOVER)Tj +/TT8 1 Tf +9 0 0 9 210.0049 98.56 Tm +0.0433 Tw +[( are defined on )]TJ +/TT10 1 Tf +10 0 0 10 273.5541 98.56 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 345.5658 98.56 Tm +0.0433 Tw +[( as synonyms for the )]TJ +/TT10 1 Tf +10 0 0 10 432.0051 98.56 Tm +0 Tw +(PRESS)Tj +/TT8 1 Tf +9 0 0 9 180 86.56 Tm +0.2256 Tw +[(printer type. The printer types )]TJ +/TT10 1 Tf +10 0 0 10 317.3802 86.56 Tm +0 Tw +(FULLPRESS)Tj +/TT8 1 Tf +9 0 0 9 371.389 86.56 Tm +0.2256 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 395.1848 86.56 Tm +0 Tw +(RAVEN)Tj +/TT8 1 Tf +9 0 0 9 425.1897 86.56 Tm +0.2256 Tw +[( are also)]TJ +-27.2433 -1.3333 TD +0.1422 Tw +(defined the same as )Tj +/TT10 1 Tf +10 0 0 10 265.9618 74.56 Tm +0 Tw +(PRESS)Tj +/TT8 1 Tf +9 0 0 9 295.9667 74.56 Tm +0.1422 Tw +(, except that these printer types indicate)Tj +-12.8852 -1.3278 TD +0.1811 Tw +(that the printer is a "Full Press" printer that is able to scale bitmap)Tj +0 -1.2222 TD +0 Tw +(images, in addition to the normal Press printer facilities.)Tj +ET +endstream +endobj +25 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT4 6 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +/TT14 11 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +27 0 obj +<< +/Length 1335 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(28-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 150 569.54 Tm +(PRINTFILETYPES)Tj +/TT8 1 Tf +8.4 0 TD +[( )-29367.8([Variable])]TJ +-5.7333 -1.85 TD +0.0067 Tw +(The variable )Tj +/TT10 1 Tf +10 0 0 10 225.8524 552.89 Tm +0 Tw +(PRINTFILETYPES)Tj +/TT8 1 Tf +9 0 0 9 309.8661 552.89 Tm +0.0067 Tw +[( contains information about various file formats, such as)]TJ +-15.0962 -1.3333 TD +0.0267 Tw +[(Tedit files and Interpress files. The format is similar to )]TJ +/TT10 1 Tf +10 0 0 10 396.3182 540.89 Tm +0 Tw +(PRINTERTYPES)Tj +/TT8 1 Tf +9 0 0 9 468.3299 540.89 Tm +0.0267 Tw +[(. The properties)]TJ +-32.7033 -1.3278 TD +0 Tw +(that can be specified include:)Tj +/TT10 1 Tf +10 0 0 10 186 509.6 Tm +(TEST)Tj +/TT8 1 Tf +9 0 0 9 222 509.6 Tm +0.0867 Tw +[(Value is a function which tests a file if it is of the given type. Note that)]TJ +T* +0 Tw +(this function is passed an open stream.)Tj +/TT10 1 Tf +10 0 0 10 150 478.37 Tm +(CONVERSION)Tj +/TT8 1 Tf +9 0 0 9 222 478.37 Tm +0.0256 Tw +(Value is a property list of other file types and funcitons that convert from)Tj +T* +0 Tw +(the specified type to the file format.)Tj +/TT10 1 Tf +10 0 0 10 156 447.08 Tm +(EXTENSION)Tj +/TT8 1 Tf +9 0 0 9 222 447.08 Tm +(Value is a list of possible file extensions for files of this type.)Tj +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 5 0 R +/TT6 7 0 R +/TT8 8 0 R +/TT10 9 0 R +/TT12 10 0 R +>> +/ExtGState << +/GS1 12 0 R +>> +>> +endobj +12 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +29 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +30 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +31 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +32 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +33 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +34 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +35 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +36 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 110 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 36 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 56 +/Widths [333 0 0 0 500 500 500 500 500 500 0 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 29 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 0 +0 0 556 0 0 0 0 0 556 0 0 0 0 0 0 0 +0 722 0 722 722 667 611 0 722 278 0 0 611 0 0 778 +667 0 722 667 611 0 667 0 0 667 0 0 0 0 0 0 +0 556 611 556 611 556 0 0 0 278 0 0 278 0 0 611 +611 0 389 556 0 0 556 778 0 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 30 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 89 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 722 278 0 0 556 833 722 778 +667 0 722 667 611 722 0 0 0 667 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 31 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 371 0 0 0 0 0 333 333 0 0 250 333 250 0 +500 500 500 500 500 500 0 500 500 500 250 250 0 0 0 0 +0 778 611 709 774 611 556 0 832 337 0 0 611 946 831 786 +604 0 668 525 613 778 722 1000 667 0 0 333 0 333 0 0 +0 500 553 444 611 479 333 556 582 291 0 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 32 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 0 600 600 0 0 0 0 600 600 0 0 0 0 600 0 +600 600 600 600 600 0 0 0 0 0 600 0 0 600 0 600 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 +0 0 0 0 0 0 0 0 600 0 0 0 0 0 600 600 +0 0 600 0 0 0 0 0 0 0 0 600 0 600 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 33 0 R +>> +endobj +10 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 46 +/LastChar 89 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 600 0 600 600 600 600 600 600 600 0 0 600 0 +600 600 600 0 600 600 600 600 0 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 34 0 R +>> +endobj +11 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 0 0 600 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 35 0 R +>> +endobj +1 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 16 0 R +/Contents 15 0 R +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 19 0 R +/Contents 18 0 R +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 22 0 R +/Contents 21 0 R +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 25 0 R +/Contents 24 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 13 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +37 0 obj +<< +/S /D +>> +endobj +38 0 obj +<< +/Nums [0 37 0 R ] +>> +endobj +13 0 obj +<< +/Type /Pages +/Kids [1 0 R 14 0 R 17 0 R 20 0 R 23 0 R 26 0 R] +/Count 6 +/MediaBox [0 0 612 792] +>> +endobj +39 0 obj +<< +/CreationDate (D:20210202102724-06'00') +/ModDate (D:20210202102724-06'00') +/Producer (Apple pstopdf) +>> +endobj +40 0 obj +<< +/Type /Catalog +/Pages 13 0 R +/PageLabels 38 0 R +>> +endobj +xref +0 41 +0000000000 65535 f +0000040313 00000 n +0000000016 00000 n +0000005661 00000 n +0000037099 00000 n +0000037591 00000 n +0000037794 00000 n +0000038214 00000 n +0000038532 00000 n +0000039069 00000 n +0000039560 00000 n +0000039853 00000 n +0000035358 00000 n +0000040882 00000 n +0000040394 00000 n +0000005838 00000 n +0000013255 00000 n +0000040478 00000 n +0000013409 00000 n +0000021559 00000 n +0000040562 00000 n +0000021726 00000 n +0000027947 00000 n +0000040646 00000 n +0000028114 00000 n +0000033658 00000 n +0000040730 00000 n +0000033826 00000 n +0000035214 00000 n +0000035499 00000 n +0000035696 00000 n +0000035902 00000 n +0000036097 00000 n +0000036297 00000 n +0000036488 00000 n +0000036690 00000 n +0000036891 00000 n +0000040814 00000 n +0000040842 00000 n +0000040999 00000 n +0000041122 00000 n +trailer +<< +/Size 41 +/Root 40 0 R +/Info 39 0 R +/ID [] +>> +startxref +41192 +%%EOF diff --git a/docs/medley-irm/29-TERMINAL.TEDIT b/docs/medley-irm/29-TERMINAL.TEDIT new file mode 100644 index 0000000000000000000000000000000000000000..d8bd06bcb2a66e245e539041fc7a589f90c1cfe6 GIT binary patch literal 82191 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 literal 0 HcmV?d00001 diff --git a/docs/medley-irm/29-TERMINAL.pdf b/docs/medley-irm/29-TERMINAL.pdf new file mode 100644 index 00000000..034ce791 --- /dev/null +++ b/docs/medley-irm/29-TERMINAL.pdf @@ -0,0 +1,10209 @@ +%PDF-1.3 +% +2 0 obj +<< +/Length 4600 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-1)Tj +/TT4 1 Tf +10 0 0 10 54 568.2 Tm +(29. TERMINALINPUT/OUTPUT)Tj +ET +0 G +0 J 0 j 2 w 10 M []0 d +1 i +54.01 559.2 m +534.01 559.2 l +S +BT +/TT6 1 Tf +10 0 0 10 533.9999 558.2 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 78 534.54 Tm +0.1211 Tw +(Most input/output operations in Interlisp can be simply modeled as reading or writing on a linear)Tj +0 -1.2222 TD +0.0044 Tw +(stream of bytes. However, the situation is much more complex when it comes to controlling the users)Tj +T* +0.1144 Tw +[("terminal," which includes the keyboard, the mouse, and the display screen. For example, Interlisp)]TJ +T* +0.0567 Tw +(coordinates the operation of these separate I/O devices so that the cursor on the screen moves as the)Tj +T* +0.16 Tw +(mouse moves, and any characters typed by the user appear in the window currently containing a)Tj +T* +0 Tw +(flashing cursor. Most of the time, this system works correctly without need for user modification.)Tj +0 -2.8889 TD +0.1133 Tw +(The purpose of this chapter is to describe how to access the low-level controls for the terminal I/O)Tj +0 -1.2222 TD +0.3744 Tw +[(devices. It documents the use of interrupt characters, the keyboard characters that generate)]TJ +T* +0.0733 Tw +[(interrupts. Then, it describes terminal tables, used to determine the meaning of the different editing)]TJ +T* +0.0533 Tw +[(characters \(character delete, line delete, etc.\). Then, the "dribble file" facility that allows terminal I/O)]TJ +T* +0.2322 Tw +[(to be saved onto a file is presented \(see the Dribble Files section below\). Finally, the low-level)]TJ +T* +0 Tw +(functions that control the mouse and cursor, the keyboard, and the screen are documented.)Tj +/TT4 1 Tf +10 0 0 10 54 356.2 Tm +(Interrupt Characters)Tj +ET +1 w +54.01 353.49 m +534.01 353.49 l +S +BT +/TT8 1 Tf +9 0 0 9 78 331.54 Tm +0.0522 Tw +[(Errors and breaks can be caused by errors within functions, or by explicitly breaking a function. The)]TJ +T* +0.18 Tw +(user can also indicate his desire to go into a break while a program is running by typing certain)Tj +T* +0.11 Tw +[(control characters known as "interrupt characters". The following interrupt characters are currently)]TJ +T* +0 Tw +(enabled in Interlisp-D:)Tj +0 -2.8889 TD +0.2133 Tw +[(Note: In Interlisp-D with multiple processes, it is not sufficient to say that "the computation" is)]TJ +0 -1.2222 TD +0.1056 Tw +[(broken, aborted, etc; it is necessary to specify which process is being acted upon. Usually, the user)]TJ +T* +0.1411 Tw +(wants interrupts to occur in the )Tj +/TT10 1 Tf +14.999 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.1411 Tw +[( process, which is the one currently receiving keyboard input.)]TJ +-16.7993 -1.2889 TD +0.0355 Tw +(However, sometimes the user wants to interrupt the mouse process, if it is currently busy executing a)Tj +0 -1.2222 TD +0.1955 Tw +[(menu command or waiting for the user to specify a region on the screen. Most of the interrupt)]TJ +T* +0.0744 Tw +(characters below take place in the mouse process if it is busy, otherwise the )Tj +/TT10 1 Tf +34.5032 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.0744 Tw +[( process. Control-G)]TJ +-36.3035 -1.2889 TD +0 Tw +(can be used to break arbitrary processes. For more information, see Chapter 23.)Tj +/TT12 1 Tf +3.9333 -2 TD +(Control-B)Tj +/TT8 1 Tf +6.7333 0 TD +0.1011 Tw +(Causes a break within the mouse process \(if busy\) or the )Tj +/TT10 1 Tf +26.2792 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.1011 Tw +[( process.)]TJ +-28.0795 -1.2889 TD +0 Tw +(Use Control-G to break a particular process.)Tj +/TT12 1 Tf +-6.7333 -2 TD +(Control-D)Tj +/TT8 1 Tf +6.7333 0 TD +0.0467 Tw +(Aborts the mouse process \(if busy\) or the )Tj +/TT10 1 Tf +18.784 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.0467 Tw +[( process, and unwinds its)]TJ +-20.5843 -1.2889 TD +0 Tw +(stack to the top level. Calls )Tj +/TT10 1 Tf +12.3022 0 TD +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +( \(see Chapter 14\).)Tj +/TT12 1 Tf +-22.0361 -2.0667 TD +(Control-E)Tj +/TT8 1 Tf +6.7333 0 TD +0.0389 Tw +(Aborts the mouse process \(if busy\) or the TTY process, and unwinds its)Tj +0 -1.2889 TD +0 Tw +(stack to the last )Tj +/TT10 1 Tf +7.0503 0 TD +(ERRORSET)Tj +/TT8 1 Tf +4.8008 0 TD +(. Calls )Tj +/TT10 1 Tf +3.2148 0 TD +(ERROR!)Tj +/TT8 1 Tf +3.6006 0 TD +( \(see Chapter 14\).)Tj +/TT12 1 Tf +-25.3998 -2.0667 TD +(Control-G)Tj +/TT8 1 Tf +6.7333 0 TD +0.0256 Tw +[(Pops up a menu listing all of the currently-running processes. Selecting)]TJ +0 -1.2889 TD +0 Tw +(one of the processes will cause a break to take place in that process.)Tj +/TT12 1 Tf +-6.7333 -2 TD +(Control-P)Tj +/TT8 1 Tf +6.7333 0 TD +(This interrupt is no longer supported in Medley.)Tj +ET +endstream +endobj +3 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +13 0 obj +<< +/Length 7851 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-2)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT12 1 Tf +9 0 0 9 161.4 569.54 Tm +(Control-T)Tj +/TT8 1 Tf +6.7333 0 TD +0.0911 Tw +(Flashes the )Tj +/TT10 1 Tf +5.3253 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.0911 Tw +[( process window and prints status information for the)]TJ +/TT10 1 Tf +-7.1256 -1.2889 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.05 Tw +[( process. First it prints )]TJ +/TT10 1 Tf +10.591 0 TD +0 Tw +(")Tj +/TT12 1 Tf +0.6001 0 TD +0.1189 Tw +(IO wait)Tj +/TT10 1 Tf +4.3196 0 TD +0 Tw +(,")Tj +/TT8 1 Tf +1.2002 0 TD +( )Tj +/TT10 1 Tf +0.3 0 TD +(")Tj +/TT12 1 Tf +0.6001 0 TD +(Waiting)Tj +/TT10 1 Tf +4.2007 0 TD +(")Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +(, or )Tj +/TT10 1 Tf +1.7909 0 TD +0 Tw +(")Tj +/TT12 1 Tf +0.6001 0 TD +(Running)Tj +/TT10 1 Tf +4.2007 0 TD +(,")Tj +/TT8 1 Tf +-30.8038 -1.2889 TD +0.3089 Tw +(depending on whether the )Tj +/TT10 1 Tf +13.2199 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.3089 Tw +[( process is currently in waiting for)]TJ +-15.0202 -1.2889 TD +0.0089 Tw +[(characters to be typed, waiting for some other reason, or running. Next,)]TJ +0 -1.2222 TD +0.0344 Tw +(it prints the names of the top three frames on the stack, to show what is)Tj +T* +0.0833 Tw +[(running. Then, it prints a line describing the percentage of time \(since)]TJ +T* +0.1555 Tw +(the last control-T\) that has been spent running a program, swapping,)Tj +T* +0 Tw +(garbage collecting, doing local disk I/O, etc. For example:)Tj +/TT14 1 Tf +0 -2.0056 TD +(Running in )Tj +/TT12 1 Tf +5.4985 0 TD +(TTWAITFORINPUT)Tj +/TT14 1 Tf +8.4014 0 TD +( in )Tj +/TT12 1 Tf +1.4438 0 TD +(TTBIN)Tj +/TT14 1 Tf +3.0005 0 TD +( in )Tj +/TT12 1 Tf +1.4438 0 TD +(TTYIN1)Tj +/TT14 1 Tf +-19.7881 -2.1056 TD +(95% Util, 0% Swap, 4% GC)Tj +/TT12 1 Tf +-4.9333 -2 TD +(DELETE)Tj +/TT8 1 Tf +4.9333 0 TD +(Clears typeahead in all processes. )Tj +0 -2.0667 TD +0.1356 Tw +(The user can disable and/or redefine Interlisp interrupt characters, as)Tj +0 -1.2222 TD +0.1233 Tw +[(well as define new interrupt characters. Interlisp-D is initialized with)]TJ +T* +0.5922 Tw +(the following interrupt channels: )Tj +/TT10 1 Tf +18.0007 0 TD +0 Tw +(RESET)Tj +/TT8 1 Tf +3.0005 0 TD +0.5922 Tc +( \()Tj +/TT12 1 Tf +1.1752 0 TD +0 Tc +(Control-D)Tj +/TT8 1 Tf +5.4009 0 TD +(\), )Tj +/TT10 1 Tf +1.4252 0 TD +(ERROR)Tj +/TT8 1 Tf +-29.0025 -1.2889 TD +(\()Tj +/TT12 1 Tf +0.333 0 TD +(Control-E)Tj +/TT8 1 Tf +5.4009 0 TD +(\), )Tj +/TT10 1 Tf +0.913 0 TD +(BREAK)Tj +/TT8 1 Tf +3.0005 0 TD +0.08 Tc +( \()Tj +/TT12 1 Tf +0.663 0 TD +0 Tc +(Control-B)Tj +/TT8 1 Tf +5.4009 0 TD +(\), )Tj +/TT10 1 Tf +0.913 0 TD +(HELP)Tj +/TT8 1 Tf +2.4004 0 TD +0.08 Tc +( \()Tj +/TT12 1 Tf +0.663 0 TD +0 Tc +(Control-G)Tj +/TT8 1 Tf +5.4009 0 TD +(\), )Tj +/TT10 1 Tf +0.913 0 TD +(PRINTLEVEL)Tj +/TT8 1 Tf +-26.0016 -1.2889 TD +(\()Tj +/TT12 1 Tf +0.333 0 TD +(Control-P)Tj +/TT8 1 Tf +5.4009 0 TD +(\), )Tj +/TT10 1 Tf +1.0308 0 TD +(RUBOUT)Tj +/TT8 1 Tf +3.6006 0 TD +0.1978 Tc +( \()Tj +/TT12 1 Tf +0.7808 0 TD +0 Tc +(DELETE)Tj +/TT8 1 Tf +3.6006 0 TD +0.1978 Tw +(\), and )Tj +/TT10 1 Tf +3.1714 0 TD +0 Tw +(RAID)Tj +/TT8 1 Tf +2.4004 0 TD +0.1978 Tw +[(. Each of these channels)]TJ +-20.3185 -1.2889 TD +0.3533 Tw +(independently can be disabled, or have a new interrupt character)Tj +0 -1.2222 TD +0.1733 Tw +(assigned to it via the function )Tj +/TT10 1 Tf +14.3462 0 TD +0 Tw +(INTERRUPTCHAR)Tj +/TT8 1 Tf +7.8013 0 TD +0.1733 Tw +[( described below. In)]TJ +-22.1474 -1.2889 TD +0.01 Tw +(addition, the user can enable new interrupt channels, and associate with)Tj +0 -1.2222 TD +0.1111 Tw +(each channel an interrupt character and an expression to be evaluated)Tj +0 -1.3644 TD +0 Tw +(when that )Tj +/F1 1 Tf +10 0 0 10 264.4028 314.46 Tm +(character is typed.)Tj +/TT10 1 Tf +-11.4403 -2.228 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 292.18 Tm +(INTERRUPTCHAR)Tj +/F2 1 Tf +10 0 0 10 226.2 292.18 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 229.07 292.18 Tm +(CHAR TYP/FORM HARDFLG )Tj +/TT10 1 Tf +10 0 0 10 353.2902 292.18 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 359.2912 292.18 Tm +[( )-14315.4([Function])]TJ +-20.5879 -1.8833 TD +(Defines )Tj +/TT16 1 Tf +3.7152 0 TD +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1033 Tw +[( as an interrupt character. If )]TJ +/TT16 1 Tf +13.4626 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1033 Tw +[( was previously defined as an interrupt)]TJ +-21.9785 -1.2889 TD +0 Tw +(character, that interpretation is disabled.)Tj +/TT16 1 Tf +0 -2 TD +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( is either a character or a character code \(see Chapter 2\). Note that full sixteen-bit NS)]TJ +-2.4004 -1.2889 TD +0.1478 Tw +(characters can be specified as interrupt characters \(see Chapter 2\). )Tj +/TT16 1 Tf +31.1763 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.1478 Tw +[( can also be a)]TJ +-33.5767 -1.2944 TD +0 Tw +(value returned from )Tj +/TT10 1 Tf +10 0 0 10 256.9336 222.38 Tm +(INTERRUPTCHAR)Tj +/TT8 1 Tf +9 0 0 9 334.9463 222.38 Tm +(, as described below.)Tj +-17.8829 -2.1111 TD +(If )Tj +/TT16 1 Tf +0.9199 0 TD +(TYP/FORM )Tj +/TT10 1 Tf +10 0 0 10 230.8872 203.38 Tm +(= NIL)Tj +/TT8 1 Tf +9 0 0 9 260.8921 203.38 Tm +(, )Tj +/TT16 1 Tf +0.5 0 TD +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +( is disabled.)Tj +-12.5551 -2.1111 TD +(If )Tj +/TT16 1 Tf +0.9199 0 TD +(TYP/FORM)Tj +/TT10 1 Tf +10 0 0 10 225.4863 184.38 Tm +( = T)Tj +/TT8 1 Tf +9 0 0 9 249.4902 184.38 Tm +(, the current state of )Tj +/TT16 1 Tf +9.0454 0 TD +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +( is returned without changing or disabling it.)Tj +-19.8336 -2.1111 TD +(If )Tj +/TT16 1 Tf +1.0121 0 TD +(TYP/FORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0922 Tw +[( is one of the literal atoms )]TJ +/TT10 1 Tf +10 0 0 10 336.4349 165.38 Tm +0 Tw +(RESET)Tj +/TT8 1 Tf +9 0 0 9 366.4398 165.38 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 371.7698 165.38 Tm +(ERROR)Tj +/TT8 1 Tf +9 0 0 9 401.7747 165.38 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 407.1047 165.38 Tm +(BREAK)Tj +/TT8 1 Tf +9 0 0 9 437.1096 165.38 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 442.4395 165.38 Tm +(HELP)Tj +/TT8 1 Tf +9 0 0 9 466.4435 165.38 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 471.7734 165.38 Tm +(PRINTLEVEL)Tj +/TT8 1 Tf +9 0 0 9 531.7832 165.38 Tm +(,)Tj +/TT10 1 Tf +10 0 0 10 174 153.38 Tm +(RUBOUT)Tj +/TT8 1 Tf +9 0 0 9 210.0058 153.38 Tm +0.3033 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 230.6841 153.38 Tm +0 Tw +(RAID)Tj +/TT8 1 Tf +9 0 0 9 254.688 153.38 Tm +0.3033 Tw +(, then )Tj +/TT10 1 Tf +10 0 0 10 284.6212 153.38 Tm +0 Tw +(INTERRUPTCHAR)Tj +/TT8 1 Tf +9 0 0 9 362.6339 153.38 Tm +0.3033 Tw +[( assigns )]TJ +/TT16 1 Tf +4.3074 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.3033 Tw +[( to the indicated Interlisp)]TJ +-27.6671 -1.3278 TD +0 Tw +(interrupt channel, \(reenabling the channel if previously disabled\).)Tj +0 -2 TD +0.3589 Tw +(If the argument )Tj +/TT16 1 Tf +8.208 0 TD +0 Tw +(TYP/FORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.3589 Tw +[( is a symbol designating a predefined system interrupt)]TJ +-13.0088 -1.2944 TD +0 Tw +(\()Tj +/TT10 1 Tf +10 0 0 10 176.9971 111.78 Tm +0.209 Tw +(RESET, ERROR, BREAK)Tj +/TT8 1 Tf +9 0 0 9 295.1956 111.78 Tm +0.0867 Tw +(, etc\), and )Tj +/TT10 1 Tf +10 0 0 10 338.2597 111.78 Tm +0 Tw +(HARDFLG)Tj +/TT8 1 Tf +9 0 0 9 380.2665 111.78 Tm +0.0867 Tw +[( is omitted or )]TJ +/TT10 1 Tf +10 0 0 10 438.4456 111.78 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 456.4486 111.78 Tm +0.0867 Tw +(, then the hardness)Tj +-31.3832 -1.3333 TD +0.1667 Tw +(defaults to the standard hardness of the system interrupt \(e.g., )Tj +/TT10 1 Tf +10 0 0 10 438.7148 99.78 Tm +0 Tw +(MOUSE)Tj +/TT8 1 Tf +9 0 0 9 468.7197 99.78 Tm +0.1667 Tw +[( for the )]TJ +/TT10 1 Tf +10 0 0 10 503.9199 99.78 Tm +0 Tw +(ERROR)Tj +/TT8 1 Tf +9 0 0 9 174 87.83 Tm +(interrupt\).)Tj +0 -2 TD +(If )Tj +/TT16 1 Tf +0.9288 0 TD +(TYP/FORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0089 Tw +[( is any other literal atom, )]TJ +/TT16 1 Tf +11.3126 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0089 Tw +[( is enabled as an interrupt character that when)]TJ +-19.4426 -1.2944 TD +0 Tw +(typed causes the atom )Tj +/TT16 1 Tf +10.0889 0 TD +(TYP/FORM)Tj +/TT8 1 Tf +4.8008 0 TD +( to be immediately set to )Tj +/TT10 1 Tf +10 0 0 10 407.8638 58.18 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 413.8647 58.18 Tm +(.)Tj +ET +endstream +endobj +14 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F2 16 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 17 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +20 0 obj +<< +/Length 7286 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-3)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +(If )Tj +/TT16 1 Tf +0.9755 0 TD +(TYP/FORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0556 Tw +[( is a list, )]TJ +/TT16 1 Tf +4.0191 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0556 Tw +[( is enabled as a user interrupt character, and )]TJ +/TT16 1 Tf +20.291 0 TD +0 Tw +(TYP/FORM)Tj +/TT8 1 Tf +4.8008 0 TD +0.0556 Tw +[( is the)]TJ +-37.2875 -1.2944 TD +0.0011 Tw +(form that is evaluated when )Tj +/TT16 1 Tf +12.6926 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.001 Tw +( is typed. The interrupt will be hard if )Tj +/TT16 1 Tf +17.1727 0 TD +0 Tc +0 Tw +(HARDFLG )Tj +/TT10 1 Tf +10 0 0 10 459.6282 557.89 Tm +0.001 Tc +0.002 Tw +(= T)Tj +/TT8 1 Tf +9 0 0 9 483.6921 557.89 Tm +0 Tc +0 Tw +(,)Tj +-39.7436 -1.3278 TD +(otherwise soft.)Tj +/TT10 1 Tf +10 0 0 10 126 527.89 Tm +0.007 Tw +(\(INTERRUPTCHAR T\))Tj +/TT8 1 Tf +9 0 0 9 228.0866 527.89 Tm +0.0022 Tw +( restores all Interlisp channels to their original state, and disables)Tj +-11.343 -1.3278 TD +0 Tw +(all user interrupts.)Tj +/TT16 1 Tf +0 -2.0056 TD +(HARDFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.1011 Tw +[( determines what process the interrupt should run in. If )]TJ +/TT16 1 Tf +26.1811 0 TD +0 Tw +(HARDFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.1011 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 449.9955 497.89 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 467.9984 497.89 Tm +0.1011 Tw +(, the)Tj +-37.9998 -1.3333 TD +0.0878 Tw +(interrupt will run in the )Tj +/TT10 1 Tf +10 0 0 10 227.1131 485.89 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 245.116 485.89 Tm +0.0878 Tw +[( process, which is the process currently receiving keyboard)]TJ +-13.2351 -1.3333 TD +0.2033 Tw +[(input. If )]TJ +/TT16 1 Tf +4.6832 0 TD +0 Tw +(HARDFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.2033 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 220.5489 473.89 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 226.5499 473.89 Tm +0.2033 Tw +(, the interrupt will occur in whichever process happens to be)Tj +-11.1722 -1.3333 TD +0.1356 Tw +[(running. If )]TJ +/TT16 1 Tf +5.6679 0 TD +0 Tw +(HARDFLG)Tj +/TT8 1 Tf +4.2007 0 TD +0.1356 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 228.1908 461.89 Tm +0 Tw +(MOUSE)Tj +/TT8 1 Tf +9 0 0 9 258.1957 461.89 Tm +0.1356 Tw +(, the interrupt will happen in the mouse process, if the)Tj +-14.6884 -1.3333 TD +0 Tw +(mouse is busy, otherwise in the )Tj +/TT10 1 Tf +10 0 0 10 253.3667 449.89 Tm +(TTY)Tj +/TT8 1 Tf +9 0 0 9 271.3696 449.89 Tm +( process.)Tj +/TT10 1 Tf +10 0 0 10 126 430.89 Tm +(INTERRUPTCHAR)Tj +/TT8 1 Tf +9 0 0 9 204.0127 430.89 Tm +0.4178 Tw +[( returns a value which, when given as the )]TJ +/TT16 1 Tf +22.3962 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.4178 Tw +[( argument to)]TJ +/TT10 1 Tf +10 0 0 10 126 418.89 Tm +0 Tw +(INTERRUPTCHAR)Tj +/TT8 1 Tf +9 0 0 9 204.0127 418.89 Tm +0.0256 Tw +(, will restore things as they were before the call to )Tj +/TT10 1 Tf +10 0 0 10 405.7731 418.89 Tm +0 Tw +(INTERRUPTCHAR)Tj +/TT8 1 Tf +9 0 0 9 483.7858 418.89 Tm +(.)Tj +-39.754 -1.3333 TD +(Therefore, )Tj +/TT10 1 Tf +10 0 0 10 174.037 406.89 Tm +(INTERRUPTCHAR)Tj +/TT8 1 Tf +9 0 0 9 252.0497 406.89 Tm +0.5367 Tw +[( can be used in conjunction with )]TJ +/TT10 1 Tf +10 0 0 10 416.4564 406.89 Tm +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +9 0 0 9 470.4651 406.89 Tm +0.5367 Tw +[( or)]TJ +/TT10 1 Tf +10 0 0 10 126 394.89 Tm +0 Tw +(RESETLST)Tj +/TT8 1 Tf +9 0 0 9 174.0078 394.89 Tm +( \(see Chapter 14\).)Tj +/TT10 1 Tf +10 0 0 10 126 374.66 Tm +(INTERRUPTCHAR)Tj +/F1 1 Tf +7.8013 0 TD +( is undoable.)Tj +/TT10 1 Tf +-10.2013 -2.2 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 352.66 Tm +(RESET.INTERRUPTS)Tj +/TT16 1 Tf +9.5999 0 TD +( PERMITTEDINTERRUPTS SAVECURRENT?)Tj +/TT10 1 Tf +10 0 0 10 372.629 352.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 378.63 352.66 Tm +[( )-6833.3([Function])]TJ +/TT16 1 Tf +-28.07 -1.8833 TD +(PERMITTEDINTERRUPTS)Tj +/TT8 1 Tf +11.4019 0 TD +0.0778 Tw +[( is a list of interrupt character settings to be performed, each of)]TJ +-11.4019 -1.2944 TD +0.0322 Tw +(the form )Tj +/TT10 1 Tf +10 0 0 10 162.9755 324.06 Tm +0.077 Tw +(\(CHAR TYP/FORM HARDFLG\))Tj +/TT8 1 Tf +9 0 0 9 302.5379 324.06 Tm +0.0322 Tw +[(. The effect of )]TJ +/TT10 1 Tf +10 0 0 10 362.0089 324.06 Tm +0 Tw +(RESET.INTERRUPTS)Tj +/TT8 1 Tf +9 0 0 9 458.0246 324.06 Tm +0.0322 Tw +[( is as if)]TJ +/TT10 1 Tf +10 0 0 10 126 312.06 Tm +0.092 Tw +(\(INTERRUPTCHAR CHAR TYP/FORM HARDFLG\))Tj +/TT8 1 Tf +9 0 0 9 350.7961 312.06 Tm +0.0378 Tw +[( were performed for each item on)]TJ +/TT10 1 Tf +10 0 0 10 126 300.06 Tm +0 Tw +(PERMITTEDINTERRUPTS)Tj +/TT8 1 Tf +9 0 0 9 240.0185 300.06 Tm +0.3744 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 268.7444 300.06 Tm +0.898 Tw +(\(INTERRUPTCHAR OTHERCHAR NIL\))Tj +/TT8 1 Tf +9 0 0 9 460.7327 300.06 Tm +0.3744 Tw +[( were)]TJ +-37.1925 -1.3278 TD +0 Tw +(performed on every other existing interrupt character.)Tj +0 -2.0056 TD +(If )Tj +/TT16 1 Tf +1.0433 0 TD +(SAVECURRENT?)Tj +/TT8 1 Tf +7.2012 0 TD +0.1233 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 231.7401 270.06 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 249.7431 270.06 Tm +0.1233 Tw +(, then )Tj +/TT10 1 Tf +10 0 0 10 276.4362 270.06 Tm +0 Tw +(RESET.INTERRUPTS)Tj +/TT8 1 Tf +9 0 0 9 372.4518 270.06 Tm +0.1233 Tw +[( returns the current state of)]TJ +-27.3835 -1.3333 TD +0.2167 Tw +(the interrupts in a form that could be passed to )Tj +/TT10 1 Tf +10 0 0 10 334.6011 258.06 Tm +0 Tw +(RESET.INTERRUPTS)Tj +/TT8 1 Tf +9 0 0 9 430.6167 258.06 Tm +0.2167 Tw +(, otherwise it)Tj +-33.8463 -1.3333 TD +0 Tw +(returns )Tj +/TT10 1 Tf +10 0 0 10 160.4769 246.06 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 178.4798 246.06 Tm +0.3767 Tw +[(. This can be used with a )]TJ +/TT10 1 Tf +10 0 0 10 307.9089 246.06 Tm +0 Tw +(RESET.INTERRUPTS)Tj +/TT8 1 Tf +9 0 0 9 403.9245 246.06 Tm +0.3767 Tw +[( that appears in a)]TJ +/TT10 1 Tf +10 0 0 10 126 234.06 Tm +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +9 0 0 9 180.0088 234.06 Tm +(, so that the list is built at "entry", but not upon "exit".)Tj +/TT10 1 Tf +10 0 0 10 102 212.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 212.06 Tm +(LISPINTERRUPTS)Tj +/TT10 1 Tf +10 0 0 10 183.6 212.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 189.601 212.06 Tm +[( )-27836.6([Function])]TJ +-7.0668 -1.8833 TD +0.3411 Tw +(Returns the initial default interrupt character settings for Interlisp-D, as a list that)Tj +/TT10 1 Tf +10 0 0 10 126 184.06 Tm +0 Tw +(RESET.INTERRUPTS)Tj +/TT8 1 Tf +9 0 0 9 222.0156 184.06 Tm +( would accept.)Tj +/TT10 1 Tf +10 0 0 10 102 160.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 160.83 Tm +(INTERRUPTABLE)Tj +/F1 1 Tf +10 0 0 10 178.2 160.83 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 180.98 160.83 Tm +(FLAG)Tj +/TT10 1 Tf +10 0 0 10 202.5835 160.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 208.5845 160.83 Tm +[( )-25727.3([Function])]TJ +-9.1761 -1.8889 TD +(if )Tj +/TT16 1 Tf +1.0407 0 TD +(FLAG)Tj +/TT10 1 Tf +10 0 0 10 156.9697 143.83 Tm +0.4 Tw +[( = NIL)]TJ +/TT8 1 Tf +9 0 0 9 200.9756 143.83 Tm +0.1667 Tw +[(, turns interrupts off. If )]TJ +/TT16 1 Tf +11.6343 0 TD +0 Tw +(FLAG )Tj +/TT10 1 Tf +10 0 0 10 336.2885 143.83 Tm +0.4 Tw +(= T)Tj +/TT8 1 Tf +9 0 0 9 358.2914 143.83 Tm +0.1667 Tw +[(, turns interrupts on. Value is)]TJ +-25.8102 -1.3333 TD +0 Tw +(previous setting. )Tj +/TT10 1 Tf +10 0 0 10 196.9936 131.83 Tm +(INTERRUPTABLE)Tj +/TT8 1 Tf +9 0 0 9 275.0063 131.83 Tm +( compiles open.)Tj +-16.5563 -2.1056 TD +0.1478 Tw +(Any interrupt character typed while interrupts are off is treated the same as any other)Tj +0 -1.2222 TD +0.06 Tw +(character, i.e., placed in the input buffer, and will not cause an interrupt when interrupts)Tj +T* +0 Tw +(are turned back on.)Tj +ET +endstream +endobj +21 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +23 0 obj +<< +/Length 7208 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-4)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT4 1 Tf +0.6 -4.38 TD +(Terminal Tables)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 565.49 m +582.01 565.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 543.54 Tm +0.2022 Tw +[(A read table \(see Chapter 25\) contains input/output information that is media-independent. For)]TJ +0 -1.2222 TD +0.0544 Tw +(example, the action of parentheses is the same regardless of the device from which the input is being)Tj +T* +0.3678 Tw +[(performed. A terminal table is an object that contains information that pertains to terminal)]TJ +T* +0.0289 Tw +(input/output operations only, such as the character to type to delete the last character or to delete the)Tj +T* +0.3122 Tw +[(last line. In addition, terminal tables contain such information as how line-buffering is to be)]TJ +T* +0.2978 Tw +(performed, how control characters are to be echoed/printed, whether lowercase input is to be)Tj +T* +0 Tw +(converted to upper case, etc.)Tj +0 -2.8889 TD +0.2278 Tw +(Using the functions below, the user may change, reset, or copy terminal tables, or create a new)Tj +0 -1.2222 TD +0.0578 Tw +(terminal table and install it as the primary terminal table via )Tj +/TT10 1 Tf +27.4817 0 TD +0 Tw +(SETTERMTABLE)Tj +/TT8 1 Tf +7.2012 0 TD +0.0578 Tw +[(. However, unlike read)]TJ +-34.6829 -1.2889 TD +0 Tw +(tables, terminal tables cannot be passed as arguments to input/output functions.)Tj +/TT10 1 Tf +10 0 0 10 150 406.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 406.66 Tm +(GETTERMTABLE)Tj +/F2 1 Tf +10 0 0 10 220.8 406.66 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 223.67 406.66 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 245.2735 406.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.2745 406.66 Tm +[( )-26317.3([Function])]TJ +-8.5861 -1.8833 TD +(If )Tj +/TT16 1 Tf +1.0144 0 TD +(TTBL)Tj +/TT10 1 Tf +2.4004 0 TD +0.2267 Tw +[( = NIL)]TJ +/TT8 1 Tf +4.0539 0 TD +0.0944 Tw +[(, returns the primary \(i.e., current\) terminal table. If )]TJ +/TT16 1 Tf +24.1334 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0944 Tw +[( is a terminal)]TJ +-34.0025 -1.4311 TD +0 Tw +(table, return )Tj +/TT16 1 Tf +5.6797 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +(. Otherwise, generates an )Tj +/TT14 1 Tf +11.6484 0 TD +(ILLEGAL TERMINAL TABLE)Tj +/F1 1 Tf +10 0 0 10 476.5459 376.83 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 479.3259 376.83 Tm +(error)Tj +/F1 1 Tf +10 0 0 10 499.2155 376.83 Tm +(.)Tj +/TT10 1 Tf +-34.9216 -2.288 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 353.95 Tm +(COPYTERMTABLE)Tj +/F2 1 Tf +10 0 0 10 226.2 353.95 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 229.07 353.95 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 250.6735 353.95 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 256.6745 353.95 Tm +[( )-25717.3([Function])]TJ +-9.1861 -1.8833 TD +0.1967 Tw +(Returns a copy of )Tj +/TT16 1 Tf +8.7896 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1967 Tw +(. )Tj +/TT16 1 Tf +1.1433 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1967 Tw +[( can be a real terminal table, )]TJ +/TT10 1 Tf +13.9963 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1967 Tw +[( \(copies the primary)]TJ +-30.5303 -1.2889 TD +0.0689 Tw +(terminal table\), or )Tj +/TT10 1 Tf +8.3771 0 TD +0 Tw +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +0.0689 Tw +[( \(returns a copy of the original system terminal table\). Note that)]TJ +/TT10 1 Tf +-10.7775 -1.2889 TD +0 Tw +(COPYTERMTABLE)Tj +/TT8 1 Tf +7.8013 0 TD +( is the only function that creates a terminal table.)Tj +/TT10 1 Tf +10 0 0 10 150 290.92 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 290.92 Tm +(SETTERMTABLE)Tj +/F2 1 Tf +10 0 0 10 220.8 290.92 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 223.67 290.92 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 245.2735 290.92 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.2745 290.92 Tm +[( )-26317.3([Function])]TJ +-8.5861 -1.8833 TD +0.0533 Tw +(Sets the primary terminal table to be )Tj +/TT16 1 Tf +16.6863 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0533 Tw +[(. Returns the previous primary terminal table.)]TJ +-19.0867 -1.4311 TD +0 Tw +(Generates an)Tj +/F1 1 Tf +10 0 0 10 225.8335 261.09 Tm +( )Tj +/TT14 1 Tf +9 0 0 9 228.6135 261.09 Tm +(ILLEGAL TERMINAL TABLE)Tj +/F1 1 Tf +10 0 0 10 353.6027 261.09 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 356.3828 261.09 Tm +(error if )Tj +/TT16 1 Tf +3.334 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +( is not a real terminal table.)Tj +/TT10 1 Tf +10 0 0 10 150 238.21 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 238.21 Tm +(RESETTERMTABLE)Tj +/F2 1 Tf +10 0 0 10 231.6 238.21 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 234.47 238.21 Tm +(TTBL FROM)Tj +/TT10 1 Tf +10 0 0 10 283.0779 238.21 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 289.0789 238.21 Tm +[( )-22116.8([Function])]TJ +-12.7865 -1.8833 TD +0.0133 Tw +(Copies \(smashes\) )Tj +/TT16 1 Tf +7.9578 0 TD +0 Tw +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[( into )]TJ +/TT16 1 Tf +2.2718 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +(. )Tj +/TT16 1 Tf +0.7767 0 TD +0 Tw +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[( and )]TJ +/TT16 1 Tf +2.2195 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0133 Tw +[( can be )]TJ +/TT10 1 Tf +3.3481 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0133 Tw +[( or a real terminal table. In)]TJ +-27.9758 -1.2889 TD +0 Tw +(addition, )Tj +/TT16 1 Tf +4.2578 0 TD +(FROM)Tj +/TT8 1 Tf +2.4004 0 TD +( can be )Tj +/TT10 1 Tf +3.3081 0 TD +(ORIG)Tj +/TT8 1 Tf +2.4004 0 TD +(, meaning to use the systems original terminal table.)Tj +/TT10 1 Tf +10 0 0 10 150 186.78 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 186.78 Tm +(TERMTABLEP)Tj +/F3 1 Tf +10 0 0 10 210 186.78 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 212.78 186.78 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 234.3835 186.78 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.3845 186.78 Tm +[( )-27527.3([Function])]TJ +-7.3761 -1.8833 TD +(Returns )Tj +/TT16 1 Tf +3.7271 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +(, if )Tj +/TT16 1 Tf +1.374 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +( is a real terminal table, )Tj +/TT10 1 Tf +10.5264 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +( otherwise.)Tj +/TT4 1 Tf +10 0 0 10 126 141.89 Tm +(Terminal Syntax Classes)Tj +/TT8 1 Tf +9 0 0 9 126 118.23 Tm +0.0789 Tw +(A terminal table associates with each character a single "terminal syntax class", one of )Tj +/TT10 1 Tf +39.0742 0 TD +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +6.001 0 TD +(,)Tj +/TT10 1 Tf +-45.0752 -1.2889 TD +(LINEDELETE)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.6667 0 TD +(WORDDELETE)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.6667 0 TD +(RETYPE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.6667 0 TD +(CTRLV)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +0.6667 0 TD +(EOL)Tj +/TT8 1 Tf +1.8003 0 TD +0.1667 Tw +(, and )Tj +/TT10 1 Tf +2.7762 0 TD +0 Tw +(NONE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1667 Tw +[(. Unlike read table classes, only one)]TJ +-28.2466 -1.2889 TD +0.0978 Tw +(character in a particular terminal table can belong to each of the classes \(except for the default class)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(NONE)Tj +/TT8 1 Tf +2.4004 0 TD +0.02 Tw +[(\). When a new character is assigned one of these syntax classes by )]TJ +/TT10 1 Tf +29.8225 0 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.02 Tw +[( \(see Chapter 25\),)]TJ +-37.6238 -1.2889 TD +0.4033 Tw +(the previous character is disabled \(i.e., reassigned the syntax class )Tj +/TT10 1 Tf +33.3317 0 TD +0 Tw +(NONE)Tj +/TT8 1 Tf +2.4004 0 TD +0.4033 Tw +(\), and the value of)Tj +/TT10 1 Tf +-35.7321 -1.2889 TD +0 Tw +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +( is the code for the previous character of that class, if any, otherwise )Tj +/TT10 1 Tf +30.1255 0 TD +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +ET +endstream +endobj +24 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F2 16 0 R +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 17 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +27 0 obj +<< +/Length 5837 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-5)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +(The terminal syntax classes are interpreted as follows:)Tj +/TT10 1 Tf +9.3333 -2.1489 TD +(CHARDELETE)Tj +/TT8 1 Tf +7.3333 0 TD +0.05 Tw +[(\(Initially BackSpace and Control-A in Interlisp-D\) Typing)]TJ +0 -1.2889 TD +0.59 Tw +(this character deletes the previous character typed.)Tj +0 -1.2222 TD +0.7689 Tw +(Repeated use of this character deletes successive)Tj +T* +0 Tw +(characters back to the beginning of the line.)Tj +/TT10 1 Tf +10 0 0 10 156 497.26 Tm +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 228 497.26 Tm +0.1444 Tw +[(\(Initially Control-Q in Interlisp-D\) Typing this character)]TJ +0 -1.3278 TD +0 Tw +(deletes the whole line; it cannot be used repeatedly.)Tj +/TT10 1 Tf +10 0 0 10 156 465.97 Tm +(WORDDELETE)Tj +/TT8 1 Tf +9 0 0 9 228 465.97 Tm +0.1133 Tw +[(\(Initially Control-W in Interlisp-D\) Typing this character)]TJ +T* +0.5711 Tw +(deletes the previous "word", i.e., sequence of non-)Tj +0 -1.2222 TD +0 Tw +(separator characters.)Tj +/TT10 1 Tf +10 0 0 10 180 423.68 Tm +(RETYPE)Tj +/TT8 1 Tf +9 0 0 9 228 423.68 Tm +0.3089 Tw +[(\(Initially Control-R\) Causes the line to be retyped as)]TJ +0 -1.3278 TD +0.1711 Tw +(Interlisp sees it \(useful when repeated deletions make it)Tj +0 -1.2222 TD +0 Tw +(difficult to see what remains\).)Tj +/TT10 1 Tf +10 0 0 10 186 381.39 Tm +(CTRLV)Tj +-0.6 -1.123 TD +(CNTRLV)Tj +/TT8 1 Tf +9 0 0 9 228 370.16 Tm +0.0856 Tw +[(\(Initially Control-V\) When followed by A, B, ... Z, inputs)]TJ +0 -1.3278 TD +0.18 Tw +(the corresponding control character control-A, control-B,)Tj +0 -1.2222 TD +0.1144 Tw +[(... control-Z. This allows interrupt characters to be input)]TJ +T* +0 Tw +(without causing an interrupt.)Tj +/TT10 1 Tf +10 0 0 10 198 316.87 Tm +(EOL)Tj +/TT8 1 Tf +9 0 0 9 228 316.87 Tm +0.0289 Tw +(On input from a terminal, the )Tj +/TT10 1 Tf +10 0 0 10 349.3725 316.87 Tm +0 Tw +(EOL)Tj +/TT8 1 Tf +9 0 0 9 367.3754 316.87 Tm +0.0289 Tw +[( character signals to the)]TJ +-15.4862 -1.3278 TD +0.0633 Tw +(line buffering routine to pass the input back to the calling)Tj +0 -1.2222 TD +0.0656 Tw +[(function. It also is used to terminate inputs to )]TJ +/TT10 1 Tf +21.2005 0 TD +0 Tw +(READLINE)Tj +/TT8 1 Tf +-21.2005 -1.2889 TD +0.4867 Tw +[(\(see Chapter 13\). In general, whenever the phrase)]TJ +0 -1.2222 TD +0.3578 Tw +(carriage-return linefeed is used, what is meant is the)Tj +T* +0 Tw +(character with terminal syntax class )Tj +/TT10 1 Tf +16.082 0 TD +(EOL)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 192 240.38 Tm +(NONE)Tj +/TT8 1 Tf +9 0 0 9 228 240.38 Tm +(The terminal syntax class of all other characters.)Tj +/TT10 1 Tf +-16.6667 -2.9944 TD +(GETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +(, )Tj +/TT10 1 Tf +0.5911 0 TD +(SETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.0911 Tw +(, and )Tj +/TT10 1 Tf +2.6251 0 TD +0 Tw +(SYNTAXP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0911 Tw +[( all work on terminal tables as well as read tables \(see page)]TJ +/TT10 1 Tf +-18.2186 -1.2889 TD +0 Tw +(X.XX)Tj +/TT8 1 Tf +2.4004 0 TD +0.1822 Tw +[(\). As with read tables, full sixteen-bit NS characters can be specified in terminal tables \(see)]TJ +-2.4004 -1.2889 TD +0.0589 Tw +[(Chapter 2\). When given )]TJ +/TT10 1 Tf +11.3359 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0589 Tw +[( as a )]TJ +/TT10 1 Tf +2.3505 0 TD +0 Tw +(TABLE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0589 Tw +[( argument, )]TJ +/TT10 1 Tf +5.192 0 TD +0 Tw +(GETSYNTAX)Tj +/TT8 1 Tf +5.4009 0 TD +0.0589 Tw +[( and )]TJ +/TT10 1 Tf +2.3106 0 TD +0 Tw +(SYNTAXP)Tj +/TT8 1 Tf +4.2007 0 TD +0.0589 Tw +[( use the primary read)]TJ +-35.5914 -1.2889 TD +0.1444 Tw +(table or primary terminal table depending on which table contains the indicated )Tj +/TT10 1 Tf +37.3603 0 TD +0 Tw +(CLASS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1444 Tw +[( argument.)]TJ +-40.3608 -1.2889 TD +0.1144 Tw +(For example,)Tj +/TT10 1 Tf +5.8605 0 TD +0.2744 Tw +[( \(SETSYNTAX CH BREAK\))]TJ +/TT8 1 Tf +14.0255 0 TD +0.1144 Tw +[( refers to the primary read table, and )]TJ +/TT10 1 Tf +17.378 0 TD +0.2744 Tw +(\(SETSYNTAX CH)Tj +-37.264 -1.2889 TD +0 Tw +(CHARDELETE\))Tj +/TT8 1 Tf +7.2012 0 TD +0.1522 Tw +[( refers to the primary terminal table. In the absence of such information, all three)]TJ +-7.2012 -1.2889 TD +0.0889 Tw +(functions default to the primary read table; e.g., )Tj +/TT10 1 Tf +22.0348 0 TD +0.2144 Tw +(\(SETSYNTAX { %[\))Tj +/TT8 1 Tf +11.2306 0 TD +0.0889 Tw +[( refers to the primary read)]TJ +-33.2655 -1.2889 TD +0.1844 Tw +[(table. If given incompatible )]TJ +/TT10 1 Tf +13.5018 0 TD +0 Tw +(CLASS)Tj +/TT8 1 Tf +3.0005 0 TD +0.1844 Tw +[( and table arguments, all three functions generate errors. For)]TJ +-16.5023 -1.4311 TD +0 Tw +(example, )Tj +/TT10 1 Tf +4.2857 0 TD +0.0889 Tw +(\(SETSYNTAX CH BREAK TTBL\))Tj +/TT8 1 Tf +15.8692 0 TD +0.0367 Tw +(, where )Tj +/TT10 1 Tf +3.5924 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0367 Tw +[( is a terminal table, generates an)]TJ +/F1 1 Tf +10 0 0 10 442.7811 119.35 Tm +0 Tw +( )Tj +/TT14 1 Tf +9 0 0 9 445.9711 119.35 Tm +(ILLEGAL)Tj +-40.8857 -1.4311 TD +(READTABLE)Tj +/F1 1 Tf +10 0 0 10 134.4961 106.47 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 137.5261 106.47 Tm +0.0222 Tw +(error, and )Tj +/TT10 1 Tf +4.6973 0 TD +0.0544 Tw +(\(GETSYNTAX CHARDELETE RDTBL\))Tj +/TT8 1 Tf +17.5117 0 TD +0.0222 Tw +[( generates an)]TJ +/F1 1 Tf +10 0 0 10 390.0273 106.47 Tm +0 Tw +( )Tj +/TT14 1 Tf +9 0 0 9 393.0573 106.47 Tm +0.0222 Tw +(ILLEGAL TERMINAL)Tj +-35.0064 -1.4311 TD +0 Tw +(TABLE)Tj +/F1 1 Tf +10 0 0 10 108.0014 93.59 Tm +( )Tj +/TT8 1 Tf +9 0 0 9 110.7814 93.59 Tm +(error)Tj +/F1 1 Tf +10 0 0 10 130.6711 93.59 Tm +(.)Tj +/TT4 1 Tf +-5.2671 -2.734 TD +(Terminal Control Functions)Tj +/TT10 1 Tf +2.4 -1.994 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 46.31 Tm +(ECHOCHAR)Tj +/F2 1 Tf +10 0 0 10 151.2 46.31 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 154.07 46.31 Tm +(CHARCODE MODE TTBL)Tj +/TT10 1 Tf +10 0 0 10 251.2858 46.31 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 257.2868 46.31 Tm +[( )-20315.9([Function])]TJ +ET +endstream +endobj +28 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F2 16 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT14 17 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +30 0 obj +<< +/Length 7095 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-6)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT16 1 Tf +9 0 0 9 174 569.54 Tm +(ECHOCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +0.0567 Tw +[( sets the "echo mode" of the character )]TJ +/TT16 1 Tf +17.136 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0567 Tw +[( to )]TJ +/TT16 1 Tf +1.4854 0 TD +0 Tw +(MODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.0567 Tw +[( in the terminal table)]TJ +/TT16 1 Tf +-30.6233 -1.2889 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0989 Tw +[(. The "echo mode" determines how the character is to be echoed or printed. Note)]TJ +-2.4004 -1.2889 TD +0.0789 Tw +(that although the name of this function suggests echoing only, it affects all output of the)Tj +0 -1.2222 TD +0 Tw +(character, both echoing of input and printing of output.)Tj +/TT16 1 Tf +0 -2 TD +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0001 Tc +0.0021 Tw +( should be a character code. )Tj +/TT16 1 Tf +12.749 0 TD +0 Tc +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0001 Tc +0.0021 Tw +( can also be a list of characters, in which)Tj +-22.3505 -1.2889 TD +0 Tc +0 Tw +(case )Tj +/TT10 1 Tf +2.2333 0 TD +(ECHOCHAR)Tj +/TT8 1 Tf +4.8008 0 TD +0.1367 Tw +[( is applied to each of them with arguments )]TJ +/TT16 1 Tf +20.376 0 TD +0 Tw +(MODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1367 Tw +[( and )]TJ +/TT16 1 Tf +2.4662 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.1367 Tw +[(. Note that)]TJ +-34.6771 -1.2889 TD +0 Tw +(echo modes can be specified for full sixteen-bit NS characters \(see Chapter 2\).)Tj +/TT16 1 Tf +0 -2 TD +(MODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2522 Tw +[( should be one of the litatoms )]TJ +/TT10 1 Tf +15.0644 0 TD +0 Tw +(IGNORE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.7522 0 TD +(REAL)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.7522 0 TD +(SIMULATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2522 Tw +(, or )Tj +/TT10 1 Tf +2.1954 0 TD +0 Tw +(INDICATE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2522 Tw +[( which)]TJ +-36.7671 -1.2889 TD +0 Tw +(specify how the character should be echoed or printed:)Tj +/TT10 1 Tf +10 0 0 10 216 445.2 Tm +(IGNORE)Tj +/TT16 1 Tf +9 0 0 9 264 445.2 Tm +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +( is never printed.)Tj +/TT10 1 Tf +10 0 0 10 228 424.91 Tm +(REAL)Tj +/TT16 1 Tf +9 0 0 9 264 424.91 Tm +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.0922 Tw +[( itself is printed. Some terminals may respond to)]TJ +-4.8008 -1.3278 TD +0 Tw +(certain control and meta characters in interesting ways.)Tj +/TT10 1 Tf +10 0 0 10 204 393.62 Tm +(SIMULATE)Tj +/TT8 1 Tf +9 0 0 9 264 393.62 Tm +0.2178 Tw +(Output of )Tj +/TT16 1 Tf +5.0601 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2178 Tw +[( is simulated. For example, control-I)]TJ +-9.8609 -1.3278 TD +0.0422 Tw +[(\(tab\) may be simulated by printing spaces. The simulation is)]TJ +0 -1.2222 TD +0 Tw +(machine-specific and beyond the control of the user.)Tj +/TT10 1 Tf +10 0 0 10 204 352.62 Tm +(INDICATE)Tj +/TT8 1 Tf +9 0 0 9 264 352.62 Tm +0.2511 Tw +(For control or meta characters, )Tj +/TT16 1 Tf +15.0002 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.2511 Tw +[( is printed as #)]TJ +-19.801 -1.3278 TD +0 Tw +(and/or )Tj +/TT17 1 Tf +4.2464 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.7567 Tw +[( followed by the corresponding alphabetic)]TJ +-4.8494 -1.2222 TD +0.1756 Tw +[(character. For example, Control-A would echo as )]TJ +/TT17 1 Tf +23.5807 0 TD +0 Tw +<0042>Tj +/TT8 1 Tf +0.603 0 TD +0.1756 Tw +(A, and)Tj +-24.1837 -1.2222 TD +0 Tw +(meta-Control-W would echo as #)Tj +/TT17 1 Tf +14.7144 0 TD +<0042>Tj +/TT8 1 Tf +0.603 0 TD +(W.)Tj +-25.3174 -2.0056 TD +0.1256 Tw +(The value of )Tj +/TT10 1 Tf +10 0 0 10 229.0565 300.62 Tm +0 Tw +(ECHOCHAR)Tj +/TT8 1 Tf +9 0 0 9 277.0643 300.62 Tm +0.1256 Tw +[( is the previous echo mode for )]TJ +/TT16 1 Tf +14.478 0 TD +0 Tw +(CHARCODE)Tj +/TT8 1 Tf +4.8008 0 TD +0.1256 Tw +[(. If )]TJ +/TT16 1 Tf +2.0466 0 TD +0 Tw +(MODE )Tj +/TT10 1 Tf +10 0 0 10 498.7171 300.62 Tm +0.302 Tw +(= NIL)Tj +/TT8 1 Tf +9 0 0 9 531.742 300.62 Tm +0 Tw +(,)Tj +/TT10 1 Tf +10 0 0 10 174 288.62 Tm +(ECHOCHAR)Tj +/TT8 1 Tf +9 0 0 9 222.0078 288.62 Tm +( returns the current echo mode without changing it.)Tj +-5.3342 -2.1056 TD +(Warning: In some fonts, control and meta characters may be used for printable characters.)Tj +0 -1.2278 TD +(If the echomode is set to )Tj +/TT10 1 Tf +10 0 0 10 272.4814 258.62 Tm +(INDICATE)Tj +/TT8 1 Tf +9 0 0 9 320.4892 258.62 Tm +( for these characters, they will not print out correctly.)Tj +/TT10 1 Tf +10 0 0 10 150 235.39 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 235.39 Tm +(ECHOCONTROL)Tj +/F1 1 Tf +10 0 0 10 215.4 235.39 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 218.18 235.39 Tm +(CHAR MODE TTBL)Tj +/TT10 1 Tf +10 0 0 10 293.7923 235.39 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 299.7933 235.39 Tm +[( )-20926.3([Function])]TJ +/TT10 1 Tf +10 0 0 10 174 218.39 Tm +(ECHOCONTROL)Tj +/TT8 1 Tf +9 0 0 9 240.0107 218.39 Tm +0.0922 Tw +[( is an old, limited version of )]TJ +/TT10 1 Tf +10 0 0 10 359.0151 218.39 Tm +0 Tw +(ECHOCHAR)Tj +/TT8 1 Tf +9 0 0 9 407.0229 218.39 Tm +0.0922 Tw +(, that can only specify the echo)Tj +-25.8914 -1.3278 TD +0.0011 Tw +(mode of control characters. )Tj +/TT16 1 Tf +12.5217 0 TD +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.001 Tw +( is a character or character code. If )Tj +/TT16 1 Tf +15.5452 0 TD +0 Tc +0 Tw +(CHAR)Tj +/TT8 1 Tf +2.4004 0 TD +0.0001 Tc +0.001 Tw +( is an alphabetic)Tj +-32.8676 -1.2944 TD +0 Tc +0.0167 Tw +(character \(or code\), it refers to the corresponding control character, e.g., )Tj +/TT10 1 Tf +10 0 0 10 461.9801 194.79 Tm +0 Tw +(\(ECHOCONTROL)Tj +-28.798 -1.2 TD +(Z INDICATE\))Tj +/TT8 1 Tf +9 0 0 9 252.0127 182.79 Tm +( if equivalent to )Tj +/TT10 1 Tf +10 0 0 10 316.5639 182.79 Tm +(\(ECHOCHAR \(CHARCODE )Tj +/TT17 1 Tf +12.002 0 TD +<0042>Tj +/TT10 1 Tf +0.603 0 TD +(Z\) INDICATE\))Tj +/TT8 1 Tf +9 0 0 9 520.6265 182.79 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 159.56 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 159.56 Tm +(ECHOMODE)Tj +/F1 1 Tf +10 0 0 10 199.2 159.56 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 201.98 159.56 Tm +(FLG TTBL)Tj +/TT10 1 Tf +10 0 0 10 245.187 159.56 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.188 159.56 Tm +[( )-26326.9([Function])]TJ +-8.5764 -1.8889 TD +(If )Tj +/TT16 1 Tf +0.9399 0 TD +(FLG )Tj +/TT10 1 Tf +10 0 0 10 204.5028 142.56 Tm +0.049 Tw +(= T)Tj +/TT8 1 Tf +9 0 0 9 222.9957 142.56 Tm +0.02 Tw +(, turns echoing for terminal table )Tj +/TT16 1 Tf +14.8505 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.02 Tw +[( on. If )]TJ +/TT16 1 Tf +3.1278 0 TD +0 Tw +(FLG )Tj +/TT10 1 Tf +10 0 0 10 428.4476 142.56 Tm +0.049 Tw +(= NIL)Tj +/TT8 1 Tf +9 0 0 9 458.9425 142.56 Tm +0.02 Tw +(, turns echoing off.)Tj +-31.6603 -1.3278 TD +0 Tw +(Returns the previous setting.)Tj +0 -2.0056 TD +0.0378 Tw +[(Note: Unlike )]TJ +/TT10 1 Tf +10 0 0 10 230.4526 112.56 Tm +0 Tw +(ECHOCHAR)Tj +/TT8 1 Tf +9 0 0 9 278.4604 112.56 Tm +0.0378 Tw +(, this only affects echoing of typed-in characters, not printing of)Tj +-11.6067 -1.3278 TD +0 Tw +(characters.)Tj +/TT10 1 Tf +10 0 0 10 150 78.33 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 78.33 Tm +(GETECHOMODE)Tj +/F1 1 Tf +10 0 0 10 215.4 78.33 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 218.18 78.33 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 239.7835 78.33 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 245.7845 78.33 Tm +[( )-26927.3([Function])]TJ +-7.9761 -1.8833 TD +(Returns the current echo mode for )Tj +/TT16 1 Tf +15.4316 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +ET +endstream +endobj +31 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +/TT17 32 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +34 0 obj +<< +/Length 6476 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-7)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 78 569.54 Tm +0.4278 Tw +(The following functions manipulate the "raise mode," which determines whether lower case)Tj +0 -1.2222 TD +0.1144 Tw +[(characters are converted to upper case when input from the terminal. There is no "raise mode" for)]TJ +T* +0 Tw +(input from files.)Tj +/TT10 1 Tf +10 0 0 10 102 525.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 525.26 Tm +(RAISE)Tj +/F1 1 Tf +10 0 0 10 135 525.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 137.78 525.26 Tm +(FLG TTBL)Tj +/TT10 1 Tf +10 0 0 10 180.987 525.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 186.988 525.26 Tm +[( )-28126.9([Function])]TJ +-6.7764 -1.8889 TD +0.0544 Tw +(Sets the )Tj +/TT10 1 Tf +10 0 0 10 159.75 508.26 Tm +0 Tw +(RAISE)Tj +/TT8 1 Tf +9 0 0 9 189.7549 508.26 Tm +0.0544 Tw +[( mode for terminal table )]TJ +/TT16 1 Tf +11.2112 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0544 Tw +[(. If )]TJ +/TT16 1 Tf +1.8333 0 TD +0 Tw +(FLG )Tj +/TT10 1 Tf +10 0 0 10 351.5419 508.26 Tm +0.132 Tw +(= NIL)Tj +/TT8 1 Tf +9 0 0 9 382.8668 508.26 Tm +0.0544 Tw +(, all characters are passed)Tj +-28.5408 -1.3333 TD +0.0911 Tw +[(as typed. If )]TJ +/TT16 1 Tf +5.7814 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +10 0 0 10 194.2355 496.26 Tm +0.217 Tw +[( = T)]TJ +/TT8 1 Tf +9 0 0 9 222.5795 496.26 Tm +0.0911 Tw +(, input is echoed as typed, but lowercase letters are converted to)Tj +-10.7311 -1.3333 TD +0.0244 Tw +[(upper case. If )]TJ +/TT16 1 Tf +6.5436 0 TD +0 Tw +(FLG)Tj +/TT10 1 Tf +10 0 0 10 201.0948 484.26 Tm +0.058 Tw +[( = 0)]TJ +/TT8 1 Tf +9 0 0 9 226.2587 484.26 Tm +0.0244 Tw +[(, input is converted to uppercase before it is echoed. Returns the)]TJ +-11.1399 -1.3278 TD +0 Tw +(previous setting.)Tj +/TT10 1 Tf +10 0 0 10 102 450.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 450.03 Tm +(GETRAISE)Tj +/F1 1 Tf +10 0 0 10 151.2 450.03 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 153.98 450.03 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 175.5835 450.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 181.5845 450.03 Tm +[( )-28727.3([Function])]TJ +-6.1761 -1.8889 TD +(Returns the current )Tj +/TT10 1 Tf +10 0 0 10 205.5454 433.03 Tm +(RAISE)Tj +/TT8 1 Tf +9 0 0 9 235.5503 433.03 Tm +( mode for )Tj +/TT16 1 Tf +4.5425 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT10 1 Tf +10 0 0 10 102 409.74 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 409.74 Tm +(DELETECONTROL)Tj +/F1 1 Tf +10 0 0 10 178.2 409.74 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 180.98 409.74 Tm +(TYPE MESSAGE TTBL)Tj +/TT10 1 Tf +10 0 0 10 272.7949 409.74 Tm +(\))Tj +/TT6 1 Tf +0.6001 0 TD +( )Tj +/F1 1 Tf +15.9064 0 TD +([Function])Tj +/TT8 1 Tf +9 0 0 9 126 392.74 Tm +0.3089 Tw +(Specifies the output protocol when a )Tj +/TT10 1 Tf +10 0 0 10 290.5604 392.74 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 350.5701 392.74 Tm +0.3089 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 369.0984 392.74 Tm +0 Tw +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 429.1082 392.74 Tm +0.3089 Tw +[( is typed, by)]TJ +-33.6787 -1.3278 TD +0 Tw +(specifying character strings to print when characters are deleted.)Tj +0 -2 TD +0.0756 Tw +(Interlisp-10 \(designed for use on hardcopy terminals\) echos the characters being deleted,)Tj +0 -1.2222 TD +0.1233 Tw +(preceding the first by a \\ and following the last by a \\, so that it is easy to see exactly)Tj +T* +0.0522 Tw +[(what was deleted. Interlisp-D is initially set up to physically erase the deleted characters)]TJ +0 -1.2278 TD +0 Tw +(from the display, so the )Tj +/TT10 1 Tf +10 0 0 10 222.0732 329.74 Tm +(DELETECONTROL)Tj +/TT8 1 Tf +9 0 0 9 300.0859 329.74 Tm +( strings are initialized to the null string.)Tj +-19.3429 -2.1056 TD +(The various values of )Tj +/TT16 1 Tf +9.7383 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( specify different phases of the deletion, as follows:)Tj +/TT10 1 Tf +10 0 0 10 156 290.85 Tm +(1STCHDEL)Tj +/TT16 1 Tf +9 0 0 9 216 290.85 Tm +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.0244 Tw +[( is the message printed the first time )]TJ +/TT10 1 Tf +10 0 0 10 401.9699 290.85 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 216 278.9 Tm +(is typed. Initially "\\" in Interlisp-10.)Tj +/TT10 1 Tf +10 0 0 10 156 259.56 Tm +(NTHCHDEL)Tj +/TT16 1 Tf +9 0 0 9 216 259.56 Tm +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.4189 Tw +[( is the message printed when the second and)]TJ +-4.2007 -1.3333 TD +0 Tw +(subsequent )Tj +/TT10 1 Tf +10 0 0 10 267.3388 247.56 Tm +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 327.3486 247.56 Tm +0.4211 Tw +[( characters are typed \(without)]TJ +-12.3721 -1.3278 TD +0 Tw +(intervening characters\). Initially "" in Interlisp-10.)Tj +/TT10 1 Tf +10 0 0 10 150 216.27 Tm +(POSTCHDEL)Tj +/TT16 1 Tf +9 0 0 9 216 216.27 Tm +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.3156 Tw +[( is the message printed when input is resumed)]TJ +-4.2007 -1.3333 TD +0.6233 Tw +(following a sequence of one or more )Tj +/TT10 1 Tf +10 0 0 10 401.9638 204.27 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 216 192.32 Tm +(characters. Initially "\\" in Interlisp-10.)Tj +/TT10 1 Tf +10 0 0 10 144 172.98 Tm +(EMPTYCHDEL)Tj +/TT16 1 Tf +9 0 0 9 216 172.98 Tm +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.2056 Tw +[( is the message printed when a )]TJ +/TT10 1 Tf +10 0 0 10 391.4861 172.98 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 451.4959 172.98 Tm +0.2056 Tw +[( is)]TJ +-26.1662 -1.3278 TD +0.2644 Tw +[(typed and there are no characters in the buffer. Initially)]TJ +0 -1.4444 TD +0 Tw +("##)Tj +1.5822 0.2222 TD +(cr)Tj +0.84 -0.2222 TD +(" in Interlisp-10.)Tj +/TT10 1 Tf +10 0 0 10 180 128.69 Tm +(ECHO)Tj +/TT8 1 Tf +9 0 0 9 216 128.69 Tm +(If )Tj +/TT16 1 Tf +1.001 0 TD +(TYPE)Tj +/TT10 1 Tf +10 0 0 10 246.6128 128.69 Tm +0.194 Tw +[( = ECHO)]TJ +/TT8 1 Tf +9 0 0 9 292.4996 128.69 Tm +0.0811 Tw +(, the characters deleted by )Tj +/TT10 1 Tf +10 0 0 10 402.0007 128.69 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 216 116.74 Tm +(are echoed. )Tj +/TT16 1 Tf +5.5147 0 TD +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +( is ignored.)Tj +/TT10 1 Tf +10 0 0 10 168 96.8 Tm +(NOECHO)Tj +/TT8 1 Tf +9 0 0 9 216 96.8 Tm +(If )Tj +/TT16 1 Tf +1.5721 0 TD +(TYPE )Tj +/TT10 1 Tf +10 0 0 10 271.2437 96.8 Tm +1.566 Tw +(= NOECHO)Tj +/TT8 1 Tf +9 0 0 9 334.9115 96.8 Tm +0.6522 Tw +(, the characters deleted by)Tj +/TT10 1 Tf +10 0 0 10 216 84.8 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 276.0097 84.8 Tm +( are not echoed. )Tj +/TT16 1 Tf +7.4687 0 TD +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +( is ignored.)Tj +/TT10 1 Tf +10 0 0 10 144 64.51 Tm +(LINEDELETE)Tj +/TT16 1 Tf +9 0 0 9 216 64.51 Tm +(MESSAGE)Tj +/TT8 1 Tf +4.2007 0 TD +0.2456 Tw +[( is the message printed when the )]TJ +/TT10 1 Tf +10 0 0 10 401.991 64.51 Tm +0 Tw +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 216 50.56 Tm +(character is typed. Initially "##)Tj +13.9011 0.2222 TD +(cr)Tj +0.84 -0.2222 TD +(".)Tj +ET +endstream +endobj +35 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +37 0 obj +<< +/Length 7548 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-8)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.49 Tm +0.1867 Tw +[(Note: In Interlisp-10, the )]TJ +/TT10 1 Tf +10 0 0 10 284.0763 569.49 Tm +0 Tw +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 344.086 569.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 350.266 569.49 Tm +(1STCHDEL)Tj +/TT8 1 Tf +9 0 0 9 398.2738 569.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 404.4538 569.49 Tm +(NTHCHDEL)Tj +/TT8 1 Tf +9 0 0 9 452.4616 569.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 458.6416 569.49 Tm +(POSTCHDEL)Tj +/TT8 1 Tf +9 0 0 9 512.6504 569.49 Tm +0.1867 Tw +(, and)Tj +/TT10 1 Tf +10 0 0 10 174 557.49 Tm +0 Tw +(EMPTYCHDEL)Tj +/TT8 1 Tf +9 0 0 9 234.0097 557.49 Tm +( messages must be 4 characters or fewer in length.)Tj +/TT10 1 Tf +10 0 0 10 174 538.49 Tm +(DELETECONTROL)Tj +/TT8 1 Tf +9 0 0 9 252.0127 538.49 Tm +0.0967 Tw +[( returns the previous message as a string. If )]TJ +/TT16 1 Tf +20.6244 0 TD +0 Tw +(MESSAGE)Tj +/TT10 1 Tf +10 0 0 10 475.4383 538.49 Tm +0.233 Tw +[( = NIL)]TJ +/TT8 1 Tf +9 0 0 9 516.1041 538.49 Tm +0.0967 Tw +(, the)Tj +-38.0116 -1.3333 TD +0.1278 Tw +[(value returned is the previous message without changing it. For )]TJ +/TT16 1 Tf +30.18 0 TD +0 Tw +(TYPE)Tj +/TT10 1 Tf +10 0 0 10 467.2232 526.49 Tm +0.307 Tw +[( = ECHO)]TJ +/TT8 1 Tf +9 0 0 9 515.3701 526.49 Tm +0.1278 Tw +[( and)]TJ +/TT10 1 Tf +10 0 0 10 174 514.49 Tm +0 Tw +(NOECHO)Tj +/TT8 1 Tf +9 0 0 9 210.0058 514.49 Tm +0.2856 Tw +(, the value of )Tj +/TT10 1 Tf +10 0 0 10 273.8728 514.49 Tm +0 Tw +(DELETECONTROL)Tj +/TT8 1 Tf +9 0 0 9 351.8854 514.49 Tm +0.2856 Tw +[( is the previous echo mode, i.e., )]TJ +/TT10 1 Tf +10 0 0 10 496.7324 514.49 Tm +0 Tw +(ECHO)Tj +/TT8 1 Tf +9 0 0 9 520.7363 514.49 Tm +0.2856 Tw +[( or)]TJ +/TT10 1 Tf +10 0 0 10 174 502.49 Tm +0 Tw +(NOECHO)Tj +/TT8 1 Tf +9 0 0 9 210.0058 502.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 479.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 479.26 Tm +(GETDELETECONTROL)Tj +/F2 1 Tf +10 0 0 10 242.4 479.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 245.27 479.26 Tm +(TYPE TTBL)Tj +/TT10 1 Tf +10 0 0 10 293.8779 479.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 299.8789 479.26 Tm +[( )-20916.8([Function])]TJ +-13.9865 -1.8889 TD +(Returns the current )Tj +/TT10 1 Tf +10 0 0 10 253.5454 462.26 Tm +(DELETECONTROL)Tj +/TT8 1 Tf +9 0 0 9 331.5581 462.26 Tm +( mode for )Tj +/TT16 1 Tf +4.5425 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( in )Tj +/TT16 1 Tf +1.373 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +/TT4 1 Tf +10 0 0 10 126 433.97 Tm +(Line-Buffering)Tj +/TT8 1 Tf +9 0 0 9 126 410.31 Tm +0.0289 Tw +(Characters typed at the terminal are stored in two buffers before they are passed to an input function.)Tj +0 -1.2222 TD +0.0344 Tw +[(All characters typed in are put into the low-level "system buffer", which allows type-ahead. When an)]TJ +T* +0.0389 Tw +(input function is entered, characters are transferred to the "line buffer" until a character with terminal)Tj +0 -1.2278 TD +0.0933 Tw +(syntax class )Tj +/TT10 1 Tf +10 0 0 10 177.0613 377.26 Tm +0 Tw +(EOL)Tj +/TT8 1 Tf +9 0 0 9 195.0643 377.26 Tm +0.0933 Tw +[( appears \(or, for calls from )]TJ +/TT10 1 Tf +10 0 0 10 307.2429 377.26 Tm +0 Tw +(READ)Tj +/TT8 1 Tf +9 0 0 9 331.2468 377.26 Tm +0.0933 Tw +(, when the count of unbalanced open parentheses)Tj +-22.8052 -1.3333 TD +0.12 Tw +[(reaches 0\). Note that )]TJ +/TT10 1 Tf +10 0 0 10 217.3702 365.26 Tm +0 Tw +(PEEKC)Tj +/TT8 1 Tf +9 0 0 9 247.3751 365.26 Tm +0.12 Tw +[( is an exception; it returns the character immediately when its second)]TJ +-13.4861 -1.3333 TD +0.0522 Tw +(argument is )Tj +/TT10 1 Tf +10 0 0 10 176.7915 353.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 194.7945 353.26 Tm +0.0522 Tw +[(. Until this time, the user can delete characters one at a time from the line buffer by)]TJ +-7.6438 -1.3333 TD +0.0967 Tw +(typing the current )Tj +/TT10 1 Tf +10 0 0 10 203.0753 341.26 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 263.0851 341.26 Tm +0.0967 Tw +[( character, or delete the entire line buffer back to the last carriage-)]TJ +-15.2317 -1.3333 TD +0 Tw +(return by typing the current )Tj +/TT10 1 Tf +10 0 0 10 239.9722 329.26 Tm +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 299.9819 329.26 Tm +(.)Tj +-19.3313 -3 TD +0.0067 Tw +(This line editing is not performed by )Tj +/TT10 1 Tf +10 0 0 10 274.3707 302.26 Tm +0 Tw +(READ)Tj +/TT8 1 Tf +9 0 0 9 298.3746 302.26 Tm +0.0067 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 311.4628 302.26 Tm +0 Tw +(RATOM)Tj +/TT8 1 Tf +9 0 0 9 341.4677 302.26 Tm +0.0067 Tw +(, but by Interlisp, i.e., it does not matter \(nor is it)Tj +-23.9409 -1.3278 TD +0.0156 Tw +(necessarily known\) which function will ultimately process the characters, only that they are still in the)Tj +0 -1.2222 TD +0.1189 Tw +[(Interlisp line buffer. However, the function that is requesting input at the time the buffering starts)]TJ +T* +0.2344 Tw +[(does determine whether parentheses counting is observed. For example, if a program performs)]TJ +/TT10 1 Tf +10 0 0 10 126 257.26 Tm +0.199 Tw +(\(PROGN \(RATOM\) \(READ\)\))Tj +/TT8 1 Tf +9 0 0 9 262.0015 257.26 Tm +0.0822 Tw +[( and the user types in )]TJ +/TT10 1 Tf +10 0 0 10 354.1036 257.26 Tm +0.199 Tw +("A \(B C D\)")Tj +/TT8 1 Tf +9 0 0 9 426.0843 257.26 Tm +0.0822 Tw +(, the user must type in the)Tj +-33.3427 -1.3278 TD +0.0278 Tw +(carriage-return following the right parenthesis before any action is taken, because the line buffering is)Tj +0 -1.2278 TD +0.0978 Tw +(happening under )Tj +/TT10 1 Tf +10 0 0 10 199.259 234.26 Tm +0 Tw +(RATOM)Tj +/TT8 1 Tf +9 0 0 9 229.2639 234.26 Tm +0.0978 Tw +[(. If the program had performed )]TJ +/TT10 1 Tf +10 0 0 10 364.5528 234.26 Tm +0.234 Tw +(\(PROGN \(READ\) \(READ\)\))Tj +/TT8 1 Tf +9 0 0 9 495.2533 234.26 Tm +0.0978 Tw +(, the line-)Tj +-41.0281 -1.3333 TD +0.0422 Tw +(buffering would be under )Tj +/TT10 1 Tf +10 0 0 10 232.9316 222.26 Tm +0 Tw +(READ)Tj +/TT8 1 Tf +9 0 0 9 256.9355 222.26 Tm +0.0422 Tw +(, so that the right parenthesis would terminate line buffering, and no)Tj +-14.5484 -1.3278 TD +0 Tw +(terminating carriage-return would be required.)Tj +0 -2.8889 TD +0.0367 Tw +(Once a carriage-return has been typed, the entire line is "available" even if not all of it is processed by)Tj +0 -1.2222 TD +0.2411 Tw +[(the function initiating the request for input. If any characters are "left over", they are returned)]TJ +0 -1.2278 TD +0.0078 Tw +[(immediately on the next request for input. For example, )]TJ +/TT10 1 Tf +10 0 0 10 353.4798 162.26 Tm +0.018 Tw +(\(LIST \(RATOM\) \(READC\) \(RATOM\)\))Tj +/TT8 1 Tf +9 0 0 9 126 150.31 Tm +0.05 Tw +[(when the input is "A Bcr" returns the three-element list \(A % B\) and leaves the carriage-return in the)]TJ +0 -1.2222 TD +0 Tw +(buffer.)Tj +0 -2.8944 TD +0.1133 Tw +(If a carriage-return is typed when the input under )Tj +/TT10 1 Tf +10 0 0 10 336.0496 113.26 Tm +0 Tw +(READ)Tj +/TT8 1 Tf +9 0 0 9 360.0535 113.26 Tm +0.1133 Tw +[( is not "complete" \(the parentheses are not)]TJ +-26.006 -1.3278 TD +0.1289 Tw +(balanced or a string is in progress\), line buffering continues, but the lines completed so far are not)Tj +0 -1.2278 TD +0 Tw +(available for editing with )Tj +/TT10 1 Tf +10 0 0 10 228.7222 90.26 Tm +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 288.7319 90.26 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 301.7002 90.26 Tm +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 361.7099 90.26 Tm +(.)Tj +-26.19 -3 TD +(The function )Tj +/TT10 1 Tf +10 0 0 10 178.9277 63.26 Tm +(CONTROL)Tj +/TT8 1 Tf +9 0 0 9 220.9345 63.26 Tm +( is available to defeat line-buffering:)Tj +/TT10 1 Tf +10 0 0 10 150 40.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 40.03 Tm +(CONTROL)Tj +/F3 1 Tf +10 0 0 10 193.8 40.03 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 196.58 40.03 Tm +(MODE TTBL)Tj +/TT10 1 Tf +10 0 0 10 245.1879 40.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.1889 40.03 Tm +[( )-26326.8([Function])]TJ +ET +endstream +endobj +38 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 16 0 R +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +40 0 obj +<< +/Length 6049 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 463.5 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-9)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +(If )Tj +/TT16 1 Tf +0.9744 0 TD +(MODE )Tj +/TT10 1 Tf +10 0 0 10 162.9437 569.49 Tm +0.13 Tw +(= T)Tj +/TT8 1 Tf +9 0 0 9 182.2466 569.49 Tm +0.0544 Tw +(, eliminates Interlisps normal line-buffering for the terminal table )Tj +/TT16 1 Tf +29.8196 0 TD +0 Tw +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +0.0544 Tw +[(. If)]TJ +/TT16 1 Tf +-38.4696 -1.3333 TD +0 Tw +(MODE)Tj +/TT10 1 Tf +10 0 0 10 147.6035 557.49 Tm +0.102 Tw +[( = NIL)]TJ +/TT8 1 Tf +9 0 0 9 185.6494 557.49 Tm +0.0422 Tw +[(, restores line-buffering \(normal\). When operating with a terminal table in)]TJ +-6.6277 -1.3333 TD +0 Tw +(which )Tj +/TT10 1 Tf +10 0 0 10 155.6262 545.49 Tm +0.741 Tw +(\(CONTROL T\))Tj +/TT8 1 Tf +9 0 0 9 229.0469 545.49 Tm +0.3089 Tw +[( has been performed, characters are returned to the calling)]TJ +-11.4497 -1.3278 TD +0 Tw +(function without line-buffering as described below.)Tj +/TT10 1 Tf +10 0 0 10 126 515.49 Tm +(CONTROL)Tj +/TT8 1 Tf +9 0 0 9 168.0068 515.49 Tm +( returns its previous setting.)Tj +/TT10 1 Tf +10 0 0 10 102 492.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 492.26 Tm +(GETCONTROL)Tj +/F3 1 Tf +10 0 0 10 162 492.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 164.78 492.26 Tm +(TTBL)Tj +/TT10 1 Tf +10 0 0 10 186.3835 492.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 192.3845 492.26 Tm +[( )-27527.3([Function])]TJ +-7.3761 -1.8833 TD +(Returns the current control mode for )Tj +/TT16 1 Tf +16.5107 0 TD +(TTBL)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-18.9111 -2.0667 TD +0.0922 Tw +(The function that initiates the request for input determines how the line is treated when)Tj +/TT10 1 Tf +10 0 0 10 126 445.66 Tm +0 Tw +(\(CONTROL T\))Tj +/TT8 1 Tf +9 0 0 9 192.0107 445.66 Tm +( is in effect:)Tj +/TT10 1 Tf +10 0 0 10 180 426.66 Tm +(READ)Tj +/TT8 1 Tf +9 0 0 9 216 426.66 Tm +0.0278 Tw +(If the expression being typed is a list, the effect is the same as)Tj +0 -1.3333 TD +0.2733 Tw +(though done with )Tj +/TT10 1 Tf +10 0 0 10 297.1466 414.66 Tm +0.657 Tw +(\(CONTROL NIL\))Tj +/TT8 1 Tf +9 0 0 9 381.7293 414.66 Tm +0.2733 Tw +(, i.e., line-buffering)Tj +-18.4144 -1.3278 TD +0.0611 Tw +[(continues until a carriage-return or matching parentheses. If)]TJ +0 -1.2222 TD +0.0578 Tw +(the expression being typed is not a list, it is returned as soon)Tj +T* +0.4967 Tw +(as a break or separator character is encountered, e.g.,)Tj +/TT10 1 Tf +10 0 0 10 216 369.66 Tm +0 Tw +(\(READ\))Tj +/TT8 1 Tf +9 0 0 9 252.0058 369.66 Tm +0.46 Tw +[( when the input is "ABC" immediately)]TJ +-4.0007 -1.3333 TD +0 Tw +(returns )Tj +/TT10 1 Tf +10 0 0 10 251.8769 357.66 Tm +(ABC)Tj +/TT8 1 Tf +9 0 0 9 269.8798 357.66 Tm +0.5322 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 286.2098 357.66 Tm +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +9 0 0 9 346.2196 357.66 Tm +0.5322 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 375.5354 357.66 Tm +0 Tw +(LINEDELETE)Tj +/TT8 1 Tf +9 0 0 9 435.5452 357.66 Tm +0.5322 Tw +[( are)]TJ +-24.3939 -1.3278 TD +0.2011 Tw +[(available on those characters still in the buffer. Thus, if a)]TJ +0 -1.2278 TD +0.0444 Tw +(program is performing several reads under )Tj +/TT10 1 Tf +10 0 0 10 392.6695 334.66 Tm +0.106 Tw +(\(CONTROL T\))Tj +/TT8 1 Tf +9 0 0 9 459.7402 334.66 Tm +0 Tw +(,)Tj +-27.0823 -1.3333 TD +0.15 Tw +(and the user types )Tj +/TT10 1 Tf +10 0 0 10 296.7047 322.66 Tm +0.359 Tw +("NOW IS THE TIME")Tj +/TT8 1 Tf +9 0 0 9 409.4913 322.66 Tm +0.15 Tw +[( followed by)]TJ +-21.499 -1.3333 TD +0.0267 Tw +(Control-Q, only )Tj +/TT10 1 Tf +10 0 0 10 281.6333 310.66 Tm +0 Tw +(TIME)Tj +/TT8 1 Tf +9 0 0 9 305.6372 310.66 Tm +0.0267 Tw +[( is deleted, since the rest of the line has)]TJ +-9.9597 -1.3278 TD +0 Tw +(already been transmitted to )Tj +/TT10 1 Tf +12.4404 0 TD +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +( and processed.)Tj +-14.8408 -2.0667 TD +0.49 Tw +(An exception to the above occurs when the break or)Tj +0 -1.2222 TD +0.3411 Tw +(separator character is an opening parenthesis, bracket or)Tj +0 -1.3644 TD +0.0778 Tw +(double-quote, since returning at this point would )Tj +/F1 1 Tf +10 0 0 10 419.2559 256.83 Tm +0.087 Tw +(leave the)Tj +-20.3256 -1.228 TD +0 Tw +(line )Tj +/TT8 1 Tf +9 0 0 9 236.6 244.55 Tm +0.0367 Tw +[(buffer in a "funny" state. Thus if the input to )]TJ +/TT10 1 Tf +20.4346 0 TD +0 Tw +(\(READ\))Tj +/TT8 1 Tf +3.6006 0 TD +0.0367 Tw +[( is)]TJ +-26.3241 -1.2889 TD +0.4233 Tw +("ABC\(", the ABC is not read until a carriage-return or)Tj +0 -1.2222 TD +0.1644 Tw +[(matching parentheses is encountered. In this case the user)]TJ +T* +0 Tw +(could )Tj +/TT10 1 Tf +2.8224 0 TD +(LINEDELETE)Tj +/TT8 1 Tf +6.001 0 TD +0.0778 Tw +[( the entire line, since all of the characters)]TJ +-8.8234 -1.2889 TD +0 Tw +(are still in the buffer.)Tj +/TT10 1 Tf +-4.3333 -2.1422 TD +(RATOM)Tj +/TT8 1 Tf +4.3333 0 TD +0.3378 Tw +(Characters are returned as soon as a break or separator)Tj +0 -1.2889 TD +0.4067 Tw +[(character is encountered. Until then, )]TJ +/TT10 1 Tf +18.983 0 TD +0 Tw +(LINEDELETE)Tj +/TT8 1 Tf +6.001 0 TD +0.4067 Tw +[( and)]TJ +/TT10 1 Tf +-24.9839 -1.2889 TD +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +6.001 0 TD +0.3211 Tw +[( may be used as with )]TJ +/TT10 1 Tf +11.4716 0 TD +0 Tw +(READ)Tj +/TT8 1 Tf +2.4004 0 TD +0.3211 Tw +[(. For example,)]TJ +/TT10 1 Tf +-19.873 -1.2889 TD +0 Tw +(\(RATOM\))Tj +/TT8 1 Tf +4.2007 0 TD +0.0222 Tw +[( followed by )]TJ +/TT10 1 Tf +5.8567 0 TD +0 Tw +("ABC")Tj +/TT8 1 Tf +13.8022 0 TD +0.0222 Tw +[( returns)]TJ +/TT10 1 Tf +-23.8596 -1.2889 TD +0 Tw +(AB)Tj +/TT8 1 Tf +1.2002 0 TD +0.0278 Tw +(. )Tj +/TT10 1 Tf +0.8056 0 TD +0 Tw +(\(RATOM\))Tj +/TT8 1 Tf +4.2007 0 TD +0.0278 Tw +[( followed by "\(" returns \( and types)]TJ +-6.2064 -1.2889 TD +0.1267 Tw +(## indicating that control-A was attempted with nothing in)Tj +0 -1.2222 TD +0.4211 Tw +(the buffer, since the \( is a break character and would)Tj +T* +0 Tw +(therefore already have been read.)Tj +/TT10 1 Tf +-4.3333 -2.1489 TD +(READC)Tj +0 -1.2544 TD +(PEEKC)Tj +/TT8 1 Tf +4.3333 0 TD +0.3178 Tw +(The character is returned immediately; no line editing is)Tj +0 -1.3278 TD +0.0433 Tw +[(possible. In particular, )]TJ +/TT10 1 Tf +10.5474 0 TD +0 Tw +(\(READC\))Tj +/TT8 1 Tf +4.2007 0 TD +0.0433 Tw +[( is perfectly happy to return)]TJ +ET +endstream +endobj +41 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F3 25 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +43 0 obj +<< +/Length 6825 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-10)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 264 569.54 Tm +(the )Tj +/TT10 1 Tf +1.7205 0 TD +(CHARDELETE)Tj +/TT8 1 Tf +6.001 0 TD +0.0833 Tw +[( or )]TJ +/TT10 1 Tf +1.6076 0 TD +0 Tw +(LINEDELETE)Tj +/TT8 1 Tf +6.001 0 TD +0.0833 Tw +[( characters, or the )]TJ +/TT10 1 Tf +8.4002 0 TD +0 Tw +(ESCAPE)Tj +/TT8 1 Tf +-23.7303 -1.2889 TD +(character \()Tj +/TT10 1 Tf +4.6479 0 TD +(%)Tj +/TT8 1 Tf +0.6001 0 TD +(\).)Tj +-20.5814 -2.9556 TD +(The system buffer and line buffer can be directly manipulated using the following functions.)Tj +/TT10 1 Tf +10 0 0 10 150 509.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 509.06 Tm +(CLEARBUF)Tj +/F1 1 Tf +10 0 0 10 199.2 509.06 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 201.98 509.06 Tm +(FILE FLG)Tj +/TT10 1 Tf +10 0 0 10 245.187 509.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 251.188 509.06 Tm +[( )-26326.9([Function])]TJ +-8.5764 -1.8833 TD +0.1356 Tw +(Clears the input buffer for )Tj +/TT16 1 Tf +12.4864 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1356 Tw +[(. If )]TJ +/TT16 1 Tf +2.0766 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1356 Tw +[( is )]TJ +/TT10 1 Tf +1.486 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1356 Tw +[( and )]TJ +/TT16 1 Tf +2.464 0 TD +0 Tw +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.1356 Tw +[( is )]TJ +/TT10 1 Tf +1.486 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1356 Tw +(, the contents of Interlisps)Tj +-27.8001 -1.2889 TD +0.1433 Tw +(system buffer and line buffer are saved \(and can be obtained via )Tj +/TT10 1 Tf +30.3211 0 TD +0 Tw +(SYSBUF)Tj +/TT8 1 Tf +3.6006 0 TD +0.1433 Tw +[( and )]TJ +/TT10 1 Tf +2.4795 0 TD +0 Tw +(LINBUF)Tj +/TT8 1 Tf +-36.4012 -1.2889 TD +(described below\).)Tj +0 -2 TD +0.1644 Tw +(When you type Control-D or Control-E, or any of the interrupt characters that require)Tj +0 -1.2222 TD +0.71 Tw +(terminal interaction \(Control-G, or Control-P\), Interlisp automatically performs)Tj +/TT10 1 Tf +T* +0.3378 Tw +(\(CLEARBUF T T\))Tj +/TT8 1 Tf +9.0769 0 TD +0.1411 Tw +[(. For Control-P and, when the break is exited normally, control-H,)]TJ +-9.0769 -1.2889 TD +0 Tw +(Interlisp restores the buffer after the interaction.)Tj +0 -2 TD +0.0567 Tw +(The action of )Tj +/TT10 1 Tf +6.1617 0 TD +0.1367 Tw +(\(CLEARBUF T\))Tj +/TT8 1 Tf +7.3378 0 TD +0.0567 Tw +(, i.e., clearing of typeahead, is also available as the )Tj +/TT10 1 Tf +22.8948 0 TD +0 Tw +(RUBOUT)Tj +/TT8 1 Tf +-36.3943 -1.2889 TD +0.2067 Tw +[(interrupt character, initially assigned to the delete key in Interlisp-D. Note that this)]TJ +0 -1.2222 TD +0.0133 Tw +(interrupt clears both buffers at the time it is typed, whereas the action of the )Tj +/TT10 1 Tf +33.9915 0 TD +0 Tw +(CHARDELETE)Tj +/TT8 1 Tf +-33.9915 -1.2889 TD +(and )Tj +/TT10 1 Tf +1.9429 0 TD +(LINEDELETE)Tj +/TT8 1 Tf +6.001 0 TD +( character occur at the time they are read.)Tj +/TT10 1 Tf +10 0 0 10 150 342.23 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 342.23 Tm +(SYSBUF)Tj +/F1 1 Tf +10 0 0 10 188.4 342.23 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 191.18 342.23 Tm +(FLG)Tj +/TT10 1 Tf +10 0 0 10 207.3826 342.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 213.3836 342.23 Tm +[( )-30527.4([Function])]TJ +-4.376 -1.8833 TD +(If )Tj +/TT16 1 Tf +0.9955 0 TD +(FLG )Tj +/TT10 1 Tf +2.5826 0 TD +0.1822 Tw +(= T)Tj +/TT8 1 Tf +1.9825 0 TD +0.0756 Tw +(, returns the contents of the system buffer \(as a string\) that was saved at the)Tj +-5.5606 -1.2889 TD +0 Tw +(last )Tj +/TT10 1 Tf +1.791 0 TD +(\(CLEARBUF T T\))Tj +/TT8 1 Tf +8.4014 0 TD +(. If )Tj +/TT16 1 Tf +1.6699 0 TD +(FLG )Tj +/TT10 1 Tf +2.4004 0 TD +(= NIL)Tj +/TT8 1 Tf +3.0005 0 TD +(, clears this internal buffer.)Tj +/TT10 1 Tf +10 0 0 10 150 290.8 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 290.8 Tm +(LINBUF)Tj +/F1 1 Tf +10 0 0 10 188.4 290.8 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 191.18 290.8 Tm +(FLG)Tj +/TT10 1 Tf +10 0 0 10 207.3826 290.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 213.3836 290.8 Tm +[( )-30527.4([Function])]TJ +-4.376 -1.8833 TD +(Same as )Tj +/TT10 1 Tf +3.8105 0 TD +(SYSBUF)Tj +/TT8 1 Tf +3.6006 0 TD +( for the line buffer.)Tj +-12.7445 -2.9556 TD +0.1511 Tw +(If both the system buffer and Interlisps line buffer are empty, the internal buffers associated with)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(LINBUF)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT10 1 Tf +2.1929 0 TD +(SYSBUF)Tj +/TT8 1 Tf +3.6006 0 TD +( are not changed by a )Tj +/TT10 1 Tf +9.6914 0 TD +(\(CLEARBUF T T\).)Tj +10 0 0 10 150 214.6 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 214.6 Tm +(BKSYSBUF)Tj +/TT16 1 Tf +4.7999 0 TD +( X FLG RDTBL)Tj +/TT10 1 Tf +10 0 0 10 264.0105 214.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 270.0115 214.6 Tm +[( )-24235.4([Function])]TJ +/TT10 1 Tf +-10.6679 -1.8833 TD +(BKSYSBUF)Tj +/TT8 1 Tf +4.8008 0 TD +0.0489 Tw +[( appends the )]TJ +/TT10 1 Tf +6.0817 0 TD +0 Tw +(PRIN1)Tj +/TT8 1 Tf +3.0005 0 TD +0.0489 Tw +(-name of )Tj +/TT16 1 Tf +4.2535 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0489 Tw +[( to the system buffer. The effect is the same as)]TJ +-18.7366 -1.2889 TD +0.0322 Tw +(though the user typed )Tj +/TT16 1 Tf +10.1855 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +[(. Some implementations have a limit on the length of )]TJ +/TT16 1 Tf +24.1894 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0322 Tw +(, in which)Tj +-35.5751 -1.2889 TD +0 Tw +(case characters in )Tj +/TT16 1 Tf +7.9585 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( beyond the limit are ignored. Returns )Tj +/TT16 1 Tf +17.3574 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +-26.5161 -2.0667 TD +(If )Tj +/TT16 1 Tf +1.0577 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.1378 Tw +[( is )]TJ +/TT10 1 Tf +1.4904 0 TD +0 Tw +(T)Tj +/TT8 1 Tf +0.6001 0 TD +0.1378 Tw +(, then the )Tj +/TT10 1 Tf +4.7698 0 TD +0 Tw +(PRIN2)Tj +/TT8 1 Tf +2.9995 0 TD +0.1378 Tw +(-name of )Tj +/TT16 1 Tf +4.4313 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.1378 Tw +[( is used, computed with respect to the readtable)]TJ +/TT16 1 Tf +-17.7492 -1.2889 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0711 Tw +(. If )Tj +/TT16 1 Tf +1.5621 0 TD +0 Tw +(RDTBL)Tj +/TT8 1 Tf +3.0005 0 TD +0.0711 Tw +[( is )]TJ +/TT10 1 Tf +1.3571 0 TD +0 Tw +(NIL)Tj +/TT8 1 Tf +1.8003 0 TD +0.0711 Tw +[( or omitted, the current readtable of the )]TJ +/TT10 1 Tf +18.2334 0 TD +0 Tw +(TTY)Tj +/TT8 1 Tf +1.8003 0 TD +0.0711 Tw +[( process \(which is to)]TJ +-30.7542 -1.2889 TD +0.0033 Tw +(receive the characters\) is used. Use this for copy selection functions that want their output)Tj +0 -1.2222 TD +0 Tw +(to be a readable expression in an Exec.)Tj +0 -2 TD +0.1467 Tw +(Note that if you are typing at the same time as the )Tj +/TT10 1 Tf +24.0813 0 TD +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +4.8008 0 TD +0.1467 Tw +[( is being performed, the)]TJ +-28.8821 -1.2889 TD +0 Tw +(relative order of the typein and the characters of )Tj +/TT16 1 Tf +21.5513 0 TD +(X)Tj +/TT8 1 Tf +0.6001 0 TD +( is unpredictable.)Tj +/TT10 1 Tf +10 0 0 10 150 69.17 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 69.17 Tm +(BKLINBUF)Tj +/F3 1 Tf +10 0 0 10 199.2 69.17 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 201.98 69.17 Tm +(STR)Tj +/TT10 1 Tf +10 0 0 10 218.1826 69.17 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 224.1836 69.17 Tm +[( )-29327.4([Function])]TJ +ET +endstream +endobj +44 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F3 25 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +46 0 obj +<< +/Length 6858 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-11)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT16 1 Tf +9 0 0 9 126 569.49 Tm +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1478 Tw +[( is a string. )]TJ +/TT10 1 Tf +10 0 0 10 196.4542 569.49 Tm +0 Tw +(BKLINBUF)Tj +/TT8 1 Tf +9 0 0 9 244.462 569.49 Tm +0.1478 Tw +[( sets Interlisps line buffer to )]TJ +/TT16 1 Tf +13.6787 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1478 Tw +[(. Some implementations)]TJ +-28.6414 -1.3278 TD +0.1178 Tw +(have a limit on the length of )Tj +/TT16 1 Tf +13.4929 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1178 Tw +(, in which case characters in )Tj +/TT16 1 Tf +13.2711 0 TD +0 Tw +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +0.1178 Tw +[( beyond the limit are)]TJ +-30.3646 -1.2889 TD +0 Tw +(ignored. Returns )Tj +/TT16 1 Tf +7.937 0 TD +(STR)Tj +/TT8 1 Tf +1.8003 0 TD +(.)Tj +/TT6 1 Tf +10 0 0 10 102 523 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 105.33 523 Tm +(BKSYSCHARCODE)Tj +/TT19 1 Tf +10 0 0 10 175.5414 523 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 178.3197 523 Tm +(CODE)Tj +/TT6 1 Tf +10 0 0 10 199.9233 523 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 444.63 523 Tm +([Function])Tj +-35.4033 -1.8444 TD +0.1011 Tw +(This function appends the character code )Tj +/TT16 1 Tf +19.053 0 TD +0 Tw +(CODE)Tj +/TT8 1 Tf +2.4004 0 TD +0.1011 Tw +[( to the system input buffer. The function)]TJ +/TT10 1 Tf +10 0 0 10 126 494.75 Tm +0 Tw +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 174 494.75 Tm +( is implemented by repeated calls to )Tj +/TT10 1 Tf +10 0 0 10 319.5381 494.75 Tm +(BKSYSCHARCODE)Tj +/TT8 1 Tf +9 0 0 9 397.5508 494.75 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 78 449.75 Tm +(BKLINBUF)Tj +/TT8 1 Tf +9 0 0 9 126.0078 449.75 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 130.6878 449.75 Tm +(BKSYSBUF)Tj +/TT8 1 Tf +9 0 0 9 178.6956 449.75 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 183.3756 449.75 Tm +(LINBUF)Tj +/TT8 1 Tf +9 0 0 9 219.3815 449.75 Tm +0.02 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 241.7273 449.75 Tm +0 Tw +(SYSBUF)Tj +/TT8 1 Tf +9 0 0 9 277.7332 449.75 Tm +0.02 Tw +[( provide a way of "undoing" a )]TJ +/TT10 1 Tf +10 0 0 10 400.6733 449.75 Tm +0 Tw +(CLEARBUF)Tj +/TT8 1 Tf +9 0 0 9 448.6812 449.75 Tm +0.02 Tw +[(. Thus to)]TJ +-41.1868 -1.3333 TD +0.1844 Tw +("peek" at various characters in the buffer, one could perform )Tj +/TT10 1 Tf +10 0 0 10 337.0243 437.75 Tm +0.442 Tw +(\(CLEARBUF T T\))Tj +/TT8 1 Tf +9 0 0 9 429.878 437.75 Tm +0.1844 Tw +(, examine the)Tj +-39.0976 -1.3333 TD +0 Tw +(buffers via )Tj +/TT10 1 Tf +10 0 0 10 122.7847 425.75 Tm +(LINBUF)Tj +/TT8 1 Tf +9 0 0 9 158.7905 425.75 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 178.5264 425.75 Tm +(SYSBUF)Tj +/TT8 1 Tf +9 0 0 9 214.5322 425.75 Tm +(, and then put them back.)Tj +-15.1702 -2.9944 TD +0.2156 Tw +(The more common use of these functions is in saving and restoring typeahead when a program)Tj +0 -1.2278 TD +0.0567 Tw +[(requires some unanticipated \(from the users standpoint\) input. The function )]TJ +/TT10 1 Tf +10 0 0 10 393.9254 387.75 Tm +0 Tw +(RESETBUFS)Tj +/TT8 1 Tf +9 0 0 9 447.9342 387.75 Tm +0.0567 Tw +[( provides)]TJ +-41.1038 -1.3278 TD +0.13 Tw +(a convenient way of simply clearing the input buffer, performing an interaction with the user, and)Tj +0 -1.2222 TD +0 Tw +(then restoring the input buffer. )Tj +/TT10 1 Tf +10 0 0 10 102 343.75 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 343.75 Tm +(RESETBUFS)Tj +/F3 1 Tf +10 0 0 10 156.6 340.75 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 159.38 343.75 Tm +(FORM)Tj +2.4 -0.3333 TD +(1)Tj +0.6 0.3333 TD +(, FORM)Tj +3.6 -0.3333 TD +(2)Tj +0.6 0.3333 TD +(,... FORMN)Tj +6 -0.3333 TD +(\))Tj +/TT8 1 Tf +0.6 0.3333 TD +[( )-7916.7([NLambda NoSpread Function])]TJ +-17.5089 -2.1778 TD +0.3389 Tw +(Clears any typeahead \(ringing the terminals bell if there was, indeed, typeahead\),)Tj +0 -1.2222 TD +0 Tw +(evaluates )Tj +/TT16 1 Tf +4.5037 0 TD +(FORM)Tj +2.3997 -0.3333 TD +(1)Tj +/TT8 1 Tf +0.6 0.3333 TD +(, )Tj +/TT16 1 Tf +0.5867 0 TD +(FORM)Tj +2.4 -0.3333 TD +(2)Tj +0.6 0.3333 TD +(,...)Tj +/TT8 1 Tf +2.4004 0 TD +( )Tj +/TT16 1 Tf +0.3367 0 TD +(FORM)Tj +2.3996 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +0.0867 Tw +[(, then restores the typeahead. Returns the value of)]TJ +/TT16 1 Tf +-16.8267 -1.6222 TD +0 Tw +(FORM)Tj +2.4 -0.3333 TD +(N)Tj +/TT8 1 Tf +0.6 0.3333 TD +(. Compiles open.)Tj +/TT4 1 Tf +10 0 0 10 54 252.61 Tm +(Dribble Files)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 249.9 m +534.01 249.9 l +S +BT +/TT8 1 Tf +9 0 0 9 78 227.9 Tm +0.0722 Tw +[(A dribble file is a "transcript" of all of the input and output on a terminal. In Interlisp-D, )]TJ +/TT10 1 Tf +10 0 0 10 443.978 227.9 Tm +0 Tw +(DRIBBLE)Tj +/TT8 1 Tf +9 0 0 9 78 215.95 Tm +0.0667 Tw +(opens a dribble file for the current process, recording the terminal input and output for that process.)Tj +0 -1.2222 TD +0 Tw +(Multiple processes can have separate dribble files open at the same time.)Tj +/TT10 1 Tf +10 0 0 10 102 182.61 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 182.61 Tm +(DRIBBLE)Tj +/TT4 1 Tf +10 0 0 10 145.8 182.61 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 148.5783 182.61 Tm +(FILE APPENDFLG THAWEDFLG)Tj +/TT10 1 Tf +10 0 0 10 278.1994 182.61 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 284.2004 182.61 Tm +[( )-17325.5([Function])]TJ +-17.5778 -1.8833 TD +(Opens )Tj +/TT16 1 Tf +3.3276 0 TD +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +0.2056 Tw +[( and begins recording the typescript. Returns the old dribble file if any,)]TJ +-5.728 -1.2944 TD +0 Tw +(otherwise )Tj +/TT10 1 Tf +10 0 0 10 167.6436 154.01 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 185.6465 154.01 Tm +0.0211 Tw +[(. If )]TJ +/TT16 1 Tf +1.7333 0 TD +0 Tw +(APPENDFLG)Tj +/TT10 1 Tf +10 0 0 10 249.8537 154.01 Tm +0.051 Tw +[( = T)]TJ +/TT8 1 Tf +9 0 0 9 274.8777 154.01 Tm +0.0211 Tw +(, the typescript will be appended to the end of )Tj +/TT16 1 Tf +20.8049 0 TD +0 Tw +(FILE)Tj +/TT8 1 Tf +2.4004 0 TD +(.)Tj +-39.7472 -1.3333 TD +(If )Tj +/TT16 1 Tf +0.941 0 TD +(THAWEDFLG)Tj +/TT10 1 Tf +10 0 0 10 183.0772 142.01 Tm +0.05 Tw +[( = T)]TJ +/TT8 1 Tf +9 0 0 9 208.0811 142.01 Tm +0.0211 Tw +(, the file will be opened in "thawed" mode, for those implementations)Tj +-9.1201 -1.3333 TD +0.1544 Tw +(that support it. )Tj +/TT10 1 Tf +10 0 0 10 195.4389 130.01 Tm +0 Tw +(\(DRIBBLE\))Tj +/TT8 1 Tf +9 0 0 9 249.4477 130.01 Tm +0.1544 Tw +[( closes the dribble file for the current process. Only one)]TJ +-13.7164 -1.3333 TD +0.2011 Tw +(dribble file can be active for each process at any one time, so )Tj +/TT10 1 Tf +10 0 0 10 391.1062 118.01 Tm +0.483 Tw +(\(DRIBBLE FILE1\))Tj +/TT8 1 Tf +9 0 0 9 126 106.01 Tm +0 Tw +(followed by )Tj +/TT10 1 Tf +10 0 0 10 175.8603 106.01 Tm +(\(DRIBBLE FILE2\))Tj +/TT8 1 Tf +9 0 0 9 265.875 106.01 Tm +( will cause )Tj +/TT10 1 Tf +10 0 0 10 310.0356 106.01 Tm +(FILE1)Tj +/TT8 1 Tf +9 0 0 9 340.0405 106.01 Tm +( to be closed.)Tj +/TT10 1 Tf +10 0 0 10 102 84.01 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 84.01 Tm +(DRIBBLEFILE)Tj +/TT10 1 Tf +10 0 0 10 167.4 84.01 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 173.401 84.01 Tm +[( )-29636.6([Function])]TJ +-5.2668 -1.8889 TD +(Returns the name of the current dribble file for the current process, if any, otherwise )Tj +/TT10 1 Tf +10 0 0 10 462.8848 67.01 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 480.8877 67.01 Tm +(.)Tj +ET +endstream +endobj +47 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +/TT19 48 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +52 0 obj +<< +/Length 5368 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-12)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.0922 Tw +[(Terminal input is echoed to the dribble file a line buffer at a time. Thus, the typescript produced is)]TJ +0 -1.2222 TD +0.0456 Tw +(somewhat neater than that appearing on the users terminal, because it does not show characters that)Tj +T* +0.0222 Tw +[(were erased via Control-A or Control-Q. Note that the typescript file is not included in the list of files)]TJ +0 -1.2278 TD +0.0456 Tw +(returned by )Tj +/TT10 1 Tf +10 0 0 10 176.1354 536.49 Tm +0 Tw +(\(OPENP\))Tj +/TT8 1 Tf +9 0 0 9 218.1422 536.49 Tm +0.0456 Tw +(, nor will it be closed by a call to )Tj +/TT10 1 Tf +10 0 0 10 352.1226 536.49 Tm +0 Tw +(CLOSEALL)Tj +/TT8 1 Tf +9 0 0 9 400.1304 536.49 Tm +0.0456 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 413.9187 536.49 Tm +0 Tw +(CLOSEF)Tj +/TT8 1 Tf +9 0 0 9 449.9246 536.49 Tm +0.0456 Tw +[(. Only )]TJ +/TT10 1 Tf +10 0 0 10 480.0926 536.49 Tm +0 Tw +(\(DRIBBLE\))Tj +/TT8 1 Tf +9 0 0 9 126 524.54 Tm +(closes the typescript file.)Tj +/TT4 1 Tf +10 0 0 10 102 482.2 Tm +(Cursor and Mouse)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 479.49 m +582.01 479.49 l +S +BT +/TT8 1 Tf +9 0 0 9 126 457.54 Tm +0.0311 Tw +[(A mouse is a small box connected to the computer keyboard by a long wire. On the top of the mouse)]TJ +0 -1.2222 TD +0.0267 Tw +[(are two or three buttons. On the bottom is a rolling ball or a set of photoreceptors, to detect when the)]TJ +T* +0.0367 Tw +[(mouse is moved. As the mouse is moved on a surface, a small image on the screen, called the cursor,)]TJ +T* +0.0478 Tw +[(moves to follow the movement of the mouse. By moving the mouse, the user can cause the cursor to)]TJ +T* +0 Tw +(point to any part of the display screen.)Tj +0 -2.8889 TD +0.0122 Tw +[(The mouse and cursor are an important part of the Interlisp-D user interface. The Interlisp-D window)]TJ +0 -1.2222 TD +0.1589 Tw +(system allows the user to create, move, and reshape windows, and to select items from displayed)Tj +T* +0.0311 Tw +[(menus, all by moving the mouse and clicking the mouse buttons. This section describes the low-level)]TJ +T* +0 Tw +(functions used to control the mouse and cursor.)Tj +/TT4 1 Tf +10 0 0 10 126 327.2 Tm +(Changing the Cursor Image)Tj +/TT8 1 Tf +9 0 0 9 126 303.54 Tm +0.1044 Tw +[(Interlisp-D maintains the image of the cursor on the screen, moving it as the mouse is moved. The)]TJ +T* +0 Tw +(bitmap that becomes visible as the cursor can be accessed by the following function:)Tj +/TT10 1 Tf +10 0 0 10 150 271.49 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 271.49 Tm +(CURSORBITMAP)Tj +/TT10 1 Tf +10 0 0 10 220.8 271.49 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 226.801 271.49 Tm +[( )-29036.6([Function])]TJ +-5.8668 -1.8833 TD +(Returns the cursor bitmap.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(CURSORWIDTH)Tj +/TT8 1 Tf +6.6 0 TD +[( )-31167.8([Variable])]TJ +/TT12 1 Tf +-6.6 -1.0667 TD +(CURSORHEIGHT)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -2.0667 TD +(Value is the width and height of the cursor bitmap, respectively.)Tj +-5.3333 -2.8944 TD +0.0589 Tw +(The cursor bitmap can be changed like any other bitmap by )Tj +/TT10 1 Tf +10 0 0 10 370.7255 179.29 Tm +0 Tw +(BITBLT)Tj +/TT8 1 Tf +9 0 0 9 406.7314 179.29 Tm +0.0589 Tw +(ing into it or pointing a display)Tj +-31.1924 -1.4767 TD +0.1556 Tw +(stream at it and printing or drawing curves. The )Tj +/TT10 1 Tf +10 0 0 10 332.6493 166 Tm +0 Tw +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 368.68 166 Tm +0.1556 Tw +[( datatype has the following field names)]TJ +/TT10 1 Tf +10 0 0 10 126 152.71 Tm +0 Tw +(CUBITSPERPIXEL)Tj +/TT6 1 Tf +8.4014 0 TD +( )Tj +/TT10 1 Tf +0.2778 0 TD +-0.0001 Tc +0.0001 Tw +(CUIMAGE, CUMASK, CUHOTSPOTX, CUHOTSPOTY)Tj +/TT6 1 Tf +23.3988 0 TD +0 Tc +0 Tw +(, )Tj +/TT10 1 Tf +0.5557 0 TD +(CUDATA)Tj +-32.6337 -2.7 TD +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 162.0058 125.71 Tm +0.0167 Tw +[( objects can be saved on a file using the file package command )]TJ +/TT10 1 Tf +10 0 0 10 413.5828 125.71 Tm +0 Tw +(CURSORS)Tj +/TT8 1 Tf +9 0 0 9 455.5897 125.71 Tm +0.0167 Tw +(, or the )Tj +/TT10 1 Tf +10 0 0 10 485.9928 125.71 Tm +0 Tw +(UGLYVARS)Tj +/TT8 1 Tf +9 0 0 9 126 113.76 Tm +(file package command.)Tj +/TT10 1 Tf +10 0 0 10 150 91.48 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 91.48 Tm +(CURSORCREATE)Tj +/F3 1 Tf +10 0 0 10 220.8 91.48 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 223.58 91.48 Tm +(BITMAP X Y)Tj +/TT10 1 Tf +10 0 0 10 277.5888 91.48 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 283.5898 91.48 Tm +[( )-22726.7([Function])]TJ +-12.1766 -1.8833 TD +0.08 Tw +(Returns a cursor object which has )Tj +/TT16 1 Tf +15.5845 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.08 Tw +[( as its image and the location \()]TJ +/TT16 1 Tf +13.9228 0 TD +0 Tw +(X,Y)Tj +/TT8 1 Tf +1.8003 0 TD +0.08 Tw +(\) as the hot)Tj +-34.9082 -1.2944 TD +0.05 Tw +[(spot. If )]TJ +/TT16 1 Tf +3.7169 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.05 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 231.8865 62.88 Tm +0 Tw +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 279.8943 62.88 Tm +0.05 Tw +[(, it is used as the hot spot. If )]TJ +/TT16 1 Tf +13.2808 0 TD +0 Tw +(BITMAP)Tj +/TT8 1 Tf +3.6006 0 TD +0.05 Tw +[( has dimensions different)]TJ +-28.6474 -1.3333 TD +0 Tw +(from )Tj +/TT10 1 Tf +10 0 0 10 196.2506 50.88 Tm +(CURSORWIDTH)Tj +/TT8 1 Tf +9 0 0 9 262.2614 50.88 Tm +0.0656 Tw +[( by )]TJ +/TT10 1 Tf +10 0 0 10 277.9258 50.88 Tm +0 Tw +(CURSORHEIGHT)Tj +/TT8 1 Tf +9 0 0 9 349.9375 50.88 Tm +0.0656 Tw +(, the lesser of the widths and the lesser of the)Tj +ET +endstream +endobj +53 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +55 0 obj +<< +/Length 6301 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-13)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.54 Tm +0.03 Tw +(heights are used to determine the bits that actually get copied into the lower left corner of)Tj +0 -1.2278 TD +0.0878 Tw +[(the cursor. If )]TJ +/TT16 1 Tf +6.4649 0 TD +0 Tw +(X)Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 202.0984 558.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 220.1013 558.49 Tm +0.0878 Tw +[(, 0 is used. If )]TJ +/TT16 1 Tf +6.5281 0 TD +0 Tw +(Y)Tj +/TT8 1 Tf +0.6001 0 TD +0.0878 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 296.769 558.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 314.7719 558.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 320.0619 558.49 Tm +(CURSORHEIGHT)Tj +/TT8 1 Tf +9 0 0 9 392.0736 558.49 Tm +0.0878 Tw +[(-1 is used. The default)]TJ +-29.5637 -1.3278 TD +0.4444 Tw +(cursor is an uparrow with its tip in the upper left corner and its hot spot at)Tj +/TT10 1 Tf +10 0 0 10 126 535.49 Tm +0 Tw +(\(0,CURSORHEIGHT-1\))Tj +/TT8 1 Tf +9 0 0 9 234.0175 535.49 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 512.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 512.26 Tm +(CURSOR)Tj +/F3 1 Tf +10 0 0 10 140.4 512.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 143.18 512.26 Tm +(NEWCURSOR )Tj +/TT10 1 Tf +10 0 0 10 202.5896 512.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 208.5906 512.26 Tm +[( )-25726.6([Function])]TJ +-9.1767 -1.8889 TD +0.4567 Tw +(Returns a )Tj +/TT10 1 Tf +10 0 0 10 174.5134 495.26 Tm +0 Tw +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 210.5193 495.26 Tm +0.4567 Tw +[( record instance that contains \(a copy of\) the current cursor)]TJ +-9.391 -1.3333 TD +0.1322 Tw +[(specification. If )]TJ +/TT16 1 Tf +7.6183 0 TD +0 Tw +(NEWCURSOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1322 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 264.4266 483.26 Tm +0 Tw +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 300.4325 483.26 Tm +0.1322 Tw +[( record instance, the cursor will be set to the)]TJ +-19.3814 -1.3333 TD +0.1589 Tw +(values in )Tj +/TT16 1 Tf +4.5526 0 TD +0 Tw +(NEWCURSOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1589 Tw +[(. If )]TJ +/TT16 1 Tf +2.1466 0 TD +0 Tw +(NEWCURSOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.1589 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 297.3025 471.26 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 303.3034 471.26 Tm +0.1589 Tw +(, the cursor will be set to the default cursor)Tj +/TT10 1 Tf +10 0 0 10 126 449.76 Tm +0 Tw +(DEFAULTCURSOR)Tj +/TT8 1 Tf +9 0 0 9 204.0127 449.76 Tm +(, an upward left pointing arrow: )Tj +ET +q +8 0 0 -16 334.53 465.76 cm +/Im1 Do +Q +BT +9 0 0 9 342.52 449.76 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 102 426.53 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 426.53 Tm +(SETCURSOR)Tj +/F3 1 Tf +10 0 0 10 156.6 426.53 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 159.38 426.53 Tm +(NEWCURSOR)Tj +/F3 1 Tf +10 0 0 10 207.9879 426.53 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 210.7679 426.53 Tm +()Tj +/TT10 1 Tf +10 0 0 10 216.1688 426.53 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 222.1697 426.53 Tm +[( )-24217.8([Function])]TJ +-10.6855 -1.8889 TD +(If )Tj +/TT16 1 Tf +1.1899 0 TD +(NEWCURSOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.27 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 210.2908 409.53 Tm +0 Tw +(CURSOR)Tj +/TT8 1 Tf +9 0 0 9 246.2966 409.53 Tm +0.27 Tw +[( record instance, the cursor will be set to the values in)]TJ +/TT16 1 Tf +-13.3663 -1.3278 TD +0 Tw +(NEWCURSOR)Tj +/TT8 1 Tf +5.4009 0 TD +0.2578 Tw +[(. This does not return the old cursor, and therefore, provides a way of)]TJ +-5.4009 -1.2889 TD +0 Tw +(changing the cursor without using storage.)Tj +/TT10 1 Tf +10 0 0 10 102 364.93 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 364.93 Tm +(FLIPCURSOR)Tj +/TT10 1 Tf +10 0 0 10 162 364.93 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 168.001 364.93 Tm +[( )-30236.6([Function])]TJ +-4.6668 -1.8833 TD +(Inverts the cursor.)Tj +0 -2 TD +0.0467 Tw +[(The following list describes the cursors used by the Interlisp-D system. Most of them are)]TJ +0 -1.2222 TD +0 Tw +(stored as the values of various variables.)Tj +ET +q +8 0 0 -16 154.01 307.43 cm +/Im1 Do +Q +BT +9 0 0 9 174 291.43 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 218.9385 291.43 Tm +(DEFAULTCURSOR)Tj +/TT8 1 Tf +9 0 0 9 296.9511 291.43 Tm +(. This is the default cursor.)Tj +ET +q +15 0 0 -16 147.01 278.93 cm +/Im2 Do +Q +BT +9 0 0 9 174 262.93 Tm +0.0556 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 219.9385 262.93 Tm +0 Tw +(WAITINGCURSOR)Tj +/TT8 1 Tf +9 0 0 9 297.9511 262.93 Tm +0.0555 Tw +[(. Represents an hourglass. Used during)]TJ +-13.7724 -1.3278 TD +0 Tw +(long computations.)Tj +ET +q +13 0 0 -16 149.01 239.43 cm +/Im3 Do +Q +BT +9 0 0 9 174 223.43 Tm +0.2922 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 224.1985 223.43 Tm +0 Tw +(MOUSECONFIRMCURSOR)Tj +/TT8 1 Tf +9 0 0 9 332.216 223.43 Tm +0.2922 Tw +[(. Indicates that the system is)]TJ +-17.5796 -1.3278 TD +0.1933 Tw +(waiting for the user to confirm an action by pressing the left mouse)Tj +0 -1.2222 TD +0.1367 Tw +[(button, or aborting the action by pressing any other button. Used by)]TJ +0 -1.2278 TD +0 Tw +(the function )Tj +/TT10 1 Tf +10 0 0 10 224.3481 189.43 Tm +(MOUSECONFIRM)Tj +/TT8 1 Tf +9 0 0 9 296.3598 189.43 Tm +( \(see Chapter 28\).)Tj +ET +q +14 0 0 -14 148.01 176.93 cm +/Im4 Do +Q +BT +9 0 0 9 174 162.93 Tm +0.1533 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 221.6985 162.93 Tm +0 Tw +(SYSOUTCURSOR)Tj +/TT8 1 Tf +9 0 0 9 293.7102 162.93 Tm +0.1533 Tw +[(. Indicates that the system is saving the)]TJ +-13.3011 -1.3333 TD +0 Tw +(virtual memory in a sysout file. See )Tj +/TT10 1 Tf +10 0 0 10 318.8262 150.93 Tm +(SYSOUT)Tj +/TT8 1 Tf +9 0 0 9 354.832 150.93 Tm +(, Chapter 12.)Tj +ET +q +15 0 0 -13 147.01 138.43 cm +/Im5 Do +Q +BT +9 0 0 9 174 125.43 Tm +0.0511 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 219.8585 125.43 Tm +0 Tw +(SAVINGCURSOR)Tj +/TT8 1 Tf +9 0 0 9 291.8702 125.43 Tm +0.0511 Tw +[(. Indicates that )]TJ +/TT10 1 Tf +10 0 0 10 361.9324 125.43 Tm +0 Tw +(SAVEVM)Tj +/TT8 1 Tf +9 0 0 9 397.9383 125.43 Tm +0.0511 Tw +[( has been called)]TJ +-24.882 -1.3278 TD +0.1178 Tw +(automatically to save the virtual memory state after the system is idle)Tj +0 -1.2278 TD +0 Tw +(for long enough. See )Tj +/TT10 1 Tf +10 0 0 10 260.2207 102.43 Tm +(SAVEVMWAIT)Tj +/TT8 1 Tf +9 0 0 9 320.2304 102.43 Tm +(, Chapter 12.)Tj +ET +q +15 0 0 -15 147.01 89.93 cm +/Im6 Do +Q +BT +9 0 0 9 174 74.93 Tm +0.0422 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 219.6985 74.93 Tm +0 Tw +(CROSSHAIRS)Tj +/TT8 1 Tf +9 0 0 9 279.7082 74.93 Tm +0.0422 Tw +[(. Used by )]TJ +/TT10 1 Tf +10 0 0 10 328.3461 74.93 Tm +0 Tw +(GETPOSITION)Tj +/TT8 1 Tf +9 0 0 9 394.3569 74.93 Tm +0.0422 Tw +[( \(see Chapter 28\))]TJ +-24.4841 -1.3278 TD +0 Tw +(to indicate a position.)Tj +ET +endstream +endobj +56 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F3 25 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/XObject << +/Im1 57 0 R +/Im2 58 0 R +/Im3 59 0 R +/Im4 60 0 R +/Im5 61 0 R +/Im6 62 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +64 0 obj +<< +/Length 4721 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-14)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +ET +q +12 0 0 -12 198.01 575.99 cm +/Im7 Do +Q +BT +/TT8 1 Tf +9 0 0 9 222 563.99 Tm +0.0711 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 268.2184 563.99 Tm +0 Tw +(BOXCURSOR)Tj +/TT8 1 Tf +9 0 0 9 322.2272 563.99 Tm +0.0711 Tw +[(. Used by )]TJ +/TT10 1 Tf +10 0 0 10 372.4252 563.99 Tm +0 Tw +(GETBOXPOSITION)Tj +/TT8 1 Tf +9 0 0 9 456.4388 563.99 Tm +0.0711 Tw +[( \(see Chapter)]TJ +-26.0488 -1.3278 TD +0 Tw +(28\) to indicate where to place the corner of a box.)Tj +ET +q +12 0 0 -16 198.01 540.49 cm +/Im8 Do +Q +BT +9 0 0 9 222 524.49 Tm +0.0889 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 268.5385 524.49 Tm +0 Tw +(FORCEPS)Tj +/TT8 1 Tf +9 0 0 9 310.5453 524.49 Tm +0.0889 Tw +[(. Used by )]TJ +/TT10 1 Tf +10 0 0 10 361.7032 524.49 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 415.712 524.49 Tm +0.0889 Tw +[( \(see Chapter 28\) when)]TJ +-21.5236 -1.3278 TD +0 Tw +(the user switches corners.)Tj +ET +q +16 0 0 -14 194.01 500.99 cm +/Im9 Do +Q +BT +9 0 0 9 222 486.99 Tm +0.0422 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 267.6985 486.99 Tm +0 Tw +(EXPANDINGBOX)Tj +/TT8 1 Tf +9 0 0 9 339.7102 486.99 Tm +0.0422 Tw +[(. Used by )]TJ +/TT10 1 Tf +10 0 0 10 388.3481 486.99 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 442.3569 486.99 Tm +0.0422 Tw +[( \(see Chapter 28\))]TJ +-24.4841 -1.3278 TD +0 Tw +(when a box is first displayed.)Tj +ET +q +13 0 0 -11 197.01 463.49 cm +/Im10 Do +Q +BT +9 0 0 9 222 452.49 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 452.49 Tm +(UpperRightCursor)Tj +/TT8 1 Tf +9 0 0 9 362.9541 452.49 Tm +(.)Tj +ET +q +11 0 0 -11 199.01 439.99 cm +/Im11 Do +Q +BT +9 0 0 9 222 428.99 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 428.99 Tm +(LowerRightCursor)Tj +/TT8 1 Tf +9 0 0 9 362.9541 428.99 Tm +(.)Tj +ET +q +13 0 0 -11 197.01 416.49 cm +/Im12 Do +Q +BT +9 0 0 9 222 405.49 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 405.49 Tm +(UpperLeftCursor)Tj +/TT8 1 Tf +9 0 0 9 356.9531 405.49 Tm +(.)Tj +ET +q +11 0 0 -11 199.01 392.99 cm +/Im13 Do +Q +BT +9 0 0 9 222 381.99 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 381.99 Tm +(LowerLeftCursor)Tj +/TT8 1 Tf +9 0 0 9 356.9531 381.99 Tm +(.)Tj +-20.3281 -2.1111 TD +0.0644 Tw +(The previous four cursors are used by )Tj +/TT10 1 Tf +10 0 0 10 331.3764 362.99 Tm +0 Tw +(GETREGION)Tj +/TT8 1 Tf +9 0 0 9 385.3852 362.99 Tm +0.0644 Tw +[( \(see Chapter 28\) to indicate the four)]TJ +-23.4872 -1.3278 TD +0 Tw +(corners of a region.)Tj +ET +q +13 0 0 -13 197.01 339.49 cm +/Im14 Do +Q +BT +9 0 0 9 222 326.49 Tm +0.2133 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 270.7785 326.49 Tm +0 Tw +(VertThumbCursor)Tj +/TT8 1 Tf +9 0 0 9 360.7931 326.49 Tm +0.2133 Tw +[(. Used during scrolling to indicate)]TJ +-15.4215 -1.3278 TD +0 Tw +(thumbing in a vertical scroll bar.)Tj +ET +q +7 0 0 -16 203.01 302.99 cm +/Im15 Do +Q +BT +9 0 0 9 222 286.99 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 286.99 Tm +(VertScrollCursor)Tj +/TT8 1 Tf +9 0 0 9 362.9541 286.99 Tm +(.)Tj +ET +q +9 0 0 -16 201.01 274.49 cm +/Im16 Do +Q +BT +9 0 0 9 222 258.49 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 258.49 Tm +(ScrollUpCursor)Tj +/TT8 1 Tf +9 0 0 9 350.9521 258.49 Tm +(.)Tj +ET +q +9 0 0 -16 201.01 245.99 cm +/Im17 Do +Q +BT +9 0 0 9 222 229.99 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 229.99 Tm +(ScrollDownCursor)Tj +/TT8 1 Tf +9 0 0 9 362.9541 229.99 Tm +(.)Tj +-20.9949 -2.1111 TD +0.2678 Tw +(The previous four cursors are used by )Tj +/TT10 1 Tf +10 0 0 10 344.1864 210.99 Tm +0 Tw +(SCROLL.HANDLER)Tj +/TT8 1 Tf +9 0 0 9 428.2 210.99 Tm +0.2678 Tw +[( \(see Chapter 28\) during)]TJ +-28.2445 -1.3278 TD +0 Tw +(vertical scrolling.)Tj +ET +q +13 0 0 -13 197.01 187.49 cm +/Im18 Do +Q +BT +9 0 0 9 222 174.49 Tm +0.13 Tw +(In variable )Tj +/TT10 1 Tf +10 0 0 10 269.2785 174.49 Tm +0 Tw +(HorizThumbCursor)Tj +/TT8 1 Tf +9 0 0 9 365.2941 174.49 Tm +0.13 Tw +[(. Used during scrolling to indicate)]TJ +-15.9216 -1.3278 TD +0 Tw +(thumbing in a horizontal scroll bar.)Tj +ET +q +15 0 0 -13 195.01 150.99 cm +/Im19 Do +Q +BT +9 0 0 9 222 137.99 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 137.99 Tm +(HorizScrollCursor)Tj +/TT8 1 Tf +9 0 0 9 368.955 137.99 Tm +(.)Tj +ET +q +16 0 0 -13 194.01 125.49 cm +/Im20 Do +Q +BT +9 0 0 9 222 112.49 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 112.49 Tm +(ScrollLeftCursor)Tj +/TT8 1 Tf +9 0 0 9 362.9541 112.49 Tm +(.)Tj +ET +q +16 0 0 -13 194.01 99.99 cm +/Im21 Do +Q +BT +9 0 0 9 222 86.99 Tm +(In variable )Tj +/TT10 1 Tf +10 0 0 10 266.9385 86.99 Tm +(ScrollRightCursor)Tj +/TT8 1 Tf +9 0 0 9 368.955 86.99 Tm +(.)Tj +-21.6617 -2.1111 TD +0.2678 Tw +(The previous four cursors are used by )Tj +/TT10 1 Tf +10 0 0 10 344.1864 67.99 Tm +0 Tw +(SCROLL.HANDLER)Tj +/TT8 1 Tf +9 0 0 9 428.2 67.99 Tm +0.2678 Tw +[( \(see Chapter 28\) during)]TJ +-28.2445 -1.3278 TD +0 Tw +(horizontal scrolling.)Tj +ET +endstream +endobj +65 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +>> +/XObject << +/Im7 66 0 R +/Im8 67 0 R +/Im9 68 0 R +/Im10 69 0 R +/Im11 70 0 R +/Im12 71 0 R +/Im13 72 0 R +/Im14 73 0 R +/Im15 74 0 R +/Im16 75 0 R +/Im17 76 0 R +/Im18 77 0 R +/Im19 78 0 R +/Im20 79 0 R +/Im21 80 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +82 0 obj +<< +/Length 4690 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-15)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +ET +q +16 0 0 -15 93.51 575.99 cm +/Im22 Do +Q +BT +/TT8 1 Tf +9 0 0 9 109.5 560.99 Tm +(, )Tj +ET +q +12 0 0 -8 114.01 568.99 cm +/Im23 Do +Q +BT +9 0 0 9 126 560.99 Tm +(, )Tj +ET +q +12 0 0 -8 130.51 568.99 cm +/Im24 Do +Q +BT +9 0 0 9 142.5 560.99 Tm +(, )Tj +ET +q +15 0 0 -7 147.01 567.99 cm +/Im25 Do +Q +q +16 0 0 -7 105.01 542.4399 cm +/Im26 Do +Q +BT +9 0 0 9 121 535.4399 Tm +(, )Tj +ET +q +16 0 0 -7 125.51 542.4399 cm +/Im27 Do +Q +BT +9 0 0 9 141.5 535.4399 Tm +(, )Tj +ET +q +16 0 0 -14 146.01 549.4399 cm +/Im28 Do +Q +BT +9 0 0 9 174 535.4399 Tm +0.2878 Tw +[(These cursors are used by the Teleraid low-level debugger. These)]TJ +0 -1.2222 TD +0 Tw +(cursors are not accessable as standard Interlisp-D cursors.)Tj +/TT4 1 Tf +10 0 0 10 78 497.1 Tm +(Flashing Bars on the Cursor)Tj +/TT8 1 Tf +9 0 0 9 78 473.44 Tm +0.0456 Tw +(The low-level Interlisp-D system uses the cursor to display certain system status information, such as)Tj +T* +0.0967 Tw +[(garbage collection or swapping. This is done because changing the cursor image is very quick, and)]TJ +T* +0.0344 Tw +[(does not require interacting with the window system. Interlisp inverts horizontal bars on the cursor)]TJ +T* +0.0422 Tw +[(when the system is swapping pages, or doing certain stack operations. Normally, these bars are only)]TJ +T* +0.3033 Tw +[(inverted for a very short time, so they look like they are flashing. These cursor changes are)]TJ +T* +0 Tw +(interpreted as follows:)Tj +0.2233 -3.0611 TD +(Inverted cursor: )Tj +ET +q +16 0 0 -16 146.01 406.89 cm +/Im29 Do +Q +BT +9 0 0 9 174 390.89 Tm +0.1867 Tw +(Whatever image is being displayed as the cursor, whenever Interlisp)Tj +0 -1.2222 TD +0 Tw +(does a garbage collection, the whole cursor is inverted.)Tj +-7.07 -3.0611 TD +(Top bar: )Tj +ET +q +16 0 0 -16 146.01 368.34 cm +/Im30 Do +Q +BT +9 0 0 9 174 352.34 Tm +0.1044 Tw +[(Swap read. On when Interlisp is swapping in a page from the virtual)]TJ +0 -1.2222 TD +0.0422 Tw +[(memory file into the real memory. It is also on when Interlisp allocates)]TJ +T* +0.1611 Tw +(a new virtual memory page, even though that doesnt involve a disk)Tj +T* +0.01 Tw +[(read. If this is flashing a lot, the system is doing a lot of swapping. This)]TJ +T* +0.0533 Tw +(is an indication that the virtual memory working set is fragmented \(see)Tj +T* +0.3189 Tw +[(Chapter 22\). Performance may be improved by reloading a clean)]TJ +T* +0 Tw +(Interlisp system.)Tj +-11.5811 -3.0611 TD +(Upper middle bar: )Tj +ET +q +16 0 0 -16 146.01 274.79 cm +/Im31 Do +Q +BT +9 0 0 9 174 258.79 Tm +0.0156 Tw +[(Stack operations. If this is flashing a lot, it suggests that some process is)]TJ +0 -1.2222 TD +0 Tw +(neglecting to release stack pointers in a timely fashion \(see Chapter 11\).)Tj +-13.2367 -3.0611 TD +(Lowereler middle bar: )Tj +ET +q +16 0 0 -16 146.01 236.24 cm +/Im32 Do +Q +BT +9 0 0 9 174 220.24 Tm +0.0811 Tw +[(Stack operations. On when Interlisp is moving frames on the stack. If)]TJ +0 -1.2278 TD +0.0544 Tw +(the system is slow, and this is flashing a lot, )Tj +/TT10 1 Tf +10 0 0 10 354.7735 209.19 Tm +0 Tw +(HARDRESET)Tj +/TT8 1 Tf +9 0 0 9 408.7823 209.19 Tm +0.0544 Tw +[( \(see Chapter)]TJ +-26.0869 -1.3278 TD +0 Tw +(23\) sometimes helps.)Tj +-8.5467 -3.0611 TD +(Bottom bar: )Tj +ET +q +16 0 0 -16 146.01 185.69 cm +/Im33 Do +Q +BT +9 0 0 9 174 169.69 Tm +0.2144 Tw +[(Swap write. On when Interlisp writes a dirty virtual memory page)]TJ +0 -1.2222 TD +0 Tw +(from the real memory back into the virtual memory file.)Tj +/TT4 1 Tf +10 0 0 10 78 131.35 Tm +(Cursor Position)Tj +/TT8 1 Tf +9 0 0 9 78 107.69 Tm +0.1489 Tw +(The position at which the cursor bitmap is being displayed can be read or set using the following)Tj +T* +0 Tw +(functions:)Tj +/TT10 1 Tf +10 0 0 10 102 74.41 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 74.41 Tm +(CURSORPOSITION)Tj +/F1 1 Tf +10 0 0 10 183.6 74.41 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 186.38 74.41 Tm +(NEWPOSITION DISPLAYSTREAM OLDPOSITION)Tj +/TT10 1 Tf +10 0 0 10 386.2125 74.41 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 392.2135 74.41 Tm +[( )-5324.1([Function])]TJ +-29.5793 -1.8833 TD +0.1444 Tw +(Returns the location of the cursor in the coordinate system of )Tj +/TT16 1 Tf +28.7525 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.1444 Tw +[( \(or the)]TJ +-36.5537 -1.2944 TD +0.2189 Tw +(current display stream, if )Tj +/TT16 1 Tf +12.2545 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.2189 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 321.3752 45.81 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 339.3781 45.81 Tm +0.2189 Tw +[(\). If )]TJ +/TT16 1 Tf +2.6596 0 TD +0 Tw +(NEWPOSITION)Tj +/TT8 1 Tf +6.6011 0 TD +0.2189 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 455.9844 45.81 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 473.9874 45.81 Tm +0.2189 Tw +(, it)Tj +ET +endstream +endobj +83 0 obj +<< +/ProcSet [/PDF /Text /ImageB ] +/Font << +/F1 15 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/XObject << +/Im22 84 0 R +/Im23 85 0 R +/Im24 86 0 R +/Im25 87 0 R +/Im26 88 0 R +/Im27 89 0 R +/Im28 90 0 R +/Im29 91 0 R +/Im30 92 0 R +/Im31 93 0 R +/Im32 94 0 R +/Im33 95 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +97 0 obj +<< +/Length 8216 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-16)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.0022 Tw +(should be a position and the cursor will be positioned at )Tj +/TT16 1 Tf +25.1192 0 TD +0 Tw +(NEWPOSITION)Tj +/TT8 1 Tf +6.6011 0 TD +0.0004 Tc +0.0018 Tw +(. If )Tj +/TT16 1 Tf +1.6766 0 TD +0 Tc +0 Tw +(NEWPOSITION)Tj +/TT8 1 Tf +-33.3968 -1.2944 TD +(is )Tj +/TT10 1 Tf +10 0 0 10 182.6836 557.89 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 200.6865 557.89 Tm +(, the current position is simple returned.)Tj +-2.9652 -2.1056 TD +0.0933 Tw +[( The current position of the cursor is the position of the "hot spot" of the cursor, not the)]TJ +0 -1.2222 TD +0 Tw +(position of the cursor bitmap.)Tj +0 -2.0056 TD +(If )Tj +/TT16 1 Tf +1.1821 0 TD +(OLDPOSITION)Tj +/TT8 1 Tf +6.6011 0 TD +0.2622 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 268.8126 509.89 Tm +0 Tw +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 316.8203 509.89 Tm +0.2622 Tw +[( object, this object will be changed to point to the)]TJ +-15.8689 -1.3333 TD +0.1989 Tw +(location of the cursor and returned, rather of allocating a new )Tj +/TT10 1 Tf +10 0 0 10 440.6495 497.89 Tm +0 Tw +(POSITION)Tj +/TT8 1 Tf +9 0 0 9 488.6573 497.89 Tm +0.1989 Tw +[(. This can)]TJ +-34.9619 -1.3333 TD +0 Tw +(improve performance if )Tj +/TT10 1 Tf +10 0 0 10 270.9346 485.89 Tm +(CURSORPOSITION)Tj +/TT8 1 Tf +9 0 0 9 354.9482 485.89 Tm +( is called repeatedly to track the cursor. )Tj +-20.1054 -2.1056 TD +0.3078 Tw +[( To get the location of the cursor in absolute screen coordinates, use the variables)]TJ +/TT10 1 Tf +10 0 0 10 174 455.89 Tm +0 Tw +(LASTMOUSEX)Tj +/TT8 1 Tf +9 0 0 9 234.0097 455.89 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 253.7456 455.89 Tm +(LASTMOUSEY)Tj +/TT8 1 Tf +9 0 0 9 313.7553 455.89 Tm +(.)Tj +/TT10 1 Tf +10 0 0 10 150 432.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 432.66 Tm +(ADJUSTCURSORPOSITION)Tj +/F1 1 Tf +10 0 0 10 264 432.66 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 266.78 432.66 Tm +(DELTAX DELTAY)Tj +/TT10 1 Tf +10 0 0 10 336.9914 432.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 342.9924 432.66 Tm +[( )-16126.4([Function])]TJ +-18.7769 -1.8889 TD +0.0422 Tw +(Moves the cursor )Tj +/TT16 1 Tf +8.03 0 TD +0 Tw +(DELTAX)Tj +/TT8 1 Tf +3.6006 0 TD +0.0422 Tw +[( points in the )]TJ +/TT10 1 Tf +10 0 0 10 334.4676 415.66 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 340.4686 415.66 Tm +0.0422 Tw +[( direction and )]TJ +/TT16 1 Tf +6.5344 0 TD +0 Tw +(DELTAY)Tj +/TT8 1 Tf +3.6006 0 TD +0.0422 Tw +[( points in the )]TJ +/TT10 1 Tf +10 0 0 10 487.4758 415.66 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 493.4767 415.66 Tm +0.0422 Tw +[( direction.)]TJ +/TT16 1 Tf +-35.4974 -1.3278 TD +0 Tw +(DELTAX)Tj +/TT8 1 Tf +3.6006 0 TD +( and )Tj +/TT16 1 Tf +2.1929 0 TD +(DELTAY)Tj +/TT8 1 Tf +3.6006 0 TD +( default to 0.)Tj +/TT4 1 Tf +10 0 0 10 126 375.77 Tm +(Mouse Button Testing)Tj +/TT8 1 Tf +9 0 0 9 126 352.11 Tm +0.1078 Tw +[(There are two or three keys on the mouse. These keys \(also called buttons\) are referred to by their)]TJ +0 -1.2278 TD +0 Tw +(location: )Tj +/TT10 1 Tf +10 0 0 10 163.9929 341.06 Tm +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 187.9968 341.06 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 194.2568 341.06 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 230.2626 341.06 Tm +0.1956 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 249.0009 341.06 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 279.0058 341.06 Tm +0.1955 Tw +[(. The following macros are provided to test the state of the)]TJ +-17.0006 -1.3278 TD +0 Tw +(mouse buttons:)Tj +/TT10 1 Tf +10 0 0 10 150 306.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 306.83 Tm +(MOUSESTATE)Tj +/F3 1 Tf +10 0 0 10 210 306.83 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 212.78 306.83 Tm +(BUTTONFORM)Tj +/TT10 1 Tf +10 0 0 10 266.7888 306.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 272.7897 306.83 Tm +[( )-25025.6([Macro])]TJ +-10.9766 -1.8889 TD +0.3478 Tw +(Reads the state of the mouse buttons, and returns )Tj +/TT10 1 Tf +10 0 0 10 400.9083 289.83 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 406.9092 289.83 Tm +0.3478 Tw +[( if that state is described by)]TJ +/TT16 1 Tf +-25.8788 -1.3333 TD +0 Tw +(BUTTONFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.0289 Tw +(. )Tj +/TT16 1 Tf +0.8078 0 TD +0 Tw +(BUTTONFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.0289 Tw +[( can be one of the key indicators )]TJ +/TT10 1 Tf +10 0 0 10 421.2567 277.83 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 445.2607 277.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 450.0206 277.83 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 486.0265 277.83 Tm +0.0289 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 501.7648 277.83 Tm +0 Tw +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 531.7697 277.83 Tm +(;)Tj +-39.7522 -1.3333 TD +0.0633 Tw +(the atom )Tj +/TT10 1 Tf +10 0 0 10 212.4188 265.83 Tm +0 Tw +(UP)Tj +/TT8 1 Tf +9 0 0 9 224.4207 265.83 Tm +0.0633 Tw +[( \(indicating all keys are up\); the form )]TJ +/TT10 1 Tf +10 0 0 10 378.4651 265.83 Tm +0.153 Tw +(\(ONLY KEY\))Tj +/TT8 1 Tf +9 0 0 9 440.0049 265.83 Tm +0.0633 Tw +(; or a form of )Tj +/TT10 1 Tf +10 0 0 10 496.6439 265.83 Tm +0 Tw +(AND)Tj +/TT8 1 Tf +9 0 0 9 514.6469 265.83 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 519.7169 265.83 Tm +(OR)Tj +/TT8 1 Tf +9 0 0 9 531.7188 265.83 Tm +(,)Tj +-39.7465 -1.3333 TD +(or )Tj +/TT10 1 Tf +10 0 0 10 184.7182 253.83 Tm +(NOT)Tj +/TT8 1 Tf +9 0 0 9 202.7212 253.83 Tm +( applied to any valid button form.)Tj +-3.1912 -2.1111 TD +0.1889 Tw +(For example: )Tj +/TT10 1 Tf +10 0 0 10 231.3648 234.83 Tm +0.455 Tw +(\(MOUSESTATE LEFT\))Tj +/TT8 1 Tf +9 0 0 9 337.9314 234.83 Tm +0.1889 Tw +[( will be true if the left mouse button is down.)]TJ +/TT10 1 Tf +10 0 0 10 174 222.83 Tm +0.202 Tw +(\(MOUSESTATE \(ONLY LEFT\)\))Tj +/TT8 1 Tf +9 0 0 9 322.0634 222.83 Tm +0.0844 Tw +[( will be true if the left mouse button is the only one)]TJ +-16.4515 -1.3333 TD +0.0533 Tw +(down. )Tj +/TT10 1 Tf +10 0 0 10 204.8648 210.83 Tm +0.129 Tw +(\(MOUSESTATE \(OR \(NOT LEFT\) MIDDLE\)\))Tj +/TT8 1 Tf +9 0 0 9 420.0589 210.83 Tm +0.0533 Tw +[( will be true if either the left)]TJ +-27.3399 -1.3278 TD +0 Tw +(mouse button is up or the middle mouse button is down.)Tj +/TT10 1 Tf +10 0 0 10 150 176.6 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 176.6 Tm +(LASTMOUSESTATE)Tj +/F3 1 Tf +10 0 0 10 231.6 176.6 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 234.38 176.6 Tm +(BUTTONFORM)Tj +/TT10 1 Tf +10 0 0 10 288.3888 176.6 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 294.3897 176.6 Tm +[( )-22625.6([Macro])]TJ +-13.3766 -1.8889 TD +0.1656 Tw +(Similar to )Tj +/TT10 1 Tf +10 0 0 10 217.9106 159.6 Tm +0 Tw +(MOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 277.9204 159.6 Tm +0.1656 Tw +(, but tests the value of )Tj +/TT10 1 Tf +10 0 0 10 376.1002 159.6 Tm +0 Tw +(LASTMOUSEBUTTONS)Tj +/TT8 1 Tf +9 0 0 9 472.1158 159.6 Tm +0.1656 Tw +[( \(below\) rather)]TJ +-33.124 -1.3278 TD +0.37 Tw +[(than getting the current state. This is useful for determining which keys caused)]TJ +/TT10 1 Tf +10 0 0 10 174 136.6 Tm +0 Tw +(MOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 234.0097 136.6 Tm +( to be true.)Tj +/TT10 1 Tf +10 0 0 10 150 113.37 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 113.37 Tm +(UNTILMOUSESTATE)Tj +/F3 1 Tf +10 0 0 10 237 113.37 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 239.78 113.37 Tm +(BUTTONFORM INTERVAL)Tj +/TT10 1 Tf +10 0 0 10 342.3967 113.37 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 348.3977 113.37 Tm +[( )-16624.7([Macro])]TJ +/TT16 1 Tf +-19.3775 -1.8889 TD +(BUTTONFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.0644 Tw +[( is as described in )]TJ +/TT10 1 Tf +10 0 0 10 303.3438 96.37 Tm +0 Tw +(MOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 363.3536 96.37 Tm +0.0644 Tw +[(. Waits until )]TJ +/TT16 1 Tf +6.1421 0 TD +0 Tw +(BUTTONFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.0644 Tw +[( is true or until)]TJ +/TT16 1 Tf +-33.1823 -1.3333 TD +0 Tw +(INTERVAL)Tj +/TT8 1 Tf +4.8008 0 TD +0.3756 Tw +[( milliseconds have elapsed. The value of )]TJ +/TT10 1 Tf +10 0 0 10 409.0156 84.37 Tm +0 Tw +(UNTILMOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 499.0302 84.37 Tm +0.3756 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 516.7238 84.37 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 522.7248 84.37 Tm +0.3756 Tw +[( if)]TJ +/TT16 1 Tf +-38.7472 -1.3333 TD +0 Tw +(BUTTONFORM)Tj +/TT8 1 Tf +6.001 0 TD +0.12 Tw +[( was satisfied before it timed out, otherwise )]TJ +/TT10 1 Tf +10 0 0 10 412.2367 72.37 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 430.2396 72.37 Tm +0.12 Tw +[(. If )]TJ +/TT16 1 Tf +2.0299 0 TD +0 Tw +(INTERVAL)Tj +/TT8 1 Tf +4.8008 0 TD +0.12 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 504.8095 72.37 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 522.8124 72.37 Tm +0.12 Tw +(, it)Tj +-38.7569 -1.3333 TD +0.1078 Tw +[(waits indefinitely. This compiles into an open loop that calls the )]TJ +/TT10 1 Tf +10 0 0 10 443.9022 60.37 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 461.9051 60.37 Tm +0.1078 Tw +[( wait background)]TJ +ET +endstream +endobj +98 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +100 0 obj +<< +/Length 5149 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-17)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.2878 Tw +[(function. This form should not be used inside the )]TJ +/TT10 1 Tf +10 0 0 10 352.1324 569.49 Tm +0 Tw +(TTY)Tj +/TT8 1 Tf +9 0 0 9 370.1353 569.49 Tm +0.2878 Tw +[( wait background function.)]TJ +/TT10 1 Tf +10 0 0 10 126 557.49 Tm +0 Tw +(UNTILMOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 216.0146 557.49 Tm +( does not use any storage during its wait loop.)Tj +/TT4 1 Tf +10 0 0 10 78 529.2 Tm +(Low Level Mouse Functions)Tj +/TT8 1 Tf +9 0 0 9 78 505.54 Tm +0.1778 Tw +(This section describes the functions and variables that provide low level access to the mouse and)Tj +0 -1.2222 TD +0 Tw +(cursor.)Tj +/TT10 1 Tf +10 0 0 10 102 472.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 472.26 Tm +(LASTMOUSEX)Tj +/F1 1 Tf +10 0 0 10 162 472.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 164.78 472.26 Tm +(DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 234.9914 472.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.9924 472.26 Tm +[( )-22126.4([Function])]TJ +-12.7769 -1.8889 TD +0.0667 Tw +(Returns the value of the cursors )Tj +/TT10 1 Tf +10 0 0 10 260.7899 455.26 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 266.7909 455.26 Tm +0.0667 Tw +[( position in the coordinates of )]TJ +/TT16 1 Tf +13.7897 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0667 Tw +[( \(as of)]TJ +-37.2344 -1.3333 TD +0 Tw +(the last call to )Tj +/TT10 1 Tf +10 0 0 10 182.9355 443.26 Tm +(GETMOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 260.9482 443.26 Tm +(, below\).)Tj +/TT10 1 Tf +10 0 0 10 102 420.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 420.03 Tm +(LASTMOUSEY)Tj +/F1 1 Tf +10 0 0 10 162 420.03 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 164.78 420.03 Tm +(DISPLAYSTREAM)Tj +/TT10 1 Tf +10 0 0 10 234.9914 420.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 240.9924 420.03 Tm +[( )-22126.4([Function])]TJ +-12.7769 -1.8889 TD +0.0667 Tw +(Returns the value of the cursors )Tj +/TT10 1 Tf +10 0 0 10 260.7899 403.03 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 266.7909 403.03 Tm +0.0667 Tw +[( position in the coordinates of )]TJ +/TT16 1 Tf +13.7897 0 TD +0 Tw +(DISPLAYSTREAM)Tj +/TT8 1 Tf +7.8013 0 TD +0.0667 Tw +[( \(as of)]TJ +-37.2344 -1.3333 TD +0 Tw +(the last call to )Tj +/TT10 1 Tf +10 0 0 10 182.9355 391.03 Tm +(GETMOUSESTATE)Tj +/TT8 1 Tf +9 0 0 9 260.9482 391.03 Tm +(, below\).)Tj +/TT12 1 Tf +-17.6609 -2.4389 TD +(LASTMOUSEX)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.85 TD +0.1 Tw +(Value is the )Tj +/TT10 1 Tf +10 0 0 10 177.7254 352.43 Tm +0 Tw +(X)Tj +/TT8 1 Tf +9 0 0 9 183.7263 352.43 Tm +0.1 Tw +[( position of the cursor in absolute screen coordinates \(as of the last call to)]TJ +/TT10 1 Tf +-6.414 -1.3278 TD +0 Tw +(GETMOUSESTATE)Tj +/TT8 1 Tf +7.8013 0 TD +(, below\).)Tj +/TT12 1 Tf +-10.4679 -2.4 TD +(LASTMOUSEY)Tj +/TT8 1 Tf +6 0 TD +[( )-31767.8([Variable])]TJ +-3.3333 -1.85 TD +0.1 Tw +(Value is the )Tj +/TT10 1 Tf +10 0 0 10 177.7254 302.23 Tm +0 Tw +(Y)Tj +/TT8 1 Tf +9 0 0 9 183.7263 302.23 Tm +0.1 Tw +[( position of the cursor in absolute screen coordinates \(as of the last call to)]TJ +/TT10 1 Tf +-6.414 -1.3278 TD +0 Tw +(GETMOUSESTATE)Tj +/TT8 1 Tf +7.8013 0 TD +(, below\).)Tj +/TT12 1 Tf +-10.4679 -2.4 TD +(LASTMOUSEBUTTONS)Tj +/TT8 1 Tf +9.6 0 TD +[( )-28167.8([Variable])]TJ +-6.9333 -1.8444 TD +0.0367 Tw +(Value is an integer that has bits on corresponding to the mouse buttons that are down \(as)Tj +0 -1.2222 TD +0.0144 Tw +(of the last call to )Tj +/TT10 1 Tf +7.5273 0 TD +0 Tw +(GETMOUSESTATE)Tj +/TT8 1 Tf +7.8013 0 TD +0.0144 Tw +[(, below\). Bit 4Q is the left mouse button, 2Q is the right)]TJ +-15.3286 -1.2889 TD +0 Tw +(button, 1Q is the middle button.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(LASTKEYBOARD)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.8444 TD +0.0211 Tw +(Value is an integer encoding the state of certain keys on the keyboard \(as of the last call to)Tj +/TT10 1 Tf +0 -1.2222 TD +0 Tw +(GETMOUSESTATE)Tj +/TT8 1 Tf +7.8013 0 TD +0.0489 Tw +[(, below\). Bit 200Q = lock, 100Q = left shift, 40Q = ctrl, 10Q = right shift,)]TJ +-7.8013 -1.2889 TD +0.2411 Tw +[(4Q = blank Bottom, 2Q = blank Middle, 1Q = blank Top. If the key is down, the)]TJ +0 -1.2222 TD +0 Tw +(corresponding bit is on.)Tj +/TT10 1 Tf +10 0 0 10 102 137.23 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 137.23 Tm +(GETMOUSESTATE)Tj +/TT10 1 Tf +10 0 0 10 178.2 137.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 184.201 137.23 Tm +[( )-28436.6([Function])]TJ +-6.4668 -1.8833 TD +0.1011 Tw +(Reads the current state of the mouse and sets the variables )Tj +/TT10 1 Tf +27.142 0 TD +0 Tw +(LASTMOUSEX)Tj +/TT8 1 Tf +6.001 0 TD +(, )Tj +/TT10 1 Tf +0.6011 0 TD +(LASTMOUSEY)Tj +/TT8 1 Tf +6.001 0 TD +(,)Tj +-39.7451 -1.2889 TD +(and )Tj +/TT10 1 Tf +2.0818 0 TD +(LASTMOUSEBUTTONS)Tj +/TT8 1 Tf +9.6016 0 TD +0.1389 Tw +[(. In polling mode, the program must remember the previous)]TJ +-11.6833 -1.2889 TD +0.0333 Tw +(state and look for changes, such as a key going up or down, or the cursor moving outside)Tj +0 -1.2222 TD +0 Tw +(a region of interest.)Tj +/TT10 1 Tf +10 0 0 10 102 63.8 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 63.8 Tm +(DECODEBUTTONS)Tj +/F3 1 Tf +10 0 0 10 178.2 63.8 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 180.98 63.8 Tm +(BUTTONSTATE)Tj +/TT10 1 Tf +10 0 0 10 240.3896 63.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 246.3906 63.8 Tm +[( )-21526.6([Function])]TJ +ET +endstream +endobj +101 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F1 15 0 R +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +103 0 obj +<< +/Length 4908 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-18)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +0.3244 Tw +(Returns a list of the mouse buttons that are down in the state )Tj +/TT16 1 Tf +31.3345 0 TD +0 Tw +(BUTTONSTATE)Tj +/TT8 1 Tf +6.6011 0 TD +0.3244 Tw +[(. If)]TJ +/TT16 1 Tf +-37.9355 -1.2889 TD +0 Tw +(BUTTONSTATE)Tj +/TT8 1 Tf +6.6011 0 TD +0.1078 Tw +[( is not a small integer, the value of )]TJ +/TT10 1 Tf +16.3401 0 TD +0 Tw +(LASTMOUSEBUTTONS)Tj +/TT8 1 Tf +9.6016 0 TD +0.1078 Tw +[( \(above\) is used.)]TJ +-32.5428 -1.2889 TD +0 Tw +(The button names that can be returned are: )Tj +/TT10 1 Tf +19.2647 0 TD +(LEFT)Tj +/TT8 1 Tf +2.4004 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(MIDDLE)Tj +/TT8 1 Tf +3.6006 0 TD +(, )Tj +/TT10 1 Tf +0.5 0 TD +(RIGHT)Tj +/TT8 1 Tf +3.0005 0 TD +( \(the three mouse keys\).)Tj +/TT4 1 Tf +10 0 0 10 102 503.4 Tm +(Keyboard Interpretation)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 500.69 m +606.01 500.69 l +S +BT +/TT8 1 Tf +9 0 0 9 126 478.74 Tm +0.0889 Tw +(For each key on the keyboard and mouse there is a corresponding bit in memory that the hardware)Tj +0 -1.2222 TD +0.0989 Tw +[(turns on and off as the key moves up and down. System-level routines decode the meaning of key)]TJ +T* +0.0378 Tw +(transitions according to a table of "key actions", which may be to put particular character codes in the)Tj +T* +0.0056 Tw +(sysbuffer, cause interrupts, change the internal shift/control status, or create events to be placed in the)Tj +T* +0 Tw +(mouse buffer.)Tj +/TT10 1 Tf +10 0 0 10 150 412.46 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 412.46 Tm +(KEYDOWNP)Tj +/F3 1 Tf +10 0 0 10 199.2 412.46 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 201.98 412.46 Tm +(KEYNAME)Tj +/TT10 1 Tf +10 0 0 10 239.7861 412.46 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 245.7871 412.46 Tm +[( )-26927([Function])]TJ +-7.9763 -1.8833 TD +0.1689 Tw +(Used to read the instantaneous state of any key, independent of any buffering or pre-)Tj +0 -1.2278 TD +0.1256 Tw +[(assigned key action. Returns )]TJ +/TT10 1 Tf +10 0 0 10 297.7662 384.46 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 303.7672 384.46 Tm +0.1256 Tw +[( if the key named )]TJ +/TT16 1 Tf +8.535 0 TD +0 Tw +(KEYNAME)Tj +/TT8 1 Tf +4.2007 0 TD +0.1256 Tw +[( is down at the moment the)]TJ +-27.1543 -1.3278 TD +0 Tw +(function is executed.)Tj +0 -2.0056 TD +0.0489 Tw +[(Most keys are named by the characters on the key-top. Therefore, )]TJ +/TT10 1 Tf +10 0 0 10 443.7385 354.46 Tm +0.116 Tw +(\(KEYDOWNP a\))Tj +/TT8 1 Tf +9 0 0 9 522.9112 354.46 Tm +0.0489 Tw +[( or)]TJ +/TT10 1 Tf +10 0 0 10 174 342.46 Tm +0 Tw +(\(KEYDOWNP A\))Tj +/TT8 1 Tf +9 0 0 9 252.0127 342.46 Tm +( returns )Tj +/TT10 1 Tf +10 0 0 10 285.3496 342.46 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 291.3506 342.46 Tm +( if the "A" key is down.)Tj +-13.039 -2.1056 TD +0.0355 Tw +[(There are a number of keys that do not have standard names printed on them. These can)]TJ +0 -1.2222 TD +0 Tw +(be accessed by special names as follows:)Tj +8.7844 -2.0056 TD +(Space)Tj +/TT10 1 Tf +10 0 0 10 288 294.46 Tm +(SPACE)Tj +/TT8 1 Tf +9 0 0 9 214.29 275.46 Tm +(Carriage return)Tj +/TT10 1 Tf +10 0 0 10 288 275.46 Tm +(CR)Tj +/TT8 1 Tf +9 0 0 9 238.21 256.46 Tm +(Line-feed)Tj +/TT10 1 Tf +10 0 0 10 288 256.46 Tm +(LF)Tj +/TT8 1 Tf +9 0 0 9 234.96 237.46 Tm +(Backspace)Tj +/TT10 1 Tf +10 0 0 10 288 237.46 Tm +(BS)Tj +/TT8 1 Tf +9 0 0 9 261 218.46 Tm +(Tab)Tj +/TT10 1 Tf +10 0 0 10 288 218.46 Tm +(TAB)Tj +/TT8 1 Tf +9 0 0 9 200.11 199.51 Tm +0.2367 Tw +[(Blank )236.7(keys )236.7(on )236.7(1132)-1332.4(The 1132 keyboard has three unmarked keys on the)]TJ +9.7656 -1.2222 TD +0.0056 Tw +[(right of the normal keyboard. These can be accessed by)]TJ +/TT10 1 Tf +10 0 0 10 288 177.46 Tm +0 Tw +(BLANK-BOTTOM)Tj +/TT8 1 Tf +9 0 0 9 360.0117 177.46 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 369.6817 177.46 Tm +(BLANK-MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 441.6934 177.46 Tm +0.5744 Tw +(, and )Tj +/TT10 1 Tf +10 0 0 10 474.0192 177.46 Tm +0 Tw +(BLANK-)Tj +-18.6019 -1.2 TD +(TOP)Tj +/TT8 1 Tf +9 0 0 9 306.0029 165.46 Tm +(.)Tj +-6.3937 -2.1111 TD +(Escape)Tj +/TT10 1 Tf +10 0 0 10 288 146.46 Tm +(ESCAPE)Tj +/TT8 1 Tf +9 0 0 9 237.11 127.46 Tm +(Shift keys)Tj +/TT10 1 Tf +10 0 0 10 288 127.46 Tm +(LSHIFT)Tj +/TT8 1 Tf +9 0 0 9 324.0058 127.46 Tm +0.1911 Tw +[( for the left shift key, )]TJ +/TT10 1 Tf +10 0 0 10 418.8151 127.46 Tm +0 Tw +(RSHIFT)Tj +/TT8 1 Tf +9 0 0 9 454.8209 127.46 Tm +0.1911 Tw +[( for the right)]TJ +-18.5357 -1.3278 TD +0 Tw +(shift key.)Tj +-7.3167 -2.0056 TD +(Shift lock key)Tj +/TT10 1 Tf +10 0 0 10 288 97.46 Tm +(LOCK)Tj +/TT8 1 Tf +9 0 0 9 228.89 78.46 Tm +(Control key)Tj +/TT10 1 Tf +10 0 0 10 288 78.46 Tm +(CTRL)Tj +/TT8 1 Tf +9 0 0 9 216.53 59.51 Tm +0.1444 Tw +[(Mouse )144.4(buttons)-1333.2(The state of the mouse buttons can be accessed using)]TJ +/TT10 1 Tf +10 0 0 10 288 48.46 Tm +0 Tw +(LEFT)Tj +/TT8 1 Tf +9 0 0 9 312.0039 48.46 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 316.5039 48.46 Tm +(MIDDLE)Tj +/TT8 1 Tf +9 0 0 9 352.5097 48.46 Tm +(, and )Tj +/TT10 1 Tf +10 0 0 10 374.4956 48.46 Tm +(RIGHT)Tj +/TT8 1 Tf +9 0 0 9 404.5005 48.46 Tm +(.)Tj +ET +endstream +endobj +104 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +106 0 obj +<< +/Length 7494 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-19)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +(If )Tj +/TT10 1 Tf +10 0 0 10 134.7193 569.49 Tm +(KEYNAME)Tj +/TT8 1 Tf +9 0 0 9 176.7261 569.49 Tm +0.0489 Tw +[( is a small integer, it is taken to be the internal key number. Otherwise, it is)]TJ +-5.6362 -1.3278 TD +0.0522 Tw +[(taken to be the name of the key. This means, for example, that the name of the "6" key is)]TJ +0 -1.2222 TD +0.1089 Tw +[(not the number 6. Instead, spelled-out names for all the digit keys have been assigned.)]TJ +0 -1.2278 TD +0.0356 Tw +(The "6" key is named )Tj +/TT10 1 Tf +10 0 0 10 213.3417 535.49 Tm +0 Tw +(SIX)Tj +/TT8 1 Tf +9 0 0 9 231.3446 535.49 Tm +0.0356 Tw +[(. It happens that the key number of the "6" key is 2. Therefore,)]TJ +-11.705 -1.3278 TD +0 Tw +(the following two forms are equivalent:)Tj +/TT10 1 Tf +10 0 0 10 162 505.49 Tm +(\(KEYDOWNP SIX\))Tj +0 -1.9 TD +(\(KEYDOWNP 2\))Tj +-6 -4.123 TD +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 445.26 Tm +(SHIFTDOWNP)Tj +/F2 1 Tf +10 0 0 10 162 445.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 164.87 445.26 Tm +(SHIFT)Tj +/TT10 1 Tf +10 0 0 10 191.8744 445.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 197.8753 445.26 Tm +[( )-26917.2([Function])]TJ +-7.9862 -1.8889 TD +(Returns )Tj +/TT10 1 Tf +10 0 0 10 159.5434 428.26 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 165.5444 428.26 Tm +( if the internal "shift" flag specified by )Tj +/TT16 1 Tf +16.898 0 TD +(SHIFT)Tj +/TT8 1 Tf +3.0005 0 TD +( is on; )Tj +/TT10 1 Tf +10 0 0 10 370.2153 428.26 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 388.2183 428.26 Tm +( otherwise.)Tj +-29.1354 -2.1111 TD +(If )Tj +/TT16 1 Tf +0.9266 0 TD +(SHIFT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0067 Tw +[( = )]TJ +/TT10 1 Tf +10 0 0 10 171.4173 409.26 Tm +0 Tw +(1SHIFT)Tj +/TT8 1 Tf +9 0 0 9 207.4232 409.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 211.9832 409.26 Tm +(2SHIFT)Tj +/TT8 1 Tf +9 0 0 9 247.989 409.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 252.549 409.26 Tm +(LOCK)Tj +/TT8 1 Tf +9 0 0 9 276.5529 409.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 281.1129 409.26 Tm +(META)Tj +/TT8 1 Tf +9 0 0 9 305.1168 409.26 Tm +0.0067 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 320.4551 409.26 Tm +0 Tw +(CTRL)Tj +/TT8 1 Tf +9 0 0 9 344.459 409.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 349.019 409.26 Tm +(SHIFTDOWNP)Tj +/TT8 1 Tf +9 0 0 9 409.0287 409.26 Tm +0.0067 Tw +[( returns the state of)]TJ +-31.4476 -1.3278 TD +0 Tw +(the left shift, right shift, shift lock, control, and meta flags, respectively.)Tj +0 -2.0056 TD +(If )Tj +/TT16 1 Tf +0.9199 0 TD +(SHIFT)Tj +/TT8 1 Tf +3.0005 0 TD +( = )Tj +/TT16 1 Tf +1.106 0 TD +(SHIFT)Tj +/TT8 1 Tf +3.0005 0 TD +(, )Tj +/TT10 1 Tf +10 0 0 10 202.7417 379.26 Tm +(SHIFTDOWNP)Tj +/TT8 1 Tf +9 0 0 9 262.7514 379.26 Tm +( returns )Tj +/TT10 1 Tf +10 0 0 10 296.0883 379.26 Tm +(T)Tj +/TT8 1 Tf +9 0 0 9 302.0893 379.26 Tm +( if either the left or right shift flag is on.)Tj +-19.5655 -2.1111 TD +(If )Tj +/TT16 1 Tf +0.9421 0 TD +(SHIFT)Tj +/TT8 1 Tf +3.0005 0 TD +0.0222 Tw +[( = )]TJ +/TT10 1 Tf +10 0 0 10 171.8373 360.26 Tm +0 Tw +(USERMODE1)Tj +/TT8 1 Tf +9 0 0 9 225.8461 360.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 230.5461 360.26 Tm +(USERMODE2)Tj +/TT8 1 Tf +9 0 0 9 284.5549 360.26 Tm +0.0222 Tw +(, or )Tj +/TT10 1 Tf +10 0 0 10 300.1731 360.26 Tm +0 Tw +(USERMODE3)Tj +/TT8 1 Tf +9 0 0 9 354.1819 360.26 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 358.8819 360.26 Tm +(SHIFTDOWNP)Tj +/TT8 1 Tf +9 0 0 9 418.8917 360.26 Tm +0.0222 Tw +[( returns the state)]TJ +-32.5435 -1.3278 TD +0.1022 Tw +[(of one of three user-settable flags that have no other effect on key interpretation. These)]TJ +0 -1.2278 TD +0 Tw +(flags can be set or cleared on character transitions by using )Tj +/TT10 1 Tf +10 0 0 10 362.0347 337.26 Tm +(KEYACTION)Tj +/TT8 1 Tf +9 0 0 9 416.0435 337.26 Tm +( \(below\).)Tj +/TT10 1 Tf +10 0 0 10 102 314.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 314.03 Tm +(KEYACTION)Tj +/F2 1 Tf +10 0 0 10 156.6 314.03 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 159.47 314.03 Tm +(KEYNAME ACTIONS )Tj +/TT10 1 Tf +10 0 0 10 251.2849 314.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 257.2859 314.03 Tm +[( )-20316([Function])]TJ +-14.5873 -1.8833 TD +0.1689 Tw +(Changes the internal tables that define the action to be taken when a key transition is)Tj +0 -1.2278 TD +0.26 Tw +(detected by the system keyboard handler. )Tj +/TT16 1 Tf +20.7995 0 TD +0 Tw +(KEYNAME)Tj +/TT8 1 Tf +4.2007 0 TD +0.26 Tw +[( is specified as for )]TJ +/TT10 1 Tf +10 0 0 10 435.7387 286.03 Tm +0 Tw +(KEYDOWNP)Tj +/TT8 1 Tf +9 0 0 9 483.7465 286.03 Tm +(.)Tj +/TT16 1 Tf +-39.7496 -1.3333 TD +(ACTIONS)Tj +/TT8 1 Tf +4.2007 0 TD +0.1244 Tw +[( is a dotted pair of the form )]TJ +/TT10 1 Tf +10 0 0 10 283.6797 274.03 Tm +0.298 Tw +(\(DOWN-ACTION . UP-ACTION\))Tj +/TT8 1 Tf +9 0 0 9 439.6641 274.03 Tm +0.1244 Tw +(, where the)Tj +-34.8516 -1.3278 TD +0 Tw +(acceptable transition actions and their interpretations are:)Tj +/TT10 1 Tf +10 0 0 10 144 244.03 Tm +(NIL)Tj +-1.8 -1.9 TD +(IGNORE)Tj +/TT8 1 Tf +9 0 0 9 174 225.03 Tm +0.1544 Tw +(Take no action on this transition \(the default for up-transitions on all)Tj +0 -1.3278 TD +0 Tw +(ordinary characters\).)Tj +/TT10 1 Tf +10 0 0 10 54.03 195.03 Tm +(\(CHAR SHIFTEDCHAR LOCKFLAG\))Tj +/TT8 1 Tf +9 0 0 9 174 176.03 Tm +0.0778 Tw +(If a transition action is a three-element list, )Tj +/TT10 1 Tf +10 0 0 10 350.89 176.03 Tm +0 Tw +(CHAR)Tj +/TT8 1 Tf +9 0 0 9 374.8939 176.03 Tm +0.0778 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 396.0298 176.03 Tm +0 Tw +(SHIFTEDCHAR)Tj +/TT8 1 Tf +9 0 0 9 174 164.08 Tm +0.2589 Tw +(are either character codes or \(non-numeric\) single-character litatoms)Tj +0 -1.2278 TD +0.8256 Tw +[(standing for their character codes. Note that )]TJ +/TT10 1 Tf +10 0 0 10 413.0269 153.03 Tm +0 Tw +(CHAR)Tj +/TT8 1 Tf +9 0 0 9 437.0308 153.03 Tm +0.8256 Tw +[( and)]TJ +/TT10 1 Tf +10 0 0 10 174 141.03 Tm +0 Tw +(SHIFTEDCHAR)Tj +/TT8 1 Tf +9 0 0 9 240.0107 141.03 Tm +0.0878 Tw +[( can be full sixteen-bit NS characters \(see page )]TJ +/TT10 1 Tf +10 0 0 10 432.7238 141.03 Tm +0 Tw +(X.XX)Tj +/TT8 1 Tf +9 0 0 9 456.7277 141.03 Tm +(\).)Tj +-31.4142 -1.3333 TD +0.0756 Tw +(When the transition occurs, )Tj +/TT10 1 Tf +10 0 0 10 288.3103 129.03 Tm +0 Tw +(CHAR)Tj +/TT8 1 Tf +9 0 0 9 312.3142 129.03 Tm +0.0756 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 326.6425 129.03 Tm +0 Tw +(SHIFTEDCHAR)Tj +/TT8 1 Tf +9 0 0 9 392.6532 129.03 Tm +0.0756 Tw +[( is transmitted to)]TJ +-24.2948 -1.3278 TD +0.0089 Tw +(the system buffer, depending on whether either of the two shift keys are)Tj +0 -1.2222 TD +0 Tw +(down.)Tj +/TT10 1 Tf +10 0 0 10 174 88.03 Tm +(LOCKFLAG)Tj +/TT8 1 Tf +9 0 0 9 222.0078 88.03 Tm +0.1033 Tw +[( is optional, and may be )]TJ +/TT10 1 Tf +10 0 0 10 324.8959 88.03 Tm +0 Tw +(LOCKSHIFT)Tj +/TT8 1 Tf +9 0 0 9 378.9047 88.03 Tm +0.1033 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 393.7329 88.03 Tm +0 Tw +(NOLOCKSHIFT)Tj +/TT8 1 Tf +9 0 0 9 459.7437 88.03 Tm +(.)Tj +-31.7493 -1.3333 TD +(If )Tj +/TT10 1 Tf +10 0 0 10 185.9093 76.03 Tm +(LOCKFLAG)Tj +/TT8 1 Tf +9 0 0 9 233.9171 76.03 Tm +0.4033 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 252.1107 76.03 Tm +0 Tw +(LOCKSHIFT)Tj +/TT8 1 Tf +9 0 0 9 306.1195 76.03 Tm +0.4033 Tw +(, then )Tj +/TT10 1 Tf +10 0 0 10 337.8526 76.03 Tm +0 Tw +(SHIFTEDCHAR)Tj +/TT8 1 Tf +9 0 0 9 403.8633 76.03 Tm +0.4033 Tw +[( will also be)]TJ +-25.5404 -1.3333 TD +0.0856 Tw +(transmitted when the )Tj +/TT10 1 Tf +10 0 0 10 264.1259 64.03 Tm +0 Tw +(LOCK)Tj +/TT8 1 Tf +9 0 0 9 288.1298 64.03 Tm +0.0856 Tw +[( shift is down \(the alphabetic keys initially)]TJ +-12.6811 -1.3333 TD +0 Tw +(specify )Tj +/TT10 1 Tf +10 0 0 10 205.2713 52.03 Tm +(LOCKSHIFT)Tj +/TT8 1 Tf +9 0 0 9 259.2801 52.03 Tm +0.0967 Tw +(, but the digit keys specify )Tj +/TT10 1 Tf +10 0 0 10 371.0411 52.03 Tm +0 Tw +(NOLOCKSHIFT)Tj +/TT8 1 Tf +9 0 0 9 437.0519 52.03 Tm +0.0967 Tw +[(\). For)]TJ +ET +endstream +endobj +107 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 16 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +109 0 obj +<< +/Length 5395 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-20)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 222 569.49 Tm +(example, )Tj +/TT10 1 Tf +10 0 0 10 261.0212 569.49 Tm +0.207 Tw +(\(a A LOCKSHIFT\))Tj +/TT8 1 Tf +9 0 0 9 355.1758 569.49 Tm +0.0867 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 376.4717 569.49 Tm +0.207 Tw +(\(61Q ! NOLOCKSHIFT\))Tj +/TT8 1 Tf +9 0 0 9 494.6302 569.49 Tm +0.0867 Tw +[( are)]TJ +-30.2922 -1.3278 TD +0.2711 Tw +(the initial settings for the down transitions of the "a" and "1" keys)Tj +0 -1.2222 TD +0 Tw +(respectively.)Tj +/TT10 1 Tf +10 0 0 10 102.03 528.49 Tm +(1SHIFTUP, 1SHIFTDOWN)Tj +0 -1.9 TD +(2SHIFTUP, 2SHIFTDOWN)Tj +1.197 -1.9 TD +(CTRLUP, CTRLDOWN)Tj +T* +(METAUP, METADOWN)Tj +/TT8 1 Tf +9 0 0 9 222 471.49 Tm +0.0144 Tw +(Change the status of the internal "shift" flags for the left shift, right shift,)Tj +0 -1.3278 TD +0.7667 Tw +(control, and meta keys, respectively. These shifts affect the)Tj +0 -1.2222 TD +0.1467 Tw +[(interpretation of ordinary key actions. If either of the shifts is down,)]TJ +0 -1.2278 TD +0 Tw +(then )Tj +/TT10 1 Tf +10 0 0 10 242.1131 437.49 Tm +(SHIFTEDCHAR)Tj +/TT8 1 Tf +9 0 0 9 308.1239 437.49 Tm +0.0156 Tw +[(s are transmitted. If the control flag is on, then the)]TJ +-9.5693 -1.3278 TD +0.3767 Tw +(the seventh bit of the character code is cleared as characters are)Tj +0 -1.2222 TD +0.1422 Tw +[(transmitted. If the meta flag is on, the the eighth bit of the character)]TJ +T* +0.33 Tw +[(code is set \(normally cleared\) as characters are transmitted. For)]TJ +0 -1.2278 TD +0.1156 Tw +(example, the initial keyactions for the left shift key is )Tj +/TT10 1 Tf +10 0 0 10 444.0362 392.49 Tm +0 Tw +(\(1SHIFTDOWN)Tj +-22.2036 -1.2 TD +(. 1SHIFTUP\).)Tj +-11.997 -1.9 TD +(LOCKUP, LOCKDOWN, LOCKTOGGLE)Tj +/TT8 1 Tf +9 0 0 9 222 342.54 Tm +0.1156 Tw +[(Change the status of the internal "shift" flags for the shift lock key. If)]TJ +0 -1.2278 TD +0.0878 Tw +(the lock flag is down, then )Tj +/TT10 1 Tf +10 0 0 10 333.9402 331.49 Tm +0 Tw +(SHIFTEDCHAR)Tj +/TT8 1 Tf +9 0 0 9 399.9509 331.49 Tm +0.0878 Tw +(s are transmitted if the key)Tj +-19.7723 -1.3333 TD +0.0889 Tw +(action specified )Tj +/TT10 1 Tf +10 0 0 10 287.8744 319.49 Tm +0 Tw +(LOCKSHIFT)Tj +/TT8 1 Tf +9 0 0 9 341.8832 319.49 Tm +0.0889 Tw +(. )Tj +/TT10 1 Tf +10 0 0 10 350.2332 319.49 Tm +0 Tw +(LOCKUP)Tj +/TT8 1 Tf +9 0 0 9 386.239 319.49 Tm +0.0889 Tw +[( and )]TJ +/TT10 1 Tf +10 0 0 10 407.5749 319.49 Tm +0 Tw +(LOCKDOWN)Tj +/TT8 1 Tf +9 0 0 9 455.5827 319.49 Tm +0.0889 Tw +[( clear and set)]TJ +-25.9536 -1.3333 TD +0.1544 Tw +(the shift lock flag, respectively. )Tj +/TT10 1 Tf +10 0 0 10 358.0539 307.49 Tm +0 Tw +(LOCKTOGGLE)Tj +/TT8 1 Tf +9 0 0 9 418.0636 307.49 Tm +0.1544 Tw +[( complements the flag)]TJ +-21.7848 -1.3278 TD +0 Tw +(\(turning it off if the flag is on; on if the flag is off\).)Tj +/TT10 1 Tf +10 0 0 10 102.03 277.49 Tm +(USERMODE1UP, USERMODE1DOWN, USERMODE1TOGGLE)Tj +0 -1.9 TD +(USERMODE2UP, USERMODE2DOWN, USERMODE2TOGGLE)Tj +T* +(USERMODE3UP, USERMODE3DOWN, USERMODE3TOGGLE)Tj +/TT8 1 Tf +9 0 0 9 222 220.49 Tm +0.1467 Tw +(Change the status of the three user flags )Tj +/TT10 1 Tf +10 0 0 10 393.936 220.49 Tm +0 Tw +(USERMODE1)Tj +/TT8 1 Tf +9 0 0 9 447.9448 220.49 Tm +(, )Tj +/TT10 1 Tf +10 0 0 10 453.7647 220.49 Tm +(USERMODE2)Tj +/TT8 1 Tf +9 0 0 9 507.7735 220.49 Tm +(,)Tj +-31.7526 -1.3333 TD +(and )Tj +/TT10 1 Tf +10 0 0 10 244.9158 208.49 Tm +(USERMODE3)Tj +/TT8 1 Tf +9 0 0 9 298.9246 208.49 Tm +0.6033 Tw +(, whose status can be determined by calling)Tj +/TT10 1 Tf +10 0 0 10 222 196.49 Tm +0 Tw +(SHIFTDOWNP)Tj +/TT8 1 Tf +9 0 0 9 282.0097 196.49 Tm +0.39 Tw +[( \(above\). These flags have no other effect on key)]TJ +-6.6678 -1.3278 TD +0 Tw +(interpretation.)Tj +/TT10 1 Tf +10 0 0 10 180 166.49 Tm +(EVENT)Tj +/TT8 1 Tf +9 0 0 9 222 166.49 Tm +0.2367 Tw +(An encoding of the current state of the mouse and selected keys is)Tj +T* +0 Tw +(placed in the mouse-event buffer when this transition is detected.)Tj +/TT10 1 Tf +10 0 0 10 222 136.49 Tm +(KEYACTION)Tj +/TT8 1 Tf +9 0 0 9 276.0088 136.49 Tm +0.0822 Tw +[( returns the previous setting for )]TJ +/TT10 1 Tf +10 0 0 10 408.7296 136.49 Tm +0 Tw +(KEYNAME)Tj +/TT8 1 Tf +9 0 0 9 450.7364 136.49 Tm +0.0822 Tw +[(. If )]TJ +/TT10 1 Tf +10 0 0 10 467.9857 136.49 Tm +0 Tw +(ACTIONS)Tj +/TT8 1 Tf +9 0 0 9 222 124.49 Tm +(is )Tj +/TT10 1 Tf +10 0 0 10 230.6836 124.49 Tm +(NIL)Tj +/TT8 1 Tf +9 0 0 9 248.6865 124.49 Tm +(, returns the previous setting without changing the tables.)Tj +/TT10 1 Tf +10 0 0 10 150 101.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 101.26 Tm +(MODIFY.KEYACTIONS)Tj +/F3 1 Tf +10 0 0 10 247.8 101.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 250.58 101.26 Tm +(KEYACTIONS SAVECURRENT?)Tj +/TT10 1 Tf +10 0 0 10 374.8002 101.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 380.8012 101.26 Tm +[( )-11925.4([Function])]TJ +/TT16 1 Tf +-22.9779 -1.8889 TD +(KEYACTIONS)Tj +/TT8 1 Tf +6.001 0 TD +0.3533 Tw +[( is a list of key actions to be set, each of the form )]TJ +/TT10 1 Tf +10 0 0 10 465.497 84.26 Tm +0.848 Tw +(\(KEYNAME .)Tj +-29.1497 -1.2 TD +0 Tw +(ACTIONS\))Tj +/TT8 1 Tf +9 0 0 9 222.0078 72.26 Tm +0.1389 Tw +[(. The effect of )]TJ +/TT10 1 Tf +10 0 0 10 286.2788 72.26 Tm +0 Tw +(MODIFY.KEYACTIONS)Tj +/TT8 1 Tf +9 0 0 9 388.2954 72.26 Tm +0.1389 Tw +[( is as if )]TJ +/TT10 1 Tf +10 0 0 10 422.6596 72.26 Tm +0.333 Tw +(\(KEYACTION KEYNAME)Tj +-24.866 -1.2 TD +0 Tw +(ACTIONS\))Tj +/TT8 1 Tf +9 0 0 9 222.0078 60.26 Tm +( were performed for each item on )Tj +/TT16 1 Tf +15.0444 0 TD +(KEYACTIONS)Tj +/TT8 1 Tf +6.001 0 TD +(.)Tj +ET +endstream +endobj +110 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F3 25 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +112 0 obj +<< +/Length 6083 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-21)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +(If )Tj +/TT16 1 Tf +1.1644 0 TD +(SAVECURRENT?)Tj +/TT8 1 Tf +7.2012 0 TD +0.2444 Tw +[( is non-)]TJ +/TT10 1 Tf +10 0 0 10 235.0101 569.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 253.0131 569.49 Tm +0.2444 Tw +(, then )Tj +/TT10 1 Tf +10 0 0 10 281.8862 569.49 Tm +0 Tw +(MODIFY.KEYACTIONS)Tj +/TT8 1 Tf +9 0 0 9 383.9028 569.49 Tm +0.2444 Tw +[( returns a list of all the)]TJ +-28.6559 -1.3333 TD +0.4956 Tw +(results from )Tj +/TT16 1 Tf +6.5897 0 TD +0 Tw +(KEYACTION)Tj +/TT8 1 Tf +5.4009 0 TD +0.4956 Tw +(, otherwise it returns )Tj +/TT10 1 Tf +10 0 0 10 336.6008 557.49 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 354.6038 557.49 Tm +0.4956 Tw +[(. This can be used with a)]TJ +/TT10 1 Tf +10 0 0 10 126 545.49 Tm +0 Tw +(MODIFY.KEYACTIONS)Tj +/TT8 1 Tf +9 0 0 9 228.0166 545.49 Tm +0.0156 Tw +[( that appears in a )]TJ +/TT10 1 Tf +10 0 0 10 299.4334 545.49 Tm +0 Tw +(RESETFORM)Tj +/TT8 1 Tf +9 0 0 9 353.4422 545.49 Tm +0.0156 Tw +(, so that the list is built at "entry",)Tj +-25.2714 -1.3278 TD +0 Tw +(but not upon "exit".)Tj +/TT10 1 Tf +10 0 0 10 102 511.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 511.26 Tm +(METASHIFT)Tj +/F3 1 Tf +10 0 0 10 156.6 511.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 159.38 511.26 Tm +(FLG)Tj +/TT10 1 Tf +10 0 0 10 175.5826 511.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 181.5836 511.26 Tm +[( )-23989.6([NoSpread Function])]TJ +-6.176 -1.8889 TD +(If )Tj +/TT16 1 Tf +0.9777 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.0578 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 162.9755 494.26 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 168.9765 494.26 Tm +0.0578 Tw +(, changes the keyboard handler \(via )Tj +/TT10 1 Tf +10 0 0 10 316.3602 494.26 Tm +0 Tw +(KEYACTION)Tj +/TT8 1 Tf +9 0 0 9 370.369 494.26 Tm +0.0578 Tw +(\) so as to interpret the "stop")Tj +-27.1521 -1.3278 TD +0.0156 Tw +(key on the 1108 as a metashift: if a key is struck while the meta is down, it is read with the)Tj +0 -1.2278 TD +0.1367 Tw +[(200Q bit set. For )]TJ +/TT10 1 Tf +10 0 0 10 201.2935 471.26 Tm +0 Tw +(CHAT)Tj +/TT8 1 Tf +9 0 0 9 225.2974 471.26 Tm +0.1367 Tw +[( users this is a way of getting an "Edit" key on your simulated)]TJ +-11.0331 -1.3278 TD +0 Tw +(Datamedia.)Tj +0 -2.0056 TD +(If )Tj +/TT16 1 Tf +1.0355 0 TD +(FLG)Tj +/TT8 1 Tf +1.8003 0 TD +0.1156 Tw +[( is other than )]TJ +/TT10 1 Tf +10 0 0 10 209.9807 441.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 227.9837 441.26 Tm +0.1156 Tw +[( or )]TJ +/TT10 1 Tf +10 0 0 10 243.0319 441.26 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 249.0329 441.26 Tm +0.1156 Tw +(, it is passed as the )Tj +/TT10 1 Tf +10 0 0 10 331.1577 441.26 Tm +0 Tw +(ACTIONS)Tj +/TT8 1 Tf +9 0 0 9 373.1645 441.26 Tm +0.1156 Tw +[( argument to )]TJ +/TT10 1 Tf +10 0 0 10 429.8011 441.26 Tm +0 Tw +(KEYACTION)Tj +/TT8 1 Tf +9 0 0 9 483.8099 441.26 Tm +(.)Tj +-39.7567 -1.3333 TD +0.0933 Tw +(The reason for this is that if someone has set the ")Tj +/TT10 1 Tf +10 0 0 10 331.0032 429.26 Tm +0 Tw +(STOP)Tj +/TT8 1 Tf +9 0 0 9 355.0071 429.26 Tm +0.0933 Tw +(" key to some random behavior,)Tj +-25.4452 -1.3333 TD +0 Tw +(then )Tj +/TT10 1 Tf +10 0 0 10 148.5331 417.26 Tm +0.683 Tw +(\(RESETFORM \(METASHIFT T\) --\))Tj +/TT8 1 Tf +9 0 0 9 337.0505 417.26 Tm +0.2844 Tw +[( will correctly restore that random)]TJ +-23.4501 -1.3278 TD +0 Tw +(behavior.)Tj +/TT4 1 Tf +10 0 0 10 54 362.97 Tm +(Display Screen)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +54.01 360.26 m +534.01 360.26 l +S +BT +/TT8 1 Tf +9 0 0 9 78 338.31 Tm +0.0244 Tw +[(Medley supports a high-resolution bitmap display screen. All printing and drawing operations to the)]TJ +0 -1.2222 TD +0.1189 Tw +(screen are actually performed on a bitmap in memory, which is read by the computer hardware to)Tj +T* +0.1 Tw +[(become visible as the screen. This section describes the functions used to control the appearance of)]TJ +T* +0 Tw +(the display screen.)Tj +/TT10 1 Tf +10 0 0 10 102 284.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 284.26 Tm +(SCREENBITMAP)Tj +/TT10 1 Tf +10 0 0 10 172.8 284.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 178.801 284.26 Tm +[( )-29036.6([Function])]TJ +-5.8668 -1.8833 TD +(Returns the screen bitmap.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(SCREENWIDTH)Tj +/TT8 1 Tf +6.6 0 TD +[( )-31167.8([Variable])]TJ +/TT12 1 Tf +-6.6 -1.0667 TD +(SCREENHEIGHT)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -2.0667 TD +(Value is the width and height of the screen bitmap, respectively.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(WHOLEDISPLAY)Tj +/TT8 1 Tf +7.2 0 TD +[( )-30567.8([Variable])]TJ +-4.5333 -1.8444 TD +(Value is a region that is the size of the screen bitmap.)Tj +-5.3333 -2.8889 TD +(The background shade of the display window can be changed using the following function:)Tj +/TT10 1 Tf +10 0 0 10 102 132.23 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 132.23 Tm +(CHANGEBACKGROUND)Tj +/F2 1 Tf +10 0 0 10 194.4 132.23 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 197.27 132.23 Tm +(SHADE )Tj +/TT10 1 Tf +10 0 0 10 235.0761 132.23 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 241.0771 132.23 Tm +[( )-22117([Function])]TJ +-12.7863 -1.8833 TD +0.0656 Tw +(Changes the background shade of the window system. )Tj +/TT16 1 Tf +25.3068 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0656 Tw +[( determines the pattern of)]TJ +-28.3073 -1.2889 TD +0.0633 Tw +[(the background. If )]TJ +/TT16 1 Tf +8.9067 0 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0633 Tw +[( is a texture, then the background is simply painted with it. If)]TJ +/TT16 1 Tf +-11.9071 -1.2944 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.1267 Tw +[( is a )]TJ +/TT10 1 Tf +10 0 0 10 174.108 92.03 Tm +0 Tw +(BITMAP)Tj +/TT8 1 Tf +9 0 0 9 210.1138 92.03 Tm +0.1267 Tw +[(, the background is tesselated \(tiled\) with it to cover the screen. If)]TJ +/TT16 1 Tf +-9.346 -1.3333 TD +0 Tw +(SHADE)Tj +/TT8 1 Tf +3.0005 0 TD +0.0567 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 164.958 80.03 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 170.959 80.03 Tm +0.0567 Tw +(, it changes to the original shade, the value of )Tj +/TT10 1 Tf +10 0 0 10 357.8168 80.03 Tm +0 Tw +(WINDOWBACKGROUNDSHADE)Tj +/TT8 1 Tf +9 0 0 9 483.8373 80.03 Tm +(.)Tj +-39.7597 -1.3278 TD +(It returns the previous value of the background.)Tj +/TT12 1 Tf +-2.6667 -2.3333 TD +(WINDOWBACKGROUNDSHADE)Tj +/TT8 1 Tf +12.6 0 TD +[( )-25167.8([Variable])]TJ +ET +endstream +endobj +113 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 16 0 R +/F3 25 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +116 0 obj +<< +/Length 6065 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 102 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-22)Tj +/TT6 1 Tf +10 0 0 10 96 612 Tm +(INTERLISP-D REFERENCE MANUAL)Tj +/TT8 1 Tf +9 0 0 9 174 569.54 Tm +(Value is the default background shade for the display.)Tj +/TT10 1 Tf +10 0 0 10 150 547.26 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 547.26 Tm +(VIDEOCOLOR)Tj +/F2 1 Tf +10 0 0 10 210 547.26 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 212.87 547.26 Tm +(BLACKFLG)Tj +/TT10 1 Tf +10 0 0 10 256.077 547.26 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 262.078 547.26 Tm +[( )-20379.1([NoSpread Function])]TJ +-9.7864 -1.8889 TD +0.0167 Tw +[(Sets the interpretation of the bits in the screen bitmap. If )]TJ +/TT16 1 Tf +25.4583 0 TD +0 Tw +(BLACKFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.0167 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 457.5653 530.26 Tm +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 475.5682 530.26 Tm +0.0167 Tw +(, a 0 bit will be)Tj +-33.5076 -1.3333 TD +0.1022 Tw +(displayed as white, otherwise a 0 bit will be displayed as black. )Tj +/TT10 1 Tf +10 0 0 10 441.9854 518.26 Tm +0 Tw +(VIDEOCOLOR)Tj +/TT8 1 Tf +9 0 0 9 501.9951 518.26 Tm +0.1022 Tw +[( returns)]TJ +-36.4439 -1.3333 TD +0.1611 Tw +[(the previous setting. If )]TJ +/TT16 1 Tf +11.2509 0 TD +0 Tw +(BLACKFLG)Tj +/TT8 1 Tf +4.8008 0 TD +0.1611 Tw +[( is not given, )]TJ +/TT10 1 Tf +10 0 0 10 377.2936 506.26 Tm +0 Tw +(VIDEOCOLOR)Tj +/TT8 1 Tf +9 0 0 9 437.3034 506.26 Tm +0.1611 Tw +[( will return the current)]TJ +-29.2559 -1.3278 TD +0 Tw +(setting without changing anything.)Tj +0 -2 TD +(Note: This function only works on the Xerox 1100 and Xerox 1108.)Tj +/TT10 1 Tf +10 0 0 10 150 454.03 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 454.03 Tm +(VIDEORATE)Tj +/F2 1 Tf +10 0 0 10 204.6 454.03 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 207.47 454.03 Tm +(TYPE)Tj +/TT10 1 Tf +10 0 0 10 229.0735 454.03 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 235.0745 454.03 Tm +[( )-28117.3([Function])]TJ +-6.7861 -1.8889 TD +(Sets the rate at which the screen is refreshed. )Tj +/TT16 1 Tf +20.2467 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( is one of )Tj +/TT10 1 Tf +10 0 0 10 415.67 437.03 Tm +(NORMAL)Tj +/TT8 1 Tf +9 0 0 9 451.6758 437.03 Tm +( or )Tj +/TT10 1 Tf +10 0 0 10 464.66 437.03 Tm +(TAPE)Tj +/TT8 1 Tf +9 0 0 9 488.6639 437.03 Tm +(. If )Tj +/TT16 1 Tf +1.6729 0 TD +(TYPE)Tj +/TT8 1 Tf +2.4004 0 TD +( is)Tj +/TT10 1 Tf +10 0 0 10 174 425.03 Tm +(TAPE)Tj +/TT8 1 Tf +9 0 0 9 198.0039 425.03 Tm +0.1311 Tw +[(, the screen will be refreshed at the same rate as TV \(60 cycles per second\). This)]TJ +-2.6671 -1.3278 TD +0.02 Tw +[(makes the picture look better when video taping the screen. Note: Changing the rate may)]TJ +0 -1.2222 TD +0 Tw +(change the dimensions of the display on the picture tube. )Tj +-5.3333 -2.8889 TD +0.0244 Tw +(Maintaining the video image on the screen uses cpu cycles, so turning off the display can improve the)Tj +0 -1.2222 TD +0.0644 Tw +[(speed of compute-bound tasks. When the display is off, the screen will be white but any printing or)]TJ +T* +0 Tw +(displaying that the program does will be visible when the display is turned back on. )Tj +5.3333 -2.0056 TD +(Note: Breaks and )Tj +/TT10 1 Tf +10 0 0 10 246.8086 336.03 Tm +(PAGEFULLFN)Tj +/TT8 1 Tf +9 0 0 9 306.8183 336.03 Tm +( waiting \(see Chapter 28\) turn the display on, but)Tj +-14.7576 -1.3278 TD +(users should be aware that it is possible to have the system waiting for a response to)Tj +0 -1.2222 TD +(a question printed or a menu displayed on a non-visible part of the screen. The)Tj +T* +(functions below are provided to turn the display off.)Tj +0 -2 TD +(Note: These functions have no effect on the Xerox 1108 display.)Tj +/TT10 1 Tf +10 0 0 10 150 261.8 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 261.8 Tm +(SETDISPLAYHEIGHT)Tj +/F2 1 Tf +10 0 0 10 242.4 261.8 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 245.27 261.8 Tm +(NSCANLINES)Tj +/TT10 1 Tf +10 0 0 10 299.2788 261.8 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 305.2798 261.8 Tm +[( )-20316.7([Function])]TJ +-14.5866 -1.8889 TD +0.1167 Tw +(Sets the display to only show the top )Tj +/TT16 1 Tf +17.4416 0 TD +0 Tw +(NSCANLINES)Tj +/TT8 1 Tf +6.001 0 TD +0.1167 Tw +[( of the screen. If )]TJ +/TT16 1 Tf +8.1888 0 TD +0 Tw +(NSCANLINES)Tj +/TT8 1 Tf +6.001 0 TD +0.1167 Tw +[( is )]TJ +/TT10 1 Tf +10 0 0 10 525.7248 244.8 Tm +0 Tw +(T)Tj +/TT8 1 Tf +9 0 0 9 531.7258 244.8 Tm +(,)Tj +-39.7473 -1.3278 TD +(resets the display to show the full screen. Returns the previous setting.)Tj +/TT10 1 Tf +10 0 0 10 150 210.57 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 210.57 Tm +(DISPLAYDOWN)Tj +/F2 1 Tf +10 0 0 10 215.4 210.57 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 218.27 210.57 Tm +(FORM NSCANLINES)Tj +/TT10 1 Tf +10 0 0 10 299.2832 210.57 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 305.2841 210.57 Tm +[( )-20316.2([Function])]TJ +-14.5871 -1.8833 TD +(Evaluates )Tj +/TT16 1 Tf +4.6777 0 TD +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.1289 Tw +[( \(with the display set to only show the top )]TJ +/TT16 1 Tf +20.1385 0 TD +0 Tw +(NSCANLINES)Tj +/TT8 1 Tf +6.001 0 TD +0.1289 Tw +[( of the screen\),)]TJ +-33.2176 -1.2889 TD +0.3567 Tw +(and returns the value of )Tj +/TT16 1 Tf +12.6344 0 TD +0 Tw +(FORM)Tj +/TT8 1 Tf +2.4004 0 TD +0.3567 Tw +[(. It restores the screen to its previous setting. If)]TJ +/TT16 1 Tf +-15.0348 -1.2889 TD +0 Tw +(NSCANLINES)Tj +/TT8 1 Tf +6.001 0 TD +( is not given, it defaults to 0.)Tj +/TT4 1 Tf +10 0 0 10 102 127.48 Tm +(Miscellaneous Terminal I/O)Tj +ET +0 G +0 J 0 j 1 w 10 M []0 d +1 i +102.01 124.77 m +582.01 124.77 l +S +BT +/TT10 1 Tf +10 0 0 10 150 106.54 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 106.54 Tm +(RINGBELLS)Tj +/F2 1 Tf +10 0 0 10 204.6 106.54 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 207.47 106.54 Tm +(N)Tj +/TT10 1 Tf +10 0 0 10 212.8709 106.54 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 218.8718 106.54 Tm +[( )-29917.6([Function])]TJ +-4.9858 -1.8833 TD +0.0389 Tw +(Flashes \(reverse-videos\) the screen )Tj +/TT16 1 Tf +15.7317 0 TD +0 Tw +(N)Tj +/TT8 1 Tf +0.6001 0 TD +0.0389 Tw +[( times \(default 1\). On the Xerox 1108, this also beeps)]TJ +-16.3318 -1.2889 TD +0 Tw +(through the keyboard speaker.)Tj +/TT10 1 Tf +10 0 0 10 150 55.71 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 156.001 55.71 Tm +(PLAYTUNE)Tj +/F2 1 Tf +10 0 0 10 199.2 55.71 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 202.07 55.71 Tm +(Frequency/Duration.pairlist)Tj +/TT10 1 Tf +10 0 0 10 347.8937 55.71 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 353.8947 55.71 Tm +[( )-14915([Function])]TJ +ET +endstream +endobj +117 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 16 0 R +/TT2 4 0 R +/TT4 5 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +119 0 obj +<< +/Length 3702 +>> +stream +BT +/TT2 1 Tf +9 0 0 9 459 24 Tm +0 g +/GS1 gs +0 Tc +0 Tw +(29-23)Tj +/TT6 1 Tf +10 0 0 10 408 612 Tm +(TERMINAL INPUT/OUTPUT)Tj +/TT8 1 Tf +9 0 0 9 126 569.49 Tm +0.0611 Tw +(On the Xerox 1108, )Tj +/TT10 1 Tf +10 0 0 10 205.6756 569.49 Tm +0 Tw +(PLAYTUNE)Tj +/TT8 1 Tf +9 0 0 9 253.6834 569.49 Tm +0.0611 Tw +[( plays a sequence of notes through the keyboard speaker.)]TJ +/TT16 1 Tf +-14.187 -1.3278 TD +0 Tw +(Frequency/Duration.pairlist)Tj +/TT8 1 Tf +16.2026 0 TD +0.2844 Tw +[( should be a list of dotted pairs \()]TJ +/TT16 1 Tf +16.5182 0 TD +0.6822 Tw +(FREQUENCY .)Tj +-32.7209 -1.2944 TD +0 Tw +(DURATION)Tj +/TT8 1 Tf +4.8008 0 TD +0.0589 Tw +(\). )Tj +/TT10 1 Tf +10 0 0 10 180.0141 545.89 Tm +0 Tw +(PLAYTUNE)Tj +/TT8 1 Tf +9 0 0 9 228.0219 545.89 Tm +0.0589 Tw +[( maps down its argument, beeping the 1108 keyboard buzzer at)]TJ +-11.3358 -1.3333 TD +0.0001 Tc +0.0032 Tw +(each frequency for the specified amount of time. Specifying )Tj +/TT10 1 Tf +10 0 0 10 367.1027 533.89 Tm +0 Tc +0 Tw +(NIL)Tj +/TT8 1 Tf +9 0 0 9 385.1057 533.89 Tm +0.0001 Tc +0.0032 Tw +( for a frequency means to)Tj +-28.7895 -1.3333 TD +0 Tc +0.0767 Tw +[(turn the beeper off the specified amount of time. The units of time are )]TJ +/TT10 1 Tf +10 0 0 10 417.7011 521.89 Tm +0 Tw +(TICKS)Tj +/TT8 1 Tf +9 0 0 9 447.706 521.89 Tm +0.0767 Tw +[( \(Chapter)]TJ +-35.7451 -1.3333 TD +0.0256 Tw +(12\), which last about 28.78 microseconds on the Xerox 1108. )Tj +/TT10 1 Tf +10 0 0 10 369.9216 509.89 Tm +0 Tw +(PLAYTUNE)Tj +/TT8 1 Tf +9 0 0 9 417.9294 509.89 Tm +0.0256 Tw +[( makes no sound)]TJ +-32.4366 -1.3333 TD +0.0422 Tw +[(on a Xerox 1132. The default "simulate" entry for Control-G )]TJ +/TT10 1 Tf +10 0 0 10 370.3939 497.89 Tm +0.102 Tw +(\(ASCII BEL\))Tj +/TT8 1 Tf +9 0 0 9 437.4246 497.89 Tm +0.0422 Tw +[( on the 1108)]TJ +-34.6027 -1.3333 TD +0 Tw +(uses )Tj +/TT10 1 Tf +10 0 0 10 145.6172 485.89 Tm +(PLAYTUNE)Tj +/TT8 1 Tf +9 0 0 9 193.625 485.89 Tm +( to make a short beep.)Tj +/TT10 1 Tf +10 0 0 10 126 466.89 Tm +(PLAYTUNE)Tj +/TT8 1 Tf +9 0 0 9 174.0078 466.89 Tm +( is implemented using )Tj +/TT10 1 Tf +10 0 0 10 264.6889 466.89 Tm +(BEEPON)Tj +/TT8 1 Tf +9 0 0 9 300.6948 466.89 Tm +( and )Tj +/TT10 1 Tf +10 0 0 10 320.4306 466.89 Tm +(BEEPOFF)Tj +/TT8 1 Tf +9 0 0 9 362.4375 466.89 Tm +(:)Tj +/TT10 1 Tf +10 0 0 10 102 443.66 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 443.66 Tm +(BEEPON)Tj +/F2 1 Tf +10 0 0 10 140.4 443.66 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 143.27 443.66 Tm +(FREQ)Tj +/TT10 1 Tf +10 0 0 10 164.8735 443.66 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 170.8745 443.66 Tm +[( )-29917.3([Function])]TJ +-4.9861 -1.8833 TD +0.1067 Tw +(On the Xerox 1108, turns on the keyboard speaker playing a note with frequency )Tj +/TT16 1 Tf +37.3522 0 TD +0 Tw +(FREQ)Tj +/TT8 1 Tf +2.4004 0 TD +(,)Tj +-39.7526 -1.2889 TD +0.1789 Tw +[(measured in Hertz \(see Chapter 12\). The speaker will continue to play the note until)]TJ +/TT10 1 Tf +10 0 0 10 126 404.06 Tm +0 Tw +(BEEPOFF)Tj +/TT8 1 Tf +9 0 0 9 168.0068 404.06 Tm +( is called.)Tj +/TT10 1 Tf +10 0 0 10 102 382.06 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 382.06 Tm +(BEEPOFF)Tj +/TT10 1 Tf +10 0 0 10 145.8 382.06 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 151.801 382.06 Tm +( )Tj +32.5366 0 TD +([Function])Tj +-35.4033 -1.8833 TD +(Turns off the keyboard speaker on the Xerox 1108.)Tj +/TT10 1 Tf +10 0 0 10 102 342.83 Tm +(\()Tj +/TT12 1 Tf +9 0 0 9 108.001 342.83 Tm +(SETMAINTPANEL)Tj +/F2 1 Tf +10 0 0 10 178.2 342.83 Tm +( )Tj +/TT16 1 Tf +9 0 0 9 181.07 342.83 Tm +(N)Tj +/TT10 1 Tf +10 0 0 10 186.4709 342.83 Tm +(\))Tj +/TT8 1 Tf +9 0 0 9 192.4718 342.83 Tm +[( )-27517.6([Function])]TJ +-7.3858 -1.8833 TD +0.04 Tw +(On the Xerox 1108, this sets the four-digit "maintanance panel" display on the front of the)Tj +0 -1.2222 TD +0 Tw +(computer to display the number )Tj +/TT16 1 Tf +14.5552 0 TD +(N)Tj +/TT8 1 Tf +0.6001 0 TD +(.)Tj +ET +endstream +endobj +120 0 obj +<< +/ProcSet [/PDF /Text ] +/Font << +/F2 16 0 R +/TT2 4 0 R +/TT6 6 0 R +/TT8 7 0 R +/TT10 8 0 R +/TT12 9 0 R +/TT16 18 0 R +>> +/ExtGState << +/GS1 10 0 R +>> +>> +endobj +57 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 8 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 17 +>> +stream +g'? +endstream +endobj +58 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +'??‡? +endstream +endobj +59 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 13 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +FFFFFFF +endstream +endobj +60 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 14 +/Height 14 +/BitsPerComponent 1 +/ImageMask true +/Length 29 +>> +stream +wͣm}_c +endstream +endobj +61 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream +-)5US5_u__ +endstream +endobj +62 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 15 +/BitsPerComponent 1 +/ImageMask true +/Length 31 +>> +stream +?>~~>? +endstream +endobj +66 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 12 +/Height 12 +/BitsPerComponent 1 +/ImageMask true +/Length 25 +>> +stream +???????? +endstream +endobj +67 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 12 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +oooooooo?ֿ? +endstream +endobj +68 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 14 +/BitsPerComponent 1 +/ImageMask true +/Length 29 +>> +stream +> +stream +?????????? +endstream +endobj +70 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 11 +/Height 11 +/BitsPerComponent 1 +/ImageMask true +/Length 23 +>> +stream + +endstream +endobj +71 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 13 +/Height 11 +/BitsPerComponent 1 +/ImageMask true +/Length 23 +>> +stream +????????? +endstream +endobj +72 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 11 +/Height 11 +/BitsPerComponent 1 +/ImageMask true +/Length 23 +>> +stream +????????? +endstream +endobj +73 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 13 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream + +endstream +endobj +74 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 7 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 17 +>> +stream +ǃ +endstream +endobj +75 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 9 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream + +endstream +endobj +76 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 9 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream + +endstream +endobj +77 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 13 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream +UWUWUWUWUW___ +endstream +endobj +78 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream +LJ +endstream +endobj +79 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream + +endstream +endobj +80 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 13 +/BitsPerComponent 1 +/ImageMask true +/Length 27 +>> +stream +?? +endstream +endobj +84 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 15 +/BitsPerComponent 1 +/ImageMask true +/Length 31 +>> +stream +jZjlwqwq +endstream +endobj +85 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 12 +/Height 8 +/BitsPerComponent 1 +/ImageMask true +/Length 17 +>> +stream +V +endstream +endobj +86 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 12 +/Height 8 +/BitsPerComponent 1 +/ImageMask true +/Length 17 +>> +stream +Voo +endstream +endobj +87 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 15 +/Height 7 +/BitsPerComponent 1 +/ImageMask true +/Length 15 +>> +stream +kzzx-i- +endstream +endobj +88 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 7 +/BitsPerComponent 1 +/ImageMask true +/Length 15 +>> +stream +hkVlVVl +endstream +endobj +89 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 7 +/BitsPerComponent 1 +/ImageMask true +/Length 15 +>> +stream + uu u-w +endstream +endobj +90 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 14 +/BitsPerComponent 1 +/ImageMask true +/Length 29 +>> +stream +{ z~_{_ +endstream +endobj +91 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream + +endstream +endobj +92 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +g'? +endstream +endobj +93 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +g'? +endstream +endobj +94 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +'? +endstream +endobj +95 0 obj +<< +/Type /XObject +/Subtype /Image +/Width 16 +/Height 16 +/BitsPerComponent 1 +/ImageMask true +/Length 33 +>> +stream +g'? +endstream +endobj +10 0 obj +<< +/Type /ExtGState +/SA false +/SM 0.02 +/OP false +/op false +/OPM 1 +/BG2 /Default +/UCR2 /Default +/HT /Default +/TR2 /Default +>> +endobj +121 0 obj +<< +/Type /FontDescriptor +/Ascent 750 +/CapHeight 662 +/Descent -250 +/Flags 34 +/FontBBox [-168 -218 1000 898] +/FontName /Times-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 450 +/StemH 84 +>> +endobj +122 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 262176 +/FontBBox [-170 -228 1003 962] +/FontName /Helvetica-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 532 +/StemH 140 +>> +endobj +123 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 32 +/FontBBox [-166 -225 1000 931] +/FontName /Helvetica +/ItalicAngle 0 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +124 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 692 +/Descent -277 +/Flags 34 +/FontBBox [-166 -283 1021 927] +/FontName /Palatino-Roman +/ItalicAngle 0 +/StemV 84 +/XHeight 469 +/StemH 84 +>> +endobj +125 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 35 +/FontBBox [-28 -250 628 805] +/FontName /Courier +/ItalicAngle 0 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +126 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 262179 +/FontBBox [-113 -250 749 801] +/FontName /Courier-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 439 +/StemH 84 +>> +endobj +127 0 obj +<< +/Type /FontDescriptor +/Ascent 822 +/CapHeight 681 +/Descent -277 +/Flags 262178 +/FontBBox [-152 -266 1000 924] +/FontName /Palatino-Bold +/ItalicAngle 0 +/StemV 133 +/XHeight 471 +/StemH 122 +>> +endobj +128 0 obj +<< +/Type /FontDescriptor +/Ascent 753 +/CapHeight 562 +/Descent -246 +/Flags 99 +/FontBBox [-28 -250 742 805] +/FontName /Courier-Oblique +/ItalicAngle -15 +/StemV 51 +/XHeight 426 +/StemH 51 +>> +endobj +129 0 obj +<< +/Type /FontDescriptor +/Ascent 701 +/CapHeight 0 +/Descent -298 +/Flags 4 +/FontBBox [-167 -299 1094 827] +/FontName /JBPHDC+Symbol +/ItalicAngle 0 +/StemV 0 +/FontFile2 130 0 R +>> +endobj +130 0 obj +<< +/Filter /FlateDecode +/Length 20023 +/Length1 39356 +>> +stream +HW}tovgvfwv9 +($Z*PP81 rho#̒ ,4ŀMS))R &EEZ>*R +B1MO3{w{s}ͼ ̸ُ3 wТ@~3{8^nB(h& w ed( ^GT, "- ౭eZE(R\uCQS*;6_|L;}3P#frGI\,@ҁ8驈Gq s#TJ|AB.Gbhquۯ`ꈗz,^qt8@Mʿg Y<8 +qU +q:WA?'s?}R+t]6r"kHMs pRXMY p4d% Q:6C5F\hp4Cx\3LԪ%i7k$^ِw; +|:"Rx.^Q@ &s8Nα0;` 4@q+u@I@) c9??va!b!] )Y w'6Rp'L#%/Dy܃+75 +6ZdhIEXA^/=$a~6ԡ s-6GVJu a q͕ +Kq-*Wo%'a5߀G*OR1J܎8W$ +eڼͫYN +A8_ >KBf2ZxH|B>E0tl":=a%&(H" >wIBl _^6Yi 3Lfo>u'i/ ~_^LVImwxLHR 6Vٸ'lKm\frWظU6'm\cZikll|Z۸gm97/8$OęqCbQ/ +50O%Pz1+SE&ѐU͊!t5sg@K7?_/F\ җ%EcnL552鲚fU<>*%ʣ[ -)h #@1nٵU$4SkWLg6*6OmP-B Mv!.P"m Ń.P4 ?x8Α$;Di*2kM)[$~/]RU)Ck̄LpFkI,[{un';Ye7a I${xlm<~ؾ8x`R֜XQ* %ҮIԺhZJ.PCHB(aR6Cet(`" t:t[a=wI }u~ޏ;VuF݅Kb<&+zBCLt >ϵ)/ZBEp$w:2fQlnm47$M5z{V+@~FAj Z#XXh#~e59d.2b`{#ϫȨNǪSg!;"-W7: F&\wqX +R12Hoao=̑66˝iFE2^U.dmy5sG=>ԥjHO>eR +=[ 2fZu_v]6~EO!UD"\"@!^$5]3G"ѹ`5]١lg-s &Uin7;ɺXHe3@tK7H +ske]436}:{>5.],_)VjwU͊(9Ҫ~)'?SOrTYvAS%dtډy\/wo Cg,sKGp% CbKP+7ᖭ'CjXXۥ2GVYX,WEG\sm;H`oY-'4`gTYd>v@ۀ''6DC{FF%hp7csfK)P@p2ᖦ +) #az Kgz':~;@e?$]Í8#c$ _k$A梎_,4A=dc{ 0i`Q#}X7t:cݪX'kAFj7xbep}>.Hʐn= 茳'!g톗#cWgV[p]ώ&zFOhrg׊_'uŻ|1O;1{,:~uׯzý'.5=Z2(0MsjY [6EuFQr9VkoXֹ=J,R۽<&qss!QBb g(v iNtR0˼~dTy9nn.=uƂ\d$C0,v"hexڪrhX& V(HU)F8MOhCө cfD^4vFbDS+{&<s)XYY k^0l&h6 ]x/p +y W0H,A d +yI9Cj,YI^& WI I 3"4%%rj6ꤹMЇTet6G?t=ӕEZG7-5FGߢ. =C}&eƲl*+b3X=ճWY kcow!!;N(ȮNGp7')Ǽ?ƟK%^7|;wA0?OO)ˣc_|_&j22LYX'n*|?A!HPgn&1StN-D88Z,Ĩƙ(*ԌG&0VbYxo5Abdb, [MJH/k3AĄW!YS[2ћEw6 U_Rf2F][042XJD=w=ʇذ#Z(z& TaA*X+LfF&æ Y F}' OW.v-vu%.=kKlMo'% h~/u޻\szgR _Bٖ ?&m9AalڍhKHdrHR:l?[l?968UbTlEi lBm)w}ZAh\}~۲}nn}y2!56(}Å-2*`Si PM^:=L6tX@,Z-ĸ v7X<p"5eLOa-tl / p!%.01  K~hem59qQ,te{5:e[ZEqx8|l;,,(췰,^P TH-&xBַfdm-ݙzjVjYes~0e!ΘZ}:yarcLE`AqO鱩#nhʝtzgOI0g,\"y!{'?ȧbjx7/dDI㘅[zB|>YZds|b>w옾?[󝂅]\ECѶ$͑%lh7֕PF^ʼnZ)x|7ǎ_ . ]H9#acR{pI+n6#}':v56-9jQ2y2d4f*<;ҹY<_N:6-t +GIgati72Zں] J6ok.C%mX^:6 3PKmٕ,s.wѱMZ:L1p;e. ?bARżYaDt& (aYi} h Qҗ U}&?L(Һ,h#&R&j^6@a_% :3K +֘w)W'Ǧ:_T2U,fQqx/mu("H?]̀,z_g].~ڂa=~ȸv1f$-l ^\-Z@f~%Oia%gYZ@qAy-K0oUW yU}fBAkff8߰΋j2@-} 5Fa󥭀tft0dˀea33% +fM:{P+a+qw?v`>j[`[$jI[t.2 9d +P7J-}W +RHgR_coHVW+,j_Dϊmv/,f!oPP%:T3eu\NK1B-9EPEYTM9ec''G8Ըx? 9Xk פjiP,#*2na&B䂥/C"43eVTOaHG֠yLA(M^I-]Râb"T:X[{r/|k*=F46_ԷΟ;99%R= :h_ ڳDKX]ͶSyLACүgbb>a 7BJUК?v<>#RKyu0fұAӌc^s<{,+6zl5Y4e1TI*{E|ӽRJ"}{cEm=lOt|w_a1dZ,Mb~?,Y _ߧ`!F'd}EM?}$Xh7(),',⒅cC}Rb2u u(8GTA"r wW5~/ Jܫ`iyZ Mz<4Vzb|肽 D%8 +'8  VRE:TЗn=4t͠лnakp3~?wq/x +O8)|_Nj$HOொ|7Mr?~3h+|}}v!eeQQI f M d"j! +$2JgL5#:ihkLڱc'zeAMܳ}+얬I.OgEL^$/kߔwɝ{q#_D(_C-((N%YIQ*u/đlyh~UsouYY扵aW֚0T&ͅ$k>hn̳-2-{:9e[J'w{!=x"+A z_+ly!ͫ/q|t‘=*5$IUoǤ@fauYd{dU˥ibnh7:IyS^q<&-ӦKfMxꋺYH<Β 8:ՂLH$-_%ܱn(?pV*VA^}}|jz5"g͛db/GcFv~|Ө5!j7aqd4UIǪO$~4 _L $ I}5isjgh;mezTD#ana83uG%FR$@"|Ra2)0YUdVe<,~ˑ[ +נ"lFN8 : +O0OsnN"n2LFKq%ϑ'Djȫd-#(2d;i#>6ycr'$&ɗ1(PF-AԅCSd:fә-Z@t#JېAnG1z"CEv$H>I)[̬YT--GvV'E&9Z~'dii525` ٚ٘9Y"Kane$=6elr(@H߈KI<%;!ńJxW![=gvL 7rasU^Ι s T8oj6'1/daP&}?.mlYf"aBy?9όc#6ɄuyXpk$菰/TxT U-2q KLO/}p&h;‘&t *#DI@Z8AE)P  9LɈtՑCը"񶿷{I.N}[%h7,hb طjWjЗf]p"""Ҍ1u9.N%rGMGIEaXbY:kf͆v5/[T;`n~ژK:^~IeMK?V+577MS{?i"[UY3fR6 |`ܪOl-i۫D'<0׎*lу aw9_3ԝ7tj{ dy"E{* +BЮy"{i"ڝ'OnMȿqIˁ|IcH[.27KPw GMykm|wka8/>txoA9zGNwt@O^E-]PZXߜ* ?2|[3+Ώo>d +3q}'HJ>aGI^qQdo\(GPIE,1"vPNDUzBL$ƕn2KN-;rnz4*6 gwEVh3Ryć,d`Li#,})ȃjB(0t(E=UzjT]0F=X>X+PO=aC;8GyT]Euއ8H6UUE&TVm"[,!P_=H֐4 NtQTX'H3'IGgy\$owROs +ԠЯSVJ:ѻw"OW54L#>N:izFi=ID_qz^fj6ֵ,jk +jVj<VϖB[֡jbY36_:=ź!bϲ>OPRwRRE gFG 5*^Qndը#<mqz-ےHU(n| w/^Jk,h +۟^I mR@܊ܨ4䑒L3hL7*՝cKMS0cRE;peh *x2IČo!z ZE;p-0}ml^_b`U5q ~$%(6>|PZ4T +ėE dq$hH⹐a#`P, #X#h Ib?p MՈbyX+zةP+oy?84ud `\ +,ԏ1PRdۃ1H5IKlmHG:pw8eS7W.i, Y̯8mh7_(Sޣ|O $Q;tѻ Ix@:Ic G,z'? ІXxf EEY*: }`^y,ȧX(. 0y xrc)qqX[aBE >$+[UD)\S#=c!5Yf`2%oHa/WqNb:/YGd!гN15O,iqZ@pB0=UVC1EF .YU_ը`z_8 yfq 6I۠'Ok^H%GzKe[]v'JnmlY,TYf!y.X׎oEixazA#1tl&|6ldf6gMdCn-X,-NQ1h-%_%qnb!ʰHT==qjQmY$iYپҺa׿*v6bAdTM$z0Wؖy@8z%:\^ 0gOKbVf<|@ ,f'zsklb0CSr\[ :|,toR[-CLX X'7J.* bV/){/oi \v,$jUg/ Ll4jhv4\7U1lA+,3Y(vw}{N0s8!Cs$nA@:P{ FTt>$95Rվ$$^{J&m,g JyQovv6h6p;pR:]z]A?L)P8=AGQ@CϡYԤ[^ě>Vt<{BSޙK"ll848q̒yUZX:)nLnRz wAZ(5g޺vZ'&ûs\J7*JQZ8NɮhEQ܂ҵ6WOxe`@PJdvA y*bZ郡Eu}.Œbgk_8Oe:N阕]Jym*ә++ȩmW>Cz&> ÐVm0x U<%tʬ4D \mLs^4Mm^N)i0ih'#-8ZL)eHUsAhấ'L=0q-ZXhq$-_sςMf:#Y#֩•GA?")V\Oq.'5O57Y-UYn~xG S,Q ө --.DDZxh1Pp.jޥ =L-4iA T0,TcbjeKf^lQ950xmmd7LLgu LhRc]Zf1|Սw ֒tHUZ9wX5Tx3kX*;/+XGd~HM -f! >؞؛Y$Z|h}̻]~,[XD 2p"kZk\/^,c ^b7c}bY 5EH),q,vY-,k:^Q}?ԉ:>~}Q֝x/bkpQ,,Ͽ̱phogh^!|g,ɱg7شI?wtěAtchK\T +Z@s^); n亀ɍ?{,ARd˺u簜MI M~ݹ eRȢ$-DKZ, +/TQff `g !hlb$j\BśbSkiF5(v[hUrE۵j" EZTY츦>z8hӸ0/0݋~wm)}tXۀ4~]8vVB MZ7-wm[f;;҂;-T }ptN:| 13c%Cނ/p +# O aQ2MI.aA#L^$%u.ʘ2|F9|YrAy +wUʯ^-PQW¢( YjeVk b]xhZz@aQ1ttm>Z5gxxHp{g}S{~sgvӫqf`Y"KaX\~沅f&viƇ1|:o.~*-K=%MJHä1R4EIM҇t]YN,!O_EzU#)_o*LP)?Rr,eXY|vrX9T*+R.)*SUըުxuf\Bݮ;<X 33=JT*Z*  +jEE + "=H8L`FI"U0G#HK BQĨʣ(Fx +}G辱5  +v&#Q"|E @eDpHs) P};θhz0r3<"f=bHz[zR3K$ Ї`pq +CN(!W#ZBP uD P'qB7@ۛ8[!mPWϵA“@ɶlrџۗ(ث;?}^?tJк U+>vTl\iU+ˮުY_hX>* %omybc)]{%zЕΔWj\J߸yDk-GL^^sƿ>w0fF+T.& ޲cYBa?z4 @[*9lyViAȯ^(ungo|uUzZBܧXν,o+I̾N" [Ԇ\{9:[S QJrSo6(tDܑ/=rc,{FO(Uɕ*n1MX}Q,խ[h\ݾ͇UIGoZ6>c9imTuf%}v4c/^u97uDVIudj3_`/K)Ƈ/|R +L"=uAlewj"."Fa!z7+bmU*q)(%9R,z=HLg5,^B1W +l,qq[5&}qNm˒jԌ/B'\>%>pAʳ֑'J=6؎NQcOb|.? T̰EV3# łP6;\W溽pm7Lz89gsޭ\CO~.PP{@hfX?slvWŢ9mX˅VwGycc1`J<^o@w-(%ǡ< X!H$Xp.1F198R+U=RSgnt|Vve]~(kmO9n-P)g@1&މ\K3z:SȣhA‡S<> #֗8IVdPޅwnٮPDZ2v}Pqd"MҦaX6isDLiMz/2(0 +$(8 "Âˠ22 ;waY,sRzL%{rv!u̫ĮO}9WʷH(>*^Ȕ $e@-/u%igT~|R zQ:;3{'/KbO)!'TT&|ׯ\' u$bF[Y6fMJ"k_,: _>㻇*u@|Tn׊P1g#& gG9GR|xWi_{De*#I;$T!wk}.q#1YMk?%x/#U~P}x%ك+ĆJ\)nDKBx{oH^kz1>ŗOv:{)GlKh+7 +T$? Y#rZ|tByGm/wg. EXkdK)丼=$-|B{n7MF'מ%Ճxlvf`Ep!g&̓E6OzMHmc *rs"Z?qmTK~* M7HӁkI Fv'u'it0l;T8 Z8-fT!֓D+ANT|iI@K\ ƆalȜ&"gAy謚LtFtѮ?I2,mMqgoS] .3eԧt3$ruu7-mbq8f9ڐaԶHL)UE2Dh8Y[eAofYxcw| +U:JS5AuE(osh5qtl/Z*!qyO#f)8fH[p QdD^qGsyַ&]&dL0. xaNW\Z3 3 +nˉCPjc+ h6d;v~*ƱHy݋]#16`iw%3']CA$X:3! g,3em-578:X~5cߚp ڜ:>3밳aŘ z4l$$:S(c NCqHծ֣87QOrmCL4cYf\*hbgՙuzL]$u(SU`zy]QqV\-l\ 0LCDہҩuWg#[T ȄU[ Ub%ݢxֱhB|u0KѰp`.FķmE5͝q5v"P4yO$Qö'jشP*YS D. pJא% |ܕoXx5#{x50E8㸵xM֧-\E8<]Y(\IIS0^lSdCS5=1@E TBLcI$ d.#;s +Ѕ>s`Dڲ L<*hIǬővN55X54vI:cAV0܏p#J8YcG8E2 Ȧ949v;fng"OO7%PgyZk@c%\) +Z=$!baQɻieU7FPen؁˭@m "C6E,:0Y8; +NaO}y@7*Ν_~W;~t~e|? 2 yzZ +I%1-H0b b\@ & 2AHq_ffJA"DĀj0*F3feUʗTj>Lzw9w{sC\RKSG,IiZmQW͡ku½>Wy"RCxN*{u32w#c` ihMsLkw6<ݓ>'5fNmIOpmz*/Vܰw}ٻ־,;~Yӊ}=n=|xdՕewr:Onka'Z,>:!\Іik>Za{E<8̌+ǫʺ>Zײ +Vz ls ߬Ήx{/+p1?ka٥'.R'}|K:SUu*C.{.{Syqa {ׯlNl4S|SrPiכKԶN(3MqU{'FkȿuPخO+L]>y;]iy:ڌS!o3F}Y(N)X~6FcB>^ M"hOhdڃzDݨ 턼.1mW[nF `+}nu=d֡Lk5Q&\WY42dr{rQ"ߓkcK,9TϖlZν`9؃Y',2SxDhDRZ֗C?KQ*?|uzh_\f5r)42-T"XRyORƺ~ +&42%N,p&8D@Ms:8p b@ Fo(pBi$pa`(y,[0 ǀ-h0G/N&?#/C/7ycz Ӄer~(H!( + sh:p(:Աw^ [Qo';ߢG;(d@Qe M@KP SͻL8gɠ@Ɵ_ln}?{)㧞 IҤRWѯ"[bW;U˱G[|frX|>Y7/K,b 4,MŃ\n?l-P}1tnzu!5;Ϫ +endstream +endobj +131 0 obj +<< +/Type /FontDescriptor +/Ascent 770 +/CapHeight 718 +/Descent -229 +/Flags 96 +/FontBBox [-170 -225 1116 931] +/FontName /Helvetica-Oblique +/ItalicAngle -15 +/StemV 88 +/XHeight 523 +/StemH 88 +>> +endobj +132 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 34 +/FontBBox [-195 -250 1000 965] +/FontName /NewCenturySchlbk-Roman +/ItalicAngle 0 +/StemV 92 +/XHeight 464 +/StemH 45 +>> +endobj +133 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 262178 +/FontBBox [-165 -250 1000 988] +/FontName /NewCenturySchlbk-Bold +/ItalicAngle 0 +/StemV 154 +/XHeight 475 +/StemH 54 +>> +endobj +134 0 obj +<< +/Type /FontDescriptor +/Ascent 737 +/CapHeight 722 +/Descent -205 +/Flags 98 +/FontBBox [-166 -250 994 958] +/FontName /NewCenturySchlbk-Italic +/ItalicAngle -16 +/StemV 80 +/XHeight 466 +/StemH 45 +>> +endobj +15 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 121 +/Widths [278 296 389 556 556 833 815 204 333 333 500 606 278 333 278 278 +556 556 556 556 556 556 556 556 556 556 278 278 606 606 606 444 +737 722 722 722 778 722 667 778 833 407 556 778 667 944 815 778 +667 778 722 630 667 815 722 981 704 704 611 333 606 333 606 500 +333 556 556 444 574 500 333 537 611 315 296 593 315 889 611 500 +574 556 444 463 389 611 537 778 537 537 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Roman +/FontDescriptor 132 0 R +>> +endobj +16 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [287 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Bold +/FontDescriptor 133 0 R +>> +endobj +25 0 obj +<< +/Type /Font +/Subtype /Type1 +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /NewCenturySchlbk-Italic +/FontDescriptor 134 0 R +>> +endobj +4 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 45 +/LastChar 57 +/Widths [333 0 0 500 500 500 500 500 500 500 500 500 500 ] +/Encoding /WinAnsiEncoding +/BaseFont /Times-Roman +/FontDescriptor 121 0 R +>> +endobj +5 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 121 +/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 278 +0 0 556 0 0 0 0 0 0 556 0 0 0 0 0 0 +0 722 722 722 722 667 611 0 0 278 0 722 611 833 722 778 +667 0 722 667 611 722 0 0 0 0 0 0 0 0 0 0 +0 556 611 556 611 556 333 611 611 278 0 0 278 889 611 611 +611 0 389 556 333 611 556 778 556 556 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Bold +/FontDescriptor 122 0 R +>> +endobj +6 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 85 +/Widths [278 0 0 0 0 0 0 0 333 333 0 0 278 333 0 278 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 667 0 722 722 667 611 0 0 278 0 0 556 833 722 778 +667 0 722 667 611 722 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica +/FontDescriptor 123 0 R +>> +endobj +7 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [250 0 371 606 0 840 0 0 333 333 0 0 250 333 250 606 +500 500 500 500 500 500 500 500 500 0 250 250 606 606 606 0 +0 778 611 709 774 611 556 763 832 337 0 0 611 946 831 786 +604 786 668 525 613 778 722 1000 667 667 667 333 606 333 0 0 +0 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 +601 560 395 424 326 603 565 834 516 556 500 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Roman +/FontDescriptor 124 0 R +>> +endobj +8 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 146 +/Widths [600 600 600 0 0 600 0 0 600 600 0 0 600 600 600 600 +600 600 600 600 0 0 600 0 0 0 0 0 600 600 600 0 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 +0 600 600 600 0 600 600 600 600 600 0 0 600 600 600 600 +600 0 600 600 600 600 0 600 0 0 600 600 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier +/FontDescriptor 125 0 R +>> +endobj +9 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 119 +/Widths [600 0 0 0 0 0 0 0 0 0 0 0 0 600 600 0 +0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 0 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 600 0 0 0 0 0 600 0 600 0 0 600 0 600 600 +0 0 600 0 600 600 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Bold +/FontDescriptor 126 0 R +>> +endobj +17 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 119 +/Widths [250 0 0 0 0 889 0 0 0 0 0 0 250 0 0 0 +500 0 0 0 500 500 0 0 0 500 0 0 0 0 0 0 +0 778 667 722 833 611 0 833 0 389 0 0 611 1000 833 0 +0 0 722 611 667 778 0 0 0 0 0 0 0 0 0 0 +0 500 0 0 0 0 0 556 0 333 0 0 333 0 611 0 +611 0 0 0 333 611 0 833 ] +/Encoding /WinAnsiEncoding +/BaseFont /Palatino-Bold +/FontDescriptor 127 0 R +>> +endobj +18 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 151 +/Widths [600 0 0 0 0 0 0 0 0 600 0 0 600 0 600 600 +0 600 600 0 0 0 0 0 0 0 0 0 0 0 0 600 +0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 +0 600 0 600 0 600 0 0 0 600 0 0 600 0 600 600 +600 600 600 600 600 600 0 0 0 600 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 600 ] +/Encoding /WinAnsiEncoding +/BaseFont /Courier-Oblique +/FontDescriptor 128 0 R +>> +endobj +32 0 obj +<< +/Type /Font +/Subtype /Type0 +/BaseFont /JBPHDC+Symbol +/Encoding /Identity-H +/DescendantFonts [ 135 0 R ] +/ToUnicode 136 0 R +>> +endobj +135 0 obj +<< +/Type /Font +/Subtype /CIDFontType2 +/BaseFont /JBPHDC+Symbol +/FontDescriptor 129 0 R +/CIDSystemInfo<< +/Registry (Adobe) +/Ordering (Identity) +/Supplement 0 +>> +/DW 1000 +/W [ +66 [603] +] +>> +endobj +48 0 obj +<< +/Type /Font +/Subtype /TrueType +/FirstChar 32 +/LastChar 32 +/Widths [278 ] +/Encoding /WinAnsiEncoding +/BaseFont /Helvetica-Oblique +/FontDescriptor 131 0 R +>> +endobj +136 0 obj +<< +/Filter /FlateDecode +/Length 219 +>> +stream +HTP=o0 +<TUB,w C?Th\bhD& &`[~{<|v`簰E mڻ-Dܭs©!@] s^=>T _!{3tqBJPAӀA/fB?_#zs4ЈPWI7GAr:/I5"oxᕫnFœ=noFOxN ? (j +endstream +endobj +1 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 3 0 R +/Contents 2 0 R +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 14 0 R +/Contents 13 0 R +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 21 0 R +/Contents 20 0 R +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 24 0 R +/Contents 23 0 R +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 28 0 R +/Contents 27 0 R +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 31 0 R +/Contents 30 0 R +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 35 0 R +/Contents 34 0 R +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 38 0 R +/Contents 37 0 R +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 41 0 R +/Contents 40 0 R +>> +endobj +42 0 obj +<< +/Type /Page +/Parent 11 0 R +/Resources 44 0 R +/Contents 43 0 R +>> +endobj +45 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 47 0 R +/Contents 46 0 R +>> +endobj +51 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 53 0 R +/Contents 52 0 R +>> +endobj +54 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 56 0 R +/Contents 55 0 R +>> +endobj +63 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 65 0 R +/Contents 64 0 R +>> +endobj +81 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 83 0 R +/Contents 82 0 R +>> +endobj +96 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 98 0 R +/Contents 97 0 R +>> +endobj +99 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 101 0 R +/Contents 100 0 R +>> +endobj +102 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 104 0 R +/Contents 103 0 R +>> +endobj +105 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 107 0 R +/Contents 106 0 R +>> +endobj +108 0 obj +<< +/Type /Page +/Parent 50 0 R +/Resources 110 0 R +/Contents 109 0 R +>> +endobj +111 0 obj +<< +/Type /Page +/Parent 114 0 R +/Resources 113 0 R +/Contents 112 0 R +>> +endobj +115 0 obj +<< +/Type /Page +/Parent 114 0 R +/Resources 117 0 R +/Contents 116 0 R +>> +endobj +118 0 obj +<< +/Type /Page +/Parent 114 0 R +/Resources 120 0 R +/Contents 119 0 R +>> +endobj +137 0 obj +<< +/S /D +>> +endobj +138 0 obj +<< +/Nums [0 137 0 R ] +>> +endobj +11 0 obj +<< +/Type /Pages +/Kids [1 0 R 12 0 R 19 0 R 22 0 R 26 0 R 29 0 R 33 0 R 36 0 R 39 0 R 42 0 R] +/Count 10 +/Parent 49 0 R +>> +endobj +50 0 obj +<< +/Type /Pages +/Kids [45 0 R 51 0 R 54 0 R 63 0 R 81 0 R 96 0 R 99 0 R 102 0 R 105 0 R 108 0 R] +/Count 10 +/Parent 49 0 R +>> +endobj +114 0 obj +<< +/Type /Pages +/Kids [111 0 R 115 0 R 118 0 R] +/Count 3 +/Parent 49 0 R +>> +endobj +49 0 obj +<< +/Type /Pages +/Kids [11 0 R 50 0 R 114 0 R ] +/Count 23 +/MediaBox [0 0 612 792] +>> +endobj +139 0 obj +<< +/CreationDate (D:20210202102724-06'00') +/ModDate (D:20210202102724-06'00') +/Producer (Apple pstopdf) +>> +endobj +140 0 obj +<< +/Type /Catalog +/Pages 49 0 R +/PageLabels 138 0 R +>> +endobj +xref +0 141 +0000000000 65535 f +0000181004 00000 n +0000000016 00000 n +0000004668 00000 n +0000176782 00000 n +0000176994 00000 n +0000177437 00000 n +0000177752 00000 n +0000178314 00000 n +0000178842 00000 n +0000152998 00000 n +0000183027 00000 n +0000181085 00000 n +0000004821 00000 n +0000012725 00000 n +0000175889 00000 n +0000176428 00000 n +0000179265 00000 n +0000179675 00000 n +0000181169 00000 n +0000012916 00000 n +0000020255 00000 n +0000181253 00000 n +0000020422 00000 n +0000027683 00000 n +0000176604 00000 n +0000181337 00000 n +0000027896 00000 n +0000033786 00000 n +0000181421 00000 n +0000033988 00000 n +0000041136 00000 n +0000180186 00000 n +0000181505 00000 n +0000041316 00000 n +0000047845 00000 n +0000181589 00000 n +0000048012 00000 n +0000055613 00000 n +0000181673 00000 n +0000055802 00000 n +0000061904 00000 n +0000181757 00000 n +0000062082 00000 n +0000068960 00000 n +0000181841 00000 n +0000069138 00000 n +0000076049 00000 n +0000180536 00000 n +0000183397 00000 n +0000183164 00000 n +0000181925 00000 n +0000076240 00000 n +0000081661 00000 n +0000182009 00000 n +0000081839 00000 n +0000088193 00000 n +0000147549 00000 n +0000147704 00000 n +0000147876 00000 n +0000148048 00000 n +0000148216 00000 n +0000148382 00000 n +0000182093 00000 n +0000088455 00000 n +0000093229 00000 n +0000148552 00000 n +0000148716 00000 n +0000148888 00000 n +0000149056 00000 n +0000149218 00000 n +0000149380 00000 n +0000149542 00000 n +0000149704 00000 n +0000149870 00000 n +0000150025 00000 n +0000150196 00000 n +0000150367 00000 n +0000150533 00000 n +0000150699 00000 n +0000150865 00000 n +0000182177 00000 n +0000093575 00000 n +0000098318 00000 n +0000151031 00000 n +0000151201 00000 n +0000151356 00000 n +0000151511 00000 n +0000151664 00000 n +0000151817 00000 n +0000151970 00000 n +0000152138 00000 n +0000152310 00000 n +0000152482 00000 n +0000152654 00000 n +0000152826 00000 n +0000182261 00000 n +0000098675 00000 n +0000106944 00000 n +0000182345 00000 n +0000107133 00000 n +0000112336 00000 n +0000182431 00000 n +0000112526 00000 n +0000117488 00000 n +0000182518 00000 n +0000117667 00000 n +0000125215 00000 n +0000182605 00000 n +0000125383 00000 n +0000130832 00000 n +0000182692 00000 n +0000131000 00000 n +0000137137 00000 n +0000183305 00000 n +0000182780 00000 n +0000137327 00000 n +0000143446 00000 n +0000182868 00000 n +0000143625 00000 n +0000147381 00000 n +0000153139 00000 n +0000153337 00000 n +0000153544 00000 n +0000153740 00000 n +0000153941 00000 n +0000154133 00000 n +0000154336 00000 n +0000154542 00000 n +0000154744 00000 n +0000154936 00000 n +0000175050 00000 n +0000175256 00000 n +0000175465 00000 n +0000175678 00000 n +0000180331 00000 n +0000180711 00000 n +0000182956 00000 n +0000182985 00000 n +0000183497 00000 n +0000183621 00000 n +trailer +<< +/Size 141 +/Root 140 0 R +/Info 139 0 R +/ID [<519d4f7b9867e3b6dc0ba10a05282410><519d4f7b9867e3b6dc0ba10a05282410>] +>> +startxref +183693 +%%EOF