This is a release of Laser-Scan's internal version of DECUS SPELL, whose original author was Mark Resmer of Vassar College. The present version includes several significant developments beyond the most recent one I've seen from anyone in the United States. I sent out a \beta release at the end of 1991, and have included some improvements and two bugmends since then. Changes (and non-changes) are: 1. The `edit' mode. This enables you to correct a word that's more seriously wrong than SPELL's Guessing capabilities can put right. This mode I find much more friendly than the previous offering (the `wrong' command); however, I haven't removed what was there... 2. The `change case' verifier operates on the same model as edit mode. (This is encountered when SPELL can't deduce which letters of a word should be capitalised after it's been corrected. SPELL `knows' about words with initial capital only, and words all in capitals.) 3. The checking commands include a S[kip], which ignores just the present occurrence of a word (doesn't put it in the IgnoreList or the guidance file - see below). The down-arrow key is treated in check mode as `skip the rest of this line'. 4. Guessing operates asynchronously, and presents its guesses in a separate window. You get to select the correct spelling as soon as SPELL has found it. 5. The syntax checking of TeX and LaTeX commands is much better than the original (and also cleverer than a very recent version I've received from the USA, on which I built). The code adds another default type for these files, .LATEX, that matches our usage at Laser-Scan. The checker scans the first (apparent) arguments (inside braces {}) of all (La)TeX commands except \begin, \end, \documentstyle, \[this]pagestyle and \bibliographystyle. I appreciate that this a LaTeX-centric set, and would welcome suggestions for improving the discrimination. 6. The code includes a first-run syntax checker for VAX Document commands (default file type .SDML). This syntax-checker currently ignores all parameter arguments (suggested improvements are also welcomed). Note that the algorithm here follows suggestions by Hunter Goatley: we don't have VAX Document, and the testing so far has all been on documents by Hunter. 7. Other new syntax checkers are for [nt]roff files (default file type .nroff, fwiw) and Issue files (default file type .ISSUE). Both these are for work I did for ISO/IEC; issue files feed into a pre-formatter written in DCL, to which anyone mad enough is welcome... Both syntaxes are trivially treated (I don't know [nt]roff, and only check commands of the form `.xy' at start of line). 8. Guidance files, which are in effect project dictionaries are implemented. Breaking with tradition, I've made these ordinary rather than ISAM files (this break with tradition followed my implementation of binary sorting of names - see below). Select guidance by the /GUIDANCE[=file]; SPELL will search for SPELL.GUIDANCE_FILE and then .GUIDANCE_FILE in the current directory (or will of course use the file name argument if you give it). By default, a new guidance file is created with title .GUIDANCE_FILE. Note that _only_ guidance files are sequential - I haven't changed the implementation of the dictionaries themselves. 9. There's a /LOG facility to record the running of every session, if it so pleases you... In conjunction with this, there's a checking command J[unk], which behaves as S[kip], but which writes the word to the log file with a moderately rude remark... 10. The New, Good file includes the name of the user who inserted the word and the file [s]he inserted it from. This enables the system manager (by use of the undocumented /LOG qualifier to the SPELL/UPDATE facility) to inform the user of words that get rejected (my experience is that about 50% of words declared `right' are in fact wrong; of those, perhaps 50% are genuine misapprehensions on the part of the user, the rest being typos of the form "I didn't mean to hit `R'"). Note that the new, good, file will be created anew for existing users of SPELL - the new format file has a different name to avoid confusion; I always keep one word in it ("zoroastrianism"), so as to avoid SPELL's tiresome habit of deleting and recreating the file if it becomes empty (it's tiresome because it takes too long...). 11. The internal workings have been changed a bit. The source includes some guessing rules for Anglicising spellings (-or- -> -our-, -iz- -> -is-, but not doubling `l' and `r'; these rules are at the start of the guessing sequence to speed their selection - their spelling would be tried eventually in any case). Presumably American users would prefer to remove these, though they won't do any actual _harm_, since guessing never offers as a choice something that's not in the dictionary. 12. I've rejigged the way in which the internal `ignore-list' is maintained; it's now a balanced binary tree, which gives significant performance improvements on long files (ignore-list contains an entry for every word that's been checked as correct in the present run of SPELL, and gets pretty large for a 1000-line file). Mark Resmer's version was capable both of reasonable performance and of catastrophic slowness. This version does pretty much equally well on any sort of text. (Note that I eschewed use of the best BT algorithm I regularly use, which is proprietary to Laser-Scan. However, the one I did put in comes from Knuth's Art of Computer Programming (vol 3) and seems pretty good to me, as well as being public domain.) 13. Other new qualifiers are: /[NO]OUTPUT[=file] controls whether to produce a checked output or whether simply to scan the document /[NO]PERSONAL controls whether to use your personal dictionary /TYPE=doctype enables you to select, up front, the `word processor type' of your document. Acceptable `doctype's are runoff, tex, latex, mss, scribe, nroff, troff, vaxdoc, document and issue. 14. There's an undocumented qualifier /BUILD. This is part of a (currently moribund) project to make SPELL use shared sections of correct words, rather than the present ISAM files. 15. Following some very helpful suggestions by Ken Fairfield, I've done away with the need to install SPELL in your CLI table (the ideas are Ken's, but the implementation is subtly different, so bugs are of course mine). This is _not_ the same as Joe Meadows' scheme, but system managers who wish to do so may still install SPELL without loss of generality (or even of much speed...). 16. I have as yet failed to port the software to Alpha ;-). (I don't have one, and there's no available Alpha Pascal compiler. I may perhaps try VESTing it if I get near an Alpha some time soon...) I'm not sending out an executable. The list of people I'm sending to this time is pretty small, and all across the Atlantic. I expect them to need at least to look at the source, and every byte I send transatlantic costs me (~10cents/kB). Well, actually it costs Laser-Scan... Let me know if there are any problems, and I'll _try_ and help. However, I'm no genius either... Best wishes for prosperous VAXing (or even Alphaing, if you're one of the lucky ones ;-) in what's left of 1992. Robin Robin Fairbairns, Senior Consultant, postmaster and general dogsbody Laser-Scan Ltd., Science Park, Milton Rd., Cambridge CB4 4FY, UK Email: robin@lsl.co.uk (preferred) --or-- rf@cl.cam.ac.uk