CUG CD-ROM Vols. 360-379

(CUG 360)USpell: Spell checker optimized for Unix

Bill McCullough (MO) has contributed a spell checker program, Uspell. Uspell is basically a modification of CUG217 Spell, optimized to improve the performance under UNIX systems. The optimization techniques Uspell uses include: replacing scanf with a single read, retaining the whole index in memory, converting input words to 5 bit format before spell checking, reading the dictionary in increments of file system blocks caching locally, eliminating stdio functions, etc. The disk includes C source code for spell checker, ASCII text dictionary, compressed dictionary and index files, and a utility used to compress the ASCII text dictionary.

(CUG 361A)Gadgets: Unix-like tools for MS-DOS

Jack E. Ekwall has contributed a function library Gadgets, a group of UNIX-like tools for DOS; and Term, a collection of computer buzz-words. Gadgets provides functions such as popup/dropdown window, drawing box, screen and cursor manipulation, keyboard input, color, date, printer and mouse control, and file manipulation. Some of the functions are lifted from CUG273 Turbo C Utilities. The library is linkable to Turbo C v2.0. These UNIX-like tools offer a solution to the DOS command line interface pipeline problem.

(CUG 361B)Terms: a computer buzz-word glossary

Term includes 634 topics and 32 historical notes/observations about computer buzz-words. This text is in a text-indexed sequential form which can be read by a display program, VU. The distribution disk includes source code for the library and documentation.

(CUG 362)RMAXTask: priority-based cooperative multitasking

Contributed by Russ Cooper (AZ), RMAXTask (a shareware version) is a library of C functions that lets you run one or more C functions together in a priority-based, cooperative, multitasking environment in which a task continues running until it explicitly relinquishes control by making a call to the multitasking system. RMAXTask provides full support for intertask synchronization and communication, timed delays, and access to the PC's keyboard.

RMAXTask provides a more capable scheduler and better intertask communication than do simple round-robin task switchers such as Wayne Conrad's MTASK or the system described in the October 1988 issue of Computer Language magazine, while avoiding the complexity of a full-blown interrupt-driven, preemptive system like Thomas Wagner's CTask (CUG 330).

The distribution disk includes a large model of the library, complete documentation, a demo program, and short test programs. To obtain the source code for the library, you may contact Russ Cooper at RMAX Development Group, 1033 East Coral Gables Drive, Phoenix, AZ 85022.

(CUG 363)68020 Cross Assembler for MS-DOS

This 68020 Cross Assembler v1.0 is an upgrade of the 68000 assembler written by Paul McKee of North Carolina State University in 1986, and released to the public domain by Marwan Shaban. Andrew E. Romer (England) has added the 68020 specific mnemonics (excluding the math-coprocessor mnemonics), and also introduced minor modifications. The source code has been modified to conform to the ANSI C Standard and can be compiled under Microsoft C or Zortech C v3.0 compilers.

The distribution disk includes the complete C source code, makefile, documentation, assembler executable, and assembly source files for testing.

(CUG 364)C-Across: cross-reference multiple C modules

C-Across, by Myron Turner (CANADA), is a cross reference utility for multiple module C programs. The v1.02 update includes minor bug fixes. The program produces six indexes of functions, prototypes, and globals that enable a user to see across modules for use in checking and comparison. Function names are listed in hierarchical form showing the relationship between caller and callee for functions. Globals are listed in schematic descriptors that record all modifiers and qualifiers and enable checking of declarators across modules. C-Across optionally generates a header file that includes prototypes from function definitions. It is also possible to list user-defined types and some preprocessor #defines. The distribution contains a complete set of C source code, DOS executable code, and full documentation. The program was developed and tested under Microsoft QuickC.

(CUG 365)Elvis: vi and ex clone text editor

Contributed by Steve Kirkendall(OR), Elvis (v1.5) is a clone of vi/ex, the standard UNIX text editor. Elvis supports nearly all of the vi/ex commands, in both visual mode and colon mode. Like vi/ex, Elvis stores most of the text in a temporary file, instead of RAM. This allows it to edit files that are too large to fit in a single process' data space. Also, the edit buffer can survive a power failure or crash. Elvis runs under BSD UNIX, AT&T SysV UNIX, SCO XENIX, Minix, MS-DOS (Turbo C or MSC v5.1), Atari DOS, OS9/68000, Coherent, VMS, and AmigaDOS. The distribution disk includes a manual for Elvis (over 70 pages), a complete set of source code for the supporting operating systems, makefiles, and TROFF format documentation files. In addition, it comes with source code for utilities that preserve and recover a text buffer after a crash, generate tags file from C source, display a C function header using tags, and adjust line-length for paragraphs of text.

(CUG 366)MicroEMACS: Portable and Extensible Text Editor

MicroEMACS CUG366 (six disks) updates a popular, portable, extensible CUG editor to a new version (3.11) and to new volumes in the C Users Group library (formerly volumes 197 and 198, version 3.9). The new version includes a new help system, a new windowing system supporting mulitple screens and mouse manipulation, portable file locking, support for more machines and systems, better handling of line terminators on input and output, customization of the characters considered to be part of a word, temporary pop-up windows for buffer lists (and similar information), improved debugging information on procedure crashes, accommodations for formatting languages, and more.

MicroEMACS was begun by Dave Conroy in 1985, and then taken over by Daniel Lawrence (of Lafayette, Indiana), who is still supporting and enhancing it. MicroEMACS is supported on a variety of machines and operating systems, including MS-DOS, VMS, and UNIX (several versions).

(CUG 367)GNU File and Text Utilities for MS-DOS

CUG367 (four disks) introduces ports of various GNU file and text utilities to MS-DOS. These files are a variety of utilities derived from the GNU File Utilities. Thorsten Ohl was instrumental in porting these utilities to MS-DOS, with additional work by David J. MacKenzie, with help from Jim Meyering, Brian Mathews, Bruce Evans, and others. These files are part of the GNUish MS-DOS project. Sources, man files, and executables are included for cat, chmod, cmp, cp, cut, dd, dir, head, ls, mkdir, mv, paste, rm, rmdir, tac, tail, touch. Source is also included for du. The routines are somewhat POSIX-compliant and at times improve on their UNIX counterparts in speed, options, and absence of arbitrary limits.

(CUG 368)GNUlib for MS-DOS

CUG368 provides a library of GNU library routines and other support routines for MS-DOS, ported by Thorsten Ohl. Files include error.c, getopt.c, getopt.h, getopt1.c, glob.c, regex.c, regex.h. These are general purpose routines needed by almost all GNU programs. These files are identical to or derived from versions distributed with the file utilities (CUG367). patches can be used to recover original versions. _cwild.c provides command-line expansion, while ndir.c and ndir.h provide portable directory access. Other files include pwd.c, pwd.h, gnulib.h (some prototypes), xmalloc.c, xrealloc.c. The library would benefit from, but doesn't include a version of the obstack macros for all memory models.

(CUG 369)Genitor: Genetic Algorithm tool

Contributed by Darrell Whitely. CUG369 (three disks) provides the Genitor genetic algorithm tool, produced by Darrell Whitley and his team at Colorado State University. Genetic algorithms solve problems with only a "genetic" code that defines the solution space and some measure of fitness of possible solutions represented by specific code. Genitor was designed for UNIX, but should port to other systems with a C compiler. The package comes from a graduate research environment. It assumes a knowledgeable user, documentation is sparse, and the package is not user friendly. Genitor includes commented examples for traditional binary optimization, the Traveling Salesman Problem, and a neural net for solving the two-bit adder problem.

(CUG 370)GATool: Genetic Algorithm Tool

Contributed by Sara Lienau. CUG370 GATool (two disks) brings a new genetic algorithm tool to the public domain, and can produce programs for applications. Genetic algorithms solve problems with only a "genetic" code describing the possible solutions and some measure of "fitness" of specific code solutions. GATool, an extensible, object-oriented C++ system, was written by Sara Lienau in a graduate research environment, so it assumes knowledgeable users and documentation is sparse. Designed for UNIX, it should be portable to other systems, but its menu-driven interface based on curses will cause some difficulty.

(CUG 371)WindosIO: DLL for console style I/O in a window

WindosIO v2.0, CUG371 (two disks), is a shareware Dynamic Link Library (DLL) for Microsoft Windows that supports both text and graphics I/O so that programs can readily be ported from MS-DOS, in some cases without change. Jeff Graubert-Cervone (Chicago, Illinois) is the author of WinDosIO. WinDosIO version 2.0 provides over 200 functions for standard terminal-style I/O and Borland/Microsoft graphics under Microsoft Windows 3.0 and 3.1, along with an online user manual, a reference guide, and several example programs. WindosIO must be used with a compiler that includes the Windows Software Development Toolkit. The volume includes an import library, but not the source for the DLL. See the review in this issue called <169>An Easy Road to Windows?<170> for more details.

(CUG 372)Mouse++, String++ and Z++ (complex num) Classes

The Mouse++, String++, and Z++ classes, CUG372, were written by Carl Moreland, (Greensboro, North Carolina), an electronics engineer who designs microelectronic circuits and uses C, C++, and Awk. The classes were developed for Borland C++ or Turbo C++. Mouse++ (currently version 3.1, but soon to be updated to version 4) provides a mouse-interface class and includes the ability to change the cursor. Most of the standard mouse functions place their results directly into class variables and return void. The values are obtained using the appropriate inline accessor functions for the private variables. String++ is a string class (v2.01) and Z++ (v1.0) is a complex-number class. Carl is developing a keyboard class that replaces the standard interrupt 9 handler and provides some unique mapping features. When the keyboard class is available, we plan to add it to this volume. The classes include excellent documentation and example programs.

(CUG 373)MicroEMACS for Windows

MicroEMACS for Windows CUG373 (four disks) ports the popular MicroEMACS program to the Microsoft Windows environment. MicroEMACS was written by Daniel Lawrence (Lafayette, Indiana), based on code by Dave Conroy, and ported to Windows by Pierre Perret (Glendale, Arizona). MicroEMACS for Windows is a port of MicroEmacs 11c. While MicroEMACS normally comes with documentation and scripts (macros or <169>command files<170>), they are not supplied with MicroEMACS for Windows, but are available with MicroEMACS (CUG366). Exhaustive online documentation (in Winhelp format) is in the works and will be incorporated in this volume as soon as it is available.

Pierre Perret said that his port to Windows will become part of the next major release of MicroEMACS. The port was designed to preserve as much of MicroEMACS style as possible, to minimize changes to the core code. MicroEMACS calls <169>screens<170> what really should be called <169>MDI windows<170> and calls <169>windows<170> what should be called <169>panes<170>. Due to MicroEMACS heritage, various operations are definitely not CUA-compliant. The CUA.CMD file included with this package, loaded by the included EMACS.RC, contains macros that modify the standard MicroEMACS mouse bindings to provide a CUA-like interface. The combination of multiple screens with menus (which thoughtfully display the corresponding keystroke commands as shortcut key combinations), makes EMACS more accessible to beginners while maintaining its utility for experienced users. These release notes were prepared using MicroEMACS for Windows.

(CUG 374)MicroSpell: multiplatform spell-checker

MicroSpell v2.0, CUG374 (two disks, formerly volume 248), provides a major release of Daniel Lawrence's (Lafayette, Indiana) spelling-checker program, which can be used standalone or in conjunction with MicroEMACS 3.11. MicroSPELL has a 1,000-word common word list, a 67,000 word main dictionary, and can access multiple user dictionaries during a spell check. MicroSPELL runs under MS-DOS, with versions available for Amiga, Atari, several flavors of UNIX, and CMS on IBM 370s. MicroSPELL can be used with the MicroEMACS macro (scan.cmd) which scans text, stopping at suspect words and providing alternatives to deal with the word. Three utilities are included: DMERGE, for merging a text file of words and the main compressed dictionary; CDICT, for compressing a text dictionary; and BIC, for suggesting replacements for a suspect word. This volume replaces CUG248, version 1.0 of MicroSPELL. This volume includes sources, executables (for MS-DOS), dictionaries, and users' guide (in various formats).

(CUG 375)TextView: DLL simplifies text windows

TextView, CUG375 (one disk) is a free Dynamic Link Library (DLL) for simplified manipulation of text windows under Microsoft Windows, written by Alan Phillips (Lancaster, United Kingdom). Alan Phillips is a systems programmer at the Lancaster University Computer Centre, where he writes UNIX communications software.

Similar to WinDosIO (CUG 371), TextView handles the details of window operations, permitting users to call functions for writing text (such as TVOutputText) in much the same way printf would be called in an MS-DOS application (with the exception of an extra parameter to identify the window where the text will be written). TextView can create multiple, independent windows that can be resized, minimized, maximized, and scrolled horizontally and vertically. A thoroughly-documented demonstration program illustrates the use of TextView windows to provide tracing and debugging information during application development. TextView requires the use of a compiler (such as Microsoft C) which can generate Windows code. The TextView volume includes a readable and carefully-organized 42-page manual. The TextView functions follow the same conventions as the Windows API, and the manual uses the same layout as the Microsoft Windows Programmer's Reference. TextView function names all begin with TV. The functions use Pascal calling conventions and must be declared FAR.

Function prototypes are contained in the file textview.h. Adding this file to your source selects the right calling mode and performs necessary casts to far pointers. The TextView import library textview.lib must be included in the list of libraries to be linked. The stack size required for your application may need to be increased. Some functions in the TextView import library must be statically linked.

(CUG 376)Unix tools for OS/2 and MS-DOS

Volume 376 (four disks) adds OS/2 tools to the CUG library. Martii Ylikoski, of Helsinki, Finland, has provided a large number of free, dual-mode tools that support both OS/2 and MS-DOS. The tools are remarkably well packaged. Each tool includes accompanying source, makefile, documentation, and demo files, along with files (.bat or .cmd) to install and uninstall the tools. For OS/2 there is also a tools2.inf file, in the standard format for OS/2 help files. Full source code is included, generally with a single file per utility. The makefiles (toolname.mak) indicate the required dependencies. A library was used in building the tools, and is included in two forms mtoolsp.lib for protected mode and mtoolsr.lib for real mode. No documentation for the libraries exists, other than the examples of function use provided in the source code for the tools. The collection of 54 utilities provides a variety of functions such as: find file (ff), disk usage (du), head, tail, set priority (setprty), touch, cat, and scan (a find-like utility that searches for files and executes commands once the files are found).

(CUG 377)DSR: Hard-To-Find Information on Floppy Disks

Diskette manipulations are the core of CUG 377 (one disk), provided by Ian Ashdown, P. Eng., of West Vancouver. This volume provides a wealth of information about diskette device-service routine (DSR) functions. The documentation addresses a variety of quirks in diskette access, and provides considerable hard-to-find information on floppy diskettes, diskette controllers, and the diskette DSR functions. The volume also provides extensive example and test routines, with source code (in both C and C++ versions), for reading, writing, formatting, and verifying almost any IBM System 34 format diskette on a PC compatible. The code includes support and interface functions that increase the diskette DSR's reliability and provide a consistent programming interface across PC platforms. The information was largely determined through extensive use of an in-circuit emulator and other debugging tools, along with careful study of various machines and various DOS and BIOS versions. Given the variety of ROM BIOSes available, and the necessity to derive the information by experimentation, the material in this volume cannot cover every case, but certainly provides a thorough and careful treatment.

(CUG 378)Newmat: C++ Matrix Operations

From Robert Davies, a consultant and researcher in mathematics and computing from New Zealand, formerly with the New Zealand Department of Scientific and Industrial Research (DSIR), we get NEWMAT (CUG 378, one disk), a C++ matrix package. This volume was written for scientists and engineers who need to manipulate a variety of matrices using standard matrix operations. It was developed by a scientist (Robert Davies has a Ph.D. from the University of California at Berkeley) to support real work. NEWMAT emphasizes operations supporting statistical calculations. Functions include least squares, linear-equation solve, and eigenvalues.

Matrix types supported include:

In keeping with object-oriented design each type is derived from Matrix. Only one element type (float or double) is supported. Supported matrix operations include: *, +, <196>, inverse, transpose, conversion between types, submatrix, determinant, Cholesky decompositions, Householder triangularization, singular value decomposition, eigenvalues of a symmetric matrix, sorting, fast Fourier transform, printing, and an interface compatible with Numerical Recipes in C. NEWMAT supports matrices in the range of 4x4 to the machine-dependent, maximum array size 90x90 double elements or 125x125 float elements for machines whose limit for contiguous arrays is 64K. NEWMAT works for very small matrices, but is rather inefficient.

NEWMAT works with Borland and Glockenspiel C++. The version current at this writing (NEWMAT03) doesn't work with GNU C++, but a new version (NEWMAT06) is expected (by November 1992) that will work with GNU C++. Robert Davies suggests the following as criteria for interest in NEWMAT: first, a desire for matrix operations expressed as operators; second, a need for various matrix types; third, a need for only a single element type; fourth, use of matrix sizes between 4x4 and 90x90; and fifth, tolerance for a large and complex package. There is a fairly large file documenting the package, which broadly addresses issues from particulars of functions and interactions with various compilers, through design issues in building a matrix package. If you fit the profile described, then NEWMAT may be the matrix tool you need.

(CUG 379)Zoo: Portable file compression

ZOO (version 2.1), is a file archiving and compression program (standard extension .zoo), written by Rahul Dhesi, with assistance from J. Brian Walters, Paul Homchick, Bill Davidsen, Mark Alexander, Haruhiko Okumura, Randal L. Barnes, Raymond D. Gardner, Greg Yachuk, and Andre Van Dalen. This volume includes C source, executable, and documentation. Zoo is used to create and maintain collections of files in compressed form. It uses the Lempel-Ziv compression algorithm which yields space savings from 20% to 80% depending on the file data. Zoo can manage multiple generations of the same file and has numerous options accompanied by lengthy descriptions in the manuals. Zoo supports a range of hardware and operating systems, and includes makefiles with various options. Zoo is part of the GNUish MS-DOS project, an attempt to provide a GNU-like environment for MS-DOS, with GNU ports and MS-DOS replacements for non-ported GNU software.

This page maintained by Victor R. Volkman
Last updated on 10/20/96