MITS DECUS Contribution All programs below were built using VMS 5.4, but compile without any problems on earlier versions of VMS (except for MEMTRIM). [.HPGL] HPGL to Postscript converter. Built under VMS 5.4. TEST.PS is the output from HP201121.PLT using default qualifiers. See HPGL2PS.MAN for instructions. Also includes a DXY to Postscript converter (untested). Author: Don McCormick [.LHARC] LHarc file compression utility. Define LHARC as a foreign symbol :- lharc :== $dev:[dir]lharc Use :- lharc -h for instructions. Author: Yooichi Tagawa. VMS Port: Steve Drew. [.MEMTRIM] VMS can quickly boost a processes working set up to WSEXTENT if pagefaults exceed a certain limit. This can be a problem since the pages are never given back, unless the system gets really low on memory. MEMTRIM is a program which cycles every 30 minutes (user modifiable). It looks at interactive and batch processes and determines which processes are hogging memory, but are not actually using it. Note that the "tuning" that Memtrim does is a major part of what some of the commercial tuners do, although it has less intelligence. We do not "blast" a process if; o It has more than 200 faults/minuts o It was recently blasted or is using little physical memory (< 210 pages) "Blasting" a process is done by issuing a kernel mode AST, which runs in the context of the target process, and purges their working set to approx. half its current size. Each "blasted" process is logged in SYS$OUTPUT:. Although Memtrim has run well on our systems, there may be software out there that does not take well to having it's working set trimmed occasionally. Master_blaster uses less that .03% CPU time, although may incurr some CPU usage in the target processes. Note also that once every 30 minutes or so your system will experience a large number of pagefaults as the working sets are purged, but these should mostly be soft faults. [.PSROFF] PK2PS really Not for the faint hearted! This directory contains the PSROFF distribution. The only part I have tried to get working is PK2PS. This converts bitmap font definitions in PK format into PostScript format. The rest is here in case anyone wants to try porting it. See README. for more information. Author: Chris Lewis [.SMALLTALK] GNU Smalltalk 1.1. This is GNU Smalltalk with modifications to run under VMS + a simple DECwindows interface. GNU Smalltalk is an implementation of the Blue Book (Smalltalk-80: The Language and its Implementation, by Adele Goldberg and David Robson). The Smalltalk programming language is an object oriented programming language. This means, for one thing, that when programming you are thinking of not only the data that an object contains, but also of the operations available on that object. The object's data representation capabilities and the operations available on the object are ``inseparable''; the set of things that you can do with an object is defined precisely by the set of operations, which Smalltalk calls 'methods', that are available for that object. You cannot even examine the contents of an object from the outside. To an outsider, the object is a black box that has some state and some operations available, but that's all you know. In the Smalltalk language, everything is an object. This includes variables, executable procedures (methods), stack frames (called method contexts or block contexts), etc. Each object is an 'instance' of a 'class'. A class can be thought of as a datatype and the set of functions that operate on that datatype. An instance is a particular variable of that datatype. When you want to perform an operation on an object, you send it a 'message', and the object performs that message. For example, to print an object, you'd send it the message 'print', thus: randomObject print The message that you send is actually the name of a method (procedure) to invoke. When you send a message to an object, Smalltalk tries to find a method that's defined for that type of object. It first looks in the object's class for a method that matches. If none is found there, it looks in the object's parent class, then the grandparent class, and so on. At the top of the class structure is a class called Object, which has no parent. If the method is not found by the time that the searching gets to the methods of class Object, an error occurs. This error is signalled by sending the original object a 'doesNotUnderstand:' message, which, if not intercepted by the object's class or any parent class, will be handled by Object itself by reporting the error to the user and printing a backtrace of the methods that had been invoked at the time the error occurred. Author: Steve Byrne Alistair Grant Internet: alistair@mits.com.au PSI Mail: psi%0505238730004::alistair Alternate: alistair%mits.com.au@ucsvc.ucs.unimelb.edu.au grant@decus.com.au