filed on [rose]fugue6>doc>fugue6release.bravo Fugue.6 Release NotesMarch 9, 1984This document describes the Fugue.6 release of Interlisp-D. This version substantially improvesthe performance and reliability of key system components and fixes many bugs reported inearlier releases of Fugue.We invite you to send comments, suggestions and bug reports to 1100Support@PARC-MAXC orto Xerox Special Information Systems, MS 2-143, 250 N. Halstead Street, Pasadena, CA 91107.The following are the most salient aspects of the Fugue.6 Release.<1> Improved floppy disk system for the 1108.<2> Improved RS232 support including low-cost graphics printer support.<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 and 1132 microcode.<5> New case-insensitive string manipulation facilities.<6> New stream-dependent property handling end-of-line conventions.<7> System level support for load-time constants.<8> New/Improved LispLibrary and LispUsers packages: <9> Memory management handles large reference counts.<10> Sysouts may be installed directly from the 1108's rigid disk.<11> Miscellaneous-- STORAGE function takes two optional arguments bp>3qN Zr]%W^qN R` QNX O LX K>[ H6B E-. B%H ?+2<29 !2622/2/2,2)2& #! 9 D 2 5 0 6 C 2 0< L 1108 Floppy Disk System.One can use Interlisp-D on the 1108 to read, write, and otherwise interact with files on formattedfloppy disks through standard Interlisp input/output functions.Relibability has been substantially improved. The {FLOPPY} device is now monitor-locked, somultiple processes can successfully access the disk simultaneously. There is better protectionagainst Control-B and Control-D. And it is no longer possible for Lisp to die with 0510 or 0580-0584 maintenance panel errors.Further documentation is available in the Xerox 1108 Users Guide.<2> RS232 SupportReflecting improvements in low-level IO processor code for the 1108, Interlisp-D RS232performance is considerably improved: it will "Chat" and "Ftp" at 1200 baud now, and there areno more "Transmitter Wedged" errors.FXPRINTER is a Lisp Library package which drives an Epson FX-80 printer using a serial(RS232) interface. See the discussion under new LispUsers packages.For the following items, see the full discussion (especially for limitations) in the section of thisdocument entitled Revised Lisp Library Packages.Some new functions available since the Fugue.4 release: RS232MODEMCONTROL -- one arg, to set the modem control lines RS232MODIFYMODEMCONTROL -- changes only the specified modem control lines RS232MODEMSTATUSP -- reads the modem status lines RS232READSTRING -- essentially a block input function; especially usefulfor time-critical applications RS232BACKGROUND -- cause the keyboard scanning interrupt to poll theRS232 Uart; may permit asynchronous operation at up to 600 baud.RS232CHAT will pay attention to the DSPSCROLL setting of the chat window, and will attemptto do "roll mode" rather than "wrap around" mode when the screen is full. Also, new menuselections in the RS232 chat window permit one to specify whether the remote host sends CR orLF for "newline", and whether typing the RETURN key should send a CR/LF or just CR.The {RS232} device is created by RS232INIT, and one can obtain a stream interface to the RS232port by (OPENSTREAM '{RS232} 'INPUT).<3> Window/Display Changes.* Menu changes: submenus, item boxing, menu title fonts, and popup menus that don't tie up themouse.Nfq2`N%2] Z& W, R Ob Ni? Ka\ I_ HYa F CA = :V 90^ 7$ 4W 3 C 0f .1 +7 (> 'K %|3 #J"s Fk@ cZ Y [] S ^ K%  ^ 3 ( <^3Items in a menu can now have subitems associated with them. An item with a submenu ismarked in the menu by a grey, right pointing triangle. If the user drags the cursor out the rightside 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 thesubmenu 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. TheSUBITEMFN is called with two arguments -- a menu and an item in that menu -- and shouldreturn a list of items (from which a submenu would be constructed) or NIL. The SUBITEMFN iscalled once to compute the menu image and again each time the user rolls out of the item box, sothe SUBITEMFN should be moderately efficient. The default SUBITEMFN (namedDEFAULTSUBITEMFN) checks to see if the item is a list whose fourth element is a list whoseCAR is 'SUBITEMS and if so, returns the CDR of it. The standard interpretation of items thatare LISTP is that the first element is the label, the second the form to be evaluated and returnedand 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 thatchanges 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 notdown. This is the way Dedit's menu works now.MENU contains a new field MENUTITLEFONT which indicates the font to be used for the titleof 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 usedfor other things while the popup menu is in place. For example, the user may need to look aroundfor information needed to determine the selection to make in this menu or reposition the menubefore selecting from it. If MENU is called in this way, clicking outside the menu (which is thestandard way of indicating "no choice" to normal popup menus) will not return NIL . This effectcan be had by closing the menu (which causes NIL to be returned from MENU). Programmersare encouraged to provide a menu item such as "cancel" or "abort" which gives users a positiveway of indicating "no choice".* Changes to GETREGION and GETBOXREGION. When passed a minimal region (as inshaping a window), they prompt with the minimal region. They also prompt from the lower rightcorner 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-NILapplies it to the window.* The window containing the CARET no longer jumps on top in order to flash the CARET. Whenthe CARET is completely obscured it does not flash at all.* The system supports the notion of a minimum size for a window. The new functionMINIMUMWINDOWSIZE returns a dotted pair whose CAR is the minimum width and whoseCDR is the minimum height. The window property MINSIZE allows the user to set theminimum size of a window and should be a dotted pair or a function which when APPLYed to thewindow 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 bitsNfq `NV _b ]b \d ZX WW UX Ty\ R` QqK OZ Ni] Lb Kae IV F] EQW BI" ?AX =. :Y 90d 7@ 4P 3 a 1] 0a .` -X +^ * 'M %|^ #F M k cZ : R SP R K\ W P ;J 3P =*^4high, sets the 1108 display border. CHANGEBACKGROUNDBORDER is a no-op on the 1100and 1132.* VIDEOCOLOR now works on the 1108.<4> New microcode.* New 1108 Lisp microcode. Some operations previously in 1108 Lisp microcode have beenmoved into the initial microcode, and replaced by other opcodes.* New 1108 initial microcode. The process of installing Fugue.6 with the Installation Utilityfloppy will load new initial microcode into your 1108. Note that while the new initial microcodeis compatible with all Fugue sysouts, the Fugue.6 version of Interlisp-D will only run with thenew initial microcode. In addition, the new initial microcode depends on up-to-date PROMs: ifFugue.4 worked on your 1108, but the new initial microcode and new sysouts do not, contact1100Support.* New 1132 microcode. A number of improvements, especially for "creation" of datatypes and fornumerical operations.<5> Case-insensitive string manipulation facilities.UPPERCASEARRAY [Variable] A casearray suitable for FFILEPOS et al, in which every lowercase character is mapped into thecorresponding 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 throughCASEARAY before being compared. In addition, the value returned in the "true" case, i.e., whenA and B are in lexicographic order, is now either EQUAL or LESSP to discriminate the cases of Aand 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 ofSORT.<6> Stream-dependent property for handling end-of-line conventions: Fugue.6 supports end-of-line convention as a stream-dependent property. The EOL convention of a stream (CR, CRLF, orLF) determines what sequence of characters on a file will be read (by READC, READ, etc) as thesingle internal end-of-line character CR. The EOL convention for a stream is defaulted to theusual value for the particular host or device (e.g. CR for IFS files, CRLF for TOPS-20 leaf files).It can be set explicitly by including for example (EOL CRLF) in the parameters argument toOPENFILE or OPENSTREAM, or by using the EOL attribute to SETFILEINFO. The EOLconvention for an open stream can be obtained via GETFILEINFO.<7> SYSTEM LEVEL SUPPORT FOR LOAD-TIME CONSTANTS as provided in Interlisp-10by the LOADTIMECONSTANTS Lispusers package. A side-effect of this is that ^Y is now aNfq bNR ` ]# Y UW Ty@ Qq^ Oa Ni_ L^ KaZ I F_ EQ @5 =" :` 90D 6( 3 ' 0X ._ -_ +D ( %|" "sS  ] [] ^ S^ c KZ N C> M 3W =^5readmacro in the CODERDTBL. This means that files compiled under Fugue.4, or earlierversions of Interlisp-D that contain ^Y as a literal in a function definition will not load correctlyinto Fugue.6; new Fugue.6 .DCOMs must be made for these files. (Fugue.6 DCOMs can be backloaded into earlier Fugue sysouts except where there is a LOADTIMECONSTANT construct.)<8> New/Improved LispLibrary and LispUsers packages:-- N.B. Some current Library and Lispusers packages take advantage of new functionality notavailable before the Fugue.6 release. Thus not all new packages are compatible with pre-Fugue.6 sysouts. Tedit is one such package.Complete documentation for these packages is contained in the section entitled Revised LispPackages. * ATTACHEDWINDOW is a new package for "attaching" one window to another. Any numberof windows can be attached to a window. ATTACHEDWINDOW supercedesMENUEDWINDOW which becomes a simple case of attaching a menu window to anotherwindow.ATTACHEDWINDOW makes it easy to manipulate a group of window as a unit. Standardoperations like MOVE, RESHAPE, OPEN and CLOSE can be done so that it appears to the useras if the windows are a single entity. Each collection of attached windows has one main windowand any number of other windows that are "attached" to it. Moving or reshaping the mainwindow causes all of the attached windows to be moved or reshaped as well. Moving or reshapingan attached window does not affect the main window. The initial motivation for attachedwindows was to allow multiple menus to be associated with the same window but there is norestriction on what windows can be attached.* GRAPHER has several new, minor features. This release is almost compatible with yourcurrent code, although the graphs will look a tad different, so you need only revise if you want totake advantage of the new features.-- General layout function: LAYOUTGRAPH is a combination of LAYOUTFOREST andLAYOUTLATTICE (which have been de-documented to discourage their use). It provides threekinds 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 SHOWGRAPHboth 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.* FXPRINTER is a Library package which drives an Epson FX-80 printer using a serial (RS232)interface. This package has explicit funtions to print files, text, bitmaps, and windows; it shouldalso be added to PRINTERTYPES (as a LOCALPRINTER) so that LISTFILES etc should knowabout it. On an 1108, the RS232 connection is made through the 1108's "Printer DTB" port.* The following Lisp packages are new or changed since the Fugue.4 release:BROWSERICONWNfq bNU `f _Z ]V Y5 U[ TyY R, OOs Niq L KaT IB HYN F CQ BIX @_ ?AX =_ <8X :Y 90, 4X 3 c 1# .N -Y +h *S (< %|b "sR kH \ [d S SZ K   =$^6GRAPHZOOMMENUEDWINDOWNOTEPADRS232, RS232CHAT, RS232EXEC, RS232FTP, RS232LOGINSYSEDITTEDIT, TEDITHCPY, TEDITMENU, TEXTOFD, TFBRAVO, IMAGEOBJ<9> Memory management handles large reference counts. Reference counts exceeding 63 arenow properly handled via a reference count overflow table. This allows objects to be properlycollected when the reference count again reaches zero.<10> Sysouts may be installed directly from the 1108's rigid disk.The Lisp Install Tool now allows the user to install a fresh sysout from one logical volume intoanother. This can be substantially faster than installing a sysout from a fileserver or floppydisks. See the Xerox 1108 Users Guide for details.<11> Miscellaneous* STORAGE function takes two optional argumentsThe function STORAGE in Interlisp-D now takes two optional arguments for filtering theamount of information presented:(STORAGE TYPES PAGETHRESHOLD)If TYPES is given, STORAGE only lists statistics for those types. TYPES is an atom or list oftypes (either names or numbers). If PAGETHRESHOLD is given, then STORAGE only listsstatistics for types that have at least PAGETHRESHOLD pages allocated to them. Note: his iscompletely incompatible with Interlisp-10's STORAGE.* EDITPREFIXCHAR now defaults to NILTTYIN users: the variable EDITPREFIXCHAR is now by default NIL, meaning you can't typemeta commands (this to avoid confusing users who don't know about it). If you want to be able toissue editing commands to TTYIN during your typein, you should either call (TTYINMETA T) toenable bottom-blank (STOP on 1108's) as a true meta key, or set EDITPREFIXCHAR to thecharacter code of your preferred meta prefix (it used to be 193, for top-blank).* GENSYM generalized.GENSYM's first argument now can be a multicharacter atom or string and will be the prefix ofthe generated atom. Previously you could specify only a one-character prefix. Also, GENNUM isnow initialized to 0 instead of 10000.* ATOMHASH#PROBES (new function)Nfq b _ \ YN1 U R7 LY Ka^ I6 EQB BI` @_ ?A3 : 6(0 3 V 1 . +^ *T (\ '4 "s% kV a c[ U [P  \ C_ &  =^7(ATOMHASH#PROBES string) returns the number of probes it takes to find an atom inInterlisp's atom has table with PNAME = string, or NIL if no such atom is found.============================================KNOWN PROBLEMS WITH THIS RELEASE:* Only the Installation Utility floppy can be used to partition the local disk in a rather stylizedway. There is currently no Lisp utility which allows the user to declare the name and size foreach logical volume.* A sysout generated on an 1108 cannot be installed on an 1100.* If you LOGOUT while some other process is actively writing a file, it is not guaranteed thatanything reasonable happens to the file. The process system allows processes to preventLOGOUT before completion (by using a BEFOREEXIT DON'T process property), but not allsystem facilities have been modified to use this mechanism.* The caret is still global, rather than being a part of the window structure. This means thatthere 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 (optimally1) 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-installeddisk. The maximum size is 16,000 pages; this will guarantee that Lisp.VirtualMem will notbecome fragmented.* Most system packages were written before multi-processing was added to Interlisp-D; some ofthese packages rely to some extent on there being only one process running, and access and alterglobal state accordingly. We have corrected many of these conflicts but have not yet completedthis task. Avoid running more than one instance (from different processes) of DEdit, EMPRESS(hardcopy), MAKEFILE, the compiler, or Masterscope.* Tedit does not automatically load two files on which it depends: TEDITMENU.DCOM andATTACHEDWINDOW.DCOM. ============================================LOCATION OF FILES:The following files are all available on [Maxc]:[Site liaisons should move these files to their local file servers.] * Lisp memory images files:Lisp.SYSOUTstandard release virtual memory image * Initialization for 1100 (Dolphin) and 1132 (Dorado):Lisp.run * Microcode for 1100 (Dolphin) [new]:Nfq bNQ `P \, Y! Uc Ty_ R O? L^ KaW IT HY; EQ_ CU @\ ?A\ =W <8[ : 7] 6(` 4^ 3 ] 13 .U - (- %| "s6 kD c [2S % C72 ; 3& <^8DolphinLispMC.ebfor 3MB EthernetXMBDolphinLispMC.ebfor 10 MB EthernetX3DolphinLispMC.ebboth 3 and 10MB Ethernet, but no floating point * Microcode for 1132 (Dorado) [new]:DoradoLispMC.eb * Initial microcode for 1108 (Dandelion)LispSAx000Initial.dbNfq2`N2]2Z/ W%2Ty Qq)2Ni I/u2CLASSICCLASSIC CLASSIC CLASSIC y^ 7UK o%`+-j/0 .]Fugue6Release.bravoSANNELLAMarch 30, 1984 9:36 AM