123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- PSL Manual 7 February 1983 User Interface
- section 13.0 page 13.1
- CHAPTER 13
CHAPTER 13
CHAPTER 13
- USER INTERFACE
USER INTERFACE
USER INTERFACE
- 13.1. Introduction . . . . . . . . . . . . . . . 13.1
- 13.2. Stopping PSL and Saving a New Executable Core Image . . 13.1
- 13.3. Init Files. . . . . . . . . . . . . . . . 13.3
- 13.4. Changing the Default Top Level Function . . . . . . 13.3
- 13.5. The General Purpose Top Loop Function. . . . . . . 13.4
- 13.6. The HELP Mechanism . . . . . . . . . . . . . 13.7
- 13.7. The Break Loop . . . . . . . . . . . . . . 13.8
- 13.8. Terminal Interaction Commands in RLISP . . . . . . 13.8
- 13.1. Introduction
13.1. Introduction
13.1. Introduction
- In this chapter those functions are presented relating directly to the
- user interface; for example, the general purpose Top Loop function, the
- History mechanism, and changing the default Top Level function.
- 13.2. Stopping PSL and Saving a New Executable Core Image
13.2. Stopping PSL and Saving a New Executable Core Image
13.2. Stopping PSL and Saving a New Executable Core Image
- Quit
Quit
The normal way to stop PSL execution is to call the Quit function or to
- strike <Ctrl-C> on the DEC-20 or <Ctrl-Z> on the VAX.
- Quit
Quit _________ ____
(Quit ): Undefined expr
- Return from LISP to superior process.
- After either of these actions, PSL may be re-entered by typing START or
- CONTINUE to the EXEC on the DEC-20. After exiting, the core image may also
- be saved using the Tops-20 monitor command "SAVE filename". On the VAX,
- Quit
Quit
Quit causes a stop signal to be sent, so that PSL may be continued from the
- shell. If you desire that the process be killed, use the function
- ExitLisp
ExitLisp
ExitLisp.
- ExitLisp
ExitLisp _________ ____
(ExitLisp ): Undefined expr
- Quit
Quit
To be used on the VAX. Like Quit except that the process is
- ExitLisp
ExitLisp
killed. ExitLisp calls the Unix library routine exit().
- A better way to exit and save the core image is to call the function
- SaveSystem
SaveSystem
SaveSystem.
User Interface 7 February 1983 PSL Manual
- page 13.2 section 13.2
- SaveSystem
SaveSystem ___ ______ ____ ______ _____ ____ ____ _________ ____
(SaveSystem MSG:string FILE:string FORMS:form-list): Undefined expr
- This records the welcome message (after attaching a date) in the
- StandardLisp
StandardLisp
global variable LISPBANNER!* used by StandardLisp's call on
- TopLoop DumpLisp
TopLoop DumpLisp
TopLoop, and then calls DumpLisp to compact the core image and
- write it out as a machine dependent executable file with the name
- ____ ____
FILE. FILE should have the appropriate extension for an
- SaveSystem
SaveSystem
executable file. SaveSystem also sets USERMODE!* to T.
- _____
The forms in the list FORMS will be evaluated when the new core
- image is started. For example
- (SaveSystem "PSL 3.1" "PSL.EXE" '((Read-Init-File "PSL")
- (InitializeInterrupts)))
- SaveSystem
SaveSystem
If RLISP has been loaded, SaveSystem will have been redefined to
- Main
Main
save the message in the global variable DATE!*, and redefine Main
- RlispMain Begin1
RlispMain Begin1
to call RlispMain, which uses DATE!* in Begin1. The older
- SaveSystem LispSaveSystem
SaveSystem LispSaveSystem
SaveSystem will be saved as the function LispSaveSystem.
- DumpLisp
DumpLisp ____ ______ _________ ____
(DumpLisp FILE:string): Undefined expr
- Reclaim
Reclaim
This calls Reclaim to compact the heap, and unmaps the unused
- pages (DEC-20) or moves various segment pointers (VAX) to
- decrease the core image. The core image is then written as an
- ____
executable file, with the name FILE.
- Reset
Reset _________ ____
(Reset ): Undefined expr
- Return to top level of LISP. Equivalent to <Ctrl-C> and Start on
- DEC-20.
- Time
Time _______ ____
(Time ): integer expr
- CPU time in milliseconds since login time.
- Date
Date ______ ____
(Date ): string expr
- The date in the form 16-Dec-82.
- __________ ______
LISPBANNER!* [Initially: ] global
- SaveSystem
SaveSystem
Records the welcome message given by a call to SaveSystem from
- Date
Date
PSL. Also contains the date, given by the function Date.
PSL Manual 7 February 1983 User Interface
- section 13.2 page 13.3
- __________ ______
DATE!* [Initially: Nil] global
- SaveSystem
SaveSystem
Records the welcome message given by a call to SaveSystem from
- RLISP.
- 13.3. Init Files
13.3. Init Files
13.3. Init Files
- Init files are available to make it easier for the user to customize PSL
- to his/her own needs. When PSL, RLISP, or PSLCOMP is executed, if a file
- PSL.INIT, RLISP.INIT, or PSLCOMP.INIT (.pslrc, rlisprc, or .pslcomprc on
- the VAX) is on the home directory, it will be read and evaluated.
- Currently all init files must be written in LISP syntax. They may use
- FASLIN LOAD
FASLIN LOAD
FASLIN or LOAD as needed.
- The following functions are used to implement init files, and can be
- accessed by LOADing the INIT-FILE module.
- User-HomeDir-String
User-HomeDir-String ______ ____
(User-HomeDir-String ): string expr
- Returns a full pathname for the user's home directory.
- Init-File-String
Init-File-String ___________ ______ ______ ____
(Init-File-String PROGRAMNAME:string): string expr
- Returns the full pathname of the user's init file for the program
- ___________
PROGRAMNAME.
- (Init-File-String "PSL")
- Read-Init-File
Read-Init-File ___________ ______ ___ ____
(Read-Init-File PROGRAMNAME:string): Nil expr
- ___________
Reads and evaluates the init file with name PROGRAMNAME.
- Read-Init-File Init-File-String
Read-Init-File Init-File-String ___________
Read-Init-File calls Init-File-String with argument PROGRAMNAME.
-
- (Read-Init-File "PSL")
- 13.4. Changing the Default Top Level Function
13.4. Changing the Default Top Level Function
13.4. Changing the Default Top Level Function
- As PSL starts up, it first sets the stack pointer and various other
- Main While
Main While
variables, and then calls the function Main inside a While loop, protected
- Catch Main StandardLisp
Catch Main StandardLisp
by a Catch. By default, Main calls a StandardLisp top loop, defined using
- TopLoop
TopLoop
the general TopLoop function, described in the next Section. In order to
- Main
Main
have a saved PSL come up in a different top loop, the function Main should
- be appropriately redefined by the user (e.g. as is done to create RLISP).
User Interface 7 February 1983 PSL Manual
- page 13.4 section 13.4
- Main
Main _________ ____
(Main ): Undefined expr
- Initialization function, called after setting the stack. Should
- TopLoop
TopLoop
be redefined by the user to change the default TopLoop.
- 13.5. The General Purpose Top Loop Function
13.5. The General Purpose Top Loop Function
13.5. The General Purpose Top Loop Function
- PSL provides a general purpose Top Loop that allows the user to specify
- Read Eval Print
Read Eval Print
his own Read, Eval and Print functions and otherwise obtain a standard set
- of services, such as Timing, History, Break Loop interface, and Interface
- to Help system.
- __________ ______
TOPLOOPEVAL!* [Initially: NIL] global
- Eval
Eval
The Eval used in the current Top Loop.
- __________ ______
TOPLOOPPRINT!* [Initially: NIL] global
- Print
Print
The Print used in the current Top Loop.
- __________ ______
TOPLOOPREAD!* [Initially: NIL] global
- Read
Read
The Read used in the current Top Loop.
- TopLoop
TopLoop ___________ ________ ____________ ________
(TopLoop TOPLOOPREAD!*:function TOPLOOPPRINT!*:function
- ___________ ________ ___________ __ _____________ ______ ___ ____
TOPLOOPEVAL!*:function TOPLOOPNAME!*:id WELCOMEBANNER:string): NIL expr
- This function is called to establish a new Top Loop (currently
- Standard LISP Break
Standard LISP Break
used for Standard LISP, RLISP, and Break). It prints the
- Read-Eval-Print
_____________ Read-Eval-Print
WELCOMEBANNER and then invokes a "Read-Eval-Print" loop, using
- ___________
the given functions. Note that TOPLOOPREAD!*, etc. are FLUID
- variables, and so may be examined (and changed) within the
- TopLoop
TopLoop
executing Top Loop. TopLoop provides a standard History and
- ____ ___________
timing mechanism, retaining on a list (HISTORYLIST!*) the input
- ____ ____
and output as a list of pairs. A prompt is constructed from
- ___________
TOPLOOPNAME!* and is printed out, prefixed by the History count.
- As a convention, the name is followed by a number of ">"'s,
- indicating the loop depth.
- __________ ______
TOPLOOPNAME!* [Initially: ] global
- Short name to put in prompt.
PSL Manual 7 February 1983 User Interface
- section 13.5 page 13.5
- __________ ______
TOPLOOPLEVEL!* [Initially: ] global
- Depth of top loop invocations.
- __________ ______
!*EMSGP [Initially: ] switch
- Whether to print error messages.
- __________ ______
GCTIME!* [Initially: ] global
- Time spent in garbage collection.
- __________ ______
INITFORMS!* [Initially: ] global
- Forms to be evaluated at startup.
- __________ ______
!*PECHO [Initially: NIL] switch
- StandardLisp
StandardLisp
Causes parsed form read in top-loop StandardLisp to be printed,
- if T.
- __________ ______
!*PVAL [Initially: T] switch
- StandardLisp
StandardLisp
Causes values computed in top-loop StandardLisp to be printed, if
- T.
- __________ ______
!*TIME [Initially: NIL] switch
- If on, causes a step evaluation time to be printed after each
- command.
- Hist
Hist _ _______ ___ _____
(Hist [N:integer]): NIL nexpr
- This function does not work with the Top Loop used by PSL:RLISP
- or by (beginrlisp); it does work with LISP and with RLISP if it
- Hist
Hist
is started from LISP using the RLISP function. Hist is called
- with 0, 1 or 2 integers, which control how much history is to be
- printed out:
- (HIST) Display full history.
- (HIST n m)
- Display history from n to m.
- (HIST n) Display history from n to present.
- (HIST -n) Display last n entries.
User Interface 7 February 1983 PSL Manual
- page 13.6 section 13.5
- [??? Add more info about what a history is. ???]
[??? Add more info about what a history is. ???]
[??? Add more info about what a history is. ???]
- The following functions permit the user to access and resubmit previous
- expressions, and to re-examine previous results.
- Inp
Inp _ _______ ___ ____
(Inp N:integer): any expr
- Return N'th input at this level.
- ReDo
ReDo _ _______ ___ ____
(ReDo N:integer): any expr
- Reevaluate N'th input.
- Ans
Ans _ _______ ___ ____
(Ans N:integer): any expr
- Return N'th result.
- __________ ______
HISTORYCOUNT!* [Initially: 0] global
- Number of entries read so far.
- __________ ______
HISTORYLIST!* [Initially: Nil] global
- List of entries read and evaluated.
- TopLoop StandardLisp
TopLoop StandardLisp
TopLoop has been used to define the following StandardLisp and RLISP top
- loops.
- StandardLisp
StandardLisp ___ ____
(StandardLisp ): NIL expr
- Interpreter LISP syntax top loop, defined as:
- (De StandardLisp Nil
- (Prog (CurrentReadMacroIndicator!* CurrentScanTable!*)
- (Setq CurrentReadMacroIndicator!* 'LispReadMacro)
- (Setq CurrentScanTable!* LispScanTable!*)
- (Toploop 'Read 'Print 'Eval "LISP"
- "PORTABLE STANDARD LISP")))
- Note that the scan tables are modified.
- RLisp
RLisp ___ ____
(RLisp ): NIL expr
- Alternative interpreter RLISP syntax top loop, defined as:
PSL Manual 7 February 1983 User Interface
- section 13.5 page 13.7
- [??? xread described in RLISP Section ???]
[??? xread described in RLISP Section ???]
[??? xread described in RLISP Section ???]
- (De RLisp Nil
- (Toploop 'XRead 'Print 'Eval "RLISP" "PSL RLISP"))
- Note that for the moment, the default RLISP loop is not this
- (though this may be used experimentally); instead a similar
- BeginRlisp
BeginRlisp
(special purpose hand coded) function, BeginRlisp, based on the
- Begin1
Begin1
older Begin1 is used. It is hoped to change the RLISP top-level
- to use the general purpose capability.
- BeginRLisp
BeginRLisp ____ ________ ____
(BeginRLisp ): None Returned expr
- Starts RLISP from PSL:PSL only if RLISP is loaded. The module
- RLISP is present if you started in RLISP and then entered PSL.
- 13.6. The HELP Mechanism
13.6. The HELP Mechanism
13.6. The HELP Mechanism
- PSL provides a general purpose Help mechanism, that is called in the
- TopLoop Help
TopLoop Help
TopLoop by invoking Help sometimes a ? may be used, as for example in the
- break loop.
- Help
Help ______ __ ___ _____
(Help [TOPICS:id]): NIL fexpr
- If no arguments are given, a message describing Help itself and
- __
known topics is printed. Otherwise, each of the id arguments is
- checked to see if any help information is available. If it has a
- value under the property list indicator HelpFunction, that
- function is called. If it has a value under the indicator
- HelpString, the value is printed. If it has a value under the
- indicator HelpFile, the file is displayed on the terminal. By
- default, a file called "topic.HLP" on the Logical device, "PH:"
- is looked for, and printed if found.
- Help
Help
Help also prints out the values of the TopLoop fluids, and
- finally searches the current Id-Hash-Table for loaded modules.
- __________ ______
HELPIN!* [Initially: NIL] global
- Help
Help
The channel used for input by the Help mechanism.
- __________ ______
HELPOUT!* [Initially: NIL] global
- Help
Help
The channel used for output by the Help mechanism.
User Interface 7 February 1983 PSL Manual
- page 13.8 section 13.7
- 13.7. The Break Loop
13.7. The Break Loop
13.7. The Break Loop
- The Break Loop is described in detail in Chapter 14. For information,
- look there.
- 13.8. Terminal Interaction Commands in RLISP
13.8. Terminal Interaction Commands in RLISP
13.8. Terminal Interaction Commands in RLISP
- Two commands are available in RLISP for use in interactive computing.
- Pause
Pause ___ ____
(Pause ): Nil expr
- The command PAUSE; may be inserted at any point in an input file.
- If this command is encountered on input, the system prints the
- YesP
YesP
message CONT? on the user's terminal and halts by calling YesP.
- YesP
YesP _______ ______ _______ ____
(YesP MESSAGE:string): boolean expr
- YesP
YesP
If the user responds Y or Yes, YesP returns T and the calculation
- continues from that point in the file. If the user responds N or
- YesP
YesP
No, YesP returns NIL and control is returned to the terminal, and
- the user can type in further commands. However, later on he can
- use the command CONT; and control is then transferred back to the
- point in the file after the last PAUSE was encountered. If the
- user responds B, one enters a break loop. After quitting the
- break loop, one still must respond Y, N, Yes, or No.
|