;SIZE 11 ;VSP 6 ;TOPMAR 0 ;BOTMAR 0 ;LFTMAR 0 ;SKIP 1 ;KSET FONTS;25FR3 KST,,,,,,,,, MC:KMP;TJ6 27 pLIBLSP: LISP PROGRAM LIBRARY p p p*** HOW TO CONTRIBUTE ***  pFirst prepare a file with the source code, and write a short info text pabout how to use the program. If the info text is short, include it at the pbeginning of the program file as comments; otherwise make a separate file pof it. Each file should include your name or other identification at the pbeginning. LISP code should be appropriately ground; MIDAS code should be preadable. pThen put the program file in the library. If your name is YOU and the pfile's name is FOO, copy the source file to LIBDOC; FOO YOU1. The info pfile, if any, is likewise filed as LIBDOC;FOO INFO. The FASL file should pbe put on LIBLSP;FOO FASL. (That directory is LIBLSP, not LIBDOC!) Unless pthe file is specific to a single machine (such as TV packages on AI), copy pthese files to the other two machines in the set {AI,MC,ML}. The INSTALL pprogram may be helpful for this purpose; on AI you would say: p:INSTALL LIBDOC;FOO YOU1MC,ML p:INSTALL LIBDOC;FOO INFOMC,ML p:INSTALL LIBLSP;FOO FASLMC,ML pwhere =altmode and "MC,ML" is the other machines to install on. You may pwish to put the program in the catalog; edit the file LIBDOC;^DOC^ TJABLE, pputting your program in the alphabetical catalog at the end, and then say: p:XFILE LIBDOC;UPDATE pwhich will run TJ6 in appropriate ways. Finally, you should announce your ppackage to the world. Say: p:MAIL *AI,*MC,*ML p(or whatever set of machines you installed the program on), and the MAIL pprogram will help you along. pNow if your program is what people need, they will try to use it. If the pinfo text is not completely exhaustive, or if there is even bugs in the pprogram, then they might come and ask you questions. You can stop that, if pyou wish, by putting a disclaimer in the info file or among the info pcomments, saying that you are happy to give away the program, but that you pdo not have time to answer questions. On the other hand, if you do want pfeedback, it is worthwhile to include a statement to that effect, since it pmakes it more attractive to use the program. pIf you come up with new and improved versions of the program, they should pbe called FOO YOU2, FOO YOU3, etc. Do not contribute new versions too poften, since that will just confuse the users. @PAGE 2 pTo save disk space, users should not get private copies of library files punless they want to change the program. Therefore, they must be able to prely on FOO YOUn staying the same, so please do NOT put the revised program punder the old name. (The only exception is if you have just modified the pcomments). @PAGE 3 p*** HOW TO USE *** p pAt the end of this file is a list of programs that are presently in the plibrary, with a very short explanatory text. Look around and explore. pIf you arrange to load LISP library files using your LISP INIT file or a psimilar mechanism, I suggest that you refer to them by exact name rather pthan by >. That way you will not suffer when a new and improved version of pthe program appears. pThe file LIBDOC; AUTODF > contains autoload definitions of many functions pin the library. If you use library files frequently, it might be worthwhile pto load AUTODF from your LISP init file. @PAGE 4 p*** PRESENT CONTENTS *** p pFile pname Donor Purpose of program p p"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. p p#PRINT RCW General Purpose Pretty Printer. p p%PRINT GROSS Print circular list structures in readable format p p%READ GROSS Read output produced by %PRINT p p-> GROSS General-purpose "smash" macro: see the file LIBDOC;-> GROSS1 for further details p p6BIT JONL Functions for converting between lisp symbols and sixbit and/or ascii representations. p pAPROPO JONL Searches Obarray for atoms including its arg in name p pARBVAR JAN An experimental implementation of a generalized variable facility for LISP. See the beginning of LIBDOC;ARBVAR JAN1 for details. p pARITH CFFK Functions for *$ //$ and scaling for use with compiled code. p pARYADR JONL Functions to get Channel-numbers/JFNs etc from File arrays, and to get actual address of array elements. p pARYFIL JONL (OPEN-FILES) gets a list of all currently open files; LIVE-ARRAYS lists all non-dead arrays of given type. p pASKUSR PSZ INTERLISP-like command-completion multiple choice user interface. p pATAN JLK FORTRAN-like ATAN p pBBOOLE BAKER Random Boolean functions (see BBOOLE INFO ; Booleans expressed as BIGNUMs). p pBINPRT KMP Printer to display numbers (at toplevel or embedded in expressions) in octal nnnnnn,,nnnnnn format. p pBS JONL - DEBUGGING AID, FOR LOOKING BACK UP THE STACK. @PAGE 5 and two 'timer' functions. p pBSSQ GLS/GJS "Pull to front" ASSQ p pCARCDR KMP Arbitrarily long C{A|D}*R macros. p pDEBUG TLP Debugging functions for examining stack p pDEBUG* RCW Claimed improvement on DEBUG (compatible). p pDESC Lisp on-line manual reader. p pDIDL DCH Display-oriented debugger for LISP. p pDIREAD ERIK Function for reading from a choice of several directories p pDOCTOR JONL Weizenbaum's famous ELIZA/DOCTOR Rogerian phychotherapist. p pDOW 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]. p pDRIBBL RBR To dribble out to wallpaper files. p pEDIT MOON Lisp Editor p pERT DDM Break package written in LISP p pFASDMP RLB a set of Lisp functions to dump, in FASL format, s-expressions to be eval'ed at FASLOAD time. p pFASLRE RLB a package of functions for reading s-expressions and other information from a FASL file (see also FASDMP). p pFFORMA JONL FORTRAN-style number formatter for output. p pFFT BWOOD Fast Fourier transform. p pFILE+ ERIK Adding "one-more-function" to a LISP source file: See LIBDOC;FILE+ ERIK1 for details p pFLOAD JLK Loads FASL+source files, using EXPR-HASH to use only changed source definitions (extracted from LEDIT*). p pFONTRD BAKER Lisp functions for hacking fonts in KST format. p pFONZ SJOBRG permits displaying of characters in arbitrary fonts on the Knight tv's. @PAGE 6 p pFOR PSZ INTERLISP-like iteration form package p pFUNVAL ERIK Simulates FUNARG-expressions (function closures) p pFWMAKE KEN Creates TV-turtle type windows of any font reading the AST format p pFWUSE 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) p pGC&VAR RLW Handy handlers for gc-overflow and unbound-var errors p pGCDEMN BAKER Adaptive space allocator GC daemon. p pGENCMP JAN A generalized n-way comparison generator for lists. See the beginning of LIBDOC;GENCMP JAN1. p pGETSYN RLB GETSYNTAX--gets syntax info from readtable p pHUMBLE GLS HUMBLE inferior package for ITS NEWIO MACLISP p pIOTA KMP Clean LAMBDA-bound I/O functions (leave no mess). p pITER RMS a generalized iteration construct based on the use of input and output streams. p pLAUGH GSB Utters some variety of chortle. p pLINK GLS LINK function for ITS NEWIO MACLISP p pLISPM KMP Compatibility stuff for LispM. p pLFTV MARR Function for transforming LISP picture arrays into FTV (i.e., FakeTV) format p pLDDT JLK Inferior job hacking primitives p pLISPT JLK Teco communication from Lisp; see LISPT INFO p pLOG ERIK Saves a log of the interaction on the screen on a file (probably obsolete--see DRIBBL) p pLUSETS support file for LDDT and LISPT p pMATCH 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.). @PAGE 7 p pMODE MRG "Data Macro" defining package; see MODE INFO p pMORE 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. p pMUDD DVM A package of functions for duplicating the operation of MUDDLE property hackers p pNAME MILLER Generate truly unique names. p pNDONE RVB Issues message when COMPLR is done. p pNSHARE GSB Functions for creating heirachical MACLISP dumps on ITS. p pOCTAL KMP Useful octal reader. Sets up "&" readmacro so that, for example, things like &-1,,3 read as bits 777777,,000003. p pPHASE GLS MOONPHASE function p pPHSPRT GLS Timestamp printers p pPMMAP JONL Memory Map printing functions p pPPAK JAN A packet of functions for automatically keeping the values of an interdependent set of variables consistent with one another. p pPPRINT DVM A small, fast, and data driven pretty-printer. p pPRFONT ERIK Support printing in fonts (prints out appropriate ~f's, sets up NNTJ6 commands, and calls NNTJ6 to prepare for XGP) p pPRIME 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.) p pPRIVOB JONL Hacking private obarrays p pPRLISP JAN Waterman's Production Rule Schema for MACLISP p pPROP! ERIK Storage and access from nested property-lists p pQTRACE KMP Functions for tracing/breaking in a query-mode p @PAGE 8 pREDO RMS See LIBDOC;REDO INFO. p pSAVE KMP Lisp environment SAVE/UNSAVE operations. p pSCHEME GJS Extended Lambda Calculus Interpreter. Access it by doing ":lisp scheme" at DDT. p pSDUMP FORBUS A function which dumps the property lists of specified atoms to a disk file, UREADable. p pSELECT ERIK Macro definition for simulating BBN-LISP function SELECTQ p pSET IRA Functions for manipulating sets, e.g. union, intersection, etc. p pSETS PRATT Like SET, but works with bit vectors a la Pascal. Bignums Ok. p pSHARE JONL Shares pure pages among PDUMP'd LISPs. See also NSHARE. p pSMURF DDM Debugging aid for seeing context of read-time errors when reading a file p pSPLIT RICH Split screen package p pSTATTY PSZ Functions for manipulating the TTY status p pSTEP RICH LISP stepping package (debugging aid) p pSTEPMM MM Another stepping package p pSTEPR RVB Another stepping package p pSTRING PSZ ITS MACLISP string handling functions p pSUBLOA ERIK Enables one file to read another and then continue on itself (recursively if desired) [now obsolete] p pSUN BKPH Program to calculate sun-elevation and sun-azimuth. p pTIME KMP LispM compatible time utility functions. p pTIMER RWK A useful tool in making performance measurements. [See also the package BS JONL for simple timings] p pTRAP KMP Small but useful debugging functions. One that waits for a given value to be created by interpreted code. One that @PAGE 9 sets up a useful mar interrupt handler on symbols. p pTTY KMP Functions for turning on/off input character echo. p pTTYHAK GJC Non-hairy function for opening a "very raw" tty. p pTTYVAR GSB Functions to manipulate TTY variables. p pTV2R KEN for reading from the tv to make a R-insertable file, and also for processing it in R (TV2R >, and TV2R R2XGP, respectively) p pWINDOW RIEGER display window package