The new Bcpl compiler is totally compatible with the previous run file. The compatibility extends to the Br file enabling comparison of output. This version should not be confused with the new Bcpl that can be found in Rochester. The changes are: unsigned compares uls, ule, uge, and ugt can be used with the /O switch special getframe and string code can be enabled with the /I switch multiple definitions of externals can be allowed with the /-E switch error printing can be disabled for get files with the /-G switch thereby enabling error addressability greater range. multiple source files can appear on the input line, with the restriction that local switch'ed modifiers can only be applied to the last. the addressing range of errors has been doubled the number of get files can now be 50 the date printed out has been updated from was added as a modifier to get. get a,b,c from "file" reads file and forgets all names first seen therein Of course, a,b,c, and file are kept. Multiples will still happen since the file proceesing is unaware that the new names are for naught. The filter for whether the file has been read or not is currently whether all the names are defined, or all undefined. If all are undefined the file is read, if they are all defined the file is not read, and a mix causes an error. Note that all the fields of a structure have to be named in the list. With sufficient care this feature can extend how many symbols a compilation can have with some attendant documentation benefits. (Some precautions are to not debug get files with get from, and beware that Bcpl is exceedingly upset by undefined structure name, another manifestation of an add-on.) the depth to which gets can nest was increased the get check to see if the file has already been read is caseless (This change is not compatible with the compiler which was modified, but it somehow was already included in the previous run file.) the number of names that can be in context is now 1024 The next few sentence fragments say a little bit more. Compiled-in unsigned compares are nice to use and were seemingly easy for Paxton to add for OZ once he found all the places that needed to be changed. Multiple external definitions will probably never be used again but were added to enable externals to be defined for separate parts of one file to ease splitting the parts into separate files as they overflowed overlays. After programming in Mesa for a bit, I inadvertently put an "IF" in a file with many gets and had to find it using a binary search with the compiler printing out the first line of the file each time, so I was sufficiently motivated to make the error reporting somewhat better. Separate compile cm files motivated the many source files to a command line change. The get file increase in number and nesting were independently added by Paxton and me. Once the date was found it was easy to change, so there really was no excuse for the new and the old to look the same for as long as they did. Dictionary overflows motivated the get from morass. Somehow the previous run file already had a caseless compare, but I couldn't find the code for it; it couldn't have been a patch?! The increase in the number of names that can be in context was another gift from Paxton. What follows is a somewhat esoteric catalog of the changes. Unsigned compares were added to all the pass X definitions get files. The modules which changed for other reasons are: BcplX,0, BcplAlto, Blex0,1,2, Bcae0,1,2, BsaeX,0,1,2,3, Btrn1,5, and Bncg2,6,7. Note that the non X names have been changed to include an extension of bcpl BcplX had four statics for switches added: SWUnsignedCompares for /O = OZ's unsigned compares, SWStackStrings for /I = IFS's now unused special getframe and string SWNoExtExts for /-E = allow multiple definitions of externals, and SWGetLines for /-G = do not "LINE" get files. Bcpl0, doubled the LINE range, and added multiple source files BcplAlto, GetFileMax increased from 25 to 50, and changed date BlexX: added "from" and unsigned operators Blex0: GetMax increased to 20, and added -G switch Blex1: lower case get names, and get from Blex2: added from after get, and added unsigned compares Bcae0,1: added END processing for get from Bcae2: added unsigned compares BsaeX: DvecMax was increased from 512 to 1024 Bsae1: added END processing for get from Bsae2: allow EXTERNAL & EXTERNAL if /-E Bsae3: added unsigned compares Btrn1: added (null) END processing for get from Btrn5: added unsigned compares Bncg2: added special getframe and string and table processing if /I, and added unsigned compares Bncg6: added unsigned compares Bncg6: added special string and table processing if /I