.font 0 25FR3 .nofill LIBLSP: LISP PROGRAM LIBRARY *** HOW TO CONTRIBUTE *** .fill First prepare a file with the source code, and write a short info text about how to use the program. If the info text is short, include it at the beginning of the program file as comments; otherwise make a separate file of it. Each file should include your name or other identification at the beginning. LISP code should be appropriately ground; MIDAS code should be readable. .space Then put the program file in the library. If your name is YOU and the file's name is FOO, copy the source file to LIBDOC; FOO YOU1. The info file, if any, is likewise filed as LIBDOC;FOO INFO. The FASL file should be put on LIBLSP;FOO FASL. (That directory is LIBLSP, not LIBDOC!) Unless the file is specific to a single machine (such as TV packages on AI), copy these files to the other two machines in the set {AI,MC,ML}. The INSTALL program may be helpful for this purpose; on AI you would say: .space :INSTALL LIBDOC;FOO YOU1MC,ML :INSTALL LIBDOC;FOO INFOMC,ML :INSTALL LIBLSP;FOO FASLMC,ML .space where =altmode and "MC,ML" is the other machines to install on. You may wish to put the program in the catalog; edit the file LIBDOC;^DOC^ TJABLE, putting your program in the alphabetical catalog at the end, and then say: .space :XFILE LIBDOC;UPDATE .space which will run TJ6 in appropriate ways. Finally, you should announce your package to the world. Say: .space :MAIL *AI,*MC,*ML .space (or whatever set of machines you installed the program on), and the MAIL program will help you along. .space Now if your program is what people need, they will try to use it. If the info text is not completely exhaustive, or if there is even bugs in the program, then they might come and ask you questions. You can stop that, if you wish, by putting a disclaimer in the info file or among the info comments, saying that you are happy to give away the program, but that you do not have time to answer questions. On the other hand, if you do want feedback, it is worthwhile to include a statement to that effect, since it makes it more attractive to use the program. .space If you come up with new and improved versions of the program, they should be called FOO YOU2, FOO YOU3, etc. Do not contribute new versions too often, since that will just confuse the users. .space To save disk space, users should not get private copies of library files unless they want to change the program. Therefore, they must be able to rely on FOO YOUn staying the same, so please do NOT put the revised program under the old name. (The only exception is if you have just modified the comments). .nofill .page *** HOW TO USE *** .fill At the end of this file is a list of programs that are presently in the library, with a very short explanatory text. Look around and explore. .space If you arrange to load LISP library files using your LISP INIT file or a similar mechanism, I suggest that you refer to them by exact name rather than by >. That way you will not suffer when a new and improved version of the program appears. .space The file LIBDOC; AUTODF > contains autoload definitions of many functions in the library. If you use library files frequently, it might be worthwhile to load AUTODF from your LISP init file. .nofill .page *** PRESENT CONTENTS *** File name Donor Purpose of program "MACRO DDM Defines " as macro character so that strings of arbitrary characters may be read to LISP, and ground without being smashed into all uppercase characters. #PRINT RCW General Purpose Pretty Printer. %PRINT GROSS Print circular list structures in readable format %READ GROSS Read output produced by %PRINT -> GROSS General-purpose "smash" macro: see the file LIBDOC;-> GROSS1 for further details 6BIT JONL Functions for converting between lisp symbols and sixbit and/or ascii representations. APROPO JONL Searches Obarray for atoms including its arg in name ARBVAR JAN An experimental implementation of a generalized variable facility for LISP. See the beginning of LIBDOC;ARBVAR JAN1 for details. ARITH CFFK Functions for *$ //$ and scaling for use with compiled code. ARYADR JONL Functions to get Channel-numbers/JFNs etc from File arrays, and to get actual address of array elements. ARYFIL JONL (OPEN-FILES) gets a list of all currently open files; LIVE-ARRAYS lists all non-dead arrays of given type. ASKUSR PSZ INTERLISP-like command-completion multiple choice user interface. ATAN JLK FORTRAN-like ATAN BBOOLE BAKER Random Boolean functions (see BBOOLE INFO ; Booleans expressed as BIGNUMs). BINPRT KMP Printer to display numbers (at toplevel or embedded in expressions) in octal nnnnnn,,nnnnnn format. BS JONL - DEBUGGING AID, FOR LOOKING BACK UP THE STACK. and two 'timer' functions. BSSQ GLS/GJS "Pull to front" ASSQ CARCDR KMP Arbitrarily long C{A|D}*R macros. DEBUG TLP Debugging functions for examining stack DEBUG* RCW Claimed improvement on DEBUG (compatible). DESC Lisp on-line manual reader. DIDL DCH Display-oriented debugger for LISP. DIREAD ERIK Function for reading from a choice of several directories DOCTOR JONL Weizenbaum's famous ELIZA/DOCTOR Rogerian phychotherapist. DOW JONL Calculation of the Day-Of-Week, given the year [as an ordinal of the common era], month [number from 1 to 12.], and day [number of day within month]. DRIBBL RBR To dribble out to wallpaper files. EDIT MOON Lisp Editor ERT DDM Break package written in LISP FASDMP RLB a set of Lisp functions to dump, in FASL format, s-expressions to be eval'ed at FASLOAD time. FASLRE RLB a package of functions for reading s-expressions and other information from a FASL file (see also FASDMP). FFORMA JONL FORTRAN-style number formatter for output. FFT BWOOD Fast Fourier transform. FILE+ ERIK Adding "one-more-function" to a LISP source file: See LIBDOC;FILE+ ERIK1 for details FLOAD JLK Loads FASL+source files, using EXPR-HASH to use only changed source definitions (extracted from LEDIT*). FONTRD BAKER Lisp functions for hacking fonts in KST format. FONZ SJOBRG permits displaying of characters in arbitrary fonts on the Knight tv's. FOR PSZ INTERLISP-like iteration form package FUNVAL ERIK Simulates FUNARG-expressions (function closures) FWMAKE KEN Creates TV-turtle type windows of any font reading the AST format FWUSE KEN Uses the TV windows of fonts created by FWMAKE, allowing you to print on a TV in whatever font you want (blown up 3 times though) GC&VAR RLW Handy handlers for gc-overflow and unbound-var errors GCDEMN BAKER Adaptive space allocator GC daemon. GENCMP JAN A generalized n-way comparison generator for lists. See the beginning of LIBDOC;GENCMP JAN1. GETSYN RLB GETSYNTAX--gets syntax info from readtable HUMBLE GLS HUMBLE inferior package for ITS NEWIO MACLISP IOTA KMP Clean LAMBDA-bound I/O functions (leave no mess). ITER RMS a generalized iteration construct based on the use of input and output streams. LAUGH GSB Utters some variety of chortle. LINK GLS LINK function for ITS NEWIO MACLISP LISPM KMP Compatibility stuff for LispM. LFTV MARR Function for transforming LISP picture arrays into FTV (i.e., FakeTV) format LDDT JLK Inferior job hacking primitives LISPT JLK Teco communication from Lisp; see LISPT INFO LOG ERIK Saves a log of the interaction on the screen on a file (probably obsolete--see DRIBBL) LUSETS support file for LDDT and LISPT MATCH FININ A fast and short implementation of a neat pattern matcher in use for years by the MIT A. I. Vision Group (e.g., FININ, TLP, MRD, PHW, etc.). MODE MRG "Data Macro" defining package; see MODE INFO MORE KMP A fancy --More-- handler which does --n Second Pause-- Great for your COMPLR init so you don't come back an hour later to find it hanging in a more break. MUDD DVM A package of functions for duplicating the operation of MUDDLE property hackers NAME MILLER Generate truly unique names. NDONE RVB Issues message when COMPLR is done. NSHARE GSB Functions for creating heirachical MACLISP dumps on ITS. OCTAL KMP Useful octal reader. Sets up "&" readmacro so that, for example, things like &-1,,3 read as bits 777777,,000003. PHASE GLS MOONPHASE function PHSPRT GLS Timestamp printers PMMAP JONL Memory Map printing functions PPAK JAN A packet of functions for automatically keeping the values of an interdependent set of variables consistent with one another. PPRINT DVM A small, fast, and data driven pretty-printer. PRFONT ERIK Support printing in fonts (prints out appropriate ~f's, sets up NNTJ6 commands, and calls NNTJ6 to prepare for XGP) PRIME PRATT Rabin's algorithm for testing primes. Effective for up to 1000-bit numbers. (Use alloc carefully with numbers that big though. No problem at 100 bits.) PRIVOB JONL Hacking private obarrays PRLISP JAN Waterman's Production Rule Schema for MACLISP PROP! ERIK Storage and access from nested property-lists QTRACE KMP Functions for tracing/breaking in a query-mode REDO RMS See LIBDOC;REDO INFO. SAVE KMP Lisp environment SAVE/UNSAVE operations. SCHEME GJS Extended Lambda Calculus Interpreter. Access it by doing ":lisp scheme" at DDT. SDUMP FORBUS A function which dumps the property lists of specified atoms to a disk file, UREADable. SELECT ERIK Macro definition for simulating BBN-LISP function SELECTQ SET IRA Functions for manipulating sets, e.g. union, intersection, etc. SETS PRATT Like SET, but works with bit vectors a la Pascal. Bignums Ok. SHARE JONL Shares pure pages among PDUMP'd LISPs. See also NSHARE. SMURF DDM Debugging aid for seeing context of read-time errors when reading a file SPLIT RICH Split screen package STATTY PSZ Functions for manipulating the TTY status STEP RICH LISP stepping package (debugging aid) STEPMM MM Another stepping package STEPR RVB Another stepping package STRING PSZ ITS MACLISP string handling functions SUBLOA ERIK Enables one file to read another and then continue on itself (recursively if desired) [now obsolete] SUN BKPH Program to calculate sun-elevation and sun-azimuth. TIME KMP LispM compatible time utility functions. TIMER RWK A useful tool in making performance measurements. [See also the package BS JONL for simple timings] TRAP KMP Small but useful debugging functions. One that waits for a given value to be created by interpreted code. One that sets up a useful mar interrupt handler on symbols. TTY KMP Functions for turning on/off input character echo. TTYHAK GJC Non-hairy function for opening a "very raw" tty. TTYVAR GSB Functions to manipulate TTY variables. TV2R KEN for reading from the tv to make a R-insertable file, and also for processing it in R (TV2R >, and TV2R R2XGP, respectively) WINDOW RIEGER display window package