Subject: New Interlisp-D now available
To: LispUsers↑.pa 
From: LispSupport.pa
Reply-to: LispSupport.pa

Last edited: 27 Jan 1984 hts

This message announces a new version of Interlisp-D.  This version sports a number of improvements, particularly for the 1108.  If this version gracefully survives the next few weeks of your use, it will be released outside Xerox as Carol.  

We invite you to send multitudes of comments, suggestions, and bug reports to LispSupport.pa. (Please don't use LispUsers↑.pa.)  Your input is greatly appreciated and will help us create better and more solid Interlisps both now and in the future.

Below is a list of items in Interlisp-D which are new to this version of Interlisp-D.  Each item is more fully described later in this message.  


<1>  Local rigid disk system for the 1108.
<2>  Improved floppy disk system for the 1108. 
<3>  Various new window/display facilities:
	-- Menu
	-- New GETREGION and GETBOXREGION
	-- New DOWINDOWCOM
	-- Window with CARET does not need to be on top
	-- Minimum sizes for windows
	-- CREATEREGION
	-- CHANGEBACKGROUNDBORDER
	-- VIDEOCOLOR
<4>  New 1108 & 1132 microcode.
<5>  New case-insensitive string manipulation facilities.  
<6>  New/Improved LispLibrary and LispUsers packages:
	-- AttachedWindow
	-- Lafite
	-- Grapher
	-- BSearch
	-- IMTran & IMTedit
<7>  New Interlisp Manual.
 
=====================================================================================

<1> 1108 Rigid Disk System. 

Like the file systems for the 1100 and 1132, the 1108 file system supports features like random access and version numbers on files. In addition the 1108 local file system supports a hierarchical naming structures for files.The hard disk used with an 1108 may be partitioned into up to six regions called logical volumes. Each of these volumes acts like a separate device. Some may be used to hold files used with the Interlisp-D software, while others may be reserved for STAR and MESA files. Initial configuration of the disk can be done either with the OTHELLO tool or  with the Lisp Installation Utility.

There must be at least two logical volumes on the disk. The first, named LISP, contains the system virtual memory and microcode. It should be a minimum of 16,200 pages long and should not be used for user file space. The second, named DSK, provides a storage area for user files. It is used like the {DSK} device on the 1100 and 1132. The DSK logical volume may be of any desired size. File manipulation operations for Interlisp files on {DSK} are the same as operations for any other Interlisp file device.

Further documentation is contained in [Phylum]<Lisp>Current>DLionFS.DOC and DLionFS.PRESS.


<2>  1108 Floppy Disk System.

One can use Interlisp-D on the 1108 to read, write, and otherwise
interact with files on Pilot formatted floppy disks through standard
Interlisp input/output functions.  New for the Carol release are:

* SYSOUT to {FLOPPY}.  SYSOUTs may be created on floppies
through Interlisp's SYSOUT function, then later installed on the same
or other Xerox 1108s through the "Installation Utility."  It
generally takes 3 to 5 floppies to store a sysout.

* Reliability.  The {FLOPPY} device is now monitor-locked, so multiple processes can successfully access the disk simultaneously.  There is better protection against Control-B and Control-D.  And it is no longer possible for Lisp to die with 510 or 580-584 maintenance panel errors.

* Floppy Scavenger. The floppy scavenger attempts to repair a floppy whose critical records have become confused.  If you accidentally delete files on {FLOPPY} you shouldn't have deleted, FLOPPY.SCAVENGE will get them back for you (provided you don't wait till after they have been overwritten by new files). 

Further documentation is available on [Phylum]<Lisp>Current>Floppy.TTY.



<3>  Window/Display Changes.

* Menu changes: submenus, item boxing, menu title fonts, and popup menus that don't tie up the mouse.  

Items in a menu can now have subitems associated with them.  An item with a submenu is marked in the menu by a grey, right pointing triangle.  If the user drags the cursor out the right side of such an item, the submenu pops up.  If the user selects one of the items from the submenu, the selected item is handled as if it were selected from the main menu. If the user rolls out of the submenu to the left, the submenu is taken down and selection resumes from the main menu.

Menus now have a new field SUBITEMFN which determines if a menu item has subitems.  The SUBITEMFN is called with two arguments -- a menu and an item  in that menu -- and should return a list of items (from which a submenu would be constructed) or NIL.  The SUBITEMFN is called once to compute the menu image and again each time the user rolls out of the item box, so the SUBITEMFN should be moderately efficient.  The default SUBITEMFN (named DEFAULTSUBITEMFN) checks to see if the item is a list whose fourth element is a list whose CAR is 'SUBITEMS and if so, returns the CDR of it.  The standard interpretation of items that are LISTP is that the first element is the label, the second the form to be evaluated and returned and the third the help string.  The rest of the list has been advertised as available for other uses, and we hope that no other use developed so far involves a list whose car is 'SUBITEMS.

Submenus are computed the first time they are needed and cached in the menu.  This means that changes to subitems will not be noticed unless the item did not already have a submenu. 

Other changes to the menu package:

The menu package now marks the item the cursor is over with a box when the button is not down.  This is the way Dedit's menu works now.  

MENU contains a new field MENUTITLEFONT which indicates the font to be used for the title of the menu.  It should be either a font, NIL or T.  NIL will cause the window title font to be used (the standard now). T means use the same font as the menu items.

MENU now takes an argument, RELEASECONTROLFLG, which allows the mouse to be used for other things while the popup menu is in place.  For example, the user may need to look around for information needed to determine the selection to make in this menu or reposition the menu before selecting from it.  If MENU is called in this way, clicking outside the menu (which is the standard way of indicating "no choice" to normal popup menus) will not return NIL .  This effect can be had by closing the menu (which causes NIL to be returned from MENU).  Programmers are encouraged to provide a menu item such as "cancel" or "abort" which gives users a positive way of indicating "no choice".


* Changes to GETREGION and GETBOXREGION.  When passed a minimal region (as in shaping a window), they prompt with the minimal region.  They also prompt from the lower right corner and won't let the user specify a region that is off the screen.

* DOWINDOWCOM now checks for the window property DOWINDOWCOMFN and if non-NIL applies it to the window.  

* The window containing the CARET no longer jumps on top in order to flash the CARET. When the CARET is completely obscured it does not flash at all.

* The system supports the notion of a minimum size for a window.  The new function MINIMUMWINDOWSIZE returns a dotted pair whose CAR is the minimum width and whose CDR is the minimum height.  The window property MINSIZE allows the user to set the minimum size of a window and should be a dotted pair or a function which when APPLYed to the window returns a dotted pair.  SHAPEW will not shape a window smaller than its minimum.

* (CREATEREGION Left Bottom Width Height) is defined to return the same thing as (CREATE REGION LEFT ← Left BOTTOM ← Bottom WIDTH ← Width HEIGHT ← Height)

* (CHANGEBACKGROUNDBORDER Shade), where shade is a texture 8 bits wide by 2 bits high, sets the 1108 display border.  CHANGEBACKGROUNDBORDER is a no-op on the 1100 and 1132.

* VIDEOCOLOR now works on the 1108.


<4>  New microcode.  

* New 1108 Lisp microcode.  Some operations previously in 1108 Lisp microcode have been moved into the initial microcode, and replaced by other opcodes.

* New 1108 initial microcode.  Note that while the new initial microcode is compatible with Fugue sysouts, Fugue microcode is not compatible with the current version of Interlisp-D.  In addition, the new initial microcode depends on up-to-date PROMs: if Fugue worked on your 1108, but the new initial microcode and new sysouts do not, have your PROMs replaced.

* New 1132 microcode.  A number of improvements, especially to numerical operations.


<5>  Case-insensitive string manipulation facilities.

UPPERCASEARRAY 				 [Variable]
  A casearray suitable for FFILEPOS et al, in which every lowercase character is mapped into the corresponding uppercase character.  Useful for searching text files.

Extension to ALPHORDER:

(ALPHORDER A B CASEARRAY)		  [Function]
  ALPHORDER now takes a casearray argument: characters of A and B are translated through CASEARAY before being compared.  In addition, the value returned in the "true" case, i.e., when A and B are in lexicographic order, is now either EQUAL or LESSP to discriminate the cases of A and B being equal or unequal strings/atoms (according to CASEARRAY).

New function:

(UALPHORDER A B)				  [Function]
  Defined as (ALPHORDER A B UPPERCASEARRAY).  Suitable as the comparefn argument of SORT.


<6>  New/Improved LispLibrary and LispUsers packages:

* ATTACHEDWINDOW is a new package for "attaching" one window to another.  Any number of windows can be attached to a window.  ATTACHEDWINDOW supercedes MENUEDWINDOW which becomes a simple case of attaching a menu window to another window.

ATTACHEDWINDOW makes it easy to manipulate a group of window as a unit.  Standard operations like MOVE, RESHAPE, OPEN and CLOSE can be done so that it appears to the user as if the windows are a single entity.  Each collection of attached windows has one main window and any number of other windows that are "attached" to it.  Moving or reshaping the main window causes all of the attached windows to be moved or reshaped as well.  Moving or reshaping an attached window does not affect the main window.  The initial motivation for attached windows was to allow multiple menus to be associated with the same window but there is no restriction on what windows can be attached.

The complete documentation is on [Phylum]<lisp>library>attachedwindow.press.


* LAFITE:  There is a new, substantially revised version of Lafite, the Interlisp mail system.  Data structures and algorithms have been redesigned for better performance, and there is a new table of contents format that is more easily updated.  The most significant change of which users might want to be aware concerns an undocumented behavior of the old Lafite that was responsible in many cases for horrible performance: in the new Lafite, changes to your mail browser (new marks, deletions) do not get written out to the actual mail file until you do an Update.  Along with this, there are now two flavors of Update: one which simply writes out to your mail file any browser changes, and one which expunges deleted messages (the old Update).

Further documentation is available on [Phylum]<Lisp>Library>Lafite.BRAVO, Lafite.TTY, and Lafite.PRESS, and LafiteDelta.TED and LafiteDelta.PRESS.


* GRAPHER has several new, minor features.   This release is compatible with your current code, although the graphs will look a tad different, so you need only revise if you want to take advantage of the new stuff.

--  General layout function:  LAYOUTGRAPH is a combination of LAYOUTFOREST and LAYOUTLATTICE (which have been de-documented to discourage their use).  It provides three kinds of format (tree, compact tree, and lattice) in four directions (left-to-right, right-to-left, top-to-bottom, and bottom-to-top).
--  Icons as node labels:  LAYOUTGRAPH and SHOWGRAPH both accept a NODELABEL which is a bitmap of arbitrary size.
--  Cyclic graphs are allowed in the lattice format.  They generate boxed nodes instead of errors.
--  Documentation has been completely revised.  See GRAPHER.PRESS and GRAPHER.TED.
--  Defaults for fonts come from DEFAULTFONT in the current FONTPROFILE.

Complete documentation is on [Phylum]<Lisp>Library>Grapher.TED and Grapher.PRESS.


* BSEARCH contains new definitions for STRPOS and STRPOSL which each have two more arguments -- CASEARRAY and BACKWARDSFLG.  CASEARRAY (if non-NIL) causes the obvious translation of the string's characters (and the pattern's characters too in the case of STRPOS); BACKWARDSFLG when non-NIL says to search by *decrementing* the index position each time rather than incrementing it;  and the defaulting of START is -1 rather than 1 (but the meaning of the START argument is still the same, namely the first index at which searching is started)

Also, a definiton for BFILEPOS is on the file; it has essentially the same args as FILEPOS, except that START is renamed to LOWINDEX and END is renamed to HIGHINDEX.  It searches through the interval determined by LOWINDEX and HIGHINDEX, in the "backwards" diretion.  


* IMTRAN & IMTEDIT.  IM format is the text formatting language that the Interlisp Reference Manual is represented in.  It is somewhat like TEX source code, in that there are keywords, and brackets are used to delimit text.  However, IM format was specifically designed for representing the Interlisp Manual, so the "text objects" used are semantically meaningful objects within the manual, such as "function definition", "lisp code", "subsection".

Recently, some people have shown interest in using IM format for their own documentation.  Therefore, we would like to announce two new LispUsers packages: IMTRAN, and IMTEDIT.  IMTRAN is the original program I used for translating from IM format to TEX source files (not too useful for most people).  IMTEDIT is a program built on IMTRAN that translates IM format files to formatted Tedit text streams.

Complete documentation is contained on [Phylum]<LispUsers>IMTRAN.txt and IMTEDIT.txt.


* The following other Lisp>Library packages are new or changed since the Fugue release:

BQUOTE
CMLARRAY 
CMLSPECIALFORMS 
DATABASEFNS
DECL
EVALSERVER
EXEC
FILEBROWSER
GATEWAY, PUPIDSERVER
GCHAX
GRAPHZOOM
LLCOLOR
MAINTAIN
MENUEDWINDOW
READAIS
READSYS, REMOTEVMEM
RS232, RS232CHAT, RS232EXEC, RS232FTP, RS232LOGIN
SINGLEFILEINDEX
TEDIT, TEDITHCPY, TEDITMENU, TEXTOFD

The following LispUsers packages are new or changed since the Fugue release:

BANNER
BROWSER
COLORPATCH
COLORUTILITIES
DRAWDEMOPATCH
EMACS
ICONW
IMCOMPARE
IMTRAN
KAL
LOADFILES
LSET
MAZE
MSGLAFITE
NOTEPAD
OLDGRAPHER
PACMAN
PAGEHOLD
PIECE-MENUS
SYSTAT



<7>  Completely new Interlisp Refence Manual.  Available through Xerox Special Information Systems, 1100 Series Customer Support, whose mail address is 1100Support.pasa@PARC-MAXC.


=====================================================================================

KNOWN PROBLEMS WITH THIS RELEASE:

* The 1108 rigid disk system is still somewhat experimental and has a number of drawbacks.  It is not yet completely compatible with the Pilot file system: logical volumes used by Lisp (DSK, etc.) cannot be used by Mesa and vice versa.  Furthermore, while the file system has never destroyed or misread any data, it has on rare occasions caused a resumable maintenance panel error (9318).  Lispsupport.pa is particularly eager to hear feedback about the 1108 rigid disk system.

* There is currently no Lisp utility which allows the user to repartition logical volumes on the 1108.  Xerox users can accomplish this with Othello.

* If you LOGOUT while some other process is actively writing a file, it is not guaranteed that anything reasonable happens to the file. The process system allows processes to prevent LOGOUT before completion (by using a BEFOREEXIT DON'T process property), but not all system facilities have been modified to use this mechanism.

* The caret is still global, rather than being a part of the window structure.  This means that there are times where a caret gets left up in a window when it should have come down.

* The swapping file on the 1100 and 1132 (Lisp.VirtualMem) must be a small number (optimally 1) of disk segments, or swapping performance will degrade drastically.  To create a (nearly) contiguous swapping file, use the Alto Exec command CREATEFILE.RUN on a newly-installed disk.  Allocate 16,000 pages so that the file will not have to be extended by adding segments as your Lisp image bloats.  

* Most system packages were written before multi-processing was added to Interlisp-D; some of these packages rely to some extent on there being only one process running, and access and alter global state accordingly. We have corrected many of these conflicts but have not yet completed this task.  Avoid running more than one instance (from different processes) of DEdit, EMPRESS (hardcopy), MAKEFILE, the compiler, or Masterscope.


=====================================================================================
LOCATION OF FILES:

The following files are all available on [Phylum]<Lisp>Current>:
[Site liaisons should move these files to their local file servers.]
 
 * Lisp memory images files:

	Lisp.SYSOUT		standard release virtual memory image
	Small.SYSOUT		smaller version without Interpress, or NS protocols.

For the user's convenience, we also provide two memory images with the current versions of various <Lisp>Library> and <LispUsers> packages already loaded:

	Full.SYSOUT		Lisp.SYSOUT, plus current versions of:
					 TEDIT, FILEBROWSER, LAFITE, READSYS
	Demo.SYSOUT		Full.SYSOUT, plus many graphics demos

Since the <Lisp>Library> packages on which these SYSOUTs depend (particularly TEdit and LAFITE) are under rapid development, these two latter memory images will be more frequently updated.

 * BCPL initialization for 1100 (Dolphin) and 1132 (Dorado) [unchanged]:
	Lisp.run

 * Microcode for 1100 (Dolphin) [unchanged]:
	DolphinLispMC.eb	for 3MB Ethernet
	XMBDolphinLispMC.eb	for 10 MB Ethernet 
	X3DolphinLispMC.eb	both 3 and 10MB Ethernet, but no floating point

 * Microcode for 1132 (Dorado) [new]:
	DoradoLispMC.eb

 * Initial microcode for 1108 (Dandelion)
	[New; compatible with Fugue sysouts but not vice versa]:
	LispSAx000Initial.db

 * Initialization, command files [new]:
	Init.CIS, Init.KSA        should be copied to {DSK}INIT.LISP; 
				give this file name if prompted
				for the name of an init file. These files
				used to be on [phylum]<Lisp> 
	NewUserDisk.<site>
	UpdateLisp.<site>	  for <site> = CIS, KSA
	Install<sysout>.othello   for sysout = Lisp, Full, Demo: 
				othello command file for installing <sysout>.SYSOUT 

* Sierra/Mesa 10.0 tools can be used for installing Interlisp-D on Dandelion from inside Tajo [unchanged]:

	InstallMu.bcd		InstallMu lisp ← [phylum]<Lisp>Current>Lisp.sysout
	LispTool.bcd		Window-based version of above

====================================================================================
[End of message.]
====================================================================================