Heading:qjk40(635)Mesa 6.0m Change Summaryy756qjk40\b24BPage Numbers: Yes  X: 527  Y: 10.5"qjk40Copyright c Xerox Corporation 1980l4445y45c\10f3 1f0Inter-Office Memoranduml4445y762\f5bTo	Mesa Users	Date	September 26, 1980l4445d2998e21(0,65535)(1,4445)(5,11684)(6,14146)\f7 2f0t2 1t0 10t6 1f7t0 4f0t7 1t0From	Dick Sweet	Location	Palo Altol4445d2998y716e25\f7 4f0t2 1t0 10t6 1f7t0 8f0t7 1t0Subject	Mesa 6.0m Change Summary	Organization	SDD/SS/Mesal4445d2998e25\f7 7f0t2 1t0b24t6B1f7t0 12f0t7 1t0XEROX       l508y644e14(2116)\f2 5f0Filed on: [Igor]<AlphaMesa>Doc>Summary60m.bravoe30(0,16263)(1,65535)(5,65535)(6,65535)\f7 47f0e10(2116)This memo outlines changes made in Mesa since the last alpha update (Mesa 6.0u, July 11, 1980).  These changes will shortly be incorporated into the Mesa 6.0 Change Summary to correctly reflect the differences between Mesa 5.0 and Mesa 6.0.  This document also includes a list of ARs fixed since 6.0u.x2e12jk40(1799)Languagee18jk80\bThe language has been extended in the following areas:x2e12jk40Monitor Locks and Condition Variables in Recordsx2e12jk40\i48IWhen constructing a record, any fields not mentioned (and not having defaults) are not guaranteed to have known values after the construction.  In particular, they are not guaranteed to have their previous values.  This poses a problem in types containing "hidden" fields such as the queues of processes in MONITORLOCKs and CONDITIONs, and with a few other types (see the attached memo from Ed Satterthwaite).  To protect users from inadvertantly overwriting these fields, the Mesa 6 compiler does not allow updating of variables of these types, or of any composite type containing a field of these types.  This does not mean that MONITORED RECORDs are read-only; they can be assigned to field by field.  However, it is illegal to write a constructor for an entire MONITORED RECORD except at the point of declaration (or allocation, by the NEW operator).  x2e12jk40\307f7 11f0 6f7 9f0 298f7 16f0 118f7 16f0 59f7 3f0Sequencesx2e12jk40\i9IA sequence is an indexable collection of objects, all of which have the same type.  In this respect, a sequence resembles an array; however, the length of a sequence is not specified at compile time.  Consider some examples of "faked" sequences from Mesa 5.x2e12jk40\2i8I. . .ARec1: TYPE = RECORD [l4269x2e6jk40\i12f6bI1f7B4f6b3f7B6f6b1f0B1f6bcommon: . . .l4904x2e6k40\i7f6bIcount: CARDINAL, -- number of elementsl4904x2e6k40\i6f6bI1f7B8f0 1f6b1f0B21f6bbody: ARRAY [0..0) OF INTEGER];l4904x2e6k40\i5f6bI1f7B5f6b1f0B6f6b1f7B10f0 2f6b. . .ARec2: TYPE = RECORD [l4269x2jk40\f6b6f0Bi6f6bI1f7B4f0 3f7 6f6b1f0B1f6bcommon: . . .l4904x2e6k40\i7f6bIbody: ARRAY [0..0) OF INTEGER];l4904x2e6k40\i5f6bI1f7B5f6b1f0B6f6b1f7B10f0 2f6bar1: POINTER TO ARec1;l4269x2e12jk40\i4f6bI1f7B10f6b1f0Bi5I1f6bar2: POINTER TO ARec2;l4269x2e12jk40\i4f6bI1f7B10f6b1f0Bi5I1f6bThe record ARec1 contains a count of the number of INTEGERs in body.  The number of elements in an ARec2 is not contained in the record; it is kept elsewhere, say in a global variable, or computed from the values of common fields.  Note that these "variable length" arrays occur only at the end of records (they obviously couldn't occur in the middle).  Also, since you aren't telling the compiler how many elements are present in a given ARec*, it doesn't make sense to declare one; you obtain storage from your favorite allocator and access the elements using a pointer.x2e12jk40\11i5I35f7 7f0 5i4I32i5I335i5IIn Mesa 6, these constructs are built into the language.  A SEQUENCE occurs as the last field of a record.  It optionally has a count of elements associated with the indexable portion.  The following Mesa 6 declarations are roughly equivalent to the Mesa 5 ones above:x2e12jk40\60f7 8f0. . .SRec1: TYPE = RECORD [l4269x2e6jk40\f6b6f0Bi6f6bI1f7B4f0 3f7 6f0common: . . .l4904x2e6k40\i13f6bIbody: SEQUENCE count: CARDINAL OF INTEGER];l4904x2e6k40\i6f7I8f6b1f0Bi7f7I19f0. . .SRec2: TYPE = RECORD [l4269x2jk40\f6b6f0Bi7f7I4f0 3f7 6f0common: . . .l4904x2e6k40\i13f6bIbody: SEQUENCE COMPUTED CARDINAL OF INTEGER];l4904x2e6k40\i6f7I26f6 1f7 10f0sr1: POINTER TO SRec1;l4269x2e12jk40\i5f7I10f6b1f0Bi5Isr2: POINTER TO SRec2;l4269x2e12jk40\i5f7I10f6b1f0Bi5IVariables of type SRec* must also be dynamically allocated at runtime, since they are of variable length.  However, the NEW operator of Mesa 6 knows how to deal with sequences.  Let z be an MDSZone, n a CARDINAL. The following are legal statements:x2e12jk40\18i6I96f7 3f0 59i1I7i7I2i1I3f7 8f0(1)	sr1 _ z.NEW [SRec1[n]];	-- sets sr1.count to nl3634x2e12jk40(0,4256)\4i3I3i2f7I3f6b1f0B1i5I1i1I4f6b3f0B5i9I4i1I(2)	sr2 _ z.NEW[SRec2[n]];l3634x2e12jk40\4i3I3i2f7I3f0 1i5I1i1I(3)	sr1 _ z.NEW[SRec1[n] _ [common: . . ., body: NULL]];l3634x2e12jk40\4i3I3i2f7I3f0 1i5I1i1I5i21f7I4f0In statement (1), sufficient space is allocated to contain the common part of an SRec1 plus n elements (INTEGERs) in the sequence part.  Additionally, the number of elements, count, is initialized to the value n.  Thereafter, the value of count is readonly. The only way to set the length field of a sequence is by the NEW operator.  In statement (2), space is allocated for an SRec2 with n elements, but there is no count field to initialize.  Of course, in any of these statements, n could be replaced by any constant or expression of type CARDINAL.  In statement (3), the common fields are also set by an initializing constructor.  Note that the "array" part of the sequence is voided in the constructor.  In Mesa 6, there is no provision for writing a constructor for the variable length portion of a SEQUENCE.  One must write explicit code to initialize it.x2e12jk40(1799)\81i5I6i1I11f7 7f0 64i5I30i1I28i5I14i61f7I3f0i10I46i5I6i1I94i1I57f7 8f0 255f7 8f0To access an element of the sequence, one attaches an indexing expression to the pointer to the record containing the sequence.  This is analogous to the treatment of type STRING (which is essentially a sequence of the Mesa 6 variety).x2e12jk40\172f7 6f0i _ sr1[j];sr2[j] _ i;l4269x2e12jk40\i1I3i3I1i1I3i3I1i1I4i1IIf one compiles a module with bounds checking enabled (/b to the compiler), code will be generated when accessing sr1[j] to assure that j IN [0..sr1.count).x2e12jk40\55f8 2f0 57i3I1i1I16i3f7I2f6b1f0B4i9IAlternatively, one may write:x2e12jk40i _ sr1.body[j];sr2.body[j] _ i;l4269x2e12jk40\i1I3i8I1i1I3i8I1i1I4i1Ianalogous to saying s.text[i] for a STRING.x2e12jk40\20i6I1i1I8f7 7f0The attached memo from Ed Satterthwaite discusses the use and declaration of SEQUENCEs in considerable detail.x2e12jk40\77f7b8f0BFormattere18jk80\bThe Formatter is a program for transforming Mesa source files into a standard format.  It uses the Compiler's scanner and parser to determine nesting, and hence can be used only on syntactically correct programs.  Attached is the Appendix from the Mesa 6 Users Handbook (in progress) that explains the use of the Formatter.  The /c switch (compile output) is not yet implemented.x2e12jk40\329f8 2f0Bindere18jk80\bThe binder now allows the association between file names and module or configuration names to be given on the command line, in much the same way as the compiler does.  For example, the command linex2e12jk40>Binder.bcd Tajo[TestPilot: UnpackagedTestPilot]l4269x2e12jk40\f8 48f0will bind Tajo.config using the previously bound configuration TestPilot that is stored in the file named UnpackagedTestPilot.bcd.  One can best think of the the text inside the brackets as inserting or augmenting a DIRECTORY statement at the beginning of the configuration.x2e12jk40\10f8 11f0 42f6b9f0B34f8 23f0 87f7 9f0Systeme18jk80\bAll of the system interfaces have been recompiled for 6.0m.  This means that all modules must be recompiled/rebound to use the new Mesa.image.  No source changes are necessary (except for users of FTPDefs, as previously announced; see below).x2e12jk40\131f8 10f0 56f6b7f0BTo track development in other systems, minor revisions have been made in the Development Software interfaces Format, Inline, Runtime, System, and Time.x2e12jk40\109f6b6f0B2f6b6f0B2f6b7f0B2f6b6f0B6f6b4f0BRunMesae18jk80\bRunMesa has been upgraded to included Alto microcode for Pup checksums, IEEE floating point, and HBlt (Griffin).  This microcode is loaded with the XMesa overflow microcode on Altos with the 2K ROM (with version 41 microdoce) or 3K RAM option.  Users who have been loading microcode for these functions need no longer do so.  This change affects Alto IIs only.  One must still load software routines to use floating point on a Dolphin.x2e12jk40\194f1 3f0 35f1 3f0Debuggere18jk80\bIn addition to many bug fixes, the following changes and additions have been made:x2e12jk40Source Menusx2e12jk40\i12IAttachx2e12jk40\f8 6f0The Attach menu command has been added to the Source Ops source menu; it causes the Debugger to ignore the creation date of the current source file when setting breakpoints or positioning to a source line.  Because the source-object correspondence may no longer be correct, this command should be used with caution.  If, after invoking this command, the Debugger sets breakpoints in strange places, chances are that the source file does not match the object in the system you are debugging.x2e12jk40\4f8 6f0 36i10I151i107ICommandsx2e12jk40\i8IReSet context [confirm]x2e12jk40\f8 23f0This command now requires two keystrokes, to avoid conflict with the ReMote debuggee command (not yet implemented on the Alto).x2e12jk40\69f8 15f0Program-not-started Indicationx2e12jk40\i30IWhen the debugger refers to a program module, it usually gives the address of its global frame, e.g (G: nnnnnB).  If the module has not been started, the debugger now prints a tilde (~) after the B.  If a module has not been started, the user should not believe and should not modify the global variables of that module.x2e12jk40\101f8 9f0 86f8 1f0 68i18ICommand Centrale18jk80\bThe options window has changed format and allows inclusion of default switch settings.x2e12jk40Performance Monitore18jk80\bThe Performance Monitor has been upgraded to Mesa 6.0.  It is the same as in Mesa 5.0 except that debugger breakpoint numbers are used for NodeIDs.  Upgraded documentation will be forthcoming.x2e12jk40Xfer Countere18jk80\bThe Xfer Counter has been upgraded to Mesa 6.0.  A new mode of operation has been added to gather information on the flow of control between groups of modules.  Documentation for the Xfer Counter is attached.x2e12jk40Pupe18jk80\bPupDefsx2e12jk40\i7IUseAltoChecksumMicrocode: PROCEDURE has been added to speed up processing if you are running on an Alto II with the 2K ROM or 3K RAM option.  The overflow microcode loaded into the RAM by RunMesa.run includes the necessary additions.  (Beware if you load your own microcode.)x2e12jk40\f6b26f7B9f0 84f1 3f0 7f1 3f0 49f1 3f0 4f8 11f0Subtle implementation changesx2e12jk60(2116)\i29IGetPupAddress will no longer return an address for a dying net.  EnumeratePupAddresses will now pass the client-supplied procedure addresses on dead or dying nets, but only after processing all the addresses on nets that are reachable.  (It used to skip addresses on unreachable nets.)x2e12jk60\f6b13f0B52f6b21f0BThe byte stream internals have been reworked to eliminate several unpleasant delays while opening and closing connections.  It is now possible to open a connection, send a thousand words, and close the connection in less than a second.  (Since Close UnNews three module instances, it will take longer if you have a lot of active global frames.)  A byproduct of this cleanup is that SendNow will send an empty aData packet to request an acknowledgment even if the previous SendBlock happened to end on a convenient packet boundary.x2e12jk60\244f6b5f0B133f6b7f0B20f6b5f0B58f6b9f0BBug fixesx2e12jk60\i9IThe following change requests are closed by this release:x2e12jk405005 Delays when creating byte stream5093 NameLookup vs dying nets5098 Change priority of interrupt routine in EthernetDriver(s)l4269x2e6jk60\43f6b10f0B60f6b14f0BFtpe18jk80(1799)\bFTPDefsx2e12jk40\i7IThe arguments to the (client supplied) procedure passed to FTPInventoryDumpFile have been extended to allow proper processing of create dates.  It is now compatable with the procedure passed to FTPEnumerateFiles.x2e12jk60(2116)\59f6b20f0B115f6b17f0BBug fixesx2e12jk60\i9IThe following change requests are closed by this release:x2e12jk403987 StringBoundsFault from TimeExtras.PacketTimeFromString4444 FTPInventorryDumpFile needs create date4763 Troubles if forget to call IdentifyNextRejectedRecipient5152 TimeExtras.PacketTimeFromString zone screwup5198 Config with server and user thingsl4269x2e6jk60\5f6b17f0B6f6b31f0B6f6b21f0B51f6b29f0B6f6b31f0Bx2e12jk40(1799)Distribution:Mesa UsersMesa GroupSDSupportl3528d2998x2e12k40(2116)